MCPcopy Create free account
hub / github.com/cortexkit/magic-context / resolveAdaptersForCommand

Function resolveAdaptersForCommand

packages/cli/src/lib/harness-select.ts:40–91  ·  view source on GitHub ↗
(
    argv: string[],
    options: ResolveOptions,
)

Source from the content-addressed store, hash-verified

38 * - allowMulti=false → single-select
39 */
40export async function resolveAdaptersForCommand(
41 argv: string[],
42 options: ResolveOptions,
43): Promise<HarnessAdapter[]> {
44 const flag = parseHarnessFlag(argv);
45 if (flag) return [getAdapter(flag)];
46
47 const installed = getInstalledAdapters();
48
49 if (installed.length === 0) {
50 log.warn("No supported harness was detected on PATH (opencode, pi).");
51 const pick = await selectOne(`Which harness do you want to ${options.verb}?`, [
52 {
53 label: "OpenCode",
54 value: "opencode",
55 hint: "@cortexkit/opencode-magic-context",
56 },
57 {
58 label: "Pi",
59 value: "pi",
60 hint: "@cortexkit/pi-magic-context",
61 },
62 ]);
63 return [getAdapter(pick as HarnessKind)];
64 }
65
66 if (installed.length === 1) {
67 const only = installed[0];
68 log.info(`Detected ${only.displayName} — using it for ${options.verb}.`);
69 return [only];
70 }
71
72 // Multiple installed.
73 if (options.allowMulti) {
74 const picks = await selectMany(
75 `Multiple harnesses detected — which to ${options.verb}?`,
76 installed.map((a) => ({ label: a.displayName, value: a.kind })),
77 installed.map((a) => a.kind),
78 );
79 if (picks.length === 0) {
80 log.warn("No harness selected; nothing to do.");
81 return [];
82 }
83 return picks.map((kind) => getAdapter(kind as HarnessKind));
84 }
85
86 const pick = await selectOne(
87 `Multiple harnesses detected — which one to ${options.verb}?`,
88 installed.map((a) => ({ label: a.displayName, value: a.kind })),
89 );
90 return [getAdapter(pick as HarnessKind)];
91}

Callers 2

runDoctorFunction · 0.90
runSetupFunction · 0.90

Calls 7

getAdapterFunction · 0.90
getInstalledAdaptersFunction · 0.90
selectOneFunction · 0.90
selectManyFunction · 0.90
parseHarnessFlagFunction · 0.85
warnMethod · 0.65
infoMethod · 0.65

Tested by

no test coverage detected