@verboo/code 0.7.17 → 0.7.18

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 +107 -43
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -111230,6 +111230,7 @@ __export(exports_model, {
111230
111230
  isOpus1mMergeEnabled: () => isOpus1mMergeEnabled,
111231
111231
  isNonCustomOpusModel: () => isNonCustomOpusModel,
111232
111232
  isLegacyModelRemapEnabled: () => isLegacyModelRemapEnabled,
111233
+ isClaudeModelLike: () => isClaudeModelLike,
111233
111234
  getUserSpecifiedModelSetting: () => getUserSpecifiedModelSetting,
111234
111235
  getSmallFastModel: () => getSmallFastModel,
111235
111236
  getRuntimeMainLoopModel: () => getRuntimeMainLoopModel,
@@ -111238,6 +111239,7 @@ __export(exports_model, {
111238
111239
  getOpus46PricingSuffix: () => getOpus46PricingSuffix,
111239
111240
  getMarketingNameForModel: () => getMarketingNameForModel,
111240
111241
  getMainLoopModel: () => getMainLoopModel,
111242
+ getDefaultVerbooModel: () => getDefaultVerbooModel,
111241
111243
  getDefaultSonnetModel: () => getDefaultSonnetModel,
111242
111244
  getDefaultOpusModel: () => getDefaultOpusModel,
111243
111245
  getDefaultMainLoopModelSetting: () => getDefaultMainLoopModelSetting,
@@ -111254,15 +111256,47 @@ function normalizeModelSetting(value) {
111254
111256
  const trimmed = value.trim();
111255
111257
  return trimmed.length > 0 ? trimmed : undefined;
111256
111258
  }
111259
+ function isClaudeModelLike(model) {
111260
+ if (typeof model !== "string")
111261
+ return false;
111262
+ const normalized = model.trim().toLowerCase();
111263
+ if (!normalized)
111264
+ return false;
111265
+ const withoutContext = normalized.replace(/\[1m]$/i, "").trim();
111266
+ return withoutContext.includes("claude") || withoutContext === "sonnet" || withoutContext === "opus" || withoutContext === "haiku" || withoutContext === "best" || withoutContext === "opusplan";
111267
+ }
111268
+ function getDefaultVerbooModel() {
111269
+ const cached2 = getCachedVerbooModels();
111270
+ const cachedModel = cached2?.find((m) => !isClaudeModelLike(m.id))?.id;
111271
+ if (cachedModel)
111272
+ return cachedModel;
111273
+ const envFallback = normalizeModelSetting(process.env.VERBOO_DEFAULT_MODEL) ?? normalizeModelSetting(process.env.OPENAI_MODEL);
111274
+ if (envFallback && !isClaudeModelLike(envFallback)) {
111275
+ return envFallback.replace(/\[1m\]$/i, "").trim();
111276
+ }
111277
+ return VERBOO_FALLBACK_MODEL;
111278
+ }
111279
+ function getVerbooSpecifiedModel(specifiedModel) {
111280
+ if (specifiedModel === undefined || specifiedModel === null) {
111281
+ return specifiedModel;
111282
+ }
111283
+ const normalized = normalizeModelSetting(specifiedModel);
111284
+ if (!normalized || isClaudeModelLike(normalized)) {
111285
+ return;
111286
+ }
111287
+ const modelWithoutContext = normalized.replace(/\[1m\]$/i, "").trim();
111288
+ const cached2 = getCachedVerbooModels();
111289
+ if (cached2 && cached2.length > 0) {
111290
+ return cached2.some((m) => m.id === modelWithoutContext && !isClaudeModelLike(m.id)) ? modelWithoutContext : undefined;
111291
+ }
111292
+ return modelWithoutContext;
111293
+ }
111257
111294
  function getSmallFastModel() {
111258
- if (process.env.ANTHROPIC_SMALL_FAST_MODEL)
111259
- return process.env.ANTHROPIC_SMALL_FAST_MODEL;
111260
111295
  if (isVerbooMode()) {
111261
- const cached2 = getCachedVerbooModels();
111262
- if (cached2 && cached2.length > 0) {
111263
- return cached2[0].id;
111264
- }
111296
+ return getDefaultVerbooModel();
111265
111297
  }
111298
+ if (process.env.ANTHROPIC_SMALL_FAST_MODEL)
111299
+ return process.env.ANTHROPIC_SMALL_FAST_MODEL;
111266
111300
  if (getAPIProvider() === "gemini") {
111267
111301
  return process.env.GEMINI_MODEL || "gemini-2.0-flash-lite";
111268
111302
  }
@@ -111304,18 +111338,12 @@ function getUserSpecifiedModelSetting() {
111304
111338
  const isOpenAIShimProvider = provider === "openai" || provider === "codex" || provider === "github" || provider === "nvidia-nim" || provider === "minimax" || provider === "xai";
111305
111339
  specifiedModel = (provider === "gemini" ? process.env.GEMINI_MODEL : undefined) || (provider === "mistral" ? process.env.MISTRAL_MODEL : undefined) || (isOpenAIShimProvider ? process.env.OPENAI_MODEL : undefined) || (provider === "firstParty" ? process.env.ANTHROPIC_MODEL : undefined) || setting || undefined;
111306
111340
  }
111341
+ if (isVerbooMode()) {
111342
+ return getVerbooSpecifiedModel(specifiedModel);
111343
+ }
111307
111344
  if (specifiedModel && !isModelAllowed(specifiedModel)) {
111308
111345
  return;
111309
111346
  }
111310
- if (specifiedModel && isVerbooMode()) {
111311
- const cached2 = getCachedVerbooModels();
111312
- if (cached2 && cached2.length > 0) {
111313
- const verbooIds = new Set(cached2.map((m) => m.id));
111314
- if (!verbooIds.has(specifiedModel)) {
111315
- return;
111316
- }
111317
- }
111318
- }
111319
111347
  return specifiedModel;
111320
111348
  }
111321
111349
  function getMainLoopModel() {
@@ -111329,6 +111357,9 @@ function getBestModel() {
111329
111357
  return getDefaultOpusModel();
111330
111358
  }
111331
111359
  function getDefaultOpusModel() {
111360
+ if (isVerbooMode()) {
111361
+ return getDefaultVerbooModel();
111362
+ }
111332
111363
  if (process.env.ANTHROPIC_DEFAULT_OPUS_MODEL) {
111333
111364
  return process.env.ANTHROPIC_DEFAULT_OPUS_MODEL;
111334
111365
  }
@@ -111362,6 +111393,9 @@ function getDefaultOpusModel() {
111362
111393
  return getModelStrings2().opus46;
111363
111394
  }
111364
111395
  function getDefaultSonnetModel() {
111396
+ if (isVerbooMode()) {
111397
+ return getDefaultVerbooModel();
111398
+ }
111365
111399
  if (process.env.ANTHROPIC_DEFAULT_SONNET_MODEL) {
111366
111400
  return process.env.ANTHROPIC_DEFAULT_SONNET_MODEL;
111367
111401
  }
@@ -111395,6 +111429,9 @@ function getDefaultSonnetModel() {
111395
111429
  return getModelStrings2().sonnet46;
111396
111430
  }
111397
111431
  function getDefaultHaikuModel() {
111432
+ if (isVerbooMode()) {
111433
+ return getDefaultVerbooModel();
111434
+ }
111398
111435
  if (process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL) {
111399
111436
  return process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL;
111400
111437
  }
@@ -111435,6 +111472,9 @@ function getRuntimeMainLoopModel(params) {
111435
111472
  return mainLoopModel;
111436
111473
  }
111437
111474
  function getDefaultMainLoopModelSetting() {
111475
+ if (isVerbooMode()) {
111476
+ return getDefaultVerbooModel();
111477
+ }
111438
111478
  if (getAPIProvider() === "github") {
111439
111479
  const settings = getSettings_DEPRECATED() || {};
111440
111480
  return normalizeModelSetting(settings.model) || normalizeModelSetting(process.env.OPENAI_MODEL) || "github:copilot";
@@ -111688,6 +111728,18 @@ function parseUserSpecifiedModel(modelInput) {
111688
111728
  const normalizedModel = modelInputTrimmed.toLowerCase();
111689
111729
  const has1mTag = has1mContext(normalizedModel);
111690
111730
  const modelString = has1mTag ? normalizedModel.replace(/\[1m]$/i, "").trim() : normalizedModel;
111731
+ if (isVerbooMode()) {
111732
+ if (modelString === "codexplan") {
111733
+ return "gpt-5.5";
111734
+ }
111735
+ if (modelString === "codexspark") {
111736
+ return "gpt-5.3-codex-spark";
111737
+ }
111738
+ if (isClaudeModelLike(modelString)) {
111739
+ return getDefaultVerbooModel();
111740
+ }
111741
+ return modelInputTrimmed.replace(/\[1m\]$/i, "").trim();
111742
+ }
111691
111743
  if (isModelAlias(modelString)) {
111692
111744
  switch (modelString) {
111693
111745
  case "opusplan":
@@ -111797,7 +111849,7 @@ function getMarketingNameForModel(modelId) {
111797
111849
  function normalizeModelStringForAPI(model) {
111798
111850
  return model.replace(/\[(1|2)m\]/gi, "");
111799
111851
  }
111800
- var LEGACY_OPUS_FIRSTPARTY;
111852
+ var VERBOO_FALLBACK_MODEL = "gpt-5.5", LEGACY_OPUS_FIRSTPARTY;
111801
111853
  var init_model = __esm(() => {
111802
111854
  init_state();
111803
111855
  init_oauth();
@@ -115518,7 +115570,7 @@ function printStartupScreen(modelOverride) {
115518
115570
  const home = process.env.HOME || process.env.USERPROFILE || "";
115519
115571
  const cwd2 = process.cwd();
115520
115572
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
115521
- const version2 = "0.7.17";
115573
+ const version2 = "0.7.18";
115522
115574
  const bold2 = `${ESC}1m`;
115523
115575
  const PURPLE = rgb(...ACCENT);
115524
115576
  const SOFT = rgb(...CREAM);
@@ -201092,13 +201144,18 @@ async function getAnthropicClient({
201092
201144
  if (!accessToken) {
201093
201145
  process.stderr.write("[Verboo] ERRO: token de acesso não encontrado. Execute `verboo /login`.\n");
201094
201146
  }
201147
+ const requestedModel = model?.trim();
201148
+ const safeVerbooModel = requestedModel && !isClaudeModelLike(requestedModel) ? requestedModel.replace(/\[1m\]$/i, "").trim() : getDefaultVerbooModel();
201149
+ if (requestedModel && requestedModel !== safeVerbooModel) {
201150
+ logForDebugging2(`[Verboo] Ignoring Claude/unsupported model "${requestedModel}" and using "${safeVerbooModel}"`, { level: "warn" });
201151
+ }
201095
201152
  const { createOpenAIShimClient: createOpenAIShimClient2 } = await Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim));
201096
201153
  return createOpenAIShimClient2({
201097
201154
  defaultHeaders,
201098
201155
  maxRetries,
201099
201156
  timeout: parseInt(process.env.API_TIMEOUT_MS || String(600000), 10),
201100
201157
  providerOverride: {
201101
- model: model ?? "",
201158
+ model: safeVerbooModel,
201102
201159
  baseURL: VERBOO_ROUTER_URL,
201103
201160
  apiKey: accessToken ?? ""
201104
201161
  }
@@ -376918,7 +376975,7 @@ function getAnthropicEnvMetadata() {
376918
376975
  function getBuildAgeMinutes() {
376919
376976
  if (false)
376920
376977
  ;
376921
- const buildTime = new Date("2026-05-02T19:34:06.611Z").getTime();
376978
+ const buildTime = new Date("2026-05-02T19:45:06.160Z").getTime();
376922
376979
  if (isNaN(buildTime))
376923
376980
  return;
376924
376981
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -417454,7 +417511,7 @@ function buildPrimarySection() {
417454
417511
  }, undefined, false, undefined, this);
417455
417512
  return [{
417456
417513
  label: "Version",
417457
- value: "0.7.17"
417514
+ value: "0.7.18"
417458
417515
  }, {
417459
417516
  label: "Session name",
417460
417517
  value: nameValue
@@ -485404,7 +485461,7 @@ var init_bridge_kick = __esm(() => {
485404
485461
  var call60 = async () => {
485405
485462
  return {
485406
485463
  type: "text",
485407
- value: `${"99.0.0"} (built ${"2026-05-02T19:34:06.611Z"})`
485464
+ value: `${"99.0.0"} (built ${"2026-05-02T19:45:06.160Z"})`
485408
485465
  };
485409
485466
  }, version2, version_default;
485410
485467
  var init_version = __esm(() => {
@@ -487898,6 +487955,12 @@ async function validateModel(model) {
487898
487955
  return { valid: false, error: "Model name cannot be empty" };
487899
487956
  }
487900
487957
  if (isVerbooMode()) {
487958
+ if (isClaudeModelLike(normalizedModel)) {
487959
+ return {
487960
+ valid: false,
487961
+ error: `Modelo '${normalizedModel}' não pode ser usado no Verboo Code.`
487962
+ };
487963
+ }
487901
487964
  const verbooModels = getCachedVerbooModels();
487902
487965
  if (verbooModels && verbooModels.length > 0) {
487903
487966
  const found = verbooModels.some((m) => m.id === normalizedModel);
@@ -488066,6 +488129,7 @@ var init_validateModel = __esm(() => {
488066
488129
  init_minimaxModels();
488067
488130
  init_oauth();
488068
488131
  init_verbooModels();
488132
+ init_model();
488069
488133
  validModelCache = new Map;
488070
488134
  });
488071
488135
 
@@ -561186,7 +561250,7 @@ function WelcomeV2() {
561186
561250
  dimColor: true,
561187
561251
  children: [
561188
561252
  "v",
561189
- "0.7.17",
561253
+ "0.7.18",
561190
561254
  " "
561191
561255
  ]
561192
561256
  }, undefined, true, undefined, this)
@@ -561373,7 +561437,7 @@ function WelcomeV2() {
561373
561437
  dimColor: true,
561374
561438
  children: [
561375
561439
  "v",
561376
- "0.7.17",
561440
+ "0.7.18",
561377
561441
  " "
561378
561442
  ]
561379
561443
  }, undefined, true, undefined, this)
@@ -561589,7 +561653,7 @@ function AppleTerminalWelcomeV2(t0) {
561589
561653
  dimColor: true,
561590
561654
  children: [
561591
561655
  "v",
561592
- "0.7.17",
561656
+ "0.7.18",
561593
561657
  " "
561594
561658
  ]
561595
561659
  }, undefined, true, undefined, this);
@@ -561798,7 +561862,7 @@ function AppleTerminalWelcomeV2(t0) {
561798
561862
  dimColor: true,
561799
561863
  children: [
561800
561864
  "v",
561801
- "0.7.17",
561865
+ "0.7.18",
561802
561866
  " "
561803
561867
  ]
561804
561868
  }, undefined, true, undefined, this);
@@ -579929,7 +579993,7 @@ __export(exports_update, {
579929
579993
  async function update() {
579930
579994
  if (getAPIProvider() !== "firstParty") {
579931
579995
  writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
579932
- `) + `Current version: ${"0.7.17"}
579996
+ `) + `Current version: ${"0.7.18"}
579933
579997
 
579934
579998
  ` + `To update, reinstall from npm:
579935
579999
  ` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
@@ -579940,7 +580004,7 @@ async function update() {
579940
580004
  await gracefulShutdown(0);
579941
580005
  }
579942
580006
  logEvent("tengu_update_check", {});
579943
- writeToStdout(`Current version: ${"0.7.17"}
580007
+ writeToStdout(`Current version: ${"0.7.18"}
579944
580008
  `);
579945
580009
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
579946
580010
  writeToStdout(`Checking for updates to ${channel} version...
@@ -580025,8 +580089,8 @@ async function update() {
580025
580089
  writeToStdout(`Claude is managed by Homebrew.
580026
580090
  `);
580027
580091
  const latest = await getLatestVersion(channel);
580028
- if (latest && !gte("0.7.17", latest)) {
580029
- writeToStdout(`Update available: ${"0.7.17"} → ${latest}
580092
+ if (latest && !gte("0.7.18", latest)) {
580093
+ writeToStdout(`Update available: ${"0.7.18"} → ${latest}
580030
580094
  `);
580031
580095
  writeToStdout(`
580032
580096
  `);
@@ -580042,8 +580106,8 @@ async function update() {
580042
580106
  writeToStdout(`Claude is managed by winget.
580043
580107
  `);
580044
580108
  const latest = await getLatestVersion(channel);
580045
- if (latest && !gte("0.7.17", latest)) {
580046
- writeToStdout(`Update available: ${"0.7.17"} → ${latest}
580109
+ if (latest && !gte("0.7.18", latest)) {
580110
+ writeToStdout(`Update available: ${"0.7.18"} → ${latest}
580047
580111
  `);
580048
580112
  writeToStdout(`
580049
580113
  `);
@@ -580059,8 +580123,8 @@ async function update() {
580059
580123
  writeToStdout(`Claude is managed by apk.
580060
580124
  `);
580061
580125
  const latest = await getLatestVersion(channel);
580062
- if (latest && !gte("0.7.17", latest)) {
580063
- writeToStdout(`Update available: ${"0.7.17"} → ${latest}
580126
+ if (latest && !gte("0.7.18", latest)) {
580127
+ writeToStdout(`Update available: ${"0.7.18"} → ${latest}
580064
580128
  `);
580065
580129
  writeToStdout(`
580066
580130
  `);
@@ -580125,11 +580189,11 @@ async function update() {
580125
580189
  `);
580126
580190
  await gracefulShutdown(1);
580127
580191
  }
580128
- if (result.latestVersion === "0.7.17") {
580129
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.17"})`) + `
580192
+ if (result.latestVersion === "0.7.18") {
580193
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.18"})`) + `
580130
580194
  `);
580131
580195
  } else {
580132
- writeToStdout(source_default.green(`Successfully updated from ${"0.7.17"} to version ${result.latestVersion}`) + `
580196
+ writeToStdout(source_default.green(`Successfully updated from ${"0.7.18"} to version ${result.latestVersion}`) + `
580133
580197
  `);
580134
580198
  await regenerateCompletionCache();
580135
580199
  }
@@ -580189,12 +580253,12 @@ async function update() {
580189
580253
  `);
580190
580254
  await gracefulShutdown(1);
580191
580255
  }
580192
- if (latestVersion === "0.7.17") {
580193
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.17"})`) + `
580256
+ if (latestVersion === "0.7.18") {
580257
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.18"})`) + `
580194
580258
  `);
580195
580259
  await gracefulShutdown(0);
580196
580260
  }
580197
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.17"})
580261
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.18"})
580198
580262
  `);
580199
580263
  writeToStdout(`Installing update...
580200
580264
  `);
@@ -580239,7 +580303,7 @@ async function update() {
580239
580303
  logForDebugging2(`update: Installation status: ${status2}`);
580240
580304
  switch (status2) {
580241
580305
  case "success":
580242
- writeToStdout(source_default.green(`Successfully updated from ${"0.7.17"} to version ${latestVersion}`) + `
580306
+ writeToStdout(source_default.green(`Successfully updated from ${"0.7.18"} to version ${latestVersion}`) + `
580243
580307
  `);
580244
580308
  await regenerateCompletionCache();
580245
580309
  break;
@@ -582292,7 +582356,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
582292
582356
  pendingHookMessages
582293
582357
  }, renderAndRun);
582294
582358
  }
582295
- }).version(`0.7.17 (${cliDesc})`, "-v, --version", "Output the version number");
582359
+ }).version(`0.7.18 (${cliDesc})`, "-v, --version", "Output the version number");
582296
582360
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
582297
582361
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
582298
582362
  if (canUserConfigureAdvisor()) {
@@ -582860,7 +582924,7 @@ if (false) {}
582860
582924
  async function main2() {
582861
582925
  const args = process.argv.slice(2);
582862
582926
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
582863
- console.log(`${"0.7.17"} (Verboo Code)`);
582927
+ console.log(`${"0.7.18"} (Verboo Code)`);
582864
582928
  return;
582865
582929
  }
582866
582930
  if (args.includes("--provider")) {
@@ -583016,4 +583080,4 @@ async function main2() {
583016
583080
  }
583017
583081
  main2();
583018
583082
 
583019
- //# debugId=08D24D8DFB1E3D9764756E2164756E21
583083
+ //# debugId=01A4722BC92A534764756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.7.17",
3
+ "version": "0.7.18",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {