@verboo/code 0.15.4 → 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 +927 -1071
  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.4";
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,122 @@ 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
+
211759
+ // src/query/model.ts
211760
+ function resolveQueryTurnModel({
211761
+ permissionMode,
211762
+ turnModel,
211763
+ sessionModel,
211764
+ exceeds200kTokens = false
211765
+ }) {
211766
+ const turnProfile = parseAgentModelProfileReference(turnModel);
211767
+ const profileModel = turnProfile ? resolveAgentProfileModel(turnProfile, getCachedVerbooModels() ?? []) : null;
211768
+ const requestedModel = (turnProfile ? profileModel : turnModel) ?? parseUserSpecifiedModel(sessionModel ?? getDefaultMainLoopModelSetting());
211769
+ return getRuntimeMainLoopModel({
211770
+ permissionMode,
211771
+ mainLoopModel: requestedModel,
211772
+ exceeds200kTokens
211773
+ });
211774
+ }
211775
+ var init_model2 = __esm(() => {
211776
+ init_agentModelProfiles();
211777
+ init_verbooModels();
211778
+ init_model();
211779
+ });
211780
+
211607
211781
  // src/tools/SleepTool/prompt.ts
211608
211782
  var SLEEP_TOOL_NAME = "Sleep", SLEEP_TOOL_PROMPT;
