@verboo/code 0.14.2 → 0.14.3

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 +94 -44
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -173830,7 +173830,7 @@ function getClaudeCodeUserAgent() {
173830
173830
  return `claude-code/${"99.0.0"}`;
173831
173831
  }
173832
173832
  function getVerbooCodeUserAgent() {
173833
- const version2 = typeof MACRO !== "undefined" ? "0.14.2" : "unknown";
173833
+ const version2 = typeof MACRO !== "undefined" ? "0.14.3" : "unknown";
173834
173834
  return `verboo-code/${version2}`;
173835
173835
  }
173836
173836
 
@@ -300333,6 +300333,38 @@ var init_auth6 = __esm(() => {
300333
300333
  init_crypto2();
300334
300334
  });
300335
300335
 
300336
+ // src/services/oauth/subscriptionAccess.ts
300337
+ function hasCurrentSubscriptionAccess(subscription, now2 = Date.now()) {
300338
+ if (subscription.status !== "active" && subscription.status !== "trialing") {
300339
+ return false;
300340
+ }
300341
+ if (!subscription.currentPeriodEnd)
300342
+ return true;
300343
+ const periodEnd = new Date(subscription.currentPeriodEnd).getTime();
300344
+ return Number.isFinite(periodEnd) && periodEnd > now2;
300345
+ }
300346
+ function hasCurrentSubscriptionEntitlement(subscriptions, now2 = Date.now()) {
300347
+ return subscriptions.some((subscription) => hasCurrentSubscriptionAccess(subscription, now2));
300348
+ }
300349
+ function getPastDueAccessDecision(subscriptions, now2 = Date.now()) {
300350
+ const pastDueSubscriptions = subscriptions.filter((subscription) => subscription.status === "past_due");
300351
+ if (pastDueSubscriptions.length === 0) {
300352
+ return { kind: "continue", pastDueSubscriptions };
300353
+ }
300354
+ if (hasCurrentSubscriptionEntitlement(subscriptions, now2)) {
300355
+ return { kind: "warn", pastDueSubscriptions };
300356
+ }
300357
+ return { kind: "block", pastDueSubscriptions };
300358
+ }
300359
+ function formatPastDuePlanNames(subscriptions) {
300360
+ const names = subscriptions.map((subscription) => subscription.group?.name ?? subscription.groupId);
300361
+ if (names.length <= 1)
300362
+ return names[0] ?? "";
300363
+ if (names.length === 2)
300364
+ return `${names[0]} e ${names[1]}`;
300365
+ return `${names.slice(0, -1).join(", ")} e ${names.at(-1)}`;
300366
+ }
300367
+
300336
300368
  // src/services/oauth/pastDueFlow.tsx
