@pleri/olam-cli 0.1.110 → 0.1.112
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/commands/bootstrap.d.ts +2 -45
- package/dist/commands/bootstrap.d.ts.map +1 -1
- package/dist/commands/bootstrap.js +8 -101
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts +71 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +344 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/image-digests.json +4 -4
- package/dist/index.js +544 -206
- package/dist/index.js.map +1 -1
- package/dist/lib/shell-rc.d.ts +90 -0
- package/dist/lib/shell-rc.d.ts.map +1 -0
- package/dist/lib/shell-rc.js +91 -0
- package/dist/lib/shell-rc.js.map +1 -0
- package/dist/mcp-server.js +107 -7
- package/package.json +1 -1
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* olam setup — 7-phase fresh-host wizard.
|
|
3
|
+
*
|
|
4
|
+
* Phase C2 of olam-operator-onboarding-parity (plan
|
|
5
|
+
* ~/.claude/plans/olam-operator-onboarding-parity.md).
|
|
6
|
+
*
|
|
7
|
+
* Orchestrates existing olam primitives (Decision 2 — narrow scope; does
|
|
8
|
+
* NOT install Docker / Node / Homebrew / Claude Code; preserves olam's
|
|
9
|
+
* "operator owns host, olam owns substrate" posture):
|
|
10
|
+
*
|
|
11
|
+
* Phase 1: System check (Docker daemon reachable + Node ≥20)
|
|
12
|
+
* Phase 2: olam CLI sanity (--version returns)
|
|
13
|
+
* Phase 3: Bootstrap (subprocess: olam bootstrap)
|
|
14
|
+
* Phase 4: Shell init (idempotent append of completion eval-line)
|
|
15
|
+
* Phase 5: Init project (offer `olam init` if .olam/config.yaml missing)
|
|
16
|
+
* Phase 6: Auth prompt (offer interactive `olam auth login`)
|
|
17
|
+
* Phase 7: Final verify (subprocess: olam doctor; halt on non-zero)
|
|
18
|
+
*
|
|
19
|
+
* End-state prints "next steps" pointing at the 3-contract docs per
|
|
20
|
+
* CLAUDE.md's "Reading order for new orgs."
|
|
21
|
+
*
|
|
22
|
+
* Failure semantics: setup fails fast at the first failed phase + prints
|
|
23
|
+
* a named remedy. All phases are idempotent so re-running is safe.
|
|
24
|
+
*
|
|
25
|
+
* Flags:
|
|
26
|
+
* --skip-shell-init skip Phase 4 (operator manages shell rc manually)
|
|
27
|
+
* --skip-auth skip Phase 6 (operator will run `olam auth login` later)
|
|
28
|
+
* --yes / -y auto-affirm every prompt (non-interactive)
|
|
29
|
+
*
|
|
30
|
+
* Reversibility: clean-revert; each phase delegates to a separately-
|
|
31
|
+
* tested primitive. Phase 4 keeps a `<rc>.olam-bak.<ts>` backup.
|
|
32
|
+
*/
|
|
33
|
+
import { spawn } from 'node:child_process';
|
|
34
|
+
import { existsSync } from 'node:fs';
|
|
35
|
+
import { homedir } from 'node:os';
|
|
36
|
+
import path from 'node:path';
|
|
37
|
+
import { createInterface } from 'node:readline';
|
|
38
|
+
import { readCliVersion } from '../cli-version.js';
|
|
39
|
+
import { probeDockerDaemon } from '../lib/health-probes.js';
|
|
40
|
+
import { appendIdempotent, resolveShellRc } from '../lib/shell-rc.js';
|
|
41
|
+
import { findProjectRoot } from './init.js';
|
|
42
|
+
import { printError, printHeader, printInfo, printSuccess, printWarning } from '../output.js';
|
|
43
|
+
const REQUIRED_NODE_MAJOR = 20;
|
|
44
|
+
const NEXT_STEPS_DOCS = [
|
|
45
|
+
'docs/architecture/devbox-contract.md — image contract',
|
|
46
|
+
'docs/architecture/manifest-spec.md — per-repo .adb.yaml schema',
|
|
47
|
+
'docs/architecture/config-spec.md — workspace .olam/config.yaml schema',
|
|
48
|
+
];
|
|
49
|
+
// ── Default deps ───────────────────────────────────────────────────────
|
|
50
|
+
const defaultSpawn = (cmd, args) => new Promise((resolve) => {
|
|
51
|
+
const child = spawn(cmd, [...args], { stdio: 'inherit' });
|
|
52
|
+
child.on('exit', (code) => resolve({ status: code }));
|
|
53
|
+
child.on('error', () => resolve({ status: 1 }));
|
|
54
|
+
});
|
|
55
|
+
const defaultPrompt = (question, defaultYes) => {
|
|
56
|
+
// MEDIUM fix (Phase C CP3): non-TTY stdin (CI pipeline forgot `--yes`,
|
|
57
|
+
// or `olam setup < /dev/null`) would otherwise hang on `readline.question`
|
|
58
|
+
// forever with no diagnostic. When stdin is not a TTY, fall back to the
|
|
59
|
+
// default answer with a stderr hint so the operator knows what happened.
|
|
60
|
+
if (!process.stdin.isTTY) {
|
|
61
|
+
process.stderr.write(`[olam setup] non-TTY stdin detected; using default answer (${defaultYes ? 'yes' : 'no'}). `
|
|
62
|
+
+ `Re-run with \`--yes\` for explicit non-interactive mode.\n`);
|
|
63
|
+
return Promise.resolve(defaultYes);
|
|
64
|
+
}
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
67
|
+
const suffix = defaultYes ? ' [Y/n]: ' : ' [y/N]: ';
|
|
68
|
+
rl.question(`${question}${suffix}`, (answer) => {
|
|
69
|
+
rl.close();
|
|
70
|
+
const t = answer.trim().toLowerCase();
|
|
71
|
+
if (t === '')
|
|
72
|
+
resolve(defaultYes);
|
|
73
|
+
else if (t === 'y' || t === 'yes')
|
|
74
|
+
resolve(true);
|
|
75
|
+
else if (t === 'n' || t === 'no')
|
|
76
|
+
resolve(false);
|
|
77
|
+
else
|
|
78
|
+
resolve(defaultYes);
|
|
79
|
+
});
|
|
80
|
+
// Belt-and-braces: if stdin closes mid-prompt (EOF), resolve with default.
|
|
81
|
+
rl.on('close', () => resolve(defaultYes));
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
// ── Phases ─────────────────────────────────────────────────────────────
|
|
85
|
+
async function phase1SystemCheck(deps) {
|
|
86
|
+
const dockerProbe = await probeDockerDaemon(deps.dockerExec);
|
|
87
|
+
if (!dockerProbe.ok) {
|
|
88
|
+
return phaseFromProbe(dockerProbe);
|
|
89
|
+
}
|
|
90
|
+
const nodeVersion = deps.nodeVersion ?? process.version;
|
|
91
|
+
const nodeMajor = parseNodeMajor(nodeVersion);
|
|
92
|
+
if (nodeMajor === null || nodeMajor < REQUIRED_NODE_MAJOR) {
|
|
93
|
+
return {
|
|
94
|
+
ok: false,
|
|
95
|
+
message: `Node.js ${nodeVersion} is too old (need ≥${REQUIRED_NODE_MAJOR})`,
|
|
96
|
+
remedy: `Install Node.js ${REQUIRED_NODE_MAJOR}+ LTS via nvm/fnm/asdf and re-run \`olam setup\`.`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
ok: true,
|
|
101
|
+
message: `${dockerProbe.message}; node ${nodeVersion}`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function parseNodeMajor(version) {
|
|
105
|
+
const m = version.match(/^v?(\d+)\./);
|
|
106
|
+
if (!m)
|
|
107
|
+
return null;
|
|
108
|
+
const n = Number.parseInt(m[1], 10);
|
|
109
|
+
return Number.isFinite(n) ? n : null;
|
|
110
|
+
}
|
|
111
|
+
function phaseFromProbe(probe) {
|
|
112
|
+
if (probe.ok)
|
|
113
|
+
return { ok: true, message: probe.message };
|
|
114
|
+
return { ok: false, message: probe.message, remedy: probe.remedy };
|
|
115
|
+
}
|
|
116
|
+
async function phase2CliSanity(deps) {
|
|
117
|
+
// CRITICAL fix (Phase C CP3): readCliVersion() is the canonical
|
|
118
|
+
// source (same helper `index.ts:55` uses for `--version`). The
|
|
119
|
+
// OLAM_CLI_VERSION env var is only assigned INSIDE the host-cp
|
|
120
|
+
// container (host-cp.ts:423); it is NEVER set in the operator's
|
|
121
|
+
// host process — relying on it would make Phase 2 fail for every
|
|
122
|
+
// operator on Day 1.
|
|
123
|
+
const version = deps.olamCliVersion ?? safeReadCliVersion();
|
|
124
|
+
if (!version || version === 'unknown') {
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
message: 'olam CLI version not detectable',
|
|
128
|
+
remedy: 'Re-install `olam` via `npm install -g @pleri/olam-cli@stable` and re-run.',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return { ok: true, message: `olam ${version}` };
|
|
132
|
+
}
|
|
133
|
+
function safeReadCliVersion() {
|
|
134
|
+
try {
|
|
135
|
+
return readCliVersion();
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function phase3Bootstrap(deps) {
|
|
142
|
+
// HIGH fix (Phase C CP3): pass --skip-auth-login. `olam bootstrap`
|
|
143
|
+
// step 6 (bootstrap.ts:499-520) runs PKCE interactively by default.
|
|
144
|
+
// Phase 6 owns the operator-facing auth UX (with non-fatal recovery);
|
|
145
|
+
// letting bootstrap run auth too means double-prompt + collapses
|
|
146
|
+
// Phase 6's recovery affordance when auth fails during bootstrap.
|
|
147
|
+
const spawnFn = deps.spawnSubprocess ?? defaultSpawn;
|
|
148
|
+
const r = await spawnFn('olam', ['bootstrap', '--skip-auth-login']);
|
|
149
|
+
if (r.status === 0) {
|
|
150
|
+
return { ok: true, message: 'olam bootstrap succeeded' };
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
ok: false,
|
|
154
|
+
message: `olam bootstrap exited ${r.status}`,
|
|
155
|
+
remedy: 'Re-run `olam setup` after inspecting the bootstrap error above (bootstrap is idempotent).',
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
async function phase4ShellInit(opts, deps) {
|
|
159
|
+
if (opts.skipShellInit) {
|
|
160
|
+
return { ok: true, skipped: true, message: 'skipped via --skip-shell-init' };
|
|
161
|
+
}
|
|
162
|
+
const home = deps.home ?? homedir();
|
|
163
|
+
const shellEnv = deps.shellEnv ?? process.env.SHELL;
|
|
164
|
+
const rcPath = resolveShellRc(home, shellEnv);
|
|
165
|
+
if (rcPath === null) {
|
|
166
|
+
return {
|
|
167
|
+
ok: true,
|
|
168
|
+
skipped: true,
|
|
169
|
+
message: `unsupported $SHELL (${shellEnv ?? 'unset'}); add \`eval "$(olam completion <shell>)"\` to your shell rc manually`,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const shellBasename = path.basename(shellEnv);
|
|
173
|
+
const evalLine = `eval "$(olam completion ${shellBasename})"`;
|
|
174
|
+
const result = appendIdempotent({
|
|
175
|
+
rcPath,
|
|
176
|
+
marker: 'olam completion',
|
|
177
|
+
contentLine: evalLine,
|
|
178
|
+
clock: deps.clock,
|
|
179
|
+
});
|
|
180
|
+
if (result.status === 'no-rc-file') {
|
|
181
|
+
return {
|
|
182
|
+
ok: true,
|
|
183
|
+
skipped: true,
|
|
184
|
+
message: `${rcPath} not present; skipped (add \`${evalLine}\` to your shell rc manually)`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (result.status === 'already-present') {
|
|
188
|
+
return { ok: true, message: `${rcPath}: already configured (no change)` };
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
ok: true,
|
|
192
|
+
message: `${rcPath}: appended (backup: ${result.backupPath})`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
async function phase5InitProject(opts, deps) {
|
|
196
|
+
// HIGH fix (Phase C CP3): walk UP to nearest .git matching `olam init`'s
|
|
197
|
+
// own `findProjectRoot` semantics. Otherwise re-running setup from a
|
|
198
|
+
// subdir of a git repo violates the idempotency contract:
|
|
199
|
+
// - first run from subdir → init walks up + creates config at repo root
|
|
200
|
+
// - second run from same subdir → Phase 5 checks <subdir>/.olam/ (still
|
|
201
|
+
// missing) → spawns `olam init` → init walks up + sees config exists
|
|
202
|
+
// at repo root → exits 1 → setup halts at Phase 5
|
|
203
|
+
// Resolution: Phase 5 uses the SAME walk as init.
|
|
204
|
+
const cwd = deps.cwd ?? process.cwd();
|
|
205
|
+
const projectRoot = findProjectRoot(cwd);
|
|
206
|
+
const configPath = path.join(projectRoot, '.olam', 'config.yaml');
|
|
207
|
+
if (existsSync(configPath)) {
|
|
208
|
+
return { ok: true, message: `${configPath} present (no change)` };
|
|
209
|
+
}
|
|
210
|
+
const promptFn = deps.prompt ?? defaultPrompt;
|
|
211
|
+
const shouldInit = opts.yes
|
|
212
|
+
? true
|
|
213
|
+
: await promptFn(`No .olam/config.yaml in ${cwd}. Initialise project here?`, false);
|
|
214
|
+
if (!shouldInit) {
|
|
215
|
+
return {
|
|
216
|
+
ok: true,
|
|
217
|
+
skipped: true,
|
|
218
|
+
message: 'declined; run `olam init` later when ready',
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const spawnFn = deps.spawnSubprocess ?? defaultSpawn;
|
|
222
|
+
const r = await spawnFn('olam', ['init']);
|
|
223
|
+
if (r.status === 0) {
|
|
224
|
+
return { ok: true, message: 'olam init completed' };
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
ok: false,
|
|
228
|
+
message: `olam init exited ${r.status}`,
|
|
229
|
+
remedy: 'Inspect the init error above and re-run `olam setup`.',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
async function phase6Auth(opts, deps) {
|
|
233
|
+
if (opts.skipAuth) {
|
|
234
|
+
return {
|
|
235
|
+
ok: true,
|
|
236
|
+
skipped: true,
|
|
237
|
+
message: 'skipped via --skip-auth (run `olam auth login` later)',
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const promptFn = deps.prompt ?? defaultPrompt;
|
|
241
|
+
const shouldLaunch = opts.yes
|
|
242
|
+
? true
|
|
243
|
+
: await promptFn('`olam auth login` is interactive (PKCE browser flow, 5 min timeout). Launch now?', false);
|
|
244
|
+
if (!shouldLaunch) {
|
|
245
|
+
return {
|
|
246
|
+
ok: true,
|
|
247
|
+
skipped: true,
|
|
248
|
+
message: 'declined; run `olam auth login` later when ready',
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
const spawnFn = deps.spawnSubprocess ?? defaultSpawn;
|
|
252
|
+
const r = await spawnFn('olam', ['auth', 'login']);
|
|
253
|
+
if (r.status === 0) {
|
|
254
|
+
return { ok: true, message: 'olam auth login succeeded' };
|
|
255
|
+
}
|
|
256
|
+
// Auth login failure is recoverable + operator-driven; don't fail the phase
|
|
257
|
+
return {
|
|
258
|
+
ok: true,
|
|
259
|
+
skipped: true,
|
|
260
|
+
message: `olam auth login exited ${r.status}; re-run \`olam auth login\` after resolving`,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
async function phase7Verify(deps) {
|
|
264
|
+
const spawnFn = deps.spawnSubprocess ?? defaultSpawn;
|
|
265
|
+
const r = await spawnFn('olam', ['doctor']);
|
|
266
|
+
if (r.status === 0) {
|
|
267
|
+
return { ok: true, message: 'olam doctor: all probes green' };
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
ok: false,
|
|
271
|
+
message: `olam doctor exited ${r.status}`,
|
|
272
|
+
remedy: 'Inspect doctor output above; the specific failing probe names its remedy.',
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// ── Orchestrator ──────────────────────────────────────────────────────
|
|
276
|
+
const PHASE_TITLES = [
|
|
277
|
+
'Phase 1: System check',
|
|
278
|
+
'Phase 2: olam CLI sanity',
|
|
279
|
+
'Phase 3: Bootstrap',
|
|
280
|
+
'Phase 4: Shell init',
|
|
281
|
+
'Phase 5: Init project',
|
|
282
|
+
'Phase 6: Auth prompt',
|
|
283
|
+
'Phase 7: Final verification',
|
|
284
|
+
];
|
|
285
|
+
export async function runSetup(opts, deps = {}) {
|
|
286
|
+
printHeader('olam setup');
|
|
287
|
+
const phaseFns = [
|
|
288
|
+
() => phase1SystemCheck(deps),
|
|
289
|
+
() => phase2CliSanity(deps),
|
|
290
|
+
() => phase3Bootstrap(deps),
|
|
291
|
+
() => phase4ShellInit(opts, deps),
|
|
292
|
+
() => phase5InitProject(opts, deps),
|
|
293
|
+
() => phase6Auth(opts, deps),
|
|
294
|
+
() => phase7Verify(deps),
|
|
295
|
+
];
|
|
296
|
+
const results = [];
|
|
297
|
+
let failureAt = null;
|
|
298
|
+
for (let i = 0; i < phaseFns.length; i += 1) {
|
|
299
|
+
const name = PHASE_TITLES[i];
|
|
300
|
+
process.stdout.write(`\n${name}\n`);
|
|
301
|
+
const result = await phaseFns[i]();
|
|
302
|
+
results.push({ name, result });
|
|
303
|
+
if (result.ok && result.skipped) {
|
|
304
|
+
printWarning(` ⊘ ${result.message}`);
|
|
305
|
+
}
|
|
306
|
+
else if (result.ok) {
|
|
307
|
+
printSuccess(` ✓ ${result.message}`);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
printError(` ✗ ${result.message}`);
|
|
311
|
+
if (result.remedy)
|
|
312
|
+
printWarning(` remedy: ${result.remedy}`);
|
|
313
|
+
failureAt = i + 1;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
process.stdout.write('\n');
|
|
318
|
+
if (failureAt !== null) {
|
|
319
|
+
printError(`Setup FAILED at Phase ${failureAt}`);
|
|
320
|
+
return { phases: results, failureAt, exitCode: 1 };
|
|
321
|
+
}
|
|
322
|
+
printSuccess('Setup complete.');
|
|
323
|
+
process.stdout.write('\nNext steps — read these in order for the 3-contract pattern:\n');
|
|
324
|
+
for (const line of NEXT_STEPS_DOCS) {
|
|
325
|
+
printInfo('docs', line);
|
|
326
|
+
}
|
|
327
|
+
process.stdout.write('\n');
|
|
328
|
+
return { phases: results, failureAt: null, exitCode: 0 };
|
|
329
|
+
}
|
|
330
|
+
export function registerSetup(program) {
|
|
331
|
+
program
|
|
332
|
+
.command('setup')
|
|
333
|
+
.description('Fresh-host onboarding wizard. Runs 7 phases (system check → bootstrap → shell init → '
|
|
334
|
+
+ 'init project → auth prompt → doctor verification). Idempotent; safe to re-run.')
|
|
335
|
+
.option('--skip-shell-init', 'Skip Phase 4 (do not append to ~/.zshrc / ~/.bashrc)')
|
|
336
|
+
.option('--skip-auth', 'Skip Phase 6 (do not prompt for `olam auth login`)')
|
|
337
|
+
.option('-y, --yes', 'Auto-affirm every prompt (non-interactive)')
|
|
338
|
+
.action(async (opts) => {
|
|
339
|
+
const report = await runSetup(opts);
|
|
340
|
+
if (report.exitCode !== 0)
|
|
341
|
+
process.exitCode = report.exitCode;
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/image-digests.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"auth": "sha256:c8ebf817e09719289c7d7e37056b24adacb9d9fbc555e2540fbe88dfd400f2d9",
|
|
3
|
-
"devbox": "sha256:
|
|
4
|
-
"devbox-base": "sha256:
|
|
5
|
-
"host-cp": "sha256:
|
|
3
|
+
"devbox": "sha256:1a8d31c28333c69619d653d73403002fc3eebced3e634eae02371797e0f867e1",
|
|
4
|
+
"devbox-base": "sha256:22b1d82972d14252e12558ba51e5bb80f0522b6fc8fe9f8a55b340ca4c1ff8ef",
|
|
5
|
+
"host-cp": "sha256:5ecedfe153127cc8c37a887795cc40675ed862410b99e334ea056c645374c28c",
|
|
6
6
|
"mcp-auth": "sha256:c82fcfca7ed1b139cbea252697487889b96b45a6575cfba076de7f57eaa943ac",
|
|
7
7
|
"$schema_version": 1,
|
|
8
|
-
"$published_version": "0.1.
|
|
8
|
+
"$published_version": "0.1.112",
|
|
9
9
|
"$registry": "ghcr.io/pleri"
|
|
10
10
|
}
|