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.
Files changed (87) hide show
  1. package/DEVELOPMENT.md +240 -0
  2. package/LICENSE +21 -0
  3. package/README.md +443 -0
  4. package/config.example.json +28 -0
  5. package/dist/agent/context.d.ts +38 -0
  6. package/dist/agent/context.d.ts.map +1 -0
  7. package/dist/agent/context.js +131 -0
  8. package/dist/agent/context.js.map +1 -0
  9. package/dist/agent/index.d.ts +10 -0
  10. package/dist/agent/index.d.ts.map +1 -0
  11. package/dist/agent/index.js +54 -0
  12. package/dist/agent/index.js.map +1 -0
  13. package/dist/agent/loop.d.ts +40 -0
  14. package/dist/agent/loop.d.ts.map +1 -0
  15. package/dist/agent/loop.js +104 -0
  16. package/dist/agent/loop.js.map +1 -0
  17. package/dist/agent/subagent.d.ts +35 -0
  18. package/dist/agent/subagent.d.ts.map +1 -0
  19. package/dist/agent/subagent.js +96 -0
  20. package/dist/agent/subagent.js.map +1 -0
  21. package/dist/cli/commands/chat.d.ts +8 -0
  22. package/dist/cli/commands/chat.d.ts.map +1 -0
  23. package/dist/cli/commands/chat.js +161 -0
  24. package/dist/cli/commands/chat.js.map +1 -0
  25. package/dist/cli/commands/init.d.ts +6 -0
  26. package/dist/cli/commands/init.d.ts.map +1 -0
  27. package/dist/cli/commands/init.js +56 -0
  28. package/dist/cli/commands/init.js.map +1 -0
  29. package/dist/cli/commands/onboard.d.ts +6 -0
  30. package/dist/cli/commands/onboard.d.ts.map +1 -0
  31. package/dist/cli/commands/onboard.js +277 -0
  32. package/dist/cli/commands/onboard.js.map +1 -0
  33. package/dist/cli/commands/status.d.ts +6 -0
  34. package/dist/cli/commands/status.d.ts.map +1 -0
  35. package/dist/cli/commands/status.js +107 -0
  36. package/dist/cli/commands/status.js.map +1 -0
  37. package/dist/cli/index.d.ts +3 -0
  38. package/dist/cli/index.d.ts.map +1 -0
  39. package/dist/cli/index.js +49 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/config/manager.d.ts +43 -0
  42. package/dist/config/manager.d.ts.map +1 -0
  43. package/dist/config/manager.js +147 -0
  44. package/dist/config/manager.js.map +1 -0
  45. package/dist/config/schema.d.ts +179 -0
  46. package/dist/config/schema.d.ts.map +1 -0
  47. package/dist/config/schema.js +74 -0
  48. package/dist/config/schema.js.map +1 -0
  49. package/dist/providers/llm.d.ts +46 -0
  50. package/dist/providers/llm.d.ts.map +1 -0
  51. package/dist/providers/llm.js +175 -0
  52. package/dist/providers/llm.js.map +1 -0
  53. package/dist/skills/loader.d.ts +49 -0
  54. package/dist/skills/loader.d.ts.map +1 -0
  55. package/dist/skills/loader.js +218 -0
  56. package/dist/skills/loader.js.map +1 -0
  57. package/dist/tools/base.d.ts +42 -0
  58. package/dist/tools/base.d.ts.map +1 -0
  59. package/dist/tools/base.js +90 -0
  60. package/dist/tools/base.js.map +1 -0
  61. package/dist/tools/filesystem.d.ts +17 -0
  62. package/dist/tools/filesystem.d.ts.map +1 -0
  63. package/dist/tools/filesystem.js +117 -0
  64. package/dist/tools/filesystem.js.map +1 -0
  65. package/dist/tools/shell.d.ts +8 -0
  66. package/dist/tools/shell.d.ts.map +1 -0
  67. package/dist/tools/shell.js +79 -0
  68. package/dist/tools/shell.js.map +1 -0
  69. package/dist/tools/spawn.d.ts +8 -0
  70. package/dist/tools/spawn.d.ts.map +1 -0
  71. package/dist/tools/spawn.js +23 -0
  72. package/dist/tools/spawn.js.map +1 -0
  73. package/dist/tools/web.d.ts +8 -0
  74. package/dist/tools/web.d.ts.map +1 -0
  75. package/dist/tools/web.js +194 -0
  76. package/dist/tools/web.js.map +1 -0
  77. package/dist/types/index.d.ts +51 -0
  78. package/dist/types/index.d.ts.map +1 -0
  79. package/dist/types/index.js +6 -0
  80. package/dist/types/index.js.map +1 -0
  81. package/dist/workspace/manager.d.ts +38 -0
  82. package/dist/workspace/manager.d.ts.map +1 -0
  83. package/dist/workspace/manager.js +140 -0
  84. package/dist/workspace/manager.js.map +1 -0
  85. package/docs/ONBOARDING.md +229 -0
  86. package/docs/WEB_SEARCH.md +365 -0
  87. 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":"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"}
@@ -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,8 @@
1
+ import type { Tool } from '../types';
2
+ /**
3
+ * Spawn Subagent Tool
4
+ * Creates a background agent for complex tasks
5
+ * Implementation will be completed by SubagentManager
6
+ */
7
+ export declare const spawnSubagentTool: Tool;
8
+ //# sourceMappingURL=spawn.d.ts.map
@@ -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,6 @@
1
+ "use strict";
2
+ /**
3
+ * Shared TypeScript types for genieceo
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=index.js.map
@@ -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"}