@codemieai/code 0.0.1

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 (159) hide show
  1. package/.claude/agents/README.md +298 -0
  2. package/.claude/agents/release-manager.md +857 -0
  3. package/CLAUDE.md +856 -0
  4. package/LICENSE +201 -0
  5. package/README.md +917 -0
  6. package/bin/codemie-code.js +23 -0
  7. package/bin/codemie.js +8 -0
  8. package/dist/agents/adapters/aider.d.ts +12 -0
  9. package/dist/agents/adapters/aider.d.ts.map +1 -0
  10. package/dist/agents/adapters/aider.js +80 -0
  11. package/dist/agents/adapters/aider.js.map +1 -0
  12. package/dist/agents/adapters/claude-code.d.ts +12 -0
  13. package/dist/agents/adapters/claude-code.d.ts.map +1 -0
  14. package/dist/agents/adapters/claude-code.js +98 -0
  15. package/dist/agents/adapters/claude-code.js.map +1 -0
  16. package/dist/agents/adapters/codemie-code.d.ts +12 -0
  17. package/dist/agents/adapters/codemie-code.d.ts.map +1 -0
  18. package/dist/agents/adapters/codemie-code.js +42 -0
  19. package/dist/agents/adapters/codemie-code.js.map +1 -0
  20. package/dist/agents/adapters/codex.d.ts +12 -0
  21. package/dist/agents/adapters/codex.d.ts.map +1 -0
  22. package/dist/agents/adapters/codex.js +80 -0
  23. package/dist/agents/adapters/codex.js.map +1 -0
  24. package/dist/agents/registry.d.ts +18 -0
  25. package/dist/agents/registry.d.ts.map +1 -0
  26. package/dist/agents/registry.js +35 -0
  27. package/dist/agents/registry.js.map +1 -0
  28. package/dist/cli/cli.d.ts +4 -0
  29. package/dist/cli/cli.d.ts.map +1 -0
  30. package/dist/cli/cli.js +107 -0
  31. package/dist/cli/cli.js.map +1 -0
  32. package/dist/cli/commands/doctor.d.ts +3 -0
  33. package/dist/cli/commands/doctor.d.ts.map +1 -0
  34. package/dist/cli/commands/doctor.js +128 -0
  35. package/dist/cli/commands/doctor.js.map +1 -0
  36. package/dist/cli/commands/install.d.ts +3 -0
  37. package/dist/cli/commands/install.d.ts.map +1 -0
  38. package/dist/cli/commands/install.js +76 -0
  39. package/dist/cli/commands/install.js.map +1 -0
  40. package/dist/cli/commands/list.d.ts +3 -0
  41. package/dist/cli/commands/list.d.ts.map +1 -0
  42. package/dist/cli/commands/list.js +50 -0
  43. package/dist/cli/commands/list.js.map +1 -0
  44. package/dist/cli/commands/mcp.d.ts +3 -0
  45. package/dist/cli/commands/mcp.d.ts.map +1 -0
  46. package/dist/cli/commands/mcp.js +459 -0
  47. package/dist/cli/commands/mcp.js.map +1 -0
  48. package/dist/cli/commands/run.d.ts +3 -0
  49. package/dist/cli/commands/run.d.ts.map +1 -0
  50. package/dist/cli/commands/run.js +41 -0
  51. package/dist/cli/commands/run.js.map +1 -0
  52. package/dist/cli/commands/uninstall.d.ts +3 -0
  53. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  54. package/dist/cli/commands/uninstall.js +71 -0
  55. package/dist/cli/commands/uninstall.js.map +1 -0
  56. package/dist/cli/commands/version.d.ts +3 -0
  57. package/dist/cli/commands/version.d.ts.map +1 -0
  58. package/dist/cli/commands/version.js +28 -0
  59. package/dist/cli/commands/version.js.map +1 -0
  60. package/dist/cli/index.d.ts +3 -0
  61. package/dist/cli/index.d.ts.map +1 -0
  62. package/dist/cli/index.js +50 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/code/agent-events.d.ts +39 -0
  65. package/dist/code/agent-events.d.ts.map +1 -0
  66. package/dist/code/agent-events.js +4 -0
  67. package/dist/code/agent-events.js.map +1 -0
  68. package/dist/code/agent.d.ts +19 -0
  69. package/dist/code/agent.d.ts.map +1 -0
  70. package/dist/code/agent.js +144 -0
  71. package/dist/code/agent.js.map +1 -0
  72. package/dist/code/config.d.ts +13 -0
  73. package/dist/code/config.d.ts.map +1 -0
  74. package/dist/code/config.js +41 -0
  75. package/dist/code/config.js.map +1 -0
  76. package/dist/code/index.d.ts +19 -0
  77. package/dist/code/index.d.ts.map +1 -0
  78. package/dist/code/index.js +400 -0
  79. package/dist/code/index.js.map +1 -0
  80. package/dist/code/prompts.d.ts +2 -0
  81. package/dist/code/prompts.d.ts.map +1 -0
  82. package/dist/code/prompts.js +45 -0
  83. package/dist/code/prompts.js.map +1 -0
  84. package/dist/code/tools/command.d.ts +8 -0
  85. package/dist/code/tools/command.d.ts.map +1 -0
  86. package/dist/code/tools/command.js +83 -0
  87. package/dist/code/tools/command.js.map +1 -0
  88. package/dist/code/tools/diff-utils.d.ts +2 -0
  89. package/dist/code/tools/diff-utils.d.ts.map +1 -0
  90. package/dist/code/tools/diff-utils.js +45 -0
  91. package/dist/code/tools/diff-utils.js.map +1 -0
  92. package/dist/code/tools/filesystem.d.ts +11 -0
  93. package/dist/code/tools/filesystem.d.ts.map +1 -0
  94. package/dist/code/tools/filesystem.js +442 -0
  95. package/dist/code/tools/filesystem.js.map +1 -0
  96. package/dist/code/tools/git.d.ts +7 -0
  97. package/dist/code/tools/git.d.ts.map +1 -0
  98. package/dist/code/tools/git.js +111 -0
  99. package/dist/code/tools/git.js.map +1 -0
  100. package/dist/code/tools/mcp.d.ts +13 -0
  101. package/dist/code/tools/mcp.d.ts.map +1 -0
  102. package/dist/code/tools/mcp.js +230 -0
  103. package/dist/code/tools/mcp.js.map +1 -0
  104. package/dist/data/tips.json +118 -0
  105. package/dist/env/manager.d.ts +14 -0
  106. package/dist/env/manager.d.ts.map +1 -0
  107. package/dist/env/manager.js +99 -0
  108. package/dist/env/manager.js.map +1 -0
  109. package/dist/index.d.ts +14 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +47 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/ui/terminal-ui.d.ts +73 -0
  114. package/dist/ui/terminal-ui.d.ts.map +1 -0
  115. package/dist/ui/terminal-ui.js +900 -0
  116. package/dist/ui/terminal-ui.js.map +1 -0
  117. package/dist/utils/async-tips.d.ts +64 -0
  118. package/dist/utils/async-tips.d.ts.map +1 -0
  119. package/dist/utils/async-tips.js +242 -0
  120. package/dist/utils/async-tips.js.map +1 -0
  121. package/dist/utils/env-mapper.d.ts +40 -0
  122. package/dist/utils/env-mapper.d.ts.map +1 -0
  123. package/dist/utils/env-mapper.js +122 -0
  124. package/dist/utils/env-mapper.js.map +1 -0
  125. package/dist/utils/errors.d.ts +25 -0
  126. package/dist/utils/errors.d.ts.map +1 -0
  127. package/dist/utils/errors.js +58 -0
  128. package/dist/utils/errors.js.map +1 -0
  129. package/dist/utils/exec.d.ts +12 -0
  130. package/dist/utils/exec.d.ts.map +1 -0
  131. package/dist/utils/exec.js +49 -0
  132. package/dist/utils/exec.js.map +1 -0
  133. package/dist/utils/logger.d.ts +19 -0
  134. package/dist/utils/logger.d.ts.map +1 -0
  135. package/dist/utils/logger.js +53 -0
  136. package/dist/utils/logger.js.map +1 -0
  137. package/dist/utils/tips.d.ts +35 -0
  138. package/dist/utils/tips.d.ts.map +1 -0
  139. package/dist/utils/tips.js +132 -0
  140. package/dist/utils/tips.js.map +1 -0
  141. package/docs/USER_GUIDE.md +573 -0
  142. package/eslint.config.mjs +43 -0
  143. package/package.json +66 -0
  144. package/tests/agent-direct.test.mjs +45 -0
  145. package/tests/agent-output.test.mjs +64 -0
  146. package/tests/codemie-code.test.mjs +42 -0
  147. package/tests/context7-only.test.mjs +42 -0
  148. package/tests/conversation-flow.test.mjs +63 -0
  149. package/tests/interactive-simulation.test.mjs +60 -0
  150. package/tests/live-output.test.mjs +53 -0
  151. package/tests/mcp-context7.test.mjs +105 -0
  152. package/tests/mcp-e2e.test.mjs +109 -0
  153. package/tests/mcp-time-server.test.mjs +58 -0
  154. package/tests/streaming.test.mjs +57 -0
  155. package/tests/test-helpers.mjs +94 -0
  156. package/tests/text-wrapping.test.mjs +33 -0
  157. package/tests/tool-count.test.mjs +81 -0
  158. package/tests/ui-format.test.mjs +39 -0
  159. package/tests/ui-state.test.mjs +72 -0
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * CodeMie Code - AI Coding Assistant
5
+ * Entry point for the codemie-code executable
6
+ */
7
+
8
+ const { runCLI } = require('../dist/cli/cli.js');
9
+ const { logger } = require('../dist/utils/logger.js');
10
+
11
+ async function main() {
12
+ try {
13
+ await runCLI();
14
+ } catch (error) {
15
+ logger.error('Failed to run CodeMie Code:', error);
16
+ process.exit(1);
17
+ }
18
+ }
19
+
20
+ main().catch((error) => {
21
+ console.error('Unhandled error:', error);
22
+ process.exit(1);
23
+ });
package/bin/codemie.js ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * CodeMie CLI Wrapper
5
+ * Entry point for the codemie executable
6
+ */
7
+
8
+ require('../dist/cli/index.js');
@@ -0,0 +1,12 @@
1
+ import { AgentAdapter } from '../registry';
2
+ export declare class AiderAdapter implements AgentAdapter {
3
+ name: string;
4
+ displayName: string;
5
+ description: string;
6
+ install(): Promise<void>;
7
+ uninstall(): Promise<void>;
8
+ isInstalled(): Promise<boolean>;
9
+ run(args: string[]): Promise<void>;
10
+ getVersion(): Promise<string | null>;
11
+ }
12
+ //# sourceMappingURL=aider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aider.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/aider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,SAAW;IACf,WAAW,SAAW;IACtB,WAAW,SAAkD;IAEvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BlC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQ3C"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiderAdapter = void 0;
4
+ const exec_1 = require("../../utils/exec");
5
+ const logger_1 = require("../../utils/logger");
6
+ const child_process_1 = require("child_process");
7
+ class AiderAdapter {
8
+ name = 'aider';
9
+ displayName = 'Aider';
10
+ description = 'Aider - AI pair programming in your terminal';
11
+ async install() {
12
+ logger_1.logger.info('Installing Aider...');
13
+ try {
14
+ // Install via pip
15
+ await (0, exec_1.exec)('pip', ['install', 'aider-chat'], { timeout: 120000 });
16
+ logger_1.logger.success('Aider installed successfully');
17
+ }
18
+ catch (error) {
19
+ const errorMessage = error instanceof Error ? error.message : String(error);
20
+ throw new Error(`Failed to install Aider: ${errorMessage}`);
21
+ }
22
+ }
23
+ async uninstall() {
24
+ logger_1.logger.info('Uninstalling Aider...');
25
+ try {
26
+ await (0, exec_1.exec)('pip', ['uninstall', '-y', 'aider-chat']);
27
+ logger_1.logger.success('Aider uninstalled successfully');
28
+ }
29
+ catch (error) {
30
+ const errorMessage = error instanceof Error ? error.message : String(error);
31
+ throw new Error(`Failed to uninstall Aider: ${errorMessage}`);
32
+ }
33
+ }
34
+ async isInstalled() {
35
+ try {
36
+ const result = await (0, exec_1.exec)('which', ['aider']);
37
+ return result.code === 0;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ async run(args) {
44
+ logger_1.logger.info('Starting Aider...');
45
+ // Set model from environment if configured
46
+ const env = { ...process.env };
47
+ if (process.env.AIDER_MODEL) {
48
+ env.AIDER_MODEL = process.env.AIDER_MODEL;
49
+ }
50
+ // Spawn Aider
51
+ const child = (0, child_process_1.spawn)('aider', args, {
52
+ stdio: 'inherit',
53
+ env
54
+ });
55
+ return new Promise((resolve, reject) => {
56
+ child.on('error', (error) => {
57
+ reject(new Error(`Failed to start Aider: ${error.message}`));
58
+ });
59
+ child.on('exit', (code) => {
60
+ if (code === 0) {
61
+ resolve();
62
+ }
63
+ else {
64
+ reject(new Error(`Aider exited with code ${code}`));
65
+ }
66
+ });
67
+ });
68
+ }
69
+ async getVersion() {
70
+ try {
71
+ const result = await (0, exec_1.exec)('aider', ['--version']);
72
+ return result.stdout.trim();
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ }
79
+ exports.AiderAdapter = AiderAdapter;
80
+ //# sourceMappingURL=aider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aider.js","sourceRoot":"","sources":["../../../src/agents/adapters/aider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AgentAdapter } from '../registry';
2
+ export declare class ClaudeCodeAdapter implements AgentAdapter {
3
+ name: string;
4
+ displayName: string;
5
+ description: string;
6
+ install(): Promise<void>;
7
+ uninstall(): Promise<void>;
8
+ isInstalled(): Promise<boolean>;
9
+ run(args: string[]): Promise<void>;
10
+ getVersion(): Promise<string | null>;
11
+ }
12
+ //# sourceMappingURL=claude-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,qBAAa,iBAAkB,YAAW,YAAY;IACpD,IAAI,SAAY;IAChB,WAAW,SAAiB;IAC5B,WAAW,SAA+C;IAEpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDlC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQ3C"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClaudeCodeAdapter = void 0;
4
+ const exec_1 = require("../../utils/exec");
5
+ const logger_1 = require("../../utils/logger");
6
+ const child_process_1 = require("child_process");
7
+ class ClaudeCodeAdapter {
8
+ name = 'claude';
9
+ displayName = 'Claude Code';
10
+ description = 'Anthropic Claude Code - official CLI tool';
11
+ async install() {
12
+ logger_1.logger.info('Installing Claude Code...');
13
+ try {
14
+ // Install via npm
15
+ await (0, exec_1.exec)('npm', ['install', '-g', '@anthropic-ai/claude-code'], { timeout: 120000 });
16
+ logger_1.logger.success('Claude Code installed successfully');
17
+ }
18
+ catch (error) {
19
+ const errorMessage = error instanceof Error ? error.message : String(error);
20
+ throw new Error(`Failed to install Claude Code: ${errorMessage}`);
21
+ }
22
+ }
23
+ async uninstall() {
24
+ logger_1.logger.info('Uninstalling Claude Code...');
25
+ try {
26
+ await (0, exec_1.exec)('npm', ['uninstall', '-g', '@anthropic-ai/claude-code']);
27
+ logger_1.logger.success('Claude Code uninstalled successfully');
28
+ }
29
+ catch (error) {
30
+ const errorMessage = error instanceof Error ? error.message : String(error);
31
+ throw new Error(`Failed to uninstall Claude Code: ${errorMessage}`);
32
+ }
33
+ }
34
+ async isInstalled() {
35
+ try {
36
+ const result = await (0, exec_1.exec)('which', ['claude']);
37
+ return result.code === 0;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ async run(args) {
44
+ logger_1.logger.info('Starting Claude Code...');
45
+ // Prepare environment variables
46
+ // Convert generic CODEMIE_* config to ANTHROPIC_* that Claude Code expects
47
+ const env = { ...process.env };
48
+ // Map our generic env vars to Anthropic-specific ones
49
+ if (!env.ANTHROPIC_BASE_URL && env.CODEMIE_BASE_URL) {
50
+ env.ANTHROPIC_BASE_URL = env.CODEMIE_BASE_URL;
51
+ }
52
+ if (!env.ANTHROPIC_AUTH_TOKEN && env.CODEMIE_AUTH_TOKEN) {
53
+ env.ANTHROPIC_AUTH_TOKEN = env.CODEMIE_AUTH_TOKEN;
54
+ }
55
+ if (!env.ANTHROPIC_API_KEY && env.CODEMIE_AUTH_TOKEN) {
56
+ env.ANTHROPIC_API_KEY = env.CODEMIE_AUTH_TOKEN;
57
+ }
58
+ if (!env.ANTHROPIC_MODEL && env.CODEMIE_MODEL) {
59
+ env.ANTHROPIC_MODEL = env.CODEMIE_MODEL;
60
+ }
61
+ // Set subagent model to match the main model
62
+ if (!env.CLAUDE_CODE_SUBAGENT_MODEL && env.CODEMIE_MODEL) {
63
+ env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_MODEL;
64
+ }
65
+ else if (!env.CLAUDE_CODE_SUBAGENT_MODEL && env.ANTHROPIC_MODEL) {
66
+ env.CLAUDE_CODE_SUBAGENT_MODEL = env.ANTHROPIC_MODEL;
67
+ }
68
+ // Spawn Claude Code
69
+ const child = (0, child_process_1.spawn)('claude', args, {
70
+ stdio: 'inherit',
71
+ env
72
+ });
73
+ return new Promise((resolve, reject) => {
74
+ child.on('error', (error) => {
75
+ reject(new Error(`Failed to start Claude Code: ${error.message}`));
76
+ });
77
+ child.on('exit', (code) => {
78
+ if (code === 0) {
79
+ resolve();
80
+ }
81
+ else {
82
+ reject(new Error(`Claude Code exited with code ${code}`));
83
+ }
84
+ });
85
+ });
86
+ }
87
+ async getVersion() {
88
+ try {
89
+ const result = await (0, exec_1.exec)('claude', ['--version']);
90
+ return result.stdout.trim();
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ }
96
+ }
97
+ exports.ClaudeCodeAdapter = ClaudeCodeAdapter;
98
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/agents/adapters/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AgentAdapter } from '../registry';
2
+ export declare class CodeMieCodeAdapter implements AgentAdapter {
3
+ name: string;
4
+ displayName: string;
5
+ description: string;
6
+ install(): Promise<void>;
7
+ uninstall(): Promise<void>;
8
+ isInstalled(): Promise<boolean>;
9
+ run(args: string[]): Promise<void>;
10
+ getVersion(): Promise<string | null>;
11
+ }
12
+ //# sourceMappingURL=codemie-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemie-code.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/codemie-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,qBAAa,kBAAmB,YAAW,YAAY;IACrD,IAAI,SAAkB;IACtB,WAAW,SAAkB;IAC7B,WAAW,SAAqD;IAE1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASlC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAW3C"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeMieCodeAdapter = void 0;
4
+ const code_1 = require("../../code");
5
+ const logger_1 = require("../../utils/logger");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ class CodeMieCodeAdapter {
9
+ name = 'codemie-code';
10
+ displayName = 'CodeMie Code';
11
+ description = 'Built-in AI coding assistant powered by LiteLLM';
12
+ async install() {
13
+ logger_1.logger.info('CodeMie Code is built-in and already available');
14
+ }
15
+ async uninstall() {
16
+ logger_1.logger.warn('CodeMie Code is built-in and cannot be uninstalled');
17
+ }
18
+ async isInstalled() {
19
+ return true; // Always installed (built-in)
20
+ }
21
+ async run(args) {
22
+ const workingDir = args[0] || process.cwd();
23
+ const assistant = new code_1.CodeMieCode(workingDir);
24
+ await assistant.initialize();
25
+ await assistant.startInteractive();
26
+ await assistant.dispose();
27
+ }
28
+ async getVersion() {
29
+ // Read from package.json
30
+ try {
31
+ const packageJsonPath = (0, path_1.join)(__dirname, '../../../package.json');
32
+ const packageJsonContent = (0, fs_1.readFileSync)(packageJsonPath, 'utf-8');
33
+ const packageJson = JSON.parse(packageJsonContent);
34
+ return packageJson.version;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ }
41
+ exports.CodeMieCodeAdapter = CodeMieCodeAdapter;
42
+ //# sourceMappingURL=codemie-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemie-code.js","sourceRoot":"","sources":["../../../src/agents/adapters/codemie-code.ts"],"names":[],"mappings":";;;AACA,qCAAyC;AACzC,+CAA4C;AAC5C,2BAAkC;AAClC,+BAA4B;AAE5B,MAAa,kBAAkB;IAC7B,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,cAAc,CAAC;IAC7B,WAAW,GAAG,iDAAiD,CAAC;IAEhE,KAAK,CAAC,OAAO;QACX,eAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,SAAS;QACb,eAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE5C,MAAM,SAAS,GAAG,IAAI,kBAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;QACnC,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAAG,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAwB,CAAC;YAC1E,OAAO,WAAW,CAAC,OAAO,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AArCD,gDAqCC"}
@@ -0,0 +1,12 @@
1
+ import { AgentAdapter } from '../registry';
2
+ export declare class CodexAdapter implements AgentAdapter {
3
+ name: string;
4
+ displayName: string;
5
+ description: string;
6
+ install(): Promise<void>;
7
+ uninstall(): Promise<void>;
8
+ isInstalled(): Promise<boolean>;
9
+ run(args: string[]): Promise<void>;
10
+ getVersion(): Promise<string | null>;
11
+ }
12
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,SAAW;IACf,WAAW,SAAW;IACtB,WAAW,SAAwC;IAE7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BlC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQ3C"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodexAdapter = void 0;
4
+ const exec_1 = require("../../utils/exec");
5
+ const logger_1 = require("../../utils/logger");
6
+ const child_process_1 = require("child_process");
7
+ class CodexAdapter {
8
+ name = 'codex';
9
+ displayName = 'Codex';
10
+ description = 'OpenAI Codex - AI coding assistant';
11
+ async install() {
12
+ logger_1.logger.info('Installing Codex...');
13
+ try {
14
+ // Install via pip
15
+ await (0, exec_1.exec)('pip', ['install', 'openai-codex'], { timeout: 120000 });
16
+ logger_1.logger.success('Codex installed successfully');
17
+ }
18
+ catch (error) {
19
+ const errorMessage = error instanceof Error ? error.message : String(error);
20
+ throw new Error(`Failed to install Codex: ${errorMessage}`);
21
+ }
22
+ }
23
+ async uninstall() {
24
+ logger_1.logger.info('Uninstalling Codex...');
25
+ try {
26
+ await (0, exec_1.exec)('pip', ['uninstall', '-y', 'openai-codex']);
27
+ logger_1.logger.success('Codex uninstalled successfully');
28
+ }
29
+ catch (error) {
30
+ const errorMessage = error instanceof Error ? error.message : String(error);
31
+ throw new Error(`Failed to uninstall Codex: ${errorMessage}`);
32
+ }
33
+ }
34
+ async isInstalled() {
35
+ try {
36
+ const result = await (0, exec_1.exec)('which', ['codex']);
37
+ return result.code === 0;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ async run(args) {
44
+ logger_1.logger.info('Starting Codex...');
45
+ // Set model from environment if configured
46
+ const env = { ...process.env };
47
+ if (process.env.CODEX_MODEL) {
48
+ env.CODEX_MODEL = process.env.CODEX_MODEL;
49
+ }
50
+ // Spawn Codex
51
+ const child = (0, child_process_1.spawn)('codex', args, {
52
+ stdio: 'inherit',
53
+ env
54
+ });
55
+ return new Promise((resolve, reject) => {
56
+ child.on('error', (error) => {
57
+ reject(new Error(`Failed to start Codex: ${error.message}`));
58
+ });
59
+ child.on('exit', (code) => {
60
+ if (code === 0) {
61
+ resolve();
62
+ }
63
+ else {
64
+ reject(new Error(`Codex exited with code ${code}`));
65
+ }
66
+ });
67
+ });
68
+ }
69
+ async getVersion() {
70
+ try {
71
+ const result = await (0, exec_1.exec)('codex', ['--version']);
72
+ return result.stdout.trim();
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ }
79
+ exports.CodexAdapter = CodexAdapter;
80
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface AgentAdapter {
2
+ name: string;
3
+ displayName: string;
4
+ description: string;
5
+ install(): Promise<void>;
6
+ uninstall(): Promise<void>;
7
+ isInstalled(): Promise<boolean>;
8
+ run(args: string[]): Promise<void>;
9
+ getVersion(): Promise<string | null>;
10
+ }
11
+ export declare class AgentRegistry {
12
+ private static adapters;
13
+ static getAgent(name: string): AgentAdapter | undefined;
14
+ static getAllAgents(): AgentAdapter[];
15
+ static getAgentNames(): string[];
16
+ static getInstalledAgents(): Promise<AgentAdapter[]>;
17
+ }
18
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAKpB;IAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIvD,MAAM,CAAC,YAAY,IAAI,YAAY,EAAE;IAIrC,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE;WAInB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAS3D"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentRegistry = void 0;
4
+ const codemie_code_1 = require("./adapters/codemie-code");
5
+ const claude_code_1 = require("./adapters/claude-code");
6
+ const codex_1 = require("./adapters/codex");
7
+ const aider_1 = require("./adapters/aider");
8
+ class AgentRegistry {
9
+ static adapters = new Map([
10
+ ['codemie-code', new codemie_code_1.CodeMieCodeAdapter()],
11
+ ['claude', new claude_code_1.ClaudeCodeAdapter()],
12
+ ['codex', new codex_1.CodexAdapter()],
13
+ ['aider', new aider_1.AiderAdapter()]
14
+ ]);
15
+ static getAgent(name) {
16
+ return AgentRegistry.adapters.get(name);
17
+ }
18
+ static getAllAgents() {
19
+ return Array.from(AgentRegistry.adapters.values());
20
+ }
21
+ static getAgentNames() {
22
+ return Array.from(AgentRegistry.adapters.keys());
23
+ }
24
+ static async getInstalledAgents() {
25
+ const agents = [];
26
+ for (const adapter of AgentRegistry.adapters.values()) {
27
+ if (await adapter.isInstalled()) {
28
+ agents.push(adapter);
29
+ }
30
+ }
31
+ return agents;
32
+ }
33
+ }
34
+ exports.AgentRegistry = AgentRegistry;
35
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":";;;AAAA,0DAA6D;AAC7D,wDAA2D;AAC3D,4CAAgD;AAChD,4CAAgD;AAahD,MAAa,aAAa;IAChB,MAAM,CAAC,QAAQ,GAA8B,IAAI,GAAG,CAAC;QAC3D,CAAC,cAAc,EAAE,IAAI,iCAAkB,EAAE,CAAC;QAC1C,CAAC,QAAQ,EAAE,IAAI,+BAAiB,EAAE,CAAC;QACnC,CAAC,OAAO,EAAE,IAAI,oBAAY,EAAE,CAAC;QAC7B,CAAC,OAAO,EAAE,IAAI,oBAAY,EAAE,CAAC;KAC9B,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB;QAC7B,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,IAAI,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;;AA5BH,sCA6BC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCLI(): Promise<Command>;
3
+ export declare function runCLI(): Promise<void>;
4
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAmGlD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAG5C"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCLI = createCLI;
4
+ exports.runCLI = runCLI;
5
+ const commander_1 = require("commander");
6
+ const index_1 = require("../code/index");
7
+ const logger_1 = require("../utils/logger");
8
+ const mcp_1 = require("./commands/mcp");
9
+ async function createCLI() {
10
+ const program = new commander_1.Command();
11
+ program
12
+ .name('codemie-code')
13
+ .description('CodeMie Code - AI coding assistant and CLI wrapper for multiple agents')
14
+ .version('1.0.0');
15
+ // Add MCP management command
16
+ program.addCommand((0, mcp_1.createMCPCommand)());
17
+ // Interactive mode (default)
18
+ program
19
+ .command('interactive', { isDefault: false })
20
+ .description('Start interactive mode with terminal UI (default)')
21
+ .argument('[working-dir]', 'Working directory', process.cwd())
22
+ .option('--mcp-servers <servers>', 'Comma-separated list of MCP servers to load')
23
+ .action(async (workingDir, options) => {
24
+ try {
25
+ // Set MCP servers in environment if provided
26
+ if (options.mcpServers) {
27
+ process.env.CODEMIE_MCP_SERVERS = options.mcpServers;
28
+ }
29
+ const assistant = new index_1.CodeMieCode(workingDir);
30
+ await assistant.initialize();
31
+ await assistant.startInteractive();
32
+ await assistant.dispose();
33
+ }
34
+ catch (error) {
35
+ logger_1.logger.error('Failed to start CodeMie Code:', error);
36
+ process.exit(1);
37
+ }
38
+ });
39
+ // Execute mode (non-interactive)
40
+ program
41
+ .command('exec')
42
+ .description('Execute a task non-interactively')
43
+ .argument('<task>', 'Task to execute (or /command for proxy commands)')
44
+ .option('-d, --dir <path>', 'Working directory', process.cwd())
45
+ .action(async (task, options) => {
46
+ try {
47
+ const assistant = new index_1.CodeMieCode(options.dir);
48
+ await assistant.initialize({ showTips: false });
49
+ await assistant.executeNonInteractive(task);
50
+ await assistant.dispose();
51
+ }
52
+ catch (error) {
53
+ logger_1.logger.error('Failed to execute task:', error);
54
+ process.exit(1);
55
+ }
56
+ });
57
+ // Test connection
58
+ program
59
+ .command('test')
60
+ .description('Test connection to AI provider')
61
+ .action(async () => {
62
+ try {
63
+ await index_1.CodeMieCode.testConnection();
64
+ process.exit(0);
65
+ }
66
+ catch (error) {
67
+ logger_1.logger.error('Connection test failed:', error);
68
+ process.exit(1);
69
+ }
70
+ });
71
+ // Add global options
72
+ program
73
+ .option('--mcp-servers <servers>', 'Comma-separated list of MCP servers to load');
74
+ // Default behavior: if no command specified and no args, run interactive
75
+ // If args provided without command, treat first arg as working directory for interactive mode
76
+ program.action(async (options) => {
77
+ const args = process.argv.slice(2);
78
+ // If there are no arguments at all, run interactive mode
79
+ if (args.length === 0 || (args.length > 0 && args[0].startsWith('--'))) {
80
+ try {
81
+ // Set MCP servers in environment if provided
82
+ if (options.mcpServers) {
83
+ process.env.CODEMIE_MCP_SERVERS = options.mcpServers;
84
+ }
85
+ const assistant = new index_1.CodeMieCode(process.cwd());
86
+ await assistant.initialize();
87
+ await assistant.startInteractive();
88
+ await assistant.dispose();
89
+ }
90
+ catch (error) {
91
+ logger_1.logger.error('Failed to start CodeMie Code:', error);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ else {
96
+ // If there's a single argument and it's a directory, use it as working dir
97
+ // Otherwise show help
98
+ program.help();
99
+ }
100
+ });
101
+ return program;
102
+ }
103
+ async function runCLI() {
104
+ const program = await createCLI();
105
+ await program.parseAsync(process.argv);
106
+ }
107
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createDoctorCommand(): Command;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4H7C"}