@verboo/code 0.10.5 → 0.10.7

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 +309 -82
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -22787,6 +22787,28 @@ function inferRemoteModelOpenAIShimConfig(modelApiName) {
22787
22787
  }
22788
22788
  return;
22789
22789
  }
22790
+ function inferVerbooRouterOpenAIShimConfig(baseUrl) {
22791
+ if (!baseUrl?.trim()) {
22792
+ return;
22793
+ }
22794
+ try {
22795
+ const parsed = new URL(baseUrl);
22796
+ const path9 = parsed.pathname.toLowerCase().replace(/\/+$/, "");
22797
+ if (parsed.hostname.toLowerCase() !== "code.verboo.ai") {
22798
+ return;
22799
+ }
22800
+ if (path9 !== "/router/v1" && !path9.startsWith("/router/v1/")) {
22801
+ return;
22802
+ }
22803
+ return {
22804
+ preserveReasoningContent: true,
22805
+ requireReasoningContentOnAssistantMessages: true,
22806
+ reasoningContentFallback: ""
22807
+ };
22808
+ } catch {
22809
+ return;
22810
+ }
22811
+ }
22790
22812
  function resolveOpenAIShimRuntimeContext(options) {
22791
22813
  const processEnv = options?.processEnv ?? process.env;
22792
22814
  const runtimeEnv = {
@@ -22805,9 +22827,11 @@ function resolveOpenAIShimRuntimeContext(options) {
22805
22827
  const routeId = baseUrlRouteId && (!activeRouteId || activeRouteId === "anthropic" || activeRouteId === "openai") ? baseUrlRouteId : activeRouteId;
22806
22828
  const descriptor = routeId && routeId !== "anthropic" ? getRouteDescriptor(routeId) : null;
22807
22829
  const catalogEntry = descriptor && routeId ? getCatalogEntryForModel(routeId, options?.model) : null;
22808
- const inferredConfig = options?.treatAsLocal === true ? {
22830
+ const modelInferredConfig = options?.treatAsLocal === true ? undefined : inferRemoteModelOpenAIShimConfig(options?.model);
22831
+ const routeInferredConfig = options?.treatAsLocal === true ? {
22809
22832
  maxTokensField: "max_tokens"
22810
- } : inferRemoteModelOpenAIShimConfig(options?.model);
22833
+ } : inferVerbooRouterOpenAIShimConfig(options?.baseUrl);
22834
+ const inferredConfig = routeInferredConfig || modelInferredConfig ? mergeOpenAIShimConfig(routeInferredConfig, undefined, modelInferredConfig) : undefined;
22811
22835
  return {
22812
22836
  routeId,
22813
22837
  descriptor,
@@ -173010,13 +173034,19 @@ function filterAnthropicHeaders(headers) {
173010
173034
  const filtered = {};
173011
173035
  for (const [key, value] of Object.entries(headers)) {
173012
173036
  const lower = key.toLowerCase();
173013
- if (lower.startsWith("x-anthropic") || lower.startsWith("anthropic-") || lower.startsWith("x-claude") || lower === "x-app" || lower === "x-client-app" || lower === "authorization" || lower === "x-api-key" || lower === "api-key") {
173037
+ if (lower.startsWith("x-anthropic") || lower.startsWith("anthropic-") || lower.startsWith("x-claude") || lower.startsWith("x-verboo") || lower === "x-app" || lower === "x-client-app" || lower === "authorization" || lower === "x-api-key" || lower === "api-key") {
173014
173038
  continue;
173015
173039
  }
173016
173040
  filtered[key] = value;
173017
173041
  }
173018
173042
  return filtered;
173019
173043
  }
173044
+ function normalizeBaseUrlForComparison(baseUrl) {
173045
+ return baseUrl.replace(/\/+$/, "").toLowerCase();
173046
+ }
173047
+ function isVerbooRouterUrl(baseUrl) {
173048
+ return normalizeBaseUrlForComparison(baseUrl) === normalizeBaseUrlForComparison(VERBOO_ROUTER_URL);
173049
+ }
173020
173050
  function hasGeminiApiHost(baseUrl) {
173021
173051
  if (!baseUrl)
173022
173052
  return false;
@@ -173072,6 +173102,33 @@ function sleepMs(ms) {
173072
173102
  function captureRouterRateLimit(headers, sourceUrl) {
173073
173103
  updateRouterRateLimitFromHeaders(headers, { sourceUrl });
173074
173104
  }
173105
+ function isRecord2(value) {
173106
+ return value !== null && typeof value === "object" && !Array.isArray(value);
173107
+ }
173108
+ function buildResponseFormatFromOutputConfig(params) {
173109
+ const outputConfig = params.output_config;
173110
+ if (!isRecord2(outputConfig))
173111
+ return;
173112
+ const format4 = outputConfig.format;
173113
+ if (!isRecord2(format4))
173114
+ return;
173115
+ if (format4.type === "json_object") {
173116
+ return { type: "json_object" };
173117
+ }
173118
+ if (format4.type !== "json_schema" || !isRecord2(format4.schema)) {
173119
+ return;
173120
+ }
173121
+ const name = typeof format4.name === "string" && format4.name.trim() ? format4.name.trim() : "structured_output";
173122
+ const strict = typeof format4.strict === "boolean" ? format4.strict : true;
173123
+ return {
173124
+ type: "json_schema",
173125
+ json_schema: {
173126
+ name,
173127
+ strict,
173128
+ schema: sanitizeSchemaForOpenAICompat(format4.schema)
173129
+ }
173130
+ };
173131
+ }
173075
173132
  function convertSystemPrompt2(system) {
173076
173133
  if (!system)
173077
173134
  return "";
@@ -174021,8 +174078,13 @@ class OpenAIShimMessages {
174021
174078
  stream: params.stream ?? false,
174022
174079
  store: false
174023
174080
  };
174081
+ const responseFormat = buildResponseFormatFromOutputConfig(params);
174082
+ if (responseFormat) {
174083
+ body.response_format = responseFormat;
174084
+ }
174024
174085
  if (request.reasoning) {
174025
174086
  body.reasoning_effort = request.reasoning.effort;
174087
+ body.effort = request.reasoning.effort;
174026
174088
  }
174027
174089
  const maxTokensValue = typeof params.max_tokens === "number" && params.max_tokens > 0 ? params.max_tokens : undefined;
174028
174090
  const maxCompletionTokensValue = typeof params.max_completion_tokens === "number" ? params.max_completion_tokens : undefined;
@@ -174063,7 +174125,9 @@ class OpenAIShimMessages {
174063
174125
  if (deepSeekThinkingType === "enabled") {
174064
174126
  const effort = request.reasoning?.effort;
174065
174127
  if (effort) {
174066
- body.reasoning_effort = normalizeDeepSeekReasoningEffort(effort);
174128
+ const normalizedEffort = normalizeDeepSeekReasoningEffort(effort);
174129
+ body.reasoning_effort = normalizedEffort;
174130
+ body.effort = normalizedEffort;
174067
174131
  }
174068
174132
  }
174069
174133
  }
@@ -174135,6 +174199,9 @@ class OpenAIShimMessages {
174135
174199
  ...this.defaultHeaders,
174136
174200
  ...filterAnthropicHeaders(options2?.headers)
174137
174201
  };
174202
+ if (isVerbooRouterUrl(request.baseUrl)) {
174203
+ headers[VERBOO_SESSION_HEADER] = getSessionId();
174204
+ }
174138
174205
  const isGemini = isGeminiMode();
174139
174206
  const routeCredential = resolveRouteCredentialValue({
174140
174207
  routeId: runtimeShimContext.routeId,
@@ -174287,7 +174354,7 @@ class OpenAIShimMessages {
174287
174354
  tokensOut = data.usage?.completion_tokens ?? 0;
174288
174355
  } catch {}
174289
174356
  }
174290
- logApiCallEnd(correlationId, startTime2, request.resolvedModel, "success", tokensIn, tokensOut, false);
174357
+ logApiCallEnd(correlationId, startTime2, request.resolvedModel, "success", tokensIn, tokensOut, Boolean(params.stream));
174291
174358
  return response;
174292
174359
  }
174293
174360
  if (isGithub && response.status === 429 && attempt < maxAttempts - 1) {
@@ -174441,9 +174508,11 @@ function createOpenAIShimClient(options2) {
174441
174508
  messages: beta.messages
174442
174509
  };
174443
174510
  }
174444
- 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;
174511
+ var GITHUB_429_MAX_RETRIES = 3, GITHUB_429_BASE_DELAY_SEC = 1, GITHUB_429_MAX_DELAY_SEC = 32, GEMINI_API_HOST = "generativelanguage.googleapis.com", VERBOO_SESSION_HEADER = "X-Verboo-Session-Id", COPILOT_HEADERS2, JSON_REPAIR_SUFFIXES, routerStatusHandler = null, OpenAIShimStream;
174445
174512
  var init_openaiShim = __esm(() => {
174446
174513
  init_sdk();
174514
+ init_state();
174515
+ init_oauth();
174447
174516
  init_codexCredentials();
174448
174517
  init_debug();
174449
174518
  init_envUtils();
@@ -188343,6 +188412,7 @@ async function getAnthropicClient({
188343
188412
  defaultHeaders,
188344
188413
  maxRetries,
188345
188414
  timeout: parseInt(process.env.API_TIMEOUT_MS || String(600000), 10),
188415
+ reasoningEffort: shimReasoningEffort,
188346
188416
  providerOverride: {
188347
188417
  model: safeVerbooModel,
188348
188418
  baseURL: VERBOO_ROUTER_URL,
@@ -290261,26 +290331,14 @@ function getSlotsInfo(group) {
290261
290331
  }
290262
290332
  return `${current} assinantes`;
290263
290333
  }
290264
- function getPlanPriceDescription(group) {
290265
- const price = formatPrice2(group.priceCents, group.currency);
290266
- const interval = formatInterval(group.billingInterval);
290267
- const models = getModelNames(group);
290268
- const slots = getSlotsInfo(group);
290269
- let desc = `${price}${interval}`;
290270
- if (models)
290271
- desc += ` · ${models}`;
290272
- desc += ` · ${slots}`;
290273
- if (group.trialDays && group.trialDays > 0) {
290274
- desc += ` · ${group.trialDays} dias de trial`;
290275
- }
290276
- return desc;
290277
- }
290278
290334
  function PurchaseFlowView({
290279
290335
  accessToken,
290280
290336
  onDone
290281
290337
  }) {
290282
290338
  const [step, setStep] = import_react62.useState("splash");
290283
290339
  const [plans, setPlans] = import_react62.useState([]);
290340
+ const [selectedPlan, setSelectedPlan] = import_react62.useState(null);
290341
+ const [focusIndex, setFocusIndex] = import_react62.useState(0);
290284
290342
  const [errorMsg, setErrorMsg] = import_react62.useState(null);
290285
290343
  const fetchPlans = import_react62.useCallback(async () => {
290286
290344
  setStep("loading-plans");
@@ -290290,6 +290348,7 @@ function PurchaseFlowView({
290290
290348
  setStep("splash");
290291
290349
  } else {
290292
290350
  setPlans(groups);
290351
+ setFocusIndex(0);
290293
290352
  setStep("plans");
290294
290353
  }
290295
290354
  }, []);
@@ -290308,7 +290367,7 @@ function PurchaseFlowView({
290308
290367
  }
290309
290368
  onDone(false);
290310
290369
  }, [accessToken, onDone]);
290311
- const handlePlanSelect = import_react62.useCallback(async (group) => {
290370
+ const handleCheckout = import_react62.useCallback(async (group) => {
290312
290371
  setStep("checkout");
290313
290372
  try {
290314
290373
  const result = await createCheckoutSession(accessToken, group.id);
@@ -290317,6 +290376,13 @@ function PurchaseFlowView({
290317
290376
  setTimeout(() => onDone(true), 1500);
290318
290377
  return;
290319
290378
  }
290379
+ if (result.mode === "woovi") {
290380
+ setStep("checkout");
290381
+ setErrorMsg(result.wooviQrCode);
290382
+ setStep("polling");
290383
+ startPolling();
290384
+ return;
290385
+ }
290320
290386
  await openBrowser(result.url);
290321
290387
  setStep("polling");
290322
290388
  startPolling();
@@ -290325,6 +290391,27 @@ function PurchaseFlowView({
290325
290391
  setStep("error");
290326
290392
  }
290327
290393
  }, [accessToken, onDone, startPolling]);
290394
+ use_input_default((input, key) => {
290395
+ if (step !== "plans" || plans.length === 0)
290396
+ return;
290397
+ if (key.leftArrow) {
290398
+ setFocusIndex((i3) => Math.max(0, i3 - 1));
290399
+ } else if (key.rightArrow) {
290400
+ setFocusIndex((i3) => Math.min(plans.length - 1, i3 + 1));
290401
+ } else if (key.upArrow) {
290402
+ setFocusIndex((i3) => Math.max(0, i3 - COLS));
290403
+ } else if (key.downArrow) {
290404
+ setFocusIndex((i3) => Math.min(plans.length - 1, i3 + COLS));
290405
+ } else if (key.return) {
290406
+ const plan = plans[focusIndex];
290407
+ if (plan) {
290408
+ setSelectedPlan(plan);
290409
+ setStep("plan-detail");
290410
+ }
290411
+ } else if (key.escape) {
290412
+ setStep("splash");
290413
+ }
290414
+ }, { isActive: step === "plans" });
290328
290415
  switch (step) {
290329
290416
  case "splash":
290330
290417
  return /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
@@ -290360,12 +290447,12 @@ function PurchaseFlowView({
290360
290447
  ]
290361
290448
  });
290362
290449
  case "plans": {
290363
- const options2 = plans.map((plan, idx) => ({
290364
- label: `${idx + 1}. ${plan.name}`,
290365
- value: plan,
290366
- description: getPlanPriceDescription(plan)
290367
- }));
290368
- options2.push({ label: "Voltar", value: null, description: "" });
290450
+ const rows = [];
290451
+ for (let i3 = 0;i3 < plans.length; i3 += COLS) {
290452
+ rows.push(plans.slice(i3, i3 + COLS));
290453
+ }
290454
+ const focusedRow = Math.floor(focusIndex / COLS);
290455
+ const focusedCol = focusIndex % COLS;
290369
290456
  return /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
290370
290457
  flexDirection: "column",
290371
290458
  gap: 1,
@@ -290374,14 +290461,147 @@ function PurchaseFlowView({
290374
290461
  bold: true,
290375
290462
  children: "Planos disponiveis"
290376
290463
  }),
290464
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290465
+ dimColor: true,
290466
+ children: "Setas para navegar, Enter para selecionar, Esc para voltar"
290467
+ }),
290468
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedBox_default, {
290469
+ flexDirection: "column",
290470
+ gap: 1,
290471
+ children: rows.map((row, rowIdx) => /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
290472
+ flexDirection: "row",
290473
+ gap: 2,
290474
+ children: [
290475
+ row.map((plan, colIdx) => {
290476
+ const isFocused = rowIdx === focusedRow && colIdx === focusedCol;
290477
+ const price = formatPrice2(plan.priceCents, plan.currency);
290478
+ const interval = formatInterval(plan.billingInterval);
290479
+ const models = getModelNames(plan);
290480
+ const slots = getSlotsInfo(plan);
290481
+ return /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
290482
+ flexDirection: "column",
290483
+ borderStyle: isFocused ? "bold" : "round",
290484
+ borderColor: isFocused ? "claude" : undefined,
290485
+ paddingX: 1,
290486
+ paddingY: 0,
290487
+ flexGrow: 1,
290488
+ width: "33%",
290489
+ children: [
290490
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290491
+ bold: true,
290492
+ wrap: "truncate",
290493
+ children: plan.name
290494
+ }),
290495
+ /* @__PURE__ */ jsx_runtime71.jsxs(ThemedText, {
290496
+ children: [
290497
+ price,
290498
+ interval
290499
+ ]
290500
+ }),
290501
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290502
+ dimColor: true,
290503
+ wrap: "truncate",
290504
+ title: models,
290505
+ children: models
290506
+ }),
290507
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290508
+ dimColor: true,
290509
+ children: slots
290510
+ }),
290511
+ plan.trialDays && plan.trialDays > 0 && /* @__PURE__ */ jsx_runtime71.jsxs(ThemedText, {
290512
+ color: "success",
290513
+ children: [
290514
+ plan.trialDays,
290515
+ " dias trial"
290516
+ ]
290517
+ })
290518
+ ]
290519
+ }, plan.id);
290520
+ }),
290521
+ row.length < COLS && Array.from({ length: COLS - row.length }).map((_, i3) => /* @__PURE__ */ jsx_runtime71.jsx(ThemedBox_default, {
290522
+ flexGrow: 1,
290523
+ width: "33%"
290524
+ }, `empty-${i3}`))
290525
+ ]
290526
+ }, rowIdx))
290527
+ })
290528
+ ]
290529
+ });
290530
+ }
290531
+ case "plan-detail": {
290532
+ const plan = selectedPlan;
290533
+ const price = formatPrice2(plan.priceCents, plan.currency);
290534
+ const interval = formatInterval(plan.billingInterval);
290535
+ const models = getModelNames(plan);
290536
+ const slots = getSlotsInfo(plan);
290537
+ return /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
290538
+ flexDirection: "column",
290539
+ gap: 1,
290540
+ children: [
290541
+ /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
290542
+ flexDirection: "column",
290543
+ borderStyle: "round",
290544
+ paddingX: 1,
290545
+ paddingY: 0,
290546
+ gap: 0,
290547
+ children: [
290548
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290549
+ bold: true,
290550
+ children: plan.name
290551
+ }),
290552
+ /* @__PURE__ */ jsx_runtime71.jsxs(ThemedText, {
290553
+ children: [
290554
+ price,
290555
+ interval
290556
+ ]
290557
+ }),
290558
+ /* @__PURE__ */ jsx_runtime71.jsxs(ThemedBox_default, {
290559
+ flexDirection: "column",
290560
+ marginTop: 1,
290561
+ children: [
290562
+ /* @__PURE__ */ jsx_runtime71.jsxs(ThemedText, {
290563
+ children: [
290564
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290565
+ dimColor: true,
290566
+ children: "Modelos: "
290567
+ }),
290568
+ models
290569
+ ]
290570
+ }),
290571
+ /* @__PURE__ */ jsx_runtime71.jsxs(ThemedText, {
290572
+ children: [
290573
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290574
+ dimColor: true,
290575
+ children: "Assinantes: "
290576
+ }),
290577
+ slots
290578
+ ]
290579
+ }),
290580
+ plan.trialDays && plan.trialDays > 0 && /* @__PURE__ */ jsx_runtime71.jsxs(ThemedText, {
290581
+ children: [
290582
+ /* @__PURE__ */ jsx_runtime71.jsx(ThemedText, {
290583
+ dimColor: true,
290584
+ children: "Trial: "
290585
+ }),
290586
+ plan.trialDays,
290587
+ " dias"
290588
+ ]
290589
+ })
290590
+ ]
290591
+ })
290592
+ ]
290593
+ }),
290377
290594
  /* @__PURE__ */ jsx_runtime71.jsx(Select, {
290378
- options: options2,
290595
+ options: [
290596
+ { label: "Assinar Agora", value: "confirm" },
290597
+ { label: "Voltar", value: "back" }
290598
+ ],
290379
290599
  onChange: (v) => {
290380
- if (!v) {
290381
- setStep("splash");
290382
- return;
290600
+ if (v === "confirm") {
290601
+ handleCheckout(plan);
290602
+ } else {
290603
+ setStep("plans");
290383
290604
  }
290384
- handlePlanSelect(v);
290385
290605
  }
290386
290606
  })
290387
290607
  ]
