@controllerai/cli 0.2.15 → 0.2.16

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.
@@ -1,11 +1,62 @@
1
1
  import { statSync } from 'node:fs';
2
2
  import { ApiClient } from '../api/client.js';
3
+ import { CLAUDE_PLUGIN_ID, CLAUDE_REPOSITORY_PLUGIN_ID, CONTROLLERAI_MCP_HEALTH_URL, detectAssistants, parsePluginInstallation, runExternalCommand, } from '../assistantHosts.js';
3
4
  import { configPath, detectTokenKind, loadConfig, resolveWorkflowPin, } from '../config.js';
4
5
  import { buildClient, globalOpt } from '../context.js';
5
6
  import { userError } from '../errors.js';
6
7
  import { emit, printTable } from '../output.js';
7
8
  import { cliUpdateNotice, compareSemver, compareSkillSetVersions, fetchHostedSkillsManifest, installedSkillStatus, } from './skills.js';
8
9
  import { CLI_VERSION } from '../version.js';
10
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
11
+ const optionalString = (value) => typeof value === 'string' && value.trim() ? value.trim() : undefined;
12
+ export const parseMcpHealth = (value) => {
13
+ if (!isRecord(value))
14
+ throw new Error('MCP health response is not a JSON object.');
15
+ const cli = isRecord(value.cli) ? value.cli : undefined;
16
+ return {
17
+ ...(optionalString(value.version) ? { version: optionalString(value.version) } : {}),
18
+ ...(optionalString(value.skillSetVersion)
19
+ ? { skillSetVersion: optionalString(value.skillSetVersion) }
20
+ : {}),
21
+ ...(optionalString(value.catalogVersion)
22
+ ? { catalogVersion: optionalString(value.catalogVersion) }
23
+ : {}),
24
+ ...(optionalString(cli?.version) ? { cliVersion: optionalString(cli?.version) } : {}),
25
+ };
26
+ };
27
+ export const fetchMcpHealth = async (fetchImpl = fetch, url = CONTROLLERAI_MCP_HEALTH_URL) => {
28
+ const controller = new AbortController();
29
+ const timer = setTimeout(() => controller.abort(), 5_000);
30
+ try {
31
+ const response = await fetchImpl(url, {
32
+ signal: controller.signal,
33
+ headers: { Accept: 'application/json' },
34
+ });
35
+ if (!response.ok)
36
+ throw new Error(`MCP health returned HTTP ${response.status}.`);
37
+ return parseMcpHealth(await response.json());
38
+ }
39
+ finally {
40
+ clearTimeout(timer);
41
+ }
42
+ };
43
+ export const readClaudePluginVersion = async (runner = runExternalCommand) => {
44
+ const claude = detectAssistants().find(row => row.client === 'claude-code');
45
+ if (!claude?.detected)
46
+ return undefined;
47
+ const result = await runner('claude', ['plugin', 'list', '--json'], {
48
+ echoCommand: false,
49
+ echoOutput: false,
50
+ timeoutMs: 10_000,
51
+ });
52
+ if (result.exitCode !== 0)
53
+ return undefined;
54
+ const plugin = parsePluginInstallation(result.stdout, [
55
+ CLAUDE_PLUGIN_ID,
56
+ CLAUDE_REPOSITORY_PLUGIN_ID,
57
+ ]);
58
+ return plugin.installed ? plugin : undefined;
59
+ };
9
60
  export const accountCheck = (account) => account.provisional === true && account.isEmailConfirmed !== true
