@pleri/olam-cli 0.1.147 → 0.1.148

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 (72) hide show
  1. package/dist/commands/auth.d.ts.map +1 -1
  2. package/dist/commands/auth.js +26 -1
  3. package/dist/commands/auth.js.map +1 -1
  4. package/dist/commands/doctor.d.ts +31 -3
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +274 -6
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/services.d.ts +41 -3
  9. package/dist/commands/services.d.ts.map +1 -1
  10. package/dist/commands/services.js +221 -13
  11. package/dist/commands/services.js.map +1 -1
  12. package/dist/commands/substrate-audit-log.d.ts +2 -0
  13. package/dist/commands/substrate-audit-log.d.ts.map +1 -1
  14. package/dist/commands/substrate-audit-log.js +13 -0
  15. package/dist/commands/substrate-audit-log.js.map +1 -1
  16. package/dist/image-digests.json +7 -7
  17. package/dist/index.js +3381 -2560
  18. package/dist/lib/auth-refresh-kubernetes.d.ts +62 -0
  19. package/dist/lib/auth-refresh-kubernetes.d.ts.map +1 -0
  20. package/dist/lib/auth-refresh-kubernetes.js +127 -0
  21. package/dist/lib/auth-refresh-kubernetes.js.map +1 -0
  22. package/dist/lib/kubectl-wrap.d.ts +6 -0
  23. package/dist/lib/kubectl-wrap.d.ts.map +1 -1
  24. package/dist/lib/kubectl-wrap.js +6 -1
  25. package/dist/lib/kubectl-wrap.js.map +1 -1
  26. package/dist/lib/manifest-refresh.d.ts +8 -1
  27. package/dist/lib/manifest-refresh.d.ts.map +1 -1
  28. package/dist/lib/manifest-refresh.js +17 -7
  29. package/dist/lib/manifest-refresh.js.map +1 -1
  30. package/dist/lib/peripheral-registry.d.ts +36 -0
  31. package/dist/lib/peripheral-registry.d.ts.map +1 -0
  32. package/dist/lib/peripheral-registry.js +55 -0
  33. package/dist/lib/peripheral-registry.js.map +1 -0
  34. package/dist/lib/port-forward.d.ts +67 -0
  35. package/dist/lib/port-forward.d.ts.map +1 -1
  36. package/dist/lib/port-forward.js +153 -0
  37. package/dist/lib/port-forward.js.map +1 -1
  38. package/dist/lib/upgrade-kubernetes.d.ts +35 -11
  39. package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
  40. package/dist/lib/upgrade-kubernetes.js +265 -21
  41. package/dist/lib/upgrade-kubernetes.js.map +1 -1
  42. package/host-cp/k8s/manifests/auth-service/10-serviceaccount.yaml +8 -0
  43. package/host-cp/k8s/manifests/auth-service/20-rbac.yaml +34 -0
  44. package/host-cp/k8s/manifests/auth-service/30-configmap.yaml +24 -0
  45. package/host-cp/k8s/manifests/auth-service/45-pvc.yaml +25 -0
  46. package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +114 -0
  47. package/host-cp/k8s/manifests/auth-service/60-service.yaml +21 -0
  48. package/host-cp/k8s/manifests/kg-service/10-serviceaccount.yaml +8 -0
  49. package/host-cp/k8s/manifests/kg-service/20-rbac.yaml +34 -0
  50. package/host-cp/k8s/manifests/kg-service/30-configmap.yaml +18 -0
  51. package/host-cp/k8s/manifests/kg-service/45-pvc.yaml +25 -0
  52. package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +108 -0
  53. package/host-cp/k8s/manifests/kg-service/60-service.yaml +21 -0
  54. package/host-cp/k8s/manifests/mcp-auth-service/10-serviceaccount.yaml +8 -0
  55. package/host-cp/k8s/manifests/mcp-auth-service/20-rbac.yaml +34 -0
  56. package/host-cp/k8s/manifests/mcp-auth-service/30-configmap.yaml +18 -0
  57. package/host-cp/k8s/manifests/mcp-auth-service/45-pvc.yaml +25 -0
  58. package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +114 -0
  59. package/host-cp/k8s/manifests/mcp-auth-service/60-service.yaml +21 -0
  60. package/host-cp/k8s/manifests/memory-service/10-serviceaccount.yaml +8 -0
  61. package/host-cp/k8s/manifests/memory-service/20-rbac.yaml +34 -0
  62. package/host-cp/k8s/manifests/memory-service/30-configmap.yaml +20 -0
  63. package/host-cp/k8s/manifests/memory-service/45-pvc.yaml +25 -0
  64. package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +116 -0
  65. package/host-cp/k8s/manifests/memory-service/60-service.yaml +21 -0
  66. package/host-cp/k8s/templates/auth-service-secret-template.yaml +28 -0
  67. package/host-cp/k8s/templates/kg-service-secret-template.yaml +28 -0
  68. package/host-cp/k8s/templates/mcp-auth-service-secret-template.yaml +28 -0
  69. package/host-cp/k8s/templates/memory-service-secret-template.yaml +29 -0
  70. package/host-cp/src/plan-chat-service.mjs +22 -3
  71. package/host-cp/src/server.mjs +4 -4
  72. package/package.json +1 -1
@@ -4,48 +4,102 @@
4
4
  * Phase 1b C2 of olam-host-suite-phase-1b-k3s-beta-flavour (plan
5
5
  * ~/.claude/plans/olam-host-suite-phase-1b-k3s-beta-flavour.md).
6
6
  *
