@inferhub/helper 0.1.0 → 0.1.1

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 CHANGED
@@ -24,11 +24,15 @@ Also available as `ih-helper`.
24
24
 
25
25
  ```bash
26
26
  inferhub-helper
27
- # → paste sk-airo-…
28
- # → pick a model from /v1/models
29
- # → applies to every installed agent
30
27
  ```
31
28
 
29
+ Interactive wizard (default):
30
+
31
+ 1. **API key** — masked input, validated against `GET /v1/models` (retry on failure)
32
+ 2. **Agents / IDEs** — multi-select checklist (space to toggle, enter to confirm)
33
+ 3. **Models** — type-to-search picker (filters the live model list)
34
+ 4. **Confirm** — summary, then write configs
35
+
32
36
  Non-interactive:
33
37
 
34
38
  ```bash
@@ -43,7 +47,8 @@ inferhub-helper apply \
43
47
 
44
48
  | Command | Description |
45
49
  |---|---|
46
- | `inferhub-helper` / `apply` | Validate key + write agent configs |
50
+ | `inferhub-helper` / `setup` | Interactive wizard (default) |
51
+ | `apply` | Non-interactive apply (`--key` + `--model`) |
47
52
  | `status` | Show which agents are installed / configured |
48
53
  | `reset` | Remove InferHub settings only |
49
54
  | `validate --key …` | Call `/v1/models` and print models |
package/dist/cli.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import readline from "node:readline/promises";
3
- import { stdin as input, stdout as output } from "node:process";
4
2
  import { DEFAULT_BASE_URL, PROVIDER_NAME, } from "./constants.js";
5
3
  import { applyToAgents, listAdapters, resetAgents, statusAll, } from "./index.js";
6
4
  import { validateApiKey } from "./validate.js";
7
5
  import { normalizeBaseUrl } from "./fsutil.js";
8
- const VERSION = "0.1.0";
6
+ import { canRunInteractive, runInteractiveWizard } from "./interactive.js";
7
+ const VERSION = "0.1.1";
9
8
  function printHelp() {
10
9
  console.log(`
11
10
  ${PROVIDER_NAME} Helper v${VERSION}
12
11
  Point coding agents at ${DEFAULT_BASE_URL}
13
12
 
14
13
  Usage:
15
- inferhub-helper Interactive setup (enter API key)
14
+ inferhub-helper Interactive wizard (default)
15
+ inferhub-helper setup Same as interactive wizard
16
16
  inferhub-helper apply [opts] Non-interactive apply
17
17
  inferhub-helper status Show agent config status
18
18
  inferhub-helper reset [opts] Remove InferHub settings
@@ -20,22 +20,28 @@ Usage:
20
20
  inferhub-helper list List supported agents
21
21
  inferhub-helper help This help
22
22
 
23
+ Interactive flow:
24
+ 1. Enter API key → validated against /v1/models
25
+ 2. Select agents → multi-select (space to toggle)
26
+ 3. Search models → type to filter, enter to pick
27
+ 4. Confirm → write configs
28
+
23
29
  Options:
24
30
  --key, -k <key> InferHub API key (sk-airo-…)
25
31
  --base-url <url> Default: ${DEFAULT_BASE_URL}
26
32
  --model, -m <id> Primary model id from /v1/models
27
33
  --subagent-model <id> Secondary model (Codex/OpenCode subagent)
28
- --agents <list> Comma list or "all" / "installed" (default: installed)
34
+ --agents <list> Comma list or "all" / "installed"
29
35
  --models <list> Extra model ids (OpenCode/OpenClaw)
30
36
  --dry-run Print actions without writing
31
- --yes, -y Skip confirmation prompts
37
+ --yes, -y Skip confirmation (non-interactive apply)
32
38
  --json Machine-readable output
33
39
 
34
40
  Examples:
35
41
  npx @inferhub/helper
