@verboo/code 0.13.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +195 -77
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -135919,6 +135919,7 @@ __export(exports_client, {
|
|
|
135919
135919
|
storeOAuthAccountInfo: () => storeOAuthAccountInfo,
|
|
135920
135920
|
shouldUseClaudeAIAuth: () => shouldUseClaudeAIAuth,
|
|
135921
135921
|
shouldRefreshOAuthAccountInfo: () => shouldRefreshOAuthAccountInfo,
|
|
135922
|
+
revokeVerbooRefreshToken: () => revokeVerbooRefreshToken,
|
|
135922
135923
|
refreshOAuthToken: () => refreshOAuthToken,
|
|
135923
135924
|
populateOAuthAccountInfoIfNeeded: () => populateOAuthAccountInfoIfNeeded,
|
|
135924
135925
|
parseScopes: () => parseScopes,
|
|
@@ -136092,6 +136093,24 @@ async function refreshOAuthToken(refreshToken, { scopes: requestedScopes } = {})
|
|
|
136092
136093
|
throw error41;
|
|
136093
136094
|
}
|
|
136094
136095
|
}
|
|
136096
|
+
async function revokeVerbooRefreshToken(refreshToken) {
|
|
136097
|
+
const form = new URLSearchParams({
|
|
136098
|
+
token: refreshToken,
|
|
136099
|
+
token_type_hint: "refresh_token",
|
|
136100
|
+
client_id: getOauthConfig().CLIENT_ID
|
|
136101
|
+
});
|
|
136102
|
+
try {
|
|
136103
|
+
await axios_default.post(`${getOauthConfig().BASE_API_URL}/oauth/revoke`, form, {
|
|
136104
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
136105
|
+
timeout: 5000
|
|
136106
|
+
});
|
|
136107
|
+
logEvent("verboo_oauth_refresh_token_revocation_success", {});
|
|
136108
|
+
return true;
|
|
136109
|
+
} catch {
|
|
136110
|
+
logEvent("verboo_oauth_refresh_token_revocation_unconfirmed", {});
|
|
136111
|
+
return false;
|
|
136112
|
+
}
|
|
136113
|
+
}
|
|
136095
136114
|
async function fetchAndStoreUserRoles(accessToken) {
|
|
136096
136115
|
if (isVerbooMode()) {
|
|
136097
136116
|
return;
|
|
@@ -169728,7 +169747,7 @@ function getClaudeCodeUserAgent() {
|
|
|
169728
169747
|
return `claude-code/${"99.0.0"}`;
|
|
169729
169748
|
}
|
|
169730
169749
|
function getVerbooCodeUserAgent() {
|
|
169731
|
-
const version2 = typeof MACRO !== "undefined" ? "0.13.
|
|
169750
|
+
const version2 = typeof MACRO !== "undefined" ? "0.13.1" : "unknown";
|
|
169732
169751
|
return `verboo-code/${version2}`;
|
|
169733
169752
|
}
|
|
169734
169753
|
|
|
@@ -173021,7 +173040,9 @@ function convertTools(tools, options2 = {}) {
|
|
|
173021
173040
|
const isGemini = isGeminiMode();
|
|
173022
173041
|
const strict = !isGemini && !isEnvTruthy(process.env.VERBOO_DISABLE_STRICT_TOOLS ?? process.env.OPENCLAUDE_DISABLE_STRICT_TOOLS) && !options2.skipStrict;
|
|
173023
173042
|
return tools.filter((t) => t.name !== "ToolSearchTool").map((t) => {
|
|
173024
|
-
const schema = {
|
|
173043
|
+
const schema = {
|
|
173044
|
+
...t.input_schema ?? { type: "object", properties: {} }
|
|
173045
|
+
};
|
|
173025
173046
|
if (t.name === "Agent" && schema.properties) {
|
|
173026
173047
|
const props = schema.properties;
|
|
173027
173048
|
if (!Array.isArray(schema.required))
|
|
@@ -173231,7 +173252,10 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173231
173252
|
yield {
|
|
173232
173253
|
type: "content_block_delta",
|
|
173233
173254
|
index: hasClosedThinking ? contentBlockIndex - 1 : contentBlockIndex,
|
|
173234
|
-
delta: {
|
|
173255
|
+
delta: {
|
|
173256
|
+
type: "thinking_delta",
|
|
173257
|
+
thinking: delta.reasoning_content
|
|
173258
|
+
}
|
|
173235
173259
|
};
|
|
173236
173260
|
}
|
|
173237
173261
|
if (delta.content != null && delta.content !== "") {
|
|
@@ -173262,7 +173286,10 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173262
173286
|
for (const tc of delta.tool_calls) {
|
|
173263
173287
|
if (tc.id && tc.function?.name) {
|
|
173264
173288
|
if (hasEmittedThinkingStart && !hasClosedThinking) {
|
|
173265
|
-
yield {
|
|
173289
|
+
yield {
|
|
173290
|
+
type: "content_block_stop",
|
|
173291
|
+
index: contentBlockIndex
|
|
173292
|
+
};
|
|
173266
173293
|
contentBlockIndex++;
|
|
173267
173294
|
hasClosedThinking = true;
|
|
173268
173295
|
}
|
|
@@ -173315,7 +173342,10 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173315
173342
|
const contSig = tc.thought_signature;
|
|
173316
173343
|
const contEC = tc.extra_content ? { ...tc.extra_content } : contSig ? { google: { thought_signature: contSig } } : undefined;
|
|
173317
173344
|
if (contEC) {
|
|
173318
|
-
active.extra_content = {
|
|
173345
|
+
active.extra_content = {
|
|
173346
|
+
...active.extra_content ?? {},
|
|
173347
|
+
...contEC
|
|
173348
|
+
};
|
|
173319
173349
|
}
|
|
173320
173350
|
if (active.normalizeAtStop) {
|
|
173321
173351
|
continue;
|
|
@@ -173335,7 +173365,10 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173335
173365
|
const lateSig = tc.thought_signature;
|
|
173336
173366
|
const lateEC = tc.extra_content ? { ...tc.extra_content } : lateSig ? { google: { thought_signature: lateSig } } : undefined;
|
|
173337
173367
|
if (lateEC) {
|
|
173338
|
-
active.extra_content = {
|
|
173368
|
+
active.extra_content = {
|
|
173369
|
+
...active.extra_content ?? {},
|
|
173370
|
+
...lateEC
|
|
173371
|
+
};
|
|
173339
173372
|
}
|
|
173340
173373
|
}
|
|
173341
173374
|
}
|
|
@@ -173362,7 +173395,9 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173362
173395
|
name: tc.name,
|
|
173363
173396
|
input: {},
|
|
173364
173397
|
extra_content: tc.extra_content,
|
|
173365
|
-
...tc.extra_content.google?.thought_signature ? {
|
|
173398
|
+
...tc.extra_content.google?.thought_signature ? {
|
|
173399
|
+
signature: tc.extra_content.google.thought_signature
|
|
173400
|
+
} : {}
|
|
173366
173401
|
}
|
|
173367
173402
|
};
|
|
173368
173403
|
}
|
|
@@ -173429,9 +173464,12 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173429
173464
|
yield {
|
|
173430
173465
|
type: "content_block_delta",
|
|
173431
173466
|
index: contentBlockIndex,
|
|
173432
|
-
delta: {
|
|
173467
|
+
delta: {
|
|
173468
|
+
type: "text_delta",
|
|
173469
|
+
text: `
|
|
173433
173470
|
|
|
173434
|
-
[Content blocked by provider safety filter]`
|
|
173471
|
+
[Content blocked by provider safety filter]`
|
|
173472
|
+
}
|
|
173435
173473
|
};
|
|
173436
173474
|
} else if (choice.finish_reason === "length") {
|
|
173437
173475
|
if (!hasEmittedContentStart) {
|
|
@@ -173445,9 +173483,12 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
|
|
|
173445
173483
|
yield {
|
|
173446
173484
|
type: "content_block_delta",
|
|
173447
173485
|
index: contentBlockIndex,
|
|
173448
|
-
delta: {
|
|
173486
|
+
delta: {
|
|
173487
|
+
type: "text_delta",
|
|
173488
|
+
text: `
|
|
173449
173489
|
|
|
173450
|
-
[Response truncated — reached length limit or upstream stalled. Ask the model to continue.]`
|
|
173490
|
+
[Response truncated — reached length limit or upstream stalled. Ask the model to continue.]`
|
|
173491
|
+
}
|
|
173451
173492
|
};
|
|
173452
173493
|
}
|
|
173453
173494
|
lastStopReason = stopReason;
|
|
@@ -173756,11 +173797,33 @@ class OpenAIShimMessages {
|
|
|
173756
173797
|
baseUrl: request.baseUrl,
|
|
173757
173798
|
processEnv: process.env
|
|
173758
173799
|
});
|
|
173759
|
-
const
|
|
173800
|
+
const getApiKey = () => this.providerOverride?.getApiKey?.() ?? this.providerOverride?.apiKey ?? routeCredential ?? process.env.OPENAI_API_KEY ?? "";
|
|
173760
173801
|
const configuredAuthHeaderValue = process.env.OPENAI_AUTH_HEADER_VALUE?.trim();
|
|
173761
173802
|
const customAuthHeader = process.env.OPENAI_AUTH_HEADER?.trim();
|
|
173762
173803
|
const hasCustomAuthHeader = Boolean(customAuthHeader && /^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/.test(customAuthHeader));
|
|
173763
|
-
const
|
|
173804
|
+
const applyAuthHeader = () => {
|
|
173805
|
+
const apiKey = getApiKey();
|
|
173806
|
+
const authValue = hasCustomAuthHeader ? configuredAuthHeaderValue || apiKey : apiKey;
|
|
173807
|
+
delete headers.Authorization;
|
|
173808
|
+
if (hasCustomAuthHeader && customAuthHeader) {
|
|
173809
|
+
delete headers[customAuthHeader];
|
|
173810
|
+
}
|
|
173811
|
+
if (authValue) {
|
|
173812
|
+
if (hasCustomAuthHeader && customAuthHeader) {
|
|
173813
|
+
const defaultCustomAuthScheme = customAuthHeader.toLowerCase() === "authorization" ? "bearer" : "raw";
|
|
173814
|
+
const customAuthScheme = process.env.OPENAI_AUTH_SCHEME === "raw" || process.env.OPENAI_AUTH_SCHEME === "bearer" ? process.env.OPENAI_AUTH_SCHEME : defaultCustomAuthScheme;
|
|
173815
|
+
headers[customAuthHeader] = customAuthScheme === "bearer" ? `Bearer ${authValue}` : authValue;
|
|
173816
|
+
} else if (isAzure) {
|
|
173817
|
+
headers["api-key"] = authValue;
|
|
173818
|
+
} else if (isBankr) {
|
|
173819
|
+
headers["X-API-Key"] = authValue;
|
|
173820
|
+
} else if (shimConfig.defaultAuthHeader?.name) {
|
|
173821
|
+
headers[shimConfig.defaultAuthHeader.name] = shimConfig.defaultAuthHeader.scheme === "bearer" ? `Bearer ${authValue}` : authValue;
|
|
173822
|
+
} else {
|
|
173823
|
+
headers.Authorization = `Bearer ${authValue}`;
|
|
173824
|
+
}
|
|
173825
|
+
}
|
|
173826
|
+
};
|
|
173764
173827
|
let isAzure = false;
|
|
173765
173828
|
try {
|
|
173766
173829
|
const { hostname: hostname2 } = new URL(request.baseUrl);
|
|
@@ -173770,21 +173833,8 @@ class OpenAIShimMessages {
|
|
|
173770
173833
|
try {
|
|
173771
173834
|
isBankr = runtimeShimContext.routeId === "bankr" || request.baseUrl.toLowerCase().includes("bankr");
|
|
173772
173835
|
} catch {}
|
|
173773
|
-
|
|
173774
|
-
|
|
173775
|
-
const defaultCustomAuthScheme = customAuthHeader.toLowerCase() === "authorization" ? "bearer" : "raw";
|
|
173776
|
-
const customAuthScheme = process.env.OPENAI_AUTH_SCHEME === "raw" || process.env.OPENAI_AUTH_SCHEME === "bearer" ? process.env.OPENAI_AUTH_SCHEME : defaultCustomAuthScheme;
|
|
173777
|
-
headers[customAuthHeader] = customAuthScheme === "bearer" ? `Bearer ${authValue}` : authValue;
|
|
173778
|
-
} else if (isAzure) {
|
|
173779
|
-
headers["api-key"] = authValue;
|
|
173780
|
-
} else if (isBankr) {
|
|
173781
|
-
headers["X-API-Key"] = authValue;
|
|
173782
|
-
} else if (shimConfig.defaultAuthHeader?.name) {
|
|
173783
|
-
headers[shimConfig.defaultAuthHeader.name] = shimConfig.defaultAuthHeader.scheme === "bearer" ? `Bearer ${authValue}` : authValue;
|
|
173784
|
-
} else {
|
|
173785
|
-
headers.Authorization = `Bearer ${authValue}`;
|
|
173786
|
-
}
|
|
173787
|
-
} else if (isGemini) {
|
|
173836
|
+
applyAuthHeader();
|
|
173837
|
+
if (!getApiKey() && isGemini) {
|
|
173788
173838
|
const geminiCredential = await resolveGeminiCredential(process.env);
|
|
173789
173839
|
if (geminiCredential.kind !== "none") {
|
|
173790
173840
|
headers.Authorization = `Bearer ${geminiCredential.credential}`;
|
|
@@ -173847,7 +173897,7 @@ class OpenAIShimMessages {
|
|
|
173847
173897
|
signal: options2?.signal
|
|
173848
173898
|
});
|
|
173849
173899
|
const maxSelfHealAttempts = isLocal ? localRetryBaseUrls.length + 1 : 0;
|
|
173850
|
-
const maxAttempts = (isGithub ? GITHUB_429_MAX_RETRIES : 1) + maxSelfHealAttempts;
|
|
173900
|
+
const maxAttempts = (isGithub ? GITHUB_429_MAX_RETRIES : 1) + maxSelfHealAttempts + (isVerbooRouterUrl(request.baseUrl) && this.providerOverride?.refreshApiKey ? 1 : 0);
|
|
173851
173901
|
const throwClassifiedTransportError = (error41, requestUrl2, preclassifiedFailure) => {
|
|
173852
173902
|
if (options2?.signal?.aborted) {
|
|
173853
173903
|
throw error41;
|
|
@@ -173866,12 +173916,16 @@ class OpenAIShimMessages {
|
|
|
173866
173916
|
body: errorBody,
|
|
173867
173917
|
url: requestUrl2
|
|
173868
173918
|
});
|
|
173869
|
-
const failureWithUrl = {
|
|
173919
|
+
const failureWithUrl = {
|
|
173920
|
+
...failure,
|
|
173921
|
+
requestUrl: failure.requestUrl ?? requestUrl2
|
|
173922
|
+
};
|
|
173870
173923
|
const redactedUrl = redactUrlForDiagnostics(requestUrl2);
|
|
173871
173924
|
logForDebugging(`[OpenAIShim] request failed category=${failure.category} retryable=${failure.retryable} status=${status} method=POST url=${redactedUrl} model=${request.resolvedModel}`, { level: "warn" });
|
|
173872
173925
|
throw APIError.generate(status, parsedBody, buildOpenAICompatibilityErrorMessage(`OpenAI API error ${status}: ${errorBody}${rateHint}`, failureWithUrl), responseHeaders);
|
|
173873
173926
|
};
|
|
173874
173927
|
let response;
|
|
173928
|
+
let didRetryVerbooAuth = false;
|
|
173875
173929
|
const provider = request.baseUrl.includes("nvidia") ? "nvidia-nim" : request.baseUrl.includes("minimax") ? "minimax" : request.baseUrl.includes("xiaomimimo") || request.baseUrl.includes("mimo-v2") ? "xiaomi-mimo" : request.baseUrl.includes("localhost:11434") || request.baseUrl.includes("localhost:11435") ? "ollama" : request.baseUrl.includes("anthropic") ? "anthropic" : "openai";
|
|
173876
173930
|
const { correlationId, startTime: startTime2 } = logApiCallStart(provider, request.resolvedModel);
|
|
173877
173931
|
for (let attempt = 0;attempt < maxAttempts; attempt++) {
|
|
@@ -173905,6 +173959,16 @@ class OpenAIShimMessages {
|
|
|
173905
173959
|
logApiCallEnd(correlationId, startTime2, request.resolvedModel, "success", tokensIn, tokensOut, Boolean(params.stream));
|
|
173906
173960
|
return response;
|
|
173907
173961
|
}
|
|
173962
|
+
if (!didRetryVerbooAuth && response.status === 401 && isVerbooRouterUrl(request.baseUrl) && this.providerOverride?.refreshApiKey) {
|
|
173963
|
+
didRetryVerbooAuth = true;
|
|
173964
|
+
const failedApiKey = getApiKey();
|
|
173965
|
+
await response.text().catch(() => {});
|
|
173966
|
+
const refreshedApiKey = await this.providerOverride.refreshApiKey(failedApiKey);
|
|
173967
|
+
if (refreshedApiKey) {
|
|
173968
|
+
applyAuthHeader();
|
|
173969
|
+
continue;
|
|
173970
|
+
}
|
|
173971
|
+
}
|
|
173908
173972
|
if (isGithub && response.status === 429 && attempt < maxAttempts - 1) {
|
|
173909
173973
|
await response.text().catch(() => {});
|
|
173910
173974
|
const delaySec = Math.min(GITHUB_429_BASE_DELAY_SEC * 2 ** attempt, GITHUB_429_MAX_DELAY_SEC);
|
|
@@ -187923,7 +187987,7 @@ async function getAnthropicClient({
|
|
|
187923
187987
|
defaultHeaders["x-anthropic-additional-protection"] = "true";
|
|
187924
187988
|
}
|
|
187925
187989
|
const shouldUseFirstPartyAuth = shouldUseFirstPartyAnthropicAuth(providerOverride);
|
|
187926
|
-
if (shouldUseFirstPartyAuth) {
|
|
187990
|
+
if (shouldUseFirstPartyAuth || isVerbooMode()) {
|
|
187927
187991
|
logForDebugging("[API:auth] OAuth token check starting");
|
|
187928
187992
|
await checkAndRefreshOAuthTokenIfNeeded();
|
|
187929
187993
|
logForDebugging("[API:auth] OAuth token check complete");
|
|
@@ -187966,7 +188030,12 @@ async function getAnthropicClient({
|
|
|
187966
188030
|
providerOverride: {
|
|
187967
188031
|
model: safeVerbooModel,
|
|
187968
188032
|
baseURL: VERBOO_ROUTER_URL,
|
|
187969
|
-
apiKey: accessToken ?? ""
|
|
188033
|
+
apiKey: accessToken ?? "",
|
|
188034
|
+
getApiKey: () => getClaudeAIOAuthTokens()?.accessToken ?? "",
|
|
188035
|
+
refreshApiKey: async (failedAccessToken) => {
|
|
188036
|
+
const recovered = await handleOAuth401Error(failedAccessToken);
|
|
188037
|
+
return recovered ? getClaudeAIOAuthTokens()?.accessToken ?? null : null;
|
|
188038
|
+
}
|
|
187970
188039
|
}
|
|
187971
188040
|
});
|
|
187972
188041
|
}
|
|
@@ -281176,6 +281245,22 @@ var init_user = __esm(() => {
|
|
|
281176
281245
|
});
|
|
281177
281246
|
});
|
|
281178
281247
|
|
|
281248
|
+
// src/commands/logout/logoutState.ts
|
|
281249
|
+
function removeStoredVerbooOauth(secureStorage) {
|
|
281250
|
+
const storageData = secureStorage.read() ?? {};
|
|
281251
|
+
const refreshToken = storageData.verbooOauth?.refreshToken ?? null;
|
|
281252
|
+
if (!storageData.verbooOauth) {
|
|
281253
|
+
return refreshToken;
|
|
281254
|
+
}
|
|
281255
|
+
delete storageData.verbooOauth;
|
|
281256
|
+
const isEmpty = Object.keys(storageData).length === 0;
|
|
281257
|
+
const success2 = isEmpty ? secureStorage.delete() : secureStorage.update(storageData).success;
|
|
281258
|
+
if (!success2) {
|
|
281259
|
+
throw new Error("Failed to clear local Verboo credentials");
|
|
281260
|
+
}
|
|
281261
|
+
return refreshToken;
|
|
281262
|
+
}
|
|
281263
|
+
|
|
281179
281264
|
// src/commands/logout/logout.tsx
|
|
281180
281265
|
var exports_logout = {};
|
|
281181
281266
|
__export(exports_logout, {
|
|
@@ -281183,16 +281268,27 @@ __export(exports_logout, {
|
|
|
281183
281268
|
clearAuthRelatedCaches: () => clearAuthRelatedCaches,
|
|
281184
281269
|
call: () => call
|
|
281185
281270
|
});
|
|
281271
|
+
function isExternallyInjectedTokenSource(source) {
|
|
281272
|
+
return [
|
|
281273
|
+
"CLAUDE_CODE_OAUTH_TOKEN",
|
|
281274
|
+
"CLAUDE_CODE_OAUTH_TOKEN_FILE_DESCRIPTOR",
|
|
281275
|
+
"CCR_OAUTH_TOKEN_FILE",
|
|
281276
|
+
"ANTHROPIC_AUTH_TOKEN"
|
|
281277
|
+
].includes(source);
|
|
281278
|
+
}
|
|
281186
281279
|
async function performLogout({
|
|
281187
281280
|
clearOnboarding = false
|
|
281188
281281
|
}) {
|
|
281189
|
-
|
|
281282
|
+
const authTokenSource = getAuthTokenSource().source;
|
|
281283
|
+
const refreshToken = removeStoredVerbooOauth(getSecureStorage());
|
|
281284
|
+
const remoteRevocation = refreshToken ? await revokeVerbooRefreshToken(refreshToken) ? "revoked" : "unconfirmed" : "not_applicable";
|
|
281285
|
+
if (!isVerbooMode()) {
|
|
281286
|
+
await removeApiKey();
|
|
281287
|
+
}
|
|
281190
281288
|
if (isVerbooMode()) {
|
|
281191
281289
|
resetVerbooSessionValidation();
|
|
281192
281290
|
clearVerbooModelsCache();
|
|
281193
281291
|
}
|
|
281194
|
-
const secureStorage = getSecureStorage();
|
|
281195
|
-
secureStorage.delete();
|
|
281196
281292
|
await clearAuthRelatedCaches();
|
|
281197
281293
|
saveGlobalConfig((current) => {
|
|
281198
281294
|
const updated = {
|
|
@@ -281212,6 +281308,11 @@ async function performLogout({
|
|
|
281212
281308
|
updated.oauthAccount = undefined;
|
|
281213
281309
|
return updated;
|
|
281214
281310
|
});
|
|
281311
|
+
return {
|
|
281312
|
+
localCleared: true,
|
|
281313
|
+
remoteRevocation,
|
|
281314
|
+
...isExternallyInjectedTokenSource(authTokenSource) ? { externalTokenSource: authTokenSource } : {}
|
|
281315
|
+
};
|
|
281215
281316
|
}
|
|
281216
281317
|
async function clearAuthRelatedCaches() {
|
|
281217
281318
|
getClaudeAIOAuthTokens.cache?.clear?.();
|
|
@@ -281226,11 +281327,15 @@ async function clearAuthRelatedCaches() {
|
|
|
281226
281327
|
await clearPolicyLimitsCache();
|
|
281227
281328
|
}
|
|
281228
281329
|
async function call() {
|
|
281229
|
-
await performLogout({
|
|
281330
|
+
const result = await performLogout({
|
|
281230
281331
|
clearOnboarding: true
|
|
281231
281332
|
});
|
|
281232
|
-
const message = isVerbooMode() ? /* @__PURE__ */ jsx_runtime61.
|
|
281233
|
-
children:
|
|
281333
|
+
const message = isVerbooMode() ? /* @__PURE__ */ jsx_runtime61.jsxs(ThemedText, {
|
|
281334
|
+
children: [
|
|
281335
|
+
"Saiu da conta Verboo localmente.",
|
|
281336
|
+
result.remoteRevocation === "unconfirmed" ? " Não foi possível confirmar a revogação da sessão no servidor." : "",
|
|
281337
|
+
result.externalTokenSource ? ` ${result.externalTokenSource} ainda fornece uma credencial neste ambiente.` : ""
|
|
281338
|
+
]
|
|
281234
281339
|
}) : /* @__PURE__ */ jsx_runtime61.jsx(ThemedText, {
|
|
281235
281340
|
children: "Successfully logged out from your Anthropic account."
|
|
281236
281341
|
});
|
|
@@ -281250,6 +281355,7 @@ var init_logout = __esm(() => {
|
|
|
281250
281355
|
init_oauth();
|
|
281251
281356
|
init_verbooModels();
|
|
281252
281357
|
init_verbooStartupAuth();
|
|
281358
|
+
init_client2();
|
|
281253
281359
|
init_auth();
|
|
281254
281360
|
init_betas2();
|
|
281255
281361
|
init_config7();
|
|
@@ -298599,15 +298705,24 @@ async function authStatus(opts) {
|
|
|
298599
298705
|
process.exit(loggedIn ? 0 : 1);
|
|
298600
298706
|
}
|
|
298601
298707
|
async function authLogout() {
|
|
298708
|
+
let result;
|
|
298602
298709
|
try {
|
|
298603
|
-
await performLogout({ clearOnboarding: false });
|
|
298710
|
+
result = await performLogout({ clearOnboarding: false });
|
|
298604
298711
|
} catch {
|
|
298605
298712
|
process.stderr.write(`Failed to log out.
|
|
298606
298713
|
`);
|
|
298607
298714
|
process.exit(1);
|
|
298608
298715
|
}
|
|
298609
|
-
process.stdout.write(`Successfully logged out from your Verboo account.
|
|
298716
|
+
process.stdout.write(`Successfully logged out from your Verboo account locally.
|
|
298717
|
+
`);
|
|
298718
|
+
if (result.remoteRevocation === "unconfirmed") {
|
|
298719
|
+
process.stderr.write(`Could not confirm server-side session revocation. Your local credentials were removed.
|
|
298720
|
+
`);
|
|
298721
|
+
}
|
|
298722
|
+
if (result.externalTokenSource) {
|
|
298723
|
+
process.stderr.write(`A credential from ${result.externalTokenSource} is still active in this shell. Remove it before starting Verboo again.
|
|
298610
298724
|
`);
|
|
298725
|
+
}
|
|
298611
298726
|
process.exit(0);
|
|
298612
298727
|
}
|
|
298613
298728
|
async function authLoginHeadless() {
|
|
@@ -298662,7 +298777,10 @@ Código não informado. Cancelado.
|
|
|
298662
298777
|
}
|
|
298663
298778
|
function readOneLine() {
|
|
298664
298779
|
return new Promise((resolve21) => {
|
|
298665
|
-
const rl = readline.createInterface({
|
|
298780
|
+
const rl = readline.createInterface({
|
|
298781
|
+
input: process.stdin,
|
|
298782
|
+
output: process.stdout
|
|
298783
|
+
});
|
|
298666
298784
|
rl.once("line", (line) => {
|
|
298667
298785
|
rl.close();
|
|
298668
298786
|
resolve21(line);
|
|
@@ -393739,7 +393857,7 @@ function getAnthropicEnvMetadata() {
|
|
|
393739
393857
|
function getBuildAgeMinutes() {
|
|
393740
393858
|
if (false)
|
|
393741
393859
|
;
|
|
393742
|
-
const buildTime = new Date("2026-07-
|
|
393860
|
+
const buildTime = new Date("2026-07-14T19:32:10.376Z").getTime();
|
|
393743
393861
|
if (isNaN(buildTime))
|
|
393744
393862
|
return;
|
|
393745
393863
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -421994,7 +422112,7 @@ function buildPrimarySection() {
|
|
|
421994
422112
|
});
|
|
421995
422113
|
return [{
|
|
421996
422114
|
label: "Version",
|
|
421997
|
-
value: "0.13.
|
|
422115
|
+
value: "0.13.1"
|
|
421998
422116
|
}, {
|
|
421999
422117
|
label: "Session name",
|
|
422000
422118
|
value: nameValue
|
|
@@ -434923,7 +435041,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
|
|
|
434923
435041
|
return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
|
|
434924
435042
|
}
|
|
434925
435043
|
function getPublicBuildVersion() {
|
|
434926
|
-
return "0.13.
|
|
435044
|
+
return "0.13.1";
|
|
434927
435045
|
}
|
|
434928
435046
|
var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
|
|
434929
435047
|
var init_version = __esm(() => {
|
|
@@ -486182,7 +486300,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
486182
486300
|
var call63 = async () => {
|
|
486183
486301
|
return {
|
|
486184
486302
|
type: "text",
|
|
486185
|
-
value: `${"99.0.0"} (built ${"2026-07-
|
|
486303
|
+
value: `${"99.0.0"} (built ${"2026-07-14T19:32:10.376Z"})`
|
|
486186
486304
|
};
|
|
486187
486305
|
}, version2, version_default;
|
|
486188
486306
|
var init_version2 = __esm(() => {
|
|
@@ -519255,7 +519373,7 @@ function printStartupScreen(modelOverride) {
|
|
|
519255
519373
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
519256
519374
|
const cwd2 = process.cwd();
|
|
519257
519375
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
519258
|
-
const version3 = "0.13.
|
|
519376
|
+
const version3 = "0.13.1";
|
|
519259
519377
|
const bold2 = `${ESC4}1m`;
|
|
519260
519378
|
const PURPLE = rgb3(...ACCENT);
|
|
519261
519379
|
const SOFT = rgb3(...CREAM);
|
|
@@ -537547,7 +537665,7 @@ var init_routerRateLimitHook = __esm(() => {
|
|
|
537547
537665
|
function getSemverPart(version3) {
|
|
537548
537666
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
537549
537667
|
}
|
|
537550
|
-
function useUpdateNotification(updatedVersion, initialVersion = "0.13.
|
|
537668
|
+
function useUpdateNotification(updatedVersion, initialVersion = "0.13.1") {
|
|
537551
537669
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
|
|
537552
537670
|
const [pendingNotification2, setPendingNotification] = import_react225.useState(null);
|
|
537553
537671
|
if (updatedVersion) {
|
|
@@ -537587,7 +537705,7 @@ function AutoUpdater({
|
|
|
537587
537705
|
return;
|
|
537588
537706
|
}
|
|
537589
537707
|
if (false) {}
|
|
537590
|
-
const currentVersion = "0.13.
|
|
537708
|
+
const currentVersion = "0.13.1";
|
|
537591
537709
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
537592
537710
|
let latestVersion = await getLatestVersion(channel2);
|
|
537593
537711
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -537940,17 +538058,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
537940
538058
|
const maxVersion = await getMaxVersion();
|
|
537941
538059
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
537942
538060
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
537943
|
-
if (gte("0.13.
|
|
537944
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.13.
|
|
538061
|
+
if (gte("0.13.1", maxVersion)) {
|
|
538062
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.13.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
537945
538063
|
setUpdateAvailable(false);
|
|
537946
538064
|
return;
|
|
537947
538065
|
}
|
|
537948
538066
|
latest = maxVersion;
|
|
537949
538067
|
}
|
|
537950
|
-
const hasUpdate = latest && !gte("0.13.
|
|
538068
|
+
const hasUpdate = latest && !gte("0.13.1", latest) && !shouldSkipVersion(latest);
|
|
537951
538069
|
setUpdateAvailable(!!hasUpdate);
|
|
537952
538070
|
if (hasUpdate) {
|
|
537953
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.13.
|
|
538071
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.13.1"} -> ${latest}`);
|
|
537954
538072
|
}
|
|
537955
538073
|
};
|
|
537956
538074
|
$2[0] = t1;
|
|
@@ -537984,7 +538102,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
537984
538102
|
wrap: "truncate",
|
|
537985
538103
|
children: [
|
|
537986
538104
|
"currentVersion: ",
|
|
537987
|
-
"0.13.
|
|
538105
|
+
"0.13.1"
|
|
537988
538106
|
]
|
|
537989
538107
|
});
|
|
537990
538108
|
$2[3] = verbose;
|
|
@@ -553935,10 +554053,10 @@ async function autoUpdateCliInBackground() {
|
|
|
553935
554053
|
return;
|
|
553936
554054
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
553937
554055
|
const latest = await getLatestVersion(channel2);
|
|
553938
|
-
if (!latest || gte("0.13.
|
|
554056
|
+
if (!latest || gte("0.13.1", latest))
|
|
553939
554057
|
return;
|
|
553940
554058
|
writeToStdout(`
|
|
553941
|
-
Nova versão disponível: ${latest} (atual: ${"0.13.
|
|
554059
|
+
Nova versão disponível: ${latest} (atual: ${"0.13.1"})
|
|
553942
554060
|
`);
|
|
553943
554061
|
writeToStdout(`Atualizando automaticamente...
|
|
553944
554062
|
`);
|
|
@@ -571632,7 +571750,7 @@ function WelcomeV2() {
|
|
|
571632
571750
|
dimColor: true,
|
|
571633
571751
|
children: [
|
|
571634
571752
|
"v",
|
|
571635
|
-
"0.13.
|
|
571753
|
+
"0.13.1",
|
|
571636
571754
|
" "
|
|
571637
571755
|
]
|
|
571638
571756
|
})
|
|
@@ -571819,7 +571937,7 @@ function WelcomeV2() {
|
|
|
571819
571937
|
dimColor: true,
|
|
571820
571938
|
children: [
|
|
571821
571939
|
"v",
|
|
571822
|
-
"0.13.
|
|
571940
|
+
"0.13.1",
|
|
571823
571941
|
" "
|
|
571824
571942
|
]
|
|
571825
571943
|
})
|
|
@@ -572035,7 +572153,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
572035
572153
|
dimColor: true,
|
|
572036
572154
|
children: [
|
|
572037
572155
|
"v",
|
|
572038
|
-
"0.13.
|
|
572156
|
+
"0.13.1",
|
|
572039
572157
|
" "
|
|
572040
572158
|
]
|
|
572041
572159
|
});
|
|
@@ -572244,7 +572362,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
572244
572362
|
dimColor: true,
|
|
572245
572363
|
children: [
|
|
572246
572364
|
"v",
|
|
572247
|
-
"0.13.
|
|
572365
|
+
"0.13.1",
|
|
572248
572366
|
" "
|
|
572249
572367
|
]
|
|
572250
572368
|
});
|
|
@@ -589646,7 +589764,7 @@ __export(exports_update, {
|
|
|
589646
589764
|
});
|
|
589647
589765
|
async function update() {
|
|
589648
589766
|
logEvent("tengu_update_check", {});
|
|
589649
|
-
writeToStdout(`Current version: ${"0.13.
|
|
589767
|
+
writeToStdout(`Current version: ${"0.13.1"}
|
|
589650
589768
|
`);
|
|
589651
589769
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
589652
589770
|
writeToStdout(`Checking for updates to ${channel2} version...
|
|
@@ -589731,8 +589849,8 @@ async function update() {
|
|
|
589731
589849
|
writeToStdout(`Verboo Code is managed by Homebrew.
|
|
589732
589850
|
`);
|
|
589733
589851
|
const latest = await getLatestVersion(channel2);
|
|
589734
|
-
if (latest && !gte("0.13.
|
|
589735
|
-
writeToStdout(`Update available: ${"0.13.
|
|
589852
|
+
if (latest && !gte("0.13.1", latest)) {
|
|
589853
|
+
writeToStdout(`Update available: ${"0.13.1"} → ${latest}
|
|
589736
589854
|
`);
|
|
589737
589855
|
writeToStdout(`
|
|
589738
589856
|
`);
|
|
@@ -589748,8 +589866,8 @@ async function update() {
|
|
|
589748
589866
|
writeToStdout(`Verboo Code is managed by winget.
|
|
589749
589867
|
`);
|
|
589750
589868
|
const latest = await getLatestVersion(channel2);
|
|
589751
|
-
if (latest && !gte("0.13.
|
|
589752
|
-
writeToStdout(`Update available: ${"0.13.
|
|
589869
|
+
if (latest && !gte("0.13.1", latest)) {
|
|
589870
|
+
writeToStdout(`Update available: ${"0.13.1"} → ${latest}
|
|
589753
589871
|
`);
|
|
589754
589872
|
writeToStdout(`
|
|
589755
589873
|
`);
|
|
@@ -589765,8 +589883,8 @@ async function update() {
|
|
|
589765
589883
|
writeToStdout(`Verboo Code is managed by apk.
|
|
589766
589884
|
`);
|
|
589767
589885
|
const latest = await getLatestVersion(channel2);
|
|
589768
|
-
if (latest && !gte("0.13.
|
|
589769
|
-
writeToStdout(`Update available: ${"0.13.
|
|
589886
|
+
if (latest && !gte("0.13.1", latest)) {
|
|
589887
|
+
writeToStdout(`Update available: ${"0.13.1"} → ${latest}
|
|
589770
589888
|
`);
|
|
589771
589889
|
writeToStdout(`
|
|
589772
589890
|
`);
|
|
@@ -589819,11 +589937,11 @@ async function update() {
|
|
|
589819
589937
|
`);
|
|
589820
589938
|
await gracefulShutdown(1);
|
|
589821
589939
|
}
|
|
589822
|
-
if (result.latestVersion === "0.13.
|
|
589823
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.13.
|
|
589940
|
+
if (result.latestVersion === "0.13.1") {
|
|
589941
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.13.1"})`) + `
|
|
589824
589942
|
`);
|
|
589825
589943
|
} else {
|
|
589826
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.13.
|
|
589944
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.13.1"} to version ${result.latestVersion}`) + `
|
|
589827
589945
|
`);
|
|
589828
589946
|
await regenerateCompletionCache();
|
|
589829
589947
|
}
|
|
@@ -589883,12 +590001,12 @@ async function update() {
|
|
|
589883
590001
|
`);
|
|
589884
590002
|
await gracefulShutdown(1);
|
|
589885
590003
|
}
|
|
589886
|
-
if (latestVersion === "0.13.
|
|
589887
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.13.
|
|
590004
|
+
if (latestVersion === "0.13.1") {
|
|
590005
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.13.1"})`) + `
|
|
589888
590006
|
`);
|
|
589889
590007
|
await gracefulShutdown(0);
|
|
589890
590008
|
}
|
|
589891
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.13.
|
|
590009
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.13.1"})
|
|
589892
590010
|
`);
|
|
589893
590011
|
writeToStdout(`Installing update...
|
|
589894
590012
|
`);
|
|
@@ -589933,7 +590051,7 @@ async function update() {
|
|
|
589933
590051
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
589934
590052
|
switch (status2) {
|
|
589935
590053
|
case "success":
|
|
589936
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.13.
|
|
590054
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.13.1"} to version ${latestVersion}`) + `
|
|
589937
590055
|
`);
|
|
589938
590056
|
await regenerateCompletionCache();
|
|
589939
590057
|
break;
|
|
@@ -591188,7 +591306,7 @@ ${customInstructions}` : customInstructions;
|
|
|
591188
591306
|
is_native_binary: isInBundledMode()
|
|
591189
591307
|
});
|
|
591190
591308
|
logMemoryDiagnostics("start", {
|
|
591191
|
-
version: "0.13.
|
|
591309
|
+
version: "0.13.1",
|
|
591192
591310
|
debug: debug2,
|
|
591193
591311
|
debugToStderr,
|
|
591194
591312
|
print: print ?? false,
|
|
@@ -591999,7 +592117,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
591999
592117
|
pendingHookMessages
|
|
592000
592118
|
}, renderAndRun);
|
|
592001
592119
|
}
|
|
592002
|
-
}).version(`0.13.
|
|
592120
|
+
}).version(`0.13.1 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
592003
592121
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
592004
592122
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
592005
592123
|
if (canUserConfigureAdvisor()) {
|
|
@@ -592574,7 +592692,7 @@ if (false) {}
|
|
|
592574
592692
|
async function main2() {
|
|
592575
592693
|
const args = process.argv.slice(2);
|
|
592576
592694
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
592577
|
-
console.log(`${"0.13.
|
|
592695
|
+
console.log(`${"0.13.1"} (Verboo Code)`);
|
|
592578
592696
|
return;
|
|
592579
592697
|
}
|
|
592580
592698
|
if (!IS_VERBOO_CLI && args.includes("--provider")) {
|
|
@@ -592748,4 +592866,4 @@ async function main2() {
|
|
|
592748
592866
|
}
|
|
592749
592867
|
main2();
|
|
592750
592868
|
|
|
592751
|
-
//# debugId=
|
|
592869
|
+
//# debugId=D352A9BC9A72F93D64756E2164756E21
|