@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
package/dist/setup.js CHANGED
@@ -1,56 +1,116 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WIZARD_PICK_COUNT = void 0;
3
4
  exports.runSetup = runSetup;
5
+ exports.printRecommendPreview = printRecommendPreview;
4
6
  const recommend_1 = require("./recommend");
5
7
  const hardware_1 = require("./hardware");
6
8
  const config_1 = require("./config");
7
9
  const prompt_1 = require("./prompt");
8
10
  const ollama_1 = require("./ollama");
11
+ const use_cases_1 = require("./use-cases");
12
+ exports.WIZARD_PICK_COUNT = 10;
13
+ async function resolvePool(catalog, hw, opts) {
14
+ const auto = Boolean(opts.yes);
15
+ const lockedUseCase = opts.useCase;
16
+ if (auto || opts.model) {
17
+ const useCase = lockedUseCase ?? 'chat';
18
+ let { pool, runnable } = (0, recommend_1.buildRecommendPool)(catalog, hw, useCase, opts.all);
19
+ let hardwareFallback = false;
20
+ if (runnable.length === 0) {
21
+ runnable = (0, recommend_1.hardwareFittingModels)(catalog, hw, opts.all);
22
+ pool = runnable;
23
+ hardwareFallback = runnable.length > 0;
24
+ }
25
+ return { useCase, pool, runnable, hardwareFallback };
26
+ }
27
+ let scanned = false;
28
+ while (true) {
29
+ const useCase = lockedUseCase ?? (await (0, use_cases_1.pickUseCase)());
30
+ if (!lockedUseCase)
31
+ console.log(`\n → ${(0, use_cases_1.useCaseLabel)(useCase)}\n`);
32
+ if (!scanned) {
33
+ (0, prompt_1.printHardwareScan)(hw);
34
+ scanned = true;
35
+ }
36
+ let { pool, runnable } = (0, recommend_1.buildRecommendPool)(catalog, hw, useCase, opts.all);
37
+ let hardwareFallback = false;
38
+ console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(useCase)}`);
39
+ console.log(` Catalog: ${pool.length} models for this goal`);
40
+ if (runnable.length === 0) {
41
+ const anyFit = (0, recommend_1.hardwareFittingModels)(catalog, hw, opts.all);
42
+ if (anyFit.length > 0) {
43
+ console.log(` 0 models for this goal on your hardware, but ${anyFit.length} other small models fit.\n`);
44
+ const ok = lockedUseCase
45
+ ? true
46
+ : await (0, prompt_1.askYesNo)(' Show small models that fit anyway? (Y/n): ', true);
47
+ if (ok) {
48
+ runnable = anyFit;
49
+ pool = anyFit;
50
+ hardwareFallback = true;
51
+ }
52
+ else if (!lockedUseCase) {
53
+ console.log('\n Pick another use case:\n');
54
+ continue;
55
+ }
56
+ else {
57
+ return null;
58
+ }
59
+ }
60
+ else {
61
+ (0, prompt_1.printTooSmallHelp)(hw);
62
+ if (lockedUseCase)
63
+ return null;
64
+ const retry = await (0, prompt_1.askYesNo)(' Try a different use case? (Y/n): ', true);
65
+ if (retry) {
66
+ console.log('');
67
+ continue;
68
+ }
69
+ return null;
70
+ }
71
+ }
72
+ else {
73
+ console.log(` ${runnable.length} models fit your hardware\n`);
74
+ }
75
+ return { useCase, pool, runnable, hardwareFallback };
76
+ }
77
+ }
9
78
  async function runSetup(opts) {
10
79
  const remote = Boolean(opts.docker);
11
80
  const baseUrl = (0, ollama_1.resolveOllamaUrl)(opts.ollamaUrl);
12
- const quick = Boolean(opts.quick) && !opts.choose;
13
- const interactive = Boolean(opts.choose) || (!opts.yes && !opts.model && !quick);
14
- if (quick) {
15
- console.log('\n OpenInference — setting up local AI on your computer\n');
16
- console.log(' This takes a few minutes the first time. We will:\n');
17
- console.log(' • find the best open-source model for your hardware');
18
- console.log(' • install what you need (no account required)');
19
- console.log(' • download the model and run a quick test\n');
20
- }
21
- else {
22
- console.log('\n OpenInference — local model setup\n');
23
- if (remote)
24
- console.log(` Remote runtime at ${baseUrl}\n`);
25
- }
81
+ const auto = Boolean(opts.yes);
26
82
  const hw = (0, hardware_1.detectHardware)();
27
- if (!quick) {
28
- console.log(` System: ${(0, hardware_1.formatHardware)(hw)}`);
29
- console.log(` Memory budget for models: ~${hw.budgetGb} GB\n`);
30
- }
31
- else {
32
- console.log(` Detected: ${(0, hardware_1.formatHardware)(hw)}\n`);
33
- }
34
83
  const catalog = (0, recommend_1.loadCatalog)();
35
- const chatVerified = catalog.filter((m) => m.kind !== 'embed' && m.verified);
36
- const pool = chatVerified.length >= 3 ? chatVerified : catalog.filter((m) => m.kind !== 'embed');
37
- if (!quick) {
38
- console.log(` Scoring ${pool.length} open-source models for your hardware…\n`);
84
+ const resolved = await resolvePool(catalog, hw, opts);
85
+ if (!resolved)
86
+ return;
87
+ const { useCase, runnable, hardwareFallback } = resolved;
88
+ if (auto) {
89
+ console.log('\n OpenInference — quick setup (-y)\n');
90
+ (0, prompt_1.printHardwareResults)(hw);
91
+ console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(useCase)}\n`);
39
92
  }
