@verboo/code 0.15.5 → 0.15.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 (3) hide show
  1. package/README.md +55 -0
  2. package/dist/cli.mjs +949 -1048
  3. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -60271,7 +60271,23 @@ var init_types2 = __esm(() => {
60271
60271
  base_url: exports_external.string().url().describe("OpenAI-compatible API endpoint (must be https:// or http://)"),
60272
60272
  api_key: exports_external.string().describe("API key for this provider")
60273
60273
  })).optional().describe("Map of model name to provider connection info. " + 'Example: { "deepseek-chat": { "base_url": "https://api.deepseek.com/v1", "api_key": "sk-xxx" } }'),
60274
- agentRouting: exports_external.record(exports_external.string(), exports_external.string()).optional().describe("Map of agent identifier (subagent_type or team member name) to model name. " + 'Use "default" key as fallback. Model name must exist in agentModels. ' + 'Example: { "Explore": "deepseek-chat", "general-purpose": "gpt-4o", "default": "gpt-4o" }'),
60274
+ agentRouting: exports_external.record(exports_external.string(), exports_external.union([
60275
+ exports_external.string().trim().min(1),
60276
+ exports_external.object({
60277
+ profile: exports_external.enum([
60278
+ "fast",
60279
+ "review",
60280
+ "coding",
60281
+ "testing",
60282
+ "balanced"
60283
+ ]),
60284
+ fallback: exports_external.enum(["inherit", "first-available"]).optional()
60285
+ }).strict(),
60286
+ exports_external.object({
60287
+ model: exports_external.string().trim().min(1),
60288
+ provider: exports_external.literal("inherit").optional()
60289
+ }).strict()
60290
+ ])).optional().describe("Map of agent identifier to an external provider model, semantic profile, " + 'or authenticated Verboo model. Use "default" as fallback. ' + 'Example: { "Explore": "fast", "worker-review": { "profile": "review" } }'),
60275
60291
  fastMode: exports_external.boolean().optional().describe("When true, fast mode is enabled. When absent or false, fast mode is off."),
60276
60292
  fastModePerSessionOptIn: exports_external.boolean().optional().describe("When true, fast mode does not persist across sessions. Each session starts with fast mode off."),
60277
60293
  promptSuggestionEnabled: exports_external.boolean().optional().describe("When false, prompt suggestions are disabled. When absent or true, " + "prompt suggestions are enabled."),
@@ -117666,6 +117682,24 @@ function normalizeModel(raw) {
117666
117682
  raw
117667
117683
  };
117668
117684
  }
117685
+ function normalizeAgentModelRoles(rawRoles, models) {
117686
+ if (!rawRoles)
117687
+ return {};
117688
+ const entitledModelIds = new Set(models.map((model2) => model2.id));
117689
+ const roles = {};
117690
+ for (const role of VERBOO_AGENT_MODEL_ROLES) {
117691
+ const rawModelId = rawRoles[role];
117692
+ const modelId = typeof rawModelId === "string" ? rawModelId.trim() : undefined;
117693
+ if (!modelId)
117694
+ continue;
117695
+ if (!entitledModelIds.has(modelId)) {
117696
+ logForDebugging(`[VerbooModels] Ignoring agent model role "${role}" because "${modelId}" is not in the authenticated model catalog`, { level: "warn" });
117697
+ continue;
117698
+ }
117699
+ roles[role] = modelId;
117700
+ }
117701
+ return roles;
117702
+ }
117669
117703
  function clearVerbooModelsCache() {
117670
117704
  cache = null;
117671
117705
  inflight = null;
@@ -117698,7 +117732,8 @@ async function fetchVerbooModels(accessToken, opts = {}) {
117698
117732
  }
117699
117733
  const data = parsed.data.data;
117700
117734
  const models = data.map(normalizeModel).filter((m) => m !== null);
117701
- cache = { fetchedAt: Date.now(), models };
117735
+ const agentModelRoles = normalizeAgentModelRoles(parsed.data.agent_model_roles, models);
117736
+ cache = { fetchedAt: Date.now(), models, agentModelRoles };
117702
117737
  logForDebugging(`[VerbooModels] Fetched ${models.length} models from ${endpoint}`);
117703
117738
  return models;
117704
117739
  } catch (error41) {
@@ -117720,6 +117755,9 @@ async function fetchVerbooModels(accessToken, opts = {}) {
117720
117755
  function getCachedVerbooModels() {
117721
117756
  return cache?.models ?? null;
117722
117757
  }
117758
+ function getVerbooAgentModelForRole(role) {
117759
+ return cache?.agentModelRoles[role];
117760
+ }
117723
117761
  function getVerbooModelMeta(modelId) {
117724
117762
  if (!cache)
117725
117763
  return;
@@ -117734,7 +117772,7 @@ function getVerbooReasoningEffort(modelId, requested) {
117734
117772
  return;
117735
117773
  return getVerbooModelReasoning(modelId)?.effortLevels.find((level) => level.toLowerCase() === normalized);
117736
117774
  }
117737
- var modelsResponseSchema, CACHE_TTL_MS, cache = null, inflight = null;
117775
+ var VERBOO_AGENT_MODEL_ROLES, modelsResponseSchema, CACHE_TTL_MS, cache = null, inflight = null;
117738
117776
  var init_verbooModels = __esm(() => {
117739
117777
  init_axios2();
117740
117778
  init_zod();
@@ -117742,7 +117780,19 @@ var init_verbooModels = __esm(() => {
117742
117780
  init_debug();
117743
117781
  init_log3();
117744
117782
  init_verbooApiError();
117745
- modelsResponseSchema = exports_external2.object({ data: exports_external2.array(exports_external2.record(exports_external2.unknown())) }).passthrough();
117783
+ VERBOO_AGENT_MODEL_ROLES = [
117784
+ "explore",
117785
+ "fast",
117786
+ "balanced",
117787
+ "powerful",
117788
+ "review",
117789
+ "coding",
117790
+ "testing"
117791
+ ];
117792
+ modelsResponseSchema = exports_external2.object({
117793
+ data: exports_external2.array(exports_external2.record(exports_external2.unknown())),
117794
+ agent_model_roles: exports_external2.record(exports_external2.unknown()).optional()
117795
+ }).passthrough();
117746
117796
  CACHE_TTL_MS = 5 * 60 * 1000;
117747
117797
  });
117748
117798
 
@@ -117942,7 +117992,7 @@ function getClaudeCodeUserAgent() {
117942
117992
  return `claude-code/${"99.0.0"}`;
117943
117993
  }
117944
117994
  function getVerbooCodeUserAgent() {
117945
- const version2 = "0.15.5";
117995
+ const version2 = "0.15.7";
117946
117996
  return `verboo-code/${version2}`;
117947
117997
  }
117948
117998
 
@@ -185445,6 +185495,14 @@ var init_exploreAgent = __esm(() => {
185445
185495
  source: "built-in",
185446
185496
  baseDir: "built-in",
185447
185497
  model: "haiku",
185498
+ modelRole: "explore",
185499
+ maxTurns: 4,
185500
+ executionBudget: {
185501
+ maxToolCalls: 40,
185502
+ softTimeoutMs: 150000,
185503
+ hardTimeoutMs: 180000,
185504
+ reserveFinalTurn: true
185505
+ },
185448
185506
  omitClaudeMd: true,
185449
185507
  getSystemPrompt: () => getExploreSystemPrompt()
185450
185508
  };
@@ -211604,6 +211662,100 @@ var init_headlessProfiler = __esm(() => {
211604
211662
  SHOULD_PROFILE2 = DETAILED_PROFILING2 || STATSIG_LOGGING_SAMPLED2;
211605
211663
  });
211606
211664
 
211665
+ // src/services/api/agentModelProfiles.ts
211666
+ function canonicalModelName(model2) {
211667
+ const normalized = model2.trim().toLowerCase().replace(/\[1m\]$/i, "");
211668
+ return normalized.split("/").at(-1) ?? normalized;
211669
+ }
211670
+ function findAvailableAgentModel(requestedModel, availableModels) {
211671
+ const exact = availableModels.find((model2) => model2.id.toLowerCase() === requestedModel.toLowerCase());
211672
+ if (exact)
211673
+ return exact;
211674
+ const canonicalRequested = canonicalModelName(requestedModel);
211675
+ return availableModels.find((model2) => canonicalModelName(model2.id) === canonicalRequested);
211676
+ }
211677
+ function isAgentModelProfile(value) {
211678
+ return Object.hasOwn(AGENT_MODEL_PROFILES, value);
211679
+ }
211680
+ function parseAgentModelProfileReference(value) {
211681
+ if (!value)
211682
+ return null;
211683
+ const normalized = value.trim().toLowerCase();
211684
+ if (!normalized.startsWith("profile:"))
211685
+ return null;
211686
+ const candidate = normalized.slice("profile:".length);
211687
+ return isAgentModelProfile(candidate) ? candidate : null;
211688
+ }
211689
+ function resolveAgentProfileModel(profile, availableModels, routerRoleModel) {
211690
+ if (routerRoleModel) {
211691
+ const entitledRoleModel = findAvailableAgentModel(routerRoleModel, availableModels);
211692
+ if (entitledRoleModel)
211693
+ return entitledRoleModel.id;
211694
+ }
211695
+ const selected = AGENT_MODEL_PROFILES[profile].map((candidate) => findAvailableAgentModel(candidate, availableModels)).find((model2) => model2 !== undefined);
211696
+ return selected?.id ?? null;
211697
+ }
211698
+ var AGENT_MODEL_PROFILES;
211699
+ var init_agentModelProfiles = __esm(() => {
211700
+ AGENT_MODEL_PROFILES = {
211701
+ fast: [
211702
+ "deepseek-v4-flash",
211703
+ "glm-4.7-flash",
211704
+ "mimo-v2.5",
211705
+ "qwen3.6-27b",
211706
+ "minimax-m3",
211707
+ "mimo-v2.5-pro",
211708
+ "deepseek-v4-pro",
211709
+ "kimi-k2.7",
211710
+ "glm-5.2"
211711
+ ],
211712
+ review: [
211713
+ "deepseek-v4-pro",
211714
+ "mimo-v2.5-pro",
211715
+ "glm-5.2",
211716
+ "kimi-k2.7",
211717
+ "qwen3.6-27b",
211718
+ "minimax-m3",
211719
+ "mimo-v2.5",
211720
+ "deepseek-v4-flash",
211721
+ "glm-4.7-flash"
211722
+ ],
211723
+ coding: [
211724
+ "mimo-v2.5-pro",
211725
+ "deepseek-v4-pro",
211726
+ "glm-5.2",
211727
+ "kimi-k2.7",
211728
+ "qwen3.6-27b",
211729
+ "minimax-m3",
211730
+ "mimo-v2.5",
211731
+ "deepseek-v4-flash",
211732
+ "glm-4.7-flash"
211733
+ ],
211734
+ testing: [
211735
+ "qwen3.6-27b",
211736
+ "deepseek-v4-pro",
211737
+ "mimo-v2.5-pro",
211738
+ "mimo-v2.5",
211739
+ "minimax-m3",
211740
+ "deepseek-v4-flash",
211741
+ "glm-5.2",
211742
+ "kimi-k2.7",
211743
+ "glm-4.7-flash"
211744
+ ],
211745
+ balanced: [
211746
+ "mimo-v2.5",
211747
+ "qwen3.6-27b",
211748
+ "minimax-m3",
211749
+ "deepseek-v4-flash",
211750
+ "glm-4.7-flash",
211751
+ "mimo-v2.5-pro",
211752
+ "deepseek-v4-pro",
211753
+ "kimi-k2.7",
211754
+ "glm-5.2"
211755
+ ]
211756
+ };
211757
+ });
211758
+
211607
211759
  // src/query/model.ts
211608
211760
  function resolveQueryTurnModel({
211609
211761
  permissionMode,
@@ -211611,7 +211763,9 @@ function resolveQueryTurnModel({
211611
211763
  sessionModel,
211612
211764
  exceeds200kTokens = false
211613
211765
  }) {
211614
- const requestedModel = turnModel ?? parseUserSpecifiedModel(sessionModel ?? getDefaultMainLoopModelSetting());
211766
+ const turnProfile = parseAgentModelProfileReference(turnModel);
211767
+ const profileModel = turnProfile ? resolveAgentProfileModel(turnProfile, getCachedVerbooModels() ?? []) : null;
211768
+ const requestedModel = (turnProfile ? profileModel : turnModel) ?? parseUserSpecifiedModel(sessionModel ?? getDefaultMainLoopModelSetting());
211615
211769
  return getRuntimeMainLoopModel({
211616
211770
  permissionMode,
211617
211771
  mainLoopModel: requestedModel,
@@ -211619,6 +211773,8 @@ function resolveQueryTurnModel({
211619
211773
  });
211620
211774
  }
211621
211775
  var init_model2 = __esm(() => {
211776
+ init_agentModelProfiles();
211777
+ init_verbooModels();
211622
211778
  init_model();
211623
211779
  });
211624
211780
 
@@ -224595,11 +224751,18 @@ function getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMo
224595
224751
  if (aliasMatchesParentTier(toolSpecifiedModel, parentModel)) {
224596
224752
  return parentModel;
224597
224753
  }
224754
+ if (isClaudeFamilyAlias(toolSpecifiedModel) && !checkIsClaudeNativeProvider()) {
224755
+ return getRuntimeMainLoopModel({
224756
+ permissionMode: permissionMode ?? "default",
224757
+ mainLoopModel: parentModel,
224758
+ exceeds200kTokens: false
224759
+ });
224760
+ }
224598
224761
  const model3 = parseUserSpecifiedModel(toolSpecifiedModel);
224599
224762
  return applyParentRegionPrefix(model3, toolSpecifiedModel);
224600
224763
  }
224601
224764
  const agentModelWithExp = agentModel ?? getDefaultSubagentModel();
224602
- if ((agentModelWithExp === "haiku" || agentModelWithExp === "sonnet") && !checkIsClaudeNativeProvider()) {
224765
+ if (isClaudeFamilyAlias(agentModelWithExp) && !checkIsClaudeNativeProvider()) {
224603
224766
  return getRuntimeMainLoopModel({
224604
224767
  permissionMode: permissionMode ?? "default",
224605
224768
  mainLoopModel: parentModel,
@@ -224619,6 +224782,10 @@ function getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMo
224619
224782
  const model2 = parseUserSpecifiedModel(agentModelWithExp);
224620
224783
  return applyParentRegionPrefix(model2, agentModelWithExp);
224621
224784
  }
224785
+ function isClaudeFamilyAlias(model2) {
224786
+ const normalized = model2.trim().toLowerCase();
224787
+ return normalized === "haiku" || normalized === "sonnet" || normalized === "opus";
224788
+ }
224622
224789
  function aliasMatchesParentTier(alias, parentModel) {
224623
224790
  const canonical = getCanonicalName(parentModel);
224624
224791
  switch (alias.toLowerCase()) {
@@ -224681,43 +224848,338 @@ var init_agent = __esm(() => {
224681
224848
  function normalize8(key) {
224682
224849
  return key.toLowerCase().replace(/[-_]/g, "");
224683
224850
  }
224684
- function resolveAgentProvider(name, subagentType, settings) {
224685
- if (!settings)
224686
- return null;
224687
- const routing = settings.agentRouting;
224688
- const models = settings.agentModels;
224689
- if (!routing || !models)
224690
- return null;
224851
+ function resolveProfileModel(profile, availableModels) {
224852
+ return resolveAgentProfileModel(profile, availableModels, getVerbooAgentModelForRole(profile));
224853
+ }
224854
+ function findRoutingValue(name, subagentType, settings) {
224855
+ const routing = settings?.agentRouting;
224856
+ if (!routing)
224857
+ return;
224691
224858
  const normalizedRouting = new Map;
224692
224859
  for (const [key, value] of Object.entries(routing)) {
224693
- const nk = normalize8(key);
224694
- if (normalizedRouting.has(nk)) {
224695
- console.error(`[agentRouting] Warning: routing key "${key}" collides with an existing key after normalization (both map to "${nk}"). First entry wins.`);
224860
+ const normalizedKey = normalize8(key);
224861
+ if (normalizedRouting.has(normalizedKey)) {
224862
+ console.error(`[agentRouting] Warning: routing key "${key}" collides with an existing key after normalization (both map to "${normalizedKey}"). First entry wins.`);
224696
224863
  }
224697
- if (!normalizedRouting.has(nk)) {
224698
- normalizedRouting.set(nk, value);
224864
+ if (!normalizedRouting.has(normalizedKey)) {
224865
+ normalizedRouting.set(normalizedKey, value);
224699
224866
  }
224700
224867
  }
224701
- const candidates = [name, subagentType, "default"].filter(Boolean);
224702
- let modelName;
224703
- for (const candidate of candidates) {
224868
+ for (const candidate of [name, subagentType, "default"].filter(Boolean)) {
224704
224869
  const match = normalizedRouting.get(normalize8(candidate));
224705
- if (match) {
224706
- modelName = match;
224707
- break;
224708
- }
224870
+ if (match !== undefined)
224871
+ return match;
224709
224872
  }
224710
- if (!modelName)
224873
+ return;
224874
+ }
224875
+ function resolveAgentRoute(name, subagentType, settings, availableModels = getCachedVerbooModels() ?? []) {
224876
+ if (!settings)
224711
224877
  return null;
224712
- const modelConfig = models[modelName];
224713
- if (!modelConfig)
224878
+ const routingValue = findRoutingValue(name, subagentType, settings);
224879
+ if (routingValue === undefined)
224714
224880
  return null;
224881
+ if (typeof routingValue === "string") {
224882
+ const externalModel = settings.agentModels?.[routingValue];
224883
+ if (externalModel) {
224884
+ const providerOverride = {
224885
+ model: routingValue,
224886
+ baseURL: externalModel.base_url,
224887
+ apiKey: externalModel.api_key
224888
+ };
224889
+ return {
224890
+ model: routingValue,
224891
+ source: "external-provider",
224892
+ providerOverride
224893
+ };
224894
+ }
224895
+ const profile = parseAgentModelProfileReference(`profile:${routingValue}`);
224896
+ if (profile) {
224897
+ const model4 = resolveProfileModel(profile, availableModels);
224898
+ return model4 ? { model: model4, source: "profile", profile } : null;
224899
+ }
224900
+ const model3 = findAvailableAgentModel(routingValue, availableModels);
224901
+ return model3 ? { model: model3.id, source: "verboo-model" } : null;
224902
+ }
224903
+ if ("model" in routingValue) {
224904
+ const model3 = findAvailableAgentModel(routingValue.model, availableModels);
224905
+ return model3 ? { model: model3.id, source: "verboo-model" } : null;
224906
+ }
224907
+ const model2 = resolveProfileModel(routingValue.profile, availableModels);
224908
+ if (model2) {
224909
+ return {
224910
+ model: model2,
224911
+ source: "profile",
224912
+ profile: routingValue.profile
224913
+ };
224914
+ }
224915
+ if (routingValue.fallback === "first-available" && availableModels[0]) {
224916
+ return {
224917
+ model: availableModels[0].id,
224918
+ source: "profile",
224919
+ profile: routingValue.profile
224920
+ };
224921
+ }
224922
+ return null;
224923
+ }
224924
+ function resolveParentModel(parentModel, permissionMode) {
224925
+ return getRuntimeMainLoopModel({
224926
+ permissionMode: permissionMode ?? "default",
224927
+ mainLoopModel: parentModel,
224928
+ exceeds200kTokens: false
224929
+ });
224930
+ }
224931
+ function resolveAgentExecutionModel({
224932
+ agentModel,
224933
+ agentModelRole,
224934
+ parentModel,
224935
+ toolSpecifiedModel,
224936
+ permissionMode,
224937
+ agentName,
224938
+ agentType,
224939
+ settings
224940
+ }) {
224941
+ const configuredRoutingValue = findRoutingValue(agentName, agentType, settings);
224942
+ const configuredRoute = resolveAgentRoute(agentName, agentType, settings);
224943
+ if (configuredRoute) {
224944
+ return {
224945
+ effectiveModel: configuredRoute.model,
224946
+ requestedModel: configuredRoute.model,
224947
+ source: configuredRoute.source === "external-provider" ? "external_route" : configuredRoute.source === "profile" ? "catalog_profile" : "catalog_model",
224948
+ providerOverride: configuredRoute.providerOverride ?? null,
224949
+ profile: configuredRoute.profile
224950
+ };
224951
+ }
224952
+ const configuredProfile = typeof configuredRoutingValue === "string" ? parseAgentModelProfileReference(`profile:${configuredRoutingValue}`) : configuredRoutingValue && ("profile" in configuredRoutingValue) ? configuredRoutingValue.profile : null;
224953
+ const configuredModel = configuredRoutingValue && typeof configuredRoutingValue !== "string" && "model" in configuredRoutingValue ? configuredRoutingValue.model : undefined;
224954
+ if (configuredProfile || configuredModel) {
224955
+ return {
224956
+ effectiveModel: resolveParentModel(parentModel, permissionMode),
224957
+ requestedModel: configuredModel ?? (configuredProfile ? `profile:${configuredProfile}` : undefined),
224958
+ source: "parent_fallback",
224959
+ providerOverride: null,
224960
+ ...configuredProfile && { profile: configuredProfile },
224961
+ fallbackReason: configuredProfile ? "missing_catalog_profile" : "missing_catalog_model"
224962
+ };
224963
+ }
224964
+ const environmentModel = process.env.CLAUDE_CODE_SUBAGENT_MODEL?.trim();
224965
+ const requestedModel = environmentModel || toolSpecifiedModel || agentModel;
224966
+ const requestedSource = environmentModel ? "environment" : toolSpecifiedModel ? "tool_override" : "agent_definition";
224967
+ if (isVerbooMode()) {
224968
+ const normalizedRequested2 = requestedModel?.trim().toLowerCase();
224969
+ const availableModels = getCachedVerbooModels() ?? [];
224970
+ const requestedProfile = parseAgentModelProfileReference(requestedModel);
224971
+ if (requestedProfile) {
224972
+ const profileModel = resolveProfileModel(requestedProfile, availableModels);
224973
+ if (profileModel) {
224974
+ return {
224975
+ effectiveModel: profileModel,
224976
+ requestedModel,
224977
+ source: "catalog_profile",
224978
+ providerOverride: null,
224979
+ profile: requestedProfile
224980
+ };
224981
+ }
224982
+ return {
224983
+ effectiveModel: resolveParentModel(parentModel, permissionMode),
224984
+ requestedModel,
224985
+ source: "parent_fallback",
224986
+ providerOverride: null,
224987
+ profile: requestedProfile,
224988
+ fallbackReason: "missing_catalog_profile"
224989
+ };
224990
+ }
224991
+ const catalogRole = agentModelRole ? agentType?.toLowerCase() === "explore" && (!normalizedRequested2 || normalizedRequested2 === "haiku") ? agentModelRole : normalizedRequested2 ? VERBOO_ALIAS_ROLES[normalizedRequested2] : agentModelRole : undefined;
224992
+ if (catalogRole) {
224993
+ const catalogModel = getVerbooAgentModelForRole(catalogRole);
224994
+ if (catalogModel) {
224995
+ return {
224996
+ effectiveModel: catalogModel,
224997
+ requestedModel,
224998
+ source: "catalog_role",
224999
+ providerOverride: null,
225000
+ catalogRole
225001
+ };
225002
+ }
225003
+ if (catalogRole === "explore") {
225004
+ const compatibleFastModel = resolveProfileModel("fast", availableModels);
225005
+ if (compatibleFastModel) {
225006
+ return {
225007
+ effectiveModel: compatibleFastModel,
225008
+ requestedModel,
225009
+ source: "catalog_profile",
225010
+ providerOverride: null,
225011
+ catalogRole,
225012
+ profile: "fast"
225013
+ };
225014
+ }
225015
+ }
225016
+ return {
225017
+ effectiveModel: resolveParentModel(parentModel, permissionMode),
225018
+ requestedModel,
225019
+ source: "parent_fallback",
225020
+ providerOverride: null,
225021
+ catalogRole,
225022
+ fallbackReason: "missing_catalog_role"
225023
+ };
225024
+ }
225025
+ if (normalizedRequested2 && normalizedRequested2 !== "inherit" && VERBOO_ALIAS_ROLES[normalizedRequested2] === undefined) {
225026
+ const catalogModel = findAvailableAgentModel(requestedModel, availableModels);
225027
+ if (catalogModel) {
225028
+ return {
225029
+ effectiveModel: catalogModel.id,
225030
+ requestedModel,
225031
+ source: "catalog_model",
225032
+ providerOverride: null
225033
+ };
225034
+ }
225035
+ if (availableModels.length > 0) {
225036
+ return {
225037
+ effectiveModel: resolveParentModel(parentModel, permissionMode),
225038
+ requestedModel,
225039
+ source: "parent_fallback",
225040
+ providerOverride: null,
225041
+ fallbackReason: "missing_catalog_model"
225042
+ };
225043
+ }
225044
+ }
225045
+ }
225046
+ const effectiveModel = getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMode);
225047
+ const normalizedRequested = requestedModel?.trim().toLowerCase();
225048
+ const unsupportedProviderAlias = normalizedRequested !== undefined && VERBOO_ALIAS_ROLES[normalizedRequested] !== undefined && !checkIsClaudeNativeProvider() && effectiveModel === resolveParentModel(parentModel, permissionMode);
224715
225049
  return {
224716
- model: modelName,
224717
- baseURL: modelConfig.base_url,
224718
- apiKey: modelConfig.api_key
225050
+ effectiveModel,
225051
+ requestedModel,
225052
+ source: unsupportedProviderAlias ? "parent_fallback" : requestedSource,
225053
+ providerOverride: null,
225054
+ ...unsupportedProviderAlias && {
225055
+ fallbackReason: "unsupported_provider_alias"
225056
+ }
224719
225057
  };
224720
225058
  }
225059
+ var VERBOO_ALIAS_ROLES;
225060
+ var init_agentRouting = __esm(() => {
225061
+ init_oauth();
225062
+ init_agent();
225063
+ init_model();
225064
+ init_verbooModels();
225065
+ init_agentModelProfiles();
225066
+ VERBOO_ALIAS_ROLES = {
225067
+ haiku: "fast",
225068
+ sonnet: "balanced",
225069
+ opus: "powerful"
225070
+ };
225071
+ });
225072
+
225073
+ // src/query/agentExecutionBudget.ts
225074
+ function createAgentExecutionBudgetState(config2, startedAt = Date.now()) {
225075
+ return {
225076
+ config: config2,
225077
+ startedAt,
225078
+ apiCalls: 0,
225079
+ toolCalls: 0,
225080
+ admittedToolUseIds: new Set,
225081
+ decisions: new Map,
225082
+ softDeadlineReached: false,
225083
+ hardDeadlineReached: false,
225084
+ finalizing: false
225085
+ };
225086
+ }
225087
+ function markAgentBudgetCompletion(state, reason) {
225088
+ if (reason === "timeout" || state.completionReason === undefined) {
225089
+ state.completionReason = reason;
225090
+ }
225091
+ }
225092
+ function refreshAgentBudgetDeadline(state, now2 = Date.now()) {
225093
+ const elapsed = now2 - state.startedAt;
225094
+ if (elapsed >= state.config.softTimeoutMs) {
225095
+ state.softDeadlineReached = true;
225096
+ markAgentBudgetCompletion(state, "timeout");
225097
+ }
225098
+ if (elapsed >= state.config.hardTimeoutMs) {
225099
+ state.hardDeadlineReached = true;
225100
+ markAgentBudgetCompletion(state, "timeout");
225101
+ }
225102
+ }
225103
+ function startAgentBudgetTimers(state, abortController) {
225104
+ refreshAgentBudgetDeadline(state);
225105
+ const elapsed = Date.now() - state.startedAt;
225106
+ const softTimer = state.softDeadlineReached ? undefined : setTimeout(() => {
225107
+ state.softDeadlineReached = true;
225108
+ markAgentBudgetCompletion(state, "timeout");
225109
+ }, Math.max(0, state.config.softTimeoutMs - elapsed));
225110
+ const hardTimer = state.hardDeadlineReached ? undefined : setTimeout(() => {
225111
+ state.hardDeadlineReached = true;
225112
+ markAgentBudgetCompletion(state, "timeout");
225113
+ abortController.abort(AGENT_BUDGET_TIMEOUT_REASON);
225114
+ }, Math.max(0, state.config.hardTimeoutMs - elapsed));
225115
+ if (state.hardDeadlineReached && !abortController.signal.aborted) {
225116
+ abortController.abort(AGENT_BUDGET_TIMEOUT_REASON);
225117
+ }
225118
+ return () => {
225119
+ if (softTimer)
225120
+ clearTimeout(softTimer);
225121
+ if (hardTimer)
225122
+ clearTimeout(hardTimer);
225123
+ };
225124
+ }
225125
+ function isAgentBudgetTimeout(signal) {
225126
+ return signal.aborted && signal.reason === AGENT_BUDGET_TIMEOUT_REASON;
225127
+ }
225128
+ function createBudgetedCanUseTool(canUseTool, state) {
225129
+ return async (tool, input, toolUseContext, assistantMessage2, toolUseID, forceDecision) => {
225130
+ const previous = state.decisions.get(toolUseID);
225131
+ if (previous)
225132
+ return previous;
225133
+ refreshAgentBudgetDeadline(state);
225134
+ const decision = (async () => {
225135
+ if (state.softDeadlineReached || state.hardDeadlineReached) {
225136
+ markAgentBudgetCompletion(state, "timeout");
225137
+ return {
225138
+ behavior: "deny",
225139
+ message: "Explore time budget reached. This tool call was not executed; summarize the findings collected so far.",
225140
+ decisionReason: {
225141
+ type: "asyncAgent",
225142
+ reason: "execution_time_budget"
225143
+ },
225144
+ toolUseID
225145
+ };
225146
+ }
225147
+ if (state.toolCalls >= state.config.maxToolCalls) {
225148
+ markAgentBudgetCompletion(state, "max_tool_calls");
225149
+ return {
225150
+ behavior: "deny",
225151
+ message: "Explore tool budget reached. This tool call was not executed; summarize the findings collected so far.",
225152
+ decisionReason: {
225153
+ type: "asyncAgent",
225154
+ reason: "execution_tool_budget"
225155
+ },
225156
+ toolUseID
225157
+ };
225158
+ }
225159
+ state.toolCalls++;
225160
+ state.admittedToolUseIds.add(toolUseID);
225161
+ return canUseTool(tool, input, toolUseContext, assistantMessage2, toolUseID, forceDecision);
225162
+ })();
225163
+ state.decisions.set(toolUseID, decision);
225164
+ return decision;
225165
+ };
225166
+ }
225167
+ function getAgentBudgetUsage(state) {
225168
+ return {
225169
+ apiCalls: state.apiCalls,
225170
+ toolCalls: state.toolCalls,
225171
+ elapsedMs: Date.now() - state.startedAt,
225172
+ maxToolCalls: state.config.maxToolCalls,
225173
+ hardTimeoutMs: state.config.hardTimeoutMs
225174
+ };
225175
+ }
225176
+ function shouldFinalizeAgentBudget(state, maxTurns) {
225177
+ if (state.finalizing)
225178
+ return false;
225179
+ const shouldReserveFinalTurn = state.config.reserveFinalTurn && maxTurns !== undefined && state.apiCalls >= maxTurns - 1;
225180
+ return state.completionReason === "max_tool_calls" || state.softDeadlineReached || shouldReserveFinalTurn;
225181
+ }
225182
+ var AGENT_BUDGET_TIMEOUT_REASON = "agent_execution_budget_timeout";
224721
225183
 
224722
225184
  // src/utils/uuid.ts
224723
225185
  import { randomBytes as randomBytes5 } from "crypto";
@@ -225949,7 +226411,8 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225949
226411
  isBuiltInAgent: isBuiltInAgent2,
225950
226412
  startTime: startTime2,
225951
226413
  agentType,
225952
- isAsync: isAsync2
226414
+ isAsync: isAsync2,
226415
+ executionBudgetState
225953
226416
  } = metadata;
225954
226417
  const lastAssistantMessage = getLastAssistantMessage(agentMessages);
225955
226418
  if (lastAssistantMessage === undefined) {
@@ -225968,8 +226431,21 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225968
226431
  }
225969
226432
  }
225970
226433
  }
226434
+ if (executionBudgetState?.completionReason && lastAssistantMessage.isVirtual) {
226435
+ for (let i3 = agentMessages.length - 2;i3 >= 0; i3--) {
226436
+ const message = agentMessages[i3];
226437
+ if (message.type !== "assistant" || message.isVirtual)
226438
+ continue;
226439
+ const previousText = message.message.content.filter((_) => _.type === "text");
226440
+ if (previousText.length > 0) {
226441
+ content = [...previousText, ...content];
226442
+ break;
226443
+ }
226444
+ }
226445
+ }
225971
226446
  const totalTokens = getTokenCountFromUsage(lastAssistantMessage.message.usage);
225972
226447
  const totalToolUseCount = countToolUses(agentMessages);
226448
+ const completionReason = executionBudgetState?.completionReason ?? "completed";
225973
226449
  logEvent("tengu_agent_tool_completed", {
225974
226450
  agent_type: agentType,
225975
226451
  model: resolvedAgentModel,
@@ -225980,7 +226456,13 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225980
226456
  duration_ms: Date.now() - startTime2,
225981
226457
  total_tokens: totalTokens,
225982
226458
  is_built_in_agent: isBuiltInAgent2,
225983
- is_async: isAsync2
226459
+ is_async: isAsync2,
226460
+ completion_reason: completionReason,
226461
+ ...executionBudgetState && {
226462
+ budget_api_calls: executionBudgetState.apiCalls,
226463
+ budget_tool_calls: executionBudgetState.toolCalls,
226464
+ budget_elapsed_ms: Date.now() - executionBudgetState.startedAt
226465
+ }
225984
226466
  });
225985
226467
  const lastRequestId = lastAssistantMessage.requestId;
225986
226468
  if (lastRequestId) {
@@ -225996,7 +226478,11 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225996
226478
  totalDurationMs: Date.now() - startTime2,
225997
226479
  totalTokens,
225998
226480
  totalToolUseCount,
225999
- usage: lastAssistantMessage.message.usage
226481
+ usage: lastAssistantMessage.message.usage,
226482
+ ...executionBudgetState && {
226483
+ completionReason,
226484
+ budgetUsage: getAgentBudgetUsage(executionBudgetState)
226485
+ }
226000
226486
  };
226001
226487
  }
226002
226488
  function getLastToolUseName(message) {
@@ -226241,7 +226727,15 @@ var init_agentToolUtils = __esm(() => {
226241
226727
  ephemeral_1h_input_tokens: exports_external.number(),
226242
226728
  ephemeral_5m_input_tokens: exports_external.number()
226243
226729
  }).nullable()
226244
- })
226730
+ }),
226731
+ completionReason: exports_external.enum(["completed", "max_turns", "max_tool_calls", "timeout"]).optional(),
226732
+ budgetUsage: exports_external.object({
226733
+ apiCalls: exports_external.number(),
226734
+ toolCalls: exports_external.number(),
226735
+ elapsedMs: exports_external.number(),
226736
+ maxToolCalls: exports_external.number(),
226737
+ hardTimeoutMs: exports_external.number()
226738
+ }).optional()
226245
226739
  }));
226246
226740
  });
226247
226741
 
@@ -311019,14 +311513,41 @@ async function* runAgent({
311019
311513
  description,
311020
311514
  transcriptSubdir,
311021
311515
  onQueryProgress,
311022
- agentName
311516
+ agentName,
311517
+ modelResolution,
311518
+ executionBudgetState: providedExecutionBudgetState
311023
311519
  }) {
311024
311520
  const appState = toolUseContext.getAppState();
311025
311521
  const permissionMode = appState.toolPermissionContext.mode;
311026
311522
  const rootSetAppState = toolUseContext.setAppStateForTasks ?? toolUseContext.setAppState;
311027
- const resolvedAgentModel = getAgentModel(agentDefinition.model, toolUseContext.options.mainLoopModel, model2, permissionMode);
311028
- const providerOverride = resolveAgentProvider(agentName, agentDefinition.agentType, getInitialSettings());
311029
- const effectiveModel = providerOverride ? providerOverride.model : resolvedAgentModel;
311523
+ const resolvedModel = modelResolution ?? resolveAgentExecutionModel({
311524
+ agentModel: agentDefinition.model,
311525
+ agentModelRole: agentDefinition.modelRole,
311526
+ parentModel: toolUseContext.options.mainLoopModel,
311527
+ toolSpecifiedModel: model2,
311528
+ permissionMode,
311529
+ agentName,
311530
+ agentType: agentDefinition.agentType,
311531
+ settings: getInitialSettings()
311532
+ });
311533
+ const resolvedAgentModel = resolvedModel.effectiveModel;
311534
+ const effectiveModel = resolvedModel.effectiveModel;
311535
+ const providerOverride = resolvedModel.providerOverride;
311536
+ logEvent("tengu_agent_model_resolved", {
311537
+ agent_type: agentDefinition.agentType,
311538
+ model: effectiveModel,
311539
+ source: resolvedModel.source,
311540
+ ...resolvedModel.catalogRole && {
311541
+ catalog_role: resolvedModel.catalogRole
311542
+ },
311543
+ ...resolvedModel.profile && {
311544
+ model_profile: resolvedModel.profile
311545
+ },
311546
+ ...resolvedModel.fallbackReason && {
311547
+ fallback_reason: resolvedModel.fallbackReason
311548
+ },
311549
+ is_async: isAsync2
311550
+ });
311030
311551
  const agentId = override?.agentId ? override.agentId : createAgentId();
311031
311552
  if (transcriptSubdir) {
311032
311553
  setAgentTranscriptSubdir(agentId, transcriptSubdir);
@@ -311091,7 +311612,9 @@ async function* runAgent({
311091
311612
  const resolvedTools = useExactTools ? availableTools : resolveAgentTools(agentDefinition, availableTools, isAsync2).resolvedTools;
311092
311613
  const additionalWorkingDirectories = Array.from(appState.toolPermissionContext.additionalWorkingDirectories.keys());
311093
311614
  const agentSystemPrompt = override?.systemPrompt ? override.systemPrompt : asSystemPrompt(await getAgentSystemPrompt(agentDefinition, toolUseContext, resolvedAgentModel, additionalWorkingDirectories, resolvedTools));
311094
- const agentAbortController = override?.abortController ? override.abortController : isAsync2 ? new AbortController : toolUseContext.abortController;
311615
+ const baseAgentAbortController = override?.abortController ? override.abortController : isAsync2 ? new AbortController : toolUseContext.abortController;
311616
+ const executionBudgetState = providedExecutionBudgetState ?? (agentDefinition.executionBudget ? createAgentExecutionBudgetState(agentDefinition.executionBudget) : undefined);
311617
+ const agentAbortController = executionBudgetState ? createChildAbortController(baseAgentAbortController) : baseAgentAbortController;
311095
311618
  const additionalContexts = [];
311096
311619
  for await (const hookResult of executeSubagentStartHooks(agentId, agentDefinition.agentType, agentAbortController.signal)) {
311097
311620
  if (hookResult.additionalContexts && hookResult.additionalContexts.length > 0) {
@@ -311176,6 +311699,7 @@ async function* runAgent({
311176
311699
  shareSetAppState: !isAsync2,
311177
311700
  shareSetResponseLength: true,
311178
311701
  criticalSystemReminder_EXPERIMENTAL: agentDefinition.criticalSystemReminder_EXPERIMENTAL,
311702
+ requireCanUseTool: executionBudgetState !== undefined,
311179
311703
  contentReplacementState
311180
311704
  });
311181
311705
  if (preserveToolUseResults) {
@@ -311197,7 +311721,13 @@ async function* runAgent({
311197
311721
  ...description && { description }
311198
311722
  }).catch((_err) => logForDebugging(`Failed to write agent metadata: ${_err}`));
311199
311723
  let lastRecordedUuid = initialMessages.at(-1)?.uuid ?? null;
311724
+ const stopBudgetTimers = executionBudgetState ? startAgentBudgetTimers(executionBudgetState, agentAbortController) : undefined;
311200
311725
  try {
311726
+ if (resolvedModel.fallbackReason) {
311727
+ const unavailableRoute = resolvedModel.profile ? `${resolvedModel.profile} profile` : resolvedModel.catalogRole ? `${resolvedModel.catalogRole} role` : `requested model (${resolvedModel.requestedModel ?? "unknown"})`;
311728
+ const warning = resolvedModel.fallbackReason === "unsupported_provider_alias" ? `The Claude model alias (${resolvedModel.requestedModel ?? "unknown"}) is unavailable on the active provider. Using the parent model (${effectiveModel}).` : `No eligible model was advertised for the ${unavailableRoute}. Using the parent model (${effectiveModel})${executionBudgetState ? " with the agent execution limits enabled" : ""}.`;
311729
+ yield createSystemMessage(warning, "warning");
311730
+ }
311201
311731
  for await (const message of query({
311202
311732
  messages: initialMessages,
311203
311733
  systemPrompt: agentSystemPrompt,
@@ -311206,7 +311736,8 @@ async function* runAgent({
311206
311736
  canUseTool,
311207
311737
  toolUseContext: agentToolUseContext,
311208
311738
  querySource,
311209
- maxTurns: maxTurns ?? agentDefinition.maxTurns
311739
+ maxTurns: maxTurns ?? agentDefinition.maxTurns,
311740
+ executionBudgetState
311210
311741
  })) {
311211
311742
  onQueryProgress?.();
311212
311743
  if (message.type === "stream_event" && message.event.type === "message_start" && message.ttftMs != null) {
@@ -311238,13 +311769,14 @@ async function* runAgent({
311238
311769
  yield message;
311239
311770
  }
311240
311771
  }
311241
- if (agentAbortController.signal.aborted) {
311772
+ if (agentAbortController.signal.aborted && !isAgentBudgetTimeout(agentAbortController.signal)) {
311242
311773
  throw new AbortError;
311243
311774
  }
311244
311775
  if (isBuiltInAgent(agentDefinition) && agentDefinition.callback) {
311245
311776
  agentDefinition.callback();
311246
311777
  }
311247
311778
  } finally {
311779
+ stopBudgetTimers?.();
311248
311780
  await mcpCleanup();
311249
311781
  if (agentDefinition.hooks) {
311250
311782
  clearSessionHooks(rootSetAppState, agentId);
@@ -311345,8 +311877,9 @@ var init_runAgent = __esm(() => {
311345
311877
  init_sessionHooks();
311346
311878
  init_hooks5();
311347
311879
  init_messages3();
311348
- init_agent();
311880
+ init_agentRouting();
311349
311881
  init_settings2();
311882
+ init_abortController();
311350
311883
  init_sessionStorage();
311351
311884
  init_pluginOnlyPolicy();
311352
311885
  init_uuid();
@@ -375788,7 +376321,16 @@ async function resumeAgentBackground({
375788
376321
  throw new Error("Cannot resume fork agent: unable to reconstruct parent system prompt");
375789
376322
  }
375790
376323
  }
375791
- const resolvedAgentModel = getAgentModel(selectedAgent.model, toolUseContext.options.mainLoopModel, undefined, permissionMode);
376324
+ const modelResolution = resolveAgentExecutionModel({
376325
+ agentModel: selectedAgent.model,
376326
+ agentModelRole: selectedAgent.modelRole,
376327
+ parentModel: toolUseContext.options.mainLoopModel,
376328
+ permissionMode,
376329
+ agentType: selectedAgent.agentType,
376330
+ settings: getInitialSettings()
376331
+ });
376332
+ const resolvedAgentModel = modelResolution.effectiveModel;
376333
+ const executionBudgetState = selectedAgent.executionBudget ? createAgentExecutionBudgetState(selectedAgent.executionBudget, startTime2) : undefined;
375792
376334
  const workerPermissionContext = {
375793
376335
  ...appState.toolPermissionContext,
375794
376336
  mode: selectedAgent.permissionMode ?? "acceptEdits"
@@ -375811,13 +376353,16 @@ async function resumeAgentBackground({
375811
376353
  ...isResumedFork && { useExactTools: true },
375812
376354
  worktreePath: resumedWorktreePath,
375813
376355
  description: meta?.description,
375814
- contentReplacementState: resumedReplacementState
376356
+ contentReplacementState: resumedReplacementState,
376357
+ modelResolution,
376358
+ executionBudgetState
375815
376359
  };
375816
376360
  const agentBackgroundTask = registerAsyncAgent({
375817
376361
  agentId,
375818
376362
  description: uiDescription,
375819
376363
  prompt,
375820
376364
  selectedAgent,
376365
+ model: resolvedAgentModel,
375821
376366
  setAppState: rootSetAppState,
375822
376367
  toolUseId: toolUseContext.toolUseId
375823
376368
  });
@@ -375827,7 +376372,8 @@ async function resumeAgentBackground({
375827
376372
  isBuiltInAgent: isBuiltInAgent(selectedAgent),
375828
376373
  startTime: startTime2,
375829
376374
  agentType: selectedAgent.agentType,
375830
- isAsync: true
376375
+ isAsync: true,
376376
+ executionBudgetState
375831
376377
  };
375832
376378
  const asyncAgentContext = {
375833
376379
  agentId,
@@ -375877,7 +376423,8 @@ var init_resumeAgent = __esm(() => {
375877
376423
  init_cwd2();
375878
376424
  init_debug();
375879
376425
  init_messages3();
375880
- init_agent();
376426
+ init_agentRouting();
376427
+ init_settings2();
375881
376428
  init_promptCategory();
375882
376429
  init_sessionStorage();
375883
376430
  init_systemPrompt();
@@ -378115,7 +378662,8 @@ var init_AgentTool = __esm(() => {
378115
378662
  init_envUtils();
378116
378663
  init_errors();
378117
378664
  init_messages3();
378118
- init_agent();
378665
+ init_agentRouting();
378666
+ init_settings2();
378119
378667
  init_PermissionMode();
378120
378668
  init_permissions2();
378121
378669
  init_sdkEventQueue();
@@ -378338,10 +378886,27 @@ var init_AgentTool = __esm(() => {
378338
378886
  if (selectedAgent.color) {
378339
378887
  setAgentColor(selectedAgent.agentType, selectedAgent.color);
378340
378888
  }
378341
- const resolvedAgentModel = getAgentModel(selectedAgent.model, toolUseContext.options.mainLoopModel, isForkPath ? undefined : model2, permissionMode);
378889
+ const modelResolution = resolveAgentExecutionModel({
378890
+ agentModel: selectedAgent.model,
378891
+ agentModelRole: selectedAgent.modelRole,
378892
+ parentModel: toolUseContext.options.mainLoopModel,
378893
+ toolSpecifiedModel: isForkPath ? undefined : model2,
378894
+ permissionMode,
378895
+ agentName: name,
378896
+ agentType: selectedAgent.agentType,
378897
+ settings: getInitialSettings()
378898
+ });
378899
+ const resolvedAgentModel = modelResolution.effectiveModel;
378342
378900
  logEvent("tengu_agent_tool_selected", {
378343
378901
  agent_type: selectedAgent.agentType,
378344
378902
  model: resolvedAgentModel,
378903
+ model_source: modelResolution.source,
378904
+ ...modelResolution.profile && {
378905
+ model_profile: modelResolution.profile
378906
+ },
378907
+ ...modelResolution.fallbackReason && {
378908
+ fallback_reason: modelResolution.fallbackReason
378909
+ },
378345
378910
  source: selectedAgent.source,
378346
378911
  color: selectedAgent.color,
378347
378912
  is_built_in_agent: isBuiltInAgent(selectedAgent),
@@ -378391,13 +378956,15 @@ var init_AgentTool = __esm(() => {
378391
378956
  content: prompt
378392
378957
  })];
378393
378958
  }
378959
+ const executionBudgetState = selectedAgent.executionBudget ? createAgentExecutionBudgetState(selectedAgent.executionBudget, startTime2) : undefined;
378394
378960
  const metadata = {
378395
378961
  prompt,
378396
378962
  resolvedAgentModel,
378397
378963
  isBuiltInAgent: isBuiltInAgent(selectedAgent),
378398
378964
  startTime: startTime2,
378399
378965
  agentType: selectedAgent.agentType,
378400
- isAsync: (run_in_background === true || selectedAgent.background === true) && !isBackgroundTasksDisabled2
378966
+ isAsync: (run_in_background === true || selectedAgent.background === true) && !isBackgroundTasksDisabled2,
378967
+ executionBudgetState
378401
378968
  };
378402
378969
  const isCoordinator = isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE);
378403
378970
  const forceAsync = isForkSubagentEnabled();
@@ -378451,7 +379018,9 @@ var init_AgentTool = __esm(() => {
378451
379018
  },
378452
379019
  worktreePath: worktreeInfo?.worktreePath,
378453
379020
  description,
378454
- agentName: name
379021
+ agentName: name,
379022
+ modelResolution,
379023
+ executionBudgetState
378455
379024
  };
378456
379025
  const cwdOverridePath = cwd2 ?? worktreeInfo?.worktreePath;
378457
379026
  const wrapWithCwd = (fn) => cwdOverridePath ? runWithCwdOverride(cwdOverridePath, fn) : fn();
@@ -378496,6 +379065,7 @@ var init_AgentTool = __esm(() => {
378496
379065
  description,
378497
379066
  prompt,
378498
379067
  selectedAgent,
379068
+ model: resolvedAgentModel,
378499
379069
  setAppState: rootSetAppState,
378500
379070
  toolUseId: toolUseContext.toolUseId
378501
379071
  });
@@ -378593,6 +379163,7 @@ var init_AgentTool = __esm(() => {
378593
379163
  description,
378594
379164
  prompt,
378595
379165
  selectedAgent,
379166
+ model: resolvedAgentModel,
378596
379167
  setAppState: rootSetAppState,
378597
379168
  toolUseId: toolUseContext.toolUseId,
378598
379169
  autoBackgroundMs: getAutoBackgroundMs() || undefined
@@ -380119,6 +380690,7 @@ function registerAsyncAgent({
380119
380690
  description,
380120
380691
  prompt,
380121
380692
  selectedAgent,
380693
+ model: model2,
380122
380694
  setAppState,
380123
380695
  parentAbortController,
380124
380696
  toolUseId
@@ -380133,6 +380705,7 @@ function registerAsyncAgent({
380133
380705
  prompt,
380134
380706
  selectedAgent,
380135
380707
  agentType: selectedAgent.agentType ?? "general-purpose",
380708
+ model: model2,
380136
380709
  abortController,
380137
380710
  retrieved: false,
380138
380711
  lastReportedToolCount: 0,
@@ -380154,6 +380727,7 @@ function registerAgentForeground({
380154
380727
  description,
380155
380728
  prompt,
380156
380729
  selectedAgent,
380730
+ model: model2,
380157
380731
  setAppState,
380158
380732
  autoBackgroundMs,
380159
380733
  toolUseId
@@ -380171,6 +380745,7 @@ function registerAgentForeground({
380171
380745
  prompt,
380172
380746
  selectedAgent,
380173
380747
  agentType: selectedAgent.agentType ?? "general-purpose",
380748
+ model: model2,
380174
380749
  abortController,
380175
380750
  unregisterCleanup,
380176
380751
  retrieved: false,
@@ -388514,10 +389089,18 @@ var init_tokenBudget2 = __esm(() => {
388514
389089
  });
388515
389090
 
388516
389091
  // src/query.ts
388517
- function* yieldMissingToolResultBlocks(assistantMessages, errorMessage2) {
389092
+ function* yieldMissingToolResultBlocks(assistantMessages, errorMessage2, existingToolResults = []) {
389093
+ const completedToolUseIds = new Set(existingToolResults.flatMap((message) => {
389094
+ if (message.type !== "user" || !Array.isArray(message.message.content)) {
389095
+ return [];
389096
+ }
389097
+ return message.message.content.flatMap((content) => content.type === "tool_result" ? [content.tool_use_id] : []);
389098
+ }));
388518
389099
  for (const assistantMessage2 of assistantMessages) {
388519
389100
  const toolUseBlocks = assistantMessage2.message.content.filter((content) => content.type === "tool_use");
388520
389101
  for (const toolUse of toolUseBlocks) {
389102
+ if (completedToolUseIds.has(toolUse.id))
389103
+ continue;
388521
389104
  yield createUserMessage({
388522
389105
  content: [
388523
389106
  {
@@ -388567,13 +389150,16 @@ async function* queryLoop(params, consumedCommandUuids) {
388567
389150
  systemPrompt,
388568
389151
  userContext,
388569
389152
  systemContext,
388570
- canUseTool,
389153
+ canUseTool: baseCanUseTool,
388571
389154
  fallbackModel,
388572
389155
  querySource,
388573
389156
  maxTurns,
388574
389157
  skipCacheWrite
388575
389158
  } = params;
388576
389159
  const deps = params.deps ?? productionDeps();
389160
+ const executionBudgetState = params.executionBudgetState;
389161
+ const canUseTool = executionBudgetState ? createBudgetedCanUseTool(baseCanUseTool, executionBudgetState) : baseCanUseTool;
389162
+ const budgetTimeoutMessage = executionBudgetState ? `Explore reached its ${Math.round(executionBudgetState.config.hardTimeoutMs / 1000)}-second time budget. Returning the partial findings collected before the deadline.` : "Explore reached its time budget. Returning partial findings.";
388577
389163
  let state2 = {
388578
389164
  messages: params.messages,
388579
389165
  toolUseContext: params.toolUseContext,
@@ -388592,6 +389178,46 @@ async function* queryLoop(params, consumedCommandUuids) {
388592
389178
  const config2 = buildQueryConfig();
388593
389179
  const pendingMemoryPrefetch = __using(__stack, startRelevantMemoryPrefetch(state2.messages, state2.toolUseContext), 0);
388594
389180
  while (true) {
389181
+ if (executionBudgetState) {
389182
+ refreshAgentBudgetDeadline(executionBudgetState);
389183
+ if (maxTurns && executionBudgetState.apiCalls >= maxTurns) {
389184
+ markAgentBudgetCompletion(executionBudgetState, "max_turns");
389185
+ yield createAttachmentMessage({
389186
+ type: "max_turns_reached",
389187
+ maxTurns,
389188
+ turnCount: executionBudgetState.apiCalls
389189
+ });
389190
+ return {
389191
+ reason: "max_turns",
389192
+ turnCount: executionBudgetState.apiCalls
389193
+ };
389194
+ }
389195
+ if (shouldFinalizeAgentBudget(executionBudgetState, maxTurns)) {
389196
+ if (maxTurns && executionBudgetState.apiCalls >= maxTurns - 1 && executionBudgetState.completionReason === undefined) {
389197
+ markAgentBudgetCompletion(executionBudgetState, "max_turns");
389198
+ }
389199
+ executionBudgetState.finalizing = true;
389200
+ state2 = {
389201
+ ...state2,
389202
+ messages: [
389203
+ ...state2.messages,
389204
+ createUserMessage({
389205
+ content: "The Explore time budget is nearly exhausted. Do not call tools. Summarize the useful findings and explicitly identify any uncertainty.",
389206
+ isMeta: true
389207
+ })
389208
+ ],
389209
+ toolUseContext: {
389210
+ ...state2.toolUseContext,
389211
+ options: {
389212
+ ...state2.toolUseContext.options,
389213
+ tools: [],
389214
+ refreshTools: undefined
389215
+ }
389216
+ },
389217
+ pendingToolUseSummary: undefined
389218
+ };
389219
+ }
389220
+ }
388595
389221
  let { toolUseContext } = state2;
388596
389222
  const {
388597
389223
  messages,
@@ -388745,6 +389371,21 @@ async function* queryLoop(params, consumedCommandUuids) {
388745
389371
  while (attemptWithFallback) {
388746
389372
  attemptWithFallback = false;
388747
389373
  try {
389374
+ if (executionBudgetState) {
389375
+ if (maxTurns && executionBudgetState.apiCalls >= maxTurns) {
389376
+ markAgentBudgetCompletion(executionBudgetState, "max_turns");
389377
+ yield createAttachmentMessage({
389378
+ type: "max_turns_reached",
389379
+ maxTurns,
389380
+ turnCount: executionBudgetState.apiCalls
389381
+ });
389382
+ return {
389383
+ reason: "max_turns",
389384
+ turnCount: executionBudgetState.apiCalls
389385
+ };
389386
+ }
389387
+ executionBudgetState.apiCalls++;
389388
+ }
388748
389389
  let streamingFallbackOccured = false;
388749
389390
  queryCheckpoint("query_api_streaming_start");
388750
389391
  for await (const message of deps.callModel({
@@ -388911,6 +389552,21 @@ async function* queryLoop(params, consumedCommandUuids) {
388911
389552
  }
388912
389553
  }
388913
389554
  } catch (error42) {
389555
+ if (isAgentBudgetTimeout(toolUseContext.abortController.signal)) {
389556
+ if (streamingToolExecutor) {
389557
+ for await (const update of streamingToolExecutor.getRemainingResults()) {
389558
+ if (update.message)
389559
+ yield update.message;
389560
+ }
389561
+ } else {
389562
+ yield* yieldMissingToolResultBlocks(assistantMessages, "Explore time budget reached; tool execution was cancelled.", toolResults);
389563
+ }
389564
+ yield createAssistantMessage({
389565
+ content: budgetTimeoutMessage,
389566
+ isVirtual: true
389567
+ });
389568
+ return { reason: "budget_timeout" };
389569
+ }
388914
389570
  logError2(error42);
388915
389571
  const errorMessage2 = error42 instanceof Error ? error42.message : String(error42);
388916
389572
  logEvent("tengu_query_error", {
@@ -388945,6 +389601,13 @@ async function* queryLoop(params, consumedCommandUuids) {
388945
389601
  } else {
388946
389602
  yield* yieldMissingToolResultBlocks(assistantMessages, "Interrupted by user");
388947
389603
  }
389604
+ if (isAgentBudgetTimeout(toolUseContext.abortController.signal)) {
389605
+ yield createAssistantMessage({
389606
+ content: budgetTimeoutMessage,
389607
+ isVirtual: true
389608
+ });
389609
+ return { reason: "budget_timeout" };
389610
+ }
388948
389611
  if (false) {}
388949
389612
  if (toolUseContext.abortController.signal.reason !== "interrupt") {
388950
389613
  yield createUserInterruptionMessage({
@@ -389282,6 +389945,13 @@ async function* queryLoop(params, consumedCommandUuids) {
389282
389945
  }).catch(() => null);
389283
389946
  }
389284
389947
  if (toolUseContext.abortController.signal.aborted) {
389948
+ if (isAgentBudgetTimeout(toolUseContext.abortController.signal)) {
389949
+ yield createAssistantMessage({
389950
+ content: budgetTimeoutMessage,
389951
+ isVirtual: true
389952
+ });
389953
+ return { reason: "budget_timeout" };
389954
+ }
389285
389955
  if (false) {}
389286
389956
  if (toolUseContext.abortController.signal.reason !== "interrupt") {
389287
389957
  yield createUserInterruptionMessage({
@@ -389383,7 +390053,50 @@ async function* queryLoop(params, consumedCommandUuids) {
389383
390053
  };
389384
390054
  const nextTurnCount = turnCount + 1;
389385
390055
  if (false) {}
390056
+ if (executionBudgetState) {
390057
+ refreshAgentBudgetDeadline(executionBudgetState);
390058
+ const shouldReserveFinalTurn = executionBudgetState.config.reserveFinalTurn && maxTurns !== undefined && executionBudgetState.apiCalls >= maxTurns - 1;
390059
+ const shouldFinalize = shouldFinalizeAgentBudget(executionBudgetState, maxTurns);
390060
+ if (shouldFinalize) {
390061
+ if (shouldReserveFinalTurn && executionBudgetState.completionReason === undefined) {
390062
+ markAgentBudgetCompletion(executionBudgetState, "max_turns");
390063
+ }
390064
+ executionBudgetState.finalizing = true;
390065
+ state2 = {
390066
+ messages: [
390067
+ ...messagesForQuery,
390068
+ ...assistantMessages,
390069
+ ...toolResults,
390070
+ createUserMessage({
390071
+ content: "The Explore execution budget has been reached. Do not call tools. Summarize the useful findings collected so far and explicitly identify any uncertainty.",
390072
+ isMeta: true
390073
+ })
390074
+ ],
390075
+ toolUseContext: {
390076
+ ...toolUseContextWithQueryTracking,
390077
+ options: {
390078
+ ...toolUseContextWithQueryTracking.options,
390079
+ tools: [],
390080
+ refreshTools: undefined
390081
+ }
390082
+ },
390083
+ autoCompactTracking: tracking,
390084
+ turnCount: nextTurnCount,
390085
+ maxOutputTokensRecoveryCount: 0,
390086
+ hasAttemptedReactiveCompact: false,
390087
+ continuationNudgeCount: 0,
390088
+ pendingToolUseSummary: undefined,
390089
+ maxOutputTokensOverride: undefined,
390090
+ stopHookActive,
390091
+ transition: { reason: "next_turn" }
390092
+ };
390093
+ continue;
390094
+ }
390095
+ }
389386
390096
  if (maxTurns && nextTurnCount > maxTurns) {
390097
+ if (executionBudgetState) {
390098
+ markAgentBudgetCompletion(executionBudgetState, "max_turns");
390099
+ }
389387
390100
  yield createAttachmentMessage({
389388
390101
  type: "max_turns_reached",
389389
390102
  maxTurns,
@@ -389522,7 +390235,7 @@ function getAnthropicEnvMetadata() {
389522
390235
  function getBuildAgeMinutes() {
389523
390236
  if (false)
389524
390237
  ;
389525
- const buildTime = new Date("2026-08-08T15:44:34.132Z").getTime();
390238
+ const buildTime = new Date("2026-08-08T18:22:02.046Z").getTime();
389526
390239
  if (isNaN(buildTime))
389527
390240
  return;
389528
390241
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -431210,7 +431923,7 @@ function buildPrimarySection() {
431210
431923
  });
431211
431924
  return [{
431212
431925
  label: "Version",
431213
- value: "0.15.5"
431926
+ value: "0.15.7"
431214
431927
  }, {
431215
431928
  label: "Session name",
431216
431929
  value: nameValue
@@ -445096,7 +445809,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
445096
445809
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
445097
445810
  }
445098
445811
  function getPublicBuildVersion() {
445099
- return "0.15.5";
445812
+ return "0.15.7";
445100
445813
  }
445101
445814
  var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
445102
445815
  var init_version = __esm(() => {
@@ -477410,17 +478123,18 @@ function AsyncAgentDetailDialog(t0) {
477410
478123
  } else {
477411
478124
  t11 = $2[19];
477412
478125
  }
478126
+ const elapsedAndModel = agent2.model ? `${elapsedTime} · ${agent2.model}` : elapsedTime;
477413
478127
  let t12;
477414
- if ($2[20] !== elapsedTime || $2[21] !== t10 || $2[22] !== t11) {
478128
+ if ($2[20] !== elapsedAndModel || $2[21] !== t10 || $2[22] !== t11) {
477415
478129
  t12 = /* @__PURE__ */ jsx_runtime280.jsxs(ThemedText, {
477416
478130
  dimColor: true,
477417
478131
  children: [
477418
- elapsedTime,
478132
+ elapsedAndModel,
477419
478133
  t10,
477420
478134
  t11
477421
478135
  ]
477422
478136
  });
477423
- $2[20] = elapsedTime;
478137
+ $2[20] = elapsedAndModel;
477424
478138
  $2[21] = t10;
477425
478139
  $2[22] = t11;
477426
478140
  $2[23] = t12;
@@ -496489,7 +497203,7 @@ var init_bridge_kick = __esm(() => {
496489
497203
  var call66 = async () => {
496490
497204
  return {
496491
497205
  type: "text",
496492
- value: `${"99.0.0"} (built ${"2026-08-08T15:44:34.132Z"})`
497206
+ value: `${"99.0.0"} (built ${"2026-08-08T18:22:02.046Z"})`
496493
497207
  };
496494
497208
  }, version2, version_default;
496495
497209
  var init_version2 = __esm(() => {
@@ -520679,71 +521393,53 @@ function truncateStartupText(text2, maxLength) {
520679
521393
  return `${text2.slice(0, maxLength - 1)}…`;
520680
521394
  }
520681
521395
  function renderStartupScreen(p, version3, displayCwd, columns) {
520682
- const out = [];
521396
+ const out = [""];
520683
521397
  const bold2 = `${ESC4}1m`;
520684
521398
  const PURPLE = rgb3(...ACCENT);
520685
- const PURPLE_FILL = `${rgb3(...ACCENT)}${ESC4}48;2;${ACCENT[0]};${ACCENT[1]};${ACCENT[2]}m`;
520686
- const SOFT = rgb3(...CREAM);
521399
+ const PURPLE_FILL = `${PURPLE}${ESC4}48;2;${ACCENT[0]};${ACCENT[1]};${ACCENT[2]}m`;
520687
521400
  const DIMP = `${DIM2}${rgb3(...DIMCOL)}`;
520688
521401
  const STATUS_C = p.isLocal ? rgb3(130, 200, 140) : PURPLE;
520689
521402
  const statusLabel = p.isLocal ? "local" : "cloud";
520690
- const LOGO_TEXT_PADDING = 2;
520691
- out.push("");
521403
+ const providerAndModel = p.name === "Verboo" ? p.model : `${p.name} · ${p.model}`;
520692
521404
  if (columns < STARTUP_LOGO_MIN_COLUMNS) {
520693
- const compactTextWidth = Math.max(1, columns - 6);
520694
- const provider = truncateStartupText(`${p.name} · ${p.model}`, compactTextWidth);
520695
- const endpoint = truncateStartupText(p.baseUrl, compactTextWidth);
520696
- const cwd2 = truncateStartupText(displayCwd, compactTextWidth);
520697
- out.push(` ${PURPLE}\uD83D\uDC7B${RESET2} ${bold2}${SOFT}Verboo Code${RESET2} ${DIMP}v${version3}${RESET2}`);
520698
- out.push(` ${DIMP}Tokens ilimitados · Privacidade · Velocidade${RESET2}`);
520699
- out.push(` ${DIMP}${provider}${RESET2}`);
520700
- out.push(` ${DIMP}${endpoint}${RESET2}`);
520701
- out.push(` ${DIMP}${cwd2}${RESET2}`);
521405
+ const detailWidth = Math.max(1, columns - 4);
521406
+ const shownVersion = truncateStartupText(version3, Math.max(1, columns - 20));
521407
+ const model2 = truncateStartupText(providerAndModel, Math.max(1, detailWidth - statusLabel.length - 4));
521408
+ const cwd2 = truncateStartupText(displayCwd, detailWidth);
521409
+ out.push(` ${bold2}${PURPLE}Verboo Code${RESET2} ${DIMP}v${shownVersion}${RESET2}`);
521410
+ out.push(` ${STATUS_C}●${RESET2} ${DIMP}${model2} · ${statusLabel}${RESET2}`);
521411
+ out.push(` ${DIMP}${cwd2}${RESET2}`);
520702
521412
  } else {
520703
521413
  const maxLogoWidth = Math.max(...VERBOO_LOGO.map((line) => line.trimEnd().length));
520704
- const rightTextWidth = Math.max(1, columns - 2 - maxLogoWidth - LOGO_TEXT_PADDING);
520705
- const provider = truncateStartupText(`${p.name} · ${p.model}`, rightTextWidth);
520706
- const endpoint = truncateStartupText(p.baseUrl, rightTextWidth);
521414
+ const logoTextPadding = 2;
521415
+ const rightTextWidth = Math.max(1, columns - 2 - maxLogoWidth - logoTextPadding);
521416
+ const shownVersion = truncateStartupText(version3, Math.max(1, rightTextWidth - 16));
521417
+ const model2 = truncateStartupText(providerAndModel, Math.max(1, rightTextWidth - statusLabel.length - 5));
520707
521418
  const cwd2 = truncateStartupText(displayCwd, rightTextWidth);
520708
- const rightCol = [
520709
- ``,
520710
- `${bold2}${SOFT}Verboo Code${RESET2} ${DIMP}v${version3}${RESET2}`,
520711
- `${DIMP}Tokens ilimitados · Privacidade · Velocidade${RESET2}`,
520712
- `${DIMP}${provider}${RESET2}`,
520713
- `${DIMP}${endpoint}${RESET2}`,
521419
+ const hint = truncateStartupText("Type a request, or use /help for commands", rightTextWidth);
521420
+ const rightColumn = [
521421
+ "",
521422
+ `${bold2}${PURPLE}Verboo Code${RESET2} ${DIMP}v${shownVersion}${RESET2}`,
521423
+ `${STATUS_C}●${RESET2} ${DIMP}${model2} · ${statusLabel}${RESET2}`,
520714
521424
  `${DIMP}${cwd2}${RESET2}`,
520715
- ``
521425
+ "",
521426
+ `${DIMP}${hint}${RESET2}`,
521427
+ ""
520716
521428
  ];
520717
- const paintedLogo = [];
520718
521429
  for (let i3 = 0;i3 < VERBOO_LOGO.length; i3++) {
520719
521430
  const line = (VERBOO_LOGO[i3] ?? "").trimEnd();
520720
521431
  const mask = VERBOO_LOGO_MASK[i3] ?? "";
520721
521432
  let painted = "";
520722
521433
  for (let j = 0;j < line.length; j++) {
520723
- const ch2 = line[j] ?? "";
520724
- const isBlock = ch2 === "▀" || ch2 === "▄";
520725
- if (isBlock && mask[j] === "1") {
520726
- painted += `${PURPLE_FILL}${ch2}${RESET2}`;
520727
- } else if (isBlock) {
520728
- painted += `${PURPLE}${ch2}${RESET2}`;
520729
- } else {
520730
- painted += ch2;
520731
- }
521434
+ const character = line[j] ?? "";
521435
+ const isBlock = character === "▀" || character === "▄";
521436
+ painted += isBlock && mask[j] === "1" ? `${PURPLE_FILL}${character}${RESET2}` : isBlock ? `${PURPLE}${character}${RESET2}` : character;
520732
521437
  }
520733
- paintedLogo.push({ text: painted, visualWidth: line.length });
520734
- }
520735
- for (let i3 = 0;i3 < paintedLogo.length; i3++) {
520736
- const { text: text2, visualWidth } = paintedLogo[i3] ?? {
520737
- text: "",
520738
- visualWidth: 0
520739
- };
520740
- const gap = " ".repeat(Math.max(0, maxLogoWidth - visualWidth + LOGO_TEXT_PADDING));
520741
- out.push(` ${text2}${gap}${rightCol[i3] ?? ""}`);
521438
+ const gap = " ".repeat(Math.max(0, maxLogoWidth - line.length + logoTextPadding));
521439
+ out.push(` ${painted}${gap}${rightColumn[i3] ?? ""}`);
520742
521440
  }
520743
521441
  }
520744
521442
  out.push("");
520745
- out.push(` ${STATUS_C}●${RESET2} ${DIMP}${statusLabel}${RESET2} ${DIMP}Ready — type ${RESET2}${PURPLE}/help${RESET2}${DIMP} to begin${RESET2}`);
520746
- out.push("");
520747
521443
  return `${out.join(`
520748
521444
  `)}
520749
521445
  `;
@@ -520755,11 +521451,11 @@ function printStartupScreen(modelOverride) {
520755
521451
  const home = process.env.HOME || process.env.USERPROFILE || "";
520756
521452
  const cwd2 = process.cwd();
520757
521453
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
520758
- const version3 = "0.15.5";
520759
- const columns = process.stdout.columns ?? STARTUP_LOGO_MIN_COLUMNS;
521454
+ const version3 = "0.15.7";
521455
+ const columns = process.stdout.columns ?? STARTUP_DEFAULT_COLUMNS;
520760
521456
  process.stdout.write(renderStartupScreen(p, version3, displayCwd, columns));
520761
521457
  }
520762
- var ESC4 = "\x1B[", RESET2, DIM2, rgb3 = (r, g, b) => `${ESC4}38;2;${r};${g};${b}m`, ACCENT, CREAM, DIMCOL, VERBOO_LOGO, VERBOO_LOGO_MASK, STARTUP_LOGO_MIN_COLUMNS = 80;
521458
+ var ESC4 = "\x1B[", RESET2, DIM2, rgb3 = (r, g, b) => `${ESC4}38;2;${r};${g};${b}m`, ACCENT, DIMCOL, STARTUP_DEFAULT_COLUMNS = 80, VERBOO_LOGO, VERBOO_LOGO_MASK, STARTUP_LOGO_MIN_COLUMNS = 48;
520763
521459
  var init_StartupScreen = __esm(() => {
520764
521460
  init_oauth();
520765
521461
  init_providerConfig();
@@ -520769,25 +521465,24 @@ var init_StartupScreen = __esm(() => {
520769
521465
  RESET2 = `${ESC4}0m`;
520770
521466
  DIM2 = `${ESC4}2m`;
520771
521467
  ACCENT = [173, 52, 254];
520772
- CREAM = [220, 200, 240];
520773
521468
  DIMCOL = [120, 100, 140];
520774
521469
  VERBOO_LOGO = [
520775
- ` ▄▀▀▀▀▀▀▀▄ `,
520776
- `▄▀▀▀▀▀▀▀▀▀▀▀▄`,
520777
- `▀▀▀ ▀▀▀▀▀ ▀▀▀`,
520778
- `▀▀▀▀▀▀▀▀▀▀▀▀▀`,
520779
- `▀▀▀▀▀▄▄▄▀▀▀▀▀`,
520780
- ` ▀▀▀▀▀▀▀▀▀▀▀ `,
520781
- `▄▀▀ ▀▀▀▀▀ ▀▀▄`
521470
+ " ▄▀▀▀▀▀▀▀▄ ",
521471
+ "▄▀▀▀▀▀▀▀▀▀▀▀▄",
521472
+ "▀▀▀ ▀▀▀▀▀ ▀▀▀",
521473
+ "▀▀▀▀▀▀▀▀▀▀▀▀▀",
521474
+ "▀▀▀▀▀▄▄▄▀▀▀▀▀",
521475
+ " ▀▀▀▀▀▀▀▀▀▀▀ ",
521476
+ "▄▀▀ ▀▀▀▀▀ ▀▀▄"
520782
521477
  ];
520783
521478
  VERBOO_LOGO_MASK = [
520784
- ` 011111110 `,
520785
- `0111111111110`,
520786
- `1110111110111`,
520787
- `1111011101111`,
520788
- `1111100011111`,
520789
- ` 11111111111 `,
520790
- `110 01110 011`
521479
+ " 011111110 ",
521480
+ "0111111111110",
521481
+ "1110111110111",
521482
+ "1111011101111",
521483
+ "1111100011111",
521484
+ " 11111111111 ",
521485
+ "110 01110 011"
520791
521486
  ];
520792
521487
  });
520793
521488
 
@@ -539999,7 +540694,7 @@ var init_routerRateLimitHook = __esm(() => {
539999
540694
  function getSemverPart(version3) {
540000
540695
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
540001
540696
  }
540002
- function useUpdateNotification(updatedVersion, initialVersion = "0.15.5") {
540697
+ function useUpdateNotification(updatedVersion, initialVersion = "0.15.7") {
540003
540698
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
540004
540699
  const [pendingNotification2, setPendingNotification] = import_react227.useState(null);
540005
540700
  if (updatedVersion) {
@@ -540039,7 +540734,7 @@ function AutoUpdater({
540039
540734
  return;
540040
540735
  }
540041
540736
  if (false) {}
540042
- const currentVersion = "0.15.5";
540737
+ const currentVersion = "0.15.7";
540043
540738
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
540044
540739
  let latestVersion = await getLatestVersion(channel2);
540045
540740
  const isDisabled = isAutoUpdaterDisabled();
@@ -540392,17 +541087,17 @@ function PackageManagerAutoUpdater(t0) {
540392
541087
  const maxVersion = await getMaxVersion();
540393
541088
  if (maxVersion && latest && gt(latest, maxVersion)) {
540394
541089
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
540395
- if (gte("0.15.5", maxVersion)) {
540396
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.15.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
541090
+ if (gte("0.15.7", maxVersion)) {
541091
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.15.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
540397
541092
  setUpdateAvailable(false);
540398
541093
  return;
540399
541094
  }
540400
541095
  latest = maxVersion;
540401
541096
  }
540402
- const hasUpdate = latest && !gte("0.15.5", latest) && !shouldSkipVersion(latest);
541097
+ const hasUpdate = latest && !gte("0.15.7", latest) && !shouldSkipVersion(latest);
540403
541098
  setUpdateAvailable(!!hasUpdate);
540404
541099
  if (hasUpdate) {
540405
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.5"} -> ${latest}`);
541100
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.7"} -> ${latest}`);
540406
541101
  }
540407
541102
  };
540408
541103
  $2[0] = t1;
@@ -540436,7 +541131,7 @@ function PackageManagerAutoUpdater(t0) {
540436
541131
  wrap: "truncate",
540437
541132
  children: [
540438
541133
  "currentVersion: ",
540439
- "0.15.5"
541134
+ "0.15.7"
540440
541135
  ]
540441
541136
  });
540442
541137
  $2[3] = verbose;
@@ -551756,8 +552451,9 @@ function usePromptInputPlaceholder({
551756
552451
  return "Press up to edit queued messages";
551757
552452
  }
551758
552453
  if (submitCount < 1 && promptSuggestionEnabled && !proactiveModule4?.isProactiveActive()) {
551759
- return getExampleCommandFromCache();
552454
+ return getExampleCommandFromCache() ?? "Ask Verboo to build, fix, or explain…";
551760
552455
  }
552456
+ return "Ask Verboo to build, fix, or explain…";
551761
552457
  }, [
551762
552458
  input,
551763
552459
  queuedCommands,
@@ -553611,7 +554307,6 @@ function PromptInput({
553611
554307
  hasStash: stashedPrompt !== undefined
553612
554308
  }),
553613
554309
  /* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
553614
- marginTop: 1,
553615
554310
  marginLeft: 2,
553616
554311
  height: 1,
553617
554312
  overflow: "hidden",
@@ -553670,6 +554365,7 @@ function PromptInput({
553670
554365
  children: /* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
553671
554366
  borderStyle: "round",
553672
554367
  borderColor: getBorderColor(),
554368
+ borderText: buildPromptBorderText(mode),
553673
554369
  paddingLeft: 1,
553674
554370
  width: "100%",
553675
554371
  children: /* @__PURE__ */ jsx_runtime441.jsxs(ThemedBox_default, {
@@ -553792,6 +554488,16 @@ function getInitialPasteId(messages) {
553792
554488
  }
553793
554489
  return maxId + 1;
553794
554490
  }
554491
+ function buildPromptBorderText(mode) {
554492
+ if (mode !== "bash")
554493
+ return;
554494
+ return {
554495
+ content: " shell ",
554496
+ position: "top",
554497
+ align: "start",
554498
+ offset: 1
554499
+ };
554500
+ }
553795
554501
  var React158, import_react261, jsx_runtime441, PROMPT_FOOTER_LINES = 5, MIN_INPUT_VIEWPORT_LINES = 3, PromptInput_default;
553796
554502
  var init_PromptInput = __esm(() => {
553797
554503
  init_notifications();
@@ -556454,10 +557160,10 @@ async function autoUpdateCliInBackground() {
556454
557160
  return;
556455
557161
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
556456
557162
  const latest = await getLatestVersion(channel2);
556457
- if (!latest || gte("0.15.5", latest))
557163
+ if (!latest || gte("0.15.7", latest))
556458
557164
  return;
556459
557165
  writeToStdout(`
556460
- Nova versão disponível: ${latest} (atual: ${"0.15.5"})
557166
+ Nova versão disponível: ${latest} (atual: ${"0.15.7"})
556461
557167
  `);
556462
557168
  writeToStdout(`Atualizando automaticamente...
556463
557169
  `);
@@ -574636,874 +575342,69 @@ var init_ApproveApiKey = __esm(() => {
574636
575342
 
574637
575343
  // src/components/LogoV2/WelcomeV2.tsx
574638
575344
  function WelcomeV2() {
574639
- const $2 = import_react_compiler_runtime359.c(35);
574640
- const [theme2] = useTheme();
574641
- if (env2.terminal === "Apple_Terminal") {
574642
- let t02;
574643
- if ($2[0] !== theme2) {
574644
- t02 = /* @__PURE__ */ jsx_runtime480.jsx(AppleTerminalWelcomeV2, {
574645
- theme: theme2,
574646
- welcomeMessage: "Welcome to Verboo Code"
574647
- });
574648
- $2[0] = theme2;
574649
- $2[1] = t02;
574650
- } else {
574651
- t02 = $2[1];
574652
- }
574653
- return t02;
574654
- }
574655
- if (["light", "light-daltonized", "light-ansi"].includes(theme2)) {
574656
- let t02;
574657
- let t17;
574658
- let t22;
574659
- let t32;
574660
- let t42;
574661
- let t52;
574662
- let t62;
574663
- let t72;
574664
- let t82;
574665
- if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
574666
- t02 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574667
- children: [
574668
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574669
- color: "claude",
574670
- children: [
574671
- "Welcome to Verboo Code",
574672
- " "
574673
- ]
574674
- }),
574675
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574676
- dimColor: true,
574677
- children: [
574678
- "v",
574679
- "0.15.5",
574680
- " "
574681
- ]
574682
- })
574683
- ]
574684
- });
574685
- t17 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574686
- children: "…………………………………………………………………………………………………………………………………………………………"
574687
- });
574688
- t22 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574689
- children: " "
574690
- });
574691
- t32 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574692
- children: " "
574693
- });
574694
- t42 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574695
- children: " "
574696
- });
574697
- t52 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574698
- children: " ░░░░░░ "
574699
- });
574700
- t62 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574701
- children: " ░░░ ░░░░░░░░░░ "
574702
- });
574703
- t72 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574704
- children: " ░░░░░░░░░░░░░░░░░░░ "
574705
- });
574706
- t82 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574707
- children: " "
574708
- });
574709
- $2[2] = t02;
574710
- $2[3] = t17;
574711
- $2[4] = t22;
574712
- $2[5] = t32;
574713
- $2[6] = t42;
574714
- $2[7] = t52;
574715
- $2[8] = t62;
574716
- $2[9] = t72;
574717
- $2[10] = t82;
574718
- } else {
574719
- t02 = $2[2];
574720
- t17 = $2[3];
574721
- t22 = $2[4];
574722
- t32 = $2[5];
574723
- t42 = $2[6];
574724
- t52 = $2[7];
574725
- t62 = $2[8];
574726
- t72 = $2[9];
574727
- t82 = $2[10];
574728
- }
574729
- let t92;
574730
- if ($2[11] === Symbol.for("react.memo_cache_sentinel")) {
574731
- t92 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574732
- children: [
574733
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574734
- dimColor: true,
574735
- children: " ░░░░"
574736
- }),
574737
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574738
- children: " ██ "
574739
- })
574740
- ]
574741
- });
574742
- $2[11] = t92;
574743
- } else {
574744
- t92 = $2[11];
574745
- }
574746
- let t102;
574747
- let t112;
574748
- if ($2[12] === Symbol.for("react.memo_cache_sentinel")) {
574749
- t102 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574750
- children: [
574751
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574752
- dimColor: true,
574753
- children: " ░░░░░░░░░░"
574754
- }),
574755
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574756
- children: " ██▒▒██ "
574757
- })
574758
- ]
574759
- });
574760
- t112 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574761
- children: " ▒▒ ██ ▒"
574762
- });
574763
- $2[12] = t102;
574764
- $2[13] = t112;
574765
- } else {
574766
- t102 = $2[12];
574767
- t112 = $2[13];
574768
- }
574769
- let t122;
574770
- if ($2[14] === Symbol.for("react.memo_cache_sentinel")) {
574771
- t122 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574772
- children: [
574773
- " ",
574774
- " ",
574775
- " ▒▒░░▒▒ ▒ ▒▒"
574776
- ]
574777
- });
574778
- $2[14] = t122;
574779
- } else {
574780
- t122 = $2[14];
574781
- }
574782
- let t132;
574783
- if ($2[15] === Symbol.for("react.memo_cache_sentinel")) {
574784
- t132 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574785
- children: [
574786
- " ",
574787
- " \uD83D\uDC7B ",
574788
- " ▒▒ ▒▒ "
574789
- ]
574790
- });
574791
- $2[15] = t132;
574792
- } else {
574793
- t132 = $2[15];
574794
- }
574795
- let t142;
574796
- if ($2[16] === Symbol.for("react.memo_cache_sentinel")) {
574797
- t142 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574798
- children: [
574799
- " ",
574800
- " ",
574801
- " ░ ▒ "
574802
- ]
574803
- });
574804
- $2[16] = t142;
574805
- } else {
574806
- t142 = $2[16];
574807
- }
574808
- let t152;
574809
- if ($2[17] === Symbol.for("react.memo_cache_sentinel")) {
574810
- t152 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
574811
- width: WELCOME_V2_WIDTH,
574812
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574813
- children: [
574814
- t02,
574815
- t17,
574816
- t22,
574817
- t32,
574818
- t42,
574819
- t52,
574820
- t62,
574821
- t72,
574822
- t82,
574823
- t92,
574824
- t102,
574825
- t112,
574826
- t122,
574827
- t132,
574828
- t142,
574829
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574830
- children: [
574831
- "…………………",
574832
- " ",
574833
- "……………………………………………………………………░…………………………▒…………"
574834
- ]
574835
- })
574836
- ]
574837
- })
574838
- });
574839
- $2[17] = t152;
574840
- } else {
574841
- t152 = $2[17];
574842
- }
574843
- return t152;
574844
- }
574845
- let t0;
574846
- let t1;
574847
- let t2;
574848
- let t3;
574849
- let t4;
574850
- let t5;
574851
- let t6;
574852
- if ($2[18] === Symbol.for("react.memo_cache_sentinel")) {
574853
- t0 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574854
- children: [
574855
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575345
+ const version3 = "0.15.7";
575346
+ return /* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
575347
+ flexDirection: "row",
575348
+ gap: 2,
575349
+ marginY: 1,
575350
+ paddingX: 1,
575351
+ alignItems: "center",
575352
+ children: [
575353
+ /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575354
+ flexDirection: "column",
575355
+ children: VERBOO_LOGO2.map((line, index) => /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574856
575356
  color: "claude",
574857
- children: [
574858
- "Welcome to Verboo Code",
574859
- " "
574860
- ]
574861
- }),
574862
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574863
- dimColor: true,
574864
- children: [
574865
- "v",
574866
- "0.15.5",
574867
- " "
574868
- ]
574869
- })
574870
- ]
574871
- });
574872
- t1 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574873
- children: "…………………………………………………………………………………………………………………………………………………………"
574874
- });
574875
- t2 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574876
- children: " "
574877
- });
574878
- t3 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574879
- children: " * █████▓▓░ "
574880
- });
574881
- t4 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574882
- children: " * ███▓░ ░░ "
574883
- });
574884
- t5 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574885
- children: " ░░░░░░ ███▓░ "
574886
- });
574887
- t6 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574888
- children: " ░░░ ░░░░░░░░░░ ███▓░ "
574889
- });
574890
- $2[18] = t0;
574891
- $2[19] = t1;
574892
- $2[20] = t2;
574893
- $2[21] = t3;
574894
- $2[22] = t4;
574895
- $2[23] = t5;
574896
- $2[24] = t6;
574897
- } else {
574898
- t0 = $2[18];
574899
- t1 = $2[19];
574900
- t2 = $2[20];
574901
- t3 = $2[21];
574902
- t4 = $2[22];
574903
- t5 = $2[23];
574904
- t6 = $2[24];
574905
- }
574906
- let t10;
574907
- let t11;
574908
- let t7;
574909
- let t8;
574910
- let t9;
574911
- if ($2[25] === Symbol.for("react.memo_cache_sentinel")) {
574912
- t7 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574913
- children: [
574914
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574915
- children: " ░░░░░░░░░░░░░░░░░░░ "
574916
- }),
574917
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574918
- bold: true,
574919
- children: "*"
574920
- }),
574921
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574922
- children: " ██▓░░ ▓ "
574923
- })
574924
- ]
574925
- });
574926
- t8 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574927
- children: " ░▓▓███▓▓░ "
574928
- });
574929
- t9 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574930
- dimColor: true,
574931
- children: " * ░░░░ "
574932
- });
574933
- t10 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574934
- dimColor: true,
574935
- children: " ░░░░░░░░ "
574936
- });
574937
- t11 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574938
- dimColor: true,
574939
- children: " ░░░░░░░░░░░░░░░░ "
574940
- });
574941
- $2[25] = t10;
574942
- $2[26] = t11;
574943
- $2[27] = t7;
574944
- $2[28] = t8;
574945
- $2[29] = t9;
574946
- } else {
574947
- t10 = $2[25];
574948
- t11 = $2[26];
574949
- t7 = $2[27];
574950
- t8 = $2[28];
574951
- t9 = $2[29];
574952
- }
574953
- let t12;
574954
- if ($2[30] === Symbol.for("react.memo_cache_sentinel")) {
574955
- t12 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574956
- children: " \uD83D\uDC7B "
574957
- });
574958
- $2[30] = t12;
574959
- } else {
574960
- t12 = $2[30];
574961
- }
574962
- let t13;
574963
- if ($2[31] === Symbol.for("react.memo_cache_sentinel")) {
574964
- t13 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574965
- children: [
574966
- " ",
574967
- t12,
574968
- " ",
574969
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574970
- dimColor: true,
574971
- children: "*"
574972
- }),
574973
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574974
- children: " "
574975
- })
574976
- ]
574977
- });
574978
- $2[31] = t13;
574979
- } else {
574980
- t13 = $2[31];
574981
- }
574982
- let t14;
574983
- if ($2[32] === Symbol.for("react.memo_cache_sentinel")) {
574984
- t14 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574985
- children: [
574986
- " ",
574987
- " ",
574988
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574989
- children: " "
574990
- }),
574991
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574992
- bold: true,
574993
- children: "*"
574994
- }),
574995
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574996
- children: " "
574997
- })
574998
- ]
574999
- });
575000
- $2[32] = t14;
575001
- } else {
575002
- t14 = $2[32];
575003
- }
575004
- let t15;
575005
- if ($2[33] === Symbol.for("react.memo_cache_sentinel")) {
575006
- t15 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575007
- children: [
575008
- " ",
575009
- " ",
575010
- " * "
575011
- ]
575012
- });
575013
- $2[33] = t15;
575014
- } else {
575015
- t15 = $2[33];
575016
- }
575017
- let t16;
575018
- if ($2[34] === Symbol.for("react.memo_cache_sentinel")) {
575019
- t16 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575020
- width: WELCOME_V2_WIDTH,
575021
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575357
+ children: line
575358
+ }, index))
575359
+ }),
575360
+ /* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
575361
+ flexDirection: "column",
575022
575362
  children: [
575023
- t0,
575024
- t1,
575025
- t2,
575026
- t3,
575027
- t4,
575028
- t5,
575029
- t6,
575030
- t7,
575031
- t8,
575032
- t9,
575033
- t10,
575034
- t11,
575035
- t13,
575036
- t14,
575037
- t15,
575038
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575363
+ /* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
575364
+ flexDirection: "row",
575365
+ gap: 1,
575039
575366
  children: [
575040
- "…………………",
575041
- " ",
575042
- "………………………………………………………………………………………………………………"
575367
+ /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575368
+ bold: true,
575369
+ color: "claude",
575370
+ children: "Verboo Code"
575371
+ }),
575372
+ /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575373
+ dimColor: true,
575374
+ children: [
575375
+ "v",
575376
+ version3
575377
+ ]
575378
+ })
575043
575379
  ]
575044
- })
575045
- ]
575046
- })
575047
- });
575048
- $2[34] = t16;
575049
- } else {
575050
- t16 = $2[34];
575051
- }
575052
- return t16;
575053
- }
575054
- function AppleTerminalWelcomeV2(t0) {
575055
- const $2 = import_react_compiler_runtime359.c(44);
575056
- const {
575057
- theme: theme2,
575058
- welcomeMessage
575059
- } = t0;
575060
- const isLightTheme = ["light", "light-daltonized", "light-ansi"].includes(theme2);
575061
- if (isLightTheme) {
575062
- let t110;
575063
- if ($2[0] !== welcomeMessage) {
575064
- t110 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575065
- color: "claude",
575066
- children: [
575067
- welcomeMessage,
575068
- " "
575069
- ]
575070
- });
575071
- $2[0] = welcomeMessage;
575072
- $2[1] = t110;
575073
- } else {
575074
- t110 = $2[1];
575075
- }
575076
- let t22;
575077
- if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
575078
- t22 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575079
- dimColor: true,
575080
- children: [
575081
- "v",
575082
- "0.15.5",
575083
- " "
575084
- ]
575085
- });
575086
- $2[2] = t22;
575087
- } else {
575088
- t22 = $2[2];
575089
- }
575090
- let t32;
575091
- if ($2[3] !== t110) {
575092
- t32 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575093
- children: [
575094
- t110,
575095
- t22
575096
- ]
575097
- });
575098
- $2[3] = t110;
575099
- $2[4] = t32;
575100
- } else {
575101
- t32 = $2[4];
575102
- }
575103
- let t102;
575104
- let t112;
575105
- let t42;
575106
- let t52;
575107
- let t62;
575108
- let t72;
575109
- let t82;
575110
- let t92;
575111
- if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
575112
- t42 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575113
- children: "…………………………………………………………………………………………………………………………………………………………"
575114
- });
575115
- t52 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575116
- children: " "
575117
- });
575118
- t62 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575119
- children: " "
575120
- });
575121
- t72 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575122
- children: " "
575123
- });
575124
- t82 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575125
- children: " ░░░░░░ "
575126
- });
575127
- t92 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575128
- children: " ░░░ ░░░░░░░░░░ "
575129
- });
575130
- t102 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575131
- children: " ░░░░░░░░░░░░░░░░░░░ "
575132
- });
575133
- t112 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575134
- children: " "
575135
- });
575136
- $2[5] = t102;
575137
- $2[6] = t112;
575138
- $2[7] = t42;
575139
- $2[8] = t52;
575140
- $2[9] = t62;
575141
- $2[10] = t72;
575142
- $2[11] = t82;
575143
- $2[12] = t92;
575144
- } else {
575145
- t102 = $2[5];
575146
- t112 = $2[6];
575147
- t42 = $2[7];
575148
- t52 = $2[8];
575149
- t62 = $2[9];
575150
- t72 = $2[10];
575151
- t82 = $2[11];
575152
- t92 = $2[12];
575153
- }
575154
- let t122;
575155
- if ($2[13] === Symbol.for("react.memo_cache_sentinel")) {
575156
- t122 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575157
- children: [
575158
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575159
- dimColor: true,
575160
- children: " ░░░░"
575161
575380
  }),
575162
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575163
- children: " ██ "
575164
- })
575165
- ]
575166
- });
575167
- $2[13] = t122;
575168
- } else {
575169
- t122 = $2[13];
575170
- }
575171
- let t132;
575172
- let t142;
575173
- let t152;
575174
- if ($2[14] === Symbol.for("react.memo_cache_sentinel")) {
575175
- t132 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575176
- children: [
575177
575381
  /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575178
575382
  dimColor: true,
575179
- children: " ░░░░░░░░░░"
575180
- }),
575181
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575182
- children: " ██▒▒██ "
575383
+ children: "Build, debug, and ship from your terminal."
575183
575384
  })
575184
575385
  ]
575185
- });
575186
- t142 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575187
- children: " ▒▒ ██ ▒"
575188
- });
575189
- t152 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575190
- children: " ▒▒░░▒▒ ▒ ▒▒"
575191
- });
575192
- $2[14] = t132;
575193
- $2[15] = t142;
575194
- $2[16] = t152;
575195
- } else {
575196
- t132 = $2[14];
575197
- t142 = $2[15];
575198
- t152 = $2[16];
575199
- }
575200
- let t162;
575201
- if ($2[17] === Symbol.for("react.memo_cache_sentinel")) {
575202
- t162 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575203
- children: [
575204
- " ",
575205
- " \uD83D\uDC7B ",
575206
- " ▒▒ ▒▒ "
575207
- ]
575208
- });
575209
- $2[17] = t162;
575210
- } else {
575211
- t162 = $2[17];
575212
- }
575213
- let t172;
575214
- if ($2[18] === Symbol.for("react.memo_cache_sentinel")) {
575215
- t172 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575216
- children: [
575217
- " ",
575218
- " ",
575219
- " ░ ▒ "
575220
- ]
575221
- });
575222
- $2[18] = t172;
575223
- } else {
575224
- t172 = $2[18];
575225
- }
575226
- let t182;
575227
- if ($2[19] === Symbol.for("react.memo_cache_sentinel")) {
575228
- t182 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575229
- children: [
575230
- "…………………",
575231
- " ",
575232
- "……………………………………………………………………░…………………………▒…………"
575233
- ]
575234
- });
575235
- $2[19] = t182;
575236
- } else {
575237
- t182 = $2[19];
575238
- }
575239
- let t192;
575240
- if ($2[20] !== t32) {
575241
- t192 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575242
- width: WELCOME_V2_WIDTH,
575243
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575244
- children: [
575245
- t32,
575246
- t42,
575247
- t52,
575248
- t62,
575249
- t72,
575250
- t82,
575251
- t92,
575252
- t102,
575253
- t112,
575254
- t122,
575255
- t132,
575256
- t142,
575257
- t152,
575258
- t162,
575259
- t172,
575260
- t182
575261
- ]
575262
- })
575263
- });
575264
- $2[20] = t32;
575265
- $2[21] = t192;
575266
- } else {
575267
- t192 = $2[21];
575268
- }
575269
- return t192;
575270
- }
575271
- let t1;
575272
- if ($2[22] !== welcomeMessage) {
575273
- t1 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575274
- color: "claude",
575275
- children: [
575276
- welcomeMessage,
575277
- " "
575278
- ]
575279
- });
575280
- $2[22] = welcomeMessage;
575281
- $2[23] = t1;
575282
- } else {
575283
- t1 = $2[23];
575284
- }
575285
- let t2;
575286
- if ($2[24] === Symbol.for("react.memo_cache_sentinel")) {
575287
- t2 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575288
- dimColor: true,
575289
- children: [
575290
- "v",
575291
- "0.15.5",
575292
- " "
575293
- ]
575294
- });
575295
- $2[24] = t2;
575296
- } else {
575297
- t2 = $2[24];
575298
- }
575299
- let t3;
575300
- if ($2[25] !== t1) {
575301
- t3 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575302
- children: [
575303
- t1,
575304
- t2
575305
- ]
575306
- });
575307
- $2[25] = t1;
575308
- $2[26] = t3;
575309
- } else {
575310
- t3 = $2[26];
575311
- }
575312
- let t4;
575313
- let t5;
575314
- let t6;
575315
- let t7;
575316
- let t8;
575317
- let t9;
575318
- if ($2[27] === Symbol.for("react.memo_cache_sentinel")) {
575319
- t4 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575320
- children: "…………………………………………………………………………………………………………………………………………………………"
575321
- });
575322
- t5 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575323
- children: " "
575324
- });
575325
- t6 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575326
- children: " * █████▓▓░ "
575327
- });
575328
- t7 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575329
- children: " * ███▓░ ░░ "
575330
- });
575331
- t8 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575332
- children: " ░░░░░░ ███▓░ "
575333
- });
575334
- t9 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575335
- children: " ░░░ ░░░░░░░░░░ ███▓░ "
575336
- });
575337
- $2[27] = t4;
575338
- $2[28] = t5;
575339
- $2[29] = t6;
575340
- $2[30] = t7;
575341
- $2[31] = t8;
575342
- $2[32] = t9;
575343
- } else {
575344
- t4 = $2[27];
575345
- t5 = $2[28];
575346
- t6 = $2[29];
575347
- t7 = $2[30];
575348
- t8 = $2[31];
575349
- t9 = $2[32];
575350
- }
575351
- let t10;
575352
- let t11;
575353
- let t12;
575354
- let t13;
575355
- let t14;
575356
- if ($2[33] === Symbol.for("react.memo_cache_sentinel")) {
575357
- t10 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575358
- children: [
575359
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575360
- children: " ░░░░░░░░░░░░░░░░░░░ "
575361
- }),
575362
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575363
- bold: true,
575364
- children: "*"
575365
- }),
575366
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575367
- children: " ██▓░░ ▓ "
575368
- })
575369
- ]
575370
- });
575371
- t11 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575372
- children: " ░▓▓███▓▓░ "
575373
- });
575374
- t12 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575375
- dimColor: true,
575376
- children: " * ░░░░ "
575377
- });
575378
- t13 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575379
- dimColor: true,
575380
- children: " ░░░░░░░░ "
575381
- });
575382
- t14 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575383
- dimColor: true,
575384
- children: " ░░░░░░░░░░░░░░░░ "
575385
- });
575386
- $2[33] = t10;
575387
- $2[34] = t11;
575388
- $2[35] = t12;
575389
- $2[36] = t13;
575390
- $2[37] = t14;
575391
- } else {
575392
- t10 = $2[33];
575393
- t11 = $2[34];
575394
- t12 = $2[35];
575395
- t13 = $2[36];
575396
- t14 = $2[37];
575397
- }
575398
- let t15;
575399
- if ($2[38] === Symbol.for("react.memo_cache_sentinel")) {
575400
- t15 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575401
- children: [
575402
- " ",
575403
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575404
- dimColor: true,
575405
- children: "*"
575406
- }),
575407
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575408
- children: " "
575409
- })
575410
- ]
575411
- });
575412
- $2[38] = t15;
575413
- } else {
575414
- t15 = $2[38];
575415
- }
575416
- let t16;
575417
- if ($2[39] === Symbol.for("react.memo_cache_sentinel")) {
575418
- t16 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575419
- children: [
575420
- " ",
575421
- " \uD83D\uDC7B ",
575422
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575423
- children: " "
575424
- }),
575425
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575426
- bold: true,
575427
- children: "*"
575428
- }),
575429
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575430
- children: " "
575431
- })
575432
- ]
575433
- });
575434
- $2[39] = t16;
575435
- } else {
575436
- t16 = $2[39];
575437
- }
575438
- let t17;
575439
- if ($2[40] === Symbol.for("react.memo_cache_sentinel")) {
575440
- t17 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575441
- children: [
575442
- " ",
575443
- " ",
575444
- " * "
575445
- ]
575446
- });
575447
- $2[40] = t17;
575448
- } else {
575449
- t17 = $2[40];
575450
- }
575451
- let t18;
575452
- if ($2[41] === Symbol.for("react.memo_cache_sentinel")) {
575453
- t18 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575454
- children: [
575455
- "…………………",
575456
- " ",
575457
- "………………………………………………………………………………………………………………"
575458
- ]
575459
- });
575460
- $2[41] = t18;
575461
- } else {
575462
- t18 = $2[41];
575463
- }
575464
- let t19;
575465
- if ($2[42] !== t3) {
575466
- t19 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575467
- width: WELCOME_V2_WIDTH,
575468
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575469
- children: [
575470
- t3,
575471
- t4,
575472
- t5,
575473
- t6,
575474
- t7,
575475
- t8,
575476
- t9,
575477
- t10,
575478
- t11,
575479
- t12,
575480
- t13,
575481
- t14,
575482
- t15,
575483
- t16,
575484
- t17,
575485
- t18
575486
- ]
575487
575386
  })
575488
- });
575489
- $2[42] = t3;
575490
- $2[43] = t19;
575491
- } else {
575492
- t19 = $2[43];
575493
- }
575494
- return t19;
575387
+ ]
575388
+ });
575495
575389
  }
575496
- var import_react_compiler_runtime359, jsx_runtime480, WELCOME_V2_WIDTH = 58;
575390
+ var jsx_runtime480, VERBOO_LOGO2;
575497
575391
  var init_WelcomeV2 = __esm(() => {
575498
575392
  init_ink2();
575499
- init_env();
575500
- import_react_compiler_runtime359 = __toESM(require_dist3(), 1);
575501
575393
  jsx_runtime480 = __toESM(require_jsx_runtime(), 1);
575394
+ VERBOO_LOGO2 = [
575395
+ " ▄▀▀▀▀▀▀▀▄ ",
575396
+ "▄▀▀▀▀▀▀▀▀▀▀▀▄",
575397
+ "▀▀▀ ▀▀▀▀▀ ▀▀▀",
575398
+ "▀▀▀▀▀▀▀▀▀▀▀▀▀",
575399
+ "▀▀▀▀▀▄▄▄▀▀▀▀▀",
575400
+ " ▀▀▀▀▀▀▀▀▀▀▀ ",
575401
+ "▄▀▀ ▀▀▀▀▀ ▀▀▄"
575402
+ ];
575502
575403
  });
575503
575404
 
575504
575405
  // src/components/ui/OrderedListItem.tsx
575505
575406
  function OrderedListItem(t0) {
575506
- const $2 = import_react_compiler_runtime360.c(7);
575407
+ const $2 = import_react_compiler_runtime359.c(7);
575507
575408
  const {
575508
575409
  children
575509
575410
  } = t0;
@@ -575549,10 +575450,10 @@ function OrderedListItem(t0) {
575549
575450
  }
575550
575451
  return t3;
575551
575452
  }
575552
- var import_react_compiler_runtime360, import_react325, jsx_runtime481, OrderedListItemContext;
575453
+ var import_react_compiler_runtime359, import_react325, jsx_runtime481, OrderedListItemContext;
575553
575454
  var init_OrderedListItem = __esm(() => {
575554
575455
  init_ink2();
575555
- import_react_compiler_runtime360 = __toESM(require_dist3(), 1);
575456
+ import_react_compiler_runtime359 = __toESM(require_dist3(), 1);
575556
575457
  import_react325 = __toESM(require_react(), 1);
575557
575458
  jsx_runtime481 = __toESM(require_jsx_runtime(), 1);
575558
575459
  OrderedListItemContext = import_react325.createContext({
@@ -575562,7 +575463,7 @@ var init_OrderedListItem = __esm(() => {
575562
575463
 
575563
575464
  // src/components/ui/OrderedList.tsx
575564
575465
  function OrderedListComponent(t0) {
575565
- const $2 = import_react_compiler_runtime361.c(9);
575466
+ const $2 = import_react_compiler_runtime360.c(9);
575566
575467
  const {
575567
575468
  children
575568
575469
  } = t0;
@@ -575626,11 +575527,11 @@ function OrderedListComponent(t0) {
575626
575527
  }
575627
575528
  return t2;
575628
575529
  }
575629
- var import_react_compiler_runtime361, import_react326, jsx_runtime482, OrderedListContext, OrderedList;
575530
+ var import_react_compiler_runtime360, import_react326, jsx_runtime482, OrderedListContext, OrderedList;
575630
575531
  var init_OrderedList = __esm(() => {
575631
575532
  init_ink2();
575632
575533
  init_OrderedListItem();
575633
- import_react_compiler_runtime361 = __toESM(require_dist3(), 1);
575534
+ import_react_compiler_runtime360 = __toESM(require_dist3(), 1);
575634
575535
  import_react326 = __toESM(require_react(), 1);
575635
575536
  jsx_runtime482 = __toESM(require_jsx_runtime(), 1);
575636
575537
  OrderedListContext = import_react326.createContext({
@@ -575911,7 +575812,7 @@ function Onboarding({
575911
575812
  });
575912
575813
  }
575913
575814
  function SkippableStep(t0) {
575914
- const $2 = import_react_compiler_runtime362.c(4);
575815
+ const $2 = import_react_compiler_runtime361.c(4);
575915
575816
  const {
575916
575817
  skip,
575917
575818
  onSkip,
@@ -575940,7 +575841,7 @@ function SkippableStep(t0) {
575940
575841
  }
575941
575842
  return children;
575942
575843
  }
575943
- var import_react_compiler_runtime362, import_react327, jsx_runtime483;
575844
+ var import_react_compiler_runtime361, import_react327, jsx_runtime483;
575944
575845
  var init_Onboarding = __esm(() => {
575945
575846
  init_terminalSetup();
575946
575847
  init_useExitOnCtrlCDWithKeybindings();
@@ -575959,7 +575860,7 @@ var init_Onboarding = __esm(() => {
575959
575860
  init_PressEnterToContinue();
575960
575861
  init_ThemePicker();
575961
575862
  init_OrderedList();
575962
- import_react_compiler_runtime362 = __toESM(require_dist3(), 1);
575863
+ import_react_compiler_runtime361 = __toESM(require_dist3(), 1);
575963
575864
  import_react327 = __toESM(require_react(), 1);
575964
575865
  jsx_runtime483 = __toESM(require_jsx_runtime(), 1);
575965
575866
  });
@@ -576103,7 +576004,7 @@ __export(exports_TrustDialog, {
576103
576004
  });
576104
576005
  import { homedir as homedir38 } from "os";
576105
576006
  function TrustDialog(t0) {
576106
- const $2 = import_react_compiler_runtime363.c(33);
576007
+ const $2 = import_react_compiler_runtime362.c(33);
576107
576008
  const {
576108
576009
  onDone,
576109
576010
  commands
@@ -576422,7 +576323,7 @@ function _temp298(command11) {
576422
576323
  function _temp299(tool) {
576423
576324
  return tool === BASH_TOOL_NAME || tool.startsWith(BASH_TOOL_NAME + "(");
576424
576325
  }
576425
- var import_react_compiler_runtime363, import_react328, jsx_runtime484;
576326
+ var import_react_compiler_runtime362, import_react328, jsx_runtime484;
576426
576327
  var init_TrustDialog = __esm(() => {
576427
576328
  init_state();
576428
576329
  init_useExitOnCtrlCDWithKeybindings();
@@ -576436,7 +576337,7 @@ var init_TrustDialog = __esm(() => {
576436
576337
  init_CustomSelect();
576437
576338
  init_PermissionDialog();
576438
576339
  init_utils13();
576439
- import_react_compiler_runtime363 = __toESM(require_dist3(), 1);
576340
+ import_react_compiler_runtime362 = __toESM(require_dist3(), 1);
576440
576341
  import_react328 = __toESM(require_react(), 1);
576441
576342
  jsx_runtime484 = __toESM(require_jsx_runtime(), 1);
576442
576343
  });
@@ -576447,7 +576348,7 @@ __export(exports_BypassPermissionsModeDialog, {
576447
576348
  BypassPermissionsModeDialog: () => BypassPermissionsModeDialog
576448
576349
  });
576449
576350
  function BypassPermissionsModeDialog(t0) {
576450
- const $2 = import_react_compiler_runtime364.c(7);
576351
+ const $2 = import_react_compiler_runtime363.c(7);
576451
576352
  const {
576452
576353
  onAccept
576453
576354
  } = t0;
@@ -576549,14 +576450,14 @@ function _temp2100() {
576549
576450
  function _temp301() {
576550
576451
  logEvent("tengu_bypass_permissions_mode_dialog_shown", {});
576551
576452
  }
576552
- var import_react_compiler_runtime364, import_react329, jsx_runtime485;
576453
+ var import_react_compiler_runtime363, import_react329, jsx_runtime485;
576553
576454
  var init_BypassPermissionsModeDialog = __esm(() => {
576554
576455
  init_ink2();
576555
576456
  init_gracefulShutdown();
576556
576457
  init_settings2();
576557
576458
  init_CustomSelect();
576558
576459
  init_Dialog();
576559
- import_react_compiler_runtime364 = __toESM(require_dist3(), 1);
576460
+ import_react_compiler_runtime363 = __toESM(require_dist3(), 1);
576560
576461
  import_react329 = __toESM(require_react(), 1);
576561
576462
  jsx_runtime485 = __toESM(require_jsx_runtime(), 1);
576562
576463
  });
@@ -576567,7 +576468,7 @@ __export(exports_ClaudeInChromeOnboarding, {
576567
576468
  ClaudeInChromeOnboarding: () => ClaudeInChromeOnboarding
576568
576469
  });
576569
576470
  function ClaudeInChromeOnboarding(t0) {
576570
- const $2 = import_react_compiler_runtime365.c(20);
576471
+ const $2 = import_react_compiler_runtime364.c(20);
576571
576472
  const {
576572
576473
  onDone
576573
576474
  } = t0;
@@ -576733,13 +576634,13 @@ function _temp302(current) {
576733
576634
  hasCompletedClaudeInChromeOnboarding: true
576734
576635
  };
576735
576636
  }
576736
- var import_react_compiler_runtime365, import_react330, jsx_runtime486, CHROME_EXTENSION_URL2 = "https://claude.ai/chrome", CHROME_PERMISSIONS_URL2 = "https://clau.de/chrome/permissions";
576637
+ var import_react_compiler_runtime364, import_react330, jsx_runtime486, CHROME_EXTENSION_URL2 = "https://claude.ai/chrome", CHROME_PERMISSIONS_URL2 = "https://clau.de/chrome/permissions";
576737
576638
  var init_ClaudeInChromeOnboarding = __esm(() => {
576738
576639
  init_ink2();
576739
576640
  init_setup2();
576740
576641
  init_config();
576741
576642
  init_Dialog();
576742
- import_react_compiler_runtime365 = __toESM(require_dist3(), 1);
576643
+ import_react_compiler_runtime364 = __toESM(require_dist3(), 1);
576743
576644
  import_react330 = __toESM(require_react(), 1);
576744
576645
  jsx_runtime486 = __toESM(require_jsx_runtime(), 1);
576745
576646
  });
@@ -577000,7 +576901,7 @@ __export(exports_InvalidSettingsDialog, {
577000
576901
  InvalidSettingsDialog: () => InvalidSettingsDialog
577001
576902
  });
577002
576903
  function InvalidSettingsDialog(t0) {
577003
- const $2 = import_react_compiler_runtime366.c(13);
576904
+ const $2 = import_react_compiler_runtime365.c(13);
577004
576905
  const {
577005
576906
  settingsErrors,
577006
576907
  onContinue,
@@ -577087,19 +576988,19 @@ function InvalidSettingsDialog(t0) {
577087
576988
  }
577088
576989
  return t6;
577089
576990
  }
577090
- var import_react_compiler_runtime366, jsx_runtime488;
576991
+ var import_react_compiler_runtime365, jsx_runtime488;
577091
576992
  var init_InvalidSettingsDialog = __esm(() => {
577092
576993
  init_ink2();
577093
576994
  init_CustomSelect();
577094
576995
  init_Dialog();
577095
576996
  init_ValidationErrorsList();
577096
- import_react_compiler_runtime366 = __toESM(require_dist3(), 1);
576997
+ import_react_compiler_runtime365 = __toESM(require_dist3(), 1);
577097
576998
  jsx_runtime488 = __toESM(require_jsx_runtime(), 1);
577098
576999
  });
577099
577000
 
577100
577001
  // src/hooks/useTeleportResume.tsx
577101
577002
  function useTeleportResume(source) {
577102
- const $2 = import_react_compiler_runtime367.c(8);
577003
+ const $2 = import_react_compiler_runtime366.c(8);
577103
577004
  const [isResuming, setIsResuming] = import_react331.useState(false);
577104
577005
  const [error42, setError] = import_react331.useState(null);
577105
577006
  const [selectedSession, setSelectedSession] = import_react331.useState(null);
@@ -577167,12 +577068,12 @@ function useTeleportResume(source) {
577167
577068
  }
577168
577069
  return t2;
577169
577070
  }
577170
- var import_react_compiler_runtime367, import_react331;
577071
+ var import_react_compiler_runtime366, import_react331;
577171
577072
  var init_useTeleportResume = __esm(() => {
577172
577073
  init_state();
577173
577074
  init_errors();
577174
577075
  init_teleport();
577175
- import_react_compiler_runtime367 = __toESM(require_dist3(), 1);
577076
+ import_react_compiler_runtime366 = __toESM(require_dist3(), 1);
577176
577077
  import_react331 = __toESM(require_react(), 1);
577177
577078
  });
577178
577079
 
@@ -577547,7 +577448,7 @@ __export(exports_TeleportResumeWrapper, {
577547
577448
  TeleportResumeWrapper: () => TeleportResumeWrapper
577548
577449
  });
577549
577450
  function TeleportResumeWrapper(t0) {
577550
- const $2 = import_react_compiler_runtime368.c(25);
577451
+ const $2 = import_react_compiler_runtime367.c(25);
577551
577452
  const {
577552
577453
  onComplete,
577553
577454
  onCancel,
@@ -577745,14 +577646,14 @@ function TeleportResumeWrapper(t0) {
577745
577646
  }
577746
577647
  return t8;
577747
577648
  }
577748
- var import_react_compiler_runtime368, import_react333, jsx_runtime490;
577649
+ var import_react_compiler_runtime367, import_react333, jsx_runtime490;
577749
577650
  var init_TeleportResumeWrapper = __esm(() => {
577750
577651
  init_useTeleportResume();
577751
577652
  init_ink2();
577752
577653
  init_useKeybinding();
577753
577654
  init_ResumeTask();
577754
577655
  init_Spinner2();
577755
- import_react_compiler_runtime368 = __toESM(require_dist3(), 1);
577656
+ import_react_compiler_runtime367 = __toESM(require_dist3(), 1);
577756
577657
  import_react333 = __toESM(require_react(), 1);
577757
577658
  jsx_runtime490 = __toESM(require_jsx_runtime(), 1);
577758
577659
  });
@@ -577763,7 +577664,7 @@ __export(exports_TeleportRepoMismatchDialog, {
577763
577664
  TeleportRepoMismatchDialog: () => TeleportRepoMismatchDialog
577764
577665
  });
577765
577666
  function TeleportRepoMismatchDialog(t0) {
577766
- const $2 = import_react_compiler_runtime369.c(18);
577667
+ const $2 = import_react_compiler_runtime368.c(18);
577767
577668
  const {
577768
577669
  targetRepo,
577769
577670
  initialPaths,
@@ -577914,7 +577815,7 @@ function _temp303(path24) {
577914
577815
  value: path24
577915
577816
  };
577916
577817
  }
577917
- var import_react_compiler_runtime369, import_react334, jsx_runtime491;
577818
+ var import_react_compiler_runtime368, import_react334, jsx_runtime491;
577918
577819
  var init_TeleportRepoMismatchDialog = __esm(() => {
577919
577820
  init_ink2();
577920
577821
  init_file();
@@ -577922,7 +577823,7 @@ var init_TeleportRepoMismatchDialog = __esm(() => {
577922
577823
  init_CustomSelect();
577923
577824
  init_Dialog();
577924
577825
  init_Spinner2();
577925
- import_react_compiler_runtime369 = __toESM(require_dist3(), 1);
577826
+ import_react_compiler_runtime368 = __toESM(require_dist3(), 1);
577926
577827
  import_react334 = __toESM(require_react(), 1);
577927
577828
  jsx_runtime491 = __toESM(require_jsx_runtime(), 1);
577928
577829
  });
@@ -578240,7 +578141,7 @@ function ResumeConversation({
578240
578141
  });
578241
578142
  }
578242
578143
  function NoConversationsMessage() {
578243
- const $2 = import_react_compiler_runtime370.c(2);
578144
+ const $2 = import_react_compiler_runtime369.c(2);
578244
578145
  let t0;
578245
578146
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
578246
578147
  t0 = {
@@ -578275,7 +578176,7 @@ function _temp304() {
578275
578176
  process.exit(1);
578276
578177
  }
578277
578178
  function CrossProjectMessage(t0) {
578278
- const $2 = import_react_compiler_runtime370.c(8);
578179
+ const $2 = import_react_compiler_runtime369.c(8);
578279
578180
  const {
578280
578181
  command: command11
578281
578182
  } = t0;
@@ -578359,7 +578260,7 @@ function _temp360() {
578359
578260
  function _temp2101() {
578360
578261
  process.exit(0);
578361
578262
  }
578362
- var import_react_compiler_runtime370, import_react335, jsx_runtime492;
578263
+ var import_react_compiler_runtime369, import_react335, jsx_runtime492;
578363
578264
  var init_ResumeConversation = __esm(() => {
578364
578265
  init_useTerminalSize();
578365
578266
  init_state();
@@ -578381,7 +578282,7 @@ var init_ResumeConversation = __esm(() => {
578381
578282
  init_sessionRestore();
578382
578283
  init_sessionStorage();
578383
578284
  init_REPL();
578384
- import_react_compiler_runtime370 = __toESM(require_dist3(), 1);
578285
+ import_react_compiler_runtime369 = __toESM(require_dist3(), 1);
578385
578286
  import_react335 = __toESM(require_react(), 1);
578386
578287
  jsx_runtime492 = __toESM(require_jsx_runtime(), 1);
578387
578288
  });
@@ -580467,7 +580368,7 @@ var init_addCommand = __esm(() => {
580467
580368
 
580468
580369
  // src/components/MCPServerDesktopImportDialog.tsx
580469
580370
  function MCPServerDesktopImportDialog(t0) {
580470
- const $2 = import_react_compiler_runtime371.c(36);
580371
+ const $2 = import_react_compiler_runtime370.c(36);
580471
580372
  const {
580472
580373
  servers,
580473
580374
  scope,
@@ -580703,7 +580604,7 @@ No servers were imported.`);
580703
580604
  }
580704
580605
  return t18;
580705
580606
  }
580706
- var import_react_compiler_runtime371, import_react336, jsx_runtime494;
580607
+ var import_react_compiler_runtime370, import_react336, jsx_runtime494;
580707
580608
  var init_MCPServerDesktopImportDialog = __esm(() => {
580708
580609
  init_gracefulShutdown();
580709
580610
  init_ink2();
@@ -580714,7 +580615,7 @@ var init_MCPServerDesktopImportDialog = __esm(() => {
580714
580615
  init_Byline();
580715
580616
  init_Dialog();
580716
580617
  init_KeyboardShortcutHint();
580717
- import_react_compiler_runtime371 = __toESM(require_dist3(), 1);
580618
+ import_react_compiler_runtime370 = __toESM(require_dist3(), 1);
580718
580619
  import_react336 = __toESM(require_react(), 1);
580719
580620
  jsx_runtime494 = __toESM(require_jsx_runtime(), 1);
580720
580621
  });
@@ -592362,7 +592263,7 @@ __export(exports_TeleportProgress, {
592362
592263
  TeleportProgress: () => TeleportProgress
592363
592264
  });
592364
592265
  function TeleportProgress(t0) {
592365
- const $2 = import_react_compiler_runtime372.c(16);
592266
+ const $2 = import_react_compiler_runtime371.c(16);
592366
592267
  const {
592367
592268
  currentStep,
592368
592269
  sessionId
@@ -592515,13 +592416,13 @@ async function teleportWithProgress(root2, sessionId) {
592515
592416
  branchName
592516
592417
  };
592517
592418
  }
592518
- var import_react_compiler_runtime372, import_react337, jsx_runtime496, SPINNER_FRAMES3, STEPS;
592419
+ var import_react_compiler_runtime371, import_react337, jsx_runtime496, SPINNER_FRAMES3, STEPS;
592519
592420
  var init_TeleportProgress = __esm(() => {
592520
592421
  init_figures();
592521
592422
  init_ink2();
592522
592423
  init_AppState();
592523
592424
  init_teleport();
592524
- import_react_compiler_runtime372 = __toESM(require_dist3(), 1);
592425
+ import_react_compiler_runtime371 = __toESM(require_dist3(), 1);
592525
592426
  import_react337 = __toESM(require_react(), 1);
592526
592427
  jsx_runtime496 = __toESM(require_jsx_runtime(), 1);
592527
592428
  SPINNER_FRAMES3 = ["◐", "◓", "◑", "◒"];
@@ -593080,7 +592981,7 @@ function getInstallationPath2() {
593080
592981
  return "verboo-code/bin/verboo";
593081
592982
  }
593082
592983
  function SetupNotes(t0) {
593083
- const $2 = import_react_compiler_runtime373.c(5);
592984
+ const $2 = import_react_compiler_runtime372.c(5);
593084
592985
  const {
593085
592986
  messages
593086
592987
  } = t0;
@@ -593397,7 +593298,7 @@ function Install({
593397
593298
  ]
593398
593299
  });
593399
593300
  }
593400
- var import_react_compiler_runtime373, import_react338, jsx_runtime497, install;
593301
+ var import_react_compiler_runtime372, import_react338, jsx_runtime497, install;
593401
593302
  var init_install = __esm(() => {
593402
593303
  init_StatusIcon();
593403
593304
  init_ink2();
@@ -593406,7 +593307,7 @@ var init_install = __esm(() => {
593406
593307
  init_errors();
593407
593308
  init_nativeInstaller();
593408
593309
  init_settings2();
593409
- import_react_compiler_runtime373 = __toESM(require_dist3(), 1);
593310
+ import_react_compiler_runtime372 = __toESM(require_dist3(), 1);
593410
593311
  import_react338 = __toESM(require_react(), 1);
593411
593312
  jsx_runtime497 = __toESM(require_jsx_runtime(), 1);
593412
593313
  install = {
@@ -593484,7 +593385,7 @@ async function setupTokenHandler(root2) {
593484
593385
  process.exit(0);
593485
593386
  }
593486
593387
  function DoctorWithPlugins(t0) {
593487
- const $2 = import_react_compiler_runtime374.c(2);
593388
+ const $2 = import_react_compiler_runtime373.c(2);
593488
593389
  const {
593489
593390
  onDone
593490
593391
  } = t0;
@@ -593544,7 +593445,7 @@ async function installHandler(target, options2) {
593544
593445
  }, {}, args);
593545
593446
  });
593546
593447
  }
593547
- var import_react_compiler_runtime374, import_react339, jsx_runtime498, DoctorLazy;
593448
+ var import_react_compiler_runtime373, import_react339, jsx_runtime498, DoctorLazy;
593548
593449
  var init_util3 = __esm(() => {
593549
593450
  init_WelcomeV2();
593550
593451
  init_useManagePlugins();
@@ -593554,7 +593455,7 @@ var init_util3 = __esm(() => {
593554
593455
  init_AppState();
593555
593456
  init_onChangeAppState();
593556
593457
  init_auth();
593557
- import_react_compiler_runtime374 = __toESM(require_dist3(), 1);
593458
+ import_react_compiler_runtime373 = __toESM(require_dist3(), 1);
593558
593459
  import_react339 = __toESM(require_react(), 1);
593559
593460
  jsx_runtime498 = __toESM(require_jsx_runtime(), 1);
593560
593461
  DoctorLazy = import_react339.default.lazy(() => Promise.resolve().then(() => (init_Doctor(), exports_Doctor)).then((m) => ({
@@ -593744,7 +593645,7 @@ __export(exports_update, {
593744
593645
  });
593745
593646
  async function update() {
593746
593647
  logEvent("tengu_update_check", {});
593747
- writeToStdout(`Current version: ${"0.15.5"}
593648
+ writeToStdout(`Current version: ${"0.15.7"}
593748
593649
  `);
593749
593650
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
593750
593651
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -593829,8 +593730,8 @@ async function update() {
593829
593730
  writeToStdout(`Verboo Code is managed by Homebrew.
593830
593731
  `);
593831
593732
  const latest = await getLatestVersion(channel2);
593832
- if (latest && !gte("0.15.5", latest)) {
593833
- writeToStdout(`Update available: ${"0.15.5"} → ${latest}
593733
+ if (latest && !gte("0.15.7", latest)) {
593734
+ writeToStdout(`Update available: ${"0.15.7"} → ${latest}
593834
593735
  `);
593835
593736
  writeToStdout(`
593836
593737
  `);
@@ -593846,8 +593747,8 @@ async function update() {
593846
593747
  writeToStdout(`Verboo Code is managed by winget.
593847
593748
  `);
593848
593749
  const latest = await getLatestVersion(channel2);
593849
- if (latest && !gte("0.15.5", latest)) {
593850
- writeToStdout(`Update available: ${"0.15.5"} → ${latest}
593750
+ if (latest && !gte("0.15.7", latest)) {
593751
+ writeToStdout(`Update available: ${"0.15.7"} → ${latest}
593851
593752
  `);
593852
593753
  writeToStdout(`
593853
593754
  `);
@@ -593863,8 +593764,8 @@ async function update() {
593863
593764
  writeToStdout(`Verboo Code is managed by apk.
593864
593765
  `);
593865
593766
  const latest = await getLatestVersion(channel2);
593866
- if (latest && !gte("0.15.5", latest)) {
593867
- writeToStdout(`Update available: ${"0.15.5"} → ${latest}
593767
+ if (latest && !gte("0.15.7", latest)) {
593768
+ writeToStdout(`Update available: ${"0.15.7"} → ${latest}
593868
593769
  `);
593869
593770
  writeToStdout(`
593870
593771
  `);
@@ -593917,11 +593818,11 @@ async function update() {
593917
593818
  `);
593918
593819
  await gracefulShutdown(1);
593919
593820
  }
593920
- if (result.latestVersion === "0.15.5") {
593921
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.5"})`) + `
593821
+ if (result.latestVersion === "0.15.7") {
593822
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.7"})`) + `
593922
593823
  `);
593923
593824
  } else {
593924
- writeToStdout(source_default.green(`Successfully updated from ${"0.15.5"} to version ${result.latestVersion}`) + `
593825
+ writeToStdout(source_default.green(`Successfully updated from ${"0.15.7"} to version ${result.latestVersion}`) + `
593925
593826
  `);
593926
593827
  await regenerateCompletionCache();
593927
593828
  }
@@ -593981,12 +593882,12 @@ async function update() {
593981
593882
  `);
593982
593883
  await gracefulShutdown(1);
593983
593884
  }
593984
- if (latestVersion === "0.15.5") {
593985
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.5"})`) + `
593885
+ if (latestVersion === "0.15.7") {
593886
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.7"})`) + `
593986
593887
  `);
593987
593888
  await gracefulShutdown(0);
593988
593889
  }
593989
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.5"})
593890
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.7"})
593990
593891
  `);
593991
593892
  writeToStdout(`Installing update...
593992
593893
  `);
@@ -594031,7 +593932,7 @@ async function update() {
594031
593932
  logForDebugging(`update: Installation status: ${status2}`);
594032
593933
  switch (status2) {
594033
593934
  case "success":
594034
- writeToStdout(source_default.green(`Successfully updated from ${"0.15.5"} to version ${latestVersion}`) + `
593935
+ writeToStdout(source_default.green(`Successfully updated from ${"0.15.7"} to version ${latestVersion}`) + `
594035
593936
  `);
594036
593937
  await regenerateCompletionCache();
594037
593938
  break;
@@ -595350,7 +595251,7 @@ ${customInstructions}` : customInstructions;
595350
595251
  is_native_binary: isInBundledMode()
595351
595252
  });
595352
595253
  logMemoryDiagnostics("start", {
595353
- version: "0.15.5",
595254
+ version: "0.15.7",
595354
595255
  debug: debug2,
595355
595256
  debugToStderr,
595356
595257
  print: print ?? false,
@@ -596161,7 +596062,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
596161
596062
  pendingHookMessages
596162
596063
  }, renderAndRun);
596163
596064
  }
596164
- }).version(`0.15.5 (${cliDesc})`, "-v, --version", "Output the version number");
596065
+ }).version(`0.15.7 (${cliDesc})`, "-v, --version", "Output the version number");
596165
596066
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
596166
596067
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
596167
596068
  if (canUserConfigureAdvisor()) {
@@ -596742,7 +596643,7 @@ if (false) {}
596742
596643
  async function main2() {
596743
596644
  const args = process.argv.slice(2);
596744
596645
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
596745
- console.log(`${"0.15.5"} (Verboo Code)`);
596646
+ console.log(`${"0.15.7"} (Verboo Code)`);
596746
596647
  return;
596747
596648
  }
596748
596649
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -596916,4 +596817,4 @@ async function main2() {
596916
596817
  }
596917
596818
  main2();
596918
596819
 
596919
- //# debugId=239F034E22FCB0DD64756E2164756E21
596820
+ //# debugId=01F120A1BA0FBE6664756E2164756E21