211609
211783
  var init_prompt8 = __esm(() => {
@@ -224577,11 +224751,18 @@ function getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMo
224577
224751
  if (aliasMatchesParentTier(toolSpecifiedModel, parentModel)) {
224578
224752
  return parentModel;
224579
224753
  }
224754
+ if (isClaudeFamilyAlias(toolSpecifiedModel) && !checkIsClaudeNativeProvider()) {
224755
+ return getRuntimeMainLoopModel({
224756
+ permissionMode: permissionMode ?? "default",
224757
+ mainLoopModel: parentModel,
224758
+ exceeds200kTokens: false
224759
+ });
224760
+ }
224580
224761
  const model3 = parseUserSpecifiedModel(toolSpecifiedModel);
224581
224762
  return applyParentRegionPrefix(model3, toolSpecifiedModel);
224582
224763
  }
224583
224764
  const agentModelWithExp = agentModel ?? getDefaultSubagentModel();
224584
- if ((agentModelWithExp === "haiku" || agentModelWithExp === "sonnet") && !checkIsClaudeNativeProvider()) {
224765
+ if (isClaudeFamilyAlias(agentModelWithExp) && !checkIsClaudeNativeProvider()) {
224585
224766
  return getRuntimeMainLoopModel({
224586
224767
  permissionMode: permissionMode ?? "default",
224587
224768
  mainLoopModel: parentModel,
@@ -224601,6 +224782,10 @@ function getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMo
224601
224782
  const model2 = parseUserSpecifiedModel(agentModelWithExp);
224602
224783
  return applyParentRegionPrefix(model2, agentModelWithExp);
224603
224784
  }
224785
+ function isClaudeFamilyAlias(model2) {
224786
+ const normalized = model2.trim().toLowerCase();
224787
+ return normalized === "haiku" || normalized === "sonnet" || normalized === "opus";
224788
+ }
224604
224789
  function aliasMatchesParentTier(alias, parentModel) {
224605
224790
  const canonical = getCanonicalName(parentModel);
224606
224791
  switch (alias.toLowerCase()) {
@@ -224663,43 +224848,338 @@ var init_agent = __esm(() => {
224663
224848
  function normalize8(key) {
224664
224849
  return key.toLowerCase().replace(/[-_]/g, "");
224665
224850
  }
224666
- function resolveAgentProvider(name, subagentType, settings) {
224667
- if (!settings)
224668
- return null;
224669
- const routing = settings.agentRouting;
224670
- const models = settings.agentModels;
224671
- if (!routing || !models)
224672
- 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;
224673
224858
  const normalizedRouting = new Map;
224674
224859
  for (const [key, value] of Object.entries(routing)) {
224675
- const nk = normalize8(key);
224676
- if (normalizedRouting.has(nk)) {
224677
- 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.`);
224678
224863
  }
224679
- if (!normalizedRouting.has(nk)) {
224680
- normalizedRouting.set(nk, value);
224864
+ if (!normalizedRouting.has(normalizedKey)) {
224865
+ normalizedRouting.set(normalizedKey, value);
224681
224866
  }
224682
224867
  }
224683
- const candidates = [name, subagentType, "default"].filter(Boolean);
224684
- let modelName;
224685
- for (const candidate of candidates) {
224868
+ for (const candidate of [name, subagentType, "default"].filter(Boolean)) {
224686
224869
  const match = normalizedRouting.get(normalize8(candidate));
224687
- if (match) {
224688
- modelName = match;
224689
- break;
224690
- }
224870
+ if (match !== undefined)
224871
+ return match;
224691
224872
  }
224692
- if (!modelName)
224873
+ return;
224874
+ }
224875
+ function resolveAgentRoute(name, subagentType, settings, availableModels = getCachedVerbooModels() ?? []) {
224876
+ if (!settings)
224693
224877
  return null;
224694
- const modelConfig = models[modelName];
224695
- if (!modelConfig)
224878
+ const routingValue = findRoutingValue(name, subagentType, settings);
224879
+ if (routingValue === undefined)
224696
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);
224697
225049
  return {
224698
- model: modelName,
224699
- baseURL: modelConfig.base_url,
224700
- 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
+ }
224701
225057
  };
224702
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";
224703
225183
 
224704
225184
  // src/utils/uuid.ts
224705
225185
  import { randomBytes as randomBytes5 } from "crypto";
@@ -225931,7 +226411,8 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225931
226411
  isBuiltInAgent: isBuiltInAgent2,
225932
226412
  startTime: startTime2,
225933
226413
  agentType,
225934
- isAsync: isAsync2
226414
+ isAsync: isAsync2,
226415
+ executionBudgetState
225935
226416
  } = metadata;
225936
226417
  const lastAssistantMessage = getLastAssistantMessage(agentMessages);
225937
226418
  if (lastAssistantMessage === undefined) {
@@ -225950,8 +226431,21 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225950
226431
  }
225951
226432
  }
225952
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
+ }
225953
226446
  const totalTokens = getTokenCountFromUsage(lastAssistantMessage.message.usage);
225954
226447
  const totalToolUseCount = countToolUses(agentMessages);
226448
+ const completionReason = executionBudgetState?.completionReason ?? "completed";
225955
226449
  logEvent("tengu_agent_tool_completed", {
225956
226450
  agent_type: agentType,
225957
226451
  model: resolvedAgentModel,
@@ -225962,7 +226456,13 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225962
226456
  duration_ms: Date.now() - startTime2,
225963
226457
  total_tokens: totalTokens,
225964
226458
  is_built_in_agent: isBuiltInAgent2,
225965
- 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
+ }
225966
226466
  });
225967
226467
  const lastRequestId = lastAssistantMessage.requestId;
225968
226468
  if (lastRequestId) {
@@ -225978,7 +226478,11 @@ function finalizeAgentTool(agentMessages, agentId, metadata) {
225978
226478
  totalDurationMs: Date.now() - startTime2,
225979
226479
  totalTokens,
225980
226480
  totalToolUseCount,
225981
- usage: lastAssistantMessage.message.usage
226481
+ usage: lastAssistantMessage.message.usage,
226482
+ ...executionBudgetState && {
226483
+ completionReason,
226484
+ budgetUsage: getAgentBudgetUsage(executionBudgetState)
226485
+ }
225982
226486
  };
225983
226487
  }
225984
226488
  function getLastToolUseName(message) {
@@ -226223,7 +226727,15 @@ var init_agentToolUtils = __esm(() => {
226223
226727
  ephemeral_1h_input_tokens: exports_external.number(),
226224
226728
  ephemeral_5m_input_tokens: exports_external.number()
226225
226729
  }).nullable()
226226
- })
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()
226227
226739
  }));
226228
226740
  });
226229
226741
 
@@ -311001,14 +311513,41 @@ async function* runAgent({
311001
311513
  description,
311002
311514
  transcriptSubdir,
311003
311515
  onQueryProgress,
311004
- agentName
311516
+ agentName,
311517
+ modelResolution,
311518
+ executionBudgetState: providedExecutionBudgetState
311005
311519
  }) {
311006
311520
  const appState = toolUseContext.getAppState();
311007
311521
  const permissionMode = appState.toolPermissionContext.mode;
311008
311522
  const rootSetAppState = toolUseContext.setAppStateForTasks ?? toolUseContext.setAppState;
311009
- const resolvedAgentModel = getAgentModel(agentDefinition.model, toolUseContext.options.mainLoopModel, model2, permissionMode);
311010
- const providerOverride = resolveAgentProvider(agentName, agentDefinition.agentType, getInitialSettings());
311011
- 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
+ });
311012
311551
  const agentId = override?.agentId ? override.agentId : createAgentId();
311013
311552
  if (transcriptSubdir) {
311014
311553
  setAgentTranscriptSubdir(agentId, transcriptSubdir);
@@ -311073,7 +311612,9 @@ async function* runAgent({
311073
311612
  const resolvedTools = useExactTools ? availableTools : resolveAgentTools(agentDefinition, availableTools, isAsync2).resolvedTools;
311074
311613
  const additionalWorkingDirectories = Array.from(appState.toolPermissionContext.additionalWorkingDirectories.keys());
311075
311614
  const agentSystemPrompt = override?.systemPrompt ? override.systemPrompt : asSystemPrompt(await getAgentSystemPrompt(agentDefinition, toolUseContext, resolvedAgentModel, additionalWorkingDirectories, resolvedTools));
311076
- 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;
311077
311618
  const additionalContexts = [];
311078
311619
  for await (const hookResult of executeSubagentStartHooks(agentId, agentDefinition.agentType, agentAbortController.signal)) {
311079
311620
  if (hookResult.additionalContexts && hookResult.additionalContexts.length > 0) {
@@ -311158,6 +311699,7 @@ async function* runAgent({
311158
311699
  shareSetAppState: !isAsync2,
311159
311700
  shareSetResponseLength: true,
311160
311701
  criticalSystemReminder_EXPERIMENTAL: agentDefinition.criticalSystemReminder_EXPERIMENTAL,
311702
+ requireCanUseTool: executionBudgetState !== undefined,
311161
311703
  contentReplacementState
311162
311704
  });
311163
311705
  if (preserveToolUseResults) {
@@ -311179,7 +311721,13 @@ async function* runAgent({
311179
311721
  ...description && { description }
311180
311722
  }).catch((_err) => logForDebugging(`Failed to write agent metadata: ${_err}`));
311181
311723
  let lastRecordedUuid = initialMessages.at(-1)?.uuid ?? null;
311724
+ const stopBudgetTimers = executionBudgetState ? startAgentBudgetTimers(executionBudgetState, agentAbortController) : undefined;
311182
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
+ }
311183
311731
  for await (const message of query({
311184
311732
  messages: initialMessages,
311185
311733
  systemPrompt: agentSystemPrompt,
@@ -311188,7 +311736,8 @@ async function* runAgent({
311188
311736
  canUseTool,
311189
311737
  toolUseContext: agentToolUseContext,
311190
311738
  querySource,
311191
- maxTurns: maxTurns ?? agentDefinition.maxTurns
311739
+ maxTurns: maxTurns ?? agentDefinition.maxTurns,
311740
+ executionBudgetState
311192
311741
  })) {
311193
311742
  onQueryProgress?.();
311194
311743
  if (message.type === "stream_event" && message.event.type === "message_start" && message.ttftMs != null) {
@@ -311220,13 +311769,14 @@ async function* runAgent({
311220
311769
  yield message;
311221
311770
  }
311222
311771
  }
311223
- if (agentAbortController.signal.aborted) {
311772
+ if (agentAbortController.signal.aborted && !isAgentBudgetTimeout(agentAbortController.signal)) {
311224
311773
  throw new AbortError;
311225
311774
  }
311226
311775
  if (isBuiltInAgent(agentDefinition) && agentDefinition.callback) {
311227
311776
  agentDefinition.callback();
311228
311777
  }
311229
311778
  } finally {
311779
+ stopBudgetTimers?.();
311230
311780
  await mcpCleanup();
311231
311781
  if (agentDefinition.hooks) {
311232
311782
  clearSessionHooks(rootSetAppState, agentId);
@@ -311327,8 +311877,9 @@ var init_runAgent = __esm(() => {
311327
311877
  init_sessionHooks();
311328
311878
  init_hooks5();
311329
311879
  init_messages3();
311330
- init_agent();
311880
+ init_agentRouting();
311331
311881
  init_settings2();
311882
+ init_abortController();
311332
311883
  init_sessionStorage();
311333
311884
  init_pluginOnlyPolicy();
311334
311885
  init_uuid();
@@ -375770,7 +376321,16 @@ async function resumeAgentBackground({
375770
376321
  throw new Error("Cannot resume fork agent: unable to reconstruct parent system prompt");
375771
376322
  }
375772
376323
  }
375773
- 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;
375774
376334
  const workerPermissionContext = {
375775
376335
  ...appState.toolPermissionContext,
375776
376336
  mode: selectedAgent.permissionMode ?? "acceptEdits"
@@ -375793,13 +376353,16 @@ async function resumeAgentBackground({
375793
376353
  ...isResumedFork && { useExactTools: true },
375794
376354
  worktreePath: resumedWorktreePath,
375795
376355
  description: meta?.description,
375796
- contentReplacementState: resumedReplacementState
376356
+ contentReplacementState: resumedReplacementState,
376357
+ modelResolution,
376358
+ executionBudgetState
375797
376359
  };
375798
376360
  const agentBackgroundTask = registerAsyncAgent({
375799
376361
  agentId,
375800
376362
  description: uiDescription,
375801
376363
  prompt,
375802
376364
  selectedAgent,
376365
+ model: resolvedAgentModel,
375803
376366
  setAppState: rootSetAppState,
375804
376367
  toolUseId: toolUseContext.toolUseId
375805
376368
  });
@@ -375809,7 +376372,8 @@ async function resumeAgentBackground({
375809
376372
  isBuiltInAgent: isBuiltInAgent(selectedAgent),
375810
376373
  startTime: startTime2,
375811
376374
  agentType: selectedAgent.agentType,
375812
- isAsync: true
376375
+ isAsync: true,
376376
+ executionBudgetState
375813
376377
  };
375814
376378
  const asyncAgentContext = {
375815
376379
  agentId,
@@ -375859,7 +376423,8 @@ var init_resumeAgent = __esm(() => {
375859
376423
  init_cwd2();
375860
376424
  init_debug();
375861
376425
  init_messages3();
375862
- init_agent();
376426
+ init_agentRouting();
376427
+ init_settings2();
375863
376428
  init_promptCategory();
375864
376429
  init_sessionStorage();
375865
376430
  init_systemPrompt();
@@ -378097,7 +378662,8 @@ var init_AgentTool = __esm(() => {
378097
378662
  init_envUtils();
378098
378663
  init_errors();
378099
378664
  init_messages3();
378100
- init_agent();
378665
+ init_agentRouting();
378666
+ init_settings2();
378101
378667
  init_PermissionMode();
378102
378668
  init_permissions2();
378103
378669
  init_sdkEventQueue();
@@ -378320,10 +378886,27 @@ var init_AgentTool = __esm(() => {
378320
378886
  if (selectedAgent.color) {
378321
378887
  setAgentColor(selectedAgent.agentType, selectedAgent.color);
378322
378888
  }
378323
- 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;
378324
378900
  logEvent("tengu_agent_tool_selected", {
378325
378901
  agent_type: selectedAgent.agentType,
378326
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
+ },
378327
378910
  source: selectedAgent.source,
378328
378911
  color: selectedAgent.color,
378329
378912
  is_built_in_agent: isBuiltInAgent(selectedAgent),
@@ -378373,13 +378956,15 @@ var init_AgentTool = __esm(() => {
378373
378956
  content: prompt
378374
378957
  })];
378375
378958
  }
378959
+ const executionBudgetState = selectedAgent.executionBudget ? createAgentExecutionBudgetState(selectedAgent.executionBudget, startTime2) : undefined;
378376
378960
  const metadata = {
378377
378961
  prompt,
378378
378962
  resolvedAgentModel,
378379
378963
  isBuiltInAgent: isBuiltInAgent(selectedAgent),
378380
378964
  startTime: startTime2,
378381
378965
  agentType: selectedAgent.agentType,
378382
- isAsync: (run_in_background === true || selectedAgent.background === true) && !isBackgroundTasksDisabled2
378966
+ isAsync: (run_in_background === true || selectedAgent.background === true) && !isBackgroundTasksDisabled2,
378967
+ executionBudgetState
378383
378968
  };
378384
378969
  const isCoordinator = isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE);
378385
378970
  const forceAsync = isForkSubagentEnabled();
@@ -378433,7 +379018,9 @@ var init_AgentTool = __esm(() => {
378433
379018
  },
378434
379019
  worktreePath: worktreeInfo?.worktreePath,
378435
379020
  description,
378436
- agentName: name
379021
+ agentName: name,
379022
+ modelResolution,
379023
+ executionBudgetState
378437
379024
  };
378438
379025
  const cwdOverridePath = cwd2 ?? worktreeInfo?.worktreePath;
378439
379026
  const wrapWithCwd = (fn) => cwdOverridePath ? runWithCwdOverride(cwdOverridePath, fn) : fn();
@@ -378478,6 +379065,7 @@ var init_AgentTool = __esm(() => {
378478
379065
  description,
378479
379066
  prompt,
378480
379067
  selectedAgent,
379068
+ model: resolvedAgentModel,
378481
379069
  setAppState: rootSetAppState,
378482
379070
  toolUseId: toolUseContext.toolUseId
378483
379071
  });
@@ -378575,6 +379163,7 @@ var init_AgentTool = __esm(() => {
378575
379163
  description,
378576
379164
  prompt,
378577
379165
  selectedAgent,
379166
+ model: resolvedAgentModel,
378578
379167
  setAppState: rootSetAppState,
378579
379168
  toolUseId: toolUseContext.toolUseId,
378580
379169
  autoBackgroundMs: getAutoBackgroundMs() || undefined
@@ -380101,6 +380690,7 @@ function registerAsyncAgent({
380101
380690
  description,
380102
380691
  prompt,
380103
380692
  selectedAgent,
380693
+ model: model2,
380104
380694
  setAppState,
380105
380695
  parentAbortController,
380106
380696
  toolUseId
@@ -380115,6 +380705,7 @@ function registerAsyncAgent({
380115
380705
  prompt,
380116
380706
  selectedAgent,
380117
380707
  agentType: selectedAgent.agentType ?? "general-purpose",
380708
+ model: model2,
380118
380709
  abortController,
380119
380710
  retrieved: false,
380120
380711
  lastReportedToolCount: 0,
@@ -380136,6 +380727,7 @@ function registerAgentForeground({
380136
380727
  description,
380137
380728
  prompt,
380138
380729
  selectedAgent,
380730
+ model: model2,
380139
380731
  setAppState,
380140
380732
  autoBackgroundMs,
380141
380733
  toolUseId
@@ -380153,6 +380745,7 @@ function registerAgentForeground({
380153
380745
  prompt,
380154
380746
  selectedAgent,
380155
380747
  agentType: selectedAgent.agentType ?? "general-purpose",
380748
+ model: model2,
380156
380749
  abortController,
380157
380750
  unregisterCleanup,
380158
380751
  retrieved: false,
@@ -388496,10 +389089,18 @@ var init_tokenBudget2 = __esm(() => {
388496
389089
  });
388497
389090
 
388498
389091
  // src/query.ts
388499
- 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
+ }));
388500
389099
  for (const assistantMessage2 of assistantMessages) {
388501
389100
  const toolUseBlocks = assistantMessage2.message.content.filter((content) => content.type === "tool_use");
388502
389101
  for (const toolUse of toolUseBlocks) {
389102
+ if (completedToolUseIds.has(toolUse.id))
389103
+ continue;
388503
389104
  yield createUserMessage({
388504
389105
  content: [
388505
389106
  {
@@ -388549,13 +389150,16 @@ async function* queryLoop(params, consumedCommandUuids) {
388549
389150
  systemPrompt,
388550
389151
  userContext,
388551
389152
  systemContext,
388552
- canUseTool,
389153
+ canUseTool: baseCanUseTool,
388553
389154
  fallbackModel,
388554
389155
  querySource,
388555
389156
  maxTurns,
388556
389157
  skipCacheWrite
388557
389158
  } = params;
388558
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.";
388559
389163
  let state2 = {
388560
389164
  messages: params.messages,
388561
389165
  toolUseContext: params.toolUseContext,
@@ -388574,6 +389178,46 @@ async function* queryLoop(params, consumedCommandUuids) {
388574
389178
  const config2 = buildQueryConfig();
388575
389179
  const pendingMemoryPrefetch = __using(__stack, startRelevantMemoryPrefetch(state2.messages, state2.toolUseContext), 0);
388576
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
+ }
388577
389221
  let { toolUseContext } = state2;
388578
389222
  const {
388579
389223
  messages,
@@ -388687,10 +389331,11 @@ async function* queryLoop(params, consumedCommandUuids) {
388687
389331
  let streamingToolExecutor = useStreamingToolExecution ? new StreamingToolExecutor(toolUseContext.options.tools, canUseTool, toolUseContext) : null;
388688
389332
  const appState = toolUseContext.getAppState();
388689
389333
  const permissionMode = appState.toolPermissionContext.mode;
388690
- const appStateMainLoopModel = appState.mainLoopModelForSession ?? appState.mainLoopModel ?? getDefaultMainLoopModelSetting();
388691
- let currentModel = getRuntimeMainLoopModel({
389334
+ const sessionModel = appState.mainLoopModelForSession ?? appState.mainLoopModel;
389335
+ let currentModel = resolveQueryTurnModel({
388692
389336
  permissionMode,
388693
- mainLoopModel: parseUserSpecifiedModel(appStateMainLoopModel),
389337
+ turnModel: toolUseContext.options.mainLoopModel,
389338
+ sessionModel,
388694
389339
  exceeds200kTokens: permissionMode === "plan" && doesMostRecentAssistantMessageExceed200k(messagesForQuery)
388695
389340
  });
388696
389341
  queryCheckpoint("query_setup_end");
@@ -388726,6 +389371,21 @@ async function* queryLoop(params, consumedCommandUuids) {
388726
389371
  while (attemptWithFallback) {
388727
389372
  attemptWithFallback = false;
388728
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
+ }
388729
389389
  let streamingFallbackOccured = false;
388730
389390
  queryCheckpoint("query_api_streaming_start");
388731
389391
  for await (const message of deps.callModel({
@@ -388892,6 +389552,21 @@ async function* queryLoop(params, consumedCommandUuids) {
388892
389552
  }
388893
389553
  }
388894
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
+ }
388895
389570
  logError2(error42);
388896
389571
  const errorMessage2 = error42 instanceof Error ? error42.message : String(error42);
388897
389572
  logEvent("tengu_query_error", {
@@ -388926,6 +389601,13 @@ async function* queryLoop(params, consumedCommandUuids) {
388926
389601
  } else {
388927
389602
  yield* yieldMissingToolResultBlocks(assistantMessages, "Interrupted by user");
388928
389603
  }
389604
+ if (isAgentBudgetTimeout(toolUseContext.abortController.signal)) {
389605
+ yield createAssistantMessage({
389606
+ content: budgetTimeoutMessage,
389607
+ isVirtual: true
389608
+ });
389609
+ return { reason: "budget_timeout" };
389610
+ }
388929
389611
  if (false) {}
388930
389612
  if (toolUseContext.abortController.signal.reason !== "interrupt") {
388931
389613
  yield createUserInterruptionMessage({
@@ -389263,6 +389945,13 @@ async function* queryLoop(params, consumedCommandUuids) {
389263
389945
  }).catch(() => null);
389264
389946
  }
389265
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
+ }
389266
389955
  if (false) {}
389267
389956
  if (toolUseContext.abortController.signal.reason !== "interrupt") {
389268
389957
  yield createUserInterruptionMessage({
@@ -389364,7 +390053,50 @@ async function* queryLoop(params, consumedCommandUuids) {
389364
390053
  };
389365
390054
  const nextTurnCount = turnCount + 1;
389366
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
+ }
389367
390096
  if (maxTurns && nextTurnCount > maxTurns) {
390097
+ if (executionBudgetState) {
390098
+ markAgentBudgetCompletion(executionBudgetState, "max_turns");
390099
+ }
389368
390100
  yield createAttachmentMessage({
389369
390101
  type: "max_turns_reached",
389370
390102
  maxTurns,
@@ -389413,6 +390145,7 @@ var init_query2 = __esm(() => {
389413
390145
  init_messageQueueManager();
389414
390146
  init_headlessProfiler();
389415
390147
  init_model();
390148
+ init_model2();
389416
390149
  init_tokens();
389417
390150
  init_context();
389418
390151
  init_growthbook();
@@ -389502,7 +390235,7 @@ function getAnthropicEnvMetadata() {
389502
390235
  function getBuildAgeMinutes() {
389503
390236
  if (false)
389504
390237
  ;
389505
- const buildTime = new Date("2026-08-08T14:50:13.943Z").getTime();
390238
+ const buildTime = new Date("2026-08-08T17:59:39.726Z").getTime();
389506
390239
  if (isNaN(buildTime))
389507
390240
  return;
389508
390241
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -431190,7 +431923,7 @@ function buildPrimarySection() {
431190
431923
  });
431191
431924
  return [{
431192
431925
  label: "Version",
431193
- value: "0.15.4"
431926
+ value: "0.15.6"
431194
431927
  }, {
431195
431928
  label: "Session name",
431196
431929
  value: nameValue
@@ -445076,7 +445809,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
445076
445809
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
445077
445810
  }
445078
445811
  function getPublicBuildVersion() {
445079
- return "0.15.4";
445812
+ return "0.15.6";
445080
445813
  }
445081
445814
  var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
445082
445815
  var init_version = __esm(() => {
@@ -477390,17 +478123,18 @@ function AsyncAgentDetailDialog(t0) {
477390
478123
  } else {
477391
478124
  t11 = $2[19];
477392
478125
  }
478126
+ const elapsedAndModel = agent2.model ? `${elapsedTime} · ${agent2.model}` : elapsedTime;
477393
478127
  let t12;
477394
- if ($2[20] !== elapsedTime || $2[21] !== t10 || $2[22] !== t11) {
478128
+ if ($2[20] !== elapsedAndModel || $2[21] !== t10 || $2[22] !== t11) {
477395
478129
  t12 = /* @__PURE__ */ jsx_runtime280.jsxs(ThemedText, {
477396
478130
  dimColor: true,
477397
478131
  children: [
477398
- elapsedTime,
478132
+ elapsedAndModel,
477399
478133
  t10,
477400
478134
  t11
477401
478135
  ]
477402
478136
  });
477403
- $2[20] = elapsedTime;
478137
+ $2[20] = elapsedAndModel;
477404
478138
  $2[21] = t10;
477405
478139
  $2[22] = t11;
477406
478140
  $2[23] = t12;
@@ -496469,7 +497203,7 @@ var init_bridge_kick = __esm(() => {
496469
497203
  var call66 = async () => {
496470
497204
  return {
496471
497205
  type: "text",
496472
- value: `${"99.0.0"} (built ${"2026-08-08T14:50:13.943Z"})`
497206
+ value: `${"99.0.0"} (built ${"2026-08-08T17:59:39.726Z"})`
496473
497207
  };
496474
497208
  }, version2, version_default;
496475
497209
  var init_version2 = __esm(() => {
@@ -500901,7 +501635,7 @@ var React123, jsx_runtime354, call74 = async (onDone, context2, args) => {
500901
501635
  onDone
500902
501636
  });
500903
501637
  };
500904
- var init_model2 = __esm(() => {
501638
+ var init_model3 = __esm(() => {
500905
501639
  init_source2();
500906
501640
  init_ModelPicker();
500907
501641
  init_xml();
@@ -500935,7 +501669,7 @@ var init_model2 = __esm(() => {
500935
501669
 
500936
501670
  // src/commands/model/index.ts
500937
501671
  var model_default;
500938
- var init_model3 = __esm(() => {
501672
+ var init_model4 = __esm(() => {
500939
501673
  init_immediateCommand();
500940
501674
  init_model();
500941
501675
  model_default = {
@@ -500948,7 +501682,7 @@ var init_model3 = __esm(() => {
500948
501682
  get immediate() {
500949
501683
  return shouldInferenceConfigCommandBeImmediate();
500950
501684
  },
500951
- load: () => Promise.resolve().then(() => (init_model2(), exports_model2))
501685
+ load: () => Promise.resolve().then(() => (init_model3(), exports_model2))
500952
501686
  };
500953
501687
  });
500954
501688
 
@@ -508755,7 +509489,7 @@ var init_commands2 = __esm(() => {
508755
509489
  init_env2();
508756
509490
  init_exit2();
508757
509491
  init_export2();
508758
- init_model3();
509492
+ init_model4();
508759
509493
  init_tag2();
508760
509494
  init_output_style();
508761
509495
  init_remote_env2();
@@ -520659,70 +521393,23 @@ function truncateStartupText(text2, maxLength) {
520659
521393
  return `${text2.slice(0, maxLength - 1)}…`;
520660
521394
  }
520661
521395
  function renderStartupScreen(p, version3, displayCwd, columns) {
520662
- const out = [];
521396
+ const out = [""];
520663
521397
  const bold2 = `${ESC4}1m`;
520664
521398
  const PURPLE = rgb3(...ACCENT);
520665
- const PURPLE_FILL = `${rgb3(...ACCENT)}${ESC4}48;2;${ACCENT[0]};${ACCENT[1]};${ACCENT[2]}m`;
520666
- const SOFT = rgb3(...CREAM);
520667
521399
  const DIMP = `${DIM2}${rgb3(...DIMCOL)}`;
520668
521400
  const STATUS_C = p.isLocal ? rgb3(130, 200, 140) : PURPLE;
520669
521401
  const statusLabel = p.isLocal ? "local" : "cloud";
520670
- const LOGO_TEXT_PADDING = 2;
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}`);
520671
521411
  out.push("");
520672
- if (columns < STARTUP_LOGO_MIN_COLUMNS) {
520673
- const compactTextWidth = Math.max(1, columns - 6);
520674
- const provider = truncateStartupText(`${p.name} · ${p.model}`, compactTextWidth);
520675
- const endpoint = truncateStartupText(p.baseUrl, compactTextWidth);
520676
- const cwd2 = truncateStartupText(displayCwd, compactTextWidth);
520677
- out.push(` ${PURPLE}\uD83D\uDC7B${RESET2} ${bold2}${SOFT}Verboo Code${RESET2} ${DIMP}v${version3}${RESET2}`);
520678
- out.push(` ${DIMP}Tokens ilimitados · Privacidade · Velocidade${RESET2}`);
520679
- out.push(` ${DIMP}${provider}${RESET2}`);
520680
- out.push(` ${DIMP}${endpoint}${RESET2}`);
520681
- out.push(` ${DIMP}${cwd2}${RESET2}`);
520682
- } else {
520683
- const maxLogoWidth = Math.max(...VERBOO_LOGO.map((line) => line.trimEnd().length));
520684
- const rightTextWidth = Math.max(1, columns - 2 - maxLogoWidth - LOGO_TEXT_PADDING);
520685
- const provider = truncateStartupText(`${p.name} · ${p.model}`, rightTextWidth);
520686
- const endpoint = truncateStartupText(p.baseUrl, rightTextWidth);
520687
- const cwd2 = truncateStartupText(displayCwd, rightTextWidth);
520688
- const rightCol = [
520689
- ``,
520690
- `${bold2}${SOFT}Verboo Code${RESET2} ${DIMP}v${version3}${RESET2}`,
520691
- `${DIMP}Tokens ilimitados · Privacidade · Velocidade${RESET2}`,
520692
- `${DIMP}${provider}${RESET2}`,
520693
- `${DIMP}${endpoint}${RESET2}`,
520694
- `${DIMP}${cwd2}${RESET2}`,
520695
- ``
520696
- ];
520697
- const paintedLogo = [];
520698
- for (let i3 = 0;i3 < VERBOO_LOGO.length; i3++) {
520699
- const line = (VERBOO_LOGO[i3] ?? "").trimEnd();
520700
- const mask = VERBOO_LOGO_MASK[i3] ?? "";
520701
- let painted = "";
520702
- for (let j = 0;j < line.length; j++) {
520703
- const ch2 = line[j] ?? "";
520704
- const isBlock = ch2 === "▀" || ch2 === "▄";
520705
- if (isBlock && mask[j] === "1") {
520706
- painted += `${PURPLE_FILL}${ch2}${RESET2}`;
520707
- } else if (isBlock) {
520708
- painted += `${PURPLE}${ch2}${RESET2}`;
520709
- } else {
520710
- painted += ch2;
520711
- }
520712
- }
520713
- paintedLogo.push({ text: painted, visualWidth: line.length });
520714
- }
520715
- for (let i3 = 0;i3 < paintedLogo.length; i3++) {
520716
- const { text: text2, visualWidth } = paintedLogo[i3] ?? {
520717
- text: "",
520718
- visualWidth: 0
520719
- };
520720
- const gap = " ".repeat(Math.max(0, maxLogoWidth - visualWidth + LOGO_TEXT_PADDING));
520721
- out.push(` ${text2}${gap}${rightCol[i3] ?? ""}`);
520722
- }
520723
- }
520724
- out.push("");
520725
- 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}`);
520726
521413
  out.push("");
520727
521414
  return `${out.join(`
520728
521415
  `)}
@@ -520735,11 +521422,11 @@ function printStartupScreen(modelOverride) {
520735
521422
  const home = process.env.HOME || process.env.USERPROFILE || "";
520736
521423
  const cwd2 = process.cwd();
520737
521424
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
520738
- const version3 = "0.15.4";
520739
- const columns = process.stdout.columns ?? STARTUP_LOGO_MIN_COLUMNS;
521425
+ const version3 = "0.15.6";
521426
+ const columns = process.stdout.columns ?? STARTUP_DEFAULT_COLUMNS;
520740
521427
  process.stdout.write(renderStartupScreen(p, version3, displayCwd, columns));
520741
521428
  }
520742
- 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;
520743
521430
  var init_StartupScreen = __esm(() => {
520744
521431
  init_oauth();
520745
521432
  init_providerConfig();
@@ -520749,26 +521436,7 @@ var init_StartupScreen = __esm(() => {
520749
521436
  RESET2 = `${ESC4}0m`;
520750
521437
  DIM2 = `${ESC4}2m`;
520751
521438
  ACCENT = [173, 52, 254];
520752
- CREAM = [220, 200, 240];
520753
521439
  DIMCOL = [120, 100, 140];
520754
- VERBOO_LOGO = [
520755
- ` ▄▀▀▀▀▀▀▀▄ `,
520756
- `▄▀▀▀▀▀▀▀▀▀▀▀▄`,
520757
- `▀▀▀ ▀▀▀▀▀ ▀▀▀`,
520758
- `▀▀▀▀▀▀▀▀▀▀▀▀▀`,
520759
- `▀▀▀▀▀▄▄▄▀▀▀▀▀`,
520760
- ` ▀▀▀▀▀▀▀▀▀▀▀ `,
520761
- `▄▀▀ ▀▀▀▀▀ ▀▀▄`
520762
- ];
520763
- VERBOO_LOGO_MASK = [
520764
- ` 011111110 `,
520765
- `0111111111110`,
520766
- `1110111110111`,
520767
- `1111011101111`,
520768
- `1111100011111`,
520769
- ` 11111111111 `,
520770
- `110 01110 011`
520771
- ];
520772
521440
  });
520773
521441
 
520774
521442
  // node_modules/commander/lib/error.js
@@ -539979,7 +540647,7 @@ var init_routerRateLimitHook = __esm(() => {
539979
540647
  function getSemverPart(version3) {
539980
540648
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
539981
540649
  }
539982
- function useUpdateNotification(updatedVersion, initialVersion = "0.15.4") {
540650
+ function useUpdateNotification(updatedVersion, initialVersion = "0.15.6") {
539983
540651
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
539984
540652
  const [pendingNotification2, setPendingNotification] = import_react227.useState(null);
539985
540653
  if (updatedVersion) {
@@ -540019,7 +540687,7 @@ function AutoUpdater({
540019
540687
  return;
540020
540688
  }
540021
540689
  if (false) {}
540022
- const currentVersion = "0.15.4";
540690
+ const currentVersion = "0.15.6";
540023
540691
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
540024
540692
  let latestVersion = await getLatestVersion(channel2);
540025
540693
  const isDisabled = isAutoUpdaterDisabled();
@@ -540372,17 +541040,17 @@ function PackageManagerAutoUpdater(t0) {
540372
541040
  const maxVersion = await getMaxVersion();
540373
541041
  if (maxVersion && latest && gt(latest, maxVersion)) {
540374
541042
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
540375
- if (gte("0.15.4", maxVersion)) {
540376
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.15.4"} 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`);
540377
541045
  setUpdateAvailable(false);
540378
541046
  return;
540379
541047
  }
540380
541048
  latest = maxVersion;
540381
541049
  }
540382
- const hasUpdate = latest && !gte("0.15.4", latest) && !shouldSkipVersion(latest);
541050
+ const hasUpdate = latest && !gte("0.15.6", latest) && !shouldSkipVersion(latest);
540383
541051
  setUpdateAvailable(!!hasUpdate);
540384
541052
  if (hasUpdate) {
540385
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.4"} -> ${latest}`);
541053
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.15.6"} -> ${latest}`);
540386
541054
  }
540387
541055
  };
540388
541056
  $2[0] = t1;
@@ -540416,7 +541084,7 @@ function PackageManagerAutoUpdater(t0) {
540416
541084
  wrap: "truncate",
540417
541085
  children: [
540418
541086
  "currentVersion: ",
540419
- "0.15.4"
541087
+ "0.15.6"
540420
541088
  ]
540421
541089
  });
540422
541090
  $2[3] = verbose;
@@ -551736,8 +552404,9 @@ function usePromptInputPlaceholder({
551736
552404
  return "Press up to edit queued messages";
551737
552405
  }
551738
552406
  if (submitCount < 1 && promptSuggestionEnabled && !proactiveModule4?.isProactiveActive()) {
551739
- return getExampleCommandFromCache();
552407
+ return getExampleCommandFromCache() ?? "Ask Verboo to build, fix, or explain…";
551740
552408
  }
552409
+ return "Ask Verboo to build, fix, or explain…";
551741
552410
  }, [
551742
552411
  input,
551743
552412
  queuedCommands,
@@ -553591,7 +554260,6 @@ function PromptInput({
553591
554260
  hasStash: stashedPrompt !== undefined
553592
554261
  }),
553593
554262
  /* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
553594
- marginTop: 1,
553595
554263
  marginLeft: 2,
553596
554264
  height: 1,
553597
554265
  overflow: "hidden",
@@ -553650,6 +554318,7 @@ function PromptInput({
553650
554318
  children: /* @__PURE__ */ jsx_runtime441.jsx(ThemedBox_default, {
553651
554319
  borderStyle: "round",
553652
554320
  borderColor: getBorderColor(),
554321
+ borderText: buildPromptBorderText(mode),
553653
554322
  paddingLeft: 1,
553654
554323
  width: "100%",
553655
554324
  children: /* @__PURE__ */ jsx_runtime441.jsxs(ThemedBox_default, {
@@ -553772,6 +554441,14 @@ function getInitialPasteId(messages) {
553772
554441
  }
553773
554442
  return maxId + 1;
553774
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
+ }
553775
554452
  var React158, import_react261, jsx_runtime441, PROMPT_FOOTER_LINES = 5, MIN_INPUT_VIEWPORT_LINES = 3, PromptInput_default;
553776
554453
  var init_PromptInput = __esm(() => {
553777
554454
  init_notifications();
@@ -556434,10 +557111,10 @@ async function autoUpdateCliInBackground() {
556434
557111
  return;
556435
557112
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
556436
557113
  const latest = await getLatestVersion(channel2);
556437
- if (!latest || gte("0.15.4", latest))
557114
+ if (!latest || gte("0.15.6", latest))
556438
557115
  return;
556439
557116
  writeToStdout(`
556440
- Nova versão disponível: ${latest} (atual: ${"0.15.4"})
557117
+ Nova versão disponível: ${latest} (atual: ${"0.15.6"})
556441
557118
  `);
556442
557119
  writeToStdout(`Atualizando automaticamente...
556443
557120
  `);
@@ -574616,874 +575293,53 @@ var init_ApproveApiKey = __esm(() => {
574616
575293
 
574617
575294
  // src/components/LogoV2/WelcomeV2.tsx
574618
575295
  function WelcomeV2() {
574619
- const $2 = import_react_compiler_runtime359.c(35);
574620
- const [theme2] = useTheme();
574621
- if (env2.terminal === "Apple_Terminal") {
574622
- let t02;
574623
- if ($2[0] !== theme2) {
574624
- t02 = /* @__PURE__ */ jsx_runtime480.jsx(AppleTerminalWelcomeV2, {
574625
- theme: theme2,
574626
- welcomeMessage: "Welcome to Verboo Code"
574627
- });
574628
- $2[0] = theme2;
574629
- $2[1] = t02;
574630
- } else {
574631
- t02 = $2[1];
574632
- }
574633
- return t02;
574634
- }
574635
- if (["light", "light-daltonized", "light-ansi"].includes(theme2)) {
574636
- let t02;
574637
- let t17;
574638
- let t22;
574639
- let t32;
574640
- let t42;
574641
- let t52;
574642
- let t62;
574643
- let t72;
574644
- let t82;
574645
- if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
574646
- t02 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574647
- children: [
574648
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574649
- color: "claude",
574650
- children: [
574651
- "Welcome to Verboo Code",
574652
- " "
574653
- ]
574654
- }),
574655
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574656
- dimColor: true,
574657
- children: [
574658
- "v",
574659
- "0.15.4",
574660
- " "
574661
- ]
574662
- })
574663
- ]
574664
- });
574665
- t17 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574666
- children: "…………………………………………………………………………………………………………………………………………………………"
574667
- });
574668
- t22 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574669
- children: " "
574670
- });
574671
- t32 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574672
- children: " "
574673
- });
574674
- t42 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574675
- children: " "
574676
- });
574677
- t52 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574678
- children: " ░░░░░░ "
574679
- });
574680
- t62 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574681
- children: " ░░░ ░░░░░░░░░░ "
574682
- });
574683
- t72 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574684
- children: " ░░░░░░░░░░░░░░░░░░░ "
574685
- });
574686
- t82 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574687
- children: " "
574688
- });
574689
- $2[2] = t02;
574690
- $2[3] = t17;
574691
- $2[4] = t22;
574692
- $2[5] = t32;
574693
- $2[6] = t42;
574694
- $2[7] = t52;
574695
- $2[8] = t62;
574696
- $2[9] = t72;
574697
- $2[10] = t82;
574698
- } else {
574699
- t02 = $2[2];
574700
- t17 = $2[3];
574701
- t22 = $2[4];
574702
- t32 = $2[5];
574703
- t42 = $2[6];
574704
- t52 = $2[7];
574705
- t62 = $2[8];
574706
- t72 = $2[9];
574707
- t82 = $2[10];
574708
- }
574709
- let t92;
574710
- if ($2[11] === Symbol.for("react.memo_cache_sentinel")) {
574711
- 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",
574712
575306
  children: [
574713
575307
  /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574714
- dimColor: true,
574715
- children: " ░░░░"
575308
+ children: "\uD83D\uDC7B"
574716
575309
  }),
574717
575310
  /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574718
- children: " ██ "
574719
- })
574720
- ]
574721
- });
574722
- $2[11] = t92;
574723
- } else {
574724
- t92 = $2[11];
574725
- }
574726
- let t102;
574727
- let t112;
574728
- if ($2[12] === Symbol.for("react.memo_cache_sentinel")) {
574729
- t102 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574730
- children: [
574731
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574732
- dimColor: true,
574733
- children: " ░░░░░░░░░░"
575311
+ bold: true,
575312
+ color: "claude",
575313
+ children: "Verboo Code"
574734
575314
  }),
