@cleocode/cleo-os 2026.4.67 → 2026.4.69
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/dist/cli.js +11 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +73 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +222 -0
- package/dist/commands/doctor.js.map +1 -0
- package/package.json +4 -4
package/dist/cli.js
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import { existsSync, readFileSync } from 'node:fs';
|
|
14
14
|
import { dirname, join } from 'node:path';
|
|
15
15
|
import { fileURLToPath } from 'node:url';
|
|
16
|
+
import { renderDoctorReport, runDoctor } from './commands/doctor.js';
|
|
16
17
|
import { AgentRegistry } from './registry/agent-registry.js';
|
|
17
18
|
import { ProviderMatrix } from './registry/provider-matrix.js';
|
|
18
19
|
import { resolveCleoOsPaths } from './xdg.js';
|
|
@@ -70,6 +71,9 @@ function handleVersionFlags(args) {
|
|
|
70
71
|
* requiring a full Pi startup — useful for scripts, CI probes, and the
|
|
71
72
|
* future `cleo-os doctor` command.
|
|
72
73
|
*
|
|
74
|
+
* - `--doctor` / `cleoos doctor`: runs the full sovereignty probe — provider
|
|
75
|
+
* matrix, agent registry, memory policy, and per-provider smoke checks.
|
|
76
|
+
* Exits non-zero when issues are found. See {@link runDoctor}.
|
|
73
77
|
* - `--providers` / `cleoos providers`: prints the provider matrix (which of
|
|
74
78
|
* the 9 adapters are installed, have spawn implementations, and their
|
|
75
79
|
* hook-event counts).
|
|
@@ -80,8 +84,15 @@ function handleVersionFlags(args) {
|
|
|
80
84
|
* @returns `true` if a diagnostic flag was handled, `false` otherwise.
|
|
81
85
|
*/
|
|
82
86
|
async function handleDiagnosticsFlags(args) {
|
|
87
|
+
const wantDoctor = args.includes('--doctor') || args[0] === 'doctor';
|
|
83
88
|
const wantProviders = args.includes('--providers') || args[0] === 'providers';
|
|
84
89
|
const wantAgents = args.includes('--agents') || args[0] === 'agents';
|
|
90
|
+
if (wantDoctor) {
|
|
91
|
+
const report = await runDoctor();
|
|
92
|
+
console.log(renderDoctorReport(report));
|
|
93
|
+
process.exitCode = report.issueCount > 0 ? 1 : 0;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
85
96
|
if (wantProviders) {
|
|
86
97
|
const matrix = new ProviderMatrix();
|
|
87
98
|
const rows = await matrix.getMatrix();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,eAAuB;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACpD,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,IAAc;IACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,kEAAkE;QAClE,IAAI,WAAW,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CACtB,SAAS,EACT,IAAI,EACJ,cAAc,EACd,WAAW,EACX,MAAM,EACN,cAAc,CACf,CAAC;YACF,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CleoOS Doctor — aggregated sovereignty diagnostics.
|
|
3
|
+
*
|
|
4
|
+
* Runs a full sovereignty probe across the CleoOS harness: provider matrix,
|
|
5
|
+
* agent registry, memory policy configuration, and per-provider smoke checks.
|
|
6
|
+
* Produces a human-readable report and exits non-zero if any issue is found.
|
|
7
|
+
*
|
|
8
|
+
* Invoked via `cleoos --doctor` or `cleoos doctor`.
|
|
9
|
+
*
|
|
10
|
+
* @see ADR-049 — CleoOS Sovereignty Invariants
|
|
11
|
+
* @see ADR-050 — CleoOS Sovereign Harness: Distribution Binding Charter
|
|
12
|
+
* @task T649
|
|
13
|
+
* @epic T636
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
import type { MemoryItemType } from '../policies/memory-policy.js';
|
|
17
|
+
import type { AgentDefinition } from '../registry/agent-registry.js';
|
|
18
|
+
import type { ProviderMatrixRow } from '../registry/provider-matrix.js';
|
|
19
|
+
/**
|
|
20
|
+
* Result for a single per-provider sovereignty smoke check.
|
|
21
|
+
*/
|
|
22
|
+
interface SmokeResult {
|
|
23
|
+
/** Canonical provider ID (e.g. `"claude-code"`). */
|
|
24
|
+
providerId: string;
|
|
25
|
+
/** Whether the smoke check passed. */
|
|
26
|
+
passed: boolean;
|
|
27
|
+
/** Human-readable status message. */
|
|
28
|
+
message: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Aggregated result of the full doctor probe.
|
|
32
|
+
*/
|
|
33
|
+
export interface DoctorReport {
|
|
34
|
+
/** All rows from the provider matrix. */
|
|
35
|
+
providerRows: ProviderMatrixRow[];
|
|
36
|
+
/** All agents discovered in the registry. */
|
|
37
|
+
agents: AgentDefinition[];
|
|
38
|
+
/** Count of seed agents. */
|
|
39
|
+
seedCount: number;
|
|
40
|
+
/** Count of user agents. */
|
|
41
|
+
userCount: number;
|
|
42
|
+
/** Memory policy check results per item type. */
|
|
43
|
+
policyResults: Array<{
|
|
44
|
+
type: MemoryItemType;
|
|
45
|
+
store: boolean;
|
|
46
|
+
reason: string;
|
|
47
|
+
}>;
|
|
48
|
+
/** Per-provider smoke check results, or null when cleo CLI is unavailable. */
|
|
49
|
+
smokeResults: SmokeResult[] | null;
|
|
50
|
+
/** Total number of issues found across all sections. */
|
|
51
|
+
issueCount: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Run all CleoOS sovereignty diagnostic probes and return the aggregated report.
|
|
55
|
+
*
|
|
56
|
+
* Does not print output — callers are responsible for rendering. This keeps
|
|
57
|
+
* the probe logic testable without capturing stdout.
|
|
58
|
+
*
|
|
59
|
+
* @returns Populated {@link DoctorReport}.
|
|
60
|
+
*/
|
|
61
|
+
export declare function runDoctor(): Promise<DoctorReport>;
|
|
62
|
+
/**
|
|
63
|
+
* Render a {@link DoctorReport} to a human-readable string.
|
|
64
|
+
*
|
|
65
|
+
* Follows the canonical CleoOS Doctor output format. Does not include a
|
|
66
|
+
* trailing newline after the summary line — callers append one if needed.
|
|
67
|
+
*
|
|
68
|
+
* @param report - The completed doctor report to render.
|
|
69
|
+
* @returns Multi-line formatted string ready for `console.log`.
|
|
70
|
+
*/
|
|
71
|
+
export declare function renderDoctorReport(report: DoctorReport): string;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AASxE;;GAEG;AACH,UAAU,WAAW;IACnB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,6CAA6C;IAC7C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,8EAA8E;IAC9E,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACnC,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB;AAoGD;;;;;;;GAOG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CA0CvD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA2D/D"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CleoOS Doctor — aggregated sovereignty diagnostics.
|
|
3
|
+
*
|
|
4
|
+
* Runs a full sovereignty probe across the CleoOS harness: provider matrix,
|
|
5
|
+
* agent registry, memory policy configuration, and per-provider smoke checks.
|
|
6
|
+
* Produces a human-readable report and exits non-zero if any issue is found.
|
|
7
|
+
*
|
|
8
|
+
* Invoked via `cleoos --doctor` or `cleoos doctor`.
|
|
9
|
+
*
|
|
10
|
+
* @see ADR-049 — CleoOS Sovereignty Invariants
|
|
11
|
+
* @see ADR-050 — CleoOS Sovereign Harness: Distribution Binding Charter
|
|
12
|
+
* @task T649
|
|
13
|
+
* @epic T636
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
import { execFile } from 'node:child_process';
|
|
17
|
+
import { promisify } from 'node:util';
|
|
18
|
+
import { MemoryPolicy } from '../policies/memory-policy.js';
|
|
19
|
+
import { AgentRegistry } from '../registry/agent-registry.js';
|
|
20
|
+
import { ProviderMatrix } from '../registry/provider-matrix.js';
|
|
21
|
+
const execFileAsync = promisify(execFile);
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Section probes
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* All memory item types to probe against the policy gate.
|
|
27
|
+
*
|
|
28
|
+
* Ordered: allowed types first, then rejected types.
|
|
29
|
+
*/
|
|
30
|
+
const PROBE_TYPES = [
|
|
31
|
+
'observation',
|
|
32
|
+
'decision',
|
|
33
|
+
'pattern',
|
|
34
|
+
'learning',
|
|
35
|
+
'chatlog',
|
|
36
|
+
'transcript',
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Probe text used when checking each item type against the memory policy.
|
|
40
|
+
*
|
|
41
|
+
* Long enough to pass the `minTextLength` gate so the type decision is the
|
|
42
|
+
* only discriminant under test.
|
|
43
|
+
*/
|
|
44
|
+
const PROBE_TEXT = 'diagnostic probe text for memory policy check';
|
|
45
|
+
/**
|
|
46
|
+
* Probe the memory policy for each recognised item type.
|
|
47
|
+
*
|
|
48
|
+
* @returns Array of policy results — one entry per item type.
|
|
49
|
+
*/
|
|
50
|
+
function probeMemoryPolicy() {
|
|
51
|
+
const policy = new MemoryPolicy();
|
|
52
|
+
return PROBE_TYPES.map((type) => {
|
|
53
|
+
const item = { type, text: PROBE_TEXT };
|
|
54
|
+
const store = policy.shouldStore(item);
|
|
55
|
+
const reason = policy.reason(item);
|
|
56
|
+
return { type, store, reason };
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Detect whether the `cleo` binary is available on `PATH`.
|
|
61
|
+
*
|
|
62
|
+
* @returns `true` when `which cleo` exits with code 0.
|
|
63
|
+
*/
|
|
64
|
+
async function isCleoAvailable() {
|
|
65
|
+
try {
|
|
66
|
+
await execFileAsync('which', ['cleo']);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Run `cleo admin smoke --provider <id>` for a single installed provider.
|
|
75
|
+
*
|
|
76
|
+
* @param providerId - Canonical provider ID to smoke-test.
|
|
77
|
+
* @returns `SmokeResult` with pass/fail and status message.
|
|
78
|
+
*/
|
|
79
|
+
async function runProviderSmoke(providerId) {
|
|
80
|
+
try {
|
|
81
|
+
await execFileAsync('cleo', ['admin', 'smoke', '--provider', providerId]);
|
|
82
|
+
return { providerId, passed: true, message: 'PASS' };
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const message = err instanceof Error ? (err.message.split('\n')[0] ?? 'FAIL') : 'FAIL';
|
|
86
|
+
return { providerId, passed: false, message: `FAIL — ${message}` };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Run sovereignty smoke checks for all installed providers.
|
|
91
|
+
*
|
|
92
|
+
* Returns `null` when the `cleo` CLI is not on `PATH` (skipped section).
|
|
93
|
+
*
|
|
94
|
+
* @param rows - Provider matrix rows; only installed providers are checked.
|
|
95
|
+
* @returns Array of smoke results or `null` when cleo is unavailable.
|
|
96
|
+
*/
|
|
97
|
+
async function runSmokeChecks(rows) {
|
|
98
|
+
const available = await isCleoAvailable();
|
|
99
|
+
if (!available) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
const installed = rows.filter((r) => r.installed);
|
|
103
|
+
if (installed.length === 0) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
const results = await Promise.all(installed.map((r) => runProviderSmoke(r.providerId)));
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
// Core doctor function
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
/**
|
|
113
|
+
* Run all CleoOS sovereignty diagnostic probes and return the aggregated report.
|
|
114
|
+
*
|
|
115
|
+
* Does not print output — callers are responsible for rendering. This keeps
|
|
116
|
+
* the probe logic testable without capturing stdout.
|
|
117
|
+
*
|
|
118
|
+
* @returns Populated {@link DoctorReport}.
|
|
119
|
+
*/
|
|
120
|
+
export async function runDoctor() {
|
|
121
|
+
const matrix = new ProviderMatrix();
|
|
122
|
+
const registry = new AgentRegistry();
|
|
123
|
+
const [providerRows, agents] = await Promise.all([matrix.getMatrix(), registry.listAll()]);
|
|
124
|
+
const seedCount = agents.filter((a) => a.source === 'seed').length;
|
|
125
|
+
const userCount = agents.filter((a) => a.source === 'user').length;
|
|
126
|
+
const policyResults = probeMemoryPolicy();
|
|
127
|
+
const smokeResults = await runSmokeChecks(providerRows);
|
|
128
|
+
// Count issues:
|
|
129
|
+
// - A provider that is not installed is not an issue (not expected to be installed).
|
|
130
|
+
// - A provider that IS installed but has no spawn implementation is flagged.
|
|
131
|
+
// - A smoke check that failed is flagged.
|
|
132
|
+
let issueCount = 0;
|
|
133
|
+
for (const row of providerRows) {
|
|
134
|
+
if (row.installed && !row.spawnImplemented) {
|
|
135
|
+
issueCount++;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (smokeResults !== null) {
|
|
139
|
+
for (const r of smokeResults) {
|
|
140
|
+
if (!r.passed) {
|
|
141
|
+
issueCount++;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
providerRows,
|
|
147
|
+
agents,
|
|
148
|
+
seedCount,
|
|
149
|
+
userCount,
|
|
150
|
+
policyResults,
|
|
151
|
+
smokeResults,
|
|
152
|
+
issueCount,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// Rendering
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
/**
|
|
159
|
+
* Render a {@link DoctorReport} to a human-readable string.
|
|
160
|
+
*
|
|
161
|
+
* Follows the canonical CleoOS Doctor output format. Does not include a
|
|
162
|
+
* trailing newline after the summary line — callers append one if needed.
|
|
163
|
+
*
|
|
164
|
+
* @param report - The completed doctor report to render.
|
|
165
|
+
* @returns Multi-line formatted string ready for `console.log`.
|
|
166
|
+
*/
|
|
167
|
+
export function renderDoctorReport(report) {
|
|
168
|
+
const lines = [];
|
|
169
|
+
const installedCount = report.providerRows.filter((r) => r.installed).length;
|
|
170
|
+
const spawnCount = report.providerRows.filter((r) => r.installed && r.spawnImplemented).length;
|
|
171
|
+
const stubbedCount = installedCount - spawnCount;
|
|
172
|
+
lines.push('CleoOS Doctor — Sovereignty Diagnostics');
|
|
173
|
+
lines.push('═══════════════════════════════════════════════════════════');
|
|
174
|
+
lines.push('');
|
|
175
|
+
// Provider Matrix
|
|
176
|
+
lines.push(`[Provider Matrix] ${report.providerRows.length} providers total`);
|
|
177
|
+
lines.push(` Installed: ${installedCount}`);
|
|
178
|
+
lines.push(` With spawn: ${spawnCount}`);
|
|
179
|
+
lines.push(` Stubbed: ${stubbedCount}`);
|
|
180
|
+
lines.push('');
|
|
181
|
+
// Agent Registry
|
|
182
|
+
lines.push('[Agent Registry]');
|
|
183
|
+
lines.push(` Seed agents: ${report.seedCount}`);
|
|
184
|
+
lines.push(` User agents: ${report.userCount}`);
|
|
185
|
+
lines.push(` Total: ${report.agents.length}`);
|
|
186
|
+
lines.push('');
|
|
187
|
+
// Memory Policy
|
|
188
|
+
lines.push('[Memory Policy]');
|
|
189
|
+
for (const { type, store, reason } of report.policyResults) {
|
|
190
|
+
const storeLabel = store ? 'store=true' : 'store=false';
|
|
191
|
+
// For rejected types, append the short reason after the store label.
|
|
192
|
+
const suffix = store ? '' : ` (${reason})`;
|
|
193
|
+
lines.push(` ${type.padEnd(12)} ${storeLabel}${suffix}`);
|
|
194
|
+
}
|
|
195
|
+
lines.push('');
|
|
196
|
+
// Sovereignty Invariants
|
|
197
|
+
lines.push('[Sovereignty Invariants]');
|
|
198
|
+
if (report.smokeResults === null) {
|
|
199
|
+
lines.push(' skipped — cleo CLI not on PATH');
|
|
200
|
+
}
|
|
201
|
+
else if (report.smokeResults.length === 0) {
|
|
202
|
+
lines.push(' no installed providers to smoke-test');
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
for (const r of report.smokeResults) {
|
|
206
|
+
const status = r.passed ? 'PASS' : `FAIL`;
|
|
207
|
+
const detail = r.passed ? '' : ` — ${r.message.replace(/^FAIL — /, '')}`;
|
|
208
|
+
lines.push(` ${r.providerId.padEnd(18)} ${status}${detail}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
lines.push('');
|
|
212
|
+
// Summary
|
|
213
|
+
lines.push('───────────────────────────────────────────────────────────');
|
|
214
|
+
if (report.issueCount === 0) {
|
|
215
|
+
lines.push('Result: PASS (0 issues)');
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
lines.push(`Result: FAIL (${report.issueCount} issue${report.issueCount === 1 ? '' : 's'})`);
|
|
219
|
+
}
|
|
220
|
+
return lines.join('\n');
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/cleo-os",
|
|
3
|
-
"version": "2026.4.
|
|
3
|
+
"version": "2026.4.69",
|
|
4
4
|
"description": "CleoOS — the batteries-included agentic development environment wrapping Pi",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli.js",
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@mariozechner/pi-coding-agent": ">=0.60.0",
|
|
14
14
|
"@sinclair/typebox": "^0.34.49",
|
|
15
|
-
"@cleocode/
|
|
16
|
-
"@cleocode/
|
|
17
|
-
"@cleocode/
|
|
15
|
+
"@cleocode/cleo": "2026.4.69",
|
|
16
|
+
"@cleocode/core": "2026.4.69",
|
|
17
|
+
"@cleocode/cant": "2026.4.69"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"typescript": "^6.0.2",
|