@ritwikamit/cl8 0.1.0-alpha.10
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/LICENSE +21 -0
- package/README.md +547 -0
- package/dist/agents/Agent.d.ts +27 -0
- package/dist/agents/Agent.d.ts.map +1 -0
- package/dist/agents/Agent.js +197 -0
- package/dist/agents/Agent.js.map +1 -0
- package/dist/agents/Executor.d.ts +12 -0
- package/dist/agents/Executor.d.ts.map +1 -0
- package/dist/agents/Executor.js +65 -0
- package/dist/agents/Executor.js.map +1 -0
- package/dist/agents/Planner.d.ts +14 -0
- package/dist/agents/Planner.d.ts.map +1 -0
- package/dist/agents/Planner.js +105 -0
- package/dist/agents/Planner.js.map +1 -0
- package/dist/agents/Reflector.d.ts +19 -0
- package/dist/agents/Reflector.d.ts.map +1 -0
- package/dist/agents/Reflector.js +97 -0
- package/dist/agents/Reflector.js.map +1 -0
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +12 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/bin/cl8.d.ts +3 -0
- package/dist/bin/cl8.d.ts.map +1 -0
- package/dist/bin/cl8.js +19 -0
- package/dist/bin/cl8.js.map +1 -0
- package/dist/bin/jarvis.d.ts +3 -0
- package/dist/bin/jarvis.d.ts.map +1 -0
- package/dist/bin/jarvis.js +19 -0
- package/dist/bin/jarvis.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +12 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +52 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +8 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +69 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +90 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/session.d.ts +6 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +70 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/hooks/useHistory.d.ts +14 -0
- package/dist/cli/hooks/useHistory.d.ts.map +1 -0
- package/dist/cli/hooks/useHistory.js +67 -0
- package/dist/cli/hooks/useHistory.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 +115 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/env.d.ts +7 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +56 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +125 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/Boot.d.ts +34 -0
- package/dist/core/Boot.d.ts.map +1 -0
- package/dist/core/Boot.js +97 -0
- package/dist/core/Boot.js.map +1 -0
- package/dist/core/Engine.d.ts +40 -0
- package/dist/core/Engine.d.ts.map +1 -0
- package/dist/core/Engine.js +127 -0
- package/dist/core/Engine.js.map +1 -0
- package/dist/core/Loop.d.ts +22 -0
- package/dist/core/Loop.d.ts.map +1 -0
- package/dist/core/Loop.js +221 -0
- package/dist/core/Loop.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/ConversationMemory.d.ts +24 -0
- package/dist/memory/ConversationMemory.d.ts.map +1 -0
- package/dist/memory/ConversationMemory.js +134 -0
- package/dist/memory/ConversationMemory.js.map +1 -0
- package/dist/memory/SessionManager.d.ts +19 -0
- package/dist/memory/SessionManager.d.ts.map +1 -0
- package/dist/memory/SessionManager.js +104 -0
- package/dist/memory/SessionManager.js.map +1 -0
- package/dist/memory/VectorMemory.d.ts +16 -0
- package/dist/memory/VectorMemory.d.ts.map +1 -0
- package/dist/memory/VectorMemory.js +87 -0
- package/dist/memory/VectorMemory.js.map +1 -0
- package/dist/memory/index.d.ts +4 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +10 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/plugins/PluginLoader.d.ts +9 -0
- package/dist/plugins/PluginLoader.d.ts.map +1 -0
- package/dist/plugins/PluginLoader.js +86 -0
- package/dist/plugins/PluginLoader.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +18 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +63 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/index.d.ts +11 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +16 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/providers/BaseProvider.d.ts +17 -0
- package/dist/providers/BaseProvider.d.ts.map +1 -0
- package/dist/providers/BaseProvider.js +33 -0
- package/dist/providers/BaseProvider.js.map +1 -0
- package/dist/providers/GeminiProvider.d.ts +14 -0
- package/dist/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/providers/GeminiProvider.js +79 -0
- package/dist/providers/GeminiProvider.js.map +1 -0
- package/dist/providers/OllamaProvider.d.ts +14 -0
- package/dist/providers/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/OllamaProvider.js +131 -0
- package/dist/providers/OllamaProvider.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts +13 -0
- package/dist/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/providers/OpenAIProvider.js +109 -0
- package/dist/providers/OpenAIProvider.js.map +1 -0
- package/dist/providers/index.d.ts +23 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +57 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/services/AuditService.d.ts +23 -0
- package/dist/services/AuditService.d.ts.map +1 -0
- package/dist/services/AuditService.js +73 -0
- package/dist/services/AuditService.js.map +1 -0
- package/dist/services/SecurityService.d.ts +15 -0
- package/dist/services/SecurityService.d.ts.map +1 -0
- package/dist/services/SecurityService.js +60 -0
- package/dist/services/SecurityService.js.map +1 -0
- package/dist/services/ToolService.d.ts +19 -0
- package/dist/services/ToolService.d.ts.map +1 -0
- package/dist/services/ToolService.js +85 -0
- package/dist/services/ToolService.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +10 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tools/BaseTool.d.ts +12 -0
- package/dist/tools/BaseTool.d.ts.map +1 -0
- package/dist/tools/BaseTool.js +25 -0
- package/dist/tools/BaseTool.js.map +1 -0
- package/dist/tools/FileTool.d.ts +14 -0
- package/dist/tools/FileTool.d.ts.map +1 -0
- package/dist/tools/FileTool.js +136 -0
- package/dist/tools/FileTool.js.map +1 -0
- package/dist/tools/SearchTool.d.ts +10 -0
- package/dist/tools/SearchTool.d.ts.map +1 -0
- package/dist/tools/SearchTool.js +117 -0
- package/dist/tools/SearchTool.js.map +1 -0
- package/dist/tools/ShellTool.d.ts +8 -0
- package/dist/tools/ShellTool.d.ts.map +1 -0
- package/dist/tools/ShellTool.js +87 -0
- package/dist/tools/ShellTool.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +29 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/agent.d.ts +49 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/config.d.ts +52 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +47 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +3 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/plugin.d.ts +31 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +3 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/provider.d.ts +43 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/types/provider.js +3 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/tool.d.ts +41 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +3 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/ui/MarkdownRenderer.d.ts +17 -0
- package/dist/ui/MarkdownRenderer.d.ts.map +1 -0
- package/dist/ui/MarkdownRenderer.js +148 -0
- package/dist/ui/MarkdownRenderer.js.map +1 -0
- package/dist/ui/Spinner.d.ts +14 -0
- package/dist/ui/Spinner.d.ts.map +1 -0
- package/dist/ui/Spinner.js +79 -0
- package/dist/ui/Spinner.js.map +1 -0
- package/dist/ui/StreamingOutput.d.ts +15 -0
- package/dist/ui/StreamingOutput.d.ts.map +1 -0
- package/dist/ui/StreamingOutput.js +48 -0
- package/dist/ui/StreamingOutput.js.map +1 -0
- package/dist/ui/context-monitor.d.ts +11 -0
- package/dist/ui/context-monitor.d.ts.map +1 -0
- package/dist/ui/context-monitor.js +39 -0
- package/dist/ui/context-monitor.js.map +1 -0
- package/dist/ui/index.d.ts +14 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +30 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/onboarding.d.ts +9 -0
- package/dist/ui/onboarding.d.ts.map +1 -0
- package/dist/ui/onboarding.js +40 -0
- package/dist/ui/onboarding.js.map +1 -0
- package/dist/ui/pixel-logo.d.ts +2 -0
- package/dist/ui/pixel-logo.d.ts.map +1 -0
- package/dist/ui/pixel-logo.js +32 -0
- package/dist/ui/pixel-logo.js.map +1 -0
- package/dist/ui/spinner-manager.d.ts +18 -0
- package/dist/ui/spinner-manager.d.ts.map +1 -0
- package/dist/ui/spinner-manager.js +109 -0
- package/dist/ui/spinner-manager.js.map +1 -0
- package/dist/ui/splash-screen/gradient-logo.d.ts +2 -0
- package/dist/ui/splash-screen/gradient-logo.d.ts.map +1 -0
- package/dist/ui/splash-screen/gradient-logo.js +20 -0
- package/dist/ui/splash-screen/gradient-logo.js.map +1 -0
- package/dist/ui/splash.d.ts +18 -0
- package/dist/ui/splash.d.ts.map +1 -0
- package/dist/ui/splash.js +68 -0
- package/dist/ui/splash.js.map +1 -0
- package/dist/ui/startup-tips.json +22 -0
- package/dist/ui/status-bar.d.ts +17 -0
- package/dist/ui/status-bar.d.ts.map +1 -0
- package/dist/ui/status-bar.js +54 -0
- package/dist/ui/status-bar.js.map +1 -0
- package/dist/ui/theme-manager.d.ts +22 -0
- package/dist/ui/theme-manager.d.ts.map +1 -0
- package/dist/ui/theme-manager.js +91 -0
- package/dist/ui/theme-manager.js.map +1 -0
- package/dist/ui/types.d.ts +19 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/ui/typing-animation.d.ts +9 -0
- package/dist/ui/typing-animation.d.ts.map +1 -0
- package/dist/ui/typing-animation.js +36 -0
- package/dist/ui/typing-animation.js.map +1 -0
- package/dist/ui/workspace-panel.d.ts +5 -0
- package/dist/ui/workspace-panel.d.ts.map +1 -0
- package/dist/ui/workspace-panel.js +30 -0
- package/dist/ui/workspace-panel.js.map +1 -0
- package/dist/utils/crypto.d.ts +6 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +54 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +57 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const index_js_1 = require("../cli/index.js");
|
|
5
|
+
async function main() {
|
|
6
|
+
process.title = 'jarviscli';
|
|
7
|
+
const program = (0, index_js_1.createCLI)();
|
|
8
|
+
if (process.argv.length <= 2) {
|
|
9
|
+
program.parse(['node', 'jarvis', 'chat'], { from: 'user' });
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
await program.parseAsync();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
main().catch((err) => {
|
|
16
|
+
console.error('Fatal error:', err);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=jarvis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jarvis.js","sourceRoot":"","sources":["../../src/bin/jarvis.ts"],"names":[],"mappings":";;;AAEA,8CAA4C;AAE5C,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;IAE5B,MAAM,OAAO,GAAG,IAAA,oBAAS,GAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function chatCommand(options: {
|
|
2
|
+
provider?: string;
|
|
3
|
+
model?: string;
|
|
4
|
+
workspace?: string;
|
|
5
|
+
session?: string;
|
|
6
|
+
reducedMotion?: boolean;
|
|
7
|
+
highContrast?: boolean;
|
|
8
|
+
noSplash?: boolean;
|
|
9
|
+
resetOnboarding?: boolean;
|
|
10
|
+
theme?: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chatCommand = chatCommand;
|
|
4
|
+
const Engine_js_1 = require("../../core/Engine.js");
|
|
5
|
+
const Loop_js_1 = require("../../core/Loop.js");
|
|
6
|
+
const Boot_js_1 = require("../../core/Boot.js");
|
|
7
|
+
const index_js_1 = require("../../config/index.js");
|
|
8
|
+
async function chatCommand(options) {
|
|
9
|
+
const config = (0, index_js_1.loadConfig)();
|
|
10
|
+
if (options.provider) {
|
|
11
|
+
config.ai.defaultProvider = options.provider;
|
|
12
|
+
}
|
|
13
|
+
if (options.model) {
|
|
14
|
+
if (config.ai.defaultProvider === 'openai')
|
|
15
|
+
config.ai.openai.model = options.model;
|
|
16
|
+
else if (config.ai.defaultProvider === 'gemini')
|
|
17
|
+
config.ai.gemini.model = options.model;
|
|
18
|
+
else if (config.ai.defaultProvider === 'ollama')
|
|
19
|
+
config.ai.ollama.model = options.model;
|
|
20
|
+
}
|
|
21
|
+
if (options.workspace) {
|
|
22
|
+
config.workspace.root = options.workspace;
|
|
23
|
+
}
|
|
24
|
+
const bootOptions = {
|
|
25
|
+
reducedMotion: options.reducedMotion,
|
|
26
|
+
highContrast: options.highContrast,
|
|
27
|
+
noSplash: options.noSplash,
|
|
28
|
+
resetOnboarding: options.resetOnboarding,
|
|
29
|
+
theme: options.theme,
|
|
30
|
+
};
|
|
31
|
+
const boot = new Boot_js_1.Boot(bootOptions);
|
|
32
|
+
const bootResult = await boot.startup();
|
|
33
|
+
const engine = new Engine_js_1.Engine(config);
|
|
34
|
+
if (!bootOptions.noSplash) {
|
|
35
|
+
bootResult.workspacePanel.display(config.workspace.root);
|
|
36
|
+
}
|
|
37
|
+
let sessionId = options.session;
|
|
38
|
+
if (!sessionId && !bootOptions.noSplash) {
|
|
39
|
+
await engine.initialize();
|
|
40
|
+
const sessions = engine.getSessionManager().listSessions(1);
|
|
41
|
+
if (sessions.length > 0) {
|
|
42
|
+
const restore = await boot.promptRestoreSession();
|
|
43
|
+
if (restore) {
|
|
44
|
+
sessionId = sessions[0].id;
|
|
45
|
+
engine.getSessionManager().setCurrentSession(sessionId);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const loop = new Loop_js_1.InteractiveLoop(engine, bootResult.theme, sessionId);
|
|
50
|
+
await loop.start();
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":";;AAMA,kCA2DC;AAjED,oDAA8C;AAC9C,gDAAqD;AACrD,gDAAuD;AACvD,oDAAmD;AAG5C,KAAK,UAAU,WAAW,CAAC,OAUjC;IACC,MAAM,MAAM,GAAG,IAAA,qBAAU,GAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,EAAE,CAAC,eAAe,GAAG,OAAO,CAAC,QAAwB,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,MAAM,CAAC,EAAE,CAAC,eAAe,KAAK,QAAQ;YAAE,MAAM,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aAC/E,IAAI,MAAM,CAAC,EAAE,CAAC,eAAe,KAAK,QAAQ;YAAE,MAAM,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aACpF,IAAI,MAAM,CAAC,EAAE,CAAC,eAAe,KAAK,QAAQ;YAAE,MAAM,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,MAAM,WAAW,GAAgB;QAC/B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,KAAK,EAAE,OAAO,CAAC,KAA6B;KAC7C,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1B,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,SAAS,GAAuB,OAAO,CAAC,OAAO,CAAC;IAEpD,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClD,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,yBAAe,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEtE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
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.configCommand = configCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const index_js_1 = require("../../config/index.js");
|
|
9
|
+
async function configCommand(options) {
|
|
10
|
+
if (options.path) {
|
|
11
|
+
console.log((0, index_js_1.getConfigPath)());
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (options.reset) {
|
|
15
|
+
const config = (0, index_js_1.resetConfig)();
|
|
16
|
+
console.log(chalk_1.default.green('Configuration reset to defaults.'));
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (options.set && options.value) {
|
|
20
|
+
const config = (0, index_js_1.loadConfig)();
|
|
21
|
+
const keys = options.set.split('.');
|
|
22
|
+
let current = config;
|
|
23
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
24
|
+
if (current[keys[i]] === undefined)
|
|
25
|
+
current[keys[i]] = {};
|
|
26
|
+
current = current[keys[i]];
|
|
27
|
+
}
|
|
28
|
+
current[keys[keys.length - 1]] = parseValue(options.value);
|
|
29
|
+
(0, index_js_1.updateConfig)(config);
|
|
30
|
+
console.log(chalk_1.default.green(`Set ${options.set} = ${options.value}`));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const config = (0, index_js_1.loadConfig)();
|
|
34
|
+
console.log(chalk_1.default.cyan('\n CL8 Configuration:\n'));
|
|
35
|
+
printConfig(config, '');
|
|
36
|
+
console.log('');
|
|
37
|
+
}
|
|
38
|
+
function printConfig(obj, prefix) {
|
|
39
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
40
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
41
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
42
|
+
if (fullKey) {
|
|
43
|
+
console.log(chalk_1.default.dim(` ${fullKey}:`));
|
|
44
|
+
}
|
|
45
|
+
printConfig(value, fullKey);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const display = key.toLowerCase().includes('key') && value
|
|
49
|
+
? `${String(value).slice(0, 4)}...${String(value).slice(-4)}`
|
|
50
|
+
: String(value);
|
|
51
|
+
console.log(` ${chalk_1.default.bold(key)}: ${chalk_1.default.cyan(display)}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function parseValue(value) {
|
|
56
|
+
if (value === 'true')
|
|
57
|
+
return true;
|
|
58
|
+
if (value === 'false')
|
|
59
|
+
return false;
|
|
60
|
+
if (value === 'null')
|
|
61
|
+
return null;
|
|
62
|
+
if (value === 'undefined')
|
|
63
|
+
return undefined;
|
|
64
|
+
const num = Number(value);
|
|
65
|
+
if (!isNaN(num))
|
|
66
|
+
return num;
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkFjD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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.initCommand = initCommand;
|
|
7
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
async function initCommand() {
|
|
12
|
+
console.log(chalk_1.default.cyan('\n ⚡ Initializing CL8...\n'));
|
|
13
|
+
const answers = await inquirer_1.default.prompt([
|
|
14
|
+
{
|
|
15
|
+
type: 'list',
|
|
16
|
+
name: 'provider',
|
|
17
|
+
message: 'Default AI provider:',
|
|
18
|
+
choices: [
|
|
19
|
+
{ name: 'OpenAI', value: 'openai' },
|
|
20
|
+
{ name: 'Google Gemini', value: 'gemini' },
|
|
21
|
+
{ name: 'Ollama (local)', value: 'ollama' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'input',
|
|
26
|
+
name: 'apiKey',
|
|
27
|
+
message: 'API key (leave blank for Ollama):',
|
|
28
|
+
when: (answers) => answers.provider !== 'ollama',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
type: 'list',
|
|
32
|
+
name: 'approvalMode',
|
|
33
|
+
message: 'Command approval mode:',
|
|
34
|
+
choices: [
|
|
35
|
+
{ name: 'Ask before each command (recommended)', value: 'ask' },
|
|
36
|
+
{ name: 'Auto-approve safe commands', value: 'auto' },
|
|
37
|
+
{ name: 'Deny all command execution', value: 'deny' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: 'input',
|
|
42
|
+
name: 'workspace',
|
|
43
|
+
message: 'Workspace directory:',
|
|
44
|
+
default: process.cwd(),
|
|
45
|
+
},
|
|
46
|
+
]);
|
|
47
|
+
const envContent = `# CL8 Configuration
|
|
48
|
+
# Generated by \`cl8 init\`
|
|
49
|
+
|
|
50
|
+
${answers.provider === 'openai' ? `OPENAI_API_KEY=${answers.apiKey || ''}
|
|
51
|
+
OPENAI_MODEL=gpt-4o` : ''}
|
|
52
|
+
${answers.provider === 'gemini' ? `GEMINI_API_KEY=${answers.apiKey || ''}
|
|
53
|
+
GEMINI_MODEL=gemini-2.0-flash` : ''}
|
|
54
|
+
${answers.provider === 'ollama' ? `OLLAMA_BASE_URL=http://localhost:11434
|
|
55
|
+
OLLAMA_MODEL=codellama` : ''}
|
|
56
|
+
|
|
57
|
+
CL8_DEFAULT_PROVIDER=${answers.provider}
|
|
58
|
+
CL8_WORKSPACE=${answers.workspace}
|
|
59
|
+
CL8_APPROVAL_MODE=${answers.approvalMode}
|
|
60
|
+
CL8_LOG_LEVEL=info
|
|
61
|
+
`;
|
|
62
|
+
const envPath = node_path_1.default.resolve(process.cwd(), '.env');
|
|
63
|
+
try {
|
|
64
|
+
const exists = await promises_1.default.access(envPath).then(() => true).catch(() => false);
|
|
65
|
+
if (exists) {
|
|
66
|
+
const { overwrite } = await inquirer_1.default.prompt([
|
|
67
|
+
{
|
|
68
|
+
type: 'confirm',
|
|
69
|
+
name: 'overwrite',
|
|
70
|
+
message: '.env file already exists. Overwrite?',
|
|
71
|
+
default: false,
|
|
72
|
+
},
|
|
73
|
+
]);
|
|
74
|
+
if (!overwrite) {
|
|
75
|
+
console.log(chalk_1.default.yellow('\n ✋ Initialization cancelled.\n'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
await promises_1.default.writeFile(envPath, envContent, 'utf-8');
|
|
80
|
+
console.log(chalk_1.default.green(`\n ✅ Configuration written to ${chalk_1.default.bold('.env')}\n`));
|
|
81
|
+
console.log(chalk_1.default.cyan(' Next steps:'));
|
|
82
|
+
console.log(chalk_1.default.dim(' 1. Edit .env with your API keys'));
|
|
83
|
+
console.log(chalk_1.default.dim(' 2. Run `cl8` to start chatting'));
|
|
84
|
+
console.log('');
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
console.error(chalk_1.default.red(`\n ✖ Failed to write .env: ${err}\n`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/session.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.sessionCommand = sessionCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const Engine_js_1 = require("../../core/Engine.js");
|
|
9
|
+
const index_js_1 = require("../../config/index.js");
|
|
10
|
+
async function sessionCommand(options) {
|
|
11
|
+
const config = (0, index_js_1.loadConfig)();
|
|
12
|
+
const engine = new Engine_js_1.Engine(config);
|
|
13
|
+
await engine.initialize();
|
|
14
|
+
if (options.list) {
|
|
15
|
+
const sessions = engine.getSessionManager().listSessions(20);
|
|
16
|
+
if (sessions.length === 0) {
|
|
17
|
+
console.log(chalk_1.default.yellow('No sessions found.'));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk_1.default.cyan('\n Recent Sessions:\n'));
|
|
21
|
+
for (const s of sessions) {
|
|
22
|
+
const duration = s.endTime
|
|
23
|
+
? Math.round((s.endTime.getTime() - s.startTime.getTime()) / 1000) + 's'
|
|
24
|
+
: 'active';
|
|
25
|
+
console.log(` ${chalk_1.default.bold(s.id.slice(0, 12))}... ` +
|
|
26
|
+
`${chalk_1.default.dim(s.provider + '/' + s.model)} ` +
|
|
27
|
+
`${chalk_1.default.dim(s.messageCount + ' messages')} ` +
|
|
28
|
+
`${chalk_1.default.dim(duration)}`);
|
|
29
|
+
}
|
|
30
|
+
console.log('');
|
|
31
|
+
}
|
|
32
|
+
else if (options.show) {
|
|
33
|
+
const session = engine.getSessionManager().getSession(options.show);
|
|
34
|
+
if (!session) {
|
|
35
|
+
console.log(chalk_1.default.yellow(`Session not found: ${options.show}`));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(chalk_1.default.cyan('\n Session Details:\n'));
|
|
39
|
+
console.log(` ID: ${session.id}`);
|
|
40
|
+
console.log(` Provider: ${session.provider}`);
|
|
41
|
+
console.log(` Model: ${session.model}`);
|
|
42
|
+
console.log(` Messages: ${session.messageCount}`);
|
|
43
|
+
console.log(` Tokens: ${session.tokenUsage.total} (${session.tokenUsage.prompt} prompt + ${session.tokenUsage.completion} completion)`);
|
|
44
|
+
console.log(` Started: ${session.startTime.toISOString()}`);
|
|
45
|
+
console.log(` End: ${session.endTime?.toISOString() || 'active'}`);
|
|
46
|
+
console.log('');
|
|
47
|
+
}
|
|
48
|
+
else if (options.resume) {
|
|
49
|
+
const resumed = engine.getSessionManager().setCurrentSession(options.resume);
|
|
50
|
+
if (resumed) {
|
|
51
|
+
console.log(chalk_1.default.green(`Resumed session: ${options.resume}`));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(chalk_1.default.yellow(`Session not found: ${options.resume}`));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const session = engine.getSessionManager().getCurrentSession();
|
|
59
|
+
if (session) {
|
|
60
|
+
console.log(chalk_1.default.cyan(`\n Current Session: ${session.id}\n`));
|
|
61
|
+
console.log(` ${chalk_1.default.dim('Provider:')} ${session.provider}`);
|
|
62
|
+
console.log(` ${chalk_1.default.dim('Model:')} ${session.model}`);
|
|
63
|
+
console.log(` ${chalk_1.default.dim('Messages:')} ${session.messageCount}`);
|
|
64
|
+
console.log(` ${chalk_1.default.dim('Tokens:')} ${session.tokenUsage.total}`);
|
|
65
|
+
console.log('');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
await engine.shutdown();
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/commands/session.ts"],"names":[],"mappings":";;;;;AAKA,wCAgEC;AArED,kDAA0B;AAC1B,oDAA8C;AAC9C,oDAAmD;AAG5C,KAAK,UAAU,cAAc,CAAC,OAIpC;IACC,MAAM,MAAM,GAAG,IAAA,qBAAU,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAE1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO;gBACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;gBACxE,CAAC,CAAC,QAAQ,CAAC;YACb,OAAO,CAAC,GAAG,CACT,KAAK,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM;gBACxC,GAAG,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG;gBAC3C,GAAG,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG;gBAC7C,GAAG,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CACzB,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,aAAa,OAAO,CAAC,UAAU,CAAC,UAAU,cAAc,CAAC,CAAC;QAC3I,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC/D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class CommandHistory {
|
|
2
|
+
private history;
|
|
3
|
+
private maxSize;
|
|
4
|
+
private currentIndex;
|
|
5
|
+
constructor(maxSize?: number);
|
|
6
|
+
load(): Promise<void>;
|
|
7
|
+
add(command: string): Promise<void>;
|
|
8
|
+
getPrevious(): string | null;
|
|
9
|
+
getNext(): string | null;
|
|
10
|
+
getAll(): string[];
|
|
11
|
+
search(pattern: string): string[];
|
|
12
|
+
private persist;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=useHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHistory.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/useHistory.ts"],"names":[],"mappings":"AAMA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAM;gBAEd,OAAO,GAAE,MAAa;IAI5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC,WAAW,IAAI,MAAM,GAAG,IAAI;IAM5B,OAAO,IAAI,MAAM,GAAG,IAAI;IASxB,MAAM,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;YAInB,OAAO;CAOtB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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.CommandHistory = void 0;
|
|
7
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
+
const HISTORY_FILE = node_path_1.default.resolve(node_os_1.default.homedir(), '.cl8_history');
|
|
11
|
+
class CommandHistory {
|
|
12
|
+
history = [];
|
|
13
|
+
maxSize;
|
|
14
|
+
currentIndex = -1;
|
|
15
|
+
constructor(maxSize = 1000) {
|
|
16
|
+
this.maxSize = maxSize;
|
|
17
|
+
}
|
|
18
|
+
async load() {
|
|
19
|
+
try {
|
|
20
|
+
const content = await promises_1.default.readFile(HISTORY_FILE, 'utf-8');
|
|
21
|
+
this.history = content.split('\n').filter(Boolean).slice(-this.maxSize);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
this.history = [];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async add(command) {
|
|
28
|
+
if (!command.trim())
|
|
29
|
+
return;
|
|
30
|
+
this.history.push(command);
|
|
31
|
+
if (this.history.length > this.maxSize) {
|
|
32
|
+
this.history.shift();
|
|
33
|
+
}
|
|
34
|
+
this.currentIndex = this.history.length;
|
|
35
|
+
await this.persist();
|
|
36
|
+
}
|
|
37
|
+
getPrevious() {
|
|
38
|
+
if (this.history.length === 0)
|
|
39
|
+
return null;
|
|
40
|
+
this.currentIndex = Math.max(0, this.currentIndex - 1);
|
|
41
|
+
return this.history[this.currentIndex] || null;
|
|
42
|
+
}
|
|
43
|
+
getNext() {
|
|
44
|
+
if (this.currentIndex >= this.history.length - 1) {
|
|
45
|
+
this.currentIndex = this.history.length;
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
this.currentIndex = Math.min(this.history.length - 1, this.currentIndex + 1);
|
|
49
|
+
return this.history[this.currentIndex] || null;
|
|
50
|
+
}
|
|
51
|
+
getAll() {
|
|
52
|
+
return [...this.history];
|
|
53
|
+
}
|
|
54
|
+
search(pattern) {
|
|
55
|
+
return this.history.filter(cmd => cmd.includes(pattern));
|
|
56
|
+
}
|
|
57
|
+
async persist() {
|
|
58
|
+
try {
|
|
59
|
+
await promises_1.default.writeFile(HISTORY_FILE, this.history.join('\n'), 'utf-8');
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// fail silently for history persistence
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.CommandHistory = CommandHistory;
|
|
67
|
+
//# sourceMappingURL=useHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHistory.js","sourceRoot":"","sources":["../../../src/cli/hooks/useHistory.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAkC;AAClC,0DAA6B;AAC7B,sDAAyB;AAEzB,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAEhE,MAAa,cAAc;IACjB,OAAO,GAAa,EAAE,CAAC;IACvB,OAAO,CAAS;IAChB,YAAY,GAAG,CAAC,CAAC,CAAC;IAE1B,YAAY,UAAkB,IAAI;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;IACjD,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;IACjD,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;CACF;AA1DD,wCA0DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,SAAS,IAAI,OAAO,CAyEnC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
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.createCLI = createCLI;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
10
|
+
const index_js_1 = require("../config/index.js");
|
|
11
|
+
const chat_js_1 = require("./commands/chat.js");
|
|
12
|
+
const init_js_1 = require("./commands/init.js");
|
|
13
|
+
const session_js_1 = require("./commands/session.js");
|
|
14
|
+
const config_js_1 = require("./commands/config.js");
|
|
15
|
+
const pixel_logo_js_1 = require("../ui/pixel-logo.js");
|
|
16
|
+
const package_json_1 = __importDefault(require("../../package.json"));
|
|
17
|
+
function showBanner() {
|
|
18
|
+
const columns = process.stdout.columns || 100;
|
|
19
|
+
console.log();
|
|
20
|
+
console.log((0, pixel_logo_js_1.renderLogo)(columns));
|
|
21
|
+
console.log(` ${chalk_1.default.cyan('Terminal AI Coding & Automation Assistant')}`);
|
|
22
|
+
console.log(` ${chalk_1.default.dim(`Version ${package_json_1.default.version} · Type /help for commands`)}`);
|
|
23
|
+
console.log();
|
|
24
|
+
}
|
|
25
|
+
function createCLI() {
|
|
26
|
+
const config = (0, index_js_1.loadConfig)();
|
|
27
|
+
(0, logger_js_1.createLogger)(config.logging.level);
|
|
28
|
+
const program = new commander_1.Command();
|
|
29
|
+
program
|
|
30
|
+
.name('cl8')
|
|
31
|
+
.description('Terminal AI Coding & Automation Assistant')
|
|
32
|
+
.version(package_json_1.default.version)
|
|
33
|
+
.addHelpText('beforeAll', () => { showBanner(); return ''; });
|
|
34
|
+
program
|
|
35
|
+
.command('chat', { isDefault: true })
|
|
36
|
+
.description('Start an interactive chat session')
|
|
37
|
+
.option('-p, --provider <provider>', 'AI provider (openai, gemini, ollama)')
|
|
38
|
+
.option('-m, --model <model>', 'Model name')
|
|
39
|
+
.option('-w, --workspace <path>', 'Workspace directory')
|
|
40
|
+
.option('-s, --session <id>', 'Resume session')
|
|
41
|
+
.option('--reduced-motion', 'Disable animations and transitions')
|
|
42
|
+
.option('--high-contrast', 'Enable high contrast mode')
|
|
43
|
+
.option('--no-splash', 'Skip startup splash screen')
|
|
44
|
+
.option('--reset-onboarding', 'Reset first-launch onboarding')
|
|
45
|
+
.option('--theme <mode>', 'Color theme (dark, light, auto)')
|
|
46
|
+
.action(async (options) => {
|
|
47
|
+
await (0, chat_js_1.chatCommand)(options);
|
|
48
|
+
});
|
|
49
|
+
program
|
|
50
|
+
.command('init')
|
|
51
|
+
.description('Initialize CL8 configuration')
|
|
52
|
+
.action(async () => {
|
|
53
|
+
await (0, init_js_1.initCommand)();
|
|
54
|
+
});
|
|
55
|
+
program
|
|
56
|
+
.command('session')
|
|
57
|
+
.description('Manage sessions')
|
|
58
|
+
.option('-l, --list', 'List recent sessions')
|
|
59
|
+
.option('-s, --show <id>', 'Show session details')
|
|
60
|
+
.option('-r, --resume <id>', 'Resume a session')
|
|
61
|
+
.action(async (options) => {
|
|
62
|
+
await (0, session_js_1.sessionCommand)(options);
|
|
63
|
+
});
|
|
64
|
+
program
|
|
65
|
+
.command('config')
|
|
66
|
+
.description('Manage configuration')
|
|
67
|
+
.option('-s, --show', 'Show configuration')
|
|
68
|
+
.option('--set <key>', 'Set a config value')
|
|
69
|
+
.option('--value <val>', 'Value to set')
|
|
70
|
+
.option('--reset', 'Reset to defaults')
|
|
71
|
+
.option('--path', 'Show config file path')
|
|
72
|
+
.action(async (options) => {
|
|
73
|
+
await (0, config_js_1.configCommand)(options);
|
|
74
|
+
});
|
|
75
|
+
program
|
|
76
|
+
.command('doctor')
|
|
77
|
+
.description('Check system health')
|
|
78
|
+
.action(async () => {
|
|
79
|
+
console.log(chalk_1.default.cyan('\n 🏥 CL8 Health Check\n'));
|
|
80
|
+
await checkHealth();
|
|
81
|
+
});
|
|
82
|
+
program
|
|
83
|
+
.command('version')
|
|
84
|
+
.description('Show version')
|
|
85
|
+
.action(() => {
|
|
86
|
+
console.log('0.1.0');
|
|
87
|
+
});
|
|
88
|
+
return program;
|
|
89
|
+
}
|
|
90
|
+
async function checkHealth() {
|
|
91
|
+
const checks = [
|
|
92
|
+
{ name: 'Node.js version', pass: process.version >= 'v18.0.0', detail: process.version },
|
|
93
|
+
{ name: 'Platform', pass: true, detail: process.platform },
|
|
94
|
+
{ name: 'Configuration', pass: true, detail: 'Present' },
|
|
95
|
+
];
|
|
96
|
+
const config = (0, index_js_1.loadConfig)();
|
|
97
|
+
checks.push({
|
|
98
|
+
name: `${config.ai.defaultProvider} API key`,
|
|
99
|
+
pass: !!((config.ai.defaultProvider === 'openai' && config.ai.openai?.apiKey) ||
|
|
100
|
+
(config.ai.defaultProvider === 'gemini' && config.ai.gemini?.apiKey) ||
|
|
101
|
+
config.ai.defaultProvider === 'ollama'),
|
|
102
|
+
detail: config.ai.defaultProvider === 'ollama' ? 'Local only' : 'Configured',
|
|
103
|
+
});
|
|
104
|
+
let allPass = true;
|
|
105
|
+
for (const check of checks) {
|
|
106
|
+
const icon = check.pass ? chalk_1.default.green('✓') : chalk_1.default.red('✖');
|
|
107
|
+
if (!check.pass)
|
|
108
|
+
allPass = false;
|
|
109
|
+
console.log(` ${icon} ${check.name}: ${chalk_1.default.dim(check.detail)}`);
|
|
110
|
+
}
|
|
111
|
+
console.log(allPass
|
|
112
|
+
? chalk_1.default.green('\n ✅ All checks passed!\n')
|
|
113
|
+
: chalk_1.default.yellow('\n ⚠ Some checks failed. Run `cl8 init` to configure.\n'));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function loadEnv(): void;
|
|
2
|
+
export declare function getEnv(key: string, defaultValue?: string): string;
|
|
3
|
+
export declare function getEnvOrThrow(key: string): string;
|
|
4
|
+
export declare function getEnvInt(key: string, defaultValue: number): number;
|
|
5
|
+
export declare function getEnvBool(key: string, defaultValue: boolean): boolean;
|
|
6
|
+
export declare function getEnvList(key: string, defaultValue?: string[]): string[];
|
|
7
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AASA,wBAAgB,OAAO,IAAI,IAAI,CAM9B;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAItE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAI7E"}
|