@openinference/cli 0.3.0 → 1.0.2

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 (49) hide show
  1. package/README.md +74 -0
  2. package/data/models.json +643 -120
  3. package/dist/chat.d.ts.map +1 -1
  4. package/dist/chat.js +1 -5
  5. package/dist/chat.js.map +1 -1
  6. package/dist/config.d.ts +3 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +8 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/data/models.json +643 -120
  11. package/dist/hardware.d.ts +5 -0
  12. package/dist/hardware.d.ts.map +1 -1
  13. package/dist/hardware.js +57 -4
  14. package/dist/hardware.js.map +1 -1
  15. package/dist/index.js +125 -53
  16. package/dist/index.js.map +1 -1
  17. package/dist/manage.d.ts +11 -0
  18. package/dist/manage.d.ts.map +1 -0
  19. package/dist/manage.js +118 -0
  20. package/dist/manage.js.map +1 -0
  21. package/dist/ollama.d.ts +1 -0
  22. package/dist/ollama.d.ts.map +1 -1
  23. package/dist/ollama.js +12 -3
  24. package/dist/ollama.js.map +1 -1
  25. package/dist/prompt.d.ts +16 -0
  26. package/dist/prompt.d.ts.map +1 -1
  27. package/dist/prompt.js +129 -11
  28. package/dist/prompt.js.map +1 -1
  29. package/dist/recommend-run.d.ts +6 -4
  30. package/dist/recommend-run.d.ts.map +1 -1
  31. package/dist/recommend-run.js +20 -25
  32. package/dist/recommend-run.js.map +1 -1
  33. package/dist/recommend.d.ts +20 -1
  34. package/dist/recommend.d.ts.map +1 -1
  35. package/dist/recommend.js +68 -22
  36. package/dist/recommend.js.map +1 -1
  37. package/dist/setup.d.ts +12 -4
  38. package/dist/setup.d.ts.map +1 -1
  39. package/dist/setup.js +141 -58
  40. package/dist/setup.js.map +1 -1
  41. package/dist/start.d.ts +2 -2
  42. package/dist/start.d.ts.map +1 -1
  43. package/dist/start.js +4 -9
  44. package/dist/start.js.map +1 -1
  45. package/dist/use-cases.d.ts +17 -0
  46. package/dist/use-cases.d.ts.map +1 -0
  47. package/dist/use-cases.js +120 -0
  48. package/dist/use-cases.js.map +1 -0
  49. package/package.json +8 -2
@@ -5,9 +5,14 @@ export type HardwareProfile = {
5
5
  hasGpu: boolean;
6
6
  gpuName: string | null;
7
7
  platform: NodeJS.Platform;
8
+ osLabel: string;
9
+ diskFreeGb: number;
8
10
  /** Usable memory budget for model weights (GB). */
9
11
  budgetGb: number;
10
12
  };
11
13
  export declare function detectHardware(): HardwareProfile;
12
14
  export declare function formatHardware(hw: HardwareProfile): string;
15
+ export declare function ollamaModelsPath(): string;
16
+ /** Model fits if download size + reserve fits on disk. Tighter reserve on small disks. */
17
+ export declare function fitsDisk(modelSizeMb: number, diskFreeGb: number): boolean;
13
18
  //# sourceMappingURL=hardware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hardware.d.ts","sourceRoot":"","sources":["../src/hardware.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA0BF,wBAAgB,cAAc,IAAI,eAAe,CAoBhD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAK1D"}
1
+ {"version":3,"file":"hardware.d.ts","sourceRoot":"","sources":["../src/hardware.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAsEF,wBAAgB,cAAc,IAAI,eAAe,CAmBhD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAK1D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAKzE"}
package/dist/hardware.js CHANGED
@@ -5,7 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.detectHardware = detectHardware;
7
7
  exports.formatHardware = formatHardware;
8
+ exports.ollamaModelsPath = ollamaModelsPath;
9
+ exports.fitsDisk = fitsDisk;
10
+ const node_fs_1 = __importDefault(require("node:fs"));
8
11
  const node_os_1 = __importDefault(require("node:os"));
12
+ const node_path_1 = __importDefault(require("node:path"));
9
13
  const node_child_process_1 = require("node:child_process");
10
14
  function roundGb(bytes) {
11
15
  return Math.round((bytes / 1024 ** 3) * 10) / 10;
@@ -33,15 +37,51 @@ function detectVram() {
33
37
  return { vramGb: 0, name: null };
34
38
  }
35
39
  }
40
+ function detectDiskFreeGb() {
41
+ const home = node_os_1.default.homedir();
42
+ if (process.platform === 'win32') {
43
+ const drive = node_path_1.default.parse(home).root || 'C:\\';
44
+ const ps = (0, node_child_process_1.spawnSync)('powershell', ['-NoProfile', '-Command', `(Get-PSDrive -Name '${drive.replace(':\\', '')}').Free`], { encoding: 'utf8', timeout: 8000, windowsHide: true });
45
+ if (ps.status === 0 && ps.stdout?.trim()) {
46
+ const bytes = parseInt(ps.stdout.trim(), 10);
47
+ if (!Number.isNaN(bytes))
48
+ return roundGb(bytes);
49
+ }
50
+ }
51
+ try {
52
+ const st = node_fs_1.default.statfsSync(home);
53
+ return roundGb(st.bfree * st.bsize);
54
+ }
55
+ catch {
56
+ return 0;
57
+ }
58
+ }
59
+ function osLabel() {
60
+ const type = node_os_1.default.type();
61
+ const rel = node_os_1.default.release();
62
+ if (type === 'Windows_NT')
63
+ return `Windows ${rel}`;
64
+ if (type === 'Darwin')
65
+ return `macOS ${rel}`;
66
+ return `${type} ${rel}`;
67
+ }
68
+ function memoryBudgetGb(ramGb, hasGpu, vramGb) {
69
+ // Scale OS reserve for small cloud VMs (e.g. AWS 4 GB → reports ~3.7 GB)
70
+ const headroom = ramGb <= 4 ? 1.2 : ramGb <= 6 ? 2 : ramGb <= 8 ? 2.5 : 4;
71
+ const ramBudget = Math.max(0.35, ramGb - headroom);
72
+ if (hasGpu && vramGb > 0) {
73
+ const vramBudget = Math.max(0, vramGb - 0.5);
74
+ return Math.max(vramBudget, ramBudget * 0.6);
75
+ }
76
+ return ramBudget;
77
+ }
36
78
  function detectHardware() {
37
79
  const ramGb = roundGb(node_os_1.default.totalmem());
38
80
  const cpuCores = node_os_1.default.cpus().length;
39
81
  const { vramGb, name } = detectVram();
40
82
  const hasGpu = vramGb > 0;
41
- const osHeadroom = 4;
42
- const vramBudget = hasGpu ? Math.max(0, vramGb - 1) : 0;
43
- const ramBudget = Math.max(0, ramGb - osHeadroom);
44
- const budgetGb = hasGpu ? Math.max(vramBudget, ramBudget * 0.6) : ramBudget;
83
+ const diskFreeGb = detectDiskFreeGb();
84
+ const budgetGb = memoryBudgetGb(ramGb, hasGpu, vramGb);
45
85
  return {
46
86
  ramGb,
47
87
  cpuCores,
@@ -49,6 +89,8 @@ function detectHardware() {
49
89
  hasGpu,
50
90
  gpuName: name,
51
91
  platform: process.platform,
92
+ osLabel: osLabel(),
93
+ diskFreeGb,
52
94
  budgetGb: Math.round(budgetGb * 10) / 10,
53
95
  };
54
96
  }
@@ -58,4 +100,15 @@ function formatHardware(hw) {
58
100
  : 'CPU inference';
59
101
  return `${hw.ramGb} GB RAM · ${hw.cpuCores} cores · ${gpu}`;
60
102
  }
103
+ function ollamaModelsPath() {
104
+ return node_path_1.default.join(node_os_1.default.homedir(), '.ollama', 'models');
105
+ }
106
+ /** Model fits if download size + reserve fits on disk. Tighter reserve on small disks. */
107
+ function fitsDisk(modelSizeMb, diskFreeGb) {
108
+ if (diskFreeGb <= 0)
109
+ return true;
110
+ const reserveGb = diskFreeGb < 15 ? 0.8 : 2;
111
+ const needGb = modelSizeMb / 1024 + reserveGb;
112
+ return diskFreeGb >= needGb;
113
+ }
61
114
  //# sourceMappingURL=hardware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hardware.js","sourceRoot":"","sources":["../src/hardware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hardware.js","sourceRoot":"","sources":["../src/hardware.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,9 @@ const start_1 = require("./start");
7
7
  const recommend_run_1 = require("./recommend-run");
8
8
  const chat_1 = require("./chat");
9
9
  const chat_repl_1 = require("./chat-repl");
10
+ const manage_1 = require("./manage");
11
+ const use_cases_1 = require("./use-cases");
12
+ const hardware_1 = require("./hardware");
10
13
  const program = new commander_1.Command();
11
14
  function fail(e) {
12
15
  const msg = e instanceof Error ? e.message : String(e);
@@ -15,60 +18,65 @@ function fail(e) {
15
18
  }
16
19
  const urlOption = {
17
20
  flags: '--ollama-url <url>',
18
- description: 'AI runtime URL (default: $OLLAMA_URL, saved config, or localhost)',
21
+ description: 'Ollama API URL (default: $OLLAMA_URL, saved config, or localhost)',
19
22
  };
20
23
  const dockerOption = {
21
24
  flags: '--docker',
22
- description: 'server/Docker: use remote runtime over HTTP (no local install)',
25
+ description: 'remote Ollama over HTTP (no local install)',
23
26
  };
27
+ const setupOptions = [
28
+ { flags: '-y, --yes', description: 'skip wizard — auto-pick best model and install' },
29
+ { flags: '-m, --model <id>', description: 'use a specific model tag' },
30
+ {
31
+ flags: '--use-case <id>',
32
+ description: 'goal: coding | chat | pdfs | writing | image | research',
33
+ },
34
+ { flags: '--all', description: 'include unverified catalog tags' },
35
+ { flags: '--skip-install', description: 'do not install Ollama if missing' },
36
+ dockerOption,
37
+ urlOption,
38
+ ];
39
+ function attachSetupOptions(cmd) {
40
+ for (const o of setupOptions) {
41
+ cmd.option(o.flags, o.description);
42
+ }
43
+ return cmd;
44
+ }
45
+ function setupFlags(opts) {
46
+ const useCase = (0, recommend_run_1.parseUseCaseArg)(opts.useCase);
47
+ return {
48
+ yes: Boolean(opts.yes),
49
+ model: opts.model,
50
+ useCase,
51
+ all: Boolean(opts.all),
52
+ skipInstall: Boolean(opts.skipInstall),
53
+ docker: Boolean(opts.docker),
54
+ ollamaUrl: opts.ollamaUrl,
55
+ };
56
+ }
24
57
  program
25
58
  .name('oi')
26
- .description('OpenInference — one command to run open-source AI on your computer')
27
- .version('0.3.0');
28
- program
59
+ .description('OpenInference — find, install, and chat with local open-source models')
60
+ .version('1.0.2');
61
+ const startCmd = program
29
62
  .command('start', { isDefault: true })
30
- .description('One command: set up the best model, then chat (default)')
31
- .option('-m, --model <id>', 'use a specific model tag')
32
- .option('--choose', 'pick from 5 recommendations instead of auto-select')
63
+ .description('Wizard: use case scan pick → confirm → install → chat')
33
64
  .option('--force', 'run setup again even if already configured')
34
- .option('--no-chat', 'setup only, do not open chat after')
35
- .option('--skip-install', 'do not install local runtime if missing')
36
- .option(dockerOption.flags, dockerOption.description)
37
- .option(urlOption.flags, urlOption.description)
38
- .action(async (opts) => {
65
+ .option('--no-chat', 'setup only, do not open chat after');
66
+ attachSetupOptions(startCmd);
67
+ startCmd.action(async (opts) => {
39
68
  try {
40
- await (0, start_1.runStart)({
41
- model: opts.model,
42
- choose: opts.choose,
43
- force: opts.force,
44
- chat: opts.chat,
45
- skipInstall: opts.skipInstall,
46
- docker: opts.docker,
47
- ollamaUrl: opts.ollamaUrl,
48
- });
69
+ await (0, start_1.runStart)({ ...setupFlags(opts), force: Boolean(opts.force), chat: opts.chat });
49
70
  }
50
71
  catch (e) {
51
72
  fail(e);
52
73
  }
53
74
  });
54
- program
55
- .command('setup')
56
- .description('Same as oi start (use --choose to pick a model manually)')
57
- .option('-m, --model <id>', 'use a specific model tag')
58
- .option('--choose', 'pick from 5 recommendations')
59
- .option('--skip-install', 'do not install local runtime if missing')
60
- .option(dockerOption.flags, dockerOption.description)
61
- .option(urlOption.flags, urlOption.description)
62
- .action(async (opts) => {
75
+ const setupCmd = program.command('setup').description('Wizard without opening chat');
76
+ attachSetupOptions(setupCmd);
77
+ setupCmd.action(async (opts) => {
63
78
  try {
64
- await (0, start_1.runStart)({
65
- model: opts.model,
66
- choose: opts.choose,
67
- chat: false,
68
- skipInstall: opts.skipInstall,
69
- docker: opts.docker,
70
- ollamaUrl: opts.ollamaUrl,
71
- });
79
+ await (0, start_1.runStart)({ ...setupFlags(opts), chat: false });
72
80
  }
73
81
  catch (e) {
74
82
  fail(e);
@@ -76,13 +84,58 @@ program
76
84
  });
77
85
  program
78
86
  .command('recommend')
79
- .description('Preview model picks without installing')
80
- .option('-n, --limit <n>', 'number of recommendations', '5')
81
- .option('--all', 'full catalog, not just verified tags')
87
+ .description('Preview recommendations (no install)')
88
+ .option('-n, --limit <n>', 'number of results', '10')
89
+ .option('--use-case <id>', 'coding | chat | pdfs | writing | image | research')
90
+ .option('--all', 'full catalog')
82
91
  .action((opts) => {
83
92
  try {
84
- const n = Math.min(Math.max(parseInt(opts.limit, 10) || 5, 1), 20);
85
- (0, recommend_run_1.runRecommend)({ limit: n, all: opts.all });
93
+ const n = Math.min(Math.max(parseInt(opts.limit, 10) || 10, 1), 25);
94
+ (0, recommend_run_1.runRecommend)({ limit: n, all: opts.all, useCase: (0, recommend_run_1.parseUseCaseArg)(opts.useCase) });
95
+ }
96
+ catch (e) {
97
+ fail(e);
98
+ }
99
+ });
100
+ program
101
+ .command('browse')
102
+ .description('Browse catalog picks for your hardware and use case')
103
+ .option('--use-case <id>', 'coding | chat | pdfs | writing | image | research')
104
+ .option('--all', 'full catalog')
105
+ .action((opts) => {
106
+ try {
107
+ (0, recommend_run_1.runBrowse)({ all: opts.all, useCase: (0, recommend_run_1.parseUseCaseArg)(opts.useCase) });
108
+ }
109
+ catch (e) {
110
+ fail(e);
111
+ }
112
+ });
113
+ program
114
+ .command('use <model>')
115
+ .description('Switch active model (pulls first if needed)')
116
+ .option(urlOption.flags, urlOption.description)
117
+ .option('--docker', 'remote Ollama')
118
+ .action(async (model, opts) => {
119
+ try {
120
+ await (0, manage_1.runUse)(model, { ollamaUrl: opts.ollamaUrl, docker: opts.docker });
121
+ }
122
+ catch (e) {
123
+ fail(e);
124
+ }
125
+ });
126
+ program
127
+ .command('pull <model>')
128
+ .description('Download a model without switching')
129
+ .option('--default', 'also set as active model')
130
+ .option(urlOption.flags, urlOption.description)
131
+ .option('--docker', 'remote Ollama')
132
+ .action(async (model, opts) => {
133
+ try {
134
+ await (0, manage_1.runPull)(model, {
135
+ ollamaUrl: opts.ollamaUrl,
136
+ docker: opts.docker,
137
+ setDefault: Boolean(opts.default),
138
+ });
86
139
  }
87
140
  catch (e) {
88
141
  fail(e);
@@ -90,10 +143,11 @@ program
90
143
  });
91
144
  program
92
145
  .command('chat [message]')
93
- .description('Chat with your local model (no message = interactive)')
94
- .option('-m, --model <id>', 'override model')
146
+ .description('Chat with active model (no message = interactive)')
147
+ .option('-y, --yes', 'if setup needed, skip wizard')
148
+ .option('-m, --model <id>', 'override model for this session')
95
149
  .option(urlOption.flags, urlOption.description)
96
- .option('--docker', 'remote runtime; do not start local serve')
150
+ .option('--docker', 'remote Ollama')
97
151
  .action(async (message, opts) => {
98
152
  try {
99
153
  const chatOpts = {
@@ -103,8 +157,12 @@ program
103
157
  };
104
158
  if (!message?.trim()) {
105
159
  if (!(0, config_1.loadConfig)() && !opts.model) {
106
- console.log('\n Not set up yet. Running setup first…\n');
107
- await (0, start_1.runStart)({ chat: false, ollamaUrl: opts.ollamaUrl, docker: opts.docker });
160
+ console.log('\n Not set up yet. Starting setup wizard…\n');
161
+ await (0, start_1.runStart)({ chat: false, yes: opts.yes, ollamaUrl: opts.ollamaUrl, docker: opts.docker });
162
+ }
163
+ if (!(0, config_1.loadConfig)() && !opts.model) {
164
+ console.log(' Setup not complete. Run `oi` to finish.\n');
165
+ return;
108
166
  }
109
167
  await (0, chat_repl_1.runChatRepl)(chatOpts);
110
168
  return;
@@ -129,7 +187,18 @@ program
129
187
  }
130
188
  console.log('\n Models on this computer:\n');
131
189
  names.forEach((n) => console.log(` ${n}`));
132
- console.log('');
190
+ console.log(`\n Stored under: ${(0, hardware_1.ollamaModelsPath)()}\n`);
191
+ }
192
+ catch (e) {
193
+ fail(e);
194
+ }
195
+ });
196
+ program
197
+ .command('storage')
198
+ .description('Where models are stored and what is downloaded')
199
+ .action(async () => {
200
+ try {
201
+ await (0, manage_1.runStorage)();
133
202
  }
134
203
  catch (e) {
135
204
  fail(e);
@@ -145,9 +214,12 @@ program
145
214
  return;
146
215
  }
147
216
  console.log('\n OpenInference\n');
148
- console.log(` Model: ${cfg.modelName}`);
149
- console.log(` Since: ${new Date(cfg.setupAt).toLocaleDateString()}\n`);
150
- console.log(' Run `oi` to chat again.\n');
217
+ console.log(` Model: ${cfg.modelName} (${cfg.model})`);
218
+ if (cfg.useCase)
219
+ console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(cfg.useCase)}`);
220
+ console.log(` Since: ${new Date(cfg.setupAt).toLocaleDateString()}`);
221
+ console.log(` Storage: ${(0, hardware_1.ollamaModelsPath)()}\n`);
222
+ console.log(' Run `oi` to chat · `oi use <model>` to switch\n');
151
223
  });
152
224
  program.parse();
153
225
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function runUse(modelId: string, opts: {
2
+ ollamaUrl?: string;
3
+ docker?: boolean;
4
+ }): Promise<void>;
5
+ export declare function runPull(modelId: string, opts: {
6
+ ollamaUrl?: string;
7
+ docker?: boolean;
8
+ setDefault?: boolean;
9
+ }): Promise<void>;
10
+ export declare function runStorage(): Promise<void>;
11
+ //# sourceMappingURL=manage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../src/manage.ts"],"names":[],"mappings":"AAYA,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3G;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD"}
package/dist/manage.js ADDED
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runUse = runUse;
37
+ exports.runPull = runPull;
38
+ exports.runStorage = runStorage;
39
+ const config_1 = require("./config");
40
+ const recommend_1 = require("./recommend");
41
+ const hardware_1 = require("./hardware");
42
+ const ollama_1 = require("./ollama");
43
+ async function runUse(modelId, opts) {
44
+ const catalog = (0, recommend_1.loadCatalog)();
45
+ const entry = catalog.find((m) => m.id === modelId);
46
+ const name = entry?.name ?? modelId;
47
+ const base = (0, ollama_1.resolveOllamaUrl)(opts.ollamaUrl);
48
+ if (!(await (0, ollama_1.pingOllama)(base))) {
49
+ if (opts.docker)
50
+ throw new Error(`Ollama not reachable at ${base}`);
51
+ await (0, ollama_1.ensureHostOllamaRunning)(base);
52
+ }
53
+ const installed = await (0, ollama_1.listModelTags)(base);
54
+ const has = installed.some((t) => t === modelId || t.startsWith(`${modelId}:`));
55
+ if (!has) {
56
+ console.log(`\n ${modelId} is not downloaded yet. Pulling…\n`);
57
+ if (opts.docker)
58
+ await (0, ollama_1.pullModelRemote)(base, modelId);
59
+ else
60
+ await (0, ollama_1.pullModelHost)(modelId);
61
+ }
62
+ (0, config_1.setActiveModel)(modelId, name);
63
+ console.log(`\n ✓ Active model: ${name} (${modelId})\n`);
64
+ }
65
+ async function runPull(modelId, opts) {
66
+ const base = (0, ollama_1.resolveOllamaUrl)(opts.ollamaUrl);
67
+ const catalog = (0, recommend_1.loadCatalog)();
68
+ const entry = catalog.find((m) => m.id === modelId);
69
+ if (entry) {
70
+ const hw = (0, hardware_1.detectHardware)();
71
+ if (entry.ramGb > hw.budgetGb) {
72
+ console.log(`\n Warning: ${entry.name} may not fit (~${entry.ramGb} GB needed, ~${hw.budgetGb} GB available).\n`);
73
+ }
74
+ }
75
+ if (opts.docker)
76
+ await (0, ollama_1.pullModelRemote)(base, modelId);
77
+ else {
78
+ if (!(await (0, ollama_1.pingOllama)(base)))
79
+ await (0, ollama_1.ensureHostOllamaRunning)(base);
80
+ await (0, ollama_1.pullModelHost)(modelId);
81
+ }
82
+ if (opts.setDefault) {
83
+ (0, config_1.setActiveModel)(modelId, entry?.name ?? modelId);
84
+ console.log(`\n ✓ Downloaded and set as active: ${entry?.name ?? modelId}\n`);
85
+ }
86
+ else {
87
+ console.log(`\n ✓ Downloaded: ${modelId}\n`);
88
+ }
89
+ }
90
+ async function runStorage() {
91
+ const { ollamaModelsPath } = await Promise.resolve().then(() => __importStar(require('./hardware')));
92
+ const cfg = (0, config_1.loadConfig)();
93
+ const base = (0, ollama_1.resolveOllamaUrl)(cfg?.ollamaUrl);
94
+ console.log('\n OpenInference — model storage\n');
95
+ console.log(' Models are stored by Ollama, not OpenInference.\n');
96
+ console.log(` Default path: ${ollamaModelsPath()}\n`);
97
+ if (await (0, ollama_1.pingOllama)(base)) {
98
+ const tags = await (0, ollama_1.listModelTags)(base);
99
+ if (tags.length === 0) {
100
+ console.log(' No models downloaded yet. Run: oi\n');
101
+ }
102
+ else {
103
+ console.log(' Downloaded on this machine:\n');
104
+ tags.forEach((t) => console.log(` ${t}`));
105
+ console.log('');
106
+ }
107
+ }
108
+ else {
109
+ console.log(' Ollama is not running — start it with `oi` or open the Ollama app.\n');
110
+ }
111
+ if (cfg) {
112
+ console.log(` Active model: ${cfg.modelName} (${cfg.model})`);
113
+ if (cfg.useCase)
114
+ console.log(` Use case: ${cfg.useCase}`);
115
+ console.log('');
116
+ }
117
+ }
118
+ //# sourceMappingURL=manage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../src/manage.ts"],"names":[],"mappings":"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"}
package/dist/ollama.d.ts CHANGED
@@ -11,4 +11,5 @@ export declare function pullModelHost(modelId: string): Promise<void>;
11
11
  /** Pull via Ollama HTTP API (for Docker / VM where `ollama` CLI is not on PATH). */
12
12
  export declare function pullModelRemote(baseUrl: string, modelId: string): Promise<void>;
13
13
  export declare function verifyModel(baseUrl: string, modelId: string): Promise<void>;
14
+ export declare function listModelTags(ollamaUrl?: string): Promise<string[]>;
14
15
  //# sourceMappingURL=ollama.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAqCpC;AAWD,2DAA2D;AAC3D,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB5E;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU5D;AAID,oFAAoF;AACpF,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDrF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBjF"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../src/ollama.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAqCpC;AAWD,2DAA2D;AAC3D,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB5E;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU5D;AAID,oFAAoF;AACpF,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDrF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBjF;AAMD,wBAAsB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMzE"}
package/dist/ollama.js CHANGED
@@ -9,6 +9,7 @@ exports.ensureRemoteOllama = ensureRemoteOllama;
9
9
  exports.pullModelHost = pullModelHost;
10
10
  exports.pullModelRemote = pullModelRemote;
11
11
  exports.verifyModel = verifyModel;
12
+ exports.listModelTags = listModelTags;
12
13
  const node_child_process_1 = require("node:child_process");
13
14
  const config_1 = require("./config");
14
15
  const DEFAULT_URL = 'http://127.0.0.1:11434';
@@ -48,16 +49,16 @@ function installOllama() {
48
49
  }
49
50
  return;
50
51
  }
51
- if (process.platform === 'linux') {
52
+ if (process.platform === 'linux' || process.platform === 'darwin') {
52
53
  const sh = (0, node_child_process_1.spawnSync)('sh', ['-c', 'curl -fsSL https://ollama.com/install.sh | sh'], {
53
54
  stdio: 'inherit',
54
55
  });
55
56
  if (sh.status !== 0) {
56
- throw new Error('Could not install Ollama automatically. Run: curl -fsSL https://ollama.com/install.sh | sh');
57
+ throw new Error('Could not install Ollama automatically. Install from https://ollama.com/download then run `oi` again.');
57
58
  }
58
59
  return;
59
60
  }
60
- throw new Error('Automatic Ollama install supports Linux and Windows only. Install from https://ollama.com');
61
+ throw new Error('Automatic Ollama install supports Windows, macOS, and Linux. Install from https://ollama.com');
61
62
  }
62
63
  function spawnDetached(command, args) {
63
64
  const child = (0, node_child_process_1.spawn)(command, args, {
@@ -186,4 +187,12 @@ async function verifyModel(baseUrl, modelId) {
186
187
  function sleep(ms) {
187
188
  return new Promise((r) => setTimeout(r, ms));
188
189
  }
190
+ async function listModelTags(ollamaUrl) {
191
+ const base = resolveOllamaUrl(ollamaUrl);
192
+ const res = await fetch(`${base}/api/tags`, { signal: AbortSignal.timeout(15_000) });
193
+ if (!res.ok)
194
+ throw new Error(`Could not list models (${res.status})`);
195
+ const body = (await res.json());
196
+ return (body.models ?? []).map((m) => m.name).sort();
197
+ }
189
198
  //# sourceMappingURL=ollama.js.map