@verboo/code 0.7.12 → 0.7.14
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 +136 -28
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -115518,7 +115518,7 @@ function printStartupScreen(modelOverride) {
|
|
|
115518
115518
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
115519
115519
|
const cwd2 = process.cwd();
|
|
115520
115520
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
115521
|
-
const version2 = "0.7.
|
|
115521
|
+
const version2 = "0.7.14";
|
|
115522
115522
|
const bold2 = `${ESC}1m`;
|
|
115523
115523
|
const PURPLE = rgb(...ACCENT);
|
|
115524
115524
|
const SOFT = rgb(...CREAM);
|
|
@@ -193526,8 +193526,13 @@ async function* openaiStreamToAnthropic(response, model, signal) {
|
|
|
193526
193526
|
return;
|
|
193527
193527
|
const decoder = new TextDecoder;
|
|
193528
193528
|
let buffer = "";
|
|
193529
|
-
const STREAM_IDLE_TIMEOUT_MS =
|
|
193529
|
+
const STREAM_IDLE_TIMEOUT_MS = (() => {
|
|
193530
|
+
const raw = process.env.VERBOO_STREAM_IDLE_TIMEOUT_MS;
|
|
193531
|
+
const v = raw ? parseInt(raw, 10) : NaN;
|
|
193532
|
+
return Number.isFinite(v) && v > 0 ? v : 600000;
|
|
193533
|
+
})();
|
|
193530
193534
|
let lastDataTime = Date.now();
|
|
193535
|
+
const streamStartedAt = Date.now();
|
|
193531
193536
|
async function readWithTimeout() {
|
|
193532
193537
|
return new Promise((resolve19, reject) => {
|
|
193533
193538
|
const timeoutId = setTimeout(() => {
|
|
@@ -193577,8 +193582,20 @@ async function* openaiStreamToAnthropic(response, model, signal) {
|
|
|
193577
193582
|
try {
|
|
193578
193583
|
while (true) {
|
|
193579
193584
|
const { done, value } = await readWithTimeout();
|
|
193580
|
-
if (done)
|
|
193585
|
+
if (done) {
|
|
193586
|
+
if (!hasProcessedFinishReason) {
|
|
193587
|
+
const elapsedSec = Math.round((Date.now() - streamStartedAt) / 1000);
|
|
193588
|
+
logForDebugging2(JSON.stringify({
|
|
193589
|
+
type: "premature_stream_close",
|
|
193590
|
+
model,
|
|
193591
|
+
total_chunks: getStreamStats(streamState).totalChunks,
|
|
193592
|
+
duration_ms: Date.now() - streamStartedAt,
|
|
193593
|
+
had_content: hasEmittedContentStart || hasEmittedThinkingStart
|
|
193594
|
+
}), { level: "error" });
|
|
193595
|
+
throw new Error(`Upstream stream closed without finish_reason after ${elapsedSec}s — likely a guard_proxy/vLLM disconnect. The session was interrupted, not completed.`);
|
|
193596
|
+
}
|
|
193581
193597
|
break;
|
|
193598
|
+
}
|
|
193582
193599
|
buffer += decoder.decode(value, { stream: true });
|
|
193583
193600
|
const lines = buffer.split(`
|
|
193584
193601
|
`);
|
|
@@ -376813,7 +376830,7 @@ function getAnthropicEnvMetadata() {
|
|
|
376813
376830
|
function getBuildAgeMinutes() {
|
|
376814
376831
|
if (false)
|
|
376815
376832
|
;
|
|
376816
|
-
const buildTime = new Date("2026-05-
|
|
376833
|
+
const buildTime = new Date("2026-05-01T23:21:37.506Z").getTime();
|
|
376817
376834
|
if (isNaN(buildTime))
|
|
376818
376835
|
return;
|
|
376819
376836
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -417349,7 +417366,7 @@ function buildPrimarySection() {
|
|
|
417349
417366
|
}, undefined, false, undefined, this);
|
|
417350
417367
|
return [{
|
|
417351
417368
|
label: "Version",
|
|
417352
|
-
value: "0.7.
|
|
417369
|
+
value: "0.7.14"
|
|
417353
417370
|
}, {
|
|
417354
417371
|
label: "Session name",
|
|
417355
417372
|
value: nameValue
|
|
@@ -485299,7 +485316,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
485299
485316
|
var call60 = async () => {
|
|
485300
485317
|
return {
|
|
485301
485318
|
type: "text",
|
|
485302
|
-
value: `${"99.0.0"} (built ${"2026-05-
|
|
485319
|
+
value: `${"99.0.0"} (built ${"2026-05-01T23:21:37.506Z"})`
|
|
485303
485320
|
};
|
|
485304
485321
|
}, version2, version_default;
|
|
485305
485322
|
var init_version = __esm(() => {
|
|
@@ -561069,7 +561086,7 @@ function WelcomeV2() {
|
|
|
561069
561086
|
dimColor: true,
|
|
561070
561087
|
children: [
|
|
561071
561088
|
"v",
|
|
561072
|
-
"0.7.
|
|
561089
|
+
"0.7.14",
|
|
561073
561090
|
" "
|
|
561074
561091
|
]
|
|
561075
561092
|
}, undefined, true, undefined, this)
|
|
@@ -561256,7 +561273,7 @@ function WelcomeV2() {
|
|
|
561256
561273
|
dimColor: true,
|
|
561257
561274
|
children: [
|
|
561258
561275
|
"v",
|
|
561259
|
-
"0.7.
|
|
561276
|
+
"0.7.14",
|
|
561260
561277
|
" "
|
|
561261
561278
|
]
|
|
561262
561279
|
}, undefined, true, undefined, this)
|
|
@@ -561472,7 +561489,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561472
561489
|
dimColor: true,
|
|
561473
561490
|
children: [
|
|
561474
561491
|
"v",
|
|
561475
|
-
"0.7.
|
|
561492
|
+
"0.7.14",
|
|
561476
561493
|
" "
|
|
561477
561494
|
]
|
|
561478
561495
|
}, undefined, true, undefined, this);
|
|
@@ -561681,7 +561698,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561681
561698
|
dimColor: true,
|
|
561682
561699
|
children: [
|
|
561683
561700
|
"v",
|
|
561684
|
-
"0.7.
|
|
561701
|
+
"0.7.14",
|
|
561685
561702
|
" "
|
|
561686
561703
|
]
|
|
561687
561704
|
}, undefined, true, undefined, this);
|
|
@@ -565234,6 +565251,95 @@ var init_debug2 = __esm(() => {
|
|
|
565234
565251
|
TAIL_READ_BYTES = 64 * 1024;
|
|
565235
565252
|
});
|
|
565236
565253
|
|
|
565254
|
+
// src/skills/bundled/karpathyGuidelines.ts
|
|
565255
|
+
function registerKarpathyGuidelinesSkill() {
|
|
565256
|
+
registerBundledSkill({
|
|
565257
|
+
name: "karpathy-guidelines",
|
|
565258
|
+
description: "Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.",
|
|
565259
|
+
userInvocable: true,
|
|
565260
|
+
async getPromptForCommand(args) {
|
|
565261
|
+
let prompt = KARPATHY_GUIDELINES_PROMPT;
|
|
565262
|
+
if (args) {
|
|
565263
|
+
prompt += `
|
|
565264
|
+
|
|
565265
|
+
## Context
|
|
565266
|
+
|
|
565267
|
+
${args}`;
|
|
565268
|
+
}
|
|
565269
|
+
return [{ type: "text", text: prompt }];
|
|
565270
|
+
}
|
|
565271
|
+
});
|
|
565272
|
+
}
|
|
565273
|
+
var KARPATHY_GUIDELINES_PROMPT = `# Karpathy Guidelines
|
|
565274
|
+
|
|
565275
|
+
Behavioral guidelines to reduce common LLM coding mistakes, derived from Andrej Karpathy's observations on LLM coding pitfalls.
|
|
565276
|
+
|
|
565277
|
+
**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.
|
|
565278
|
+
|
|
565279
|
+
## 1. Think Before Coding
|
|
565280
|
+
|
|
565281
|
+
**Don't assume. Don't hide confusion. Surface tradeoffs.**
|
|
565282
|
+
|
|
565283
|
+
Before implementing:
|
|
565284
|
+
- State your assumptions explicitly. If uncertain, ask.
|
|
565285
|
+
- If multiple interpretations exist, present them - don't pick silently.
|
|
565286
|
+
- If a simpler approach exists, say so. Push back when warranted.
|
|
565287
|
+
- If something is unclear, stop. Name what's confusing. Ask.
|
|
565288
|
+
|
|
565289
|
+
## 2. Simplicity First
|
|
565290
|
+
|
|
565291
|
+
**Minimum code that solves the problem. Nothing speculative.**
|
|
565292
|
+
|
|
565293
|
+
- No features beyond what was asked.
|
|
565294
|
+
- No abstractions for single-use code.
|
|
565295
|
+
- No "flexibility" or "configurability" that wasn't requested.
|
|
565296
|
+
- No error handling for impossible scenarios.
|
|
565297
|
+
- If you write 200 lines and it could be 50, rewrite it.
|
|
565298
|
+
|
|
565299
|
+
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
|
|
565300
|
+
|
|
565301
|
+
## 3. Surgical Changes
|
|
565302
|
+
|
|
565303
|
+
**Touch only what you must. Clean up only your own mess.**
|
|
565304
|
+
|
|
565305
|
+
When editing existing code:
|
|
565306
|
+
- Don't "improve" adjacent code, comments, or formatting.
|
|
565307
|
+
- Don't refactor things that aren't broken.
|
|
565308
|
+
- Match existing style, even if you'd do it differently.
|
|
565309
|
+
- If you notice unrelated dead code, mention it - don't delete it.
|
|
565310
|
+
|
|
565311
|
+
When your changes create orphans:
|
|
565312
|
+
- Remove imports/variables/functions that YOUR changes made unused.
|
|
565313
|
+
- Don't remove pre-existing dead code unless asked.
|
|
565314
|
+
|
|
565315
|
+
The test: Every changed line should trace directly to the user's request.
|
|
565316
|
+
|
|
565317
|
+
## 4. Goal-Driven Execution
|
|
565318
|
+
|
|
565319
|
+
**Define success criteria. Loop until verified.**
|
|
565320
|
+
|
|
565321
|
+
Transform tasks into verifiable goals:
|
|
565322
|
+
- "Add validation" → "Write tests for invalid inputs, then make them pass"
|
|
565323
|
+
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
|
|
565324
|
+
- "Refactor X" → "Ensure tests pass before and after"
|
|
565325
|
+
|
|
565326
|
+
For multi-step tasks, state a brief plan:
|
|
565327
|
+
\`\`\`
|
|
565328
|
+
1. [Step] → verify: [check]
|
|
565329
|
+
2. [Step] → verify: [check]
|
|
565330
|
+
3. [Step] → verify: [check]
|
|
565331
|
+
\`\`\`
|
|
565332
|
+
|
|
565333
|
+
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
|
|
565334
|
+
|
|
565335
|
+
---
|
|
565336
|
+
|
|
565337
|
+
Apply these guidelines to the current task now.
|
|
565338
|
+
`;
|
|
565339
|
+
var init_karpathyGuidelines = __esm(() => {
|
|
565340
|
+
init_bundledSkills();
|
|
565341
|
+
});
|
|
565342
|
+
|
|
565237
565343
|
// src/keybindings/schema.ts
|
|
565238
565344
|
var KEYBINDING_CONTEXTS, KEYBINDING_CONTEXT_DESCRIPTIONS, KEYBINDING_ACTIONS, KeybindingBlockSchema, KeybindingsSchema;
|
|
565239
565345
|
var init_schema = __esm(() => {
|
|
@@ -566426,6 +566532,7 @@ function initBundledSkills() {
|
|
|
566426
566532
|
registerKeybindingsSkill();
|
|
566427
566533
|
registerDebugSkill();
|
|
566428
566534
|
registerSimplifySkill();
|
|
566535
|
+
registerKarpathyGuidelinesSkill();
|
|
566429
566536
|
registerBatchSkill();
|
|
566430
566537
|
if (false) {}
|
|
566431
566538
|
if (false) {}
|
|
@@ -566442,6 +566549,7 @@ var init_bundled = __esm(() => {
|
|
|
566442
566549
|
init_batch();
|
|
566443
566550
|
init_claudeInChrome();
|
|
566444
566551
|
init_debug2();
|
|
566552
|
+
init_karpathyGuidelines();
|
|
566445
566553
|
init_keybindings3();
|
|
566446
566554
|
init_loop();
|
|
566447
566555
|
init_simplify();
|
|
@@ -579721,7 +579829,7 @@ __export(exports_update, {
|
|
|
579721
579829
|
async function update() {
|
|
579722
579830
|
if (getAPIProvider() !== "firstParty") {
|
|
579723
579831
|
writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
|
|
579724
|
-
`) + `Current version: ${"0.7.
|
|
579832
|
+
`) + `Current version: ${"0.7.14"}
|
|
579725
579833
|
|
|
579726
579834
|
` + `To update, reinstall from npm:
|
|
579727
579835
|
` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
|
|
@@ -579732,7 +579840,7 @@ async function update() {
|
|
|
579732
579840
|
await gracefulShutdown(0);
|
|
579733
579841
|
}
|
|
579734
579842
|
logEvent("tengu_update_check", {});
|
|
579735
|
-
writeToStdout(`Current version: ${"0.7.
|
|
579843
|
+
writeToStdout(`Current version: ${"0.7.14"}
|
|
579736
579844
|
`);
|
|
579737
579845
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
579738
579846
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -579817,8 +579925,8 @@ async function update() {
|
|
|
579817
579925
|
writeToStdout(`Claude is managed by Homebrew.
|
|
579818
579926
|
`);
|
|
579819
579927
|
const latest = await getLatestVersion(channel);
|
|
579820
|
-
if (latest && !gte("0.7.
|
|
579821
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579928
|
+
if (latest && !gte("0.7.14", latest)) {
|
|
579929
|
+
writeToStdout(`Update available: ${"0.7.14"} → ${latest}
|
|
579822
579930
|
`);
|
|
579823
579931
|
writeToStdout(`
|
|
579824
579932
|
`);
|
|
@@ -579834,8 +579942,8 @@ async function update() {
|
|
|
579834
579942
|
writeToStdout(`Claude is managed by winget.
|
|
579835
579943
|
`);
|
|
579836
579944
|
const latest = await getLatestVersion(channel);
|
|
579837
|
-
if (latest && !gte("0.7.
|
|
579838
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579945
|
+
if (latest && !gte("0.7.14", latest)) {
|
|
579946
|
+
writeToStdout(`Update available: ${"0.7.14"} → ${latest}
|
|
579839
579947
|
`);
|
|
579840
579948
|
writeToStdout(`
|
|
579841
579949
|
`);
|
|
@@ -579851,8 +579959,8 @@ async function update() {
|
|
|
579851
579959
|
writeToStdout(`Claude is managed by apk.
|
|
579852
579960
|
`);
|
|
579853
579961
|
const latest = await getLatestVersion(channel);
|
|
579854
|
-
if (latest && !gte("0.7.
|
|
579855
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579962
|
+
if (latest && !gte("0.7.14", latest)) {
|
|
579963
|
+
writeToStdout(`Update available: ${"0.7.14"} → ${latest}
|
|
579856
579964
|
`);
|
|
579857
579965
|
writeToStdout(`
|
|
579858
579966
|
`);
|
|
@@ -579917,11 +580025,11 @@ async function update() {
|
|
|
579917
580025
|
`);
|
|
579918
580026
|
await gracefulShutdown(1);
|
|
579919
580027
|
}
|
|
579920
|
-
if (result.latestVersion === "0.7.
|
|
579921
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
580028
|
+
if (result.latestVersion === "0.7.14") {
|
|
580029
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.14"})`) + `
|
|
579922
580030
|
`);
|
|
579923
580031
|
} else {
|
|
579924
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
580032
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.14"} to version ${result.latestVersion}`) + `
|
|
579925
580033
|
`);
|
|
579926
580034
|
await regenerateCompletionCache();
|
|
579927
580035
|
}
|
|
@@ -579981,12 +580089,12 @@ async function update() {
|
|
|
579981
580089
|
`);
|
|
579982
580090
|
await gracefulShutdown(1);
|
|
579983
580091
|
}
|
|
579984
|
-
if (latestVersion === "0.7.
|
|
579985
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
580092
|
+
if (latestVersion === "0.7.14") {
|
|
580093
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.14"})`) + `
|
|
579986
580094
|
`);
|
|
579987
580095
|
await gracefulShutdown(0);
|
|
579988
580096
|
}
|
|
579989
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.
|
|
580097
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.14"})
|
|
579990
580098
|
`);
|
|
579991
580099
|
writeToStdout(`Installing update...
|
|
579992
580100
|
`);
|
|
@@ -580031,7 +580139,7 @@ async function update() {
|
|
|
580031
580139
|
logForDebugging2(`update: Installation status: ${status2}`);
|
|
580032
580140
|
switch (status2) {
|
|
580033
580141
|
case "success":
|
|
580034
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
580142
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.14"} to version ${latestVersion}`) + `
|
|
580035
580143
|
`);
|
|
580036
580144
|
await regenerateCompletionCache();
|
|
580037
580145
|
break;
|
|
@@ -582084,7 +582192,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
582084
582192
|
pendingHookMessages
|
|
582085
582193
|
}, renderAndRun);
|
|
582086
582194
|
}
|
|
582087
|
-
}).version(`0.7.
|
|
582195
|
+
}).version(`0.7.14 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
582088
582196
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
582089
582197
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
582090
582198
|
if (canUserConfigureAdvisor()) {
|
|
@@ -582652,7 +582760,7 @@ if (false) {}
|
|
|
582652
582760
|
async function main2() {
|
|
582653
582761
|
const args = process.argv.slice(2);
|
|
582654
582762
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
582655
|
-
console.log(`${"0.7.
|
|
582763
|
+
console.log(`${"0.7.14"} (Verboo Code)`);
|
|
582656
582764
|
return;
|
|
582657
582765
|
}
|
|
582658
582766
|
if (args.includes("--provider")) {
|
|
@@ -582808,4 +582916,4 @@ async function main2() {
|
|
|
582808
582916
|
}
|
|
582809
582917
|
main2();
|
|
582810
582918
|
|
|
582811
|
-
//# debugId=
|
|
582919
|
+
//# debugId=1E427B195CA6CAB364756E2164756E21
|