@bluehawks/cli 1.0.30 → 1.0.31
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.
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +30 -25
- package/dist/cli/app.js.map +1 -1
- package/dist/config/constants.d.ts +1 -1
- package/dist/config/constants.js +1 -1
- package/package.json +1 -1
- package/src/cli/app.tsx +143 -71
- package/src/config/constants.ts +1 -1
package/dist/cli/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAoFhE,UAAU,QAAQ;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAOD,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAkYlC,CAAC"}
|
package/dist/cli/app.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* Bluehawks CLI - Main Application Component
|
|
4
4
|
*/
|
|
5
5
|
import React, { useState, useCallback, useEffect } from 'react';
|
|
6
6
|
import { Text, Box, useInput, useApp } from 'ink';
|
|
7
|
+
import Spinner from 'ink-spinner';
|
|
7
8
|
import TextInput from 'ink-text-input';
|
|
8
9
|
import { APIClient } from '../core/api/client.js';
|
|
9
10
|
import { Orchestrator } from '../core/agents/orchestrator.js';
|
|
@@ -15,30 +16,32 @@ import { hooksManager } from '../core/hooks/index.js';
|
|
|
15
16
|
import * as path from 'path';
|
|
16
17
|
import * as os from 'os';
|
|
17
18
|
// UI Components
|
|
18
|
-
const Branding = () => (_jsxs(Box, {
|
|
19
|
-
const
|
|
19
|
+
const Branding = () => (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsx(Text, { color: "#3B82F6", children: "██████╗ ██╗ ██╗ ██╗███████╗██╗ ██╗ █████╗ ██╗ ██╗██╗ ██╗███████╗" }), _jsx(Text, { color: "#6366F1", children: "██╔══██╗██║ ██║ ██║██╔════╝██║ ██║██╔══██╗██║ ██║██║ ██╔╝██╔════╝" }), _jsx(Text, { color: "#8B5CF6", children: "██████╔╝██║ ██║ ██║█████╗ ███████║███████║██║ █╗ ██║█████╔╝ ███████╗" }), _jsx(Text, { color: "#A855F7", children: "██╔══██╗██║ ██║ ██║██╔══╝ ██╔══██║██╔══██║██║███╗██║██╔═██╗ ╚════██║" }), _jsx(Text, { color: "#D946EF", children: "██████╔╝███████╗╚██████╔╝███████╗██║ ██║██║ ██║╚███╔███╔╝██║ ██╗███████║" }), _jsx(Text, { color: "#EC4899", children: "╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝" })] }));
|
|
20
|
+
const HeaderBox = ({ version, model, projectPath }) => {
|
|
20
21
|
const relativePath = projectPath.startsWith(os.homedir())
|
|
21
22
|
? '~/' + path.relative(os.homedir(), projectPath)
|
|
22
23
|
: projectPath;
|
|
23
|
-
return (
|
|
24
|
+
return (_jsx(Box, { borderStyle: "round", borderColor: "#3B82F6", paddingX: 2, paddingY: 0, width: 80, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { bold: true, color: "#3B82F6", children: [">_ ", CLI_NAME, " "] }), _jsxs(Text, { color: "gray", children: ["(v", version, ")"] })] }), _jsxs(Box, { marginTop: 0, children: [_jsx(Text, { color: "gray", children: "Model: " }), _jsx(Text, { color: "white", children: model })] }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "Path: " }), _jsx(Text, { color: "white", children: relativePath })] })] }) }));
|
|
24
25
|
};
|
|
25
26
|
const Tips = () => {
|
|
26
27
|
const tipsList = [
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"Bluehawks
|
|
28
|
+
"Start a fresh idea with /clear or /new; the previous session stays available in history.",
|
|
29
|
+
"Use /yolo to auto-approve all tool executions for maximum speed.",
|
|
30
|
+
"Need help? Type /help to see all available commands and shortcuts.",
|
|
31
|
+
"Bluehawks can read your codebase, run tests, and even commit changes.",
|
|
32
|
+
"Working on a specific repository? Bluehawks understands your local context automatically."
|
|
31
33
|
];
|
|
32
34
|
const [tip] = useState(() => tipsList[Math.floor(Math.random() * tipsList.length)]);
|
|
33
|
-
return (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "gray",
|
|
35
|
+
return (_jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsxs(Text, { color: "gray", children: ["Tips: ", tip] }) }));
|
|
34
36
|
};
|
|
37
|
+
const StatusBar = ({ isYoloMode }) => (_jsxs(Box, { marginTop: 1, paddingX: 1, borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: "gray", children: [_jsxs(Box, { flexGrow: 1, children: [_jsx(Text, { color: "gray", children: "Type " }), _jsx(Text, { color: "cyan", bold: true, children: "/help" }), _jsx(Text, { color: "gray", children: " for commands. " })] }), isYoloMode && (_jsx(Box, { children: _jsx(Text, { color: "#F59E0B", bold: true, children: "\u26A1 YOLO MODE ACTIVE " }) }))] }));
|
|
35
38
|
export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
|
|
36
39
|
const { exit } = useApp();
|
|
37
40
|
const exitCalledRef = React.useRef(false);
|
|
38
41
|
const [input, setInput] = useState('');
|
|
39
42
|
const [messages, setMessages] = useState([]);
|
|
40
43
|
const [isProcessing, setIsProcessing] = useState(false);
|
|
41
|
-
|
|
44
|
+
const [currentTool, setCurrentTool] = useState(null);
|
|
42
45
|
const [streamingContent, setStreamingContent] = useState('');
|
|
43
46
|
const [pendingApproval, setPendingApproval] = useState(null);
|
|
44
47
|
const [isYoloMode, setIsYoloMode] = useState(yoloMode);
|
|
@@ -166,7 +169,7 @@ export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
|
|
|
166
169
|
setStreamingContent((prev) => prev + chunk);
|
|
167
170
|
},
|
|
168
171
|
onToolStart: (name, args) => {
|
|
169
|
-
|
|
172
|
+
setCurrentTool(name);
|
|
170
173
|
setMessages((prev) => [
|
|
171
174
|
...prev,
|
|
172
175
|
{
|
|
@@ -176,7 +179,7 @@ export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
|
|
|
176
179
|
]);
|
|
177
180
|
},
|
|
178
181
|
onToolEnd: (name, result) => {
|
|
179
|
-
|
|
182
|
+
setCurrentTool(null);
|
|
180
183
|
setMessages((prev) => [
|
|
181
184
|
...prev,
|
|
182
185
|
{
|
|
@@ -212,7 +215,7 @@ export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
|
|
|
212
215
|
finally {
|
|
213
216
|
setIsProcessing(false);
|
|
214
217
|
setStreamingContent('');
|
|
215
|
-
|
|
218
|
+
setCurrentTool(null);
|
|
216
219
|
}
|
|
217
220
|
}, [isProcessing, orchestrator, sessionManager, exit, toolExecutor, isYoloMode]);
|
|
218
221
|
// Handle approval input
|
|
@@ -244,26 +247,28 @@ export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
|
|
|
244
247
|
return COLORS.muted;
|
|
245
248
|
}
|
|
246
249
|
};
|
|
247
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX:
|
|
250
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", marginBottom: 1, children: [_jsx(Branding, {}), _jsx(Box, { marginLeft: 4, children: _jsx(HeaderBox, { version: CLI_VERSION, model: apiClient.currentModel, projectPath: process.cwd() }) })] }), messages.length === 0 && _jsx(Tips, {}), _jsxs(Box, { flexDirection: "column", flexGrow: 1, marginBottom: 1, children: [messages.slice(-30).map((msg, i) => {
|
|
248
251
|
// Custom rendering for Tool messages (Boxed UI)
|
|
249
252
|
if (msg.role === 'tool') {
|
|
250
253
|
try {
|
|
251
254
|
const content = JSON.parse(msg.content);
|
|
252
|
-
if (content.type === '
|
|
253
|
-
|
|
255
|
+
if (content.type === 'tool_start') {
|
|
256
|
+
// Smart JSON formatting: one line if short, indented if long
|
|
257
|
+
const jsonStr = JSON.stringify(content.args);
|
|
258
|
+
const displayArgs = jsonStr.length < 80 ? jsonStr : JSON.stringify(content.args, null, 2);
|
|
259
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 1, marginY: 0, marginBottom: 1, alignSelf: "flex-start", children: [_jsxs(Box, { children: [_jsx(Text, { color: "magenta", bold: true, children: "\u26A1 TOOL CALL: " }), _jsx(Text, { color: "white", bold: true, children: content.name })] }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: "gray", children: displayArgs }) })] }, i));
|
|
260
|
+
}
|
|
261
|
+
else if (content.type === 'tool_end') {
|
|
262
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginBottom: 1, alignSelf: "flex-start", children: [_jsxs(Box, { children: [_jsx(Text, { color: "green", bold: true, children: "\u2705 TOOL RESULT: " }), _jsx(Text, { color: "white", bold: true, children: content.name })] }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: "gray", children: content.result ? content.result.substring(0, 200) + (content.result.length > 200 ? '...' : '') : 'Completed' }) })] }, i));
|
|
254
263
|
}
|
|
255
|
-
return null; // Skip tool_start in history (noise)
|
|
256
264
|
}
|
|
257
265
|
catch {
|
|
258
|
-
|
|
266
|
+
// Fallback for legacy plain text tool messages
|
|
267
|
+
return (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "gray", children: ["\uD83D\uDD27 ", msg.content] }) }, i));
|
|
259
268
|
}
|
|
260
269
|
}
|
|
261
|
-
// User
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
// Assistant/System Message
|
|
266
|
-
return (_jsxs(Box, { marginTop: 0, marginBottom: 0, flexDirection: "column", children: [msg.role !== 'assistant' && (_jsx(Text, { bold: true, color: getRoleColor(msg.role), children: msg.role === 'error' ? '❌ ERROR' : 'ℹ️ SYSTEM' })), _jsx(Box, { marginLeft: 0, children: _jsx(Text, { color: "white", children: msg.content }) })] }, i));
|
|
267
|
-
}), streamingContent && (_jsx(Box, { marginTop: 0, flexDirection: "column", children: _jsx(Box, { marginLeft: 0, children: _jsx(Text, { color: "white", children: streamingContent }) }) })), pendingApproval && (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", paddingX: 1, marginTop: 1, children: [_jsxs(Text, { color: COLORS.warning, bold: true, children: ["Action Required: ", pendingApproval.toolName] }), _jsxs(Text, { color: "white", children: ["Args: ", JSON.stringify(pendingApproval.args).substring(0, 100), "..."] }), _jsx(Text, { color: "gray", children: "[Y]es / [N]o" })] }))] }), !pendingApproval && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Box, { borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: "gray", marginBottom: 0 }), _jsxs(Box, { children: [_jsx(Text, { color: COLORS.primary, bold: true, children: "\u276F " }), isProcessing ? (_jsx(Text, { color: COLORS.muted, children: "Thinking..." })) : (_jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "..." }))] }), isYoloMode && (_jsx(Box, { marginTop: 0, children: _jsx(Text, { color: "#F59E0B", bold: true, children: "\u26A1 YOLO Mode Active" }) }))] })), _jsx(Footer, { model: apiClient.currentModel, projectPath: process.cwd() })] }));
|
|
270
|
+
// Standard User/Assistant/System messages
|
|
271
|
+
return (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: getRoleColor(msg.role), children: msg.role === 'user' ? '👤 YOU ' : msg.role === 'assistant' ? '🦅 BLUEHAWKS ' : 'ℹ️ SYSTEM ' }) }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "white", children: msg.content }) })] }, i));
|
|
272
|
+
}), streamingContent && (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: COLORS.success, children: "\uD83E\uDD85 BLUEHAWKS " }) }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "white", children: streamingContent }) })] })), currentTool && !messages.some(m => m.role === 'tool' && m.content.includes(currentTool) && m.content.includes('tool_start')) && (_jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 2, paddingY: 1, marginY: 1, children: _jsxs(Box, { children: [_jsx(Spinner, { type: "dots" }), _jsx(Text, { color: "magenta", bold: true, children: " \u26A1 TOOL CALL: " }), _jsx(Text, { color: "white", bold: true, children: currentTool })] }) })), pendingApproval && (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", padding: 1, marginY: 1, children: [_jsx(Text, { color: COLORS.warning, bold: true, children: "\u26A0\uFE0F ACTION REQUIRED: Tool Approval" }), _jsxs(Box, { marginY: 1, paddingX: 1, borderStyle: "single", borderColor: "gray", children: [_jsx(Text, { color: "white", bold: true, children: pendingApproval.toolName }), _jsxs(Text, { color: "gray", children: ["\n", "Args: ", JSON.stringify(pendingApproval.args, null, 2).substring(0, 500)] })] }), _jsxs(Box, { children: [_jsx(Text, { children: "Press " }), _jsx(Text, { color: "green", bold: true, children: "Y" }), _jsx(Text, { children: " to approve, " }), _jsx(Text, { color: "red", bold: true, children: "N" }), _jsx(Text, { children: " to deny" })] })] }))] }), !pendingApproval && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: "gray", paddingTop: 1, children: [_jsx(Text, { color: COLORS.primary, bold: true, children: "\u276F " }), isProcessing ? (_jsxs(Box, { children: [_jsx(Spinner, { type: "dots" }), _jsx(Text, { color: COLORS.muted, children: " Agent is thinking..." })] })) : (_jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "What's on your mind?" }))] }), _jsx(StatusBar, { isYoloMode: isYoloMode })] }))] }));
|
|
268
273
|
};
|
|
269
274
|
//# sourceMappingURL=app.js.map
|
package/dist/cli/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare const DEFAULT_MODEL = "Qwen/Qwen3-8B";
|
|
|
6
6
|
export declare const DEFAULT_EMBEDDING_MODEL = "Qwen/Qwen3-Embedding-0.6B";
|
|
7
7
|
export declare const DEFAULT_RERANK_MODEL = "Qwen/Qwen3-Reranker-0.6B";
|
|
8
8
|
export declare const CLI_NAME = "bluehawks";
|
|
9
|
-
export declare const CLI_VERSION = "1.0.
|
|
9
|
+
export declare const CLI_VERSION = "1.0.31";
|
|
10
10
|
export declare const CLI_DESCRIPTION = "A production-ready multi-agent AI CLI assistant";
|
|
11
11
|
export declare const CONFIG_DIR_NAME = ".bluehawks";
|
|
12
12
|
export declare const SETTINGS_FILE = "settings.json";
|
package/dist/config/constants.js
CHANGED
|
@@ -8,7 +8,7 @@ export const DEFAULT_EMBEDDING_MODEL = 'Qwen/Qwen3-Embedding-0.6B';
|
|
|
8
8
|
export const DEFAULT_RERANK_MODEL = 'Qwen/Qwen3-Reranker-0.6B';
|
|
9
9
|
// CLI Metadata
|
|
10
10
|
export const CLI_NAME = 'bluehawks';
|
|
11
|
-
export const CLI_VERSION = '1.0.
|
|
11
|
+
export const CLI_VERSION = '1.0.31';
|
|
12
12
|
export const CLI_DESCRIPTION = 'A production-ready multi-agent AI CLI assistant';
|
|
13
13
|
// Configuration Paths
|
|
14
14
|
export const CONFIG_DIR_NAME = '.bluehawks';
|
package/package.json
CHANGED
package/src/cli/app.tsx
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useState, useCallback, useEffect } from 'react';
|
|
6
6
|
import { Text, Box, useInput, useApp } from 'ink';
|
|
7
|
+
import Spinner from 'ink-spinner';
|
|
7
8
|
import TextInput from 'ink-text-input';
|
|
8
9
|
import { APIClient } from '../core/api/client.js';
|
|
9
10
|
import { Orchestrator } from '../core/agents/orchestrator.js';
|
|
@@ -18,41 +19,73 @@ import * as os from 'os';
|
|
|
18
19
|
|
|
19
20
|
// UI Components
|
|
20
21
|
const Branding = () => (
|
|
21
|
-
<Box
|
|
22
|
-
<Text color="#3B82F6"
|
|
23
|
-
<Text color="
|
|
22
|
+
<Box flexDirection="column" marginY={1}>
|
|
23
|
+
<Text color="#3B82F6">{"██████╗ ██╗ ██╗ ██╗███████╗██╗ ██╗ █████╗ ██╗ ██╗██╗ ██╗███████╗"}</Text>
|
|
24
|
+
<Text color="#6366F1">{"██╔══██╗██║ ██║ ██║██╔════╝██║ ██║██╔══██╗██║ ██║██║ ██╔╝██╔════╝"}</Text>
|
|
25
|
+
<Text color="#8B5CF6">{"██████╔╝██║ ██║ ██║█████╗ ███████║███████║██║ █╗ ██║█████╔╝ ███████╗"}</Text>
|
|
26
|
+
<Text color="#A855F7">{"██╔══██╗██║ ██║ ██║██╔══╝ ██╔══██║██╔══██║██║███╗██║██╔═██╗ ╚════██║"}</Text>
|
|
27
|
+
<Text color="#D946EF">{"██████╔╝███████╗╚██████╔╝███████╗██║ ██║██║ ██║╚███╔███╔╝██║ ██╗███████║"}</Text>
|
|
28
|
+
<Text color="#EC4899">{"╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝"}</Text>
|
|
24
29
|
</Box>
|
|
25
30
|
);
|
|
26
31
|
|
|
27
|
-
const
|
|
32
|
+
const HeaderBox: React.FC<{ version: string; model: string; projectPath: string }> = ({ version, model, projectPath }) => {
|
|
28
33
|
const relativePath = projectPath.startsWith(os.homedir())
|
|
29
34
|
? '~/' + path.relative(os.homedir(), projectPath)
|
|
30
35
|
: projectPath;
|
|
31
36
|
|
|
32
37
|
return (
|
|
33
|
-
<Box
|
|
34
|
-
<
|
|
35
|
-
|
|
38
|
+
<Box borderStyle="round" borderColor="#3B82F6" paddingX={2} paddingY={0} width={80} marginBottom={1}>
|
|
39
|
+
<Box flexDirection="column">
|
|
40
|
+
<Box>
|
|
41
|
+
<Text bold color="#3B82F6">{">_ "}{CLI_NAME} </Text>
|
|
42
|
+
<Text color="gray">(v{version})</Text>
|
|
43
|
+
</Box>
|
|
44
|
+
<Box marginTop={0}>
|
|
45
|
+
<Text color="gray">Model: </Text>
|
|
46
|
+
<Text color="white">{model}</Text>
|
|
47
|
+
</Box>
|
|
48
|
+
<Box>
|
|
49
|
+
<Text color="gray">Path: </Text>
|
|
50
|
+
<Text color="white">{relativePath}</Text>
|
|
51
|
+
</Box>
|
|
52
|
+
</Box>
|
|
36
53
|
</Box>
|
|
37
54
|
);
|
|
38
55
|
};
|
|
39
56
|
|
|
40
57
|
const Tips = () => {
|
|
41
58
|
const tipsList = [
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"Bluehawks
|
|
59
|
+
"Start a fresh idea with /clear or /new; the previous session stays available in history.",
|
|
60
|
+
"Use /yolo to auto-approve all tool executions for maximum speed.",
|
|
61
|
+
"Need help? Type /help to see all available commands and shortcuts.",
|
|
62
|
+
"Bluehawks can read your codebase, run tests, and even commit changes.",
|
|
63
|
+
"Working on a specific repository? Bluehawks understands your local context automatically."
|
|
46
64
|
];
|
|
47
65
|
const [tip] = useState(() => tipsList[Math.floor(Math.random() * tipsList.length)]);
|
|
48
66
|
|
|
49
67
|
return (
|
|
50
|
-
<Box marginBottom={1}>
|
|
51
|
-
<Text color="gray"
|
|
68
|
+
<Box marginTop={1} marginBottom={1}>
|
|
69
|
+
<Text color="gray">Tips: {tip}</Text>
|
|
52
70
|
</Box>
|
|
53
71
|
);
|
|
54
72
|
};
|
|
55
73
|
|
|
74
|
+
const StatusBar: React.FC<{ isYoloMode: boolean }> = ({ isYoloMode }) => (
|
|
75
|
+
<Box marginTop={1} paddingX={1} borderStyle="single" borderTop={true} borderBottom={false} borderLeft={false} borderRight={false} borderColor="gray">
|
|
76
|
+
<Box flexGrow={1}>
|
|
77
|
+
<Text color="gray">Type </Text>
|
|
78
|
+
<Text color="cyan" bold>/help</Text>
|
|
79
|
+
<Text color="gray"> for commands. </Text>
|
|
80
|
+
</Box>
|
|
81
|
+
{isYoloMode && (
|
|
82
|
+
<Box>
|
|
83
|
+
<Text color="#F59E0B" bold>⚡ YOLO MODE ACTIVE </Text>
|
|
84
|
+
</Box>
|
|
85
|
+
)}
|
|
86
|
+
</Box>
|
|
87
|
+
);
|
|
88
|
+
|
|
56
89
|
interface AppProps {
|
|
57
90
|
initialPrompt?: string;
|
|
58
91
|
apiKey?: string;
|
|
@@ -72,7 +105,7 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
72
105
|
const [input, setInput] = useState('');
|
|
73
106
|
const [messages, setMessages] = useState<MessageDisplay[]>([]);
|
|
74
107
|
const [isProcessing, setIsProcessing] = useState(false);
|
|
75
|
-
|
|
108
|
+
const [currentTool, setCurrentTool] = useState<string | null>(null);
|
|
76
109
|
const [streamingContent, setStreamingContent] = useState('');
|
|
77
110
|
const [pendingApproval, setPendingApproval] = useState<{
|
|
78
111
|
toolName: string;
|
|
@@ -81,7 +114,6 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
81
114
|
} | null>(null);
|
|
82
115
|
const [isYoloMode, setIsYoloMode] = useState(yoloMode);
|
|
83
116
|
|
|
84
|
-
|
|
85
117
|
// Initialize components
|
|
86
118
|
const [apiClient] = useState(() => new APIClient({ apiKey }));
|
|
87
119
|
const [toolExecutor] = useState(() => {
|
|
@@ -151,7 +183,6 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
151
183
|
};
|
|
152
184
|
}, [toolExecutor, isYoloMode, orchestrator, sessionManager, apiClient, onExit]);
|
|
153
185
|
|
|
154
|
-
|
|
155
186
|
// Handle initial prompt
|
|
156
187
|
useEffect(() => {
|
|
157
188
|
if (initialPrompt) {
|
|
@@ -220,7 +251,7 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
220
251
|
setStreamingContent((prev) => prev + chunk);
|
|
221
252
|
},
|
|
222
253
|
onToolStart: (name, args?: Record<string, unknown>) => {
|
|
223
|
-
|
|
254
|
+
setCurrentTool(name);
|
|
224
255
|
setMessages((prev) => [
|
|
225
256
|
...prev,
|
|
226
257
|
{
|
|
@@ -230,7 +261,7 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
230
261
|
]);
|
|
231
262
|
},
|
|
232
263
|
onToolEnd: (name, result) => {
|
|
233
|
-
|
|
264
|
+
setCurrentTool(null);
|
|
234
265
|
setMessages((prev) => [
|
|
235
266
|
...prev,
|
|
236
267
|
{
|
|
@@ -265,7 +296,7 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
265
296
|
} finally {
|
|
266
297
|
setIsProcessing(false);
|
|
267
298
|
setStreamingContent('');
|
|
268
|
-
|
|
299
|
+
setCurrentTool(null);
|
|
269
300
|
}
|
|
270
301
|
},
|
|
271
302
|
[isProcessing, orchestrator, sessionManager, exit, toolExecutor, isYoloMode]
|
|
@@ -305,54 +336,77 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
305
336
|
};
|
|
306
337
|
|
|
307
338
|
return (
|
|
308
|
-
<Box flexDirection="column" paddingX={
|
|
309
|
-
{/* Branding
|
|
310
|
-
<
|
|
339
|
+
<Box flexDirection="column" paddingX={2} paddingY={1}>
|
|
340
|
+
{/* Branding & Header */}
|
|
341
|
+
<Box flexDirection="row" alignItems="center" marginBottom={1}>
|
|
342
|
+
<Branding />
|
|
343
|
+
<Box marginLeft={4}>
|
|
344
|
+
<HeaderBox
|
|
345
|
+
version={CLI_VERSION}
|
|
346
|
+
model={apiClient.currentModel}
|
|
347
|
+
projectPath={process.cwd()}
|
|
348
|
+
/>
|
|
349
|
+
</Box>
|
|
350
|
+
</Box>
|
|
311
351
|
|
|
312
352
|
{/* Tips only shown on start */}
|
|
313
353
|
{messages.length === 0 && <Tips />}
|
|
314
354
|
|
|
315
355
|
{/* Messages */}
|
|
316
|
-
<Box flexDirection="column" flexGrow={1} marginBottom={
|
|
317
|
-
{messages.slice(-
|
|
356
|
+
<Box flexDirection="column" flexGrow={1} marginBottom={1}>
|
|
357
|
+
{messages.slice(-30).map((msg, i) => {
|
|
318
358
|
// Custom rendering for Tool messages (Boxed UI)
|
|
319
359
|
if (msg.role === 'tool') {
|
|
320
360
|
try {
|
|
321
361
|
const content = JSON.parse(msg.content);
|
|
322
|
-
if (content.type === '
|
|
362
|
+
if (content.type === 'tool_start') {
|
|
363
|
+
// Smart JSON formatting: one line if short, indented if long
|
|
364
|
+
const jsonStr = JSON.stringify(content.args);
|
|
365
|
+
const displayArgs = jsonStr.length < 80 ? jsonStr : JSON.stringify(content.args, null, 2);
|
|
366
|
+
|
|
367
|
+
return (
|
|
368
|
+
<Box key={i} flexDirection="column" borderStyle="round" borderColor="magenta" paddingX={1} marginY={0} marginBottom={1} alignSelf="flex-start">
|
|
369
|
+
<Box>
|
|
370
|
+
<Text color="magenta" bold>⚡ TOOL CALL: </Text>
|
|
371
|
+
<Text color="white" bold>{content.name}</Text>
|
|
372
|
+
</Box>
|
|
373
|
+
<Box marginLeft={1}>
|
|
374
|
+
<Text color="gray">{displayArgs}</Text>
|
|
375
|
+
</Box>
|
|
376
|
+
</Box>
|
|
377
|
+
);
|
|
378
|
+
} else if (content.type === 'tool_end') {
|
|
323
379
|
return (
|
|
324
|
-
<Box key={i} flexDirection="
|
|
325
|
-
<
|
|
326
|
-
|
|
327
|
-
|
|
380
|
+
<Box key={i} flexDirection="column" borderStyle="round" borderColor="green" paddingX={1} marginBottom={1} alignSelf="flex-start">
|
|
381
|
+
<Box>
|
|
382
|
+
<Text color="green" bold>✅ TOOL RESULT: </Text>
|
|
383
|
+
<Text color="white" bold>{content.name}</Text>
|
|
384
|
+
</Box>
|
|
385
|
+
<Box marginLeft={1}>
|
|
386
|
+
<Text color="gray">{content.result ? content.result.substring(0, 200) + (content.result.length > 200 ? '...' : '') : 'Completed'}</Text>
|
|
387
|
+
</Box>
|
|
328
388
|
</Box>
|
|
329
389
|
);
|
|
330
390
|
}
|
|
331
|
-
return null; // Skip tool_start in history (noise)
|
|
332
391
|
} catch {
|
|
333
|
-
|
|
392
|
+
// Fallback for legacy plain text tool messages
|
|
393
|
+
return (
|
|
394
|
+
<Box key={i} marginBottom={1}>
|
|
395
|
+
<Text color="gray">🔧 {msg.content}</Text>
|
|
396
|
+
</Box>
|
|
397
|
+
);
|
|
334
398
|
}
|
|
335
399
|
}
|
|
336
400
|
|
|
337
|
-
// User
|
|
338
|
-
if (msg.role === 'user') {
|
|
339
|
-
return (
|
|
340
|
-
<Box key={i} marginTop={1} flexDirection="row">
|
|
341
|
-
<Text color={COLORS.primary} bold>❯ </Text>
|
|
342
|
-
<Text color="white">{msg.content}</Text>
|
|
343
|
-
</Box>
|
|
344
|
-
);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
// Assistant/System Message
|
|
401
|
+
// Standard User/Assistant/System messages
|
|
348
402
|
return (
|
|
349
|
-
<Box key={i}
|
|
350
|
-
|
|
403
|
+
<Box key={i} marginBottom={1} flexDirection="column">
|
|
404
|
+
<Box>
|
|
351
405
|
<Text bold color={getRoleColor(msg.role)}>
|
|
352
|
-
{msg.role === '
|
|
406
|
+
{msg.role === 'user' ? '👤 YOU ' : msg.role === 'assistant' ? '🦅 BLUEHAWKS ' : 'ℹ️ SYSTEM '}
|
|
353
407
|
</Text>
|
|
354
|
-
|
|
355
|
-
<Box marginLeft={
|
|
408
|
+
</Box>
|
|
409
|
+
<Box marginLeft={2}>
|
|
356
410
|
<Text color="white">
|
|
357
411
|
{msg.content}
|
|
358
412
|
</Text>
|
|
@@ -363,54 +417,72 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
|
|
|
363
417
|
|
|
364
418
|
{/* Streaming content */}
|
|
365
419
|
{streamingContent && (
|
|
366
|
-
<Box
|
|
367
|
-
<Box
|
|
420
|
+
<Box marginBottom={1} flexDirection="column">
|
|
421
|
+
<Box>
|
|
422
|
+
<Text bold color={COLORS.success}>🦅 BLUEHAWKS </Text>
|
|
423
|
+
</Box>
|
|
424
|
+
<Box marginLeft={2}>
|
|
368
425
|
<Text color="white">{streamingContent}</Text>
|
|
369
426
|
</Box>
|
|
370
427
|
</Box>
|
|
371
428
|
)}
|
|
372
429
|
|
|
430
|
+
{/* Current tool - Only show if NO persistent start message was added yet (prevent partial dupes) */}
|
|
431
|
+
{currentTool && !messages.some(m => m.role === 'tool' && m.content.includes(currentTool) && m.content.includes('tool_start')) && (
|
|
432
|
+
<Box flexDirection="column" borderStyle="round" borderColor="magenta" paddingX={2} paddingY={1} marginY={1}>
|
|
433
|
+
<Box>
|
|
434
|
+
<Spinner type="dots" />
|
|
435
|
+
<Text color="magenta" bold> ⚡ TOOL CALL: </Text>
|
|
436
|
+
<Text color="white" bold>{currentTool}</Text>
|
|
437
|
+
</Box>
|
|
438
|
+
</Box>
|
|
439
|
+
)}
|
|
440
|
+
|
|
373
441
|
{/* Approval prompt */}
|
|
374
442
|
{pendingApproval && (
|
|
375
|
-
<Box flexDirection="column" borderStyle="
|
|
376
|
-
<Text color={COLORS.warning} bold>
|
|
377
|
-
|
|
378
|
-
|
|
443
|
+
<Box flexDirection="column" borderStyle="round" borderColor="yellow" padding={1} marginY={1}>
|
|
444
|
+
<Text color={COLORS.warning} bold>
|
|
445
|
+
⚠️ ACTION REQUIRED: Tool Approval
|
|
446
|
+
</Text>
|
|
447
|
+
<Box marginY={1} paddingX={1} borderStyle="single" borderColor="gray">
|
|
448
|
+
<Text color="white" bold>{pendingApproval.toolName}</Text>
|
|
449
|
+
<Text color="gray">
|
|
450
|
+
{"\n"}Args: {JSON.stringify(pendingApproval.args, null, 2).substring(0, 500)}
|
|
451
|
+
</Text>
|
|
452
|
+
</Box>
|
|
453
|
+
<Box>
|
|
454
|
+
<Text>Press </Text>
|
|
455
|
+
<Text color="green" bold>Y</Text>
|
|
456
|
+
<Text> to approve, </Text>
|
|
457
|
+
<Text color="red" bold>N</Text>
|
|
458
|
+
<Text> to deny</Text>
|
|
459
|
+
</Box>
|
|
379
460
|
</Box>
|
|
380
461
|
)}
|
|
381
462
|
</Box>
|
|
382
463
|
|
|
383
|
-
{/* Input Area
|
|
464
|
+
{/* Input Area */}
|
|
384
465
|
{!pendingApproval && (
|
|
385
|
-
<Box flexDirection="column"
|
|
386
|
-
{
|
|
387
|
-
<Box borderStyle="single" borderTop={true} borderBottom={false} borderLeft={false} borderRight={false} borderColor="gray" marginBottom={0} />
|
|
388
|
-
|
|
389
|
-
<Box>
|
|
466
|
+
<Box flexDirection="column">
|
|
467
|
+
<Box borderStyle="single" borderTop={true} borderBottom={false} borderLeft={false} borderRight={false} borderColor="gray" paddingTop={1}>
|
|
390
468
|
<Text color={COLORS.primary} bold>❯ </Text>
|
|
391
469
|
{isProcessing ? (
|
|
392
|
-
<
|
|
470
|
+
<Box>
|
|
471
|
+
<Spinner type="dots" />
|
|
472
|
+
<Text color={COLORS.muted}> Agent is thinking...</Text>
|
|
473
|
+
</Box>
|
|
393
474
|
) : (
|
|
394
475
|
<TextInput
|
|
395
476
|
value={input}
|
|
396
477
|
onChange={setInput}
|
|
397
478
|
onSubmit={handleSubmit}
|
|
398
|
-
placeholder="
|
|
479
|
+
placeholder="What's on your mind?"
|
|
399
480
|
/>
|
|
400
481
|
)}
|
|
401
482
|
</Box>
|
|
402
|
-
|
|
403
|
-
{/* Yolo Indicator */}
|
|
404
|
-
{isYoloMode && (
|
|
405
|
-
<Box marginTop={0}>
|
|
406
|
-
<Text color="#F59E0B" bold>⚡ YOLO Mode Active</Text>
|
|
407
|
-
</Box>
|
|
408
|
-
)}
|
|
483
|
+
<StatusBar isYoloMode={isYoloMode} />
|
|
409
484
|
</Box>
|
|
410
485
|
)}
|
|
411
|
-
|
|
412
|
-
{/* Footer */}
|
|
413
|
-
<Footer model={apiClient.currentModel} projectPath={process.cwd()} />
|
|
414
486
|
</Box>
|
|
415
487
|
);
|
|
416
488
|
};
|
package/src/config/constants.ts
CHANGED
|
@@ -10,7 +10,7 @@ export const DEFAULT_RERANK_MODEL = 'Qwen/Qwen3-Reranker-0.6B';
|
|
|
10
10
|
|
|
11
11
|
// CLI Metadata
|
|
12
12
|
export const CLI_NAME = 'bluehawks';
|
|
13
|
-
export const CLI_VERSION = '1.0.
|
|
13
|
+
export const CLI_VERSION = '1.0.31';
|
|
14
14
|
export const CLI_DESCRIPTION = 'A production-ready multi-agent AI CLI assistant';
|
|
15
15
|
|
|
16
16
|
// Configuration Paths
|