@bluehawks/cli 1.0.0
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/.eslintrc.json +36 -0
- package/.prettierrc +8 -0
- package/README.md +288 -0
- package/dist/cli/app.d.ts +12 -0
- package/dist/cli/app.d.ts.map +1 -0
- package/dist/cli/app.js +201 -0
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/commands/index.d.ts +56 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +201 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/config/constants.d.ts +32 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +39 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +56 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +28 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/settings.d.ts +20 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +102 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/core/agents/agent.d.ts +33 -0
- package/dist/core/agents/agent.d.ts.map +1 -0
- package/dist/core/agents/agent.js +156 -0
- package/dist/core/agents/agent.js.map +1 -0
- package/dist/core/agents/index.d.ts +3 -0
- package/dist/core/agents/index.d.ts.map +1 -0
- package/dist/core/agents/index.js +3 -0
- package/dist/core/agents/index.js.map +1 -0
- package/dist/core/agents/orchestrator.d.ts +56 -0
- package/dist/core/agents/orchestrator.d.ts.map +1 -0
- package/dist/core/agents/orchestrator.js +151 -0
- package/dist/core/agents/orchestrator.js.map +1 -0
- package/dist/core/api/client.d.ts +46 -0
- package/dist/core/api/client.d.ts.map +1 -0
- package/dist/core/api/client.js +223 -0
- package/dist/core/api/client.js.map +1 -0
- package/dist/core/api/index.d.ts +3 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/index.js +3 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/types.d.ts +126 -0
- package/dist/core/api/types.d.ts.map +1 -0
- package/dist/core/api/types.js +16 -0
- package/dist/core/api/types.js.map +1 -0
- package/dist/core/hooks/index.d.ts +3 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/hooks/index.js +3 -0
- package/dist/core/hooks/index.js.map +1 -0
- package/dist/core/hooks/manager.d.ts +43 -0
- package/dist/core/hooks/manager.d.ts.map +1 -0
- package/dist/core/hooks/manager.js +178 -0
- package/dist/core/hooks/manager.js.map +1 -0
- package/dist/core/hooks/types.d.ts +68 -0
- package/dist/core/hooks/types.d.ts.map +1 -0
- package/dist/core/hooks/types.js +6 -0
- package/dist/core/hooks/types.js.map +1 -0
- package/dist/core/mcp/client.d.ts +48 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/index.d.ts +3 -0
- package/dist/core/mcp/index.d.ts.map +1 -0
- package/dist/core/mcp/index.js +3 -0
- package/dist/core/mcp/index.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +46 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +133 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/plugins/index.d.ts +3 -0
- package/dist/core/plugins/index.d.ts.map +1 -0
- package/dist/core/plugins/index.js +3 -0
- package/dist/core/plugins/index.js.map +1 -0
- package/dist/core/plugins/loader.d.ts +63 -0
- package/dist/core/plugins/loader.d.ts.map +1 -0
- package/dist/core/plugins/loader.js +258 -0
- package/dist/core/plugins/loader.js.map +1 -0
- package/dist/core/plugins/types.d.ts +95 -0
- package/dist/core/plugins/types.d.ts.map +1 -0
- package/dist/core/plugins/types.js +6 -0
- package/dist/core/plugins/types.js.map +1 -0
- package/dist/core/session/index.d.ts +3 -0
- package/dist/core/session/index.d.ts.map +1 -0
- package/dist/core/session/index.js +3 -0
- package/dist/core/session/index.js.map +1 -0
- package/dist/core/session/manager.d.ts +57 -0
- package/dist/core/session/manager.d.ts.map +1 -0
- package/dist/core/session/manager.js +182 -0
- package/dist/core/session/manager.js.map +1 -0
- package/dist/core/session/storage.d.ts +42 -0
- package/dist/core/session/storage.d.ts.map +1 -0
- package/dist/core/session/storage.js +138 -0
- package/dist/core/session/storage.js.map +1 -0
- package/dist/core/tools/definitions/file.d.ts +6 -0
- package/dist/core/tools/definitions/file.d.ts.map +1 -0
- package/dist/core/tools/definitions/file.js +276 -0
- package/dist/core/tools/definitions/file.js.map +1 -0
- package/dist/core/tools/definitions/git.d.ts +6 -0
- package/dist/core/tools/definitions/git.d.ts.map +1 -0
- package/dist/core/tools/definitions/git.js +294 -0
- package/dist/core/tools/definitions/git.js.map +1 -0
- package/dist/core/tools/definitions/index.d.ts +11 -0
- package/dist/core/tools/definitions/index.d.ts.map +1 -0
- package/dist/core/tools/definitions/index.js +22 -0
- package/dist/core/tools/definitions/index.js.map +1 -0
- package/dist/core/tools/definitions/search.d.ts +6 -0
- package/dist/core/tools/definitions/search.d.ts.map +1 -0
- package/dist/core/tools/definitions/search.js +223 -0
- package/dist/core/tools/definitions/search.js.map +1 -0
- package/dist/core/tools/definitions/shell.d.ts +6 -0
- package/dist/core/tools/definitions/shell.d.ts.map +1 -0
- package/dist/core/tools/definitions/shell.js +190 -0
- package/dist/core/tools/definitions/shell.js.map +1 -0
- package/dist/core/tools/definitions/web.d.ts +6 -0
- package/dist/core/tools/definitions/web.d.ts.map +1 -0
- package/dist/core/tools/definitions/web.js +104 -0
- package/dist/core/tools/definitions/web.js.map +1 -0
- package/dist/core/tools/executor.d.ts +24 -0
- package/dist/core/tools/executor.d.ts.map +1 -0
- package/dist/core/tools/executor.js +111 -0
- package/dist/core/tools/executor.js.map +1 -0
- package/dist/core/tools/index.d.ts +4 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +4 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/registry.d.ts +23 -0
- package/dist/core/tools/registry.d.ts.map +1 -0
- package/dist/core/tools/registry.js +28 -0
- package/dist/core/tools/registry.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +352 -0
- package/dist/index.js.map +1 -0
- package/package.json +62 -0
- package/src/cli/app.tsx +319 -0
- package/src/cli/commands/index.ts +261 -0
- package/src/config/constants.ts +45 -0
- package/src/config/index.ts +3 -0
- package/src/config/schema.ts +36 -0
- package/src/config/settings.ts +121 -0
- package/src/core/agents/agent.ts +205 -0
- package/src/core/agents/index.ts +2 -0
- package/src/core/agents/orchestrator.ts +223 -0
- package/src/core/api/client.ts +300 -0
- package/src/core/api/index.ts +2 -0
- package/src/core/api/types.ts +149 -0
- package/src/core/hooks/index.ts +2 -0
- package/src/core/hooks/manager.ts +212 -0
- package/src/core/hooks/types.ts +116 -0
- package/src/core/mcp/client.ts +198 -0
- package/src/core/mcp/index.ts +2 -0
- package/src/core/mcp/manager.ts +153 -0
- package/src/core/plugins/index.ts +2 -0
- package/src/core/plugins/loader.ts +312 -0
- package/src/core/plugins/types.ts +111 -0
- package/src/core/session/index.ts +2 -0
- package/src/core/session/manager.ts +246 -0
- package/src/core/session/storage.ts +184 -0
- package/src/core/tools/definitions/file.ts +312 -0
- package/src/core/tools/definitions/git.ts +326 -0
- package/src/core/tools/definitions/index.ts +24 -0
- package/src/core/tools/definitions/search.ts +266 -0
- package/src/core/tools/definitions/shell.ts +228 -0
- package/src/core/tools/definitions/web.ts +113 -0
- package/src/core/tools/executor.ts +145 -0
- package/src/core/tools/index.ts +3 -0
- package/src/core/tools/registry.ts +44 -0
- package/src/index.ts +407 -0
- package/tsconfig.json +40 -0
- package/vitest.config.ts +13 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bluehawks CLI - Session Storage
|
|
3
|
+
* Manages named sessions and session history
|
|
4
|
+
*/
|
|
5
|
+
export interface StoredSession {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
startTime: string;
|
|
9
|
+
lastAccessTime: string;
|
|
10
|
+
projectPath: string;
|
|
11
|
+
model: string;
|
|
12
|
+
messageCount: number;
|
|
13
|
+
preview: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SessionIndex {
|
|
16
|
+
lastSessionId: string | null;
|
|
17
|
+
sessions: Record<string, StoredSession>;
|
|
18
|
+
}
|
|
19
|
+
export declare class SessionStorage {
|
|
20
|
+
private indexPath;
|
|
21
|
+
private sessionsDir;
|
|
22
|
+
constructor();
|
|
23
|
+
ensureDir(): Promise<void>;
|
|
24
|
+
getIndex(): Promise<SessionIndex>;
|
|
25
|
+
saveIndex(index: SessionIndex): Promise<void>;
|
|
26
|
+
saveSession(sessionId: string, name: string | null, data: unknown, metadata: {
|
|
27
|
+
projectPath: string;
|
|
28
|
+
model: string;
|
|
29
|
+
messageCount: number;
|
|
30
|
+
preview: string;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
loadSession(sessionIdOrName: string): Promise<unknown | null>;
|
|
33
|
+
loadLastSession(): Promise<{
|
|
34
|
+
id: string;
|
|
35
|
+
data: unknown;
|
|
36
|
+
} | null>;
|
|
37
|
+
listSessions(limit?: number): Promise<StoredSession[]>;
|
|
38
|
+
deleteSession(sessionIdOrName: string): Promise<boolean>;
|
|
39
|
+
renameSession(sessionIdOrName: string, newName: string): Promise<boolean>;
|
|
40
|
+
}
|
|
41
|
+
export declare const sessionStorage: SessionStorage;
|
|
42
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/core/session/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC3C;AAKD,qBAAa,cAAc;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;;IAOtB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IASjC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,WAAW,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GACxF,OAAO,CAAC,IAAI,CAAC;IAyBV,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IA2B7D,eAAe,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAUhE,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAOlD,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BxD,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAuBlF;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bluehawks CLI - Session Storage
|
|
3
|
+
* Manages named sessions and session history
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'node:fs/promises';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import * as os from 'node:os';
|
|
8
|
+
const SESSIONS_DIR = path.join(os.homedir(), '.bluehawks', 'sessions');
|
|
9
|
+
const INDEX_FILE = 'index.json';
|
|
10
|
+
export class SessionStorage {
|
|
11
|
+
indexPath;
|
|
12
|
+
sessionsDir;
|
|
13
|
+
constructor() {
|
|
14
|
+
this.sessionsDir = SESSIONS_DIR;
|
|
15
|
+
this.indexPath = path.join(SESSIONS_DIR, INDEX_FILE);
|
|
16
|
+
}
|
|
17
|
+
async ensureDir() {
|
|
18
|
+
await fs.mkdir(this.sessionsDir, { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
async getIndex() {
|
|
21
|
+
try {
|
|
22
|
+
const content = await fs.readFile(this.indexPath, 'utf-8');
|
|
23
|
+
return JSON.parse(content);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return { lastSessionId: null, sessions: {} };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async saveIndex(index) {
|
|
30
|
+
await this.ensureDir();
|
|
31
|
+
await fs.writeFile(this.indexPath, JSON.stringify(index, null, 2));
|
|
32
|
+
}
|
|
33
|
+
async saveSession(sessionId, name, data, metadata) {
|
|
34
|
+
await this.ensureDir();
|
|
35
|
+
// Save session data
|
|
36
|
+
const sessionFile = path.join(this.sessionsDir, `${sessionId}.json`);
|
|
37
|
+
await fs.writeFile(sessionFile, JSON.stringify(data, null, 2));
|
|
38
|
+
// Update index
|
|
39
|
+
const index = await this.getIndex();
|
|
40
|
+
const storedSession = {
|
|
41
|
+
id: sessionId,
|
|
42
|
+
name: name || sessionId,
|
|
43
|
+
startTime: index.sessions[sessionId]?.startTime || new Date().toISOString(),
|
|
44
|
+
lastAccessTime: new Date().toISOString(),
|
|
45
|
+
projectPath: metadata.projectPath,
|
|
46
|
+
model: metadata.model,
|
|
47
|
+
messageCount: metadata.messageCount,
|
|
48
|
+
preview: metadata.preview,
|
|
49
|
+
};
|
|
50
|
+
index.sessions[sessionId] = storedSession;
|
|
51
|
+
index.lastSessionId = sessionId;
|
|
52
|
+
await this.saveIndex(index);
|
|
53
|
+
}
|
|
54
|
+
async loadSession(sessionIdOrName) {
|
|
55
|
+
const index = await this.getIndex();
|
|
56
|
+
// Try to find by ID first
|
|
57
|
+
let sessionId = sessionIdOrName;
|
|
58
|
+
// If not found by ID, search by name
|
|
59
|
+
if (!index.sessions[sessionIdOrName]) {
|
|
60
|
+
const found = Object.values(index.sessions).find((s) => s.name.toLowerCase() === sessionIdOrName.toLowerCase());
|
|
61
|
+
if (found) {
|
|
62
|
+
sessionId = found.id;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const sessionFile = path.join(this.sessionsDir, `${sessionId}.json`);
|
|
70
|
+
const content = await fs.readFile(sessionFile, 'utf-8');
|
|
71
|
+
return JSON.parse(content);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async loadLastSession() {
|
|
78
|
+
const index = await this.getIndex();
|
|
79
|
+
if (!index.lastSessionId) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const data = await this.loadSession(index.lastSessionId);
|
|
83
|
+
return data ? { id: index.lastSessionId, data } : null;
|
|
84
|
+
}
|
|
85
|
+
async listSessions(limit = 10) {
|
|
86
|
+
const index = await this.getIndex();
|
|
87
|
+
return Object.values(index.sessions)
|
|
88
|
+
.sort((a, b) => new Date(b.lastAccessTime).getTime() - new Date(a.lastAccessTime).getTime())
|
|
89
|
+
.slice(0, limit);
|
|
90
|
+
}
|
|
91
|
+
async deleteSession(sessionIdOrName) {
|
|
92
|
+
const index = await this.getIndex();
|
|
93
|
+
let sessionId = sessionIdOrName;
|
|
94
|
+
if (!index.sessions[sessionIdOrName]) {
|
|
95
|
+
const found = Object.values(index.sessions).find((s) => s.name.toLowerCase() === sessionIdOrName.toLowerCase());
|
|
96
|
+
if (found) {
|
|
97
|
+
sessionId = found.id;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const sessionFile = path.join(this.sessionsDir, `${sessionId}.json`);
|
|
105
|
+
await fs.unlink(sessionFile);
|
|
106
|
+
delete index.sessions[sessionId];
|
|
107
|
+
if (index.lastSessionId === sessionId) {
|
|
108
|
+
index.lastSessionId = null;
|
|
109
|
+
}
|
|
110
|
+
await this.saveIndex(index);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async renameSession(sessionIdOrName, newName) {
|
|
118
|
+
const index = await this.getIndex();
|
|
119
|
+
let sessionId = sessionIdOrName;
|
|
120
|
+
if (!index.sessions[sessionIdOrName]) {
|
|
121
|
+
const found = Object.values(index.sessions).find((s) => s.name.toLowerCase() === sessionIdOrName.toLowerCase());
|
|
122
|
+
if (found) {
|
|
123
|
+
sessionId = found.id;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (index.sessions[sessionId]) {
|
|
130
|
+
index.sessions[sessionId].name = newName;
|
|
131
|
+
await this.saveIndex(index);
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export const sessionStorage = new SessionStorage();
|
|
138
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/core/session/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/definitions/file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6SH,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bluehawks CLI - File System Tools
|
|
3
|
+
* Tools for reading, writing, and editing files
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'node:fs/promises';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import { toolRegistry } from '../registry.js';
|
|
8
|
+
import { MAX_FILE_SIZE_BYTES } from '../../../config/constants.js';
|
|
9
|
+
// Read File Tool
|
|
10
|
+
const readFileTool = {
|
|
11
|
+
name: 'read_file',
|
|
12
|
+
safeToAutoRun: true,
|
|
13
|
+
definition: {
|
|
14
|
+
type: 'function',
|
|
15
|
+
function: {
|
|
16
|
+
name: 'read_file',
|
|
17
|
+
description: 'Read the contents of a file. Use this to understand code, configuration, or any text file.',
|
|
18
|
+
parameters: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
path: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'The absolute or relative path to the file to read.',
|
|
24
|
+
},
|
|
25
|
+
start_line: {
|
|
26
|
+
type: 'number',
|
|
27
|
+
description: 'Optional. The starting line number (1-indexed) to read from.',
|
|
28
|
+
},
|
|
29
|
+
end_line: {
|
|
30
|
+
type: 'number',
|
|
31
|
+
description: 'Optional. The ending line number (1-indexed) to read to.',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
required: ['path'],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
async execute(args) {
|
|
39
|
+
const filePath = args.path;
|
|
40
|
+
const startLine = args.start_line;
|
|
41
|
+
const endLine = args.end_line;
|
|
42
|
+
const absolutePath = path.resolve(process.cwd(), filePath);
|
|
43
|
+
// Check if file exists
|
|
44
|
+
try {
|
|
45
|
+
await fs.access(absolutePath);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw new Error(`File not found: ${filePath}`);
|
|
49
|
+
}
|
|
50
|
+
// Check file size
|
|
51
|
+
const stats = await fs.stat(absolutePath);
|
|
52
|
+
if (stats.size > MAX_FILE_SIZE_BYTES) {
|
|
53
|
+
throw new Error(`File too large: ${stats.size} bytes (max: ${MAX_FILE_SIZE_BYTES})`);
|
|
54
|
+
}
|
|
55
|
+
let content = await fs.readFile(absolutePath, 'utf-8');
|
|
56
|
+
// Handle line range if specified
|
|
57
|
+
if (startLine !== undefined || endLine !== undefined) {
|
|
58
|
+
const lines = content.split('\n');
|
|
59
|
+
const start = Math.max(1, startLine || 1) - 1;
|
|
60
|
+
const end = Math.min(lines.length, endLine || lines.length);
|
|
61
|
+
content = lines.slice(start, end).join('\n');
|
|
62
|
+
}
|
|
63
|
+
return content;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
// Write File Tool
|
|
67
|
+
const writeFileTool = {
|
|
68
|
+
name: 'write_file',
|
|
69
|
+
safeToAutoRun: false,
|
|
70
|
+
definition: {
|
|
71
|
+
type: 'function',
|
|
72
|
+
function: {
|
|
73
|
+
name: 'write_file',
|
|
74
|
+
description: 'Write content to a file. Creates the file if it does not exist, or overwrites if it does.',
|
|
75
|
+
parameters: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
path: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'The absolute or relative path to the file to write.',
|
|
81
|
+
},
|
|
82
|
+
content: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
description: 'The content to write to the file.',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ['path', 'content'],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
async execute(args) {
|
|
92
|
+
const filePath = args.path;
|
|
93
|
+
const content = args.content;
|
|
94
|
+
const absolutePath = path.resolve(process.cwd(), filePath);
|
|
95
|
+
// Create directory if it doesn't exist
|
|
96
|
+
const dir = path.dirname(absolutePath);
|
|
97
|
+
await fs.mkdir(dir, { recursive: true });
|
|
98
|
+
await fs.writeFile(absolutePath, content, 'utf-8');
|
|
99
|
+
return `Successfully wrote ${content.length} characters to ${filePath}`;
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
// Edit File Tool
|
|
103
|
+
const editFileTool = {
|
|
104
|
+
name: 'edit_file',
|
|
105
|
+
safeToAutoRun: false,
|
|
106
|
+
definition: {
|
|
107
|
+
type: 'function',
|
|
108
|
+
function: {
|
|
109
|
+
name: 'edit_file',
|
|
110
|
+
description: 'Edit a file by replacing specific content. Use this to make targeted changes to existing files.',
|
|
111
|
+
parameters: {
|
|
112
|
+
type: 'object',
|
|
113
|
+
properties: {
|
|
114
|
+
path: {
|
|
115
|
+
type: 'string',
|
|
116
|
+
description: 'The absolute or relative path to the file to edit.',
|
|
117
|
+
},
|
|
118
|
+
old_content: {
|
|
119
|
+
type: 'string',
|
|
120
|
+
description: 'The exact content to find and replace.',
|
|
121
|
+
},
|
|
122
|
+
new_content: {
|
|
123
|
+
type: 'string',
|
|
124
|
+
description: 'The new content to replace with.',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
required: ['path', 'old_content', 'new_content'],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
async execute(args) {
|
|
132
|
+
const filePath = args.path;
|
|
133
|
+
const oldContent = args.old_content;
|
|
134
|
+
const newContent = args.new_content;
|
|
135
|
+
const absolutePath = path.resolve(process.cwd(), filePath);
|
|
136
|
+
// Read current content
|
|
137
|
+
const content = await fs.readFile(absolutePath, 'utf-8');
|
|
138
|
+
// Check if old content exists
|
|
139
|
+
if (!content.includes(oldContent)) {
|
|
140
|
+
throw new Error(`Could not find the specified content to replace in ${filePath}`);
|
|
141
|
+
}
|
|
142
|
+
// Replace content
|
|
143
|
+
const newFileContent = content.replace(oldContent, newContent);
|
|
144
|
+
// Write back
|
|
145
|
+
await fs.writeFile(absolutePath, newFileContent, 'utf-8');
|
|
146
|
+
return `Successfully edited ${filePath}`;
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
// List Directory Tool
|
|
150
|
+
const listDirTool = {
|
|
151
|
+
name: 'list_directory',
|
|
152
|
+
safeToAutoRun: true,
|
|
153
|
+
definition: {
|
|
154
|
+
type: 'function',
|
|
155
|
+
function: {
|
|
156
|
+
name: 'list_directory',
|
|
157
|
+
description: 'List the contents of a directory, including files and subdirectories.',
|
|
158
|
+
parameters: {
|
|
159
|
+
type: 'object',
|
|
160
|
+
properties: {
|
|
161
|
+
path: {
|
|
162
|
+
type: 'string',
|
|
163
|
+
description: 'The absolute or relative path to the directory to list.',
|
|
164
|
+
},
|
|
165
|
+
recursive: {
|
|
166
|
+
type: 'boolean',
|
|
167
|
+
description: 'Whether to list recursively. Default is false.',
|
|
168
|
+
},
|
|
169
|
+
max_depth: {
|
|
170
|
+
type: 'number',
|
|
171
|
+
description: 'Maximum depth to recurse. Default is 3.',
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
required: ['path'],
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
async execute(args) {
|
|
179
|
+
const dirPath = args.path;
|
|
180
|
+
const recursive = args.recursive ?? false;
|
|
181
|
+
const maxDepth = args.max_depth ?? 3;
|
|
182
|
+
const absolutePath = path.resolve(process.cwd(), dirPath);
|
|
183
|
+
async function listDir(dir, depth) {
|
|
184
|
+
if (depth > maxDepth)
|
|
185
|
+
return [];
|
|
186
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
187
|
+
const results = [];
|
|
188
|
+
for (const entry of entries) {
|
|
189
|
+
// Skip hidden files and common excludes
|
|
190
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules')
|
|
191
|
+
continue;
|
|
192
|
+
const relativePath = path.relative(absolutePath, path.join(dir, entry.name));
|
|
193
|
+
const prefix = entry.isDirectory() ? '📁 ' : '📄 ';
|
|
194
|
+
results.push(prefix + relativePath);
|
|
195
|
+
if (recursive && entry.isDirectory()) {
|
|
196
|
+
const subEntries = await listDir(path.join(dir, entry.name), depth + 1);
|
|
197
|
+
results.push(...subEntries);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return results;
|
|
201
|
+
}
|
|
202
|
+
const entries = await listDir(absolutePath, 0);
|
|
203
|
+
return entries.length > 0 ? entries.join('\n') : 'Directory is empty';
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
// Create Directory Tool
|
|
207
|
+
const createDirTool = {
|
|
208
|
+
name: 'create_directory',
|
|
209
|
+
safeToAutoRun: false,
|
|
210
|
+
definition: {
|
|
211
|
+
type: 'function',
|
|
212
|
+
function: {
|
|
213
|
+
name: 'create_directory',
|
|
214
|
+
description: 'Create a new directory, including any necessary parent directories.',
|
|
215
|
+
parameters: {
|
|
216
|
+
type: 'object',
|
|
217
|
+
properties: {
|
|
218
|
+
path: {
|
|
219
|
+
type: 'string',
|
|
220
|
+
description: 'The absolute or relative path of the directory to create.',
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
required: ['path'],
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
async execute(args) {
|
|
228
|
+
const dirPath = args.path;
|
|
229
|
+
const absolutePath = path.resolve(process.cwd(), dirPath);
|
|
230
|
+
await fs.mkdir(absolutePath, { recursive: true });
|
|
231
|
+
return `Successfully created directory: ${dirPath}`;
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
// Delete File Tool
|
|
235
|
+
const deleteFileTool = {
|
|
236
|
+
name: 'delete_file',
|
|
237
|
+
safeToAutoRun: false,
|
|
238
|
+
definition: {
|
|
239
|
+
type: 'function',
|
|
240
|
+
function: {
|
|
241
|
+
name: 'delete_file',
|
|
242
|
+
description: 'Delete a file or directory.',
|
|
243
|
+
parameters: {
|
|
244
|
+
type: 'object',
|
|
245
|
+
properties: {
|
|
246
|
+
path: {
|
|
247
|
+
type: 'string',
|
|
248
|
+
description: 'The absolute or relative path to delete.',
|
|
249
|
+
},
|
|
250
|
+
recursive: {
|
|
251
|
+
type: 'boolean',
|
|
252
|
+
description: 'If true, recursively delete directories. Default is false.',
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
required: ['path'],
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
async execute(args) {
|
|
260
|
+
const filePath = args.path;
|
|
261
|
+
const recursive = args.recursive ?? false;
|
|
262
|
+
const absolutePath = path.resolve(process.cwd(), filePath);
|
|
263
|
+
await fs.rm(absolutePath, { recursive, force: false });
|
|
264
|
+
return `Successfully deleted: ${filePath}`;
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
// Register all file tools
|
|
268
|
+
export function registerFileTools() {
|
|
269
|
+
toolRegistry.register(readFileTool);
|
|
270
|
+
toolRegistry.register(writeFileTool);
|
|
271
|
+
toolRegistry.register(editFileTool);
|
|
272
|
+
toolRegistry.register(listDirTool);
|
|
273
|
+
toolRegistry.register(createDirTool);
|
|
274
|
+
toolRegistry.register(deleteFileTool);
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/core/tools/definitions/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/definitions/git.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2TH,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC"}
|