@codemieai/code 0.0.38 → 0.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +2 -3
  2. package/bin/codemie-opencode.js +8 -1
  3. package/dist/agents/codemie-code/skills/index.d.ts +4 -0
  4. package/dist/agents/codemie-code/skills/index.d.ts.map +1 -1
  5. package/dist/agents/codemie-code/skills/index.js +4 -0
  6. package/dist/agents/codemie-code/skills/index.js.map +1 -1
  7. package/dist/agents/codemie-code/skills/sync/SkillSync.d.ts +52 -0
  8. package/dist/agents/codemie-code/skills/sync/SkillSync.d.ts.map +1 -0
  9. package/dist/agents/codemie-code/skills/sync/SkillSync.js +165 -0
  10. package/dist/agents/codemie-code/skills/sync/SkillSync.js.map +1 -0
  11. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  12. package/dist/agents/core/AgentCLI.js +25 -14
  13. package/dist/agents/core/AgentCLI.js.map +1 -1
  14. package/dist/agents/core/BaseAgentAdapter.d.ts +25 -2
  15. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  16. package/dist/agents/core/BaseAgentAdapter.js +183 -6
  17. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  18. package/dist/agents/core/types.d.ts +44 -0
  19. package/dist/agents/core/types.d.ts.map +1 -1
  20. package/dist/agents/plugins/claude/claude.plugin.d.ts +5 -5
  21. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/claude.plugin.js +136 -93
  23. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  24. package/dist/agents/plugins/claude/plugin/.claude-plugin/local-install.json +1 -0
  25. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  26. package/dist/agents/plugins/claude/plugin/README.md +96 -0
  27. package/dist/agents/plugins/claude/plugin/codemie-statusline.mjs +42 -0
  28. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +16 -0
  29. package/dist/agents/plugins/claude/plugin/sounds/play-random-sound.ps1 +112 -0
  30. package/dist/agents/plugins/claude/plugin/sounds/play-random-sound.sh +58 -0
  31. package/dist/agents/plugins/claude/sounds-installer.d.ts +19 -0
  32. package/dist/agents/plugins/claude/sounds-installer.d.ts.map +1 -0
  33. package/dist/agents/plugins/claude/sounds-installer.js +164 -0
  34. package/dist/agents/plugins/claude/sounds-installer.js.map +1 -0
  35. package/dist/agents/plugins/codemie-code-binary.d.ts +17 -0
  36. package/dist/agents/plugins/codemie-code-binary.d.ts.map +1 -0
  37. package/dist/agents/plugins/codemie-code-binary.js +94 -0
  38. package/dist/agents/plugins/codemie-code-binary.js.map +1 -0
  39. package/dist/agents/plugins/codemie-code.plugin.d.ts +53 -12
  40. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  41. package/dist/agents/plugins/codemie-code.plugin.js +359 -147
  42. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  43. package/dist/agents/plugins/gemini/gemini.plugin.d.ts +8 -0
  44. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  45. package/dist/agents/plugins/gemini/gemini.plugin.js +44 -0
  46. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  47. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +12 -2
  48. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -1
  49. package/dist/agents/plugins/opencode/opencode-model-configs.js +240 -24
  50. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -1
  51. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  52. package/dist/agents/plugins/opencode/opencode.plugin.js +62 -24
  53. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  54. package/dist/agents/registry.d.ts.map +1 -1
  55. package/dist/agents/registry.js +8 -7
  56. package/dist/agents/registry.js.map +1 -1
  57. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
  58. package/dist/cli/commands/doctor/checks/AgentsCheck.js +5 -2
  59. package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
  60. package/dist/cli/commands/doctor/checks/FrameworksCheck.d.ts.map +1 -1
  61. package/dist/cli/commands/doctor/checks/FrameworksCheck.js +5 -2
  62. package/dist/cli/commands/doctor/checks/FrameworksCheck.js.map +1 -1
  63. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  64. package/dist/cli/commands/doctor/index.js +87 -91
  65. package/dist/cli/commands/doctor/index.js.map +1 -1
  66. package/dist/cli/commands/hook.d.ts.map +1 -1
  67. package/dist/cli/commands/hook.js +23 -0
  68. package/dist/cli/commands/hook.js.map +1 -1
  69. package/dist/cli/commands/install.d.ts.map +1 -1
  70. package/dist/cli/commands/install.js +13 -0
  71. package/dist/cli/commands/install.js.map +1 -1
  72. package/dist/cli/commands/log/formatter.d.ts +1 -0
  73. package/dist/cli/commands/log/formatter.d.ts.map +1 -1
  74. package/dist/cli/commands/log/formatter.js +4 -13
  75. package/dist/cli/commands/log/formatter.js.map +1 -1
  76. package/dist/cli/commands/setup.js +155 -0
  77. package/dist/cli/commands/setup.js.map +1 -1
  78. package/dist/cli/commands/skill.d.ts.map +1 -1
  79. package/dist/cli/commands/skill.js +80 -1
  80. package/dist/cli/commands/skill.js.map +1 -1
  81. package/dist/cli/index.js +7 -13
  82. package/dist/cli/index.js.map +1 -1
  83. package/dist/env/types.d.ts +3 -0
  84. package/dist/env/types.d.ts.map +1 -1
  85. package/dist/env/types.js.map +1 -1
  86. package/dist/hooks/types.d.ts +2 -0
  87. package/dist/hooks/types.d.ts.map +1 -1
  88. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  89. package/dist/providers/plugins/bedrock/bedrock.template.js +12 -0
  90. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  91. package/dist/providers/plugins/sso/sso.auth.d.ts +3 -1
  92. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  93. package/dist/providers/plugins/sso/sso.auth.js +70 -12
  94. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  95. package/dist/utils/config.d.ts.map +1 -1
  96. package/dist/utils/config.js +6 -0
  97. package/dist/utils/config.js.map +1 -1
  98. package/dist/utils/logger.d.ts +1 -0
  99. package/dist/utils/logger.d.ts.map +1 -1
  100. package/dist/utils/logger.js +16 -1
  101. package/dist/utils/logger.js.map +1 -1
  102. package/dist/utils/native-installer.d.ts.map +1 -1
  103. package/dist/utils/native-installer.js +35 -0
  104. package/dist/utils/native-installer.js.map +1 -1
  105. package/package.json +2 -1
