@bluehawks/cli 1.0.2 → 1.0.3
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 +20 -0
- package/dist/config/constants.d.ts +1 -1
- package/dist/config/constants.js +1 -1
- package/dist/core/agents/orchestrator.d.ts +2 -0
- package/dist/core/agents/orchestrator.d.ts.map +1 -1
- package/dist/core/agents/orchestrator.js +19 -0
- package/dist/core/agents/orchestrator.js.map +1 -1
- package/package.json +1 -1
- package/src/config/constants.ts +1 -1
- package/src/core/agents/orchestrator.ts +20 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "session_1770634545815_jvwh0o",
|
|
3
|
+
"startTime": "2026-02-09T10:55:45.815Z",
|
|
4
|
+
"messages": [
|
|
5
|
+
{
|
|
6
|
+
"role": "user",
|
|
7
|
+
"content": "hi"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"role": "assistant",
|
|
11
|
+
"content": "Hello! How can I assist you today?"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"metadata": {
|
|
15
|
+
"projectPath": "/home/chandanv/Projects/bluehawks-cli",
|
|
16
|
+
"model": "Qwen/Qwen3-0.6B",
|
|
17
|
+
"tokensUsed": 0,
|
|
18
|
+
"toolsUsed": []
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export declare const API_BASE_URL = "https://api.bluehawks.ai/v1";
|
|
5
5
|
export declare const DEFAULT_MODEL = "Qwen/Qwen3-0.6B";
|
|
6
6
|
export declare const CLI_NAME = "bluehawks";
|
|
7
|
-
export declare const CLI_VERSION = "1.0.
|
|
7
|
+
export declare const CLI_VERSION = "1.0.3";
|
|
8
8
|
export declare const CLI_DESCRIPTION = "A production-ready multi-agent AI CLI assistant";
|
|
9
9
|
export declare const CONFIG_DIR_NAME = ".bluehawks";
|
|
10
10
|
export declare const SETTINGS_FILE = "settings.json";
|
package/dist/config/constants.js
CHANGED
|
@@ -6,7 +6,7 @@ export const API_BASE_URL = 'https://api.bluehawks.ai/v1';
|
|
|
6
6
|
export const DEFAULT_MODEL = 'Qwen/Qwen3-0.6B';
|
|
7
7
|
// CLI Metadata
|
|
8
8
|
export const CLI_NAME = 'bluehawks';
|
|
9
|
-
export const CLI_VERSION = '1.0.
|
|
9
|
+
export const CLI_VERSION = '1.0.3';
|
|
10
10
|
export const CLI_DESCRIPTION = 'A production-ready multi-agent AI CLI assistant';
|
|
11
11
|
// Configuration Paths
|
|
12
12
|
export const CONFIG_DIR_NAME = '.bluehawks';
|
|
@@ -29,11 +29,13 @@ export declare class Orchestrator {
|
|
|
29
29
|
private customSystemPrompt?;
|
|
30
30
|
private appendSystemPrompt?;
|
|
31
31
|
private contextContent;
|
|
32
|
+
private rootStructure;
|
|
32
33
|
private subAgents;
|
|
33
34
|
constructor(options: OrchestratorOptions);
|
|
34
35
|
private registerDefaultSubAgents;
|
|
35
36
|
initialize(): Promise<void>;
|
|
36
37
|
private loadContextFile;
|
|
38
|
+
private loadRootStructure;
|
|
37
39
|
private buildSystemPrompt;
|
|
38
40
|
chat(userMessage: string, _history?: Array<{
|
|
39
41
|
role: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/agents/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAKvD,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAwBD,qBAAa,YAAY;IACrB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAA0C;gBAE/C,OAAO,EAAE,mBAAmB;IAcxC,OAAO,CAAC,wBAAwB;IAmC1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/agents/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAKvD,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAwBD,qBAAa,YAAY;IACrB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,SAAS,CAA0C;gBAE/C,OAAO,EAAE,mBAAmB;IAcxC,OAAO,CAAC,wBAAwB;IAmC1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAOnB,eAAe;YASf,iBAAiB;IAa/B,OAAO,CAAC,iBAAiB;IA8BnB,IAAI,CACN,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAM,EACvD,SAAS,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KACtD,GACF,OAAO,CAAC,aAAa,CAAC;IAoBnB,WAAW,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KACtD,GACF,OAAO,CAAC,aAAa,CAAC;IAoBzB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,YAAY,IAAI,cAAc,EAAE;IAIhC,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;CAGjD"}
|
|
@@ -36,6 +36,7 @@ export class Orchestrator {
|
|
|
36
36
|
customSystemPrompt;
|
|
37
37
|
appendSystemPrompt;
|
|
38
38
|
contextContent = '';
|
|
39
|
+
rootStructure = '';
|
|
39
40
|
subAgents = new Map();
|
|
40
41
|
constructor(options) {
|
|
41
42
|
this.apiClient = options.apiClient;
|
|
@@ -83,6 +84,8 @@ export class Orchestrator {
|
|
|
83
84
|
async initialize() {
|
|
84
85
|
// Load context file if it exists
|
|
85
86
|
await this.loadContextFile();
|
|
87
|
+
// Load root directory structure
|
|
88
|
+
await this.loadRootStructure();
|
|
86
89
|
}
|
|
87
90
|
async loadContextFile() {
|
|
88
91
|
const contextPath = path.join(this.projectPath, CONTEXT_FILE);
|
|
@@ -93,6 +96,19 @@ export class Orchestrator {
|
|
|
93
96
|
this.contextContent = '';
|
|
94
97
|
}
|
|
95
98
|
}
|
|
99
|
+
async loadRootStructure() {
|
|
100
|
+
try {
|
|
101
|
+
const entries = await fs.readdir(this.projectPath, { withFileTypes: true });
|
|
102
|
+
const list = entries
|
|
103
|
+
.filter(e => !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')
|
|
104
|
+
.map(e => `${e.isDirectory() ? '📂' : '📄'} ${e.name}`)
|
|
105
|
+
.join('\n');
|
|
106
|
+
this.rootStructure = list;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
this.rootStructure = '';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
96
112
|
buildSystemPrompt() {
|
|
97
113
|
// Use custom system prompt if provided, otherwise default
|
|
98
114
|
let prompt = this.customSystemPrompt || DEFAULT_SYSTEM_PROMPT;
|
|
@@ -100,6 +116,9 @@ export class Orchestrator {
|
|
|
100
116
|
if (this.appendSystemPrompt) {
|
|
101
117
|
prompt += `\n\n${this.appendSystemPrompt}`;
|
|
102
118
|
}
|
|
119
|
+
if (this.rootStructure) {
|
|
120
|
+
prompt += `\n\n## Current Directory Structure\n${this.rootStructure}\n\nUse this context to understand the project structure and answer questions about the codebase. If the user asks about specific files, use read_file to examine them.`;
|
|
121
|
+
}
|
|
103
122
|
if (this.contextContent) {
|
|
104
123
|
prompt += `\n\n## Project Context (from ${CONTEXT_FILE})\n\n${this.contextContent}`;
|
|
105
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/agents/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,EAAsB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAmBlC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;uDAoByB,CAAC;AAExD,MAAM,OAAO,YAAY;IACb,SAAS,CAAY;IACrB,YAAY,CAAe;IAC3B,WAAW,CAAS;IACpB,QAAQ,CAAU;IAClB,QAAQ,CAAS;IACjB,kBAAkB,CAAU;IAC5B,kBAAkB,CAAU;IAC5B,cAAc,GAAW,EAAE,CAAC;IAC5B,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3D,YAAY,OAA4B;QACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAErD,8BAA8B;QAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAGO,wBAAwB;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2CAA2C;YACxD,YAAY,EAAE;;;;0CAIgB;YAC9B,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE;YAC7B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,mDAAmD;YAChE,YAAY,EAAE;;;;+BAIK;YACnB,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC;SACnF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,gDAAgD;YAC7D,YAAY,EAAE;;;;0BAIA;YACd,KAAK,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;SAC5E,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,iCAAiC;QACjC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/agents/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,EAAsB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAmBlC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;uDAoByB,CAAC;AAExD,MAAM,OAAO,YAAY;IACb,SAAS,CAAY;IACrB,YAAY,CAAe;IAC3B,WAAW,CAAS;IACpB,QAAQ,CAAU;IAClB,QAAQ,CAAS;IACjB,kBAAkB,CAAU;IAC5B,kBAAkB,CAAU;IAC5B,cAAc,GAAW,EAAE,CAAC;IAC5B,aAAa,GAAW,EAAE,CAAC;IAC3B,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3D,YAAY,OAA4B;QACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAErD,8BAA8B;QAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAGO,wBAAwB;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2CAA2C;YACxD,YAAY,EAAE;;;;0CAIgB;YAC9B,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE;YAC7B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,mDAAmD;YAChE,YAAY,EAAE;;;;+BAIK;YACnB,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC;SACnF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,gDAAgD;YAC7D,YAAY,EAAE;;;;0BAIA;YACd,KAAK,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;SAC5E,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,iCAAiC;QACjC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,gCAAgC;QAChC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,GAAG,OAAO;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;iBACtD,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,iBAAiB;QACrB,0DAA0D;QAC1D,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,IAAI,qBAAqB,CAAC;QAE9D,+CAA+C;QAC/C,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,IAAI,uCAAuC,IAAI,CAAC,aAAa,yKAAyK,CAAC;QACjP,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,IAAI,gCAAgC,YAAY,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;QACxF,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI;;;;;;yCAMmB,CAAC;QAClC,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CACN,WAAmB,EACnB,WAAqD,EAAE,EACvD,SAIC;QAED,MAAM,SAAS,GAAG,IAAI,KAAK,CACvB;YACI,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACtC,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC/B,EACD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,CACpB,CAAC;QAGF,OAAO,SAAS,CAAC,GAAG,CAChB,WAAW,EACX,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,SAAS,CACvB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CACb,SAAiB,EACjB,IAAY,EACZ,SAIC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CACnB;YACI,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,EAAE;SACpB,EACD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,CACpB,CAAC;QAEF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7F,CAAC;IAED,WAAW,CAAC,OAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB,CAAC,MAAsB;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;CACJ"}
|
package/package.json
CHANGED
package/src/config/constants.ts
CHANGED
|
@@ -8,7 +8,7 @@ export const DEFAULT_MODEL = 'Qwen/Qwen3-0.6B';
|
|
|
8
8
|
|
|
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.3';
|
|
12
12
|
export const CLI_DESCRIPTION = 'A production-ready multi-agent AI CLI assistant';
|
|
13
13
|
|
|
14
14
|
// Configuration Paths
|
|
@@ -58,6 +58,7 @@ export class Orchestrator {
|
|
|
58
58
|
private customSystemPrompt?: string;
|
|
59
59
|
private appendSystemPrompt?: string;
|
|
60
60
|
private contextContent: string = '';
|
|
61
|
+
private rootStructure: string = '';
|
|
61
62
|
private subAgents: Map<string, SubAgentConfig> = new Map();
|
|
62
63
|
|
|
63
64
|
constructor(options: OrchestratorOptions) {
|
|
@@ -112,6 +113,8 @@ export class Orchestrator {
|
|
|
112
113
|
async initialize(): Promise<void> {
|
|
113
114
|
// Load context file if it exists
|
|
114
115
|
await this.loadContextFile();
|
|
116
|
+
// Load root directory structure
|
|
117
|
+
await this.loadRootStructure();
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
private async loadContextFile(): Promise<void> {
|
|
@@ -123,6 +126,19 @@ export class Orchestrator {
|
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
|
|
129
|
+
private async loadRootStructure(): Promise<void> {
|
|
130
|
+
try {
|
|
131
|
+
const entries = await fs.readdir(this.projectPath, { withFileTypes: true });
|
|
132
|
+
const list = entries
|
|
133
|
+
.filter(e => !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')
|
|
134
|
+
.map(e => `${e.isDirectory() ? '📂' : '📄'} ${e.name}`)
|
|
135
|
+
.join('\n');
|
|
136
|
+
this.rootStructure = list;
|
|
137
|
+
} catch {
|
|
138
|
+
this.rootStructure = '';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
126
142
|
private buildSystemPrompt(): string {
|
|
127
143
|
// Use custom system prompt if provided, otherwise default
|
|
128
144
|
let prompt = this.customSystemPrompt || DEFAULT_SYSTEM_PROMPT;
|
|
@@ -132,6 +148,10 @@ export class Orchestrator {
|
|
|
132
148
|
prompt += `\n\n${this.appendSystemPrompt}`;
|
|
133
149
|
}
|
|
134
150
|
|
|
151
|
+
if (this.rootStructure) {
|
|
152
|
+
prompt += `\n\n## Current Directory Structure\n${this.rootStructure}\n\nUse this context to understand the project structure and answer questions about the codebase. If the user asks about specific files, use read_file to examine them.`;
|
|
153
|
+
}
|
|
154
|
+
|
|
135
155
|
if (this.contextContent) {
|
|
136
156
|
prompt += `\n\n## Project Context (from ${CONTEXT_FILE})\n\n${this.contextContent}`;
|
|
137
157
|
}
|