574735
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574736
- children: " ██▒▒██ "
574737
- })
574738
- ]
574739
- });
574740
- t112 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574741
- children: " ▒▒ ██ ▒"
574742
- });
574743
- $2[12] = t102;
574744
- $2[13] = t112;
574745
- } else {
574746
- t102 = $2[12];
574747
- t112 = $2[13];
574748
- }
574749
- let t122;
574750
- if ($2[14] === Symbol.for("react.memo_cache_sentinel")) {
574751
- t122 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574752
- children: [
574753
- " ",
574754
- " ",
574755
- " ▒▒░░▒▒ ▒ ▒▒"
574756
- ]
574757
- });
574758
- $2[14] = t122;
574759
- } else {
574760
- t122 = $2[14];
574761
- }
574762
- let t132;
574763
- if ($2[15] === Symbol.for("react.memo_cache_sentinel")) {
574764
- t132 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574765
- children: [
574766
- " ",
574767
- " \uD83D\uDC7B ",
574768
- " ▒▒ ▒▒ "
574769
- ]
574770
- });
574771
- $2[15] = t132;
574772
- } else {
574773
- t132 = $2[15];
574774
- }
574775
- let t142;
574776
- if ($2[16] === Symbol.for("react.memo_cache_sentinel")) {
574777
- t142 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574778
- children: [
574779
- " ",
574780
- " ",
574781
- " ░ ▒ "
574782
- ]
574783
- });
574784
- $2[16] = t142;
574785
- } else {
574786
- t142 = $2[16];
574787
- }
574788
- let t152;
574789
- if ($2[17] === Symbol.for("react.memo_cache_sentinel")) {
574790
- t152 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
574791
- width: WELCOME_V2_WIDTH,
574792
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574793
- children: [
574794
- t02,
574795
- t17,
574796
- t22,
574797
- t32,
574798
- t42,
574799
- t52,
574800
- t62,
574801
- t72,
574802
- t82,
574803
- t92,
574804
- t102,
574805
- t112,
574806
- t122,
574807
- t132,
574808
- t142,
574809
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574810
- children: [
574811
- "…………………",
574812
- " ",
574813
- "……………………………………………………………………░…………………………▒…………"
574814
- ]
574815
- })
574816
- ]
574817
- })
574818
- });
574819
- $2[17] = t152;
574820
- } else {
574821
- t152 = $2[17];
574822
- }
574823
- return t152;
574824
- }
574825
- let t0;
574826
- let t1;
574827
- let t2;
574828
- let t3;
574829
- let t4;
574830
- let t5;
574831
- let t6;
574832
- if ($2[18] === Symbol.for("react.memo_cache_sentinel")) {
574833
- t0 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574834
- children: [
574835
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574836
- color: "claude",
574837
- children: [
574838
- "Welcome to Verboo Code",
574839
- " "
574840
- ]
574841
- }),
574842
- /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574843
- dimColor: true,
574844
- children: [
574845
- "v",
574846
- "0.15.4",
574847
- " "
574848
- ]
574849
- })
574850
- ]
574851
- });
574852
- t1 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574853
- children: "…………………………………………………………………………………………………………………………………………………………"
574854
- });
574855
- t2 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574856
- children: " "
574857
- });
574858
- t3 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574859
- children: " * █████▓▓░ "
574860
- });
574861
- t4 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574862
- children: " * ███▓░ ░░ "
574863
- });
574864
- t5 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574865
- children: " ░░░░░░ ███▓░ "
574866
- });
574867
- t6 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574868
- children: " ░░░ ░░░░░░░░░░ ███▓░ "
574869
- });
574870
- $2[18] = t0;
574871
- $2[19] = t1;
574872
- $2[20] = t2;
574873
- $2[21] = t3;
574874
- $2[22] = t4;
574875
- $2[23] = t5;
574876
- $2[24] = t6;
574877
- } else {
574878
- t0 = $2[18];
574879
- t1 = $2[19];
574880
- t2 = $2[20];
574881
- t3 = $2[21];
574882
- t4 = $2[22];
574883
- t5 = $2[23];
574884
- t6 = $2[24];
574885
- }
574886
- let t10;
574887
- let t11;
574888
- let t7;
574889
- let t8;
574890
- let t9;
574891
- if ($2[25] === Symbol.for("react.memo_cache_sentinel")) {
574892
- t7 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574893
- children: [
574894
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574895
- children: " ░░░░░░░░░░░░░░░░░░░ "
574896
- }),
574897
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574898
- bold: true,
574899
- children: "*"
574900
- }),
574901
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574902
- children: " ██▓░░ ▓ "
574903
- })
574904
- ]
574905
- });
574906
- t8 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574907
- children: " ░▓▓███▓▓░ "
574908
- });
574909
- t9 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574910
- dimColor: true,
574911
- children: " * ░░░░ "
574912
- });
574913
- t10 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574914
- dimColor: true,
574915
- children: " ░░░░░░░░ "
574916
- });
574917
- t11 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574918
- dimColor: true,
574919
- children: " ░░░░░░░░░░░░░░░░ "
574920
- });
574921
- $2[25] = t10;
574922
- $2[26] = t11;
574923
- $2[27] = t7;
574924
- $2[28] = t8;
574925
- $2[29] = t9;
574926
- } else {
574927
- t10 = $2[25];
574928
- t11 = $2[26];
574929
- t7 = $2[27];
574930
- t8 = $2[28];
574931
- t9 = $2[29];
574932
- }
574933
- let t12;
574934
- if ($2[30] === Symbol.for("react.memo_cache_sentinel")) {
574935
- t12 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574936
- children: " \uD83D\uDC7B "
574937
- });
574938
- $2[30] = t12;
574939
- } else {
574940
- t12 = $2[30];
574941
- }
574942
- let t13;
574943
- if ($2[31] === Symbol.for("react.memo_cache_sentinel")) {
574944
- t13 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574945
- children: [
574946
- " ",
574947
- t12,
574948
- " ",
574949
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574950
- dimColor: true,
574951
- children: "*"
574952
- }),
574953
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574954
- children: " "
574955
- })
574956
- ]
574957
- });
574958
- $2[31] = t13;
574959
- } else {
574960
- t13 = $2[31];
574961
- }
574962
- let t14;
574963
- if ($2[32] === Symbol.for("react.memo_cache_sentinel")) {
574964
- t14 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574965
- children: [
574966
- " ",
574967
- " ",
574968
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574969
- children: " "
574970
- }),
574971
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574972
- bold: true,
574973
- children: "*"
574974
- }),
574975
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
574976
- children: " "
574977
- })
574978
- ]
574979
- });
574980
- $2[32] = t14;
574981
- } else {
574982
- t14 = $2[32];
574983
- }
574984
- let t15;
574985
- if ($2[33] === Symbol.for("react.memo_cache_sentinel")) {
574986
- t15 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
574987
- children: [
574988
- " ",
574989
- " ",
574990
- " * "
574991
- ]
574992
- });
574993
- $2[33] = t15;
574994
- } else {
574995
- t15 = $2[33];
574996
- }
574997
- let t16;
574998
- if ($2[34] === Symbol.for("react.memo_cache_sentinel")) {
574999
- t16 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575000
- width: WELCOME_V2_WIDTH,
575001
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575002
- children: [
575003
- t0,
575004
- t1,
575005
- t2,
575006
- t3,
575007
- t4,
575008
- t5,
575009
- t6,
575010
- t7,
575011
- t8,
575012
- t9,
575013
- t10,
575014
- t11,
575015
- t13,
575016
- t14,
575017
- t15,
575018
575315
  /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575316
+ dimColor: true,
575019
575317
  children: [
575020
- "…………………",
575021
- " ",
575022
- "………………………………………………………………………………………………………………"
575318
+ "v",
575319
+ version3
575023
575320
  ]
575024
575321
  })