@@ -290455,7 +290675,7 @@ async function showNoModelsFlow(accessToken) {
290455
290675
  });
290456
290676
  });
290457
290677
  }
290458
- var import_react62, jsx_runtime71, POLL_INTERVAL_MS = 3000, POLL_TIMEOUT_MS;
290678
+ var import_react62, jsx_runtime71, POLL_INTERVAL_MS = 3000, POLL_TIMEOUT_MS, COLS = 3;
290459
290679
  var init_purchaseFlow = __esm(() => {
290460
290680
  init_select();
290461
290681
  init_Spinner2();
@@ -389401,7 +389621,7 @@ function getAnthropicEnvMetadata() {
389401
389621
  function getBuildAgeMinutes() {
389402
389622
  if (false)
389403
389623
  ;
389404
- const buildTime = new Date("2026-06-17T17:49:56.516Z").getTime();
389624
+ const buildTime = new Date("2026-07-08T22:33:47.743Z").getTime();
389405
389625
  if (isNaN(buildTime))
389406
389626
  return;
389407
389627
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -401177,7 +401397,7 @@ async function loadPluginSettings(pluginPath, manifest) {
401177
401397
  try {
401178
401398
  const content = await readFile33(settingsJsonPath, { encoding: "utf-8" });
401179
401399
  const parsed = jsonParse(content);
401180
- if (isRecord2(parsed)) {
401400
+ if (isRecord3(parsed)) {
401181
401401
  const filtered = parsePluginSettings(parsed);
401182
401402
  if (filtered) {
401183
401403
  logForDebugging(`Loaded settings from settings.json for plugin ${manifest.name}`);
@@ -401946,7 +402166,7 @@ function getEmptyPluginLoadResultForVerboo() {
401946
402166
  logForDebugging("External plugins disabled via VERBOO_DISABLE_PLUGINS=1");
401947
402167
  return { enabled: [], disabled: [], errors: [] };
401948
402168
  }
401949
- function isRecord2(value) {
402169
+ function isRecord3(value) {
401950
402170
  return typeof value === "object" && value !== null && !Array.isArray(value);
401951
402171
  }
401952
402172
  var PluginSettingsSchema, loadAllPlugins, loadAllPluginsCacheOnly;
@@ -402336,6 +402556,12 @@ function isSyntheticMessage(message) {
402336
402556
  function isSyntheticApiErrorMessage(message) {
402337
402557
  return message.type === "assistant" && message.isApiErrorMessage === true && message.message.model === SYNTHETIC_MODEL;
402338
402558
  }
402559
+ function removeInterruptedMessage(messages, interruptedUserMessage) {
402560
+ const idx = messages.findIndex((m) => m.uuid === interruptedUserMessage.uuid);
402561
+ if (idx !== -1) {
402562
+ messages.splice(idx, 2);
402563
+ }
402564
+ }
402339
402565
  function getLastAssistantMessage(messages) {
402340
402566
  return messages.findLast((msg) => msg.type === "assistant");
402341
402567
  }
@@ -417631,7 +417857,7 @@ function buildPrimarySection() {
417631
417857
  });
417632
417858
  return [{
417633
417859
  label: "Version",
417634
- value: "0.10.5"
417860
+ value: "0.10.7"
417635
417861
  }, {
417636
417862
  label: "Session name",
417637
417863
  value: nameValue
@@ -430559,7 +430785,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
430559
430785
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
430560
430786
  }
430561
430787
  function getPublicBuildVersion() {
430562
- return "0.10.5";
430788
+ return "0.10.7";
430563
430789
  }
430564
430790
  var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
430565
430791
  var init_version = __esm(() => {
@@ -433847,21 +434073,21 @@ function extractLspInfoFromManifest(lspServers) {
433847
434073
  }
433848
434074
  return extractFromServerConfigRecord(lspServers);
433849
434075
  }
433850
- function isRecord3(value) {
434076
+ function isRecord4(value) {
433851
434077
  return typeof value === "object" && value !== null;
433852
434078
  }
433853
434079
  function extractFromServerConfigRecord(serverConfigs) {
433854
434080
  const extensions = new Set;
433855
434081
  let command7 = null;
433856
434082
  for (const [_serverName, config3] of Object.entries(serverConfigs)) {
433857
- if (!isRecord3(config3)) {
434083
+ if (!isRecord4(config3)) {
433858
434084
  continue;
433859
434085
  }
433860
434086
  if (!command7 && typeof config3.command === "string") {
433861
434087
  command7 = config3.command;
433862
434088
  }
433863
434089
  const extMapping = config3.extensionToLanguage;
433864
- if (isRecord3(extMapping)) {
434090
+ if (isRecord4(extMapping)) {
433865
434091
  for (const ext of Object.keys(extMapping)) {
433866
434092
  extensions.add(ext.toLowerCase());
433867
434093
  }
@@ -485903,7 +486129,7 @@ var init_bridge_kick = __esm(() => {
485903
486129
  var call63 = async () => {
485904
486130
  return {
485905
486131
  type: "text",
485906
- value: `${"99.0.0"} (built ${"2026-06-17T17:49:56.516Z"})`
486132
+ value: `${"99.0.0"} (built ${"2026-07-08T22:33:47.743Z"})`
485907
486133
  };
485908
486134
  }, version2, version_default;
485909
486135
  var init_version2 = __esm(() => {
@@ -500176,7 +500402,7 @@ function transformMessagesForExternalTranscript(messages, replIds) {
500176
500402
  });
500177
500403
  }
500178
500404
  function cleanMessagesForLogging(messages, allMessages = messages) {
500179
- const filtered = messages.filter(isLoggableMessage);
500405
+ const filtered = messages.filter((m) => isLoggableMessage(m) && !isSyntheticMessage(m));
500180
500406
  return getUserType() !== "ant" ? transformMessagesForExternalTranscript(filtered, collectReplIds(allMessages)) : filtered;
500181
500407
  }
500182
500408
  async function getLogByIndex(index) {
@@ -518147,7 +518373,7 @@ function printStartupScreen(modelOverride) {
518147
518373
  const home = process.env.HOME || process.env.USERPROFILE || "";
518148
518374
  const cwd2 = process.cwd();
518149
518375
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
518150
- const version3 = "0.10.5";
518376
+ const version3 = "0.10.7";
518151
518377
  const bold2 = `${ESC4}1m`;
518152
518378
  const PURPLE = rgb3(...ACCENT);
518153
518379
  const SOFT = rgb3(...CREAM);
@@ -536439,7 +536665,7 @@ var init_routerRateLimitHook = __esm(() => {
536439
536665
  function getSemverPart(version3) {
536440
536666
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
536441
536667
  }
536442
- function useUpdateNotification(updatedVersion, initialVersion = "0.10.5") {
536668
+ function useUpdateNotification(updatedVersion, initialVersion = "0.10.7") {
536443
536669
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
536444
536670
  const [pendingNotification2, setPendingNotification] = import_react225.useState(null);
536445
536671
  if (updatedVersion) {
@@ -536479,7 +536705,7 @@ function AutoUpdater({
536479
536705
  return;
536480
536706
  }
536481
536707
  if (false) {}
536482
- const currentVersion = "0.10.5";
536708
+ const currentVersion = "0.10.7";
536483
536709
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
536484
536710
  let latestVersion = await getLatestVersion(channel2);
536485
536711
  const isDisabled = isAutoUpdaterDisabled();
@@ -536832,17 +537058,17 @@ function PackageManagerAutoUpdater(t0) {
536832
537058
  const maxVersion = await getMaxVersion();
536833
537059
  if (maxVersion && latest && gt(latest, maxVersion)) {
536834
537060
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
536835
- if (gte("0.10.5", maxVersion)) {
536836
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.10.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
537061
+ if (gte("0.10.7", maxVersion)) {
537062
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.10.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
536837
537063
  setUpdateAvailable(false);
536838
537064
  return;
536839
537065
  }
536840
537066
  latest = maxVersion;
536841
537067
  }
536842
- const hasUpdate = latest && !gte("0.10.5", latest) && !shouldSkipVersion(latest);
537068
+ const hasUpdate = latest && !gte("0.10.7", latest) && !shouldSkipVersion(latest);
536843
537069
  setUpdateAvailable(!!hasUpdate);
536844
537070
  if (hasUpdate) {
536845
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.10.5"} -> ${latest}`);
537071
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.10.7"} -> ${latest}`);
536846
537072
  }
536847
537073
  };
536848
537074
  $2[0] = t1;
@@ -536876,7 +537102,7 @@ function PackageManagerAutoUpdater(t0) {
536876
537102
  wrap: "truncate",
536877
537103
  children: [
536878
537104
  "currentVersion: ",
536879
- "0.10.5"
537105
+ "0.10.7"
536880
537106
  ]
536881
537107
  });
536882
537108
  $2[3] = verbose;
@@ -552649,10 +552875,10 @@ async function autoUpdateCliInBackground() {
552649
552875
  return;
552650
552876
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
552651
552877
  const latest = await getLatestVersion(channel2);
552652
- if (!latest || gte("0.10.5", latest))
552878
+ if (!latest || gte("0.10.7", latest))
552653
552879
  return;
552654
552880
  writeToStdout(`
552655
- Nova versão disponível: ${latest} (atual: ${"0.10.5"})
552881
+ Nova versão disponível: ${latest} (atual: ${"0.10.7"})
552656
552882
  `);
552657
552883
  writeToStdout(`Atualizando automaticamente...
552658
552884
  `);
@@ -566309,6 +566535,9 @@ Error: sandbox required but unavailable: ${reason}
566309
566535
  });
566310
566536
  } else {
566311
566537
  const newAbortController = createAbortController();
566538
+ const INIT_ABORT_TIMEOUT_MS = 120000;
566539
+ const abortTimeoutId = setTimeout(() => newAbortController.abort("timeout"), INIT_ABORT_TIMEOUT_MS);
566540
+ newAbortController.signal.addEventListener("abort", () => clearTimeout(abortTimeoutId), { once: true });
566312
566541
  setAbortController(newAbortController);
566313
566542
  onQuery([initialMsg.message], newAbortController, true, [], mainLoopModel);
566314
566543
  }
@@ -569378,7 +569607,7 @@ function WelcomeV2() {
569378
569607
  dimColor: true,
569379
569608
  children: [
569380
569609
  "v",
569381
- "0.10.5",
569610
+ "0.10.7",
569382
569611
  " "
569383
569612
  ]
569384
569613
  })
@@ -569565,7 +569794,7 @@ function WelcomeV2() {
569565
569794
  dimColor: true,
569566
569795
  children: [
569567
569796
  "v",
569568
- "0.10.5",
569797
+ "0.10.7",
569569
569798
  " "
569570
569799
  ]
569571
569800
  })
@@ -569781,7 +570010,7 @@ function AppleTerminalWelcomeV2(t0) {
569781
570010
  dimColor: true,
569782
570011
  children: [
569783
570012
  "v",
569784
- "0.10.5",
570013
+ "0.10.7",
569785
570014
  " "
569786
570015
  ]
569787
570016
  });
@@ -569990,7 +570219,7 @@ function AppleTerminalWelcomeV2(t0) {
569990
570219
  dimColor: true,
569991
570220
  children: [
569992
570221
  "v",
569993
- "0.10.5",
570222
+ "0.10.7",
569994
570223
  " "
569995
570224
  ]
569996
570225
  });
@@ -582995,7 +583224,6 @@ var init_initReplBridge = __esm(() => {
582995
583224
  var exports_print = {};
582996
583225
  __export(exports_print, {
582997
583226
  runHeadless: () => runHeadless,
582998
- removeInterruptedMessage: () => removeInterruptedMessage,
582999
583227
  reconcileMcpServers: () => reconcileMcpServers,
583000
583228
  joinPromptValues: () => joinPromptValues,
583001
583229
  handleOrphanedPermissionResponse: () => handleOrphanedPermissionResponse,
@@ -585457,12 +585685,6 @@ function emitLoadError(message, outputFormat) {
585457
585685
  `);
585458
585686
  }
585459
585687
  }
585460
- function removeInterruptedMessage(messages, interruptedUserMessage) {
585461
- const idx = messages.findIndex((m) => m.uuid === interruptedUserMessage.uuid);
585462
- if (idx !== -1) {
585463
- messages.splice(idx, 2);
585464
- }
585465
- }
585466
585688
  async function loadInitialMessages(setAppState, options2) {
585467
585689
  const persistSession = !isSessionPersistenceDisabled();
585468
585690
  if (options2.continue) {
@@ -587399,7 +587621,7 @@ __export(exports_update, {
587399
587621
  });
587400
587622
  async function update() {
587401
587623
  logEvent("tengu_update_check", {});
587402
- writeToStdout(`Current version: ${"0.10.5"}
587624
+ writeToStdout(`Current version: ${"0.10.7"}
587403
587625
  `);
587404
587626
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
587405
587627
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -587484,8 +587706,8 @@ async function update() {
587484
587706
  writeToStdout(`Verboo Code is managed by Homebrew.
587485
587707
  `);
587486
587708
  const latest = await getLatestVersion(channel2);
587487
- if (latest && !gte("0.10.5", latest)) {
587488
- writeToStdout(`Update available: ${"0.10.5"} → ${latest}
587709
+ if (latest && !gte("0.10.7", latest)) {
587710
+ writeToStdout(`Update available: ${"0.10.7"} → ${latest}
587489
587711
  `);
587490
587712
  writeToStdout(`
587491
587713
  `);
@@ -587501,8 +587723,8 @@ async function update() {
587501
587723
  writeToStdout(`Verboo Code is managed by winget.
587502
587724
  `);
587503
587725
  const latest = await getLatestVersion(channel2);
587504
- if (latest && !gte("0.10.5", latest)) {
587505
- writeToStdout(`Update available: ${"0.10.5"} → ${latest}
587726
+ if (latest && !gte("0.10.7", latest)) {
587727
+ writeToStdout(`Update available: ${"0.10.7"} → ${latest}
587506
587728
  `);
587507
587729
  writeToStdout(`
587508
587730
  `);
@@ -587518,8 +587740,8 @@ async function update() {
587518
587740
  writeToStdout(`Verboo Code is managed by apk.
587519
587741
  `);
587520
587742
  const latest = await getLatestVersion(channel2);
587521
- if (latest && !gte("0.10.5", latest)) {
587522
- writeToStdout(`Update available: ${"0.10.5"} → ${latest}
587743
+ if (latest && !gte("0.10.7", latest)) {
587744
+ writeToStdout(`Update available: ${"0.10.7"} → ${latest}
587523
587745
  `);
587524
587746
  writeToStdout(`
587525
587747
  `);
@@ -587572,11 +587794,11 @@ async function update() {
587572
587794
  `);
587573
587795
  await gracefulShutdown(1);
587574
587796
  }
587575
- if (result.latestVersion === "0.10.5") {
587576
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.10.5"})`) + `
587797
+ if (result.latestVersion === "0.10.7") {
587798
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.10.7"})`) + `
587577
587799
  `);
587578
587800
  } else {
587579
- writeToStdout(source_default.green(`Successfully updated from ${"0.10.5"} to version ${result.latestVersion}`) + `
587801
+ writeToStdout(source_default.green(`Successfully updated from ${"0.10.7"} to version ${result.latestVersion}`) + `
587580
587802
  `);
587581
587803
  await regenerateCompletionCache();
587582
587804
  }
@@ -587636,12 +587858,12 @@ async function update() {
587636
587858
  `);
587637
587859
  await gracefulShutdown(1);
587638
587860
  }
587639
- if (latestVersion === "0.10.5") {
587640
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.10.5"})`) + `
587861
+ if (latestVersion === "0.10.7") {
587862
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.10.7"})`) + `
587641
587863
  `);
587642
587864
  await gracefulShutdown(0);
587643
587865
  }
587644
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.10.5"})
587866
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.10.7"})
587645
587867
  `);
587646
587868
  writeToStdout(`Installing update...
587647
587869
  `);
@@ -587686,7 +587908,7 @@ async function update() {
587686
587908
  logForDebugging(`update: Installation status: ${status2}`);
587687
587909
  switch (status2) {
587688
587910
  case "success":
587689
- writeToStdout(source_default.green(`Successfully updated from ${"0.10.5"} to version ${latestVersion}`) + `
587911
+ writeToStdout(source_default.green(`Successfully updated from ${"0.10.7"} to version ${latestVersion}`) + `
587690
587912
  `);
587691
587913
  await regenerateCompletionCache();
587692
587914
  break;
@@ -588941,7 +589163,7 @@ ${customInstructions}` : customInstructions;
588941
589163
  is_native_binary: isInBundledMode()
588942
589164
  });
588943
589165
  logMemoryDiagnostics("start", {
588944
- version: "0.10.5",
589166
+ version: "0.10.7",
588945
589167
  debug: debug2,
588946
589168
  debugToStderr,
588947
589169
  print: print ?? false,
@@ -589663,6 +589885,11 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
589663
589885
  if (processedResume.restoredAgentDef) {
589664
589886
  mainThreadAgentDefinition = processedResume.restoredAgentDef;
589665
589887
  }
589888
+ if (processedResume && !processedResume.initialState.initialMessage && result.turnInterruptionState && result.turnInterruptionState.kind !== "none") {
589889
+ if (result.turnInterruptionState.message.isMeta) {
589890
+ removeInterruptedMessage(processedResume.messages, result.turnInterruptionState.message);
589891
+ }
589892
+ }
589666
589893
  logEvent("tengu_session_resumed", {
589667
589894
  entrypoint: "cli_flag",
589668
589895
  success: true,
@@ -589747,7 +589974,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
589747
589974
  pendingHookMessages
589748
589975
  }, renderAndRun);
589749
589976
  }
589750
- }).version(`0.10.5 (${cliDesc})`, "-v, --version", "Output the version number");
589977
+ }).version(`0.10.7 (${cliDesc})`, "-v, --version", "Output the version number");
589751
589978
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
589752
589979
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
589753
589980
  if (canUserConfigureAdvisor()) {
@@ -590322,7 +590549,7 @@ if (false) {}
590322
590549
  async function main2() {
590323
590550
  const args = process.argv.slice(2);
590324
590551
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
590325
- console.log(`${"0.10.5"} (Verboo Code)`);
590552
+ console.log(`${"0.10.7"} (Verboo Code)`);
590326
590553
  return;
590327
590554
  }
590328
590555
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -590496,4 +590723,4 @@ async function main2() {
590496
590723
  }
590497
590724
  main2();
590498
590725
 
590499
- //# debugId=5294E83A6E72216E64756E2164756E21
590726
+ //# debugId=925E7674DF13B51B64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.10.5",
3
+ "version": "0.10.7",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {