aboutsummaryrefslogtreecommitdiff
path: root/modules/core/module-ollama.js
blob: 3eabe192f60cafcd3a2f87433811f495a3874448 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Extracted from newOS4 index.html — OllamaModule
        class OllamaModule {
            constructor() { this.commands = {}; this.terminal = null; }
            getHelpInfo() {
                return {
                    'ollama': 'ollama — Open the Ollama model manager UI',
                    'ollamaconnect': 'ollamaconnect — Connect to the Ollama server',
                    'ollamadisconnect': 'ollamadisconnect — Disconnect from the Ollama server',
                    'ollamamodels': 'ollamamodels — List all available models from Ollama',
                    'ollamasetmodel': 'ollamasetmodel <name> — Set the active Ollama model',
                    'ollamasetproxy': 'ollamasetproxy [endpoint] — View or change the Ollama endpoint URL',
                };
            }
            registerCommands() {
                this.commands['ollama'] = () => { this.terminal.openOllamaManager(); };
                this.commands['ollamaconnect'] = async () => {
                    await this.terminal.ollamaManager.connect();
                    this.terminal.updateOllamaStatus();
                };
                this.commands['ollamadisconnect'] = () => {
                    this.terminal.ollamaManager.connected = false;
                    this.terminal.ollamaManager.models = [];
                    this.terminal.print('Ollama disconnected', 'info');
                    this.terminal.updateOllamaStatus();
                };
                this.commands['ollamamodels'] = () => {
                    const models = this.terminal.ollamaManager.getModels();
                    if(models.length === 0) return this.terminal.print("No models found. Connect first.");
                    models.forEach(m => this.terminal.print(`${m.name} (${(m.size/1e9).toFixed(1)}GB)`));
                };
                this.commands['ollamasetmodel'] = (args) => {
                    if(!args[0]) return this.terminal.print("Usage: ollamasetmodel <name>", 'warning');
                    this.terminal.ollamaManager.setModel(args[0]);
                };
                this.commands['ollamasetproxy'] = (args) => {
                    if(!args[0]) {
                        const ep = this.terminal.ollamaManager.endpoint;
                        return this.terminal.print(`Current Ollama endpoint: ${ep}`, 'info');
                    }
                    this.terminal.ollamaManager.setEndpoint(args[0]);
                    this.terminal.print(`Ollama endpoint set to: ${args[0]}`, 'success');
                };
                this.commands['ai'] = async (args) => {
                    if(!args[0]) return this.terminal.print("Usage: ai <prompt>", 'warning');
                    await this.terminal.ollamaManager.chat(args.join(' '));
                };
                this.commands['ask'] = async (args) => {
                    if(!args[0]) return this.terminal.print("Usage: ask <prompt>", 'warning');
                    await this.terminal.ollamaManager.chat(args.join(' '));
                };
            }
        }