10
61
  ? {
11
62
  name: 'Account',
@@ -21,7 +72,8 @@ export const cliVersionCheck = (notice) => ({
21
72
  name: 'CLI version',
22
73
  ok: !notice,
23
74
  detail: notice
24
- ? `${notice} Do this before other Controller AI work — newer skills assume the newer CLI.`
75
+ ? `${notice.replace(/\s+Upgrade with:.*$/, '')} Run \`cai upgrade\` for the CLI install ` +
76
+ 'command and skill updates. Do this before other Controller AI work — newer skills assume the newer CLI.'
25
77
  : `${CLI_VERSION} (current)`,
26
78
  });
27
79
  export const summarizeSkillCheck = (target, rows, hostedSkillSetVersion, hostedMinCliVersion) => {
@@ -53,7 +105,7 @@ export const summarizeSkillCheck = (target, rows, hostedSkillSetVersion, hostedM
53
105
  // `skills update` refuses sets that need a newer CLI, so when the hosted
54
106
  // set is out of this CLI's reach the remediation is the upgrade itself.
55
107
  const remedy = hostedMinCliVersion && compareSemver(CLI_VERSION, hostedMinCliVersion) < 0
56
- ? `it needs cai ${hostedMinCliVersion} — upgrade first (npm install -g @controllerai/cli@latest), then run \`cai skills update\``
108
+ ? `it needs cai ${hostedMinCliVersion} — run \`cai upgrade\` first`
57
109
  : 'run `cai skills update`';
58
110
  return {
59
111
  name: `${target} skills`,
@@ -69,6 +121,229 @@ export const summarizeSkillCheck = (target, rows, hostedSkillSetVersion, hostedM
69
121
  detail: `${current}/${rows.length} current${issueSummary ? ` — ${issueSummary}` : ''}`,
70
122
  };
71
123
  };
124
+ const safeSemverComparison = (left, right) => {
125
+ if (!left || !right)
126
+ return undefined;
127
+ try {
128
+ return compareSemver(left, right);
129
+ }
130
+ catch {
131
+ return undefined;
132
+ }
133
+ };
134
+ const newestSemver = (versions) => {
135
+ const valid = versions.filter((version) => {
136
+ if (!version)
137
+ return false;
138
+ return safeSemverComparison(version, version) === 0;
139
+ });
140
+ return valid.reduce((newest, version) => {
141
+ if (!newest || safeSemverComparison(version, newest) > 0)
142
+ return version;
143
+ return newest;
144
+ }, undefined);
145
+ };
146
+ const comparisonStatus = (comparison) => comparison === undefined
147
+ ? 'installed'
148
+ : comparison < 0
149
+ ? 'behind'
150
+ : comparison > 0
151
+ ? 'ahead'
152
+ : 'current';
153
+ const installedTargets = (skills) => {
154
+ const targets = [...new Set(skills.map(row => row.target))];
155
+ return targets
156
+ .map(target => ({
157
+ target,
158
+ rows: skills.filter(row => row.target === target),
159
+ }))
160
+ .filter(group => group.rows.some(row => row.status !== 'missing'));
161
+ };
162
+ export const buildDoctorVersionReport = (input) => {
163
+ const hostedFeed = {
164
+ reachable: Boolean(input.hostedManifest),
165
+ ...(input.hostedManifest?.skillSetVersion
166
+ ? { skillSetVersion: input.hostedManifest.skillSetVersion }
167
+ : {}),
168
+ ...(input.hostedManifest?.minCliVersion
169
+ ? { minCliVersion: input.hostedManifest.minCliVersion }
170
+ : {}),
171
+ ...(input.hostedManifest?.latestCliVersion
172
+ ? { latestCliVersion: input.hostedManifest.latestCliVersion }
173
+ : {}),
174
+ ...(input.hostedError ? { error: input.hostedError } : {}),
175
+ };
176
+ const mcpServer = {
177
+ reachable: Boolean(input.mcpHealth),
178
+ ...(input.mcpHealth?.version ? { version: input.mcpHealth.version } : {}),
179
+ ...(input.mcpHealth?.skillSetVersion
180
+ ? { skillSetVersion: input.mcpHealth.skillSetVersion }
181
+ : {}),
182
+ ...(input.mcpHealth?.catalogVersion ? { catalogVersion: input.mcpHealth.catalogVersion } : {}),
183
+ ...(input.mcpHealth?.cliVersion ? { cliVersion: input.mcpHealth.cliVersion } : {}),
184
+ ...(input.mcpError ? { error: input.mcpError } : {}),
185
+ };
186
+ const rows = [];
187
+ // The published feed is the release authority. MCP's CLI stamp is a useful
188
+ // fallback during a feed outage and is shown separately when both exist.
189
+ const latestCli = newestSemver([input.hostedManifest?.latestCliVersion]) ??
190
+ newestSemver([input.mcpHealth?.cliVersion]);
191
+ const cliStatus = comparisonStatus(safeSemverComparison(CLI_VERSION, latestCli));
192
+ rows.push({
193
+ component: 'CLI',
194
+ installed: CLI_VERSION,
195
+ ...(latestCli ? { available: latestCli } : {}),
196
+ status: latestCli ? cliStatus : 'unavailable',
197
+ ...(cliStatus === 'behind' ? { fix: 'cai upgrade' } : {}),
198
+ ...(!latestCli
199
+ ? { detail: 'hosted CLI version is unavailable' }
200
+ : input.hostedManifest?.latestCliVersion &&
201
+ input.mcpHealth?.cliVersion &&
202
+ input.hostedManifest.latestCliVersion !== input.mcpHealth.cliVersion
203
+ ? {
204
+ detail: `feed reports ${input.hostedManifest.latestCliVersion}; ` +
205
+ `MCP reports ${input.mcpHealth.cliVersion}`,
206
+ }
207
+ : {}),
208
+ });
209
+ rows.push(input.hostedManifest
210
+ ? {
211
+ component: 'Hosted skill feed',
212
+ available: `${input.hostedManifest.skillSetVersion}` +
213
+ (input.hostedManifest.latestCliVersion
214
+ ? ` / CLI ${input.hostedManifest.latestCliVersion}`
215
+ : ''),
216
+ status: 'reported',
217
+ }
218
+ : {
219
+ component: 'Hosted skill feed',
220
+ status: 'unavailable',
221
+ detail: input.hostedError ?? 'version metadata unavailable',
222
+ });
223
+ const latestSkillSet = input.hostedManifest?.skillSetVersion ?? input.mcpHealth?.skillSetVersion;
224
+ const minimumCliComparison = safeSemverComparison(CLI_VERSION, input.hostedManifest?.minCliVersion);
225
+ const skillUpdateNeedsCliUpgrade = minimumCliComparison !== undefined && minimumCliComparison < 0;
226
+ for (const group of installedTargets(input.skills)) {
227
+ const versions = [
228
+ ...new Set(group.rows
229
+ .map(row => row.skillSetVersion)
230
+ .filter((version) => Boolean(version))),
231
+ ];
232
+ const installed = versions.length === 1 ? versions[0] : versions.length ? versions.join(', ') : '-';
233
+ const integrityStatuses = new Set(['missing', 'unmanaged', 'incomplete', 'modified', 'invalid']);
234
+ const integrityIssue = group.rows.some(row => integrityStatuses.has(row.status));
235
+ const stale = group.rows.some(row => row.status === 'stale');
236
+ const comparisons = versions.map(version => compareSkillSetVersions(version, latestSkillSet ?? ''));
237
+ const behind = comparisons.some(comparison => comparison !== undefined && comparison < 0);
238
+ const ahead = comparisons.some(comparison => comparison !== undefined && comparison > 0);
239
+ const status = integrityIssue
240
+ ? 'attention'
241
+ : behind
242
+ ? 'behind'
243
+ : stale
244
+ ? 'attention'
245
+ : !latestSkillSet
246
+ ? 'installed'
247
+ : ahead
248
+ ? 'ahead'
249
+ : comparisons.length > 0 && comparisons.every(comparison => comparison === 0)
250
+ ? 'current'
251
+ : 'installed';
252
+ rows.push({
253
+ component: `${group.target} skills`,
254
+ installed,
255
+ ...(latestSkillSet ? { available: latestSkillSet } : {}),
256
+ status,
257
+ ...(['attention', 'behind'].includes(status)
258
+ ? {
259
+ fix: skillUpdateNeedsCliUpgrade
260
+ ? 'cai upgrade'
261
+ : 'cai skills update',
262
+ }
263
+ : {}),
264
+ ...(integrityIssue ||
265
+ (stale && !behind) ||
266
+ (skillUpdateNeedsCliUpgrade && status === 'behind')
267
+ ? {
268
+ detail: [
269
+ ...new Set(group.rows
270
+ .filter(row => integrityStatuses.has(row.status) || row.status === 'stale')
271
+ .map(row => row.status)),
272
+ ...(skillUpdateNeedsCliUpgrade
273
+ ? [`skill update requires cai ${input.hostedManifest?.minCliVersion}`]
274
+ : []),
275
+ ].join(', '),
276
+ }
277
+ : {}),
278
+ });
279
+ }
280
+ if (!input.mcpHealth) {
281
+ rows.push({
282
+ component: 'MCP server',
283
+ status: 'unavailable',
284
+ detail: input.mcpError ?? 'health metadata unavailable',
285
+ });
286
+ }
287
+ else if (input.mcpHealth.version) {
288
+ rows.push({
289
+ component: 'MCP server',
290
+ available: input.mcpHealth.version,
291
+ status: 'reported',
292
+ });
293
+ }
294
+ else {
295
+ rows.push({
296
+ component: 'MCP server',
297
+ status: 'reported',
298
+ detail: 'health endpoint is reachable; server version was not reported',
299
+ });
300
+ }
301
+ if (input.mcpHealth?.skillSetVersion) {
302
+ const comparison = compareSkillSetVersions(input.mcpHealth.skillSetVersion, input.hostedManifest?.skillSetVersion ?? '');
303
+ rows.push({
304
+ component: 'MCP skill set',
305
+ available: input.mcpHealth.skillSetVersion,
306
+ status: comparison === undefined
307
+ ? 'reported'
308
+ : comparison < 0
309
+ ? 'behind'
310
+ : comparison > 0
311
+ ? 'ahead'
312
+ : 'current',
313
+ ...(comparison !== undefined && comparison < 0
314
+ ? { detail: 'the hosted service is behind the published skill feed' }
315
+ : {}),
316
+ });
317
+ }
318
+ if (input.mcpHealth?.catalogVersion) {
319
+ rows.push({
320
+ component: 'MCP catalog',
321
+ available: input.mcpHealth.catalogVersion,
322
+ status: 'reported',
323
+ });
324
+ }
325
+ if (input.mcpHealth?.cliVersion) {
326
+ rows.push({
327
+ component: 'MCP CLI stamp',
328
+ available: input.mcpHealth.cliVersion,
329
+ status: 'reported',
330
+ });
331
+ }
332
+ if (input.claudePlugin?.installed) {
333
+ const pluginStatus = comparisonStatus(safeSemverComparison(input.claudePlugin.version, input.claudePlugin.latestVersion));
334
+ rows.push({
335
+ component: 'Claude plugin',
336
+ installed: input.claudePlugin.version ?? input.claudePlugin.id ?? 'installed',
337
+ ...(input.claudePlugin.latestVersion ? { available: input.claudePlugin.latestVersion } : {}),
338
+ status: input.claudePlugin.latestVersion ? pluginStatus : 'installed',
339
+ ...(pluginStatus === 'behind' ? { fix: 'claude plugin update controllerai' } : {}),
340
+ ...(!input.claudePlugin.latestVersion
341
+ ? { detail: 'latest plugin version was not reported' }
342
+ : {}),
343
+ });
344
+ }
345
+ return { hostedFeed, mcpServer, rows };
346
+ };
72
347
  const pinDetail = (pin) => `id ${String(pin.workflowId)}, source ${pin.source}, path ${pin.path ?? '(none)'}`;
73
348
  export const workflowPinCheck = async (api, pin) => {
74
349
  if (pin.source === 'none') {
@@ -126,7 +401,19 @@ export const workflowPinCheck = async (api, pin) => {
126
401
  };
127
402
  }
128
403
  };
129
- export const runDoctor = async (command) => {
404
+ const installedSkillsForDoctor = () => {
405
+ const seen = new Set();
406
+ return [
407
+ ...installedSkillStatus(),
408
+ ...installedSkillStatus({ target: 'project', projectDir: process.cwd() }),
409
+ ].filter(row => {
410
+ if (seen.has(row.skillFile))
411
+ return false;
412
+ seen.add(row.skillFile);
413
+ return true;
414
+ });
415
+ };
416
+ export const runDoctor = async (command, dependencies = {}) => {
130
417
  const config = command ? buildClient(command).config : loadConfig();
131
418
  const api = new ApiClient(config);
132
419
  const major = Number(process.versions.node.split('.')[0]);
@@ -169,15 +456,17 @@ export const runDoctor = async (command) => {
169
456
  checks.push(await workflowPinCheck(api, pin));
170
457
  // One hosted-manifest fetch feeds both the skills freshness check and the
171
458
  // CLI-version notice. Fetch failure degrades both to local-only, never fails.
172
- let hostedManifest;
173
- try {
174
- hostedManifest = (await fetchHostedSkillsManifest()).manifest;
175
- }
176
- catch {
177
- hostedManifest = undefined;
459
+ let hostedManifest = dependencies.hostedManifest;
460
+ if (!dependencies.hostedManifestResolved) {
461
+ try {
462
+ hostedManifest = (await fetchHostedSkillsManifest()).manifest;
463
+ }
464
+ catch {
465
+ hostedManifest = undefined;
466
+ }
178
467
  }
179
- const skills = installedSkillStatus();
180
- for (const target of ['agents', 'codex', 'claude', 'cursor', 'copilot']) {
468
+ const skills = dependencies.skills ?? installedSkillsForDoctor();
469
+ for (const target of ['agents', 'codex', 'claude', 'cursor', 'copilot', 'project']) {
181
470
  const rows = skills.filter(row => row.target === target);
182
471
  const check = summarizeSkillCheck(target, rows, hostedManifest?.skillSetVersion, hostedManifest?.minCliVersion);
183
472
  if (check)
@@ -206,12 +495,56 @@ export const runDoctor = async (command) => {
206
495
  }
207
496
  return checks;
208
497
  };
498
+ export const runDoctorReport = async (command, dependencies = {}) => {
499
+ const skills = dependencies.skills ?? installedSkillsForDoctor();
500
+ const fetchImpl = dependencies.fetchImpl ?? fetch;
501
+ const hostedPromise = dependencies.hostedManifest || dependencies.hostedError
502
+ ? Promise.resolve({
503
+ manifest: dependencies.hostedManifest,
504
+ error: dependencies.hostedError,
505
+ })
506
+ : fetchHostedSkillsManifest(undefined, fetchImpl).then(result => ({ manifest: result.manifest, error: undefined }), error => ({
507
+ manifest: undefined,
508
+ error: error instanceof Error ? error.message : String(error),
509
+ }));
510
+ const mcpPromise = dependencies.mcpHealth || dependencies.mcpError
511
+ ? Promise.resolve({ health: dependencies.mcpHealth, error: dependencies.mcpError })
512
+ : fetchMcpHealth(fetchImpl).then(health => ({ health, error: undefined }), error => ({
513
+ health: undefined,
514
+ error: error instanceof Error ? error.message : String(error),
515
+ }));
516
+ const pluginPromise = dependencies.claudePlugin
517
+ ? Promise.resolve(dependencies.claudePlugin)
518
+ : (dependencies.readClaudePlugin ?? readClaudePluginVersion)().catch(() => undefined);
519
+ const [hosted, mcp, claudePlugin] = await Promise.all([hostedPromise, mcpPromise, pluginPromise]);
520
+ const hostedManifest = hosted.manifest;
521
+ const hostedError = hosted.error;
522
+ const mcpHealth = mcp.health;
523
+ const mcpError = mcp.error;
524
+ const checks = await runDoctor(command, {
525
+ hostedManifest,
526
+ hostedManifestResolved: true,
527
+ skills,
528
+ });
529
+ return {
530
+ checks,
531
+ versions: buildDoctorVersionReport({
532
+ skills,
533
+ hostedManifest,
534
+ ...(hostedError ? { hostedError } : {}),
535
+ mcpHealth,
536
+ ...(mcpError ? { mcpError } : {}),
537
+ claudePlugin,
538
+ }),
539
+ };
540
+ };
209
541
  export const registerDoctor = (program) => {
210
542
  program
211
543
  .command('doctor')
212
544
  .description('Verify authentication, API access, workflow pin, runtime, and installed skills')
213
545
  .action(async (_opts, command) => {
214
- const checks = await runDoctor(command);
546
+ const report = await runDoctorReport(command);
547
+ const checks = report.checks;
215
548
  const required = checks.filter(check => ['Node.js', 'Credential', 'Controller AI API', 'Workflow pin'].includes(check.name));
216
549
  if (required.some(check => !check.ok)) {
217
550
  throw userError(`Controller AI setup is incomplete:\n${checks
@@ -219,7 +552,18 @@ export const registerDoctor = (program) => {
219
552
  .map(check => `- ${check.name}: ${check.detail}`)
220
553
  .join('\n')}`, 'DOCTOR_FAILED');
221
554
  }
222
- emit({ ok: checks.every(check => check.ok), checks }, () => printTable(['check', 'status', 'detail'], checks.map(check => [check.name, check.ok ? 'ok' : 'warning', check.detail])));
555
+ emit({ ok: checks.every(check => check.ok), checks, versions: report.versions }, () => {
556
+ printTable(['check', 'status', 'detail'], checks.map(check => [check.name, check.ok ? 'ok' : 'warning', check.detail]));
557
+ process.stdout.write('\nVersions\n');
558
+ printTable(['component', 'installed', 'available', 'status', 'fix', 'detail'], report.versions.rows.map(row => [
559
+ row.component,
560
+ row.installed,
561
+ row.available,
562
+ row.status,
563
+ row.fix,
564
+ row.detail,
565
+ ]));
566
+ });
223
567
  });
224
568
  };
225
569
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ export const cliUpdateNotice = (manifest, currentVersion = CLI_VERSION) => {
37
37
  if (compareSemver(currentVersion, manifest.latestCliVersion) >= 0)
38
38
  return null;
39
39
  return (`A newer cai is available: ${manifest.latestCliVersion} (this is ${currentVersion}). ` +
40
- 'Upgrade with: npm install -g @controllerai/cli@latest');
40
+ 'Upgrade with: cai upgrade');
41
41
  };
42
42
  const MARKER = '.controllerai-managed';
43
43
  const MAX_MANIFEST_SIZE = 256 * 1024;
@@ -365,8 +365,7 @@ const fetchBytes = async (fetchImpl, url, maximumSize, label) => {
365
365
  export const assertCliCanUseSkillSet = (manifest, cliVersion = CLI_VERSION) => {
366
366
  if (compareSemver(cliVersion, manifest.minCliVersion) < 0) {
367
367
  throw userError(`Skill set ${manifest.skillSetVersion} requires cai ${manifest.minCliVersion} or newer; ` +
368
- `this is cai ${cliVersion}. Upgrade first: npm install -g @controllerai/cli@latest, ` +
369
- 'then rerun `cai skills update`.', 'CLI_TOO_OLD_FOR_SKILLS');
368
+ `this is cai ${cliVersion}. Run \`cai upgrade\`, then rerun \`cai skills update\`.`, 'CLI_TOO_OLD_FOR_SKILLS');
370
369
  }
371
370
  };
372
371
  /** Manifest only — no skill file downloads. Doctor's version check uses this. */