575025
575322
  ]
575026
- })
575027
- });
575028
- $2[34] = t16;
575029
- } else {
575030
- t16 = $2[34];
575031
- }
575032
- return t16;
575033
- }
575034
- function AppleTerminalWelcomeV2(t0) {
575035
- const $2 = import_react_compiler_runtime359.c(44);
575036
- const {
575037
- theme: theme2,
575038
- welcomeMessage
575039
- } = t0;
575040
- const isLightTheme = ["light", "light-daltonized", "light-ansi"].includes(theme2);
575041
- if (isLightTheme) {
575042
- let t110;
575043
- if ($2[0] !== welcomeMessage) {
575044
- t110 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575045
- color: "claude",
575046
- children: [
575047
- welcomeMessage,
575048
- " "
575049
- ]
575050
- });
575051
- $2[0] = welcomeMessage;
575052
- $2[1] = t110;
575053
- } else {
575054
- t110 = $2[1];
575055
- }
575056
- let t22;
575057
- if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
575058
- t22 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575059
- dimColor: true,
575060
- children: [
575061
- "v",
575062
- "0.15.4",
575063
- " "
575064
- ]
575065
- });
575066
- $2[2] = t22;
575067
- } else {
575068
- t22 = $2[2];
575069
- }
575070
- let t32;
575071
- if ($2[3] !== t110) {
575072
- t32 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575073
- children: [
575074
- t110,
575075
- t22
575076
- ]
575077
- });
575078
- $2[3] = t110;
575079
- $2[4] = t32;
575080
- } else {
575081
- t32 = $2[4];
575082
- }
575083
- let t102;
575084
- let t112;
575085
- let t42;
575086
- let t52;
575087
- let t62;
575088
- let t72;
575089
- let t82;
575090
- let t92;
575091
- if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
575092
- t42 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575093
- children: "…………………………………………………………………………………………………………………………………………………………"
575094
- });
575095
- t52 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575096
- children: " "
575097
- });
575098
- t62 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575099
- children: " "
575100
- });
575101
- t72 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575102
- children: " "
575103
- });
575104
- t82 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575105
- children: " ░░░░░░ "
575106
- });
575107
- t92 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575108
- children: " ░░░ ░░░░░░░░░░ "
575109
- });
575110
- t102 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575111
- children: " ░░░░░░░░░░░░░░░░░░░ "
575112
- });
575113
- t112 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575114
- children: " "
575115
- });
575116
- $2[5] = t102;
575117
- $2[6] = t112;
575118
- $2[7] = t42;
575119
- $2[8] = t52;
575120
- $2[9] = t62;
575121
- $2[10] = t72;
575122
- $2[11] = t82;
575123
- $2[12] = t92;
575124
- } else {
575125
- t102 = $2[5];
575126
- t112 = $2[6];
575127
- t42 = $2[7];
575128
- t52 = $2[8];
575129
- t62 = $2[9];
575130
- t72 = $2[10];
575131
- t82 = $2[11];
575132
- t92 = $2[12];
575133
- }
575134
- let t122;
575135
- if ($2[13] === Symbol.for("react.memo_cache_sentinel")) {
575136
- t122 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575137
- children: [
575138
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575139
- dimColor: true,
575140
- children: " ░░░░"
575141
- }),
575142
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575143
- children: " ██ "
575144
- })
575145
- ]
575146
- });
575147
- $2[13] = t122;
575148
- } else {
575149
- t122 = $2[13];
575150
- }
575151
- let t132;
575152
- let t142;
575153
- let t152;
575154
- if ($2[14] === Symbol.for("react.memo_cache_sentinel")) {
575155
- t132 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575156
- children: [
575157
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575158
- dimColor: true,
575159
- children: " ░░░░░░░░░░"
575160
- }),
575161
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575162
- children: " ██▒▒██ "
575163
- })
575164
- ]
575165
- });
575166
- t142 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575167
- children: " ▒▒ ██ ▒"
575168
- });
575169
- t152 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575170
- children: " ▒▒░░▒▒ ▒ ▒▒"
575171
- });
575172
- $2[14] = t132;
575173
- $2[15] = t142;
575174
- $2[16] = t152;
575175
- } else {
575176
- t132 = $2[14];
575177
- t142 = $2[15];
575178
- t152 = $2[16];
575179
- }
575180
- let t162;
575181
- if ($2[17] === Symbol.for("react.memo_cache_sentinel")) {
575182
- t162 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575183
- children: [
575184
- " ",
575185
- " \uD83D\uDC7B ",
575186
- " ▒▒ ▒▒ "
575187
- ]
575188
- });
575189
- $2[17] = t162;
575190
- } else {
575191
- t162 = $2[17];
575192
- }
575193
- let t172;
575194
- if ($2[18] === Symbol.for("react.memo_cache_sentinel")) {
575195
- t172 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575196
- children: [
575197
- " ",
575198
- " ",
575199
- " ░ ▒ "
575200
- ]
575201
- });
575202
- $2[18] = t172;
575203
- } else {
575204
- t172 = $2[18];
575205
- }
575206
- let t182;
575207
- if ($2[19] === Symbol.for("react.memo_cache_sentinel")) {
575208
- t182 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575209
- children: [
575210
- "…………………",
575211
- " ",
575212
- "……………………………………………………………………░…………………………▒…………"
575213
- ]
575214
- });
575215
- $2[19] = t182;
575216
- } else {
575217
- t182 = $2[19];
575218
- }
575219
- let t192;
575220
- if ($2[20] !== t32) {
575221
- t192 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575222
- width: WELCOME_V2_WIDTH,
575223
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575224
- children: [
575225
- t32,
575226
- t42,
575227
- t52,
575228
- t62,
575229
- t72,
575230
- t82,
575231
- t92,
575232
- t102,
575233
- t112,
575234
- t122,
575235
- t132,
575236
- t142,
575237
- t152,
575238
- t162,
575239
- t172,
575240
- t182
575241
- ]
575242
- })
575243
- });
575244
- $2[20] = t32;
575245
- $2[21] = t192;
575246
- } else {
575247
- t192 = $2[21];
575248
- }
575249
- return t192;
575250
- }
575251
- let t1;
575252
- if ($2[22] !== welcomeMessage) {
575253
- t1 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575254
- color: "claude",
575255
- children: [
575256
- welcomeMessage,
575257
- " "
575258
- ]
575259
- });
575260
- $2[22] = welcomeMessage;
575261
- $2[23] = t1;
575262
- } else {
575263
- t1 = $2[23];
575264
- }
575265
- let t2;
575266
- if ($2[24] === Symbol.for("react.memo_cache_sentinel")) {
575267
- t2 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575268
- dimColor: true,
575269
- children: [
575270
- "v",
575271
- "0.15.4",
575272
- " "
575273
- ]
575274
- });
575275
- $2[24] = t2;
575276
- } else {
575277
- t2 = $2[24];
575278
- }
575279
- let t3;
575280
- if ($2[25] !== t1) {
575281
- t3 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575282
- children: [
575283
- t1,
575284
- t2
575285
- ]
575286
- });
575287
- $2[25] = t1;
575288
- $2[26] = t3;
575289
- } else {
575290
- t3 = $2[26];
575291
- }
575292
- let t4;
575293
- let t5;
575294
- let t6;
575295
- let t7;
575296
- let t8;
575297
- let t9;
575298
- if ($2[27] === Symbol.for("react.memo_cache_sentinel")) {
575299
- t4 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575300
- children: "…………………………………………………………………………………………………………………………………………………………"
575301
- });
575302
- t5 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575303
- children: " "
575304
- });
575305
- t6 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575306
- children: " * █████▓▓░ "
575307
- });
575308
- t7 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575309
- children: " * ███▓░ ░░ "
575310
- });
575311
- t8 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575312
- children: " ░░░░░░ ███▓░ "
575313
- });
575314
- t9 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575315
- children: " ░░░ ░░░░░░░░░░ ███▓░ "
575316
- });
575317
- $2[27] = t4;
575318
- $2[28] = t5;
575319
- $2[29] = t6;
575320
- $2[30] = t7;
575321
- $2[31] = t8;
575322
- $2[32] = t9;
575323
- } else {
575324
- t4 = $2[27];
575325
- t5 = $2[28];
575326
- t6 = $2[29];
575327
- t7 = $2[30];
575328
- t8 = $2[31];
575329
- t9 = $2[32];
575330
- }
575331
- let t10;
575332
- let t11;
575333
- let t12;
575334
- let t13;
575335
- let t14;
575336
- if ($2[33] === Symbol.for("react.memo_cache_sentinel")) {
575337
- t10 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575338
- children: [
575339
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575340
- children: " ░░░░░░░░░░░░░░░░░░░ "
575341
- }),
575342
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575343
- bold: true,
575344
- children: "*"
575345
- }),
575346
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575347
- children: " ██▓░░ ▓ "
575348
- })
575349
- ]
575350
- });
575351
- t11 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575352
- children: " ░▓▓███▓▓░ "
575353
- });
575354
- t12 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575355
- dimColor: true,
575356
- children: " * ░░░░ "
575357
- });
575358
- t13 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575359
- dimColor: true,
575360
- children: " ░░░░░░░░ "
575361
- });
575362
- t14 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575363
- dimColor: true,
575364
- children: " ░░░░░░░░░░░░░░░░ "
575365
- });
575366
- $2[33] = t10;
575367
- $2[34] = t11;
575368
- $2[35] = t12;
575369
- $2[36] = t13;
575370
- $2[37] = t14;
575371
- } else {
575372
- t10 = $2[33];
575373
- t11 = $2[34];
575374
- t12 = $2[35];
575375
- t13 = $2[36];
575376
- t14 = $2[37];
575377
- }
575378
- let t15;
575379
- if ($2[38] === Symbol.for("react.memo_cache_sentinel")) {
575380
- t15 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575381
- children: [
575382
- " ",
575383
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575323
+ }),
575324
+ /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575325
+ paddingLeft: 3,
575326
+ children: /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575384
575327
  dimColor: true,
