@verboo/code 0.15.5 → 0.15.6

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 +901 -1065
  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."),
@@ -87608,7 +87624,7 @@ var require_eventsource = __commonJS((exports, module) => {
87608
87624
 
87609
87625
  // node_modules/undici/index.js
87610
87626
  var require_undici = __commonJS((exports, module) => {
87611
- var __filename = "/home/runner/work/code/code/node_modules/undici/index.js";
87627
+ var __filename = "/Users/impedro29/Development/Verbeux/verboo-code-project/verboo-code/node_modules/undici/index.js";
87612
87628
  var Client = require_client();
87613
87629
  var Dispatcher = require_dispatcher();
87614
87630
  var Pool = require_pool();
@@ -98940,7 +98956,7 @@ var require_es5 = __commonJS((exports, module) => {
98940
98956
 
98941
98957
  // node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js
98942
98958
  var require_client3 = __commonJS((exports) => {
98943
- var __dirname = "/home/runner/work/code/code/node_modules/@aws-sdk/core/dist-cjs/submodules/client";
98959
+ var __dirname = "/Users/impedro29/Development/Verbeux/verboo-code-project/verboo-code/node_modules/@aws-sdk/core/dist-cjs/submodules/client";
98944
98960
  var retry = require_retry3();
98945
98961
  var protocols = require_protocols();
98946
98962
  var lambdaInvokeStore = require_invoke_store();
@@ -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.6";
117946
117996
  return `verboo-code/${version2}`;
117947
117997
  }
117948
117998
 
@@ -178198,7 +178248,7 @@ async function codesignRipgrepIfNecessary() {
178198
178248
  logError2(e);
178199
178249
  }
178200
178250
  }
178201
- var __dirname = "/home/runner/work/code/code/src/utils", getRipgrepConfig, MAX_BUFFER_SIZE = 20000000, RipgrepTimeoutError, RipgrepUnavailableError, countFilesRoundedRg, ripgrepStatus = null, testRipgrepOnFirstUse, alreadyDoneSignCheck = false;
178251
+ var __dirname = "/Users/impedro29/Development/Verbeux/verboo-code-project/verboo-code/src/utils", getRipgrepConfig, MAX_BUFFER_SIZE = 20000000, RipgrepTimeoutError, RipgrepUnavailableError, countFilesRoundedRg, ripgrepStatus = null, testRipgrepOnFirstUse, alreadyDoneSignCheck = false;
178202
178252
  var init_ripgrep = __esm(() => {
178203
178253
  init_memoize();
178204
178254
  init_debug();
@@ -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-08T17:59:39.726Z").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.6"
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.6";
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-08T17:59:39.726Z"})`
496493
497207
  };
496494
497208
  }, version2, version_default;
496495
497209
  var init_version2 = __esm(() => {
@@ -520679,70 +521393,23 @@ 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);
520687
521399
  const DIMP = `${DIM2}${rgb3(...DIMCOL)}`;
520688
521400
  const STATUS_C = p.isLocal ? rgb3(130, 200, 140) : PURPLE;
520689
521401
  const statusLabel = p.isLocal ? "local" : "cloud";
520690
- const LOGO_TEXT_PADDING = 2;
520691
- out.push("");
520692
- 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}`);
520702
- } else {
520703
- 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);
520707
- 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}`,
520714
- `${DIMP}${cwd2}${RESET2}`,
520715
- ``
520716
- ];
520717
- const paintedLogo = [];
520718
- for (let i3 = 0;i3 < VERBOO_LOGO.length; i3++) {
520719
- const line = (VERBOO_LOGO[i3] ?? "").trimEnd();
520720
- const mask = VERBOO_LOGO_MASK[i3] ?? "";
520721
- let painted = "";
520722
- 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
- }
520732
- }
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] ?? ""}`);
520742
- }
520743
- }
521402
+ const detailWidth = Math.max(1, columns - 8);
521403
+ const providerAndModel = p.name === "Verboo" ? p.model : `${p.name} · ${p.model}`;
521404
+ const model2 = truncateStartupText(providerAndModel, Math.max(1, detailWidth - statusLabel.length - 4));
521405
+ const cwd2 = truncateStartupText(displayCwd, detailWidth);
521406
+ const hint = truncateStartupText("Type a request, or use /help for commands", detailWidth);
521407
+ const shownVersion = truncateStartupText(version3, Math.max(1, columns - 24));
521408
+ out.push(` \uD83D\uDC7B ${bold2}${PURPLE}Verboo Code${RESET2} ${DIMP}v${shownVersion}${RESET2}`);
521409
+ out.push(` ${STATUS_C}●${RESET2} ${DIMP}${model2} · ${statusLabel}${RESET2}`);
521410
+ out.push(` ${DIMP}${cwd2}${RESET2}`);
520744
521411
  out.push("");
520745
- out.push(` ${STATUS_C}●${RESET2} ${DIMP}${statusLabel}${RESET2} ${DIMP}Ready — type ${RESET2}${PURPLE}/help${RESET2}${DIMP} to begin${RESET2}`);
521412
+ out.push(` ${DIMP}${hint}${RESET2}`);
520746
521413
  out.push("");
520747
521414
  return `${out.join(`
520748
521415
  `)}
@@ -520755,11 +521422,11 @@ function printStartupScreen(modelOverride) {
520755
521422
  const home = process.env.HOME || process.env.USERPROFILE || "";
520756
521423
  const cwd2 = process.cwd();
520757
521424
  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;
521425
+ const version3 = "0.15.6";
521426
+ const columns = process.stdout.columns ?? STARTUP_DEFAULT_COLUMNS;
520760
521427
  process.stdout.write(renderStartupScreen(p, version3, displayCwd, columns));
520761
521428
  }
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;
521429
+ var ESC4 = "\x1B[", RESET2, DIM2, rgb3 = (r, g, b) => `${ESC4}38;2;${r};${g};${b}m`, ACCENT, DIMCOL, STARTUP_DEFAULT_COLUMNS = 80;
520763
521430
  var init_StartupScreen = __esm(() => {
520764
521431
  init_oauth();
520765
521432
  init_providerConfig();
@@ -520769,26 +521436,7 @@ var init_StartupScreen = __esm(() => {
520769
521436
  RESET2 = `${ESC4}0m`;
520770
521437
  DIM2 = `${ESC4}2m`;
520771
521438
  ACCENT = [173, 52, 254];
520772
- CREAM = [220, 200, 240];
520773
521439
  DIMCOL = [120, 100, 140];
520774
- VERBOO_LOGO = [
520775
- ` ▄▀▀▀▀▀▀▀▄ `,
520776
- `▄▀▀▀▀▀▀▀▀▀▀▀▄`,
520777
- `▀▀▀ ▀▀▀▀▀ ▀▀▀`,
520778
- `▀▀▀▀▀▀▀▀▀▀▀▀▀`,
520779
- `▀▀▀▀▀▄▄▄▀▀▀▀▀`,
520780
- ` ▀▀▀▀▀▀▀▀▀▀▀ `,
520781
- `▄▀▀ ▀▀▀▀▀ ▀▀▄`
520782
- ];
520783
- VERBOO_LOGO_MASK = [
520784
- ` 011111110 `,
520785
- `0111111111110`,
520786
- `1110111110111`,
520787
- `1111011101111`,
520788
- `1111100011111`,
520789
- ` 11111111111 `,
520790
- `110 01110 011`
520791
- ];
520792
521440
  });
520793
521441
 
520794
521442
  // node_modules/commander/lib/error.js
@@ -539999,7 +540647,7 @@ var init_routerRateLimitHook = __esm(() => {
539999
540647
  function getSemverPart(version3) {
540000
540648
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
540001
540649
  }
540002
- function useUpdateNotification(updatedVersion, initialVersion = "0.15.5") {
540650
+ function useUpdateNotification(updatedVersion, initialVersion = "0.15.6") {
540003
540651
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
540004
540652
  const [pendingNotification2, setPendingNotification] = import_react227.useState(null);
540005
540653
  if (updatedVersion) {
@@ -540039,7 +540687,7 @@ function AutoUpdater({
540039
540687
  return;
540040
540688
  }
540041
540689
  if (false) {}
540042
- const currentVersion = "0.15.5";
540690
+ const currentVersion = "0.15.6";
540043
540691
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
540044
540692
  let latestVersion = await getLatestVersion(channel2);
540045
540693
  const isDisabled = isAutoUpdaterDisabled();
@@ -540392,17 +541040,17 @@ function PackageManagerAutoUpdater(t0) {
540392
541040
  const maxVersion = await getMaxVersion();
540393
541041
  if (maxVersion && latest && gt(latest, maxVersion)) {
540394
541042
  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`);
541043
+ if (gte("0.15.6", maxVersion)) {
541044
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.15.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
540397
541045
  setUpdateAvailable(false);
540398
541046
  return;
540399
541047
  }
540400
541048
  latest = maxVersion;
540401
541049
  }
540402
- const hasUpdate = latest && !gte("0.15.5", latest) && !shouldSkipVersion(latest);
541050
+ const hasUpdate = latest && !gte("0.15.6", latest) && !shouldSkipVersion(latest);
540403
541051
  setUpdateAvailable(!!hasUpdate);
540404
541052
  if (hasUpdate) {
540405
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.5"} -> ${latest}`);
541053
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.6"} -> ${latest}`);
540406
541054
  }
540407
541055
  };
540408
541056
  $2[0] = t1;
@@ -540436,7 +541084,7 @@ function PackageManagerAutoUpdater(t0) {
540436
541084
  wrap: "truncate",
540437
541085
  children: [
540438
541086
  "currentVersion: ",
540439
- "0.15.5"
541087
+ "0.15.6"
540440
541088
  ]
540441
541089
  });
540442
541090
  $2[3] = verbose;
@@ -551756,8 +552404,9 @@ function usePromptInputPlaceholder({
551756
552404
  return "Press up to edit queued messages";
551757
552405
  }
551758
552406
  if (submitCount < 1 && promptSuggestionEnabled && !proactiveModule4?.isProactiveActive()) {
551759
- return getExampleCommandFromCache();
552407
+ return getExampleCommandFromCache() ?? "Ask Verboo to build, fix, or explain…";
551760
552408
  }
552409
+ return "Ask Verboo to build, fix, or explain…";
551761
552410
  }, [
551762
552411
  input,
551763
552412
  queuedCommands,
@@ -553611,7 +554260,6 @@ function PromptInput({
553611
554260
  hasStash: stashedPrompt !== undefined
553612
554261
  }),
553613
554262
  /* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
553614
- marginTop: 1,
553615
554263
  marginLeft: 2,
553616
554264
  height: 1,
553617
554265
  overflow: "hidden",
@@ -553670,6 +554318,7 @@ function PromptInput({
553670
554318
  children: /* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
553671
554319
  borderStyle: "round",
553672
554320
  borderColor: getBorderColor(),
554321
+ borderText: buildPromptBorderText(mode),
553673
554322
  paddingLeft: 1,
553674
554323
  width: "100%",
553675
554324
  children: /* @__PURE__ */ jsx_runtime441.jsxs(ThemedBox_default, {
@@ -553792,6 +554441,14 @@ function getInitialPasteId(messages) {
553792
554441
  }
553793
554442
  return maxId + 1;
553794
554443
  }
554444
+ function buildPromptBorderText(mode) {
554445
+ return {
554446
+ content: mode === "bash" ? " shell " : " \uD83D\uDC7B ",
554447
+ position: "top",
554448
+ align: "start",
554449
+ offset: 1
554450
+ };
554451
+ }
553795
554452
  var React158, import_react261, jsx_runtime441, PROMPT_FOOTER_LINES = 5, MIN_INPUT_VIEWPORT_LINES = 3, PromptInput_default;
553796
554453
  var init_PromptInput = __esm(() => {
553797
554454
  init_notifications();
@@ -556454,10 +557111,10 @@ async function autoUpdateCliInBackground() {
556454
557111
  return;
556455
557112
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
556456
557113
  const latest = await getLatestVersion(channel2);
556457
- if (!latest || gte("0.15.5", latest))
557114
+ if (!latest || gte("0.15.6", latest))
556458
557115
  return;
556459
557116
  writeToStdout(`
556460
- Nova versão disponível: ${latest} (atual: ${"0.15.5"})
557117
+ Nova versão disponível: ${latest} (atual: ${"0.15.6"})
556461
557118
  `);
556462
557119
  writeToStdout(`Atualizando automaticamente...
556463
557120
  `);
@@ -574636,874 +575293,53 @@ var init_ApproveApiKey = __esm(() => {
574636
575293
 
574637
575294
  // src/components/LogoV2/WelcomeV2.tsx
574638
575295
  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, {
575296
+ const version3 = "0.15.6";
575297
+ return /* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
575298
+ flexDirection: "column",
575299
+ marginY: 1,
575300
+ paddingX: 1,
575301
+ children: [
575302
+ /* @__PURE__ */ jsx_runtime480.jsxs(ThemedBox_default, {
575303
+ flexDirection: "row",
575304
+ gap: 1,
575305
+ alignItems: "center",
574732
575306
  children: [
574733
575307
  /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574734
- dimColor: true,
574735
- children: " ░░░░"
575308
+ children: "\uD83D\uDC7B"
574736
575309
  }),
574737
575310
  /* @__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: " ░░░░░░░░░░"
575311
+ bold: true,
575312
+ color: "claude",
575313
+ children: "Verboo Code"
574754
575314
  }),
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, {
574856
- 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, {
575022
- 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
575315
  /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575316
+ dimColor: true,
575039
575317
  children: [
575040
- "…………………",
575041
- " ",
575042
- "………………………………………………………………………………………………………………"
575318
+ "v",
575319
+ version3
575043
575320
  ]
575044
575321
  })
575045
575322
  ]
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
- }),
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
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575178
- dimColor: true,
575179
- children: " ░░░░░░░░░░"
575180
- }),
575181
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575182
- children: " ██▒▒██ "
575183
- })
575184
- ]
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, {
575323
+ }),
575324
+ /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575325
+ paddingLeft: 3,
575326
+ children: /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575404
575327
  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: " "
575328
+ children: "Build, debug, and ship from your terminal."
575431
575329
  })
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
575330
  })
575488
- });
575489
- $2[42] = t3;
575490
- $2[43] = t19;
575491
- } else {
575492
- t19 = $2[43];
575493
- }
575494
- return t19;
575331
+ ]
575332
+ });
575495
575333
  }
575496
- var import_react_compiler_runtime359, jsx_runtime480, WELCOME_V2_WIDTH = 58;
575334
+ var jsx_runtime480;
575497
575335
  var init_WelcomeV2 = __esm(() => {
575498
575336
  init_ink2();
575499
- init_env();
575500
- import_react_compiler_runtime359 = __toESM(require_dist3(), 1);
575501
575337
  jsx_runtime480 = __toESM(require_jsx_runtime(), 1);
575502
575338
  });
575503
575339
 
575504
575340
  // src/components/ui/OrderedListItem.tsx
575505
575341
  function OrderedListItem(t0) {
575506
- const $2 = import_react_compiler_runtime360.c(7);
575342
+ const $2 = import_react_compiler_runtime359.c(7);
575507
575343
  const {
575508
575344
  children
575509
575345
  } = t0;
@@ -575549,10 +575385,10 @@ function OrderedListItem(t0) {
575549
575385
  }
575550
575386
  return t3;
575551
575387
  }
575552
- var import_react_compiler_runtime360, import_react325, jsx_runtime481, OrderedListItemContext;
575388
+ var import_react_compiler_runtime359, import_react325, jsx_runtime481, OrderedListItemContext;
575553
575389
  var init_OrderedListItem = __esm(() => {
575554
575390
  init_ink2();
575555
- import_react_compiler_runtime360 = __toESM(require_dist3(), 1);
575391
+ import_react_compiler_runtime359 = __toESM(require_dist3(), 1);
575556
575392
  import_react325 = __toESM(require_react(), 1);
575557
575393
  jsx_runtime481 = __toESM(require_jsx_runtime(), 1);
575558
575394
  OrderedListItemContext = import_react325.createContext({
@@ -575562,7 +575398,7 @@ var init_OrderedListItem = __esm(() => {
575562
575398
 
575563
575399
  // src/components/ui/OrderedList.tsx
575564
575400
  function OrderedListComponent(t0) {
575565
- const $2 = import_react_compiler_runtime361.c(9);
575401
+ const $2 = import_react_compiler_runtime360.c(9);
575566
575402
  const {
575567
575403
  children
575568
575404
  } = t0;
@@ -575626,11 +575462,11 @@ function OrderedListComponent(t0) {
575626
575462
  }
575627
575463
  return t2;
575628
575464
  }
575629
- var import_react_compiler_runtime361, import_react326, jsx_runtime482, OrderedListContext, OrderedList;
575465
+ var import_react_compiler_runtime360, import_react326, jsx_runtime482, OrderedListContext, OrderedList;
575630
575466
  var init_OrderedList = __esm(() => {
575631
575467
  init_ink2();
575632
575468
  init_OrderedListItem();
575633
- import_react_compiler_runtime361 = __toESM(require_dist3(), 1);
575469
+ import_react_compiler_runtime360 = __toESM(require_dist3(), 1);
575634
575470
  import_react326 = __toESM(require_react(), 1);
575635
575471
  jsx_runtime482 = __toESM(require_jsx_runtime(), 1);
575636
575472
  OrderedListContext = import_react326.createContext({
@@ -575911,7 +575747,7 @@ function Onboarding({
575911
575747
  });
575912
575748
  }
575913
575749
  function SkippableStep(t0) {
575914
- const $2 = import_react_compiler_runtime362.c(4);
575750
+ const $2 = import_react_compiler_runtime361.c(4);
575915
575751
  const {
575916
575752
  skip,
575917
575753
  onSkip,
@@ -575940,7 +575776,7 @@ function SkippableStep(t0) {
575940
575776
  }
575941
575777
  return children;
575942
575778
  }
575943
- var import_react_compiler_runtime362, import_react327, jsx_runtime483;
575779
+ var import_react_compiler_runtime361, import_react327, jsx_runtime483;
575944
575780
  var init_Onboarding = __esm(() => {
575945
575781
  init_terminalSetup();
575946
575782
  init_useExitOnCtrlCDWithKeybindings();
@@ -575959,7 +575795,7 @@ var init_Onboarding = __esm(() => {
575959
575795
  init_PressEnterToContinue();
575960
575796
  init_ThemePicker();
575961
575797
  init_OrderedList();
575962
- import_react_compiler_runtime362 = __toESM(require_dist3(), 1);
575798
+ import_react_compiler_runtime361 = __toESM(require_dist3(), 1);
575963
575799
  import_react327 = __toESM(require_react(), 1);
575964
575800
  jsx_runtime483 = __toESM(require_jsx_runtime(), 1);
575965
575801
  });
@@ -576103,7 +575939,7 @@ __export(exports_TrustDialog, {
576103
575939
  });
576104
575940
  import { homedir as homedir38 } from "os";
576105
575941
  function TrustDialog(t0) {
576106
- const $2 = import_react_compiler_runtime363.c(33);
575942
+ const $2 = import_react_compiler_runtime362.c(33);
576107
575943
  const {
576108
575944
  onDone,
576109
575945
  commands
@@ -576422,7 +576258,7 @@ function _temp298(command11) {
576422
576258
  function _temp299(tool) {
576423
576259
  return tool === BASH_TOOL_NAME || tool.startsWith(BASH_TOOL_NAME + "(");
576424
576260
  }
576425
- var import_react_compiler_runtime363, import_react328, jsx_runtime484;
576261
+ var import_react_compiler_runtime362, import_react328, jsx_runtime484;
576426
576262
  var init_TrustDialog = __esm(() => {
576427
576263
  init_state();
576428
576264
  init_useExitOnCtrlCDWithKeybindings();
@@ -576436,7 +576272,7 @@ var init_TrustDialog = __esm(() => {
576436
576272
  init_CustomSelect();
576437
576273
  init_PermissionDialog();
576438
576274
  init_utils13();
576439
- import_react_compiler_runtime363 = __toESM(require_dist3(), 1);
576275
+ import_react_compiler_runtime362 = __toESM(require_dist3(), 1);
576440
576276
  import_react328 = __toESM(require_react(), 1);
576441
576277
  jsx_runtime484 = __toESM(require_jsx_runtime(), 1);
576442
576278
  });
@@ -576447,7 +576283,7 @@ __export(exports_BypassPermissionsModeDialog, {
576447
576283
  BypassPermissionsModeDialog: () => BypassPermissionsModeDialog
576448
576284
  });
576449
576285
  function BypassPermissionsModeDialog(t0) {
576450
- const $2 = import_react_compiler_runtime364.c(7);
576286
+ const $2 = import_react_compiler_runtime363.c(7);
576451
576287
  const {
576452
576288
  onAccept
576453
576289
  } = t0;
@@ -576549,14 +576385,14 @@ function _temp2100() {
576549
576385
  function _temp301() {
576550
576386
  logEvent("tengu_bypass_permissions_mode_dialog_shown", {});
576551
576387
  }
576552
- var import_react_compiler_runtime364, import_react329, jsx_runtime485;
576388
+ var import_react_compiler_runtime363, import_react329, jsx_runtime485;
576553
576389
  var init_BypassPermissionsModeDialog = __esm(() => {
576554
576390
  init_ink2();
576555
576391
  init_gracefulShutdown();
576556
576392
  init_settings2();
576557
576393
  init_CustomSelect();
576558
576394
  init_Dialog();
576559
- import_react_compiler_runtime364 = __toESM(require_dist3(), 1);
576395
+ import_react_compiler_runtime363 = __toESM(require_dist3(), 1);
576560
576396
  import_react329 = __toESM(require_react(), 1);
576561
576397
  jsx_runtime485 = __toESM(require_jsx_runtime(), 1);
576562
576398
  });
@@ -576567,7 +576403,7 @@ __export(exports_ClaudeInChromeOnboarding, {
576567
576403
  ClaudeInChromeOnboarding: () => ClaudeInChromeOnboarding
576568
576404
  });
576569
576405
  function ClaudeInChromeOnboarding(t0) {
576570
- const $2 = import_react_compiler_runtime365.c(20);
576406
+ const $2 = import_react_compiler_runtime364.c(20);
576571
576407
  const {
576572
576408
  onDone
576573
576409
  } = t0;
@@ -576733,13 +576569,13 @@ function _temp302(current) {
576733
576569
  hasCompletedClaudeInChromeOnboarding: true
576734
576570
  };
576735
576571
  }
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";
576572
+ 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
576573
  var init_ClaudeInChromeOnboarding = __esm(() => {
576738
576574
  init_ink2();
576739
576575
  init_setup2();
576740
576576
  init_config();
576741
576577
  init_Dialog();
576742
- import_react_compiler_runtime365 = __toESM(require_dist3(), 1);
576578
+ import_react_compiler_runtime364 = __toESM(require_dist3(), 1);
576743
576579
  import_react330 = __toESM(require_react(), 1);
576744
576580
  jsx_runtime486 = __toESM(require_jsx_runtime(), 1);
576745
576581
  });
@@ -577000,7 +576836,7 @@ __export(exports_InvalidSettingsDialog, {
577000
576836
  InvalidSettingsDialog: () => InvalidSettingsDialog
577001
576837
  });
577002
576838
  function InvalidSettingsDialog(t0) {
577003
- const $2 = import_react_compiler_runtime366.c(13);
576839
+ const $2 = import_react_compiler_runtime365.c(13);
577004
576840
  const {
577005
576841
  settingsErrors,
577006
576842
  onContinue,
@@ -577087,19 +576923,19 @@ function InvalidSettingsDialog(t0) {
577087
576923
  }
577088
576924
  return t6;
577089
576925
  }
577090
- var import_react_compiler_runtime366, jsx_runtime488;
576926
+ var import_react_compiler_runtime365, jsx_runtime488;
577091
576927
  var init_InvalidSettingsDialog = __esm(() => {
577092
576928
  init_ink2();
577093
576929
  init_CustomSelect();
577094
576930
  init_Dialog();
577095
576931
  init_ValidationErrorsList();
577096
- import_react_compiler_runtime366 = __toESM(require_dist3(), 1);
576932
+ import_react_compiler_runtime365 = __toESM(require_dist3(), 1);
577097
576933
  jsx_runtime488 = __toESM(require_jsx_runtime(), 1);
577098
576934
  });
577099
576935
 
577100
576936
  // src/hooks/useTeleportResume.tsx
577101
576937
  function useTeleportResume(source) {
577102
- const $2 = import_react_compiler_runtime367.c(8);
576938
+ const $2 = import_react_compiler_runtime366.c(8);
577103
576939
  const [isResuming, setIsResuming] = import_react331.useState(false);
577104
576940
  const [error42, setError] = import_react331.useState(null);
577105
576941
  const [selectedSession, setSelectedSession] = import_react331.useState(null);
@@ -577167,12 +577003,12 @@ function useTeleportResume(source) {
577167
577003
  }
577168
577004
  return t2;
577169
577005
  }
577170
- var import_react_compiler_runtime367, import_react331;
577006
+ var import_react_compiler_runtime366, import_react331;
577171
577007
  var init_useTeleportResume = __esm(() => {
577172
577008
  init_state();
577173
577009
  init_errors();
577174
577010
  init_teleport();
577175
- import_react_compiler_runtime367 = __toESM(require_dist3(), 1);
577011
+ import_react_compiler_runtime366 = __toESM(require_dist3(), 1);
577176
577012
  import_react331 = __toESM(require_react(), 1);
577177
577013
  });
577178
577014
 
@@ -577547,7 +577383,7 @@ __export(exports_TeleportResumeWrapper, {
577547
577383
  TeleportResumeWrapper: () => TeleportResumeWrapper
577548
577384
  });
577549
577385
  function TeleportResumeWrapper(t0) {
577550
- const $2 = import_react_compiler_runtime368.c(25);
577386
+ const $2 = import_react_compiler_runtime367.c(25);
577551
577387
  const {
577552
577388
  onComplete,
577553
577389
  onCancel,
@@ -577745,14 +577581,14 @@ function TeleportResumeWrapper(t0) {
577745
577581
  }
577746
577582
  return t8;
577747
577583
  }
577748
- var import_react_compiler_runtime368, import_react333, jsx_runtime490;
577584
+ var import_react_compiler_runtime367, import_react333, jsx_runtime490;
577749
577585
  var init_TeleportResumeWrapper = __esm(() => {
577750
577586
  init_useTeleportResume();
577751
577587
  init_ink2();
577752
577588
  init_useKeybinding();
577753
577589
  init_ResumeTask();
577754
577590
  init_Spinner2();
577755
- import_react_compiler_runtime368 = __toESM(require_dist3(), 1);
577591
+ import_react_compiler_runtime367 = __toESM(require_dist3(), 1);
577756
577592
  import_react333 = __toESM(require_react(), 1);
577757
577593
  jsx_runtime490 = __toESM(require_jsx_runtime(), 1);
577758
577594
  });
@@ -577763,7 +577599,7 @@ __export(exports_TeleportRepoMismatchDialog, {
577763
577599
  TeleportRepoMismatchDialog: () => TeleportRepoMismatchDialog
577764
577600
  });
577765
577601
  function TeleportRepoMismatchDialog(t0) {
577766
- const $2 = import_react_compiler_runtime369.c(18);
577602
+ const $2 = import_react_compiler_runtime368.c(18);
577767
577603
  const {
577768
577604
  targetRepo,
577769
577605
  initialPaths,
@@ -577914,7 +577750,7 @@ function _temp303(path24) {
577914
577750
  value: path24
577915
577751
  };
577916
577752
  }
577917
- var import_react_compiler_runtime369, import_react334, jsx_runtime491;
577753
+ var import_react_compiler_runtime368, import_react334, jsx_runtime491;
577918
577754
  var init_TeleportRepoMismatchDialog = __esm(() => {
577919
577755
  init_ink2();
577920
577756
  init_file();
@@ -577922,7 +577758,7 @@ var init_TeleportRepoMismatchDialog = __esm(() => {
577922
577758
  init_CustomSelect();
577923
577759
  init_Dialog();
577924
577760
  init_Spinner2();
577925
- import_react_compiler_runtime369 = __toESM(require_dist3(), 1);
577761
+ import_react_compiler_runtime368 = __toESM(require_dist3(), 1);
577926
577762
  import_react334 = __toESM(require_react(), 1);
577927
577763
  jsx_runtime491 = __toESM(require_jsx_runtime(), 1);
577928
577764
  });
@@ -578240,7 +578076,7 @@ function ResumeConversation({
578240
578076
  });
578241
578077
  }
578242
578078
  function NoConversationsMessage() {
578243
- const $2 = import_react_compiler_runtime370.c(2);
578079
+ const $2 = import_react_compiler_runtime369.c(2);
578244
578080
  let t0;
578245
578081
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
578246
578082
  t0 = {
@@ -578275,7 +578111,7 @@ function _temp304() {
578275
578111
  process.exit(1);
578276
578112
  }
578277
578113
  function CrossProjectMessage(t0) {
578278
- const $2 = import_react_compiler_runtime370.c(8);
578114
+ const $2 = import_react_compiler_runtime369.c(8);
578279
578115
  const {
578280
578116
  command: command11
578281
578117
  } = t0;
@@ -578359,7 +578195,7 @@ function _temp360() {
578359
578195
  function _temp2101() {
578360
578196
  process.exit(0);
578361
578197
  }
578362
- var import_react_compiler_runtime370, import_react335, jsx_runtime492;
578198
+ var import_react_compiler_runtime369, import_react335, jsx_runtime492;
578363
578199
  var init_ResumeConversation = __esm(() => {
578364
578200
  init_useTerminalSize();
578365
578201
  init_state();
@@ -578381,7 +578217,7 @@ var init_ResumeConversation = __esm(() => {
578381
578217
  init_sessionRestore();
578382
578218
  init_sessionStorage();
578383
578219
  init_REPL();
578384
- import_react_compiler_runtime370 = __toESM(require_dist3(), 1);
578220
+ import_react_compiler_runtime369 = __toESM(require_dist3(), 1);
578385
578221
  import_react335 = __toESM(require_react(), 1);
578386
578222
  jsx_runtime492 = __toESM(require_jsx_runtime(), 1);
578387
578223
  });
@@ -580467,7 +580303,7 @@ var init_addCommand = __esm(() => {
580467
580303
 
580468
580304
  // src/components/MCPServerDesktopImportDialog.tsx
580469
580305
  function MCPServerDesktopImportDialog(t0) {
580470
- const $2 = import_react_compiler_runtime371.c(36);
580306
+ const $2 = import_react_compiler_runtime370.c(36);
580471
580307
  const {
580472
580308
  servers,
580473
580309
  scope,
@@ -580703,7 +580539,7 @@ No servers were imported.`);
580703
580539
  }
580704
580540
  return t18;
580705
580541
  }
580706
- var import_react_compiler_runtime371, import_react336, jsx_runtime494;
580542
+ var import_react_compiler_runtime370, import_react336, jsx_runtime494;
580707
580543
  var init_MCPServerDesktopImportDialog = __esm(() => {
580708
580544
  init_gracefulShutdown();
580709
580545
  init_ink2();
@@ -580714,7 +580550,7 @@ var init_MCPServerDesktopImportDialog = __esm(() => {
580714
580550
  init_Byline();
580715
580551
  init_Dialog();
580716
580552
  init_KeyboardShortcutHint();
580717
- import_react_compiler_runtime371 = __toESM(require_dist3(), 1);
580553
+ import_react_compiler_runtime370 = __toESM(require_dist3(), 1);
580718
580554
  import_react336 = __toESM(require_react(), 1);
580719
580555
  jsx_runtime494 = __toESM(require_jsx_runtime(), 1);
580720
580556
  });
@@ -592362,7 +592198,7 @@ __export(exports_TeleportProgress, {
592362
592198
  TeleportProgress: () => TeleportProgress
592363
592199
  });
592364
592200
  function TeleportProgress(t0) {
592365
- const $2 = import_react_compiler_runtime372.c(16);
592201
+ const $2 = import_react_compiler_runtime371.c(16);
592366
592202
  const {
592367
592203
  currentStep,
592368
592204
  sessionId
@@ -592515,13 +592351,13 @@ async function teleportWithProgress(root2, sessionId) {
592515
592351
  branchName
592516
592352
  };
592517
592353
  }
592518
- var import_react_compiler_runtime372, import_react337, jsx_runtime496, SPINNER_FRAMES3, STEPS;
592354
+ var import_react_compiler_runtime371, import_react337, jsx_runtime496, SPINNER_FRAMES3, STEPS;
592519
592355
  var init_TeleportProgress = __esm(() => {
592520
592356
  init_figures();
592521
592357
  init_ink2();
592522
592358
  init_AppState();
592523
592359
  init_teleport();
592524
- import_react_compiler_runtime372 = __toESM(require_dist3(), 1);
592360
+ import_react_compiler_runtime371 = __toESM(require_dist3(), 1);
592525
592361
  import_react337 = __toESM(require_react(), 1);
592526
592362
  jsx_runtime496 = __toESM(require_jsx_runtime(), 1);
592527
592363
  SPINNER_FRAMES3 = ["◐", "◓", "◑", "◒"];
@@ -593080,7 +592916,7 @@ function getInstallationPath2() {
593080
592916
  return "verboo-code/bin/verboo";
593081
592917
  }
593082
592918
  function SetupNotes(t0) {
593083
- const $2 = import_react_compiler_runtime373.c(5);
592919
+ const $2 = import_react_compiler_runtime372.c(5);
593084
592920
  const {
593085
592921
  messages
593086
592922
  } = t0;
@@ -593397,7 +593233,7 @@ function Install({
593397
593233
  ]
593398
593234
  });
593399
593235
  }
593400
- var import_react_compiler_runtime373, import_react338, jsx_runtime497, install;
593236
+ var import_react_compiler_runtime372, import_react338, jsx_runtime497, install;
593401
593237
  var init_install = __esm(() => {
593402
593238
  init_StatusIcon();
593403
593239
  init_ink2();
@@ -593406,7 +593242,7 @@ var init_install = __esm(() => {
593406
593242
  init_errors();
593407
593243
  init_nativeInstaller();
593408
593244
  init_settings2();
593409
- import_react_compiler_runtime373 = __toESM(require_dist3(), 1);
593245
+ import_react_compiler_runtime372 = __toESM(require_dist3(), 1);
593410
593246
  import_react338 = __toESM(require_react(), 1);
593411
593247
  jsx_runtime497 = __toESM(require_jsx_runtime(), 1);
593412
593248
  install = {
@@ -593484,7 +593320,7 @@ async function setupTokenHandler(root2) {
593484
593320
  process.exit(0);
593485
593321
  }
593486
593322
  function DoctorWithPlugins(t0) {
593487
- const $2 = import_react_compiler_runtime374.c(2);
593323
+ const $2 = import_react_compiler_runtime373.c(2);
593488
593324
  const {
593489
593325
  onDone
593490
593326
  } = t0;
@@ -593544,7 +593380,7 @@ async function installHandler(target, options2) {
593544
593380
  }, {}, args);
593545
593381
  });
593546
593382
  }
593547
- var import_react_compiler_runtime374, import_react339, jsx_runtime498, DoctorLazy;
593383
+ var import_react_compiler_runtime373, import_react339, jsx_runtime498, DoctorLazy;
593548
593384
  var init_util3 = __esm(() => {
593549
593385
  init_WelcomeV2();
593550
593386
  init_useManagePlugins();
@@ -593554,7 +593390,7 @@ var init_util3 = __esm(() => {
593554
593390
  init_AppState();
593555
593391
  init_onChangeAppState();
593556
593392
  init_auth();
593557
- import_react_compiler_runtime374 = __toESM(require_dist3(), 1);
593393
+ import_react_compiler_runtime373 = __toESM(require_dist3(), 1);
593558
593394
  import_react339 = __toESM(require_react(), 1);
593559
593395
  jsx_runtime498 = __toESM(require_jsx_runtime(), 1);
593560
593396
  DoctorLazy = import_react339.default.lazy(() => Promise.resolve().then(() => (init_Doctor(), exports_Doctor)).then((m) => ({
@@ -593744,7 +593580,7 @@ __export(exports_update, {
593744
593580
  });
593745
593581
  async function update() {
593746
593582
  logEvent("tengu_update_check", {});
593747
- writeToStdout(`Current version: ${"0.15.5"}
593583
+ writeToStdout(`Current version: ${"0.15.6"}
593748
593584
  `);
593749
593585
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
593750
593586
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -593829,8 +593665,8 @@ async function update() {
593829
593665
  writeToStdout(`Verboo Code is managed by Homebrew.
593830
593666
  `);
593831
593667
  const latest = await getLatestVersion(channel2);
593832
- if (latest && !gte("0.15.5", latest)) {
593833
- writeToStdout(`Update available: ${"0.15.5"} → ${latest}
593668
+ if (latest && !gte("0.15.6", latest)) {
593669
+ writeToStdout(`Update available: ${"0.15.6"} → ${latest}
593834
593670
  `);
593835
593671
  writeToStdout(`
593836
593672
  `);
@@ -593846,8 +593682,8 @@ async function update() {
593846
593682
  writeToStdout(`Verboo Code is managed by winget.
593847
593683
  `);
593848
593684
  const latest = await getLatestVersion(channel2);
593849
- if (latest && !gte("0.15.5", latest)) {
593850
- writeToStdout(`Update available: ${"0.15.5"} → ${latest}
593685
+ if (latest && !gte("0.15.6", latest)) {
593686
+ writeToStdout(`Update available: ${"0.15.6"} → ${latest}
593851
593687
  `);
593852
593688
  writeToStdout(`
593853
593689
  `);
@@ -593863,8 +593699,8 @@ async function update() {
593863
593699
  writeToStdout(`Verboo Code is managed by apk.
593864
593700
  `);
593865
593701
  const latest = await getLatestVersion(channel2);
593866
- if (latest && !gte("0.15.5", latest)) {
593867
- writeToStdout(`Update available: ${"0.15.5"} → ${latest}
593702
+ if (latest && !gte("0.15.6", latest)) {
593703
+ writeToStdout(`Update available: ${"0.15.6"} → ${latest}
593868
593704
  `);
593869
593705
  writeToStdout(`
593870
593706
  `);
@@ -593917,11 +593753,11 @@ async function update() {
593917
593753
  `);
593918
593754
  await gracefulShutdown(1);
593919
593755
  }
593920
- if (result.latestVersion === "0.15.5") {
593921
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.5"})`) + `
593756
+ if (result.latestVersion === "0.15.6") {
593757
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.6"})`) + `
593922
593758
  `);
593923
593759
  } else {
593924
- writeToStdout(source_default.green(`Successfully updated from ${"0.15.5"} to version ${result.latestVersion}`) + `
593760
+ writeToStdout(source_default.green(`Successfully updated from ${"0.15.6"} to version ${result.latestVersion}`) + `
593925
593761
  `);
593926
593762
  await regenerateCompletionCache();
593927
593763
  }
@@ -593981,12 +593817,12 @@ async function update() {
593981
593817
  `);
593982
593818
  await gracefulShutdown(1);
593983
593819
  }
593984
- if (latestVersion === "0.15.5") {
593985
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.5"})`) + `
593820
+ if (latestVersion === "0.15.6") {
593821
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.6"})`) + `
593986
593822
  `);
593987
593823
  await gracefulShutdown(0);
593988
593824
  }
593989
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.5"})
593825
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.6"})
593990
593826
  `);
593991
593827
  writeToStdout(`Installing update...
593992
593828
  `);
@@ -594031,7 +593867,7 @@ async function update() {
594031
593867
  logForDebugging(`update: Installation status: ${status2}`);
594032
593868
  switch (status2) {
594033
593869
  case "success":
594034
- writeToStdout(source_default.green(`Successfully updated from ${"0.15.5"} to version ${latestVersion}`) + `
593870
+ writeToStdout(source_default.green(`Successfully updated from ${"0.15.6"} to version ${latestVersion}`) + `
594035
593871
  `);
594036
593872
  await regenerateCompletionCache();
594037
593873
  break;
@@ -595350,7 +595186,7 @@ ${customInstructions}` : customInstructions;
595350
595186
  is_native_binary: isInBundledMode()
595351
595187
  });
595352
595188
  logMemoryDiagnostics("start", {
595353
- version: "0.15.5",
595189
+ version: "0.15.6",
595354
595190
  debug: debug2,
595355
595191
  debugToStderr,
595356
595192
  print: print ?? false,
@@ -596161,7 +595997,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
596161
595997
  pendingHookMessages
596162
595998
  }, renderAndRun);
596163
595999
  }
596164
- }).version(`0.15.5 (${cliDesc})`, "-v, --version", "Output the version number");
596000
+ }).version(`0.15.6 (${cliDesc})`, "-v, --version", "Output the version number");
596165
596001
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
596166
596002
  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
596003
  if (canUserConfigureAdvisor()) {
@@ -596742,7 +596578,7 @@ if (false) {}
596742
596578
  async function main2() {
596743
596579
  const args = process.argv.slice(2);
596744
596580
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
596745
- console.log(`${"0.15.5"} (Verboo Code)`);
596581
+ console.log(`${"0.15.6"} (Verboo Code)`);
596746
596582
  return;
596747
596583
  }
596748
596584
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -596916,4 +596752,4 @@ async function main2() {
596916
596752
  }
596917
596753
  main2();
596918
596754
 
596919
- //# debugId=239F034E22FCB0DD64756E2164756E21
596755
+ //# debugId=592F0199B2BBA9C464756E2164756E21