@bluehawks/cli 1.0.24 → 1.0.26

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.
@@ -1,14 +1,14 @@
1
1
  {
2
- "id": "session_1770656250601_cnrctb",
3
- "startTime": "2026-02-09T16:57:30.601Z",
2
+ "id": "session_1770658224066_su365y",
3
+ "startTime": "2026-02-09T17:30:24.066Z",
4
4
  "messages": [
5
5
  {
6
6
  "role": "user",
7
- "content": "what is present in client.ts file?"
7
+ "content": "what are the content of client.ts?"
8
8
  },
9
9
  {
10
10
  "role": "assistant",
11
- "content": "I'll check the contents of the client.ts file for you. Let me read that file first.\n\nI see that the `src/client.ts` file doesn't exist in the current directory structure. Let me check what files are actually available in the `src` directory to better understand the project structure.\n\nI see that the `src` directory contains the following items:\n\n- `cli/`\n- `config/`\n- `core/`\n- `index.ts`\n\nThe `client.ts` file doesn't exist in the project. The project appears to have an `index.ts` file instead, which might be the main entry point for the application.\n\nWould you like me to check the contents of the `index.ts` file instead, or do you have a different file in mind?"
11
+ "content": "I'll check the content of client.ts for you. Since I don't see a file named client.ts in the current directory structure, I'll search for it first.\n\nI found two files named client.ts. Let me check the content of the most likely one - src/core/api/client.ts, which seems to be the primary API client file.\n\nThe content of `src/core/api/client.ts` is a comprehensive API client implementation for Bluehawks CLI. Here's a summary of its key features:\n\n## Overview\nThis file implements an OpenAI-compatible API client with streaming support, handling chat completions, embeddings, and reranking operations.\n\n## Key Features\n\n1. **Configuration Management**\n - Uses environment variables and constants for API settings\n - Supports configurable base URL, API key, model, and timeout settings\n\n2. **Core Functionality**\n - `createChatCompletion()`: Non-streaming chat completions with tool support\n - `createStreamingChatCompletion()`: Streaming chat completions with proper chunk handling\n - `createEmbeddings()`: Generates text embeddings\n - `rerank()`: Reranks documents based on query relevance\n\n3. **Qwen3 Tool Call Parsing**\n - Special handling for Qwen3's native tool call format (using `<tool_call>` markup)\n - Parses tool calls from text content when standard JSON format isn't present\n\n4. **Error Handling & Retries**\n - Built-in retry mechanism with exponential backoff\n - Timeout handling and proper error reporting\n - Comprehensive error types with status codes and messages\n\n5. **Streaming Support**\n - Implements proper streaming chunk processing with delta content and tool calls\n - Handles tool call updates incrementally during streaming\n\n6. **Tool Integration**\n - Supports tool definitions and tool choice parameters\n - Provides methods to send tool results back to the API\n\n7. **Singleton Pattern**\n - Exports a global `apiClient` instance for easy access\n\nThe client is designed to be flexible, supporting various LLM backends while maintaining compatibility with OpenAI's API specification. It includes robust error handling, timeout management, and special handling for different tool call formats."
12
12
  }
13
13
  ],
14
14
  "metadata": {
@@ -16,12 +16,12 @@
16
16
  "model": "Qwen/Qwen3-4B-Instruct-2507",
17
17
  "tokensUsed": 0,
18
18
  "toolsUsed": [
19
- "read_file",
20
- "list_directory"
19
+ "find_files",
20
+ "read_file"
21
21
  ],
22
22
  "successfulToolCalls": 2,
23
23
  "failedToolCalls": 0,
24
- "apiTime": 10381,
25
- "toolTime": 3
24
+ "apiTime": 19943,
25
+ "toolTime": 19
26
26
  }
27
27
  }
@@ -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;AAsFhE,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,CAsYlC,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAkEhE,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,CAiWlC,CAAC"}
package/dist/cli/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  /**
3
3
  * Bluehawks CLI - Main Application Component
4
4
  */
@@ -16,25 +16,24 @@ import { hooksManager } from '../core/hooks/index.js';
16
16
  import * as path from 'path';
17
17
  import * as os from 'os';
18
18
  // UI Components
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: "╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝" })] }));
19
+ const Branding = () => (_jsxs(Text, { color: "#3B82F6", bold: true, children: ["\uD83E\uDD85 ", CLI_NAME.toUpperCase(), " AI"] }));
20
20
  const HeaderBox = ({ version, model, projectPath }) => {
21
21
  const relativePath = projectPath.startsWith(os.homedir())
22
22
  ? '~/' + path.relative(os.homedir(), projectPath)
23
23
  : projectPath;
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
+ return (_jsxs(Box, { flexDirection: "row", marginX: 1, children: [_jsxs(Text, { color: "gray", children: ["v", version] }), _jsx(Text, { color: "gray", children: " | " }), _jsx(Text, { color: "gray", children: "Model: " }), _jsx(Text, { color: "white", children: model }), _jsx(Text, { color: "gray", children: " | " }), _jsx(Text, { color: "gray", children: "Path: " }), _jsx(Text, { color: "white", children: relativePath })] }));
25
25
  };
26
26
  const Tips = () => {
27
27
  const tipsList = [
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."
28
+ "Use /clear to reset context.",
29
+ "Type /yolo for auto-approval.",
30
+ "Use /help for commands.",
31
+ "Bluehawks is context-aware."
33
32
  ];
34
33
  const [tip] = useState(() => tipsList[Math.floor(Math.random() * tipsList.length)]);
35
- return (_jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsxs(Text, { color: "gray", children: ["Tips: ", tip] }) }));
34
+ return (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["Tip: ", tip] }) }));
36
35
  };
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 " }) }))] }));
36
+ const StatusBar = ({ isYoloMode }) => (_jsxs(Box, { marginTop: 0, paddingX: 1, children: [_jsx(Box, { flexGrow: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: " /help for commands " }) }), isYoloMode && (_jsx(Box, { children: _jsx(Text, { color: "#F59E0B", bold: true, children: "\u26A1 YOLO" }) }))] }));
38
37
  export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
39
38
  const { exit } = useApp();
40
39
  const exitCalledRef = React.useRef(false);
@@ -154,8 +153,8 @@ export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
154
153
  {
155
154
  role: 'system',
156
155
  content: newValue
157
- ? '⚡ YOLO mode enabled! All tools will auto-execute.'
158
- : '🛡️ YOLO mode disabled. Dangerous tools will require approval.',
156
+ ? '⚡ YOLO mode enabled.'
157
+ : '🛡️ YOLO mode disabled.',
159
158
  },
160
159
  ]);
161
160
  return newValue;
@@ -249,28 +248,26 @@ export const App = ({ initialPrompt, apiKey, yoloMode = false, onExit }) => {
249
248
  return COLORS.muted;
250
249
  }
251
250
  };
252
- 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) => {
251
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 0, children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", marginBottom: 0, children: [_jsx(Branding, {}), _jsx(HeaderBox, { version: CLI_VERSION, model: apiClient.currentModel, projectPath: process.cwd() })] }), _jsx(Box, { marginBottom: 1, children: messages.length === 0 && _jsx(Tips, {}) }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, marginBottom: 0, children: [messages.slice(-50).map((msg, i) => {
253
252
  // Custom rendering for Tool messages (Boxed UI)
254
253
  if (msg.role === 'tool') {
255
254
  try {
256
255
  const content = JSON.parse(msg.content);
257
- if (content.type === 'tool_start') {
258
- // Smart JSON formatting: one line if short, indented if long
259
- const jsonStr = JSON.stringify(content.args);
260
- const displayArgs = jsonStr.length < 80 ? jsonStr : JSON.stringify(content.args, null, 2);
261
- 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));
262
- }
263
- else if (content.type === 'tool_end') {
264
- 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));
256
+ if (content.type === 'tool_end') {
257
+ return (_jsxs(Box, { flexDirection: "row", marginBottom: 0, children: [_jsx(Text, { color: "gray", children: " \u2514\u2500 " }), _jsxs(Text, { color: "green", children: ["\u2714 ", content.name] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", content.result ? `(${content.result.length} chars)` : ''] })] }, i));
265
258
  }
259
+ return null; // Skip tool_start in history to reduce noise
266
260
  }
267
261
  catch {
268
- // Fallback for legacy plain text tool messages
269
- return (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "gray", children: ["\uD83D\uDD27 ", msg.content] }) }, i));
262
+ return _jsx(Box, { children: _jsxs(Text, { color: "gray", children: ["\uD83D\uDD27 ", msg.content] }) }, i);
270
263
  }
271
264
  }
272
- // Standard User/Assistant/System messages
273
- 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));
274
- }), 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: "simpleDotsScrolling" }), _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 })] }))] }));
265
+ // User Message
266
+ if (msg.role === 'user') {
267
+ return (_jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Text, { color: COLORS.primary, bold: true, children: "\u276F " }), _jsx(Text, { color: "white", children: msg.content })] }, i));
268
+ }
269
+ // Assistant/System Message
270
+ 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));
271
+ }), streamingContent && (_jsx(Box, { marginTop: 0, flexDirection: "column", children: _jsx(Box, { marginLeft: 0, children: _jsx(Text, { color: "white", children: streamingContent }) }) })), currentTool && (_jsxs(Box, { flexDirection: "row", marginY: 0, children: [_jsx(Text, { color: "magenta", children: " \u251C\u2500 " }), _jsx(Spinner, { type: "dots" }), _jsxs(Text, { color: "magenta", children: [" Executing ", currentTool, "..."] })] })), pendingApproval && (_jsxs(Box, { flexDirection: "column", borderStyle: "round", 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: [_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: "..." }))] }), _jsx(StatusBar, { isYoloMode: isYoloMode })] }))] }));
275
272
  };
276
273
  //# sourceMappingURL=app.js.map