7
+ * Phase 2 Phase C extensions:
8
+ * C1 — step 2.5: in-memory ConfigMap substitution for inter-peripheral K8s DNS URLs (D4)
9
+ * C2 — step 2.6: per-peripheral Secret pre-check (iterates PERIPHERALS; D12 pattern)
10
+ * C3 — step 2.7: CoreDNS warm-up wait + extend steps 3/4/5 to iterate peripherals
11
+ *
12
+ * Phase 2 Phase D extensions:
13
+ * D5 — OLAM_PHASE_2_BETA guard removed; all peripherals deploy unconditionally (Phase 2 GA)
14
+ *
7
15
  * Decisions consumed:
16
+ * D4 — K8s DNS URL form for inter-peripheral service URLs
8
17
  * D10 — context-allowlist + OLAM_K8S_CONTEXT_ACK strict-equality check
9
18
  * D12 — Secret pre-check (base64-decode + key-name + placeholder exact match)
10
19
  * D14 — --force-refresh-manifests flag + --accept-security-regression guard
11
20
  * D15 — kubectl rollout status --timeout=90s; state snapshot on failure
12
21
  * D17 — port-forward spawn via flock (spawnPortForward from port-forward.ts)
13
22
  * D22 — probeKubernetesApiReachable pre-flight via kubectl-wrap (5s timeout)
23
+ * D27 — audit log entry (phase2.flag_removed) emitted per upgrade run
14
24
  *
15
- * Step order:
16
- * 0 probeKubernetesApiReachable — 5s timeout kubectl cluster-info
17
- * 1 D10 context-allowlist + OLAM_K8S_CONTEXT_ACK strict-equality byte-for-byte
18
- * 2 D12 Secret pre-check (olam-host-cp-secret; base64-decode; key-name check)
19
- * 3 kubectl apply --context <pinned> -f ~/.olam/k8s/manifests/
20
- * 4 D15 kubectl rollout status --context <pinned> --timeout=90s (95s wrap)
21
- * 5 D17 port-forward spawn via flock
22
- * 6 verify /health returns X-Olam-Engine: kubernetes
23
- * 7 emit upgrade.complete instrumentation event
24
- * 8 success message
25
+ * Step order (Phase D — kubernetes substrate, Phase 2 GA):
26
+ * 0 probeKubernetesApiReachable — 5s timeout kubectl cluster-info
27
+ * 1 D10 context-allowlist + OLAM_K8S_CONTEXT_ACK strict-equality byte-for-byte
28
+ * 2 D12 Secret pre-check (olam-host-cp-secret; base64-decode; key-name check)
29
+ * 2.5 C1 in-memory ConfigMap substitution — K8s DNS URLs for inter-peripheral URLs
30
+ * 2.6 C2 per-peripheral Secret pre-check (iterates PERIPHERALS; unconditional D5)
31
+ * 2.7 C3 CoreDNS warm-up wait (kubectl wait --for=condition=Available deployment/coredns -n kube-system)
32
+ * 3 kubectl apply host-cp manifests + all 4 peripheral manifest dirs (alphabetical)
33
+ * 4 D15 kubectl rollout status (all 5 deployments in parallel)
34
+ * 5 D17 port-forward spawn for host-cp + spawnAllPeripheralPortForwards in parallel
35
+ * 6 verify /health returns X-Olam-Engine: kubernetes
36
+ * 7 emit upgrade.complete instrumentation event
37
+ * 8 success message
25
38
  *
26
39
  * Manifests NOT auto-rolled-back on failure (D15 spec). Operator must
27
40
  * manually intervene; state snapshot is printed on failure.
28
41
  */
42
+ import * as fs from 'node:fs';
29
43
  import * as os from 'node:os';
30
44
  import * as path from 'node:path';
45
+ import { parse as yamlParse, stringify as yamlStringify } from 'yaml';
31
46
  import ora from 'ora';
32
47
  import pc from 'picocolors';
33
48
  import { printError, printSuccess, printInfo, printWarning } from '../output.js';
34
49
  import { kubectlWrap } from './kubectl-wrap.js';
35
- import { spawnPortForward, probePortForwardLiveness } from './port-forward.js';
50
+ import { spawnPortForward, spawnAllPeripheralPortForwards, probePortForwardLiveness } from './port-forward.js';
36
51
  import { emitUpgradeComplete } from './instrumentation.js';
37
52
  import { runManifestRefresh } from './manifest-refresh.js';
38
- import { OLAM_HOME } from './config.js';
53
+ import { OLAM_HOME, OLAM_STATE_DIR } from './config.js';
54
+ import { PERIPHERALS } from './peripheral-registry.js';
39
55
  export const OLAM_K8S_MANIFESTS_DIR = path.join(OLAM_HOME, 'k8s', 'manifests');
40
56
  export const K8S_NAMESPACE = 'olam';
41
57
  export const HOST_CP_SECRET_NAME = 'olam-host-cp-secret';
42
58
  export const HOST_CP_DEPLOYMENT_NAME = 'olam-host-cp';
43
59
  export const PORT_FORWARD_TARGET = 'service/olam-host-cp';
44
60
  export const HOST_CP_HEALTH_URL = 'http://127.0.0.1:19000/health';
61
+ /** Audit log for substrate upgrade events (D18). */
62
+ export const SUBSTRATE_AUDIT_LOG = path.join(OLAM_STATE_DIR, 'substrate-audit.jsonl');
45
63
  /** Placeholder values that indicate the Secret has not been configured (D12). */
46
64
  const PLACEHOLDER_VALUES = new Set(['OLAM_AUTH_SECRET', 'GH_TOKEN']);
47
65
  /** Required keys in the olam-host-cp-secret (D12). */
