@bluehawks/cli 1.0.40 â 1.0.42
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/components/ChatArea.js +8 -9
- package/dist/cli/components/ChatArea.js.map +1 -1
- package/dist/cli/components/Header.d.ts.map +1 -1
- package/dist/cli/components/Header.js +3 -5
- package/dist/cli/components/Header.js.map +1 -1
- package/dist/cli/components/Sidebar.d.ts.map +1 -1
- package/dist/cli/components/Sidebar.js +8 -8
- package/dist/cli/components/Sidebar.js.map +1 -1
- package/dist/config/constants.d.ts +11 -7
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +12 -7
- package/dist/config/constants.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/components/ChatArea.tsx +11 -11
- package/src/cli/components/Header.tsx +9 -10
- package/src/cli/components/Sidebar.tsx +17 -24
- package/src/config/constants.ts +12 -7
|
@@ -2,19 +2,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
3
|
import Spinner from 'ink-spinner';
|
|
4
4
|
import TextInput from 'ink-text-input';
|
|
5
|
-
import { COLORS } from '../../config/constants.js';
|
|
6
5
|
export const ChatArea = ({ messages, streamingContent, currentTool, isProcessing, input, setInput, onSubmit, pendingApproval, }) => {
|
|
7
6
|
const getRoleColor = (role) => {
|
|
8
7
|
switch (role) {
|
|
9
|
-
case 'user': return
|
|
10
|
-
case 'assistant': return
|
|
11
|
-
case 'tool': return
|
|
12
|
-
case 'system': return
|
|
13
|
-
case 'error': return
|
|
14
|
-
default: return
|
|
8
|
+
case 'user': return 'cyan';
|
|
9
|
+
case 'assistant': return 'magenta';
|
|
10
|
+
case 'tool': return 'blue';
|
|
11
|
+
case 'system': return 'yellow';
|
|
12
|
+
case 'error': return 'red';
|
|
13
|
+
default: return 'gray';
|
|
15
14
|
}
|
|
16
15
|
};
|
|
17
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "
|
|
16
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", flexGrow: 1, paddingX: 1, overflowY: "hidden", children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, justifyContent: "flex-end", children: [messages.slice(-15).map((msg, i) => {
|
|
18
17
|
if (msg.role === 'tool') {
|
|
19
18
|
try {
|
|
20
19
|
const content = JSON.parse(msg.content);
|
|
@@ -32,6 +31,6 @@ export const ChatArea = ({ messages, streamingContent, currentTool, isProcessing
|
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
return (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: getRoleColor(msg.role), children: msg.role === 'user' ? 'đ¤ YOU ' : msg.role === 'assistant' ? 'đĻ
BLUEHAWKS AI ' : 'âšī¸ SYSTEM ' }), _jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "white", children: [(msg.role === 'user' || msg.role === 'assistant') ? 'đš ' : '', msg.content] }) })] }, i));
|
|
35
|
-
}), streamingContent && (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color:
|
|
34
|
+
}), streamingContent && (_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "magenta", children: "\uD83E\uDD85 BLUEHAWKS AI " }), _jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "white", children: ["\uD83D\uDD39 ", streamingContent] }) })] })), currentTool && !messages.some(m => m.role === 'tool' && m.content.includes(currentTool) && m.content.includes('tool_start')) && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Spinner, { type: "dots" }), _jsxs(Text, { color: "magenta", children: [" Executing ", currentTool, "..."] })] })), pendingApproval && (_jsxs(Box, { borderStyle: "double", borderColor: "yellow", padding: 1, marginY: 1, children: [_jsxs(Text, { color: "yellow", bold: true, children: ["\u26A0\uFE0F APPROVAL REQUIRED: ", pendingApproval.toolName] }), _jsx(Text, { children: "Press Y to approve, N to deny" })] }))] }), !pendingApproval && (_jsxs(Box, { borderStyle: "single", borderTop: true, borderColor: "cyan", paddingTop: 0, marginTop: 1, children: [_jsx(Text, { color: "cyan", children: "\u276F " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: onSubmit, placeholder: isProcessing ? "Processing..." : "Command..." })] }))] }));
|
|
36
35
|
};
|
|
37
36
|
//# sourceMappingURL=ChatArea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatArea.js","sourceRoot":"","sources":["../../../src/cli/components/ChatArea.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,SAAS,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatArea.js","sourceRoot":"","sources":["../../../src/cli/components/ChatArea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/cli/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/cli/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmEzC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAMnE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import { Box, Text } from 'ink';
|
|
4
|
-
const Branding = () => (_jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
4
|
+
const Branding = () => (_jsx(Box, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 1, width: 60, height: 7, children: _jsx(Text, { color: "magenta", bold: true, children: `
|
|
5
5
|
____ _ _ _
|
|
6
6
|
| __ )| |_ _ ___| |__ __ ___ | | _____ __
|
|
7
7
|
| _ \\| | | | |/ _ \\ '_ \\ / _\` \\ \\ /\\ / / / __| \t/ /
|
|
@@ -9,16 +9,14 @@ const Branding = () => (_jsx(Box, { flexDirection: "column", borderStyle: "round
|
|
|
9
9
|
|____/|_|\\__,_|\\___|_| |_|\\__,_| \\_/\\_/ |___/_/
|
|
10
10
|
` }) }));
|
|
11
11
|
const SystemMonitor = ({ events }) => {
|
|
12
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
13
|
-
_jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { color: "gray", children: ["[", event.timestamp.split('T')[1]?.split('.')[0], "] "] }), _jsx(Text, { color: event.type === 'error' ? 'red' : event.type === 'success' ? 'green' : 'white', children: event.message })] }, event.id))) })] }));
|
|
12
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", flexGrow: 1, height: 7, marginLeft: 1, children: [_jsx(Box, { borderStyle: "single", borderBottom: true, borderColor: "cyan", paddingX: 1, children: _jsx(Text, { color: "cyan", children: "\u26A1 SYSTEM [Live]" }) }), _jsx(Box, { flexDirection: "column", paddingX: 1, children: events.slice(-3).map((event) => (_jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { color: "gray", children: ["[", event.timestamp.split('T')[1]?.split('.')[0], "] "] }), _jsx(Text, { color: event.type === 'error' ? 'red' : event.type === 'success' ? 'green' : 'white', children: event.message })] }, event.id))) })] }));
|
|
14
13
|
};
|
|
15
14
|
const NetworkActivity = ({ tps }) => {
|
|
16
|
-
// Simulated sparkline or bar chart
|
|
17
15
|
const [history, setHistory] = useState(new Array(15).fill(0));
|
|
18
16
|
useEffect(() => {
|
|
19
17
|
setHistory(prev => [...prev.slice(1), tps]);
|
|
20
18
|
}, [tps]);
|
|
21
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
19
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", width: 24, height: 7, marginLeft: 1, children: [_jsx(Box, { borderStyle: "single", borderBottom: true, borderColor: "cyan", paddingX: 1, children: _jsx(Text, { color: "cyan", children: "\uD83E\uDDE0 VELOCITY" }) }), _jsxs(Box, { flexDirection: "column", paddingX: 1, justifyContent: "flex-end", flexGrow: 1, children: [_jsxs(Text, { color: "magenta", bold: true, children: [tps.toFixed(1), " t/s"] }), _jsx(Box, { marginTop: 0, alignItems: "flex-end", height: 2, children: history.map((val, i) => {
|
|
22
20
|
const height = Math.min(2, Math.ceil(val / 15));
|
|
23
21
|
return (_jsx(Box, { flexDirection: "column", marginRight: 0, children: _jsx(Text, { color: "magenta", children: height === 0 ? '_' : height === 1 ? 'â' : 'â' }) }, i));
|
|
24
22
|
}) })] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/cli/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CACnB,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/cli/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/cli/components/Sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/cli/components/Sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgD1C,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,YAAY,EAAE,CAAC;CAC/B,CAKA,CAAC"}
|
|
@@ -4,21 +4,21 @@ const SessionInfo = ({ model, contextUsage, totalTokens }) => {
|
|
|
4
4
|
const bars = Math.floor(contextUsage * 20);
|
|
5
5
|
const emptyBars = 20 - bars;
|
|
6
6
|
const barStr = 'â'.repeat(bars) + 'â'.repeat(emptyBars);
|
|
7
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
7
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, marginBottom: 0, children: [_jsx(Text, { color: "cyan", bold: true, children: "SESSION INTEL" }), _jsxs(Box, { flexDirection: "column", marginTop: 0, children: [_jsxs(Text, { color: "gray", children: ["Model: ", _jsx(Text, { color: "white", children: model.split('/')[1] || model })] }), _jsxs(Box, { marginTop: 0, flexDirection: "column", children: [_jsxs(Text, { color: "gray", children: ["Ctx: ", (contextUsage * 100).toFixed(0), "% ", _jsxs(Text, { color: "dimColor", children: ["(", totalTokens, ")"] })] }), _jsx(Text, { color: contextUsage > 0.8 ? 'red' : 'magenta', children: barStr })] })] })] }));
|
|
8
8
|
};
|
|
9
9
|
const ToolMap = ({ history }) => {
|
|
10
|
-
//
|
|
11
|
-
// Fill from end of history reversed
|
|
10
|
+
// Fixed 5x5 grid
|
|
12
11
|
const slots = new Array(25).fill(null);
|
|
13
|
-
const recentHistory = history.slice(-25).reverse();
|
|
14
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
12
|
+
const recentHistory = history.slice(-25).reverse();
|
|
13
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, flexGrow: 1, marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "TOOL ACTIVITY" }), _jsx(Box, { flexDirection: "row", flexWrap: "wrap", marginTop: 0, width: 15, children: slots.map((_, i) => {
|
|
15
14
|
const activity = recentHistory[i];
|
|
16
15
|
if (!activity) {
|
|
17
|
-
return _jsx(Text, { color: "gray", children: "\u25AA " }, i);
|
|
16
|
+
return _jsx(Text, { color: "gray", dimColor: true, children: "\u25AA " }, i);
|
|
18
17
|
}
|
|
19
|
-
|
|
18
|
+
// Surge Style: Pink for active/queued (simulating), Green for done
|
|
19
|
+
const color = activity.status === 'running' ? 'magenta' : activity.status === 'success' ? 'green' : 'red';
|
|
20
20
|
return _jsx(Text, { color: color, children: "\u25A0 " }, i);
|
|
21
|
-
}) }), _jsx(Box, { marginTop:
|
|
21
|
+
}) }), _jsx(Box, { marginTop: 0, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["Latest: ", recentHistory[0]?.toolName.substring(0, 12) || 'None'] }) })] }));
|
|
22
22
|
};
|
|
23
23
|
export const Sidebar = ({ model, contextUsage, totalTokens, toolHistory }) => (_jsxs(Box, { flexDirection: "column", width: 24, marginLeft: 1, children: [_jsx(SessionInfo, { model: model, contextUsage: contextUsage, totalTokens: totalTokens }), _jsx(ToolMap, { history: toolHistory })] }));
|
|
24
24
|
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/cli/components/Sidebar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,WAAW,GAA2E,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE;IACjI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAExD,OAAO,CACH,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/cli/components/Sidebar.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.42";
|
|
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";
|
|
@@ -24,11 +24,15 @@ export declare const MAX_FILE_SIZE_BYTES: number;
|
|
|
24
24
|
export declare const MAX_HISTORY_MESSAGES = 100;
|
|
25
25
|
export declare const COMPRESS_THRESHOLD = 50;
|
|
26
26
|
export declare const COLORS: {
|
|
27
|
-
readonly primary: "
|
|
28
|
-
readonly
|
|
29
|
-
readonly
|
|
30
|
-
readonly
|
|
31
|
-
readonly
|
|
32
|
-
readonly muted: "
|
|
27
|
+
readonly primary: "cyan";
|
|
28
|
+
readonly secondary: "magenta";
|
|
29
|
+
readonly success: "green";
|
|
30
|
+
readonly warning: "yellow";
|
|
31
|
+
readonly error: "red";
|
|
32
|
+
readonly muted: "gray";
|
|
33
|
+
readonly text: "white";
|
|
34
|
+
readonly neonPink: "#FF00FF";
|
|
35
|
+
readonly neonCyan: "#00FFFF";
|
|
36
|
+
readonly neonGreen: "#00FF00";
|
|
33
37
|
};
|
|
34
38
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,YAAY,gCAAgC,CAAC;AAC1D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAG/D,eAAO,MAAM,QAAQ,cAAc,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,eAAe,oDAAoD,CAAC;AAGjF,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,SAAS,CAAC;AAG/B,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,cAAc,OAAO,CAAC;AAGnC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AAGpD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAGrC,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,YAAY,gCAAgC,CAAC;AAC1D,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAG/D,eAAO,MAAM,QAAQ,cAAc,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,eAAe,oDAAoD,CAAC;AAGjF,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,QAAQ,SAAS,CAAC;AAG/B,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,cAAc,OAAO,CAAC;AAGnC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AAGpD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAGrC,eAAO,MAAM,MAAM;;;;;;;;;;;CAYT,CAAC"}
|
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.42';
|
|
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';
|
|
@@ -31,11 +31,16 @@ export const MAX_HISTORY_MESSAGES = 100;
|
|
|
31
31
|
export const COMPRESS_THRESHOLD = 50;
|
|
32
32
|
// Colors (for terminal output)
|
|
33
33
|
export const COLORS = {
|
|
34
|
-
primary: '
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
muted: '
|
|
34
|
+
primary: 'cyan', // Main borders, headers
|
|
35
|
+
secondary: 'magenta', // Graphs, highlights, branding
|
|
36
|
+
success: 'green', // Success states
|
|
37
|
+
warning: 'yellow',
|
|
38
|
+
error: 'red',
|
|
39
|
+
muted: 'gray',
|
|
40
|
+
text: 'white',
|
|
41
|
+
// Cyberpunk specific
|
|
42
|
+
neonPink: '#FF00FF',
|
|
43
|
+
neonCyan: '#00FFFF',
|
|
44
|
+
neonGreen: '#00FF00'
|
|
40
45
|
};
|
|
41
46
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAoB;AACpB,MAAM,CAAC,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,CAAE,4CAA4C;AAC3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,iDAAiD,CAAC;AAEjF,sBAAsB;AACtB,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE/B,eAAe;AACf,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,iBAAiB;AACjB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE5D,UAAU;AACV,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,OAAO,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAoB;AACpB,MAAM,CAAC,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,CAAE,4CAA4C;AAC3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,iDAAiD,CAAC;AAEjF,sBAAsB;AACtB,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE/B,eAAe;AACf,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,iBAAiB;AACjB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE5D,UAAU;AACV,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,OAAO,EAAE,MAAM,EAAK,wBAAwB;IAC5C,SAAS,EAAE,SAAS,EAAE,+BAA+B;IACrD,OAAO,EAAE,OAAO,EAAI,iBAAiB;IACrC,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,OAAO;IACb,qBAAqB;IACrB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;CACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
3
|
import Spinner from 'ink-spinner';
|
|
4
4
|
import TextInput from 'ink-text-input';
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
|
|
7
7
|
interface MessageDisplay {
|
|
8
8
|
role: 'user' | 'assistant' | 'tool' | 'system' | 'error';
|
|
@@ -32,17 +32,17 @@ export const ChatArea: React.FC<ChatAreaProps> = ({
|
|
|
32
32
|
}) => {
|
|
33
33
|
const getRoleColor = (role: MessageDisplay['role']): string => {
|
|
34
34
|
switch (role) {
|
|
35
|
-
case 'user': return
|
|
36
|
-
case 'assistant': return
|
|
37
|
-
case 'tool': return
|
|
38
|
-
case 'system': return
|
|
39
|
-
case 'error': return
|
|
40
|
-
default: return
|
|
35
|
+
case 'user': return 'cyan';
|
|
36
|
+
case 'assistant': return 'magenta';
|
|
37
|
+
case 'tool': return 'blue';
|
|
38
|
+
case 'system': return 'yellow';
|
|
39
|
+
case 'error': return 'red';
|
|
40
|
+
default: return 'gray';
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
return (
|
|
45
|
-
<Box flexDirection="column" borderStyle="single" borderColor="
|
|
45
|
+
<Box flexDirection="column" borderStyle="single" borderColor="cyan" flexGrow={1} paddingX={1} overflowY="hidden">
|
|
46
46
|
{/* Messages Area */}
|
|
47
47
|
<Box flexDirection="column" flexGrow={1} justifyContent="flex-end">
|
|
48
48
|
{messages.slice(-15).map((msg, i) => { // Show last 15 messages to fit
|
|
@@ -86,7 +86,7 @@ export const ChatArea: React.FC<ChatAreaProps> = ({
|
|
|
86
86
|
{/* Streaming */}
|
|
87
87
|
{streamingContent && (
|
|
88
88
|
<Box marginBottom={1} flexDirection="column">
|
|
89
|
-
<Text bold color=
|
|
89
|
+
<Text bold color="magenta">đĻ
BLUEHAWKS AI </Text>
|
|
90
90
|
<Box marginLeft={2}>
|
|
91
91
|
<Text color="white">đš {streamingContent}</Text>
|
|
92
92
|
</Box>
|
|
@@ -112,8 +112,8 @@ export const ChatArea: React.FC<ChatAreaProps> = ({
|
|
|
112
112
|
|
|
113
113
|
{/* Input Area */}
|
|
114
114
|
{!pendingApproval && (
|
|
115
|
-
<Box borderStyle="single" borderTop borderColor="
|
|
116
|
-
<Text color="
|
|
115
|
+
<Box borderStyle="single" borderTop borderColor="cyan" paddingTop={0} marginTop={1}>
|
|
116
|
+
<Text color="cyan">⯠</Text>
|
|
117
117
|
<TextInput
|
|
118
118
|
value={input}
|
|
119
119
|
onChange={setInput}
|
|
@@ -3,8 +3,8 @@ import { Box, Text } from 'ink';
|
|
|
3
3
|
import { SystemEvent } from './types.js';
|
|
4
4
|
|
|
5
5
|
const Branding = () => (
|
|
6
|
-
<Box flexDirection="column" borderStyle="round" borderColor="
|
|
7
|
-
<Text color="
|
|
6
|
+
<Box flexDirection="column" borderStyle="round" borderColor="magenta" paddingX={1} width={60} height={7}>
|
|
7
|
+
<Text color="magenta" bold>
|
|
8
8
|
{`
|
|
9
9
|
____ _ _ _
|
|
10
10
|
| __ )| |_ _ ___| |__ __ ___ | | _____ __
|
|
@@ -18,12 +18,12 @@ const Branding = () => (
|
|
|
18
18
|
|
|
19
19
|
const SystemMonitor: React.FC<{ events: SystemEvent[] }> = ({ events }) => {
|
|
20
20
|
return (
|
|
21
|
-
<Box flexDirection="column" borderStyle="round" borderColor="
|
|
22
|
-
<Box borderStyle="single" borderBottom borderColor="
|
|
23
|
-
<Text color="
|
|
21
|
+
<Box flexDirection="column" borderStyle="round" borderColor="cyan" flexGrow={1} height={7} marginLeft={1}>
|
|
22
|
+
<Box borderStyle="single" borderBottom borderColor="cyan" paddingX={1}>
|
|
23
|
+
<Text color="cyan">⥠SYSTEM [Live]</Text>
|
|
24
24
|
</Box>
|
|
25
25
|
<Box flexDirection="column" paddingX={1}>
|
|
26
|
-
{events.slice(-3).map((event) => (
|
|
26
|
+
{events.slice(-3).map((event) => (
|
|
27
27
|
<Text key={event.id} wrap="truncate">
|
|
28
28
|
<Text color="gray">[{event.timestamp.split('T')[1]?.split('.')[0]}] </Text>
|
|
29
29
|
<Text color={event.type === 'error' ? 'red' : event.type === 'success' ? 'green' : 'white'}>
|
|
@@ -37,7 +37,6 @@ const SystemMonitor: React.FC<{ events: SystemEvent[] }> = ({ events }) => {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
const NetworkActivity: React.FC<{ tps: number }> = ({ tps }) => {
|
|
40
|
-
// Simulated sparkline or bar chart
|
|
41
40
|
const [history, setHistory] = useState<number[]>(new Array(15).fill(0));
|
|
42
41
|
|
|
43
42
|
useEffect(() => {
|
|
@@ -45,9 +44,9 @@ const NetworkActivity: React.FC<{ tps: number }> = ({ tps }) => {
|
|
|
45
44
|
}, [tps]);
|
|
46
45
|
|
|
47
46
|
return (
|
|
48
|
-
<Box flexDirection="column" borderStyle="round" borderColor="
|
|
49
|
-
<Box borderStyle="single" borderBottom borderColor="
|
|
50
|
-
<Text color="
|
|
47
|
+
<Box flexDirection="column" borderStyle="round" borderColor="cyan" width={24} height={7} marginLeft={1}>
|
|
48
|
+
<Box borderStyle="single" borderBottom borderColor="cyan" paddingX={1}>
|
|
49
|
+
<Text color="cyan">đ§ VELOCITY</Text>
|
|
51
50
|
</Box>
|
|
52
51
|
<Box flexDirection="column" paddingX={1} justifyContent="flex-end" flexGrow={1}>
|
|
53
52
|
<Text color="magenta" bold>{tps.toFixed(1)} t/s</Text>
|
|
@@ -8,21 +8,14 @@ const SessionInfo: React.FC<{ model: string; contextUsage: number; totalTokens:
|
|
|
8
8
|
const barStr = 'â'.repeat(bars) + 'â'.repeat(emptyBars);
|
|
9
9
|
|
|
10
10
|
return (
|
|
11
|
-
<Box flexDirection="column" borderStyle="round" borderColor="
|
|
12
|
-
<Text color="
|
|
13
|
-
<Box flexDirection="column" marginTop={
|
|
14
|
-
<Text color="gray">Model
|
|
15
|
-
<Text color="white">{model}</Text>
|
|
11
|
+
<Box flexDirection="column" borderStyle="round" borderColor="cyan" paddingX={1} marginBottom={0}>
|
|
12
|
+
<Text color="cyan" bold>SESSION INTEL</Text>
|
|
13
|
+
<Box flexDirection="column" marginTop={0}>
|
|
14
|
+
<Text color="gray">Model: <Text color="white">{model.split('/')[1] || model}</Text></Text>
|
|
16
15
|
|
|
17
|
-
<Box marginTop={
|
|
18
|
-
<Text color="gray">
|
|
19
|
-
<Text color={contextUsage > 0.8 ? 'red' : '
|
|
20
|
-
<Text color="gray">{(contextUsage * 100).toFixed(1)}%</Text>
|
|
21
|
-
</Box>
|
|
22
|
-
|
|
23
|
-
<Box marginTop={1} flexDirection="column">
|
|
24
|
-
<Text color="gray">Total Tokens:</Text>
|
|
25
|
-
<Text color="white">{totalTokens.toLocaleString()}</Text>
|
|
16
|
+
<Box marginTop={0} flexDirection="column">
|
|
17
|
+
<Text color="gray">Ctx: {(contextUsage * 100).toFixed(0)}% <Text color="dimColor">({totalTokens})</Text></Text>
|
|
18
|
+
<Text color={contextUsage > 0.8 ? 'red' : 'magenta'}>{barStr}</Text>
|
|
26
19
|
</Box>
|
|
27
20
|
</Box>
|
|
28
21
|
</Box>
|
|
@@ -30,26 +23,26 @@ const SessionInfo: React.FC<{ model: string; contextUsage: number; totalTokens:
|
|
|
30
23
|
};
|
|
31
24
|
|
|
32
25
|
const ToolMap: React.FC<{ history: ToolActivity[] }> = ({ history }) => {
|
|
33
|
-
//
|
|
34
|
-
// Fill from end of history reversed
|
|
26
|
+
// Fixed 5x5 grid
|
|
35
27
|
const slots = new Array(25).fill(null);
|
|
36
|
-
const recentHistory = history.slice(-25).reverse();
|
|
28
|
+
const recentHistory = history.slice(-25).reverse();
|
|
37
29
|
|
|
38
30
|
return (
|
|
39
|
-
<Box flexDirection="column" borderStyle="round" borderColor="
|
|
40
|
-
<Text color="
|
|
41
|
-
<Box flexDirection="row" flexWrap="wrap" marginTop={
|
|
31
|
+
<Box flexDirection="column" borderStyle="round" borderColor="cyan" paddingX={1} flexGrow={1} marginTop={1}>
|
|
32
|
+
<Text color="cyan" bold>TOOL ACTIVITY</Text>
|
|
33
|
+
<Box flexDirection="row" flexWrap="wrap" marginTop={0} width={15}>
|
|
42
34
|
{slots.map((_, i) => {
|
|
43
35
|
const activity = recentHistory[i];
|
|
44
36
|
if (!activity) {
|
|
45
|
-
return <Text key={i} color="gray">âĒ </Text>;
|
|
37
|
+
return <Text key={i} color="gray" dimColor>âĒ </Text>;
|
|
46
38
|
}
|
|
47
|
-
|
|
39
|
+
// Surge Style: Pink for active/queued (simulating), Green for done
|
|
40
|
+
const color = activity.status === 'running' ? 'magenta' : activity.status === 'success' ? 'green' : 'red';
|
|
48
41
|
return <Text key={i} color={color}>â </Text>;
|
|
49
42
|
})}
|
|
50
43
|
</Box>
|
|
51
|
-
<Box marginTop={
|
|
52
|
-
<Text color="gray" dimColor>Latest: {recentHistory[0]?.toolName || 'None'}</Text>
|
|
44
|
+
<Box marginTop={0}>
|
|
45
|
+
<Text color="gray" dimColor>Latest: {recentHistory[0]?.toolName.substring(0, 12) || 'None'}</Text>
|
|
53
46
|
</Box>
|
|
54
47
|
</Box>
|
|
55
48
|
);
|
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.42';
|
|
14
14
|
export const CLI_DESCRIPTION = 'A production-ready multi-agent AI CLI assistant';
|
|
15
15
|
|
|
16
16
|
// Configuration Paths
|
|
@@ -38,10 +38,15 @@ export const COMPRESS_THRESHOLD = 50;
|
|
|
38
38
|
|
|
39
39
|
// Colors (for terminal output)
|
|
40
40
|
export const COLORS = {
|
|
41
|
-
primary: '
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
muted: '
|
|
41
|
+
primary: 'cyan', // Main borders, headers
|
|
42
|
+
secondary: 'magenta', // Graphs, highlights, branding
|
|
43
|
+
success: 'green', // Success states
|
|
44
|
+
warning: 'yellow',
|
|
45
|
+
error: 'red',
|
|
46
|
+
muted: 'gray',
|
|
47
|
+
text: 'white',
|
|
48
|
+
// Cyberpunk specific
|
|
49
|
+
neonPink: '#FF00FF',
|
|
50
|
+
neonCyan: '#00FFFF',
|
|
51
|
+
neonGreen: '#00FF00'
|
|
47
52
|
} as const;
|