@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.
- package/.bluehawks/history.json +8 -8
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +23 -26
- package/dist/cli/app.js.map +1 -1
- package/dist/config/constants.d.ts +1 -1
- package/dist/config/constants.js +1 -1
- package/dist/core/agents/prompts.d.ts.map +1 -1
- package/dist/core/agents/prompts.js +35 -23
- package/dist/core/agents/prompts.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/app.tsx +71 -128
- package/src/config/constants.ts +1 -1
- package/src/core/agents/prompts.ts +35 -23
package/.bluehawks/history.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"id": "
|
|
3
|
-
"startTime": "2026-02-
|
|
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
|
|
7
|
+
"content": "what are the content of client.ts?"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"role": "assistant",
|
|
11
|
-
"content": "I'll check the
|
|
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
|
-
"
|
|
20
|
-
"
|
|
19
|
+
"find_files",
|
|
20
|
+
"read_file"
|
|
21
21
|
],
|
|
22
22
|
"successfulToolCalls": 2,
|
|
23
23
|
"failedToolCalls": 0,
|
|
24
|
-
"apiTime":
|
|
25
|
-
"toolTime":
|
|
24
|
+
"apiTime": 19943,
|
|
25
|
+
"toolTime": 19
|
|
26
26
|
}
|
|
27
27
|
}
|
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;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 {
|
|
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(
|
|
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 (
|
|
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
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"Bluehawks
|
|
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, {
|
|
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:
|
|
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
|
|
158
|
-
: '🛡️ YOLO mode disabled.
|
|
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:
|
|
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 === '
|
|
258
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
273
|
-
|
|
274
|
-
|
|
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
|
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.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";
|
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.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,
|
|
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
|
|
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
|
|
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
|
|
104
|
-
- **NEVER** guess a path like \`src/file.ts\` unless
|
|
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
|
|
110
|
-
- **Reasoning**: Explain *why* you are taking a specific action
|
|
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,
|
|
114
|
-
- **Fix Errors**:
|
|
128
|
+
- **Self-Correction**: After editing code, run available linters (\`eslint\`, \`Start\`, \`tsc\`).
|
|
129
|
+
- **Fix Errors**: Attempt to fix validation errors immediately.
|
|
115
130
|
|
|
116
|
-
###
|
|
117
|
-
- **
|
|
118
|
-
- **
|
|
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
|
-
###
|
|
121
|
-
- **
|
|
122
|
-
|
|
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**:
|
|
130
|
-
- **Paraphrase**:
|
|
131
|
-
- **
|
|
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
|
|
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
|
|
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
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
|
-
<
|
|
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
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"Bluehawks
|
|
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
|
|
69
|
-
<Text color="gray">
|
|
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={
|
|
58
|
+
<Box marginTop={0} paddingX={1}>
|
|
76
59
|
<Box flexGrow={1}>
|
|
77
|
-
|
|
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
|
|
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
|
|
242
|
-
: '🛡️ YOLO mode disabled.
|
|
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={
|
|
346
|
-
{/* Branding & Header */}
|
|
347
|
-
<Box flexDirection="row" alignItems="center" marginBottom={
|
|
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
|
-
<
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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={
|
|
363
|
-
{messages.slice(-
|
|
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 === '
|
|
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="
|
|
375
|
-
<
|
|
376
|
-
|
|
377
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
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={
|
|
410
|
-
|
|
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 === '
|
|
376
|
+
{msg.role === 'error' ? '❌ ERROR' : 'ℹ️ SYSTEM'}
|
|
413
377
|
</Text>
|
|
414
|
-
|
|
415
|
-
<Box marginLeft={
|
|
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
|
|
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 -
|
|
437
|
-
{currentTool &&
|
|
438
|
-
<Box flexDirection="
|
|
439
|
-
<
|
|
440
|
-
|
|
441
|
-
|
|
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"
|
|
450
|
-
<Text color={COLORS.warning} bold>
|
|
451
|
-
|
|
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
|
|
418
|
+
<Box flexDirection="column" marginTop={1}>
|
|
419
|
+
<Box>
|
|
474
420
|
<Text color={COLORS.primary} bold>❯ </Text>
|
|
475
421
|
{isProcessing ? (
|
|
476
|
-
<
|
|
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="
|
|
428
|
+
placeholder="..."
|
|
486
429
|
/>
|
|
487
430
|
)}
|
|
488
431
|
</Box>
|
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.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
|
|
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
|
|
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
|
|
107
|
-
- **NEVER** guess a path like \`src/file.ts\` unless
|
|
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
|
|
113
|
-
- **Reasoning**: Explain *why* you are taking a specific action
|
|
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,
|
|
117
|
-
- **Fix Errors**:
|
|
131
|
+
- **Self-Correction**: After editing code, run available linters (\`eslint\`, \`Start\`, \`tsc\`).
|
|
132
|
+
- **Fix Errors**: Attempt to fix validation errors immediately.
|
|
118
133
|
|
|
119
|
-
###
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
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
|
-
###
|
|
124
|
-
- **
|
|
125
|
-
|
|
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**:
|
|
133
|
-
- **Paraphrase**:
|
|
134
|
-
- **
|
|
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
|
|
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}
|