@verboo/code 0.9.2 → 0.9.4

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 +119 -153
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -174111,6 +174111,7 @@ function getStreamStats(state) {
174111
174111
  // src/services/api/openaiShim.ts
174112
174112
  var exports_openaiShim = {};
174113
174113
  __export(exports_openaiShim, {
174114
+ setOpenAIShimRouterStatusHandler: () => setOpenAIShimRouterStatusHandler,
174114
174115
  createOpenAIShimClient: () => createOpenAIShimClient
174115
174116
  });
174116
174117
  import { randomUUID as randomUUID4 } from "crypto";
@@ -174580,6 +174581,9 @@ function repairPossiblyTruncatedObjectJson(raw) {
174580
174581
  return null;
174581
174582
  }
174582
174583
  }
174584
+ function setOpenAIShimRouterStatusHandler(fn) {
174585
+ routerStatusHandler = fn;
174586
+ }
174583
174587
  async function* openaiStreamToAnthropic(response, model2, signal) {
174584
174588
  const messageId = makeMessageId2();
174585
174589
  let contentBlockIndex = 0;
@@ -174591,6 +174595,7 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
174591
174595
  let lastStopReason = null;
174592
174596
  let hasEmittedFinalUsage = false;
174593
174597
  let hasProcessedFinishReason = false;
174598
+ let routerWarmingActive = false;
174594
174599
  const streamState = createStreamState();
174595
174600
  yield {
174596
174601
  type: "message_start",
@@ -174701,6 +174706,14 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
174701
174706
  } catch {
174702
174707
  continue;
174703
174708
  }
174709
+ const routerStatus = chunk.router_status;
174710
+ if (typeof routerStatus === "string") {
174711
+ if (routerStatus === "warming" && !routerWarmingActive) {
174712
+ routerWarmingActive = true;
174713
+ routerStatusHandler?.("warming-up");
174714
+ }
174715
+ continue;
174716
+ }
174704
174717
  const inStreamError = chunk.error;
174705
174718
  if (inStreamError && typeof inStreamError === "object") {
174706
174719
  const message = typeof inStreamError.message === "string" ? inStreamError.message : "Provider returned an in-stream error";
@@ -174714,6 +174727,10 @@ async function* openaiStreamToAnthropic(response, model2, signal) {
174714
174727
  throw APIError.generate(response.status ?? 200, errorPayload, message, response.headers);
174715
174728
  }
174716
174729
  const chunkUsage = convertChunkUsage(chunk.usage);
174730
+ if (routerWarmingActive && Array.isArray(chunk.choices) && chunk.choices.length > 0) {
174731
+ routerWarmingActive = false;
174732
+ routerStatusHandler?.(null);
174733
+ }
174717
174734
  for (const choice of chunk.choices ?? []) {
174718
174735
  const delta = choice.delta;
174719
174736
  if (delta.reasoning_content != null && delta.reasoning_content !== "") {
@@ -175504,7 +175521,7 @@ function createOpenAIShimClient(options2) {
175504
175521
  messages: beta.messages
175505
175522
  };
175506
175523
  }
175507
- var GITHUB_429_MAX_RETRIES = 3, GITHUB_429_BASE_DELAY_SEC = 1, GITHUB_429_MAX_DELAY_SEC = 32, GEMINI_API_HOST = "generativelanguage.googleapis.com", COPILOT_HEADERS2, JSON_REPAIR_SUFFIXES, OpenAIShimStream;
175524
+ var GITHUB_429_MAX_RETRIES = 3, GITHUB_429_BASE_DELAY_SEC = 1, GITHUB_429_MAX_DELAY_SEC = 32, GEMINI_API_HOST = "generativelanguage.googleapis.com", COPILOT_HEADERS2, JSON_REPAIR_SUFFIXES, routerStatusHandler = null, OpenAIShimStream;
175508
175525
  var init_openaiShim = __esm(() => {
175509
175526
  init_sdk();
175510
175527
  init_codexCredentials();
@@ -286039,7 +286056,7 @@ var init_coreSchemas = __esm(() => {
286039
286056
  "unknown",
286040
286057
  "max_output_tokens"
286041
286058
  ]));
286042
- SDKStatusSchema = lazySchema(() => exports_external.union([exports_external.literal("compacting"), exports_external.null()]));
286059
+ SDKStatusSchema = lazySchema(() => exports_external.union([exports_external.literal("compacting"), exports_external.literal("warming-up"), exports_external.null()]));
286043
286060
  SDKUserMessageContentSchema = lazySchema(() => exports_external.object({
286044
286061
  type: exports_external.literal("user"),
286045
286062
  message: APIUserMessagePlaceholder(),
@@ -382199,7 +382216,7 @@ function getAnthropicEnvMetadata() {
382199
382216
  function getBuildAgeMinutes() {
382200
382217
  if (false)
382201
382218
  ;
382202
- const buildTime = new Date("2026-05-15T18:59:03.318Z").getTime();
382219
+ const buildTime = new Date("2026-05-19T20:11:05.617Z").getTime();
382203
382220
  if (isNaN(buildTime))
382204
382221
  return;
382205
382222
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -395897,7 +395914,7 @@ function stripCallerFieldFromAssistantMessage(message) {
395897
395914
  id: block2.id,
395898
395915
  name: block2.name,
395899
395916
  input: block2.input,
395900
- ...getAPIProvider() === "gemini" && block2.extra_content ? { extra_content: block2.extra_content } : {}
395917
+ ...block2.extra_content ? { extra_content: block2.extra_content } : {}
395901
395918
  };
395902
395919
  })
395903
395920
  }
@@ -396174,7 +396191,7 @@ function normalizeMessagesForAPI(messages, tools = []) {
396174
396191
  ...restBlock,
396175
396192
  name: canonicalName,
396176
396193
  input: normalizedInput,
396177
- ...getAPIProvider() === "gemini" && extra_content ? { extra_content } : {}
396194
+ ...extra_content ? { extra_content } : {}
396178
396195
  };
396179
396196
  }
396180
396197
  return {
@@ -396182,7 +396199,7 @@ function normalizeMessagesForAPI(messages, tools = []) {
396182
396199
  id: block2.id,
396183
396200
  name: canonicalName,
396184
396201
  input: normalizedInput,
396185
- ...getAPIProvider() === "gemini" && block2.extra_content ? { extra_content: block2.extra_content } : {}
396202
+ ...block2.extra_content ? { extra_content: block2.extra_content } : {}
396186
396203
  };
396187
396204
  }
396188
396205
  return block2;
@@ -398321,7 +398338,6 @@ Goal: Write your final plan to the plan file (the only file you can edit).
398321
398338
  - End with the single verification command
398322
398339
  - **Hard limit: 40 lines.** If the plan is longer, delete prose — not file paths.`;
398323
398340
  var init_messages3 = __esm(() => {
398324
- init_providers();
398325
398341
  init_isObject();
398326
398342
  init_last();
398327
398343
  init_prompt2();
@@ -410430,7 +410446,7 @@ function buildPrimarySection() {
410430
410446
  });
410431
410447
  return [{
410432
410448
  label: "Version",
410433
- value: "0.9.2"
410449
+ value: "0.9.4"
410434
410450
  }, {
410435
410451
  label: "Session name",
410436
410452
  value: nameValue
@@ -423357,7 +423373,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
423357
423373
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
423358
423374
  }
423359
423375
  function getPublicBuildVersion() {
423360
- return "0.9.2";
423376
+ return "0.9.4";
423361
423377
  }
423362
423378
  var import_semver9, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
423363
423379
  var init_version = __esm(() => {
@@ -478705,7 +478721,7 @@ var init_bridge_kick = __esm(() => {
478705
478721
  var call63 = async () => {
478706
478722
  return {
478707
478723
  type: "text",
478708
- value: `${"99.0.0"} (built ${"2026-05-15T18:59:03.318Z"})`
478724
+ value: `${"99.0.0"} (built ${"2026-05-19T20:11:05.617Z"})`
478709
478725
  };
478710
478726
  }, version2, version_default;
478711
478727
  var init_version2 = __esm(() => {
@@ -505251,12 +505267,15 @@ async function* ask({
505251
505267
  orphanedPermission,
505252
505268
  ...{}
505253
505269
  });
505270
+ const { setOpenAIShimRouterStatusHandler: setOpenAIShimRouterStatusHandler2 } = await Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim));
505271
+ setOpenAIShimRouterStatusHandler2(setSDKStatus ? (s) => setSDKStatus(s) : null);
505254
505272
  try {
505255
505273
  yield* engine.submitMessage(prompt, {
505256
505274
  uuid: promptUuid,
505257
505275
  isMeta
505258
505276
  });
505259
505277
  } finally {
505278
+ setOpenAIShimRouterStatusHandler2(null);
505260
505279
  setReadFileCache(engine.getReadFileState());
505261
505280
  }
505262
505281
  }
@@ -508169,8 +508188,6 @@ var init_types15 = __esm(() => {
508169
508188
  sandbox: SandboxSettingsSchema().optional(),
508170
508189
  feedbackSurveyRate: exports_external.number().min(0).max(1).optional().describe("Probability (0–1) that the session quality survey appears when eligible. 0.05 is a reasonable starting point."),
508171
508190
  spinnerTipsEnabled: exports_external.boolean().optional().describe("Whether to show tips in the spinner"),
508172
- sponsoredTipsEnabled: exports_external.boolean().optional().describe("Whether to show sponsored partner tips alongside regular tips (default: true). Disabling does not affect regular tips."),
508173
- sponsoredTipsFrequency: exports_external.number().int().min(0).optional().describe("Show at most 1 sponsored tip per N spinner picks. Default 10. Set 0 to disable sponsored tips."),
508174
508191
  spinnerVerbs: exports_external.object({
508175
508192
  mode: exports_external.enum(["append", "replace"]),
508176
508193
  verbs: exports_external.array(exports_external.string())
@@ -509986,7 +510003,6 @@ var init_config7 = __esm(() => {
509986
510003
  "diffTool",
509987
510004
  "env",
509988
510005
  "tipsHistory",
509989
- "sponsoredTipsHistory",
509990
510006
  "todoFeatureEnabled",
509991
510007
  "showExpandedTodos",
509992
510008
  "messageIdleNotifThresholdMs",
@@ -510868,7 +510884,7 @@ function printStartupScreen(modelOverride) {
510868
510884
  const home = process.env.HOME || process.env.USERPROFILE || "";
510869
510885
  const cwd2 = process.cwd();
510870
510886
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
510871
- const version3 = "0.9.2";
510887
+ const version3 = "0.9.4";
510872
510888
  const bold2 = `${ESC4}1m`;
510873
510889
  const PURPLE = rgb3(...ACCENT);
510874
510890
  const SOFT = rgb3(...CREAM);
@@ -529135,7 +529151,7 @@ var init_useVoiceEnabled = __esm(() => {
529135
529151
  function getSemverPart(version3) {
529136
529152
  return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
529137
529153
  }
529138
- function useUpdateNotification(updatedVersion, initialVersion = "0.9.2") {
529154
+ function useUpdateNotification(updatedVersion, initialVersion = "0.9.4") {
529139
529155
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react221.useState(() => getSemverPart(initialVersion));
529140
529156
  const [pendingNotification2, setPendingNotification] = import_react221.useState(null);
529141
529157
  if (updatedVersion) {
@@ -529175,7 +529191,7 @@ function AutoUpdater({
529175
529191
  return;
529176
529192
  }
529177
529193
  if (false) {}
529178
- const currentVersion = "0.9.2";
529194
+ const currentVersion = "0.9.4";
529179
529195
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
529180
529196
  let latestVersion = await getLatestVersion(channel2);
529181
529197
  const isDisabled = isAutoUpdaterDisabled();
@@ -529526,17 +529542,17 @@ function PackageManagerAutoUpdater(t0) {
529526
529542
  const maxVersion = await getMaxVersion();
529527
529543
  if (maxVersion && latest && gt(latest, maxVersion)) {
529528
529544
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
529529
- if (gte("0.9.2", maxVersion)) {
529530
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
529545
+ if (gte("0.9.4", maxVersion)) {
529546
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.9.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
529531
529547
  setUpdateAvailable(false);
529532
529548
  return;
529533
529549
  }
529534
529550
  latest = maxVersion;
529535
529551
  }
529536
- const hasUpdate = latest && !gte("0.9.2", latest) && !shouldSkipVersion(latest);
529552
+ const hasUpdate = latest && !gte("0.9.4", latest) && !shouldSkipVersion(latest);
529537
529553
  setUpdateAvailable(!!hasUpdate);
529538
529554
  if (hasUpdate) {
529539
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.2"} -> ${latest}`);
529555
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.9.4"} -> ${latest}`);
529540
529556
  }
529541
529557
  };
529542
529558
  $2[0] = t1;
@@ -529570,7 +529586,7 @@ function PackageManagerAutoUpdater(t0) {
529570
529586
  wrap: "truncate",
529571
529587
  children: [
529572
529588
  "currentVersion: ",
529573
- "0.9.2"
529589
+ "0.9.4"
529574
529590
  ]
529575
529591
  });
529576
529592
  $2[3] = verbose;
@@ -543549,10 +543565,21 @@ function convertStatusMessage(msg) {
543549
543565
  if (!msg.status) {
543550
543566
  return null;
543551
543567
  }
543568
+ let content;
543569
+ switch (msg.status) {
543570
+ case "compacting":
543571
+ content = "Compacting conversation…";
543572
+ break;
543573
+ case "warming-up":
543574
+ content = "Warming up vast.ai worker (cold start, ~1–3 min)…";
543575
+ break;
543576
+ default:
543577
+ content = `Status: ${msg.status}`;
543578
+ }
543552
543579
  return {
543553
543580
  type: "system",
543554
543581
  subtype: "informational",
543555
- content: msg.status === "compacting" ? "Compacting conversation…" : `Status: ${msg.status}`,
543582
+ content,
543556
543583
  level: "info",
543557
543584
  uuid: msg.uuid,
543558
543585
  timestamp: new Date().toISOString()
@@ -543684,6 +543711,7 @@ function useRemoteSession({
543684
543711
  }, [setAppState]);
543685
543712
  const responseTimeoutRef = import_react256.useRef(null);
543686
543713
  const isCompactingRef = import_react256.useRef(false);
543714
+ const isWarmingUpRef = import_react256.useRef(false);
543687
543715
  const managerRef = import_react256.useRef(null);
543688
543716
  const hasUpdatedTitleRef = import_react256.useRef(false);
543689
543717
  const sentUUIDsRef = import_react256.useRef(new BoundedUUIDSet(50));
@@ -543734,10 +543762,13 @@ function useRemoteSession({
543734
543762
  }
543735
543763
  if (sdkMessage.subtype === "status") {
543736
543764
  const wasCompacting = isCompactingRef.current;
543765
+ const wasWarming = isWarmingUpRef.current;
543737
543766
  isCompactingRef.current = sdkMessage.status === "compacting";
543738
- if (wasCompacting && isCompactingRef.current) {
543767
+ isWarmingUpRef.current = sdkMessage.status === "warming-up";
543768
+ if (wasCompacting && isCompactingRef.current)
543769
+ return;
543770
+ if (wasWarming && isWarmingUpRef.current)
543739
543771
  return;
543740
- }
543741
543772
  }
543742
543773
  if (sdkMessage.subtype === "compact_boundary") {
543743
543774
  isCompactingRef.current = false;
@@ -543920,7 +543951,7 @@ function useRemoteSession({
543920
543951
  }
543921
543952
  }
543922
543953
  if (!config3?.viewerOnly) {
543923
- const timeoutMs = isCompactingRef.current ? COMPACTION_TIMEOUT_MS : RESPONSE_TIMEOUT_MS;
543954
+ const timeoutMs = isCompactingRef.current || isWarmingUpRef.current ? COMPACTION_TIMEOUT_MS : RESPONSE_TIMEOUT_MS;
543924
543955
  responseTimeoutRef.current = setTimeout((setMessages2, manager2) => {
543925
543956
  logForDebugging("[useRemoteSession] Response timeout - attempting reconnect");
543926
543957
  const warningMessage = createSystemMessage("Remote session may be unresponsive. Attempting to reconnect…", "warning");
@@ -551010,71 +551041,6 @@ var init_usePromptsFromClaudeInChrome = __esm(() => {
551010
551041
  }));
551011
551042
  });
551012
551043
 
551013
- // src/services/tips/sponsoredTips.ts
551014
- function sponsoredTipsEnabled() {
551015
- const settings = getSettings_DEPRECATED();
551016
- if (settings.sponsoredTipsEnabled === false)
551017
- return false;
551018
- if (settings.sponsoredTipsFrequency === 0)
551019
- return false;
551020
- return true;
551021
- }
551022
- function getSponsoredTipsFrequency() {
551023
- const settings = getSettings_DEPRECATED();
551024
- const f = settings.sponsoredTipsFrequency;
551025
- if (typeof f === "number" && f >= 0)
551026
- return f;
551027
- return DEFAULT_FREQUENCY;
551028
- }
551029
- function renderSponsoredTip(sponsor, body, ctx) {
551030
- const green2 = color("success", ctx.theme);
551031
- const label = sponsor.label ?? "Sponsored";
551032
- const badge = green2(`${label} · ${sponsor.name}`);
551033
- const text2 = green2(body);
551034
- const url3 = sponsor.url ? ` ${source_default.dim(sponsor.url)}` : "";
551035
- return `${badge} — ${text2}${url3}`;
551036
- }
551037
- var DEFAULT_FREQUENCY = 10, ATOMIC, sponsoredTips;
551038
- var init_sponsoredTips = __esm(() => {
551039
- init_source2();
551040
- init_color();
551041
- init_settings2();
551042
- ATOMIC = {
551043
- name: "Atomic Chat",
551044
- url: "https://atomic.chat/"
551045
- };
551046
- sponsoredTips = [
551047
- {
551048
- id: "atomic-setup-local",
551049
- sponsor: ATOMIC,
551050
- content: async (ctx) => renderSponsoredTip(ATOMIC, "Setup free local models with Atomic Chat", ctx),
551051
- cooldownSessions: 20,
551052
- isRelevant: async () => sponsoredTipsEnabled()
551053
- },
551054
- {
551055
- id: "atomic-free-access",
551056
- sponsor: ATOMIC,
551057
- content: async (ctx) => renderSponsoredTip(ATOMIC, "Atomic Chat local models give you free access to OpenClaude", ctx),
551058
- cooldownSessions: 20,
551059
- isRelevant: async () => sponsoredTipsEnabled()
551060
- },
551061
- {
551062
- id: "atomic-turboquant-context",
551063
- sponsor: ATOMIC,
551064
- content: async (ctx) => renderSponsoredTip(ATOMIC, "Increase your context window with TurboQuant in Atomic Chat local models", ctx),
551065
- cooldownSessions: 20,
551066
- isRelevant: async () => sponsoredTipsEnabled()
551067
- },
551068
- {
551069
- id: "atomic-ram-savings",
551070
- sponsor: ATOMIC,
551071
- content: async (ctx) => renderSponsoredTip(ATOMIC, "30% less RAM usage with Atomic Chat local models", ctx),
551072
- cooldownSessions: 20,
551073
- isRelevant: async () => sponsoredTipsEnabled()
551074
- }
551075
- ];
551076
- });
551077
-
551078
551044
  // src/services/tips/tipHistory.ts
551079
551045
  function recordTipShown(tipId) {
551080
551046
  const numStartups = getGlobalConfig().numStartups;
@@ -551092,26 +551058,6 @@ function getSessionsSinceLastShown(tipId) {
551092
551058
  return Infinity;
551093
551059
  return config3.numStartups - lastShown;
551094
551060
  }
551095
- function recordSponsoredTipShown() {
551096
- const numStartups = getGlobalConfig().numStartups;
551097
- saveGlobalConfig((c6) => {
551098
- const prev = c6.sponsoredTipsHistory ?? { lastShownAt: 0, totalShown: 0 };
551099
- return {
551100
- ...c6,
551101
- sponsoredTipsHistory: {
551102
- lastShownAt: numStartups,
551103
- totalShown: prev.totalShown + 1
551104
- }
551105
- };
551106
- });
551107
- }
551108
- function getSessionsSinceLastSponsored() {
551109
- const config3 = getGlobalConfig();
551110
- const lastShown = config3.sponsoredTipsHistory?.lastShownAt;
551111
- if (!lastShown)
551112
- return Infinity;
551113
- return config3.numStartups - lastShown;
551114
- }
551115
551061
  var init_tipHistory = __esm(() => {
551116
551062
  init_config7();
551117
551063
  });
@@ -551354,7 +551300,7 @@ async function getRelevantTips(context2) {
551354
551300
  if (override?.excludeDefault && customTips.length > 0) {
551355
551301
  return customTips;
551356
551302
  }
551357
- const tips = [...externalTips, ...internalOnlyTips, ...sponsoredTips];
551303
+ const tips = [...externalTips, ...internalOnlyTips];
551358
551304
  const isRelevant = await Promise.all(tips.map((_) => _.isRelevant(context2)));
551359
551305
  const filtered = tips.filter((_, index) => isRelevant[index]).filter((_) => getSessionsSinceLastShown(_.id) >= _.cooldownSessions);
551360
551306
  return [...filtered, ...customTips];
@@ -551388,7 +551334,6 @@ var init_tipRegistry = __esm(() => {
551388
551334
  init_growthbook();
551389
551335
  init_overageCreditGrant();
551390
551336
  init_referral();
551391
- init_sponsoredTips();
551392
551337
  init_tipHistory();
551393
551338
  externalTips = [
551394
551339
  {
@@ -551861,12 +551806,6 @@ function selectTipWithLongestTimeSinceShown(availableTips) {
551861
551806
  tipsWithSessions.sort((a2, b) => b.sessions - a2.sessions);
551862
551807
  return tipsWithSessions[0]?.tip;
551863
551808
  }
551864
- function isSponsoredSlotEligible() {
551865
- const frequency = getSponsoredTipsFrequency();
551866
- if (frequency === 0)
551867
- return false;
551868
- return getSessionsSinceLastSponsored() >= frequency;
551869
- }
551870
551809
  async function getTipToShowOnSpinner(context2) {
551871
551810
  if (getSettings_DEPRECATED().spinnerTipsEnabled === false) {
551872
551811
  return;
@@ -551875,20 +551814,10 @@ async function getTipToShowOnSpinner(context2) {
551875
551814
  if (tips.length === 0) {
551876
551815
  return;
551877
551816
  }
551878
- const sponsored = tips.filter((t) => t.sponsor);
551879
- const regular = tips.filter((t) => !t.sponsor);
551880
- if (sponsored.length > 0 && isSponsoredSlotEligible()) {
551881
- const pick3 = selectTipWithLongestTimeSinceShown(sponsored);
551882
- if (pick3)
551883
- return pick3;
551884
- }
551885
- return selectTipWithLongestTimeSinceShown(regular);
551817
+ return selectTipWithLongestTimeSinceShown(tips);
551886
551818
  }
551887
551819
  function recordShownTip(tip) {
551888
551820
  recordTipShown(tip.id);
551889
- if (tip.sponsor) {
551890
- recordSponsoredTipShown();
551891
- }
551892
551821
  logEvent("tengu_tip_shown", {
551893
551822
  tipIdLength: tip.id,
551894
551823
  cooldownSessions: tip.cooldownSessions
@@ -551896,7 +551825,6 @@ function recordShownTip(tip) {
551896
551825
  }
551897
551826
  var init_tipScheduler = __esm(() => {
551898
551827
  init_settings2();
551899
- init_sponsoredTips();
551900
551828
  init_tipHistory();
551901
551829
  init_tipRegistry();
551902
551830
  });
@@ -557898,6 +557826,44 @@ function REPL({
557898
557826
  const [spinnerMessage, setSpinnerMessage] = import_react314.useState(null);
557899
557827
  const [spinnerColor, setSpinnerColor] = import_react314.useState(null);
557900
557828
  const [spinnerShimmerColor, setSpinnerShimmerColor] = import_react314.useState(null);
557829
+ import_react314.useEffect(() => {
557830
+ const warmingMessages = [
557831
+ "\uD83D\uDD25 Verboo Intelligence is firing up the engines",
557832
+ "☕ Verboo Intelligence is brewing a fresh cup",
557833
+ "\uD83E\uDDE0 Verboo Intelligence is waking up the neurons",
557834
+ "\uD83D\uDE80 Verboo Intelligence is fueling the rockets",
557835
+ "⚡ Verboo Intelligence is charging its capacitors",
557836
+ "\uD83E\uDDBE Verboo Intelligence is stretching its muscles",
557837
+ "✨ Verboo Intelligence is summoning brilliance",
557838
+ "\uD83C\uDFA9 Verboo Intelligence is putting on the thinking cap",
557839
+ "\uD83E\uDE84 Verboo Intelligence is polishing the wand",
557840
+ "\uD83D\uDD2E Verboo Intelligence is polishing the crystal ball",
557841
+ "\uD83D\uDEE0️ Verboo Intelligence is calibrating sensors",
557842
+ "\uD83D\uDCDA Verboo Intelligence is loading wisdom modules",
557843
+ "\uD83C\uDFAF Verboo Intelligence is locking onto the target",
557844
+ "\uD83C\uDFAC Verboo Intelligence is setting the scene",
557845
+ "\uD83C\uDFAA Verboo Intelligence is rolling out the red carpet"
557846
+ ];
557847
+ let cancelled = false;
557848
+ Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim)).then((mod) => {
557849
+ if (cancelled)
557850
+ return;
557851
+ mod.setOpenAIShimRouterStatusHandler((status2) => {
557852
+ if (status2 === "warming-up") {
557853
+ const msg = warmingMessages[Math.floor(Math.random() * warmingMessages.length)];
557854
+ setSpinnerMessage(msg);
557855
+ } else {
557856
+ setSpinnerMessage(null);
557857
+ }
557858
+ });
557859
+ });
557860
+ return () => {
557861
+ cancelled = true;
557862
+ Promise.resolve().then(() => (init_openaiShim(), exports_openaiShim)).then((mod) => {
557863
+ mod.setOpenAIShimRouterStatusHandler(null);
557864
+ });
557865
+ };
557866
+ }, []);
557901
557867
  const [isMessageSelectorVisible, setIsMessageSelectorVisible] = import_react314.useState(false);
557902
557868
  const [messageSelectorPreselect, setMessageSelectorPreselect] = import_react314.useState(undefined);
557903
557869
  const [showCostDialog, setShowCostDialog] = import_react314.useState(false);
@@ -562065,7 +562031,7 @@ function WelcomeV2() {
562065
562031
  dimColor: true,
562066
562032
  children: [
562067
562033
  "v",
562068
- "0.9.2",
562034
+ "0.9.4",
562069
562035
  " "
562070
562036
  ]
562071
562037
  })
@@ -562252,7 +562218,7 @@ function WelcomeV2() {
562252
562218
  dimColor: true,
562253
562219
  children: [
562254
562220
  "v",
562255
- "0.9.2",
562221
+ "0.9.4",
562256
562222
  " "
562257
562223
  ]
562258
562224
  })
@@ -562468,7 +562434,7 @@ function AppleTerminalWelcomeV2(t0) {
562468
562434
  dimColor: true,
562469
562435
  children: [
562470
562436
  "v",
562471
- "0.9.2",
562437
+ "0.9.4",
562472
562438
  " "
562473
562439
  ]
562474
562440
  });
@@ -562677,7 +562643,7 @@ function AppleTerminalWelcomeV2(t0) {
562677
562643
  dimColor: true,
562678
562644
  children: [
562679
562645
  "v",
562680
- "0.9.2",
562646
+ "0.9.4",
562681
562647
  " "
562682
562648
  ]
562683
562649
  });
@@ -580089,7 +580055,7 @@ __export(exports_update, {
580089
580055
  async function update() {
580090
580056
  if (getAPIProvider() !== "firstParty") {
580091
580057
  writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
580092
- `) + `Current version: ${"0.9.2"}
580058
+ `) + `Current version: ${"0.9.4"}
580093
580059
 
580094
580060
  ` + `To update, reinstall from npm:
580095
580061
  ` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
@@ -580100,7 +580066,7 @@ async function update() {
580100
580066
  await gracefulShutdown(0);
580101
580067
  }
580102
580068
  logEvent("tengu_update_check", {});
580103
- writeToStdout(`Current version: ${"0.9.2"}
580069
+ writeToStdout(`Current version: ${"0.9.4"}
580104
580070
  `);
580105
580071
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
580106
580072
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -580185,8 +580151,8 @@ async function update() {
580185
580151
  writeToStdout(`Verboo Code is managed by Homebrew.
580186
580152
  `);
580187
580153
  const latest = await getLatestVersion(channel2);
580188
- if (latest && !gte("0.9.2", latest)) {
580189
- writeToStdout(`Update available: ${"0.9.2"} → ${latest}
580154
+ if (latest && !gte("0.9.4", latest)) {
580155
+ writeToStdout(`Update available: ${"0.9.4"} → ${latest}
580190
580156
  `);
580191
580157
  writeToStdout(`
580192
580158
  `);
@@ -580202,8 +580168,8 @@ async function update() {
580202
580168
  writeToStdout(`Verboo Code is managed by winget.
580203
580169
  `);
580204
580170
  const latest = await getLatestVersion(channel2);
580205
- if (latest && !gte("0.9.2", latest)) {
580206
- writeToStdout(`Update available: ${"0.9.2"} → ${latest}
580171
+ if (latest && !gte("0.9.4", latest)) {
580172
+ writeToStdout(`Update available: ${"0.9.4"} → ${latest}
580207
580173
  `);
580208
580174
  writeToStdout(`
580209
580175
  `);
@@ -580219,8 +580185,8 @@ async function update() {
580219
580185
  writeToStdout(`Verboo Code is managed by apk.
580220
580186
  `);
580221
580187
  const latest = await getLatestVersion(channel2);
580222
- if (latest && !gte("0.9.2", latest)) {
580223
- writeToStdout(`Update available: ${"0.9.2"} → ${latest}
580188
+ if (latest && !gte("0.9.4", latest)) {
580189
+ writeToStdout(`Update available: ${"0.9.4"} → ${latest}
580224
580190
  `);
580225
580191
  writeToStdout(`
580226
580192
  `);
@@ -580273,11 +580239,11 @@ async function update() {
580273
580239
  `);
580274
580240
  await gracefulShutdown(1);
580275
580241
  }
580276
- if (result.latestVersion === "0.9.2") {
580277
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.2"})`) + `
580242
+ if (result.latestVersion === "0.9.4") {
580243
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.4"})`) + `
580278
580244
  `);
580279
580245
  } else {
580280
- writeToStdout(source_default.green(`Successfully updated from ${"0.9.2"} to version ${result.latestVersion}`) + `
580246
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.4"} to version ${result.latestVersion}`) + `
580281
580247
  `);
580282
580248
  await regenerateCompletionCache();
580283
580249
  }
@@ -580337,12 +580303,12 @@ async function update() {
580337
580303
  `);
580338
580304
  await gracefulShutdown(1);
580339
580305
  }
580340
- if (latestVersion === "0.9.2") {
580341
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.2"})`) + `
580306
+ if (latestVersion === "0.9.4") {
580307
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.9.4"})`) + `
580342
580308
  `);
580343
580309
  await gracefulShutdown(0);
580344
580310
  }
580345
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.2"})
580311
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.9.4"})
580346
580312
  `);
580347
580313
  writeToStdout(`Installing update...
580348
580314
  `);
@@ -580387,7 +580353,7 @@ async function update() {
580387
580353
  logForDebugging(`update: Installation status: ${status2}`);
580388
580354
  switch (status2) {
580389
580355
  case "success":
580390
- writeToStdout(source_default.green(`Successfully updated from ${"0.9.2"} to version ${latestVersion}`) + `
580356
+ writeToStdout(source_default.green(`Successfully updated from ${"0.9.4"} to version ${latestVersion}`) + `
580391
580357
  `);
580392
580358
  await regenerateCompletionCache();
580393
580359
  break;
@@ -581642,7 +581608,7 @@ ${customInstructions}` : customInstructions;
581642
581608
  is_native_binary: isInBundledMode()
581643
581609
  });
581644
581610
  logMemoryDiagnostics("start", {
581645
- version: "0.9.2",
581611
+ version: "0.9.4",
581646
581612
  debug: debug2,
581647
581613
  debugToStderr,
581648
581614
  print: print ?? false,
@@ -582448,7 +582414,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
582448
582414
  pendingHookMessages
582449
582415
  }, renderAndRun);
582450
582416
  }
582451
- }).version(`0.9.2 (${cliDesc})`, "-v, --version", "Output the version number");
582417
+ }).version(`0.9.4 (${cliDesc})`, "-v, --version", "Output the version number");
582452
582418
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
582453
582419
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
582454
582420
  if (canUserConfigureAdvisor()) {
@@ -583022,7 +582988,7 @@ if (false) {}
583022
582988
  async function main2() {
583023
582989
  const args = process.argv.slice(2);
583024
582990
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
583025
- console.log(`${"0.9.2"} (Verboo Code)`);
582991
+ console.log(`${"0.9.4"} (Verboo Code)`);
583026
582992
  return;
583027
582993
  }
583028
582994
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -583196,4 +583162,4 @@ async function main2() {
583196
583162
  }
583197
583163
  main2();
583198
583164
 
583199
- //# debugId=2B1A2C842355CFA864756E2164756E21
583165
+ //# debugId=94DCB71FC361235664756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {