@funnycode/myclaude 0.1.188 → 0.1.189

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.188",
8
- BUILD_TIME: "2026-08-10T04:46:10.739Z",
7
+ VERSION: "0.1.189",
8
+ BUILD_TIME: "2026-08-10T05:51:52.016Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -60395,6 +60395,11 @@ var init_types4 = __esm(() => {
60395
60395
  command: exports_external.string()
60396
60396
  }).optional().describe("Custom file suggestion configuration for @ mentions"),
60397
60397
  respectGitignore: exports_external.boolean().optional().describe("Whether file picker should respect .gitignore files (default: true). " + "Note: .ignore files are always respected."),
60398
+ instructionProfiles: exports_external.array(exports_external.object({
60399
+ name: exports_external.string().min(1).describe("Profile name shown in /profiles and match diagnostics"),
60400
+ content: exports_external.string().describe("Instruction text injected into the system prompt when matched"),
60401
+ condition: exports_external.string().optional().describe('Optional glob condition on the current working directory (e.g. "**/tests/**"). Omitted = always apply.')
60402
+ })).optional().describe("Custom instruction profiles (personas) applied per project/path. " + "Matched profile contents are injected into the system prompt."),
60398
60403
  cleanupPeriodDays: exports_external.number().nonnegative().int().optional().describe("Number of days to retain chat transcripts (default: 30). Setting to 0 disables session persistence entirely: no transcripts are written and existing transcripts are deleted at startup."),
60399
60404
  env: EnvironmentVariablesSchema().optional().describe("Environment variables to set for Claude Code sessions"),
