@verboo/code 0.15.7 → 0.15.9
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 +182 -163
- package/package.json +6 -1
package/dist/cli.mjs
CHANGED
|
@@ -117992,7 +117992,7 @@ function getClaudeCodeUserAgent() {
|
|
|
117992
117992
|
return `claude-code/${"99.0.0"}`;
|
|
117993
117993
|
}
|
|
117994
117994
|
function getVerbooCodeUserAgent() {
|
|
117995
|
-
const version2 = "0.15.
|
|
117995
|
+
const version2 = "0.15.9";
|
|
117996
117996
|
return `verboo-code/${version2}`;
|
|
117997
117997
|
}
|
|
117998
117998
|
|
|
@@ -390235,7 +390235,7 @@ function getAnthropicEnvMetadata() {
|
|
|
390235
390235
|
function getBuildAgeMinutes() {
|
|
390236
390236
|
if (false)
|
|
390237
390237
|
;
|
|
390238
|
-
const buildTime = new Date("2026-08-
|
|
390238
|
+
const buildTime = new Date("2026-08-08T21:47:37.595Z").getTime();
|
|
390239
390239
|
if (isNaN(buildTime))
|
|
390240
390240
|
return;
|
|
390241
390241
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -431923,7 +431923,7 @@ function buildPrimarySection() {
|
|
|
431923
431923
|
});
|
|
431924
431924
|
return [{
|
|
431925
431925
|
label: "Version",
|
|
431926
|
-
value: "0.15.
|
|
431926
|
+
value: "0.15.9"
|
|
431927
431927
|
}, {
|
|
431928
431928
|
label: "Session name",
|
|
431929
431929
|
value: nameValue
|
|
@@ -445809,7 +445809,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
|
|
|
445809
445809
|
return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
|
|
445810
445810
|
}
|
|
445811
445811
|
function getPublicBuildVersion() {
|
|
445812
|
-
return "0.15.
|
|
445812
|
+
return "0.15.9";
|
|
445813
445813
|
}
|
|
445814
445814
|
var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
|
|
445815
445815
|
var init_version = __esm(() => {
|
|
@@ -497203,7 +497203,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
497203
497203
|
var call66 = async () => {
|
|
497204
497204
|
return {
|
|
497205
497205
|
type: "text",
|
|
497206
|
-
value: `${"99.0.0"} (built ${"2026-08-
|
|
497206
|
+
value: `${"99.0.0"} (built ${"2026-08-08T21:47:37.595Z"})`
|
|
497207
497207
|
};
|
|
497208
497208
|
}, version2, version_default;
|
|
497209
497209
|
var init_version2 = __esm(() => {
|
|
@@ -521258,6 +521258,46 @@ function extractArgsAfterDoubleDash(commandOrValue, args = []) {
|
|
|
521258
521258
|
return { command: commandOrValue, args };
|
|
521259
521259
|
}
|
|
521260
521260
|
|
|
521261
|
+
// src/utils/model/activeModelIdentity.ts
|
|
521262
|
+
function comparableModelId(modelId) {
|
|
521263
|
+
return modelId.trim().replace(/\[1m\]$/i, "").trim();
|
|
521264
|
+
}
|
|
521265
|
+
function catalogContains(catalog2, modelId) {
|
|
521266
|
+
return catalog2?.some((model2) => model2.id === modelId) === true;
|
|
521267
|
+
}
|
|
521268
|
+
function classifyActiveModelProvider(modelId, catalogs) {
|
|
521269
|
+
const comparable = comparableModelId(modelId);
|
|
521270
|
+
if (catalogContains(catalogs.verboo, comparable))
|
|
521271
|
+
return "Verboo";
|
|
521272
|
+
if (catalogContains(catalogs.codex, comparable))
|
|
521273
|
+
return "Codex";
|
|
521274
|
+
if (catalogContains(catalogs.claude, comparable))
|
|
521275
|
+
return "Claude";
|
|
521276
|
+
if (/(?:^|[-_/])(claude|sonnet|opus|haiku)(?:$|[-_/])/i.test(comparable)) {
|
|
521277
|
+
return "Claude";
|
|
521278
|
+
}
|
|
521279
|
+
if (/^(?:gpt-|o\d)|(?:^|[-_/])codex(?:$|[-_/])/i.test(comparable)) {
|
|
521280
|
+
return "Codex";
|
|
521281
|
+
}
|
|
521282
|
+
return "Verboo";
|
|
521283
|
+
}
|
|
521284
|
+
function getActiveModelIdentity(modelId) {
|
|
521285
|
+
const model2 = modelId.trim();
|
|
521286
|
+
return {
|
|
521287
|
+
provider: classifyActiveModelProvider(model2, {
|
|
521288
|
+
verboo: getCachedVerbooModels(),
|
|
521289
|
+
codex: getCachedCodexModels(),
|
|
521290
|
+
claude: getCachedClaudeNativeModels()
|
|
521291
|
+
}),
|
|
521292
|
+
model: model2
|
|
521293
|
+
};
|
|
521294
|
+
}
|
|
521295
|
+
var init_activeModelIdentity = __esm(() => {
|
|
521296
|
+
init_claudeNativeModels();
|
|
521297
|
+
init_codexModels();
|
|
521298
|
+
init_verbooModels();
|
|
521299
|
+
});
|
|
521300
|
+
|
|
521261
521301
|
// src/components/StartupScreen.ts
|
|
521262
521302
|
var exports_StartupScreen = {};
|
|
521263
521303
|
__export(exports_StartupScreen, {
|
|
@@ -521266,32 +521306,39 @@ __export(exports_StartupScreen, {
|
|
|
521266
521306
|
detectProvider: () => detectProvider
|
|
521267
521307
|
});
|
|
521268
521308
|
function resolveVerbooStartupModel(modelOverride) {
|
|
521269
|
-
const
|
|
521309
|
+
const verbooModels = getCachedVerbooModels();
|
|
521310
|
+
const codexModels = getCachedCodexModels();
|
|
521311
|
+
const claudeModels = getCachedClaudeNativeModels();
|
|
521312
|
+
const availableModels = [
|
|
521313
|
+
...verbooModels ?? [],
|
|
521314
|
+
...codexModels ?? [],
|
|
521315
|
+
...claudeModels ?? []
|
|
521316
|
+
];
|
|
521317
|
+
const catalogsLoaded = verbooModels !== null || codexModels !== null || claudeModels !== null;
|
|
521270
521318
|
const resolveIfAvailable = (model2) => {
|
|
521271
521319
|
if (typeof model2 !== "string")
|
|
521272
521320
|
return;
|
|
521273
521321
|
const trimmed3 = model2.trim();
|
|
521274
|
-
if (!trimmed3
|
|
521322
|
+
if (!trimmed3)
|
|
521275
521323
|
return;
|
|
521276
521324
|
const resolved = parseUserSpecifiedModel(trimmed3);
|
|
521277
|
-
if (
|
|
521278
|
-
return;
|
|
521279
|
-
if (cachedModels !== null) {
|
|
521280
|
-
return cachedModels.some((m) => m.id === resolved && !isClaudeModelLike(m.id)) ? resolved : undefined;
|
|
521325
|
+
if (catalogsLoaded) {
|
|
521326
|
+
return availableModels.some((model3) => model3.id === resolved) ? resolved : undefined;
|
|
521281
521327
|
}
|
|
521282
521328
|
return resolved;
|
|
521283
521329
|
};
|
|
521284
|
-
return resolveIfAvailable(modelOverride) ?? resolveIfAvailable(getUserSpecifiedModelSetting()) ??
|
|
521330
|
+
return resolveIfAvailable(modelOverride) ?? resolveIfAvailable(getUserSpecifiedModelSetting()) ?? getDefaultVerbooModel();
|
|
521285
521331
|
}
|
|
521286
521332
|
function detectProvider(modelOverride) {
|
|
521287
521333
|
if (isVerbooMode()) {
|
|
521288
|
-
const
|
|
521289
|
-
const
|
|
521334
|
+
const model2 = resolveVerbooStartupModel(modelOverride);
|
|
521335
|
+
const identity4 = getActiveModelIdentity(model2);
|
|
521336
|
+
const baseUrl2 = identity4.provider === "Codex" ? DEFAULT_CODEX_BASE_URL : identity4.provider === "Claude" ? CLAUDE_NATIVE_API_BASE_URL : VERBOO_ROUTER_URL;
|
|
521290
521337
|
return {
|
|
521291
|
-
name:
|
|
521292
|
-
model:
|
|
521338
|
+
name: identity4.provider,
|
|
521339
|
+
model: identity4.model,
|
|
521293
521340
|
baseUrl: baseUrl2,
|
|
521294
|
-
isLocal:
|
|
521341
|
+
isLocal: false
|
|
521295
521342
|
};
|
|
521296
521343
|
}
|
|
521297
521344
|
const useGemini = process.env.CLAUDE_CODE_USE_GEMINI === "1" || process.env.CLAUDE_CODE_USE_GEMINI === "true";
|
|
@@ -521377,11 +521424,11 @@ function detectProvider(modelOverride) {
|
|
|
521377
521424
|
}
|
|
521378
521425
|
return { name, model: displayModel, baseUrl: baseUrl2, isLocal: isLocal2 };
|
|
521379
521426
|
}
|
|
521380
|
-
const modelSetting = modelOverride ||
|
|
521427
|
+
const modelSetting = modelOverride || getUserSpecifiedModelSetting() || getDefaultMainLoopModel();
|
|
521381
521428
|
const resolvedModel = parseUserSpecifiedModel(modelSetting);
|
|
521382
|
-
const baseUrl =
|
|
521429
|
+
const baseUrl = process.env.ANTHROPIC_BASE_URL || CLAUDE_NATIVE_API_BASE_URL;
|
|
521383
521430
|
const isLocal = isLocalProviderUrl(baseUrl);
|
|
521384
|
-
return { name: "
|
|
521431
|
+
return { name: "Claude", model: resolvedModel, baseUrl, isLocal };
|
|
521385
521432
|
}
|
|
521386
521433
|
function truncateStartupText(text2, maxLength) {
|
|
521387
521434
|
if (maxLength <= 0)
|
|
@@ -521396,49 +521443,16 @@ function renderStartupScreen(p, version3, displayCwd, columns) {
|
|
|
521396
521443
|
const out = [""];
|
|
521397
521444
|
const bold2 = `${ESC4}1m`;
|
|
521398
521445
|
const PURPLE = rgb3(...ACCENT);
|
|
521399
|
-
const PURPLE_FILL = `${PURPLE}${ESC4}48;2;${ACCENT[0]};${ACCENT[1]};${ACCENT[2]}m`;
|
|
521400
521446
|
const DIMP = `${DIM2}${rgb3(...DIMCOL)}`;
|
|
521401
521447
|
const STATUS_C = p.isLocal ? rgb3(130, 200, 140) : PURPLE;
|
|
521402
521448
|
const statusLabel = p.isLocal ? "local" : "cloud";
|
|
521403
|
-
const providerAndModel =
|
|
521404
|
-
|
|
521405
|
-
|
|
521406
|
-
|
|
521407
|
-
|
|
521408
|
-
|
|
521409
|
-
|
|
521410
|
-
out.push(` ${STATUS_C}●${RESET2} ${DIMP}${model2} · ${statusLabel}${RESET2}`);
|
|
521411
|
-
out.push(` ${DIMP}${cwd2}${RESET2}`);
|
|
521412
|
-
} else {
|
|
521413
|
-
const maxLogoWidth = Math.max(...VERBOO_LOGO.map((line) => line.trimEnd().length));
|
|
521414
|
-
const logoTextPadding = 2;
|
|
521415
|
-
const rightTextWidth = Math.max(1, columns - 2 - maxLogoWidth - logoTextPadding);
|
|
521416
|
-
const shownVersion = truncateStartupText(version3, Math.max(1, rightTextWidth - 16));
|
|
521417
|
-
const model2 = truncateStartupText(providerAndModel, Math.max(1, rightTextWidth - statusLabel.length - 5));
|
|
521418
|
-
const cwd2 = truncateStartupText(displayCwd, rightTextWidth);
|
|
521419
|
-
const hint = truncateStartupText("Type a request, or use /help for commands", rightTextWidth);
|
|
521420
|
-
const rightColumn = [
|
|
521421
|
-
"",
|
|
521422
|
-
`${bold2}${PURPLE}Verboo Code${RESET2} ${DIMP}v${shownVersion}${RESET2}`,
|
|
521423
|
-
`${STATUS_C}●${RESET2} ${DIMP}${model2} · ${statusLabel}${RESET2}`,
|
|
521424
|
-
`${DIMP}${cwd2}${RESET2}`,
|
|
521425
|
-
"",
|
|
521426
|
-
`${DIMP}${hint}${RESET2}`,
|
|
521427
|
-
""
|
|
521428
|
-
];
|
|
521429
|
-
for (let i3 = 0;i3 < VERBOO_LOGO.length; i3++) {
|
|
521430
|
-
const line = (VERBOO_LOGO[i3] ?? "").trimEnd();
|
|
521431
|
-
const mask = VERBOO_LOGO_MASK[i3] ?? "";
|
|
521432
|
-
let painted = "";
|
|
521433
|
-
for (let j = 0;j < line.length; j++) {
|
|
521434
|
-
const character = line[j] ?? "";
|
|
521435
|
-
const isBlock = character === "▀" || character === "▄";
|
|
521436
|
-
painted += isBlock && mask[j] === "1" ? `${PURPLE_FILL}${character}${RESET2}` : isBlock ? `${PURPLE}${character}${RESET2}` : character;
|
|
521437
|
-
}
|
|
521438
|
-
const gap = " ".repeat(Math.max(0, maxLogoWidth - line.length + logoTextPadding));
|
|
521439
|
-
out.push(` ${painted}${gap}${rightColumn[i3] ?? ""}`);
|
|
521440
|
-
}
|
|
521441
|
-
}
|
|
521449
|
+
const providerAndModel = `${p.name} · ${p.model}`;
|
|
521450
|
+
const shownVersion = truncateStartupText(version3, Math.max(1, columns - 22));
|
|
521451
|
+
const model2 = truncateStartupText(providerAndModel, Math.max(1, columns - statusLabel.length - 10));
|
|
521452
|
+
const cwd2 = truncateStartupText(displayCwd, Math.max(1, columns - 5));
|
|
521453
|
+
out.push(` ${PURPLE}╭${RESET2} \uD83D\uDC7B ${bold2}${PURPLE}Verboo Code${RESET2} ${DIMP}v${shownVersion}${RESET2}`);
|
|
521454
|
+
out.push(` ${PURPLE}│${RESET2} ${STATUS_C}●${RESET2} ${DIMP}${model2} · ${statusLabel}${RESET2}`);
|
|
521455
|
+
out.push(` ${PURPLE}╰${RESET2} ${DIMP}${cwd2}${RESET2}`);
|
|
521442
521456
|
out.push("");
|
|
521443
521457
|
return `${out.join(`
|
|
521444
521458
|
`)}
|
|
@@ -521451,39 +521465,25 @@ function printStartupScreen(modelOverride) {
|
|
|
521451
521465
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
521452
521466
|
const cwd2 = process.cwd();
|
|
521453
521467
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
521454
|
-
const version3 = "0.15.
|
|
521468
|
+
const version3 = "0.15.9";
|
|
521455
521469
|
const columns = process.stdout.columns ?? STARTUP_DEFAULT_COLUMNS;
|
|
521456
521470
|
process.stdout.write(renderStartupScreen(p, version3, displayCwd, columns));
|
|
521457
521471
|
}
|
|
521458
|
-
var ESC4 = "\x1B[", RESET2, DIM2, rgb3 = (r, g, b) => `${ESC4}38;2;${r};${g};${b}m`, ACCENT, DIMCOL, STARTUP_DEFAULT_COLUMNS = 80
|
|
521472
|
+
var ESC4 = "\x1B[", RESET2, DIM2, rgb3 = (r, g, b) => `${ESC4}38;2;${r};${g};${b}m`, ACCENT, DIMCOL, STARTUP_DEFAULT_COLUMNS = 80;
|
|
521459
521473
|
var init_StartupScreen = __esm(() => {
|
|
521460
521474
|
init_oauth();
|
|
521475
|
+
init_claudeNativeModels();
|
|
521476
|
+
init_claudeNativeConfig();
|
|
521477
|
+
init_codexModels();
|
|
521461
521478
|
init_providerConfig();
|
|
521462
521479
|
init_verbooModels();
|
|
521463
521480
|
init_providerDiscovery();
|
|
521481
|
+
init_activeModelIdentity();
|
|
521464
521482
|
init_model();
|
|
521465
521483
|
RESET2 = `${ESC4}0m`;
|
|
521466
521484
|
DIM2 = `${ESC4}2m`;
|
|
521467
521485
|
ACCENT = [173, 52, 254];
|
|
521468
521486
|
DIMCOL = [120, 100, 140];
|
|
521469
|
-
VERBOO_LOGO = [
|
|
521470
|
-
" ▄▀▀▀▀▀▀▀▄ ",
|
|
521471
|
-
"▄▀▀▀▀▀▀▀▀▀▀▀▄",
|
|
521472
|
-
"▀▀▀ ▀▀▀▀▀ ▀▀▀",
|
|
521473
|
-
"▀▀▀▀▀▀▀▀▀▀▀▀▀",
|
|
521474
|
-
"▀▀▀▀▀▄▄▄▀▀▀▀▀",
|
|
521475
|
-
" ▀▀▀▀▀▀▀▀▀▀▀ ",
|
|
521476
|
-
"▄▀▀ ▀▀▀▀▀ ▀▀▄"
|
|
521477
|
-
];
|
|
521478
|
-
VERBOO_LOGO_MASK = [
|
|
521479
|
-
" 011111110 ",
|
|
521480
|
-
"0111111111110",
|
|
521481
|
-
"1110111110111",
|
|
521482
|
-
"1111011101111",
|
|
521483
|
-
"1111100011111",
|
|
521484
|
-
" 11111111111 ",
|
|
521485
|
-
"110 01110 011"
|
|
521486
|
-
];
|
|
521487
521487
|
});
|
|
521488
521488
|
|
|
521489
521489
|
// node_modules/commander/lib/error.js
|
|
@@ -540694,7 +540694,7 @@ var init_routerRateLimitHook = __esm(() => {
|
|
|
540694
540694
|
function getSemverPart(version3) {
|
|
540695
540695
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
540696
540696
|
}
|
|
540697
|
-
function useUpdateNotification(updatedVersion, initialVersion = "0.15.
|
|
540697
|
+
function useUpdateNotification(updatedVersion, initialVersion = "0.15.9") {
|
|
540698
540698
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
|
|
540699
540699
|
const [pendingNotification2, setPendingNotification] = import_react227.useState(null);
|
|
540700
540700
|
if (updatedVersion) {
|
|
@@ -540734,7 +540734,7 @@ function AutoUpdater({
|
|
|
540734
540734
|
return;
|
|
540735
540735
|
}
|
|
540736
540736
|
if (false) {}
|
|
540737
|
-
const currentVersion = "0.15.
|
|
540737
|
+
const currentVersion = "0.15.9";
|
|
540738
540738
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
540739
540739
|
let latestVersion = await getLatestVersion(channel2);
|
|
540740
540740
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -541087,17 +541087,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
541087
541087
|
const maxVersion = await getMaxVersion();
|
|
541088
541088
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
541089
541089
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
541090
|
-
if (gte("0.15.
|
|
541091
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.15.
|
|
541090
|
+
if (gte("0.15.9", maxVersion)) {
|
|
541091
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"0.15.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
541092
541092
|
setUpdateAvailable(false);
|
|
541093
541093
|
return;
|
|
541094
541094
|
}
|
|
541095
541095
|
latest = maxVersion;
|
|
541096
541096
|
}
|
|
541097
|
-
const hasUpdate = latest && !gte("0.15.
|
|
541097
|
+
const hasUpdate = latest && !gte("0.15.9", latest) && !shouldSkipVersion(latest);
|
|
541098
541098
|
setUpdateAvailable(!!hasUpdate);
|
|
541099
541099
|
if (hasUpdate) {
|
|
541100
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.
|
|
541100
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.9"} -> ${latest}`);
|
|
541101
541101
|
}
|
|
541102
541102
|
};
|
|
541103
541103
|
$2[0] = t1;
|
|
@@ -541131,7 +541131,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
541131
541131
|
wrap: "truncate",
|
|
541132
541132
|
children: [
|
|
541133
541133
|
"currentVersion: ",
|
|
541134
|
-
"0.15.
|
|
541134
|
+
"0.15.9"
|
|
541135
541135
|
]
|
|
541136
541136
|
});
|
|
541137
541137
|
$2[3] = verbose;
|
|
@@ -551446,18 +551446,16 @@ function ModeIndicator({
|
|
|
551446
551446
|
const modePart = currentMode && hasActiveMode && !getIsRemoteMode() ? /* @__PURE__ */ jsx_runtime436.jsxs(ThemedText, {
|
|
551447
551447
|
color: getModeColor(currentMode),
|
|
551448
551448
|
children: [
|
|
551449
|
-
permissionModeSymbol(currentMode),
|
|
551449
|
+
currentMode === "bypassPermissions" || currentMode === "dontAsk" ? "⚠" : permissionModeSymbol(currentMode),
|
|
551450
551450
|
" ",
|
|
551451
551451
|
permissionModeTitle(currentMode).toLowerCase(),
|
|
551452
|
-
" on",
|
|
551453
551452
|
shouldShowModeHint && /* @__PURE__ */ jsx_runtime436.jsxs(ThemedText, {
|
|
551454
551453
|
dimColor: true,
|
|
551455
551454
|
children: [
|
|
551456
|
-
" ",
|
|
551455
|
+
" · ",
|
|
551457
551456
|
/* @__PURE__ */ jsx_runtime436.jsx(KeyboardShortcutHint, {
|
|
551458
551457
|
shortcut: modeCycleShortcut,
|
|
551459
|
-
action: "
|
|
551460
|
-
parens: true
|
|
551458
|
+
action: "change"
|
|
551461
551459
|
})
|
|
551462
551460
|
]
|
|
551463
551461
|
})
|
|
@@ -551707,12 +551705,11 @@ function ContextWindowDisplayInner({ messages, permissionMode }) {
|
|
|
551707
551705
|
const mainLoopModel = useMainLoopModel();
|
|
551708
551706
|
const exceeds200k = import_react256.useMemo(() => doesMostRecentAssistantMessageExceed200k(messages), [messages]);
|
|
551709
551707
|
const runtimeModel = getRuntimeMainLoopModel({ permissionMode, mainLoopModel, exceeds200kTokens: exceeds200k });
|
|
551708
|
+
const activeModel = getActiveModelIdentity(runtimeModel);
|
|
551710
551709
|
const windowSize = getContextWindowForModel2(runtimeModel, getSdkBetas2());
|
|
551711
551710
|
const { avgRate10s, isGenerating } = useTokenRateDetailed(messages);
|
|
551712
551711
|
const contextTokens = import_react256.useMemo(() => tokenCountWithEstimation(messages), [messages]);
|
|
551713
551712
|
const pct = import_react256.useMemo(() => Math.min(100, Math.max(0, Math.round(contextTokens / windowSize * 100))), [contextTokens, windowSize]);
|
|
551714
|
-
const filled = Math.max(0, Math.min(BAR_WIDTH, Math.round(pct / 100 * BAR_WIDTH)));
|
|
551715
|
-
const bar = "█".repeat(filled) + "░".repeat(BAR_WIDTH - filled);
|
|
551716
551713
|
const contextColor = pct >= 90 ? "red" : pct >= 70 ? "yellow" : undefined;
|
|
551717
551714
|
const rateValue = Math.round(avgRate10s);
|
|
551718
551715
|
const showTokenRate = rateValue > 0;
|
|
@@ -551722,7 +551719,25 @@ function ContextWindowDisplayInner({ messages, permissionMode }) {
|
|
|
551722
551719
|
return /* @__PURE__ */ jsx_runtime437.jsxs(ThemedBox_default, {
|
|
551723
551720
|
flexDirection: "row",
|
|
551724
551721
|
gap: 1,
|
|
551722
|
+
flexShrink: 1,
|
|
551725
551723
|
children: [
|
|
551724
|
+
/* @__PURE__ */ jsx_runtime437.jsx(ThemedText, {
|
|
551725
|
+
color: "claude",
|
|
551726
|
+
children: activeModel.provider
|
|
551727
|
+
}),
|
|
551728
|
+
/* @__PURE__ */ jsx_runtime437.jsx(ThemedText, {
|
|
551729
|
+
dimColor: true,
|
|
551730
|
+
wrap: "truncate",
|
|
551731
|
+
children: activeModel.model
|
|
551732
|
+
}),
|
|
551733
|
+
/* @__PURE__ */ jsx_runtime437.jsx(ThemedText, {
|
|
551734
|
+
dimColor: true,
|
|
551735
|
+
children: "·"
|
|
551736
|
+
}),
|
|
551737
|
+
/* @__PURE__ */ jsx_runtime437.jsx(ThemedText, {
|
|
551738
|
+
dimColor: true,
|
|
551739
|
+
children: "context"
|
|
551740
|
+
}),
|
|
551726
551741
|
/* @__PURE__ */ jsx_runtime437.jsxs(ThemedText, {
|
|
551727
551742
|
color: contextColor,
|
|
551728
551743
|
dimColor: contextColor === undefined,
|
|
@@ -551732,15 +551747,14 @@ function ContextWindowDisplayInner({ messages, permissionMode }) {
|
|
|
551732
551747
|
]
|
|
551733
551748
|
}),
|
|
551734
551749
|
/* @__PURE__ */ jsx_runtime437.jsx(ThemedText, {
|
|
551735
|
-
|
|
551736
|
-
|
|
551737
|
-
children: bar
|
|
551750
|
+
dimColor: true,
|
|
551751
|
+
children: "·"
|
|
551738
551752
|
}),
|
|
551739
551753
|
/* @__PURE__ */ jsx_runtime437.jsxs(ThemedText, {
|
|
551740
551754
|
dimColor: true,
|
|
551741
551755
|
children: [
|
|
551742
551756
|
inputK,
|
|
551743
|
-
"/",
|
|
551757
|
+
" / ",
|
|
551744
551758
|
windowK
|
|
551745
551759
|
]
|
|
551746
551760
|
}),
|
|
@@ -551933,7 +551947,7 @@ function BridgeStatusIndicator({
|
|
|
551933
551947
|
]
|
|
551934
551948
|
});
|
|
551935
551949
|
}
|
|
551936
|
-
var React155, import_react256, jsx_runtime437,
|
|
551950
|
+
var React155, import_react256, jsx_runtime437, ContextWindowDisplay, PromptInputFooter_default;
|
|
551937
551951
|
var init_PromptInputFooter = __esm(() => {
|
|
551938
551952
|
init_bridgeEnabled();
|
|
551939
551953
|
init_bridgeStatusUtil();
|
|
@@ -551948,6 +551962,7 @@ var init_PromptInputFooter = __esm(() => {
|
|
|
551948
551962
|
init_format2();
|
|
551949
551963
|
init_fullscreen();
|
|
551950
551964
|
init_model();
|
|
551965
|
+
init_activeModelIdentity();
|
|
551951
551966
|
init_tokens();
|
|
551952
551967
|
init_useTokenRate();
|
|
551953
551968
|
init_CoordinatorAgentStatus();
|
|
@@ -552451,9 +552466,9 @@ function usePromptInputPlaceholder({
|
|
|
552451
552466
|
return "Press up to edit queued messages";
|
|
552452
552467
|
}
|
|
552453
552468
|
if (submitCount < 1 && promptSuggestionEnabled && !proactiveModule4?.isProactiveActive()) {
|
|
552454
|
-
return getExampleCommandFromCache() ?? "
|
|
552469
|
+
return getExampleCommandFromCache() ?? "Describe a task, bug, or idea…";
|
|
552455
552470
|
}
|
|
552456
|
-
return "
|
|
552471
|
+
return "Describe a task, bug, or idea…";
|
|
552457
552472
|
}, [
|
|
552458
552473
|
input,
|
|
552459
552474
|
queuedCommands,
|
|
@@ -554307,9 +554322,10 @@ function PromptInput({
|
|
|
554307
554322
|
hasStash: stashedPrompt !== undefined
|
|
554308
554323
|
}),
|
|
554309
554324
|
/* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
|
|
554310
|
-
|
|
554325
|
+
paddingX: 2,
|
|
554311
554326
|
height: 1,
|
|
554312
554327
|
overflow: "hidden",
|
|
554328
|
+
justifyContent: "flex-end",
|
|
554313
554329
|
children: mode === "prompt" && !exitMessage.show && !isPasting ? /* @__PURE__ */ jsx_runtime441.jsx(ContextWindowDisplay, {
|
|
554314
554330
|
messages,
|
|
554315
554331
|
permissionMode: effectiveToolPermissionContext.mode
|
|
@@ -554489,10 +554505,8 @@ function getInitialPasteId(messages) {
|
|
|
554489
554505
|
return maxId + 1;
|
|
554490
554506
|
}
|
|
554491
554507
|
function buildPromptBorderText(mode) {
|
|
554492
|
-
if (mode !== "bash")
|
|
554493
|
-
return;
|
|
554494
554508
|
return {
|
|
554495
|
-
content: " shell ",
|
|
554509
|
+
content: mode === "bash" ? " shell " : " prompt ",
|
|
554496
554510
|
position: "top",
|
|
554497
554511
|
align: "start",
|
|
554498
554512
|
offset: 1
|
|
@@ -557160,10 +557174,10 @@ async function autoUpdateCliInBackground() {
|
|
|
557160
557174
|
return;
|
|
557161
557175
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
557162
557176
|
const latest = await getLatestVersion(channel2);
|
|
557163
|
-
if (!latest || gte("0.15.
|
|
557177
|
+
if (!latest || gte("0.15.9", latest))
|
|
557164
557178
|
return;
|
|
557165
557179
|
writeToStdout(`
|
|
557166
|
-
Nova versão disponível: ${latest} (atual: ${"0.15.
|
|
557180
|
+
Nova versão disponível: ${latest} (atual: ${"0.15.9"})
|
|
557167
557181
|
`);
|
|
557168
557182
|
writeToStdout(`Atualizando automaticamente...
|
|
557169
557183
|
`);
|
|
@@ -575342,64 +575356,69 @@ var init_ApproveApiKey = __esm(() => {
|
|
|
575342
575356
|
|
|
575343
575357
|
// src/components/LogoV2/WelcomeV2.tsx
|
|
575344
575358
|
function WelcomeV2() {
|
|
575345
|
-
const version3 = "0.15.
|
|
575359
|
+
const version3 = "0.15.9";
|
|
575346
575360
|
return /* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
|
|
575347
|
-
flexDirection: "
|
|
575348
|
-
gap: 2,
|
|
575361
|
+
flexDirection: "column",
|
|
575349
575362
|
marginY: 1,
|
|
575350
575363
|
paddingX: 1,
|
|
575351
|
-
alignItems: "center",
|
|
575352
575364
|
children: [
|
|
575353
|
-
/* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
|
|
575354
|
-
flexDirection: "column",
|
|
575355
|
-
children: VERBOO_LOGO2.map((line, index) => /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575356
|
-
color: "claude",
|
|
575357
|
-
children: line
|
|
575358
|
-
}, index))
|
|
575359
|
-
}),
|
|
575360
575365
|
/* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
|
|
575361
|
-
flexDirection: "
|
|
575366
|
+
flexDirection: "row",
|
|
575362
575367
|
children: [
|
|
575363
|
-
/* @__PURE__ */ jsx_runtime480.
|
|
575364
|
-
|
|
575365
|
-
|
|
575368
|
+
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575369
|
+
color: "claude",
|
|
575370
|
+
children: "╭"
|
|
575371
|
+
}),
|
|
575372
|
+
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575373
|
+
children: " \uD83D\uDC7B "
|
|
575374
|
+
}),
|
|
575375
|
+
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575376
|
+
bold: true,
|
|
575377
|
+
color: "claude",
|
|
575378
|
+
children: "Verboo Code"
|
|
575379
|
+
}),
|
|
575380
|
+
/* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
|
|
575381
|
+
dimColor: true,
|
|
575366
575382
|
children: [
|
|
575367
|
-
|
|
575368
|
-
|
|
575369
|
-
color: "claude",
|
|
575370
|
-
children: "Verboo Code"
|
|
575371
|
-
}),
|
|
575372
|
-
/* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
|
|
575373
|
-
dimColor: true,
|
|
575374
|
-
children: [
|
|
575375
|
-
"v",
|
|
575376
|
-
version3
|
|
575377
|
-
]
|
|
575378
|
-
})
|
|
575383
|
+
" v",
|
|
575384
|
+
version3
|
|
575379
575385
|
]
|
|
575386
|
+
})
|
|
575387
|
+
]
|
|
575388
|
+
}),
|
|
575389
|
+
/* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
|
|
575390
|
+
flexDirection: "row",
|
|
575391
|
+
children: [
|
|
575392
|
+
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575393
|
+
color: "claude",
|
|
575394
|
+
children: "│"
|
|
575380
575395
|
}),
|
|
575381
575396
|
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575382
575397
|
dimColor: true,
|
|
575383
|
-
children: "Build, debug, and ship from your terminal."
|
|
575398
|
+
children: " Build, debug, and ship from your terminal."
|
|
575399
|
+
})
|
|
575400
|
+
]
|
|
575401
|
+
}),
|
|
575402
|
+
/* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
|
|
575403
|
+
flexDirection: "row",
|
|
575404
|
+
children: [
|
|
575405
|
+
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575406
|
+
color: "claude",
|
|
575407
|
+
children: "╰"
|
|
575408
|
+
}),
|
|
575409
|
+
/* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
|
|
575410
|
+
dimColor: true,
|
|
575411
|
+
children: " Describe what you need to get started."
|
|
575384
575412
|
})
|
|
575385
575413
|
]
|
|
575386
575414
|
})
|
|
575387
575415
|
]
|
|
575388
575416
|
});
|
|
575389
575417
|
}
|
|
575390
|
-
var jsx_runtime480
|
|
575418
|
+
var jsx_runtime480;
|
|
575391
575419
|
var init_WelcomeV2 = __esm(() => {
|
|
575392
575420
|
init_ink2();
|
|
575393
575421
|
jsx_runtime480 = __toESM(require_jsx_runtime(), 1);
|
|
575394
|
-
VERBOO_LOGO2 = [
|
|
575395
|
-
" ▄▀▀▀▀▀▀▀▄ ",
|
|
575396
|
-
"▄▀▀▀▀▀▀▀▀▀▀▀▄",
|
|
575397
|
-
"▀▀▀ ▀▀▀▀▀ ▀▀▀",
|
|
575398
|
-
"▀▀▀▀▀▀▀▀▀▀▀▀▀",
|
|
575399
|
-
"▀▀▀▀▀▄▄▄▀▀▀▀▀",
|
|
575400
|
-
" ▀▀▀▀▀▀▀▀▀▀▀ ",
|
|
575401
|
-
"▄▀▀ ▀▀▀▀▀ ▀▀▄"
|
|
575402
|
-
];
|
|
575403
575422
|
});
|
|
575404
575423
|
|
|
575405
575424
|
// src/components/ui/OrderedListItem.tsx
|
|
@@ -593645,7 +593664,7 @@ __export(exports_update, {
|
|
|
593645
593664
|
});
|
|
593646
593665
|
async function update() {
|
|
593647
593666
|
logEvent("tengu_update_check", {});
|
|
593648
|
-
writeToStdout(`Current version: ${"0.15.
|
|
593667
|
+
writeToStdout(`Current version: ${"0.15.9"}
|
|
593649
593668
|
`);
|
|
593650
593669
|
const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
593651
593670
|
writeToStdout(`Checking for updates to ${channel2} version...
|
|
@@ -593730,8 +593749,8 @@ async function update() {
|
|
|
593730
593749
|
writeToStdout(`Verboo Code is managed by Homebrew.
|
|
593731
593750
|
`);
|
|
593732
593751
|
const latest = await getLatestVersion(channel2);
|
|
593733
|
-
if (latest && !gte("0.15.
|
|
593734
|
-
writeToStdout(`Update available: ${"0.15.
|
|
593752
|
+
if (latest && !gte("0.15.9", latest)) {
|
|
593753
|
+
writeToStdout(`Update available: ${"0.15.9"} → ${latest}
|
|
593735
593754
|
`);
|
|
593736
593755
|
writeToStdout(`
|
|
593737
593756
|
`);
|
|
@@ -593747,8 +593766,8 @@ async function update() {
|
|
|
593747
593766
|
writeToStdout(`Verboo Code is managed by winget.
|
|
593748
593767
|
`);
|
|
593749
593768
|
const latest = await getLatestVersion(channel2);
|
|
593750
|
-
if (latest && !gte("0.15.
|
|
593751
|
-
writeToStdout(`Update available: ${"0.15.
|
|
593769
|
+
if (latest && !gte("0.15.9", latest)) {
|
|
593770
|
+
writeToStdout(`Update available: ${"0.15.9"} → ${latest}
|
|
593752
593771
|
`);
|
|
593753
593772
|
writeToStdout(`
|
|
593754
593773
|
`);
|
|
@@ -593764,8 +593783,8 @@ async function update() {
|
|
|
593764
593783
|
writeToStdout(`Verboo Code is managed by apk.
|
|
593765
593784
|
`);
|
|
593766
593785
|
const latest = await getLatestVersion(channel2);
|
|
593767
|
-
if (latest && !gte("0.15.
|
|
593768
|
-
writeToStdout(`Update available: ${"0.15.
|
|
593786
|
+
if (latest && !gte("0.15.9", latest)) {
|
|
593787
|
+
writeToStdout(`Update available: ${"0.15.9"} → ${latest}
|
|
593769
593788
|
`);
|
|
593770
593789
|
writeToStdout(`
|
|
593771
593790
|
`);
|
|
@@ -593818,11 +593837,11 @@ async function update() {
|
|
|
593818
593837
|
`);
|
|
593819
593838
|
await gracefulShutdown(1);
|
|
593820
593839
|
}
|
|
593821
|
-
if (result.latestVersion === "0.15.
|
|
593822
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.
|
|
593840
|
+
if (result.latestVersion === "0.15.9") {
|
|
593841
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.9"})`) + `
|
|
593823
593842
|
`);
|
|
593824
593843
|
} else {
|
|
593825
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.15.
|
|
593844
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.15.9"} to version ${result.latestVersion}`) + `
|
|
593826
593845
|
`);
|
|
593827
593846
|
await regenerateCompletionCache();
|
|
593828
593847
|
}
|
|
@@ -593882,12 +593901,12 @@ async function update() {
|
|
|
593882
593901
|
`);
|
|
593883
593902
|
await gracefulShutdown(1);
|
|
593884
593903
|
}
|
|
593885
|
-
if (latestVersion === "0.15.
|
|
593886
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.
|
|
593904
|
+
if (latestVersion === "0.15.9") {
|
|
593905
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.9"})`) + `
|
|
593887
593906
|
`);
|
|
593888
593907
|
await gracefulShutdown(0);
|
|
593889
593908
|
}
|
|
593890
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.
|
|
593909
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.9"})
|
|
593891
593910
|
`);
|
|
593892
593911
|
writeToStdout(`Installing update...
|
|
593893
593912
|
`);
|
|
@@ -593932,7 +593951,7 @@ async function update() {
|
|
|
593932
593951
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
593933
593952
|
switch (status2) {
|
|
593934
593953
|
case "success":
|
|
593935
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.15.
|
|
593954
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.15.9"} to version ${latestVersion}`) + `
|
|
593936
593955
|
`);
|
|
593937
593956
|
await regenerateCompletionCache();
|
|
593938
593957
|
break;
|
|
@@ -595251,7 +595270,7 @@ ${customInstructions}` : customInstructions;
|
|
|
595251
595270
|
is_native_binary: isInBundledMode()
|
|
595252
595271
|
});
|
|
595253
595272
|
logMemoryDiagnostics("start", {
|
|
595254
|
-
version: "0.15.
|
|
595273
|
+
version: "0.15.9",
|
|
595255
595274
|
debug: debug2,
|
|
595256
595275
|
debugToStderr,
|
|
595257
595276
|
print: print ?? false,
|
|
@@ -596062,7 +596081,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
596062
596081
|
pendingHookMessages
|
|
596063
596082
|
}, renderAndRun);
|
|
596064
596083
|
}
|
|
596065
|
-
}).version(`0.15.
|
|
596084
|
+
}).version(`0.15.9 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
596066
596085
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
596067
596086
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
596068
596087
|
if (canUserConfigureAdvisor()) {
|
|
@@ -596643,7 +596662,7 @@ if (false) {}
|
|
|
596643
596662
|
async function main2() {
|
|
596644
596663
|
const args = process.argv.slice(2);
|
|
596645
596664
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
596646
|
-
console.log(`${"0.15.
|
|
596665
|
+
console.log(`${"0.15.9"} (Verboo Code)`);
|
|
596647
596666
|
return;
|
|
596648
596667
|
}
|
|
596649
596668
|
if (!IS_VERBOO_CLI && args.includes("--provider")) {
|
|
@@ -596817,4 +596836,4 @@ async function main2() {
|
|
|
596817
596836
|
}
|
|
596818
596837
|
main2();
|
|
596819
596838
|
|
|
596820
|
-
//# debugId=
|
|
596839
|
+
//# debugId=58B07E27F76C846E64756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verboo/code",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.9",
|
|
4
4
|
"description": "Verboo Code — coding agent for the Verboo platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "bun run scripts/build.ts",
|
|
27
|
+
"desktop:contract:test": "bun test scripts/desktop-release/contract.test.ts",
|
|
28
|
+
"desktop:package": "bun run scripts/desktop-release/package.ts",
|
|
29
|
+
"desktop:manifest": "bun run scripts/desktop-release/manifest.ts",
|
|
30
|
+
"desktop:verify": "bun run scripts/desktop-release/verify-release.ts",
|
|
31
|
+
"desktop:test": "bun test scripts/desktop-release/*.test.ts",
|
|
27
32
|
"postinstall": "node scripts/postinstall.mjs || true",
|
|
28
33
|
"integrations:generate": "bun run scripts/generate-integrations-artifacts.ts",
|
|
29
34
|
"integrations:check": "bun run scripts/generate-integrations-artifacts.ts --check",
|