zelari-code 1.0.2 → 1.0.3
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/main.bundled.js +365 -64
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +10 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/slashHandlers/updater.js +77 -6
- package/dist/cli/slashHandlers/updater.js.map +1 -1
- package/dist/cli/utils/doctor.js +287 -0
- package/dist/cli/utils/doctor.js.map +1 -0
- package/package.json +4 -2
- package/scripts/postinstall.mjs +186 -0
package/dist/cli/main.js
CHANGED
|
@@ -97,6 +97,15 @@ function pickRootComponent() {
|
|
|
97
97
|
console.log(`zelari-code v${VERSION}`);
|
|
98
98
|
process.exit(0);
|
|
99
99
|
}
|
|
100
|
+
if (argv.includes("--doctor") || argv.includes("doctor")) {
|
|
101
|
+
// v1.0.3: install-health diagnostic. Runs BEFORE the bundle is loaded
|
|
102
|
+
// and before any provider / config work, so it works on a broken
|
|
103
|
+
// install (missing bundle, missing shim, wrong PATH, etc.).
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
105
|
+
const { runDoctor } = require("./utils/doctor.js");
|
|
106
|
+
const healthy = runDoctor();
|
|
107
|
+
process.exit(healthy ? 0 : 1);
|
|
108
|
+
}
|
|
100
109
|
if (argv.includes("--help") || argv.includes("-h")) {
|
|
101
110
|
// eslint-disable-next-line no-console
|
|
102
111
|
console.log("zelari-code — AI Council coding agent CLI.\n" +
|
|
@@ -106,6 +115,7 @@ function pickRootComponent() {
|
|
|
106
115
|
"Options:\n" +
|
|
107
116
|
" --version, -v Print version and exit\n" +
|
|
108
117
|
" --help, -h Print this help and exit\n" +
|
|
118
|
+
" --doctor Diagnose install health (shim, bundle, PATH, deps)\n" +
|
|
109
119
|
" --no-wizard Skip the first-run wizard\n" +
|
|
110
120
|
" --reset-config Re-run the wizard (clears provider.json on commit)\n" +
|
|
111
121
|
" --headless Run a single task without mounting the TUI\n" +
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { appendSystem } from
|
|
1
|
+
import { appendSystem } from "../hooks/messageHelpers.js";
|
|
2
2
|
export async function handleUpdateCheck(ctx) {
|
|
3
3
|
try {
|
|
4
|
-
const { checkForUpdate } = await import(
|
|
4
|
+
const { checkForUpdate } = await import("../updater.js");
|
|
5
5
|
const info = await checkForUpdate();
|
|
6
6
|
if (info.error) {
|
|
7
7
|
appendSystem(ctx.setMessages, `[update] check failed: ${info.error}`);
|
|
@@ -19,9 +19,9 @@ export async function handleUpdateCheck(ctx) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
export async function handleUpdatePerform(ctx) {
|
|
22
|
-
appendSystem(ctx.setMessages,
|
|
22
|
+
appendSystem(ctx.setMessages, "[update] running `npm install -g zelari-code@latest`...");
|
|
23
23
|
try {
|
|
24
|
-
const { performUpdate } = await import(
|
|
24
|
+
const { performUpdate } = await import("../updater.js");
|
|
25
25
|
const res = await performUpdate();
|
|
26
26
|
if (res.ok) {
|
|
27
27
|
appendSystem(ctx.setMessages, `[update] ✅ installed successfully\n\n` +
|
|
@@ -29,12 +29,83 @@ export async function handleUpdatePerform(ctx) {
|
|
|
29
29
|
`(exit with /exit or Ctrl+C, then run \`zelari-code\` again)`);
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
// v1.0.3: show the FULL npm output (not just the last error line) so
|
|
33
|
+
// the user can see exactly what npm complained about, and append a
|
|
34
|
+
// targeted recovery hint for the most common failure modes we have
|
|
35
|
+
// seen in the wild: missing global-prefix shim (Windows npm 10/11),
|
|
36
|
+
// and a stale shim pointing at an older install.
|
|
37
|
+
const output = res.output?.trim() || "(empty)";
|
|
38
|
+
const hint = buildUpdateFailureHint(res.error ?? "", output, res.exitCode);
|
|
39
|
+
appendSystem(ctx.setMessages, `[update] ❌ failed: ${res.error ?? "unknown error"}\n` +
|
|
40
|
+
`exit code: ${res.exitCode ?? "n/a"}\n\n` +
|
|
41
|
+
`npm output:\n${output}\n\n` +
|
|
42
|
+
hint);
|
|
34
43
|
}
|
|
35
44
|
}
|
|
36
45
|
catch (err) {
|
|
37
46
|
appendSystem(ctx.setMessages, `[update error] ${err instanceof Error ? err.message : String(err)}`);
|
|
38
47
|
}
|
|
39
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Build a short, targeted recovery hint based on the npm error text.
|
|
51
|
+
*
|
|
52
|
+
* The "shim broken" / "command not found after update" failure mode is
|
|
53
|
+
* the most common one in the field (Windows + npm 10/11 drops the
|
|
54
|
+
* global shim on major upgrades). We detect it heuristically from the
|
|
55
|
+
* error + output and surface the exact recovery command.
|
|
56
|
+
*
|
|
57
|
+
* @internal exported for unit testing
|
|
58
|
+
*/
|
|
59
|
+
export function buildUpdateFailureHint(error, output, exitCode) {
|
|
60
|
+
const haystack = `${error}\n${output}`.toLowerCase();
|
|
61
|
+
const isWin = process.platform === "win32";
|
|
62
|
+
// ERESOLVE / EPEERINVALID — usually means the user has a different
|
|
63
|
+
// version of @zelari/core or another peer installed globally.
|
|
64
|
+
if (haystack.includes("eresolve") ||
|
|
65
|
+
haystack.includes("epeerinvalid") ||
|
|
66
|
+
haystack.includes("peer dep")) {
|
|
67
|
+
return ("💡 hint: peer-dependency conflict. Try:\n" +
|
|
68
|
+
" npm install -g zelari-code@latest --legacy-peer-deps\n" +
|
|
69
|
+
" or: npm install -g zelari-code@latest --force");
|
|
70
|
+
}
|
|
71
|
+
// EACCES / EPERM — permission issue, common on macOS/Linux when the
|
|
72
|
+
// global prefix is owned by root.
|
|
73
|
+
if (haystack.includes("eacces") || haystack.includes("eperm")) {
|
|
74
|
+
return ("💡 hint: permission denied. On macOS/Linux, avoid sudo with npm:\n" +
|
|
75
|
+
" https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally\n" +
|
|
76
|
+
" On Windows, re-run the terminal as Administrator.");
|
|
77
|
+
}
|
|
78
|
+
// ENOENT for npm itself — the shell could not find `npm` on PATH.
|
|
79
|
+
if (haystack.includes("enoent") && haystack.includes("npm")) {
|
|
80
|
+
return ("💡 hint: `npm` was not found on PATH for the spawned shell.\n" +
|
|
81
|
+
" Re-open the terminal so it picks up your current PATH, or set:\n" +
|
|
82
|
+
' export PATH="$(npm prefix -g)/bin:$PATH" (POSIX)\n' +
|
|
83
|
+
' $env:Path = "$(npm prefix -g);$env:Path" (PowerShell)');
|
|
84
|
+
}
|
|
85
|
+
// Shim-related: shim not created / "command not found" on next run.
|
|
86
|
+
// We can't always see this from the npm output (the failure often
|
|
87
|
+
// happens silently), but if the output mentions zelari-code and any
|
|
88
|
+
// of the typical shim failure tokens, surface the recovery.
|
|
89
|
+
if (haystack.includes("zelari-code") &&
|
|
90
|
+
(haystack.includes("not found") ||
|
|
91
|
+
haystack.includes("eexist") ||
|
|
92
|
+
haystack.includes("ebusy") ||
|
|
93
|
+
haystack.includes("shim") ||
|
|
94
|
+
exitCode === 0) // exit 0 but we got here means ok=false — defensive
|
|
95
|
+
) {
|
|
96
|
+
return ("💡 hint: the install may have completed but the global bin shim\n" +
|
|
97
|
+
" is missing or stale (common on Windows + npm 10/11 after major\n" +
|
|
98
|
+
" upgrades). To repair:\n" +
|
|
99
|
+
" npm install -g zelari-code@latest --force\n" +
|
|
100
|
+
" Then re-open the terminal. If `zelari-code` is still not found,\n" +
|
|
101
|
+
" run the doctor: `zelari-code doctor`");
|
|
102
|
+
}
|
|
103
|
+
// Generic: at least tell the user what we tried and where the output went.
|
|
104
|
+
return ("💡 hint: the install did not succeed. To retry with more detail:\n" +
|
|
105
|
+
" npm install -g zelari-code@latest --verbose 2>&1 | tail -40\n" +
|
|
106
|
+
" On Windows, also try: `npm install -g zelari-code@latest --force`\n" +
|
|
107
|
+
(isWin
|
|
108
|
+
? " Run `zelari-code doctor` from a new terminal to diagnose shim / PATH issues.\n"
|
|
109
|
+
: ""));
|
|
110
|
+
}
|
|
40
111
|
//# sourceMappingURL=updater.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAiB1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* doctor.ts — `zelari-code doctor` diagnostic.
|
|
3
|
+
*
|
|
4
|
+
* Run after a fresh install (or when something looks wrong) to check:
|
|
5
|
+
* 1. Bin shim health (does `zelari-code.cmd` / `zelari-code` exist
|
|
6
|
+
* in the npm global prefix, and does it reference the right
|
|
7
|
+
* package install?).
|
|
8
|
+
* 2. Node availability (`node` on PATH, version >= engines.node).
|
|
9
|
+
* 3. CLI bundle presence (did `npm run build:cli` produce
|
|
10
|
+
* `dist/cli/main.bundled.js`?).
|
|
11
|
+
* 4. Runtime deps (ink / react / zod / ink-text-input resolvable
|
|
12
|
+
* from the package root).
|
|
13
|
+
* 5. @zelari/core dependency (only checked if it appears in the
|
|
14
|
+
* package's deps or devDeps — it's a build-time dep for the
|
|
15
|
+
* workspace, and a runtime dep only for the source/tsx fallback
|
|
16
|
+
* path in bin/zelari-code.js).
|
|
17
|
+
* 6. PATH includes the npm global prefix.
|
|
18
|
+
*
|
|
19
|
+
* Output is human-readable, with one line per check + a trailing
|
|
20
|
+
* summary. Non-zero exit code if any critical check fails so this
|
|
21
|
+
* can be used in CI / install scripts.
|
|
22
|
+
*
|
|
23
|
+
* The function never throws: it catches all per-check errors and
|
|
24
|
+
* reports them as "FAIL" with the error message. The final return
|
|
25
|
+
* value tells the caller whether the install is healthy.
|
|
26
|
+
*
|
|
27
|
+
* @see scripts/postinstall.mjs — the install-time shim check
|
|
28
|
+
* @see src/cli/updater.ts — the self-update mechanism
|
|
29
|
+
*/
|
|
30
|
+
import { execSync } from "node:child_process";
|
|
31
|
+
import { existsSync, readFileSync, readlinkSync, statSync } from "node:fs";
|
|
32
|
+
import { createRequire } from "node:module";
|
|
33
|
+
import { fileURLToPath } from "node:url";
|
|
34
|
+
import path from "node:path";
|
|
35
|
+
const require = createRequire(import.meta.url);
|
|
36
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
37
|
+
// src/cli/utils/doctor.ts → <pkg>/src/cli/utils/doctor.ts
|
|
38
|
+
// We need <pkg> root. In dev (tsx) this is src/cli/utils/, in prod (bundled) it's dist/cli/utils/.
|
|
39
|
+
// In both cases we want the package root: that's `../../` from src/cli/utils, and `../../../` from dist/cli/utils/...
|
|
40
|
+
// Simplest: walk up until we find package.json with our name.
|
|
41
|
+
const packageRoot = findPackageRoot(__dirname);
|
|
42
|
+
function findPackageRoot(start) {
|
|
43
|
+
let dir = start;
|
|
44
|
+
// Walk at most 6 levels up (src/cli/utils -> src/cli -> src -> root, dist/cli/utils -> dist/cli -> dist -> root).
|
|
45
|
+
for (let i = 0; i < 6; i += 1) {
|
|
46
|
+
const candidate = path.join(dir, "package.json");
|
|
47
|
+
if (existsSync(candidate)) {
|
|
48
|
+
try {
|
|
49
|
+
const pkg = JSON.parse(readFileSync(candidate, "utf8"));
|
|
50
|
+
if (pkg.name === "zelari-code")
|
|
51
|
+
return dir;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// ignore
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const parent = path.dirname(dir);
|
|
58
|
+
if (parent === dir)
|
|
59
|
+
break;
|
|
60
|
+
dir = parent;
|
|
61
|
+
}
|
|
62
|
+
// Fallback: assume standard layout.
|
|
63
|
+
return path.resolve(__dirname, "..", "..", "..");
|
|
64
|
+
}
|
|
65
|
+
const OK = (message) => ({
|
|
66
|
+
ok: true,
|
|
67
|
+
message,
|
|
68
|
+
severity: "critical",
|
|
69
|
+
});
|
|
70
|
+
const FAIL = (message, severity = "critical") => ({
|
|
71
|
+
ok: false,
|
|
72
|
+
message,
|
|
73
|
+
severity,
|
|
74
|
+
});
|
|
75
|
+
const WARN = (message) => ({
|
|
76
|
+
ok: false,
|
|
77
|
+
message,
|
|
78
|
+
severity: "warn",
|
|
79
|
+
});
|
|
80
|
+
/** Run a shell command and return trimmed stdout. Empty string on failure. */
|
|
81
|
+
function tryExec(cmd) {
|
|
82
|
+
try {
|
|
83
|
+
return execSync(cmd, {
|
|
84
|
+
encoding: "utf8",
|
|
85
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
86
|
+
}).trim();
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return "";
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Read the installed package.json (for name + version + bin path). */
|
|
93
|
+
function readPackageJson() {
|
|
94
|
+
try {
|
|
95
|
+
const pkgPath = path.join(packageRoot, "package.json");
|
|
96
|
+
return JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** Resolve the npm global prefix. Empty string on failure. */
|
|
103
|
+
function getGlobalPrefix() {
|
|
104
|
+
return ((process.env.npm_config_prefix ||
|
|
105
|
+
process.env.NPM_CONFIG_PREFIX ||
|
|
106
|
+
"").trim() || tryExec("npm prefix -g"));
|
|
107
|
+
}
|
|
108
|
+
/** Check the bin shim in the global prefix. */
|
|
109
|
+
function checkShim(pkgName) {
|
|
110
|
+
const prefix = getGlobalPrefix();
|
|
111
|
+
if (!prefix) {
|
|
112
|
+
return WARN("npm global prefix not detectable (run inside an npm context)");
|
|
113
|
+
}
|
|
114
|
+
const isWin = process.platform === "win32";
|
|
115
|
+
const shimName = isWin ? "zelari-code.cmd" : "zelari-code";
|
|
116
|
+
const shimPath = path.join(prefix, shimName);
|
|
117
|
+
if (!existsSync(shimPath)) {
|
|
118
|
+
return FAIL(`shim not found at ${shimPath}\n` +
|
|
119
|
+
` fix: npm install -g ${pkgName}@latest --force`);
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const st = statSync(shimPath);
|
|
123
|
+
if (isWin) {
|
|
124
|
+
const content = readFileSync(shimPath, "utf8");
|
|
125
|
+
if (content.includes(`${pkgName}\\bin\\`) ||
|
|
126
|
+
content.includes(`${pkgName}/bin/`)) {
|
|
127
|
+
return OK(`shim OK at ${shimPath} (${st.size} bytes)`);
|
|
128
|
+
}
|
|
129
|
+
return FAIL(`shim at ${shimPath} does not reference ${pkgName}/bin/\n` +
|
|
130
|
+
` fix: npm install -g ${pkgName}@latest --force`);
|
|
131
|
+
}
|
|
132
|
+
let target;
|
|
133
|
+
try {
|
|
134
|
+
target = readlinkSync(shimPath);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return FAIL(`shim at ${shimPath} is not a symlink (POSIX global installs should be symlinks)\n` +
|
|
138
|
+
` fix: npm install -g ${pkgName}@latest --force`);
|
|
139
|
+
}
|
|
140
|
+
const resolved = path.resolve(path.dirname(shimPath), target);
|
|
141
|
+
const expected = path.join(prefix, "node_modules", pkgName, "bin", "zelari-code.js");
|
|
142
|
+
if (resolved === expected) {
|
|
143
|
+
return OK(`shim OK at ${shimPath} → ${resolved}`);
|
|
144
|
+
}
|
|
145
|
+
return FAIL(`shim at ${shimPath} points to ${resolved}\n` +
|
|
146
|
+
` expected ${expected}\n` +
|
|
147
|
+
` fix: npm install -g ${pkgName}@latest --force`);
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
return FAIL(`could not inspect shim: ${err instanceof Error ? err.message : String(err)}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** Check that node is on PATH and meets the engines requirement. */
|
|
154
|
+
function checkNode(pkg) {
|
|
155
|
+
const raw = tryExec("node --version");
|
|
156
|
+
if (!raw) {
|
|
157
|
+
return FAIL("`node` not found on PATH");
|
|
158
|
+
}
|
|
159
|
+
// raw is like "v20.11.1"
|
|
160
|
+
const m = raw.match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
161
|
+
if (!m) {
|
|
162
|
+
return WARN(`could not parse node version: ${raw}`);
|
|
163
|
+
}
|
|
164
|
+
const major = Number(m[1]);
|
|
165
|
+
if (major < 20) {
|
|
166
|
+
return FAIL(`node ${raw} is older than the required engines.node (>= 20.0.0)`);
|
|
167
|
+
}
|
|
168
|
+
return OK(`node ${raw}`);
|
|
169
|
+
}
|
|
170
|
+
/** Check the CLI bundle exists. */
|
|
171
|
+
function checkBundle() {
|
|
172
|
+
const bundle = path.join(packageRoot, "dist", "cli", "main.bundled.js");
|
|
173
|
+
if (!existsSync(bundle)) {
|
|
174
|
+
return FAIL(`dist/cli/main.bundled.js missing at ${bundle}\n` +
|
|
175
|
+
` fix: npm run build:cli (then reinstall or run via tsx)`);
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
const st = statSync(bundle);
|
|
179
|
+
return OK(`bundle OK (${(st.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
return FAIL(`could not stat bundle: ${err instanceof Error ? err.message : String(err)}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Check each runtime dep is resolvable. */
|
|
186
|
+
function checkRuntimeDeps() {
|
|
187
|
+
const required = ["react", "react-dom", "ink", "ink-text-input", "zod"];
|
|
188
|
+
const missing = [];
|
|
189
|
+
for (const dep of required) {
|
|
190
|
+
try {
|
|
191
|
+
// createRequire from the package root — this is what `node bin/zelari-code.js` uses.
|
|
192
|
+
const localReq = createRequire(path.join(packageRoot, "package.json"));
|
|
193
|
+
localReq.resolve(dep);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
missing.push(dep);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (missing.length === 0) {
|
|
200
|
+
return OK("runtime deps resolvable (react, react-dom, ink, ink-text-input, zod)");
|
|
201
|
+
}
|
|
202
|
+
return FAIL(`missing runtime deps: ${missing.join(", ")}\n` +
|
|
203
|
+
` fix: npm install -g ${"<pkg>"} --force (then reopen the terminal)`);
|
|
204
|
+
}
|
|
205
|
+
/** Check PATH includes the npm global prefix. */
|
|
206
|
+
function checkPath() {
|
|
207
|
+
const prefix = getGlobalPrefix();
|
|
208
|
+
if (!prefix)
|
|
209
|
+
return WARN("npm global prefix not detectable");
|
|
210
|
+
const pathSep = process.platform === "win32" ? ";" : ":";
|
|
211
|
+
const pathDirs = (process.env.PATH || "").split(pathSep);
|
|
212
|
+
if (pathDirs.includes(prefix)) {
|
|
213
|
+
return OK(`PATH includes npm prefix (${prefix})`);
|
|
214
|
+
}
|
|
215
|
+
return WARN(`PATH does not include npm prefix (${prefix})\n` +
|
|
216
|
+
` symptom: "zelari-code: command not found" after install\n` +
|
|
217
|
+
` fix (POSIX): export PATH="$(npm prefix -g)/bin:$PATH"\n` +
|
|
218
|
+
` fix (Windows): $env:Path = "$(npm prefix -g);$env:Path"`);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Run all checks and print results. Returns true if install is healthy
|
|
222
|
+
* (no critical failures), false otherwise. Never throws.
|
|
223
|
+
*/
|
|
224
|
+
export function runDoctor() {
|
|
225
|
+
const pkg = readPackageJson();
|
|
226
|
+
const pkgName = pkg?.name ?? "zelari-code";
|
|
227
|
+
const checks = [
|
|
228
|
+
{ name: "node", run: () => checkNode(pkg) },
|
|
229
|
+
{ name: "bin shim", run: () => checkShim(pkgName) },
|
|
230
|
+
{ name: "cli bundle", run: () => checkBundle() },
|
|
231
|
+
{ name: "runtime deps", run: () => checkRuntimeDeps() },
|
|
232
|
+
{ name: "PATH", run: () => checkPath() },
|
|
233
|
+
];
|
|
234
|
+
// eslint-disable-next-line no-console
|
|
235
|
+
console.log(`zelari-code doctor (v${pkg?.version ?? "unknown"})`);
|
|
236
|
+
// eslint-disable-next-line no-console
|
|
237
|
+
console.log("platform:", process.platform, process.arch);
|
|
238
|
+
// eslint-disable-next-line no-console
|
|
239
|
+
console.log("node: ", process.version);
|
|
240
|
+
// eslint-disable-next-line no-console
|
|
241
|
+
console.log("prefix: ", getGlobalPrefix() || "(unknown)");
|
|
242
|
+
// eslint-disable-next-line no-console
|
|
243
|
+
console.log("root: ", packageRoot);
|
|
244
|
+
// eslint-disable-next-line no-console
|
|
245
|
+
console.log("");
|
|
246
|
+
let criticalFails = 0;
|
|
247
|
+
let warns = 0;
|
|
248
|
+
for (const c of checks) {
|
|
249
|
+
let result;
|
|
250
|
+
try {
|
|
251
|
+
result = c.run();
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
result = FAIL(`unexpected error: ${err instanceof Error ? err.message : String(err)}`);
|
|
255
|
+
}
|
|
256
|
+
const tag = result.ok
|
|
257
|
+
? "OK "
|
|
258
|
+
: result.severity === "critical"
|
|
259
|
+
? "FAIL"
|
|
260
|
+
: "WARN";
|
|
261
|
+
const color = result.ok
|
|
262
|
+
? "\x1b[32m"
|
|
263
|
+
: result.severity === "critical"
|
|
264
|
+
? "\x1b[31m"
|
|
265
|
+
: "\x1b[33m";
|
|
266
|
+
const reset = "\x1b[0m";
|
|
267
|
+
// eslint-disable-next-line no-console
|
|
268
|
+
console.log(` ${color}${tag}${reset} ${c.name.padEnd(14)}${result.message.replace(/\n/g, "\n ")}`);
|
|
269
|
+
if (!result.ok) {
|
|
270
|
+
if (result.severity === "critical")
|
|
271
|
+
criticalFails += 1;
|
|
272
|
+
else
|
|
273
|
+
warns += 1;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// eslint-disable-next-line no-console
|
|
277
|
+
console.log("");
|
|
278
|
+
if (criticalFails === 0 && warns === 0) {
|
|
279
|
+
// eslint-disable-next-line no-console
|
|
280
|
+
console.log("\x1b[32m✔ all checks passed\x1b[0m");
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
// eslint-disable-next-line no-console
|
|
284
|
+
console.log(`✗ ${criticalFails} critical failure(s), ${warns} warning(s)`);
|
|
285
|
+
return criticalFails === 0;
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/utils/doctor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zelari-code",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Zelari Code — AI Council coding agent CLI. Multi-agent orchestration (Caronte, Nettuno, Gerione, Plutone, Minosse, Lucifero) with slash commands, provider-agnostic LLM streaming, and self-update.",
|
|
5
5
|
"author": "N-THEM Studio",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"files": [
|
|
16
16
|
"bin",
|
|
17
17
|
"dist",
|
|
18
|
+
"scripts/postinstall.mjs",
|
|
18
19
|
"LICENSE",
|
|
19
20
|
"README.md",
|
|
20
21
|
"package.json"
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
"test:watch": "vitest",
|
|
33
34
|
"smoke": "node bin/zelari-code.js --version",
|
|
34
35
|
"verify:council": "npm run build --workspace=@zelari/core && node scripts/verify-council.mjs",
|
|
36
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
35
37
|
"prepublishOnly": "node scripts/prepublish.mjs"
|
|
36
38
|
},
|
|
37
39
|
"dependencies": {
|
|
@@ -42,7 +44,7 @@
|
|
|
42
44
|
},
|
|
43
45
|
"devDependencies": {
|
|
44
46
|
"@testing-library/react": "^16.3.2",
|
|
45
|
-
"@zelari/core": "1.0.
|
|
47
|
+
"@zelari/core": "1.0.3",
|
|
46
48
|
"@types/node": "^25.3.0",
|
|
47
49
|
"@types/react": "^19.0.10",
|
|
48
50
|
"esbuild": "^0.25.0",
|