@@ -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":";AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,gBAAgB;AAChB,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CACnB,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,oCAAK,QAAQ,CAAC,WAAW,EAAE,WAAW,CACnE,CAAC;AAEF,MAAM,SAAS,GAAsE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;IACrH,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC;QACjD,CAAC,CAAC,WAAW,CAAC;IAElB,OAAO,CACH,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC,aAC/B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,OAAO,IAAQ,EACpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAe,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,GAAQ,EACnE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,YAAY,GAAQ,IACvE,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,GAAG,EAAE;IACd,MAAM,QAAQ,GAAG;QACb,8BAA8B;QAC9B,+BAA+B;QAC/B,yBAAyB;QACzB,6BAA6B;KAChC,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpF,OAAO,CACH,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACd,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,4BAAO,GAAG,IAAQ,GAC3C,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,SAAS,GAAsC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CACrE,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aAC1B,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,2CAA4B,GACrD,EACL,UAAU,IAAI,CACX,KAAC,GAAG,cACA,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,kCAAc,GACtC,CACT,IACC,CACT,CAAC;AAgBF,MAAM,CAAC,MAAM,GAAG,GAAuB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3F,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAI5C,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAGvD,wBAAwB;IACxB,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QACjC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC9B,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;SACnD,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QACjC,gBAAgB,EAAE,CAAC;QACnB,OAAO,IAAI,YAAY,CAAC;YACpB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,SAAS;YACT,YAAY;SACf,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ,CAC7B,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,YAAY,CAAC,CAClE,CAAC;IAEF,8CAA8C;IAC9C,SAAS,CAAC,GAAG,EAAE;QACX,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACrD,IAAI,UAAU;gBAAE,OAAO,IAAI,CAAC;YAE5B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACpC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,wDAAwD;QACxD,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,WAAW,GAAsB;gBACnC,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE;gBACxC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;gBAC1B,KAAK,EAAE,SAAS,CAAC,YAAY;gBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACrB,CAAC;YACF,MAAM,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,OAAO,GAAG,EAAE;YACR,8DAA8D;YAC9D,2DAA2D;YAC3D,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;gBACnC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,0DAA0D;YAC1D,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAc;oBAC3B,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE;oBACxC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;oBAC1B,KAAK,EAAE,SAAS,CAAC,YAAY;oBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,MAAM,EAAE,WAAW;oBACnB,YAAY,EAAE,KAAK,CAAC,YAAY;iBACnC,CAAC;gBACF,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAChD,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC,CAAC;YACF,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAGhF,wBAAwB;IACxB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,aAAa,EAAE,CAAC;YAChB,YAAY,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAC5B,KAAK,EAAE,KAAa,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,IAAI,YAAY;YAAE,OAAO;QAErC,2BAA2B;QAC3B,IAAI,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,GAAmB;gBAC5B,cAAc;gBACd,YAAY;gBACZ,YAAY;gBACZ,MAAM,EAAE,GAAG,EAAE;oBACT,0CAA0C;oBAC1C,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;wBACnC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;wBACxC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;wBACnE,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;oBACjD,CAAC;oBACD,IAAI,EAAE,CAAC;gBACX,CAAC;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,MAAM,EAAE,CAAC;gBACT,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,OAAO;QACX,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;YACpC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC;gBACvB,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBACjE,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBAClB,GAAG,IAAI;oBACP;wBACI,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,QAAQ;4BACb,CAAC,CAAC,sBAAsB;4BACxB,CAAC,CAAC,yBAAyB;qBAClC;iBACJ,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,OAAO;QACX,CAAC;QAED,mBAAmB;QACnB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAExB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE;gBAClD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACf,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAChD,CAAC;gBACD,WAAW,EAAE,CAAC,IAAI,EAAE,IAA8B,EAAE,EAAE;oBAClD,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;wBAClB,GAAG,IAAI;wBACP;4BACI,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;yBAC9D;qBACJ,CAAC,CAAC;gBACP,CAAC;gBACD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;oBACxB,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;wBAClB,GAAG,IAAI;wBACP;4BACI,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yBAC9D;qBACJ,CAAC,CAAC;gBACP,CAAC;aACJ,CAAC,CAAC;YAEH,qBAAqB;YACrB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvF,CAAC;YAED,iBAAiB;YACjB,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9D,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvE,iBAAiB;YACjB,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC,EAAE;gBAAE,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE;gBAAE,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;gBAAS,CAAC;YACP,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACxB,cAAc,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC,EACD,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAC/E,CAAC;IAEF,wBAAwB;IACxB,QAAQ,CACJ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACX,IAAI,eAAe,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC5C,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnD,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC/B,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC;IACL,CAAC,EACD,EAAE,QAAQ,EAAE,eAAe,KAAK,IAAI,EAAE,CACzC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,IAA4B,EAAU,EAAE;QAC1D,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,MAAM;gBACP,OAAO,MAAM,CAAC,OAAO,CAAC;YAC1B,KAAK,WAAW;gBACZ,OAAO,MAAM,CAAC,OAAO,CAAC;YAC1B,KAAK,MAAM;gBACP,OAAO,MAAM,CAAC,IAAI,CAAC;YACvB,KAAK,QAAQ;gBACT,OAAO,MAAM,CAAC,OAAO,CAAC;YAC1B,KAAK,OAAO;gBACR,OAAO,MAAM,CAAC,KAAK,CAAC;YACxB;gBACI,OAAO,MAAM,CAAC,KAAK,CAAC;QAC5B,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aAEhD,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACxD,KAAC,QAAQ,KAAG,EACZ,KAAC,SAAS,IACN,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,CAAC,YAAY,EAC7B,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,GAC5B,IACA,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YACf,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAC,IAAI,KAAG,GAChC,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,aACnD,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;wBAChC,gDAAgD;wBAChD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACtB,IAAI,CAAC;gCACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gCACxC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oCAC9B,OAAO,CACH,MAAC,GAAG,IAAS,aAAa,EAAC,KAAK,EAAC,YAAY,EAAE,CAAC,aAC5C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gCAAa,EAC/B,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBAAI,OAAO,CAAC,IAAI,IAAQ,EAC3C,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,wBAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,IAAQ,KAHxF,CAAC,CAIL,CACT,CAAC;gCACN,CAAC;gCACD,OAAO,IAAI,CAAC,CAAC,6CAA6C;4BAC9D,CAAC;4BAAC,MAAM,CAAC;gCACL,OAAO,KAAC,GAAG,cAAS,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8BAAK,GAAG,CAAC,OAAO,IAAQ,IAA7C,CAAC,CAAkD,CAAC;4BACzE,CAAC;wBACL,CAAC;wBAED,eAAe;wBACf,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACtB,OAAO,CACH,MAAC,GAAG,IAAS,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,KAAK,aAC1C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,8BAAU,EAC3C,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,GAAG,CAAC,OAAO,GAAQ,KAFlC,CAAC,CAGL,CACT,CAAC;wBACN,CAAC;wBAED,2BAA2B;wBAC3B,OAAO,CACH,MAAC,GAAG,IAAS,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC7D,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,CACzB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YACnC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,GAC5C,CACV,EACD,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YACd,GAAG,CAAC,OAAO,GACT,GACL,KAVA,CAAC,CAWL,CACT,CAAC;oBACN,CAAC,CAAC,EAGD,gBAAgB,IAAI,CACjB,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACrC,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,gBAAgB,GAAQ,GAC3C,GACJ,CACT,EAGA,WAAW,IAAI,CACZ,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC,aAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,gCAAa,EAClC,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,EACvB,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,4BAAa,WAAW,WAAW,IACtD,CACT,EAGA,eAAe,IAAI,CAChB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,aAC1F,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,wCAAmB,eAAe,CAAC,QAAQ,IAAQ,EACpF,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAC5F,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAAoB,IACpC,CACT,IACC,EAGL,CAAC,eAAe,IAAI,CACjB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACpC,MAAC,GAAG,eACA,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,8BAAU,EAC1C,YAAY,CAAC,CAAC,CAAC,CACZ,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,4BAAoB,CAChD,CAAC,CAAC,CAAC,CACA,KAAC,SAAS,IACN,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAC,KAAK,GACnB,CACL,IACC,EACN,KAAC,SAAS,IAAC,UAAU,EAAE,UAAU,GAAI,IACnC,CACT,IACC,CACT,CAAC;AACN,CAAC,CAAC"}
@@ -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.24";
9
+ export declare const CLI_VERSION = "1.0.26";
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";
@@ -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.24';
11
+ export const CLI_VERSION = '1.0.26';
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';
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/agents/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,eAAe,cAmJ3B,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/agents/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,eAAe,cA+J3B,CAAC"}
@@ -14,7 +14,7 @@ Version: ${CLI_VERSION}
14
14
 
