@openinference/cli 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/data/models.json +643 -120
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +1 -5
- package/dist/chat.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/data/models.json +643 -120
- package/dist/hardware.d.ts +5 -0
- package/dist/hardware.d.ts.map +1 -1
- package/dist/hardware.js +45 -0
- package/dist/hardware.js.map +1 -1
- package/dist/index.js +125 -53
- package/dist/index.js.map +1 -1
- package/dist/manage.d.ts +11 -0
- package/dist/manage.d.ts.map +1 -0
- package/dist/manage.js +118 -0
- package/dist/manage.js.map +1 -0
- package/dist/ollama.d.ts +1 -0
- package/dist/ollama.d.ts.map +1 -1
- package/dist/ollama.js +12 -3
- package/dist/ollama.js.map +1 -1
- package/dist/prompt.d.ts +11 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +99 -11
- package/dist/prompt.js.map +1 -1
- package/dist/recommend-run.d.ts +6 -4
- package/dist/recommend-run.d.ts.map +1 -1
- package/dist/recommend-run.js +20 -25
- package/dist/recommend-run.js.map +1 -1
- package/dist/recommend.d.ts +18 -1
- package/dist/recommend.d.ts.map +1 -1
- package/dist/recommend.js +53 -22
- package/dist/recommend.js.map +1 -1
- package/dist/setup.d.ts +12 -4
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +84 -54
- package/dist/setup.js.map +1 -1
- package/dist/start.d.ts +2 -2
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +4 -9
- package/dist/start.js.map +1 -1
- package/dist/use-cases.d.ts +17 -0
- package/dist/use-cases.d.ts.map +1 -0
- package/dist/use-cases.js +115 -0
- package/dist/use-cases.js.map +1 -0
- package/package.json +8 -2
package/dist/setup.js
CHANGED
|
@@ -1,56 +1,60 @@
|
|
|
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;
|
|
9
13
|
async function runSetup(opts) {
|
|
10
14
|
const remote = Boolean(opts.docker);
|
|
11
15
|
const baseUrl = (0, ollama_1.resolveOllamaUrl)(opts.ollamaUrl);
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
console.log(
|
|
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');
|
|
16
|
+
const auto = Boolean(opts.yes);
|
|
17
|
+
let useCase = opts.useCase ?? 'chat';
|
|
18
|
+
if (!auto && !opts.useCase && !opts.model) {
|
|
19
|
+
useCase = await (0, use_cases_1.pickUseCase)();
|
|
20
|
+
console.log(`\n → ${(0, use_cases_1.useCaseLabel)(useCase)}\n`);
|
|
20
21
|
}
|
|
21
|
-
else {
|
|
22
|
-
|
|
23
|
-
if (remote)
|
|
24
|
-
console.log(` Remote runtime at ${baseUrl}\n`);
|
|
22
|
+
else if (opts.useCase) {
|
|
23
|
+
useCase = opts.useCase;
|
|
25
24
|
}
|
|
26
25
|
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
26
|
const catalog = (0, recommend_1.loadCatalog)();
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
console.log(`
|
|
27
|
+
const { pool, runnable } = (0, recommend_1.buildRecommendPool)(catalog, hw, useCase, opts.all);
|
|
28
|
+
if (!auto) {
|
|
29
|
+
(0, prompt_1.printHardwareScan)(hw);
|
|
30
|
+
console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(useCase)}`);
|
|
31
|
+
console.log(` Catalog: ${pool.length} models for this goal`);
|
|
32
|
+
if (runnable.length === 0) {
|
|
33
|
+
throw new Error(`No models fit (~${hw.budgetGb} GB RAM${hw.diskFreeGb > 0 ? `, ${hw.diskFreeGb} GB disk` : ''}). ` +
|
|
34
|
+
'Free space or pick a different use case.');
|
|
35
|
+
}
|
|
36
|
+
console.log(` ${runnable.length} models fit your hardware\n`);
|
|
39
37
|
}
|
|
40
38
|
else {
|
|
41
|
-
console.log('
|
|
39
|
+
console.log('\n OpenInference — quick setup (-y)\n');
|
|
40
|
+
(0, prompt_1.printHardwareResults)(hw);
|
|
41
|
+
console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(useCase)}\n`);
|
|
42
42
|
}
|
|
43
|
-
const recs = (0, recommend_1.recommendTop)(
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
const recs = (0, recommend_1.recommendTop)(runnable, hw.budgetGb, exports.WIZARD_PICK_COUNT, useCase, hw.diskFreeGb);
|
|
44
|
+
const picks = recs.length > 0 ? recs : runnable
|
|
45
|
+
.map((m) => (0, recommend_1.scoreModel)(m, hw.budgetGb, useCase))
|
|
46
|
+
.filter((r) => r !== null)
|
|
47
|
+
.sort((a, b) => b.score - a.score)
|
|
48
|
+
.slice(0, exports.WIZARD_PICK_COUNT);
|
|
49
|
+
if (picks.length === 0) {
|
|
50
|
+
throw new Error('No runnable models found for this use case and hardware.');
|
|
46
51
|
}
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
(0, prompt_1.printRecommendations)(recs);
|
|
52
|
+
if (!auto && !opts.model) {
|
|
53
|
+
(0, prompt_1.printWizardRecommendations)(picks, runnable.length);
|
|
50
54
|
}
|
|
51
55
|
let chosen;
|
|
52
56
|
if (opts.model) {
|
|
53
|
-
const fromRecs =
|
|
57
|
+
const fromRecs = picks.find((r) => r.id === opts.model);
|
|
54
58
|
if (fromRecs) {
|
|
55
59
|
chosen = fromRecs;
|
|
56
60
|
}
|
|
@@ -63,57 +67,83 @@ async function runSetup(opts) {
|
|
|
63
67
|
throw new Error(`Model "${opts.model}" does not fit this machine.`);
|
|
64
68
|
chosen = { ...m, fit, score: 0 };
|
|
65
69
|
}
|
|
66
|
-
if (!
|
|
67
|
-
console.log(`Using
|
|
70
|
+
if (!auto)
|
|
71
|
+
console.log(` Using model: ${chosen.name} (${chosen.id})\n`);
|
|
68
72
|
}
|
|
69
|
-
else if (
|
|
70
|
-
chosen =
|
|
71
|
-
console.log(` → ${chosen.name} (best match
|
|
73
|
+
else if (auto) {
|
|
74
|
+
chosen = picks[0];
|
|
75
|
+
console.log(` → ${chosen.name} (best match)\n`);
|
|
72
76
|
}
|
|
73
77
|
else {
|
|
74
|
-
chosen = await (0, prompt_1.pickRecommendation)(
|
|
75
|
-
console.log(`\
|
|
78
|
+
chosen = await (0, prompt_1.pickRecommendation)(picks);
|
|
79
|
+
console.log(`\n Selected: ${chosen.name}\n`);
|
|
76
80
|
}
|
|
77
|
-
if (chosen.fit === 'marginal' && !
|
|
81
|
+
if (chosen.fit === 'marginal' && !auto) {
|
|
78
82
|
console.log(' Note: this model is a tight fit — it may run slowly.\n');
|
|
79
83
|
}
|
|
84
|
+
const needsOllama = !remote &&
|
|
85
|
+
!opts.skipInstall &&
|
|
86
|
+
!(await (0, ollama_1.pingOllama)(baseUrl)) &&
|
|
87
|
+
!(0, ollama_1.isOllamaInstalled)();
|
|
88
|
+
if (!auto) {
|
|
89
|
+
const ok = await (0, prompt_1.confirmInstall)({
|
|
90
|
+
modelName: chosen.name,
|
|
91
|
+
sizeMb: chosen.sizeMb,
|
|
92
|
+
needsOllama,
|
|
93
|
+
});
|
|
94
|
+
if (!ok)
|
|
95
|
+
return;
|
|
96
|
+
console.log('');
|
|
97
|
+
}
|
|
80
98
|
if (remote) {
|
|
81
|
-
console.log(' Connecting to
|
|
99
|
+
console.log(' Connecting to Ollama…\n');
|
|
82
100
|
await (0, ollama_1.ensureRemoteOllama)(baseUrl);
|
|
83
101
|
console.log(' Downloading model…\n');
|
|
84
102
|
await (0, ollama_1.pullModelRemote)(baseUrl, chosen.id);
|
|
85
103
|
}
|
|
86
104
|
else {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
console.log(' Installing local AI runtime (one-time)…\n');
|
|
105
|
+
if (needsOllama) {
|
|
106
|
+
console.log(' Installing Ollama…\n');
|
|
90
107
|
(0, ollama_1.installOllama)();
|
|
91
108
|
if (!(0, ollama_1.isOllamaInstalled)()) {
|
|
92
|
-
throw new Error('Install finished but
|
|
109
|
+
throw new Error('Install finished but Ollama was not found. Restart your terminal and run `oi` again.');
|
|
93
110
|
}
|
|
94
111
|
}
|
|
95
112
|
else if (!opts.skipInstall && !(0, ollama_1.isOllamaInstalled)() && !(await (0, ollama_1.pingOllama)(baseUrl))) {
|
|
96
|
-
throw new Error('
|
|
113
|
+
throw new Error('Ollama not found. Run `oi` again to install it.');
|
|
97
114
|
}
|
|
98
|
-
|
|
99
|
-
console.log(' Starting runtime…\n');
|
|
115
|
+
console.log(' Starting Ollama…\n');
|
|
100
116
|
await (0, ollama_1.ensureHostOllamaRunning)(baseUrl);
|
|
101
117
|
console.log(' Downloading model…\n');
|
|
102
118
|
await (0, ollama_1.pullModelHost)(chosen.id);
|
|
103
119
|
}
|
|
104
|
-
|
|
105
|
-
console.log(' Running test…');
|
|
120
|
+
console.log(' Running a quick test…');
|
|
106
121
|
await (0, ollama_1.verifyModel)(baseUrl, chosen.id);
|
|
107
|
-
|
|
122
|
+
const cfg = {
|
|
108
123
|
ollamaUrl: baseUrl,
|
|
109
124
|
model: chosen.id,
|
|
110
125
|
modelName: chosen.name,
|
|
126
|
+
useCase,
|
|
111
127
|
setupAt: new Date().toISOString(),
|
|
112
|
-
}
|
|
128
|
+
};
|
|
129
|
+
(0, config_1.saveConfig)(cfg);
|
|
113
130
|
console.log('\n ✓ Ready — you can use open-source AI on this computer.\n');
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
131
|
+
console.log(` Model: ${chosen.name}`);
|
|
132
|
+
console.log(` Stored: ${(0, hardware_1.ollamaModelsPath)()}`);
|
|
133
|
+
console.log(` Config: ~/.openinference/config.json\n`);
|
|
134
|
+
}
|
|
135
|
+
function printRecommendPreview(recs, hw, meta) {
|
|
136
|
+
console.log('\n OpenInference — model recommendations\n');
|
|
137
|
+
(0, prompt_1.printHardwareResults)(hw);
|
|
138
|
+
console.log(` Use case: ${(0, use_cases_1.useCaseLabel)(meta.useCase)}`);
|
|
139
|
+
console.log(` ${meta.poolSize} models for this goal · ${meta.runnableSize} fit your hardware` +
|
|
140
|
+
`${meta.all ? '' : ' (verified tags preferred; use --all for full catalog)'}\n`);
|
|
141
|
+
if (recs.length === 0) {
|
|
142
|
+
console.log(' No models fit this machine.\n');
|
|
143
|
+
return;
|
|
117
144
|
}
|
|
145
|
+
console.log(` Top ${recs.length}:\n`);
|
|
146
|
+
(0, prompt_1.printRecommendations)(recs);
|
|
147
|
+
console.log(' Run `oi` for the setup wizard, or `oi -y` to auto-install the top pick.\n');
|
|
118
148
|
}
|
|
119
149
|
//# 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":"
|
|
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
|
-
*
|
|
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
|
package/dist/start.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
*
|
|
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
|
-
|
|
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,
|
|
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,CAYpF;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,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.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
|
+
return u.includes('rag') || u.includes('long context') || u.includes('context');
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
function inferCategories(useCase, kind) {
|
|
40
|
+
const u = useCase.toLowerCase();
|
|
41
|
+
const cats = new Set();
|
|
42
|
+
if (kind === 'embed') {
|
|
43
|
+
cats.add('research');
|
|
44
|
+
return [...cats];
|
|
45
|
+
}
|
|
46
|
+
if (/code|coding|sql|completion/.test(u))
|
|
47
|
+
cats.add('coding');
|
|
48
|
+
if (/vision|multimodal|moondream|llava/.test(u))
|
|
49
|
+
cats.add('image');
|
|
50
|
+
if (/rag|research|reasoning|math|tool|agent/.test(u))
|
|
51
|
+
cats.add('research');
|
|
52
|
+
if (/chat|general|instruction|helpful|teaching|bilingual|multilingual|enterprise/.test(u)) {
|
|
53
|
+
cats.add('chat');
|
|
54
|
+
}
|
|
55
|
+
if (/writing|helpful|instructions|chat|general/.test(u))
|
|
56
|
+
cats.add('writing');
|
|
57
|
+
if (cats.size === 0)
|
|
58
|
+
cats.add('chat');
|
|
59
|
+
return [...cats];
|
|
60
|
+
}
|
|
61
|
+
function filterByUseCase(models, useCase) {
|
|
62
|
+
return models.filter((m) => modelMatchesUseCase(m, useCase));
|
|
63
|
+
}
|
|
64
|
+
function parseUseCaseArg(raw) {
|
|
65
|
+
if (!raw)
|
|
66
|
+
return undefined;
|
|
67
|
+
const key = raw.toLowerCase().trim();
|
|
68
|
+
if (PDF_ALIASES.has(key))
|
|
69
|
+
return 'pdfs';
|
|
70
|
+
const found = exports.USE_CASES.find((u) => u.id === key || u.label.toLowerCase() === key);
|
|
71
|
+
return found?.id;
|
|
72
|
+
}
|
|
73
|
+
async function pickUseCase() {
|
|
74
|
+
console.log(' What do you want to use AI for?\n');
|
|
75
|
+
exports.USE_CASES.forEach((u, i) => {
|
|
76
|
+
console.log(` ${i + 1}. ${u.label.padEnd(18)} ${u.description}`);
|
|
77
|
+
});
|
|
78
|
+
console.log('');
|
|
79
|
+
const rl = node_readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
|
|
80
|
+
const answer = await new Promise((resolve) => {
|
|
81
|
+
rl.question(` Choose (1-${exports.USE_CASES.length}) [1]: `, resolve);
|
|
82
|
+
});
|
|
83
|
+
rl.close();
|
|
84
|
+
const n = parseInt(answer.trim() || '1', 10);
|
|
85
|
+
if (!Number.isNaN(n) && n >= 1 && n <= exports.USE_CASES.length) {
|
|
86
|
+
return exports.USE_CASES[n - 1].id;
|
|
87
|
+
}
|
|
88
|
+
const byName = parseUseCaseArg(answer.trim());
|
|
89
|
+
if (byName)
|
|
90
|
+
return byName;
|
|
91
|
+
console.log(' Using General Chat.\n');
|
|
92
|
+
return 'chat';
|
|
93
|
+
}
|
|
94
|
+
/** Boost score when model categories align with the user's goal. */
|
|
95
|
+
function useCaseScoreBoost(model, useCase) {
|
|
96
|
+
const cats = model.categories ?? inferCategories(model.useCase, model.kind);
|
|
97
|
+
if (!cats.includes(useCase))
|
|
98
|
+
return 0;
|
|
99
|
+
let boost = 18;
|
|
100
|
+
const u = model.useCase.toLowerCase();
|
|
101
|
+
if (useCase === 'coding' && /coder|code|coding|sql/.test(u))
|
|
102
|
+
boost += 12;
|
|
103
|
+
if (useCase === 'image' && /vision/.test(u))
|
|
104
|
+
boost += 15;
|
|
105
|
+
if (useCase === 'research' && /reasoning|rag|research/.test(u))
|
|
106
|
+
boost += 10;
|
|
107
|
+
if (useCase === 'pdfs' && /rag|long context/.test(u))
|
|
108
|
+
boost += 14;
|
|
109
|
+
if (useCase === 'writing' && /chat|general|instruction/.test(u))
|
|
110
|
+
boost += 6;
|
|
111
|
+
if (model.verified)
|
|
112
|
+
boost += 4;
|
|
113
|
+
return boost;
|
|
114
|
+
}
|
|
115
|
+
//# 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.
|
|
4
|
-
"description": "OpenInference
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "OpenInference Core — hardware-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
|
},
|