@@ -2,18 +2,32 @@ import { BaseAgentAdapter } from '../../core/BaseAgentAdapter.js';
2
2
  import { ClaudeSessionAdapter } from './claude.session.js';
3
3
  import { ClaudePluginInstaller } from './claude.plugin-installer.js';
4
4
  import { installNativeAgent } from '../../../utils/native-installer.js';
5
- import { compareVersions, isValidSemanticVersion, } from '../../../utils/version-utils.js';
6
- import { AgentInstallationError, createErrorContext, } from '../../../utils/errors.js';
5
+ import { isValidSemanticVersion } from '../../../utils/version-utils.js';
6
+ import { AgentInstallationError, createErrorContext, getErrorMessage, } from '../../../utils/errors.js';
7
7
  import { logger } from '../../../utils/logger.js';
8
- import { resolveHomeDir } from '../../../utils/paths.js';
8
+ import { sanitizeLogArgs } from '../../../utils/security.js';
9
+ import chalk from 'chalk';
10
+ import { resolveHomeDir, getDirname } from '../../../utils/paths.js';
9
11
  import { detectInstallationMethod, } from '../../../utils/installation-detector.js';
12
+ // Module-level flag to track statusline management within a session.
13
+ // Using module scope (not env var) avoids leaking internal state into subprocess environments.
14
+ let statuslineManagedThisSession = false;
10
15
  /**
11
16
  * Supported Claude Code version
12
17
  * Latest version tested and verified with CodeMie backend
13
18
  *
14
19
  * **UPDATE THIS WHEN BUMPING CLAUDE VERSION**
15
20
  */
