@codemieai/code 0.0.1 → 0.0.3

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 (244) hide show
  1. package/.codemie/guides/git-workflow.md +493 -0
  2. package/CLAUDE.md +130 -761
  3. package/README.md +283 -695
  4. package/bin/codemie-claude.js +122 -0
  5. package/bin/codemie-code.js +90 -15
  6. package/bin/codemie-codex.js +138 -0
  7. package/bin/codemie.js +1 -1
  8. package/config.example.json +10 -0
  9. package/dist/agents/adapters/claude-code.d.ts +2 -2
  10. package/dist/agents/adapters/claude-code.d.ts.map +1 -1
  11. package/dist/agents/adapters/claude-code.js +20 -42
  12. package/dist/agents/adapters/claude-code.js.map +1 -1
  13. package/dist/agents/adapters/codemie-code.d.ts +11 -2
  14. package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
  15. package/dist/agents/adapters/codemie-code.js +93 -25
  16. package/dist/agents/adapters/codemie-code.js.map +1 -1
  17. package/dist/agents/adapters/codex.d.ts +2 -2
  18. package/dist/agents/adapters/codex.d.ts.map +1 -1
  19. package/dist/agents/adapters/codex.js +31 -24
  20. package/dist/agents/adapters/codex.js.map +1 -1
  21. package/dist/agents/codemie-code/agent.d.ts +89 -0
  22. package/dist/agents/codemie-code/agent.d.ts.map +1 -0
  23. package/dist/agents/codemie-code/agent.js +523 -0
  24. package/dist/agents/codemie-code/agent.js.map +1 -0
  25. package/dist/agents/codemie-code/config.d.ts +40 -0
  26. package/dist/agents/codemie-code/config.d.ts.map +1 -0
  27. package/dist/agents/codemie-code/config.js +276 -0
  28. package/dist/agents/codemie-code/config.js.map +1 -0
  29. package/dist/agents/codemie-code/filters.d.ts +91 -0
  30. package/dist/agents/codemie-code/filters.d.ts.map +1 -0
  31. package/dist/agents/codemie-code/filters.js +328 -0
  32. package/dist/agents/codemie-code/filters.js.map +1 -0
  33. package/dist/agents/codemie-code/index.d.ts +78 -0
  34. package/dist/agents/codemie-code/index.d.ts.map +1 -0
  35. package/dist/agents/codemie-code/index.js +259 -0
  36. package/dist/agents/codemie-code/index.js.map +1 -0
  37. package/dist/agents/codemie-code/prompts.d.ts +11 -0
  38. package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
  39. package/dist/agents/codemie-code/prompts.js +31 -0
  40. package/dist/agents/codemie-code/prompts.js.map +1 -0
  41. package/dist/agents/codemie-code/streaming/events.d.ts +7 -0
  42. package/dist/agents/codemie-code/streaming/events.d.ts.map +1 -0
  43. package/dist/agents/codemie-code/streaming/events.js +7 -0
  44. package/dist/agents/codemie-code/streaming/events.js.map +1 -0
  45. package/dist/agents/codemie-code/streaming/formatter.d.ts +2 -0
  46. package/dist/agents/codemie-code/streaming/formatter.d.ts.map +1 -0
  47. package/dist/agents/codemie-code/streaming/formatter.js +2 -0
  48. package/dist/agents/codemie-code/streaming/formatter.js.map +1 -0
  49. package/dist/agents/codemie-code/streaming/ui.d.ts +2 -0
  50. package/dist/agents/codemie-code/streaming/ui.d.ts.map +1 -0
  51. package/dist/agents/codemie-code/streaming/ui.js +2 -0
  52. package/dist/agents/codemie-code/streaming/ui.js.map +1 -0
  53. package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
  54. package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
  55. package/dist/agents/codemie-code/tokenUtils.js +220 -0
  56. package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
  57. package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
  58. package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
  59. package/dist/agents/codemie-code/toolMetadata.js +315 -0
  60. package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
  61. package/dist/agents/codemie-code/tools/command.d.ts +2 -0
  62. package/dist/agents/codemie-code/tools/command.d.ts.map +1 -0
  63. package/dist/agents/codemie-code/tools/command.js +2 -0
  64. package/dist/agents/codemie-code/tools/command.js.map +1 -0
  65. package/dist/agents/codemie-code/tools/filesystem.d.ts +2 -0
  66. package/dist/agents/codemie-code/tools/filesystem.d.ts.map +1 -0
  67. package/dist/agents/codemie-code/tools/filesystem.js +2 -0
  68. package/dist/agents/codemie-code/tools/filesystem.js.map +1 -0
  69. package/dist/agents/codemie-code/tools/git.d.ts +2 -0
  70. package/dist/agents/codemie-code/tools/git.d.ts.map +1 -0
  71. package/dist/agents/codemie-code/tools/git.js +2 -0
  72. package/dist/agents/codemie-code/tools/git.js.map +1 -0
  73. package/dist/agents/codemie-code/tools/index.d.ts +19 -0
  74. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
  75. package/dist/agents/codemie-code/tools/index.js +239 -0
  76. package/dist/agents/codemie-code/tools/index.js.map +1 -0
  77. package/dist/agents/codemie-code/tools/security.d.ts +2 -0
  78. package/dist/agents/codemie-code/tools/security.d.ts.map +1 -0
  79. package/dist/agents/codemie-code/tools/security.js +2 -0
  80. package/dist/agents/codemie-code/tools/security.js.map +1 -0
  81. package/dist/agents/codemie-code/types.d.ts +254 -0
  82. package/dist/agents/codemie-code/types.d.ts.map +1 -0
  83. package/dist/agents/codemie-code/types.js +35 -0
  84. package/dist/agents/codemie-code/types.js.map +1 -0
  85. package/dist/agents/codemie-code/ui.d.ts +83 -0
  86. package/dist/agents/codemie-code/ui.d.ts.map +1 -0
  87. package/dist/agents/codemie-code/ui.js +624 -0
  88. package/dist/agents/codemie-code/ui.js.map +1 -0
  89. package/dist/agents/registry.d.ts +1 -1
  90. package/dist/agents/registry.d.ts.map +1 -1
  91. package/dist/agents/registry.js +7 -13
  92. package/dist/agents/registry.js.map +1 -1
  93. package/dist/cli/commands/config.d.ts +3 -0
  94. package/dist/cli/commands/config.d.ts.map +1 -0
  95. package/dist/cli/commands/config.js +323 -0
  96. package/dist/cli/commands/config.js.map +1 -0
  97. package/dist/cli/commands/doctor.d.ts.map +1 -1
  98. package/dist/cli/commands/doctor.js +113 -69
  99. package/dist/cli/commands/doctor.js.map +1 -1
  100. package/dist/cli/commands/env.d.ts +3 -0
  101. package/dist/cli/commands/env.d.ts.map +1 -0
  102. package/dist/cli/commands/env.js +19 -0
  103. package/dist/cli/commands/env.js.map +1 -0
  104. package/dist/cli/commands/install.js +27 -33
  105. package/dist/cli/commands/install.js.map +1 -1
  106. package/dist/cli/commands/list.js +18 -24
  107. package/dist/cli/commands/list.js.map +1 -1
  108. package/dist/cli/commands/run.d.ts.map +1 -1
  109. package/dist/cli/commands/run.js +307 -21
  110. package/dist/cli/commands/run.js.map +1 -1
  111. package/dist/cli/commands/setup.d.ts +3 -0
  112. package/dist/cli/commands/setup.d.ts.map +1 -0
  113. package/dist/cli/commands/setup.js +357 -0
  114. package/dist/cli/commands/setup.js.map +1 -0
  115. package/dist/cli/commands/uninstall.js +24 -30
  116. package/dist/cli/commands/uninstall.js.map +1 -1
  117. package/dist/cli/commands/version.d.ts.map +1 -1
  118. package/dist/cli/commands/version.js +11 -16
  119. package/dist/cli/commands/version.js.map +1 -1
  120. package/dist/cli/index.js +47 -31
  121. package/dist/cli/index.js.map +1 -1
  122. package/dist/env/manager.js +9 -46
  123. package/dist/env/manager.js.map +1 -1
  124. package/dist/index.d.ts +6 -13
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +6 -43
  127. package/dist/index.js.map +1 -1
  128. package/dist/utils/async-tips.d.ts.map +1 -1
  129. package/dist/utils/async-tips.js +16 -55
  130. package/dist/utils/async-tips.js.map +1 -1
  131. package/dist/utils/clipboard.d.ts +16 -0
  132. package/dist/utils/clipboard.d.ts.map +1 -0
  133. package/dist/utils/clipboard.js +179 -0
  134. package/dist/utils/clipboard.js.map +1 -0
  135. package/dist/utils/config-loader.d.ts +96 -0
  136. package/dist/utils/config-loader.d.ts.map +1 -0
  137. package/dist/utils/config-loader.js +351 -0
  138. package/dist/utils/config-loader.js.map +1 -0
  139. package/dist/utils/dirname.d.ts +7 -0
  140. package/dist/utils/dirname.d.ts.map +1 -0
  141. package/dist/utils/dirname.js +11 -0
  142. package/dist/utils/dirname.js.map +1 -0
  143. package/dist/utils/errors.js +7 -17
  144. package/dist/utils/errors.js.map +1 -1
  145. package/dist/utils/exec.js +3 -6
  146. package/dist/utils/exec.js.map +1 -1
  147. package/dist/utils/first-time.d.ts +34 -0
  148. package/dist/utils/first-time.d.ts.map +1 -0
  149. package/dist/utils/first-time.js +245 -0
  150. package/dist/utils/first-time.js.map +1 -0
  151. package/dist/utils/health-checker.d.ts +20 -0
  152. package/dist/utils/health-checker.d.ts.map +1 -0
  153. package/dist/utils/health-checker.js +168 -0
  154. package/dist/utils/health-checker.js.map +1 -0
  155. package/dist/utils/logger.js +12 -18
  156. package/dist/utils/logger.js.map +1 -1
  157. package/dist/utils/model-fetcher.d.ts +21 -0
  158. package/dist/utils/model-fetcher.d.ts.map +1 -0
  159. package/dist/utils/model-fetcher.js +137 -0
  160. package/dist/utils/model-fetcher.js.map +1 -0
  161. package/dist/utils/tips.d.ts.map +1 -1
  162. package/dist/utils/tips.js +13 -52
  163. package/dist/utils/tips.js.map +1 -1
  164. package/package.json +17 -23
  165. package/scripts/README.md +80 -0
  166. package/scripts/release.sh +156 -0
  167. package/dist/agents/adapters/aider.d.ts +0 -12
  168. package/dist/agents/adapters/aider.d.ts.map +0 -1
  169. package/dist/agents/adapters/aider.js +0 -80
  170. package/dist/agents/adapters/aider.js.map +0 -1
  171. package/dist/cli/cli.d.ts +0 -4
  172. package/dist/cli/cli.d.ts.map +0 -1
  173. package/dist/cli/cli.js +0 -107
  174. package/dist/cli/cli.js.map +0 -1
  175. package/dist/cli/commands/mcp.d.ts +0 -3
  176. package/dist/cli/commands/mcp.d.ts.map +0 -1
  177. package/dist/cli/commands/mcp.js +0 -459
  178. package/dist/cli/commands/mcp.js.map +0 -1
  179. package/dist/code/agent-events.d.ts +0 -39
  180. package/dist/code/agent-events.d.ts.map +0 -1
  181. package/dist/code/agent-events.js +0 -4
  182. package/dist/code/agent-events.js.map +0 -1
  183. package/dist/code/agent.d.ts +0 -19
  184. package/dist/code/agent.d.ts.map +0 -1
  185. package/dist/code/agent.js +0 -144
  186. package/dist/code/agent.js.map +0 -1
  187. package/dist/code/config.d.ts +0 -13
  188. package/dist/code/config.d.ts.map +0 -1
  189. package/dist/code/config.js +0 -41
  190. package/dist/code/config.js.map +0 -1
  191. package/dist/code/index.d.ts +0 -19
  192. package/dist/code/index.d.ts.map +0 -1
  193. package/dist/code/index.js +0 -400
  194. package/dist/code/index.js.map +0 -1
  195. package/dist/code/prompts.d.ts +0 -2
  196. package/dist/code/prompts.d.ts.map +0 -1
  197. package/dist/code/prompts.js +0 -45
  198. package/dist/code/prompts.js.map +0 -1
  199. package/dist/code/tools/command.d.ts +0 -8
  200. package/dist/code/tools/command.d.ts.map +0 -1
  201. package/dist/code/tools/command.js +0 -83
  202. package/dist/code/tools/command.js.map +0 -1
  203. package/dist/code/tools/diff-utils.d.ts +0 -2
  204. package/dist/code/tools/diff-utils.d.ts.map +0 -1
  205. package/dist/code/tools/diff-utils.js +0 -45
  206. package/dist/code/tools/diff-utils.js.map +0 -1
  207. package/dist/code/tools/filesystem.d.ts +0 -11
  208. package/dist/code/tools/filesystem.d.ts.map +0 -1
  209. package/dist/code/tools/filesystem.js +0 -442
  210. package/dist/code/tools/filesystem.js.map +0 -1
  211. package/dist/code/tools/git.d.ts +0 -7
  212. package/dist/code/tools/git.d.ts.map +0 -1
  213. package/dist/code/tools/git.js +0 -111
  214. package/dist/code/tools/git.js.map +0 -1
  215. package/dist/code/tools/mcp.d.ts +0 -13
  216. package/dist/code/tools/mcp.d.ts.map +0 -1
  217. package/dist/code/tools/mcp.js +0 -230
  218. package/dist/code/tools/mcp.js.map +0 -1
  219. package/dist/data/tips.json +0 -118
  220. package/dist/ui/terminal-ui.d.ts +0 -73
  221. package/dist/ui/terminal-ui.d.ts.map +0 -1
  222. package/dist/ui/terminal-ui.js +0 -900
  223. package/dist/ui/terminal-ui.js.map +0 -1
  224. package/dist/utils/env-mapper.d.ts +0 -40
  225. package/dist/utils/env-mapper.d.ts.map +0 -1
  226. package/dist/utils/env-mapper.js +0 -122
  227. package/dist/utils/env-mapper.js.map +0 -1
  228. package/docs/USER_GUIDE.md +0 -573
  229. package/tests/agent-direct.test.mjs +0 -45
  230. package/tests/agent-output.test.mjs +0 -64
  231. package/tests/codemie-code.test.mjs +0 -42
  232. package/tests/context7-only.test.mjs +0 -42
  233. package/tests/conversation-flow.test.mjs +0 -63
  234. package/tests/interactive-simulation.test.mjs +0 -60
  235. package/tests/live-output.test.mjs +0 -53
  236. package/tests/mcp-context7.test.mjs +0 -105
  237. package/tests/mcp-e2e.test.mjs +0 -109
  238. package/tests/mcp-time-server.test.mjs +0 -58
  239. package/tests/streaming.test.mjs +0 -57
  240. package/tests/test-helpers.mjs +0 -94
  241. package/tests/text-wrapping.test.mjs +0 -33
  242. package/tests/tool-count.test.mjs +0 -81
  243. package/tests/ui-format.test.mjs +0 -39
  244. package/tests/ui-state.test.mjs +0 -72
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Cross-platform clipboard utility for handling images
3
+ */
4
+ import { exec } from 'child_process';
5
+ import { promisify } from 'util';
6
+ import { platform } from 'os';
7
+ const execAsync = promisify(exec);
8
+ /**
9
+ * Check if clipboard contains image data (cross-platform)
10
+ */
11
+ export async function hasClipboardImage() {
12
+ try {
13
+ const platformName = platform();
14
+ switch (platformName) {
15
+ case 'darwin': // macOS
16
+ return await hasClipboardImageMacOS();
17
+ case 'win32': // Windows
18
+ return await hasClipboardImageWindows();
19
+ case 'linux': // Linux
20
+ return await hasClipboardImageLinux();
21
+ default:
22
+ console.warn(`Clipboard image detection not implemented for platform: ${platformName}`);
23
+ return false;
24
+ }
25
+ }
26
+ catch (error) {
27
+ console.error('Error checking clipboard for images:', error);
28
+ return false;
29
+ }
30
+ }
31
+ /**
32
+ * Get clipboard image data (cross-platform)
33
+ */
34
+ export async function getClipboardImage() {
35
+ try {
36
+ const platformName = platform();
37
+ switch (platformName) {
38
+ case 'darwin': // macOS
39
+ return await getClipboardImageMacOS();
40
+ case 'win32': // Windows
41
+ return await getClipboardImageWindows();
42
+ case 'linux': // Linux
43
+ return await getClipboardImageLinux();
44
+ default:
45
+ console.warn(`Clipboard image extraction not implemented for platform: ${platformName}`);
46
+ return null;
47
+ }
48
+ }
49
+ catch (error) {
50
+ console.error('Error getting clipboard image:', error);
51
+ return null;
52
+ }
53
+ }
54
+ // macOS implementation
55
+ async function hasClipboardImageMacOS() {
56
+ try {
57
+ const { stdout } = await execAsync('osascript -e "tell application \\"System Events\\" to set theTypes to clipboard info"');
58
+ const types = stdout.trim();
59
+ // Check for image types in clipboard
60
+ return types.includes('«class PNGf»') ||
61
+ types.includes('«class JPEG»') ||
62
+ types.includes('«class TIFF»') ||
63
+ types.includes('public.png') ||
64
+ types.includes('public.jpeg');
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ }
70
+ async function getClipboardImageMacOS() {
71
+ try {
72
+ // Try PNG first using AppleScript (more reliable for screenshots)
73
+ let result = await execAsync('osascript -e "set theData to the clipboard as «class PNGf»" -e "return theData" 2>/dev/null | xxd -p -c 256 | tr -d \'\\n\' | xxd -r -p | base64', { maxBuffer: 10 * 1024 * 1024 });
74
+ if (result.stdout.trim().length > 100) {
75
+ return {
76
+ data: result.stdout.trim(),
77
+ mimeType: 'image/png'
78
+ };
79
+ }
80
+ // Try JPEG if PNG failed
81
+ result = await execAsync('osascript -e "set theData to the clipboard as «class JPEG»" -e "return theData" 2>/dev/null | xxd -p -c 256 | tr -d \'\\n\' | xxd -r -p | base64', { maxBuffer: 10 * 1024 * 1024 });
82
+ if (result.stdout.trim().length > 100) {
83
+ return {
84
+ data: result.stdout.trim(),
85
+ mimeType: 'image/jpeg'
86
+ };
87
+ }
88
+ // Fallback to pbpaste with TIFF (screenshots are often stored as TIFF internally)
89
+ result = await execAsync('pbpaste -Prefer public.tiff 2>/dev/null | base64', { maxBuffer: 10 * 1024 * 1024 });
90
+ if (result.stdout.trim().length > 100) {
91
+ return {
92
+ data: result.stdout.trim(),
93
+ mimeType: 'image/tiff' // Note: this might need conversion for some LLMs
94
+ };
95
+ }
96
+ return null;
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ }
102
+ // Windows implementation
103
+ async function hasClipboardImageWindows() {
104
+ try {
105
+ const { stdout } = await execAsync('powershell -command "Get-Clipboard -Format Image -ErrorAction SilentlyContinue | Measure-Object | Select-Object -ExpandProperty Count"');
106
+ return parseInt(stdout.trim()) > 0;
107
+ }
108
+ catch {
109
+ return false;
110
+ }
111
+ }
112
+ async function getClipboardImageWindows() {
113
+ try {
114
+ // Save clipboard image to temp file, then read as base64
115
+ const tempFile = `${process.env.TEMP || '/tmp'}/clipboard_image_${Date.now()}.png`;
116
+ await execAsync(`powershell -command "Get-Clipboard -Format Image | ForEach-Object { $_.Save('${tempFile}', [System.Drawing.Imaging.ImageFormat]::Png) }"`);
117
+ const { stdout } = await execAsync(`powershell -command "[Convert]::ToBase64String([IO.File]::ReadAllBytes('${tempFile}'))"`);
118
+ // Clean up temp file
119
+ try {
120
+ await execAsync(`del "${tempFile}"`);
121
+ }
122
+ catch {
123
+ // Ignore cleanup errors
124
+ }
125
+ if (stdout.trim().length > 100) {
126
+ return {
127
+ data: stdout.trim(),
128
+ mimeType: 'image/png'
129
+ };
130
+ }
131
+ return null;
132
+ }
133
+ catch {
134
+ return null;
135
+ }
136
+ }
137
+ // Linux implementation
138
+ async function hasClipboardImageLinux() {
139
+ try {
140
+ // Check if xclip is available and clipboard has image
141
+ const { stdout } = await execAsync('xclip -selection clipboard -t TARGETS -o 2>/dev/null');
142
+ return stdout.includes('image/png') || stdout.includes('image/jpeg');
143
+ }
144
+ catch {
145
+ // Try with xsel as fallback
146
+ try {
147
+ await execAsync('xsel --clipboard --output 2>/dev/null | file - | grep -q image');
148
+ return true;
149
+ }
150
+ catch {
151
+ return false;
152
+ }
153
+ }
154
+ }
155
+ async function getClipboardImageLinux() {
156
+ try {
157
+ // Try PNG first
158
+ let result = await execAsync('xclip -selection clipboard -t image/png -o 2>/dev/null | base64 -w 0', { maxBuffer: 10 * 1024 * 1024 });
159
+ if (result.stdout.trim().length > 100) {
160
+ return {
161
+ data: result.stdout.trim(),
162
+ mimeType: 'image/png'
163
+ };
164
+ }
165
+ // Try JPEG
166
+ result = await execAsync('xclip -selection clipboard -t image/jpeg -o 2>/dev/null | base64 -w 0', { maxBuffer: 10 * 1024 * 1024 });
167
+ if (result.stdout.trim().length > 100) {
168
+ return {
169
+ data: result.stdout.trim(),
170
+ mimeType: 'image/jpeg'
171
+ };
172
+ }
173
+ return null;
174
+ }
175
+ catch {
176
+ return null;
177
+ }
178
+ }
179
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Configuration options for CodeMie Code
3
+ */
4
+ export interface CodeMieConfigOptions {
5
+ provider?: string;
6
+ baseUrl?: string;
7
+ apiKey?: string;
8
+ model?: string;
9
+ timeout?: number;
10
+ debug?: boolean;
11
+ allowedDirs?: string[];
12
+ ignorePatterns?: string[];
13
+ }
14
+ /**
15
+ * Configuration with source tracking
16
+ */
17
+ export interface ConfigWithSource {
18
+ value: any;
19
+ source: 'default' | 'global' | 'project' | 'env' | 'cli';
20
+ }
21
+ /**
22
+ * Unified configuration loader with priority system:
23
+ * CLI args > Env vars > Project config > Global config > Defaults
24
+ */
25
+ export declare class ConfigLoader {
26
+ private static GLOBAL_CONFIG_DIR;
27
+ private static GLOBAL_CONFIG;
28
+ private static LOCAL_CONFIG;
29
+ /**
30
+ * Load configuration with proper priority:
31
+ * CLI args > Env vars > Project config > Global config > Defaults
32
+ */
33
+ static load(workingDir?: string, cliOverrides?: Partial<CodeMieConfigOptions>): Promise<CodeMieConfigOptions>;
34
+ /**
35
+ * Load configuration with validation (throws if required fields missing)
36
+ */
37
+ static loadAndValidate(workingDir?: string, cliOverrides?: Partial<CodeMieConfigOptions>): Promise<CodeMieConfigOptions>;
38
+ /**
39
+ * Load configuration from environment variables
40
+ */
41
+ private static loadFromEnv;
42
+ /**
43
+ * Load JSON config file
44
+ */
45
+ private static loadJsonConfig;
46
+ /**
47
+ * Save configuration to global config file
48
+ */
49
+ static saveGlobalConfig(config: Partial<CodeMieConfigOptions>): Promise<void>;
50
+ /**
51
+ * Save configuration to project config file
52
+ */
53
+ static saveProjectConfig(workingDir: string, config: Partial<CodeMieConfigOptions>): Promise<void>;
54
+ /**
55
+ * Check if global config exists
56
+ */
57
+ static hasGlobalConfig(): Promise<boolean>;
58
+ /**
59
+ * Check if project config exists
60
+ */
61
+ static hasProjectConfig(workingDir?: string): Promise<boolean>;
62
+ /**
63
+ * Remove undefined values from object
64
+ */
65
+ private static removeUndefined;
66
+ /**
67
+ * Validate required configuration
68
+ */
69
+ private static validate;
70
+ /**
71
+ * Load configuration with source tracking
72
+ */
73
+ static loadWithSources(workingDir?: string): Promise<Record<string, ConfigWithSource>>;
74
+ /**
75
+ * Show configuration with source attribution
76
+ */
77
+ static showWithSources(workingDir?: string): Promise<void>;
78
+ /**
79
+ * Mask sensitive values
80
+ */
81
+ private static maskSensitive;
82
+ /**
83
+ * Get color for source
84
+ */
85
+ private static getSourceColor;
86
+ /**
87
+ * Get environment variable overrides
88
+ */
89
+ static getEnvOverrides(): Partial<CodeMieConfigOptions>;
90
+ /**
91
+ * Export provider-specific environment variables
92
+ * (for passing to external agents like Claude Code, Codex)
93
+ */
94
+ static exportProviderEnvVars(config: CodeMieConfigOptions): Record<string, string>;
95
+ }
96
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;CAC1D;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAuC;IACvE,OAAO,CAAC,MAAM,CAAC,aAAa,CAA4D;IACxF,OAAO,CAAC,MAAM,CAAC,YAAY,CAA0B;IAErD;;;OAGG;WACU,IAAI,CACf,UAAU,GAAE,MAAsB,EAClC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC3C,OAAO,CAAC,oBAAoB,CAAC;IAuChC;;OAEG;WACU,eAAe,CAC1B,UAAU,GAAE,MAAsB,EAClC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC3C,OAAO,CAAC,oBAAoB,CAAC;IAMhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAuC1B;;OAEG;mBACkB,cAAc;IASnC;;OAEG;WACU,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF;;OAEG;WACU,iBAAiB,CAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAShD;;OAEG;WACU,gBAAgB,CAAC,UAAU,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;IAkBvB;;OAEG;WACU,eAAe,CAC1B,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAwC5C;;OAEG;WACU,eAAe,CAAC,UAAU,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAqB5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAkEnF"}
@@ -0,0 +1,351 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import dotenv from 'dotenv';
5
+ import chalk from 'chalk';
6
+ /**
7
+ * Unified configuration loader with priority system:
8
+ * CLI args > Env vars > Project config > Global config > Defaults
9
+ */
10
+ export class ConfigLoader {
11
+ static GLOBAL_CONFIG_DIR = path.join(os.homedir(), '.codemie');
12
+ static GLOBAL_CONFIG = path.join(ConfigLoader.GLOBAL_CONFIG_DIR, 'config.json');
13
+ static LOCAL_CONFIG = '.codemie/config.json';
14
+ /**
15
+ * Load configuration with proper priority:
16
+ * CLI args > Env vars > Project config > Global config > Defaults
17
+ */
18
+ static async load(workingDir = process.cwd(), cliOverrides) {
19
+ // 5. Built-in defaults (lowest priority)
20
+ const config = {
21
+ provider: 'anthropic',
22
+ model: 'claude-sonnet-4',
23
+ timeout: 300,
24
+ debug: false,
25
+ allowedDirs: [],
26
+ ignorePatterns: ['node_modules', '.git', 'dist', 'build']
27
+ };
28
+ // 4. Global config (~/.codemie/config.json)
29
+ const globalConfig = await this.loadJsonConfig(this.GLOBAL_CONFIG);
30
+ Object.assign(config, this.removeUndefined(globalConfig));
31
+ // 3. Project-local config (.codemie/config.json)
32
+ const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
33
+ const localConfig = await this.loadJsonConfig(localConfigPath);
34
+ Object.assign(config, this.removeUndefined(localConfig));
35
+ // 2. Environment variables (load .env first if in project)
36
+ const envPath = path.join(workingDir, '.env');
37
+ try {
38
+ await fs.access(envPath);
39
+ dotenv.config({ path: envPath });
40
+ }
41
+ catch {
42
+ // No .env file, that's fine
43
+ }
44
+ const envConfig = this.loadFromEnv();
45
+ Object.assign(config, this.removeUndefined(envConfig));
46
+ // 1. CLI arguments (highest priority)
47
+ if (cliOverrides) {
48
+ Object.assign(config, this.removeUndefined(cliOverrides));
49
+ }
50
+ return config;
51
+ }
52
+ /**
53
+ * Load configuration with validation (throws if required fields missing)
54
+ */
55
+ static async loadAndValidate(workingDir = process.cwd(), cliOverrides) {
56
+ const config = await this.load(workingDir, cliOverrides);
57
+ this.validate(config);
58
+ return config;
59
+ }
60
+ /**
61
+ * Load configuration from environment variables
62
+ */
63
+ static loadFromEnv() {
64
+ const env = {};
65
+ if (process.env.CODEMIE_PROVIDER) {
66
+ env.provider = process.env.CODEMIE_PROVIDER;
67
+ }
68
+ if (process.env.CODEMIE_BASE_URL) {
69
+ env.baseUrl = process.env.CODEMIE_BASE_URL;
70
+ }
71
+ if (process.env.CODEMIE_API_KEY) {
72
+ env.apiKey = process.env.CODEMIE_API_KEY;
73
+ }
74
+ if (process.env.CODEMIE_MODEL) {
75
+ env.model = process.env.CODEMIE_MODEL;
76
+ }
77
+ if (process.env.CODEMIE_TIMEOUT) {
78
+ env.timeout = parseInt(process.env.CODEMIE_TIMEOUT, 10);
79
+ }
80
+ if (process.env.CODEMIE_DEBUG) {
81
+ env.debug = process.env.CODEMIE_DEBUG === 'true';
82
+ }
83
+ if (process.env.CODEMIE_ALLOWED_DIRS) {
84
+ env.allowedDirs = process.env.CODEMIE_ALLOWED_DIRS.split(',').map(s => s.trim());
85
+ }
86
+ if (process.env.CODEMIE_IGNORE_PATTERNS) {
87
+ env.ignorePatterns = process.env.CODEMIE_IGNORE_PATTERNS.split(',').map(s => s.trim());
88
+ }
89
+ // Check for AWS Bedrock configuration
90
+ if (process.env.CLAUDE_CODE_USE_BEDROCK === '1' && process.env.ANTHROPIC_MODEL) {
91
+ env.provider = 'bedrock';
92
+ env.model = process.env.ANTHROPIC_MODEL;
93
+ env.baseUrl = 'bedrock';
94
+ env.apiKey = 'bedrock'; // Placeholder for AWS credentials
95
+ }
96
+ return env;
97
+ }
98
+ /**
99
+ * Load JSON config file
100
+ */
101
+ static async loadJsonConfig(filePath) {
102
+ try {
103
+ const content = await fs.readFile(filePath, 'utf-8');
104
+ return JSON.parse(content);
105
+ }
106
+ catch {
107
+ return {};
108
+ }
109
+ }
110
+ /**
111
+ * Save configuration to global config file
112
+ */
113
+ static async saveGlobalConfig(config) {
114
+ await fs.mkdir(this.GLOBAL_CONFIG_DIR, { recursive: true });
115
+ await fs.writeFile(this.GLOBAL_CONFIG, JSON.stringify(config, null, 2), 'utf-8');
116
+ }
117
+ /**
118
+ * Save configuration to project config file
119
+ */
120
+ static async saveProjectConfig(workingDir, config) {
121
+ const configDir = path.join(workingDir, '.codemie');
122
+ await fs.mkdir(configDir, { recursive: true });
123
+ await fs.writeFile(path.join(configDir, 'config.json'), JSON.stringify(config, null, 2), 'utf-8');
124
+ }
125
+ /**
126
+ * Check if global config exists
127
+ */
128
+ static async hasGlobalConfig() {
129
+ try {
130
+ await fs.access(this.GLOBAL_CONFIG);
131
+ return true;
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ /**
138
+ * Check if project config exists
139
+ */
140
+ static async hasProjectConfig(workingDir = process.cwd()) {
141
+ try {
142
+ const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
143
+ await fs.access(localConfigPath);
144
+ return true;
145
+ }
146
+ catch {
147
+ return false;
148
+ }
149
+ }
150
+ /**
151
+ * Remove undefined values from object
152
+ */
153
+ static removeUndefined(obj) {
154
+ return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v !== undefined));
155
+ }
156
+ /**
157
+ * Validate required configuration
158
+ */
159
+ static validate(config) {
160
+ if (!config.baseUrl) {
161
+ throw new Error('CODEMIE_BASE_URL is required. Run: codemie setup');
162
+ }
163
+ if (!config.apiKey) {
164
+ throw new Error('CODEMIE_API_KEY is required. Run: codemie setup');
165
+ }
166
+ if (!config.model) {
167
+ throw new Error('CODEMIE_MODEL is required. Run: codemie setup');
168
+ }
169
+ }
170
+ /**
171
+ * Load configuration with source tracking
172
+ */
173
+ static async loadWithSources(workingDir = process.cwd()) {
174
+ const sources = {};
175
+ // Load all config layers
176
+ const configs = [
177
+ {
178
+ data: {
179
+ provider: 'anthropic',
180
+ model: 'claude-sonnet-4',
181
+ timeout: 300,
182
+ debug: false
183
+ },
184
+ source: 'default'
185
+ },
186
+ {
187
+ data: await this.loadJsonConfig(this.GLOBAL_CONFIG),
188
+ source: 'global'
189
+ },
190
+ {
191
+ data: await this.loadJsonConfig(path.join(workingDir, this.LOCAL_CONFIG)),
192
+ source: 'project'
193
+ },
194
+ {
195
+ data: this.loadFromEnv(),
196
+ source: 'env'
197
+ }
198
+ ];
199
+ // Track where each value comes from (last one wins)
200
+ for (const { data, source } of configs) {
201
+ for (const [key, value] of Object.entries(data)) {
202
+ if (value !== undefined && value !== null) {
203
+ sources[key] = { value, source };
204
+ }
205
+ }
206
+ }
207
+ return sources;
208
+ }
209
+ /**
210
+ * Show configuration with source attribution
211
+ */
212
+ static async showWithSources(workingDir = process.cwd()) {
213
+ const sources = await this.loadWithSources(workingDir);
214
+ console.log(chalk.bold('\nConfiguration Sources:\n'));
215
+ const sortedKeys = Object.keys(sources).sort();
216
+ for (const key of sortedKeys) {
217
+ const { value, source } = sources[key];
218
+ const displayValue = this.maskSensitive(key, value);
219
+ const sourceColor = this.getSourceColor(source);
220
+ const sourceLabel = sourceColor(`(${source})`);
221
+ console.log(` ${chalk.cyan(key)}: ${displayValue} ${sourceLabel}`);
222
+ }
223
+ console.log(chalk.dim('\nPriority: cli > env > project > global > default\n'));
224
+ }
225
+ /**
226
+ * Mask sensitive values
227
+ */
228
+ static maskSensitive(key, value) {
229
+ const valueStr = String(value);
230
+ const keyLower = key.toLowerCase();
231
+ if (keyLower.includes('key') || keyLower.includes('token') || keyLower.includes('password')) {
232
+ if (valueStr.length <= 8) {
233
+ return '***';
234
+ }
235
+ const start = valueStr.substring(0, 8);
236
+ const end = valueStr.substring(valueStr.length - 4);
237
+ return `${start}***${end}`;
238
+ }
239
+ // Handle arrays
240
+ if (Array.isArray(value)) {
241
+ return value.join(', ');
242
+ }
243
+ return valueStr;
244
+ }
245
+ /**
246
+ * Get color for source
247
+ */
248
+ static getSourceColor(source) {
249
+ const colors = {
250
+ default: chalk.gray,
251
+ global: chalk.cyan,
252
+ project: chalk.yellow,
253
+ env: chalk.green,
254
+ cli: chalk.magenta
255
+ };
256
+ return colors[source] || chalk.white;
257
+ }
258
+ /**
259
+ * Get environment variable overrides
260
+ */
261
+ static getEnvOverrides() {
262
+ return this.removeUndefined(this.loadFromEnv());
263
+ }
264
+ /**
265
+ * Export provider-specific environment variables
266
+ * (for passing to external agents like Claude Code, Codex)
267
+ */
268
+ static exportProviderEnvVars(config) {
269
+ const env = {};
270
+ // Always set generic CODEMIE_* vars
271
+ if (config.provider)
272
+ env.CODEMIE_PROVIDER = config.provider;
273
+ if (config.baseUrl)
274
+ env.CODEMIE_BASE_URL = config.baseUrl;
275
+ if (config.apiKey)
276
+ env.CODEMIE_API_KEY = config.apiKey;
277
+ if (config.model)
278
+ env.CODEMIE_MODEL = config.model;
279
+ if (config.timeout)
280
+ env.CODEMIE_TIMEOUT = String(config.timeout);
281
+ if (config.debug)
282
+ env.CODEMIE_DEBUG = String(config.debug);
283
+ // Set provider-specific vars based on provider
284
+ const provider = (config.provider || 'anthropic').toUpperCase();
285
+ if (provider === 'ANTHROPIC') {
286
+ if (config.baseUrl)
287
+ env.ANTHROPIC_BASE_URL = config.baseUrl;
288
+ if (config.apiKey) {
289
+ env.ANTHROPIC_API_KEY = config.apiKey;
290
+ env.ANTHROPIC_AUTH_TOKEN = config.apiKey;
291
+ }
292
+ if (config.model) {
293
+ env.ANTHROPIC_MODEL = config.model;
294
+ // For Claude Code subagents
295
+ env.CLAUDE_CODE_SUBAGENT_MODEL = config.model;
296
+ }
297
+ }
298
+ else if (provider === 'OPENAI' || provider === 'CODEX') {
299
+ // OpenAI and Codex share the same configuration
300
+ // Note: OpenAI Codex was deprecated in March 2023
301
+ // Modern usage should use gpt-3.5-turbo or gpt-4 models instead
302
+ if (config.baseUrl)
303
+ env.OPENAI_BASE_URL = config.baseUrl;
304
+ if (config.apiKey)
305
+ env.OPENAI_API_KEY = config.apiKey;
306
+ if (config.model)
307
+ env.OPENAI_MODEL = config.model;
308
+ // Legacy Codex environment variables (for compatibility)
309
+ if (provider === 'CODEX') {
310
+ if (config.baseUrl)
311
+ env.CODEX_BASE_URL = config.baseUrl;
312
+ if (config.apiKey)
313
+ env.CODEX_API_KEY = config.apiKey;
314
+ if (config.model)
315
+ env.CODEX_MODEL = config.model;
316
+ }
317
+ }
318
+ else if (provider === 'AZURE') {
319
+ if (config.baseUrl)
320
+ env.AZURE_OPENAI_ENDPOINT = config.baseUrl;
321
+ if (config.apiKey)
322
+ env.AZURE_OPENAI_API_KEY = config.apiKey;
323
+ if (config.model)
324
+ env.AZURE_OPENAI_DEPLOYMENT = config.model;
325
+ }
326
+ else if (provider === 'BEDROCK') {
327
+ // AWS Bedrock configuration
328
+ if (config.model)
329
+ env.ANTHROPIC_MODEL = config.model;
330
+ env.CLAUDE_CODE_USE_BEDROCK = '1';
331
+ // AWS credentials should be set via AWS CLI or environment variables
332
+ }
333
+ else if (provider === 'AI-RUN' || provider === 'LITELLM') {
334
+ // Generic LiteLLM proxy or AI/Run gateway
335
+ if (config.baseUrl) {
336
+ env.OPENAI_BASE_URL = config.baseUrl;
337
+ env.ANTHROPIC_BASE_URL = config.baseUrl;
338
+ }
339
+ if (config.apiKey) {
340
+ env.OPENAI_API_KEY = config.apiKey;
341
+ env.ANTHROPIC_AUTH_TOKEN = config.apiKey;
342
+ }
343
+ if (config.model) {
344
+ env.OPENAI_MODEL = config.model;
345
+ env.ANTHROPIC_MODEL = config.model;
346
+ }
347
+ }
348
+ return env;
349
+ }
350
+ }
351
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get the directory name of the current module (ESM equivalent of __dirname)
3
+ * @param importMetaUrl - Pass import.meta.url from the calling module
4
+ * @returns The directory path
5
+ */
6
+ export declare function getDirname(importMetaUrl: string): string;
7
+ //# sourceMappingURL=dirname.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirname.d.ts","sourceRoot":"","sources":["../../src/utils/dirname.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExD"}