300337
300369
  function formatPrice3(cents, currency) {
300338
300370
  return new Intl.NumberFormat("pt-BR", {
@@ -300340,6 +300372,12 @@ function formatPrice3(cents, currency) {
300340
300372
  currency: currency.toUpperCase()
300341
300373
  }).format(cents / 100);
300342
300374
  }
300375
+ function getPastDueWarningMessage(subscriptions) {
300376
+ return [
300377
+ `⚠ Pagamento pendente em ${formatPastDuePlanNames(subscriptions)}.`,
300378
+ "Seu acesso pelos outros planos ativos continua liberado; regularize no painel de assinaturas."
300379
+ ].join(" ");
300380
+ }
300343
300381
  function PastDueView({
300344
300382
  accessToken,
300345
300383
  onDone
@@ -300362,12 +300400,12 @@ function PastDueView({
300362
300400
  });
300363
300401
  if (controller.signal.aborted)
300364
300402
  return;
300365
- const pastDue = subscriptions.filter((subscription) => subscription.status === "past_due");
300366
- setPastDueGroups(pastDue);
300367
- if (pastDue.length === 0)
300403
+ const decision = getPastDueAccessDecision(subscriptions);
300404
+ setPastDueGroups(decision.pastDueSubscriptions);
300405
+ if (decision.kind === "continue")
300368
300406
  onDone(true);
300369
300407
  else
300370
- setStep("notice");
300408
+ setStep(decision.kind === "warn" ? "warning" : "notice");
300371
300409
  } catch (error42) {
300372
300410
  if (controller.signal.aborted)
300373
300411
  return;
@@ -300376,6 +300414,12 @@ function PastDueView({
300376
300414
  setStep("error");
300377
300415
  }
300378
300416
  }, [accessToken, onDone]);
300417
+ import_react63.useEffect(() => {
300418
+ if (step !== "warning")
300419
+ return;
300420
+ const timer = setTimeout(() => onDone(true), 0);
300421
+ return () => clearTimeout(timer);
300422
+ }, [onDone, step]);
300379
300423
  import_react63.useEffect(() => {
300380
300424
  loadSubscriptions();
300381
300425
  return () => {
@@ -300398,7 +300442,7 @@ function PastDueView({
300398
300442
  const subscriptions = await fetchSubscriptions(accessToken, {
300399
300443
  signal: controller.signal
300400
300444
  });
300401
- if (!subscriptions.some((subscription) => subscription.status === "past_due")) {
300445
+ if (getPastDueAccessDecision(subscriptions).kind !== "block") {
300402
300446
  setStep("success");
300403
300447
  completionTimerRef.current = setTimeout(() => onDone(true), 1500);
300404
300448
  return;
@@ -300441,6 +300485,12 @@ function PastDueView({
300441
300485
  }, [accessToken, startPolling]);
300442
300486
  if (step === "loading")
300443
300487
  return null;
300488
+ if (step === "warning") {
300489
+ return /* @__PURE__ */ jsx_runtime73.jsx(ThemedText, {
300490
+ color: "yellow",
300491
+ children: getPastDueWarningMessage(pastDueGroups)
300492
+ });
300493
+ }
300444
300494
  if (step === "notice") {
300445
300495
  return /* @__PURE__ */ jsx_runtime73.jsxs(ThemedBox_default, {
300446
300496
  flexDirection: "column",
@@ -300548,7 +300598,7 @@ function PastDueView({
300548
300598
  async function showPastDueNotice(accessToken) {
300549
300599
  if (!process.stdin.isTTY || !process.stdout.isTTY) {
300550
300600
  const subscriptions = await fetchSubscriptions(accessToken);
300551
- return !subscriptions.some((subscription) => subscription.status === "past_due");
300601
+ return getPastDueAccessDecision(subscriptions).kind !== "block";
300552
300602
  }
300553
300603
  return new Promise((resolve21) => {
300554
300604
  let instance = null;
@@ -300960,7 +301010,7 @@ async function loadAndCheckModels(accessToken) {
300960
301010
  throw new Error(getVerbooModelsUnavailableMessage(result.reason));
300961
301011
  }
300962
301012
  const subscriptions = await fetchSubscriptions(accessToken);
300963
- const hasCurrentEntitlement = subscriptions.some((subscription) => subscription.status === "active" || subscription.status === "trialing");
301013
+ const hasCurrentEntitlement = hasCurrentSubscriptionEntitlement(subscriptions);
300964
301014
  if (hasCurrentEntitlement) {
300965
301015
  for (let attempt = 0;attempt < 4; attempt += 1) {
300966
301016
  await new Promise((resolve21) => setTimeout(resolve21, 3000));
@@ -395756,7 +395806,7 @@ function getAnthropicEnvMetadata() {
395756
395806
  function getBuildAgeMinutes() {
395757
395807
  if (false)
395758
395808
  ;
395759
- const buildTime = new Date("2026-07-19T23:00:41.253Z").getTime();
395809
+ const buildTime = new Date("2026-07-20T18:35:00.306Z").getTime();
395760
395810
  if (isNaN(buildTime))
395761
395811
  return;
395762
395812
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -424016,7 +424066,7 @@ function buildPrimarySection() {
424016
424066
  });
424017
424067
  return [{
424018
424068
  label: "Version",
424019
- value: "0.14.2"
424069
+ value: "0.14.3"
424020
424070
  }, {
424021
424071
  label: "Session name",
424022
424072
  value: nameValue
@@ -436945,7 +436995,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
436945
436995
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
436946
436996
  }
436947
436997
  function getPublicBuildVersion() {
436948
- return "0.14.2";
436998
+ return "0.14.3";
436949
436999
  }
436950
437000
  var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
436951
437001
  var init_version = __esm(() => {
@@ -488338,7 +488388,7 @@ var init_bridge_kick = __esm(() => {
488338
488388
  var call64 = async () => {
488339
488389
  return {
488340
488390
  type: "text",
488341
- value: `${"99.0.0"} (built ${"2026-07-19T23:00:41.253Z"})`
488391
+ value: `${"99.0.0"} (built ${"2026-07-20T18:35:00.306Z"})`
488342
488392
  };
488343
488393
  }, version2, version_default;
488344
488394
  var init_version2 = __esm(() => {
@@ -521413,7 +521463,7 @@ function printStartupScreen(modelOverride) {
521413
521463
  const home = process.env.HOME || process.env.USERPROFILE || "";
521414
521464
  const cwd2 = process.cwd();
521415
521465
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
521416
- const version3 = "0.14.2";
521466
+ const version3 = "0.14.3";
521417
521467
  const bold2 = `${ESC4}1m`;
521418
521468
  const PURPLE = rgb3(...ACCENT);
521419
521469
  const SOFT = rgb3(...CREAM);
@@ -539705,7 +539755,7 @@ var init_routerRateLimitHook = __esm(() => {
539705
539755
  function getSemverPart(version3) {
539706
539756
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
539707
539757
  }
539708
- function useUpdateNotification(updatedVersion, initialVersion = "0.14.2") {
539758
+ function useUpdateNotification(updatedVersion, initialVersion = "0.14.3") {
539709
539759
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
539710
539760
  const [pendingNotification2, setPendingNotification] = import_react225.useState(null);
539711
539761
  if (updatedVersion) {
@@ -539745,7 +539795,7 @@ function AutoUpdater({
539745
539795
  return;
539746
539796
  }
539747
539797
  if (false) {}
539748
- const currentVersion = "0.14.2";
539798
+ const currentVersion = "0.14.3";
539749
539799
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
539750
539800
  let latestVersion = await getLatestVersion(channel2);
539751
539801
  const isDisabled = isAutoUpdaterDisabled();
@@ -540098,17 +540148,17 @@ function PackageManagerAutoUpdater(t0) {
540098
540148
  const maxVersion = await getMaxVersion();
540099
540149
  if (maxVersion && latest && gt(latest, maxVersion)) {
540100
540150
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
540101
- if (gte("0.14.2", maxVersion)) {
540102
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.14.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
540151
+ if (gte("0.14.3", maxVersion)) {
540152
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.14.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
540103
540153
  setUpdateAvailable(false);
540104
540154
  return;
540105
540155
  }
540106
540156
  latest = maxVersion;
540107
540157
  }
540108
- const hasUpdate = latest && !gte("0.14.2", latest) && !shouldSkipVersion(latest);
540158
+ const hasUpdate = latest && !gte("0.14.3", latest) && !shouldSkipVersion(latest);
540109
540159
  setUpdateAvailable(!!hasUpdate);
540110
540160
  if (hasUpdate) {
540111
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.14.2"} -> ${latest}`);
540161
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.14.3"} -> ${latest}`);
540112
540162
  }
540113
540163
  };
540114
540164
  $2[0] = t1;
@@ -540142,7 +540192,7 @@ function PackageManagerAutoUpdater(t0) {
540142
540192
  wrap: "truncate",
540143
540193
  children: [
540144
540194
  "currentVersion: ",
540145
- "0.14.2"
540195
+ "0.14.3"
540146
540196
  ]
540147
540197
  });
540148
540198
  $2[3] = verbose;
@@ -556093,10 +556143,10 @@ async function autoUpdateCliInBackground() {
556093
556143
  return;
556094
556144
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
556095
556145
  const latest = await getLatestVersion(channel2);
556096
- if (!latest || gte("0.14.2", latest))
556146
+ if (!latest || gte("0.14.3", latest))
556097
556147
  return;
556098
556148
  writeToStdout(`
556099
- Nova versão disponível: ${latest} (atual: ${"0.14.2"})
556149
+ Nova versão disponível: ${latest} (atual: ${"0.14.3"})
556100
556150
  `);
556101
556151
  writeToStdout(`Atualizando automaticamente...
556102
556152
  `);
@@ -573790,7 +573840,7 @@ function WelcomeV2() {
573790
573840
  dimColor: true,
573791
573841
  children: [
573792
573842
  "v",
573793
- "0.14.2",
573843
+ "0.14.3",
573794
573844
  " "
573795
573845
  ]
573796
573846
  })
@@ -573977,7 +574027,7 @@ function WelcomeV2() {
573977
574027
  dimColor: true,
573978
574028
  children: [
573979
574029
  "v",
573980
- "0.14.2",
574030
+ "0.14.3",
573981
574031
  " "
573982
574032
  ]
573983
574033
  })
@@ -574193,7 +574243,7 @@ function AppleTerminalWelcomeV2(t0) {
574193
574243
  dimColor: true,
574194
574244
  children: [
574195
574245
  "v",
574196
- "0.14.2",
574246
+ "0.14.3",
574197
574247
  " "
574198
574248
  ]
574199
574249
  });
@@ -574402,7 +574452,7 @@ function AppleTerminalWelcomeV2(t0) {
574402
574452
  dimColor: true,
574403
574453
  children: [
574404
574454
  "v",
574405
- "0.14.2",
574455
+ "0.14.3",
574406
574456
  " "
574407
574457
  ]
574408
574458
  });
@@ -591804,7 +591854,7 @@ __export(exports_update, {
591804
591854
  });
591805
591855
  async function update() {
591806
591856
  logEvent("tengu_update_check", {});
591807
- writeToStdout(`Current version: ${"0.14.2"}
591857
+ writeToStdout(`Current version: ${"0.14.3"}
591808
591858
  `);
591809
591859
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
591810
591860
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -591889,8 +591939,8 @@ async function update() {
591889
591939
  writeToStdout(`Verboo Code is managed by Homebrew.
591890
591940
  `);
591891
591941
  const latest = await getLatestVersion(channel2);
591892
- if (latest && !gte("0.14.2", latest)) {
591893
- writeToStdout(`Update available: ${"0.14.2"} → ${latest}
591942
+ if (latest && !gte("0.14.3", latest)) {
591943
+ writeToStdout(`Update available: ${"0.14.3"} → ${latest}
591894
591944
  `);
591895
591945
  writeToStdout(`
591896
591946
  `);
@@ -591906,8 +591956,8 @@ async function update() {
591906
591956
  writeToStdout(`Verboo Code is managed by winget.
591907
591957
  `);
591908
591958
  const latest = await getLatestVersion(channel2);
591909
- if (latest && !gte("0.14.2", latest)) {
591910
- writeToStdout(`Update available: ${"0.14.2"} → ${latest}
591959
+ if (latest && !gte("0.14.3", latest)) {
591960
+ writeToStdout(`Update available: ${"0.14.3"} → ${latest}
591911
591961
  `);
591912
591962
  writeToStdout(`
591913
591963
  `);
@@ -591923,8 +591973,8 @@ async function update() {
591923
591973
  writeToStdout(`Verboo Code is managed by apk.
591924
591974
  `);
591925
591975
  const latest = await getLatestVersion(channel2);
591926
- if (latest && !gte("0.14.2", latest)) {
591927
- writeToStdout(`Update available: ${"0.14.2"} → ${latest}
591976
+ if (latest && !gte("0.14.3", latest)) {
591977
+ writeToStdout(`Update available: ${"0.14.3"} → ${latest}
591928
591978
  `);
591929
591979
  writeToStdout(`
591930
591980
  `);
@@ -591977,11 +592027,11 @@ async function update() {
591977
592027
  `);
591978
592028
  await gracefulShutdown(1);
591979
592029
  }
591980
- if (result.latestVersion === "0.14.2") {
591981
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.2"})`) + `
592030
+ if (result.latestVersion === "0.14.3") {
592031
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.3"})`) + `
591982
592032
  `);
591983
592033
  } else {
591984
- writeToStdout(source_default.green(`Successfully updated from ${"0.14.2"} to version ${result.latestVersion}`) + `
592034
+ writeToStdout(source_default.green(`Successfully updated from ${"0.14.3"} to version ${result.latestVersion}`) + `
591985
592035
  `);
591986
592036
  await regenerateCompletionCache();
591987
592037
  }
@@ -592041,12 +592091,12 @@ async function update() {
592041
592091
  `);
592042
592092
  await gracefulShutdown(1);
592043
592093
  }
592044
- if (latestVersion === "0.14.2") {
592045
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.2"})`) + `
592094
+ if (latestVersion === "0.14.3") {
592095
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.3"})`) + `
592046
592096
  `);
592047
592097
  await gracefulShutdown(0);
592048
592098
  }
592049
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.14.2"})
592099
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.14.3"})
592050
592100
  `);
592051
592101
  writeToStdout(`Installing update...
592052
592102
  `);
@@ -592091,7 +592141,7 @@ async function update() {
592091
592141
  logForDebugging(`update: Installation status: ${status2}`);
592092
592142
  switch (status2) {
592093
592143
  case "success":
592094
- writeToStdout(source_default.green(`Successfully updated from ${"0.14.2"} to version ${latestVersion}`) + `
592144
+ writeToStdout(source_default.green(`Successfully updated from ${"0.14.3"} to version ${latestVersion}`) + `
592095
592145
  `);
592096
592146
  await regenerateCompletionCache();
592097
592147
  break;
@@ -593375,7 +593425,7 @@ ${customInstructions}` : customInstructions;
593375
593425
  is_native_binary: isInBundledMode()
593376
593426
  });
593377
593427
  logMemoryDiagnostics("start", {
593378
- version: "0.14.2",
593428
+ version: "0.14.3",
593379
593429
  debug: debug2,
593380
593430
  debugToStderr,
593381
593431
  print: print ?? false,
@@ -594186,7 +594236,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
594186
594236
  pendingHookMessages
594187
594237
  }, renderAndRun);
594188
594238
  }
594189
- }).version(`0.14.2 (${cliDesc})`, "-v, --version", "Output the version number");
594239
+ }).version(`0.14.3 (${cliDesc})`, "-v, --version", "Output the version number");
594190
594240
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
594191
594241
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
594192
594242
  if (canUserConfigureAdvisor()) {
@@ -594762,7 +594812,7 @@ if (false) {}
594762
594812
  async function main2() {
594763
594813
  const args = process.argv.slice(2);
594764
594814
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
594765
- console.log(`${"0.14.2"} (Verboo Code)`);
594815
+ console.log(`${"0.14.3"} (Verboo Code)`);
594766
594816
  return;
594767
594817
  }
594768
594818
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -594936,4 +594986,4 @@ async function main2() {
594936
594986
  }
594937
594987
  main2();
594938
594988
 
594939
- //# debugId=41123190D4DA309164756E2164756E21
594989
+ //# debugId=C3252DC35520BF3F64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.14.2",
3
+ "version": "0.14.3",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {