@pleri/olam-cli 0.1.166 → 0.1.167

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.
Files changed (49) hide show
  1. package/README.md +4 -2
  2. package/dist/commands/bootstrap.d.ts +6 -0
  3. package/dist/commands/bootstrap.d.ts.map +1 -1
  4. package/dist/commands/bootstrap.js +15 -0
  5. package/dist/commands/bootstrap.js.map +1 -1
  6. package/dist/commands/doctor.js +4 -4
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/init.d.ts +4 -3
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +103 -81
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/memory-service-container.d.ts +8 -0
  13. package/dist/commands/memory-service-container.d.ts.map +1 -1
  14. package/dist/commands/memory-service-container.js +16 -1
  15. package/dist/commands/memory-service-container.js.map +1 -1
  16. package/dist/commands/setup.d.ts +62 -14
  17. package/dist/commands/setup.d.ts.map +1 -1
  18. package/dist/commands/setup.js +373 -42
  19. package/dist/commands/setup.js.map +1 -1
  20. package/dist/commands/skills-source.d.ts.map +1 -1
  21. package/dist/commands/skills-source.js +89 -4
  22. package/dist/commands/skills-source.js.map +1 -1
  23. package/dist/image-digests.json +8 -7
  24. package/dist/index.js +672 -168
  25. package/dist/lib/bootstrap-kubernetes.d.ts.map +1 -1
  26. package/dist/lib/bootstrap-kubernetes.js +163 -106
  27. package/dist/lib/bootstrap-kubernetes.js.map +1 -1
  28. package/dist/lib/health-probes.d.ts +16 -0
  29. package/dist/lib/health-probes.d.ts.map +1 -1
  30. package/dist/lib/health-probes.js +49 -0
  31. package/dist/lib/health-probes.js.map +1 -1
  32. package/dist/lib/peripheral-registry.d.ts +9 -3
  33. package/dist/lib/peripheral-registry.d.ts.map +1 -1
  34. package/dist/lib/peripheral-registry.js +4 -4
  35. package/dist/lib/peripheral-registry.js.map +1 -1
  36. package/dist/lib/port-forward.js +1 -1
  37. package/dist/lib/port-forward.js.map +1 -1
  38. package/dist/lib/upgrade-kubernetes.d.ts +1 -1
  39. package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
  40. package/dist/lib/upgrade-kubernetes.js +35 -21
  41. package/dist/lib/upgrade-kubernetes.js.map +1 -1
  42. package/dist/mcp-server.js +990 -331
  43. package/hermes-bundle/version.json +1 -1
  44. package/host-cp/k8s/manifests/50-deployment.yaml +1 -1
  45. package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
  46. package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +1 -1
  47. package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +1 -1
  48. package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap-kubernetes.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap-kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAcH,eAAO,MAAM,mBAAmB,cAAc,CAAC;AA4B/C,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAkTD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAC3C,OAAO,CAAC,yBAAyB,CAAC,CA6BpC"}