16
- const CLAUDE_SUPPORTED_VERSION = '2.1.31';
21
+ const CLAUDE_SUPPORTED_VERSION = '2.1.41';
22
+ /**
23
+ * Minimum supported Claude Code version
24
+ * Versions below this are known to be incompatible and will be blocked from starting
25
+ * Rule: always 10 patch versions below CLAUDE_SUPPORTED_VERSION
26
+ * e.g. supported = 2.1.41 → minimum = 2.1.31
27
+ *
28
+ * **UPDATE THIS WHEN BUMPING CLAUDE VERSION**
29
+ */
30
+ const CLAUDE_MINIMUM_SUPPORTED_VERSION = '2.1.32';
17
31
  /**
18
32
  * Claude Code installer URLs
19
33
  * Official Anthropic installer scripts for native installation
@@ -34,6 +48,7 @@ export const ClaudePluginMetadata = {
34
48
  cliCommand: 'claude',
35
49
  // Version management configuration
36
50
  supportedVersion: CLAUDE_SUPPORTED_VERSION, // Latest version tested with CodeMie backend
51
+ minimumSupportedVersion: CLAUDE_MINIMUM_SUPPORTED_VERSION, // Minimum version required to run
37
52
  // Native installer URLs (used by installNativeAgent utility)
38
53
  installerUrls: CLAUDE_INSTALLER_URLS,
39
54
  // Data paths (used by lifecycle hooks and analytics)
@@ -44,6 +59,9 @@ export const ClaudePluginMetadata = {
44
59
  baseUrl: ['ANTHROPIC_BASE_URL'],
45
60
  apiKey: ['ANTHROPIC_AUTH_TOKEN'],
46
61
  model: ['ANTHROPIC_MODEL'],
62
+ haikuModel: ['ANTHROPIC_DEFAULT_HAIKU_MODEL'],
63
+ sonnetModel: ['ANTHROPIC_DEFAULT_SONNET_MODEL', 'CLAUDE_CODE_SUBAGENT_MODEL'],
64
+ opusModel: ['ANTHROPIC_DEFAULT_OPUS_MODEL'],
47
65
  },
48
66
  supportedProviders: ['litellm', 'ai-run-sso', 'bedrock'],
49
67
  blockedModelPatterns: [],
@@ -100,8 +118,86 @@ export const ClaudePluginMetadata = {
100
118
  if (!env.DISABLE_AUTOUPDATER) {
101
119
  env.DISABLE_AUTOUPDATER = '1';
102
120
  }
121
+ // Statusline setup: when --status flag is passed, configure Claude Code
122
+ // status bar with a multi-line display showing model, context, git, cost
123
+ // https://code.claude.com/docs/en/statusline
124
+ if (env.CODEMIE_STATUS === '1') {
125
+ const { writeFile, readFile, mkdir, chmod } = await import('fs/promises');
126
+ const { existsSync } = await import('fs');
127
+ const { join } = await import('path');
128
+ const claudeHome = resolveHomeDir('.claude');
129
+ const scriptPath = join(claudeHome, 'codemie-statusline.mjs');
130
+ const settingsPath = join(claudeHome, 'settings.json');
131
+ // Read the statusline script from the compiled output directory
132
+ const scriptContent = await readFile(join(getDirname(import.meta.url), 'plugin/codemie-statusline.mjs'), 'utf-8');
133
+ // Ensure ~/.claude directory exists
134
+ if (!existsSync(claudeHome)) {
135
+ await mkdir(claudeHome, { recursive: true });
136
+ }
137
+ // Write script (always update to latest version)
138
+ await writeFile(scriptPath, scriptContent, 'utf-8');
139
+ // Make script executable on Unix systems
140
+ if (process.platform !== 'win32') {
141
+ await chmod(scriptPath, 0o755);
142
+ }
143
+ // Inject statusLine into ~/.claude/settings.json if not already configured
144
+ let settings = {};
145
+ if (existsSync(settingsPath)) {
146
+ try {
147
+ const raw = await readFile(settingsPath, 'utf-8');
148
+ settings = JSON.parse(raw);
149
+ }
150
+ catch (parseError) {
151
+ // Abort injection to prevent overwriting potentially valid settings
152
+ // that are temporarily unreadable (e.g., concurrent write, partial flush)
153
+ logger.warn('[Claude] Could not parse settings.json, skipping statusline injection to avoid data loss', ...sanitizeLogArgs({
154
+ settingsPath,
155
+ error: parseError instanceof Error ? parseError.message : String(parseError),
156
+ }));
157
+ return env;
158
+ }
159
+ }
160
+ if (!settings.statusLine) {
161
+ settings.statusLine = {
162
+ type: 'command',
163
+ // Quote the path to handle spaces in home directory (e.g. /Users/John Doe/)
164
+ command: `node "${scriptPath}"`,
165
+ };
166
+ await writeFile(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
167
+ // Use module-level flag (not env var) to avoid leaking into subprocess env
168
+ statuslineManagedThisSession = true;
169
+ logger.debug('[Claude] Statusline configured', { scriptPath });
170
+ }
171
+ }
103
172
  return env;
104
173
  },
174
+ // Clean up injected statusLine from settings.json after the session ends
175
+ async afterRun(_exitCode, _env) {
176
+ if (!statuslineManagedThisSession)
177
+ return;
178
+ statuslineManagedThisSession = false;
179
+ const { readFile, writeFile } = await import('fs/promises');
180
+ const { existsSync } = await import('fs');
181
+ const { join } = await import('path');
182
+ const settingsPath = join(resolveHomeDir('.claude'), 'settings.json');
183
+ if (existsSync(settingsPath)) {
184
+ try {
185
+ const raw = await readFile(settingsPath, 'utf-8');
186
+ const settings = JSON.parse(raw);
187
+ if (settings.statusLine) {
188
+ delete settings.statusLine;
189
+ await writeFile(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
190
+ logger.debug('[Claude] Statusline config removed from settings.json');
191
+ }
192
+ }
193
+ catch (error) {
194
+ logger.warn('[Claude] Failed to clean up statusLine from settings.json', ...sanitizeLogArgs({
195
+ settingsPath,
196
+ error: error instanceof Error ? error.message : String(error),
197
+ }));
198
+ }
199
+ }
200
+ },
105
201
  },
106
202
  };
107
203
  /**
@@ -309,100 +405,47 @@ export class ClaudePlugin extends BaseAgentAdapter {
309
405
  }
310
406
  }
311
407
  /**
312
- * Check if installed version is compatible with CodeMie
313
- * Compares against metadata.supportedVersion
408
+ * Additional installation steps for Claude Code
409
+ * Handles optional features like sounds installation
314
410
  *
315
- * @returns Version compatibility result with status and version info
411
+ * @param options - Typed installation options
316
412
  */
