@bluehawks/cli 1.0.0

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 (176) hide show
  1. package/.eslintrc.json +36 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +288 -0
  4. package/dist/cli/app.d.ts +12 -0
  5. package/dist/cli/app.d.ts.map +1 -0
  6. package/dist/cli/app.js +201 -0
  7. package/dist/cli/app.js.map +1 -0
  8. package/dist/cli/commands/index.d.ts +56 -0
  9. package/dist/cli/commands/index.d.ts.map +1 -0
  10. package/dist/cli/commands/index.js +201 -0
  11. package/dist/cli/commands/index.js.map +1 -0
  12. package/dist/config/constants.d.ts +32 -0
  13. package/dist/config/constants.d.ts.map +1 -0
  14. package/dist/config/constants.js +39 -0
  15. package/dist/config/constants.js.map +1 -0
  16. package/dist/config/index.d.ts +4 -0
  17. package/dist/config/index.d.ts.map +1 -0
  18. package/dist/config/index.js +4 -0
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/config/schema.d.ts +56 -0
  21. package/dist/config/schema.d.ts.map +1 -0
  22. package/dist/config/schema.js +28 -0
  23. package/dist/config/schema.js.map +1 -0
  24. package/dist/config/settings.d.ts +20 -0
  25. package/dist/config/settings.d.ts.map +1 -0
  26. package/dist/config/settings.js +102 -0
  27. package/dist/config/settings.js.map +1 -0
  28. package/dist/core/agents/agent.d.ts +33 -0
  29. package/dist/core/agents/agent.d.ts.map +1 -0
  30. package/dist/core/agents/agent.js +156 -0
  31. package/dist/core/agents/agent.js.map +1 -0
  32. package/dist/core/agents/index.d.ts +3 -0
  33. package/dist/core/agents/index.d.ts.map +1 -0
  34. package/dist/core/agents/index.js +3 -0
  35. package/dist/core/agents/index.js.map +1 -0
  36. package/dist/core/agents/orchestrator.d.ts +56 -0
  37. package/dist/core/agents/orchestrator.d.ts.map +1 -0
  38. package/dist/core/agents/orchestrator.js +151 -0
  39. package/dist/core/agents/orchestrator.js.map +1 -0
  40. package/dist/core/api/client.d.ts +46 -0
  41. package/dist/core/api/client.d.ts.map +1 -0
  42. package/dist/core/api/client.js +223 -0
  43. package/dist/core/api/client.js.map +1 -0
  44. package/dist/core/api/index.d.ts +3 -0
  45. package/dist/core/api/index.d.ts.map +1 -0
  46. package/dist/core/api/index.js +3 -0
  47. package/dist/core/api/index.js.map +1 -0
  48. package/dist/core/api/types.d.ts +126 -0
  49. package/dist/core/api/types.d.ts.map +1 -0
  50. package/dist/core/api/types.js +16 -0
  51. package/dist/core/api/types.js.map +1 -0
  52. package/dist/core/hooks/index.d.ts +3 -0
  53. package/dist/core/hooks/index.d.ts.map +1 -0
  54. package/dist/core/hooks/index.js +3 -0
  55. package/dist/core/hooks/index.js.map +1 -0
  56. package/dist/core/hooks/manager.d.ts +43 -0
  57. package/dist/core/hooks/manager.d.ts.map +1 -0
  58. package/dist/core/hooks/manager.js +178 -0
  59. package/dist/core/hooks/manager.js.map +1 -0
  60. package/dist/core/hooks/types.d.ts +68 -0
  61. package/dist/core/hooks/types.d.ts.map +1 -0
  62. package/dist/core/hooks/types.js +6 -0
  63. package/dist/core/hooks/types.js.map +1 -0
  64. package/dist/core/mcp/client.d.ts +48 -0
  65. package/dist/core/mcp/client.d.ts.map +1 -0
  66. package/dist/core/mcp/client.js +139 -0
  67. package/dist/core/mcp/client.js.map +1 -0
  68. package/dist/core/mcp/index.d.ts +3 -0
  69. package/dist/core/mcp/index.d.ts.map +1 -0
  70. package/dist/core/mcp/index.js +3 -0
  71. package/dist/core/mcp/index.js.map +1 -0
  72. package/dist/core/mcp/manager.d.ts +46 -0
  73. package/dist/core/mcp/manager.d.ts.map +1 -0
  74. package/dist/core/mcp/manager.js +133 -0
  75. package/dist/core/mcp/manager.js.map +1 -0
  76. package/dist/core/plugins/index.d.ts +3 -0
  77. package/dist/core/plugins/index.d.ts.map +1 -0
  78. package/dist/core/plugins/index.js +3 -0
  79. package/dist/core/plugins/index.js.map +1 -0
  80. package/dist/core/plugins/loader.d.ts +63 -0
  81. package/dist/core/plugins/loader.d.ts.map +1 -0
  82. package/dist/core/plugins/loader.js +258 -0
  83. package/dist/core/plugins/loader.js.map +1 -0
  84. package/dist/core/plugins/types.d.ts +95 -0
  85. package/dist/core/plugins/types.d.ts.map +1 -0
  86. package/dist/core/plugins/types.js +6 -0
  87. package/dist/core/plugins/types.js.map +1 -0
  88. package/dist/core/session/index.d.ts +3 -0
  89. package/dist/core/session/index.d.ts.map +1 -0
  90. package/dist/core/session/index.js +3 -0
  91. package/dist/core/session/index.js.map +1 -0
  92. package/dist/core/session/manager.d.ts +57 -0
  93. package/dist/core/session/manager.d.ts.map +1 -0
  94. package/dist/core/session/manager.js +182 -0
  95. package/dist/core/session/manager.js.map +1 -0
  96. package/dist/core/session/storage.d.ts +42 -0
  97. package/dist/core/session/storage.d.ts.map +1 -0
  98. package/dist/core/session/storage.js +138 -0
  99. package/dist/core/session/storage.js.map +1 -0
  100. package/dist/core/tools/definitions/file.d.ts +6 -0
  101. package/dist/core/tools/definitions/file.d.ts.map +1 -0
  102. package/dist/core/tools/definitions/file.js +276 -0
  103. package/dist/core/tools/definitions/file.js.map +1 -0
  104. package/dist/core/tools/definitions/git.d.ts +6 -0
  105. package/dist/core/tools/definitions/git.d.ts.map +1 -0
  106. package/dist/core/tools/definitions/git.js +294 -0
  107. package/dist/core/tools/definitions/git.js.map +1 -0
  108. package/dist/core/tools/definitions/index.d.ts +11 -0
  109. package/dist/core/tools/definitions/index.d.ts.map +1 -0
  110. package/dist/core/tools/definitions/index.js +22 -0
  111. package/dist/core/tools/definitions/index.js.map +1 -0
  112. package/dist/core/tools/definitions/search.d.ts +6 -0
  113. package/dist/core/tools/definitions/search.d.ts.map +1 -0
  114. package/dist/core/tools/definitions/search.js +223 -0
  115. package/dist/core/tools/definitions/search.js.map +1 -0
  116. package/dist/core/tools/definitions/shell.d.ts +6 -0
  117. package/dist/core/tools/definitions/shell.d.ts.map +1 -0
  118. package/dist/core/tools/definitions/shell.js +190 -0
  119. package/dist/core/tools/definitions/shell.js.map +1 -0
  120. package/dist/core/tools/definitions/web.d.ts +6 -0
  121. package/dist/core/tools/definitions/web.d.ts.map +1 -0
  122. package/dist/core/tools/definitions/web.js +104 -0
  123. package/dist/core/tools/definitions/web.js.map +1 -0
  124. package/dist/core/tools/executor.d.ts +24 -0
  125. package/dist/core/tools/executor.d.ts.map +1 -0
  126. package/dist/core/tools/executor.js +111 -0
  127. package/dist/core/tools/executor.js.map +1 -0
  128. package/dist/core/tools/index.d.ts +4 -0
  129. package/dist/core/tools/index.d.ts.map +1 -0
  130. package/dist/core/tools/index.js +4 -0
  131. package/dist/core/tools/index.js.map +1 -0
  132. package/dist/core/tools/registry.d.ts +23 -0
  133. package/dist/core/tools/registry.d.ts.map +1 -0
  134. package/dist/core/tools/registry.js +28 -0
  135. package/dist/core/tools/registry.js.map +1 -0
  136. package/dist/index.d.ts +7 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +352 -0
  139. package/dist/index.js.map +1 -0
  140. package/package.json +62 -0
  141. package/src/cli/app.tsx +319 -0
  142. package/src/cli/commands/index.ts +261 -0
  143. package/src/config/constants.ts +45 -0
  144. package/src/config/index.ts +3 -0
  145. package/src/config/schema.ts +36 -0
  146. package/src/config/settings.ts +121 -0
  147. package/src/core/agents/agent.ts +205 -0
  148. package/src/core/agents/index.ts +2 -0
  149. package/src/core/agents/orchestrator.ts +223 -0
  150. package/src/core/api/client.ts +300 -0
  151. package/src/core/api/index.ts +2 -0
  152. package/src/core/api/types.ts +149 -0
  153. package/src/core/hooks/index.ts +2 -0
  154. package/src/core/hooks/manager.ts +212 -0
  155. package/src/core/hooks/types.ts +116 -0
  156. package/src/core/mcp/client.ts +198 -0
  157. package/src/core/mcp/index.ts +2 -0
  158. package/src/core/mcp/manager.ts +153 -0
  159. package/src/core/plugins/index.ts +2 -0
  160. package/src/core/plugins/loader.ts +312 -0
  161. package/src/core/plugins/types.ts +111 -0
  162. package/src/core/session/index.ts +2 -0
  163. package/src/core/session/manager.ts +246 -0
  164. package/src/core/session/storage.ts +184 -0
  165. package/src/core/tools/definitions/file.ts +312 -0
  166. package/src/core/tools/definitions/git.ts +326 -0
  167. package/src/core/tools/definitions/index.ts +24 -0
  168. package/src/core/tools/definitions/search.ts +266 -0
  169. package/src/core/tools/definitions/shell.ts +228 -0
  170. package/src/core/tools/definitions/web.ts +113 -0
  171. package/src/core/tools/executor.ts +145 -0
  172. package/src/core/tools/index.ts +3 -0
  173. package/src/core/tools/registry.ts +44 -0
  174. package/src/index.ts +407 -0
  175. package/tsconfig.json +40 -0
  176. package/vitest.config.ts +13 -0
package/dist/index.js ADDED
@@ -0,0 +1,352 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Bluehawks CLI - Entry Point
4
+ * A production-ready multi-agent AI CLI assistant
5
+ */
6
+ import { program } from 'commander';
7
+ import { render } from 'ink';
8
+ import React from 'react';
9
+ import { App } from './cli/app.js';
10
+ import { CLI_NAME, CLI_VERSION, CLI_DESCRIPTION, API_BASE_URL, DEFAULT_MODEL } from './config/constants.js';
11
+ import { APIClient } from './core/api/client.js';
12
+ import { Orchestrator } from './core/agents/orchestrator.js';
13
+ import { ToolExecutor, registerAllTools, toolRegistry } from './core/tools/index.js';
14
+ import * as fs from 'node:fs';
15
+ import * as path from 'node:path';
16
+ import * as os from 'node:os';
17
+ // Load configuration from ~/.bluehawks/.env
18
+ function loadConfig() {
19
+ const envPath = path.join(os.homedir(), '.bluehawks', '.env');
20
+ try {
21
+ const content = fs.readFileSync(envPath, 'utf-8');
22
+ for (const line of content.split('\n')) {
23
+ const match = line.match(/^([^#=]+)=(.*)$/);
24
+ if (match) {
25
+ const [, key, value] = match;
26
+ const trimmedKey = key.trim();
27
+ const trimmedValue = value.trim().replace(/^['"]|['"]$/g, '');
28
+ if (!process.env[trimmedKey]) {
29
+ process.env[trimmedKey] = trimmedValue;
30
+ }
31
+ }
32
+ }
33
+ }
34
+ catch {
35
+ // No config file, that's fine
36
+ }
37
+ }
38
+ // Load config before anything else
39
+ loadConfig();
40
+ async function runHeadless(prompt, options) {
41
+ const apiClient = new APIClient({ apiKey: options.apiKey });
42
+ const toolExecutor = new ToolExecutor({ approvalMode: 'never' }); // Auto-approve in headless
43
+ registerAllTools();
44
+ const orchestrator = new Orchestrator({
45
+ projectPath: process.cwd(),
46
+ apiClient,
47
+ toolExecutor,
48
+ maxTurns: options.maxTurns,
49
+ systemPrompt: options.systemPrompt,
50
+ appendSystemPrompt: options.appendSystemPrompt,
51
+ });
52
+ await orchestrator.initialize();
53
+ // Handle session continuation
54
+ if (options.continueSession || options.resumeSession) {
55
+ const { sessionStorage } = await import('./core/session/storage.js');
56
+ const session = options.resumeSession
57
+ ? await sessionStorage.loadSession(options.resumeSession)
58
+ : await sessionStorage.loadLastSession();
59
+ if (session) {
60
+ // Restore session messages to orchestrator
61
+ // This would require extending orchestrator to accept initial messages
62
+ console.error(`📂 Resuming session...`);
63
+ }
64
+ }
65
+ // Track if we're inside <think> tags to filter them out
66
+ let inThinkBlock = false;
67
+ let thinkBuffer = '';
68
+ try {
69
+ const response = await orchestrator.chat(prompt, [], {
70
+ onChunk: options.json ? undefined : (chunk) => {
71
+ // Filter out <think>...</think> blocks for cleaner output
72
+ const fullText = thinkBuffer + chunk;
73
+ thinkBuffer = '';
74
+ let output = '';
75
+ let i = 0;
76
+ while (i < fullText.length) {
77
+ if (!inThinkBlock) {
78
+ const thinkStart = fullText.indexOf('<think>', i);
79
+ if (thinkStart === -1) {
80
+ output += fullText.substring(i);
81
+ break;
82
+ }
83
+ else {
84
+ output += fullText.substring(i, thinkStart);
85
+ inThinkBlock = true;
86
+ i = thinkStart + 7;
87
+ }
88
+ }
89
+ else {
90
+ const thinkEnd = fullText.indexOf('</think>', i);
91
+ if (thinkEnd === -1) {
92
+ // Think block continues, buffer the rest
93
+ thinkBuffer = fullText.substring(i);
94
+ break;
95
+ }
96
+ else {
97
+ inThinkBlock = false;
98
+ i = thinkEnd + 8;
99
+ }
100
+ }
101
+ }
102
+ if (output.trim()) {
103
+ process.stdout.write(output);
104
+ }
105
+ },
106
+ });
107
+ // Strip think blocks from final content for JSON output
108
+ const cleanContent = response.content.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
109
+ if (options.json) {
110
+ console.log(JSON.stringify({
111
+ success: true,
112
+ content: cleanContent,
113
+ toolsUsed: response.toolsUsed,
114
+ iterations: response.iterations,
115
+ }, null, 2));
116
+ }
117
+ else {
118
+ console.log(); // New line after streaming
119
+ }
120
+ process.exit(0);
121
+ }
122
+ catch (error) {
123
+ if (options.json) {
124
+ console.log(JSON.stringify({
125
+ success: false,
126
+ error: error instanceof Error ? error.message : String(error),
127
+ }, null, 2));
128
+ }
129
+ else {
130
+ console.error('Error:', error instanceof Error ? error.message : String(error));
131
+ }
132
+ process.exit(1);
133
+ }
134
+ }
135
+ // Configure CLI
136
+ program
137
+ .name(CLI_NAME)
138
+ .version(CLI_VERSION)
139
+ .description(CLI_DESCRIPTION);
140
+ // Main command (interactive mode)
141
+ program
142
+ .option('-p, --prompt <text>', 'Run in headless mode with the given prompt')
143
+ .option('-j, --json', 'Output response as JSON (headless mode only)')
144
+ .option('-k, --api-key <key>', 'API key for authentication')
145
+ .option('--yolo', 'Enable YOLO mode (auto-approve all tool executions)')
146
+ .option('--plan', 'Enable plan mode (create plan before execution)')
147
+ .option('-c, --continue', 'Continue the most recent session')
148
+ .option('-r, --resume <session>', 'Resume a specific named session')
149
+ .option('--max-turns <n>', 'Maximum number of agentic iterations', parseInt)
150
+ .option('--system-prompt <text>', 'Override the system prompt')
151
+ .option('--append-system-prompt <text>', 'Append to the default system prompt')
152
+ .option('--add-dir <dirs...>', 'Additional directories to include in context')
153
+ .option('--output-format <format>', 'Output format: text, json, stream-json', 'text')
154
+ .action(async (options) => {
155
+ // Headless mode
156
+ if (options.prompt) {
157
+ await runHeadless(options.prompt, {
158
+ json: options.json || options.outputFormat === 'json',
159
+ apiKey: options.apiKey,
160
+ maxTurns: options.maxTurns,
161
+ systemPrompt: options.systemPrompt,
162
+ appendSystemPrompt: options.appendSystemPrompt,
163
+ outputFormat: options.outputFormat,
164
+ continueSession: options.continue,
165
+ resumeSession: options.resume,
166
+ });
167
+ return;
168
+ }
169
+ // Interactive mode
170
+ console.log(`\n🦅 ${CLI_NAME} v${CLI_VERSION}`);
171
+ console.log(` API: ${API_BASE_URL}`);
172
+ console.log(` Model: ${DEFAULT_MODEL}\n`);
173
+ const { waitUntilExit } = render(React.createElement(App, {
174
+ apiKey: options.apiKey,
175
+ yoloMode: options.yolo,
176
+ }));
177
+ await waitUntilExit();
178
+ });
179
+ // Config command (show only)
180
+ program
181
+ .command('config')
182
+ .description('Show current configuration')
183
+ .action(() => {
184
+ console.log('\n📋 Current Configuration:');
185
+ console.log(` API URL: ${process.env.BLUEHAWKS_API_URL || API_BASE_URL}`);
186
+ console.log(` Model: ${process.env.BLUEHAWKS_MODEL || DEFAULT_MODEL}`);
187
+ console.log(` API Key: ${process.env.BLUEHAWKS_API_KEY ? '***set***' : 'not set'}\n`);
188
+ console.log('Environment Variables:');
189
+ console.log(' BLUEHAWKS_API_URL - Override API endpoint');
190
+ console.log(' BLUEHAWKS_API_KEY - API key for authentication');
191
+ console.log(' BLUEHAWKS_MODEL - Override model name\n');
192
+ console.log('Run `bluehawks configure` to set up your API key.\n');
193
+ });
194
+ // Configure command (interactive setup)
195
+ program
196
+ .command('configure')
197
+ .description('Interactive setup for API key and settings')
198
+ .action(async () => {
199
+ const readline = await import('node:readline');
200
+ const fs = await import('node:fs/promises');
201
+ const path = await import('node:path');
202
+ const os = await import('node:os');
203
+ const rl = readline.createInterface({
204
+ input: process.stdin,
205
+ output: process.stdout,
206
+ });
207
+ const question = (prompt) => {
208
+ return new Promise((resolve) => {
209
+ rl.question(prompt, resolve);
210
+ });
211
+ };
212
+ console.log('\n🦅 Bluehawks Configuration\n');
213
+ console.log('This will save your settings to ~/.bluehawks/.env\n');
214
+ // Get current values
215
+ const currentApiKey = process.env.BLUEHAWKS_API_KEY || '';
216
+ const currentUrl = process.env.BLUEHAWKS_API_URL || API_BASE_URL;
217
+ const currentModel = process.env.BLUEHAWKS_MODEL || DEFAULT_MODEL;
218
+ // Prompt for API key
219
+ const apiKeyPrompt = currentApiKey
220
+ ? `API Key [${currentApiKey.substring(0, 8)}...]: `
221
+ : 'API Key: ';
222
+ const apiKey = await question(apiKeyPrompt) || currentApiKey;
223
+ // Prompt for API URL (optional)
224
+ const urlPrompt = `API URL [${currentUrl}]: `;
225
+ const apiUrl = await question(urlPrompt) || currentUrl;
226
+ // Prompt for Model (optional)
227
+ const modelPrompt = `Model [${currentModel}]: `;
228
+ const model = await question(modelPrompt) || currentModel;
229
+ rl.close();
230
+ // Create config directory
231
+ const configDir = path.join(os.homedir(), '.bluehawks');
232
+ await fs.mkdir(configDir, { recursive: true });
233
+ // Write .env file
234
+ const envPath = path.join(configDir, '.env');
235
+ const envContent = [
236
+ `# Bluehawks CLI Configuration`,
237
+ `BLUEHAWKS_API_KEY=${apiKey}`,
238
+ `BLUEHAWKS_API_URL=${apiUrl}`,
239
+ `BLUEHAWKS_MODEL=${model}`,
240
+ ].join('\n');
241
+ await fs.writeFile(envPath, envContent, 'utf-8');
242
+ console.log(`\n✅ Configuration saved to ${envPath}`);
243
+ console.log('\nTo use this configuration, add this to your shell profile:');
244
+ console.log(` source ~/.bluehawks/.env\n`);
245
+ console.log('Or export variables manually:');
246
+ console.log(` export BLUEHAWKS_API_KEY="${apiKey}"\n`);
247
+ });
248
+ // Tools command
249
+ program
250
+ .command('tools')
251
+ .description('List available tools')
252
+ .action(() => {
253
+ registerAllTools();
254
+ const tools = toolRegistry.getAll();
255
+ console.log('\n🔧 Available Tools:\n');
256
+ for (const tool of tools) {
257
+ const desc = tool.definition.function.description;
258
+ const safe = tool.safeToAutoRun ? '✓ safe' : '⚠ requires approval';
259
+ console.log(` ${tool.name}`);
260
+ console.log(` ${desc.substring(0, 80)}${desc.length > 80 ? '...' : ''}`);
261
+ console.log(` ${safe}\n`);
262
+ }
263
+ });
264
+ // Sessions command
265
+ program
266
+ .command('sessions')
267
+ .description('List and manage saved sessions')
268
+ .option('-d, --delete <session>', 'Delete a session')
269
+ .action(async (options) => {
270
+ const { sessionStorage } = await import('./core/session/storage.js');
271
+ if (options.delete) {
272
+ const success = await sessionStorage.deleteSession(options.delete);
273
+ console.log(success ? `✅ Deleted: ${options.delete}` : `❌ Not found: ${options.delete}`);
274
+ return;
275
+ }
276
+ const sessions = await sessionStorage.listSessions(20);
277
+ if (sessions.length === 0) {
278
+ console.log('\n📂 No saved sessions.\n');
279
+ return;
280
+ }
281
+ console.log('\n📂 Saved Sessions:\n');
282
+ for (const s of sessions) {
283
+ const date = new Date(s.lastAccessTime).toLocaleDateString();
284
+ console.log(` ${s.name} (${s.messageCount} msgs) - ${date}`);
285
+ }
286
+ console.log();
287
+ });
288
+ // Plugins command
289
+ program
290
+ .command('plugins')
291
+ .description('List and manage plugins')
292
+ .option('-r, --reload', 'Reload all plugins')
293
+ .option('-i, --info <name>', 'Show details about a plugin')
294
+ .action(async (options) => {
295
+ const { pluginLoader } = await import('./core/plugins/index.js');
296
+ if (options.reload) {
297
+ pluginLoader.unloadAll();
298
+ await pluginLoader.loadAll();
299
+ console.log('✅ Plugins reloaded');
300
+ return;
301
+ }
302
+ if (options.info) {
303
+ const plugin = pluginLoader.getPlugin(options.info);
304
+ if (!plugin) {
305
+ console.log(`❌ Plugin not found: ${options.info}`);
306
+ return;
307
+ }
308
+ console.log(`\n📦 ${plugin.manifest.name} v${plugin.manifest.version}`);
309
+ console.log(` ${plugin.manifest.description || ''}`);
310
+ console.log(` Path: ${plugin.path}`);
311
+ if (plugin.commands.size > 0) {
312
+ console.log(` Commands: ${Array.from(plugin.commands.keys()).join(', ')}`);
313
+ }
314
+ if (plugin.tools.size > 0) {
315
+ console.log(` Tools: ${Array.from(plugin.tools.keys()).join(', ')}`);
316
+ }
317
+ if (plugin.agents.size > 0) {
318
+ console.log(` Agents: ${Array.from(plugin.agents.keys()).join(', ')}`);
319
+ }
320
+ console.log();
321
+ return;
322
+ }
323
+ // List plugins
324
+ const plugins = pluginLoader.getPlugins();
325
+ if (plugins.length === 0) {
326
+ console.log('\n📦 No plugins installed.\n');
327
+ console.log('To install plugins, create a directory at:');
328
+ console.log(' ~/.bluehawks/plugins/<plugin-name>/plugin.json\n');
329
+ return;
330
+ }
331
+ console.log('\n📦 Installed Plugins:\n');
332
+ for (const plugin of plugins) {
333
+ console.log(` ${plugin.manifest.name} v${plugin.manifest.version}`);
334
+ if (plugin.manifest.description) {
335
+ console.log(` ${plugin.manifest.description}`);
336
+ }
337
+ }
338
+ console.log();
339
+ });
340
+ // Version info
341
+ program
342
+ .command('version')
343
+ .description('Show version information')
344
+ .action(() => {
345
+ console.log(`\n🦅 ${CLI_NAME}`);
346
+ console.log(` Version: ${CLI_VERSION}`);
347
+ console.log(` Node.js: ${process.version}`);
348
+ console.log(` Platform: ${process.platform} ${process.arch}\n`);
349
+ });
350
+ // Parse arguments
351
+ program.parse();
352
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@bluehawks/cli",
3
+ "version": "1.0.0",
4
+ "description": "A production-ready multi-agent AI CLI assistant",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "bluehawks": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "start": "node dist/index.js",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "test:integration": "vitest run --config vitest.integration.config.ts",
17
+ "lint": "eslint src/**/*.ts",
18
+ "lint:fix": "eslint src/**/*.ts --fix",
19
+ "format": "prettier --write src/**/*.ts",
20
+ "clean": "rm -rf dist",
21
+ "prepare": "npm run build"
22
+ },
23
+ "keywords": [
24
+ "ai",
25
+ "cli",
26
+ "assistant",
27
+ "agent",
28
+ "llm",
29
+ "coding",
30
+ "terminal"
31
+ ],
32
+ "author": "Bluehawks AI",
33
+ "license": "Apache-2.0",
34
+ "engines": {
35
+ "node": ">=20.0.0"
36
+ },
37
+ "dependencies": {
38
+ "chalk": "^5.3.0",
39
+ "commander": "^12.1.0",
40
+ "eventsource-parser": "^3.0.0",
41
+ "ink": "^5.1.0",
42
+ "ink-spinner": "^5.0.0",
43
+ "ink-text-input": "^6.0.0",
44
+ "marked": "^15.0.6",
45
+ "marked-terminal": "^7.2.1",
46
+ "ora": "^8.1.1",
47
+ "react": "^18.3.1",
48
+ "simple-git": "^3.27.0",
49
+ "strip-ansi": "^7.1.0",
50
+ "zod": "^3.24.1"
51
+ },
52
+ "devDependencies": {
53
+ "@types/node": "^22.10.5",
54
+ "@types/react": "^18.3.18",
55
+ "@typescript-eslint/eslint-plugin": "^8.19.1",
56
+ "@typescript-eslint/parser": "^8.19.1",
57
+ "eslint": "^9.17.0",
58
+ "prettier": "^3.4.2",
59
+ "typescript": "^5.7.2",
60
+ "vitest": "^2.1.8"
61
+ }
62
+ }