1
+ {"version":3,"file":"bootstrap-kubernetes.d.ts","sourceRoot":"","sources":["../../src/lib/bootstrap-kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AA0BH,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAsC/C,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA8YD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAC3C,OAAO,CAAC,yBAAyB,CAAC,CAgCpC"}
@@ -27,173 +27,208 @@
27
27
  * `upgrade-kubernetes.ts` (Phase 1b C2 + Phase 2 C/D). This module is
28
28
  * the prereq + cluster-create + observability wrapper around it.
29
29
  */
30
- import { spawnSync } from 'node:child_process';
31
- import { existsSync, mkdirSync, writeFileSync, chmodSync } from 'node:fs';
32
- import { join } from 'node:path';
33
- import { homedir, platform } from 'node:os';
34
- import { randomBytes } from 'node:crypto';
35
- import pc from 'picocolors';
36
- import { printError, printSuccess, printInfo, printWarning, printHeader } from '../output.js';
37
- import { installRoot } from '../install-root.js';
38
- import { resolveK8sAssetsRoot } from './k8s-bootstrap.js';
39
- const OLAM_HOME = join(homedir(), '.olam');
40
- export const DEFAULT_K3S_CLUSTER = 'olam-host';
30
+ import { spawnSync } from "node:child_process";
31
+ import { existsSync, mkdirSync, readdirSync, writeFileSync, chmodSync, } from "node:fs";
32
+ import { join } from "node:path";
33
+ import { homedir, platform } from "node:os";
34
+ import { randomBytes } from "node:crypto";
35
+ import pc from "picocolors";
36
+ import { printError, printSuccess, printInfo, printWarning, printHeader, } from "../output.js";
37
+ import { installRoot } from "../install-root.js";
38
+ import { resolveK8sAssetsRoot } from "./k8s-bootstrap.js";
39
+ const OLAM_HOME = join(homedir(), ".olam");
40
+ export const DEFAULT_K3S_CLUSTER = "olam-host";
41
41
  const REQUIRED_TOOLS = [
42
- { name: 'k3d', brew: 'k3d' },
43
- { name: 'kubectl', brew: 'kubectl' },
44
- { name: 'helm', brew: 'helm' },
45
- { name: 'jq', brew: 'jq' },
46
- { name: 'curl', hint: 'expected on macOS by default; `apt install curl` on linux' },
47
- { name: 'openssl', hint: 'expected on macOS by default; `apt install openssl` on linux' },
48
- { name: 'gh', brew: 'gh', hint: 'after install: `gh auth login`' },
49
- { name: 'docker', hint: 'Docker Desktop, or colima on macOS' },
42
+ { name: "k3d", brew: "k3d" },
43
+ { name: "kubectl", brew: "kubectl" },
44
+ { name: "helm", brew: "helm" },
45
+ { name: "jq", brew: "jq" },
46
+ {
47
+ name: "curl",
48
+ hint: "expected on macOS by default; `apt install curl` on linux",
49
+ },
50
+ {
51
+ name: "openssl",
52
+ hint: "expected on macOS by default; `apt install openssl` on linux",
53
+ },
54
+ { name: "gh", brew: "gh", hint: "after install: `gh auth login`" },
55
+ { name: "docker", hint: "Docker Desktop, or colima on macOS" },
50
56
  ];
51
57
  const SECRET_FILES = [
52
- 'auth-secret',
53
- 'kg-bearer-token',
54
- 'auth-db-secret',
55
- 'mcp-auth-jwt-secret',
56
- 'memory-bearer-secret',
58
+ "auth-secret",
59
+ "kg-bearer-token",
60
+ "auth-db-secret",
61
+ "mcp-auth-jwt-secret",
62
+ "memory-bearer-secret",
57
63
  ];
58
64
  const OBSERVABILITY_SCRIPTS = [
59
- 'loki-ingest.sh',
60
- 'grafana-port-forward.sh',
61
- 'prom-no-double-grafana.sh',
62
- 'kyverno-cardinality-mutate.sh',
65
+ "loki-ingest.sh",
66
+ "grafana-port-forward.sh",
67
+ "prom-no-double-grafana.sh",
68
+ "kyverno-cardinality-mutate.sh",
63
69
  ];
64
70
  /** Wraps `command -v <tool>` returning true when the binary is on PATH. */
65
71
  function hasTool(tool) {
66
- const result = spawnSync('command', ['-v', tool], { shell: true, stdio: 'pipe' });
72
+ const result = spawnSync("command", ["-v", tool], {
73
+ shell: true,
74
+ stdio: "pipe",
75
+ });
67
76
  return result.status === 0;
68
77
  }
69
78
  function detectMissingTools() {
70
79
  return REQUIRED_TOOLS.filter((tool) => !hasTool(tool.name));
71
80
  }
72
81
  function runOrFail(cmd, args, description) {
73
- const result = spawnSync(cmd, args, { stdio: 'inherit' });
82
+ const result = spawnSync(cmd, args, { stdio: "inherit" });
74
83
  if (result.status !== 0) {
75
- printError(`${description} failed (exit ${result.status ?? 'signal'})`);
84
+ printError(`${description} failed (exit ${result.status ?? "signal"})`);
76
85
  process.exit(result.status ?? 1);
77
86
  }
78
87
  }
79
88
  function runCapture(cmd, args) {
80
- const result = spawnSync(cmd, args, { encoding: 'utf8' });
89
+ const result = spawnSync(cmd, args, { encoding: "utf8" });
81
90
  return {
82
91
  ok: result.status === 0,
83
- stdout: result.stdout ?? '',
84
- stderr: result.stderr ?? '',
92
+ stdout: result.stdout ?? "",
93
+ stderr: result.stderr ?? "",
85
94
  };
86
95
  }
87
96
  function step(label) {
88
- process.stdout.write('\n' + pc.bold(pc.cyan(`==> ${label}`)) + '\n');
97
+ process.stdout.write("\n" + pc.bold(pc.cyan(`==> ${label}`)) + "\n");
89
98
  }
90
99
  function preflight(opts) {
91
- step('0/6 — preflight (tool detection)');
100
+ step("0/6 — preflight (tool detection)");
92
101
  const missing = detectMissingTools();
93
102
  if (missing.length === 0) {
94
- printSuccess('all required tools present');
103
+ printSuccess("all required tools present");
95
104
  }
96
- else if (opts.autoInstall && platform() === 'darwin') {
105
+ else if (opts.autoInstall && platform() === "darwin") {
97
106
  const brewable = missing.filter((t) => t.brew);
98
107
  if (brewable.length > 0) {
99
- printInfo('auto-install', `${brewable.length} brew formula(s): ${brewable.map((t) => t.brew).join(', ')}`);
100
- runOrFail('brew', ['install', ...brewable.map((t) => t.brew)], 'brew install');
108
+ printInfo("auto-install", `${brewable.length} brew formula(s): ${brewable.map((t) => t.brew).join(", ")}`);
109
+ runOrFail("brew", ["install", ...brewable.map((t) => t.brew)], "brew install");
101
110
  }
102
111
  const stillMissing = detectMissingTools();
103
112
  if (stillMissing.length > 0) {
104
- printError('tools still missing after auto-install:');
113
+ printError("tools still missing after auto-install:");
105
114
  for (const t of stillMissing) {
106
- process.stderr.write(` - ${t.name}${t.hint ? ` — ${t.hint}` : ''}\n`);
115
+ process.stderr.write(` - ${t.name}${t.hint ? ` — ${t.hint}` : ""}\n`);
107
116
  }
108
117
  process.exit(1);
109
118
  }
110
- printSuccess('all required tools present after auto-install');
119
+ printSuccess("all required tools present after auto-install");
111
120
  }
112
121
  else {
113
122
  printError(`${missing.length} required tool(s) missing:`);
114
123
  for (const t of missing) {
115
- const hint = t.brew ? `brew install ${t.brew}` : t.hint ?? '(install manually)';
124
+ const hint = t.brew
125
+ ? `brew install ${t.brew}`
126
+ : (t.hint ?? "(install manually)");
116
127
  process.stderr.write(` - ${pc.bold(t.name)}: ${hint}\n`);
117
128
  }
118
- process.stderr.write('\nRe-run with --auto-install on macOS to install brew-formulae automatically.\n');
129
+ process.stderr.write("\nRe-run with --auto-install on macOS to install brew-formulae automatically.\n");
119
130
  process.exit(1);
120
131
  }
121
132
  // gh auth
122
- if (!runCapture('gh', ['auth', 'status']).ok) {
123
- printError('gh is not authenticated — run: gh auth login');
133
+ if (!runCapture("gh", ["auth", "status"]).ok) {
134
+ printError("gh is not authenticated — run: gh auth login");
124
135
  process.exit(1);
125
136
  }
126
- printSuccess('gh authenticated');
137
+ printSuccess("gh authenticated");
127
138
  // docker reachability
128
- if (!runCapture('docker', ['info']).ok) {
129
- printError('docker daemon unreachable — start Docker Desktop or colima');
139
+ if (!runCapture("docker", ["info"]).ok) {
140
+ printError("docker daemon unreachable — start Docker Desktop or colima");
130
141
  process.exit(1);
131
142
  }
132
- printSuccess('docker daemon reachable');
143
+ printSuccess("docker daemon reachable");
133
144
  }
134
145
  function ensureSecrets() {
135
- step('1/6 — operator secrets');
146
+ step("1/6 — operator secrets");
136
147
  mkdirSync(OLAM_HOME, { recursive: true });
137
148
  for (const name of SECRET_FILES) {
138
149
  const path = join(OLAM_HOME, name);
139
150
  if (existsSync(path)) {
140
- printInfo('skip', `~/.olam/${name} already exists`);
151
+ printInfo("skip", `~/.olam/${name} already exists`);
141
152
  continue;
142
153
  }
143
- const hex = randomBytes(32).toString('hex');
144
- writeFileSync(path, hex + '\n', { encoding: 'utf8', mode: 0o600 });
154
+ const hex = randomBytes(32).toString("hex");
155
+ writeFileSync(path, hex + "\n", { encoding: "utf8", mode: 0o600 });
145
156
  chmodSync(path, 0o600);
146
157
  printSuccess(`generated ~/.olam/${name}`);
147
158
  }
148
159
  }
149
160
  function ensureColima() {
150
- if (platform() !== 'darwin')
161
+ if (platform() !== "darwin")
151
162
  return;
152
- step('2/6 — colima (macOS)');
153
- if (!runCapture('colima', ['status']).ok) {
154
- printWarning('colima not running — starting');
155
- runOrFail('colima', ['start', '--cpu', '4', '--memory', '8', '--vm-type=vz', '--mount-type=virtiofs'], 'colima start');
163
+ step("2/6 — colima (macOS)");
164
+ if (!runCapture("colima", ["status"]).ok) {
165
+ printWarning("colima not running — starting");
166
+ runOrFail("colima", [
167
+ "start",
168
+ "--cpu",
169
+ "4",
170
+ "--memory",
171
+ "8",
172
+ "--vm-type=vz",
173
+ "--mount-type=virtiofs",
174
+ ], "colima start");
156
175
  }
157
- printSuccess('colima running');
176
+ printSuccess("colima running");
158
177
  // virtiofs blocks chmod of docker.sock from the macOS side. Idempotent + non-fatal.
159
- const chmod = runCapture('colima', ['ssh', '--', 'sudo', 'chmod', '666', '/var/run/docker.sock']);
178
+ const chmod = runCapture("colima", [
179
+ "ssh",
180
+ "--",
181
+ "sudo",
182
+ "chmod",
183
+ "666",
184
+ "/var/run/docker.sock",
185
+ ]);
160
186
  if (chmod.ok) {
161
- printSuccess('docker.sock chmod applied inside colima VM');
187
+ printSuccess("docker.sock chmod applied inside colima VM");
162
188
  }
163
189
  else {
164
- printWarning('colima ssh chmod failed — k3d cluster create may still succeed');
190
+ printWarning("colima ssh chmod failed — k3d cluster create may still succeed");
165
191
  }
166
192
  }
167
193
  function ensureCluster(opts) {
168
194
  if (opts.skipClusterCreate) {
169
- step('3/6 — cluster (skipped via --skip-cluster-create)');
195
+ step("3/6 — cluster (skipped via --skip-cluster-create)");
170
196
  return;
171
197
  }
172
198
  step(`3/6 — k3d cluster create (${opts.cluster})`);
173
- if (runCapture('k3d', ['cluster', 'list', opts.cluster]).ok) {
174
- printInfo('cluster', `'${opts.cluster}' already exists`);
199
+ if (runCapture("k3d", ["cluster", "list", opts.cluster]).ok) {
200
+ printInfo("cluster", `'${opts.cluster}' already exists`);
175
201
  return;
176
202
  }
177
203
  const ghConfigBind = `${homedir()}/.config/gh:/host/.config/gh`;
178
- runOrFail('k3d', ['cluster', 'create', opts.cluster, '--volume', ghConfigBind, '--wait', '--timeout', '90s'], `k3d cluster create ${opts.cluster}`);
179
- if (!runCapture('kubectl', ['cluster-info']).ok) {
180
- printError('kubectl cannot reach the cluster — check kubeconfig context');
204
+ runOrFail("k3d", [
205
+ "cluster",
206
+ "create",
207
+ opts.cluster,
208
+ "--volume",
209
+ ghConfigBind,
210
+ "--wait",
211
+ "--timeout",
212
+ "90s",
213
+ ], `k3d cluster create ${opts.cluster}`);
214
+ if (!runCapture("kubectl", ["cluster-info"]).ok) {
215
+ printError("kubectl cannot reach the cluster — check kubeconfig context");
181
216
  process.exit(1);
182
217
  }
183
- printSuccess(`cluster ready (${runCapture('kubectl', ['config', 'current-context']).stdout.trim()})`);
218
+ printSuccess(`cluster ready (${runCapture("kubectl", ["config", "current-context"]).stdout.trim()})`);
184
219
  }
185
220
  /** Resolve the bundled observability scripts dir. */
186
221
  function resolveObservabilityScriptsDir() {
187
222
  // Install-mode: bundle-host-cp.mjs copies scripts/e2e/*.sh to
188
223
  // <install-root>/host-cp/observability/.
189
- const installed = join(installRoot(), 'host-cp', 'observability');
224
+ const installed = join(installRoot(), "host-cp", "observability");
190
225
  if (existsSync(installed))
191
226
  return installed;
192
227
  // Dev-mode fallback: resolve via the k8s assets root + walk up to repo
193
228
  // root then into scripts/e2e/. Works when running against the monorepo.
194
229
  const k8sRoot = resolveK8sAssetsRoot();
195
230
  if (k8sRoot) {
196
- const dev = join(k8sRoot, '..', '..', '..', 'scripts', 'e2e');
231
+ const dev = join(k8sRoot, "..", "..", "..", "scripts", "e2e");
197
232
  if (existsSync(dev))
198
233
  return dev;
199
234
  }
@@ -206,13 +241,13 @@ function resolveObservabilityScriptsDir() {
206
241
  function resolvePeripheralServicesDir() {
207
242
  // Install-mode: bundle-host-cp.mjs copies packages/peripheral-services/
208
243
  // {helm-values,manifests} to <install-root>/host-cp/peripheral-services/.
209
- const installed = join(installRoot(), 'host-cp', 'peripheral-services');
244
+ const installed = join(installRoot(), "host-cp", "peripheral-services");
210
245
  if (existsSync(installed))
211
246
  return installed;
212
247
  // Dev-mode fallback: walk up from k8s assets root to packages/peripheral-services.
213
248
  const k8sRoot = resolveK8sAssetsRoot();
214
249
  if (k8sRoot) {
215
- const dev = join(k8sRoot, '..', '..', 'peripheral-services');
250
+ const dev = join(k8sRoot, "..", "..", "peripheral-services");
216
251
  if (existsSync(dev))
217
252
  return dev;
218
253
  }
@@ -224,28 +259,29 @@ function resolvePeripheralServicesDir() {
224
259
  * `<install>/host-cp`; in dev-mode it's the monorepo's `packages/` dir.
225
260
  */
226
261
  function resolveBundleRoot() {
227
- const installed = join(installRoot(), 'host-cp');
228
- if (existsSync(join(installed, 'peripheral-services')))
262
+ const installed = join(installRoot(), "host-cp");
263
+ if (existsSync(join(installed, "peripheral-services")))
229
264
  return installed;
230
265
  const k8sRoot = resolveK8sAssetsRoot();
231
266
  if (k8sRoot) {
232
- const dev = join(k8sRoot, '..', '..');
233
- if (existsSync(join(dev, 'peripheral-services')))
267
+ const dev = join(k8sRoot, "..", "..");
268
+ if (existsSync(join(dev, "peripheral-services")))
234
269
  return dev;
235
270
  }
236
271
  return null;
237
272
  }
238
273
  function installObservability(opts) {
239
274
  if (opts.skipObservability) {
240
- step('4/6 — observability (skipped via --skip-observability)');
275
+ step("4/6 — observability (skipped via --skip-observability)");
241
276
  return;
242
277
  }
243
- step('4/6 — observability stack (Loki + Promtail + Grafana + Prometheus + Kyverno)');
278
+ step("4/6 — observability stack (Loki + Promtail + Grafana + Prometheus + Kyverno)");
244
279
  const observabilityDir = resolveObservabilityScriptsDir();
245
280
  if (!observabilityDir) {
246
- printWarning('bundled observability scripts not found — skipping');
247
- printWarning(' (expected in published CLI installs; missing only in dev tarballs without bundling)');
248
- return;
281
+ throw new Error(`Bundled observability assets missing. ` +
282
+ `This indicates a corrupt or incomplete @pleri/olam-cli installation. ` +
283
+ `Remediation: reinstall with 'npm install -g @pleri/olam-cli@latest', ` +
284
+ `or open an issue at https://github.com/pleri/olam/issues with this error.`);
249
285
  }
250
286
  // Export OLAM_BUNDLE_ROOT so the scripts resolve helm-values/manifests from
251
287
  // the published tarball instead of `git rev-parse` (which fails outside the
@@ -262,13 +298,16 @@ function installObservability(opts) {
262
298
  printWarning(`observability script missing: ${script} — skipping`);
263
299
  continue;
264
300
  }
265
- printInfo('run', script);
266
- const result = spawnSync('bash', [path], { stdio: 'inherit', env: scriptEnv });
301
+ printInfo("run", script);
302
+ const result = spawnSync("bash", [path], {
303
+ stdio: "inherit",
304
+ env: scriptEnv,
305
+ });
267
306
  if (result.status !== 0) {
268
307
  // loki-ingest's 10s scrub-wait is known to flake on cold-start; the
269
308
  // underlying Loki/Promtail install almost always succeeded.
270
- if (script === 'loki-ingest.sh') {
271
- printWarning('loki-ingest non-zero — likely Promtail scrub-wait flake; continuing');
309
+ if (script === "loki-ingest.sh") {
310
+ printWarning("loki-ingest non-zero — likely Promtail scrub-wait flake; continuing");
272
311
  }
273
312
  else {
274
313
  printError(`${script} failed — observability stack not ready`);
@@ -288,40 +327,58 @@ function installObservability(opts) {
288
327
  * stack runs but has no scrape targets and no dashboards.
289
328
  */
290
329
  function applyPeripheralServicesManifests() {
291
- step('5/6 — peripheral-services manifests (IngressRoutes + ServiceMonitors + recording rules + dashboards + Kyverno)');
330
+ step("5/6 — peripheral-services manifests (IngressRoutes + ServiceMonitors + recording rules + dashboards + Kyverno)");
292
331
  const dir = resolvePeripheralServicesDir();
293
332
  if (!dir) {
294
- printWarning('bundled peripheral-services manifests not found — skipping');
333
+ printWarning("bundled peripheral-services manifests not found — skipping");
295
334
  return;
296
335
  }
297
- const manifestsDir = join(dir, 'manifests');
336
+ const manifestsDir = join(dir, "manifests");
298
337
  if (!existsSync(manifestsDir)) {
299
338
  printWarning(`peripheral-services/manifests not found at ${manifestsDir} — skipping`);
300
339
  return;
301
340
  }
302
- printInfo('apply', manifestsDir);
303
- const result = spawnSync('kubectl', ['apply', '-f', manifestsDir], { stdio: 'inherit' });
304
- if (result.status !== 0) {
305
- printError('kubectl apply failed peripheral-services manifests not applied');
306
- process.exit(result.status ?? 1);
341
+ // Skip deployment manifests (files matching *deploy*.yaml): these overlap with the
342
+ // canonical deployment specs applied by `olam upgrade` step 3 (k8s/manifests/<svc>/50-deployment.yaml).
343
+ // Applying them here causes a rolling update when upgrade re-applies with a different image
344
+ // digest, making `kubectl rollout status` fail while the old pod is Terminating.
345
+ // Standalone operators can still apply deployment manifests manually if needed.
346
+ const manifestFiles = readdirSync(manifestsDir)
347
+ .filter((f) => (f.endsWith(".yaml") || f.endsWith(".yml")) && !/deploy/i.test(f))
348
+ .map((f) => join(manifestsDir, f));
349
+ if (manifestFiles.length === 0) {
350
+ printWarning("no non-deployment peripheral-services manifests found — skipping");
351
+ return;
352
+ }
353
+ for (const manifest of manifestFiles) {
354
+ printInfo("apply", manifest.replace(manifestsDir + "/", ""));
355
+ const r = spawnSync("kubectl", ["apply", "-f", manifest], {
356
+ stdio: "inherit",
357
+ });
358
+ if (r.status !== 0) {
359
+ printError(`kubectl apply failed for ${manifest}`);
360
+ process.exit(r.status ?? 1);
361
+ }
307
362
  }
308
- printSuccess('peripheral-services manifests applied');
363
+ printSuccess("peripheral-services manifests applied");
309
364
  }
310
365
  function delegateToUpgrade() {
311
- step('6/6 — apply host-cp + peripherals + rollout (olam upgrade)');
366
+ step("6/6 — apply host-cp + peripherals + rollout (olam upgrade)");
312
367
  // Re-invoke `olam upgrade -y` via the same process binary. The upgrade
313
368
  // flow's 8-step k8s path (upgrade-kubernetes.ts) handles namespace +
314
369
  // RBAC + Secrets + ghcr-pull + host-side docker-socket-proxy + manifest
315
370
  // apply + rollout status + port-forward + /health verify + audit log.
316
- const olamBin = process.argv[1] ?? 'olam';
317
- const result = spawnSync(process.execPath, [olamBin, 'upgrade', '-y'], { stdio: 'inherit' });
371
+ const olamBin = process.argv[1] ?? "olam";
372
+ const result = spawnSync(process.execPath, [olamBin, "upgrade", "-y"], {
373
+ stdio: "inherit",
374
+ });
318
375
  if (result.status !== 0) {
319
- printError('olam upgrade failed — see output above');
376
+ printError("olam upgrade failed — see output above");
320
377
  process.exit(result.status ?? 1);
321
378
  }
322
379
  }
323
380
  function summary(opts) {
324
- step('done');
381
+ step("done");
325
382
  process.stdout.write(`
326
383
  Cluster: ${opts.cluster}
327
384
  Next steps:
@@ -344,15 +401,15 @@ export async function runBootstrapKubernetes(rawOpts) {
344
401
  // see a per-tool install hint (apt/dnf auto-install is queued as a
345
402
  // follow-up). Pass --no-auto-install or set autoInstall=false to
346
403
  // restore the earlier opt-in behaviour.
347
- const defaultAutoInstall = platform() === 'darwin';
404
+ const defaultAutoInstall = platform() === "darwin";
348
405
  const opts = {
349
406
  cluster: rawOpts.cluster ?? DEFAULT_K3S_CLUSTER,
350
407
  autoInstall: rawOpts.autoInstall ?? defaultAutoInstall,
351
408
  skipObservability: rawOpts.skipObservability ?? false,
352
409
  skipClusterCreate: rawOpts.skipClusterCreate ?? false,
353
410
  };
354
- printHeader('olam setup — k3s mode');
355
- printInfo('mode', 'one-command bring-up of olam peripherals + observability on a local k3d cluster');
411
+ printHeader("olam setup — k3s mode");
412
+ printInfo("mode", "one-command bring-up of olam peripherals + observability on a local k3d cluster");
356
413
  preflight(opts);
357
414
  ensureSecrets();
358
415
  ensureColima();
@@ -361,7 +418,7 @@ export async function runBootstrapKubernetes(rawOpts) {
361
418
  applyPeripheralServicesManifests();
362
419
  delegateToUpgrade();
363
420
  summary(opts);
364
- printSuccess('setup complete');
421
+ printSuccess("setup complete");
365
422
  return { exitCode: 0, summary: `setup complete on cluster ${opts.cluster}` };
366
423
  }
367
424
  //# sourceMappingURL=bootstrap-kubernetes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap-kubernetes.js","sourceRoot":"","sources":["../../src/lib/bootstrap-kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,MAAM,cAAc,GAA6F;IAC/G,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAC5B,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2DAA2D,EAAE;IACnF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,8DAA8D,EAAE;IACzF,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE;IAClE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE;CAC/D,CAAC;AAEF,MAAM,YAAY,GAA0B;IAC1C,aAAa;IACb,iBAAiB;IACjB,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;CACvB,CAAC;AAEF,MAAM,qBAAqB,GAA0B;IACnD,gBAAgB;IAChB,yBAAyB;IACzB,2BAA2B;IAC3B,+BAA+B;CAChC,CAAC;AAcF,2EAA2E;AAC3E,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,IAAuB,EAAE,WAAmB;IAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,GAAG,WAAW,iBAAiB,MAAM,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,IAAuB;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,SAAS,CAAC,IAAgC;IACjD,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,MAAM,qBAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3G,SAAS,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;QAC1C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,yCAAyC,CAAC,CAAC;YACtD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,YAAY,CAAC,+CAA+C,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,4BAA4B,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,oBAAoB,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU;IACV,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7C,UAAU,CAAC,8CAA8C,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAEjC,sBAAsB;IACtB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvC,UAAU,CAAC,4DAA4D,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,YAAY,CAAC,yBAAyB,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAE/B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,MAAM,EAAE,WAAW,IAAI,iBAAiB,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvB,YAAY,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,QAAQ,EAAE,KAAK,QAAQ;QAAE,OAAO;IACpC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAE7B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,YAAY,CAAC,+BAA+B,CAAC,CAAC;QAC9C,SAAS,CACP,QAAQ,EACR,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,uBAAuB,CAAC,EACjF,cAAc,CACf,CAAC;IACJ,CAAC;IACD,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAE/B,oFAAoF;IACpF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAClG,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACb,YAAY,CAAC,4CAA4C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,gEAAgE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAgC;IACrD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,6BAA6B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAEnD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5D,SAAS,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,MAAM,YAAY,GAAG,GAAG,OAAO,EAAE,8BAA8B,CAAC;IAChE,SAAS,CACP,KAAK,EACL,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,EAC3F,sBAAsB,IAAI,CAAC,OAAO,EAAE,CACrC,CAAC;IAEF,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChD,UAAU,CAAC,6DAA6D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,YAAY,CAAC,kBAAkB,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxG,CAAC;AAED,qDAAqD;AACrD,SAAS,8BAA8B;IACrC,8DAA8D;IAC9D,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B;IACnC,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,mFAAmF;IACnF,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB;IACxB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzE,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAgC;IAC5D,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAErF,MAAM,gBAAgB,GAAG,8BAA8B,EAAE,CAAC;IAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,YAAY,CAAC,oDAAoD,CAAC,CAAC;QACnE,YAAY,CAAC,uFAAuF,CAAC,CAAC;QACtG,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,qDAAqD;IACrD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,SAAS,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxD,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC;IAC1C,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,iCAAiC,MAAM,aAAa,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QACD,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,oEAAoE;YACpE,4DAA4D;YAC5D,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAChC,YAAY,CAAC,qEAAqE,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,MAAM,yCAAyC,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gCAAgC;IACvC,IAAI,CAAC,gHAAgH,CAAC,CAAC;IAEvH,MAAM,GAAG,GAAG,4BAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,YAAY,CAAC,4DAA4D,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,8CAA8C,YAAY,aAAa,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,kEAAkE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,YAAY,CAAC,uCAAuC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAEnE,uEAAuE;IACvE,qEAAqE;IACrE,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,wCAAwC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAgC;IAC/C,IAAI,CAAC,MAAM,CAAC,CAAC;IACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACP,IAAI,CAAC,OAAO;;;;;;;;;;;;CAY3B,CAAC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA4C;IAE5C,mEAAmE;IACnE,uEAAuE;IACvE,uEAAuE;IACvE,mEAAmE;IACnE,iEAAiE;IACjE,wCAAwC;IACxC,MAAM,kBAAkB,GAAG,QAAQ,EAAE,KAAK,QAAQ,CAAC;IACnD,MAAM,IAAI,GAA+B;QACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,mBAAmB;QAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,kBAAkB;QACtD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;QACrD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;KACtD,CAAC;IAEF,WAAW,CAAC,uBAAuB,CAAC,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,iFAAiF,CAAC,CAAC;IAErG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,gCAAgC,EAAE,CAAC;IACnC,iBAAiB,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEd,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC/B,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,6BAA6B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"bootstrap-kubernetes.js","sourceRoot":"","sources":["../../src/lib/bootstrap-kubernetes.ts"],"names":[],"mappings":"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"}
@@ -221,6 +221,22 @@ export type DetectK8sClusterTypeFn = (kubectlContext: string | undefined) => 'co
221
221
  * - else → 'unknown'
222
222
  */
223
223
  export declare function defaultDetectK8sClusterType(kubectlContext: string | undefined): 'colima' | 'k3d' | 'unknown';
224
+ /**
225
+ * Probe: `kubectl` binary on PATH.
226
+ *
227
+ * Checks for the binary via `kubectl version --client --output=json`.
228
+ * Does NOT require a live cluster — client-only check. Used by the
229
+ * kubernetes substrate path of `olam setup` Phase 1 system check.
230
+ */
231
+ export declare function probeKubectl(exec?: DockerExec): Promise<ProbeResult>;
232
+ /**
233
+ * Probe: `k3d` binary on PATH (macOS kubernetes substrate).
234
+ *
235
+ * Used by `olam setup --substrate=kubernetes` Phase 1 on macOS to
236
+ * distinguish "k3d missing" (defer to Phase 1.5 install) from
237
+ * "k3d present". Returns ok:false so Phase 1.5 knows to install.
238
+ */
239
+ export declare function probeK3d(exec?: DockerExec): Promise<ProbeResult>;
224
240
  /**
225
241
  * Build the doctor/upgrade remedy text for a missing docker socket bind-mount.
226
242
  * Colima operators need `colima start --kubernetes` with the socket mount flag;
@@ -1 +1 @@
1
- {"version":3,"file":"health-probes.d.ts","sourceRoot":"","sources":["../../src/lib/health-probes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health-probes.d.ts","sourceRoot":"","sources":["../../src/lib/health-probes.ts"],"names":[],"mappings":"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"}
@@ -688,6 +688,55 @@ function readCurrentKubectlContext() {
688
688
  return undefined;
689
689
  return r.stdout?.trim() || undefined;
690
690
  }
691
+ // ── Setup wizard probes (binary-presence checks, not cluster connectivity) ─────
692
+ /**
693
+ * Probe: `kubectl` binary on PATH.
694
+ *
695
+ * Checks for the binary via `kubectl version --client --output=json`.
696
+ * Does NOT require a live cluster — client-only check. Used by the
697
+ * kubernetes substrate path of `olam setup` Phase 1 system check.
698
+ */
699
+ export async function probeKubectl(exec = defaultDockerExec) {
700
+ const r = exec('kubectl', ['version', '--client', '--output=json']);
701
+ if (r.status === 0 && r.stdout.length > 0) {
702
+ let clientVersion = 'unknown';
703
+ try {
704
+ const parsed = JSON.parse(r.stdout);
705
+ const clientInfo = parsed.clientVersion;
706
+ if (typeof clientInfo?.gitVersion === 'string') {
707
+ clientVersion = clientInfo.gitVersion;
708
+ }
709
+ }
710
+ catch {
711
+ // version string unavailable; probe still passes
712
+ }
713
+ return { ok: true, message: `kubectl ${clientVersion} on PATH` };
714
+ }
715
+ return {
716
+ ok: false,
717
+ message: 'kubectl not found on PATH',
718
+ remedy: 'Install kubectl: macOS: `brew install kubectl`; Linux: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/',
719
+ };
720
+ }
721
+ /**
722
+ * Probe: `k3d` binary on PATH (macOS kubernetes substrate).
723
+ *
724
+ * Used by `olam setup --substrate=kubernetes` Phase 1 on macOS to
725
+ * distinguish "k3d missing" (defer to Phase 1.5 install) from
726
+ * "k3d present". Returns ok:false so Phase 1.5 knows to install.
727
+ */
728
+ export async function probeK3d(exec = defaultDockerExec) {
729
+ const r = exec('k3d', ['version']);
730
+ if (r.status === 0 && r.stdout.length > 0) {
731
+ const versionLine = r.stdout.trim().split('\n')[0] ?? '';
732
+ return { ok: true, message: `k3d ${versionLine} on PATH` };
733
+ }
734
+ return {
735
+ ok: false,
736
+ message: 'k3d not found on PATH',
737
+ remedy: 'Install k3d: `brew install k3d` (macOS) or curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash',
738
+ };
739
+ }
691
740
  /**
692
741
  * Build the doctor/upgrade remedy text for a missing docker socket bind-mount.
693
742
  * Colima operators need `colima start --kubernetes` with the socket mount flag;