@verboo/code 0.7.6 → 0.7.7
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 +50 -28
- package/package.json +3 -1
- package/scripts/postinstall.mjs +51 -0
package/dist/cli.mjs
CHANGED
|
@@ -115487,7 +115487,7 @@ function printStartupScreen(modelOverride) {
|
|
|
115487
115487
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
115488
115488
|
const cwd2 = process.cwd();
|
|
115489
115489
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
115490
|
-
const version2 = "0.7.
|
|
115490
|
+
const version2 = "0.7.7";
|
|
115491
115491
|
const bold2 = `${ESC}1m`;
|
|
115492
115492
|
const PURPLE = rgb(...ACCENT);
|
|
115493
115493
|
const SOFT = rgb(...CREAM);
|
|
@@ -376716,7 +376716,7 @@ function getAnthropicEnvMetadata() {
|
|
|
376716
376716
|
function getBuildAgeMinutes() {
|
|
376717
376717
|
if (false)
|
|
376718
376718
|
;
|
|
376719
|
-
const buildTime = new Date("2026-04-29T17:
|
|
376719
|
+
const buildTime = new Date("2026-04-29T17:32:40.324Z").getTime();
|
|
376720
376720
|
if (isNaN(buildTime))
|
|
376721
376721
|
return;
|
|
376722
376722
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -417243,7 +417243,7 @@ function buildPrimarySection() {
|
|
|
417243
417243
|
}, undefined, false, undefined, this);
|
|
417244
417244
|
return [{
|
|
417245
417245
|
label: "Version",
|
|
417246
|
-
value: "0.7.
|
|
417246
|
+
value: "0.7.7"
|
|
417247
417247
|
}, {
|
|
417248
417248
|
label: "Session name",
|
|
417249
417249
|
value: nameValue
|
|
@@ -485193,7 +485193,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
485193
485193
|
var call60 = async () => {
|
|
485194
485194
|
return {
|
|
485195
485195
|
type: "text",
|
|
485196
|
-
value: `${"99.0.0"} (built ${"2026-04-29T17:
|
|
485196
|
+
value: `${"99.0.0"} (built ${"2026-04-29T17:32:40.324Z"})`
|
|
485197
485197
|
};
|
|
485198
485198
|
}, version2, version_default;
|
|
485199
485199
|
var init_version = __esm(() => {
|
|
@@ -487686,6 +487686,26 @@ async function validateModel(model) {
|
|
|
487686
487686
|
if (!normalizedModel) {
|
|
487687
487687
|
return { valid: false, error: "Model name cannot be empty" };
|
|
487688
487688
|
}
|
|
487689
|
+
if (isVerbooMode()) {
|
|
487690
|
+
const verbooModels = getCachedVerbooModels();
|
|
487691
|
+
if (verbooModels && verbooModels.length > 0) {
|
|
487692
|
+
const found = verbooModels.some((m) => m.id === normalizedModel);
|
|
487693
|
+
if (found) {
|
|
487694
|
+
validModelCache.set(normalizedModel, true);
|
|
487695
|
+
return { valid: true };
|
|
487696
|
+
}
|
|
487697
|
+
const MAX_SHOWN = 5;
|
|
487698
|
+
const names = verbooModels.map((m) => m.id);
|
|
487699
|
+
const shown = names.slice(0, MAX_SHOWN).join(", ");
|
|
487700
|
+
const suffix = names.length > MAX_SHOWN ? ` e mais ${names.length - MAX_SHOWN}` : "";
|
|
487701
|
+
return {
|
|
487702
|
+
valid: false,
|
|
487703
|
+
error: `Modelo '${normalizedModel}' não disponível. Disponíveis: ${shown}${suffix}`
|
|
487704
|
+
};
|
|
487705
|
+
}
|
|
487706
|
+
validModelCache.set(normalizedModel, true);
|
|
487707
|
+
return { valid: true };
|
|
487708
|
+
}
|
|
487689
487709
|
if (getAPIProvider() === "openai" && isOllamaProvider()) {
|
|
487690
487710
|
const ollamaModels = getCachedOllamaModelOptions();
|
|
487691
487711
|
const found = ollamaModels.some((m) => m.value === normalizedModel);
|
|
@@ -487833,6 +487853,8 @@ var init_validateModel = __esm(() => {
|
|
|
487833
487853
|
init_ollamaModels();
|
|
487834
487854
|
init_nvidiaNimModels();
|
|
487835
487855
|
init_minimaxModels();
|
|
487856
|
+
init_oauth();
|
|
487857
|
+
init_verbooModels();
|
|
487836
487858
|
validModelCache = new Map;
|
|
487837
487859
|
});
|
|
487838
487860
|
|
|
@@ -509891,7 +509913,7 @@ function preconnectAnthropicApi() {
|
|
|
509891
509913
|
if (process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || process.env.ANTHROPIC_UNIX_SOCKET || process.env.CLAUDE_CODE_CLIENT_CERT || process.env.CLAUDE_CODE_CLIENT_KEY) {
|
|
509892
509914
|
return;
|
|
509893
509915
|
}
|
|
509894
|
-
const baseUrl = process.env.ANTHROPIC_BASE_URL || getOauthConfig().BASE_API_URL;
|
|
509916
|
+
const baseUrl = isVerbooMode() ? getOauthConfig().BASE_API_URL : process.env.ANTHROPIC_BASE_URL || getOauthConfig().BASE_API_URL;
|
|
509895
509917
|
fetch(baseUrl, {
|
|
509896
509918
|
method: "HEAD",
|
|
509897
509919
|
signal: AbortSignal.timeout(1e4)
|
|
@@ -560829,7 +560851,7 @@ function WelcomeV2() {
|
|
|
560829
560851
|
dimColor: true,
|
|
560830
560852
|
children: [
|
|
560831
560853
|
"v",
|
|
560832
|
-
"0.7.
|
|
560854
|
+
"0.7.7",
|
|
560833
560855
|
" "
|
|
560834
560856
|
]
|
|
560835
560857
|
}, undefined, true, undefined, this)
|
|
@@ -561016,7 +561038,7 @@ function WelcomeV2() {
|
|
|
561016
561038
|
dimColor: true,
|
|
561017
561039
|
children: [
|
|
561018
561040
|
"v",
|
|
561019
|
-
"0.7.
|
|
561041
|
+
"0.7.7",
|
|
561020
561042
|
" "
|
|
561021
561043
|
]
|
|
561022
561044
|
}, undefined, true, undefined, this)
|
|
@@ -561232,7 +561254,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561232
561254
|
dimColor: true,
|
|
561233
561255
|
children: [
|
|
561234
561256
|
"v",
|
|
561235
|
-
"0.7.
|
|
561257
|
+
"0.7.7",
|
|
561236
561258
|
" "
|
|
561237
561259
|
]
|
|
561238
561260
|
}, undefined, true, undefined, this);
|
|
@@ -561441,7 +561463,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561441
561463
|
dimColor: true,
|
|
561442
561464
|
children: [
|
|
561443
561465
|
"v",
|
|
561444
|
-
"0.7.
|
|
561466
|
+
"0.7.7",
|
|
561445
561467
|
" "
|
|
561446
561468
|
]
|
|
561447
561469
|
}, undefined, true, undefined, this);
|
|
@@ -579469,7 +579491,7 @@ __export(exports_update, {
|
|
|
579469
579491
|
async function update() {
|
|
579470
579492
|
if (getAPIProvider() !== "firstParty") {
|
|
579471
579493
|
writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
|
|
579472
|
-
`) + `Current version: ${"0.7.
|
|
579494
|
+
`) + `Current version: ${"0.7.7"}
|
|
579473
579495
|
|
|
579474
579496
|
` + `To update, reinstall from npm:
|
|
579475
579497
|
` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
|
|
@@ -579480,7 +579502,7 @@ async function update() {
|
|
|
579480
579502
|
await gracefulShutdown(0);
|
|
579481
579503
|
}
|
|
579482
579504
|
logEvent("tengu_update_check", {});
|
|
579483
|
-
writeToStdout(`Current version: ${"0.7.
|
|
579505
|
+
writeToStdout(`Current version: ${"0.7.7"}
|
|
579484
579506
|
`);
|
|
579485
579507
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
579486
579508
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -579565,8 +579587,8 @@ async function update() {
|
|
|
579565
579587
|
writeToStdout(`Claude is managed by Homebrew.
|
|
579566
579588
|
`);
|
|
579567
579589
|
const latest = await getLatestVersion(channel);
|
|
579568
|
-
if (latest && !gte("0.7.
|
|
579569
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579590
|
+
if (latest && !gte("0.7.7", latest)) {
|
|
579591
|
+
writeToStdout(`Update available: ${"0.7.7"} → ${latest}
|
|
579570
579592
|
`);
|
|
579571
579593
|
writeToStdout(`
|
|
579572
579594
|
`);
|
|
@@ -579582,8 +579604,8 @@ async function update() {
|
|
|
579582
579604
|
writeToStdout(`Claude is managed by winget.
|
|
579583
579605
|
`);
|
|
579584
579606
|
const latest = await getLatestVersion(channel);
|
|
579585
|
-
if (latest && !gte("0.7.
|
|
579586
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579607
|
+
if (latest && !gte("0.7.7", latest)) {
|
|
579608
|
+
writeToStdout(`Update available: ${"0.7.7"} → ${latest}
|
|
579587
579609
|
`);
|
|
579588
579610
|
writeToStdout(`
|
|
579589
579611
|
`);
|
|
@@ -579599,8 +579621,8 @@ async function update() {
|
|
|
579599
579621
|
writeToStdout(`Claude is managed by apk.
|
|
579600
579622
|
`);
|
|
579601
579623
|
const latest = await getLatestVersion(channel);
|
|
579602
|
-
if (latest && !gte("0.7.
|
|
579603
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579624
|
+
if (latest && !gte("0.7.7", latest)) {
|
|
579625
|
+
writeToStdout(`Update available: ${"0.7.7"} → ${latest}
|
|
579604
579626
|
`);
|
|
579605
579627
|
writeToStdout(`
|
|
579606
579628
|
`);
|
|
@@ -579665,11 +579687,11 @@ async function update() {
|
|
|
579665
579687
|
`);
|
|
579666
579688
|
await gracefulShutdown(1);
|
|
579667
579689
|
}
|
|
579668
|
-
if (result.latestVersion === "0.7.
|
|
579669
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
579690
|
+
if (result.latestVersion === "0.7.7") {
|
|
579691
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.7"})`) + `
|
|
579670
579692
|
`);
|
|
579671
579693
|
} else {
|
|
579672
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
579694
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.7"} to version ${result.latestVersion}`) + `
|
|
579673
579695
|
`);
|
|
579674
579696
|
await regenerateCompletionCache();
|
|
579675
579697
|
}
|
|
@@ -579729,12 +579751,12 @@ async function update() {
|
|
|
579729
579751
|
`);
|
|
579730
579752
|
await gracefulShutdown(1);
|
|
579731
579753
|
}
|
|
579732
|
-
if (latestVersion === "0.7.
|
|
579733
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
579754
|
+
if (latestVersion === "0.7.7") {
|
|
579755
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.7"})`) + `
|
|
579734
579756
|
`);
|
|
579735
579757
|
await gracefulShutdown(0);
|
|
579736
579758
|
}
|
|
579737
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.
|
|
579759
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.7"})
|
|
579738
579760
|
`);
|
|
579739
579761
|
writeToStdout(`Installing update...
|
|
579740
579762
|
`);
|
|
@@ -579779,7 +579801,7 @@ async function update() {
|
|
|
579779
579801
|
logForDebugging2(`update: Installation status: ${status2}`);
|
|
579780
579802
|
switch (status2) {
|
|
579781
579803
|
case "success":
|
|
579782
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
579804
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.7"} to version ${latestVersion}`) + `
|
|
579783
579805
|
`);
|
|
579784
579806
|
await regenerateCompletionCache();
|
|
579785
579807
|
break;
|
|
@@ -580384,7 +580406,7 @@ ${getTmuxInstallInstructions2()}
|
|
|
580384
580406
|
const files2 = parseFileSpecs(fileSpecs);
|
|
580385
580407
|
if (files2.length > 0) {
|
|
580386
580408
|
const config3 = {
|
|
580387
|
-
baseUrl: process.env.ANTHROPIC_BASE_URL || getOauthConfig().BASE_API_URL,
|
|
580409
|
+
baseUrl: isVerbooMode() ? getOauthConfig().BASE_API_URL : process.env.ANTHROPIC_BASE_URL || getOauthConfig().BASE_API_URL,
|
|
580388
580410
|
oauthToken: sessionToken,
|
|
580389
580411
|
sessionId: fileSessionId
|
|
580390
580412
|
};
|
|
@@ -581832,7 +581854,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
581832
581854
|
pendingHookMessages
|
|
581833
581855
|
}, renderAndRun);
|
|
581834
581856
|
}
|
|
581835
|
-
}).version(`0.7.
|
|
581857
|
+
}).version(`0.7.7 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
581836
581858
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
581837
581859
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
581838
581860
|
if (canUserConfigureAdvisor()) {
|
|
@@ -582388,7 +582410,7 @@ if (false) {}
|
|
|
582388
582410
|
async function main2() {
|
|
582389
582411
|
const args = process.argv.slice(2);
|
|
582390
582412
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
582391
|
-
console.log(`${"0.7.
|
|
582413
|
+
console.log(`${"0.7.7"} (Verboo Code)`);
|
|
582392
582414
|
return;
|
|
582393
582415
|
}
|
|
582394
582416
|
if (args.includes("--provider")) {
|
|
@@ -582543,4 +582565,4 @@ async function main2() {
|
|
|
582543
582565
|
}
|
|
582544
582566
|
main2();
|
|
582545
582567
|
|
|
582546
|
-
//# debugId=
|
|
582568
|
+
//# debugId=2A7860A73BFAD4B264756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verboo/code",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.7",
|
|
4
4
|
"description": "Verboo Code — coding agent for the Verboo platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
"bin/verboo",
|
|
11
11
|
"bin/import-specifier.mjs",
|
|
12
12
|
"dist/cli.mjs",
|
|
13
|
+
"scripts/postinstall.mjs",
|
|
13
14
|
"README.md"
|
|
14
15
|
],
|
|
15
16
|
"scripts": {
|
|
16
17
|
"build": "bun run scripts/build.ts",
|
|
18
|
+
"postinstall": "node scripts/postinstall.mjs || true",
|
|
17
19
|
"dev": "bun run build && node dist/cli.mjs",
|
|
18
20
|
"dev:profile": "bun run scripts/provider-launch.ts",
|
|
19
21
|
"dev:profile:fast": "bun run scripts/provider-launch.ts auto --fast --bare",
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Postinstall: garante que o binário `verboo` fique disponível no fish shell.
|
|
4
|
+
*
|
|
5
|
+
* O npm instala globalmente no prefixo retornado por `npm prefix -g` (ex:
|
|
6
|
+
* /usr/local ou ~/.npm-global). Shells bash/zsh geralmente já têm esse bin no
|
|
7
|
+
* PATH via .bashrc/.zshrc, mas o fish não herda essas configs — é preciso
|
|
8
|
+
* chamar `fish_add_path` explicitamente.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { execFileSync, spawnSync } from 'node:child_process'
|
|
12
|
+
import { existsSync } from 'node:fs'
|
|
13
|
+
import { join } from 'node:path'
|
|
14
|
+
|
|
15
|
+
function isFishShell() {
|
|
16
|
+
const shell = process.env.SHELL ?? ''
|
|
17
|
+
const parent = process.env.FISH_VERSION // set by fish itself
|
|
18
|
+
return shell.endsWith('/fish') || parent !== undefined
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function getNpmGlobalBin() {
|
|
22
|
+
try {
|
|
23
|
+
const prefix = execFileSync('npm', ['prefix', '-g'], { encoding: 'utf8' }).trim()
|
|
24
|
+
return join(prefix, 'bin')
|
|
25
|
+
} catch {
|
|
26
|
+
return null
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function fishAddPath(dir) {
|
|
31
|
+
const result = spawnSync('fish', ['-c', `fish_add_path ${dir}`], {
|
|
32
|
+
stdio: 'inherit',
|
|
33
|
+
timeout: 5000,
|
|
34
|
+
})
|
|
35
|
+
return result.status === 0
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (isFishShell()) {
|
|
39
|
+
const binDir = getNpmGlobalBin()
|
|
40
|
+
if (binDir && existsSync(binDir)) {
|
|
41
|
+
const ok = fishAddPath(binDir)
|
|
42
|
+
if (ok) {
|
|
43
|
+
process.stdout.write(`[verboo] fish_add_path ${binDir} — feito.\n`)
|
|
44
|
+
} else {
|
|
45
|
+
process.stdout.write(
|
|
46
|
+
`[verboo] Não foi possível adicionar ${binDir} ao fish automaticamente.\n` +
|
|
47
|
+
` Execute manualmente: fish_add_path ${binDir}\n`,
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|