317
- async checkVersionCompatibility() {
318
- const metadata = this.metadata;
319
- const supportedVersion = metadata.supportedVersion || 'latest';
320
- // Get installed version
321
- const installedVersion = await this.getVersion();
322
- logger.debug('Checking version compatibility', {
323
- installedVersion,
324
- supportedVersion,
325
- });
326
- // If not installed, return incompatible
327
- if (!installedVersion) {
328
- return {
329
- compatible: false,
330
- installedVersion: null,
331
- supportedVersion,
332
- isNewer: false,
333
- hasUpdate: false,
334
- };
335
- }
336
- // If no supported version configured, consider compatible
337
- if (!metadata.supportedVersion) {
338
- return {
339
- compatible: true,
340
- installedVersion,
341
- supportedVersion: 'latest',
342
- isNewer: false,
343
- hasUpdate: false,
344
- };
345
- }
346
- // Compare versions
347
- try {
348
- const comparison = compareVersions(installedVersion, supportedVersion);
349
- // Determine if update is available: installed < supported
350
- const hasUpdate = comparison < 0;
351
- logger.debug('Version comparison result', {
352
- comparison,
353
- installedVersion,
354
- supportedVersion,
355
- compatible: comparison <= 0,
356
- isNewer: comparison > 0,
357
- hasUpdate,
358
- });
359
- return {
360
- compatible: comparison <= 0, // Compatible if installed <= supported
361
- installedVersion,
362
- supportedVersion,
363
- isNewer: comparison > 0, // Newer if installed > supported (warning case)
364
- hasUpdate, // Update available if installed < supported
365
- };
366
- }
367
- catch (error) {
368
- // If version comparison fails, provide comprehensive error context for debugging
369
- const errorContext = createErrorContext(error, {
370
- agent: metadata.name,
371
- });
372
- // Differentiate between parse errors (non-standard format) and unexpected errors
373
- const isParseError = error instanceof Error &&
374
- error.message.includes('Invalid semantic version');
375
- if (isParseError) {
376
- // Parse error: version format not recognized (e.g., '2.1.22 (Claude Code)' or custom format)
377
- logger.warn('Non-standard version format detected, treating as incompatible', {
378
- ...errorContext,
379
- operation: 'checkVersionCompatibility',
380
- phase: 'version_comparison',
381
- installedVersion,
382
- supportedVersion,
383
- reason: 'parse_error',
384
- });
413
+ async additionalInstallation(options) {
414
+ // Install sounds if requested
415
+ if (options?.sounds) {
416
+ try {
417
+ logger.info('Installing sounds...', { agent: 'claude' });
418
+ const { installSounds, isSoundsInstalled } = await import('./sounds-installer.js');
419
+ // Check if already installed
420
+ if (!isSoundsInstalled()) {
421
+ const result = await installSounds();
422
+ if (result === null) {
423
+ // Installation failed (no audio player or other error)
424
+ logger.warn('Sounds installation skipped or failed (no audio player)', {
425
+ agent: 'claude'
426
+ });
427
+ console.error(chalk.yellow('\n⚠️ Sounds installation failed (optional feature)'));
428
+ console.error(chalk.dim('You can try installing sounds later with: codemie install claude --sounds\n'));
429
+ }
430
+ else {
431
+ logger.info('Sounds installed successfully', { agent: 'claude' });
432
+ }
433
+ }
434
+ else {
435
+ logger.info('Sounds already installed, skipping', { agent: 'claude' });
436
+ console.log(chalk.blue('\nℹ️ Sounds already installed, skipping\n'));
437
+ }
385
438
  }
386
- else {
387
- // Unexpected error: something went wrong during comparison
388
- logger.error('Version compatibility check failed unexpectedly', {
389
- ...errorContext,
390
- operation: 'checkVersionCompatibility',
391
- phase: 'version_comparison',
392
- installedVersion,
393
- supportedVersion,
394
- reason: 'unexpected_error',
439
+ catch (error) {
440
+ const errorContext = createErrorContext(error, {
441
+ agent: 'claude'
395
442
  });
443
+ logger.error('Sounds installation failed', errorContext);
444
+ // Don't throw - sounds are optional, allow installation to continue
445
+ console.error(chalk.yellow('\n⚠️ Sounds installation failed (optional feature)'));
446
+ console.error(chalk.dim(`Error: ${getErrorMessage(error)}`));
447
+ console.error(chalk.dim('You can try installing sounds later with: codemie install claude --sounds\n'));
396
448
  }
397
- // Return incompatible (safer default) - users should be aware of version issues
398
- // Don't throw - this would break user experience during setup/execution
399
- return {
400
- compatible: false,
401
- installedVersion,
402
- supportedVersion,
403
- isNewer: false,
404
- hasUpdate: false,
405
- };
406
449
  }
407
450
  }
408
451
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/claude/claude.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,wBAAwB,GAEzB,MAAM,yCAAyC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AAE1C;;;GAGG;AACH,MAAM,qBAAqB,GAAG;IAC5B,KAAK,EAAE,8BAA8B;IACrC,OAAO,EAAE,+BAA+B;IACxC,KAAK,EAAE,8BAA8B;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,2CAA2C;IAExD,UAAU,EAAE,2BAA2B;IACvC,UAAU,EAAE,QAAQ;IAEpB,mCAAmC;IACnC,gBAAgB,EAAE,wBAAwB,EAAE,6CAA6C;IAEzF,6DAA6D;IAC7D,aAAa,EAAE,qBAAqB;IAEpC,qDAAqD;IACrD,SAAS,EAAE;QACT,IAAI,EAAE,SAAS;KAChB;IAED,UAAU,EAAE;QACV,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,MAAM,EAAE,CAAC,sBAAsB,CAAC;QAChC,KAAK,EAAE,CAAC,iBAAiB,CAAC;KAC3B;IAED,kBAAkB,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;IACxD,oBAAoB,EAAE,EAAE;IACxB,iBAAiB,EAAE,CAAC,mBAAmB,EAAE,eAAe,EAAE,SAAS,CAAC;IAEpE,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,gBAAgB;KAC7B;IAED,YAAY,EAAE;QACZ,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI;SACb;KACF;IAED,mEAAmE;IACnE,aAAa,EAAE;QACb,sBAAsB,EAAE,CAAC,MAAM,CAAC;KACjC;IAED,0CAA0C;IAC1C,iFAAiF;IACjF,uDAAuD;IACvD,iFAAiF;IACjF,SAAS,EAAE;QACT,KAAK,EAAE;YACL,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,2BAA2B;SACtC;QACD,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,YAAY;SACvB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,YAAY;SACvB;KACF;IAED,SAAS,EAAE;QACT,sDAAsD;QACtD,KAAK,CAAC,SAAS,CAAC,GAAG;YACjB,gDAAgD;YAChD,IAAI,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC;gBAChD,GAAG,CAAC,sCAAsC,GAAG,GAAG,CAAC;YACnD,CAAC;YAED,4EAA4E;YAC5E,yEAAyE;YACzE,2CAA2C;YAC3C,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;gBACtC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC;YACzC,CAAC;YAED,yEAAyE;YACzE,oFAAoF;YACpF,sEAAsE;YACtE,2CAA2C;YAC3C,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC;YAChC,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC;KACF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IACxC,cAAc,CAAiB;IAC/B,kBAAkB,CAAyB;IAEnD;QACE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,oEAAoE;QACpE,IAAI,CAAC,cAAc,GAAG,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QACrE,0EAA0E;QAC1E,IAAI,CAAC,kBAAkB,GAAG,IAAI,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAE7D,8FAA8F;QAC9F,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBAEnD,wDAAwD;gBACxD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACpE,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;gBAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAEnE,wDAAwD;YACxD,kCAAkC;YAClC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACpE,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,CAAC,yCAAyC;QACxD,CAAC;QAED,iGAAiG;QACjG,mEAAmE;QACnE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,gBAAgB;QAChB,wCAAwC;QACxC,2BAA2B;QAC3B,gCAAgC;QAChC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,0DAA0D;QAC1D,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,cAAc,CAAC,OAAgB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,sDAAsD;QACtD,IAAI,eAAe,GAAuB,OAAO,CAAC;QAClD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,MAAM,IAAI,sBAAsB,CAC9B,QAAQ,CAAC,IAAI,EACb,0CAA0C,CAC3C,CAAC;YACJ,CAAC;YACD,eAAe,GAAG,QAAQ,CAAC,gBAAgB,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;gBAC/B,IAAI,EAAE,WAAW;gBACjB,EAAE,EAAE,eAAe;aACpB,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,oEAAoE;QACpE,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAC7C,eAAe,CAAC,WAAW,EAAE,CAC9B,CAAC;YACF,MAAM,cAAc,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;YAE/D,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC;gBACvC,MAAM,IAAI,sBAAsB,CAC9B,QAAQ,CAAC,IAAI,EACb,4BAA4B,eAAe,uEAAuE,CACnH,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,OAAO,EAAE,eAAe;gBACxB,cAAc;gBACd,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAsB,CAC9B,QAAQ,CAAC,IAAI,EACb,sDAAsD,CACvD,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,CACT,cAAc,QAAQ,CAAC,WAAW,IAAI,eAAe,IAAI,QAAQ,KAAK,CACvE,CAAC;QAEF,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,aAAa,EACtB,eAAe,EACf;YACE,OAAO,EAAE,MAAM,EAAE,mBAAmB;YACpC,aAAa,EAAE,QAAQ,CAAC,UAAU,IAAI,SAAS;YAC/C,8DAA8D;YAC9D,uEAAuE;YACvE,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC;YAC1F,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,mDAAmD;SAC/E,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,sBAAsB,CAC9B,QAAQ,CAAC,IAAI,EACb,gCAAgC,MAAM,CAAC,MAAM,EAAE,CAChD,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CACZ,GAAG,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,yBAAyB,CAC5E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yFAAyF;YACzF,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;YAC/C,MAAM,CAAC,OAAO,CACZ,GAAG,QAAQ,CAAC,WAAW,IAAI,eAAe,IAAI,QAAQ,yBAAyB,CAChF,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CACT,0EAA0E,CAC3E,CAAC;gBACF,MAAM,CAAC,IAAI,CACT,+BAA+B,QAAQ,CAAC,UAAU,YAAY,CAC/D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CACT,yDAAyD,CAC1D,CAAC;gBACF,MAAM,CAAC,IAAI,CACT,2EAA2E,CAC5E,CAAC;gBACF,MAAM,CAAC,IAAI,CACT,mDAAmD,QAAQ,CAAC,UAAU,YAAY,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,yBAAyB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC;QAE/D,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjD,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;YAC7C,gBAAgB;YAChB,gBAAgB;SACjB,CAAC,CAAC;QAEH,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB;gBAChB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC/B,OAAO;gBACL,UAAU,EAAE,IAAI;gBAChB,gBAAgB;gBAChB,gBAAgB,EAAE,QAAQ;gBAC1B,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAEvE,0DAA0D;YAC1D,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;YAEjC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,UAAU;gBACV,gBAAgB;gBAChB,gBAAgB;gBAChB,UAAU,EAAE,UAAU,IAAI,CAAC;gBAC3B,OAAO,EAAE,UAAU,GAAG,CAAC;gBACvB,SAAS;aACV,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU,EAAE,UAAU,IAAI,CAAC,EAAE,uCAAuC;gBACpE,gBAAgB;gBAChB,gBAAgB;gBAChB,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,gDAAgD;gBACzE,SAAS,EAAE,4CAA4C;aACxD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iFAAiF;YACjF,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE;gBAC7C,KAAK,EAAE,QAAQ,CAAC,IAAI;aACrB,CAAC,CAAC;YAEH,iFAAiF;YACjF,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK;gBACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;YAErD,IAAI,YAAY,EAAE,CAAC;gBACjB,6FAA6F;gBAC7F,MAAM,CAAC,IAAI,CACT,gEAAgE,EAChE;oBACE,GAAG,YAAY;oBACf,SAAS,EAAE,2BAA2B;oBACtC,KAAK,EAAE,oBAAoB;oBAC3B,gBAAgB;oBAChB,gBAAgB;oBAChB,MAAM,EAAE,aAAa;iBACtB,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;oBAC9D,GAAG,YAAY;oBACf,SAAS,EAAE,2BAA2B;oBACtC,KAAK,EAAE,oBAAoB;oBAC3B,gBAAgB;oBAChB,gBAAgB;oBAChB,MAAM,EAAE,kBAAkB;iBAC3B,CAAC,CAAC;YACL,CAAC;YAED,gFAAgF;YAChF,wEAAwE;YACxE,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,gBAAgB;gBAChB,gBAAgB;gBAChB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"claude.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/claude/claude.plugin.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  "enabled": true,
3
3
  "strategy": "hybrid",
4
4
  "includes": [
5
+ "sound/**",
5
6
  "claude-templates/**"
6
7
  ],
7
8
  "excludes": [
@@ -5,5 +5,5 @@
5
5
  "name": "AI/Run CodeMie",
6
6
  "email": "support@codemieai.com"
7
7
  },
8
- "version": "1.0.7"
8
+ "version": "1.0.8"
9
9
  }
@@ -74,6 +74,102 @@ cp -r /path/to/codemie-code/src/agents/plugins/claude/plugin ~/.claude/plugins/c
74
74
 
75
75
  **Note:** Manual installation is only needed for non-SSO providers (litellm, bedrock, etc.)
76
76
 
77
+ ### Optional: Sound Effects
78
+
79
+ Add audio feedback to your Claude Code sessions with the `--sounds` flag.
80
+
81
+ **Prerequisites:**
82
+
83
+ Before running sounds installation, ensure you have an audio player installed:
84
+ - **macOS**: `afplay` (built-in, no installation needed)
85
+ - **Linux**: `sudo apt install alsa-utils` (aplay) or `sudo apt install pulseaudio-utils` (paplay)
86
+ - **Windows**: `choco install mpg123`
87
+ - **Alternative**: `brew install mpg123` (macOS), `sudo apt install mpg123` (Linux)
88
+
89
+ ⚠️ **Important**: Installation will fail if no audio player is found.
90
+
91
+ **Installation:**
92
+
93
+ ```bash
94
+ # Enable sounds during Claude installation
95
+ codemie install claude --sounds
96
+
97
+ # Add sounds to existing Claude installation (safe to re-run)
98
+ codemie install claude --sounds
99
+ ```
100
+
101
+ **What happens during installation:**
102
+ - ✅ Verifies required audio player is installed (fails if none found)
103
+ - ✅ Creates sound directories in `~/.codemie/sounds/`
104
+ - ✅ Configures hooks to play sounds on events
105
+
106
+ **Note**: The `play-random-sound.sh` script and hook configuration will be **automatically installed** to `~/.codemie/claude-plugin/` when you **first run** `codemie-claude`. This happens seamlessly in the background - you don't need to do anything manually.
107
+
108
+ **Installation Structure:**
109
+
110
+ After installation and first run, you'll have:
111
+ ```
112
+ ~/.codemie/
113
+ ├── sounds/ # Your sound files go here
114
+ │ ├── SessionStart/
115
+ │ ├── UserPromptSubmit/
116
+ │ ├── PermissionRequest/
117
+ │ └── Stop/
118
+ └── claude-plugin/ # Auto-created on first run
119
+ ├── sounds/
120
+ │ └── play-random-sound.sh # Hook script
121
+ └── hooks/
122
+ └── hooks.json # Hook configuration
123
+ ```
124
+
125
+ **Sound Events:**
126
+ - `SessionStart` - Plays when Claude Code starts
127
+ - `UserPromptSubmit` - Plays when you send a message
128
+ - `PermissionRequest` - Plays when Claude asks for clarification or permission
129
+ - `Stop` - Plays when Claude completes a task
130
+
131
+ **Adding Your Own Sounds:**
132
+
133
+ After installation, add WAV or MP3 files to these directories:
134
+ ```bash
135
+ ~/.codemie/sounds/SessionStart/ # Welcome sounds, greetings
136
+ ~/.codemie/sounds/UserPromptSubmit/ # Acknowledgment sounds (e.g., "Roger")
137
+ ~/.codemie/sounds/PermissionRequest/ # Question sounds (e.g., "Proceed?")
138
+ ~/.codemie/sounds/Stop/ # Completion sounds (e.g., "Done")
139
+ ```
140
+
141
+ **Popular Sound Packs:**
142
+ - Warcraft peon sounds (classic "Work work", "Yes milord")
143
+ - StarCraft unit acknowledgments
144
+ - Portal 2 GLaDOS quotes
145
+
146
+ **Where to download sounds:**
147
+ - https://x.com/delba_oliveira/status/2020515010985005255
148
+
149
+ **Troubleshooting:**
150
+
151
+ If sounds are not playing:
152
+ 1. Verify audio player is installed: `which afplay` (macOS) or `which aplay` (Linux)
153
+ 2. Check that sound files exist in `~/.codemie/sounds/<EventName>/`
154
+ 3. Ensure sound files are in WAV or MP3 format
155
+ 4. Check that `~/.codemie/claude-plugin/sounds/play-random-sound.sh` exists (created on first run)
156
+ 5. If script is missing, remove `~/.codemie/claude-plugin/` directory and restart `codemie-claude`
157
+
158
+ **⚠️ WINDOWS USERS:**
159
+
160
+ After the first run of `codemie-claude`, you need to update the hooks configuration:
161
+
162
+ 1. Edit `~/.codemie/claude-plugin/hooks/hooks.json`
163
+ 2. Change all instances of `play-random-sound.sh` to `play-random-sound.ps1`
164
+
165
+ This is required because Windows uses PowerShell scripts (.ps1) instead of bash scripts (.sh).
166
+
167
+ To completely remove sounds:
168
+ ```bash
169
+ rm -rf ~/.codemie/sounds
170
+ rm -rf ~/.codemie/claude-plugin
171
+ ```
172
+
77
173
  ## Usage
78
174
 
79
175
  Once loaded, the plugin automatically:
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ // CodeMie Statusline - auto-generated by codemie-claude --status
3
+ // Shows: [Model] dir | branch / context bar % | $cost | duration
4
+ //
5
+ // NOTE: This file is deployed as a standalone script to ~/.claude/ and has no
6
+ // access to the CodeMie utils layer. Direct child_process and path imports are
7
+ // intentional here - this script runs independently without the project runtime.
8
+ import { execSync } from 'child_process';
9
+ import { basename } from 'path';
10
+
11
+ let input = '';
12
+ process.stdin.on('data', chunk => input += chunk);
13
+ process.stdin.on('end', () => {
14
+ try {
15
+ const data = JSON.parse(input);
16
+ const model = data.model?.display_name || 'Claude';
17
+ const dir = basename(data.workspace?.current_dir || process.cwd());
18
+ const cost = data.cost?.total_cost_usd || 0;
19
+ const pct = Math.floor(data.context_window?.used_percentage || 0);
20
+ const durationMs = data.cost?.total_duration_ms || 0;
21
+
22
+ const CYAN = '\x1b[36m', GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RED = '\x1b[31m', RESET = '\x1b[0m';
23
+
24
+ const barColor = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;
25
+ const filled = Math.floor(pct / 10);
26
+ const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);
27
+
28
+ const mins = Math.floor(durationMs / 60000);
29
+ const secs = Math.floor((durationMs % 60000) / 1000);
30
+
31
+ let branch = '';
32
+ try {
33
+ branch = execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();
34
+ branch = branch ? ' | 🌿 ' + branch : '';
35
+ } catch {}
36
+
37
+ process.stdout.write(CYAN + '[' + model + ']' + RESET + ' 📁 ' + dir + branch + '\n');
38
+ process.stdout.write(barColor + bar + RESET + ' ' + pct + '% | ' + YELLOW + '$' + cost.toFixed(4) + RESET + ' | ⏱️ ' + mins + 'm ' + secs + 's\n');
39
+ } catch {
40
+ // Silent fail - statusline must never crash Claude Code
41
+ }
42
+ });
@@ -8,6 +8,10 @@
8
8
  "type": "command",
9
9
  "command": "codemie hook",
10
10
  "timeout": 5
11
+ },
12
+ {
13
+ "type": "command",
14
+ "command": "~/.codemie/claude-plugin/sounds/play-random-sound.sh ~/.codemie/sounds/SessionStart"
11
15
  }
12
16
  ]
13
17
  }
@@ -30,6 +34,10 @@
30
34
  "type": "command",
31
35
  "command": "codemie hook",
32
36
  "timeout": 2
37
+ },
38
+ {
39
+ "type": "command",
40
+ "command": "~/.codemie/claude-plugin/sounds/play-random-sound.sh ~/.codemie/sounds/PermissionRequest"
33
41
  }
34
42
  ]
35
43
  }
@@ -52,6 +60,10 @@
52
60
  "type": "command",
53
61
  "command": "codemie hook",
54
62
  "timeout": 2
63
+ },
64
+ {
65
+ "type": "command",
66
+ "command": "~/.codemie/claude-plugin/sounds/play-random-sound.sh ~/.codemie/sounds/Stop"
55
67
  }
56
68
  ]
57
69
  }
@@ -63,6 +75,10 @@
63
75
  "type": "command",
64
76
  "command": "codemie hook",
65
77
  "timeout": 2
78
+ },
79
+ {
80
+ "type": "command",
81
+ "command": "~/.codemie/claude-plugin/sounds/play-random-sound.sh ~/.codemie/sounds/UserPromptSubmit"
66
82
  }
67
83
  ]
68
84
  }
@@ -0,0 +1,112 @@
1
+ # play-random-sound.ps1
2
+ # Plays a random WAV or MP3 file from the specified directory (Windows)
3
+ # Usage: .\play-random-sound.ps1 <directory>
4
+
5
+ param(
6
+ [Parameter(Mandatory=$true, Position=0)]
7
+ [string]$Directory
8
+ )
9
+
10
+ # Set error action preference to stop on errors
11
+ $ErrorActionPreference = "Stop"
12
+
13
+ # Expand environment variables in the path (e.g., %USERPROFILE%)
14
+ $SoundDir = [System.Environment]::ExpandEnvironmentVariables($Directory)
15
+
16
+ # Check if directory exists - exit silently if not found
17
+ if (-not (Test-Path -Path $SoundDir -PathType Container)) {
18
+ exit 0
19
+ }
20
+
21
+ # Find all audio files (WAV and MP3)
22
+ $AudioFiles = Get-ChildItem -Path $SoundDir -File -Include *.wav,*.mp3 -ErrorAction SilentlyContinue
23
+
24
+ # Check if any audio files were found
25
+ if ($AudioFiles.Count -eq 0) {
26
+ exit 0
27
+ }
28
+
29
+ # Select a random file
30
+ $SelectedFile = $AudioFiles | Get-Random
31
+
32
+ # Function to play audio using mpg123 (if available)
33
+ function Play-WithMpg123 {
34
+ param([string]$FilePath)
35
+
36
+ try {
37
+ $mpg123 = Get-Command mpg123 -ErrorAction Stop
38
+ Start-Process -FilePath $mpg123.Source -ArgumentList "-q", "`"$FilePath`"" -NoNewWindow -Wait:$false
39
+ return $true
40
+ } catch {
41
+ return $false
42
+ }
43
+ }
44
+
45
+ # Function to play audio using Windows Media Player COM
46
+ function Play-WithWMP {
47
+ param([string]$FilePath)
48
+
49
+ try {
50
+ $wmp = New-Object -ComObject WMPlayer.OCX
51
+ $wmp.URL = $FilePath
52
+ $wmp.controls.play()
53
+
54
+ # Start playback in background (don't wait for completion)
55
+ Start-Sleep -Milliseconds 500
56
+ return $true
57
+ } catch {
58
+ return $false
59
+ }
60
+ }
61
+
62
+ # Function to play audio using .NET SoundPlayer (WAV only)
63
+ function Play-WithSoundPlayer {
64
+ param([string]$FilePath)
65
+
66
+ # SoundPlayer only supports WAV files
67
+ if ($FilePath -notmatch '\.wav$') {
68
+ return $false
69
+ }
70
+
71
+ try {
72
+ Add-Type -AssemblyName System.Windows.Forms
73
+ $player = New-Object System.Media.SoundPlayer
74
+ $player.SoundLocation = $FilePath
75
+ $player.PlaySync() # Play asynchronously
76
+
77
+ # Start in background job to avoid blocking
78
+ Start-Job -ScriptBlock {
79
+ param($path)
80
+ Add-Type -AssemblyName System.Windows.Forms
81
+ $p = New-Object System.Media.SoundPlayer
82
+ $p.SoundLocation = $path
83
+ $p.PlaySync()
84
+ } -ArgumentList $FilePath | Out-Null
85
+
86
+ return $true
87
+ } catch {
88
+ return $false
89
+ }
90
+ }
91
+
92
+ # Try audio players in order of preference
93
+ $played = $false
94
+
95
+ # 1. Try mpg123 (best option, cross-platform)
96
+ if (Play-WithMpg123 -FilePath $SelectedFile.FullName) {
97
+ $played = $true
98
+ }
99
+ # 2. Try Windows Media Player COM
100
+ elseif (Play-WithWMP -FilePath $SelectedFile.FullName) {
101
+ $played = $true
102
+ }
103
+ # 3. Try .NET SoundPlayer (WAV only)
104
+ elseif (Play-WithSoundPlayer -FilePath $SelectedFile.FullName) {
105
+ $played = $true
106
+ }
107
+
108
+ if (-not $played) {
109
+ exit 0
110
+ }
111
+
112
+ exit 0