@verboo/code 0.7.11 → 0.7.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.mjs +179 -32
  2. 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.11";
115521
+ const version2 = "0.7.13";
115522
115522
  const bold2 = `${ESC}1m`;
115523
115523
  const PURPLE = rgb(...ACCENT);
115524
115524
  const SOFT = rgb(...CREAM);
@@ -201954,11 +201954,13 @@ function mapOpenAICompatibilityFailureToAssistantMessage(options2) {
201954
201954
  content: `The selected model (${options2.model}) is not available on this provider. Run ${switchCmd} to choose another model, or verify installed local models (for Ollama: ollama list).`,
201955
201955
  error: "invalid_request"
201956
201956
  });
201957
- case "auth_invalid":
201957
+ case "auth_invalid": {
201958
+ const verbooFirstParty = isVerbooMode() && isFirstPartyAnthropicBaseUrl();
201958
201959
  return createAssistantAPIErrorMessage({
201959
- content: `${API_ERROR_MESSAGE_PREFIX}: Authentication failed for your OpenAI-compatible provider. Verify OPENAI_API_KEY and endpoint-specific auth requirements.`,
201960
+ content: verbooFirstParty ? `${API_ERROR_MESSAGE_PREFIX}: Authentication failed. ${getIsNonInteractiveSession() ? "Run `verboo /login` and retry." : "Please run /login."}` : `${API_ERROR_MESSAGE_PREFIX}: Authentication failed. Verify your provider credentials (OPENAI_API_KEY / ANTHROPIC_BASE_URL / endpoint-specific auth headers).`,
201960
201961
  error: "authentication_failed"
201961
201962
  });
201963
+ }
201962
201964
  case "rate_limited":
201963
201965
  return createAssistantAPIErrorMessage({
201964
201966
  content: `${API_ERROR_MESSAGE_PREFIX}: Provider rate limit reached. Retry in a few seconds.`,
@@ -202055,10 +202057,10 @@ function getRequestTooLargeErrorMessage() {
202055
202057
  return getIsNonInteractiveSession() ? `Request too large (${limits}). Try with a smaller file.` : `Request too large (${limits}). Double press esc to go back and try with a smaller file.`;
202056
202058
  }
202057
202059
  function getTokenRevokedErrorMessage() {
202058
- return getIsNonInteractiveSession() ? "Your account does not have access to Claude. Please login again or contact your administrator." : TOKEN_REVOKED_ERROR_MESSAGE;
202060
+ return getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: OAuth token revoked. Run \`verboo /login\` to re-authenticate, or contact your administrator.` : TOKEN_REVOKED_ERROR_MESSAGE;
202059
202061
  }
202060
202062
  function getOauthOrgNotAllowedErrorMessage() {
202061
- return getIsNonInteractiveSession() ? "Your organization does not have access to Claude. Please login again or contact your administrator." : OAUTH_ORG_NOT_ALLOWED_ERROR_MESSAGE;
202063
+ return getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: Your organization does not have access to Verboo Code. Run \`verboo /login\` to switch accounts, or contact your administrator.` : OAUTH_ORG_NOT_ALLOWED_ERROR_MESSAGE;
202062
202064
  }
202063
202065
  function isCCRMode() {
202064
202066
  return isEnvTruthy(process.env.CLAUDE_CODE_REMOTE);
@@ -202430,7 +202432,7 @@ Run /share and post the JSON file to ${MACRO.FEEDBACK_CHANNEL}.`;
202430
202432
  }
202431
202433
  return createAssistantAPIErrorMessage({
202432
202434
  error: "authentication_failed",
202433
- content: getIsNonInteractiveSession() ? `Failed to authenticate. ${API_ERROR_MESSAGE_PREFIX}: ${error42.message}` : `Please run /login · ${API_ERROR_MESSAGE_PREFIX}: ${error42.message}`
202435
+ content: getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: ${error42.message} · Failed to authenticate. Run \`verboo /login\` to refresh credentials.` : `Please run /login · ${API_ERROR_MESSAGE_PREFIX}: ${error42.message}`
202434
202436
  });
202435
202437
  }