60400
60405
  attribution: exports_external.object({
@@ -117152,7 +117157,7 @@ var package_default;
117152
117157
  var init_package = __esm(() => {
117153
117158
  package_default = {
117154
117159
  name: "@funnycode/myclaude",
117155
- version: "0.1.188",
117160
+ version: "0.1.189",
117156
117161
  private: false,
117157
117162
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
117158
117163
  license: "MIT",
@@ -206592,6 +206597,49 @@ var init_gitSettings = __esm(() => {
206592
206597
  init_settings2();
206593
206598
  });
206594
206599
 
206600
+ // src/utils/instructionProfiles.ts
206601
+ function getMatchedInstructionProfiles() {
206602
+ const profiles = getInitialSettings().instructionProfiles;
206603
+ if (!profiles || profiles.length === 0) {
206604
+ return [];
206605
+ }
206606
+ const cwd2 = getCwd().replace(/\\/g, "/");
206607
+ const matched = [];
206608
+ for (const profile of profiles) {
206609
+ const condition = profile.condition?.trim();
206610
+ if (!condition) {
206611
+ matched.push(profile);
206612
+ continue;
206613
+ }
206614
+ try {
206615
+ if (import_picomatch2.default.isMatch(cwd2, condition)) {
206616
+ matched.push(profile);
206617
+ }
206618
+ } catch {}
206619
+ }
206620
+ return matched;
206621
+ }
206622
+ function buildInstructionProfilesPrompt() {
206623
+ const matched = getMatchedInstructionProfiles();
206624
+ if (matched.length === 0) {
206625
+ return null;
206626
+ }
206627
+ const sections = matched.map((profile) => `## Instruction Profile: ${profile.name}
206628
+
206629
+ ${profile.content}`).join(`
206630
+
206631
+ `);
206632
+ return `The user has enabled the following custom instruction profiles:
206633
+
206634
+ ${sections}`;
206635
+ }
206636
+ var import_picomatch2;
206637
+ var init_instructionProfiles = __esm(() => {
206638
+ init_cwd2();
206639
+ init_settings2();
206640
+ import_picomatch2 = __toESM(require_picomatch2(), 1);
206641
+ });
206642
+
206595
206643
  // src/context.ts
206596
206644
  function setSystemPromptInjection(value) {
206597
206645
  systemPromptInjection = value;
@@ -206610,6 +206658,7 @@ var init_context2 = __esm(() => {
206610
206658
  init_git();
206611
206659
  init_gitSettings();
206612
206660
  init_log3();
206661
+ init_instructionProfiles();
206613
206662
  getGitStatus = memoize_default(async () => {
206614
206663
  if (false) {}
206615
206664
  const startTime = Date.now();
@@ -206699,6 +206748,7 @@ ${log2}`
206699
206748
  });
206700
206749
  return {
206701
206750
  ...claudeMd && { claudeMd },
206751
+ ...buildInstructionProfilesPrompt() !== null ? { instructionProfiles: buildInstructionProfilesPrompt() } : {},
206702
206752
  currentDate: `Today's date is ${getLocalISODate()}.`
206703
206753
  };
206704
206754
  });
@@ -481514,6 +481564,58 @@ var init_rewind2 = __esm(() => {
481514
481564
  rewind_default = rewind;
481515
481565
  });
481516
481566
 
481567
+ // src/commands/profiles/profiles.ts
481568
+ var exports_profiles = {};
481569
+ __export(exports_profiles, {
481570
+ call: () => call54
481571
+ });
481572
+ function formatProfile(profile) {
481573
+ const condition = profile.condition ? ` (condition: ${profile.condition})` : "";
481574
+ return ` • ${profile.name}${condition}
481575
+ ${profile.content.split(`
481576
+ `)[0]?.slice(0, 80) ?? ""}`;
481577
+ }
481578
+ async function call54(_args, _context) {
481579
+ const profiles = getMatchedInstructionProfiles();
481580
+ if (profiles.length === 0) {
481581
+ return {
481582
+ type: "text",
481583
+ value: `No instruction profiles are active.
481584
+
481585
+ ` + `Configure profiles in settings.json under "instructionProfiles":
481586
+ ` + ` [
481587
+ ` + ` { "name": "Backend", "content": "...", "condition": "**/src/**" }
481588
+ ` + ` ]
481589
+ ` + 'Profiles without a "condition" always apply; with one, they apply ' + "only when the current directory matches the glob."
481590
+ };
481591
+ }
481592
+ const lines2 = profiles.map(formatProfile);
481593
+ return {
481594
+ type: "text",
481595
+ value: `Active instruction profiles (${profiles.length}):
481596
+
481597
+ ${lines2.join(`
481598
+ `)}`
481599
+ };
481600
+ }
481601
+ var init_profiles = __esm(() => {
481602
+ init_instructionProfiles();
481603
+ });
481604
+
481605
+ // src/commands/profiles/index.ts
481606
+ var profiles, profiles_default;
481607
+ var init_profiles2 = __esm(() => {
481608
+ profiles = {
481609
+ type: "local",
481610
+ name: "profiles",
481611
+ description: "Show active custom instruction profiles",
481612
+ argumentHint: "",
481613
+ supportsNonInteractive: true,
481614
+ load: () => Promise.resolve().then(() => (init_profiles(), exports_profiles))
481615
+ };
481616
+ profiles_default = profiles;
481617
+ });
481618
+
481517
481619
  // src/utils/heapDumpService.ts
481518
481620
  import { createWriteStream as createWriteStream4, writeFileSync as writeFileSync8 } from "fs";
481519
481621
  import { readdir as readdir26, readFile as readFile45, writeFile as writeFile37 } from "fs/promises";
@@ -481678,9 +481780,9 @@ var init_heapDumpService = __esm(() => {
481678
481780
  // src/commands/heapdump/heapdump.ts
481679
481781
  var exports_heapdump = {};
481680
481782
  __export(exports_heapdump, {
481681
- call: () => call54
481783
+ call: () => call55
481682
481784
  });
481683
- async function call54() {
481785
+ async function call55() {
481684
481786
  const result = await performHeapDump();
481685
481787
  if (!result.success) {
481686
481788
  return {
@@ -482051,7 +482153,7 @@ var USAGE = `/bridge-kick <subcommand>
482051
482153
  reconnect-session fail next POST /bridge/reconnect fails
482052
482154
  heartbeat <status> next heartbeat throws BridgeFatalError(status)
482053
482155
  reconnect call reconnectEnvironmentWithSession directly
482054
- status print bridge state`, call55 = async (args) => {
482156
+ status print bridge state`, call56 = async (args) => {
482055
482157
  const h2 = getBridgeDebugHandle();
482056
482158
  if (!h2) {
482057
482159
  return {
@@ -482184,13 +482286,13 @@ var init_bridge_kick = __esm(() => {
482184
482286
  description: "Inject bridge failure states for manual recovery testing",
482185
482287
  isEnabled: () => process.env.USER_TYPE === "ant",
482186
482288
  supportsNonInteractive: false,
482187
- load: () => Promise.resolve({ call: call55 })
482289
+ load: () => Promise.resolve({ call: call56 })
482188
482290
  };
482189
482291
  bridge_kick_default = bridgeKick;
482190
482292
  });
482191
482293
 
482192
482294
  // src/commands/version.ts
482193
- var call56 = async () => {
482295
+ var call57 = async () => {
482194
482296
  return {
482195
482297
  type: "text",
482196
482298
  value: MACRO.BUILD_TIME ? `${MACRO.VERSION} (built ${MACRO.BUILD_TIME})` : MACRO.VERSION
@@ -482203,7 +482305,7 @@ var init_version = __esm(() => {
482203
482305
  description: "Print the version this session is running (not what autoupdate downloaded)",
482204
482306
  isEnabled: () => process.env.USER_TYPE === "ant",
482205
482307
  supportsNonInteractive: true,
482206
- load: () => Promise.resolve({ call: call56 })
482308
+ load: () => Promise.resolve({ call: call57 })
482207
482309
  };
482208
482310
  version_default = version2;
482209
482311
  });
@@ -482217,7 +482319,7 @@ var init_summary = __esm(() => {
482217
482319
  // src/commands/achievements/achievements.ts
482218
482320
  var exports_achievements = {};
482219
482321
  __export(exports_achievements, {
482220
- call: () => call57
482322
+ call: () => call58
482221
482323
  });
482222
482324
  function handleSummary() {
482223
482325
  const unlocked = getUnlockedAchievements();
@@ -482269,7 +482371,7 @@ function handleListAll() {
482269
482371
  return { type: "text", value: lines2.join(`
482270
482372
  `) };
482271
482373
  }
482272
- var call57 = async (args) => {
482374
+ var call58 = async (args) => {
482273
482375
  const sub = args.trim().toLowerCase();
482274
482376
  if (sub === "list" || sub === "all") {
482275
482377
  return handleListAll();
@@ -482448,9 +482550,9 @@ var init_tips = __esm(() => {
482448
482550
  // src/commands/mystats/mystats.ts
482449
482551
  var exports_mystats = {};
482450
482552
  __export(exports_mystats, {
482451
- call: () => call58
482553
+ call: () => call59
482452
482554
  });
482453
- var call58 = async () => {
482555
+ var call59 = async () => {
482454
482556
  const stats = getUsageStats();
482455
482557
  const companion = getCompanion();
482456
482558
  const unlocked = getUnlockedAchievements();
@@ -483693,10 +483795,10 @@ var init_SandboxSettings = __esm(() => {
483693
483795
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
483694
483796
  var exports_sandbox_toggle = {};
483695
483797
  __export(exports_sandbox_toggle, {
483696
- call: () => call59
483798
+ call: () => call60
483697
483799
  });
483698
483800
  import { relative as relative29 } from "path";
483699
- async function call59(onDone, _context, args) {
483801
+ async function call60(onDone, _context, args) {
483700
483802
  const settings = getSettings_DEPRECATED();
483701
483803
  const themeName = settings.theme || "light";
483702
483804
  const platform5 = getPlatform();
@@ -484078,7 +484180,7 @@ var init_setup2 = __esm(() => {
484078
484180
  // src/commands/chrome/chrome.tsx
484079
484181
  var exports_chrome = {};
484080
484182
  __export(exports_chrome, {
484081
- call: () => call60
484183
+ call: () => call61
484082
484184
  });
484083
484185
  function ClaudeInChromeMenu(t0) {
484084
484186
  const $3 = import_compiler_runtime267.c(41);
@@ -484445,7 +484547,7 @@ function _temp271(c6) {
484445
484547
  function _temp159(s) {
484446
484548
  return s.mcp.clients;
484447
484549
  }
484448
- 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) {
484550
+ 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", call61 = async function(onDone) {
484449
484551
  const isExtensionInstalled = await isChromeExtensionInstalled();
484450
484552
  const config5 = getGlobalConfig();
484451
484553
  const isSubscriber = isClaudeAISubscriber();
@@ -484493,9 +484595,9 @@ var init_chrome2 = __esm(() => {
484493
484595
  // src/commands/stickers/stickers.ts
484494
484596
  var exports_stickers = {};
484495
484597
  __export(exports_stickers, {
484496
- call: () => call61
484598
+ call: () => call62
484497
484599
  });
484498
- async function call61() {
484600
+ async function call62() {
484499
484601
  const url3 = "https://www.stickermule.com/claudecode";
484500
484602
  const success2 = await openBrowser(url3);
484501
484603
  if (success2) {
@@ -484525,7 +484627,7 @@ var init_stickers2 = __esm(() => {
484525
484627
  });
484526
484628
 
484527
484629
  // src/commands/advisor.ts
484528
- var call62 = async (args, context2) => {
484630
+ var call63 = async (args, context2) => {
484529
484631
  const arg = args.trim().toLowerCase();
484530
484632
  const baseModel = parseUserSpecifiedModel(context2.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
484531
484633
  if (!arg) {
@@ -484611,7 +484713,7 @@ var init_advisor2 = __esm(() => {
484611
484713
  return !canUserConfigureAdvisor();
484612
484714
  },
484613
484715
  supportsNonInteractive: true,
484614
- load: () => Promise.resolve({ call: call62 })
484716
+ load: () => Promise.resolve({ call: call63 })
484615
484717
  };
484616
484718
  advisor_default = advisor;
484617
484719
  });
@@ -484951,7 +485053,7 @@ function formatEntry(content) {
484951
485053
  ${content.trim()}
484952
485054
  `;
484953
485055
  }
484954
- var call63 = async (args) => {
485056
+ var call64 = async (args) => {
484955
485057
  const text2 = args.trim();
484956
485058
  if (!text2) {
484957
485059
  return {
@@ -484992,7 +485094,7 @@ var init_remember = __esm(() => {
484992
485094
  description: "Save important information to memory for reuse in future sessions",
484993
485095
  argumentHint: "<what to remember>",
484994
485096
  supportsNonInteractive: true,
484995
- load: async () => ({ call: call63 })
485097
+ load: async () => ({ call: call64 })
484996
485098
  };
484997
485099
  remember_default = remember;
484998
485100
  });
@@ -485406,12 +485508,12 @@ var init_ExitFlow = __esm(() => {
485406
485508
  // src/commands/exit/exit.tsx
485407
485509
  var exports_exit = {};
485408
485510
  __export(exports_exit, {
485409
- call: () => call64
485511
+ call: () => call65
485410
485512
  });
485411
485513
  function getRandomGoodbyeMessage2() {
485412
485514
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
485413
485515
  }
485414
- async function call64(onDone) {
485516
+ async function call65(onDone) {
485415
485517
  if (false) {}
485416
485518
  const showWorktree = getCurrentWorktreeSession() !== null;
485417
485519
  if (showWorktree) {
@@ -485705,7 +485807,7 @@ var exports_export = {};
485705
485807
  __export(exports_export, {
485706
485808
  sanitizeFilename: () => sanitizeFilename,
485707
485809
  extractFirstPrompt: () => extractFirstPrompt,
485708
- call: () => call65
485810
+ call: () => call66
485709
485811
  });
485710
485812
  import { join as join135 } from "path";
485711
485813
  function formatTimestamp(date6) {
@@ -485746,7 +485848,7 @@ async function exportWithReactRenderer(context2) {
485746
485848
  const tools = context2.options.tools || [];
485747
485849
  return renderMessagesToPlainText(context2.messages, tools);
485748
485850
  }
485749
- async function call65(onDone, context2, args) {
485851
+ async function call66(onDone, context2, args) {
485750
485852
  const content = await exportWithReactRenderer(context2);
485751
485853
  const filename = args.trim();
485752
485854
  if (filename) {
@@ -485806,7 +485908,7 @@ var init_export2 = __esm(() => {
485806
485908
  // src/commands/model/model.tsx
485807
485909
  var exports_model2 = {};
485808
485910
  __export(exports_model2, {
485809
- call: () => call66
485911
+ call: () => call67
485810
485912
  });
485811
485913
  function ModelPickerWrapper(t0) {
485812
485914
  const $3 = import_compiler_runtime269.c(17);
@@ -486054,7 +486156,7 @@ function renderModelLabel(model) {
486054
486156
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
486055
486157
  return model === null ? `${rendered} (default)` : rendered;
486056
486158
  }
486057
- var import_compiler_runtime269, React107, jsx_dev_runtime347, call66 = async (onDone, _context, args) => {
486159
+ var import_compiler_runtime269, React107, jsx_dev_runtime347, call67 = async (onDone, _context, args) => {
486058
486160
  args = args?.trim() || "";
486059
486161
  if (COMMON_INFO_ARGS.includes(args)) {
486060
486162
  logEvent("tengu_model_command_inline_help", {
@@ -486123,7 +486225,7 @@ var init_model3 = __esm(() => {
486123
486225
  // src/commands/tag/tag.tsx
486124
486226
  var exports_tag = {};
486125
486227
  __export(exports_tag, {
486126
- call: () => call67
486228
+ call: () => call68
486127
486229
  });
486128
486230
  function ConfirmRemoveTag(t0) {
486129
486231
  const $3 = import_compiler_runtime270.c(11);
@@ -486347,7 +486449,7 @@ Examples:
486347
486449
  React108.useEffect(t1, t2);
486348
486450
  return null;
486349
486451
  }
486350
- async function call67(onDone, _context, args) {
486452
+ async function call68(onDone, _context, args) {
486351
486453
  args = args?.trim() || "";
486352
486454
  if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
486353
486455
  return /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ShowHelp, {
@@ -486395,9 +486497,9 @@ var init_tag2 = __esm(() => {
486395
486497
  // src/commands/output-style/output-style.tsx
486396
486498
  var exports_output_style = {};
486397
486499
  __export(exports_output_style, {
486398
- call: () => call68
486500
+ call: () => call69
486399
486501
  });
486400
- async function call68(onDone) {
486502
+ async function call69(onDone) {
486401
486503
  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.", {
486402
486504
  display: "system"
486403
486505
  });
@@ -486916,9 +487018,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
486916
487018
  // src/commands/remote-env/remote-env.tsx
486917
487019
  var exports_remote_env = {};
486918
487020
  __export(exports_remote_env, {
486919
- call: () => call69
487021
+ call: () => call70
486920
487022
  });
486921
- async function call69(onDone) {
487023
+ async function call70(onDone) {
486922
487024
  return /* @__PURE__ */ jsx_dev_runtime350.jsxDEV(RemoteEnvironmentDialog, {
486923
487025
  onDone
486924
487026
  }, undefined, false, undefined, this);
@@ -486948,9 +487050,9 @@ var init_remote_env2 = __esm(() => {
486948
487050
  // src/commands/upgrade/upgrade.tsx
486949
487051
  var exports_upgrade = {};
486950
487052
  __export(exports_upgrade, {
486951
- call: () => call70
487053
+ call: () => call71
486952
487054
  });
486953
- async function call70(onDone, context2) {
487055
+ async function call71(onDone, context2) {
486954
487056
  try {
486955
487057
  if (isClaudeAISubscriber()) {
486956
487058
  const tokens = getClaudeAIOAuthTokens();
@@ -487010,7 +487112,7 @@ var init_upgrade2 = __esm(() => {
487010
487112
  // src/commands/rate-limit-options/rate-limit-options.tsx
487011
487113
  var exports_rate_limit_options = {};
487012
487114
  __export(exports_rate_limit_options, {
487013
- call: () => call71
487115
+ call: () => call72
487014
487116
  });
487015
487117
  function RateLimitOptionsMenu(t0) {
487016
487118
  const $3 = import_compiler_runtime272.c(25);
@@ -487144,7 +487246,7 @@ function RateLimitOptionsMenu(t0) {
487144
487246
  t5 = function handleSelect2(value) {
487145
487247
  if (value === "upgrade") {
487146
487248
  logEvent("tengu_rate_limit_options_menu_select_upgrade", {});
487147
- call70(onDone, context2).then((jsx) => {
487249
+ call71(onDone, context2).then((jsx) => {
487148
487250
  if (jsx) {
487149
487251
  setSubCommandJSX(jsx);
487150
487252
  }
@@ -487204,7 +487306,7 @@ function RateLimitOptionsMenu(t0) {
487204
487306
  }
487205
487307
  return t7;
487206
487308
  }
487207
- async function call71(onDone, context2) {
487309
+ async function call72(onDone, context2) {
487208
487310
  return /* @__PURE__ */ jsx_dev_runtime352.jsxDEV(RateLimitOptionsMenu, {
487209
487311
  onDone,
487210
487312
  context: context2
@@ -487278,7 +487380,7 @@ var exports_effort = {};
487278
487380
  __export(exports_effort, {
487279
487381
  showCurrentEffort: () => showCurrentEffort,
487280
487382
  executeEffort: () => executeEffort,
487281
- call: () => call72
487383
+ call: () => call73
487282
487384
  });
487283
487385
  function setEffortValue(effortValue) {
487284
487386
  const persistable = toPersistableEffort(effortValue);
@@ -487429,7 +487531,7 @@ function ApplyEffortAndClose(t0) {
487429
487531
  React110.useEffect(t1, t2);
487430
487532
  return null;
487431
487533
  }
487432
- async function call72(onDone, _context, args) {
487534
+ async function call73(onDone, _context, args) {
487433
487535
  args = args?.trim() || "";
487434
487536
  if (COMMON_HELP_ARGS2.includes(args)) {
487435
487537
  onDone(`Usage: /effort [low|medium|high|max|auto]
@@ -490338,9 +490440,9 @@ var init_Stats = __esm(() => {
490338
490440
  // src/commands/stats/stats.tsx
490339
490441
  var exports_stats = {};
490340
490442
  __export(exports_stats, {
490341
- call: () => call73
490443
+ call: () => call74
490342
490444
  });
490343
- var jsx_dev_runtime355, call73 = async (onDone) => {
490445
+ var jsx_dev_runtime355, call74 = async (onDone) => {
490344
490446
  return /* @__PURE__ */ jsx_dev_runtime355.jsxDEV(Stats2, {
490345
490447
  onClose: onDone
490346
490448
  }, undefined, false, undefined, this);
@@ -490935,7 +491037,7 @@ var init_calendar = __esm(() => {
490935
491037
  // src/commands/buddy/buddy.ts
490936
491038
  var exports_buddy = {};
490937
491039
  __export(exports_buddy, {
490938
- call: () => call74
491040
+ call: () => call75
490939
491041
  });
490940
491042
  function getXpBar(current, needed) {
490941
491043
  const filled = Math.floor(current / needed * 10);
@@ -491138,7 +491240,7 @@ Subcommands:
491138
491240
  mute Mute companion
491139
491241
  unmute Unmute companion
491140
491242
 
491141
- XP is earned through interactions. Level up to evolve your companion!`, call74 = async (args) => {
491243
+ XP is earned through interactions. Level up to evolve your companion!`, call75 = async (args) => {
491142
491244
  const [subcommand] = args.trim().toLowerCase().split(/\s+/);
491143
491245
  switch (subcommand) {
491144
491246
  case "hatch":
@@ -493632,6 +493734,7 @@ var init_commands2 = __esm(() => {
493632
493734
  init_plugin2();
493633
493735
  init_reload_plugins2();
493634
493736
  init_rewind2();
493737
+ init_profiles2();
493635
493738
  init_heapdump2();
493636
493739
  init_mock_limits();
493637
493740
  init_bridge_kick();
@@ -493784,6 +493887,7 @@ var init_commands2 = __esm(() => {
493784
493887
  review_default,
493785
493888
  ultrareview,
493786
493889
  rewind_default,
493890
+ profiles_default,
493787
493891
  security_review_default,
493788
493892
  terminalSetup_default,
493789
493893
  upgrade_default,
package/dist/myclaude.mjs 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.188",
8
- BUILD_TIME: "2026-08-10T04:46:10.739Z",
7
+ VERSION: "0.1.189",
8
+ BUILD_TIME: "2026-08-10T05:51:52.016Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -60395,6 +60395,11 @@ var init_types4 = __esm(() => {
60395
60395
  command: exports_external.string()
60396
60396
  }).optional().describe("Custom file suggestion configuration for @ mentions"),
60397
60397
  respectGitignore: exports_external.boolean().optional().describe("Whether file picker should respect .gitignore files (default: true). " + "Note: .ignore files are always respected."),
60398
+ instructionProfiles: exports_external.array(exports_external.object({
60399
+ name: exports_external.string().min(1).describe("Profile name shown in /profiles and match diagnostics"),
60400
+ content: exports_external.string().describe("Instruction text injected into the system prompt when matched"),
60401
+ condition: exports_external.string().optional().describe('Optional glob condition on the current working directory (e.g. "**/tests/**"). Omitted = always apply.')
60402
+ })).optional().describe("Custom instruction profiles (personas) applied per project/path. " + "Matched profile contents are injected into the system prompt."),
60398
60403
  cleanupPeriodDays: exports_external.number().nonnegative().int().optional().describe("Number of days to retain chat transcripts (default: 30). Setting to 0 disables session persistence entirely: no transcripts are written and existing transcripts are deleted at startup."),
60399
60404
  env: EnvironmentVariablesSchema().optional().describe("Environment variables to set for Claude Code sessions"),
60400
60405
  attribution: exports_external.object({
@@ -117152,7 +117157,7 @@ var package_default;
117152
117157
  var init_package = __esm(() => {
117153
117158
  package_default = {
117154
117159
  name: "@funnycode/myclaude",
117155
- version: "0.1.188",
117160
+ version: "0.1.189",
117156
117161
  private: false,
117157
117162
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
117158
117163
  license: "MIT",
@@ -206592,6 +206597,49 @@ var init_gitSettings = __esm(() => {
206592
206597
  init_settings2();
206593
206598
  });
206594
206599
 
206600
+ // src/utils/instructionProfiles.ts
206601
+ function getMatchedInstructionProfiles() {
206602
+ const profiles = getInitialSettings().instructionProfiles;
206603
+ if (!profiles || profiles.length === 0) {
206604
+ return [];
206605
+ }
206606
+ const cwd2 = getCwd().replace(/\\/g, "/");
206607
+ const matched = [];
206608
+ for (const profile of profiles) {
206609
+ const condition = profile.condition?.trim();
206610
+ if (!condition) {
206611
+ matched.push(profile);
206612
+ continue;
206613
+ }
206614
+ try {
206615
+ if (import_picomatch2.default.isMatch(cwd2, condition)) {
206616
+ matched.push(profile);
206617
+ }
206618
+ } catch {}
206619
+ }
206620
+ return matched;
206621
+ }
206622
+ function buildInstructionProfilesPrompt() {
206623
+ const matched = getMatchedInstructionProfiles();
206624
+ if (matched.length === 0) {
206625
+ return null;
206626
+ }
206627
+ const sections = matched.map((profile) => `## Instruction Profile: ${profile.name}
206628
+
206629
+ ${profile.content}`).join(`
206630
+
206631
+ `);
206632
+ return `The user has enabled the following custom instruction profiles:
206633
+
206634
+ ${sections}`;
206635
+ }
206636
+ var import_picomatch2;
206637
+ var init_instructionProfiles = __esm(() => {
206638
+ init_cwd2();
206639
+ init_settings2();
206640
+ import_picomatch2 = __toESM(require_picomatch2(), 1);
206641
+ });
206642
+
206595
206643
  // src/context.ts
206596
206644
  function setSystemPromptInjection(value) {
206597
206645
  systemPromptInjection = value;
@@ -206610,6 +206658,7 @@ var init_context2 = __esm(() => {
206610
206658
  init_git();
206611
206659
  init_gitSettings();
206612
206660
  init_log3();
206661
+ init_instructionProfiles();
206613
206662
  getGitStatus = memoize_default(async () => {
206614
206663
  if (false) {}
206615
206664
  const startTime = Date.now();
@@ -206699,6 +206748,7 @@ ${log2}`
206699
206748
  });
206700
206749
  return {
206701
206750
  ...claudeMd && { claudeMd },
206751
+ ...buildInstructionProfilesPrompt() !== null ? { instructionProfiles: buildInstructionProfilesPrompt() } : {},
206702
206752
  currentDate: `Today's date is ${getLocalISODate()}.`
206703
206753
  };
206704
206754
  });
@@ -481514,6 +481564,58 @@ var init_rewind2 = __esm(() => {
481514
481564
  rewind_default = rewind;
481515
481565
  });
481516
481566
 
481567
+ // src/commands/profiles/profiles.ts
481568
+ var exports_profiles = {};
481569
+ __export(exports_profiles, {
481570
+ call: () => call54
481571
+ });
481572
+ function formatProfile(profile) {
481573
+ const condition = profile.condition ? ` (condition: ${profile.condition})` : "";
481574
+ return ` • ${profile.name}${condition}
481575
+ ${profile.content.split(`
481576
+ `)[0]?.slice(0, 80) ?? ""}`;
481577
+ }
481578
+ async function call54(_args, _context) {
481579
+ const profiles = getMatchedInstructionProfiles();
481580
+ if (profiles.length === 0) {
481581
+ return {
481582
+ type: "text",
481583
+ value: `No instruction profiles are active.
481584
+
481585
+ ` + `Configure profiles in settings.json under "instructionProfiles":
481586
+ ` + ` [
481587
+ ` + ` { "name": "Backend", "content": "...", "condition": "**/src/**" }
481588
+ ` + ` ]
481589
+ ` + 'Profiles without a "condition" always apply; with one, they apply ' + "only when the current directory matches the glob."
481590
+ };
481591
+ }
481592
+ const lines2 = profiles.map(formatProfile);
481593
+ return {
481594
+ type: "text",
481595
+ value: `Active instruction profiles (${profiles.length}):
481596
+
481597
+ ${lines2.join(`
481598
+ `)}`
481599
+ };
481600
+ }
481601
+ var init_profiles = __esm(() => {
481602
+ init_instructionProfiles();
481603
+ });
481604
+
481605
+ // src/commands/profiles/index.ts
481606
+ var profiles, profiles_default;
481607
+ var init_profiles2 = __esm(() => {
481608
+ profiles = {
481609
+ type: "local",
481610
+ name: "profiles",
481611
+ description: "Show active custom instruction profiles",
481612
+ argumentHint: "",
481613
+ supportsNonInteractive: true,
481614
+ load: () => Promise.resolve().then(() => (init_profiles(), exports_profiles))
481615
+ };
481616
+ profiles_default = profiles;
481617
+ });
481618
+
481517
481619
  // src/utils/heapDumpService.ts
481518
481620
  import { createWriteStream as createWriteStream4, writeFileSync as writeFileSync8 } from "fs";
481519
481621
  import { readdir as readdir26, readFile as readFile45, writeFile as writeFile37 } from "fs/promises";
@@ -481678,9 +481780,9 @@ var init_heapDumpService = __esm(() => {
481678
481780
  // src/commands/heapdump/heapdump.ts
481679
481781
  var exports_heapdump = {};
481680
481782
  __export(exports_heapdump, {
481681
- call: () => call54
481783
+ call: () => call55
481682
481784
  });
481683
- async function call54() {
481785
+ async function call55() {
481684
481786
  const result = await performHeapDump();
481685
481787
  if (!result.success) {
481686
481788
  return {
@@ -482051,7 +482153,7 @@ var USAGE = `/bridge-kick <subcommand>
482051
482153
  reconnect-session fail next POST /bridge/reconnect fails
482052
482154
  heartbeat <status> next heartbeat throws BridgeFatalError(status)
482053
482155
  reconnect call reconnectEnvironmentWithSession directly
482054
- status print bridge state`, call55 = async (args) => {
482156
+ status print bridge state`, call56 = async (args) => {
482055
482157
  const h2 = getBridgeDebugHandle();
482056
482158
  if (!h2) {
482057
482159
  return {
@@ -482184,13 +482286,13 @@ var init_bridge_kick = __esm(() => {
482184
482286
  description: "Inject bridge failure states for manual recovery testing",
482185
482287
  isEnabled: () => process.env.USER_TYPE === "ant",
482186
482288
  supportsNonInteractive: false,
482187
- load: () => Promise.resolve({ call: call55 })
482289
+ load: () => Promise.resolve({ call: call56 })
482188
482290
  };
482189
482291
  bridge_kick_default = bridgeKick;
482190
482292
  });
482191
482293
 
482192
482294
  // src/commands/version.ts
482193
- var call56 = async () => {
482295
+ var call57 = async () => {
482194
482296
  return {
482195
482297
  type: "text",
482196
482298
  value: MACRO.BUILD_TIME ? `${MACRO.VERSION} (built ${MACRO.BUILD_TIME})` : MACRO.VERSION
@@ -482203,7 +482305,7 @@ var init_version = __esm(() => {
482203
482305
  description: "Print the version this session is running (not what autoupdate downloaded)",
482204
482306
  isEnabled: () => process.env.USER_TYPE === "ant",
482205
482307
  supportsNonInteractive: true,
482206
- load: () => Promise.resolve({ call: call56 })
482308
+ load: () => Promise.resolve({ call: call57 })
482207
482309
  };
482208
482310
  version_default = version2;
482209
482311
  });
@@ -482217,7 +482319,7 @@ var init_summary = __esm(() => {
482217
482319
  // src/commands/achievements/achievements.ts
482218
482320
  var exports_achievements = {};
482219
482321
  __export(exports_achievements, {
482220
- call: () => call57
482322
+ call: () => call58
482221
482323
  });
482222
482324
  function handleSummary() {
482223
482325
  const unlocked = getUnlockedAchievements();
@@ -482269,7 +482371,7 @@ function handleListAll() {
482269
482371
  return { type: "text", value: lines2.join(`
482270
482372
  `) };
482271
482373
  }
482272
- var call57 = async (args) => {
482374
+ var call58 = async (args) => {
482273
482375
  const sub = args.trim().toLowerCase();
482274
482376
  if (sub === "list" || sub === "all") {
482275
482377
  return handleListAll();
@@ -482448,9 +482550,9 @@ var init_tips = __esm(() => {
482448
482550
  // src/commands/mystats/mystats.ts
482449
482551
  var exports_mystats = {};
482450
482552
  __export(exports_mystats, {
482451
- call: () => call58
482553
+ call: () => call59
482452
482554
  });
482453
- var call58 = async () => {
482555
+ var call59 = async () => {
482454
482556
  const stats = getUsageStats();
482455
482557
  const companion = getCompanion();
482456
482558
  const unlocked = getUnlockedAchievements();
@@ -483693,10 +483795,10 @@ var init_SandboxSettings = __esm(() => {
483693
483795
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
483694
483796
  var exports_sandbox_toggle = {};
483695
483797
  __export(exports_sandbox_toggle, {
483696
- call: () => call59
483798
+ call: () => call60
483697
483799
  });
483698
483800
  import { relative as relative29 } from "path";
483699
- async function call59(onDone, _context, args) {
483801
+ async function call60(onDone, _context, args) {
483700
483802
  const settings = getSettings_DEPRECATED();
483701
483803
  const themeName = settings.theme || "light";
483702
483804
  const platform5 = getPlatform();
@@ -484078,7 +484180,7 @@ var init_setup2 = __esm(() => {
484078
484180
  // src/commands/chrome/chrome.tsx
484079
484181
  var exports_chrome = {};
484080
484182
  __export(exports_chrome, {
484081
- call: () => call60
484183
+ call: () => call61
484082
484184
  });
484083
484185
  function ClaudeInChromeMenu(t0) {
484084
484186
  const $3 = import_compiler_runtime267.c(41);
@@ -484445,7 +484547,7 @@ function _temp271(c6) {
484445
484547
  function _temp159(s) {
484446
484548
  return s.mcp.clients;
484447
484549
  }
484448
- 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) {
484550
+ 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", call61 = async function(onDone) {
484449
484551
  const isExtensionInstalled = await isChromeExtensionInstalled();
484450
484552
  const config5 = getGlobalConfig();
484451
484553
  const isSubscriber = isClaudeAISubscriber();
@@ -484493,9 +484595,9 @@ var init_chrome2 = __esm(() => {
484493
484595
  // src/commands/stickers/stickers.ts
484494
484596
  var exports_stickers = {};
484495
484597
  __export(exports_stickers, {
484496
- call: () => call61
484598
+ call: () => call62
484497
484599
  });
484498
- async function call61() {
484600
+ async function call62() {
484499
484601
  const url3 = "https://www.stickermule.com/claudecode";
484500
484602
  const success2 = await openBrowser(url3);
484501
484603
  if (success2) {
@@ -484525,7 +484627,7 @@ var init_stickers2 = __esm(() => {
484525
484627
  });
484526
484628
 
484527
484629
  // src/commands/advisor.ts
484528
- var call62 = async (args, context2) => {
484630
+ var call63 = async (args, context2) => {
484529
484631
  const arg = args.trim().toLowerCase();
484530
484632
  const baseModel = parseUserSpecifiedModel(context2.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
484531
484633
  if (!arg) {
@@ -484611,7 +484713,7 @@ var init_advisor2 = __esm(() => {
484611
484713
  return !canUserConfigureAdvisor();
484612
484714
  },
484613
484715
  supportsNonInteractive: true,
484614
- load: () => Promise.resolve({ call: call62 })
484716
+ load: () => Promise.resolve({ call: call63 })
484615
484717
  };
484616
484718
  advisor_default = advisor;
484617
484719
  });
@@ -484951,7 +485053,7 @@ function formatEntry(content) {
484951
485053
  ${content.trim()}
484952
485054
  `;
484953
485055
  }
484954
- var call63 = async (args) => {
485056
+ var call64 = async (args) => {
484955
485057
  const text2 = args.trim();
484956
485058
  if (!text2) {
484957
485059
  return {
@@ -484992,7 +485094,7 @@ var init_remember = __esm(() => {
484992
485094
  description: "Save important information to memory for reuse in future sessions",
484993
485095
  argumentHint: "<what to remember>",
484994
485096
  supportsNonInteractive: true,
484995
- load: async () => ({ call: call63 })
485097
+ load: async () => ({ call: call64 })
484996
485098
  };
484997
485099
  remember_default = remember;
484998
485100
  });
@@ -485406,12 +485508,12 @@ var init_ExitFlow = __esm(() => {
485406
485508
  // src/commands/exit/exit.tsx
485407
485509
  var exports_exit = {};
485408
485510
  __export(exports_exit, {
485409
- call: () => call64
485511
+ call: () => call65
485410
485512
  });
485411
485513
  function getRandomGoodbyeMessage2() {
485412
485514
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
485413
485515
  }
485414
- async function call64(onDone) {
485516
+ async function call65(onDone) {
485415
485517
  if (false) {}
485416
485518
  const showWorktree = getCurrentWorktreeSession() !== null;
485417
485519
  if (showWorktree) {
@@ -485705,7 +485807,7 @@ var exports_export = {};
485705
485807
  __export(exports_export, {
485706
485808
  sanitizeFilename: () => sanitizeFilename,
485707
485809
  extractFirstPrompt: () => extractFirstPrompt,
485708
- call: () => call65
485810
+ call: () => call66
485709
485811
  });
485710
485812
  import { join as join135 } from "path";
485711
485813
  function formatTimestamp(date6) {
@@ -485746,7 +485848,7 @@ async function exportWithReactRenderer(context2) {
485746
485848
  const tools = context2.options.tools || [];
485747
485849
  return renderMessagesToPlainText(context2.messages, tools);
485748
485850
  }
485749
- async function call65(onDone, context2, args) {
485851
+ async function call66(onDone, context2, args) {
485750
485852
  const content = await exportWithReactRenderer(context2);
485751
485853
  const filename = args.trim();
485752
485854
  if (filename) {
@@ -485806,7 +485908,7 @@ var init_export2 = __esm(() => {
485806
485908
  // src/commands/model/model.tsx
485807
485909
  var exports_model2 = {};
485808
485910
  __export(exports_model2, {
485809
- call: () => call66
485911
+ call: () => call67
485810
485912
  });
485811
485913
  function ModelPickerWrapper(t0) {
485812
485914
  const $3 = import_compiler_runtime269.c(17);
@@ -486054,7 +486156,7 @@ function renderModelLabel(model) {
486054
486156
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
486055
486157
  return model === null ? `${rendered} (default)` : rendered;
486056
486158
  }
486057
- var import_compiler_runtime269, React107, jsx_dev_runtime347, call66 = async (onDone, _context, args) => {
486159
+ var import_compiler_runtime269, React107, jsx_dev_runtime347, call67 = async (onDone, _context, args) => {
486058
486160
  args = args?.trim() || "";
486059
486161
  if (COMMON_INFO_ARGS.includes(args)) {
486060
486162
  logEvent("tengu_model_command_inline_help", {
@@ -486123,7 +486225,7 @@ var init_model3 = __esm(() => {
486123
486225
  // src/commands/tag/tag.tsx
486124
486226
  var exports_tag = {};
486125
486227
  __export(exports_tag, {
486126
- call: () => call67
486228
+ call: () => call68
486127
486229
  });
486128
486230
  function ConfirmRemoveTag(t0) {
486129
486231
  const $3 = import_compiler_runtime270.c(11);
@@ -486347,7 +486449,7 @@ Examples:
486347
486449
  React108.useEffect(t1, t2);
486348
486450
  return null;
486349
486451
  }
486350
- async function call67(onDone, _context, args) {
486452
+ async function call68(onDone, _context, args) {
486351
486453
  args = args?.trim() || "";
486352
486454
  if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
486353
486455
  return /* @__PURE__ */ jsx_dev_runtime348.jsxDEV(ShowHelp, {
@@ -486395,9 +486497,9 @@ var init_tag2 = __esm(() => {
486395
486497
  // src/commands/output-style/output-style.tsx
486396
486498
  var exports_output_style = {};
486397
486499
  __export(exports_output_style, {
486398
- call: () => call68
486500
+ call: () => call69
486399
486501
  });
486400
- async function call68(onDone) {
486502
+ async function call69(onDone) {
486401
486503
  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.", {
486402
486504
  display: "system"
486403
486505
  });
@@ -486916,9 +487018,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
486916
487018
  // src/commands/remote-env/remote-env.tsx
486917
487019
  var exports_remote_env = {};
486918
487020
  __export(exports_remote_env, {
486919
- call: () => call69
487021
+ call: () => call70
486920
487022
  });
486921
- async function call69(onDone) {
487023
+ async function call70(onDone) {
486922
487024
  return /* @__PURE__ */ jsx_dev_runtime350.jsxDEV(RemoteEnvironmentDialog, {
486923
487025
  onDone
486924
487026
  }, undefined, false, undefined, this);
@@ -486948,9 +487050,9 @@ var init_remote_env2 = __esm(() => {
486948
487050
  // src/commands/upgrade/upgrade.tsx
486949
487051
  var exports_upgrade = {};
486950
487052
  __export(exports_upgrade, {
486951
- call: () => call70
487053
+ call: () => call71
486952
487054
  });
486953
- async function call70(onDone, context2) {
487055
+ async function call71(onDone, context2) {
486954
487056
  try {
486955
487057
  if (isClaudeAISubscriber()) {
486956
487058
  const tokens = getClaudeAIOAuthTokens();
@@ -487010,7 +487112,7 @@ var init_upgrade2 = __esm(() => {
487010
487112
  // src/commands/rate-limit-options/rate-limit-options.tsx
487011
487113
  var exports_rate_limit_options = {};
487012
487114
  __export(exports_rate_limit_options, {
487013
- call: () => call71
487115
+ call: () => call72
487014
487116
  });
487015
487117
  function RateLimitOptionsMenu(t0) {
487016
487118
  const $3 = import_compiler_runtime272.c(25);
@@ -487144,7 +487246,7 @@ function RateLimitOptionsMenu(t0) {
487144
487246
  t5 = function handleSelect2(value) {
487145
487247
  if (value === "upgrade") {
487146
487248
  logEvent("tengu_rate_limit_options_menu_select_upgrade", {});
487147
- call70(onDone, context2).then((jsx) => {
487249
+ call71(onDone, context2).then((jsx) => {
487148
487250
  if (jsx) {
487149
487251
  setSubCommandJSX(jsx);
487150
487252
  }
@@ -487204,7 +487306,7 @@ function RateLimitOptionsMenu(t0) {
487204
487306
  }
487205
487307
  return t7;
487206
487308
  }
487207
- async function call71(onDone, context2) {
487309
+ async function call72(onDone, context2) {
487208
487310
  return /* @__PURE__ */ jsx_dev_runtime352.jsxDEV(RateLimitOptionsMenu, {
487209
487311
  onDone,
487210
487312
  context: context2
@@ -487278,7 +487380,7 @@ var exports_effort = {};
487278
487380
  __export(exports_effort, {
487279
487381
  showCurrentEffort: () => showCurrentEffort,
487280
487382
  executeEffort: () => executeEffort,
487281
- call: () => call72
487383
+ call: () => call73
487282
487384
  });
487283
487385
  function setEffortValue(effortValue) {
487284
487386
  const persistable = toPersistableEffort(effortValue);
@@ -487429,7 +487531,7 @@ function ApplyEffortAndClose(t0) {
487429
487531
  React110.useEffect(t1, t2);
487430
487532
  return null;
487431
487533
  }
487432
- async function call72(onDone, _context, args) {
487534
+ async function call73(onDone, _context, args) {
487433
487535
  args = args?.trim() || "";
487434
487536
  if (COMMON_HELP_ARGS2.includes(args)) {
487435
487537
  onDone(`Usage: /effort [low|medium|high|max|auto]
@@ -490338,9 +490440,9 @@ var init_Stats = __esm(() => {
490338
490440
  // src/commands/stats/stats.tsx
490339
490441
  var exports_stats = {};
490340
490442
  __export(exports_stats, {
490341
- call: () => call73
490443
+ call: () => call74
490342
490444
  });
490343
- var jsx_dev_runtime355, call73 = async (onDone) => {
490445
+ var jsx_dev_runtime355, call74 = async (onDone) => {
490344
490446
  return /* @__PURE__ */ jsx_dev_runtime355.jsxDEV(Stats2, {
490345
490447
  onClose: onDone
490346
490448
  }, undefined, false, undefined, this);
@@ -490935,7 +491037,7 @@ var init_calendar = __esm(() => {
490935
491037
  // src/commands/buddy/buddy.ts
490936
491038
  var exports_buddy = {};
490937
491039
  __export(exports_buddy, {
490938
- call: () => call74
491040
+ call: () => call75
490939
491041
  });
490940
491042
  function getXpBar(current, needed) {
490941
491043
  const filled = Math.floor(current / needed * 10);
@@ -491138,7 +491240,7 @@ Subcommands:
491138
491240
  mute Mute companion
491139
491241
  unmute Unmute companion
491140
491242
 
491141
- XP is earned through interactions. Level up to evolve your companion!`, call74 = async (args) => {
491243
+ XP is earned through interactions. Level up to evolve your companion!`, call75 = async (args) => {
491142
491244
  const [subcommand] = args.trim().toLowerCase().split(/\s+/);
491143
491245
  switch (subcommand) {
491144
491246
  case "hatch":
@@ -493632,6 +493734,7 @@ var init_commands2 = __esm(() => {
493632
493734
  init_plugin2();
493633
493735
  init_reload_plugins2();
493634
493736
  init_rewind2();
493737
+ init_profiles2();
493635
493738
  init_heapdump2();
493636
493739
  init_mock_limits();
493637
493740
  init_bridge_kick();
@@ -493784,6 +493887,7 @@ var init_commands2 = __esm(() => {
493784
493887
  review_default,
493785
493888
  ultrareview,
493786
493889
  rewind_default,
493890
+ profiles_default,
493787
493891
  security_review_default,
493788
493892
  terminalSetup_default,
493789
493893
  upgrade_default,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnycode/myclaude",
3
- "version": "0.1.188",
3
+ "version": "0.1.189",
4
4
  "private": false,
5
5
  "description": "An open-source AI coding assistant in your terminal - powered by Claude",
6
6
  "license": "MIT",