40
- else {
41
- console.log(' Finding the best model for you…\n');
93
+ const recs = (0, recommend_1.recommendTop)(runnable, hw.budgetGb, exports.WIZARD_PICK_COUNT, useCase, hw.diskFreeGb);
94
+ const picks = recs.length > 0
95
+ ? recs
96
+ : runnable
97
+ .map((m) => (0, recommend_1.scoreModel)(m, hw.budgetGb, useCase))
98
+ .filter((r) => r !== null)
99
+ .sort((a, b) => b.score - a.score)
100
+ .slice(0, exports.WIZARD_PICK_COUNT);
101
+ if (picks.length === 0) {
102
+ (0, prompt_1.printTooSmallHelp)(hw);
103
+ return;
42
104
  }
43
- const recs = (0, recommend_1.recommendTop)(pool, hw.budgetGb, 5);
44
- if (recs.length === 0) {
45
- throw new Error(`No models fit this computer (~${hw.budgetGb} GB free for AI). Try freeing RAM or use a machine with more memory.`);
46
- }
47
- if (interactive) {
48
- console.log(' Top 5 models for your machine:\n');
49
- (0, prompt_1.printRecommendations)(recs);
105
+ if (!auto && !opts.model) {
106
+ (0, prompt_1.printWizardRecommendations)(picks, runnable.length, {
107
+ fallback: hardwareFallback,
108
+ useCaseLabel: (0, use_cases_1.useCaseLabel)(useCase),
109
+ });
50
110
  }
51
111
  let chosen;
52
112
  if (opts.model) {
53
- const fromRecs = recs.find((r) => r.id === opts.model);
113
+ const fromRecs = picks.find((r) => r.id === opts.model);
54
114
  if (fromRecs) {
55
115
  chosen = fromRecs;
56
116
  }
@@ -63,57 +123,80 @@ async function runSetup(opts) {
63
123
  throw new Error(`Model "${opts.model}" does not fit this machine.`);
64
124
  chosen = { ...m, fit, score: 0 };
65
125
  }
66
- if (!quick)
67
- console.log(`Using --model ${chosen.id}\n`);
126
+ if (!auto)
127
+ console.log(` Using model: ${chosen.name} (${chosen.id})\n`);
68
128
  }
69
- else if (opts.yes || quick) {
70
- chosen = recs[0];
71
- console.log(` → ${chosen.name} (best match for your computer)\n`);
129
+ else if (auto) {
130
+ chosen = picks[0];
131
+ console.log(` → ${chosen.name} (best match)\n`);
72
132
  }
73
133
  else {
74
- chosen = await (0, prompt_1.pickRecommendation)(recs);
75
- console.log(`\nSelected: ${chosen.name} (${chosen.id})\n`);
134
+ chosen = await (0, prompt_1.pickRecommendation)(picks);
135
+ console.log(`\n Selected: ${chosen.name}\n`);
76
136
  }
77
- if (chosen.fit === 'marginal' && !quick) {
137
+ if (chosen.fit === 'marginal' && !auto) {
78
138
  console.log(' Note: this model is a tight fit — it may run slowly.\n');
79
139
  }
140
+ const needsOllama = !remote && !opts.skipInstall && !(await (0, ollama_1.pingOllama)(baseUrl)) && !(0, ollama_1.isOllamaInstalled)();
141
+ if (!auto) {
142
+ const ok = await (0, prompt_1.confirmInstall)({
143
+ modelName: chosen.name,
144
+ sizeMb: chosen.sizeMb,
145
+ needsOllama,
146
+ });
147
+ if (!ok)
148
+ return;
149
+ console.log('');
150
+ }
80
151
  if (remote) {
81
- console.log(' Connecting to AI runtime…\n');
152
+ console.log(' Connecting to Ollama…\n');
82
153
  await (0, ollama_1.ensureRemoteOllama)(baseUrl);
83
154
  console.log(' Downloading model…\n');
84
155
  await (0, ollama_1.pullModelRemote)(baseUrl, chosen.id);
85
156
  }
86
157
  else {
87
- const needsInstall = !opts.skipInstall && !(await (0, ollama_1.pingOllama)(baseUrl)) && !(0, ollama_1.isOllamaInstalled)();
88
- if (needsInstall) {
89
- console.log(' Installing local AI runtime (one-time)…\n');
158
+ if (needsOllama) {
159
+ console.log(' Installing Ollama…\n');
90
160
  (0, ollama_1.installOllama)();
91
161
  if (!(0, ollama_1.isOllamaInstalled)()) {
92
- throw new Error('Install finished but the runtime was not found. Restart your terminal and run `oi` again.');
162
+ throw new Error('Install finished but Ollama was not found. Restart your terminal and run `oi` again.');
93
163
  }
94
164
  }
95
165
  else if (!opts.skipInstall && !(0, ollama_1.isOllamaInstalled)() && !(await (0, ollama_1.pingOllama)(baseUrl))) {
96
- throw new Error('Local AI runtime not found. Run `oi` again to install it.');
166
+ throw new Error('Ollama not found. Run `oi` again to install it.');
97
167
  }
98
- if (!quick)
99
- console.log(' Starting runtime…\n');
168
+ console.log(' Starting Ollama…\n');
100
169
  await (0, ollama_1.ensureHostOllamaRunning)(baseUrl);
101
170
  console.log(' Downloading model…\n');
102
171
  await (0, ollama_1.pullModelHost)(chosen.id);
103
172
  }
104
- if (!quick)
105
- console.log(' Running test…');
173
+ console.log(' Running a quick test…');
106
174
  await (0, ollama_1.verifyModel)(baseUrl, chosen.id);
107
- (0, config_1.saveConfig)({
175
+ const cfg = {
108
176
  ollamaUrl: baseUrl,
109
177
  model: chosen.id,
110
178
  modelName: chosen.name,
179
+ useCase,
111
180
  setupAt: new Date().toISOString(),
112
- });
181
+ };
182
+ (0, config_1.saveConfig)(cfg);
113
183
  console.log('\n ✓ Ready — you can use open-source AI on this computer.\n');
114
- if (!quick) {
115
- console.log(` Model: ${chosen.name}`);
116
- console.log(` Config: ~/.openinference/config.json\n`);
184
+ console.log(` Model: ${chosen.name}`);
185
+ console.log(` Stored: ${(0, hardware_1.ollamaModelsPath)()}`);
186
+ console.log(` Config: ~/.openinference/config.json\n`);
187
+ }
188
+ function printRecommendPreview(recs, hw, meta) {
189
+ console.log('\n OpenInference — model recommendations\n');
190
+ (0, prompt_1.printHardwareResults)(hw);
191
+ console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(meta.useCase)}`);
192
+ console.log(` ${meta.poolSize} models for this goal · ${meta.runnableSize} fit your hardware` +
193
+ `${meta.all ? '' : ' (verified tags preferred; use --all for full catalog)'}\n`);
194
+ if (recs.length === 0) {
195
+ console.log(' No models fit this machine. Try: oi browse --use-case chat\n');
196
+ return;
117
197
  }
198
+ console.log(` Top ${recs.length}:\n`);
199
+ (0, prompt_1.printRecommendations)(recs);
200
+ console.log(' Run `oi` for the setup wizard, or `oi -y` to auto-install the top pick.\n');
118
201
  }
119
202
  //# sourceMappingURL=setup.js.map
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/dist/start.d.ts CHANGED
@@ -6,8 +6,8 @@ export type StartOptions = SetupOptions & {
6
6
  chat?: boolean;
7
7
  };
8
8
  /**
9
- * The beginner path: one command — auto-pick model, install, download, chat.
10
- * If already set up, jumps straight to chat.
9
+ * Default: interactive wizard (scan pick confirm → install chat).
10
+ * Use -y to skip prompts. If already set up, jumps straight to chat.
11
11
  */
12
12
  export declare function runStart(opts?: StartOptions): Promise<void>;
13
13
  //# sourceMappingURL=start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IACxC,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrE"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IACxC,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBrE"}
package/dist/start.js CHANGED
@@ -5,8 +5,8 @@ const config_1 = require("./config");
5
5
  const chat_repl_1 = require("./chat-repl");
6
6
  const setup_1 = require("./setup");
7
7
  /**
8
- * The beginner path: one command — auto-pick model, install, download, chat.
9
- * If already set up, jumps straight to chat.
8
+ * Default: interactive wizard (scan pick confirm → install chat).
9
+ * Use -y to skip prompts. If already set up, jumps straight to chat.
10
10
  */
11
11
  async function runStart(opts = {}) {
12
12
  const existing = (0, config_1.loadConfig)();
@@ -18,13 +18,8 @@ async function runStart(opts = {}) {
18
18
  await (0, chat_repl_1.runChatRepl)({ ollamaUrl: opts.ollamaUrl, remote: opts.docker });
19
19
  return;
20
20
  }
21
- await (0, setup_1.runSetup)({
22
- ...opts,
23
- yes: !opts.choose && !opts.model,
24
- quick: !opts.choose,
25
- choose: opts.choose,
26
- });
27
- if (openChat) {
21
+ await (0, setup_1.runSetup)(opts);
22
+ if (openChat && (0, config_1.loadConfig)()) {
28
23
  console.log(' You can chat now — type a question below.\n');
29
24
  await (0, chat_repl_1.runChatRepl)({ ollamaUrl: opts.ollamaUrl, remote: opts.docker });
30
25
  }
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":";;AAeA,4BAsBC;AArCD,qCAAsC;AACtC,2CAA0C;AAC1C,mCAAsD;AAStD;;;GAGG;AACI,KAAK,UAAU,QAAQ,CAAC,OAAqB,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;IAErC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,SAAS,sBAAsB,CAAC,CAAC;QACjE,IAAI,QAAQ;YAAE,MAAM,IAAA,uBAAW,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,MAAM,IAAA,gBAAQ,EAAC;QACb,GAAG,IAAI;QACP,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;QAChC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,IAAA,uBAAW,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":";;AAeA,4BAiBC;AAhCD,qCAAsC;AACtC,2CAA0C;AAC1C,mCAAsD;AAStD;;;GAGG;AACI,KAAK,UAAU,QAAQ,CAAC,OAAqB,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;IAErC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,SAAS,sBAAsB,CAAC,CAAC;QACjE,IAAI,QAAQ;YAAE,MAAM,IAAA,uBAAW,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,MAAM,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAErB,IAAI,QAAQ,IAAI,IAAA,mBAAU,GAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,IAAA,uBAAW,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CatalogModel } from './recommend';
2
+ export type UseCaseId = 'coding' | 'chat' | 'pdfs' | 'writing' | 'image' | 'research';
3
+ export type UseCase = {
4
+ id: UseCaseId;
5
+ label: string;
6
+ description: string;
7
+ };
8
+ export declare const USE_CASES: UseCase[];
9
+ export declare function useCaseLabel(id: UseCaseId): string;
10
+ /** Match catalog `categories` (from build) or fall back to useCase string. */
11
+ export declare function modelMatchesUseCase(model: CatalogModel, useCase: UseCaseId): boolean;
12
+ export declare function filterByUseCase(models: CatalogModel[], useCase: UseCaseId): CatalogModel[];
13
+ export declare function parseUseCaseArg(raw?: string): UseCaseId | undefined;
14
+ export declare function pickUseCase(): Promise<UseCaseId>;
15
+ /** Boost score when model categories align with the user's goal. */
16
+ export declare function useCaseScoreBoost(model: CatalogModel, useCase: UseCaseId): number;
17
+ //# sourceMappingURL=use-cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-cases.d.ts","sourceRoot":"","sources":["../src/use-cases.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAEtF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,OAAO,EAO9B,CAAC;AAIF,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAElD;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAiBpF;AAuBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,GAAG,YAAY,EAAE,CAE1F;AAED,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAMnE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,CAuBtD;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,MAAM,CAejF"}
@@ -0,0 +1,120 @@
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.USE_CASES = void 0;
7
+ exports.useCaseLabel = useCaseLabel;
8
+ exports.modelMatchesUseCase = modelMatchesUseCase;
9
+ exports.filterByUseCase = filterByUseCase;
10
+ exports.parseUseCaseArg = parseUseCaseArg;
11
+ exports.pickUseCase = pickUseCase;
12
+ exports.useCaseScoreBoost = useCaseScoreBoost;
13
+ const node_readline_1 = __importDefault(require("node:readline"));
14
+ exports.USE_CASES = [
15
+ { id: 'coding', label: 'Coding', description: 'Write, debug, and explain code' },
16
+ { id: 'chat', label: 'General Chat', description: 'Everyday questions and conversation' },
17
+ { id: 'pdfs', label: 'Reading PDFs', description: 'Summarize documents and long text' },
18
+ { id: 'writing', label: 'Writing', description: 'Draft emails, posts, and copy' },
19
+ { id: 'image', label: 'Image / Vision', description: 'Describe and understand images' },
20
+ { id: 'research', label: 'Research', description: 'Reasoning, analysis, and depth' },
21
+ ];
22
+ const PDF_ALIASES = new Set(['pdfs', 'pdf', 'documents']);
23
+ function useCaseLabel(id) {
24
+ return exports.USE_CASES.find((u) => u.id === id)?.label ?? id;
25
+ }
26
+ /** Match catalog `categories` (from build) or fall back to useCase string. */
27
+ function modelMatchesUseCase(model, useCase) {
28
+ if (model.kind === 'embed')
29
+ return useCase === 'research' || useCase === 'pdfs';
30
+ const cats = model.categories ?? inferCategories(model.useCase, model.kind);
31
+ if (cats.includes(useCase))
32
+ return true;
33
+ if (useCase === 'pdfs' && (cats.includes('research') || cats.includes('chat'))) {
34
+ const u = model.useCase.toLowerCase();
35
+ if (u.includes('rag') || u.includes('long context') || u.includes('context'))
36
+ return true;
37
+ }
38
+ // Small chat models work for writing / PDFs on constrained hardware
39
+ if ((useCase === 'writing' || useCase === 'pdfs') && cats.includes('chat') && model.ramGb <= 2.5) {
40
+ return true;
41
+ }
42
+ return false;
43
+ }
44
+ function inferCategories(useCase, kind) {
45
+ const u = useCase.toLowerCase();
46
+ const cats = new Set();
47
+ if (kind === 'embed') {
48
+ cats.add('research');
49
+ return [...cats];
50
+ }
51
+ if (/code|coding|sql|completion/.test(u))
52
+ cats.add('coding');
53
+ if (/vision|multimodal|moondream|llava/.test(u))
54
+ cats.add('image');
55
+ if (/rag|research|reasoning|math|tool|agent/.test(u))
56
+ cats.add('research');
57
+ if (/chat|general|instruction|helpful|teaching|bilingual|multilingual|enterprise/.test(u)) {
58
+ cats.add('chat');
59
+ }
60
+ if (/writing|helpful|instructions|chat|general/.test(u))
61
+ cats.add('writing');
62
+ if (cats.size === 0)
63
+ cats.add('chat');
64
+ return [...cats];
65
+ }
66
+ function filterByUseCase(models, useCase) {
67
+ return models.filter((m) => modelMatchesUseCase(m, useCase));
68
+ }
69
+ function parseUseCaseArg(raw) {
70
+ if (!raw)
71
+ return undefined;
72
+ const key = raw.toLowerCase().trim();
73
+ if (PDF_ALIASES.has(key))
74
+ return 'pdfs';
75
+ const found = exports.USE_CASES.find((u) => u.id === key || u.label.toLowerCase() === key);
76
+ return found?.id;
77
+ }
78
+ async function pickUseCase() {
79
+ console.log(' What do you want to use AI for?\n');
80
+ exports.USE_CASES.forEach((u, i) => {
81
+ console.log(` ${i + 1}. ${u.label.padEnd(18)} ${u.description}`);
82
+ });
83
+ console.log('');
84
+ const rl = node_readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
85
+ const answer = await new Promise((resolve) => {
86
+ rl.question(` Choose (1-${exports.USE_CASES.length}) [1]: `, resolve);
87
+ });
88
+ rl.close();
89
+ const n = parseInt(answer.trim() || '1', 10);
90
+ if (!Number.isNaN(n) && n >= 1 && n <= exports.USE_CASES.length) {
91
+ return exports.USE_CASES[n - 1].id;
92
+ }
93
+ const byName = parseUseCaseArg(answer.trim());
94
+ if (byName)
95
+ return byName;
96
+ console.log(' Using General Chat.\n');
97
+ return 'chat';
98
+ }
99
+ /** Boost score when model categories align with the user's goal. */
100
+ function useCaseScoreBoost(model, useCase) {
101
+ const cats = model.categories ?? inferCategories(model.useCase, model.kind);
102
+ if (!cats.includes(useCase))
103
+ return 0;
104
+ let boost = 18;
105
+ const u = model.useCase.toLowerCase();
106
+ if (useCase === 'coding' && /coder|code|coding|sql/.test(u))
107
+ boost += 12;
108
+ if (useCase === 'image' && /vision/.test(u))
109
+ boost += 15;
110
+ if (useCase === 'research' && /reasoning|rag|research/.test(u))
111
+ boost += 10;
112
+ if (useCase === 'pdfs' && /rag|long context/.test(u))
113
+ boost += 14;
114
+ if (useCase === 'writing' && /chat|general|instruction/.test(u))
115
+ boost += 6;
116
+ if (model.verified)
117
+ boost += 4;
118
+ return boost;
119
+ }
120
+ //# sourceMappingURL=use-cases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-cases.js","sourceRoot":"","sources":["../src/use-cases.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,14 @@
1
1
  {
2
2
  "name": "@openinference/cli",
3
- "version": "0.3.0",
4
- "description": "OpenInference CLIlocal model setup and gateway tools",
3
+ "version": "1.0.2",
4
+ "description": "OpenInference Corehardware-aware model discovery, Ollama setup, and local chat",
5
5
  "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/Souravrajvi0/openinference.git",
9
+ "directory": "packages/cli"
10
+ },
11
+ "homepage": "https://openinference.tech/cli",
6
12
  "bin": {
7
13
  "oi": "./dist/index.js"
8
14
  },