@funnycode/myclaude 0.1.18 → 0.1.19

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.
package/dist/myclaude.js CHANGED
@@ -4,8 +4,8 @@
4
4
  // MACRO - build-time constants (injected by build.ts)
5
5
  // MACRO injected by build script
6
6
  globalThis.MACRO = {
7
- VERSION: "0.1.8",
8
- BUILD_TIME: "2026-06-12T13:23:10.387Z",
7
+ VERSION: "0.1.19",
8
+ BUILD_TIME: "2026-06-12T16:05:16.414Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -9952,9 +9952,9 @@ var init_startupProfiler = __esm(() => {
9952
9952
  }
9953
9953
  });
9954
9954
 
9955
- // node_modules/@ant/claude-for-chrome-mcp/index.ts
9956
- var exports_claude_for_chrome_mcp = {};
9957
- __export(exports_claude_for_chrome_mcp, {
9955
+ // shims/ant-claude-for-chrome-mcp/index.ts
9956
+ var exports_ant_claude_for_chrome_mcp = {};
9957
+ __export(exports_ant_claude_for_chrome_mcp, {
9958
9958
  createClaudeForChromeMcpServer: () => createClaudeForChromeMcpServer,
9959
9959
  BROWSER_TOOLS: () => BROWSER_TOOLS
9960
9960
  });
@@ -9966,7 +9966,7 @@ function createClaudeForChromeMcpServer(_context) {
9966
9966
  };
9967
9967
  }
9968
9968
  var BROWSER_TOOLS;
9969
- var init_claude_for_chrome_mcp = __esm(() => {
9969
+ var init_ant_claude_for_chrome_mcp = __esm(() => {
9970
9970
  BROWSER_TOOLS = [];
9971
9971
  });
9972
9972
 
@@ -145580,7 +145580,7 @@ var init_metadata = __esm(() => {
145580
145580
  });
145581
145581
 
145582
145582
  // src/buddy/types.ts
145583
- var RARITIES, c5, duck, goose, blob, cat, dragon, octopus, owl, penguin, turtle, snail, ghost, axolotl, capybara, cactus, robot, rabbit, mushroom, chonk, SPECIES, EYES, HATS, STAT_NAMES, RARITY_WEIGHTS;
145583
+ var RARITIES, c5, duck, goose, blob, cat, dragon, octopus, owl, penguin, turtle, snail, ghost, axolotl, capybara, cactus, robot, rabbit, mushroom, chonk, SPECIES, EYES, HATS, STAT_NAMES, RARITY_WEIGHTS, RARITY_STARS, RARITY_COLORS;
145584
145584
  var init_types4 = __esm(() => {
145585
145585
  RARITIES = [
145586
145586
  "common",
@@ -145653,6 +145653,20 @@ var init_types4 = __esm(() => {
145653
145653
  epic: 4,
145654
145654
  legendary: 1
145655
145655
  };
145656
+ RARITY_STARS = {
145657
+ common: "★",
145658
+ uncommon: "★★",
145659
+ rare: "★★★",
145660
+ epic: "★★★★",
145661
+ legendary: "★★★★★"
145662
+ };
145663
+ RARITY_COLORS = {
145664
+ common: "inactive",
145665
+ uncommon: "success",
145666
+ rare: "permission",
145667
+ epic: "autoAccept",
145668
+ legendary: "warning"
145669
+ };
145656
145670
  });
145657
145671
 
145658
145672
  // src/buddy/companion.ts
@@ -145760,6 +145774,28 @@ A small ${species} named ${name} sits beside the user's input box and occasional
145760
145774
 
145761
145775
  When the user addresses ${name} directly (by name), its bubble will answer. Your job in that moment is to stay out of the way: respond in ONE line or less, or just answer any part of the message meant for you. Don't explain that you're not ${name} — they know. Don't narrate what ${name} might say — the bubble handles that.`;
145762
145776
  }
145777
+ function getCompanionIntroAttachment(messages) {
145778
+ if (false)
145779
+ ;
145780
+ const companion = getCompanion();
145781
+ if (!companion || getGlobalConfig().companionMuted)
145782
+ return [];
145783
+ for (const msg of messages ?? []) {
145784
+ if (msg.type !== "attachment")
145785
+ continue;
145786
+ if (msg.attachment.type !== "companion_intro")
145787
+ continue;
145788
+ if (msg.attachment.name === companion.name)
145789
+ return [];
145790
+ }
145791
+ return [
145792
+ {
145793
+ type: "companion_intro",
145794
+ name: companion.name,
145795
+ species: companion.species
145796
+ }
145797
+ ];
145798
+ }
145763
145799
  var init_prompt4 = __esm(() => {
145764
145800
  init_config();
145765
145801
  init_companion();
@@ -290707,7 +290743,7 @@ var init_client6 = __esm(() => {
290707
290743
  logMCPDebug(name, `claude.ai proxy transport created successfully`);
290708
290744
  } else if ((serverRef.type === "stdio" || !serverRef.type) && isClaudeInChromeMCPServer(name)) {
290709
290745
  const { createChromeContext } = await Promise.resolve().then(() => (init_mcpServer(), exports_mcpServer));
290710
- const { createClaudeForChromeMcpServer: createClaudeForChromeMcpServer2 } = await Promise.resolve().then(() => (init_claude_for_chrome_mcp(), exports_claude_for_chrome_mcp));
290746
+ const { createClaudeForChromeMcpServer: createClaudeForChromeMcpServer2 } = await Promise.resolve().then(() => (init_ant_claude_for_chrome_mcp(), exports_ant_claude_for_chrome_mcp));
290711
290747
  const { createLinkedTransportPair: createLinkedTransportPair2 } = await Promise.resolve().then(() => exports_InProcessTransport);
290712
290748
  const context = createChromeContext(serverRef.env);
290713
290749
  inProcessServer = createClaudeForChromeMcpServer2(context);
@@ -357194,7 +357230,7 @@ var init_color_diff = __esm(() => {
357194
357230
  };
357195
357231
  });
357196
357232
 
357197
- // node_modules/color-diff-napi/index.ts
357233
+ // shims/color-diff-napi/index.ts
357198
357234
  var init_color_diff_napi = __esm(() => {
357199
357235
  init_color_diff();
357200
357236
  });
@@ -387971,7 +388007,9 @@ async function getAttachments(input, toolUseContext, ideSelection, queuedCommand
387971
388007
  }))),
387972
388008
  maybe("agent_listing_delta", () => Promise.resolve(getAgentListingDeltaAttachment(toolUseContext, messages))),
387973
388009
  maybe("mcp_instructions_delta", () => Promise.resolve(getMcpInstructionsDeltaAttachment(toolUseContext.options.mcpClients, toolUseContext.options.tools, toolUseContext.options.mainLoopModel, messages))),
387974
- ...[],
388010
+ ...[
388011
+ maybe("companion_intro", () => Promise.resolve(getCompanionIntroAttachment(messages)))
388012
+ ],
387975
388013
  maybe("changed_files", () => getChangedFiles2(context)),
387976
388014
  maybe("nested_memory", () => getNestedMemoryAttachments(context)),
387977
388015
  maybe("dynamic_skill", () => getDynamicSkillAttachments(context)),
@@ -403040,7 +403078,7 @@ function prewarm() {
403040
403078
  var cachedModule = null;
403041
403079
  var init_modifiers_napi_src = () => {};
403042
403080
 
403043
- // node_modules/modifiers-napi/index.ts
403081
+ // shims/modifiers-napi/index.ts
403044
403082
  var exports_modifiers_napi = {};
403045
403083
  __export(exports_modifiers_napi, {
403046
403084
  prewarm: () => prewarm,
@@ -475596,6 +475634,728 @@ var init_summary = __esm(() => {
475596
475634
  summary_default = { isEnabled: () => false, isHidden: true, name: "stub" };
475597
475635
  });
475598
475636
 
475637
+ // src/achievements/storage.ts
475638
+ function getUnlockedAchievements() {
475639
+ const config5 = getGlobalConfig();
475640
+ return new Set(config5.unlockedAchievements ?? []);
475641
+ }
475642
+ function hasAchievement(id) {
475643
+ return getUnlockedAchievements().has(id);
475644
+ }
475645
+ function unlockAchievement(id) {
475646
+ const unlocked = getUnlockedAchievements();
475647
+ if (unlocked.has(id))
475648
+ return false;
475649
+ unlocked.add(id);
475650
+ saveGlobalConfig((current) => ({
475651
+ ...current,
475652
+ unlockedAchievements: [...unlocked]
475653
+ }));
475654
+ return true;
475655
+ }
475656
+ function incrementCounter(key2) {
475657
+ const config5 = getGlobalConfig();
475658
+ const counters = config5.achievementCounters ?? {};
475659
+ const current = (counters[key2] ?? 0) + 1;
475660
+ saveGlobalConfig((cfg) => ({
475661
+ ...cfg,
475662
+ achievementCounters: { ...counters, [key2]: current }
475663
+ }));
475664
+ return current;
475665
+ }
475666
+ var init_storage = __esm(() => {
475667
+ init_config();
475668
+ });
475669
+
475670
+ // src/achievements/types.ts
475671
+ function getAchievementsByCategory() {
475672
+ return CATEGORIES.map((cat2) => ({
475673
+ category: cat2,
475674
+ achievements: Object.values(ACHIEVEMENTS).filter((a2) => a2.category === cat2.key)
475675
+ }));
475676
+ }
475677
+ var ACHIEVEMENTS, CATEGORIES;
475678
+ var init_types14 = __esm(() => {
475679
+ ACHIEVEMENTS = {
475680
+ first_hatch: {
475681
+ id: "first_hatch",
475682
+ name: "New Friend",
475683
+ description: "Hatch your first companion",
475684
+ icon: "\uD83E\uDD5A",
475685
+ category: "onboarding"
475686
+ },
475687
+ first_commit: {
475688
+ id: "first_commit",
475689
+ name: "First Commit",
475690
+ description: "Generate your first git commit message",
475691
+ icon: "\uD83D\uDCDD",
475692
+ category: "onboarding"
475693
+ },
475694
+ first_review: {
475695
+ id: "first_review",
475696
+ name: "Code Reviewer",
475697
+ description: "Run your first code review",
475698
+ icon: "\uD83D\uDD0D",
475699
+ category: "onboarding"
475700
+ },
475701
+ first_plugin: {
475702
+ id: "first_plugin",
475703
+ name: "Extensible",
475704
+ description: "Install your first plugin",
475705
+ icon: "\uD83D\uDD0C",
475706
+ category: "onboarding"
475707
+ },
475708
+ first_skill: {
475709
+ id: "first_skill",
475710
+ name: "Skillful",
475711
+ description: "Use your first skill command",
475712
+ icon: "\uD83C\uDFAF",
475713
+ category: "onboarding"
475714
+ },
475715
+ streak_3: {
475716
+ id: "streak_3",
475717
+ name: "Getting Started",
475718
+ description: "Use myclaude for 3 consecutive days",
475719
+ icon: "\uD83D\uDD25",
475720
+ category: "streak"
475721
+ },
475722
+ streak_7: {
475723
+ id: "streak_7",
475724
+ name: "Week Warrior",
475725
+ description: "Use myclaude for 7 consecutive days",
475726
+ icon: "\uD83D\uDD25",
475727
+ category: "streak"
475728
+ },
475729
+ streak_30: {
475730
+ id: "streak_30",
475731
+ name: "Dedicated",
475732
+ description: "Use myclaude for 30 consecutive days",
475733
+ icon: "\uD83D\uDD25",
475734
+ category: "streak"
475735
+ },
475736
+ commits_10: {
475737
+ id: "commits_10",
475738
+ name: "Regular Committer",
475739
+ description: "Generate 10 commit messages",
475740
+ icon: "\uD83D\uDCDD",
475741
+ category: "usage"
475742
+ },
475743
+ commits_100: {
475744
+ id: "commits_100",
475745
+ name: "Commit Machine",
475746
+ description: "Generate 100 commit messages",
475747
+ icon: "\uD83D\uDE80",
475748
+ category: "usage"
475749
+ },
475750
+ chat_100: {
475751
+ id: "chat_100",
475752
+ name: "Conversationalist",
475753
+ description: "Send 100 messages in chat",
475754
+ icon: "\uD83D\uDCAC",
475755
+ category: "usage"
475756
+ },
475757
+ chat_1000: {
475758
+ id: "chat_1000",
475759
+ name: "Power User",
475760
+ description: "Send 1000 messages in chat",
475761
+ icon: "\uD83D\uDCAC",
475762
+ category: "usage"
475763
+ },
475764
+ model_switched: {
475765
+ id: "model_switched",
475766
+ name: "Model Hopper",
475767
+ description: "Switch AI model at least once",
475768
+ icon: "\uD83D\uDD04",
475769
+ category: "usage"
475770
+ },
475771
+ config_changed: {
475772
+ id: "config_changed",
475773
+ name: "Tinkerer",
475774
+ description: "Change a configuration setting",
475775
+ icon: "⚙️",
475776
+ category: "usage"
475777
+ },
475778
+ buddy_hatched: {
475779
+ id: "buddy_hatched",
475780
+ name: "Buddy Up",
475781
+ description: "Hatch a companion",
475782
+ icon: "\uD83D\uDC23",
475783
+ category: "buddy"
475784
+ },
475785
+ buddy_pet_10: {
475786
+ id: "buddy_pet_10",
475787
+ name: "Pet Lover",
475788
+ description: "Pet your companion 10 times",
475789
+ icon: "\uD83D\uDD90️",
475790
+ category: "buddy"
475791
+ },
475792
+ buddy_pet_100: {
475793
+ id: "buddy_pet_100",
475794
+ name: "Best Friend",
475795
+ description: "Pet your companion 100 times",
475796
+ icon: "\uD83D\uDC96",
475797
+ category: "buddy"
475798
+ },
475799
+ buddy_legendary: {
475800
+ id: "buddy_legendary",
475801
+ name: "Legendary Bond",
475802
+ description: "Hatch a legendary companion (1% chance)",
475803
+ icon: "⭐",
475804
+ category: "buddy"
475805
+ },
475806
+ buddy_shiny: {
475807
+ id: "buddy_shiny",
475808
+ name: "Shiny Hunter",
475809
+ description: "Hatch a shiny companion (1% chance)",
475810
+ icon: "✨",
475811
+ category: "buddy"
475812
+ },
475813
+ mcp_added: {
475814
+ id: "mcp_added",
475815
+ name: "Plugin Architect",
475816
+ description: "Add an MCP server",
475817
+ icon: "\uD83D\uDD17",
475818
+ category: "power"
475819
+ }
475820
+ };
475821
+ CATEGORIES = [
475822
+ { key: "onboarding", label: "Getting Started", icon: "\uD83C\uDF1F" },
475823
+ { key: "usage", label: "Usage", icon: "\uD83D\uDCCA" },
475824
+ { key: "streak", label: "Streaks", icon: "\uD83D\uDD25" },
475825
+ { key: "buddy", label: "Buddy", icon: "\uD83D\uDC3E" },
475826
+ { key: "power", label: "Power", icon: "⚡" }
475827
+ ];
475828
+ });
475829
+
475830
+ // src/commands/achievements/achievements.ts
475831
+ var exports_achievements = {};
475832
+ __export(exports_achievements, {
475833
+ call: () => call57
475834
+ });
475835
+ function handleSummary() {
475836
+ const unlocked = getUnlockedAchievements();
475837
+ const total = Object.keys(ACHIEVEMENTS).length;
475838
+ const unlockedCount = unlocked.size;
475839
+ const pct = Math.round(unlockedCount / total * 100);
475840
+ const lines2 = [
475841
+ "╔══════════════════════════════╗",
475842
+ "║ Achievements ║",
475843
+ `║ ${String(unlockedCount).padStart(2)} / ${total} (${pct}%) ║`,
475844
+ "╚══════════════════════════════╝",
475845
+ ""
475846
+ ];
475847
+ for (const group of getAchievementsByCategory()) {
475848
+ const unlockedInGroup = group.achievements.filter((a2) => unlocked.has(a2.id));
475849
+ if (unlockedInGroup.length === 0)
475850
+ continue;
475851
+ lines2.push(`${group.category.icon} ${group.category.label}:`);
475852
+ for (const a2 of unlockedInGroup) {
475853
+ lines2.push(` ${a2.icon} ${a2.name} — ${a2.description}`);
475854
+ }
475855
+ lines2.push("");
475856
+ }
475857
+ if (unlockedCount === 0) {
475858
+ lines2.push(" No achievements yet! Try using myclaude to unlock some.");
475859
+ lines2.push("");
475860
+ }
475861
+ lines2.push(`Use /achievements list to see all ${total} achievements.`);
475862
+ return { type: "text", value: lines2.join(`
475863
+ `) };
475864
+ }
475865
+ function handleListAll() {
475866
+ const unlocked = getUnlockedAchievements();
475867
+ const total = Object.keys(ACHIEVEMENTS).length;
475868
+ const unlockedCount = unlocked.size;
475869
+ const lines2 = [
475870
+ `All Achievements (${unlockedCount}/${total}):`,
475871
+ ""
475872
+ ];
475873
+ for (const group of getAchievementsByCategory()) {
475874
+ lines2.push(`${group.category.icon} ${group.category.label}:`);
475875
+ for (const a2 of group.achievements) {
475876
+ const done = unlocked.has(a2.id);
475877
+ lines2.push(` ${done ? "✅" : "⬜"} ${a2.icon} ${a2.name}`);
475878
+ lines2.push(` ${a2.description}`);
475879
+ }
475880
+ lines2.push("");
475881
+ }
475882
+ return { type: "text", value: lines2.join(`
475883
+ `) };
475884
+ }
475885
+ var call57 = async (args) => {
475886
+ const sub = args.trim().toLowerCase();
475887
+ if (sub === "list" || sub === "all") {
475888
+ return handleListAll();
475889
+ }
475890
+ return handleSummary();
475891
+ };
475892
+ var init_achievements = __esm(() => {
475893
+ init_storage();
475894
+ init_types14();
475895
+ });
475896
+
475897
+ // src/commands/achievements/index.ts
475898
+ var achievementsCmd, achievements_default;
475899
+ var init_achievements2 = __esm(() => {
475900
+ achievementsCmd = {
475901
+ name: "achievements",
475902
+ description: "View your unlocked achievements and progress",
475903
+ aliases: ["achieve", "ach"],
475904
+ load: () => Promise.resolve().then(() => (init_achievements(), exports_achievements))
475905
+ };
475906
+ achievements_default = achievementsCmd;
475907
+ });
475908
+
475909
+ // src/stats/usageStats.ts
475910
+ function getUsageStats() {
475911
+ return getGlobalConfig().usageStats ?? DEFAULT_STATS;
475912
+ }
475913
+ function saveStats(update) {
475914
+ const current = getUsageStats();
475915
+ const next = { ...current, ...update };
475916
+ saveGlobalConfig((cfg) => ({ ...cfg, usageStats: next }));
475917
+ return next;
475918
+ }
475919
+ function trackBuddyInteraction() {
475920
+ const stats = getUsageStats();
475921
+ saveStats({ totalBuddyInteractions: stats.totalBuddyInteractions + 1 });
475922
+ }
475923
+ var DEFAULT_STATS;
475924
+ var init_usageStats = __esm(() => {
475925
+ init_config();
475926
+ DEFAULT_STATS = {
475927
+ firstUsedAt: Date.now(),
475928
+ totalSessions: 0,
475929
+ totalCommands: 0,
475930
+ totalCommits: 0,
475931
+ totalReviews: 0,
475932
+ totalChatMessages: 0,
475933
+ totalPluginsInstalled: 0,
475934
+ totalSkillsUsed: 0,
475935
+ totalBuddyInteractions: 0,
475936
+ lastActiveDate: new Date().toISOString().slice(0, 10),
475937
+ consecutiveDays: 1,
475938
+ languagesUsed: []
475939
+ };
475940
+ });
475941
+
475942
+ // src/buddy/milestones.ts
475943
+ function getMilestones() {
475944
+ return getGlobalConfig().buddyMilestones ?? [];
475945
+ }
475946
+ function addMilestone(type) {
475947
+ const milestones = getMilestones();
475948
+ if (milestones.some((m2) => m2.type === type))
475949
+ return false;
475950
+ const def = MILESTONE_DEFS[type];
475951
+ const milestone = { type, ...def, achievedAt: Date.now() };
475952
+ saveGlobalConfig((cfg) => ({
475953
+ ...cfg,
475954
+ buddyMilestones: [...milestones, milestone].sort((a2, b3) => a2.achievedAt - b3.achievedAt)
475955
+ }));
475956
+ return true;
475957
+ }
475958
+ function formatMilestones() {
475959
+ const milestones = getMilestones();
475960
+ if (milestones.length === 0)
475961
+ return "No milestones yet.";
475962
+ return milestones.map((m2) => {
475963
+ const date6 = new Date(m2.achievedAt);
475964
+ const dateStr = `${date6.getFullYear()}-${String(date6.getMonth() + 1).padStart(2, "0")}-${String(date6.getDate()).padStart(2, "0")}`;
475965
+ return ` ${m2.icon} ${m2.label} (${dateStr})`;
475966
+ }).join(`
475967
+ `);
475968
+ }
475969
+ var MILESTONE_DEFS;
475970
+ var init_milestones = __esm(() => {
475971
+ init_config();
475972
+ MILESTONE_DEFS = {
475973
+ first_hatch: { label: "First companion hatched", icon: "\uD83E\uDD5A" },
475974
+ first_commit: { label: "First AI commit", icon: "\uD83D\uDCDD" },
475975
+ first_review: { label: "First code review", icon: "\uD83D\uDD0D" },
475976
+ first_plugin: { label: "First plugin installed", icon: "\uD83D\uDD0C" },
475977
+ first_skill: { label: "First skill used", icon: "\uD83C\uDFAF" },
475978
+ level_5: { label: "Buddy reached level 5", icon: "⭐" },
475979
+ level_10: { label: "Buddy reached level 10", icon: "\uD83C\uDF1F" },
475980
+ level_25: { label: "Buddy reached level 25", icon: "\uD83D\uDCAB" },
475981
+ level_50: { label: "Buddy reached max level 50", icon: "\uD83D\uDC51" },
475982
+ streak_7: { label: "7-day streak achieved", icon: "\uD83D\uDD25" },
475983
+ streak_30: { label: "30-day streak achieved", icon: "\uD83D\uDD25" },
475984
+ achievement_5: { label: "5 achievements unlocked", icon: "\uD83C\uDFC6" },
475985
+ achievement_10: { label: "10 achievements unlocked", icon: "\uD83C\uDFC6" },
475986
+ achievement_20: { label: "All achievements unlocked", icon: "\uD83C\uDFC6" },
475987
+ commits_10: { label: "10 commits generated", icon: "\uD83D\uDCDD" },
475988
+ commits_100: { label: "100 commits generated", icon: "\uD83D\uDE80" },
475989
+ pet_50: { label: "50 times pet your buddy", icon: "\uD83D\uDD90️" },
475990
+ pet_100: { label: "100 times pet your buddy", icon: "\uD83D\uDC96" }
475991
+ };
475992
+ });
475993
+
475994
+ // src/buddy/evolution/index.ts
475995
+ function getBuddyState() {
475996
+ return getGlobalConfig().buddyState ?? DEFAULT_STATE;
475997
+ }
475998
+ function saveBuddyState(update) {
475999
+ const current = getBuddyState();
476000
+ const next = { ...current, ...update };
476001
+ saveGlobalConfig((cfg) => ({ ...cfg, buddyState: next }));
476002
+ return next;
476003
+ }
476004
+ function getLevel() {
476005
+ return getBuddyState().level;
476006
+ }
476007
+ function getXp() {
476008
+ return getBuddyState().xp;
476009
+ }
476010
+ function getXpForNextLevel() {
476011
+ const state = getBuddyState();
476012
+ return state.level * XP_PER_LEVEL;
476013
+ }
476014
+ function getEvolutionStage() {
476015
+ return getBuddyState().evolutionStage;
476016
+ }
476017
+ function addXp(amount) {
476018
+ const events2 = [];
476019
+ let state = getBuddyState();
476020
+ let newXp = state.xp + amount;
476021
+ while (newXp >= state.level * XP_PER_LEVEL && state.level < MAX_LEVEL) {
476022
+ newXp -= state.level * XP_PER_LEVEL;
476023
+ state.level++;
476024
+ events2.push({ type: "level_up", level: state.level });
476025
+ const newStage = getEvolutionForLevel(state.level, state.evolutionStage);
476026
+ if (newStage > state.evolutionStage) {
476027
+ state.evolutionStage = newStage;
476028
+ events2.push({ type: "evolution", stage: newStage });
476029
+ }
476030
+ if (state.level === 5)
476031
+ addMilestone("level_5");
476032
+ if (state.level === 10)
476033
+ addMilestone("level_10");
476034
+ if (state.level === 25)
476035
+ addMilestone("level_25");
476036
+ if (state.level === 50)
476037
+ addMilestone("level_50");
476038
+ }
476039
+ state.xp = Math.min(newXp, MAX_LEVEL * XP_PER_LEVEL);
476040
+ state = saveBuddyState(state);
476041
+ return events2;
476042
+ }
476043
+ function getEvolutionForLevel(level, currentStage) {
476044
+ const companion = getCompanion();
476045
+ if (!companion)
476046
+ return 0;
476047
+ const rule = EVOLUTIONS.find((e) => e.base === companion.species);
476048
+ if (!rule)
476049
+ return 0;
476050
+ if (currentStage < 1 && level >= rule.level)
476051
+ return 1;
476052
+ if (currentStage < 2 && level >= rule.maxLevel)
476053
+ return 2;
476054
+ return currentStage;
476055
+ }
476056
+ function getEvolvedSpecies(species, stage) {
476057
+ if (stage === 0)
476058
+ return species;
476059
+ const rule = EVOLUTIONS.find((e) => e.base === species);
476060
+ if (!rule)
476061
+ return species;
476062
+ return stage >= 2 ? rule.maxEvolved : rule.evolved;
476063
+ }
476064
+ function incrementFeed() {
476065
+ const state = getBuddyState();
476066
+ const count4 = state.feedCount + 1;
476067
+ saveBuddyState({ feedCount: count4 });
476068
+ return count4;
476069
+ }
476070
+ function incrementPlay() {
476071
+ const state = getBuddyState();
476072
+ const count4 = state.playCount + 1;
476073
+ saveBuddyState({ playCount: count4 });
476074
+ return count4;
476075
+ }
476076
+ function getInteractionCounts() {
476077
+ const state = getBuddyState();
476078
+ return { feed: state.feedCount, play: state.playCount };
476079
+ }
476080
+ var XP_PER_LEVEL = 100, MAX_LEVEL = 50, DEFAULT_STATE, EVOLUTIONS, XP_REWARDS;
476081
+ var init_evolution = __esm(() => {
476082
+ init_config();
476083
+ init_companion();
476084
+ init_milestones();
476085
+ DEFAULT_STATE = {
476086
+ xp: 0,
476087
+ level: 1,
476088
+ evolutionStage: 0,
476089
+ feedCount: 0,
476090
+ playCount: 0
476091
+ };
476092
+ EVOLUTIONS = [
476093
+ { base: "duck", evolved: "goose", maxEvolved: "goose", level: 10, maxLevel: 25 },
476094
+ { base: "blob", evolved: "ghost", maxEvolved: "ghost", level: 10, maxLevel: 25 },
476095
+ { base: "cat", evolved: "chonk", maxEvolved: "chonk", level: 12, maxLevel: 28 },
476096
+ { base: "turtle", evolved: "snail", maxEvolved: "snail", level: 15, maxLevel: 30 }
476097
+ ];
476098
+ XP_REWARDS = {
476099
+ BUDDY_HATCH: 50,
476100
+ BUDDY_PET: 5,
476101
+ BUDDY_FEED: 15,
476102
+ BUDDY_PLAY: 20,
476103
+ COMMIT: 10,
476104
+ REVIEW: 25,
476105
+ PLUGIN_INSTALL: 30,
476106
+ SKILL_USE: 5,
476107
+ DAILY_LOGIN: 20,
476108
+ ACHIEVEMENT_UNLOCK: 100
476109
+ };
476110
+ });
476111
+
476112
+ // src/skills/suggestions.ts
476113
+ function getSuggestions(maxCount = 5) {
476114
+ const stats = getUsageStats();
476115
+ const level = getLevel();
476116
+ const unlocked = getUnlockedAchievements();
476117
+ const usedCommands = new Set([
476118
+ ...stats.languagesUsed
476119
+ ]);
476120
+ const scored = ALL_SKILLS.map((skill) => {
476121
+ let score = skill.priority;
476122
+ if (stats.totalSessions > 20)
476123
+ score += 10;
476124
+ if (stats.totalSessions > 50)
476125
+ score += 10;
476126
+ if (level > 5)
476127
+ score += 15;
476128
+ if (unlocked.size > 5)
476129
+ score += 10;
476130
+ if (unlocked.size > 10)
476131
+ score += 10;
476132
+ return { ...skill, score };
476133
+ });
476134
+ return scored.sort((a2, b3) => b3.score - a2.score).slice(0, maxCount).map(({ score, ...skill }) => skill);
476135
+ }
476136
+ var ALL_SKILLS;
476137
+ var init_suggestions = __esm(() => {
476138
+ init_usageStats();
476139
+ init_storage();
476140
+ init_evolution();
476141
+ ALL_SKILLS = [
476142
+ { command: "/commit", description: "Generate git commit messages with AI", reason: "You use git — let AI write your commit messages", priority: 90 },
476143
+ { command: "/review", description: "Review code changes with AI analysis", reason: "Improve code quality with automated reviews", priority: 85 },
476144
+ { command: "/plan", description: "Create step-by-step implementation plans", reason: "Plan before you code — reduce rework", priority: 80 },
476145
+ { command: "/test", description: "Generate and run tests", reason: "Keep your code reliable with automated tests", priority: 75 },
476146
+ { command: "/doc", description: "Generate documentation from code", reason: "Good docs make great projects", priority: 70 },
476147
+ { command: "/diff", description: "Review git diff with explanations", reason: "Understand every change before committing", priority: 65 },
476148
+ { command: "/branch", description: "Manage git branches", reason: "Organize your work with branching", priority: 60 },
476149
+ { command: "/config", description: "Configure myclaude settings", reason: "Tailor myclaude to your workflow", priority: 55 },
476150
+ { command: "/mcp add", description: "Add MCP servers for external tools", reason: "Connect myclaude to databases, APIs, and more", priority: 50 },
476151
+ { command: "/plugin", description: "Install community plugins", reason: "Extend myclaude with community tools", priority: 45 },
476152
+ { command: "/buddy pet", description: "Pet your companion for XP", reason: "Earn XP and bond with your buddy!", priority: 40 },
476153
+ { command: "/buddy feed", description: "Feed your companion for XP", reason: "Your buddy is hungry! +15 XP", priority: 35 },
476154
+ { command: "/buddy play", description: "Play with your companion for XP", reason: "Playtime! +20 XP for you and your buddy", priority: 30 },
476155
+ { command: "/achievements", description: "View unlocked achievements", reason: "See what you've accomplished", priority: 25 },
476156
+ { command: "/mystats", description: "View usage dashboard", reason: "Track your myclaude journey", priority: 20 },
476157
+ { command: "/memory", description: "Manage AI memory", reason: "Help myclaude remember important context", priority: 15 },
476158
+ { command: "/sandbox", description: "Toggle sandbox mode for safe execution", reason: "Execute commands in a safe environment", priority: 10 },
476159
+ { command: "/theme", description: "Change terminal theme", reason: "Make myclaude look the way you like", priority: 5 },
476160
+ { command: "/effort", description: "Adjust AI effort level", reason: "Control how thorough the AI should be", priority: 3 },
476161
+ { command: "/summary", description: "Summarize current session", reason: "Quick recap of what you've done", priority: 1 }
476162
+ ];
476163
+ });
476164
+
476165
+ // src/stats/tips.ts
476166
+ function getRandomTip() {
476167
+ const config5 = getGlobalConfig();
476168
+ const shown = new Set(config5.shownTips ?? []);
476169
+ const available = TIPS.filter((t) => !shown.has(t.id) && t.condition()).sort((a2, b3) => b3.priority - a2.priority);
476170
+ if (available.length === 0)
476171
+ return null;
476172
+ const tip = available[0];
476173
+ saveGlobalConfig((cfg) => ({
476174
+ ...cfg,
476175
+ shownTips: [...cfg.shownTips ?? [], tip.id]
476176
+ }));
476177
+ return tip.message;
476178
+ }
476179
+ var TIPS;
476180
+ var init_tips = __esm(() => {
476181
+ init_config();
476182
+ init_evolution();
476183
+ init_companion();
476184
+ init_storage();
476185
+ init_usageStats();
476186
+ TIPS = [
476187
+ {
476188
+ id: "welcome_buddy",
476189
+ message: "\uD83D\uDC3E Tip: You have a companion! Try /buddy pet, /buddy feed, or /buddy play to earn XP.",
476190
+ condition: () => !!getCompanion(),
476191
+ priority: 100
476192
+ },
476193
+ {
476194
+ id: "try_achievements",
476195
+ message: "\uD83C\uDFC6 Tip: Check your achievements with /achievements to see what you can unlock!",
476196
+ condition: () => getUnlockedAchievements().size < 3,
476197
+ priority: 90
476198
+ },
476199
+ {
476200
+ id: "try_mystats",
476201
+ message: "\uD83D\uDCCA Tip: View your usage dashboard with /mystats to track your progress.",
476202
+ condition: () => getUsageStats().totalSessions >= 3,
476203
+ priority: 80
476204
+ },
476205
+ {
476206
+ id: "buddy_feed",
476207
+ message: "\uD83C\uDF7D️ Tip: Your buddy looks hungry! Try /buddy feed for +15 XP.",
476208
+ condition: () => {
476209
+ const c6 = getCompanion();
476210
+ return !!c6 && getLevel() < 5;
476211
+ },
476212
+ priority: 70
476213
+ },
476214
+ {
476215
+ id: "buddy_play",
476216
+ message: "\uD83C\uDFBE Tip: Your buddy wants to play! Try /buddy play for +20 XP.",
476217
+ condition: () => {
476218
+ const c6 = getCompanion();
476219
+ return !!c6 && getLevel() >= 3 && getLevel() < 10;
476220
+ },
476221
+ priority: 60
476222
+ },
476223
+ {
476224
+ id: "buddy_evolution",
476225
+ message: "✨ Tip: Keep leveling up your buddy! It may evolve at higher levels.",
476226
+ condition: () => {
476227
+ const c6 = getCompanion();
476228
+ return !!c6 && getLevel() >= 8 && getLevel() < 12;
476229
+ },
476230
+ priority: 50
476231
+ },
476232
+ {
476233
+ id: "streak_reminder",
476234
+ message: "\uD83D\uDD25 Tip: You're on a streak! Come back tomorrow to keep it going.",
476235
+ condition: () => {
476236
+ const s = getUsageStats();
476237
+ return s.consecutiveDays >= 3 && s.consecutiveDays < 7;
476238
+ },
476239
+ priority: 40
476240
+ },
476241
+ {
476242
+ id: "plugin_tip",
476243
+ message: "\uD83D\uDD0C Tip: Extend myclaude with plugins! Try /plugin search to find new tools.",
476244
+ condition: () => getUsageStats().totalPluginsInstalled === 0 && getUsageStats().totalSessions >= 5,
476245
+ priority: 30
476246
+ },
476247
+ {
476248
+ id: "skill_tip",
476249
+ message: "\uD83C\uDFAF Tip: Use /skills to see available skill commands that can automate tasks.",
476250
+ condition: () => getUsageStats().totalSkillsUsed === 0 && getUsageStats().totalSessions >= 3,
476251
+ priority: 20
476252
+ },
476253
+ {
476254
+ id: "mcp_tip",
476255
+ message: "\uD83D\uDD17 Tip: Add MCP servers with /mcp add to integrate external tools and APIs.",
476256
+ condition: () => getUsageStats().totalSessions >= 10 && getUsageStats().totalPluginsInstalled > 0,
476257
+ priority: 10
476258
+ }
476259
+ ];
476260
+ });
476261
+
476262
+ // src/commands/mystats/mystats.ts
476263
+ var exports_mystats = {};
476264
+ __export(exports_mystats, {
476265
+ call: () => call58
476266
+ });
476267
+ var call58 = async () => {
476268
+ const stats = getUsageStats();
476269
+ const companion = getCompanion();
476270
+ const unlocked = getUnlockedAchievements();
476271
+ const daysActive = Math.max(1, Math.floor((Date.now() - stats.firstUsedAt) / 86400000));
476272
+ const hoursSince = Math.floor((Date.now() - stats.firstUsedAt) / 3600000);
476273
+ const lines2 = [
476274
+ "╔══════════════════════════════╗",
476275
+ "║ myclaude Dashboard ║",
476276
+ "╚══════════════════════════════╝",
476277
+ ""
476278
+ ];
476279
+ lines2.push("\uD83D\uDCCA Usage:");
476280
+ lines2.push(` Active days: ${daysActive}d (${hoursSince}h since first use)`);
476281
+ lines2.push(` Sessions: ${stats.totalSessions}`);
476282
+ lines2.push(` Commands run: ${stats.totalCommands}`);
476283
+ lines2.push(` Chat messages: ${stats.totalChatMessages}`);
476284
+ lines2.push(` Commits: ${stats.totalCommits}`);
476285
+ lines2.push(` Reviews: ${stats.totalReviews}`);
476286
+ lines2.push(` Plugins: ${stats.totalPluginsInstalled}`);
476287
+ lines2.push(` Skills used: ${stats.totalSkillsUsed}`);
476288
+ lines2.push(` Streak: \uD83D\uDD25 ${stats.consecutiveDays} days`);
476289
+ if (stats.languagesUsed.length > 0) {
476290
+ lines2.push(` Languages: ${stats.languagesUsed.join(", ")}`);
476291
+ }
476292
+ lines2.push("");
476293
+ lines2.push(`\uD83C\uDFC6 Achievements: ${unlocked.size}/${Object.keys(ACHIEVEMENTS).length} unlocked`);
476294
+ lines2.push("");
476295
+ if (companion) {
476296
+ const level = getLevel();
476297
+ const xp = getXp();
476298
+ const xpNext = getXpForNextLevel();
476299
+ const stage = getEvolutionStage();
476300
+ const { feed, play } = getInteractionCounts();
476301
+ const pct = Math.round(xp / xpNext * 100);
476302
+ lines2.push(`\uD83D\uDC3E Buddy: ${companion.name} (${companion.species})`);
476303
+ lines2.push(` Level: ${level} (${xp}/${xpNext} XP, ${pct}%)`);
476304
+ if (stage > 0)
476305
+ lines2.push(` Evolution: Stage ${stage} ✨`);
476306
+ lines2.push(` Interactions: ${stats.totalBuddyInteractions} total`);
476307
+ lines2.push(` Feed: ${feed}x | Play: ${play}x`);
476308
+ lines2.push("");
476309
+ }
476310
+ lines2.push("\uD83D\uDCA1 Tips:");
476311
+ if (stats.consecutiveDays >= 7) {
476312
+ lines2.push(" \uD83D\uDD25 You're on a hot streak! Keep it up!");
476313
+ }
476314
+ if (companion && getLevel() < 10) {
476315
+ lines2.push(" \uD83D\uDC3E Pet, feed and play with your buddy to earn XP!");
476316
+ }
476317
+ if (unlocked.size < 5) {
476318
+ lines2.push(" \uD83C\uDFC6 Try /achievements to see what you can unlock!");
476319
+ }
476320
+ const tip = getRandomTip();
476321
+ if (tip) {
476322
+ lines2.push("");
476323
+ lines2.push(` ${tip}`);
476324
+ }
476325
+ const suggestions = getSuggestions(4);
476326
+ if (suggestions.length > 0) {
476327
+ lines2.push("");
476328
+ lines2.push("\uD83C\uDFAF Suggested for you:");
476329
+ for (const s of suggestions) {
476330
+ lines2.push(` ${s.command.padEnd(18)} ${s.description}`);
476331
+ }
476332
+ }
476333
+ lines2.push("");
476334
+ return { type: "text", value: lines2.join(`
476335
+ `) };
476336
+ };
476337
+ var init_mystats = __esm(() => {
476338
+ init_usageStats();
476339
+ init_evolution();
476340
+ init_companion();
476341
+ init_storage();
476342
+ init_types14();
476343
+ init_suggestions();
476344
+ init_tips();
476345
+ });
476346
+
476347
+ // src/commands/mystats/index.ts
476348
+ var mystatsCmd, mystats_default;
476349
+ var init_mystats2 = __esm(() => {
476350
+ mystatsCmd = {
476351
+ name: "mystats",
476352
+ description: "View your coding statistics and usage dashboard",
476353
+ aliases: ["stats", "dashboard"],
476354
+ load: () => Promise.resolve().then(() => (init_mystats(), exports_mystats))
476355
+ };
476356
+ mystats_default = mystatsCmd;
476357
+ });
476358
+
475599
476359
  // src/commands/reset-limits/index.js
475600
476360
  var stub, resetLimits, resetLimitsNonInteractive;
475601
476361
  var init_reset_limits = __esm(() => {
@@ -476745,10 +477505,10 @@ var init_SandboxSettings = __esm(() => {
476745
477505
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
476746
477506
  var exports_sandbox_toggle = {};
476747
477507
  __export(exports_sandbox_toggle, {
476748
- call: () => call57
477508
+ call: () => call59
476749
477509
  });
476750
477510
  import { relative as relative28 } from "path";
476751
- async function call57(onDone, _context, args) {
477511
+ async function call59(onDone, _context, args) {
476752
477512
  const settings = getSettings_DEPRECATED();
476753
477513
  const themeName = settings.theme || "light";
476754
477514
  const platform5 = getPlatform();
@@ -477113,7 +477873,7 @@ async function isChromeExtensionInstalled() {
477113
477873
  }
477114
477874
  var CHROME_EXTENSION_RECONNECT_URL = "https://clau.de/chrome/reconnect", NATIVE_HOST_IDENTIFIER = "com.anthropic.claude_code_browser_extension", NATIVE_HOST_MANIFEST_NAME, shouldAutoEnable = undefined;
477115
477875
  var init_setup2 = __esm(() => {
477116
- init_claude_for_chrome_mcp();
477876
+ init_ant_claude_for_chrome_mcp();
477117
477877
  init_state();
477118
477878
  init_growthbook();
477119
477879
  init_config();
@@ -477130,7 +477890,7 @@ var init_setup2 = __esm(() => {
477130
477890
  // src/commands/chrome/chrome.tsx
477131
477891
  var exports_chrome = {};
477132
477892
  __export(exports_chrome, {
477133
- call: () => call58
477893
+ call: () => call60
477134
477894
  });
477135
477895
  function ClaudeInChromeMenu(t0) {
477136
477896
  const $3 = import_compiler_runtime267.c(41);
@@ -477497,7 +478257,7 @@ function _temp271(c6) {
477497
478257
  function _temp159(s) {
477498
478258
  return s.mcp.clients;
477499
478259
  }
477500
- var import_compiler_runtime267, import_react187, jsx_dev_runtime340, CHROME_EXTENSION_URL = "https://claude.ai/chrome", CHROME_PERMISSIONS_URL = "https://clau.de/chrome/permissions", CHROME_RECONNECT_URL = "https://clau.de/chrome/reconnect", call58 = async function(onDone) {
478260
+ var import_compiler_runtime267, import_react187, jsx_dev_runtime340, CHROME_EXTENSION_URL = "https://claude.ai/chrome", CHROME_PERMISSIONS_URL = "https://clau.de/chrome/permissions", CHROME_RECONNECT_URL = "https://clau.de/chrome/reconnect", call60 = async function(onDone) {
477501
478261
  const isExtensionInstalled = await isChromeExtensionInstalled();
477502
478262
  const config5 = getGlobalConfig();
477503
478263
  const isSubscriber = isClaudeAISubscriber();
@@ -477545,9 +478305,9 @@ var init_chrome2 = __esm(() => {
477545
478305
  // src/commands/stickers/stickers.ts
477546
478306
  var exports_stickers = {};
477547
478307
  __export(exports_stickers, {
477548
- call: () => call59
478308
+ call: () => call61
477549
478309
  });
477550
- async function call59() {
478310
+ async function call61() {
477551
478311
  const url3 = "https://www.stickermule.com/claudecode";
477552
478312
  const success2 = await openBrowser(url3);
477553
478313
  if (success2) {
@@ -477577,7 +478337,7 @@ var init_stickers2 = __esm(() => {
477577
478337
  });
477578
478338
 
477579
478339
  // src/commands/advisor.ts
477580
- var call60 = async (args, context2) => {
478340
+ var call62 = async (args, context2) => {
477581
478341
  const arg = args.trim().toLowerCase();
477582
478342
  const baseModel = parseUserSpecifiedModel(context2.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
477583
478343
  if (!arg) {
@@ -477663,7 +478423,7 @@ var init_advisor2 = __esm(() => {
477663
478423
  return !canUserConfigureAdvisor();
477664
478424
  },
477665
478425
  supportsNonInteractive: true,
477666
- load: () => Promise.resolve({ call: call60 })
478426
+ load: () => Promise.resolve({ call: call62 })
477667
478427
  };
477668
478428
  advisor_default = advisor;
477669
478429
  });
@@ -478077,12 +478837,12 @@ var init_ExitFlow = __esm(() => {
478077
478837
  // src/commands/exit/exit.tsx
478078
478838
  var exports_exit = {};
478079
478839
  __export(exports_exit, {
478080
- call: () => call61
478840
+ call: () => call63
478081
478841
  });
478082
478842
  function getRandomGoodbyeMessage2() {
478083
478843
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
478084
478844
  }
478085
- async function call61(onDone) {
478845
+ async function call63(onDone) {
478086
478846
  if (false) {}
478087
478847
  const showWorktree = getCurrentWorktreeSession() !== null;
478088
478848
  if (showWorktree) {
@@ -478376,7 +479136,7 @@ var exports_export = {};
478376
479136
  __export(exports_export, {
478377
479137
  sanitizeFilename: () => sanitizeFilename,
478378
479138
  extractFirstPrompt: () => extractFirstPrompt,
478379
- call: () => call62
479139
+ call: () => call64
478380
479140
  });
478381
479141
  import { join as join131 } from "path";
478382
479142
  function formatTimestamp(date6) {
@@ -478417,7 +479177,7 @@ async function exportWithReactRenderer(context2) {
478417
479177
  const tools = context2.options.tools || [];
478418
479178
  return renderMessagesToPlainText(context2.messages, tools);
478419
479179
  }
478420
- async function call62(onDone, context2, args) {
479180
+ async function call64(onDone, context2, args) {
478421
479181
  const content = await exportWithReactRenderer(context2);
478422
479182
  const filename = args.trim();
478423
479183
  if (filename) {
@@ -478477,7 +479237,7 @@ var init_export2 = __esm(() => {
478477
479237
  // src/commands/model/model.tsx
478478
479238
  var exports_model2 = {};
478479
479239
  __export(exports_model2, {
478480
- call: () => call63
479240
+ call: () => call65
478481
479241
  });
478482
479242
  function ModelPickerWrapper(t0) {
478483
479243
  const $3 = import_compiler_runtime269.c(17);
@@ -478725,7 +479485,7 @@ function renderModelLabel(model) {
478725
479485
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
478726
479486
  return model === null ? `${rendered} (default)` : rendered;
478727
479487
  }
478728
- var import_compiler_runtime269, React107, jsx_dev_runtime347, call63 = async (onDone, _context, args) => {
479488
+ var import_compiler_runtime269, React107, jsx_dev_runtime347, call65 = async (onDone, _context, args) => {
478729
479489
  args = args?.trim() || "";
478730
479490
  if (COMMON_INFO_ARGS.includes(args)) {
478731
479491
  logEvent("tengu_model_command_inline_help", {
@@ -478794,7 +479554,7 @@ var init_model3 = __esm(() => {
478794
479554
  // src/commands/tag/tag.tsx
478795
479555
  var exports_tag = {};
478796
479556
  __export(exports_tag, {
478797
- call: () => call64
479557
+ call: () => call66
478798
479558
  });
478799
479559
  function ConfirmRemoveTag(t0) {
478800
479560
  const $3 = import_compiler_runtime270.c(11);
@@ -479018,7 +479778,7 @@ Examples:
479018
479778
  React108.useEffect(t1, t2);
479019
479779
  return null;
479020
479780
  }
479021
- async function call64(onDone, _context, args) {
479781
+ async function call66(onDone, _context, args) {
479022
479782
  args = args?.trim() || "";
479023
479783
  if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
479024
479784
  return /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ShowHelp, {
@@ -479067,9 +479827,9 @@ var init_tag2 = __esm(() => {
479067
479827
  // src/commands/output-style/output-style.tsx
479068
479828
  var exports_output_style = {};
479069
479829
  __export(exports_output_style, {
479070
- call: () => call65
479830
+ call: () => call67
479071
479831
  });
479072
- async function call65(onDone) {
479832
+ async function call67(onDone) {
479073
479833
  onDone("/output-style has been deprecated. Use /config to change your output style, or set it in your settings file. Changes take effect on the next session.", {
479074
479834
  display: "system"
479075
479835
  });
@@ -479588,9 +480348,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
479588
480348
  // src/commands/remote-env/remote-env.tsx
479589
480349
  var exports_remote_env = {};
479590
480350
  __export(exports_remote_env, {
479591
- call: () => call66
480351
+ call: () => call68
479592
480352
  });
479593
- async function call66(onDone) {
480353
+ async function call68(onDone) {
479594
480354
  return /* @__PURE__ */ jsx_dev_runtime350.jsxDEV(RemoteEnvironmentDialog, {
479595
480355
  onDone
479596
480356
  }, undefined, false, undefined, this);
@@ -479620,9 +480380,9 @@ var init_remote_env2 = __esm(() => {
479620
480380
  // src/commands/upgrade/upgrade.tsx
479621
480381
  var exports_upgrade = {};
479622
480382
  __export(exports_upgrade, {
479623
- call: () => call67
480383
+ call: () => call69
479624
480384
  });
479625
- async function call67(onDone, context2) {
480385
+ async function call69(onDone, context2) {
479626
480386
  try {
479627
480387
  if (isClaudeAISubscriber()) {
479628
480388
  const tokens = getClaudeAIOAuthTokens();
@@ -479682,7 +480442,7 @@ var init_upgrade2 = __esm(() => {
479682
480442
  // src/commands/rate-limit-options/rate-limit-options.tsx
479683
480443
  var exports_rate_limit_options = {};
479684
480444
  __export(exports_rate_limit_options, {
479685
- call: () => call68
480445
+ call: () => call70
479686
480446
  });
479687
480447
  function RateLimitOptionsMenu(t0) {
479688
480448
  const $3 = import_compiler_runtime272.c(25);
@@ -479816,7 +480576,7 @@ function RateLimitOptionsMenu(t0) {
479816
480576
  t5 = function handleSelect2(value) {
479817
480577
  if (value === "upgrade") {
479818
480578
  logEvent("tengu_rate_limit_options_menu_select_upgrade", {});
479819
- call67(onDone, context2).then((jsx) => {
480579
+ call69(onDone, context2).then((jsx) => {
479820
480580
  if (jsx) {
479821
480581
  setSubCommandJSX(jsx);
479822
480582
  }
@@ -479876,7 +480636,7 @@ function RateLimitOptionsMenu(t0) {
479876
480636
  }
479877
480637
  return t7;
479878
480638
  }
479879
- async function call68(onDone, context2) {
480639
+ async function call70(onDone, context2) {
479880
480640
  return /* @__PURE__ */ jsx_dev_runtime352.jsxDEV(RateLimitOptionsMenu, {
479881
480641
  onDone,
479882
480642
  context: context2
@@ -479950,7 +480710,7 @@ var exports_effort = {};
479950
480710
  __export(exports_effort, {
479951
480711
  showCurrentEffort: () => showCurrentEffort,
479952
480712
  executeEffort: () => executeEffort,
479953
- call: () => call69
480713
+ call: () => call71
479954
480714
  });
479955
480715
  function setEffortValue(effortValue) {
479956
480716
  const persistable = toPersistableEffort(effortValue);
@@ -480101,7 +480861,7 @@ function ApplyEffortAndClose(t0) {
480101
480861
  React110.useEffect(t1, t2);
480102
480862
  return null;
480103
480863
  }
480104
- async function call69(onDone, _context, args) {
480864
+ async function call71(onDone, _context, args) {
480105
480865
  args = args?.trim() || "";
480106
480866
  if (COMMON_HELP_ARGS2.includes(args)) {
480107
480867
  onDone(`Usage: /effort [low|medium|high|max|auto]
@@ -483010,9 +483770,9 @@ var init_Stats = __esm(() => {
483010
483770
  // src/commands/stats/stats.tsx
483011
483771
  var exports_stats = {};
483012
483772
  __export(exports_stats, {
483013
- call: () => call70
483773
+ call: () => call72
483014
483774
  });
483015
- var jsx_dev_runtime355, call70 = async (onDone) => {
483775
+ var jsx_dev_runtime355, call72 = async (onDone) => {
483016
483776
  return /* @__PURE__ */ jsx_dev_runtime355.jsxDEV(Stats2, {
483017
483777
  onClose: onDone
483018
483778
  }, undefined, false, undefined, this);
@@ -483075,6 +483835,870 @@ var init_agents_platform = __esm(() => {
483075
483835
  agents_platform_default = agentsPlatform;
483076
483836
  });
483077
483837
 
483838
+ // src/buddy/sprites.ts
483839
+ function renderSprite(bones, frame = 0) {
483840
+ const frames = BODIES[bones.species];
483841
+ const body = frames[frame % frames.length].map((line) => line.replaceAll("{E}", bones.eye));
483842
+ const lines2 = [...body];
483843
+ if (bones.hat !== "none" && !lines2[0].trim()) {
483844
+ lines2[0] = HAT_LINES[bones.hat];
483845
+ }
483846
+ if (!lines2[0].trim() && frames.every((f) => !f[0].trim()))
483847
+ lines2.shift();
483848
+ return lines2;
483849
+ }
483850
+ function spriteFrameCount(species) {
483851
+ return BODIES[species].length;
483852
+ }
483853
+ function renderFace(bones) {
483854
+ const eye = bones.eye;
483855
+ switch (bones.species) {
483856
+ case duck:
483857
+ case goose:
483858
+ return `(${eye}>`;
483859
+ case blob:
483860
+ return `(${eye}${eye})`;
483861
+ case cat:
483862
+ return `=${eye}ω${eye}=`;
483863
+ case dragon:
483864
+ return `<${eye}~${eye}>`;
483865
+ case octopus:
483866
+ return `~(${eye}${eye})~`;
483867
+ case owl:
483868
+ return `(${eye})(${eye})`;
483869
+ case penguin:
483870
+ return `(${eye}>)`;
483871
+ case turtle:
483872
+ return `[${eye}_${eye}]`;
483873
+ case snail:
483874
+ return `${eye}(@)`;
483875
+ case ghost:
483876
+ return `/${eye}${eye}\\`;
483877
+ case axolotl:
483878
+ return `}${eye}.${eye}{`;
483879
+ case capybara:
483880
+ return `(${eye}oo${eye})`;
483881
+ case cactus:
483882
+ return `|${eye} ${eye}|`;
483883
+ case robot:
483884
+ return `[${eye}${eye}]`;
483885
+ case rabbit:
483886
+ return `(${eye}..${eye})`;
483887
+ case mushroom:
483888
+ return `|${eye} ${eye}|`;
483889
+ case chonk:
483890
+ return `(${eye}.${eye})`;
483891
+ }
483892
+ }
483893
+ var BODIES, HAT_LINES;
483894
+ var init_sprites = __esm(() => {
483895
+ init_types4();
483896
+ BODIES = {
483897
+ [duck]: [
483898
+ [
483899
+ " ",
483900
+ " __ ",
483901
+ " <({E} )___ ",
483902
+ " ( ._> ",
483903
+ " `--´ "
483904
+ ],
483905
+ [
483906
+ " ",
483907
+ " __ ",
483908
+ " <({E} )___ ",
483909
+ " ( ._> ",
483910
+ " `--´~ "
483911
+ ],
483912
+ [
483913
+ " ",
483914
+ " __ ",
483915
+ " <({E} )___ ",
483916
+ " ( .__> ",
483917
+ " `--´ "
483918
+ ]
483919
+ ],
483920
+ [goose]: [
483921
+ [
483922
+ " ",
483923
+ " ({E}> ",
483924
+ " || ",
483925
+ " _(__)_ ",
483926
+ " ^^^^ "
483927
+ ],
483928
+ [
483929
+ " ",
483930
+ " ({E}> ",
483931
+ " || ",
483932
+ " _(__)_ ",
483933
+ " ^^^^ "
483934
+ ],
483935
+ [
483936
+ " ",
483937
+ " ({E}>> ",
483938
+ " || ",
483939
+ " _(__)_ ",
483940
+ " ^^^^ "
483941
+ ]
483942
+ ],
483943
+ [blob]: [
483944
+ [
483945
+ " ",
483946
+ " .----. ",
483947
+ " ( {E} {E} ) ",
483948
+ " ( ) ",
483949
+ " `----´ "
483950
+ ],
483951
+ [
483952
+ " ",
483953
+ " .------. ",
483954
+ " ( {E} {E} ) ",
483955
+ " ( ) ",
483956
+ " `------´ "
483957
+ ],
483958
+ [
483959
+ " ",
483960
+ " .--. ",
483961
+ " ({E} {E}) ",
483962
+ " ( ) ",
483963
+ " `--´ "
483964
+ ]
483965
+ ],
483966
+ [cat]: [
483967
+ [
483968
+ " ",
483969
+ " /\\_/\\ ",
483970
+ " ( {E} {E}) ",
483971
+ " ( ω ) ",
483972
+ ' (")_(") '
483973
+ ],
483974
+ [
483975
+ " ",
483976
+ " /\\_/\\ ",
483977
+ " ( {E} {E}) ",
483978
+ " ( ω ) ",
483979
+ ' (")_(")~ '
483980
+ ],
483981
+ [
483982
+ " ",
483983
+ " /\\-/\\ ",
483984
+ " ( {E} {E}) ",
483985
+ " ( ω ) ",
483986
+ ' (")_(") '
483987
+ ]
483988
+ ],
483989
+ [dragon]: [
483990
+ [
483991
+ " ",
483992
+ " /^\\ /^\\ ",
483993
+ " < {E} {E} > ",
483994
+ " ( ~~ ) ",
483995
+ " `-vvvv-´ "
483996
+ ],
483997
+ [
483998
+ " ",
483999
+ " /^\\ /^\\ ",
484000
+ " < {E} {E} > ",
484001
+ " ( ) ",
484002
+ " `-vvvv-´ "
484003
+ ],
484004
+ [
484005
+ " ~ ~ ",
484006
+ " /^\\ /^\\ ",
484007
+ " < {E} {E} > ",
484008
+ " ( ~~ ) ",
484009
+ " `-vvvv-´ "
484010
+ ]
484011
+ ],
484012
+ [octopus]: [
484013
+ [
484014
+ " ",
484015
+ " .----. ",
484016
+ " ( {E} {E} ) ",
484017
+ " (______) ",
484018
+ " /\\/\\/\\/\\ "
484019
+ ],
484020
+ [
484021
+ " ",
484022
+ " .----. ",
484023
+ " ( {E} {E} ) ",
484024
+ " (______) ",
484025
+ " \\/\\/\\/\\/ "
484026
+ ],
484027
+ [
484028
+ " o ",
484029
+ " .----. ",
484030
+ " ( {E} {E} ) ",
484031
+ " (______) ",
484032
+ " /\\/\\/\\/\\ "
484033
+ ]
484034
+ ],
484035
+ [owl]: [
484036
+ [
484037
+ " ",
484038
+ " /\\ /\\ ",
484039
+ " (({E})({E})) ",
484040
+ " ( >< ) ",
484041
+ " `----´ "
484042
+ ],
484043
+ [
484044
+ " ",
484045
+ " /\\ /\\ ",
484046
+ " (({E})({E})) ",
484047
+ " ( >< ) ",
484048
+ " .----. "
484049
+ ],
484050
+ [
484051
+ " ",
484052
+ " /\\ /\\ ",
484053
+ " (({E})(-)) ",
484054
+ " ( >< ) ",
484055
+ " `----´ "
484056
+ ]
484057
+ ],
484058
+ [penguin]: [
484059
+ [
484060
+ " ",
484061
+ " .---. ",
484062
+ " ({E}>{E}) ",
484063
+ " /( )\\ ",
484064
+ " `---´ "
484065
+ ],
484066
+ [
484067
+ " ",
484068
+ " .---. ",
484069
+ " ({E}>{E}) ",
484070
+ " |( )| ",
484071
+ " `---´ "
484072
+ ],
484073
+ [
484074
+ " .---. ",
484075
+ " ({E}>{E}) ",
484076
+ " /( )\\ ",
484077
+ " `---´ ",
484078
+ " ~ ~ "
484079
+ ]
484080
+ ],
484081
+ [turtle]: [
484082
+ [
484083
+ " ",
484084
+ " _,--._ ",
484085
+ " ( {E} {E} ) ",
484086
+ " /[______]\\ ",
484087
+ " `` `` "
484088
+ ],
484089
+ [
484090
+ " ",
484091
+ " _,--._ ",
484092
+ " ( {E} {E} ) ",
484093
+ " /[______]\\ ",
484094
+ " `` `` "
484095
+ ],
484096
+ [
484097
+ " ",
484098
+ " _,--._ ",
484099
+ " ( {E} {E} ) ",
484100
+ " /[======]\\ ",
484101
+ " `` `` "
484102
+ ]
484103
+ ],
484104
+ [snail]: [
484105
+ [
484106
+ " ",
484107
+ " {E} .--. ",
484108
+ " \\ ( @ ) ",
484109
+ " \\_`--´ ",
484110
+ " ~~~~~~~ "
484111
+ ],
484112
+ [
484113
+ " ",
484114
+ " {E} .--. ",
484115
+ " | ( @ ) ",
484116
+ " \\_`--´ ",
484117
+ " ~~~~~~~ "
484118
+ ],
484119
+ [
484120
+ " ",
484121
+ " {E} .--. ",
484122
+ " \\ ( @ ) ",
484123
+ " \\_`--´ ",
484124
+ " ~~~~~~ "
484125
+ ]
484126
+ ],
484127
+ [ghost]: [
484128
+ [
484129
+ " ",
484130
+ " .----. ",
484131
+ " / {E} {E} \\ ",
484132
+ " | | ",
484133
+ " ~`~``~`~ "
484134
+ ],
484135
+ [
484136
+ " ",
484137
+ " .----. ",
484138
+ " / {E} {E} \\ ",
484139
+ " | | ",
484140
+ " `~`~~`~` "
484141
+ ],
484142
+ [
484143
+ " ~ ~ ",
484144
+ " .----. ",
484145
+ " / {E} {E} \\ ",
484146
+ " | | ",
484147
+ " ~~`~~`~~ "
484148
+ ]
484149
+ ],
484150
+ [axolotl]: [
484151
+ [
484152
+ " ",
484153
+ "}~(______)~{",
484154
+ "}~({E} .. {E})~{",
484155
+ " ( .--. ) ",
484156
+ " (_/ \\_) "
484157
+ ],
484158
+ [
484159
+ " ",
484160
+ "~}(______){~",
484161
+ "~}({E} .. {E}){~",
484162
+ " ( .--. ) ",
484163
+ " (_/ \\_) "
484164
+ ],
484165
+ [
484166
+ " ",
484167
+ "}~(______)~{",
484168
+ "}~({E} .. {E})~{",
484169
+ " ( -- ) ",
484170
+ " ~_/ \\_~ "
484171
+ ]
484172
+ ],
484173
+ [capybara]: [
484174
+ [
484175
+ " ",
484176
+ " n______n ",
484177
+ " ( {E} {E} ) ",
484178
+ " ( oo ) ",
484179
+ " `------´ "
484180
+ ],
484181
+ [
484182
+ " ",
484183
+ " n______n ",
484184
+ " ( {E} {E} ) ",
484185
+ " ( Oo ) ",
484186
+ " `------´ "
484187
+ ],
484188
+ [
484189
+ " ~ ~ ",
484190
+ " u______n ",
484191
+ " ( {E} {E} ) ",
484192
+ " ( oo ) ",
484193
+ " `------´ "
484194
+ ]
484195
+ ],
484196
+ [cactus]: [
484197
+ [
484198
+ " ",
484199
+ " n ____ n ",
484200
+ " | |{E} {E}| | ",
484201
+ " |_| |_| ",
484202
+ " | | "
484203
+ ],
484204
+ [
484205
+ " ",
484206
+ " ____ ",
484207
+ " n |{E} {E}| n ",
484208
+ " |_| |_| ",
484209
+ " | | "
484210
+ ],
484211
+ [
484212
+ " n n ",
484213
+ " | ____ | ",
484214
+ " | |{E} {E}| | ",
484215
+ " |_| |_| ",
484216
+ " | | "
484217
+ ]
484218
+ ],
484219
+ [robot]: [
484220
+ [
484221
+ " ",
484222
+ " .[||]. ",
484223
+ " [ {E} {E} ] ",
484224
+ " [ ==== ] ",
484225
+ " `------´ "
484226
+ ],
484227
+ [
484228
+ " ",
484229
+ " .[||]. ",
484230
+ " [ {E} {E} ] ",
484231
+ " [ -==- ] ",
484232
+ " `------´ "
484233
+ ],
484234
+ [
484235
+ " * ",
484236
+ " .[||]. ",
484237
+ " [ {E} {E} ] ",
484238
+ " [ ==== ] ",
484239
+ " `------´ "
484240
+ ]
484241
+ ],
484242
+ [rabbit]: [
484243
+ [
484244
+ " ",
484245
+ " (\\__/) ",
484246
+ " ( {E} {E} ) ",
484247
+ " =( .. )= ",
484248
+ ' (")__(") '
484249
+ ],
484250
+ [
484251
+ " ",
484252
+ " (|__/) ",
484253
+ " ( {E} {E} ) ",
484254
+ " =( .. )= ",
484255
+ ' (")__(") '
484256
+ ],
484257
+ [
484258
+ " ",
484259
+ " (\\__/) ",
484260
+ " ( {E} {E} ) ",
484261
+ " =( . . )= ",
484262
+ ' (")__(") '
484263
+ ]
484264
+ ],
484265
+ [mushroom]: [
484266
+ [
484267
+ " ",
484268
+ " .-o-OO-o-. ",
484269
+ "(__________)",
484270
+ " |{E} {E}| ",
484271
+ " |____| "
484272
+ ],
484273
+ [
484274
+ " ",
484275
+ " .-O-oo-O-. ",
484276
+ "(__________)",
484277
+ " |{E} {E}| ",
484278
+ " |____| "
484279
+ ],
484280
+ [
484281
+ " . o . ",
484282
+ " .-o-OO-o-. ",
484283
+ "(__________)",
484284
+ " |{E} {E}| ",
484285
+ " |____| "
484286
+ ]
484287
+ ],
484288
+ [chonk]: [
484289
+ [
484290
+ " ",
484291
+ " /\\ /\\ ",
484292
+ " ( {E} {E} ) ",
484293
+ " ( .. ) ",
484294
+ " `------´ "
484295
+ ],
484296
+ [
484297
+ " ",
484298
+ " /\\ /| ",
484299
+ " ( {E} {E} ) ",
484300
+ " ( .. ) ",
484301
+ " `------´ "
484302
+ ],
484303
+ [
484304
+ " ",
484305
+ " /\\ /\\ ",
484306
+ " ( {E} {E} ) ",
484307
+ " ( .. ) ",
484308
+ " `------´~ "
484309
+ ]
484310
+ ]
484311
+ };
484312
+ HAT_LINES = {
484313
+ none: "",
484314
+ crown: " \\^^^/ ",
484315
+ tophat: " [___] ",
484316
+ propeller: " -+- ",
484317
+ halo: " ( ) ",
484318
+ wizard: " /^\\ ",
484319
+ beanie: " (___) ",
484320
+ tinyduck: " ,> "
484321
+ };
484322
+ });
484323
+
484324
+ // src/achievements/checker.ts
484325
+ function notify2(id) {
484326
+ if (typeof process !== "undefined") {
484327
+ try {
484328
+ const pending = JSON.parse(process.env.__ACHIEVEMENT_PENDING__ || "[]");
484329
+ pending.push(id);
484330
+ process.env.__ACHIEVEMENT_PENDING__ = JSON.stringify(pending);
484331
+ } catch {
484332
+ process.env.__ACHIEVEMENT_PENDING__ = JSON.stringify([id]);
484333
+ }
484334
+ }
484335
+ }
484336
+ function checkOnBuddyHatch() {
484337
+ tryUnlock("buddy_hatched");
484338
+ const companion = getCompanion();
484339
+ if (companion?.rarity === "legendary") {
484340
+ tryUnlock("buddy_legendary");
484341
+ }
484342
+ if (companion?.shiny) {
484343
+ tryUnlock("buddy_shiny");
484344
+ }
484345
+ }
484346
+ function checkOnBuddyPet() {
484347
+ const count4 = incrementCounter("buddy_pet");
484348
+ tryUnlock("buddy_pet_10", count4 >= 10);
484349
+ tryUnlock("buddy_pet_100", count4 >= 100);
484350
+ }
484351
+ function tryUnlock(id, condition = true) {
484352
+ if (!condition)
484353
+ return;
484354
+ if (hasAchievement(id))
484355
+ return;
484356
+ if (unlockAchievement(id)) {
484357
+ addXp(XP_REWARDS.ACHIEVEMENT_UNLOCK);
484358
+ const unlocked = getUnlockedAchievements();
484359
+ if (unlocked.size === 5)
484360
+ addMilestone("achievement_5");
484361
+ if (unlocked.size === 10)
484362
+ addMilestone("achievement_10");
484363
+ if (unlocked.size === 20)
484364
+ addMilestone("achievement_20");
484365
+ const achievement = ACHIEVEMENTS[id];
484366
+ console.error(`
484367
+ \uD83C\uDFC6 ${achievement.icon} Achievement Unlocked: ${achievement.name}`);
484368
+ console.error(` ${achievement.description}
484369
+ `);
484370
+ notify2(id);
484371
+ }
484372
+ }
484373
+ var init_checker = __esm(() => {
484374
+ init_storage();
484375
+ init_types14();
484376
+ init_companion();
484377
+ init_evolution();
484378
+ init_milestones();
484379
+ init_usageStats();
484380
+ });
484381
+
484382
+ // src/events/calendar.ts
484383
+ function getTodayEvent() {
484384
+ const now2 = new Date;
484385
+ const month = now2.getMonth() + 1;
484386
+ const day = now2.getDate();
484387
+ for (const event of EVENTS2) {
484388
+ if (event.month === month && event.day === day) {
484389
+ if (event.yearStart && now2.getFullYear() < event.yearStart)
484390
+ continue;
484391
+ if (event.yearEnd && now2.getFullYear() > event.yearEnd)
484392
+ continue;
484393
+ return event;
484394
+ }
484395
+ }
484396
+ return null;
484397
+ }
484398
+ function getEventReaction() {
484399
+ const event = getTodayEvent();
484400
+ if (!event)
484401
+ return null;
484402
+ return `${event.emoji} ${event.message}`;
484403
+ }
484404
+ var EVENTS2;
484405
+ var init_calendar = __esm(() => {
484406
+ init_config();
484407
+ EVENTS2 = [
484408
+ { id: "new_year", name: "New Year", emoji: "\uD83C\uDF86", message: "Happy New Year! \uD83C\uDF86 May your code compile on the first try!", month: 1, day: 1 },
484409
+ { id: "valentine", name: "Valentine's Day", emoji: "\uD83D\uDC9D", message: "Happy Valentine's Day! \uD83D\uDC9D Your companion sends you love!", month: 2, day: 14 },
484410
+ { id: "pi_day", name: "Pi Day", emoji: "\uD83E\uDD67", message: "Happy Pi Day! 3.14159... π is infinitely delicious!", month: 3, day: 14 },
484411
+ { id: "april_fools", name: "April Fools", emoji: "\uD83C\uDFAD", message: "April Fools! Your code looks perfect today... just kidding! \uD83C\uDFAD", month: 4, day: 1 },
484412
+ { id: "earth_day", name: "Earth Day", emoji: "\uD83C\uDF0D", message: "Happy Earth Day! \uD83C\uDF0D Plant a tree, write green code.", month: 4, day: 22 },
484413
+ { id: "star_wars", name: "May the 4th", emoji: "\uD83D\uDE80", message: "May the 4th be with you! Use the Source, Luke! \uD83D\uDE80", month: 5, day: 4 },
484414
+ { id: "summer_start", name: "Summer Solstice", emoji: "☀️", message: "Longest day of the year! ☀️ Time for some summer coding.", month: 6, day: 21 },
484415
+ { id: "halloween", name: "Halloween", emoji: "\uD83C\uDF83", message: "Trick or treat! \uD83C\uDF83 Your companion is wearing a tiny costume!", month: 10, day: 31 },
484416
+ { id: "programmers_day", name: "Programmer's Day", emoji: "\uD83D\uDCBB", message: "Happy Programmer's Day! (Day 256 of the year) \uD83D\uDCBB", month: 9, day: 13 },
484417
+ { id: "thanksgiving", name: "Thanksgiving", emoji: "\uD83E\uDD83", message: "Happy Thanksgiving! \uD83E\uDD83 Thankful for clean code and good compilers.", month: 11, day: 28 },
484418
+ { id: "christmas", name: "Christmas", emoji: "\uD83C\uDF84", message: "Merry Christmas! \uD83C\uDF84 Your buddy is waiting under the terminal tree!", month: 12, day: 25 },
484419
+ { id: "new_year_eve", name: "New Year's Eve", emoji: "\uD83C\uDF89", message: "Almost there! \uD83C\uDF89 One last commit before the new year!", month: 12, day: 31 },
484420
+ { id: "bun_day", name: "Bun Birthday", emoji: "\uD83E\uDD5F", message: "Happy Bun Birthday! The fastest runtime deserves celebration!", month: 7, day: 13 },
484421
+ { id: "retro_days", name: "Retro Computing Day", emoji: "\uD83D\uDDA5️", message: "Retro Computing Day! Remember when 64KB was plenty? \uD83D\uDDA5️", month: 12, day: 3 }
484422
+ ];
484423
+ });
484424
+
484425
+ // src/commands/buddy/buddy.ts
484426
+ var exports_buddy = {};
484427
+ __export(exports_buddy, {
484428
+ call: () => call73
484429
+ });
484430
+ function getXpBar(current, needed) {
484431
+ const filled = Math.floor(current / needed * 10);
484432
+ return "█".repeat(filled) + "░".repeat(10 - filled);
484433
+ }
484434
+ function formatXpEvents(events2) {
484435
+ const msgs = [];
484436
+ for (const e of events2) {
484437
+ if (e.type === "level_up") {
484438
+ msgs.push(`
484439
+ ⬆️ Level up! You are now level ${e.level}!`);
484440
+ }
484441
+ if (e.type === "evolution") {
484442
+ msgs.push(`
484443
+ ✨ Your companion evolved to stage ${e.stage}!`);
484444
+ }
484445
+ }
484446
+ return msgs;
484447
+ }
484448
+ function handleHatch() {
484449
+ const existing = getGlobalConfig().companion;
484450
+ if (existing && getCompanion()) {
484451
+ return { type: "text", value: "You already have a companion! Use /buddy card to see details." };
484452
+ }
484453
+ const userId = companionUserId();
484454
+ const { bones, inspirationSeed } = roll(userId);
484455
+ const face = renderFace(bones);
484456
+ const rarityStars = RARITY_STARS[bones.rarity];
484457
+ const shiny = bones.shiny ? " ✨ SHINY" : "";
484458
+ const speciesName = SPECIES_NAMES[bones.species] || bones.species;
484459
+ saveGlobalConfig((current) => ({
484460
+ ...current,
484461
+ companion: { name: speciesName, personality: "curious", hatchedAt: Date.now() }
484462
+ }));
484463
+ const events2 = addXp(XP_REWARDS.BUDDY_HATCH);
484464
+ trackBuddyInteraction();
484465
+ const xpMsgs = formatXpEvents(events2);
484466
+ checkOnBuddyHatch();
484467
+ const result = [
484468
+ `\uD83C\uDF89 A new companion has appeared!`,
484469
+ ``,
484470
+ `${face}`,
484471
+ ``,
484472
+ `Rarity: ${rarityStars} (${bones.rarity})${shiny}`,
484473
+ `Species: ${speciesName}`,
484474
+ `Eye: ${bones.eye} Hat: ${bones.hat}`,
484475
+ `+${XP_REWARDS.BUDDY_HATCH} XP for hatching!`,
484476
+ ...xpMsgs,
484477
+ ``
484478
+ ];
484479
+ const eventMsg = getEventReaction();
484480
+ if (eventMsg) {
484481
+ result.push(`${eventMsg}`);
484482
+ result.push("");
484483
+ }
484484
+ result.push(`You can interact with it using:`, ` /buddy pet — pet (+5 XP)`, ` /buddy feed — feed (+15 XP)`, ` /buddy play — play (+20 XP)`, ` /buddy card — view stats & level`, ` /buddy mute — hide companion`);
484485
+ return { type: "text", value: result.join(`
484486
+ `) };
484487
+ }
484488
+ function handlePet() {
484489
+ const companion = getCompanion();
484490
+ if (!companion)
484491
+ return { type: "text", value: `You don't have a companion yet! Use /buddy hatch to get one.` };
484492
+ const events2 = addXp(XP_REWARDS.BUDDY_PET);
484493
+ trackBuddyInteraction();
484494
+ checkOnBuddyPet();
484495
+ const xpMsgs = formatXpEvents(events2);
484496
+ const reaction = getPetReaction(companion.species);
484497
+ return {
484498
+ type: "text",
484499
+ value: [
484500
+ `You pet ${companion.name}! ${companion.name} seems happy. ${reaction}`,
484501
+ `+${XP_REWARDS.BUDDY_PET} XP`,
484502
+ ...xpMsgs
484503
+ ].join(`
484504
+ `)
484505
+ };
484506
+ }
484507
+ function handleFeed() {
484508
+ const companion = getCompanion();
484509
+ if (!companion)
484510
+ return { type: "text", value: `You don't have a companion yet! Use /buddy hatch to get one.` };
484511
+ const count4 = incrementFeed();
484512
+ const events2 = addXp(XP_REWARDS.BUDDY_FEED);
484513
+ trackBuddyInteraction();
484514
+ const xpMsgs = formatXpEvents(events2);
484515
+ const foods = ["a juicy berry \uD83E\uDED0", "a tiny cookie \uD83C\uDF6A", "some fresh grass \uD83C\uDF3F", "a glowing snack ✨", "a warm bowl of soup \uD83E\uDD63"];
484516
+ const food = foods[count4 % foods.length];
484517
+ return {
484518
+ type: "text",
484519
+ value: [
484520
+ `You feed ${companion.name} ${food}. Yum!`,
484521
+ `+${XP_REWARDS.BUDDY_FEED} XP`,
484522
+ ...xpMsgs
484523
+ ].join(`
484524
+ `)
484525
+ };
484526
+ }
484527
+ function handlePlay() {
484528
+ const companion = getCompanion();
484529
+ if (!companion)
484530
+ return { type: "text", value: `You don't have a companion yet! Use /buddy hatch to get one.` };
484531
+ const count4 = incrementPlay();
484532
+ const events2 = addXp(XP_REWARDS.BUDDY_PLAY);
484533
+ trackBuddyInteraction();
484534
+ const xpMsgs = formatXpEvents(events2);
484535
+ const games = ["hide and seek \uD83D\uDE48", "tag \uD83C\uDFC3", "puzzle \uD83E\uDDE9", "fetch \uD83C\uDFBE", "a dance-off \uD83D\uDC83"];
484536
+ const game = games[count4 % games.length];
484537
+ return {
484538
+ type: "text",
484539
+ value: [
484540
+ `You play ${game} with ${companion.name}! So much fun!`,
484541
+ `+${XP_REWARDS.BUDDY_PLAY} XP`,
484542
+ ...xpMsgs
484543
+ ].join(`
484544
+ `)
484545
+ };
484546
+ }
484547
+ function handleCard() {
484548
+ const companion = getCompanion();
484549
+ if (!companion)
484550
+ return { type: "text", value: `You don't have a companion yet! Use /buddy hatch to get one.` };
484551
+ const face = renderFace(companion);
484552
+ const rarityStars = RARITY_STARS[companion.rarity];
484553
+ const shiny = companion.shiny ? " ✨" : "";
484554
+ const speciesName = SPECIES_NAMES[companion.species] || companion.species;
484555
+ const level = getLevel();
484556
+ const xp = getXp();
484557
+ const xpNext = getXpForNextLevel();
484558
+ const stage = getEvolutionStage();
484559
+ const evolvedSpecies = stage > 0 ? getEvolvedSpecies(companion.species, stage) : null;
484560
+ const xpBar = getXpBar(xp, xpNext);
484561
+ const stats2 = Object.entries(companion.stats).map(([name, value]) => ` ${name.padEnd(12)} ${"█".repeat(Math.floor(value / 10))}${"░".repeat(10 - Math.floor(value / 10))} ${value}`).join(`
484562
+ `);
484563
+ const result = [
484564
+ `╔══════════════════════════╗`,
484565
+ `║ Companion Card ║`,
484566
+ `╚══════════════════════════╝`,
484567
+ ``,
484568
+ `${face}`,
484569
+ ``,
484570
+ `${companion.name}`,
484571
+ `${rarityStars} ${companion.rarity}${shiny}`,
484572
+ evolvedSpecies ? `Evolved: ${speciesName} → ${evolvedSpecies}` : speciesName,
484573
+ `Eye: ${companion.eye} Hat: ${companion.hat}`,
484574
+ ``,
484575
+ `Level ${level} ${xpBar} ${xp}/${xpNext} XP`,
484576
+ ``,
484577
+ `Stats:`,
484578
+ stats2,
484579
+ ``,
484580
+ `Personality: ${companion.personality}`,
484581
+ ``,
484582
+ `\uD83D\uDCD6 History:`,
484583
+ formatMilestones(),
484584
+ ``
484585
+ ];
484586
+ const eventMsg = getEventReaction();
484587
+ if (eventMsg) {
484588
+ result.push(`${eventMsg}`);
484589
+ result.push("");
484590
+ }
484591
+ return { type: "text", value: result.join(`
484592
+ `) };
484593
+ }
484594
+ function handleMute() {
484595
+ saveGlobalConfig((current) => ({ ...current, companionMuted: true }));
484596
+ return { type: "text", value: "Companion muted. Use /buddy unmute to show again." };
484597
+ }
484598
+ function handleUnmute() {
484599
+ saveGlobalConfig((current) => ({ ...current, companionMuted: false }));
484600
+ return { type: "text", value: "Companion unmuted! Your buddy is back." };
484601
+ }
484602
+ function getPetReaction(species) {
484603
+ const reactions = {
484604
+ duck: ["Quack! \uD83E\uDD86", "Happy waddling!"],
484605
+ cat: ["Purr... \uD83D\uDC31", "Content meowing."],
484606
+ dragon: ["A tiny puff of smoke! \uD83D\uDC09"],
484607
+ octopus: ["Tentacles wiggle happily! \uD83D\uDC19"],
484608
+ robot: ["Beep boop! \uD83E\uDD16"],
484609
+ ghost: ["A warm flicker... \uD83D\uDC7B"],
484610
+ goose: ["Honk! \uD83E\uDEBF", "Proud hiss."],
484611
+ penguin: ["Happy waddle! \uD83D\uDC27"],
484612
+ axolotl: ["Gills flutter! \uD83E\uDD8E"],
484613
+ capybara: ["Chill nod. \uD83E\uDDAB"],
484614
+ rabbit: ["Nose twitches! \uD83D\uDC30"],
484615
+ turtle: ["Slow blink. \uD83D\uDC22"]
484616
+ };
484617
+ const pool = reactions[species] || ["Seems happy!"];
484618
+ return pool[Math.floor(Math.random() * pool.length)];
484619
+ }
484620
+ var SPECIES_NAMES, HELP_TEXT = `Usage: /buddy <subcommand>
484621
+
484622
+ Subcommands:
484623
+ hatch Hatch a new companion
484624
+ pet Pet your companion (+5 XP)
484625
+ feed Feed your companion (+15 XP)
484626
+ play Play with your companion (+20 XP)
484627
+ card Show companion card with stats and level
484628
+ mute Mute companion
484629
+ unmute Unmute companion
484630
+
484631
+ XP is earned through interactions. Level up to evolve your companion!`, call73 = async (args) => {
484632
+ const [subcommand] = args.trim().toLowerCase().split(/\s+/);
484633
+ switch (subcommand) {
484634
+ case "hatch":
484635
+ return handleHatch();
484636
+ case "pet":
484637
+ return handlePet();
484638
+ case "feed":
484639
+ return handleFeed();
484640
+ case "play":
484641
+ return handlePlay();
484642
+ case "card":
484643
+ return handleCard();
484644
+ case "mute":
484645
+ return handleMute();
484646
+ case "unmute":
484647
+ return handleUnmute();
484648
+ default:
484649
+ return { type: "text", value: HELP_TEXT };
484650
+ }
484651
+ };
484652
+ var init_buddy = __esm(() => {
484653
+ init_companion();
484654
+ init_types4();
484655
+ init_sprites();
484656
+ init_config();
484657
+ init_checker();
484658
+ init_evolution();
484659
+ init_usageStats();
484660
+ init_milestones();
484661
+ init_calendar();
484662
+ SPECIES_NAMES = {
484663
+ duck: "\uD83E\uDD86 Duck",
484664
+ goose: "\uD83E\uDEBF Goose",
484665
+ blob: "\uD83E\uDEE7 Blob",
484666
+ cat: "\uD83D\uDC31 Cat",
484667
+ dragon: "\uD83D\uDC09 Dragon",
484668
+ octopus: "\uD83D\uDC19 Octopus",
484669
+ owl: "\uD83E\uDD89 Owl",
484670
+ penguin: "\uD83D\uDC27 Penguin",
484671
+ turtle: "\uD83D\uDC22 Turtle",
484672
+ snail: "\uD83D\uDC0C Snail",
484673
+ ghost: "\uD83D\uDC7B Ghost",
484674
+ axolotl: "\uD83E\uDD8E Axolotl",
484675
+ capybara: "\uD83E\uDDAB Capybara",
484676
+ cactus: "\uD83C\uDF35 Cactus",
484677
+ robot: "\uD83E\uDD16 Robot",
484678
+ rabbit: "\uD83D\uDC30 Rabbit",
484679
+ mushroom: "\uD83C\uDF44 Mushroom",
484680
+ chonk: "\uD83D\uDC08 Chonk"
484681
+ };
484682
+ });
484683
+
484684
+ // src/commands/buddy/index.ts
484685
+ var exports_buddy2 = {};
484686
+ __export(exports_buddy2, {
484687
+ default: () => buddy_default
484688
+ });
484689
+ var buddyCmd, buddy_default;
484690
+ var init_buddy2 = __esm(() => {
484691
+ buddyCmd = {
484692
+ name: "buddy",
484693
+ description: "Manage your terminal companion — hatch, pet, card, mute, unmute",
484694
+ argumentHint: "<hatch|pet|card|mute|unmute>",
484695
+ supportsNonInteractive: false,
484696
+ type: "local",
484697
+ load: () => Promise.resolve().then(() => (init_buddy(), exports_buddy))
484698
+ };
484699
+ buddy_default = buddyCmd;
484700
+ });
484701
+
483078
484702
  // src/commands/insights.ts
483079
484703
  var exports_insights = {};
483080
484704
  __export(exports_insights, {
@@ -485431,7 +487055,7 @@ function formatDescriptionWithSource(cmd) {
485431
487055
  }
485432
487056
  return `${cmd.description} (${getSettingSourceName(cmd.source)})`;
485433
487057
  }
485434
- var agentsPlatform2, proactive = null, briefCommand = null, assistantCommand = null, bridge = null, remoteControlServerCommand = null, voiceCommand = null, forceSnip = null, workflowsCmd = null, webCmd = null, clearSkillIndexCache2 = null, subscribePr = null, ultraplan = null, torch = null, peersCmd = null, forkCmd = null, buddy = null, usageReport2, INTERNAL_ONLY_COMMANDS2, COMMANDS, builtInCommandNames, getWorkflowCommands = null, loadAllCommands, getSkillToolCommands, getSlashCommandToolSkills, REMOTE_SAFE_COMMANDS, BRIDGE_SAFE_COMMANDS;
487058
+ var agentsPlatform2, proactive = null, briefCommand = null, assistantCommand = null, bridge = null, remoteControlServerCommand = null, voiceCommand = null, forceSnip = null, workflowsCmd = null, webCmd = null, clearSkillIndexCache2 = null, subscribePr = null, ultraplan = null, torch = null, peersCmd = null, forkCmd = null, buddy, usageReport2, INTERNAL_ONLY_COMMANDS2, COMMANDS, builtInCommandNames, getWorkflowCommands = null, loadAllCommands, getSkillToolCommands, getSlashCommandToolSkills, REMOTE_SAFE_COMMANDS, BRIDGE_SAFE_COMMANDS;
485435
487059
  var init_commands2 = __esm(() => {
485436
487060
  init_add_dir2();
485437
487061
  init_autofix_pr();
@@ -485503,6 +487127,8 @@ var init_commands2 = __esm(() => {
485503
487127
  init_bridge_kick();
485504
487128
  init_version();
485505
487129
  init_summary();
487130
+ init_achievements2();
487131
+ init_mystats2();
485506
487132
  init_reset_limits();
485507
487133
  init_ant_trace();
485508
487134
  init_perf_issue();
@@ -485537,6 +487163,7 @@ var init_commands2 = __esm(() => {
485537
487163
  init_debug_tool_call();
485538
487164
  init_constants2();
485539
487165
  agentsPlatform2 = process.env.USER_TYPE === "ant" ? (init_agents_platform(), __toCommonJS(exports_agents_platform)).default : null;
487166
+ buddy = (init_buddy2(), __toCommonJS(exports_buddy2)).default;
485540
487167
  usageReport2 = {
485541
487168
  type: "prompt",
485542
487169
  name: "insights",
@@ -485584,6 +487211,7 @@ var init_commands2 = __esm(() => {
485584
487211
  COMMANDS = memoize_default(() => [
485585
487212
  add_dir_default,
485586
487213
  advisor_default,
487214
+ achievements_default,
485587
487215
  agents_default,
485588
487216
  branch_default,
485589
487217
  btw_default,
@@ -485614,6 +487242,7 @@ var init_commands2 = __esm(() => {
485614
487242
  memory_default,
485615
487243
  mobile_default,
485616
487244
  model_default,
487245
+ mystats_default,
485617
487246
  output_style_default,
485618
487247
  remote_env_default,
485619
487248
  plugin_default,
@@ -497968,7 +499597,7 @@ class DebugLogger {
497968
499597
  }
497969
499598
  var EXTENSION_DOWNLOAD_URL = "https://claude.ai/chrome", BUG_REPORT_URL = "https://github.com/anthropics/claude-code/issues/new?labels=bug,claude-in-chrome", SAFE_BRIDGE_STRING_KEYS, PERMISSION_MODES4;
497970
499599
  var init_mcpServer = __esm(() => {
497971
- init_claude_for_chrome_mcp();
499600
+ init_ant_claude_for_chrome_mcp();
497972
499601
  init_stdio2();
497973
499602
  init_datadog();
497974
499603
  init_firstPartyEventLogger();
@@ -498410,7 +500039,7 @@ var require_argument = __commonJS((exports) => {
498410
500039
  this._name = name;
498411
500040
  break;
498412
500041
  }
498413
- if (this._name.length > 3 && this._name.slice(-3) === "...") {
500042
+ if (this._name.endsWith("...")) {
498414
500043
  this.variadic = true;
498415
500044
  this._name = this._name.slice(0, -3);
498416
500045
  }
@@ -498418,11 +500047,12 @@ var require_argument = __commonJS((exports) => {
498418
500047
  name() {
498419
500048
  return this._name;
498420
500049
  }
498421
- _concatValue(value, previous) {
500050
+ _collectValue(value, previous) {
498422
500051
  if (previous === this.defaultValue || !Array.isArray(previous)) {
498423
500052
  return [value];
498424
500053
  }
498425
- return previous.concat(value);
500054
+ previous.push(value);
500055
+ return previous;
498426
500056
  }
498427
500057
  default(value, description) {
498428
500058
  this.defaultValue = value;
@@ -498440,7 +500070,7 @@ var require_argument = __commonJS((exports) => {
498440
500070
  throw new InvalidArgumentError(`Allowed choices are ${this.argChoices.join(", ")}.`);
498441
500071
  }
498442
500072
  if (this.variadic) {
498443
- return this._concatValue(arg, previous);
500073
+ return this._collectValue(arg, previous);
498444
500074
  }
498445
500075
  return arg;
498446
500076
  };
@@ -498605,7 +500235,11 @@ var require_help = __commonJS((exports) => {
498605
500235
  extraInfo.push(`env: ${option.envVar}`);
498606
500236
  }
498607
500237
  if (extraInfo.length > 0) {
498608
- return `${option.description} (${extraInfo.join(", ")})`;
500238
+ const extraDescription = `(${extraInfo.join(", ")})`;
500239
+ if (option.description) {
500240
+ return `${option.description} ${extraDescription}`;
500241
+ }
500242
+ return extraDescription;
498609
500243
  }
498610
500244
  return option.description;
498611
500245
  }
@@ -498626,6 +500260,27 @@ var require_help = __commonJS((exports) => {
498626
500260
  }
498627
500261
  return argument.description;
498628
500262
  }
500263
+ formatItemList(heading, items, helper) {
500264
+ if (items.length === 0)
500265
+ return [];
500266
+ return [helper.styleTitle(heading), ...items, ""];
500267
+ }
500268
+ groupItems(unsortedItems, visibleItems, getGroup) {
500269
+ const result = new Map;
500270
+ unsortedItems.forEach((item) => {
500271
+ const group = getGroup(item);
500272
+ if (!result.has(group))
500273
+ result.set(group, []);
500274
+ });
500275
+ visibleItems.forEach((item) => {
500276
+ const group = getGroup(item);
500277
+ if (!result.has(group)) {
500278
+ result.set(group, []);
500279
+ }
500280
+ result.get(group).push(item);
500281
+ });
500282
+ return result;
500283
+ }
498629
500284
  formatHelp(cmd, helper) {
498630
500285
  const termWidth = helper.padWidth(cmd, helper);
498631
500286
  const helpWidth = helper.helpWidth ?? 80;
@@ -498646,45 +500301,27 @@ var require_help = __commonJS((exports) => {
498646
500301
  const argumentList = helper.visibleArguments(cmd).map((argument) => {
498647
500302
  return callFormatItem(helper.styleArgumentTerm(helper.argumentTerm(argument)), helper.styleArgumentDescription(helper.argumentDescription(argument)));
498648
500303
  });
498649
- if (argumentList.length > 0) {
498650
- output = output.concat([
498651
- helper.styleTitle("Arguments:"),
498652
- ...argumentList,
498653
- ""
498654
- ]);
498655
- }
498656
- const optionList = helper.visibleOptions(cmd).map((option) => {
498657
- return callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)), helper.styleOptionDescription(helper.optionDescription(option)));
500304
+ output = output.concat(this.formatItemList("Arguments:", argumentList, helper));
500305
+ const optionGroups = this.groupItems(cmd.options, helper.visibleOptions(cmd), (option) => option.helpGroupHeading ?? "Options:");
500306
+ optionGroups.forEach((options, group) => {
500307
+ const optionList = options.map((option) => {
500308
+ return callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)), helper.styleOptionDescription(helper.optionDescription(option)));
500309
+ });
500310
+ output = output.concat(this.formatItemList(group, optionList, helper));
498658
500311
  });
498659
- if (optionList.length > 0) {
498660
- output = output.concat([
498661
- helper.styleTitle("Options:"),
498662
- ...optionList,
498663
- ""
498664
- ]);
498665
- }
498666
500312
  if (helper.showGlobalOptions) {
498667
500313
  const globalOptionList = helper.visibleGlobalOptions(cmd).map((option) => {
498668
500314
  return callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)), helper.styleOptionDescription(helper.optionDescription(option)));
498669
500315
  });
498670
- if (globalOptionList.length > 0) {
498671
- output = output.concat([
498672
- helper.styleTitle("Global Options:"),
498673
- ...globalOptionList,
498674
- ""
498675
- ]);
498676
- }
500316
+ output = output.concat(this.formatItemList("Global Options:", globalOptionList, helper));
498677
500317
  }
498678
- const commandList = helper.visibleCommands(cmd).map((cmd2) => {
498679
- return callFormatItem(helper.styleSubcommandTerm(helper.subcommandTerm(cmd2)), helper.styleSubcommandDescription(helper.subcommandDescription(cmd2)));
500318
+ const commandGroups = this.groupItems(cmd.commands, helper.visibleCommands(cmd), (sub) => sub.helpGroup() || "Commands:");
500319
+ commandGroups.forEach((commands, group) => {
500320
+ const commandList = commands.map((sub) => {
500321
+ return callFormatItem(helper.styleSubcommandTerm(helper.subcommandTerm(sub)), helper.styleSubcommandDescription(helper.subcommandDescription(sub)));
500322
+ });
500323
+ output = output.concat(this.formatItemList(group, commandList, helper));
498680
500324
  });
498681
- if (commandList.length > 0) {
498682
- output = output.concat([
498683
- helper.styleTitle("Commands:"),
498684
- ...commandList,
498685
- ""
498686
- ]);
498687
- }
498688
500325
  return output.join(`
498689
500326
  `);
498690
500327
  }
@@ -498841,6 +500478,7 @@ var require_option = __commonJS((exports) => {
498841
500478
  this.argChoices = undefined;
498842
500479
  this.conflictsWith = [];
498843
500480
  this.implied = undefined;
500481
+ this.helpGroupHeading = undefined;
498844
500482
  }
498845
500483
  default(value, description) {
498846
500484
  this.defaultValue = value;
@@ -498879,11 +500517,12 @@ var require_option = __commonJS((exports) => {
498879
500517
  this.hidden = !!hide;
498880
500518
  return this;
498881
500519
  }
498882
- _concatValue(value, previous) {
500520
+ _collectValue(value, previous) {
498883
500521
  if (previous === this.defaultValue || !Array.isArray(previous)) {
498884
500522
  return [value];
498885
500523
  }
498886
- return previous.concat(value);
500524
+ previous.push(value);
500525
+ return previous;
498887
500526
  }
498888
500527
  choices(values2) {
498889
500528
  this.argChoices = values2.slice();
@@ -498892,7 +500531,7 @@ var require_option = __commonJS((exports) => {
498892
500531
  throw new InvalidArgumentError(`Allowed choices are ${this.argChoices.join(", ")}.`);
498893
500532
  }
498894
500533
  if (this.variadic) {
498895
- return this._concatValue(arg, previous);
500534
+ return this._collectValue(arg, previous);
498896
500535
  }
498897
500536
  return arg;
498898
500537
  };
@@ -498910,6 +500549,10 @@ var require_option = __commonJS((exports) => {
498910
500549
  }
498911
500550
  return camelcase(this.name());
498912
500551
  }
500552
+ helpGroup(heading) {
500553
+ this.helpGroupHeading = heading;
500554
+ return this;
500555
+ }
498913
500556
  is(arg) {
498914
500557
  return this.short === arg || this.long === arg;
498915
500558
  }
@@ -499127,6 +500770,9 @@ var require_command = __commonJS((exports) => {
499127
500770
  this._addImplicitHelpCommand = undefined;
499128
500771
  this._helpCommand = undefined;
499129
500772
  this._helpConfiguration = {};
500773
+ this._helpGroupHeading = undefined;
500774
+ this._defaultCommandGroup = undefined;
500775
+ this._defaultOptionGroup = undefined;
499130
500776
  }
499131
500777
  copyInheritedSettings(sourceCommand) {
499132
500778
  this._outputConfiguration = sourceCommand._outputConfiguration;
@@ -499191,7 +500837,10 @@ var require_command = __commonJS((exports) => {
499191
500837
  configureOutput(configuration) {
499192
500838
  if (configuration === undefined)
499193
500839
  return this._outputConfiguration;
499194
- Object.assign(this._outputConfiguration, configuration);
500840
+ this._outputConfiguration = {
500841
+ ...this._outputConfiguration,
500842
+ ...configuration
500843
+ };
499195
500844
  return this;
499196
500845
  }
499197
500846
  showHelpAfterError(displayHelp = true) {
@@ -499222,12 +500871,12 @@ var require_command = __commonJS((exports) => {
499222
500871
  createArgument(name, description) {
499223
500872
  return new Argument(name, description);
499224
500873
  }
499225
- argument(name, description, fn, defaultValue) {
500874
+ argument(name, description, parseArg, defaultValue) {
499226
500875
  const argument = this.createArgument(name, description);
499227
- if (typeof fn === "function") {
499228
- argument.default(defaultValue).argParser(fn);
500876
+ if (typeof parseArg === "function") {
500877
+ argument.default(defaultValue).argParser(parseArg);
499229
500878
  } else {
499230
- argument.default(fn);
500879
+ argument.default(parseArg);
499231
500880
  }
499232
500881
  this.addArgument(argument);
499233
500882
  return this;
@@ -499240,7 +500889,7 @@ var require_command = __commonJS((exports) => {
499240
500889
  }
499241
500890
  addArgument(argument) {
499242
500891
  const previousArgument = this.registeredArguments.slice(-1)[0];
499243
- if (previousArgument && previousArgument.variadic) {
500892
+ if (previousArgument?.variadic) {
499244
500893
  throw new Error(`only the last argument can be variadic '${previousArgument.name()}'`);
499245
500894
  }
499246
500895
  if (argument.required && argument.defaultValue !== undefined && argument.parseArg === undefined) {
@@ -499252,10 +500901,13 @@ var require_command = __commonJS((exports) => {
499252
500901
  helpCommand(enableOrNameAndArgs, description) {
499253
500902
  if (typeof enableOrNameAndArgs === "boolean") {
499254
500903
  this._addImplicitHelpCommand = enableOrNameAndArgs;
500904
+ if (enableOrNameAndArgs && this._defaultCommandGroup) {
500905
+ this._initCommandGroup(this._getHelpCommand());
500906
+ }
499255
500907
  return this;
499256
500908
  }
499257
- enableOrNameAndArgs = enableOrNameAndArgs ?? "help [command]";
499258
- const [, helpName, helpArgs] = enableOrNameAndArgs.match(/([^ ]+) *(.*)/);
500909
+ const nameAndArgs = enableOrNameAndArgs ?? "help [command]";
500910
+ const [, helpName, helpArgs] = nameAndArgs.match(/([^ ]+) *(.*)/);
499259
500911
  const helpDescription = description ?? "display help for command";
499260
500912
  const helpCommand = this.createCommand(helpName);
499261
500913
  helpCommand.helpOption(false);
@@ -499265,6 +500917,8 @@ var require_command = __commonJS((exports) => {
499265
500917
  helpCommand.description(helpDescription);
499266
500918
  this._addImplicitHelpCommand = true;
499267
500919
  this._helpCommand = helpCommand;
500920
+ if (enableOrNameAndArgs || description)
500921
+ this._initCommandGroup(helpCommand);
499268
500922
  return this;
499269
500923
  }
499270
500924
  addHelpCommand(helpCommand, deprecatedDescription) {
@@ -499274,6 +500928,7 @@ var require_command = __commonJS((exports) => {
499274
500928
  }
499275
500929
  this._addImplicitHelpCommand = true;
499276
500930
  this._helpCommand = helpCommand;
500931
+ this._initCommandGroup(helpCommand);
499277
500932
  return this;
499278
500933
  }
499279
500934
  _getHelpCommand() {
@@ -499353,6 +501008,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
499353
501008
  throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'
499354
501009
  - already used by option '${matchingOption.flags}'`);
499355
501010
  }
501011
+ this._initOptionGroup(option);
499356
501012
  this.options.push(option);
499357
501013
  }
499358
501014
  _registerCommand(command8) {
@@ -499365,6 +501021,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
499365
501021
  const newCmd = knownBy(command8).join("|");
499366
501022
  throw new Error(`cannot add command '${newCmd}' as already have command '${existingCmd}'`);
499367
501023
  }
501024
+ this._initCommandGroup(command8);
499368
501025
  this.commands.push(command8);
499369
501026
  }
499370
501027
  addOption(option) {
@@ -499387,7 +501044,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
499387
501044
  if (val !== null && option.parseArg) {
499388
501045
  val = this._callParseArg(option, val, oldValue, invalidValueMessage);
499389
501046
  } else if (val !== null && option.variadic) {
499390
- val = option._concatValue(val, oldValue);
501047
+ val = option._collectValue(val, oldValue);
499391
501048
  }
499392
501049
  if (val == null) {
499393
501050
  if (option.negate) {
@@ -499762,7 +501419,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
499762
501419
  this.processedArgs = processedArgs;
499763
501420
  }
499764
501421
  _chainOrCall(promise3, fn) {
499765
- if (promise3 && promise3.then && typeof promise3.then === "function") {
501422
+ if (promise3?.then && typeof promise3.then === "function") {
499766
501423
  return promise3.then(() => fn());
499767
501424
  }
499768
501425
  return fn();
@@ -499839,7 +501496,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
499839
501496
  promiseChain = this._chainOrCallHooks(promiseChain, "postAction");
499840
501497
  return promiseChain;
499841
501498
  }
499842
- if (this.parent && this.parent.listenerCount(commandEvent)) {
501499
+ if (this.parent?.listenerCount(commandEvent)) {
499843
501500
  checkForUnknownOptions();
499844
501501
  this._processArguments();
499845
501502
  this.parent.emit(commandEvent, operands, unknown3);
@@ -499901,24 +501558,31 @@ Expecting one of '${allowedValues.join("', '")}'`);
499901
501558
  cmd._checkForConflictingLocalOptions();
499902
501559
  });
499903
501560
  }
499904
- parseOptions(argv) {
501561
+ parseOptions(args) {
499905
501562
  const operands = [];
499906
501563
  const unknown3 = [];
499907
501564
  let dest = operands;
499908
- const args = argv.slice();
499909
501565
  function maybeOption(arg) {
499910
501566
  return arg.length > 1 && arg[0] === "-";
499911
501567
  }
501568
+ const negativeNumberArg = (arg) => {
501569
+ if (!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(arg))
501570
+ return false;
501571
+ return !this._getCommandAndAncestors().some((cmd) => cmd.options.map((opt) => opt.short).some((short) => /^-\d$/.test(short)));
501572
+ };
499912
501573
  let activeVariadicOption = null;
499913
- while (args.length) {
499914
- const arg = args.shift();
501574
+ let activeGroup = null;
501575
+ let i3 = 0;
501576
+ while (i3 < args.length || activeGroup) {
501577
+ const arg = activeGroup ?? args[i3++];
501578
+ activeGroup = null;
499915
501579
  if (arg === "--") {
499916
501580
  if (dest === unknown3)
499917
501581
  dest.push(arg);
499918
- dest.push(...args);
501582
+ dest.push(...args.slice(i3));
499919
501583
  break;
499920
501584
  }
499921
- if (activeVariadicOption && !maybeOption(arg)) {
501585
+ if (activeVariadicOption && (!maybeOption(arg) || negativeNumberArg(arg))) {
499922
501586
  this.emit(`option:${activeVariadicOption.name()}`, arg);
499923
501587
  continue;
499924
501588
  }
@@ -499927,14 +501591,14 @@ Expecting one of '${allowedValues.join("', '")}'`);
499927
501591
  const option = this._findOption(arg);
499928
501592
  if (option) {
499929
501593
  if (option.required) {
499930
- const value = args.shift();
501594
+ const value = args[i3++];
499931
501595
  if (value === undefined)
499932
501596
  this.optionMissingArgument(option);
499933
501597
  this.emit(`option:${option.name()}`, value);
499934
501598
  } else if (option.optional) {
499935
501599
  let value = null;
499936
- if (args.length > 0 && !maybeOption(args[0])) {
499937
- value = args.shift();
501600
+ if (i3 < args.length && (!maybeOption(args[i3]) || negativeNumberArg(args[i3]))) {
501601
+ value = args[i3++];
499938
501602
  }
499939
501603
  this.emit(`option:${option.name()}`, value);
499940
501604
  } else {
@@ -499951,7 +501615,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
499951
501615
  this.emit(`option:${option.name()}`, arg.slice(2));
499952
501616
  } else {
499953
501617
  this.emit(`option:${option.name()}`);
499954
- args.unshift(`-${arg.slice(2)}`);
501618
+ activeGroup = `-${arg.slice(2)}`;
499955
501619
  }
499956
501620
  continue;
499957
501621
  }
@@ -499964,31 +501628,24 @@ Expecting one of '${allowedValues.join("', '")}'`);
499964
501628
  continue;
499965
501629
  }
499966
501630
  }
499967
- if (maybeOption(arg)) {
501631
+ if (dest === operands && maybeOption(arg) && !(this.commands.length === 0 && negativeNumberArg(arg))) {
499968
501632
  dest = unknown3;
499969
501633
  }
499970
501634
  if ((this._enablePositionalOptions || this._passThroughOptions) && operands.length === 0 && unknown3.length === 0) {
499971
501635
  if (this._findCommand(arg)) {
499972
501636
  operands.push(arg);
499973
- if (args.length > 0)
499974
- unknown3.push(...args);
501637
+ unknown3.push(...args.slice(i3));
499975
501638
  break;
499976
501639
  } else if (this._getHelpCommand() && arg === this._getHelpCommand().name()) {
499977
- operands.push(arg);
499978
- if (args.length > 0)
499979
- operands.push(...args);
501640
+ operands.push(arg, ...args.slice(i3));
499980
501641
  break;
499981
501642
  } else if (this._defaultCommandName) {
499982
- unknown3.push(arg);
499983
- if (args.length > 0)
499984
- unknown3.push(...args);
501643
+ unknown3.push(arg, ...args.slice(i3));
499985
501644
  break;
499986
501645
  }
499987
501646
  }
499988
501647
  if (this._passThroughOptions) {
499989
- dest.push(arg);
499990
- if (args.length > 0)
499991
- dest.push(...args);
501648
+ dest.push(arg, ...args.slice(i3));
499992
501649
  break;
499993
501650
  }
499994
501651
  dest.push(arg);
@@ -500199,6 +501856,32 @@ Expecting one of '${allowedValues.join("', '")}'`);
500199
501856
  this._name = str2;
500200
501857
  return this;
500201
501858
  }
501859
+ helpGroup(heading) {
501860
+ if (heading === undefined)
501861
+ return this._helpGroupHeading ?? "";
501862
+ this._helpGroupHeading = heading;
501863
+ return this;
501864
+ }
501865
+ commandsGroup(heading) {
501866
+ if (heading === undefined)
501867
+ return this._defaultCommandGroup ?? "";
501868
+ this._defaultCommandGroup = heading;
501869
+ return this;
501870
+ }
501871
+ optionsGroup(heading) {
501872
+ if (heading === undefined)
501873
+ return this._defaultOptionGroup ?? "";
501874
+ this._defaultOptionGroup = heading;
501875
+ return this;
501876
+ }
501877
+ _initOptionGroup(option) {
501878
+ if (this._defaultOptionGroup && !option.helpGroupHeading)
501879
+ option.helpGroup(this._defaultOptionGroup);
501880
+ }
501881
+ _initCommandGroup(cmd) {
501882
+ if (this._defaultCommandGroup && !cmd.helpGroup())
501883
+ cmd.helpGroup(this._defaultCommandGroup);
501884
+ }
500202
501885
  nameFromFilename(filename) {
500203
501886
  this._name = path22.basename(filename, path22.extname(filename));
500204
501887
  return this;
@@ -500275,15 +501958,19 @@ Expecting one of '${allowedValues.join("', '")}'`);
500275
501958
  helpOption(flags, description) {
500276
501959
  if (typeof flags === "boolean") {
500277
501960
  if (flags) {
500278
- this._helpOption = this._helpOption ?? undefined;
501961
+ if (this._helpOption === null)
501962
+ this._helpOption = undefined;
501963
+ if (this._defaultOptionGroup) {
501964
+ this._initOptionGroup(this._getHelpOption());
501965
+ }
500279
501966
  } else {
500280
501967
  this._helpOption = null;
500281
501968
  }
500282
501969
  return this;
500283
501970
  }
500284
- flags = flags ?? "-h, --help";
500285
- description = description ?? "display help for command";
500286
- this._helpOption = this.createOption(flags, description);
501971
+ this._helpOption = this.createOption(flags ?? "-h, --help", description ?? "display help for command");
501972
+ if (flags || description)
501973
+ this._initOptionGroup(this._helpOption);
500287
501974
  return this;
500288
501975
  }
500289
501976
  _getHelpOption() {
@@ -500294,6 +501981,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
500294
501981
  }
500295
501982
  addHelpOption(option) {
500296
501983
  this._helpOption = option;
501984
+ this._initOptionGroup(option);
500297
501985
  return this;
500298
501986
  }
500299
501987
  help(contextOptions) {
@@ -516981,435 +518669,182 @@ var init_useIdeAtMentioned = __esm(() => {
516981
518669
  }));
516982
518670
  });
516983
518671
 
516984
- // src/buddy/sprites.ts
516985
- var BODIES;
516986
- var init_sprites = __esm(() => {
516987
- init_types4();
516988
- BODIES = {
516989
- [duck]: [
516990
- [
516991
- " ",
516992
- " __ ",
516993
- " <({E} )___ ",
516994
- " ( ._> ",
516995
- " `--´ "
516996
- ],
516997
- [
516998
- " ",
516999
- " __ ",
517000
- " <({E} )___ ",
517001
- " ( ._> ",
517002
- " `--´~ "
517003
- ],
517004
- [
517005
- " ",
517006
- " __ ",
517007
- " <({E} )___ ",
517008
- " ( .__> ",
517009
- " `--´ "
517010
- ]
517011
- ],
517012
- [goose]: [
517013
- [
517014
- " ",
517015
- " ({E}> ",
517016
- " || ",
517017
- " _(__)_ ",
517018
- " ^^^^ "
517019
- ],
517020
- [
517021
- " ",
517022
- " ({E}> ",
517023
- " || ",
517024
- " _(__)_ ",
517025
- " ^^^^ "
517026
- ],
517027
- [
517028
- " ",
517029
- " ({E}>> ",
517030
- " || ",
517031
- " _(__)_ ",
517032
- " ^^^^ "
517033
- ]
517034
- ],
517035
- [blob]: [
517036
- [
517037
- " ",
517038
- " .----. ",
517039
- " ( {E} {E} ) ",
517040
- " ( ) ",
517041
- " `----´ "
517042
- ],
517043
- [
517044
- " ",
517045
- " .------. ",
517046
- " ( {E} {E} ) ",
517047
- " ( ) ",
517048
- " `------´ "
517049
- ],
517050
- [
517051
- " ",
517052
- " .--. ",
517053
- " ({E} {E}) ",
517054
- " ( ) ",
517055
- " `--´ "
517056
- ]
517057
- ],
517058
- [cat]: [
517059
- [
517060
- " ",
517061
- " /\\_/\\ ",
517062
- " ( {E} {E}) ",
517063
- " ( ω ) ",
517064
- ' (")_(") '
517065
- ],
517066
- [
517067
- " ",
517068
- " /\\_/\\ ",
517069
- " ( {E} {E}) ",
517070
- " ( ω ) ",
517071
- ' (")_(")~ '
517072
- ],
517073
- [
517074
- " ",
517075
- " /\\-/\\ ",
517076
- " ( {E} {E}) ",
517077
- " ( ω ) ",
517078
- ' (")_(") '
517079
- ]
517080
- ],
517081
- [dragon]: [
517082
- [
517083
- " ",
517084
- " /^\\ /^\\ ",
517085
- " < {E} {E} > ",
517086
- " ( ~~ ) ",
517087
- " `-vvvv-´ "
517088
- ],
517089
- [
517090
- " ",
517091
- " /^\\ /^\\ ",
517092
- " < {E} {E} > ",
517093
- " ( ) ",
517094
- " `-vvvv-´ "
517095
- ],
517096
- [
517097
- " ~ ~ ",
517098
- " /^\\ /^\\ ",
517099
- " < {E} {E} > ",
517100
- " ( ~~ ) ",
517101
- " `-vvvv-´ "
517102
- ]
517103
- ],
517104
- [octopus]: [
517105
- [
517106
- " ",
517107
- " .----. ",
517108
- " ( {E} {E} ) ",
517109
- " (______) ",
517110
- " /\\/\\/\\/\\ "
517111
- ],
517112
- [
517113
- " ",
517114
- " .----. ",
517115
- " ( {E} {E} ) ",
517116
- " (______) ",
517117
- " \\/\\/\\/\\/ "
517118
- ],
517119
- [
517120
- " o ",
517121
- " .----. ",
517122
- " ( {E} {E} ) ",
517123
- " (______) ",
517124
- " /\\/\\/\\/\\ "
517125
- ]
517126
- ],
517127
- [owl]: [
517128
- [
517129
- " ",
517130
- " /\\ /\\ ",
517131
- " (({E})({E})) ",
517132
- " ( >< ) ",
517133
- " `----´ "
517134
- ],
517135
- [
517136
- " ",
517137
- " /\\ /\\ ",
517138
- " (({E})({E})) ",
517139
- " ( >< ) ",
517140
- " .----. "
517141
- ],
517142
- [
517143
- " ",
517144
- " /\\ /\\ ",
517145
- " (({E})(-)) ",
517146
- " ( >< ) ",
517147
- " `----´ "
517148
- ]
517149
- ],
517150
- [penguin]: [
517151
- [
517152
- " ",
517153
- " .---. ",
517154
- " ({E}>{E}) ",
517155
- " /( )\\ ",
517156
- " `---´ "
517157
- ],
517158
- [
517159
- " ",
517160
- " .---. ",
517161
- " ({E}>{E}) ",
517162
- " |( )| ",
517163
- " `---´ "
517164
- ],
517165
- [
517166
- " .---. ",
517167
- " ({E}>{E}) ",
517168
- " /( )\\ ",
517169
- " `---´ ",
517170
- " ~ ~ "
517171
- ]
517172
- ],
517173
- [turtle]: [
517174
- [
517175
- " ",
517176
- " _,--._ ",
517177
- " ( {E} {E} ) ",
517178
- " /[______]\\ ",
517179
- " `` `` "
517180
- ],
517181
- [
517182
- " ",
517183
- " _,--._ ",
517184
- " ( {E} {E} ) ",
517185
- " /[______]\\ ",
517186
- " `` `` "
517187
- ],
517188
- [
517189
- " ",
517190
- " _,--._ ",
517191
- " ( {E} {E} ) ",
517192
- " /[======]\\ ",
517193
- " `` `` "
517194
- ]
517195
- ],
517196
- [snail]: [
517197
- [
517198
- " ",
517199
- " {E} .--. ",
517200
- " \\ ( @ ) ",
517201
- " \\_`--´ ",
517202
- " ~~~~~~~ "
517203
- ],
517204
- [
517205
- " ",
517206
- " {E} .--. ",
517207
- " | ( @ ) ",
517208
- " \\_`--´ ",
517209
- " ~~~~~~~ "
517210
- ],
517211
- [
517212
- " ",
517213
- " {E} .--. ",
517214
- " \\ ( @ ) ",
517215
- " \\_`--´ ",
517216
- " ~~~~~~ "
517217
- ]
517218
- ],
517219
- [ghost]: [
517220
- [
517221
- " ",
517222
- " .----. ",
517223
- " / {E} {E} \\ ",
517224
- " | | ",
517225
- " ~`~``~`~ "
517226
- ],
517227
- [
517228
- " ",
517229
- " .----. ",
517230
- " / {E} {E} \\ ",
517231
- " | | ",
517232
- " `~`~~`~` "
517233
- ],
517234
- [
517235
- " ~ ~ ",
517236
- " .----. ",
517237
- " / {E} {E} \\ ",
517238
- " | | ",
517239
- " ~~`~~`~~ "
517240
- ]
517241
- ],
517242
- [axolotl]: [
517243
- [
517244
- " ",
517245
- "}~(______)~{",
517246
- "}~({E} .. {E})~{",
517247
- " ( .--. ) ",
517248
- " (_/ \\_) "
517249
- ],
517250
- [
517251
- " ",
517252
- "~}(______){~",
517253
- "~}({E} .. {E}){~",
517254
- " ( .--. ) ",
517255
- " (_/ \\_) "
517256
- ],
517257
- [
517258
- " ",
517259
- "}~(______)~{",
517260
- "}~({E} .. {E})~{",
517261
- " ( -- ) ",
517262
- " ~_/ \\_~ "
517263
- ]
517264
- ],
517265
- [capybara]: [
517266
- [
517267
- " ",
517268
- " n______n ",
517269
- " ( {E} {E} ) ",
517270
- " ( oo ) ",
517271
- " `------´ "
517272
- ],
517273
- [
517274
- " ",
517275
- " n______n ",
517276
- " ( {E} {E} ) ",
517277
- " ( Oo ) ",
517278
- " `------´ "
517279
- ],
517280
- [
517281
- " ~ ~ ",
517282
- " u______n ",
517283
- " ( {E} {E} ) ",
517284
- " ( oo ) ",
517285
- " `------´ "
517286
- ]
517287
- ],
517288
- [cactus]: [
517289
- [
517290
- " ",
517291
- " n ____ n ",
517292
- " | |{E} {E}| | ",
517293
- " |_| |_| ",
517294
- " | | "
517295
- ],
517296
- [
517297
- " ",
517298
- " ____ ",
517299
- " n |{E} {E}| n ",
517300
- " |_| |_| ",
517301
- " | | "
517302
- ],
517303
- [
517304
- " n n ",
517305
- " | ____ | ",
517306
- " | |{E} {E}| | ",
517307
- " |_| |_| ",
517308
- " | | "
517309
- ]
517310
- ],
517311
- [robot]: [
517312
- [
517313
- " ",
517314
- " .[||]. ",
517315
- " [ {E} {E} ] ",
517316
- " [ ==== ] ",
517317
- " `------´ "
517318
- ],
517319
- [
517320
- " ",
517321
- " .[||]. ",
517322
- " [ {E} {E} ] ",
517323
- " [ -==- ] ",
517324
- " `------´ "
517325
- ],
517326
- [
517327
- " * ",
517328
- " .[||]. ",
517329
- " [ {E} {E} ] ",
517330
- " [ ==== ] ",
517331
- " `------´ "
517332
- ]
517333
- ],
517334
- [rabbit]: [
517335
- [
517336
- " ",
517337
- " (\\__/) ",
517338
- " ( {E} {E} ) ",
517339
- " =( .. )= ",
517340
- ' (")__(") '
517341
- ],
517342
- [
517343
- " ",
517344
- " (|__/) ",
517345
- " ( {E} {E} ) ",
517346
- " =( .. )= ",
517347
- ' (")__(") '
517348
- ],
517349
- [
517350
- " ",
517351
- " (\\__/) ",
517352
- " ( {E} {E} ) ",
517353
- " =( . . )= ",
517354
- ' (")__(") '
517355
- ]
517356
- ],
517357
- [mushroom]: [
517358
- [
517359
- " ",
517360
- " .-o-OO-o-. ",
517361
- "(__________)",
517362
- " |{E} {E}| ",
517363
- " |____| "
517364
- ],
517365
- [
517366
- " ",
517367
- " .-O-oo-O-. ",
517368
- "(__________)",
517369
- " |{E} {E}| ",
517370
- " |____| "
517371
- ],
517372
- [
517373
- " . o . ",
517374
- " .-o-OO-o-. ",
517375
- "(__________)",
517376
- " |{E} {E}| ",
517377
- " |____| "
518672
+ // src/buddy/CompanionSprite.tsx
518673
+ function wrap(text2, width) {
518674
+ const words = text2.split(" ");
518675
+ const lines2 = [];
518676
+ let cur = "";
518677
+ for (const w2 of words) {
518678
+ if (cur.length + w2.length + 1 > width && cur) {
518679
+ lines2.push(cur);
518680
+ cur = w2;
518681
+ } else {
518682
+ cur = cur ? `${cur} ${w2}` : w2;
518683
+ }
518684
+ }
518685
+ if (cur)
518686
+ lines2.push(cur);
518687
+ return lines2;
518688
+ }
518689
+ function SpeechBubble(t0) {
518690
+ const $3 = import_compiler_runtime312.c(31);
518691
+ const {
518692
+ text: text2,
518693
+ color: color3,
518694
+ fading,
518695
+ tail
518696
+ } = t0;
518697
+ let T0;
518698
+ let borderColor;
518699
+ let t1;
518700
+ let t2;
518701
+ let t3;
518702
+ let t4;
518703
+ let t5;
518704
+ let t6;
518705
+ if ($3[0] !== color3 || $3[1] !== fading || $3[2] !== text2) {
518706
+ const lines2 = wrap(text2, 30);
518707
+ borderColor = fading ? "inactive" : color3;
518708
+ T0 = ThemedBox_default;
518709
+ t1 = "column";
518710
+ t2 = "round";
518711
+ t3 = borderColor;
518712
+ t4 = 1;
518713
+ t5 = 34;
518714
+ let t72;
518715
+ if ($3[11] !== fading) {
518716
+ t72 = (l, i3) => /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518717
+ italic: true,
518718
+ dimColor: !fading,
518719
+ color: fading ? "inactive" : undefined,
518720
+ children: l
518721
+ }, i3, false, undefined, this);
518722
+ $3[11] = fading;
518723
+ $3[12] = t72;
518724
+ } else {
518725
+ t72 = $3[12];
518726
+ }
518727
+ t6 = lines2.map(t72);
518728
+ $3[0] = color3;
518729
+ $3[1] = fading;
518730
+ $3[2] = text2;
518731
+ $3[3] = T0;
518732
+ $3[4] = borderColor;
518733
+ $3[5] = t1;
518734
+ $3[6] = t2;
518735
+ $3[7] = t3;
518736
+ $3[8] = t4;
518737
+ $3[9] = t5;
518738
+ $3[10] = t6;
518739
+ } else {
518740
+ T0 = $3[3];
518741
+ borderColor = $3[4];
518742
+ t1 = $3[5];
518743
+ t2 = $3[6];
518744
+ t3 = $3[7];
518745
+ t4 = $3[8];
518746
+ t5 = $3[9];
518747
+ t6 = $3[10];
518748
+ }
518749
+ let t7;
518750
+ if ($3[13] !== T0 || $3[14] !== t1 || $3[15] !== t2 || $3[16] !== t3 || $3[17] !== t4 || $3[18] !== t5 || $3[19] !== t6) {
518751
+ t7 = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(T0, {
518752
+ flexDirection: t1,
518753
+ borderStyle: t2,
518754
+ borderColor: t3,
518755
+ paddingX: t4,
518756
+ width: t5,
518757
+ children: t6
518758
+ }, undefined, false, undefined, this);
518759
+ $3[13] = T0;
518760
+ $3[14] = t1;
518761
+ $3[15] = t2;
518762
+ $3[16] = t3;
518763
+ $3[17] = t4;
518764
+ $3[18] = t5;
518765
+ $3[19] = t6;
518766
+ $3[20] = t7;
518767
+ } else {
518768
+ t7 = $3[20];
518769
+ }
518770
+ const bubble = t7;
518771
+ if (tail === "right") {
518772
+ let t82;
518773
+ if ($3[21] !== borderColor) {
518774
+ t82 = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518775
+ color: borderColor,
518776
+ children: "─"
518777
+ }, undefined, false, undefined, this);
518778
+ $3[21] = borderColor;
518779
+ $3[22] = t82;
518780
+ } else {
518781
+ t82 = $3[22];
518782
+ }
518783
+ let t92;
518784
+ if ($3[23] !== bubble || $3[24] !== t82) {
518785
+ t92 = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518786
+ flexDirection: "row",
518787
+ alignItems: "center",
518788
+ children: [
518789
+ bubble,
518790
+ t82
518791
+ ]
518792
+ }, undefined, true, undefined, this);
518793
+ $3[23] = bubble;
518794
+ $3[24] = t82;
518795
+ $3[25] = t92;
518796
+ } else {
518797
+ t92 = $3[25];
518798
+ }
518799
+ return t92;
518800
+ }
518801
+ let t8;
518802
+ if ($3[26] !== borderColor) {
518803
+ t8 = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518804
+ flexDirection: "column",
518805
+ alignItems: "flex-end",
518806
+ paddingRight: 6,
518807
+ children: [
518808
+ /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518809
+ color: borderColor,
518810
+ children: " "
518811
+ }, undefined, false, undefined, this),
518812
+ /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518813
+ color: borderColor,
518814
+ children: "╲"
518815
+ }, undefined, false, undefined, this)
517378
518816
  ]
517379
- ],
517380
- [chonk]: [
517381
- [
517382
- " ",
517383
- " /\\ /\\ ",
517384
- " ( {E} {E} ) ",
517385
- " ( .. ) ",
517386
- " `------´ "
517387
- ],
517388
- [
517389
- " ",
517390
- " /\\ /| ",
517391
- " ( {E} {E} ) ",
517392
- " ( .. ) ",
517393
- " `------´ "
517394
- ],
517395
- [
517396
- " ",
517397
- " /\\ /\\ ",
517398
- " ( {E} {E} ) ",
517399
- " ( .. ) ",
517400
- " `------´~ "
518817
+ }, undefined, true, undefined, this);
518818
+ $3[26] = borderColor;
518819
+ $3[27] = t8;
518820
+ } else {
518821
+ t8 = $3[27];
518822
+ }
518823
+ let t9;
518824
+ if ($3[28] !== bubble || $3[29] !== t8) {
518825
+ t9 = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518826
+ flexDirection: "column",
518827
+ alignItems: "flex-end",
518828
+ marginRight: 1,
518829
+ children: [
518830
+ bubble,
518831
+ t8
517401
518832
  ]
517402
- ]
517403
- };
517404
- });
517405
-
517406
- // src/buddy/CompanionSprite.tsx
518833
+ }, undefined, true, undefined, this);
518834
+ $3[28] = bubble;
518835
+ $3[29] = t8;
518836
+ $3[30] = t9;
518837
+ } else {
518838
+ t9 = $3[30];
518839
+ }
518840
+ return t9;
518841
+ }
517407
518842
  function spriteColWidth(nameWidth) {
517408
518843
  return Math.max(SPRITE_BODY_WIDTH, nameWidth + NAME_ROW_PAD);
517409
518844
  }
517410
518845
  function companionReservedColumns(terminalColumns, speaking) {
517411
- if (true)
517412
- return 0;
518846
+ if (false)
518847
+ ;
517413
518848
  const companion = getCompanion();
517414
518849
  if (!companion || getGlobalConfig().companionMuted)
517415
518850
  return 0;
@@ -517419,7 +518854,233 @@ function companionReservedColumns(terminalColumns, speaking) {
517419
518854
  const bubble = speaking && !isFullscreenActive() ? BUBBLE_WIDTH : 0;
517420
518855
  return spriteColWidth(nameWidth) + SPRITE_PADDING_X + bubble;
517421
518856
  }
517422
- var import_compiler_runtime312, import_react224, jsx_dev_runtime400, H3, PET_HEARTS, MIN_COLS_FOR_FULL_SPRITE = 100, SPRITE_BODY_WIDTH = 12, NAME_ROW_PAD = 2, SPRITE_PADDING_X = 2, BUBBLE_WIDTH = 36;
518857
+ function CompanionSprite() {
518858
+ const reaction = useAppState((s) => s.companionReaction);
518859
+ const petAt = useAppState((s) => s.companionPetAt);
518860
+ const focused = useAppState((s) => s.footerSelection === "companion");
518861
+ const setAppState = useSetAppState();
518862
+ const {
518863
+ columns
518864
+ } = useTerminalSize();
518865
+ const [tick, setTick] = import_react224.useState(0);
518866
+ const lastSpokeTick = import_react224.useRef(0);
518867
+ const [{
518868
+ petStartTick,
518869
+ forPetAt
518870
+ }, setPetStart] = import_react224.useState({
518871
+ petStartTick: 0,
518872
+ forPetAt: petAt
518873
+ });
518874
+ if (petAt !== forPetAt) {
518875
+ setPetStart({
518876
+ petStartTick: tick,
518877
+ forPetAt: petAt
518878
+ });
518879
+ }
518880
+ import_react224.useEffect(() => {
518881
+ const timer = setInterval((setT) => setT((t) => t + 1), TICK_MS2, setTick);
518882
+ return () => clearInterval(timer);
518883
+ }, []);
518884
+ import_react224.useEffect(() => {
518885
+ if (!reaction)
518886
+ return;
518887
+ lastSpokeTick.current = tick;
518888
+ const timer = setTimeout((setA) => setA((prev) => prev.companionReaction === undefined ? prev : {
518889
+ ...prev,
518890
+ companionReaction: undefined
518891
+ }), BUBBLE_SHOW * TICK_MS2, setAppState);
518892
+ return () => clearTimeout(timer);
518893
+ }, [reaction, setAppState]);
518894
+ if (false)
518895
+ ;
518896
+ const companion = getCompanion();
518897
+ if (!companion || getGlobalConfig().companionMuted)
518898
+ return null;
518899
+ const color3 = RARITY_COLORS[companion.rarity];
518900
+ const colWidth = spriteColWidth(stringWidth(companion.name));
518901
+ const bubbleAge = reaction ? tick - lastSpokeTick.current : 0;
518902
+ const fading = reaction !== undefined && bubbleAge >= BUBBLE_SHOW - FADE_WINDOW;
518903
+ const petAge = petAt ? tick - petStartTick : Infinity;
518904
+ const petting = petAge * TICK_MS2 < PET_BURST_MS;
518905
+ if (columns < MIN_COLS_FOR_FULL_SPRITE) {
518906
+ const quip = reaction && reaction.length > NARROW_QUIP_CAP ? reaction.slice(0, NARROW_QUIP_CAP - 1) + "…" : reaction;
518907
+ const label = quip ? `"${quip}"` : focused ? ` ${companion.name} ` : companion.name;
518908
+ return /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518909
+ paddingX: 1,
518910
+ alignSelf: "flex-end",
518911
+ children: /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518912
+ children: [
518913
+ petting && /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518914
+ color: "autoAccept",
518915
+ children: [
518916
+ figures_default.heart,
518917
+ " "
518918
+ ]
518919
+ }, undefined, true, undefined, this),
518920
+ /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518921
+ bold: true,
518922
+ color: color3,
518923
+ children: renderFace(companion)
518924
+ }, undefined, false, undefined, this),
518925
+ " ",
518926
+ /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518927
+ italic: true,
518928
+ dimColor: !focused && !reaction,
518929
+ bold: focused,
518930
+ inverse: focused && !reaction,
518931
+ color: reaction ? fading ? "inactive" : color3 : focused ? color3 : undefined,
518932
+ children: label
518933
+ }, undefined, false, undefined, this)
518934
+ ]
518935
+ }, undefined, true, undefined, this)
518936
+ }, undefined, false, undefined, this);
518937
+ }
518938
+ const frameCount = spriteFrameCount(companion.species);
518939
+ const heartFrame = petting ? PET_HEARTS[petAge % PET_HEARTS.length] : null;
518940
+ let spriteFrame;
518941
+ let blink = false;
518942
+ if (reaction || petting) {
518943
+ spriteFrame = tick % frameCount;
518944
+ } else {
518945
+ const step = IDLE_SEQUENCE[tick % IDLE_SEQUENCE.length];
518946
+ if (step === -1) {
518947
+ spriteFrame = 0;
518948
+ blink = true;
518949
+ } else {
518950
+ spriteFrame = step % frameCount;
518951
+ }
518952
+ }
518953
+ const body = renderSprite(companion, spriteFrame).map((line) => blink ? line.replaceAll(companion.eye, "-") : line);
518954
+ const sprite = heartFrame ? [heartFrame, ...body] : body;
518955
+ const spriteColumn = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518956
+ flexDirection: "column",
518957
+ flexShrink: 0,
518958
+ alignItems: "center",
518959
+ width: colWidth,
518960
+ children: [
518961
+ sprite.map((line, i3) => /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518962
+ color: i3 === 0 && heartFrame ? "autoAccept" : color3,
518963
+ children: line
518964
+ }, i3, false, undefined, this)),
518965
+ /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedText, {
518966
+ italic: true,
518967
+ bold: focused,
518968
+ dimColor: !focused,
518969
+ color: focused ? color3 : undefined,
518970
+ inverse: focused,
518971
+ children: focused ? ` ${companion.name} ` : companion.name
518972
+ }, undefined, false, undefined, this)
518973
+ ]
518974
+ }, undefined, true, undefined, this);
518975
+ if (!reaction) {
518976
+ return /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518977
+ paddingX: 1,
518978
+ children: spriteColumn
518979
+ }, undefined, false, undefined, this);
518980
+ }
518981
+ if (isFullscreenActive()) {
518982
+ return /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518983
+ paddingX: 1,
518984
+ children: spriteColumn
518985
+ }, undefined, false, undefined, this);
518986
+ }
518987
+ return /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(ThemedBox_default, {
518988
+ flexDirection: "row",
518989
+ alignItems: "flex-end",
518990
+ paddingX: 1,
518991
+ flexShrink: 0,
518992
+ children: [
518993
+ /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(SpeechBubble, {
518994
+ text: reaction,
518995
+ color: color3,
518996
+ fading,
518997
+ tail: "right"
518998
+ }, undefined, false, undefined, this),
518999
+ spriteColumn
519000
+ ]
519001
+ }, undefined, true, undefined, this);
519002
+ }
519003
+ function CompanionFloatingBubble() {
519004
+ const $3 = import_compiler_runtime312.c(8);
519005
+ const reaction = useAppState(_temp188);
519006
+ let t0;
519007
+ if ($3[0] !== reaction) {
519008
+ t0 = {
519009
+ tick: 0,
519010
+ forReaction: reaction
519011
+ };
519012
+ $3[0] = reaction;
519013
+ $3[1] = t0;
519014
+ } else {
519015
+ t0 = $3[1];
519016
+ }
519017
+ const [t1, setTick] = import_react224.useState(t0);
519018
+ const {
519019
+ tick,
519020
+ forReaction
519021
+ } = t1;
519022
+ if (reaction !== forReaction) {
519023
+ setTick({
519024
+ tick: 0,
519025
+ forReaction: reaction
519026
+ });
519027
+ }
519028
+ let t2;
519029
+ let t3;
519030
+ if ($3[2] !== reaction) {
519031
+ t2 = () => {
519032
+ if (!reaction) {
519033
+ return;
519034
+ }
519035
+ const timer = setInterval(_temp352, TICK_MS2, setTick);
519036
+ return () => clearInterval(timer);
519037
+ };
519038
+ t3 = [reaction];
519039
+ $3[2] = reaction;
519040
+ $3[3] = t2;
519041
+ $3[4] = t3;
519042
+ } else {
519043
+ t2 = $3[3];
519044
+ t3 = $3[4];
519045
+ }
519046
+ import_react224.useEffect(t2, t3);
519047
+ if (!reaction) {
519048
+ return null;
519049
+ }
519050
+ const companion = getCompanion();
519051
+ if (!companion || getGlobalConfig().companionMuted) {
519052
+ return null;
519053
+ }
519054
+ const t4 = tick >= BUBBLE_SHOW - FADE_WINDOW;
519055
+ let t5;
519056
+ if ($3[5] !== reaction || $3[6] !== t4) {
519057
+ t5 = /* @__PURE__ */ jsx_dev_runtime400.jsxDEV(SpeechBubble, {
519058
+ text: reaction,
519059
+ color: RARITY_COLORS[companion.rarity],
519060
+ fading: t4,
519061
+ tail: "down"
519062
+ }, undefined, false, undefined, this);
519063
+ $3[5] = reaction;
519064
+ $3[6] = t4;
519065
+ $3[7] = t5;
519066
+ } else {
519067
+ t5 = $3[7];
519068
+ }
519069
+ return t5;
519070
+ }
519071
+ function _temp352(set3) {
519072
+ return set3(_temp278);
519073
+ }
519074
+ function _temp278(s_0) {
519075
+ return {
519076
+ ...s_0,
519077
+ tick: s_0.tick + 1
519078
+ };
519079
+ }
519080
+ function _temp188(s) {
519081
+ return s.companionReaction;
519082
+ }
519083
+ var import_compiler_runtime312, import_react224, jsx_dev_runtime400, TICK_MS2 = 500, BUBBLE_SHOW = 20, FADE_WINDOW = 6, PET_BURST_MS = 2500, IDLE_SEQUENCE, H3, PET_HEARTS, MIN_COLS_FOR_FULL_SPRITE = 100, SPRITE_BODY_WIDTH = 12, NAME_ROW_PAD = 2, SPRITE_PADDING_X = 2, BUBBLE_WIDTH = 36, NARROW_QUIP_CAP = 24;
517423
519084
  var init_CompanionSprite = __esm(() => {
517424
519085
  init_figures();
517425
519086
  init_useTerminalSize();
@@ -517434,6 +519095,7 @@ var init_CompanionSprite = __esm(() => {
517434
519095
  import_compiler_runtime312 = __toESM(require_compiler_runtime(), 1);
517435
519096
  import_react224 = __toESM(require_react(), 1);
517436
519097
  jsx_dev_runtime400 = __toESM(require_jsx_dev_runtime(), 1);
519098
+ IDLE_SEQUENCE = [0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 2, 0, 0, 0];
517437
519099
  H3 = figures_default.heart;
517438
519100
  PET_HEARTS = [` ${H3} ${H3} `, ` ${H3} ${H3} ${H3} `, ` ${H3} ${H3} ${H3} `, `${H3} ${H3} ${H3} `, "· · · "];
517439
519101
  });
@@ -517453,7 +519115,7 @@ function RainbowText2(t0) {
517453
519115
  let t1;
517454
519116
  if ($3[0] !== text2) {
517455
519117
  t1 = /* @__PURE__ */ jsx_dev_runtime401.jsxDEV(jsx_dev_runtime401.Fragment, {
517456
- children: [...text2].map(_temp188)
519118
+ children: [...text2].map(_temp189)
517457
519119
  }, undefined, false, undefined, this);
517458
519120
  $3[0] = text2;
517459
519121
  $3[1] = t1;
@@ -517462,7 +519124,7 @@ function RainbowText2(t0) {
517462
519124
  }
517463
519125
  return t1;
517464
519126
  }
517465
- function _temp188(ch2, i3) {
519127
+ function _temp189(ch2, i3) {
517466
519128
  return /* @__PURE__ */ jsx_dev_runtime401.jsxDEV(ThemedText, {
517467
519129
  color: getRainbowColor(i3),
517468
519130
  children: ch2
@@ -517478,9 +519140,7 @@ function useBuddyNotification() {
517478
519140
  let t1;
517479
519141
  if ($3[0] !== addNotification || $3[1] !== removeNotification) {
517480
519142
  t0 = () => {
517481
- if (true) {
517482
- return;
517483
- }
519143
+ if (false) {}
517484
519144
  const config5 = getGlobalConfig();
517485
519145
  if (config5.companion || !isBuddyTeaserWindow()) {
517486
519146
  return;
@@ -517507,8 +519167,8 @@ function useBuddyNotification() {
517507
519167
  import_react225.useEffect(t0, t1);
517508
519168
  }
517509
519169
  function findBuddyTriggerPositions(text2) {
517510
- if (true)
517511
- return [];
519170
+ if (false)
519171
+ ;
517512
519172
  const triggers = [];
517513
519173
  const re2 = /\/buddy\b/g;
517514
519174
  let m2;
@@ -518526,7 +520186,7 @@ function Notifications(t0) {
518526
520186
  const {
518527
520187
  status: ideStatus
518528
520188
  } = useIdeConnectionStatus(mcpClients);
518529
- const notifications = useAppState(_temp189);
520189
+ const notifications = useAppState(_temp190);
518530
520190
  const {
518531
520191
  addNotification,
518532
520192
  removeNotification
@@ -518545,7 +520205,7 @@ function Notifications(t0) {
518545
520205
  timeoutMs: isError ? 8000 : 5000
518546
520206
  });
518547
520207
  });
518548
- return _temp278;
520208
+ return _temp279;
518549
520209
  };
518550
520210
  t6 = [addNotification];
518551
520211
  $3[5] = addNotification;
@@ -518672,10 +520332,10 @@ function Notifications(t0) {
518672
520332
  }
518673
520333
  return t14;
518674
520334
  }
518675
- function _temp278() {
520335
+ function _temp279() {
518676
520336
  return setEnvHookNotifier(null);
518677
520337
  }
518678
- function _temp189(s) {
520338
+ function _temp190(s) {
518679
520339
  return s.notifications;
518680
520340
  }
518681
520341
  function NotificationContent({
@@ -522621,9 +524281,9 @@ function BridgeDialog(t0) {
522621
524281
  onDone
522622
524282
  } = t0;
522623
524283
  useRegisterOverlay("bridge-dialog");
522624
- const connected = useAppState(_temp190);
522625
- const sessionActive = useAppState(_temp279);
522626
- const reconnecting = useAppState(_temp352);
524284
+ const connected = useAppState(_temp191);
524285
+ const sessionActive = useAppState(_temp280);
524286
+ const reconnecting = useAppState(_temp353);
522627
524287
  const connectUrl = useAppState(_temp439);
522628
524288
  const sessionUrl = useAppState(_temp528);
522629
524289
  const error49 = useAppState(_temp622);
@@ -523051,13 +524711,13 @@ function _temp528(s_3) {
523051
524711
  function _temp439(s_2) {
523052
524712
  return s_2.replBridgeConnectUrl;
523053
524713
  }
523054
- function _temp352(s_1) {
524714
+ function _temp353(s_1) {
523055
524715
  return s_1.replBridgeReconnecting;
523056
524716
  }
523057
- function _temp279(s_0) {
524717
+ function _temp280(s_0) {
523058
524718
  return s_0.replBridgeSessionActive;
523059
524719
  }
523060
- function _temp190(s) {
524720
+ function _temp191(s) {
523061
524721
  return s.replBridgeConnected;
523062
524722
  }
523063
524723
  var import_compiler_runtime321, import_react243, jsx_dev_runtime414;
@@ -523083,12 +524743,12 @@ function getVisibleAgentTasks(tasks2) {
523083
524743
  return Object.values(tasks2).filter((t) => isPanelAgentTask(t) && t.evictAfter !== 0).sort((a2, b3) => a2.startTime - b3.startTime);
523084
524744
  }
523085
524745
  function useCoordinatorTaskCount() {
523086
- const tasks2 = useAppState(_temp191);
524746
+ const tasks2 = useAppState(_temp192);
523087
524747
  let t0;
523088
524748
  t0 = 0;
523089
524749
  return t0;
523090
524750
  }
523091
- function _temp191(s) {
524751
+ function _temp192(s) {
523092
524752
  return s.tasks;
523093
524753
  }
523094
524754
  var import_compiler_runtime322, React136, jsx_dev_runtime415;
@@ -523334,7 +524994,7 @@ function ThinkingToggle(t0) {
523334
524994
  defaultFocusValue: currentValue ? "true" : "false",
523335
524995
  options,
523336
524996
  onChange: handleSelectChange,
523337
- onCancel: onCancel ?? _temp192,
524997
+ onCancel: onCancel ?? _temp193,
523338
524998
  visibleOptionCount: 2
523339
524999
  }, undefined, false, undefined, this)
523340
525000
  }, undefined, false, undefined, this)
@@ -523411,7 +525071,7 @@ function ThinkingToggle(t0) {
523411
525071
  }
523412
525072
  return t11;
523413
525073
  }
523414
- function _temp192() {}
525074
+ function _temp193() {}
523415
525075
  var import_compiler_runtime326, import_react248, jsx_dev_runtime421;
523416
525076
  var init_ThinkingToggle = __esm(() => {
523417
525077
  init_useExitOnCtrlCDWithKeybindings();
@@ -523859,7 +525519,7 @@ function TeammateDetailView(t0) {
523859
525519
  if ($3[6] === Symbol.for("react.memo_cache_sentinel")) {
523860
525520
  t4 = (input) => {
523861
525521
  if (input === "p") {
523862
- setPromptExpanded(_temp193);
525522
+ setPromptExpanded(_temp194);
523863
525523
  }
523864
525524
  };
523865
525525
  $3[6] = t4;
@@ -523950,7 +525610,7 @@ function TeammateDetailView(t0) {
523950
525610
  bold: true,
523951
525611
  children: "Tasks"
523952
525612
  }, undefined, false, undefined, this),
523953
- teammateTasks.map(_temp280)
525613
+ teammateTasks.map(_temp281)
523954
525614
  ]
523955
525615
  }, undefined, true, undefined, this);
523956
525616
  $3[23] = teammateTasks;
@@ -524043,7 +525703,7 @@ function TeammateDetailView(t0) {
524043
525703
  }
524044
525704
  return t13;
524045
525705
  }
524046
- function _temp280(task_0) {
525706
+ function _temp281(task_0) {
524047
525707
  return /* @__PURE__ */ jsx_dev_runtime422.jsxDEV(ThemedText, {
524048
525708
  color: task_0.status === "completed" ? "success" : undefined,
524049
525709
  children: [
@@ -524053,7 +525713,7 @@ function _temp280(task_0) {
524053
525713
  ]
524054
525714
  }, task_0.id, true, undefined, this);
524055
525715
  }
524056
- function _temp193(prev) {
525716
+ function _temp194(prev) {
524057
525717
  return !prev;
524058
525718
  }
524059
525719
  async function killTeammate(paneId, backendType, teamName, teammateId, teammateName, setAppState) {
@@ -524742,7 +526402,7 @@ function createInitialPersistentState() {
524742
526402
  };
524743
526403
  }
524744
526404
  var OPERATORS, SIMPLE_MOTIONS, FIND_KEYS, TEXT_OBJ_SCOPES, TEXT_OBJ_TYPES, MAX_VIM_COUNT = 1e4;
524745
- var init_types14 = __esm(() => {
526405
+ var init_types15 = __esm(() => {
524746
526406
  OPERATORS = {
524747
526407
  d: "delete",
524748
526408
  c: "change",
@@ -525088,7 +526748,7 @@ function executeRepeatFind(reverse, count4, ctx) {
525088
526748
  }
525089
526749
  var init_transitions = __esm(() => {
525090
526750
  init_operators();
525091
- init_types14();
526751
+ init_types15();
525092
526752
  });
525093
526753
 
525094
526754
  // src/hooks/useVimInput.ts
@@ -525288,7 +526948,7 @@ var init_useVimInput = __esm(() => {
525288
526948
  init_intl();
525289
526949
  init_operators();
525290
526950
  init_transitions();
525291
- init_types14();
526951
+ init_types15();
525292
526952
  init_useTextInput();
525293
526953
  import_react250 = __toESM(require_react(), 1);
525294
526954
  });
@@ -525313,7 +526973,7 @@ function VimTextInput(props) {
525313
526973
  const t11 = props.multiline;
525314
526974
  const t12 = props.showCursor ? " " : "";
525315
526975
  const t13 = props.highlightPastedText;
525316
- const t14 = isTerminalFocused ? source_default.inverse : _temp194;
526976
+ const t14 = isTerminalFocused ? source_default.inverse : _temp195;
525317
526977
  let t15;
525318
526978
  if ($3[0] !== theme2) {
525319
526979
  t15 = color("text", theme2);
@@ -525426,7 +527086,7 @@ function VimTextInput(props) {
525426
527086
  }
525427
527087
  return t19;
525428
527088
  }
525429
- function _temp194(text2) {
527089
+ function _temp195(text2) {
525430
527090
  return text2;
525431
527091
  }
525432
527092
  var import_compiler_runtime328, import_react251, jsx_dev_runtime423;
@@ -525800,11 +527460,11 @@ function BackgroundTaskStatus(t0) {
525800
527460
  const {
525801
527461
  columns
525802
527462
  } = useTerminalSize();
525803
- const tasks2 = useAppState(_temp195);
525804
- const viewingAgentTaskId = useAppState(_temp281);
527463
+ const tasks2 = useAppState(_temp196);
527464
+ const viewingAgentTaskId = useAppState(_temp282);
525805
527465
  let t3;
525806
527466
  if ($3[0] !== tasks2) {
525807
- t3 = Object.values(tasks2 ?? {}).filter(_temp353);
527467
+ t3 = Object.values(tasks2 ?? {}).filter(_temp354);
525808
527468
  $3[0] = tasks2;
525809
527469
  $3[1] = t3;
525810
527470
  } else {
@@ -526089,13 +527749,13 @@ function _temp529(t_0) {
526089
527749
  function _temp440(s_1) {
526090
527750
  return s_1.expandedView;
526091
527751
  }
526092
- function _temp353(t) {
527752
+ function _temp354(t) {
526093
527753
  return isBackgroundTask(t) && true;
526094
527754
  }
526095
- function _temp281(s_0) {
527755
+ function _temp282(s_0) {
526096
527756
  return s_0.viewingAgentTaskId;
526097
527757
  }
526098
- function _temp195(s) {
527758
+ function _temp196(s) {
526099
527759
  return s.tasks;
526100
527760
  }
526101
527761
  function AgentPill(t0) {
@@ -526317,10 +527977,10 @@ function TeamStatus(t0) {
526317
527977
  teamsSelected,
526318
527978
  showHint
526319
527979
  } = t0;
526320
- const teamContext = useAppState(_temp196);
527980
+ const teamContext = useAppState(_temp197);
526321
527981
  let t1;
526322
527982
  if ($3[0] !== teamContext) {
526323
- t1 = teamContext ? Object.values(teamContext.teammates).filter(_temp282).length : 0;
527983
+ t1 = teamContext ? Object.values(teamContext.teammates).filter(_temp283).length : 0;
526324
527984
  $3[0] = teamContext;
526325
527985
  $3[1] = t1;
526326
527986
  } else {
@@ -526396,10 +528056,10 @@ function TeamStatus(t0) {
526396
528056
  }
526397
528057
  return t6;
526398
528058
  }
526399
- function _temp282(t) {
528059
+ function _temp283(t) {
526400
528060
  return t.name !== "team-lead";
526401
528061
  }
526402
- function _temp196(s) {
528062
+ function _temp197(s) {
526403
528063
  return s.teamContext;
526404
528064
  }
526405
528065
  var import_compiler_runtime330, jsx_dev_runtime426;
@@ -526437,7 +528097,7 @@ function HistorySearchInput(t0) {
526437
528097
  value,
526438
528098
  onChange,
526439
528099
  cursorOffset: value.length,
526440
- onChangeCursorOffset: _temp197,
528100
+ onChangeCursorOffset: _temp198,
526441
528101
  columns: t3,
526442
528102
  focus: true,
526443
528103
  showCursor: true,
@@ -526468,7 +528128,7 @@ function HistorySearchInput(t0) {
526468
528128
  }
526469
528129
  return t5;
526470
528130
  }
526471
- function _temp197() {}
528131
+ function _temp198() {}
526472
528132
  var import_compiler_runtime331, jsx_dev_runtime427, HistorySearchInput_default;
526473
528133
  var init_HistorySearchInput = __esm(() => {
526474
528134
  init_stringWidth();
@@ -527973,10 +529633,7 @@ function PromptInput({
527973
529633
  const {
527974
529634
  companion: _companion,
527975
529635
  companionMuted
527976
- } = {
527977
- companion: undefined,
527978
- companionMuted: undefined
527979
- };
529636
+ } = getGlobalConfig();
527980
529637
  const companionFooterVisible = !!_companion && !companionMuted;
527981
529638
  const briefOwnsGap = false;
527982
529639
  const mainLoopModel_ = useAppState((s) => s.mainLoopModel);
@@ -529009,7 +530666,10 @@ function PromptInput({
529009
530666
  }
529010
530667
  switch (footerItemSelected) {
529011
530668
  case "companion":
529012
- if (false) {}
530669
+ if (true) {
530670
+ selectFooterItem(null);
530671
+ onSubmit("/buddy");
530672
+ }
529013
530673
  break;
529014
530674
  case "tasks":
529015
530675
  if (isTeammateMode) {
@@ -529168,7 +530828,7 @@ function PromptInput({
529168
530828
  });
529169
530829
  }, [effortNotificationText, addNotification, removeNotification]);
529170
530830
  useBuddyNotification();
529171
- const companionSpeaking = false;
530831
+ const companionSpeaking = useAppState((s) => s.companionReaction !== undefined);
529172
530832
  const {
529173
530833
  columns,
529174
530834
  rows
@@ -535121,7 +536781,7 @@ var init_useManagePlugins = __esm(() => {
535121
536781
  // src/components/TeammateViewHeader.tsx
535122
536782
  function TeammateViewHeader() {
535123
536783
  const $3 = import_compiler_runtime341.c(14);
535124
- const viewedTeammate = useAppState(_temp198);
536784
+ const viewedTeammate = useAppState(_temp199);
535125
536785
  if (!viewedTeammate) {
535126
536786
  return null;
535127
536787
  }
@@ -535220,7 +536880,7 @@ function TeammateViewHeader() {
535220
536880
  }
535221
536881
  return t6;
535222
536882
  }
535223
- function _temp198(s) {
536883
+ function _temp199(s) {
535224
536884
  return getViewedTeammateTask(s);
535225
536885
  }
535226
536886
  var import_compiler_runtime341, jsx_dev_runtime440;
@@ -536333,7 +537993,7 @@ function SessionBackgroundHint(t0) {
536333
537993
  const setAppState = useSetAppState();
536334
537994
  const appStateStore = useAppStateStore();
536335
537995
  const [showSessionHint, setShowSessionHint] = import_react288.useState(false);
536336
- const handleDoublePress = useDoublePress(setShowSessionHint, onBackgroundSession, _temp199);
537996
+ const handleDoublePress = useDoublePress(setShowSessionHint, onBackgroundSession, _temp200);
536337
537997
  let t1;
536338
537998
  if ($3[0] !== appStateStore || $3[1] !== handleDoublePress || $3[2] !== isLoading || $3[3] !== setAppState) {
536339
537999
  t1 = () => {
@@ -536344,7 +538004,7 @@ function SessionBackgroundHint(t0) {
536344
538004
  if (hasForegroundTasks(state2)) {
536345
538005
  backgroundAll(() => appStateStore.getState(), setAppState);
536346
538006
  if (!getGlobalConfig().hasUsedBackgroundTask) {
536347
- saveGlobalConfig(_temp283);
538007
+ saveGlobalConfig(_temp284);
536348
538008
  }
536349
538009
  } else {
536350
538010
  if (isEnvTruthy("false") && isLoading) {
@@ -536407,13 +538067,13 @@ function SessionBackgroundHint(t0) {
536407
538067
  }
536408
538068
  return t5;
536409
538069
  }
536410
- function _temp283(c6) {
538070
+ function _temp284(c6) {
536411
538071
  return c6.hasUsedBackgroundTask ? c6 : {
536412
538072
  ...c6,
536413
538073
  hasUsedBackgroundTask: true
536414
538074
  };
536415
538075
  }
536416
- function _temp199() {}
538076
+ function _temp200() {}
536417
538077
  var import_compiler_runtime343, import_react288, jsx_dev_runtime441;
536418
538078
  var init_SessionBackgroundHint = __esm(() => {
536419
538079
  init_useDoublePress();
@@ -536600,7 +538260,7 @@ function EffortCallout(t0) {
536600
538260
  } else {
536601
538261
  t4 = $3[4];
536602
538262
  }
536603
- import_react290.useEffect(_temp200, t4);
538263
+ import_react290.useEffect(_temp201, t4);
536604
538264
  let t5;
536605
538265
  let t6;
536606
538266
  if ($3[5] === Symbol.for("react.memo_cache_sentinel")) {
@@ -536750,7 +538410,7 @@ function EffortCallout(t0) {
536750
538410
  }
536751
538411
  return t14;
536752
538412
  }
536753
- function _temp200() {
538413
+ function _temp201() {
536754
538414
  markV2Dismissed();
536755
538415
  }
536756
538416
  function EffortIndicatorSymbol(t0) {
@@ -537581,8 +539241,8 @@ function usePostCompactSurvey(messages, isLoading, t0, t1) {
537581
539241
  }
537582
539242
  const seenCompactBoundaries = import_react296.useRef(t4);
537583
539243
  const pendingCompactBoundaryUuid = import_react296.useRef(null);
537584
- const onOpen = _temp201;
537585
- const onSelect = _temp284;
539244
+ const onOpen = _temp202;
539245
+ const onSelect = _temp285;
537586
539246
  let t5;
537587
539247
  if ($3[3] === Symbol.for("react.memo_cache_sentinel")) {
537588
539248
  t5 = {
@@ -537620,7 +539280,7 @@ function usePostCompactSurvey(messages, isLoading, t0, t1) {
537620
539280
  import_react296.useEffect(t6, t7);
537621
539281
  let t8;
537622
539282
  if ($3[7] !== messages) {
537623
- t8 = new Set(messages.filter(_temp354).map(_temp441));
539283
+ t8 = new Set(messages.filter(_temp355).map(_temp441));
537624
539284
  $3[7] = messages;
537625
539285
  $3[8] = t8;
537626
539286
  } else {
@@ -537699,10 +539359,10 @@ function usePostCompactSurvey(messages, isLoading, t0, t1) {
537699
539359
  function _temp441(msg_0) {
537700
539360
  return msg_0.uuid;
537701
539361
  }
537702
- function _temp354(msg) {
539362
+ function _temp355(msg) {
537703
539363
  return isCompactBoundaryMessage(msg);
537704
539364
  }
537705
- function _temp284(appearanceId_0, selected) {
539365
+ function _temp285(appearanceId_0, selected) {
537706
539366
  const smCompactionEnabled_0 = shouldUseSessionMemoryCompaction();
537707
539367
  logEvent("tengu_post_compact_survey_event", {
537708
539368
  event_type: "responded",
@@ -537717,7 +539377,7 @@ function _temp284(appearanceId_0, selected) {
537717
539377
  survey_type: "post_compact"
537718
539378
  });
537719
539379
  }
537720
- function _temp201(appearanceId) {
539380
+ function _temp202(appearanceId) {
537721
539381
  const smCompactionEnabled = shouldUseSessionMemoryCompaction();
537722
539382
  logEvent("tengu_post_compact_survey_event", {
537723
539383
  event_type: "appeared",
@@ -538147,13 +539807,13 @@ var init_useStartupNotification = __esm(() => {
538147
539807
 
538148
539808
  // src/hooks/notifs/useInstallMessages.tsx
538149
539809
  function useInstallMessages() {
538150
- useStartupNotification(_temp285);
539810
+ useStartupNotification(_temp286);
538151
539811
  }
538152
- async function _temp285() {
539812
+ async function _temp286() {
538153
539813
  const messages = await checkInstall();
538154
- return messages.map(_temp202);
539814
+ return messages.map(_temp203);
538155
539815
  }
538156
- function _temp202(message, index) {
539816
+ function _temp203(message, index) {
538157
539817
  let priority = "low";
538158
539818
  if (message.type === "error" || message.userActionRequired) {
538159
539819
  priority = "high";
@@ -538207,9 +539867,9 @@ function getChromeFlag() {
538207
539867
  return;
538208
539868
  }
538209
539869
  function useChromeExtensionNotification() {
538210
- useStartupNotification(_temp203);
539870
+ useStartupNotification(_temp204);
538211
539871
  }
538212
- async function _temp203() {
539872
+ async function _temp204() {
538213
539873
  const chromeFlag = getChromeFlag();
538214
539874
  if (!shouldEnableClaudeInChrome(chromeFlag)) {
538215
539875
  return null;
@@ -538522,9 +540182,9 @@ var init_officialMarketplaceStartupCheck = __esm(() => {
538522
540182
 
538523
540183
  // src/hooks/useOfficialMarketplaceNotification.tsx
538524
540184
  function useOfficialMarketplaceNotification() {
538525
- useStartupNotification(_temp204);
540185
+ useStartupNotification(_temp205);
538526
540186
  }
538527
- async function _temp204() {
540187
+ async function _temp205() {
538528
540188
  const result = await checkAndInstallOfficialMarketplace();
538529
540189
  const notifs = [];
538530
540190
  if (result.configSaveFailed) {
@@ -538587,7 +540247,7 @@ function usePromptsFromClaudeInChrome(mcpClients, toolPermissionMode) {
538587
540247
  } else {
538588
540248
  t0 = $3[1];
538589
540249
  }
538590
- import_react299.useEffect(_temp205, t0);
540250
+ import_react299.useEffect(_temp206, t0);
538591
540251
  let t1;
538592
540252
  let t2;
538593
540253
  if ($3[2] !== mcpClients || $3[3] !== toolPermissionMode) {
@@ -538612,7 +540272,7 @@ function usePromptsFromClaudeInChrome(mcpClients, toolPermissionMode) {
538612
540272
  }
538613
540273
  import_react299.useEffect(t1, t2);
538614
540274
  }
538615
- function _temp205() {}
540275
+ function _temp206() {}
538616
540276
  function findChromeClient(clients) {
538617
540277
  return clients.find((client) => client.type === "connected" && client.name === CLAUDE_IN_CHROME_MCP_SERVER_NAME);
538618
540278
  }
@@ -538690,7 +540350,7 @@ function DesktopUpsellStartup(t0) {
538690
540350
  } else {
538691
540351
  t1 = $3[0];
538692
540352
  }
538693
- import_react300.useEffect(_temp206, t1);
540353
+ import_react300.useEffect(_temp207, t1);
538694
540354
  if (showHandoff) {
538695
540355
  let t22;
538696
540356
  if ($3[1] !== onDone) {
@@ -538713,7 +540373,7 @@ function DesktopUpsellStartup(t0) {
538713
540373
  return;
538714
540374
  }
538715
540375
  case "never": {
538716
- saveGlobalConfig(_temp286);
540376
+ saveGlobalConfig(_temp287);
538717
540377
  onDone();
538718
540378
  return;
538719
540379
  }
@@ -538806,7 +540466,7 @@ function DesktopUpsellStartup(t0) {
538806
540466
  }
538807
540467
  return t8;
538808
540468
  }
538809
- function _temp286(prev_0) {
540469
+ function _temp287(prev_0) {
538810
540470
  if (prev_0.desktopUpsellDismissed) {
538811
540471
  return prev_0;
538812
540472
  }
@@ -538815,7 +540475,7 @@ function _temp286(prev_0) {
538815
540475
  desktopUpsellDismissed: true
538816
540476
  };
538817
540477
  }
538818
- function _temp206() {
540478
+ function _temp207() {
538819
540479
  const newCount = (getGlobalConfig().desktopUpsellSeenCount ?? 0) + 1;
538820
540480
  saveGlobalConfig((prev) => {
538821
540481
  if ((prev.desktopUpsellSeenCount ?? 0) >= newCount) {
@@ -540627,7 +542287,7 @@ function SandboxViolationExpandedView() {
540627
542287
  }
540628
542288
  let t5;
540629
542289
  if ($3[6] !== violations) {
540630
- t5 = violations.map(_temp207);
542290
+ t5 = violations.map(_temp208);
540631
542291
  $3[6] = violations;
540632
542292
  $3[7] = t5;
540633
542293
  } else {
@@ -540674,7 +542334,7 @@ function SandboxViolationExpandedView() {
540674
542334
  }
540675
542335
  return t8;
540676
542336
  }
540677
- function _temp207(v2, i3) {
542337
+ function _temp208(v2, i3) {
540678
542338
  return /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedBox_default, {
540679
542339
  paddingLeft: 2,
540680
542340
  children: /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedText, {
@@ -540715,9 +542375,9 @@ function useMcpConnectivityStatus(t0) {
540715
542375
  if (getIsRemoteMode()) {
540716
542376
  return;
540717
542377
  }
540718
- const failedLocalClients = mcpClients.filter(_temp208);
540719
- const failedClaudeAiClients = mcpClients.filter(_temp287);
540720
- const needsAuthLocalServers = mcpClients.filter(_temp355);
542378
+ const failedLocalClients = mcpClients.filter(_temp209);
542379
+ const failedClaudeAiClients = mcpClients.filter(_temp288);
542380
+ const needsAuthLocalServers = mcpClients.filter(_temp356);
540721
542381
  const needsAuthClaudeAiServers = mcpClients.filter(_temp442);
540722
542382
  if (failedLocalClients.length === 0 && failedClaudeAiClients.length === 0 && needsAuthLocalServers.length === 0 && needsAuthClaudeAiServers.length === 0) {
540723
542383
  return;
@@ -540836,13 +542496,13 @@ function useMcpConnectivityStatus(t0) {
540836
542496
  function _temp442(client_2) {
540837
542497
  return client_2.type === "needs-auth" && client_2.config.type === "claudeai-proxy" && hasClaudeAiMcpEverConnected(client_2.name);
540838
542498
  }
540839
- function _temp355(client_1) {
542499
+ function _temp356(client_1) {
540840
542500
  return client_1.type === "needs-auth" && client_1.config.type !== "claudeai-proxy";
540841
542501
  }
540842
- function _temp287(client_0) {
542502
+ function _temp288(client_0) {
540843
542503
  return client_0.type === "failed" && client_0.config.type === "claudeai-proxy" && hasClaudeAiMcpEverConnected(client_0.name);
540844
542504
  }
540845
- function _temp208(client) {
542505
+ function _temp209(client) {
540846
542506
  return client.type === "failed" && client.config.type !== "sse-ide" && client.config.type !== "ws-ide" && client.config.type !== "claudeai-proxy";
540847
542507
  }
540848
542508
  var import_compiler_runtime352, import_react303, jsx_dev_runtime451, EMPTY_MCP_CLIENTS;
@@ -540905,7 +542565,7 @@ function useLspInitializationNotification() {
540905
542565
  addNotification
540906
542566
  } = useNotifications();
540907
542567
  const setAppState = useSetAppState();
540908
- const [shouldPoll, setShouldPoll] = React147.useState(_temp209);
542568
+ const [shouldPoll, setShouldPoll] = React147.useState(_temp224);
540909
542569
  let t0;
540910
542570
  if ($3[0] === Symbol.for("react.memo_cache_sentinel")) {
540911
542571
  t0 = new Set;
@@ -540924,7 +542584,7 @@ function useLspInitializationNotification() {
540924
542584
  notifiedErrorsRef.current.add(errorKey2);
540925
542585
  logForDebugging(`LSP error: ${source} - ${errorMessage4}`);
540926
542586
  setAppState((prev) => {
540927
- const existingKeys = new Set(prev.plugins.errors.map(_temp288));
542587
+ const existingKeys = new Set(prev.plugins.errors.map(_temp289));
540928
542588
  const stateErrorKey = `generic-error:${source}:${errorMessage4}`;
540929
542589
  if (existingKeys.has(stateErrorKey)) {
540930
542590
  return prev;
@@ -541026,13 +542686,13 @@ function useLspInitializationNotification() {
541026
542686
  }
541027
542687
  React147.useEffect(t3, t4);
541028
542688
  }
541029
- function _temp288(e) {
542689
+ function _temp289(e) {
541030
542690
  if (e.type === "generic-error") {
541031
542691
  return `generic-error:${e.source}:${e.error}`;
541032
542692
  }
541033
542693
  return `${e.type}:${e.source}`;
541034
542694
  }
541035
- function _temp209() {
542695
+ function _temp224() {
541036
542696
  return isEnvTruthy("true");
541037
542697
  }
541038
542698
  var import_compiler_runtime353, React147, jsx_dev_runtime452, LSP_POLL_INTERVAL_MS = 5000;
@@ -541364,7 +543024,7 @@ var init_usePluginRecommendationBase = __esm(() => {
541364
543024
  import { extname as extname16, join as join148 } from "path";
541365
543025
  function useLspPluginRecommendation() {
541366
543026
  const $3 = import_compiler_runtime355.c(12);
541367
- const trackedFiles = useAppState(_temp224);
543027
+ const trackedFiles = useAppState(_temp234);
541368
543028
  const {
541369
543029
  addNotification
541370
543030
  } = useNotifications();
@@ -541472,7 +543132,7 @@ function useLspPluginRecommendation() {
541472
543132
  break bb60;
541473
543133
  }
541474
543134
  case "disable": {
541475
- saveGlobalConfig(_temp289);
543135
+ saveGlobalConfig(_temp290);
541476
543136
  }
541477
543137
  }
541478
543138
  clearRecommendation();
@@ -541499,7 +543159,7 @@ function useLspPluginRecommendation() {
541499
543159
  }
541500
543160
  return t4;
541501
543161
  }
541502
- function _temp289(current) {
543162
+ function _temp290(current) {
541503
543163
  if (current.lspRecommendationDisabled) {
541504
543164
  return current;
541505
543165
  }
@@ -541508,7 +543168,7 @@ function _temp289(current) {
541508
543168
  lspRecommendationDisabled: true
541509
543169
  };
541510
543170
  }
541511
- function _temp224(s) {
543171
+ function _temp234(s) {
541512
543172
  return s.fileHistory.trackedFiles;
541513
543173
  }
541514
543174
  var import_compiler_runtime355, React149, TIMEOUT_THRESHOLD_MS = 28000;
@@ -541909,7 +543569,7 @@ function usePluginInstallationStatus() {
541909
543569
  const {
541910
543570
  addNotification
541911
543571
  } = useNotifications();
541912
- const installationStatus = useAppState(_temp234);
543572
+ const installationStatus = useAppState(_temp244);
541913
543573
  let t0;
541914
543574
  bb0: {
541915
543575
  if (!installationStatus) {
@@ -541929,7 +543589,7 @@ function usePluginInstallationStatus() {
541929
543589
  }
541930
543590
  let t12;
541931
543591
  if ($3[1] !== installationStatus.marketplaces) {
541932
- t12 = installationStatus.marketplaces.filter(_temp290);
543592
+ t12 = installationStatus.marketplaces.filter(_temp291);
541933
543593
  $3[1] = installationStatus.marketplaces;
541934
543594
  $3[2] = t12;
541935
543595
  } else {
@@ -541938,7 +543598,7 @@ function usePluginInstallationStatus() {
541938
543598
  const failedMarketplaces = t12;
541939
543599
  let t22;
541940
543600
  if ($3[3] !== installationStatus.plugins) {
541941
- t22 = installationStatus.plugins.filter(_temp356);
543601
+ t22 = installationStatus.plugins.filter(_temp357);
541942
543602
  $3[3] = installationStatus.plugins;
541943
543603
  $3[4] = t22;
541944
543604
  } else {
@@ -542029,13 +543689,13 @@ function usePluginInstallationStatus() {
542029
543689
  }
542030
543690
  import_react305.useEffect(t1, t2);
542031
543691
  }
542032
- function _temp356(p) {
543692
+ function _temp357(p) {
542033
543693
  return p.status === "failed";
542034
543694
  }
542035
- function _temp290(m2) {
543695
+ function _temp291(m2) {
542036
543696
  return m2.status === "failed";
542037
543697
  }
542038
- function _temp234(s) {
543698
+ function _temp244(s) {
542039
543699
  return s.plugins.installationStatus;
542040
543700
  }
542041
543701
  var import_compiler_runtime357, import_react305, jsx_dev_runtime456;
@@ -542096,7 +543756,7 @@ function usePluginAutoupdateNotification() {
542096
543756
  if (updatedPlugins.length === 0) {
542097
543757
  return;
542098
543758
  }
542099
- const pluginNames = updatedPlugins.map(_temp244);
543759
+ const pluginNames = updatedPlugins.map(_temp254);
542100
543760
  const displayNames = pluginNames.length <= 2 ? pluginNames.join(" and ") : `${pluginNames.length} plugins`;
542101
543761
  addNotification({
542102
543762
  key: "plugin-autoupdate-restart",
@@ -542133,7 +543793,7 @@ function usePluginAutoupdateNotification() {
542133
543793
  }
542134
543794
  import_react306.useEffect(t3, t4);
542135
543795
  }
542136
- function _temp244(id) {
543796
+ function _temp254(id) {
542137
543797
  const atIndex = id.indexOf("@");
542138
543798
  return atIndex > 0 ? id.substring(0, atIndex) : id;
542139
543799
  }
@@ -542474,7 +544134,7 @@ function AwsAuthStatusBox() {
542474
544134
  t4 = status2.output.length > 0 && /* @__PURE__ */ jsx_dev_runtime458.jsxDEV(ThemedBox_default, {
542475
544135
  flexDirection: "column",
542476
544136
  marginTop: 1,
542477
- children: status2.output.slice(-5).map(_temp254)
544137
+ children: status2.output.slice(-5).map(_temp292)
542478
544138
  }, undefined, false, undefined, this);
542479
544139
  $3[4] = status2.output;
542480
544140
  $3[5] = t4;
@@ -542517,7 +544177,7 @@ function AwsAuthStatusBox() {
542517
544177
  }
542518
544178
  return t6;
542519
544179
  }
542520
- function _temp254(line, index) {
544180
+ function _temp292(line, index) {
542521
544181
  const m2 = line.match(URL_RE);
542522
544182
  if (!m2) {
542523
544183
  return /* @__PURE__ */ jsx_dev_runtime458.jsxDEV(ThemedText, {
@@ -542831,7 +544491,7 @@ function useIDEStatusIndicator(t0) {
542831
544491
  if (hasShownHintRef.current || (getGlobalConfig().ideHintShownCount ?? 0) >= MAX_IDE_HINT_SHOW_COUNT) {
542832
544492
  return;
542833
544493
  }
542834
- const timeoutId = setTimeout(_temp291, 3000, hasShownHintRef, addNotification);
544494
+ const timeoutId = setTimeout(_temp293, 3000, hasShownHintRef, addNotification);
542835
544495
  return () => clearTimeout(timeoutId);
542836
544496
  };
542837
544497
  t3 = [addNotification, removeNotification, ideStatus, showJetBrainsInfo];
@@ -542936,12 +544596,12 @@ function useIDEStatusIndicator(t0) {
542936
544596
  }
542937
544597
  import_react310.useEffect(t8, t9);
542938
544598
  }
542939
- function _temp291(hasShownHintRef_0, addNotification_0) {
544599
+ function _temp293(hasShownHintRef_0, addNotification_0) {
542940
544600
  detectIDEs(true).then((infos) => {
542941
544601
  const ideName_0 = infos[0]?.name;
542942
544602
  if (ideName_0 && !hasShownHintRef_0.current) {
542943
544603
  hasShownHintRef_0.current = true;
542944
- saveGlobalConfig(_temp292);
544604
+ saveGlobalConfig(_temp294);
542945
544605
  addNotification_0({
542946
544606
  key: "ide-status-hint",
542947
544607
  jsx: /* @__PURE__ */ jsx_dev_runtime460.jsxDEV(ThemedText, {
@@ -542959,7 +544619,7 @@ function _temp291(hasShownHintRef_0, addNotification_0) {
542959
544619
  }
542960
544620
  });
542961
544621
  }
542962
- function _temp292(current) {
544622
+ function _temp294(current) {
542963
544623
  return {
542964
544624
  ...current,
542965
544625
  ideHintShownCount: (current.ideHintShownCount ?? 0) + 1
@@ -542980,9 +544640,9 @@ var init_useIDEStatusIndicator = __esm(() => {
542980
544640
 
542981
544641
  // src/hooks/notifs/useModelMigrationNotifications.tsx
542982
544642
  function useModelMigrationNotifications() {
542983
- useStartupNotification(_temp294);
544643
+ useStartupNotification(_temp295);
542984
544644
  }
542985
- function _temp294() {
544645
+ function _temp295() {
542986
544646
  const config5 = getGlobalConfig();
542987
544647
  const notifs = [];
542988
544648
  for (const migration of MIGRATIONS) {
@@ -543030,9 +544690,9 @@ var init_useModelMigrationNotifications = __esm(() => {
543030
544690
 
543031
544691
  // src/hooks/notifs/useCanSwitchToExistingSubscription.tsx
543032
544692
  function useCanSwitchToExistingSubscription() {
543033
- useStartupNotification(_temp293);
544693
+ useStartupNotification(_temp296);
543034
544694
  }
543035
- async function _temp293() {
544695
+ async function _temp296() {
543036
544696
  if ((getGlobalConfig().subscriptionNoticeCount ?? 0) >= MAX_SHOW_COUNT2) {
543037
544697
  return null;
543038
544698
  }
@@ -543040,7 +544700,7 @@ async function _temp293() {
543040
544700
  if (subscriptionType === null) {
543041
544701
  return null;
543042
544702
  }
543043
- saveGlobalConfig(_temp295);
544703
+ saveGlobalConfig(_temp297);
543044
544704
  logEvent("tengu_switch_to_subscription_notice_shown", {});
543045
544705
  return {
543046
544706
  key: "switch-to-subscription",
@@ -543063,7 +544723,7 @@ async function _temp293() {
543063
544723
  priority: "low"
543064
544724
  };
543065
544725
  }
543066
- function _temp295(current) {
544726
+ function _temp297(current) {
543067
544727
  return {
543068
544728
  ...current,
543069
544729
  subscriptionNoticeCount: (current.subscriptionNoticeCount ?? 0) + 1
@@ -543165,7 +544825,7 @@ function useFastModeNotification() {
543165
544825
  const {
543166
544826
  addNotification
543167
544827
  } = useNotifications();
543168
- const isFastMode = useAppState(_temp297);
544828
+ const isFastMode = useAppState(_temp299);
543169
544829
  const setAppState = useSetAppState();
543170
544830
  let t0;
543171
544831
  let t1;
@@ -543187,7 +544847,7 @@ function useFastModeNotification() {
543187
544847
  });
543188
544848
  } else {
543189
544849
  if (isFastMode) {
543190
- setAppState(_temp296);
544850
+ setAppState(_temp298);
543191
544851
  addNotification({
543192
544852
  key: ORG_CHANGED_KEY,
543193
544853
  color: "warning",
@@ -543220,7 +544880,7 @@ function useFastModeNotification() {
543220
544880
  return;
543221
544881
  }
543222
544882
  return onFastModeOverageRejection((message) => {
543223
- setAppState(_temp357);
544883
+ setAppState(_temp358);
543224
544884
  addNotification({
543225
544885
  key: OVERAGE_REJECTED_KEY,
543226
544886
  color: "warning",
@@ -543287,19 +544947,19 @@ function useFastModeNotification() {
543287
544947
  }
543288
544948
  import_react312.useEffect(t4, t5);
543289
544949
  }
543290
- function _temp357(prev_0) {
544950
+ function _temp358(prev_0) {
543291
544951
  return {
543292
544952
  ...prev_0,
543293
544953
  fastMode: false
543294
544954
  };
543295
544955
  }
543296
- function _temp296(prev) {
544956
+ function _temp298(prev) {
543297
544957
  return {
543298
544958
  ...prev,
543299
544959
  fastMode: false
543300
544960
  };
543301
544961
  }
543302
- function _temp297(s) {
544962
+ function _temp299(s) {
543303
544963
  return s.fastMode;
543304
544964
  }
543305
544965
  function getCooldownMessage(reason, resetIn) {
@@ -544484,7 +546144,7 @@ function AnimatedTerminalTitle(t0) {
544484
546144
  if (disabled || noPrefix || !isAnimating || !terminalFocused) {
544485
546145
  return;
544486
546146
  }
544487
- const interval = setInterval(_temp298, TITLE_ANIMATION_INTERVAL_MS, setFrame);
546147
+ const interval = setInterval(_temp2100, TITLE_ANIMATION_INTERVAL_MS, setFrame);
544488
546148
  return () => clearInterval(interval);
544489
546149
  };
544490
546150
  t2 = [disabled, noPrefix, isAnimating, terminalFocused];
@@ -544503,10 +546163,10 @@ function AnimatedTerminalTitle(t0) {
544503
546163
  useTerminalTitle(disabled ? null : noPrefix ? title : `${prefix} ${title}`);
544504
546164
  return null;
544505
546165
  }
544506
- function _temp298(setFrame_0) {
544507
- return setFrame_0(_temp299);
546166
+ function _temp2100(setFrame_0) {
546167
+ return setFrame_0(_temp300);
544508
546168
  }
544509
- function _temp299(f) {
546169
+ function _temp300(f) {
544510
546170
  return (f + 1) % TITLE_ANIMATION_FRAMES.length;
544511
546171
  }
544512
546172
  function REPL({
@@ -544911,7 +546571,12 @@ function REPL({
544911
546571
  onScrollAway(handle);
544912
546572
  if (false)
544913
546573
  ;
544914
- if (false) {}
546574
+ if (true) {
546575
+ setAppState((prev) => prev.companionReaction === undefined ? prev : {
546576
+ ...prev,
546577
+ companionReaction: undefined
546578
+ });
546579
+ }
544915
546580
  }
544916
546581
  }, [onRepin, onScrollAway, maybeLoadOlder, setAppState]);
544917
546582
  const awaitPendingHooks = useDeferredHookMessages(pendingHookMessages, setMessages);
@@ -545841,7 +547506,12 @@ Error: sandbox required but unavailable: ${reason}
545841
547506
  })) {
545842
547507
  onQueryEvent(event);
545843
547508
  }
545844
- if (false) {}
547509
+ if (true) {
547510
+ fireCompanionObserver(messagesRef.current, (reaction) => setAppState((prev) => prev.companionReaction === reaction ? prev : {
547511
+ ...prev,
547512
+ companionReaction: reaction
547513
+ }));
547514
+ }
545845
547515
  queryCheckpoint("query_end");
545846
547516
  if (false) {}
545847
547517
  resetLoadingState();
@@ -547088,7 +548758,7 @@ Note: ctrl + z now suspends myclaude, ctrl + _ undoes input.
547088
548758
  children: /* @__PURE__ */ jsx_dev_runtime465.jsxDEV(FullscreenLayout, {
547089
548759
  scrollRef,
547090
548760
  overlay: toolPermissionOverlay,
547091
- bottomFloat: undefined,
548761
+ bottomFloat: companionVisible && !companionNarrow ? /* @__PURE__ */ jsx_dev_runtime465.jsxDEV(CompanionFloatingBubble, {}, undefined, false, undefined, this) : undefined,
547092
548762
  modal: centeredModal,
547093
548763
  modalScrollRef,
547094
548764
  dividerYRef,
@@ -547167,11 +548837,11 @@ Note: ctrl + z now suspends myclaude, ctrl + _ undoes input.
547167
548837
  ]
547168
548838
  }, undefined, true, undefined, this),
547169
548839
  bottom: /* @__PURE__ */ jsx_dev_runtime465.jsxDEV(ThemedBox_default, {
547170
- flexDirection: "row",
548840
+ flexDirection: companionNarrow ? "column" : "row",
547171
548841
  width: "100%",
547172
- alignItems: "flex-end",
548842
+ alignItems: companionNarrow ? undefined : "flex-end",
547173
548843
  children: [
547174
- null,
548844
+ companionNarrow && isFullscreenEnvEnabled() && companionVisible ? /* @__PURE__ */ jsx_dev_runtime465.jsxDEV(CompanionSprite, {}, undefined, false, undefined, this) : null,
547175
548845
  /* @__PURE__ */ jsx_dev_runtime465.jsxDEV(ThemedBox_default, {
547176
548846
  flexDirection: "column",
547177
548847
  flexGrow: 1,
@@ -547620,7 +549290,7 @@ Note: ctrl + z now suspends myclaude, ctrl + _ undoes input.
547620
549290
  false
547621
549291
  ]
547622
549292
  }, undefined, true, undefined, this),
547623
- null
549293
+ !(companionNarrow && isFullscreenEnvEnabled()) && companionVisible ? /* @__PURE__ */ jsx_dev_runtime465.jsxDEV(CompanionSprite, {}, undefined, false, undefined, this) : null
547624
549294
  ]
547625
549295
  }, undefined, true, undefined, this)
547626
549296
  }, undefined, false, undefined, this)
@@ -548289,7 +549959,7 @@ function MCPServerMultiselectDialog(t0) {
548289
549959
  }
548290
549960
  let t5;
548291
549961
  if ($3[7] !== serverNames) {
548292
- t5 = serverNames.map(_temp300);
549962
+ t5 = serverNames.map(_temp301);
548293
549963
  $3[7] = serverNames;
548294
549964
  $3[8] = t5;
548295
549965
  } else {
@@ -548378,7 +550048,7 @@ function MCPServerMultiselectDialog(t0) {
548378
550048
  }
548379
550049
  return t9;
548380
550050
  }
548381
- function _temp300(server_0) {
550051
+ function _temp301(server_0) {
548382
550052
  return {
548383
550053
  label: server_0,
548384
550054
  value: server_0
@@ -548683,7 +550353,7 @@ function PreflightStep(t0) {
548683
550353
  onSuccess();
548684
550354
  } else {
548685
550355
  if (result && !result.success) {
548686
- const timer = setTimeout(_temp301, 100);
550356
+ const timer = setTimeout(_temp302, 100);
548687
550357
  return () => clearTimeout(timer);
548688
550358
  }
548689
550359
  }
@@ -548775,7 +550445,7 @@ function PreflightStep(t0) {
548775
550445
  }
548776
550446
  return t6;
548777
550447
  }
548778
- function _temp301() {
550448
+ function _temp302() {
548779
550449
  return process.exit(1);
548780
550450
  }
548781
550451
  var import_compiler_runtime371, import_react321, jsx_dev_runtime471;
@@ -550622,7 +552292,7 @@ function TrustDialog(t0) {
550622
552292
  const hasDangerousEnvVars2 = dangerousEnvVarsSources.length > 0;
550623
552293
  let t10;
550624
552294
  if ($3[9] !== commands) {
550625
- t10 = commands?.some(_temp2100) ?? false;
552295
+ t10 = commands?.some(_temp2102) ?? false;
550626
552296
  $3[9] = commands;
550627
552297
  $3[10] = t10;
550628
552298
  } else {
@@ -550843,15 +552513,15 @@ function _temp530(current) {
550843
552513
  };
550844
552514
  }
550845
552515
  function _temp443(command_0) {
550846
- return command_0.type === "prompt" && (command_0.loadedFrom === "skills" || command_0.loadedFrom === "plugin") && (command_0.source === "projectSettings" || command_0.source === "localSettings" || command_0.source === "plugin") && command_0.allowedTools?.some(_temp358);
552516
+ return command_0.type === "prompt" && (command_0.loadedFrom === "skills" || command_0.loadedFrom === "plugin") && (command_0.source === "projectSettings" || command_0.source === "localSettings" || command_0.source === "plugin") && command_0.allowedTools?.some(_temp359);
550847
552517
  }
550848
- function _temp358(tool_0) {
552518
+ function _temp359(tool_0) {
550849
552519
  return tool_0 === BASH_TOOL_NAME || tool_0.startsWith(BASH_TOOL_NAME + "(");
550850
552520
  }
550851
- function _temp2100(command8) {
550852
- return command8.type === "prompt" && command8.loadedFrom === "commands_DEPRECATED" && (command8.source === "projectSettings" || command8.source === "localSettings") && command8.allowedTools?.some(_temp302);
552521
+ function _temp2102(command8) {
552522
+ return command8.type === "prompt" && command8.loadedFrom === "commands_DEPRECATED" && (command8.source === "projectSettings" || command8.source === "localSettings") && command8.allowedTools?.some(_temp303);
550853
552523
  }
550854
- function _temp302(tool) {
552524
+ function _temp303(tool) {
550855
552525
  return tool === BASH_TOOL_NAME || tool.startsWith(BASH_TOOL_NAME + "(");
550856
552526
  }
550857
552527
  var import_compiler_runtime377, import_react325, jsx_dev_runtime477;
@@ -550891,7 +552561,7 @@ function BypassPermissionsModeDialog(t0) {
550891
552561
  } else {
550892
552562
  t1 = $3[0];
550893
552563
  }
550894
- import_react326.default.useEffect(_temp303, t1);
552564
+ import_react326.default.useEffect(_temp304, t1);
550895
552565
  let t2;
550896
552566
  if ($3[1] !== onAccept) {
550897
552567
  t2 = function onChange2(value) {
@@ -550916,7 +552586,7 @@ function BypassPermissionsModeDialog(t0) {
550916
552586
  t2 = $3[2];
550917
552587
  }
550918
552588
  const onChange = t2;
550919
- const handleEscape = _temp2102;
552589
+ const handleEscape = _temp2103;
550920
552590
  let t3;
550921
552591
  if ($3[3] === Symbol.for("react.memo_cache_sentinel")) {
550922
552592
  t3 = /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
@@ -550976,10 +552646,10 @@ function BypassPermissionsModeDialog(t0) {
550976
552646
  }
550977
552647
  return t5;
550978
552648
  }
550979
- function _temp2102() {
552649
+ function _temp2103() {
550980
552650
  gracefulShutdownSync(0);
550981
552651
  }
550982
- function _temp303() {
552652
+ function _temp304() {
550983
552653
  logEvent("tengu_bypass_permissions_mode_dialog_shown", {});
550984
552654
  }
550985
552655
  var import_compiler_runtime378, import_react326, jsx_dev_runtime478;
@@ -551012,7 +552682,7 @@ function ClaudeInChromeOnboarding(t0) {
551012
552682
  t1 = () => {
551013
552683
  logEvent("tengu_claude_in_chrome_onboarding_shown", {});
551014
552684
  isChromeExtensionInstalled().then(setIsExtensionInstalled);
551015
- saveGlobalConfig(_temp304);
552685
+ saveGlobalConfig(_temp305);
551016
552686
  };
551017
552687
  t2 = [];
551018
552688
  $3[0] = t1;
@@ -551161,7 +552831,7 @@ function ClaudeInChromeOnboarding(t0) {
551161
552831
  }
551162
552832
  return t11;
551163
552833
  }
551164
- function _temp304(current) {
552834
+ function _temp305(current) {
551165
552835
  return {
551166
552836
  ...current,
551167
552837
  hasCompletedClaudeInChromeOnboarding: true
@@ -552236,7 +553906,7 @@ function TeleportRepoMismatchDialog(t0) {
552236
553906
  } else {
552237
553907
  t32 = $3[7];
552238
553908
  }
552239
- t2 = [...availablePaths.map(_temp305), t32];
553909
+ t2 = [...availablePaths.map(_temp306), t32];
552240
553910
  $3[5] = availablePaths;
552241
553911
  $3[6] = t2;
552242
553912
  } else {
@@ -552322,7 +553992,7 @@ function TeleportRepoMismatchDialog(t0) {
552322
553992
  }
552323
553993
  return t4;
552324
553994
  }
552325
- function _temp305(path24) {
553995
+ function _temp306(path24) {
552326
553996
  return {
552327
553997
  label: /* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
552328
553998
  children: [
@@ -552618,7 +554288,7 @@ function NoConversationsMessage() {
552618
554288
  } else {
552619
554289
  t0 = $3[0];
552620
554290
  }
552621
- useKeybinding("app:interrupt", _temp306, t0);
554291
+ useKeybinding("app:interrupt", _temp307, t0);
552622
554292
  let t1;
552623
554293
  if ($3[1] === Symbol.for("react.memo_cache_sentinel")) {
552624
554294
  t1 = /* @__PURE__ */ jsx_dev_runtime485.jsxDEV(ThemedBox_default, {
@@ -552639,7 +554309,7 @@ function NoConversationsMessage() {
552639
554309
  }
552640
554310
  return t1;
552641
554311
  }
552642
- function _temp306() {
554312
+ function _temp307() {
552643
554313
  process.exit(1);
552644
554314
  }
552645
554315
  function CrossProjectMessage(t0) {
@@ -552654,7 +554324,7 @@ function CrossProjectMessage(t0) {
552654
554324
  } else {
552655
554325
  t1 = $3[0];
552656
554326
  }
552657
- import_react332.default.useEffect(_temp359, t1);
554327
+ import_react332.default.useEffect(_temp360, t1);
552658
554328
  let t2;
552659
554329
  if ($3[1] === Symbol.for("react.memo_cache_sentinel")) {
552660
554330
  t2 = /* @__PURE__ */ jsx_dev_runtime485.jsxDEV(ThemedText, {
@@ -552720,11 +554390,11 @@ function CrossProjectMessage(t0) {
552720
554390
  }
552721
554391
  return t6;
552722
554392
  }
552723
- function _temp359() {
552724
- const timeout2 = setTimeout(_temp2103, 100);
554393
+ function _temp360() {
554394
+ const timeout2 = setTimeout(_temp2104, 100);
552725
554395
  return () => clearTimeout(timeout2);
552726
554396
  }
552727
- function _temp2103() {
554397
+ function _temp2104() {
552728
554398
  process.exit(0);
552729
554399
  }
552730
554400
  var import_compiler_runtime384, import_react332, jsx_dev_runtime485;
@@ -553115,7 +554785,7 @@ Now that this skill is invoked, you have access to Chrome browser automation too
553115
554785
  IMPORTANT: Start by calling mcp__claude-in-chrome__tabs_context_mcp to get information about the user's current browser tabs.
553116
554786
  `;
553117
554787
  var init_claudeInChrome = __esm(() => {
553118
- init_claude_for_chrome_mcp();
554788
+ init_ant_claude_for_chrome_mcp();
553119
554789
  init_setup2();
553120
554790
  init_bundledSkills();
553121
554791
  CLAUDE_IN_CHROME_MCP_TOOLS = BROWSER_TOOLS.map((tool) => `mcp__claude-in-chrome__${tool.name}`);
@@ -555603,7 +557273,7 @@ var init_resetProToOpusDefault = __esm(() => {
555603
557273
 
555604
557274
  // src/server/types.ts
555605
557275
  var connectResponseSchema;
555606
- var init_types15 = __esm(() => {
557276
+ var init_types16 = __esm(() => {
555607
557277
  init_v4();
555608
557278
  connectResponseSchema = lazySchema(() => exports_external.object({
555609
557279
  session_id: exports_external.string(),
@@ -555616,7 +557286,7 @@ var init_types15 = __esm(() => {
555616
557286
  var init_createDirectConnectSession = __esm(() => {
555617
557287
  init_errors();
555618
557288
  init_slowOperations();
555619
- init_types15();
557289
+ init_types16();
555620
557290
  });
555621
557291
 
555622
557292
  // src/utils/errorLogSink.ts
@@ -566895,7 +568565,7 @@ function SetupNotes(t0) {
566895
568565
  }
566896
568566
  let t2;
566897
568567
  if ($3[1] !== messages) {
566898
- t2 = messages.map(_temp307);
568568
+ t2 = messages.map(_temp308);
566899
568569
  $3[1] = messages;
566900
568570
  $3[2] = t2;
566901
568571
  } else {
@@ -566919,7 +568589,7 @@ function SetupNotes(t0) {
566919
568589
  }
566920
568590
  return t3;
566921
568591
  }
566922
- function _temp307(message, index) {
568592
+ function _temp308(message, index) {
566923
568593
  return /* @__PURE__ */ jsx_dev_runtime490.jsxDEV(ThemedBox_default, {
566924
568594
  marginLeft: 2,
566925
568595
  children: /* @__PURE__ */ jsx_dev_runtime490.jsxDEV(ThemedText, {