48
66
  const REQUIRED_SECRET_KEYS = ['OLAM_AUTH_SECRET', 'GH_TOKEN'];
67
+ /**
68
+ * Peripheral secret metadata: name and required keys with their placeholder patterns.
69
+ * Placeholder pattern: starts with REPLACE_ME_ (as per the template files in
70
+ * packages/host-cp/k8s/templates/).
71
+ */
72
+ const PERIPHERAL_SECRETS = [
73
+ { name: 'auth-service', secretName: 'olam-auth-service-secret', keys: ['OLAM_AUTH_DB_SECRET'] },
74
+ { name: 'mcp-auth-service', secretName: 'olam-mcp-auth-service-secret', keys: ['OLAM_MCP_AUTH_JWT_SECRET'] },
75
+ { name: 'kg-service', secretName: 'olam-kg-service-secret', keys: ['OLAM_KG_BEARER_TOKEN'] },
76
+ { name: 'memory-service', secretName: 'olam-memory-service-secret', keys: ['OLAM_MEMORY_BEARER_SECRET'] },
77
+ ];
78
+ /** K8s cluster DNS base domain for the olam namespace. */
79
+ const K8S_DNS_SUFFIX = 'olam.svc.cluster.local';
80
+ /**
81
+ * Build the K8s in-cluster DNS URL for a peripheral service.
82
+ * Form: http://<k8sServiceName>.olam.svc.cluster.local:<port>
83
+ */
84
+ function buildK8sDnsUrl(k8sServiceName, port) {
85
+ return `http://${k8sServiceName}.${K8S_DNS_SUFFIX}:${port}`;
86
+ }
87
+ /**
88
+ * Append a JSONL audit entry to the substrate audit log (D18).
89
+ * Best-effort: errors are logged to stderr but do not abort the upgrade.
90
+ */
91
+ function appendSubstrateAuditEntry(entry, stderr) {
92
+ try {
93
+ const line = JSON.stringify(entry) + '\n';
94
+ const dir = path.dirname(SUBSTRATE_AUDIT_LOG);
95
+ if (!fs.existsSync(dir))
96
+ fs.mkdirSync(dir, { recursive: true });
97
+ fs.writeFileSync(SUBSTRATE_AUDIT_LOG, line, { encoding: 'utf8', flag: 'a', mode: 0o600 });
98
+ }
99
+ catch (err) {
100
+ stderr.write(`${pc.yellow('[warn]')} could not write substrate audit log: ${err instanceof Error ? err.message : String(err)}\n`);
101
+ }
102
+ }
49
103
  /** D10 — allowed kubectl context patterns. Currently: anything non-empty.
50
104
  * The allowlist is enforced by OLAM_K8S_CONTEXT_ACK strict-equality. */
51
105
  function isContextAllowed(context) {
@@ -135,6 +189,122 @@ async function waitForRollout(context, deps, stderr) {
135
189
  stderr.write(`\n${pc.yellow('note:')} Manifests are NOT auto-rolled-back. Inspect the state above and remediate manually.\n`);
136
190
  return false;
137
191
  }
192
+ /**
193
+ * Step 2.5 — C1: in-memory ConfigMap substitution for inter-peripheral K8s DNS URLs (D4).
194
+ *
195
+ * Reads the bundled host-cp ConfigMap YAML from manifestsDir/30-configmap.yaml,
196
+ * patches the inter-peripheral URL values to K8s cluster-DNS form, then applies
197
+ * the patched manifest via `kubectl apply -f -` on stdin.
198
+ *
199
+ * Does NOT rewrite any file on disk.
200
+ * Only runs on kubernetes substrate (called after substrate check).
201
+ *
202
+ * Returns null on success; error message string on failure.
203
+ */
204
+ async function applyConfigMapSubstitution(context, manifestsDir, deps) {
205
+ const wrap = deps.kubectlWrapImpl ?? kubectlWrap;
206
+ const readFileSync = deps.readFileSyncImpl ?? fs.readFileSync;
207
+ const configMapPath = path.join(manifestsDir, '30-configmap.yaml');
208
+ let rawYaml;
209
+ try {
210
+ rawYaml = readFileSync(configMapPath, 'utf8');
211
+ }
212
+ catch (err) {
213
+ return `Failed to read ConfigMap at ${configMapPath}: ${err instanceof Error ? err.message : String(err)}`;
214
+ }
215
+ // Parse → patch data values → re-serialize.
216
+ let parsed;
217
+ try {
218
+ parsed = yamlParse(rawYaml);
219
+ }
220
+ catch (err) {
221
+ return `Failed to parse ConfigMap YAML at ${configMapPath}: ${err instanceof Error ? err.message : String(err)}`;
222
+ }
223
+ const data = (parsed['data'] ?? {});
224
+ // Substitute each peripheral's ConfigMap key to K8s DNS form.
225
+ for (const peripheral of PERIPHERALS) {
226
+ data[peripheral.configMapKeyInHostCp] = buildK8sDnsUrl(peripheral.k8sServiceName, peripheral.port);
227
+ }
228
+ parsed['data'] = data;
229
+ const patchedYaml = yamlStringify(parsed);
230
+ // Apply via stdin pipe (D20 compliance: no value in argv).
231
+ const result = await wrap(['--context', context, 'apply', '-f', '-'], { timeout: 30_000, stdin: patchedYaml });
232
+ if (!result.ok) {
233
+ return `kubectl apply (ConfigMap substitution) failed: ${result.stderr.split('\n')[0] ?? ''}`;
234
+ }
235
+ return null;
236
+ }
237
+ /**
238
+ * Step 2.6 — C2: per-peripheral Secret pre-check.
239
+ *
240
+ * Iterates PERIPHERAL_SECRETS; for each, fetches the Secret via kubectl,
241
+ * base64-decodes each value, and refuses if:
242
+ * (a) Secret does not exist → names the peripheral + Secret resource.
243
+ * (b) Any key is missing → names the peripheral + key.
244
+ * (c) Any value starts with REPLACE_ME_ (placeholder not configured) → names key.
245
+ *
246
+ * Mirrors Phase 1b's D12 host-cp Secret pre-check pattern, generalised to N peripherals.
247
+ *
248
+ * Returns null on success; error message string on first failure.
249
+ */
250
+ async function checkPeripheralSecrets(context, deps) {
251
+ const wrap = deps.kubectlWrapImpl ?? kubectlWrap;
252
+ for (const { name, secretName, keys } of PERIPHERAL_SECRETS) {
253
+ const result = await wrap([
254
+ '--context', context,
255
+ 'get', 'secret', secretName,
256
+ '-n', K8S_NAMESPACE,
257
+ '-o', 'json',
258
+ ], { timeout: 15_000 });
259
+ if (!result.ok) {
260
+ return (`Peripheral Secret "${secretName}" (${name}) not found in namespace "${K8S_NAMESPACE}".\n` +
261
+ ` Create it first: kubectl --context ${context} apply -f <your-${name}-secret.yaml>\n` +
262
+ ` ${result.stderr.split('\n')[0] ?? ''}`);
263
+ }
264
+ let secretJson;
265
+ try {
266
+ secretJson = JSON.parse(result.stdout);
267
+ }
268
+ catch {
269
+ return `Failed to parse Secret JSON for "${secretName}" (${name}): ${result.stdout.slice(0, 200)}`;
270
+ }
271
+ const data = secretJson.data ?? {};
272
+ for (const key of keys) {
273
+ if (!(key in data)) {
274
+ return (`Peripheral Secret "${secretName}" (${name}) is missing required key "${key}".\n` +
275
+ ` Keys found: ${Object.keys(data).join(', ') || '(none)'}\n` +
276
+ ` Add the key and re-run.`);
277
+ }
278
+ const b64 = data[key] ?? '';
279
+ const decoded = Buffer.from(b64, 'base64').toString('utf8');
280
+ if (decoded.startsWith('REPLACE_ME_')) {
281
+ return (`Peripheral Secret "${secretName}" (${name}) key "${key}" still holds its placeholder value.\n` +
282
+ ` Replace the placeholder with a real value, then re-run.`);
283
+ }
284
+ }
285
+ }
286
+ return null; // all peripheral secrets verified
287
+ }
288
+ /**
289
+ * Step 2.7 — C3: CoreDNS warm-up wait.
290
+ *
291
+ * Runs `kubectl wait --for=condition=Available deployment/coredns -n kube-system --timeout=30s`
292
+ * before step 3 to ensure DNS resolution is available for peripheral service discovery.
293
+ *
294
+ * Returns true on success; false on timeout or failure.
295
+ */
296
+ async function waitForCoreDns(context, deps) {
297
+ const wrap = deps.kubectlWrapImpl ?? kubectlWrap;
298
+ const result = await wrap([
299
+ '--context', context,
300
+ 'wait',
301
+ '--for=condition=Available',
302
+ 'deployment/coredns',
303
+ '-n', 'kube-system',
304
+ '--timeout=30s',
305
+ ], { timeout: 35_000 });
306
+ return result.ok;
307
+ }
138
308
  /**
139
309
  * Step 6 — verify /health returns X-Olam-Engine: kubernetes.
140
310
  */
@@ -214,9 +384,46 @@ export async function runUpgradeKubernetes(opts = {}, deps = {}) {
214
384
  return { exitCode: 1, summary: 'secret pre-check failed' };
215
385
  }
216
386
  step2Spinner.succeed(`Secret ${HOST_CP_SECRET_NAME} verified`);
387
+ // ── D5: Phase 2 GA — OLAM_PHASE_2_BETA guard removed (D27) ──────
388
+ // Emit phase2.flag_removed audit log entry per upgrade run (D27).
389
+ appendSubstrateAuditEntry({
390
+ ts: new Date(deps.nowImpl ? deps.nowImpl() : Date.now()).toISOString(),
391
+ op: 'upgrade',
392
+ substrate: 'kubernetes',
393
+ phase2: { flag_removed: true },
394
+ }, stderr);
395
+ // ── Step 2.5: C1 — in-memory ConfigMap substitution (K8s DNS URLs) ──
396
+ const step25Spinner = ora('Patching ConfigMap with K8s DNS URLs (C1/D4)').start();
397
+ const configMapError = await applyConfigMapSubstitution(pinnedContext, manifestsDir, deps);
398
+ if (configMapError !== null) {
399
+ step25Spinner.fail('ConfigMap substitution failed');
400
+ stderr.write(`${pc.red('error:')} ${configMapError}\n`);
401
+ return { exitCode: 1, summary: 'configmap substitution failed' };
402
+ }
403
+ step25Spinner.succeed('ConfigMap patched with K8s DNS URLs');
404
+ // ── Step 2.6: C2 — per-peripheral Secret pre-check ──────────────
405
+ const step26Spinner = ora('Checking peripheral Secrets (C2)').start();
406
+ const peripheralSecretError = await checkPeripheralSecrets(pinnedContext, deps);
407
+ if (peripheralSecretError !== null) {
408
+ step26Spinner.fail('Peripheral Secret pre-check failed');
409
+ stderr.write(`${pc.red('error:')} ${peripheralSecretError}\n`);
410
+ return { exitCode: 1, summary: 'peripheral secret pre-check failed' };
411
+ }
412
+ step26Spinner.succeed('All peripheral Secrets verified');
413
+ // ── Step 2.7: C3 — CoreDNS warm-up wait ────────────────────────
414
+ const step27Spinner = ora('Waiting for CoreDNS (C3, 30s timeout)').start();
415
+ const coreDnsOk = await waitForCoreDns(pinnedContext, deps);
416
+ if (!coreDnsOk) {
417
+ step27Spinner.warn('CoreDNS not Available within 30s — continuing (DNS may be degraded)');
418
+ }
419
+ else {
420
+ step27Spinner.succeed('CoreDNS Available');
421
+ }
217
422
  // ── Step 3: kubectl apply ─────────────────────────────────────────
218
423
  const step3Spinner = ora('Applying manifests').start();
219
424
  const wrap = deps.kubectlWrapImpl ?? kubectlWrap;
425
+ // Always apply host-cp manifests (top-level manifests dir).
426
+ // kubectl -f <dir> does NOT recurse by default — peripheral subdirs are ignored here.
220
427
  const applyResult = await wrap(['--context', pinnedContext, 'apply', '-f', manifestsDir], { timeout: 120_000 });
221
428
  if (!applyResult.ok) {
222
429
  step3Spinner.fail('kubectl apply failed');
@@ -224,24 +431,61 @@ export async function runUpgradeKubernetes(opts = {}, deps = {}) {
224
431
  ` ${applyResult.stderr.split('\n').slice(0, 5).join('\n ')}\n`);
225
432
  return { exitCode: 1, summary: 'kubectl apply failed' };
226
433
  }
227
- step3Spinner.succeed('Manifests applied');
434
+ // Apply each peripheral's manifest directory (alphabetical order).
435
+ const peripheralNames = [...PERIPHERALS.map((p) => p.name)].sort();
436
+ for (const name of peripheralNames) {
437
+ const peripheralManifestsDir = path.join(manifestsDir, name);
438
+ const peripheralApplyResult = await wrap(['--context', pinnedContext, 'apply', '-f', peripheralManifestsDir], { timeout: 120_000 });
439
+ if (!peripheralApplyResult.ok) {
440
+ step3Spinner.fail(`kubectl apply failed for peripheral "${name}"`);
441
+ stderr.write(`${pc.red('error:')} kubectl apply failed for peripheral "${name}" (exit ${peripheralApplyResult.exitCode}):\n` +
442
+ ` ${peripheralApplyResult.stderr.split('\n').slice(0, 5).join('\n ')}\n`);
443
+ return { exitCode: 1, summary: `kubectl apply failed for peripheral ${name}` };
444
+ }
445
+ }
446
+ step3Spinner.succeed('All manifests applied (host-cp + 4 peripherals)');
228
447
  // ── Step 4: D15 — kubectl rollout status (90s timeout, 95s wrap) ──
229
- const step4Spinner = ora('Waiting for rollout (90s)').start();
230
- const rolloutOk = await waitForRollout(pinnedContext, deps, stderr);
231
- if (!rolloutOk) {
232
- step4Spinner.fail('Rollout status failed or timed out');
448
+ // Wait for all 5 deployments in parallel (host-cp + 4 peripherals).
449
+ const step4Spinner = ora('Waiting for rollout (all 5 deployments, 90s each)').start();
450
+ const deploymentNames = [
451
+ HOST_CP_DEPLOYMENT_NAME,
452
+ ...PERIPHERALS.map((p) => p.name),
453
+ ];
454
+ const rolloutResults = await Promise.all(deploymentNames.map((deploymentName) => (deps.kubectlWrapImpl ?? kubectlWrap)([
455
+ '--context', pinnedContext,
456
+ 'rollout', 'status',
457
+ `deployment/${deploymentName}`,
458
+ '-n', K8S_NAMESPACE,
459
+ '--timeout=90s',
460
+ ], { timeout: 95_000 })));
461
+ const failedDeployments = deploymentNames.filter((_, i) => !rolloutResults[i]?.ok);
462
+ if (failedDeployments.length > 0) {
463
+ step4Spinner.fail(`Rollout failed for: ${failedDeployments.join(', ')}`);
464
+ // Emit state snapshot for failed deployments (mirrors D15 pattern).
465
+ for (const name of failedDeployments) {
466
+ stderr.write(`${pc.red('error:')} rollout status failed for deployment/${name}.\n`);
467
+ stderr.write(`${pc.dim(`--- kubectl get pods -n ${K8S_NAMESPACE} -o wide ---`)}\n`);
468
+ const podsResult = await wrap(['--context', pinnedContext, 'get', 'pods', '-n', K8S_NAMESPACE, '-o', 'wide'], { timeout: 10_000 });
469
+ stderr.write((podsResult.stdout || podsResult.stderr || '(no output)') + '\n');
470
+ }
471
+ stderr.write(`\n${pc.yellow('note:')} Manifests are NOT auto-rolled-back. Inspect the state above and remediate manually.\n`);
233
472
  return { exitCode: 1, summary: 'rollout status timed out' };
234
473
  }
235
- step4Spinner.succeed('Rollout complete');
474
+ step4Spinner.succeed('All 5 deployments rolled out');
236
475
  // ── Step 5: D17 — port-forward spawn via flock ───────────────────
476
+ // Spawn host-cp and all peripheral port-forwards in parallel.
237
477
  const step5Spinner = ora('Establishing port-forward').start();
238
478
  const pfSpawn = deps.spawnPortForwardImpl ?? spawnPortForward;
239
- const pfResult = await pfSpawn(pinnedContext, K8S_NAMESPACE, PORT_FORWARD_TARGET, 19000, 19000, deps.portForwardDeps ?? {});
479
+ const spawnAllPeripheral = deps.spawnAllPeripheralPortForwardsImpl ?? spawnAllPeripheralPortForwards;
480
+ const [pfResult] = await Promise.all([
481
+ pfSpawn(pinnedContext, K8S_NAMESPACE, PORT_FORWARD_TARGET, 19000, 19000, deps.portForwardDeps ?? {}),
482
+ spawnAllPeripheral(pinnedContext, K8S_NAMESPACE, deps.peripheralPortForwardDeps ?? {}),
483
+ ]);
240
484
  if (pfResult.spawned) {
241
- step5Spinner.succeed(`Port-forward spawned (pid ${pfResult.pid})`);
485
+ step5Spinner.succeed(`Port-forward spawned (pid ${pfResult.pid}) + all peripheral port-forwards`);
242
486
  }
243
487
  else if (pfResult.reason === 'live') {
244
- step5Spinner.succeed('Port-forward already live');
488
+ step5Spinner.succeed('Port-forward already live + peripheral port-forwards spawned');
245
489
  }
246
490
  else {
247
491
  step5Spinner.warn('Port-forward lock held by concurrent caller; skipping spawn');
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-kubernetes.js","sourceRoot":"","sources":["../../src/lib/upgrade-kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAwB,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAiB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAA4B,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAElE,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;AAErE,sDAAsD;AACtD,MAAM,oBAAoB,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAU,CAAC;AAEvE;wEACwE;AACxE,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,CAAC;AAqCD;;;GAGG;AACH,KAAK,UAAU,2BAA2B,CACxC,OAAe,EACf,IAA2B;IAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,CAAC,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,EACtC,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;IACF,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,uBAAuB,CACpC,OAAe,EACf,IAA2B;IAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB;QACE,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,QAAQ,EAAE,mBAAmB;QACpC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,MAAM;KACb,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CACL,WAAW,mBAAmB,6BAA6B,aAAa,MAAM;YAC9E,wCAAwC,OAAO,gCAAgC;YAC/E,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,UAA6C,CAAC;IAClD,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAsB,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gCAAgC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;IAEnC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,CACL,WAAW,mBAAmB,8BAA8B,GAAG,MAAM;gBACrE,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI;gBAC7D,2BAA2B,CAC5B,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,6EAA6E;QAC7E,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,CACL,WAAW,mBAAmB,UAAU,GAAG,wCAAwC;gBACnF,2DAA2D,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,oBAAoB;AACnC,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAe,EACf,IAA2B,EAC3B,MAA6B;IAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB;QACE,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,QAAQ;QACnB,cAAc,uBAAuB,EAAE;QACvC,IAAI,EAAE,aAAa;QACnB,eAAe;KAChB,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IAEF,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAE3B,mCAAmC;IACnC,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,gDAAgD;QACjE,aAAa,MAAM,CAAC,MAAM,IAAI,SAAS,aAAa,MAAM,CAAC,QAAQ,MAAM,CAC5E,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,0CAA0C,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,IAAI,CAC3B,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,EACxE,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;IAE/E,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,0DAA0D,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,MAAM,IAAI,CAC3B,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,uBAAuB,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,EAChG,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CACV,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,wFAAwF,CAChH,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,kBAAkB,EAAE;YAC9C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACpF,OAAO,EAAE,EAAE,EAAE,MAAM,KAAK,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA8B,EAAE,EAChC,OAA8B,EAAE;IAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,oEAAoE;IACpE,MAAM,YAAY,GAAG,GAAG,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;IAEvD,8EAA8E;IAC9E,iDAAiD;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,8CAA8C;YAC/D,0EAA0E;YAC1E,6EAA6E,CAChF,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAClE,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEjD,oEAAoE;IACpE,MAAM,YAAY,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpE,sEAAsE;IACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,8CAA8C;YAC/D,gEAAgE;YAChE,uDAAuD;YACvD,+DAA+D,CAClE,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACzD,CAAC;IAED,gEAAgE;IAChE,MAAM,aAAa,GAAG,QAAQ,CAAC;IAE/B,6FAA6F;IAC7F,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,oCAAoC,aAAa,IAAI,CAC5E,CAAC;IACF,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAElE,oEAAoE;IACpE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,CAAC;QACnE,MAAM,aAAa,GAAG,MAAM,WAAW,CACrC,YAAY,EACZ,IAAI,CAAC,wBAAwB,KAAK,IAAI,EACtC,EAAyB,CAC1B,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QAC9D,CAAC;QACD,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,oEAAoE;IACpE,MAAM,YAAY,GAAG,GAAG,CAAC,mBAAmB,mBAAmB,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC;QACrD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IAC7D,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,UAAU,mBAAmB,WAAW,CAAC,CAAC;IAE/D,qEAAqE;IACrE,MAAM,YAAY,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAC5B,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EACzD,EAAE,OAAO,EAAE,OAAO,EAAE,CACrB,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,+BAA+B,WAAW,CAAC,QAAQ,MAAM;YAC1E,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CACnE,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC1D,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE1C,qEAAqE;IACrE,MAAM,YAAY,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACxD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAC9D,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEzC,oEAAoE;IACpE,MAAM,YAAY,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,IAAI,gBAAgB,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,IAAI,CAAC,eAAe,IAAI,EAAE,CAC3B,CAAC;IACF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,YAAY,CAAC,OAAO,CAAC,6BAA6B,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACtC,YAAY,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IAED,sEAAsE;IACtE,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAErD,oEAAoE;IACpE,MAAM,YAAY,GAAG,GAAG,CAAC,sDAAsD,CAAC,CAAC,KAAK,EAAE,CAAC;IACzF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,YAAY,CAAC,IAAI,CACf,WAAW,CAAC,YAAY,KAAK,IAAI;YAC/B,CAAC,CAAC,4BAA4B,WAAW,CAAC,YAAY,2BAA2B;YACjF,CAAC,CAAC,gDAAgD,CACrD,CAAC;QACF,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,8CAA8C;YAC/D,kEAAkE,CACrE,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;IAC3E,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;IAElE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC;IACtD,QAAQ,CACN;QACE,SAAS,EAAE,YAAY;QACvB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QACjC,MAAM,EAAE,KAAK;KACd,EACD,IAAI,CAAC,QAAQ,IAAI,EAAE,CACpB,CAAC;IAEF,sEAAsE;IACtE,YAAY,CAAC,oCAAoC,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,qCAAqC,mBAAmB,IAAI,CAAC,CAAC;IAE3E,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"upgrade-kubernetes.js","sourceRoot":"","sources":["../../src/lib/upgrade-kubernetes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ apiVersion: v1
2
+ kind: ServiceAccount
3
+ metadata:
4
+ name: olam-auth-service
5
+ namespace: olam
6
+ labels:
7
+ app: olam-auth-service
8
+ olam.io/component: peripheral
@@ -0,0 +1,34 @@
1
+ # Phase 1a Decision 19: Role scoped to resourceNames: ["olam-auth-service"] on
2
+ # apps/v1 deployments. Without this scope, the in-cluster ServiceAccount
3
+ # could patch ANY Deployment in the namespace. This is the load-bearing
4
+ # security guardrail — preserve verbatim.
5
+ apiVersion: rbac.authorization.k8s.io/v1
6
+ kind: Role
7
+ metadata:
8
+ name: olam-auth-service
9
+ namespace: olam
10
+ labels:
11
+ app: olam-auth-service
12
+ olam.io/component: peripheral
13
+ rules:
14
+ - apiGroups: ["apps"]
15
+ resources: ["deployments"]
16
+ resourceNames: ["olam-auth-service"]
17
+ verbs: ["get", "patch", "watch"]
18
+ ---
19
+ apiVersion: rbac.authorization.k8s.io/v1
20
+ kind: RoleBinding
21
+ metadata:
22
+ name: olam-auth-service
23
+ namespace: olam
24
+ labels:
25
+ app: olam-auth-service
26
+ olam.io/component: peripheral
27
+ subjects:
28
+ - kind: ServiceAccount
29
+ name: olam-auth-service
30
+ namespace: olam
31
+ roleRef:
32
+ kind: Role
33
+ name: olam-auth-service
34
+ apiGroup: rbac.authorization.k8s.io
@@ -0,0 +1,24 @@
1
+ # ConfigMap for olam-auth-service environment. Sensitive values (AUTH_DB_SECRET,
2
+ # API keys) are NOT here — they live in the Secret (see templates/auth-service-secret-template.yaml).
3
+ # Operators apply the Secret separately before applying the manifests.
4
+ #
5
+ # Inter-peripheral URL placeholders (e.g. OLAM_MCP_AUTH_URL) are set to
6
+ # cluster-internal DNS names. These are resolved by Phase C substitution;
7
+ # operators running Phase 2 Beta may override them directly.
8
+ apiVersion: v1
9
+ kind: ConfigMap
10
+ metadata:
11
+ name: olam-auth-service-env
12
+ namespace: olam
13
+ labels:
14
+ app: olam-auth-service
15
+ olam.io/component: peripheral
16
+ data:
17
+ # Port auth-service listens on. Must match 60-service.yaml targetPort.
18
+ OLAM_AUTH_PORT: "9999"
19
+ # Data directory — backed by the PVC mounted at /data.
20
+ OLAM_AUTH_DATA_PATH: "/data/auth"
21
+ # URL of mcp-auth-service (cluster-internal DNS). Override in non-k3d environments.
22
+ OLAM_MCP_AUTH_SERVICE_URL: "http://olam-mcp-auth-service.olam.svc.cluster.local:9998"
23
+ # Credential vault poll interval.
24
+ OLAM_CREDENTIAL_POLL_MS: "60000"
@@ -0,0 +1,25 @@
1
+ # PersistentVolumeClaim for olam-auth-service /data volume.
2
+ #
3
+ # Why PVC instead of hostPath: see packages/host-cp/k8s/manifests/host-cp/45-pvc.yaml
4
+ # for the full rationale (fsGroup, k3d node filesystem, etc.).
5
+ #
6
+ # local-path StorageClass ships with k3d by default (rancher/local-path-provisioner).
7
+ # On non-k3d clusters, substitute storageClassName with your cluster's provisioner.
8
+ # D24: storageClassName operator-editable — edit the field below for non-k3d substrates.
9
+ apiVersion: v1
10
+ kind: PersistentVolumeClaim
11
+ metadata:
12
+ name: olam-auth-data
13
+ namespace: olam
14
+ labels:
15
+ app: olam-auth-service
16
+ olam.io/component: peripheral
17
+ spec:
18
+ accessModes:
19
+ - ReadWriteOnce
20
+ # D24: operator-editable. k3d default is local-path. Change for non-k3d substrates.
21
+ storageClassName: local-path
22
+ resources:
23
+ requests:
24
+ # D25: auth-service PVC size 5Gi.
25
+ storage: 5Gi
@@ -0,0 +1,114 @@
1
+ # Deployment for olam-auth-service.
2
+ #
3
+ # Image: pinned to sha256 digest (not :latest or named tag) per T4 threat model.
4
+ # Digest resolves to ghcr.io/pleri/olam-auth-service:0.1.0 (multi-arch index).
5
+ # To update: resolve the new tag's digest via:
6
+ # TOKEN=$(curl -s "https://ghcr.io/token?scope=repository:pleri/olam-auth-service:pull&service=ghcr.io" | jq -r .token)
7
+ # curl -sI -H "Authorization: Bearer $TOKEN" \
8
+ # -H "Accept: application/vnd.oci.image.index.v1+json,application/vnd.docker.distribution.manifest.list.v2+json" \
9
+ # https://ghcr.io/v2/pleri/olam-auth-service/manifests/<tag> | grep docker-content-digest
10
+ #
11
+ # securityContext: conservative defaults per T6/T7 threat model (runAsNonRoot,
12
+ # readOnlyRootFilesystem). /tmp backed by emptyDir for transient write needs.
13
+ #
14
+ # D17: auth-service does NOT mount /var/run/docker.sock (Phase 2 k8s pods
15
+ # cannot reach docker.sock — no hostPath socket mount).
16
+ #
17
+ # chown-data init container: grants UID-1000 write access on the freshly-
18
+ # provisioned PV (fsGroup alone is insufficient for local-path PVs).
19
+ apiVersion: apps/v1
20
+ kind: Deployment
21
+ metadata:
22
+ name: olam-auth-service
23
+ namespace: olam
24
+ labels:
25
+ app: olam-auth-service
26
+ olam.io/component: peripheral
27
+ spec:
28
+ replicas: 1
29
+ strategy:
30
+ type: RollingUpdate
31
+ rollingUpdate:
32
+ maxSurge: 1
33
+ maxUnavailable: 0
34
+ selector:
35
+ matchLabels:
36
+ app: olam-auth-service
37
+ template:
38
+ metadata:
39
+ labels:
40
+ app: olam-auth-service
41
+ spec:
42
+ serviceAccountName: olam-auth-service
43
+ securityContext:
44
+ runAsNonRoot: true
45
+ runAsUser: 1000
46
+ runAsGroup: 1000
47
+ fsGroup: 1000
48
+ initContainers:
49
+ - name: chown-data
50
+ # busybox:1.36 — sha256-pinned per T4 threat model.
51
+ image: busybox@sha256:73aaf090f3d85aa34ee199857f03fa3a95c8ede2ffd4cc2cdb5b94e566b11662
52
+ imagePullPolicy: IfNotPresent
53
+ securityContext:
54
+ runAsUser: 0
55
+ runAsNonRoot: false
56
+ allowPrivilegeEscalation: false
57
+ command: ["chown", "-R", "1000:1000", "/data"]
58
+ volumeMounts:
59
+ - name: auth-data
60
+ mountPath: /data
61
+ containers:
62
+ - name: olam-auth-service
63
+ image: ghcr.io/pleri/olam-auth-service@sha256:a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
64
+ imagePullPolicy: IfNotPresent
65
+ securityContext:
66
+ runAsNonRoot: true
67
+ runAsUser: 1000
68
+ readOnlyRootFilesystem: true
69
+ allowPrivilegeEscalation: false
70
+ capabilities:
71
+ drop: ["ALL"]
72
+ ports:
73
+ - name: http
74
+ containerPort: 9999
75
+ protocol: TCP
76
+ envFrom:
77
+ - configMapRef:
78
+ name: olam-auth-service-env
79
+ - secretRef:
80
+ name: olam-auth-service-secret
81
+ volumeMounts:
82
+ - name: auth-data
83
+ mountPath: /data
84
+ - name: tmp
85
+ mountPath: /tmp
86
+ readinessProbe:
87
+ httpGet:
88
+ path: /health
89
+ port: 9999
90
+ initialDelaySeconds: 5
91
+ periodSeconds: 5
92
+ timeoutSeconds: 3
93
+ failureThreshold: 6
94
+ livenessProbe:
95
+ httpGet:
96
+ path: /health
97
+ port: 9999
98
+ initialDelaySeconds: 30
99
+ periodSeconds: 20
100
+ timeoutSeconds: 5
101
+ failureThreshold: 3
102
+ resources:
103
+ requests:
104
+ cpu: "50m"
105
+ memory: "128Mi"
106
+ limits:
107
+ cpu: "500m"
108
+ memory: "512Mi"
109
+ volumes:
110
+ - name: auth-data
111
+ persistentVolumeClaim:
112
+ claimName: olam-auth-data
113
+ - name: tmp
114
+ emptyDir: {}
@@ -0,0 +1,21 @@
1
+ # ClusterIP Service for olam-auth-service.
2
+ # Port 9999 — consumed by host-cp and other peripherals via cluster-internal DNS.
3
+ # Operator surfaces externally via:
4
+ # kubectl port-forward -n olam svc/olam-auth-service 9999:9999
5
+ apiVersion: v1
6
+ kind: Service
7
+ metadata:
8
+ name: olam-auth-service
9
+ namespace: olam
10
+ labels:
11
+ app: olam-auth-service
12
+ olam.io/component: peripheral
13
+ spec:
14
+ type: ClusterIP
15
+ selector:
16
+ app: olam-auth-service
17
+ ports:
18
+ - name: http
19
+ port: 9999
20
+ targetPort: 9999
21
+ protocol: TCP