genieceo 0.1.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/DEVELOPMENT.md +240 -0
- package/LICENSE +21 -0
- package/README.md +443 -0
- package/config.example.json +28 -0
- package/dist/agent/context.d.ts +38 -0
- package/dist/agent/context.d.ts.map +1 -0
- package/dist/agent/context.js +131 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/index.d.ts +10 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +54 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/loop.d.ts +40 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +104 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/subagent.d.ts +35 -0
- package/dist/agent/subagent.d.ts.map +1 -0
- package/dist/agent/subagent.js +96 -0
- package/dist/agent/subagent.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +8 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +161 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +56 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +6 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -0
- package/dist/cli/commands/onboard.js +277 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +107 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +49 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/manager.d.ts +43 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +147 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/schema.d.ts +179 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +74 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/providers/llm.d.ts +46 -0
- package/dist/providers/llm.d.ts.map +1 -0
- package/dist/providers/llm.js +175 -0
- package/dist/providers/llm.js.map +1 -0
- package/dist/skills/loader.d.ts +49 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +218 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/tools/base.d.ts +42 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +90 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/filesystem.d.ts +17 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +117 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/shell.d.ts +8 -0
- package/dist/tools/shell.d.ts.map +1 -0
- package/dist/tools/shell.js +79 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/tools/spawn.d.ts +8 -0
- package/dist/tools/spawn.d.ts.map +1 -0
- package/dist/tools/spawn.js +23 -0
- package/dist/tools/spawn.js.map +1 -0
- package/dist/tools/web.d.ts +8 -0
- package/dist/tools/web.d.ts.map +1 -0
- package/dist/tools/web.js +194 -0
- package/dist/tools/web.js.map +1 -0
- package/dist/types/index.d.ts +51 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/workspace/manager.d.ts +38 -0
- package/dist/workspace/manager.d.ts.map +1 -0
- package/dist/workspace/manager.js +140 -0
- package/dist/workspace/manager.js.map +1 -0
- package/docs/ONBOARDING.md +229 -0
- package/docs/WEB_SEARCH.md +365 -0
- package/package.json +38 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Tool } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Read File Tool
|
|
4
|
+
* Reads content from a file
|
|
5
|
+
*/
|
|
6
|
+
export declare const readFileTool: Tool;
|
|
7
|
+
/**
|
|
8
|
+
* Write File Tool
|
|
9
|
+
* Writes content to a file (creates directories if needed)
|
|
10
|
+
*/
|
|
11
|
+
export declare const writeFileTool: Tool;
|
|
12
|
+
/**
|
|
13
|
+
* List Directory Tool
|
|
14
|
+
* Lists contents of a directory
|
|
15
|
+
*/
|
|
16
|
+
export declare const listDirTool: Tool;
|
|
17
|
+
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,IAuB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,IA+B3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,IA0CzB,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listDirTool = exports.writeFileTool = exports.readFileTool = void 0;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
/**
|
|
9
|
+
* Read File Tool
|
|
10
|
+
* Reads content from a file
|
|
11
|
+
*/
|
|
12
|
+
exports.readFileTool = {
|
|
13
|
+
name: 'readFile',
|
|
14
|
+
description: 'Read the contents of a file. Provide the file path relative to the workspace files directory or an absolute path.',
|
|
15
|
+
parameters: zod_1.z.object({
|
|
16
|
+
path: zod_1.z.string().describe('Path to the file to read'),
|
|
17
|
+
encoding: zod_1.z.enum(['utf-8', 'base64']).default('utf-8').optional().describe('File encoding (default: utf-8)'),
|
|
18
|
+
}),
|
|
19
|
+
execute: async (params) => {
|
|
20
|
+
try {
|
|
21
|
+
const content = await (0, promises_1.readFile)(params.path, params.encoding || 'utf-8');
|
|
22
|
+
return {
|
|
23
|
+
success: true,
|
|
24
|
+
content: content.toString(),
|
|
25
|
+
path: params.path,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return {
|
|
30
|
+
success: false,
|
|
31
|
+
error: error instanceof Error ? error.message : String(error),
|
|
32
|
+
path: params.path,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Write File Tool
|
|
39
|
+
* Writes content to a file (creates directories if needed)
|
|
40
|
+
*/
|
|
41
|
+
exports.writeFileTool = {
|
|
42
|
+
name: 'writeFile',
|
|
43
|
+
description: 'Write content to a file. Creates the file if it doesn\'t exist, overwrites if it does. Creates parent directories as needed.',
|
|
44
|
+
parameters: zod_1.z.object({
|
|
45
|
+
path: zod_1.z.string().describe('Path to the file to write'),
|
|
46
|
+
content: zod_1.z.string().describe('Content to write to the file'),
|
|
47
|
+
encoding: zod_1.z.enum(['utf-8', 'base64']).default('utf-8').optional().describe('File encoding (default: utf-8)'),
|
|
48
|
+
}),
|
|
49
|
+
execute: async (params) => {
|
|
50
|
+
try {
|
|
51
|
+
// Ensure parent directory exists
|
|
52
|
+
const dir = (0, path_1.dirname)(params.path);
|
|
53
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
54
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
55
|
+
}
|
|
56
|
+
await (0, promises_1.writeFile)(params.path, params.content, params.encoding || 'utf-8');
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
path: params.path,
|
|
60
|
+
bytes: Buffer.byteLength(params.content, params.encoding || 'utf-8'),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
error: error instanceof Error ? error.message : String(error),
|
|
67
|
+
path: params.path,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* List Directory Tool
|
|
74
|
+
* Lists contents of a directory
|
|
75
|
+
*/
|
|
76
|
+
exports.listDirTool = {
|
|
77
|
+
name: 'listDir',
|
|
78
|
+
description: 'List the contents of a directory. Returns files and subdirectories.',
|
|
79
|
+
parameters: zod_1.z.object({
|
|
80
|
+
path: zod_1.z.string().describe('Path to the directory to list'),
|
|
81
|
+
includeHidden: zod_1.z.boolean().default(false).optional().describe('Include hidden files (starting with .) (default: false)'),
|
|
82
|
+
}),
|
|
83
|
+
execute: async (params) => {
|
|
84
|
+
try {
|
|
85
|
+
const entries = await (0, promises_1.readdir)(params.path, { withFileTypes: true });
|
|
86
|
+
const files = [];
|
|
87
|
+
const directories = [];
|
|
88
|
+
for (const entry of entries) {
|
|
89
|
+
// Skip hidden files if not requested
|
|
90
|
+
if (!params.includeHidden && entry.name.startsWith('.')) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (entry.isDirectory()) {
|
|
94
|
+
directories.push(entry.name);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
files.push(entry.name);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
path: params.path,
|
|
103
|
+
files: files.sort(),
|
|
104
|
+
directories: directories.sort(),
|
|
105
|
+
total: files.length + directories.length,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
return {
|
|
110
|
+
success: false,
|
|
111
|
+
error: error instanceof Error ? error.message : String(error),
|
|
112
|
+
path: params.path,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":";;;AAAA,0CAA+F;AAC/F,6BAAwB;AACxB,+BAA8C;AAC9C,2BAAgC;AAGhC;;;GAGG;AACU,QAAA,YAAY,GAAS;IAChC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,mHAAmH;IAChI,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACrD,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC7G,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAuD,EAAE,EAAE;QACzE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;;GAGG;AACU,QAAA,aAAa,GAAS;IACjC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,8HAA8H;IAC3I,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACtD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC5D,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC7G,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAwE,EAAE,EAAE;QAC1F,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,IAAA,oBAAW,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;YAE3E,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC;aACrE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;;GAGG;AACU,QAAA,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,qEAAqE;IAClF,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC1D,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;KACzH,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAiD,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpE,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,qCAAqC;gBACrC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxD,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gBACnB,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;gBAC/B,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;aACzC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Tool } from '../types';
|
|
2
|
+
import type { Config } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Execute Command Tool
|
|
5
|
+
* Executes shell commands with safety checks
|
|
6
|
+
*/
|
|
7
|
+
export declare function createExecuteCommandTool(config: Config): Tool;
|
|
8
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA4BvC;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA6C7D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createExecuteCommandTool = createExecuteCommandTool;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
8
|
+
/**
|
|
9
|
+
* Dangerous command patterns to block
|
|
10
|
+
*/
|
|
11
|
+
const DANGEROUS_PATTERNS = [
|
|
12
|
+
/rm\s+-rf\s+\/[^\/\s]*/, // rm -rf /...
|
|
13
|
+
/rm\s+-rf\s+~\/?$/, // rm -rf ~
|
|
14
|
+
/rm\s+-rf\s+\*$/, // rm -rf *
|
|
15
|
+
/:\(\)\{\s*:\|\:&\s*\};:/, // fork bomb
|
|
16
|
+
/mkfs/, // format disk
|
|
17
|
+
/dd\s+if=.*\s+of=\/dev/, // overwrite disk
|
|
18
|
+
/>\s*\/dev\/sd[a-z]/, // write to disk device
|
|
19
|
+
/chmod\s+-R\s+777\s+\//, // chmod 777 on root
|
|
20
|
+
/sudo\s+rm/, // sudo rm
|
|
21
|
+
/curl.*\|\s*sh/, // curl | sh
|
|
22
|
+
/wget.*\|\s*sh/, // wget | sh
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Check if a command is dangerous
|
|
26
|
+
*/
|
|
27
|
+
function isDangerous(command) {
|
|
28
|
+
return DANGEROUS_PATTERNS.some(pattern => pattern.test(command));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Execute Command Tool
|
|
32
|
+
* Executes shell commands with safety checks
|
|
33
|
+
*/
|
|
34
|
+
function createExecuteCommandTool(config) {
|
|
35
|
+
return {
|
|
36
|
+
name: 'executeCommand',
|
|
37
|
+
description: 'Execute a shell command. The command runs in the workspace files directory by default. Returns stdout, stderr, and exit code.',
|
|
38
|
+
parameters: zod_1.z.object({
|
|
39
|
+
command: zod_1.z.string().describe('The shell command to execute'),
|
|
40
|
+
workingDir: zod_1.z.string().optional().describe('Working directory (default: workspace files directory)'),
|
|
41
|
+
}),
|
|
42
|
+
execute: async (params) => {
|
|
43
|
+
try {
|
|
44
|
+
// Safety check: block dangerous commands
|
|
45
|
+
if (!config.tools.shell.allowDangerous && isDangerous(params.command)) {
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
error: 'Command blocked: potentially dangerous operation detected',
|
|
49
|
+
command: params.command,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Execute command with timeout
|
|
53
|
+
const { stdout, stderr } = await execAsync(params.command, {
|
|
54
|
+
cwd: params.workingDir || config.workspace + '/files',
|
|
55
|
+
timeout: config.tools.shell.timeout,
|
|
56
|
+
maxBuffer: 1024 * 1024 * 10, // 10MB
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
success: true,
|
|
60
|
+
command: params.command,
|
|
61
|
+
stdout: stdout.trim(),
|
|
62
|
+
stderr: stderr.trim(),
|
|
63
|
+
workingDir: params.workingDir || config.workspace + '/files',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
command: params.command,
|
|
70
|
+
error: error.message || String(error),
|
|
71
|
+
stdout: error.stdout?.trim() || '',
|
|
72
|
+
stderr: error.stderr?.trim() || '',
|
|
73
|
+
exitCode: error.code,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":";;AAoCA,4DA6CC;AAjFD,iDAAqC;AACrC,+BAAiC;AACjC,6BAAwB;AAIxB,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACzB,uBAAuB,EAAG,cAAc;IACxC,kBAAkB,EAAS,WAAW;IACtC,gBAAgB,EAAW,WAAW;IACtC,yBAAyB,EAAE,YAAY;IACvC,MAAM,EAAsB,cAAc;IAC1C,uBAAuB,EAAI,iBAAiB;IAC5C,oBAAoB,EAAO,uBAAuB;IAClD,uBAAuB,EAAI,oBAAoB;IAC/C,WAAW,EAAiB,UAAU;IACtC,eAAe,EAAa,YAAY;IACxC,eAAe,EAAa,YAAY;CACzC,CAAC;AAEF;;GAEG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,MAAc;IACrD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,+HAA+H;QAC5I,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC5D,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;SACrG,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAgD,EAAE,EAAE;YAClE,IAAI,CAAC;gBACH,yCAAyC;gBACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtE,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,2DAA2D;wBAClE,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB,CAAC;gBACJ,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;oBACzD,GAAG,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ;oBACrD,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;oBACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,OAAO;iBACrC,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ;iBAC7D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;oBACrC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;oBAClC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;oBAClC,QAAQ,EAAE,KAAK,CAAC,IAAI;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/tools/spawn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAY/B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.spawnSubagentTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* Spawn Subagent Tool
|
|
7
|
+
* Creates a background agent for complex tasks
|
|
8
|
+
* Implementation will be completed by SubagentManager
|
|
9
|
+
*/
|
|
10
|
+
exports.spawnSubagentTool = {
|
|
11
|
+
name: 'spawnSubagent',
|
|
12
|
+
description: 'Spawn a background subagent to handle a complex task independently. The subagent will work on the task and report back when complete. Use this for tasks that can be done in parallel or require focused attention.',
|
|
13
|
+
parameters: zod_1.z.object({
|
|
14
|
+
task: zod_1.z.string().describe('Clear description of the task for the subagent to complete'),
|
|
15
|
+
context: zod_1.z.string().optional().describe('Additional context or information the subagent needs'),
|
|
16
|
+
}),
|
|
17
|
+
execute: async (params) => {
|
|
18
|
+
// This will be implemented by SubagentManager
|
|
19
|
+
// For now, return a placeholder
|
|
20
|
+
throw new Error('spawnSubagent tool needs to be initialized with SubagentManager');
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/tools/spawn.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGxB;;;;GAIG;AACU,QAAA,iBAAiB,GAAS;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,qNAAqN;IAClO,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACvF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;KAChG,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAA0C,EAAE,EAAE;QAC5D,8CAA8C;QAC9C,gCAAgC;QAChC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Tool } from '../types';
|
|
2
|
+
import type { Config } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Web Search Tool
|
|
5
|
+
* Supports multiple search providers: Brave, Tavily, and browser-based search
|
|
6
|
+
*/
|
|
7
|
+
export declare function createWebSearchTool(config: Config): Tool;
|
|
8
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/tools/web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAqExD"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWebSearchTool = createWebSearchTool;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* Web Search Tool
|
|
7
|
+
* Supports multiple search providers: Brave, Tavily, and browser-based search
|
|
8
|
+
*/
|
|
9
|
+
function createWebSearchTool(config) {
|
|
10
|
+
return {
|
|
11
|
+
name: 'webSearch',
|
|
12
|
+
description: 'Search the web using configured provider (Brave, Tavily, or browser). Returns relevant web pages with titles, URLs, and snippets.',
|
|
13
|
+
parameters: zod_1.z.object({
|
|
14
|
+
query: zod_1.z.string().describe('Search query'),
|
|
15
|
+
count: zod_1.z.number().int().min(1).max(20).default(5).optional().describe('Number of results to return (default: 5, max: 20)'),
|
|
16
|
+
}),
|
|
17
|
+
execute: async (params) => {
|
|
18
|
+
const provider = config.tools.webSearch.provider || 'auto';
|
|
19
|
+
const count = params.count || 5;
|
|
20
|
+
// Auto mode: try providers in order based on availability
|
|
21
|
+
if (provider === 'auto') {
|
|
22
|
+
// Try Tavily first (if configured)
|
|
23
|
+
if (config.tools.webSearch.tavily?.apiKey) {
|
|
24
|
+
try {
|
|
25
|
+
return await searchWithTavily(config, params.query, count);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.warn('Tavily search failed, trying next provider:', error);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Try Brave (if configured)
|
|
32
|
+
if (config.tools.webSearch.brave?.apiKey) {
|
|
33
|
+
try {
|
|
34
|
+
return await searchWithBrave(config, params.query, count);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.warn('Brave search failed, trying next provider:', error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Try browser as last resort
|
|
41
|
+
try {
|
|
42
|
+
return await searchWithBrowser(config, params.query, count);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
error: 'All search providers failed. Please configure at least one search provider (Tavily or Brave) or ensure browser is available.',
|
|
48
|
+
query: params.query,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Specific provider mode
|
|
53
|
+
try {
|
|
54
|
+
switch (provider) {
|
|
55
|
+
case 'brave':
|
|
56
|
+
return await searchWithBrave(config, params.query, count);
|
|
57
|
+
case 'tavily':
|
|
58
|
+
return await searchWithTavily(config, params.query, count);
|
|
59
|
+
case 'browser':
|
|
60
|
+
return await searchWithBrowser(config, params.query, count);
|
|
61
|
+
default:
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
error: `Unknown search provider: ${provider}. Valid options: brave, tavily, browser, auto`,
|
|
65
|
+
query: params.query,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
error: error instanceof Error ? error.message : String(error),
|
|
73
|
+
query: params.query,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Search using Brave Search API
|
|
81
|
+
*/
|
|
82
|
+
async function searchWithBrave(config, query, count) {
|
|
83
|
+
const apiKey = config.tools.webSearch.brave?.apiKey;
|
|
84
|
+
if (!apiKey) {
|
|
85
|
+
throw new Error('Brave Search API key not configured. Add tools.webSearch.brave.apiKey to your config file.');
|
|
86
|
+
}
|
|
87
|
+
const url = `https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(query)}&count=${count}`;
|
|
88
|
+
const response = await fetch(url, {
|
|
89
|
+
headers: {
|
|
90
|
+
'Accept': 'application/json',
|
|
91
|
+
'Accept-Encoding': 'gzip',
|
|
92
|
+
'X-Subscription-Token': apiKey,
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`Brave Search API error: ${response.status} ${response.statusText}`);
|
|
97
|
+
}
|
|
98
|
+
const data = await response.json();
|
|
99
|
+
// Extract web results
|
|
100
|
+
const results = (data.web?.results || []).map((result) => ({
|
|
101
|
+
title: result.title,
|
|
102
|
+
url: result.url,
|
|
103
|
+
snippet: result.description,
|
|
104
|
+
}));
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
provider: 'brave',
|
|
108
|
+
query,
|
|
109
|
+
results,
|
|
110
|
+
total: results.length,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Search using Tavily API
|
|
115
|
+
*/
|
|
116
|
+
async function searchWithTavily(config, query, count) {
|
|
117
|
+
const apiKey = config.tools.webSearch.tavily?.apiKey;
|
|
118
|
+
if (!apiKey) {
|
|
119
|
+
throw new Error('Tavily API key not configured. Add tools.webSearch.tavily.apiKey to your config file.');
|
|
120
|
+
}
|
|
121
|
+
const response = await fetch('https://api.tavily.com/search', {
|
|
122
|
+
method: 'POST',
|
|
123
|
+
headers: {
|
|
124
|
+
'Content-Type': 'application/json',
|
|
125
|
+
},
|
|
126
|
+
body: JSON.stringify({
|
|
127
|
+
api_key: apiKey,
|
|
128
|
+
query: query,
|
|
129
|
+
max_results: count,
|
|
130
|
+
search_depth: 'basic',
|
|
131
|
+
include_answer: false,
|
|
132
|
+
}),
|
|
133
|
+
});
|
|
134
|
+
if (!response.ok) {
|
|
135
|
+
throw new Error(`Tavily API error: ${response.status} ${response.statusText}`);
|
|
136
|
+
}
|
|
137
|
+
const data = await response.json();
|
|
138
|
+
// Extract results
|
|
139
|
+
const results = (data.results || []).map((result) => ({
|
|
140
|
+
title: result.title,
|
|
141
|
+
url: result.url,
|
|
142
|
+
snippet: result.content,
|
|
143
|
+
}));
|
|
144
|
+
return {
|
|
145
|
+
success: true,
|
|
146
|
+
provider: 'tavily',
|
|
147
|
+
query,
|
|
148
|
+
results,
|
|
149
|
+
total: results.length,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Search using browser (fallback method)
|
|
154
|
+
* Uses a simple DuckDuckGo HTML scraping approach as fallback
|
|
155
|
+
*/
|
|
156
|
+
async function searchWithBrowser(config, query, count) {
|
|
157
|
+
// Use DuckDuckGo HTML as a free fallback
|
|
158
|
+
const url = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
|
|
159
|
+
const response = await fetch(url, {
|
|
160
|
+
headers: {
|
|
161
|
+
'User-Agent': 'Mozilla/5.0 (compatible; genieceo/1.0)',
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
if (!response.ok) {
|
|
165
|
+
throw new Error(`Browser search error: ${response.status} ${response.statusText}`);
|
|
166
|
+
}
|
|
167
|
+
const html = await response.text();
|
|
168
|
+
// Parse DuckDuckGo HTML results (simple regex-based extraction)
|
|
169
|
+
const results = [];
|
|
170
|
+
// Match result blocks in DuckDuckGo HTML
|
|
171
|
+
const resultRegex = /<a[^>]*class="result__a"[^>]*href="([^"]*)"[^>]*>([^<]*)<\/a>[\s\S]*?<a[^>]*class="result__snippet"[^>]*>([^<]*)</g;
|
|
172
|
+
let match;
|
|
173
|
+
let resultCount = 0;
|
|
174
|
+
while ((match = resultRegex.exec(html)) !== null && resultCount < count) {
|
|
175
|
+
const [, url, title, snippet] = match;
|
|
176
|
+
if (url && title) {
|
|
177
|
+
results.push({
|
|
178
|
+
url: url.startsWith('http') ? url : `https://duckduckgo.com${url}`,
|
|
179
|
+
title: title.trim(),
|
|
180
|
+
snippet: snippet?.trim() || '',
|
|
181
|
+
});
|
|
182
|
+
resultCount++;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
success: true,
|
|
187
|
+
provider: 'browser',
|
|
188
|
+
query,
|
|
189
|
+
results,
|
|
190
|
+
total: results.length,
|
|
191
|
+
note: 'Using browser-based fallback search (DuckDuckGo). For better results, configure Tavily or Brave API.',
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/tools/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TypeScript types for genieceo
|
|
3
|
+
*/
|
|
4
|
+
export interface Config {
|
|
5
|
+
workspace: string;
|
|
6
|
+
model: string;
|
|
7
|
+
maxIterations: number;
|
|
8
|
+
llm: {
|
|
9
|
+
openai: {
|
|
10
|
+
apiKey: string;
|
|
11
|
+
};
|
|
12
|
+
anthropic?: {
|
|
13
|
+
apiKey: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
tools: {
|
|
17
|
+
webSearch: {
|
|
18
|
+
provider?: 'auto' | 'brave' | 'tavily' | 'browser';
|
|
19
|
+
brave?: {
|
|
20
|
+
apiKey: string;
|
|
21
|
+
};
|
|
22
|
+
tavily?: {
|
|
23
|
+
apiKey: string;
|
|
24
|
+
};
|
|
25
|
+
apiKey?: string;
|
|
26
|
+
};
|
|
27
|
+
shell: {
|
|
28
|
+
timeout: number;
|
|
29
|
+
allowDangerous: boolean;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface Skill {
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
content: string;
|
|
37
|
+
metadata?: {
|
|
38
|
+
always?: boolean;
|
|
39
|
+
requires?: {
|
|
40
|
+
bins?: string[];
|
|
41
|
+
config?: string[];
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface Tool {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
parameters: any;
|
|
49
|
+
execute(params: any): Promise<any>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE;QACH,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE;YACT,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;YACnD,KAAK,CAAC,EAAE;gBACN,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;YACF,MAAM,CAAC,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;YAEF,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,KAAK,EAAE;YACL,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,EAAE,OAAO,CAAC;SACzB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Manager
|
|
3
|
+
* Handles initialization and management of the workspace directory
|
|
4
|
+
*/
|
|
5
|
+
export declare class WorkspaceManager {
|
|
6
|
+
private workspacePath;
|
|
7
|
+
constructor(workspacePath?: string);
|
|
8
|
+
/**
|
|
9
|
+
* Initialize workspace with directory structure
|
|
10
|
+
*/
|
|
11
|
+
init(): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Get workspace root path
|
|
14
|
+
*/
|
|
15
|
+
getWorkspacePath(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Get custom skills directory path
|
|
18
|
+
*/
|
|
19
|
+
getSkillsPath(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get working files directory path
|
|
22
|
+
*/
|
|
23
|
+
getFilesPath(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get AGENTS.md path
|
|
26
|
+
*/
|
|
27
|
+
getAgentsFilePath(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Check if workspace is initialized
|
|
30
|
+
*/
|
|
31
|
+
isInitialized(): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Get default AGENTS.md content
|
|
34
|
+
*/
|
|
35
|
+
private getDefaultAgentsContent;
|
|
36
|
+
}
|
|
37
|
+
export declare function getWorkspaceManager(workspacePath?: string): WorkspaceManager;
|
|
38
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/workspace/manager.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,CAAC,EAAE,MAAM;IAIlC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAWvC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA0ChC;AAKD,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAK5E"}
|