36
- inferhub-helper apply -k sk-airo-… -m grok-4.5 --agents claude,codex
42
+ inferhub-helper setup
43
+ inferhub-helper apply -k sk-airo-… -m grok-4.5 --agents claude,codex -y
37
44
  inferhub-helper status
38
- inferhub-helper reset --agents all
39
45
  `.trim());
40
46
  }
41
47
  function parseArgs(argv) {
@@ -162,162 +168,83 @@ async function cmdValidate(flags) {
162
168
  return;
163
169
  }
164
170
  console.log(`✓ key valid — ${result.models.length} model(s) at ${result.baseUrl}`);
165
- for (const m of result.models.slice(0, 30)) {
171
+ for (const m of result.models.slice(0, 40)) {
166
172
  console.log(` - ${m.id}${m.ownedBy ? ` (${m.ownedBy})` : ""}`);
167
173
  }
168
- if (result.models.length > 30) {
169
- console.log(` … +${result.models.length - 30} more`);
174
+ if (result.models.length > 40) {
175
+ console.log(` … +${result.models.length - 40} more`);
170
176
  }
171
177
  }
172
- async function cmdApply(flags, interactive) {
173
- const rl = interactive && !flags.key
174
- ? readline.createInterface({ input, output })
175
- : null;
176
- try {
177
- let key = flags.key ?? process.env.INFERHUB_API_KEY ?? "";
178
- if (!key && rl) {
179
- key = (await rl.question("InferHub API key (sk-airo-…): ")).trim();
180
- }
181
- if (!key) {
182
- console.error("API key required (--key or INFERHUB_API_KEY)");
183
- process.exitCode = 1;
184
- return;
185
- }
186
- const baseUrl = normalizeBaseUrl(flags.baseUrl ?? DEFAULT_BASE_URL);
187
- process.stdout.write(`Validating key against ${baseUrl}/models … `);
188
- const validation = await validateApiKey({ apiKey: key, baseUrl });
189
- if (!validation.ok) {
190
- console.log("failed");
191
- console.error(`✗ ${validation.error}`);
192
- process.exitCode = 1;
193
- return;
194
- }
195
- console.log(`ok (${validation.models.length} models)`);
196
- let model = flags.model;
197
- if (!model && rl) {
198
- const preferred = pickDefaultModel(validation.models.map((m) => m.id));
199
- console.log("\nAvailable models (first 40):");
200
- const shown = validation.models.slice(0, 40);
201
- shown.forEach((m, i) => {
202
- const star = m.id === preferred ? " *" : "";
203
- console.log(` ${String(i + 1).padStart(2)}. ${m.id}${star}`);
178
+ /**
179
+ * Non-interactive apply — requires --key + --model (or env key + --model).
180
+ * If required flags are missing and we have a TTY, fall through to wizard.
181
+ */
182
+ async function cmdApplyNonInteractive(flags) {
183
+ const key = flags.key ?? process.env.INFERHUB_API_KEY ?? "";
184
+ const baseUrl = normalizeBaseUrl(flags.baseUrl ?? DEFAULT_BASE_URL);
185
+ if (!key || !flags.model) {
186
+ if (canRunInteractive()) {
187
+ await runInteractiveWizard({
188
+ apiKey: key || undefined,
189
+ baseUrl,
190
+ dryRun: flags.dryRun,
204
191
  });
205
- const ans = (await rl.question(`\nModel id or number [${preferred ?? shown[0]?.id ?? ""}]: `)).trim();
206
- if (!ans) {
207
- model = preferred ?? shown[0]?.id;
208
- }
209
- else if (/^\d+$/.test(ans)) {
210
- const idx = Number(ans) - 1;
211
- model = shown[idx]?.id ?? preferred;
212
- }
213
- else {
214
- model = ans;
215
- }
216
- }
217
- if (!model) {
218
- model = pickDefaultModel(validation.models.map((m) => m.id));
219
- }
220
- if (!model) {
221
- console.error("No model selected and /v1/models was empty of usable ids");
222
- process.exitCode = 1;
223
192
  return;
224
193
  }
225
- console.log(`Using model: ${model}`);
226
- const agentsArg = parseAgentList(flags.agents, "installed");
227
- let targetLabel = agentsArg === "all"
228
- ? "all agents"
229
- : agentsArg === "installed"
230
- ? "installed agents"
231
- : agentsArg.join(", ");
232
- if (interactive && rl && !flags.agents) {
233
- const statuses = await statusAll();
234
- console.log("\nAgents:");
235
- for (const s of statuses) {
236
- console.log(` ${s.installed ? "●" : "○"} ${s.id.padEnd(10)} ${s.installed ? "installed" : "not found"}${s.configured ? " (already InferHub)" : ""}`);
237
- }
238
- const ans = (await rl.question('Apply to [installed] (or "all", or comma list e.g. claude,codex): ')).trim();
239
- if (ans) {
240
- const parsed = parseAgentList(ans, "installed");
241
- // reassign via local
242
- Object.assign(flags, { agents: ans });
243
- targetLabel =
244
- parsed === "all"
245
- ? "all agents"
246
- : parsed === "installed"
247
- ? "installed agents"
248
- : parsed.join(", ");
249
- }
250
- }
251
- const extraModels = flags.models
252
- ? flags.models.split(",").map((s) => s.trim()).filter(Boolean)
253
- : undefined;
254
- if (!flags.yes && rl && !flags.dryRun) {
255
- const ok = (await rl.question(`\nWrite ${PROVIDER_NAME} settings for ${targetLabel}? [Y/n] `))
256
- .trim()
257
- .toLowerCase();
258
- if (ok === "n" || ok === "no") {
259
- console.log("Aborted.");
260
- return;
261
- }
262
- }
263
- const agentSel = parseAgentList(flags.agents, "installed");
264
- const results = await applyToAgents(agentSel, {
265
- apiKey: key,
266
- baseUrl,
267
- model,
268
- subagentModel: flags.subagentModel,
269
- models: extraModels,
270
- dryRun: flags.dryRun,
271
- });
272
- if (flags.json) {
273
- console.log(JSON.stringify({ model, baseUrl, results }, null, 2));
274
- return;
275
- }
276
- console.log("");
277
- for (const r of results) {
278
- const mark = r.success ? "✓" : "✗";
279
- console.log(` ${mark} ${r.name}: ${r.message}`);
280
- if (r.configPath)
281
- console.log(` ${r.configPath}`);
282
- }
283
- if (results.length === 0) {
284
- console.log(" (no matching agents — install Claude/Codex/… or pass --agents all)");
285
- }
286
- console.log("");
194
+ console.error("Non-interactive apply requires --key and --model (or run in a TTY for the wizard).");
195
+ process.exitCode = 1;
196
+ return;
287
197
  }
288
- finally {
289
- rl?.close();
198
+ process.stdout.write(`Validating key against ${baseUrl}/models … `);
199
+ const validation = await validateApiKey({ apiKey: key, baseUrl });
200
+ if (!validation.ok) {
201
+ console.log("failed");
202
+ console.error(`✗ ${validation.error}`);
203
+ process.exitCode = 1;
204
+ return;
290
205
  }
291
- }
292
- async function cmdReset(flags) {
293
- const agentSel = parseAgentList(flags.agents, "all");
294
- const results = await resetAgents(agentSel === "installed" ? "all" : agentSel, {
206
+ console.log(`ok (${validation.models.length} models)`);
207
+ const model = flags.model;
208
+ const extraModels = flags.models
209
+ ? flags.models
210
+ .split(",")
211
+ .map((s) => s.trim())
212
+ .filter(Boolean)
213
+ : undefined;
214
+ const agentSel = parseAgentList(flags.agents, "installed");
215
+ const results = await applyToAgents(agentSel, {
216
+ apiKey: key,
217
+ baseUrl,
218
+ model,
219
+ subagentModel: flags.subagentModel,
220
+ models: extraModels,
295
221
  dryRun: flags.dryRun,
296
222
  });
297
223
  if (flags.json) {
298
- console.log(JSON.stringify(results, null, 2));
224
+ console.log(JSON.stringify({ model, baseUrl, results }, null, 2));
299
225
  return;
300
226
  }
227
+ console.log("");
301
228
  for (const r of results) {
302
229
  console.log(` ${r.success ? "✓" : "✗"} ${r.name}: ${r.message}`);
230
+ if (r.configPath)
231
+ console.log(` ${r.configPath}`);
303
232
  }
233
+ if (results.length === 0) {
234
+ console.log(" (no matching agents — install Claude/Codex/… or pass --agents all)");
235
+ }
236
+ console.log("");
304
237
  }
305
- function pickDefaultModel(ids) {
306
- const prefer = [
307
- "grok-4.5",
308
- "deepseek-v4-pro",
309
- "deepseek-v4-flash",
310
- "claude-sonnet-4-6",
311
- "gpt-4o",
312
- ];
313
- for (const p of prefer) {
314
- const hit = ids.find((id) => id === p || id.endsWith(`/${p}`));
315
- if (hit)
316
- return hit;
238
+ async function cmdReset(flags) {
239
+ const agentSel = parseAgentList(flags.agents, "all");
240
+ const results = await resetAgents(agentSel === "installed" ? "all" : agentSel, { dryRun: flags.dryRun });
241
+ if (flags.json) {
242
+ console.log(JSON.stringify(results, null, 2));
243
+ return;
244
+ }
245
+ for (const r of results) {
246
+ console.log(` ${r.success ? "✓" : "✗"} ${r.name}: ${r.message}`);
317
247
  }
318
- // Prefer non-free marketplace-looking ids
319
- const nonFree = ids.find((id) => !id.startsWith("free/"));
320
- return nonFree ?? ids[0];
321
248
  }
322
249
  async function main() {
323
250
  const flags = parseArgs(process.argv.slice(2));
@@ -330,9 +257,33 @@ async function main() {
330
257
  return;
331
258
  }
332
259
  const cmd = flags._[0];
333
- if (!cmd) {
334
- // Interactive default
335
- await cmdApply(flags, true);
260
+ // Default (no command) → interactive wizard
261
+ if (!cmd || cmd === "setup" || cmd === "wizard" || cmd === "interactive") {
262
+ if (!canRunInteractive() && !flags.yes) {
263
+ console.error("Interactive mode needs a TTY. Use `apply --key … --model … -y` or run in a terminal.");
264
+ process.exitCode = 1;
265
+ return;
266
+ }
267
+ if (!canRunInteractive() && flags.yes) {
268
+ // scripting escape hatch
269
+ await cmdApplyNonInteractive(flags);
270
+ return;
271
+ }
272
+ try {
273
+ await runInteractiveWizard({
274
+ apiKey: flags.key,
275
+ baseUrl: flags.baseUrl,
276
+ dryRun: flags.dryRun,
277
+ });
278
+ }
279
+ catch (err) {
280
+ if (isExitPromptError(err)) {
281
+ console.log("\nCancelled.");
282
+ process.exitCode = 130;
283
+ return;
284
+ }
285
+ throw err;
286
+ }
336
287
  return;
337
288
  }
338
289
  switch (cmd) {
@@ -349,8 +300,17 @@ async function main() {
349
300
  await cmdValidate(flags);
350
301
  break;
351
302
  case "apply":
352
- case "setup":
353
- await cmdApply(flags, !flags.yes && !flags.key);
303
+ try {
304
+ await cmdApplyNonInteractive(flags);
305
+ }
306
+ catch (err) {
307
+ if (isExitPromptError(err)) {
308
+ console.log("\nCancelled.");
309
+ process.exitCode = 130;
310
+ return;
311
+ }
312
+ throw err;
313
+ }
354
314
  break;
355
315
  case "reset":
356
316
  await cmdReset(flags);
@@ -361,7 +321,18 @@ async function main() {
361
321
  process.exitCode = 2;
362
322
  }
363
323
  }
324
+ function isExitPromptError(err) {
325
+ return (!!err &&
326
+ typeof err === "object" &&
327
+ "name" in err &&
328
+ err.name === "ExitPromptError");
329
+ }
364
330
  main().catch((err) => {
331
+ if (isExitPromptError(err)) {
332
+ console.log("\nCancelled.");
333
+ process.exitCode = 130;
334
+ return;
335
+ }
365
336
  console.error(err instanceof Error ? err.message : err);
366
337
  process.exitCode = 1;
367
338
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ApplyResult } from "./types.js";
2
+ export type InteractiveOptions = {
3
+ baseUrl?: string;
4
+ /** Prefill from --key / env */
5
+ apiKey?: string;
6
+ dryRun?: boolean;
7
+ };
8
+ export declare function runInteractiveWizard(opts?: InteractiveOptions): Promise<ApplyResult[]>;
9
+ /** True when stdin is a TTY (interactive terminal). */
10
+ export declare function canRunInteractive(): boolean;
11
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAwB,WAAW,EAAa,MAAM,YAAY,CAAC;AA0Q/E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAyFxB;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
@@ -0,0 +1,322 @@
1
+ import { checkbox, confirm, password, search, Separator, } from "@inquirer/prompts";
2
+ import { DEFAULT_BASE_URL, PROVIDER_NAME } from "./constants.js";
3
+ import { normalizeBaseUrl } from "./fsutil.js";
4
+ import { applyToAgents, statusAll } from "./index.js";
5
+ import { validateApiKey } from "./validate.js";
6
+ const c = {
7
+ reset: "\x1b[0m",
8
+ dim: "\x1b[2m",
9
+ bold: "\x1b[1m",
10
+ green: "\x1b[32m",
11
+ red: "\x1b[31m",
12
+ cyan: "\x1b[36m",
13
+ yellow: "\x1b[33m",
14
+ };
15
+ function ok(msg) {
16
+ console.log(`${c.green}✓${c.reset} ${msg}`);
17
+ }
18
+ function fail(msg) {
19
+ console.log(`${c.red}✗${c.reset} ${msg}`);
20
+ }
21
+ function info(msg) {
22
+ console.log(`${c.dim}${msg}${c.reset}`);
23
+ }
24
+ function pickDefaultModel(ids) {
25
+ const prefer = [
26
+ "grok-4.5",
27
+ "deepseek-v4-pro",
28
+ "deepseek-v4-flash",
29
+ "claude-sonnet-4-6",
30
+ "gpt-4o",
31
+ ];
32
+ for (const p of prefer) {
33
+ const hit = ids.find((id) => id === p || id.endsWith(`/${p}`));
34
+ if (hit)
35
+ return hit;
36
+ }
37
+ return ids.find((id) => !id.startsWith("free/")) ?? ids[0];
38
+ }
39
+ function filterModels(models, term) {
40
+ const q = term.trim().toLowerCase();
41
+ if (!q)
42
+ return models;
43
+ const parts = q.split(/\s+/).filter(Boolean);
44
+ return models.filter((m) => {
45
+ const hay = `${m.id} ${m.ownedBy ?? ""}`.toLowerCase();
46
+ return parts.every((p) => hay.includes(p));
47
+ });
48
+ }
49
+ async function promptApiKey(prefill) {
50
+ if (prefill) {
51
+ const reuse = await confirm({
52
+ message: `Use existing key ${c.dim}${maskKey(prefill)}${c.reset}?`,
53
+ default: true,
54
+ });
55
+ if (reuse)
56
+ return prefill;
57
+ }
58
+ for (;;) {
59
+ const key = (await password({
60
+ message: "InferHub API key",
61
+ mask: "*",
62
+ validate: (v) => {
63
+ const t = v.trim();
64
+ if (!t)
65
+ return "API key is required";
66
+ if (t.length < 8)
67
+ return "Key looks too short";
68
+ return true;
69
+ },
70
+ })).trim();
71
+ return key;
72
+ }
73
+ }
74
+ function maskKey(key) {
75
+ if (key.length <= 12)
76
+ return `${key.slice(0, 4)}…`;
77
+ return `${key.slice(0, 10)}…${key.slice(-4)}`;
78
+ }
79
+ async function validateWithRetry(apiKey, baseUrl) {
80
+ let key = apiKey;
81
+ for (;;) {
82
+ process.stdout.write(`${c.dim}Validating against ${baseUrl}/models …${c.reset} `);
83
+ const result = await validateApiKey({ apiKey: key, baseUrl });
84
+ if (result.ok) {
85
+ console.log(`${c.green}ok${c.reset} (${result.models.length} models)`);
86
+ return { apiKey: key, models: result.models, baseUrl: result.baseUrl };
87
+ }
88
+ console.log(`${c.red}failed${c.reset}`);
89
+ fail(result.error ?? "validation failed");
90
+ const again = await confirm({
91
+ message: "Try a different API key?",
92
+ default: true,
93
+ });
94
+ if (!again) {
95
+ throw new Error(result.error ?? "API key validation failed");
96
+ }
97
+ key = await promptApiKey();
98
+ }
99
+ }
100
+ async function promptAgents(statuses) {
101
+ const installed = statuses.filter((s) => s.installed);
102
+ const choices = statuses.map((s) => {
103
+ const badge = s.installed
104
+ ? s.configured
105
+ ? `${c.green}installed · InferHub${c.reset}`
106
+ : `${c.cyan}installed${c.reset}`
107
+ : `${c.dim}not found${c.reset}`;
108
+ return {
109
+ name: `${s.name.padEnd(14)} ${badge}`,
110
+ value: s.id,
111
+ checked: s.installed,
112
+ disabled: s.installed ? false : "not installed",
113
+ };
114
+ });
115
+ // If nothing installed, allow selecting any (will still write configs)
116
+ const anyInstalled = installed.length > 0;
117
+ const selectable = anyInstalled
118
+ ? choices
119
+ : statuses.map((s) => ({
120
+ name: `${s.name.padEnd(14)} ${c.dim}will create config${c.reset}`,
121
+ value: s.id,
122
+ checked: false,
123
+ }));
124
+ if (!anyInstalled) {
125
+ info("No agents detected on PATH — you can still write configs for any of them.");
126
+ }
127
+ const selected = await checkbox({
128
+ message: "Select IDE / agents to configure",
129
+ instructions: "space to toggle · a all · i invert · enter to confirm",
130
+ pageSize: 12,
131
+ choices: [
132
+ ...selectable,
133
+ new Separator(),
134
+ ],
135
+ required: true,
136
+ validate: (items) => items.length > 0 ? true : "Pick at least one agent (space to select)",
137
+ });
138
+ return selected;
139
+ }
140
+ async function promptModelSearch(models, message, opts) {
141
+ const pool = opts?.exclude
142
+ ? models.filter((m) => !opts.exclude.has(m.id))
143
+ : models;
144
+ if (pool.length === 0)
145
+ return null;
146
+ const preferred = pickDefaultModel(pool.map((m) => m.id));
147
+ const result = await search({
148
+ message,
149
+ pageSize: 12,
150
+ source: async (term) => {
151
+ const filtered = filterModels(pool, term ?? "");
152
+ // Prefer exact / starts-with first when searching
153
+ const sorted = [...filtered].sort((a, b) => {
154
+ const t = (term ?? "").trim().toLowerCase();
155
+ if (!t) {
156
+ if (a.id === preferred)
157
+ return -1;
158
+ if (b.id === preferred)
159
+ return 1;
160
+ return a.id.localeCompare(b.id);
161
+ }
162
+ const as = a.id.toLowerCase().startsWith(t) ? 0 : 1;
163
+ const bs = b.id.toLowerCase().startsWith(t) ? 0 : 1;
164
+ if (as !== bs)
165
+ return as - bs;
166
+ return a.id.localeCompare(b.id);
167
+ });
168
+ const limited = sorted.slice(0, 50);
169
+ if (limited.length === 0) {
170
+ return [
171
+ {
172
+ name: `No models match "${term}"`,
173
+ value: "",
174
+ disabled: true,
175
+ },
176
+ ];
177
+ }
178
+ return limited.map((m) => ({
179
+ name: m.id === preferred && !(term ?? "").trim()
180
+ ? `${m.id}${m.ownedBy ? ` ${c.dim}(${m.ownedBy})${c.reset}` : ""} ${c.yellow}recommended${c.reset}`
181
+ : `${m.id}${m.ownedBy ? ` ${c.dim}(${m.ownedBy})${c.reset}` : ""}`,
182
+ value: m.id,
183
+ }));
184
+ },
185
+ validate: (v) => {
186
+ if (!v) {
187
+ return opts?.allowEmpty ? true : "Select a model (type to search)";
188
+ }
189
+ return true;
190
+ },
191
+ });
192
+ return result || null;
193
+ }
194
+ async function promptExtraModels(models, primary) {
195
+ const extras = [];
196
+ const used = new Set([primary]);
197
+ const want = await confirm({
198
+ message: "Add more models for multi-model agents (OpenCode / OpenClaw)?",
199
+ default: false,
200
+ });
201
+ if (!want)
202
+ return extras;
203
+ info("Type to search · select a model · repeat until done.");
204
+ for (;;) {
205
+ const more = await confirm({
206
+ message: extras.length === 0
207
+ ? "Search and add a model?"
208
+ : `Add another? (${extras.length} extra selected)`,
209
+ default: extras.length === 0,
210
+ });
211
+ if (!more)
212
+ break;
213
+ const id = await promptModelSearch(models, "Search models", {
214
+ exclude: used,
215
+ });
216
+ if (!id) {
217
+ info("No more models available.");
218
+ break;
219
+ }
220
+ extras.push(id);
221
+ used.add(id);
222
+ ok(`added ${id}`);
223
+ }
224
+ return extras;
225
+ }
226
+ async function promptSubagentModel(models, primary, agentIds) {
227
+ const needs = agentIds.some((id) => id === "codex" || id === "opencode");
228
+ if (!needs)
229
+ return undefined;
230
+ const useSame = await confirm({
231
+ message: `Use same model for subagents? (${primary})`,
232
+ default: true,
233
+ });
234
+ if (useSame)
235
+ return primary;
236
+ const id = await promptModelSearch(models, "Subagent model (search)");
237
+ return id ?? primary;
238
+ }
239
+ export async function runInteractiveWizard(opts = {}) {
240
+ const baseUrl = normalizeBaseUrl(opts.baseUrl ?? DEFAULT_BASE_URL);
241
+ console.log("");
242
+ console.log(`${c.bold}${PROVIDER_NAME} Helper${c.reset} — interactive setup`);
243
+ console.log(`${c.dim}Endpoint: ${baseUrl}${c.reset}`);
244
+ console.log("");
245
+ // ── 1. API key ──────────────────────────────────────────────────────────
246
+ const initialKey = opts.apiKey?.trim() || process.env.INFERHUB_API_KEY?.trim() || "";
247
+ const typedKey = await promptApiKey(initialKey || undefined);
248
+ const { apiKey, models } = await validateWithRetry(typedKey, baseUrl);
249
+ // ── 2. Agents ───────────────────────────────────────────────────────────
250
+ console.log("");
251
+ const statuses = await statusAll();
252
+ const agentIds = await promptAgents(statuses);
253
+ ok(`agents: ${agentIds.join(", ")}`);
254
+ // ── 3. Models (searchable) ──────────────────────────────────────────────
255
+ console.log("");
256
+ info(`${models.length} models available — type to filter.`);
257
+ const primary = await promptModelSearch(models, "Primary model (type to search)");
258
+ if (!primary) {
259
+ throw new Error("No model selected");
260
+ }
261
+ ok(`model: ${primary}`);
262
+ const multiAgent = agentIds.some((id) => id === "opencode" || id === "openclaw");
263
+ let extraModels = [];
264
+ if (multiAgent) {
265
+ extraModels = await promptExtraModels(models, primary);
266
+ }
267
+ const subagentModel = await promptSubagentModel(models, primary, agentIds);
268
+ // Claude role defaults: map primary into sonnet unless user wants otherwise
269
+ // (keep simple — one model fills defaults)
270
+ // ── 4. Confirm ──────────────────────────────────────────────────────────
271
+ console.log("");
272
+ console.log(`${c.bold}Summary${c.reset}`);
273
+ console.log(` endpoint ${baseUrl}`);
274
+ console.log(` key ${maskKey(apiKey)}`);
275
+ console.log(` agents ${agentIds.join(", ")}`);
276
+ console.log(` model ${primary}`);
277
+ if (subagentModel && subagentModel !== primary) {
278
+ console.log(` subagent ${subagentModel}`);
279
+ }
280
+ if (extraModels.length) {
281
+ console.log(` extras ${extraModels.join(", ")}`);
282
+ }
283
+ if (opts.dryRun)
284
+ console.log(` ${c.yellow}dry-run${c.reset}`);
285
+ console.log("");
286
+ const proceed = await confirm({
287
+ message: opts.dryRun
288
+ ? "Show what would be written?"
289
+ : `Apply ${PROVIDER_NAME} settings now?`,
290
+ default: true,
291
+ });
292
+ if (!proceed) {
293
+ info("Aborted.");
294
+ return [];
295
+ }
296
+ const results = await applyToAgents(agentIds, {
297
+ apiKey,
298
+ baseUrl,
299
+ model: primary,
300
+ subagentModel,
301
+ models: extraModels.length ? [primary, ...extraModels] : [primary],
302
+ dryRun: opts.dryRun,
303
+ });
304
+ console.log("");
305
+ for (const r of results) {
306
+ if (r.success) {
307
+ ok(`${r.name}: ${r.message}`);
308
+ if (r.configPath)
309
+ info(` ${r.configPath}`);
310
+ }
311
+ else {
312
+ fail(`${r.name}: ${r.message}`);
313
+ }
314
+ }
315
+ console.log("");
316
+ return results;
317
+ }
318
+ /** True when stdin is a TTY (interactive terminal). */
319
+ export function canRunInteractive() {
320
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY);
321
+ }
322
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inferhub/helper",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Point coding agents and IDEs at InferHub — Claude Code, Codex, OpenCode, Hermes, OpenClaw, and more.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "bin": {
15
- "inferhub-helper": "./dist/cli.js",
16
- "ih-helper": "./dist/cli.js"
15
+ "inferhub-helper": "dist/cli.js",
16
+ "ih-helper": "dist/cli.js"
17
17
  },
18
18
  "files": [
19
19
  "dist",
@@ -44,7 +44,7 @@
44
44
  "license": "MIT",
45
45
  "repository": {
46
46
  "type": "git",
47
- "url": "https://github.com/inferhub/helper.git"
47
+ "url": "git+https://github.com/inferhub/helper.git"
48
48
  },
49
49
  "homepage": "https://inferhub.dev",
50
50
  "publishConfig": {
@@ -54,5 +54,8 @@
54
54
  "@types/node": "^22.15.0",
55
55
  "tsx": "^4.19.0",
56
56
  "typescript": "^5.8.0"
57
+ },
58
+ "dependencies": {
59
+ "@inquirer/prompts": "^7.10.1"
57
60
  }
58
61
  }