@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,276 @@
1
+ /**
2
+ * Configuration Management for CodeMie Native Agent
3
+ *
4
+ * Integrates with the existing CodeMie configuration system while providing
5
+ * agent-specific configuration loading and validation.
6
+ */
7
+ import { ConfigLoader } from '../../utils/config-loader.js';
8
+ import { ConfigurationError } from './types.js';
9
+ /**
10
+ * Load and validate configuration for the CodeMie native agent
11
+ */
12
+ export async function loadCodeMieConfig(workingDir, cliOverrides) {
13
+ const workDir = workingDir || process.cwd();
14
+ try {
15
+ // Use existing ConfigLoader to get base configuration
16
+ const baseConfig = await ConfigLoader.loadAndValidate(workDir, cliOverrides);
17
+ // Convert to our agent-specific config format
18
+ const agentConfig = {
19
+ baseUrl: baseConfig.baseUrl,
20
+ authToken: baseConfig.apiKey,
21
+ model: baseConfig.model,
22
+ provider: normalizeProvider(baseConfig.provider),
23
+ timeout: baseConfig.timeout || 300,
24
+ workingDirectory: workDir,
25
+ debug: baseConfig.debug || false
26
+ };
27
+ // Validate agent-specific requirements
28
+ validateAgentConfig(agentConfig);
29
+ return agentConfig;
30
+ }
31
+ catch (error) {
32
+ const errorMessage = error instanceof Error ? error.message : String(error);
33
+ throw new ConfigurationError(`Failed to load configuration: ${errorMessage}`, { workingDir, error: errorMessage });
34
+ }
35
+ }
36
+ /**
37
+ * Normalize provider name to match our type union
38
+ */
39
+ function normalizeProvider(provider) {
40
+ const normalized = provider.toLowerCase();
41
+ switch (normalized) {
42
+ case 'anthropic':
43
+ case 'claude':
44
+ return 'anthropic';
45
+ case 'openai':
46
+ case 'gpt':
47
+ case 'codex':
48
+ return 'openai';
49
+ case 'azure':
50
+ case 'azure-openai':
51
+ return 'azure';
52
+ case 'bedrock':
53
+ case 'aws-bedrock':
54
+ return 'bedrock';
55
+ case 'litellm':
56
+ case 'ai-run':
57
+ case 'proxy':
58
+ return 'litellm';
59
+ default:
60
+ // Default to OpenAI for unknown providers (most compatible)
61
+ return 'openai';
62
+ }
63
+ }
64
+ /**
65
+ * Validate agent-specific configuration requirements
66
+ */
67
+ function validateAgentConfig(config) {
68
+ const errors = [];
69
+ // Basic validation
70
+ if (!config.baseUrl || config.baseUrl.trim() === '') {
71
+ errors.push('baseUrl is required');
72
+ }
73
+ if (!config.authToken || config.authToken.trim() === '') {
74
+ errors.push('authToken/apiKey is required');
75
+ }
76
+ if (!config.model || config.model.trim() === '') {
77
+ errors.push('model is required');
78
+ }
79
+ // Provider-specific validation
80
+ validateProviderConfig(config, errors);
81
+ // Model compatibility validation
82
+ validateModelCompatibility(config, errors);
83
+ if (errors.length > 0) {
84
+ throw new ConfigurationError(`Configuration validation failed: ${errors.join(', ')}`, { errors, config: sanitizeConfig(config) });
85
+ }
86
+ }
87
+ /**
88
+ * Provider-specific configuration validation
89
+ */
90
+ function validateProviderConfig(config, _errors) {
91
+ switch (config.provider) {
92
+ case 'anthropic':
93
+ if (!config.baseUrl.includes('anthropic.com') &&
94
+ !config.baseUrl.includes('claude.ai') &&
95
+ !config.baseUrl.includes('localhost') &&
96
+ !config.baseUrl.includes('127.0.0.1')) {
97
+ // Allow custom endpoints but warn about potential issues
98
+ console.warn(`Warning: Using custom endpoint ${config.baseUrl} with Anthropic provider`);
99
+ }
100
+ break;
101
+ case 'openai':
102
+ if (!config.baseUrl.includes('openai.com') &&
103
+ !config.baseUrl.includes('localhost') &&
104
+ !config.baseUrl.includes('127.0.0.1')) {
105
+ console.warn(`Warning: Using custom endpoint ${config.baseUrl} with OpenAI provider`);
106
+ }
107
+ break;
108
+ case 'azure':
109
+ if (!config.baseUrl.includes('openai.azure.com')) {
110
+ console.warn(`Warning: Azure provider expects *.openai.azure.com endpoint`);
111
+ }
112
+ break;
113
+ case 'bedrock':
114
+ if (config.baseUrl === 'bedrock') {
115
+ // Special case for AWS Bedrock
116
+ break;
117
+ }
118
+ if (!config.baseUrl.includes('bedrock')) {
119
+ console.warn(`Warning: Bedrock provider expects bedrock-compatible endpoint`);
120
+ }
121
+ break;
122
+ case 'litellm':
123
+ // LiteLLM proxy can use any endpoint
124
+ break;
125
+ }
126
+ }
127
+ /**
128
+ * Validate model compatibility with provider
129
+ */
130
+ function validateModelCompatibility(config, errors) {
131
+ const model = config.model.toLowerCase();
132
+ switch (config.provider) {
133
+ case 'anthropic':
134
+ if (!model.includes('claude')) {
135
+ errors.push(`Model '${config.model}' may not be compatible with Anthropic provider`);
136
+ }
137
+ break;
138
+ case 'openai':
139
+ if (model.includes('claude')) {
140
+ errors.push(`Model '${config.model}' is not compatible with OpenAI provider`);
141
+ }
142
+ break;
143
+ case 'azure':
144
+ // Azure uses deployment names, so we can't validate the model name directly
145
+ break;
146
+ case 'bedrock':
147
+ if (!model.includes('claude') && !model.includes('anthropic')) {
148
+ console.warn(`Warning: Model '${config.model}' may not be available in Bedrock`);
149
+ }
150
+ break;
151
+ case 'litellm':
152
+ // LiteLLM proxy can handle model routing
153
+ break;
154
+ }
155
+ }
156
+ /**
157
+ * Get provider-specific environment variables for the agent
158
+ */
159
+ export function getProviderEnvVars(config) {
160
+ return ConfigLoader.exportProviderEnvVars({
161
+ provider: config.provider,
162
+ baseUrl: config.baseUrl,
163
+ apiKey: config.authToken,
164
+ model: config.model,
165
+ timeout: config.timeout,
166
+ debug: config.debug
167
+ });
168
+ }
169
+ /**
170
+ * Create provider-specific configuration
171
+ */
172
+ export function createProviderConfig(config) {
173
+ switch (config.provider) {
174
+ case 'openai':
175
+ return {
176
+ apiKey: config.authToken,
177
+ ...(config.baseUrl !== 'https://api.openai.com/v1' && { baseURL: config.baseUrl }),
178
+ ...(process.env.OPENAI_ORG_ID && { organization: process.env.OPENAI_ORG_ID })
179
+ };
180
+ case 'anthropic':
181
+ return {
182
+ apiKey: config.authToken,
183
+ ...(config.baseUrl !== 'https://api.anthropic.com/v1' && { baseURL: config.baseUrl })
184
+ };
185
+ case 'azure':
186
+ return {
187
+ apiKey: config.authToken,
188
+ endpoint: config.baseUrl,
189
+ deploymentName: config.model,
190
+ apiVersion: process.env.AZURE_OPENAI_API_VERSION || '2024-02-01'
191
+ };
192
+ case 'bedrock':
193
+ return {
194
+ region: process.env.AWS_REGION || 'us-east-1',
195
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',
196
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || ''
197
+ };
198
+ case 'litellm':
199
+ return {
200
+ apiKey: config.authToken,
201
+ baseURL: config.baseUrl,
202
+ model: config.model
203
+ };
204
+ default:
205
+ throw new ConfigurationError(`Unsupported provider: ${config.provider}`);
206
+ }
207
+ }
208
+ /**
209
+ * Sanitize configuration for logging (remove sensitive data)
210
+ */
211
+ function sanitizeConfig(config) {
212
+ return {
213
+ baseUrl: config.baseUrl,
214
+ model: config.model,
215
+ provider: config.provider,
216
+ timeout: config.timeout,
217
+ workingDirectory: config.workingDirectory,
218
+ debug: config.debug,
219
+ authToken: `${config.authToken.slice(0, 8)}***`
220
+ };
221
+ }
222
+ /**
223
+ * Get configuration summary for display
224
+ */
225
+ export function getConfigSummary(config) {
226
+ const sanitized = sanitizeConfig(config);
227
+ return [
228
+ `Provider: ${sanitized.provider}`,
229
+ `Model: ${sanitized.model}`,
230
+ `Base URL: ${sanitized.baseUrl}`,
231
+ `Working Directory: ${sanitized.workingDirectory}`,
232
+ `Debug: ${sanitized.debug ? 'ON' : 'OFF'}`,
233
+ `Timeout: ${sanitized.timeout}s`
234
+ ].join('\n');
235
+ }
236
+ /**
237
+ * Check if configuration is valid without throwing
238
+ */
239
+ export async function isConfigValid(workingDir) {
240
+ try {
241
+ await loadCodeMieConfig(workingDir);
242
+ return true;
243
+ }
244
+ catch {
245
+ return false;
246
+ }
247
+ }
248
+ /**
249
+ * Get configuration status for health checks
250
+ */
251
+ export async function getConfigStatus(workingDir) {
252
+ const workDir = workingDir || process.cwd();
253
+ try {
254
+ const config = await loadCodeMieConfig(workDir);
255
+ const hasGlobal = await ConfigLoader.hasGlobalConfig();
256
+ const hasProject = await ConfigLoader.hasProjectConfig(workDir);
257
+ return {
258
+ valid: true,
259
+ hasGlobalConfig: hasGlobal,
260
+ hasProjectConfig: hasProject,
261
+ provider: config.provider,
262
+ model: config.model
263
+ };
264
+ }
265
+ catch (error) {
266
+ const hasGlobal = await ConfigLoader.hasGlobalConfig();
267
+ const hasProject = await ConfigLoader.hasProjectConfig(workDir);
268
+ return {
269
+ valid: false,
270
+ hasGlobalConfig: hasGlobal,
271
+ hasProjectConfig: hasProject,
272
+ error: error instanceof Error ? error.message : String(error)
273
+ };
274
+ }
275
+ }
276
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Directory and File Filtering System
3
+ *
4
+ * Provides intelligent filtering for directory listings to exclude common
5
+ * directories and files that are typically gitignored or not relevant
6
+ * for code analysis (dependencies, build artifacts, IDE files, etc.)
7
+ */
8
+ /**
9
+ * Filter configuration interface
10
+ */
11
+ export interface FilterConfig {
12
+ /** Enable/disable filtering entirely */
13
+ enabled: boolean;
14
+ /** Custom patterns to ignore (in addition to defaults) */
15
+ customIgnorePatterns?: string[];
16
+ /** Patterns to always include (overrides ignore patterns) */
17
+ forceIncludePatterns?: string[];
18
+ /** Enable case-sensitive matching */
19
+ caseSensitive?: boolean;
20
+ }
21
+ /**
22
+ * Default filter patterns organized by category
23
+ */
24
+ export declare const DEFAULT_IGNORE_PATTERNS: {
25
+ versionControl: string[];
26
+ dependencies: string[];
27
+ buildArtifacts: string[];
28
+ testOutput: string[];
29
+ ideFiles: string[];
30
+ osFiles: string[];
31
+ cache: string[];
32
+ python: string[];
33
+ java: string[];
34
+ javascript: string[];
35
+ go: string[];
36
+ rust: string[];
37
+ cCpp: string[];
38
+ ruby: string[];
39
+ dotnet: string[];
40
+ };
41
+ /**
42
+ * Compile all default patterns into a single array
43
+ */
44
+ export declare function getDefaultIgnorePatterns(): string[];
45
+ /**
46
+ * Simple glob pattern matcher
47
+ * Supports * (any chars), ** (any dirs), and ? (single char)
48
+ */
49
+ export declare function matchesPattern(filename: string, pattern: string, caseSensitive?: boolean): boolean;
50
+ /**
51
+ * Check if a file or directory should be ignored
52
+ */
53
+ export declare function shouldIgnore(name: string, isDirectory: boolean, config: FilterConfig, relativePath?: string): boolean;
54
+ /**
55
+ * Filter an array of directory entries
56
+ */
57
+ export declare function filterDirectoryEntries(entries: Array<{
58
+ name: string;
59
+ isDirectory: boolean;
60
+ }>, config: FilterConfig, basePath?: string): Array<{
61
+ name: string;
62
+ isDirectory: boolean;
63
+ }>;
64
+ /**
65
+ * Default filter configuration
66
+ */
67
+ export declare const DEFAULT_FILTER_CONFIG: FilterConfig;
68
+ /**
69
+ * Create a filter configuration with custom settings
70
+ */
71
+ export declare function createFilterConfig(overrides?: Partial<FilterConfig>): FilterConfig;
72
+ /**
73
+ * Get statistics about filtering
74
+ */
75
+ export interface FilterStats {
76
+ totalEntries: number;
77
+ filteredEntries: number;
78
+ ignoredEntries: number;
79
+ ignoredByCategory: Record<string, number>;
80
+ }
81
+ /**
82
+ * Generate filtering statistics
83
+ */
84
+ export declare function generateFilterStats(originalEntries: Array<{
85
+ name: string;
86
+ isDirectory: boolean;
87
+ }>, filteredEntries: Array<{
88
+ name: string;
89
+ isDirectory: boolean;
90
+ }>, config: FilterConfig): FilterStats;
91
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/filters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IAEjB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhC,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhC,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CA8JnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,OAAO,CA4ChG;AAiCD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAsCT;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,EACtD,MAAM,EAAE,YAAY,EACpB,QAAQ,SAAK,GACZ,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAS/C;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAKnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAKtF;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,EAC9D,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,EAC9D,MAAM,EAAE,YAAY,GACnB,WAAW,CAyBb"}