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,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.statusCommand = statusCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const manager_1 = require("../../config/manager");
|
|
9
|
+
const manager_2 = require("../../workspace/manager");
|
|
10
|
+
const fs_1 = require("fs");
|
|
11
|
+
/**
|
|
12
|
+
* Status command
|
|
13
|
+
* Shows configuration and workspace status
|
|
14
|
+
*/
|
|
15
|
+
async function statusCommand() {
|
|
16
|
+
console.log(chalk_1.default.blue.bold('\n📊 genieceo Status\n'));
|
|
17
|
+
try {
|
|
18
|
+
// Config status
|
|
19
|
+
const configManager = (0, manager_1.getConfigManager)();
|
|
20
|
+
const configPath = configManager.getConfigPath();
|
|
21
|
+
const configExists = (0, fs_1.existsSync)(configPath);
|
|
22
|
+
console.log(chalk_1.default.bold('Configuration:'));
|
|
23
|
+
console.log(` Location: ${configPath}`);
|
|
24
|
+
console.log(` Status: ${configExists ? chalk_1.default.green('✓ Exists') : chalk_1.default.red('✗ Not found')}`);
|
|
25
|
+
if (configExists) {
|
|
26
|
+
const config = await configManager.load();
|
|
27
|
+
console.log(` Model: ${config.model}`);
|
|
28
|
+
console.log(` Max Iterations: ${config.maxIterations}`);
|
|
29
|
+
// API key status (masked)
|
|
30
|
+
const openaiKey = config.llm.openai.apiKey;
|
|
31
|
+
const hasOpenAI = openaiKey && openaiKey.length > 0;
|
|
32
|
+
console.log(` OpenAI API Key: ${hasOpenAI ? chalk_1.default.green('✓ Set') : chalk_1.default.red('✗ Not set')}`);
|
|
33
|
+
if (hasOpenAI) {
|
|
34
|
+
const masked = openaiKey.substring(0, 8) + '...' + openaiKey.substring(openaiKey.length - 4);
|
|
35
|
+
console.log(chalk_1.default.gray(` (${masked})`));
|
|
36
|
+
}
|
|
37
|
+
// Web Search Configuration
|
|
38
|
+
const searchProvider = config.tools.webSearch.provider || 'auto';
|
|
39
|
+
console.log(`\n Web Search Provider: ${chalk_1.default.cyan(searchProvider)}`);
|
|
40
|
+
// Check legacy config
|
|
41
|
+
const legacyKey = config.tools.webSearch.apiKey;
|
|
42
|
+
if (legacyKey) {
|
|
43
|
+
console.log(chalk_1.default.yellow(' ⚠️ Legacy config detected (tools.webSearch.apiKey)'));
|
|
44
|
+
console.log(chalk_1.default.yellow(' Consider migrating to tools.webSearch.brave.apiKey or tools.webSearch.tavily.apiKey'));
|
|
45
|
+
}
|
|
46
|
+
// Brave Search API key
|
|
47
|
+
const braveKey = config.tools.webSearch.brave?.apiKey || config.tools.webSearch.apiKey;
|
|
48
|
+
const hasBrave = braveKey && braveKey.length > 0;
|
|
49
|
+
console.log(` Brave: ${hasBrave ? chalk_1.default.green('✓ Configured') : chalk_1.default.gray('○ Not configured')}`);
|
|
50
|
+
if (hasBrave) {
|
|
51
|
+
const masked = braveKey.substring(0, 8) + '...' + braveKey.substring(braveKey.length - 4);
|
|
52
|
+
console.log(chalk_1.default.gray(` (${masked})`));
|
|
53
|
+
}
|
|
54
|
+
// Tavily API key
|
|
55
|
+
const tavilyKey = config.tools.webSearch.tavily?.apiKey;
|
|
56
|
+
const hasTavily = tavilyKey && tavilyKey.length > 0;
|
|
57
|
+
console.log(` Tavily: ${hasTavily ? chalk_1.default.green('✓ Configured') : chalk_1.default.gray('○ Not configured')}`);
|
|
58
|
+
if (hasTavily) {
|
|
59
|
+
const masked = tavilyKey.substring(0, 8) + '...' + tavilyKey.substring(tavilyKey.length - 4);
|
|
60
|
+
console.log(chalk_1.default.gray(` (${masked})`));
|
|
61
|
+
}
|
|
62
|
+
// Browser fallback
|
|
63
|
+
console.log(` Browser (fallback): ${chalk_1.default.green('✓ Always available')}`);
|
|
64
|
+
if (!hasBrave && !hasTavily) {
|
|
65
|
+
console.log(chalk_1.default.yellow(' ℹ️ No API-based search configured. Will use browser fallback.'));
|
|
66
|
+
console.log(chalk_1.default.yellow(' For better results, configure Tavily or Brave API.'));
|
|
67
|
+
}
|
|
68
|
+
// Validation
|
|
69
|
+
const validation = await configManager.validate();
|
|
70
|
+
if (!validation.valid) {
|
|
71
|
+
console.log(chalk_1.default.yellow('\n Warnings:'));
|
|
72
|
+
validation.errors?.forEach(error => {
|
|
73
|
+
console.log(chalk_1.default.yellow(` • ${error}`));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Workspace status
|
|
78
|
+
console.log(chalk_1.default.bold('\nWorkspace:'));
|
|
79
|
+
if (configExists) {
|
|
80
|
+
const config = await configManager.load();
|
|
81
|
+
const workspaceManager = (0, manager_2.getWorkspaceManager)(config.workspace);
|
|
82
|
+
const workspacePath = workspaceManager.getWorkspacePath();
|
|
83
|
+
const isInitialized = await workspaceManager.isInitialized();
|
|
84
|
+
console.log(` Location: ${workspacePath}`);
|
|
85
|
+
console.log(` Status: ${isInitialized ? chalk_1.default.green('✓ Initialized') : chalk_1.default.yellow('○ Not initialized')}`);
|
|
86
|
+
if (isInitialized) {
|
|
87
|
+
console.log(` Skills: ${workspaceManager.getSkillsPath()}`);
|
|
88
|
+
console.log(` Files: ${workspaceManager.getFilesPath()}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log(chalk_1.default.yellow(' Run "genieceo init" to initialize'));
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk_1.default.bold('\nTools:'));
|
|
95
|
+
console.log(' • readFile, writeFile, listDir');
|
|
96
|
+
console.log(' • executeCommand (shell)');
|
|
97
|
+
console.log(' • webSearch (multi-provider: Brave, Tavily, Browser)');
|
|
98
|
+
console.log(' • spawnSubagent');
|
|
99
|
+
console.log('');
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error(chalk_1.default.red('✗ Failed to get status:'));
|
|
103
|
+
console.error(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const init_1 = require("./commands/init");
|
|
6
|
+
const chat_1 = require("./commands/chat");
|
|
7
|
+
const status_1 = require("./commands/status");
|
|
8
|
+
const onboard_1 = require("./commands/onboard");
|
|
9
|
+
const program = new commander_1.Command();
|
|
10
|
+
program
|
|
11
|
+
.name('genieceo')
|
|
12
|
+
.description('Ultra-lightweight AI agent CLI assistant')
|
|
13
|
+
.version('0.1.0');
|
|
14
|
+
// Init command
|
|
15
|
+
program
|
|
16
|
+
.command('init')
|
|
17
|
+
.description('Initialize workspace and configuration')
|
|
18
|
+
.action(async () => {
|
|
19
|
+
await (0, init_1.initCommand)();
|
|
20
|
+
});
|
|
21
|
+
// Onboard command
|
|
22
|
+
program
|
|
23
|
+
.command('onboard')
|
|
24
|
+
.description('Interactive setup wizard for LLM and web search configuration')
|
|
25
|
+
.action(async () => {
|
|
26
|
+
await (0, onboard_1.onboardCommand)();
|
|
27
|
+
});
|
|
28
|
+
// Chat command
|
|
29
|
+
program
|
|
30
|
+
.command('chat')
|
|
31
|
+
.description('Start interactive chat or send a single message')
|
|
32
|
+
.option('-m, --message <text>', 'Send a single message instead of interactive mode')
|
|
33
|
+
.action(async (options) => {
|
|
34
|
+
await (0, chat_1.chatCommand)(options);
|
|
35
|
+
});
|
|
36
|
+
// Status command
|
|
37
|
+
program
|
|
38
|
+
.command('status')
|
|
39
|
+
.description('Show configuration and workspace status')
|
|
40
|
+
.action(async () => {
|
|
41
|
+
await (0, status_1.statusCommand)();
|
|
42
|
+
});
|
|
43
|
+
// Parse arguments
|
|
44
|
+
program.parse(process.argv);
|
|
45
|
+
// Show help if no command provided
|
|
46
|
+
if (!process.argv.slice(2).length) {
|
|
47
|
+
program.outputHelp();
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,0CAA8C;AAC9C,8CAAkD;AAClD,gDAAoD;AAEpD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,kBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,wBAAc,GAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,sBAAsB,EAAE,mDAAmD,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,sBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ConfigType } from './schema';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration Manager
|
|
4
|
+
* Handles loading, saving, and validation of configuration
|
|
5
|
+
*/
|
|
6
|
+
export declare class ConfigManager {
|
|
7
|
+
private configPath;
|
|
8
|
+
private config;
|
|
9
|
+
constructor(configPath?: string);
|
|
10
|
+
/**
|
|
11
|
+
* Get the configuration path
|
|
12
|
+
*/
|
|
13
|
+
getConfigPath(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Load configuration from file
|
|
16
|
+
*/
|
|
17
|
+
load(): Promise<ConfigType>;
|
|
18
|
+
/**
|
|
19
|
+
* Migrate legacy config format to new multi-provider format
|
|
20
|
+
*/
|
|
21
|
+
private migrateLegacyConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Create default configuration file
|
|
24
|
+
*/
|
|
25
|
+
createDefault(): Promise<ConfigType>;
|
|
26
|
+
/**
|
|
27
|
+
* Save configuration to file
|
|
28
|
+
*/
|
|
29
|
+
save(config: ConfigType): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Update specific config values
|
|
32
|
+
*/
|
|
33
|
+
update(updates: Partial<ConfigType>): Promise<ConfigType>;
|
|
34
|
+
/**
|
|
35
|
+
* Validate configuration
|
|
36
|
+
*/
|
|
37
|
+
validate(): Promise<{
|
|
38
|
+
valid: boolean;
|
|
39
|
+
errors?: string[];
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
export declare function getConfigManager(configPath?: string): ConfigManager;
|
|
43
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,UAAU,EAAuB,MAAM,UAAU,CAAC;AAEzE;;;GAGG;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,UAAU,CAAC,EAAE,MAAM;IAI/B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAyBjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAiB1C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAO/D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CA2BjE;AAKD,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAKnE"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigManager = void 0;
|
|
4
|
+
exports.getConfigManager = getConfigManager;
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const os_1 = require("os");
|
|
9
|
+
const schema_1 = require("./schema");
|
|
10
|
+
/**
|
|
11
|
+
* Configuration Manager
|
|
12
|
+
* Handles loading, saving, and validation of configuration
|
|
13
|
+
*/
|
|
14
|
+
class ConfigManager {
|
|
15
|
+
constructor(configPath) {
|
|
16
|
+
this.config = null;
|
|
17
|
+
this.configPath = configPath || (0, path_1.join)((0, os_1.homedir)(), '.genieceo', 'config.json');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get the configuration path
|
|
21
|
+
*/
|
|
22
|
+
getConfigPath() {
|
|
23
|
+
return this.configPath;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load configuration from file
|
|
27
|
+
*/
|
|
28
|
+
async load() {
|
|
29
|
+
if (this.config) {
|
|
30
|
+
return this.config;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
if ((0, fs_1.existsSync)(this.configPath)) {
|
|
34
|
+
const content = await (0, promises_1.readFile)(this.configPath, 'utf-8');
|
|
35
|
+
const rawConfig = JSON.parse(content);
|
|
36
|
+
// Migrate legacy config if needed
|
|
37
|
+
const migratedConfig = this.migrateLegacyConfig(rawConfig);
|
|
38
|
+
// Validate and parse with Zod
|
|
39
|
+
this.config = schema_1.ConfigSchema.parse(migratedConfig);
|
|
40
|
+
return this.config;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Create default config if file doesn't exist
|
|
44
|
+
return await this.createDefault();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`Failed to load config: ${error instanceof Error ? error.message : error}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Migrate legacy config format to new multi-provider format
|
|
53
|
+
*/
|
|
54
|
+
migrateLegacyConfig(config) {
|
|
55
|
+
// Check if using legacy webSearch.apiKey format
|
|
56
|
+
if (config.tools?.webSearch?.apiKey && !config.tools.webSearch.brave) {
|
|
57
|
+
console.warn('⚠️ Migrating legacy config format (tools.webSearch.apiKey → tools.webSearch.brave.apiKey)');
|
|
58
|
+
return {
|
|
59
|
+
...config,
|
|
60
|
+
tools: {
|
|
61
|
+
...config.tools,
|
|
62
|
+
webSearch: {
|
|
63
|
+
provider: 'auto',
|
|
64
|
+
brave: {
|
|
65
|
+
apiKey: config.tools.webSearch.apiKey,
|
|
66
|
+
},
|
|
67
|
+
// Keep legacy key for backward compatibility but it won't be saved
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return config;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create default configuration file
|
|
76
|
+
*/
|
|
77
|
+
async createDefault() {
|
|
78
|
+
const defaultConfig = (0, schema_1.createDefaultConfig)();
|
|
79
|
+
// Ensure directory exists
|
|
80
|
+
const dir = (0, path_1.dirname)(this.configPath);
|
|
81
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
82
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
83
|
+
}
|
|
84
|
+
// Save to file
|
|
85
|
+
await (0, promises_1.writeFile)(this.configPath, JSON.stringify(defaultConfig, null, 2));
|
|
86
|
+
// Validate and parse
|
|
87
|
+
this.config = schema_1.ConfigSchema.parse(defaultConfig);
|
|
88
|
+
return this.config;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Save configuration to file
|
|
92
|
+
*/
|
|
93
|
+
async save(config) {
|
|
94
|
+
const dir = (0, path_1.dirname)(this.configPath);
|
|
95
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
96
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
await (0, promises_1.writeFile)(this.configPath, JSON.stringify(config, null, 2));
|
|
99
|
+
this.config = config;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Update specific config values
|
|
103
|
+
*/
|
|
104
|
+
async update(updates) {
|
|
105
|
+
const current = await this.load();
|
|
106
|
+
const updated = { ...current, ...updates };
|
|
107
|
+
await this.save(updated);
|
|
108
|
+
return updated;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Validate configuration
|
|
112
|
+
*/
|
|
113
|
+
async validate() {
|
|
114
|
+
try {
|
|
115
|
+
const config = await this.load();
|
|
116
|
+
const errors = [];
|
|
117
|
+
// Check for required API keys
|
|
118
|
+
if (!config.llm.openai.apiKey) {
|
|
119
|
+
errors.push('OpenAI API key is required');
|
|
120
|
+
}
|
|
121
|
+
// Validate model format
|
|
122
|
+
if (!config.model.includes(':')) {
|
|
123
|
+
errors.push('Model must be in format "provider:model" (e.g., "openai:gpt-4o")');
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
valid: errors.length === 0,
|
|
127
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return {
|
|
132
|
+
valid: false,
|
|
133
|
+
errors: [error instanceof Error ? error.message : String(error)],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.ConfigManager = ConfigManager;
|
|
139
|
+
// Singleton instance
|
|
140
|
+
let configManagerInstance = null;
|
|
141
|
+
function getConfigManager(configPath) {
|
|
142
|
+
if (!configManagerInstance) {
|
|
143
|
+
configManagerInstance = new ConfigManager(configPath);
|
|
144
|
+
}
|
|
145
|
+
return configManagerInstance;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for configuration validation
|
|
4
|
+
*/
|
|
5
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
6
|
+
workspace: z.ZodDefault<z.ZodString>;
|
|
7
|
+
model: z.ZodDefault<z.ZodString>;
|
|
8
|
+
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
llm: z.ZodObject<{
|
|
10
|
+
openai: z.ZodObject<{
|
|
11
|
+
apiKey: z.ZodString;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
apiKey: string;
|
|
14
|
+
}, {
|
|
15
|
+
apiKey: string;
|
|
16
|
+
}>;
|
|
17
|
+
anthropic: z.ZodOptional<z.ZodObject<{
|
|
18
|
+
apiKey: z.ZodString;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
apiKey: string;
|
|
21
|
+
}, {
|
|
22
|
+
apiKey: string;
|
|
23
|
+
}>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
openai: {
|
|
26
|
+
apiKey: string;
|
|
27
|
+
};
|
|
28
|
+
anthropic?: {
|
|
29
|
+
apiKey: string;
|
|
30
|
+
} | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
openai: {
|
|
33
|
+
apiKey: string;
|
|
34
|
+
};
|
|
35
|
+
anthropic?: {
|
|
36
|
+
apiKey: string;
|
|
37
|
+
} | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
tools: z.ZodDefault<z.ZodObject<{
|
|
40
|
+
webSearch: z.ZodDefault<z.ZodObject<{
|
|
41
|
+
provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<["auto", "brave", "tavily", "browser"]>>>;
|
|
42
|
+
brave: z.ZodOptional<z.ZodObject<{
|
|
43
|
+
apiKey: z.ZodString;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
apiKey: string;
|
|
46
|
+
}, {
|
|
47
|
+
apiKey: string;
|
|
48
|
+
}>>;
|
|
49
|
+
tavily: z.ZodOptional<z.ZodObject<{
|
|
50
|
+
apiKey: z.ZodString;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
apiKey: string;
|
|
53
|
+
}, {
|
|
54
|
+
apiKey: string;
|
|
55
|
+
}>>;
|
|
56
|
+
apiKey: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
brave?: {
|
|
59
|
+
apiKey: string;
|
|
60
|
+
} | undefined;
|
|
61
|
+
tavily?: {
|
|
62
|
+
apiKey: string;
|
|
63
|
+
} | undefined;
|
|
64
|
+
provider?: "auto" | "brave" | "tavily" | "browser" | undefined;
|
|
65
|
+
apiKey?: string | undefined;
|
|
66
|
+
}, {
|
|
67
|
+
brave?: {
|
|
68
|
+
apiKey: string;
|
|
69
|
+
} | undefined;
|
|
70
|
+
tavily?: {
|
|
71
|
+
apiKey: string;
|
|
72
|
+
} | undefined;
|
|
73
|
+
provider?: "auto" | "brave" | "tavily" | "browser" | undefined;
|
|
74
|
+
apiKey?: string | undefined;
|
|
75
|
+
}>>;
|
|
76
|
+
shell: z.ZodDefault<z.ZodObject<{
|
|
77
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
78
|
+
allowDangerous: z.ZodDefault<z.ZodBoolean>;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
timeout: number;
|
|
81
|
+
allowDangerous: boolean;
|
|
82
|
+
}, {
|
|
83
|
+
timeout?: number | undefined;
|
|
84
|
+
allowDangerous?: boolean | undefined;
|
|
85
|
+
}>>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
webSearch: {
|
|
88
|
+
brave?: {
|
|
89
|
+
apiKey: string;
|
|
90
|
+
} | undefined;
|
|
91
|
+
tavily?: {
|
|
92
|
+
apiKey: string;
|
|
93
|
+
} | undefined;
|
|
94
|
+
provider?: "auto" | "brave" | "tavily" | "browser" | undefined;
|
|
95
|
+
apiKey?: string | undefined;
|
|
96
|
+
};
|
|
97
|
+
shell: {
|
|
98
|
+
timeout: number;
|
|
99
|
+
allowDangerous: boolean;
|
|
100
|
+
};
|
|
101
|
+
}, {
|
|
102
|
+
webSearch?: {
|
|
103
|
+
brave?: {
|
|
104
|
+
apiKey: string;
|
|
105
|
+
} | undefined;
|
|
106
|
+
tavily?: {
|
|
107
|
+
apiKey: string;
|
|
108
|
+
} | undefined;
|
|
109
|
+
provider?: "auto" | "brave" | "tavily" | "browser" | undefined;
|
|
110
|
+
apiKey?: string | undefined;
|
|
111
|
+
} | undefined;
|
|
112
|
+
shell?: {
|
|
113
|
+
timeout?: number | undefined;
|
|
114
|
+
allowDangerous?: boolean | undefined;
|
|
115
|
+
} | undefined;
|
|
116
|
+
}>>;
|
|
117
|
+
}, "strip", z.ZodTypeAny, {
|
|
118
|
+
workspace: string;
|
|
119
|
+
model: string;
|
|
120
|
+
maxIterations: number;
|
|
121
|
+
llm: {
|
|
122
|
+
openai: {
|
|
123
|
+
apiKey: string;
|
|
124
|
+
};
|
|
125
|
+
anthropic?: {
|
|
126
|
+
apiKey: string;
|
|
127
|
+
} | undefined;
|
|
128
|
+
};
|
|
129
|
+
tools: {
|
|
130
|
+
webSearch: {
|
|
131
|
+
brave?: {
|
|
132
|
+
apiKey: string;
|
|
133
|
+
} | undefined;
|
|
134
|
+
tavily?: {
|
|
135
|
+
apiKey: string;
|
|
136
|
+
} | undefined;
|
|
137
|
+
provider?: "auto" | "brave" | "tavily" | "browser" | undefined;
|
|
138
|
+
apiKey?: string | undefined;
|
|
139
|
+
};
|
|
140
|
+
shell: {
|
|
141
|
+
timeout: number;
|
|
142
|
+
allowDangerous: boolean;
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
}, {
|
|
146
|
+
llm: {
|
|
147
|
+
openai: {
|
|
148
|
+
apiKey: string;
|
|
149
|
+
};
|
|
150
|
+
anthropic?: {
|
|
151
|
+
apiKey: string;
|
|
152
|
+
} | undefined;
|
|
153
|
+
};
|
|
154
|
+
workspace?: string | undefined;
|
|
155
|
+
model?: string | undefined;
|
|
156
|
+
maxIterations?: number | undefined;
|
|
157
|
+
tools?: {
|
|
158
|
+
webSearch?: {
|
|
159
|
+
brave?: {
|
|
160
|
+
apiKey: string;
|
|
161
|
+
} | undefined;
|
|
162
|
+
tavily?: {
|
|
163
|
+
apiKey: string;
|
|
164
|
+
} | undefined;
|
|
165
|
+
provider?: "auto" | "brave" | "tavily" | "browser" | undefined;
|
|
166
|
+
apiKey?: string | undefined;
|
|
167
|
+
} | undefined;
|
|
168
|
+
shell?: {
|
|
169
|
+
timeout?: number | undefined;
|
|
170
|
+
allowDangerous?: boolean | undefined;
|
|
171
|
+
} | undefined;
|
|
172
|
+
} | undefined;
|
|
173
|
+
}>;
|
|
174
|
+
export type ConfigType = z.infer<typeof ConfigSchema>;
|
|
175
|
+
/**
|
|
176
|
+
* Create default configuration
|
|
177
|
+
*/
|
|
178
|
+
export declare function createDefaultConfig(): Partial<ConfigType>;
|
|
179
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCvB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEtD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAoBzD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigSchema = void 0;
|
|
4
|
+
exports.createDefaultConfig = createDefaultConfig;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
/**
|
|
9
|
+
* Zod schema for configuration validation
|
|
10
|
+
*/
|
|
11
|
+
exports.ConfigSchema = zod_1.z.object({
|
|
12
|
+
workspace: zod_1.z.string().default((0, path_1.join)((0, os_1.homedir)(), '.genieceo', 'workspace')),
|
|
13
|
+
model: zod_1.z.string().default('openai:gpt-4o'),
|
|
14
|
+
maxIterations: zod_1.z.number().int().positive().default(15),
|
|
15
|
+
llm: zod_1.z.object({
|
|
16
|
+
openai: zod_1.z.object({
|
|
17
|
+
apiKey: zod_1.z.string(),
|
|
18
|
+
}),
|
|
19
|
+
anthropic: zod_1.z.object({
|
|
20
|
+
apiKey: zod_1.z.string(),
|
|
21
|
+
}).optional(),
|
|
22
|
+
}),
|
|
23
|
+
tools: zod_1.z.object({
|
|
24
|
+
webSearch: zod_1.z.object({
|
|
25
|
+
provider: zod_1.z.enum(['auto', 'brave', 'tavily', 'browser']).default('auto').optional(),
|
|
26
|
+
brave: zod_1.z.object({
|
|
27
|
+
apiKey: zod_1.z.string(),
|
|
28
|
+
}).optional(),
|
|
29
|
+
tavily: zod_1.z.object({
|
|
30
|
+
apiKey: zod_1.z.string(),
|
|
31
|
+
}).optional(),
|
|
32
|
+
// Legacy support for old config format
|
|
33
|
+
apiKey: zod_1.z.string().optional(),
|
|
34
|
+
}).default({}),
|
|
35
|
+
shell: zod_1.z.object({
|
|
36
|
+
timeout: zod_1.z.number().int().positive().default(30000),
|
|
37
|
+
allowDangerous: zod_1.z.boolean().default(false),
|
|
38
|
+
}).default({
|
|
39
|
+
timeout: 30000,
|
|
40
|
+
allowDangerous: false,
|
|
41
|
+
}),
|
|
42
|
+
}).default({
|
|
43
|
+
webSearch: {},
|
|
44
|
+
shell: {
|
|
45
|
+
timeout: 30000,
|
|
46
|
+
allowDangerous: false,
|
|
47
|
+
},
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Create default configuration
|
|
52
|
+
*/
|
|
53
|
+
function createDefaultConfig() {
|
|
54
|
+
return {
|
|
55
|
+
workspace: (0, path_1.join)((0, os_1.homedir)(), '.genieceo', 'workspace'),
|
|
56
|
+
model: 'openai:gpt-4o',
|
|
57
|
+
maxIterations: 15,
|
|
58
|
+
llm: {
|
|
59
|
+
openai: {
|
|
60
|
+
apiKey: '',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
tools: {
|
|
64
|
+
webSearch: {
|
|
65
|
+
provider: 'auto',
|
|
66
|
+
},
|
|
67
|
+
shell: {
|
|
68
|
+
timeout: 30000,
|
|
69
|
+
allowDangerous: false,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":";;;AAqDA,kDAoBC;AAzED,6BAAwB;AACxB,2BAA6B;AAC7B,+BAA4B;AAE5B;;GAEG;AAEU,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACxE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;IAC1C,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,GAAG,EAAE,OAAC,CAAC,MAAM,CAAC;QACZ,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;SACnB,CAAC;QACF,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC;YAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;SACnB,CAAC,CAAC,QAAQ,EAAE;KACd,CAAC;IACF,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;YACnF,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC;gBACd,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;aACnB,CAAC,CAAC,QAAQ,EAAE;YACb,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;gBACf,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;aACnB,CAAC,CAAC,QAAQ,EAAE;YACb,uCAAuC;YACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACd,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC3C,CAAC,CAAC,OAAO,CAAC;YACT,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,KAAK;SACtB,CAAC;KACH,CAAC,CAAC,OAAO,CAAC;QACT,SAAS,EAAE,EAAE;QACb,KAAK,EAAE;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,KAAK;SACtB;KACF,CAAC;CACH,CAAC,CAAC;AAIH;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO;QACL,SAAS,EAAE,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,WAAW,EAAE,WAAW,CAAC;QACpD,KAAK,EAAE,eAAe;QACtB,aAAa,EAAE,EAAE;QACjB,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,MAAM,EAAE,EAAE;aACX;SACF;QACD,KAAK,EAAE;YACL,SAAS,EAAE;gBACT,QAAQ,EAAE,MAAM;aACjB;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,KAAK;aACtB;SACF;KACF,CAAC;AACJ,CAAC"}
|