15
15
  ## Core Capability & Behavior
16
16
  You are an expert software engineer and agentic coding assistant. You have access to a Linux environment and a suite of tools to accomplish complex tasks.
17
- - **Autonomy**: You are highly autonomous. You do not need to ask for permission for safe read-only operations (reading files, listing directories, searching).
17
+ - **Autonomy**: You are highly autonomous. You do not need to ask for permission for safe read-only operations.
18
18
  - **Proactive**: If you need information, fetch it. If you need to verify something, run a test.
19
19
  - **Thinking**: Before executing complex tasks, you SHOULD plan your approach step-by-step.
20
20
 
@@ -96,44 +96,56 @@ Parameters:
96
96
  4. **Error Handling**: Analyze errors (e.g., "File not found") and fix them.
97
97
 
98
98
  5. **Troubleshooting & Recovery (CRITICAL)**:
99
- - **File Not Found**: If \`read_file\` fails because the file doesn't exist, **DO NOT** just say "I can't find it". You **MUST** use \`find_files\` to search for it.
99
+ - **File Not Found**: If \`read_file\` fails, **DO NOT** give up. You **MUST** use \`find_files\` to search.
100
100
  - **Command Failed**: Read error output and retry with a fix.
101
+ - **Error Loops**: If stuck in an error loop, use \`search_web\` (if available) or \`fetch_url\` to find a solution rather than guessing.
101
102
 
102
103
  6. **File Search Strategy (CRITICAL)**:
103
- - If unsure of a file path, **ALWAYS** use \`find_files\` first.
104
- - **NEVER** guess a path like \`src/file.ts\` unless you have seen it.
104
+ - If unsure of a path, **ALWAYS** use \`find_files\` first.
105
+ - **NEVER** guess a path like \`src/file.ts\` unless seen in a directory listing.
105
106
 
106
107
  ## Advanced Capabilities
107
108
 
108
109
  ### 🧠 THINKING PROCESS
109
- - **Plan First**: For complex tasks, use a "Thinking" step to outline your approach before taking action.
110
- - **Reasoning**: Explain *why* you are taking a specific action if it's not obvious.
110
+ - **Plan First**: For complex tasks, use a "Thinking" step to outline your approach.
111
+ - **Reasoning**: Explain *why* you are taking a specific action.
112
+
113
+ ### � DEVELOPMENT WORKFLOW (Best Practice)
114
+ 1. **Analysis**: Clarify requirements. Don't proceed with ambiguous requests.
115
+ 2. **Frontend/Mock First**: If building a UI, create a mock version first to give the user an "Aha!" moment.
116
+ - Use mock data (don't hardcode logic yet).
117
+ - Ensure it looks and feels complete.
118
+ 3. **Backend Implementation**: Once UI is approved, implement the real backend logic.
119
+ 4. **Integration**: Replace mocks with real API calls.
120
+ 5. **Testing**: Verify functionality.
121
+
122
+ ### �️ ENVIRONMENT SAFETY
123
+ - **Secrets**: **NEVER** hardcode secrets, API keys, or full URLs in code.
124
+ - **.env Usage**: Always use \`.env\` files for sensitive configuration.
125
+ - **Port Discipline**: Respect existing port configurations (e.g., 3000 for frontend, 8001 for backend).
111
126
 
112
127
  ### 🔍 LINTING & VALIDATION
113
- - **Self-Correction**: After editing code, if a linter (e.g., \`eslint\`, \`ruff\`, \`tsc\`) is available in the project, you **SHOULD** run it to verify your changes.
114
- - **Fix Errors**: If validation fails, attempt to fix the errors immediately.
128
+ - **Self-Correction**: After editing code, run available linters (\`eslint\`, \`Start\`, \`tsc\`).
129
+ - **Fix Errors**: Attempt to fix validation errors immediately.
115
130
 
116
- ### 📦 BULK OPERATIONS MINDSET
117
- - **Efficiency**: When reading or writing multiple files, try to plan your actions efficiently. While you must execute tools sequentially, your *plan* should account for the whole batch.
118
- - **Context**: Read valid context (related files) before making changes to ensure consistency.
131
+ ### 🎨 UI/UX GUIDELINES
132
+ - **Aesthetic**: Aim for "Modern, Clean, Professional".
133
+ - **Patterns**: Use inline editing for simple tasks; modals for complex ones.
134
+ - **Feedback**: Ensure the app feels responsive.
119
135
 
120
- ### FILE HANDLING
121
- - **Creation Triggers**: Create files when:
122
- - Writing >10 lines of code.
123
- - User asks to "write a script/module/component".
124
- - User asks to "save" something.
125
- - **Content**: Always output full file content when creating.
126
- - **Encoding**: UTF-8.
136
+ ### 📦 BULK OPERATIONS MINDSET
137
+ - **Efficiency**: Plan batched file operations where possible.
138
+ - **Context**: Read all necessary context before editing.
127
139
 
128
140
  ### COPYRIGHT COMPLIANCE
129
- - **Strict Limit**: You must NOT quote more than 15 words from any single source.
130
- - **Paraphrase**: You MUST paraphrase content entirely in your own words.
131
- - **No Lyrics/Poems**: Do not reproduce lyrics or poems.
132
- - **Attribution**: Credit sources but do not copy them textually.
141
+ - **Strict Limit**: Max 15 words quoted from any single source.
142
+ - **Paraphrase**: Rewrite content in your own words.
143
+ - **Attribution**: Credit sources without copying text.
133
144
 
134
145
  ### COMMAND EXECUTION
135
146
  - **Forbidden**: Interactive commands (\`nano\`, \`vim\`, \`less\`).
136
- - **Forbidden**: Long-running daemons without background control.
147
+ - **Forbidden**: Long-running daemons in foreground.
148
+ - **Package Management**: Trust \`package.json\`. Use \`npm\` or \`yarn\` consistently.
137
149
 
138
150
  ### DYNAMIC CONTEXT
139
151
  - **Time**: ${today}
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/agents/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAChC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1H,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,WAAW,QAAQ;sBACR,KAAK;uBACJ,QAAQ;6BACF,GAAG;WACrB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8HR,KAAK;YACP,QAAQ;aACP,GAAG;;;;;;;;;CASf,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/agents/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAChC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1H,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,WAAW,QAAQ;sBACR,KAAK;uBACJ,QAAQ;6BACF,GAAG;WACrB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0IR,KAAK;YACP,QAAQ;aACP,GAAG;;;;;;;;;CASf,CAAC;AACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluehawks/cli",
3
- "version": "1.0.24",
3
+ "version": "1.0.26",
4
4
  "description": "A production-ready multi-agent AI CLI assistant",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/cli/app.tsx CHANGED
@@ -19,14 +19,7 @@ import * as os from 'os';
19
19
 
20
20
  // UI Components
21
21
  const Branding = () => (
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>
29
- </Box>
22
+ <Text color="#3B82F6" bold>🦅 {CLI_NAME.toUpperCase()} AI</Text>
30
23
  );
31
24
 
32
25
  const HeaderBox: React.FC<{ version: string; model: string; projectPath: string }> = ({ version, model, projectPath }) => {
@@ -35,53 +28,40 @@ const HeaderBox: React.FC<{ version: string; model: string; projectPath: string
35
28
  : projectPath;
36
29
 
37
30
  return (
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>
31
+ <Box flexDirection="row" marginX={1}>
32
+ <Text color="gray">v{version}</Text>
33
+ <Text color="gray"> | </Text>
34
+ <Text color="gray">Model: </Text><Text color="white">{model}</Text>
35
+ <Text color="gray"> | </Text>
36
+ <Text color="gray">Path: </Text><Text color="white">{relativePath}</Text>
53
37
  </Box>
54
38
  );
55
39
  };
56
40
 
57
41
  const Tips = () => {
58
42
  const tipsList = [
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."
43
+ "Use /clear to reset context.",
44
+ "Type /yolo for auto-approval.",
45
+ "Use /help for commands.",
46
+ "Bluehawks is context-aware."
64
47
  ];
65
48
  const [tip] = useState(() => tipsList[Math.floor(Math.random() * tipsList.length)]);
66
49
 
67
50
  return (
68
- <Box marginTop={1} marginBottom={1}>
69
- <Text color="gray">Tips: {tip}</Text>
51
+ <Box marginLeft={2}>
52
+ <Text color="gray" dimColor>Tip: {tip}</Text>
70
53
  </Box>
71
54
  );
72
55
  };
73
56
 
74
57
  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">
58
+ <Box marginTop={0} paddingX={1}>
76
59
  <Box flexGrow={1}>
77
- {/* Usage tips simplified as they are now at top when empty */}
78
- <Text color="gray">Type </Text>
79
- <Text color="cyan" bold>/help</Text>
80
- <Text color="gray"> for commands. </Text>
60
+ <Text color="gray" dimColor> /help for commands </Text>
81
61
  </Box>
82
62
  {isYoloMode && (
83
63
  <Box>
84
- <Text color="#F59E0B" bold>⚡ YOLO MODE ACTIVE </Text>
64
+ <Text color="#F59E0B" bold>⚡ YOLO</Text>
85
65
  </Box>
86
66
  )}
87
67
  </Box>
@@ -238,8 +218,8 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
238
218
  {
239
219
  role: 'system',
240
220
  content: newValue
241
- ? '⚡ YOLO mode enabled! All tools will auto-execute.'
242
- : '🛡️ YOLO mode disabled. Dangerous tools will require approval.',
221
+ ? '⚡ YOLO mode enabled.'
222
+ : '🛡️ YOLO mode disabled.',
243
223
  },
244
224
  ]);
245
225
  return newValue;
@@ -342,77 +322,61 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
342
322
  };
343
323
 
344
324
  return (
345
- <Box flexDirection="column" paddingX={2} paddingY={1}>
346
- {/* Branding & Header */}
347
- <Box flexDirection="row" alignItems="center" marginBottom={1}>
325
+ <Box flexDirection="column" paddingX={1} paddingY={0}>
326
+ {/* Branding & Header - Compact Row */}
327
+ <Box flexDirection="row" alignItems="center" marginBottom={0}>
348
328
  <Branding />
349
- <Box marginLeft={4}>
350
- <HeaderBox
351
- version={CLI_VERSION}
352
- model={apiClient.currentModel}
353
- projectPath={process.cwd()}
354
- />
355
- </Box>
329
+ <HeaderBox
330
+ version={CLI_VERSION}
331
+ model={apiClient.currentModel}
332
+ projectPath={process.cwd()}
333
+ />
334
+ </Box>
335
+ <Box marginBottom={1}>
336
+ {messages.length === 0 && <Tips />}
356
337
  </Box>
357
-
358
- {/* Tips only shown on start */}
359
- {messages.length === 0 && <Tips />}
360
338
 
361
339
  {/* Messages */}
362
- <Box flexDirection="column" flexGrow={1} marginBottom={1}>
363
- {messages.slice(-30).map((msg, i) => {
340
+ <Box flexDirection="column" flexGrow={1} marginBottom={0}>
341
+ {messages.slice(-50).map((msg, i) => {
364
342
  // Custom rendering for Tool messages (Boxed UI)
365
343
  if (msg.role === 'tool') {
366
344
  try {
367
345
  const content = JSON.parse(msg.content);
368
- if (content.type === 'tool_start') {
369
- // Smart JSON formatting: one line if short, indented if long
370
- const jsonStr = JSON.stringify(content.args);
371
- const displayArgs = jsonStr.length < 80 ? jsonStr : JSON.stringify(content.args, null, 2);
372
-
346
+ if (content.type === 'tool_end') {
373
347
  return (
374
- <Box key={i} flexDirection="column" borderStyle="round" borderColor="magenta" paddingX={1} marginY={0} marginBottom={1} alignSelf="flex-start">
375
- <Box>
376
- <Text color="magenta" bold>⚡ TOOL CALL: </Text>
377
- <Text color="white" bold>{content.name}</Text>
378
- </Box>
379
- <Box marginLeft={1}>
380
- <Text color="gray">{displayArgs}</Text>
381
- </Box>
382
- </Box>
383
- );
384
- } else if (content.type === 'tool_end') {
385
- return (
386
- <Box key={i} flexDirection="column" borderStyle="round" borderColor="green" paddingX={1} marginBottom={1} alignSelf="flex-start">
387
- <Box>
388
- <Text color="green" bold>✅ TOOL RESULT: </Text>
389
- <Text color="white" bold>{content.name}</Text>
390
- </Box>
391
- <Box marginLeft={1}>
392
- <Text color="gray">{content.result ? content.result.substring(0, 200) + (content.result.length > 200 ? '...' : '') : 'Completed'}</Text>
393
- </Box>
348
+ <Box key={i} flexDirection="row" marginBottom={0}>
349
+ <Text color="gray"> └─ </Text>
350
+ <Text color="green">✔ {content.name}</Text>
351
+ <Text color="gray" dimColor> {content.result ? `(${content.result.length} chars)` : ''}</Text>
394
352
  </Box>
395
353
  );
396
354
  }
355
+ return null; // Skip tool_start in history to reduce noise
397
356
  } catch {
398
- // Fallback for legacy plain text tool messages
399
- return (
400
- <Box key={i} marginBottom={1}>
401
- <Text color="gray">🔧 {msg.content}</Text>
402
- </Box>
403
- );
357
+ return <Box key={i}><Text color="gray">🔧 {msg.content}</Text></Box>;
404
358
  }
405
359
  }
406
360
 
407
- // Standard User/Assistant/System messages
361
+ // User Message
362
+ if (msg.role === 'user') {
363
+ return (
364
+ <Box key={i} marginTop={1} flexDirection="row">
365
+ <Text color={COLORS.primary} bold>❯ </Text>
366
+ <Text color="white">{msg.content}</Text>
367
+ </Box>
368
+ );
369
+ }
370
+
371
+ // Assistant/System Message
408
372
  return (
409
- <Box key={i} marginBottom={1} flexDirection="column">
410
- <Box>
373
+ <Box key={i} marginTop={0} marginBottom={0} flexDirection="column">
374
+ {msg.role !== 'assistant' && (
411
375
  <Text bold color={getRoleColor(msg.role)}>
412
- {msg.role === 'user' ? '👤 YOU ' : msg.role === 'assistant' ? '🦅 BLUEHAWKS ' : 'ℹ️ SYSTEM '}
376
+ {msg.role === 'error' ? ' ERROR' : 'ℹ️ SYSTEM'}
413
377
  </Text>
414
- </Box>
415
- <Box marginLeft={2}>
378
+ )}
379
+ <Box marginLeft={0}>
416
380
  <Text color="white">
417
381
  {msg.content}
418
382
  </Text>
@@ -423,66 +387,45 @@ export const App: React.FC<AppProps> = ({ initialPrompt, apiKey, yoloMode = fals
423
387
 
424
388
  {/* Streaming content */}
425
389
  {streamingContent && (
426
- <Box marginBottom={1} flexDirection="column">
427
- <Box>
428
- <Text bold color={COLORS.success}>🦅 BLUEHAWKS </Text>
429
- </Box>
430
- <Box marginLeft={2}>
390
+ <Box marginTop={0} flexDirection="column">
391
+ <Box marginLeft={0}>
431
392
  <Text color="white">{streamingContent}</Text>
432
393
  </Box>
433
394
  </Box>
434
395
  )}
435
396
 
436
- {/* Current tool - Only show if NO persistent start message was added yet (prevent partial dupes) */}
437
- {currentTool && !messages.some(m => m.role === 'tool' && m.content.includes(currentTool) && m.content.includes('tool_start')) && (
438
- <Box flexDirection="column" borderStyle="round" borderColor="magenta" paddingX={2} paddingY={1} marginY={1}>
439
- <Box>
440
- <Spinner type="dots" />
441
- <Text color="magenta" bold> TOOL CALL: </Text>
442
- <Text color="white" bold>{currentTool}</Text>
443
- </Box>
397
+ {/* Current tool - Minimal Spinner */}
398
+ {currentTool && (
399
+ <Box flexDirection="row" marginY={0}>
400
+ <Text color="magenta"> ├─ </Text>
401
+ <Spinner type="dots" />
402
+ <Text color="magenta"> Executing {currentTool}...</Text>
444
403
  </Box>
445
404
  )}
446
405
 
447
406
  {/* Approval prompt */}
448
407
  {pendingApproval && (
449
- <Box flexDirection="column" borderStyle="round" borderColor="yellow" padding={1} marginY={1}>
450
- <Text color={COLORS.warning} bold>
451
- ⚠️ ACTION REQUIRED: Tool Approval
452
- </Text>
453
- <Box marginY={1} paddingX={1} borderStyle="single" borderColor="gray">
454
- <Text color="white" bold>{pendingApproval.toolName}</Text>
455
- <Text color="gray">
456
- {"\n"}Args: {JSON.stringify(pendingApproval.args, null, 2).substring(0, 500)}
457
- </Text>
458
- </Box>
459
- <Box>
460
- <Text>Press </Text>
461
- <Text color="green" bold>Y</Text>
462
- <Text> to approve, </Text>
463
- <Text color="red" bold>N</Text>
464
- <Text> to deny</Text>
465
- </Box>
408
+ <Box flexDirection="column" borderStyle="round" borderColor="yellow" paddingX={1} marginTop={1}>
409
+ <Text color={COLORS.warning} bold>Action Required: {pendingApproval.toolName}</Text>
410
+ <Text color="white">Args: {JSON.stringify(pendingApproval.args).substring(0, 100)}...</Text>
411
+ <Text color="gray">[Y]es / [N]o</Text>
466
412
  </Box>
467
413
  )}
468
414
  </Box>
469
415
 
470
- {/* Input Area */}
416
+ {/* Input Area - Compact */}
471
417
  {!pendingApproval && (
472
- <Box flexDirection="column">
473
- <Box borderStyle="single" borderTop={true} borderBottom={false} borderLeft={false} borderRight={false} borderColor="gray" paddingTop={1}>
418
+ <Box flexDirection="column" marginTop={1}>
419
+ <Box>
474
420
  <Text color={COLORS.primary} bold>❯ </Text>
475
421
  {isProcessing ? (
476
- <Box>
477
- <Spinner type="simpleDotsScrolling" />
478
- <Text color={COLORS.muted}> Agent is thinking...</Text>
479
- </Box>
422
+ <Text color={COLORS.muted}>Thinking...</Text>
480
423
  ) : (
481
424
  <TextInput
482
425
  value={input}
483
426
  onChange={setInput}
484
427
  onSubmit={handleSubmit}
485
- placeholder="What's on your mind?"
428
+ placeholder="..."
486
429
  />
487
430
  )}
488
431
  </Box>
@@ -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.24';
13
+ export const CLI_VERSION = '1.0.26';
14
14
  export const CLI_DESCRIPTION = 'A production-ready multi-agent AI CLI assistant';
15
15
 
16
16
  // Configuration Paths
@@ -17,7 +17,7 @@ Version: ${CLI_VERSION}
17
17
 
18
18
  ## Core Capability & Behavior
19
19
  You are an expert software engineer and agentic coding assistant. You have access to a Linux environment and a suite of tools to accomplish complex tasks.
20
- - **Autonomy**: You are highly autonomous. You do not need to ask for permission for safe read-only operations (reading files, listing directories, searching).
20
+ - **Autonomy**: You are highly autonomous. You do not need to ask for permission for safe read-only operations.
21
21
  - **Proactive**: If you need information, fetch it. If you need to verify something, run a test.
22
22
  - **Thinking**: Before executing complex tasks, you SHOULD plan your approach step-by-step.
23
23
 
@@ -99,44 +99,56 @@ Parameters:
99
99
  4. **Error Handling**: Analyze errors (e.g., "File not found") and fix them.
100
100
 
101
101
  5. **Troubleshooting & Recovery (CRITICAL)**:
102
- - **File Not Found**: If \`read_file\` fails because the file doesn't exist, **DO NOT** just say "I can't find it". You **MUST** use \`find_files\` to search for it.
102
+ - **File Not Found**: If \`read_file\` fails, **DO NOT** give up. You **MUST** use \`find_files\` to search.
103
103
  - **Command Failed**: Read error output and retry with a fix.
104
+ - **Error Loops**: If stuck in an error loop, use \`search_web\` (if available) or \`fetch_url\` to find a solution rather than guessing.
104
105
 
105
106
  6. **File Search Strategy (CRITICAL)**:
106
- - If unsure of a file path, **ALWAYS** use \`find_files\` first.
107
- - **NEVER** guess a path like \`src/file.ts\` unless you have seen it.
107
+ - If unsure of a path, **ALWAYS** use \`find_files\` first.
108
+ - **NEVER** guess a path like \`src/file.ts\` unless seen in a directory listing.
108
109
 
109
110
  ## Advanced Capabilities
110
111
 
111
112
  ### 🧠 THINKING PROCESS
112
- - **Plan First**: For complex tasks, use a "Thinking" step to outline your approach before taking action.
113
- - **Reasoning**: Explain *why* you are taking a specific action if it's not obvious.
113
+ - **Plan First**: For complex tasks, use a "Thinking" step to outline your approach.
114
+ - **Reasoning**: Explain *why* you are taking a specific action.
115
+
116
+ ### � DEVELOPMENT WORKFLOW (Best Practice)
117
+ 1. **Analysis**: Clarify requirements. Don't proceed with ambiguous requests.
118
+ 2. **Frontend/Mock First**: If building a UI, create a mock version first to give the user an "Aha!" moment.
119
+ - Use mock data (don't hardcode logic yet).
120
+ - Ensure it looks and feels complete.
121
+ 3. **Backend Implementation**: Once UI is approved, implement the real backend logic.
122
+ 4. **Integration**: Replace mocks with real API calls.
123
+ 5. **Testing**: Verify functionality.
124
+
125
+ ### �️ ENVIRONMENT SAFETY
126
+ - **Secrets**: **NEVER** hardcode secrets, API keys, or full URLs in code.
127
+ - **.env Usage**: Always use \`.env\` files for sensitive configuration.
128
+ - **Port Discipline**: Respect existing port configurations (e.g., 3000 for frontend, 8001 for backend).
114
129
 
115
130
  ### 🔍 LINTING & VALIDATION
116
- - **Self-Correction**: After editing code, if a linter (e.g., \`eslint\`, \`ruff\`, \`tsc\`) is available in the project, you **SHOULD** run it to verify your changes.
117
- - **Fix Errors**: If validation fails, attempt to fix the errors immediately.
131
+ - **Self-Correction**: After editing code, run available linters (\`eslint\`, \`Start\`, \`tsc\`).
132
+ - **Fix Errors**: Attempt to fix validation errors immediately.
118
133
 
119
- ### 📦 BULK OPERATIONS MINDSET
120
- - **Efficiency**: When reading or writing multiple files, try to plan your actions efficiently. While you must execute tools sequentially, your *plan* should account for the whole batch.
121
- - **Context**: Read valid context (related files) before making changes to ensure consistency.
134
+ ### 🎨 UI/UX GUIDELINES
135
+ - **Aesthetic**: Aim for "Modern, Clean, Professional".
136
+ - **Patterns**: Use inline editing for simple tasks; modals for complex ones.
137
+ - **Feedback**: Ensure the app feels responsive.
122
138
 
123
- ### FILE HANDLING
124
- - **Creation Triggers**: Create files when:
125
- - Writing >10 lines of code.
126
- - User asks to "write a script/module/component".
127
- - User asks to "save" something.
128
- - **Content**: Always output full file content when creating.
129
- - **Encoding**: UTF-8.
139
+ ### 📦 BULK OPERATIONS MINDSET
140
+ - **Efficiency**: Plan batched file operations where possible.
141
+ - **Context**: Read all necessary context before editing.
130
142
 
131
143
  ### COPYRIGHT COMPLIANCE
132
- - **Strict Limit**: You must NOT quote more than 15 words from any single source.
133
- - **Paraphrase**: You MUST paraphrase content entirely in your own words.
134
- - **No Lyrics/Poems**: Do not reproduce lyrics or poems.
135
- - **Attribution**: Credit sources but do not copy them textually.
144
+ - **Strict Limit**: Max 15 words quoted from any single source.
145
+ - **Paraphrase**: Rewrite content in your own words.
146
+ - **Attribution**: Credit sources without copying text.
136
147
 
137
148
  ### COMMAND EXECUTION
138
149
  - **Forbidden**: Interactive commands (\`nano\`, \`vim\`, \`less\`).
139
- - **Forbidden**: Long-running daemons without background control.
150
+ - **Forbidden**: Long-running daemons in foreground.
151
+ - **Package Management**: Trust \`package.json\`. Use \`npm\` or \`yarn\` consistently.
140
152
 
141
153
  ### DYNAMIC CONTEXT
142
154
  - **Time**: ${today}