202436
202438
  if (isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) && error42 instanceof Error && error42.message.toLowerCase().includes("model id")) {
@@ -202609,6 +202611,7 @@ var init_errors6 = __esm(() => {
202609
202611
  init_providers();
202610
202612
  init_state();
202611
202613
  init_apiLimits();
202614
+ init_oauth();
202612
202615
  init_envUtils();
202613
202616
  init_format2();
202614
202617
  init_imageResizer();
@@ -376810,7 +376813,7 @@ function getAnthropicEnvMetadata() {
376810
376813
  function getBuildAgeMinutes() {
376811
376814
  if (false)
376812
376815
  ;
376813
- const buildTime = new Date("2026-05-01T11:01:27.547Z").getTime();
376816
+ const buildTime = new Date("2026-05-01T21:26:42.802Z").getTime();
376814
376817
  if (isNaN(buildTime))
376815
376818
  return;
376816
376819
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -417346,7 +417349,7 @@ function buildPrimarySection() {
417346
417349
  }, undefined, false, undefined, this);
417347
417350
  return [{
417348
417351
  label: "Version",
417349
- value: "0.7.11"
417352
+ value: "0.7.13"
417350
417353
  }, {
417351
417354
  label: "Session name",
417352
417355
  value: nameValue
@@ -485296,7 +485299,7 @@ var init_bridge_kick = __esm(() => {
485296
485299
  var call60 = async () => {
485297
485300
  return {
485298
485301
  type: "text",
485299
- value: `${"99.0.0"} (built ${"2026-05-01T11:01:27.547Z"})`
485302
+ value: `${"99.0.0"} (built ${"2026-05-01T21:26:42.802Z"})`
485300
485303
  };
485301
485304
  }, version2, version_default;
485302
485305
  var init_version = __esm(() => {
@@ -538084,6 +538087,49 @@ var init_PromptInputFooterLeftSide = __esm(() => {
538084
538087
  });
538085
538088
 
538086
538089
  // src/components/PromptInput/PromptInputFooter.tsx
538090
+ function ContextWindowDisplay({ messages, permissionMode }) {
538091
+ const mainLoopModel = useMainLoopModel();
538092
+ const exceeds200k = doesMostRecentAssistantMessageExceed200k(messages);
538093
+ const runtimeModel = getRuntimeMainLoopModel({ permissionMode, mainLoopModel, exceeds200kTokens: exceeds200k });
538094
+ const usage = getCurrentUsage(messages);
538095
+ const windowSize = getContextWindowForModel(runtimeModel, getSdkBetas());
538096
+ if (!usage) {
538097
+ const emptyBar = "░".repeat(BAR_WIDTH);
538098
+ const windowK2 = formatNumber(windowSize);
538099
+ return /* @__PURE__ */ jsx_dev_runtime429.jsxDEV(ThemedText, {
538100
+ dimColor: true,
538101
+ children: [
538102
+ "ctx [",
538103
+ emptyBar,
538104
+ "] 0/",
538105
+ windowK2,
538106
+ " 0%"
538107
+ ]
538108
+ }, undefined, true, undefined, this);
538109
+ }
538110
+ const { used } = calculateContextPercentages(usage, windowSize);
538111
+ const pct = Math.round(used);
538112
+ const filled = Math.round(pct / 100 * BAR_WIDTH);
538113
+ const bar = "█".repeat(filled) + "░".repeat(BAR_WIDTH - filled);
538114
+ const color3 = pct >= 90 ? "red" : pct >= 70 ? "yellow" : undefined;
538115
+ const inputK = formatNumber(usage.input_tokens);
538116
+ const windowK = formatNumber(windowSize);
538117
+ return /* @__PURE__ */ jsx_dev_runtime429.jsxDEV(ThemedText, {
538118
+ dimColor: true,
538119
+ color: color3,
538120
+ children: [
538121
+ "ctx [",
538122
+ bar,
538123
+ "] ",
538124
+ inputK,
538125
+ "/",
538126
+ windowK,
538127
+ " ",
538128
+ pct,
538129
+ "%"
538130
+ ]
538131
+ }, undefined, true, undefined, this);
538132
+ }
538087
538133
  function PromptInputFooter({
538088
538134
  apiKeyStatus,
538089
538135
  debug,
@@ -538174,6 +538220,10 @@ function PromptInputFooter({
538174
538220
  lastAssistantMessageId,
538175
538221
  vimMode
538176
538222
  }, undefined, false, undefined, this),
538223
+ mode === "prompt" && !exitMessage.show && !isPasting && /* @__PURE__ */ jsx_dev_runtime429.jsxDEV(ContextWindowDisplay, {
538224
+ messages,
538225
+ permissionMode: toolPermissionContext.mode
538226
+ }, undefined, false, undefined, this),
538177
538227
  /* @__PURE__ */ jsx_dev_runtime429.jsxDEV(PromptInputFooterLeftSide, {
538178
538228
  exitMessage,
538179
538229
  vimMode,
@@ -538258,16 +538308,22 @@ function BridgeStatusIndicator({
538258
538308
  ]
538259
538309
  }, undefined, true, undefined, this);
538260
538310
  }
538261
- var import_react252, jsx_dev_runtime429, PromptInputFooter_default;
538311
+ var import_react252, jsx_dev_runtime429, BAR_WIDTH = 20, PromptInputFooter_default;
538262
538312
  var init_PromptInputFooter = __esm(() => {
538263
538313
  init_bridgeEnabled();
538264
538314
  init_bridgeStatusUtil();
538315
+ init_state();
538265
538316
  init_promptOverlayContext();
538317
+ init_useMainLoopModel();
538266
538318
  init_useSettings();
538267
538319
  init_useTerminalSize();
538268
538320
  init_ink2();
538269
538321
  init_AppState();
538322
+ init_context();
538323
+ init_format2();
538270
538324
  init_fullscreen();
538325
+ init_model();
538326
+ init_tokens();
538271
538327
  init_CoordinatorAgentStatus();
538272
538328
  init_StatusLine();
538273
538329
  init_Notifications();
@@ -561013,7 +561069,7 @@ function WelcomeV2() {
561013
561069
  dimColor: true,
561014
561070
  children: [
561015
561071
  "v",
561016
- "0.7.11",
561072
+ "0.7.13",
561017
561073
  " "
561018
561074
  ]
561019
561075
  }, undefined, true, undefined, this)
@@ -561200,7 +561256,7 @@ function WelcomeV2() {
561200
561256
  dimColor: true,
561201
561257
  children: [
561202
561258
  "v",
561203
- "0.7.11",
561259
+ "0.7.13",
561204
561260
  " "
561205
561261
  ]
561206
561262
  }, undefined, true, undefined, this)
@@ -561416,7 +561472,7 @@ function AppleTerminalWelcomeV2(t0) {
561416
561472
  dimColor: true,
561417
561473
  children: [
561418
561474
  "v",
561419
- "0.7.11",
561475
+ "0.7.13",
561420
561476
  " "
561421
561477
  ]
561422
561478
  }, undefined, true, undefined, this);
@@ -561625,7 +561681,7 @@ function AppleTerminalWelcomeV2(t0) {
561625
561681
  dimColor: true,
561626
561682
  children: [
561627
561683
  "v",
561628
- "0.7.11",
561684
+ "0.7.13",
561629
561685
  " "
561630
561686
  ]
561631
561687
  }, undefined, true, undefined, this);
@@ -565178,6 +565234,95 @@ var init_debug2 = __esm(() => {
565178
565234
  TAIL_READ_BYTES = 64 * 1024;
565179
565235
  });
565180
565236
 
565237
+ // src/skills/bundled/karpathyGuidelines.ts
565238
+ function registerKarpathyGuidelinesSkill() {
565239
+ registerBundledSkill({
565240
+ name: "karpathy-guidelines",
565241
+ 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.",
565242
+ userInvocable: true,
565243
+ async getPromptForCommand(args) {
565244
+ let prompt = KARPATHY_GUIDELINES_PROMPT;
565245
+ if (args) {
565246
+ prompt += `
565247
+
565248
+ ## Context
565249
+
565250
+ ${args}`;
565251
+ }
565252
+ return [{ type: "text", text: prompt }];
565253
+ }
565254
+ });
565255
+ }
565256
+ var KARPATHY_GUIDELINES_PROMPT = `# Karpathy Guidelines
565257
+
565258
+ Behavioral guidelines to reduce common LLM coding mistakes, derived from Andrej Karpathy's observations on LLM coding pitfalls.
565259
+
565260
+ **Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.
565261
+
565262
+ ## 1. Think Before Coding
565263
+
565264
+ **Don't assume. Don't hide confusion. Surface tradeoffs.**
565265
+
565266
+ Before implementing:
565267
+ - State your assumptions explicitly. If uncertain, ask.
565268
+ - If multiple interpretations exist, present them - don't pick silently.
565269
+ - If a simpler approach exists, say so. Push back when warranted.
565270
+ - If something is unclear, stop. Name what's confusing. Ask.
565271
+
565272
+ ## 2. Simplicity First
565273
+
565274
+ **Minimum code that solves the problem. Nothing speculative.**
565275
+
565276
+ - No features beyond what was asked.
565277
+ - No abstractions for single-use code.
565278
+ - No "flexibility" or "configurability" that wasn't requested.
565279
+ - No error handling for impossible scenarios.
565280
+ - If you write 200 lines and it could be 50, rewrite it.
565281
+
565282
+ Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
565283
+
565284
+ ## 3. Surgical Changes
565285
+
565286
+ **Touch only what you must. Clean up only your own mess.**
565287
+
565288
+ When editing existing code:
565289
+ - Don't "improve" adjacent code, comments, or formatting.
565290
+ - Don't refactor things that aren't broken.
565291
+ - Match existing style, even if you'd do it differently.
565292
+ - If you notice unrelated dead code, mention it - don't delete it.
565293
+
565294
+ When your changes create orphans:
565295
+ - Remove imports/variables/functions that YOUR changes made unused.
565296
+ - Don't remove pre-existing dead code unless asked.
565297
+
565298
+ The test: Every changed line should trace directly to the user's request.
565299
+
565300
+ ## 4. Goal-Driven Execution
565301
+
565302
+ **Define success criteria. Loop until verified.**
565303
+
565304
+ Transform tasks into verifiable goals:
565305
+ - "Add validation" → "Write tests for invalid inputs, then make them pass"
565306
+ - "Fix the bug" → "Write a test that reproduces it, then make it pass"
565307
+ - "Refactor X" → "Ensure tests pass before and after"
565308
+
565309
+ For multi-step tasks, state a brief plan:
565310
+ \`\`\`
565311
+ 1. [Step] → verify: [check]
565312
+ 2. [Step] → verify: [check]
565313
+ 3. [Step] → verify: [check]
565314
+ \`\`\`
565315
+
565316
+ Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
565317
+
565318
+ ---
565319
+
565320
+ Apply these guidelines to the current task now.
565321
+ `;
565322
+ var init_karpathyGuidelines = __esm(() => {
565323
+ init_bundledSkills();
565324
+ });
565325
+
565181
565326
  // src/keybindings/schema.ts
565182
565327
  var KEYBINDING_CONTEXTS, KEYBINDING_CONTEXT_DESCRIPTIONS, KEYBINDING_ACTIONS, KeybindingBlockSchema, KeybindingsSchema;
565183
565328
  var init_schema = __esm(() => {
@@ -566370,6 +566515,7 @@ function initBundledSkills() {
566370
566515
  registerKeybindingsSkill();
566371
566516
  registerDebugSkill();
566372
566517
  registerSimplifySkill();
566518
+ registerKarpathyGuidelinesSkill();
566373
566519
  registerBatchSkill();
566374
566520
  if (false) {}
566375
566521
  if (false) {}
@@ -566386,6 +566532,7 @@ var init_bundled = __esm(() => {
566386
566532
  init_batch();
566387
566533
  init_claudeInChrome();
566388
566534
  init_debug2();
566535
+ init_karpathyGuidelines();
566389
566536
  init_keybindings3();
566390
566537
  init_loop();
566391
566538
  init_simplify();
@@ -579665,7 +579812,7 @@ __export(exports_update, {
579665
579812
  async function update() {
579666
579813
  if (getAPIProvider() !== "firstParty") {
579667
579814
  writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
579668
- `) + `Current version: ${"0.7.11"}
579815
+ `) + `Current version: ${"0.7.13"}
579669
579816
 
579670
579817
  ` + `To update, reinstall from npm:
579671
579818
  ` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
@@ -579676,7 +579823,7 @@ async function update() {
579676
579823
  await gracefulShutdown(0);
579677
579824
  }
579678
579825
  logEvent("tengu_update_check", {});
579679
- writeToStdout(`Current version: ${"0.7.11"}
579826
+ writeToStdout(`Current version: ${"0.7.13"}
579680
579827
  `);
579681
579828
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
579682
579829
  writeToStdout(`Checking for updates to ${channel} version...
@@ -579761,8 +579908,8 @@ async function update() {
579761
579908
  writeToStdout(`Claude is managed by Homebrew.
579762
579909
  `);
579763
579910
  const latest = await getLatestVersion(channel);
579764
- if (latest && !gte("0.7.11", latest)) {
579765
- writeToStdout(`Update available: ${"0.7.11"} → ${latest}
579911
+ if (latest && !gte("0.7.13", latest)) {
579912
+ writeToStdout(`Update available: ${"0.7.13"} → ${latest}
579766
579913
  `);
579767
579914
  writeToStdout(`
579768
579915
  `);
@@ -579778,8 +579925,8 @@ async function update() {
579778
579925
  writeToStdout(`Claude is managed by winget.
579779
579926
  `);
579780
579927
  const latest = await getLatestVersion(channel);
579781
- if (latest && !gte("0.7.11", latest)) {
579782
- writeToStdout(`Update available: ${"0.7.11"} → ${latest}
579928
+ if (latest && !gte("0.7.13", latest)) {
579929
+ writeToStdout(`Update available: ${"0.7.13"} → ${latest}
579783
579930
  `);
579784
579931
  writeToStdout(`
579785
579932
  `);
@@ -579795,8 +579942,8 @@ async function update() {
579795
579942
  writeToStdout(`Claude is managed by apk.
579796
579943
  `);
579797
579944
  const latest = await getLatestVersion(channel);
579798
- if (latest && !gte("0.7.11", latest)) {
579799
- writeToStdout(`Update available: ${"0.7.11"} → ${latest}
579945
+ if (latest && !gte("0.7.13", latest)) {
579946
+ writeToStdout(`Update available: ${"0.7.13"} → ${latest}
579800
579947
  `);
579801
579948
  writeToStdout(`
579802
579949
  `);
@@ -579861,11 +580008,11 @@ async function update() {
579861
580008
  `);
579862
580009
  await gracefulShutdown(1);
579863
580010
  }
579864
- if (result.latestVersion === "0.7.11") {
579865
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.11"})`) + `
580011
+ if (result.latestVersion === "0.7.13") {
580012
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.13"})`) + `
579866
580013
  `);
579867
580014
  } else {
579868
- writeToStdout(source_default.green(`Successfully updated from ${"0.7.11"} to version ${result.latestVersion}`) + `
580015
+ writeToStdout(source_default.green(`Successfully updated from ${"0.7.13"} to version ${result.latestVersion}`) + `
579869
580016
  `);
579870
580017
  await regenerateCompletionCache();
579871
580018
  }
@@ -579925,12 +580072,12 @@ async function update() {
579925
580072
  `);
579926
580073
  await gracefulShutdown(1);
579927
580074
  }
579928
- if (latestVersion === "0.7.11") {
579929
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.11"})`) + `
580075
+ if (latestVersion === "0.7.13") {
580076
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.13"})`) + `
579930
580077
  `);
579931
580078
  await gracefulShutdown(0);
579932
580079
  }
579933
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.11"})
580080
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.13"})
579934
580081
  `);
579935
580082
  writeToStdout(`Installing update...
579936
580083
  `);
@@ -579975,7 +580122,7 @@ async function update() {
579975
580122
  logForDebugging2(`update: Installation status: ${status2}`);
579976
580123
  switch (status2) {
579977
580124
  case "success":
579978
- writeToStdout(source_default.green(`Successfully updated from ${"0.7.11"} to version ${latestVersion}`) + `
580125
+ writeToStdout(source_default.green(`Successfully updated from ${"0.7.13"} to version ${latestVersion}`) + `
579979
580126
  `);
579980
580127
  await regenerateCompletionCache();
579981
580128
  break;
@@ -582028,7 +582175,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
582028
582175
  pendingHookMessages
582029
582176
  }, renderAndRun);
582030
582177
  }
582031
- }).version(`0.7.11 (${cliDesc})`, "-v, --version", "Output the version number");
582178
+ }).version(`0.7.13 (${cliDesc})`, "-v, --version", "Output the version number");
582032
582179
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
582033
582180
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
582034
582181
  if (canUserConfigureAdvisor()) {
@@ -582596,7 +582743,7 @@ if (false) {}
582596
582743
  async function main2() {
582597
582744
  const args = process.argv.slice(2);
582598
582745
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
582599
- console.log(`${"0.7.11"} (Verboo Code)`);
582746
+ console.log(`${"0.7.13"} (Verboo Code)`);
582600
582747
  return;
582601
582748
  }
582602
582749
  if (args.includes("--provider")) {
@@ -582752,4 +582899,4 @@ async function main2() {
582752
582899
  }
582753
582900
  main2();
582754
582901
 
582755
- //# debugId=37F9E29C252D379E64756E2164756E21
582902
+ //# debugId=85C039292D955A7B64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.7.11",
3
+ "version": "0.7.13",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {