@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,624 @@
1
+ import { intro, outro, text, spinner, note, isCancel } from '@clack/prompts';
2
+ import chalk from 'chalk';
3
+ import { formatToolMetadata } from './toolMetadata.js';
4
+ import { formatCost, formatTokens, formatTokenUsageSummary } from './tokenUtils.js';
5
+ import { hasClipboardImage, getClipboardImage } from '../../utils/clipboard.js';
6
+ /**
7
+ * Terminal UI interface for CodeMie Agent using Clack
8
+ */
9
+ export class CodeMieTerminalUI {
10
+ agent;
11
+ currentSpinner;
12
+ constructor(agent) {
13
+ this.agent = agent;
14
+ }
15
+ /**
16
+ * Start interactive terminal session
17
+ */
18
+ async startInteractive() {
19
+ // Welcome message
20
+ intro(chalk.cyan('🤖 CodeMie Native Agent'));
21
+ const config = this.agent.getConfig();
22
+ if (config) {
23
+ note(`Provider: ${chalk.yellow(config.provider)}\n` +
24
+ `Model: ${chalk.cyan(config.model)}\n` +
25
+ `Working Directory: ${chalk.dim(config.workingDirectory)}`, 'Configuration');
26
+ }
27
+ console.log(chalk.dim('Type /help for commands, /exit to quit'));
28
+ console.log(chalk.dim('Enter = send, Shift+Enter = new line, Cmd+V = paste text'));
29
+ console.log(chalk.dim('📸 Tab = insert clipboard image • Multiple images supported\n'));
30
+ // Main interaction loop
31
+ while (true) {
32
+ const input = await this.getMultilineInput();
33
+ if (input === null) {
34
+ outro(chalk.dim('Goodbye! 👋'));
35
+ break;
36
+ }
37
+ const trimmed = input.text.trim();
38
+ // Handle special commands
39
+ if (trimmed.startsWith('/')) {
40
+ const handled = await this.handleCommand(trimmed);
41
+ if (handled === 'exit')
42
+ break;
43
+ continue;
44
+ }
45
+ if (trimmed === '')
46
+ continue;
47
+ // Execute the task with streaming UI
48
+ await this.executeTaskWithUI(trimmed, input.images);
49
+ }
50
+ }
51
+ /**
52
+ * Get input from user with Shift+Enter multiline support and image pasting
53
+ */
54
+ async getMultilineInput() {
55
+ return new Promise((resolve) => {
56
+ if (!process.stdin.setRawMode) {
57
+ // Fallback for environments without raw mode
58
+ resolve(this.getFallbackInput());
59
+ return;
60
+ }
61
+ process.stdin.setRawMode(true);
62
+ process.stdin.resume();
63
+ process.stdin.setEncoding('utf8');
64
+ let lines = [];
65
+ let currentLine = '';
66
+ let isFirstLine = true;
67
+ let escapeSequence = '';
68
+ let images = [];
69
+ let imageCounter = 0;
70
+ const writePrompt = () => {
71
+ const prompt = isFirstLine ? '> ' : '... ';
72
+ process.stdout.write(prompt);
73
+ };
74
+ const cleanup = () => {
75
+ process.stdin.setRawMode(false);
76
+ process.stdin.pause();
77
+ process.stdin.removeAllListeners('data');
78
+ };
79
+ writePrompt();
80
+ process.stdin.on('data', (key) => {
81
+ const data = key.toString('utf8');
82
+ // Handle escape sequences
83
+ if (data.startsWith('\x1b')) {
84
+ escapeSequence += data;
85
+ // Wait for complete escape sequence (timeout after short delay)
86
+ setTimeout(() => {
87
+ escapeSequence = '';
88
+ }, 10);
89
+ return;
90
+ }
91
+ // Check for Shift+Enter patterns on macOS
92
+ // Shift+Enter in macOS Terminal typically sends: \r\n or \n\r
93
+ if (data === '\r\n' || data === '\n\r' || (escapeSequence && data === '\r')) {
94
+ // This is Shift+Enter - add line and continue
95
+ lines.push(currentLine);
96
+ currentLine = '';
97
+ isFirstLine = false;
98
+ process.stdout.write('\n');
99
+ writePrompt();
100
+ escapeSequence = '';
101
+ return;
102
+ }
103
+ // Regular Enter - send message
104
+ if (data === '\r' || data === '\n') {
105
+ if (currentLine.trim() === '' && lines.length === 0) {
106
+ // Empty input, continue asking
107
+ writePrompt();
108
+ return;
109
+ }
110
+ // Send the message
111
+ if (currentLine.trim() !== '') {
112
+ lines.push(currentLine);
113
+ }
114
+ process.stdout.write('\n');
115
+ cleanup();
116
+ resolve({
117
+ text: lines.join('\n'),
118
+ images: images
119
+ });
120
+ return;
121
+ }
122
+ // Ctrl+C
123
+ if (data === '\u0003') {
124
+ cleanup();
125
+ resolve(null);
126
+ return;
127
+ }
128
+ // Ctrl+I - Insert image from clipboard
129
+ if (data === '\u0009') {
130
+ // Check if there's an image in clipboard
131
+ hasClipboardImage().then(hasImage => {
132
+ if (hasImage) {
133
+ getClipboardImage().then(clipboardImage => {
134
+ if (clipboardImage) {
135
+ imageCounter++;
136
+ images.push(clipboardImage);
137
+ // Insert visual indicator in current line
138
+ const imageIndicator = chalk.blue(`[Image #${imageCounter}]`);
139
+ currentLine += imageIndicator;
140
+ process.stdout.write(imageIndicator);
141
+ console.log(chalk.green(`\n📸 Image #${imageCounter} added from clipboard (${clipboardImage.mimeType})`));
142
+ writePrompt();
143
+ process.stdout.write(currentLine);
144
+ }
145
+ });
146
+ }
147
+ else {
148
+ console.log(chalk.yellow('\n⚠️ No image found in clipboard'));
149
+ writePrompt();
150
+ process.stdout.write(currentLine);
151
+ }
152
+ }).catch(() => {
153
+ console.log(chalk.red('\n❌ Error accessing clipboard'));
154
+ writePrompt();
155
+ process.stdout.write(currentLine);
156
+ });
157
+ return;
158
+ }
159
+ // Backspace
160
+ if (data === '\u007F' || data === '\b') {
161
+ if (currentLine.length > 0) {
162
+ currentLine = currentLine.slice(0, -1);
163
+ process.stdout.write('\b \b');
164
+ }
165
+ return;
166
+ }
167
+ // Handle clipboard paste (Cmd+V on macOS, Ctrl+V on Windows/Linux)
168
+ // Pasted content can be multiple characters, so handle any printable text
169
+ if (data.length > 1 || (data.length === 1 && (data.charCodeAt(0) >= 32 || data === '\t'))) {
170
+ // Filter out non-printable characters except tabs
171
+ const printableData = data.split('').filter(char => char.charCodeAt(0) >= 32 || char === '\t').join('');
172
+ if (printableData.length > 0) {
173
+ currentLine += printableData;
174
+ process.stdout.write(printableData);
175
+ }
176
+ }
177
+ escapeSequence = '';
178
+ });
179
+ });
180
+ }
181
+ /**
182
+ * Fallback input method for environments without raw mode
183
+ */
184
+ async getFallbackInput() {
185
+ const input = await text({
186
+ message: '>',
187
+ placeholder: 'Type your message... (Tab to insert clipboard image)'
188
+ });
189
+ if (isCancel(input)) {
190
+ return null;
191
+ }
192
+ const textInput = input === undefined || input === null ? '' : String(input);
193
+ // In fallback mode, we can't handle interactive image insertion
194
+ // So just return text with empty images array
195
+ return {
196
+ text: textInput,
197
+ images: []
198
+ };
199
+ }
200
+ /**
201
+ * Handle special commands
202
+ */
203
+ async handleCommand(command) {
204
+ const [cmd] = command.slice(1).split(' ');
205
+ switch (cmd) {
206
+ case 'help':
207
+ note(`${chalk.cyan('/help')} - Show this help message\n` +
208
+ `${chalk.cyan('/clear')} - Clear conversation history\n` +
209
+ `${chalk.cyan('/stats')} - Show agent statistics\n` +
210
+ `${chalk.cyan('/config')} - Show configuration\n` +
211
+ `${chalk.cyan('/health')} - Run health check\n` +
212
+ `${chalk.cyan('/exit')} - Exit the agent\n\n` +
213
+ `${chalk.yellow('Input Controls:')}\n` +
214
+ `- ${chalk.cyan('Enter')} - Send message\n` +
215
+ `- ${chalk.cyan('Shift+Enter')} - New line (multiline input)\n` +
216
+ `- ${chalk.cyan('Cmd+V / Ctrl+V')} - Paste text from clipboard\n` +
217
+ `- ${chalk.cyan('Tab')} - Insert image from clipboard\n` +
218
+ `- ${chalk.cyan('Ctrl+C')} - Cancel current input\n\n` +
219
+ `${chalk.yellow('Image Support:')}\n` +
220
+ `- Copy image/screenshot to clipboard\n` +
221
+ `- Press ${chalk.cyan('Tab')} to insert as ${chalk.blue('[Image #N]')}\n` +
222
+ `- Multiple images supported per message\n` +
223
+ `- AI analyzes both text and all images`, 'Available Commands');
224
+ break;
225
+ case 'clear':
226
+ this.agent.clearHistory();
227
+ note('Conversation history cleared', 'History');
228
+ break;
229
+ case 'stats':
230
+ await this.showStats();
231
+ break;
232
+ case 'config':
233
+ await this.showConfig();
234
+ break;
235
+ case 'health':
236
+ await this.runHealthCheck();
237
+ break;
238
+ case 'exit':
239
+ outro(chalk.dim('Goodbye! 👋'));
240
+ return 'exit';
241
+ default:
242
+ note(chalk.red(`Unknown command: ${command}\nType /help for available commands`), 'Error');
243
+ break;
244
+ }
245
+ }
246
+ /**
247
+ * Execute task with modern UI feedback
248
+ */
249
+ async executeTaskWithUI(task, images = []) {
250
+ let hasStarted = false;
251
+ let toolCallCount = 0;
252
+ try {
253
+ // Show image summary if any images were provided
254
+ if (images.length > 0) {
255
+ const imageTypes = images.map(img => img.mimeType).join(', ');
256
+ note(chalk.green(`📸 ${images.length} image${images.length > 1 ? 's' : ''} included: ${imageTypes}`), 'Image Input');
257
+ }
258
+ // Start streaming with visual feedback
259
+ await this.agent.chatStream(task, (event) => {
260
+ switch (event.type) {
261
+ case 'thinking_start':
262
+ // Show "Thinking..." spinner when the agent starts processing
263
+ if (!this.currentSpinner) {
264
+ this.currentSpinner = spinner();
265
+ }
266
+ this.currentSpinner.start(chalk.dim('Thinking...'));
267
+ break;
268
+ case 'content_chunk':
269
+ if (!hasStarted) {
270
+ // Stop any existing spinner and start response
271
+ if (this.currentSpinner) {
272
+ this.currentSpinner.stop();
273
+ this.currentSpinner = undefined;
274
+ }
275
+ console.log(chalk.cyan('\nCodeMie Thoughts:'));
276
+ hasStarted = true;
277
+ }
278
+ process.stdout.write(event.content || '');
279
+ break;
280
+ case 'tool_call_start':
281
+ toolCallCount++;
282
+ if (!this.currentSpinner) {
283
+ this.currentSpinner = spinner();
284
+ }
285
+ this.currentSpinner.start(chalk.yellow(`Using ${event.toolName}...`));
286
+ break;
287
+ case 'tool_call_result':
288
+ if (this.currentSpinner) {
289
+ // Use enhanced metadata if available, otherwise fall back to basic message
290
+ const message = event.toolMetadata
291
+ ? formatToolMetadata(event.toolName || 'tool', event.toolMetadata)
292
+ : `✓ ${event.toolName} completed`;
293
+ this.currentSpinner.stop(chalk.green(message));
294
+ // Show additional details if available and not an error (but avoid duplication)
295
+ if (event.toolMetadata && event.toolMetadata.success && this.shouldShowDetails(event.toolName || '')) {
296
+ this.showToolDetails(event.toolName || '', event.toolMetadata);
297
+ }
298
+ this.currentSpinner = undefined;
299
+ }
300
+ break;
301
+ case 'complete':
302
+ if (this.currentSpinner) {
303
+ this.currentSpinner.stop();
304
+ this.currentSpinner = undefined;
305
+ }
306
+ if (hasStarted) {
307
+ console.log('\n'); // Add spacing after response
308
+ }
309
+ // Show detailed task summary
310
+ this.showTaskSummary(toolCallCount);
311
+ break;
312
+ case 'error':
313
+ if (this.currentSpinner) {
314
+ this.currentSpinner.stop();
315
+ this.currentSpinner = undefined;
316
+ }
317
+ note(chalk.red(`Error: ${event.error}`), 'Error');
318
+ break;
319
+ }
320
+ }, images);
321
+ }
322
+ catch (error) {
323
+ if (this.currentSpinner) {
324
+ this.currentSpinner.stop();
325
+ this.currentSpinner = undefined;
326
+ }
327
+ const errorMessage = error instanceof Error ? error.message : String(error);
328
+ note(chalk.red(`Execution failed: ${errorMessage}`), 'Error');
329
+ }
330
+ finally {
331
+ // Cleanup complete
332
+ }
333
+ }
334
+ /**
335
+ * Show agent statistics
336
+ */
337
+ async showStats() {
338
+ const stats = this.agent.getStats();
339
+ if (!stats) {
340
+ note('No statistics available', 'Stats');
341
+ return;
342
+ }
343
+ const statsText = [
344
+ `${chalk.yellow('Token Usage:')}`,
345
+ ` Input: ${chalk.cyan(formatTokens(stats.inputTokens))}`,
346
+ ` Output: ${chalk.cyan(formatTokens(stats.outputTokens))}${stats.cachedTokens > 0 ? ` + ${chalk.green(formatTokens(stats.cachedTokens))} cached` : ''}`,
347
+ ` Total: ${chalk.cyan(formatTokens(stats.totalTokens))}`,
348
+ ` Cost: ${chalk.green(formatCost(stats.estimatedTotalCost))}`,
349
+ '',
350
+ `${chalk.yellow('Execution Stats:')}`,
351
+ ` LLM Calls: ${chalk.cyan(stats.llmCalls)}`,
352
+ ` Tool Calls: ${chalk.cyan(stats.toolCalls)} (${chalk.green(stats.successfulTools)} success, ${chalk.red(stats.failedTools)} failed)`,
353
+ ` Total Steps: ${chalk.cyan(stats.executionSteps.length)}`,
354
+ ` Duration: ${chalk.dim(stats.executionTime + 'ms')}`
355
+ ].join('\n');
356
+ note(statsText, 'Agent Statistics');
357
+ // Show detailed step breakdown if available
358
+ if (stats.executionSteps.length > 0) {
359
+ this.showExecutionSteps(stats.executionSteps);
360
+ }
361
+ }
362
+ /**
363
+ * Show current configuration
364
+ */
365
+ async showConfig() {
366
+ const config = this.agent.getConfig();
367
+ if (!config) {
368
+ note('No configuration available', 'Config');
369
+ return;
370
+ }
371
+ const configText = [
372
+ `Provider: ${chalk.yellow(config.provider)}`,
373
+ `Model: ${chalk.cyan(config.model)}`,
374
+ `Base URL: ${chalk.dim(config.baseUrl)}`,
375
+ `Working Directory: ${chalk.dim(config.workingDirectory)}`,
376
+ `Debug Mode: ${config.debug ? chalk.green('enabled') : chalk.dim('disabled')}`,
377
+ `Timeout: ${chalk.dim(config.timeout + 'ms')}`
378
+ ].join('\n');
379
+ note(configText, 'Configuration');
380
+ }
381
+ /**
382
+ * Run health check with UI feedback
383
+ */
384
+ async runHealthCheck() {
385
+ const healthSpinner = spinner();
386
+ healthSpinner.start('Running health check...');
387
+ try {
388
+ const health = await this.agent.healthCheck();
389
+ if (health.status === 'healthy') {
390
+ healthSpinner.stop(chalk.green('✓ System is healthy'));
391
+ const healthText = [
392
+ `Status: ${chalk.green('Healthy')}`,
393
+ `Provider: ${chalk.yellow(health.provider)}`,
394
+ `Model: ${chalk.cyan(health.model)}`,
395
+ `Tools: ${chalk.cyan(health.toolCount)}`
396
+ ].join('\n');
397
+ note(healthText, 'Health Check');
398
+ }
399
+ else {
400
+ healthSpinner.stop(chalk.red('✗ System is unhealthy'));
401
+ note(chalk.red(health.error || 'Unknown error'), 'Health Check Failed');
402
+ }
403
+ }
404
+ catch (error) {
405
+ healthSpinner.stop(chalk.red('✗ Health check failed'));
406
+ note(chalk.red(error instanceof Error ? error.message : String(error)), 'Error');
407
+ }
408
+ }
409
+ /**
410
+ * Format uptime duration
411
+ */
412
+ formatUptime(uptimeMs) {
413
+ const seconds = Math.floor(uptimeMs / 1000);
414
+ const minutes = Math.floor(seconds / 60);
415
+ const hours = Math.floor(minutes / 60);
416
+ if (hours > 0) {
417
+ return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
418
+ }
419
+ else if (minutes > 0) {
420
+ return `${minutes}m ${seconds % 60}s`;
421
+ }
422
+ else {
423
+ return `${seconds}s`;
424
+ }
425
+ }
426
+ /**
427
+ * Execute a single task with minimal UI (for non-interactive mode)
428
+ */
429
+ async executeSingleTask(task, images = []) {
430
+ const taskSpinner = spinner();
431
+ let response = '';
432
+ let toolCallCount = 0;
433
+ let hasStarted = false;
434
+ try {
435
+ await this.agent.chatStream(task, (event) => {
436
+ switch (event.type) {
437
+ case 'thinking_start':
438
+ // Show "Thinking..." when the agent starts processing
439
+ taskSpinner.start(chalk.dim('Thinking...'));
440
+ break;
441
+ case 'content_chunk':
442
+ if (!hasStarted) {
443
+ // Switch from "Thinking..." to "Processing task..." when content starts
444
+ taskSpinner.message(chalk.dim('Processing task...'));
445
+ hasStarted = true;
446
+ }
447
+ response += event.content || '';
448
+ break;
449
+ case 'tool_call_start':
450
+ toolCallCount++;
451
+ taskSpinner.message(chalk.yellow(`Using ${event.toolName}...`));
452
+ break;
453
+ case 'tool_call_result':
454
+ // Show enhanced tool info in single task mode too
455
+ if (event.toolMetadata) {
456
+ const message = formatToolMetadata(event.toolName || 'tool', event.toolMetadata);
457
+ taskSpinner.message(chalk.green(message));
458
+ }
459
+ else {
460
+ taskSpinner.message(chalk.dim('Processing task...'));
461
+ }
462
+ break;
463
+ case 'complete':
464
+ taskSpinner.stop();
465
+ break;
466
+ case 'error':
467
+ taskSpinner.stop(chalk.red(`Error: ${event.error}`));
468
+ break;
469
+ }
470
+ }, images);
471
+ // Show success message with token usage
472
+ const stats = this.agent.getStats();
473
+ const summaryParts = [];
474
+ if (toolCallCount > 0) {
475
+ summaryParts.push(`Used ${toolCallCount} tool${toolCallCount > 1 ? 's' : ''}`);
476
+ }
477
+ if (stats.totalTokens > 0) {
478
+ summaryParts.push(`${formatTokens(stats.totalTokens)} tokens`);
479
+ }
480
+ if (stats.estimatedTotalCost > 0) {
481
+ summaryParts.push(`${formatCost(stats.estimatedTotalCost)}`);
482
+ }
483
+ if (summaryParts.length > 0) {
484
+ console.log(chalk.dim(`${summaryParts.join(' • ')}\n`));
485
+ }
486
+ return response;
487
+ }
488
+ catch (error) {
489
+ taskSpinner.stop(chalk.red('Task failed'));
490
+ throw error;
491
+ }
492
+ }
493
+ /**
494
+ * Show a welcome message for single task execution
495
+ */
496
+ showTaskWelcome(task) {
497
+ intro(chalk.cyan('🤖 CodeMie Native Agent'));
498
+ note(chalk.dim(`Task: ${task}`), 'Executing');
499
+ }
500
+ /**
501
+ * Show task completion message
502
+ */
503
+ showTaskComplete() {
504
+ outro(chalk.green('Task completed successfully'));
505
+ }
506
+ /**
507
+ * Show error message
508
+ */
509
+ showError(error) {
510
+ outro(chalk.red(`Error: ${error}`));
511
+ }
512
+ /**
513
+ * Check if we should show detailed information for a tool
514
+ */
515
+ shouldShowDetails(toolName) {
516
+ // Show details for these tools when they have interesting information
517
+ return ['read_file', 'list_directory', 'execute_command'].includes(toolName);
518
+ }
519
+ /**
520
+ * Show additional tool details
521
+ */
522
+ showToolDetails(toolName, metadata) {
523
+ if (!metadata || !metadata.success)
524
+ return;
525
+ let details = '';
526
+ switch (toolName) {
527
+ case 'read_file':
528
+ if (metadata.contentPreview) {
529
+ details = chalk.dim(`Preview:\n${metadata.contentPreview}`);
530
+ }
531
+ break;
532
+ case 'list_directory':
533
+ if (metadata.contentPreview && metadata.contentPreview !== 'Empty directory') {
534
+ // Parse the content preview and format each item on a new line
535
+ const preview = metadata.contentPreview;
536
+ if (preview.includes(' +') && preview.includes(' more')) {
537
+ // Extract items and remaining count: "item1, item2, item3 +15 more"
538
+ const [itemsStr, remainingStr] = preview.split(' +');
539
+ const items = itemsStr.split(', ');
540
+ // Format with each item on a new line
541
+ const formattedItems = items.map(item => ` ${item}`).join('\n');
542
+ details = chalk.dim(`${formattedItems}\n +${remainingStr}`);
543
+ }
544
+ else {
545
+ // Fallback for simple lists without truncation
546
+ const items = preview.split(', ');
547
+ details = chalk.dim(items.map(item => ` ${item}`).join('\n'));
548
+ }
549
+ }
550
+ break;
551
+ case 'execute_command':
552
+ if (metadata.outputPreview && metadata.outputPreview !== 'No output') {
553
+ details = chalk.dim(`Output:\n${metadata.outputPreview}`);
554
+ }
555
+ break;
556
+ }
557
+ if (details) {
558
+ console.log(chalk.dim(' ' + details.replace(/\n/g, '\n ')));
559
+ }
560
+ }
561
+ /**
562
+ * Show task completion summary with token usage
563
+ */
564
+ showTaskSummary(toolCallCount) {
565
+ const stats = this.agent.getStats();
566
+ const summaryParts = [];
567
+ if (toolCallCount > 0) {
568
+ summaryParts.push(`Used ${toolCallCount} tool${toolCallCount > 1 ? 's' : ''}`);
569
+ }
570
+ if (stats.totalTokens > 0) {
571
+ summaryParts.push(`${formatTokens(stats.totalTokens)} tokens (${formatTokens(stats.inputTokens)} in, ${formatTokens(stats.outputTokens)} out)`);
572
+ }
573
+ if (stats.estimatedTotalCost > 0) {
574
+ summaryParts.push(`${formatCost(stats.estimatedTotalCost)} estimated cost`);
575
+ }
576
+ if (summaryParts.length > 0) {
577
+ note(summaryParts.join(' • '), 'Task Summary');
578
+ }
579
+ }
580
+ /**
581
+ * Show detailed execution steps breakdown
582
+ */
583
+ showExecutionSteps(steps) {
584
+ const stepLines = [];
585
+ stepLines.push(chalk.yellow('Execution Steps:'));
586
+ for (const step of steps) {
587
+ const duration = step.duration ? `${step.duration}ms` : 'ongoing';
588
+ if (step.type === 'llm_call') {
589
+ const tokenInfo = step.tokenUsage
590
+ ? ` (${formatTokenUsageSummary(step.tokenUsage)})`
591
+ : '';
592
+ // Create descriptive label based on LLM context
593
+ let llmLabel = 'LLM Call';
594
+ if (step.llmContext === 'initial_input') {
595
+ llmLabel = 'Processing Input';
596
+ }
597
+ else if (step.llmContext === 'processing_tool_result') {
598
+ llmLabel = 'Processing Tool Output';
599
+ }
600
+ else if (step.llmContext === 'final_response') {
601
+ llmLabel = 'Final Reasoning';
602
+ }
603
+ stepLines.push(` ${chalk.cyan(`${step.stepNumber}.`)} ${llmLabel} - ${chalk.dim(duration)}${tokenInfo}`);
604
+ }
605
+ else {
606
+ const success = step.toolSuccess !== undefined
607
+ ? (step.toolSuccess ? chalk.green('✓') : chalk.red('✗'))
608
+ : chalk.yellow('?');
609
+ stepLines.push(` ${chalk.cyan(`${step.stepNumber}.`)} ${success} ${step.toolName} - ${chalk.dim(duration)}`);
610
+ }
611
+ }
612
+ note(stepLines.join('\n'), 'Step Details');
613
+ }
614
+ /**
615
+ * Cleanup resources
616
+ */
617
+ dispose() {
618
+ if (this.currentSpinner) {
619
+ this.currentSpinner.stop();
620
+ this.currentSpinner = undefined;
621
+ }
622
+ }
623
+ }
624
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/ui.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export interface AgentAdapter {
5
5
  install(): Promise<void>;
6
6
  uninstall(): Promise<void>;
7
7
  isInstalled(): Promise<boolean>;
8
- run(args: string[]): Promise<void>;
8
+ run(args: string[], env?: Record<string, string>): Promise<void>;
9
9
  getVersion(): Promise<string | null>;
10
10
  }
11
11
  export declare class AgentRegistry {