575385
- children: "*"
575386
- }),
575387
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575388
- children: " "
575389
- })
575390
- ]
575391
- });
575392
- $2[38] = t15;
575393
- } else {
575394
- t15 = $2[38];
575395
- }
575396
- let t16;
575397
- if ($2[39] === Symbol.for("react.memo_cache_sentinel")) {
575398
- t16 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575399
- children: [
575400
- " ",
575401
- " \uD83D\uDC7B ",
575402
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575403
- children: " "
575404
- }),
575405
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575406
- bold: true,
575407
- children: "*"
575408
- }),
575409
- /* @__PURE__ */ jsx_runtime480.jsx(ThemedText, {
575410
- children: " "
575328
+ children: "Build, debug, and ship from your terminal."
575411
575329
  })
575412
- ]
575413
- });
575414
- $2[39] = t16;
575415
- } else {
575416
- t16 = $2[39];
575417
- }
575418
- let t17;
575419
- if ($2[40] === Symbol.for("react.memo_cache_sentinel")) {
575420
- t17 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575421
- children: [
575422
- " ",
575423
- " ",
575424
- " * "
575425
- ]
575426
- });
575427
- $2[40] = t17;
575428
- } else {
575429
- t17 = $2[40];
575430
- }
575431
- let t18;
575432
- if ($2[41] === Symbol.for("react.memo_cache_sentinel")) {
575433
- t18 = /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575434
- children: [
575435
- "…………………",
575436
- " ",
575437
- "………………………………………………………………………………………………………………"
575438
- ]
575439
- });
575440
- $2[41] = t18;
575441
- } else {
575442
- t18 = $2[41];
575443
- }
575444
- let t19;
575445
- if ($2[42] !== t3) {
575446
- t19 = /* @__PURE__ */ jsx_runtime480.jsx(ThemedBox_default, {
575447
- width: WELCOME_V2_WIDTH,
575448
- children: /* @__PURE__ */ jsx_runtime480.jsxs(ThemedText, {
575449
- children: [
575450
- t3,
575451
- t4,
575452
- t5,
575453
- t6,
575454
- t7,
575455
- t8,
575456
- t9,
575457
- t10,
575458
- t11,
575459
- t12,
575460
- t13,
575461
- t14,
575462
- t15,
575463
- t16,
575464
- t17,
575465
- t18
575466
- ]
575467
575330
  })
575468
- });
575469
- $2[42] = t3;
575470
- $2[43] = t19;
575471
- } else {
575472
- t19 = $2[43];
575473
- }
575474
- return t19;
575331
+ ]
575332
+ });
575475
575333
  }
575476
- var import_react_compiler_runtime359, jsx_runtime480, WELCOME_V2_WIDTH = 58;
575334
+ var jsx_runtime480;
575477
575335
  var init_WelcomeV2 = __esm(() => {
575478
575336
  init_ink2();
575479
- init_env();
575480
- import_react_compiler_runtime359 = __toESM(require_dist3(), 1);
575481
575337
  jsx_runtime480 = __toESM(require_jsx_runtime(), 1);
575482
575338
  });
575483
575339
 
575484
575340
  // src/components/ui/OrderedListItem.tsx
575485
575341
  function OrderedListItem(t0) {
575486
- const $2 = import_react_compiler_runtime360.c(7);
575342
+ const $2 = import_react_compiler_runtime359.c(7);
575487
575343
  const {
575488
575344
  children
575489
575345
  } = t0;
@@ -575529,10 +575385,10 @@ function OrderedListItem(t0) {
575529
575385
  }
575530
575386
  return t3;
575531
575387
  }
575532
- var import_react_compiler_runtime360, import_react325, jsx_runtime481, OrderedListItemContext;
575388
+ var import_react_compiler_runtime359, import_react325, jsx_runtime481, OrderedListItemContext;
575533
575389
  var init_OrderedListItem = __esm(() => {
575534
575390
  init_ink2();
575535
- import_react_compiler_runtime360 = __toESM(require_dist3(), 1);
575391
+ import_react_compiler_runtime359 = __toESM(require_dist3(), 1);
575536
575392
  import_react325 = __toESM(require_react(), 1);
575537
575393
  jsx_runtime481 = __toESM(require_jsx_runtime(), 1);
575538
575394
  OrderedListItemContext = import_react325.createContext({
@@ -575542,7 +575398,7 @@ var init_OrderedListItem = __esm(() => {
575542
575398
 
575543
575399
  // src/components/ui/OrderedList.tsx
575544
575400
  function OrderedListComponent(t0) {
575545
- const $2 = import_react_compiler_runtime361.c(9);
575401
+ const $2 = import_react_compiler_runtime360.c(9);
575546
575402
  const {
575547
575403
  children
575548
575404
  } = t0;
@@ -575606,11 +575462,11 @@ function OrderedListComponent(t0) {
575606
575462
  }
575607
575463
  return t2;
575608
575464
  }
575609
- var import_react_compiler_runtime361, import_react326, jsx_runtime482, OrderedListContext, OrderedList;
575465
+ var import_react_compiler_runtime360, import_react326, jsx_runtime482, OrderedListContext, OrderedList;
575610
575466
  var init_OrderedList = __esm(() => {
575611
575467
  init_ink2();
575612
575468
  init_OrderedListItem();
575613
- import_react_compiler_runtime361 = __toESM(require_dist3(), 1);
575469
+ import_react_compiler_runtime360 = __toESM(require_dist3(), 1);
575614
575470
  import_react326 = __toESM(require_react(), 1);
575615
575471
  jsx_runtime482 = __toESM(require_jsx_runtime(), 1);
575616
575472
  OrderedListContext = import_react326.createContext({
@@ -575891,7 +575747,7 @@ function Onboarding({
575891
575747
  });
575892
575748
  }
575893
575749
  function SkippableStep(t0) {
575894
- const $2 = import_react_compiler_runtime362.c(4);
575750
+ const $2 = import_react_compiler_runtime361.c(4);
575895
575751
  const {
575896
575752
  skip,
575897
575753
  onSkip,
@@ -575920,7 +575776,7 @@ function SkippableStep(t0) {
575920
575776
  }
575921
575777
  return children;
575922
575778
  }
575923
- var import_react_compiler_runtime362, import_react327, jsx_runtime483;
575779
+ var import_react_compiler_runtime361, import_react327, jsx_runtime483;
575924
575780
  var init_Onboarding = __esm(() => {
575925
575781
  init_terminalSetup();
575926
575782
  init_useExitOnCtrlCDWithKeybindings();
@@ -575939,7 +575795,7 @@ var init_Onboarding = __esm(() => {
575939
575795
  init_PressEnterToContinue();
575940
575796
  init_ThemePicker();
575941
575797
  init_OrderedList();
575942
- import_react_compiler_runtime362 = __toESM(require_dist3(), 1);
575798
+ import_react_compiler_runtime361 = __toESM(require_dist3(), 1);
575943
575799
  import_react327 = __toESM(require_react(), 1);
575944
575800
  jsx_runtime483 = __toESM(require_jsx_runtime(), 1);
575945
575801
  });
@@ -576083,7 +575939,7 @@ __export(exports_TrustDialog, {
576083
575939
  });
576084
575940
  import { homedir as homedir38 } from "os";
576085
575941
  function TrustDialog(t0) {
576086
- const $2 = import_react_compiler_runtime363.c(33);
575942
+ const $2 = import_react_compiler_runtime362.c(33);
576087
575943
  const {
576088
575944
  onDone,
576089
575945
  commands
@@ -576402,7 +576258,7 @@ function _temp298(command11) {
576402
576258
  function _temp299(tool) {
576403
576259
  return tool === BASH_TOOL_NAME || tool.startsWith(BASH_TOOL_NAME + "(");
576404
576260
  }
576405
- var import_react_compiler_runtime363, import_react328, jsx_runtime484;
576261
+ var import_react_compiler_runtime362, import_react328, jsx_runtime484;
576406
576262
  var init_TrustDialog = __esm(() => {
576407
576263
  init_state();
576408
576264
  init_useExitOnCtrlCDWithKeybindings();
@@ -576416,7 +576272,7 @@ var init_TrustDialog = __esm(() => {
576416
576272
  init_CustomSelect();
576417
576273
  init_PermissionDialog();
576418
576274
  init_utils13();
576419
- import_react_compiler_runtime363 = __toESM(require_dist3(), 1);
576275
+ import_react_compiler_runtime362 = __toESM(require_dist3(), 1);
576420
576276
  import_react328 = __toESM(require_react(), 1);
576421
576277
  jsx_runtime484 = __toESM(require_jsx_runtime(), 1);
576422
576278
  });
@@ -576427,7 +576283,7 @@ __export(exports_BypassPermissionsModeDialog, {
576427
576283
  BypassPermissionsModeDialog: () => BypassPermissionsModeDialog
576428
576284
  });
576429
576285
  function BypassPermissionsModeDialog(t0) {
576430
- const $2 = import_react_compiler_runtime364.c(7);
576286
+ const $2 = import_react_compiler_runtime363.c(7);
576431
576287
  const {
576432
576288
  onAccept
576433
576289
  } = t0;
@@ -576529,14 +576385,14 @@ function _temp2100() {
576529
576385
  function _temp301() {
576530
576386
  logEvent("tengu_bypass_permissions_mode_dialog_shown", {});
576531
576387
  }
576532
- var import_react_compiler_runtime364, import_react329, jsx_runtime485;
576388
+ var import_react_compiler_runtime363, import_react329, jsx_runtime485;
576533
576389
  var init_BypassPermissionsModeDialog = __esm(() => {
576534
576390
  init_ink2();
576535
576391
  init_gracefulShutdown();
576536
576392
  init_settings2();
576537
576393
  init_CustomSelect();
576538
576394
  init_Dialog();
576539
- import_react_compiler_runtime364 = __toESM(require_dist3(), 1);
576395
+ import_react_compiler_runtime363 = __toESM(require_dist3(), 1);
576540
576396
  import_react329 = __toESM(require_react(), 1);
576541
576397
  jsx_runtime485 = __toESM(require_jsx_runtime(), 1);
576542
576398
  });
@@ -576547,7 +576403,7 @@ __export(exports_ClaudeInChromeOnboarding, {
576547
576403
  ClaudeInChromeOnboarding: () => ClaudeInChromeOnboarding
576548
576404
  });
576549
576405
  function ClaudeInChromeOnboarding(t0) {
576550
- const $2 = import_react_compiler_runtime365.c(20);
576406
+ const $2 = import_react_compiler_runtime364.c(20);
576551
576407
  const {
576552
576408
  onDone
576553
576409
  } = t0;
@@ -576713,13 +576569,13 @@ function _temp302(current) {
576713
576569
  hasCompletedClaudeInChromeOnboarding: true
576714
576570
  };
576715
576571
  }
576716
- 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";
576717
576573
  var init_ClaudeInChromeOnboarding = __esm(() => {
576718
576574
  init_ink2();
576719
576575
  init_setup2();
576720
576576
  init_config();
576721
576577
  init_Dialog();
576722
- import_react_compiler_runtime365 = __toESM(require_dist3(), 1);
576578
+ import_react_compiler_runtime364 = __toESM(require_dist3(), 1);
576723
576579
  import_react330 = __toESM(require_react(), 1);
576724
576580
  jsx_runtime486 = __toESM(require_jsx_runtime(), 1);
576725
576581
  });
@@ -576980,7 +576836,7 @@ __export(exports_InvalidSettingsDialog, {
576980
576836
  InvalidSettingsDialog: () => InvalidSettingsDialog
576981
576837
  });
576982
576838
  function InvalidSettingsDialog(t0) {
576983
- const $2 = import_react_compiler_runtime366.c(13);
576839
+ const $2 = import_react_compiler_runtime365.c(13);
576984
576840
  const {
576985
576841
  settingsErrors,
576986
576842
  onContinue,
@@ -577067,19 +576923,19 @@ function InvalidSettingsDialog(t0) {
577067
576923
  }
577068
576924
  return t6;
577069
576925
  }
577070
- var import_react_compiler_runtime366, jsx_runtime488;
576926
+ var import_react_compiler_runtime365, jsx_runtime488;
577071
576927
  var init_InvalidSettingsDialog = __esm(() => {
577072
576928
  init_ink2();
577073
576929
  init_CustomSelect();
577074
576930
  init_Dialog();
577075
576931
  init_ValidationErrorsList();
577076
- import_react_compiler_runtime366 = __toESM(require_dist3(), 1);
576932
+ import_react_compiler_runtime365 = __toESM(require_dist3(), 1);
577077
576933
  jsx_runtime488 = __toESM(require_jsx_runtime(), 1);
577078
576934
  });
577079
576935
 
577080
576936
  // src/hooks/useTeleportResume.tsx
577081
576937
  function useTeleportResume(source) {
577082
- const $2 = import_react_compiler_runtime367.c(8);
576938
+ const $2 = import_react_compiler_runtime366.c(8);
577083
576939
  const [isResuming, setIsResuming] = import_react331.useState(false);
577084
576940
  const [error42, setError] = import_react331.useState(null);
577085
576941
  const [selectedSession, setSelectedSession] = import_react331.useState(null);
@@ -577147,12 +577003,12 @@ function useTeleportResume(source) {
577147
577003
  }
577148
577004
  return t2;
577149
577005
  }
577150
- var import_react_compiler_runtime367, import_react331;
577006
+ var import_react_compiler_runtime366, import_react331;
577151
577007
  var init_useTeleportResume = __esm(() => {
577152
577008
  init_state();
577153
577009
  init_errors();
577154
577010
  init_teleport();
577155
- import_react_compiler_runtime367 = __toESM(require_dist3(), 1);
577011
+ import_react_compiler_runtime366 = __toESM(require_dist3(), 1);
577156
577012
  import_react331 = __toESM(require_react(), 1);
577157
577013
  });
577158
577014
 
@@ -577527,7 +577383,7 @@ __export(exports_TeleportResumeWrapper, {
577527
577383
  TeleportResumeWrapper: () => TeleportResumeWrapper
577528
577384
  });
577529
577385
  function TeleportResumeWrapper(t0) {
577530
- const $2 = import_react_compiler_runtime368.c(25);
577386
+ const $2 = import_react_compiler_runtime367.c(25);
577531
577387
  const {
577532
577388
  onComplete,
577533
577389
  onCancel,
@@ -577725,14 +577581,14 @@ function TeleportResumeWrapper(t0) {
577725
577581
  }
577726
577582
  return t8;
577727
577583
  }
577728
- var import_react_compiler_runtime368, import_react333, jsx_runtime490;
577584
+ var import_react_compiler_runtime367, import_react333, jsx_runtime490;
577729
577585
  var init_TeleportResumeWrapper = __esm(() => {
577730
577586
  init_useTeleportResume();
577731
577587
  init_ink2();
577732
577588
  init_useKeybinding();
577733
577589
  init_ResumeTask();
577734
577590
  init_Spinner2();
577735
- import_react_compiler_runtime368 = __toESM(require_dist3(), 1);
577591
+ import_react_compiler_runtime367 = __toESM(require_dist3(), 1);
577736
577592
  import_react333 = __toESM(require_react(), 1);
577737
577593
  jsx_runtime490 = __toESM(require_jsx_runtime(), 1);
577738
577594
  });
@@ -577743,7 +577599,7 @@ __export(exports_TeleportRepoMismatchDialog, {
577743
577599
  TeleportRepoMismatchDialog: () => TeleportRepoMismatchDialog
577744
577600
  });
577745
577601
  function TeleportRepoMismatchDialog(t0) {
577746
- const $2 = import_react_compiler_runtime369.c(18);
577602
+ const $2 = import_react_compiler_runtime368.c(18);
577747
577603
  const {
577748
577604
  targetRepo,
577749
577605
  initialPaths,
@@ -577894,7 +577750,7 @@ function _temp303(path24) {
577894
577750
  value: path24
577895
577751
  };
577896
577752
  }
577897
- var import_react_compiler_runtime369, import_react334, jsx_runtime491;
577753
+ var import_react_compiler_runtime368, import_react334, jsx_runtime491;
577898
577754
  var init_TeleportRepoMismatchDialog = __esm(() => {
577899
577755
  init_ink2();
577900
577756
  init_file();
@@ -577902,7 +577758,7 @@ var init_TeleportRepoMismatchDialog = __esm(() => {
577902
577758
  init_CustomSelect();
577903
577759
  init_Dialog();
577904
577760
  init_Spinner2();
577905
- import_react_compiler_runtime369 = __toESM(require_dist3(), 1);
577761
+ import_react_compiler_runtime368 = __toESM(require_dist3(), 1);
577906
577762
  import_react334 = __toESM(require_react(), 1);
577907
577763
  jsx_runtime491 = __toESM(require_jsx_runtime(), 1);
577908
577764
  });
@@ -578220,7 +578076,7 @@ function ResumeConversation({
578220
578076
  });
578221
578077
  }
578222
578078
  function NoConversationsMessage() {
578223
- const $2 = import_react_compiler_runtime370.c(2);
578079
+ const $2 = import_react_compiler_runtime369.c(2);
578224
578080
  let t0;
578225
578081
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
578226
578082
  t0 = {
@@ -578255,7 +578111,7 @@ function _temp304() {
578255
578111
  process.exit(1);
578256
578112
  }
578257
578113
  function CrossProjectMessage(t0) {
578258
- const $2 = import_react_compiler_runtime370.c(8);
578114
+ const $2 = import_react_compiler_runtime369.c(8);
578259
578115
  const {
578260
578116
  command: command11
578261
578117
  } = t0;
@@ -578339,7 +578195,7 @@ function _temp360() {
578339
578195
  function _temp2101() {
578340
578196
  process.exit(0);
578341
578197
  }
578342
- var import_react_compiler_runtime370, import_react335, jsx_runtime492;
578198
+ var import_react_compiler_runtime369, import_react335, jsx_runtime492;
578343
578199
  var init_ResumeConversation = __esm(() => {
578344
578200
  init_useTerminalSize();
578345
578201
  init_state();
@@ -578361,7 +578217,7 @@ var init_ResumeConversation = __esm(() => {
578361
578217
  init_sessionRestore();
578362
578218
  init_sessionStorage();
578363
578219
  init_REPL();
578364
- import_react_compiler_runtime370 = __toESM(require_dist3(), 1);
578220
+ import_react_compiler_runtime369 = __toESM(require_dist3(), 1);
578365
578221
  import_react335 = __toESM(require_react(), 1);
578366
578222
  jsx_runtime492 = __toESM(require_jsx_runtime(), 1);
578367
578223
  });
@@ -580447,7 +580303,7 @@ var init_addCommand = __esm(() => {
580447
580303
 
580448
580304
  // src/components/MCPServerDesktopImportDialog.tsx
580449
580305
  function MCPServerDesktopImportDialog(t0) {
580450
- const $2 = import_react_compiler_runtime371.c(36);
580306
+ const $2 = import_react_compiler_runtime370.c(36);
580451
580307
  const {
580452
580308
  servers,
580453
580309
  scope,
@@ -580683,7 +580539,7 @@ No servers were imported.`);
580683
580539
  }
580684
580540
  return t18;
580685
580541
  }
580686
- var import_react_compiler_runtime371, import_react336, jsx_runtime494;
580542
+ var import_react_compiler_runtime370, import_react336, jsx_runtime494;
580687
580543
  var init_MCPServerDesktopImportDialog = __esm(() => {
580688
580544
  init_gracefulShutdown();
580689
580545
  init_ink2();
@@ -580694,7 +580550,7 @@ var init_MCPServerDesktopImportDialog = __esm(() => {
580694
580550
  init_Byline();
580695
580551
  init_Dialog();
580696
580552
  init_KeyboardShortcutHint();
580697
- import_react_compiler_runtime371 = __toESM(require_dist3(), 1);
580553
+ import_react_compiler_runtime370 = __toESM(require_dist3(), 1);
580698
580554
  import_react336 = __toESM(require_react(), 1);
580699
580555
  jsx_runtime494 = __toESM(require_jsx_runtime(), 1);
580700
580556
  });
@@ -592342,7 +592198,7 @@ __export(exports_TeleportProgress, {
592342
592198
  TeleportProgress: () => TeleportProgress
592343
592199
  });
592344
592200
  function TeleportProgress(t0) {
592345
- const $2 = import_react_compiler_runtime372.c(16);
592201
+ const $2 = import_react_compiler_runtime371.c(16);
592346
592202
  const {
592347
592203
  currentStep,
592348
592204
  sessionId
@@ -592495,13 +592351,13 @@ async function teleportWithProgress(root2, sessionId) {
592495
592351
  branchName
592496
592352
  };
592497
592353
  }
592498
- 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;
592499
592355
  var init_TeleportProgress = __esm(() => {
592500
592356
  init_figures();
592501
592357
  init_ink2();
592502
592358
  init_AppState();
592503
592359
  init_teleport();
592504
- import_react_compiler_runtime372 = __toESM(require_dist3(), 1);
592360
+ import_react_compiler_runtime371 = __toESM(require_dist3(), 1);
592505
592361
  import_react337 = __toESM(require_react(), 1);
592506
592362
  jsx_runtime496 = __toESM(require_jsx_runtime(), 1);
592507
592363
  SPINNER_FRAMES3 = ["◐", "◓", "◑", "◒"];
@@ -593060,7 +592916,7 @@ function getInstallationPath2() {
593060
592916
  return "verboo-code/bin/verboo";
593061
592917
  }
593062
592918
  function SetupNotes(t0) {
593063
- const $2 = import_react_compiler_runtime373.c(5);
592919
+ const $2 = import_react_compiler_runtime372.c(5);
593064
592920
  const {
593065
592921
  messages
593066
592922
  } = t0;
@@ -593377,7 +593233,7 @@ function Install({
593377
593233
  ]
593378
593234
  });
593379
593235
  }
593380
- var import_react_compiler_runtime373, import_react338, jsx_runtime497, install;
593236
+ var import_react_compiler_runtime372, import_react338, jsx_runtime497, install;
593381
593237
  var init_install = __esm(() => {
593382
593238
  init_StatusIcon();
593383
593239
  init_ink2();
@@ -593386,7 +593242,7 @@ var init_install = __esm(() => {
593386
593242
  init_errors();
593387
593243
  init_nativeInstaller();
593388
593244
  init_settings2();
593389
- import_react_compiler_runtime373 = __toESM(require_dist3(), 1);
593245
+ import_react_compiler_runtime372 = __toESM(require_dist3(), 1);
593390
593246
  import_react338 = __toESM(require_react(), 1);
593391
593247
  jsx_runtime497 = __toESM(require_jsx_runtime(), 1);
593392
593248
  install = {
@@ -593464,7 +593320,7 @@ async function setupTokenHandler(root2) {
593464
593320
  process.exit(0);
593465
593321
  }
593466
593322
  function DoctorWithPlugins(t0) {
593467
- const $2 = import_react_compiler_runtime374.c(2);
593323
+ const $2 = import_react_compiler_runtime373.c(2);
593468
593324
  const {
593469
593325
  onDone
593470
593326
  } = t0;
@@ -593524,7 +593380,7 @@ async function installHandler(target, options2) {
593524
593380
  }, {}, args);
593525
593381
  });
593526
593382
  }
593527
- var import_react_compiler_runtime374, import_react339, jsx_runtime498, DoctorLazy;
593383
+ var import_react_compiler_runtime373, import_react339, jsx_runtime498, DoctorLazy;
593528
593384
  var init_util3 = __esm(() => {
593529
593385
  init_WelcomeV2();
593530
593386
  init_useManagePlugins();
@@ -593534,7 +593390,7 @@ var init_util3 = __esm(() => {
593534
593390
  init_AppState();
593535
593391
  init_onChangeAppState();
593536
593392
  init_auth();
593537
- import_react_compiler_runtime374 = __toESM(require_dist3(), 1);
593393
+ import_react_compiler_runtime373 = __toESM(require_dist3(), 1);
593538
593394
  import_react339 = __toESM(require_react(), 1);
593539
593395
  jsx_runtime498 = __toESM(require_jsx_runtime(), 1);
593540
593396
  DoctorLazy = import_react339.default.lazy(() => Promise.resolve().then(() => (init_Doctor(), exports_Doctor)).then((m) => ({
@@ -593724,7 +593580,7 @@ __export(exports_update, {
593724
593580
  });
593725
593581
  async function update() {
593726
593582
  logEvent("tengu_update_check", {});
593727
- writeToStdout(`Current version: ${"0.15.4"}
593583
+ writeToStdout(`Current version: ${"0.15.6"}
593728
593584
  `);
593729
593585
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
593730
593586
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -593809,8 +593665,8 @@ async function update() {
593809
593665
  writeToStdout(`Verboo Code is managed by Homebrew.
593810
593666
  `);
593811
593667
  const latest = await getLatestVersion(channel2);
593812
- if (latest && !gte("0.15.4", latest)) {
593813
- writeToStdout(`Update available: ${"0.15.4"} → ${latest}
593668
+ if (latest && !gte("0.15.6", latest)) {
593669
+ writeToStdout(`Update available: ${"0.15.6"} → ${latest}
593814
593670
  `);
593815
593671
  writeToStdout(`
593816
593672
  `);
@@ -593826,8 +593682,8 @@ async function update() {
593826
593682
  writeToStdout(`Verboo Code is managed by winget.
593827
593683
  `);
593828
593684
  const latest = await getLatestVersion(channel2);
593829
- if (latest && !gte("0.15.4", latest)) {
593830
- writeToStdout(`Update available: ${"0.15.4"} → ${latest}
593685
+ if (latest && !gte("0.15.6", latest)) {
593686
+ writeToStdout(`Update available: ${"0.15.6"} → ${latest}
593831
593687
  `);
593832
593688
  writeToStdout(`
593833
593689
  `);
@@ -593843,8 +593699,8 @@ async function update() {
593843
593699
  writeToStdout(`Verboo Code is managed by apk.
593844
593700
  `);
593845
593701
  const latest = await getLatestVersion(channel2);
593846
- if (latest && !gte("0.15.4", latest)) {
593847
- writeToStdout(`Update available: ${"0.15.4"} → ${latest}
593702
+ if (latest && !gte("0.15.6", latest)) {
593703
+ writeToStdout(`Update available: ${"0.15.6"} → ${latest}
593848
593704
  `);
593849
593705
  writeToStdout(`
593850
593706
  `);
@@ -593897,11 +593753,11 @@ async function update() {
593897
593753
  `);
593898
593754
  await gracefulShutdown(1);
593899
593755
  }
593900
- if (result.latestVersion === "0.15.4") {
593901
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.4"})`) + `
593756
+ if (result.latestVersion === "0.15.6") {
593757
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.6"})`) + `
593902
593758
  `);
593903
593759
  } else {
593904
- writeToStdout(source_default.green(`Successfully updated from ${"0.15.4"} to version ${result.latestVersion}`) + `
593760
+ writeToStdout(source_default.green(`Successfully updated from ${"0.15.6"} to version ${result.latestVersion}`) + `
593905
593761
  `);
593906
593762
  await regenerateCompletionCache();
593907
593763
  }
@@ -593961,12 +593817,12 @@ async function update() {
593961
593817
  `);
593962
593818
  await gracefulShutdown(1);
593963
593819
  }
593964
- if (latestVersion === "0.15.4") {
593965
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.4"})`) + `
593820
+ if (latestVersion === "0.15.6") {
593821
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.15.6"})`) + `
593966
593822
  `);
593967
593823
  await gracefulShutdown(0);
593968
593824
  }
593969
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.4"})
593825
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.15.6"})
593970
593826
  `);
593971
593827
  writeToStdout(`Installing update...
593972
593828
  `);
@@ -594011,7 +593867,7 @@ async function update() {
594011
593867
  logForDebugging(`update: Installation status: ${status2}`);
594012
593868
  switch (status2) {
594013
593869
  case "success":
594014
- writeToStdout(source_default.green(`Successfully updated from ${"0.15.4"} to version ${latestVersion}`) + `
593870
+ writeToStdout(source_default.green(`Successfully updated from ${"0.15.6"} to version ${latestVersion}`) + `
594015
593871
  `);
594016
593872
  await regenerateCompletionCache();
594017
593873
  break;
@@ -595330,7 +595186,7 @@ ${customInstructions}` : customInstructions;
595330
595186
  is_native_binary: isInBundledMode()
595331
595187
  });
595332
595188
  logMemoryDiagnostics("start", {
595333
- version: "0.15.4",
595189
+ version: "0.15.6",
595334
595190
  debug: debug2,
595335
595191
  debugToStderr,
595336
595192
  print: print ?? false,
@@ -596141,7 +595997,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
596141
595997
  pendingHookMessages
596142
595998
  }, renderAndRun);
596143
595999
  }
596144
- }).version(`0.15.4 (${cliDesc})`, "-v, --version", "Output the version number");
596000
+ }).version(`0.15.6 (${cliDesc})`, "-v, --version", "Output the version number");
596145
596001
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
596146
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.");
596147
596003
  if (canUserConfigureAdvisor()) {
@@ -596722,7 +596578,7 @@ if (false) {}
596722
596578
  async function main2() {
596723
596579
  const args = process.argv.slice(2);
596724
596580
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
596725
- console.log(`${"0.15.4"} (Verboo Code)`);
596581
+ console.log(`${"0.15.6"} (Verboo Code)`);
596726
596582
  return;
596727
596583
  }
596728
596584
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -596896,4 +596752,4 @@ async function main2() {
596896
596752
  }
596897
596753
  main2();
596898
596754
 
596899
- //# debugId=914D44FF804D587164756E2164756E21
596755
+ //# debugId=592F0199B2BBA9C464756E2164756E21