@codemieai/code 0.0.2 → 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 (243) hide show
  1. package/CLAUDE.md +130 -760
  2. package/README.md +283 -695
  3. package/bin/codemie-claude.js +122 -0
  4. package/bin/codemie-code.js +90 -15
  5. package/bin/codemie-codex.js +138 -0
  6. package/bin/codemie.js +1 -1
  7. package/config.example.json +10 -0
  8. package/dist/agents/adapters/claude-code.d.ts +2 -2
  9. package/dist/agents/adapters/claude-code.d.ts.map +1 -1
  10. package/dist/agents/adapters/claude-code.js +20 -42
  11. package/dist/agents/adapters/claude-code.js.map +1 -1
  12. package/dist/agents/adapters/codemie-code.d.ts +11 -2
  13. package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
  14. package/dist/agents/adapters/codemie-code.js +93 -25
  15. package/dist/agents/adapters/codemie-code.js.map +1 -1
  16. package/dist/agents/adapters/codex.d.ts +2 -2
  17. package/dist/agents/adapters/codex.d.ts.map +1 -1
  18. package/dist/agents/adapters/codex.js +31 -24
  19. package/dist/agents/adapters/codex.js.map +1 -1
  20. package/dist/agents/codemie-code/agent.d.ts +89 -0
  21. package/dist/agents/codemie-code/agent.d.ts.map +1 -0
  22. package/dist/agents/codemie-code/agent.js +523 -0
  23. package/dist/agents/codemie-code/agent.js.map +1 -0
  24. package/dist/agents/codemie-code/config.d.ts +40 -0
  25. package/dist/agents/codemie-code/config.d.ts.map +1 -0
  26. package/dist/agents/codemie-code/config.js +276 -0
  27. package/dist/agents/codemie-code/config.js.map +1 -0
  28. package/dist/agents/codemie-code/filters.d.ts +91 -0
  29. package/dist/agents/codemie-code/filters.d.ts.map +1 -0
  30. package/dist/agents/codemie-code/filters.js +328 -0
  31. package/dist/agents/codemie-code/filters.js.map +1 -0
  32. package/dist/agents/codemie-code/index.d.ts +78 -0
  33. package/dist/agents/codemie-code/index.d.ts.map +1 -0
  34. package/dist/agents/codemie-code/index.js +259 -0
  35. package/dist/agents/codemie-code/index.js.map +1 -0
  36. package/dist/agents/codemie-code/prompts.d.ts +11 -0
  37. package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
  38. package/dist/agents/codemie-code/prompts.js +31 -0
  39. package/dist/agents/codemie-code/prompts.js.map +1 -0
  40. package/dist/agents/codemie-code/streaming/events.d.ts +7 -0
  41. package/dist/agents/codemie-code/streaming/events.d.ts.map +1 -0
  42. package/dist/agents/codemie-code/streaming/events.js +7 -0
  43. package/dist/agents/codemie-code/streaming/events.js.map +1 -0
  44. package/dist/agents/codemie-code/streaming/formatter.d.ts +2 -0
  45. package/dist/agents/codemie-code/streaming/formatter.d.ts.map +1 -0
  46. package/dist/agents/codemie-code/streaming/formatter.js +2 -0
  47. package/dist/agents/codemie-code/streaming/formatter.js.map +1 -0
  48. package/dist/agents/codemie-code/streaming/ui.d.ts +2 -0
  49. package/dist/agents/codemie-code/streaming/ui.d.ts.map +1 -0
  50. package/dist/agents/codemie-code/streaming/ui.js +2 -0
  51. package/dist/agents/codemie-code/streaming/ui.js.map +1 -0
  52. package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
  53. package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
  54. package/dist/agents/codemie-code/tokenUtils.js +220 -0
  55. package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
  56. package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
  57. package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
  58. package/dist/agents/codemie-code/toolMetadata.js +315 -0
  59. package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
  60. package/dist/agents/codemie-code/tools/command.d.ts +2 -0
  61. package/dist/agents/codemie-code/tools/command.d.ts.map +1 -0
  62. package/dist/agents/codemie-code/tools/command.js +2 -0
  63. package/dist/agents/codemie-code/tools/command.js.map +1 -0
  64. package/dist/agents/codemie-code/tools/filesystem.d.ts +2 -0
  65. package/dist/agents/codemie-code/tools/filesystem.d.ts.map +1 -0
  66. package/dist/agents/codemie-code/tools/filesystem.js +2 -0
  67. package/dist/agents/codemie-code/tools/filesystem.js.map +1 -0
  68. package/dist/agents/codemie-code/tools/git.d.ts +2 -0
  69. package/dist/agents/codemie-code/tools/git.d.ts.map +1 -0
  70. package/dist/agents/codemie-code/tools/git.js +2 -0
  71. package/dist/agents/codemie-code/tools/git.js.map +1 -0
  72. package/dist/agents/codemie-code/tools/index.d.ts +19 -0
  73. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
  74. package/dist/agents/codemie-code/tools/index.js +239 -0
  75. package/dist/agents/codemie-code/tools/index.js.map +1 -0
  76. package/dist/agents/codemie-code/tools/security.d.ts +2 -0
  77. package/dist/agents/codemie-code/tools/security.d.ts.map +1 -0
  78. package/dist/agents/codemie-code/tools/security.js +2 -0
  79. package/dist/agents/codemie-code/tools/security.js.map +1 -0
  80. package/dist/agents/codemie-code/types.d.ts +254 -0
  81. package/dist/agents/codemie-code/types.d.ts.map +1 -0
  82. package/dist/agents/codemie-code/types.js +35 -0
  83. package/dist/agents/codemie-code/types.js.map +1 -0
  84. package/dist/agents/codemie-code/ui.d.ts +83 -0
  85. package/dist/agents/codemie-code/ui.d.ts.map +1 -0
  86. package/dist/agents/codemie-code/ui.js +624 -0
  87. package/dist/agents/codemie-code/ui.js.map +1 -0
  88. package/dist/agents/registry.d.ts +1 -1
  89. package/dist/agents/registry.d.ts.map +1 -1
  90. package/dist/agents/registry.js +7 -13
  91. package/dist/agents/registry.js.map +1 -1
  92. package/dist/cli/commands/config.d.ts +3 -0
  93. package/dist/cli/commands/config.d.ts.map +1 -0
  94. package/dist/cli/commands/config.js +323 -0
  95. package/dist/cli/commands/config.js.map +1 -0
  96. package/dist/cli/commands/doctor.d.ts.map +1 -1
  97. package/dist/cli/commands/doctor.js +113 -69
  98. package/dist/cli/commands/doctor.js.map +1 -1
  99. package/dist/cli/commands/env.d.ts +3 -0
  100. package/dist/cli/commands/env.d.ts.map +1 -0
  101. package/dist/cli/commands/env.js +19 -0
  102. package/dist/cli/commands/env.js.map +1 -0
  103. package/dist/cli/commands/install.js +27 -33
  104. package/dist/cli/commands/install.js.map +1 -1
  105. package/dist/cli/commands/list.js +18 -24
  106. package/dist/cli/commands/list.js.map +1 -1
  107. package/dist/cli/commands/run.d.ts.map +1 -1
  108. package/dist/cli/commands/run.js +291 -31
  109. package/dist/cli/commands/run.js.map +1 -1
  110. package/dist/cli/commands/setup.d.ts +3 -0
  111. package/dist/cli/commands/setup.d.ts.map +1 -0
  112. package/dist/cli/commands/setup.js +357 -0
  113. package/dist/cli/commands/setup.js.map +1 -0
  114. package/dist/cli/commands/uninstall.js +24 -30
  115. package/dist/cli/commands/uninstall.js.map +1 -1
  116. package/dist/cli/commands/version.d.ts.map +1 -1
  117. package/dist/cli/commands/version.js +11 -16
  118. package/dist/cli/commands/version.js.map +1 -1
  119. package/dist/cli/index.js +47 -31
  120. package/dist/cli/index.js.map +1 -1
  121. package/dist/env/manager.js +9 -46
  122. package/dist/env/manager.js.map +1 -1
  123. package/dist/index.d.ts +6 -13
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +6 -43
  126. package/dist/index.js.map +1 -1
  127. package/dist/utils/async-tips.d.ts.map +1 -1
  128. package/dist/utils/async-tips.js +16 -55
  129. package/dist/utils/async-tips.js.map +1 -1
  130. package/dist/utils/clipboard.d.ts +16 -0
  131. package/dist/utils/clipboard.d.ts.map +1 -0
  132. package/dist/utils/clipboard.js +179 -0
  133. package/dist/utils/clipboard.js.map +1 -0
  134. package/dist/utils/config-loader.d.ts +96 -0
  135. package/dist/utils/config-loader.d.ts.map +1 -0
  136. package/dist/utils/config-loader.js +351 -0
  137. package/dist/utils/config-loader.js.map +1 -0
  138. package/dist/utils/dirname.d.ts +7 -0
  139. package/dist/utils/dirname.d.ts.map +1 -0
  140. package/dist/utils/dirname.js +11 -0
  141. package/dist/utils/dirname.js.map +1 -0
  142. package/dist/utils/errors.js +7 -17
  143. package/dist/utils/errors.js.map +1 -1
  144. package/dist/utils/exec.js +3 -6
  145. package/dist/utils/exec.js.map +1 -1
  146. package/dist/utils/first-time.d.ts +34 -0
  147. package/dist/utils/first-time.d.ts.map +1 -0
  148. package/dist/utils/first-time.js +245 -0
  149. package/dist/utils/first-time.js.map +1 -0
  150. package/dist/utils/health-checker.d.ts +20 -0
  151. package/dist/utils/health-checker.d.ts.map +1 -0
  152. package/dist/utils/health-checker.js +168 -0
  153. package/dist/utils/health-checker.js.map +1 -0
  154. package/dist/utils/logger.js +12 -18
  155. package/dist/utils/logger.js.map +1 -1
  156. package/dist/utils/model-fetcher.d.ts +21 -0
  157. package/dist/utils/model-fetcher.d.ts.map +1 -0
  158. package/dist/utils/model-fetcher.js +137 -0
  159. package/dist/utils/model-fetcher.js.map +1 -0
  160. package/dist/utils/tips.d.ts.map +1 -1
  161. package/dist/utils/tips.js +13 -52
  162. package/dist/utils/tips.js.map +1 -1
  163. package/package.json +17 -23
  164. package/scripts/README.md +80 -0
  165. package/scripts/release.sh +156 -0
  166. package/dist/agents/adapters/aider.d.ts +0 -12
  167. package/dist/agents/adapters/aider.d.ts.map +0 -1
  168. package/dist/agents/adapters/aider.js +0 -80
  169. package/dist/agents/adapters/aider.js.map +0 -1
  170. package/dist/cli/cli.d.ts +0 -4
  171. package/dist/cli/cli.d.ts.map +0 -1
  172. package/dist/cli/cli.js +0 -107
  173. package/dist/cli/cli.js.map +0 -1
  174. package/dist/cli/commands/mcp.d.ts +0 -3
  175. package/dist/cli/commands/mcp.d.ts.map +0 -1
  176. package/dist/cli/commands/mcp.js +0 -459
  177. package/dist/cli/commands/mcp.js.map +0 -1
  178. package/dist/code/agent-events.d.ts +0 -39
  179. package/dist/code/agent-events.d.ts.map +0 -1
  180. package/dist/code/agent-events.js +0 -4
  181. package/dist/code/agent-events.js.map +0 -1
  182. package/dist/code/agent.d.ts +0 -19
  183. package/dist/code/agent.d.ts.map +0 -1
  184. package/dist/code/agent.js +0 -144
  185. package/dist/code/agent.js.map +0 -1
  186. package/dist/code/config.d.ts +0 -13
  187. package/dist/code/config.d.ts.map +0 -1
  188. package/dist/code/config.js +0 -41
  189. package/dist/code/config.js.map +0 -1
  190. package/dist/code/index.d.ts +0 -19
  191. package/dist/code/index.d.ts.map +0 -1
  192. package/dist/code/index.js +0 -400
  193. package/dist/code/index.js.map +0 -1
  194. package/dist/code/prompts.d.ts +0 -2
  195. package/dist/code/prompts.d.ts.map +0 -1
  196. package/dist/code/prompts.js +0 -45
  197. package/dist/code/prompts.js.map +0 -1
  198. package/dist/code/tools/command.d.ts +0 -8
  199. package/dist/code/tools/command.d.ts.map +0 -1
  200. package/dist/code/tools/command.js +0 -83
  201. package/dist/code/tools/command.js.map +0 -1
  202. package/dist/code/tools/diff-utils.d.ts +0 -2
  203. package/dist/code/tools/diff-utils.d.ts.map +0 -1
  204. package/dist/code/tools/diff-utils.js +0 -45
  205. package/dist/code/tools/diff-utils.js.map +0 -1
  206. package/dist/code/tools/filesystem.d.ts +0 -11
  207. package/dist/code/tools/filesystem.d.ts.map +0 -1
  208. package/dist/code/tools/filesystem.js +0 -442
  209. package/dist/code/tools/filesystem.js.map +0 -1
  210. package/dist/code/tools/git.d.ts +0 -7
  211. package/dist/code/tools/git.d.ts.map +0 -1
  212. package/dist/code/tools/git.js +0 -111
  213. package/dist/code/tools/git.js.map +0 -1
  214. package/dist/code/tools/mcp.d.ts +0 -13
  215. package/dist/code/tools/mcp.d.ts.map +0 -1
  216. package/dist/code/tools/mcp.js +0 -230
  217. package/dist/code/tools/mcp.js.map +0 -1
  218. package/dist/data/tips.json +0 -118
  219. package/dist/ui/terminal-ui.d.ts +0 -73
  220. package/dist/ui/terminal-ui.d.ts.map +0 -1
  221. package/dist/ui/terminal-ui.js +0 -900
  222. package/dist/ui/terminal-ui.js.map +0 -1
  223. package/dist/utils/env-mapper.d.ts +0 -40
  224. package/dist/utils/env-mapper.d.ts.map +0 -1
  225. package/dist/utils/env-mapper.js +0 -122
  226. package/dist/utils/env-mapper.js.map +0 -1
  227. package/docs/USER_GUIDE.md +0 -573
  228. package/tests/agent-direct.test.mjs +0 -45
  229. package/tests/agent-output.test.mjs +0 -64
  230. package/tests/codemie-code.test.mjs +0 -42
  231. package/tests/context7-only.test.mjs +0 -42
  232. package/tests/conversation-flow.test.mjs +0 -63
  233. package/tests/interactive-simulation.test.mjs +0 -60
  234. package/tests/live-output.test.mjs +0 -53
  235. package/tests/mcp-context7.test.mjs +0 -105
  236. package/tests/mcp-e2e.test.mjs +0 -109
  237. package/tests/mcp-time-server.test.mjs +0 -58
  238. package/tests/streaming.test.mjs +0 -57
  239. package/tests/test-helpers.mjs +0 -94
  240. package/tests/text-wrapping.test.mjs +0 -33
  241. package/tests/tool-count.test.mjs +0 -81
  242. package/tests/ui-format.test.mjs +0 -39
  243. package/tests/ui-state.test.mjs +0 -72
@@ -1,81 +0,0 @@
1
- /**
2
- * Integration Test: Verify MCP tools are loaded correctly
3
- * Uses Node.js native test runner
4
- */
5
-
6
- import { describe, it, before, after } from 'node:test';
7
- import assert from 'node:assert';
8
- import { CodeMieCode } from '../dist/code/index.js';
9
- import { skipIfNoBaseUrl } from './test-helpers.mjs';
10
-
11
- describe('Tool Loading', () => {
12
- let assistant;
13
-
14
- before(async () => {
15
- if (skipIfNoBaseUrl()) return;
16
-
17
- assistant = new CodeMieCode(process.cwd());
18
- await assistant.initialize({ showTips: false });
19
- });
20
-
21
- after(async () => {
22
- if (assistant) {
23
- await assistant.dispose();
24
- }
25
- });
26
-
27
- it('should load all tools', () => {
28
- if (skipIfNoBaseUrl()) return;
29
- const agent = assistant.agent;
30
- const tools = agent.tools;
31
-
32
- assert.ok(tools, 'Tools should be defined');
33
- assert.ok(tools.length > 0, 'Should have loaded tools');
34
- });
35
-
36
- it('should load tools by category', () => {
37
- if (skipIfNoBaseUrl()) return;
38
- const agent = assistant.agent;
39
- const tools = agent.tools;
40
-
41
- const toolTypes = {
42
- filesystem: [],
43
- command: [],
44
- git: [],
45
- mcp: [],
46
- other: []
47
- };
48
-
49
- tools.forEach(tool => {
50
- if (tool.name.startsWith('mcp_')) {
51
- toolTypes.mcp.push(tool);
52
- } else if (tool.name.includes('file') || tool.name.includes('directory') || tool.name.includes('read') || tool.name.includes('write')) {
53
- toolTypes.filesystem.push(tool);
54
- } else if (tool.name.includes('command') || tool.name.includes('execute')) {
55
- toolTypes.command.push(tool);
56
- } else if (tool.name.includes('git')) {
57
- toolTypes.git.push(tool);
58
- } else {
59
- toolTypes.other.push(tool);
60
- }
61
- });
62
-
63
- assert.ok(toolTypes.filesystem.length >= 8, `Expected >= 8 filesystem tools, got ${toolTypes.filesystem.length}`);
64
- assert.ok(toolTypes.command.length >= 2, `Expected >= 2 command tools, got ${toolTypes.command.length}`);
65
- assert.ok(toolTypes.git.length >= 3, `Expected >= 3 git tools, got ${toolTypes.git.length}`);
66
- });
67
-
68
- it('should load MCP tools from context7', () => {
69
- if (skipIfNoBaseUrl()) return;
70
- const agent = assistant.agent;
71
- const tools = agent.tools;
72
-
73
- const mcpTools = tools.filter(tool => tool.name.startsWith('mcp_'));
74
-
75
- assert.ok(mcpTools.length >= 2, `Expected >= 2 MCP tools, got ${mcpTools.length}`);
76
-
77
- const toolNames = mcpTools.map(t => t.name);
78
- assert.ok(toolNames.includes('mcp_resolve-library-id'), 'Should have mcp_resolve-library-id');
79
- assert.ok(toolNames.includes('mcp_get-library-docs'), 'Should have mcp_get-library-docs');
80
- });
81
- });
@@ -1,39 +0,0 @@
1
- /**
2
- * Integration Test: UI formatting
3
- * Uses Node.js native test runner
4
- */
5
-
6
- import { describe, it } from 'node:test';
7
- import assert from 'node:assert';
8
-
9
- describe('UI Format', () => {
10
- it('should format tool calls correctly', () => {
11
- const toolName = 'Bash';
12
- const toolArgs = { command: 'ls -la' };
13
- const formatted = `⏺ ${toolName}(${JSON.stringify(toolArgs)})`;
14
-
15
- assert.ok(formatted.includes('⏺'), 'Should include bullet point');
16
- assert.ok(formatted.includes('Bash'), 'Should include tool name');
17
- assert.ok(formatted.includes('ls -la'), 'Should include arguments');
18
- });
19
-
20
- it('should format tool results with indentation', () => {
21
- const result = 'total 672\ndrwxr-xr-x@ 21 Nikita_Levyankov';
22
- const lines = result.split('\n');
23
- const formatted = ` ⎿ ${lines[0]}`;
24
-
25
- assert.ok(formatted.includes('⎿'), 'Should include corner symbol');
26
- assert.ok(formatted.startsWith(' '), 'Should be indented');
27
- assert.ok(formatted.includes('total 672'), 'Should include result content');
28
- });
29
-
30
- it('should truncate long multi-line results', () => {
31
- const result = Array(20).fill('line').join('\n');
32
- const lines = result.split('\n');
33
- const displayLines = lines.slice(0, 3);
34
- const hiddenLines = Math.max(0, lines.length - 3);
35
-
36
- assert.strictEqual(displayLines.length, 3, 'Should show only 3 lines');
37
- assert.strictEqual(hiddenLines, 17, 'Should hide 17 lines');
38
- });
39
- });
@@ -1,72 +0,0 @@
1
- /**
2
- * Integration Test: UI state management
3
- * Uses Node.js native test runner
4
- */
5
-
6
- import { describe, it, before, after } from 'node:test';
7
- import assert from 'node:assert';
8
- import { CodeMieCode } from '../dist/code/index.js';
9
- import { skipIfNoBaseUrl } from './test-helpers.mjs';
10
-
11
- describe('UI State Management', () => {
12
- let assistant;
13
-
14
- before(async () => {
15
- if (skipIfNoBaseUrl()) return;
16
-
17
- assistant = new CodeMieCode(process.cwd());
18
- await assistant.initialize({ showTips: false });
19
- });
20
-
21
- after(async () => {
22
- if (assistant) {
23
- await assistant.dispose();
24
- }
25
- });
26
-
27
- it('should handle consecutive messages without blocking', async () => {
28
- if (skipIfNoBaseUrl()) return;
29
- const mockUIState = {
30
- isProcessing: false,
31
- inputEnabled: true
32
- };
33
-
34
- const questions = [
35
- 'What is 2+2?',
36
- 'What is the capital of France?',
37
- 'List files in current directory'
38
- ];
39
-
40
- let messageCount = 0;
41
-
42
- for (let i = 0; i < questions.length; i++) {
43
- const question = questions[i];
44
-
45
- // Check if processing (simulating UI check)
46
- assert.strictEqual(mockUIState.isProcessing, false, `Should not be processing before question ${i + 1}`);
47
-
48
- // Set processing flag (like the UI does)
49
- mockUIState.isProcessing = true;
50
- mockUIState.inputEnabled = false;
51
-
52
- try {
53
- // Call the agent
54
- await assistant.agent.chatStream(question, (event) => {
55
- // Track events silently
56
- });
57
-
58
- messageCount++;
59
- } finally {
60
- // Reset state (like the UI does)
61
- mockUIState.isProcessing = false;
62
- mockUIState.inputEnabled = true;
63
- }
64
-
65
- // Verify state is properly reset
66
- assert.strictEqual(mockUIState.isProcessing, false, `isProcessing should be reset after question ${i + 1}`);
67
- assert.strictEqual(mockUIState.inputEnabled, true, `inputEnabled should be reset after question ${i + 1}`);
68
- }
69
-
70
- assert.strictEqual(messageCount, 3, 'Should have processed all 3 messages');
71
- });
72
- });