@pleri/olam-cli 0.1.144 → 0.1.146

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 (117) hide show
  1. package/dist/commands/doctor.d.ts +53 -23
  2. package/dist/commands/doctor.d.ts.map +1 -1
  3. package/dist/commands/doctor.js +117 -46
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/logs.d.ts +17 -3
  6. package/dist/commands/logs.d.ts.map +1 -1
  7. package/dist/commands/logs.js +38 -35
  8. package/dist/commands/logs.js.map +1 -1
  9. package/dist/commands/memory/bridge.d.ts +57 -0
  10. package/dist/commands/memory/bridge.d.ts.map +1 -0
  11. package/dist/commands/memory/bridge.js +156 -0
  12. package/dist/commands/memory/bridge.js.map +1 -0
  13. package/dist/commands/memory/index.d.ts +3 -0
  14. package/dist/commands/memory/index.d.ts.map +1 -1
  15. package/dist/commands/memory/index.js +10 -1
  16. package/dist/commands/memory/index.js.map +1 -1
  17. package/dist/commands/memory/reclassify.d.ts +56 -0
  18. package/dist/commands/memory/reclassify.d.ts.map +1 -0
  19. package/dist/commands/memory/reclassify.js +177 -0
  20. package/dist/commands/memory/reclassify.js.map +1 -0
  21. package/dist/commands/memory/stats.d.ts +69 -0
  22. package/dist/commands/memory/stats.d.ts.map +1 -0
  23. package/dist/commands/memory/stats.js +164 -0
  24. package/dist/commands/memory/stats.js.map +1 -0
  25. package/dist/commands/skills-doctor.d.ts +14 -0
  26. package/dist/commands/skills-doctor.d.ts.map +1 -0
  27. package/dist/commands/skills-doctor.js +126 -0
  28. package/dist/commands/skills-doctor.js.map +1 -0
  29. package/dist/commands/skills-hook.d.ts +19 -0
  30. package/dist/commands/skills-hook.d.ts.map +1 -0
  31. package/dist/commands/skills-hook.js +99 -0
  32. package/dist/commands/skills-hook.js.map +1 -0
  33. package/dist/commands/skills-migrate-back.d.ts +21 -0
  34. package/dist/commands/skills-migrate-back.d.ts.map +1 -0
  35. package/dist/commands/skills-migrate-back.js +222 -0
  36. package/dist/commands/skills-migrate-back.js.map +1 -0
  37. package/dist/commands/skills-migrate.d.ts +33 -0
  38. package/dist/commands/skills-migrate.d.ts.map +1 -0
  39. package/dist/commands/skills-migrate.js +216 -0
  40. package/dist/commands/skills-migrate.js.map +1 -0
  41. package/dist/commands/skills-onboard.d.ts +26 -0
  42. package/dist/commands/skills-onboard.d.ts.map +1 -0
  43. package/dist/commands/skills-onboard.js +227 -0
  44. package/dist/commands/skills-onboard.js.map +1 -0
  45. package/dist/commands/skills-shadow-backups.d.ts +15 -0
  46. package/dist/commands/skills-shadow-backups.d.ts.map +1 -0
  47. package/dist/commands/skills-shadow-backups.js +132 -0
  48. package/dist/commands/skills-shadow-backups.js.map +1 -0
  49. package/dist/commands/skills-source.d.ts +37 -0
  50. package/dist/commands/skills-source.d.ts.map +1 -0
  51. package/dist/commands/skills-source.js +431 -0
  52. package/dist/commands/skills-source.js.map +1 -0
  53. package/dist/commands/skills.d.ts +11 -0
  54. package/dist/commands/skills.d.ts.map +1 -0
  55. package/dist/commands/skills.js +170 -0
  56. package/dist/commands/skills.js.map +1 -0
  57. package/dist/commands/status.d.ts +27 -0
  58. package/dist/commands/status.d.ts.map +1 -1
  59. package/dist/commands/status.js +102 -1
  60. package/dist/commands/status.js.map +1 -1
  61. package/dist/commands/substrate-audit-log.d.ts +49 -0
  62. package/dist/commands/substrate-audit-log.d.ts.map +1 -0
  63. package/dist/commands/substrate-audit-log.js +148 -0
  64. package/dist/commands/substrate-audit-log.js.map +1 -0
  65. package/dist/commands/substrate.d.ts +60 -0
  66. package/dist/commands/substrate.d.ts.map +1 -0
  67. package/dist/commands/substrate.js +175 -0
  68. package/dist/commands/substrate.js.map +1 -0
  69. package/dist/commands/upgrade.d.ts +10 -0
  70. package/dist/commands/upgrade.d.ts.map +1 -1
  71. package/dist/commands/upgrade.js +30 -0
  72. package/dist/commands/upgrade.js.map +1 -1
  73. package/dist/image-digests.json +7 -7
  74. package/dist/index.js +8394 -3876
  75. package/dist/index.js.map +1 -1
  76. package/dist/lib/config.d.ts +69 -0
  77. package/dist/lib/config.d.ts.map +1 -0
  78. package/dist/lib/config.js +146 -0
  79. package/dist/lib/config.js.map +1 -0
  80. package/dist/lib/health-probes.d.ts +72 -0
  81. package/dist/lib/health-probes.d.ts.map +1 -1
  82. package/dist/lib/health-probes.js +218 -0
  83. package/dist/lib/health-probes.js.map +1 -1
  84. package/dist/lib/instrumentation.d.ts +85 -0
  85. package/dist/lib/instrumentation.d.ts.map +1 -0
  86. package/dist/lib/instrumentation.js +104 -0
  87. package/dist/lib/instrumentation.js.map +1 -0
  88. package/dist/lib/kubectl-wrap.d.ts +59 -0
  89. package/dist/lib/kubectl-wrap.d.ts.map +1 -0
  90. package/dist/lib/kubectl-wrap.js +130 -0
  91. package/dist/lib/kubectl-wrap.js.map +1 -0
  92. package/dist/lib/manifest-refresh.d.ts +95 -0
  93. package/dist/lib/manifest-refresh.d.ts.map +1 -0
  94. package/dist/lib/manifest-refresh.js +222 -0
  95. package/dist/lib/manifest-refresh.js.map +1 -0
  96. package/dist/lib/port-forward.d.ts +101 -0
  97. package/dist/lib/port-forward.d.ts.map +1 -0
  98. package/dist/lib/port-forward.js +240 -0
  99. package/dist/lib/port-forward.js.map +1 -0
  100. package/dist/lib/upgrade-kubernetes.d.ts +77 -0
  101. package/dist/lib/upgrade-kubernetes.d.ts.map +1 -0
  102. package/dist/lib/upgrade-kubernetes.js +277 -0
  103. package/dist/lib/upgrade-kubernetes.js.map +1 -0
  104. package/dist/mcp-server.js +3328 -1166
  105. package/host-cp/k8s/manifests/00-namespace.yaml +7 -0
  106. package/host-cp/k8s/manifests/10-serviceaccount.yaml +8 -0
  107. package/host-cp/k8s/manifests/20-rbac.yaml +34 -0
  108. package/host-cp/k8s/manifests/30-configmap.yaml +30 -0
  109. package/host-cp/k8s/manifests/45-pvc.yaml +27 -0
  110. package/host-cp/k8s/manifests/50-deployment.yaml +148 -0
  111. package/host-cp/k8s/manifests/60-service.yaml +22 -0
  112. package/host-cp/k8s/templates/40-secret-template.yaml +32 -0
  113. package/host-cp/src/agent-runtime-trigger.mjs +74 -4
  114. package/host-cp/src/engine-identity.mjs +32 -0
  115. package/host-cp/src/plan-chat-service.mjs +31 -7
  116. package/host-cp/src/server.mjs +219 -9
  117. package/package.json +3 -2
@@ -11,6 +11,33 @@
11
11
  * transitive @olam/adapters resolution.
12
12
  */
13
13
  import type { Command } from 'commander';
14
+ /**
15
+ * Canonical runtime-state contract per Decision 17. Surfaced by host-cp's
16
+ * `GET /v1/worlds/:id/status` endpoint; both Docker and Kubernetes engines
17
+ * map their native state onto this shape so the wire-format is identical.
18
+ */
19
+ export interface WorldRuntimeStatus {
20
+ readonly state: 'running' | 'starting' | 'stopped' | 'crashed' | 'unknown';
21
+ readonly ready_replicas: number;
22
+ readonly restarts: number;
23
+ readonly last_event_type: string | null;
24
+ readonly last_event_age_seconds: number | null;
25
+ }
26
+ /**
27
+ * Parse and validate a server response payload into WorldRuntimeStatus.
28
+ * Returns null on any shape mismatch so the caller falls back gracefully.
29
+ * Exported for unit testing.
30
+ */
31
+ export declare function parseRuntimeStatus(raw: unknown): WorldRuntimeStatus | null;
32
+ export type FetchRuntimeFn = (worldId: string, token: string) => Promise<WorldRuntimeStatus | null>;
33
+ /**
34
+ * Default fetcher — hits host-cp's /v1/worlds/:id/status via the loopback
35
+ * port with a 2-second timeout. Returns null on any error so the calling
36
+ * `olam status` command renders the registry view without the runtime
37
+ * block when host-cp is down or the engine fails (preserves the legacy
38
+ * behaviour for operators with a stopped host-cp).
39
+ */
40
+ export declare const fetchWorldRuntimeStatus: FetchRuntimeFn;
14
41
  export interface MachineStatus {
15
42
  readonly version: string;
16
43
  readonly port: number;
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;IACxC,GAAG,EAAE;QAAE,YAAY,EAAE;YAAE,UAAU,EAAE,MAAM,OAAO,EAAE,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB,CAAC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,aAAa,EACxB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,aAAa,CAAC,CAoDxB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyErD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAqB1E;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;AAEpG;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,cA6BlC,CAAC;AAEL,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC;AAC9C,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;IACxC,GAAG,EAAE;QAAE,YAAY,EAAE;YAAE,UAAU,EAAE,MAAM,OAAO,EAAE,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB,CAAC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,aAAa,EACxB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAAC,aAAa,CAAC,CAoDxB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqGrD"}
@@ -11,6 +11,7 @@
11
11
  * transitive @olam/adapters resolution.
12
12
  */
13
13
  import * as fs from 'node:fs';
14
+ import * as http from 'node:http';
14
15
  import * as os from 'node:os';
15
16
  import * as path from 'node:path';
16
17
  import { printError, printInfo, printHeader, formatAge } from '../output.js';
@@ -18,6 +19,78 @@ import { printError, printInfo, printHeader, formatAge } from '../output.js';
18
19
  // so status.ts doesn't import @olam/core/world/version-pin.ts (transitive dep).
19
20
  const CLI_VERSION = process.env['OLAM_CLI_VERSION'] ?? '0.0.0';
20
21
  const HOST_CP_PORT = 19000;
22
+ const STATE_ENUM = [
23
+ 'running', 'starting', 'stopped', 'crashed', 'unknown',
24
+ ];
25
+ /**
26
+ * Parse and validate a server response payload into WorldRuntimeStatus.
27
+ * Returns null on any shape mismatch so the caller falls back gracefully.
28
+ * Exported for unit testing.
29
+ */
30
+ export function parseRuntimeStatus(raw) {
31
+ if (!raw || typeof raw !== 'object')
32
+ return null;
33
+ const obj = raw;
34
+ const state = obj.state;
35
+ if (typeof state !== 'string')
36
+ return null;
37
+ if (!STATE_ENUM.includes(state))
38
+ return null;
39
+ const ready_replicas = typeof obj.ready_replicas === 'number' ? obj.ready_replicas : 0;
40
+ const restarts = typeof obj.restarts === 'number' ? obj.restarts : 0;
41
+ const last_event_type = typeof obj.last_event_type === 'string'
42
+ ? obj.last_event_type
43
+ : null;
44
+ const last_event_age_seconds = typeof obj.last_event_age_seconds === 'number'
45
+ ? obj.last_event_age_seconds
46
+ : null;
47
+ return {
48
+ state: state,
49
+ ready_replicas,
50
+ restarts,
51
+ last_event_type,
52
+ last_event_age_seconds,
53
+ };
54
+ }
55
+ /**
56
+ * Default fetcher — hits host-cp's /v1/worlds/:id/status via the loopback
57
+ * port with a 2-second timeout. Returns null on any error so the calling
58
+ * `olam status` command renders the registry view without the runtime
59
+ * block when host-cp is down or the engine fails (preserves the legacy
60
+ * behaviour for operators with a stopped host-cp).
61
+ */
62
+ export const fetchWorldRuntimeStatus = (worldId, token) => new Promise((resolve) => {
63
+ const opts = {
64
+ host: '127.0.0.1',
65
+ port: HOST_CP_PORT,
66
+ path: `/v1/worlds/${encodeURIComponent(worldId)}/status`,
67
+ method: 'GET',
68
+ headers: { Authorization: `Bearer ${token}` },
69
+ timeout: 2_000,
70
+ };
71
+ const req = http.request(opts, (res) => {
72
+ if (res.statusCode !== 200) {
73
+ res.resume();
74
+ return resolve(null);
75
+ }
76
+ let body = '';
77
+ res.setEncoding('utf-8');
78
+ res.on('data', (c) => { body += c; });
79
+ res.on('end', () => {
80
+ try {
81
+ const parsed = parseRuntimeStatus(JSON.parse(body));
82
+ resolve(parsed);
83
+ }
84
+ catch {
85
+ resolve(null);
86
+ }
87
+ });
88
+ res.on('error', () => resolve(null));
89
+ });
90
+ req.on('error', () => resolve(null));
91
+ req.on('timeout', () => { req.destroy(); resolve(null); });
92
+ req.end();
93
+ });
21
94
  export async function getMachineStatus(_probe, _loadCtx, _readToken) {
22
95
  // Lazy-load the Docker-heavy modules only when not injected (prod path).
23
96
  const probe = _probe ?? (async () => {
@@ -78,6 +151,7 @@ export function registerStatus(program) {
78
151
  .description('Show status (machine status when no world given; world details with a world ID)')
79
152
  .argument('[world]', 'World ID — omit to show machine status')
80
153
  .option('--json', 'Output as JSON')
154
+ .option('--pretty', 'Render world status as a human-readable table (engine-aware view)')
81
155
  .action(async (worldId, opts) => {
82
156
  // ── Machine status (no world arg) ────────────────────────────
83
157
  if (!worldId) {
@@ -118,8 +192,22 @@ export function registerStatus(program) {
118
192
  }
119
193
  const cost = ctx.costTracker.getWorldCost(worldId);
120
194
  const dashboardUrl = `http://localhost:${19080 + world.portOffset}`;
195
+ // Fetch the engine-aware runtime status. host-cp may be down or the
196
+ // engine may not yet have a record of this world — both produce
197
+ // `null`, and we omit the runtime block from the output instead of
198
+ // failing. Preserves legacy behavior when offline.
199
+ const { readToken } = await import('./host-cp.js');
200
+ const token = readToken();
201
+ const runtime = token ? await fetchWorldRuntimeStatus(worldId, token) : null;
121
202
  if (opts.json) {
122
- console.log(JSON.stringify({ ...world, dashboardUrl, cost }, null, 2));
203
+ // Additive merge: existing world envelope stays as-is, runtime
204
+ // adds the 5 canonical fields under `runtime` for clear scope
205
+ // separation. Keeps existing --json consumers green (registry
206
+ // fields unchanged) while exposing the new engine-aware shape.
207
+ const payload = { ...world, dashboardUrl, cost };
208
+ if (runtime)
209
+ payload.runtime = runtime;
210
+ console.log(JSON.stringify(payload, null, 2));
123
211
  return;
124
212
  }
125
213
  printHeader(`${world.name} (${world.id})`);
@@ -140,6 +228,19 @@ export function registerStatus(program) {
140
228
  printInfo('Created', world.createdAt);
141
229
  printInfo('Uptime', formatAge(world.createdAt));
142
230
  printInfo('Updated', world.updatedAt);
231
+ if (runtime) {
232
+ // Engine-aware runtime block. Decision 17 canonical shape; no
233
+ // engine name in stdout (per S2 — operator UX is invariant).
234
+ printInfo('Runtime state', runtime.state);
235
+ printInfo('Ready replicas', String(runtime.ready_replicas));
236
+ printInfo('Restarts', String(runtime.restarts));
237
+ if (runtime.last_event_type) {
238
+ const ageSuffix = runtime.last_event_age_seconds != null
239
+ ? ` (${runtime.last_event_age_seconds}s ago)`
240
+ : '';
241
+ printInfo('Last event', `${runtime.last_event_type}${ageSuffix}`);
242
+ }
243
+ }
143
244
  });
144
245
  }
145
246
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * substrate-audit-log.ts — `olam substrate audit-log` subcommand.
3
+ *
4
+ * Phase 1b C3 of olam-host-suite-phase-1b-k3s-beta-flavour (plan
5
+ * ~/.claude/plans/olam-host-suite-phase-1b-k3s-beta-flavour.md).
6
+ *
7
+ * Decisions consumed:
8
+ * D19 — audit-log inspection subcommand ships in PR3 (not deferred).
9
+ *
10
+ * Reads `~/.olam/state/manifest-refresh-audit.jsonl` and renders entries.
11
+ *
12
+ * Subcommand: `olam substrate audit-log`
13
+ * (registered under the existing `substrate` parent command via registerSubstrate)
14
+ *
15
+ * Flags:
16
+ * --json Emit raw JSONL on stdout (one entry per line).
17
+ * --since <ISO-date> Filter entries with ts >= <ISO-date>.
18
+ * --limit <N> Max entries (default 50; applied AFTER --since filter).
19
+ *
20
+ * No force-overwrite power — read-only. Absent log file prints "no entries"
21
+ * without error (exit 0).
22
+ */
23
+ import type { Command } from 'commander';
24
+ import * as fs from 'node:fs';
25
+ export interface AuditLogDeps {
26
+ readonly auditLogPath?: string;
27
+ readonly stdout?: NodeJS.WritableStream;
28
+ readonly stderr?: NodeJS.WritableStream;
29
+ readonly readFileSync?: typeof fs.readFileSync;
30
+ readonly existsSync?: typeof fs.existsSync;
31
+ }
32
+ export interface AuditLogOpts {
33
+ readonly json?: boolean;
34
+ readonly since?: string;
35
+ readonly limit?: number | string;
36
+ }
37
+ /**
38
+ * Implementation of `olam substrate audit-log`. Exported for testability.
39
+ *
40
+ * @returns process exit code (0 = success, 1 = error)
41
+ */
42
+ export declare function handleAuditLog(opts: AuditLogOpts, deps?: AuditLogDeps): number;
43
+ /**
44
+ * Register `olam substrate audit-log` under the `substrate` parent command.
45
+ *
46
+ * Called from registerSubstrate() in substrate.ts.
47
+ */
48
+ export declare function registerSubstrateAuditLog(substrateCmdRef: Command): void;
49
+ //# sourceMappingURL=substrate-audit-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrate-audit-log.d.ts","sourceRoot":"","sources":["../../src/commands/substrate-audit-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AA2CD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE,YAAiB,GAAG,MAAM,CA2ElF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,CAkBxE"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * substrate-audit-log.ts — `olam substrate audit-log` subcommand.
3
+ *
4
+ * Phase 1b C3 of olam-host-suite-phase-1b-k3s-beta-flavour (plan
5
+ * ~/.claude/plans/olam-host-suite-phase-1b-k3s-beta-flavour.md).
6
+ *
7
+ * Decisions consumed:
8
+ * D19 — audit-log inspection subcommand ships in PR3 (not deferred).
9
+ *
10
+ * Reads `~/.olam/state/manifest-refresh-audit.jsonl` and renders entries.
11
+ *
12
+ * Subcommand: `olam substrate audit-log`
13
+ * (registered under the existing `substrate` parent command via registerSubstrate)
14
+ *
15
+ * Flags:
16
+ * --json Emit raw JSONL on stdout (one entry per line).
17
+ * --since <ISO-date> Filter entries with ts >= <ISO-date>.
18
+ * --limit <N> Max entries (default 50; applied AFTER --since filter).
19
+ *
20
+ * No force-overwrite power — read-only. Absent log file prints "no entries"
21
+ * without error (exit 0).
22
+ */
23
+ import * as fs from 'node:fs';
24
+ import pc from 'picocolors';
25
+ import { MANIFEST_REFRESH_AUDIT_LOG } from '../lib/manifest-refresh.js';
26
+ const DEFAULT_LIMIT = 50;
27
+ /**
28
+ * Parse the JSONL audit log file into entries. Skips malformed lines.
29
+ */
30
+ function parseAuditLog(raw) {
31
+ const lines = raw.split('\n').filter((l) => l.trim().length > 0);
32
+ const entries = [];
33
+ for (const line of lines) {
34
+ try {
35
+ const entry = JSON.parse(line);
36
+ entries.push(entry);
37
+ }
38
+ catch {
39
+ // Skip malformed lines silently.
40
+ }
41
+ }
42
+ return entries;
43
+ }
44
+ /**
45
+ * Format a single entry as a pretty-printed table row.
46
+ *
47
+ * Table columns: ts | security_regression | accepted | changed_fields
48
+ */
49
+ function formatEntryRow(entry, index) {
50
+ const ts = entry.ts ?? '(no timestamp)';
51
+ const regression = entry.security_regression ? pc.red('yes') : pc.green('no');
52
+ const accepted = entry.accepted ? pc.yellow('yes') : '—';
53
+ const fields = (entry.changed_fields ?? []).join(', ') || '—';
54
+ return ` ${String(index + 1).padStart(3)} ${ts} regression=${regression} accepted=${accepted} fields=[${fields}]`;
55
+ }
56
+ function formatHeader() {
57
+ return (` ${'#'.padStart(3)} ${'timestamp'.padEnd(27)} regression accepted fields\n` +
58
+ ` ${'─'.repeat(3)} ${'─'.repeat(27)} ${'─'.repeat(10)} ${'─'.repeat(8)} ${'─'.repeat(20)}`);
59
+ }
60
+ /**
61
+ * Implementation of `olam substrate audit-log`. Exported for testability.
62
+ *
63
+ * @returns process exit code (0 = success, 1 = error)
64
+ */
65
+ export function handleAuditLog(opts, deps = {}) {
66
+ const auditLogPath = deps.auditLogPath ?? MANIFEST_REFRESH_AUDIT_LOG;
67
+ const stdout = deps.stdout ?? process.stdout;
68
+ const stderr = deps.stderr ?? process.stderr;
69
+ const readFileSyncImpl = deps.readFileSync ?? fs.readFileSync;
70
+ const existsSyncImpl = deps.existsSync ?? fs.existsSync;
71
+ const rawLimit = opts.limit;
72
+ const limit = typeof rawLimit === 'number'
73
+ ? rawLimit
74
+ : typeof rawLimit === 'string'
75
+ ? Number.parseInt(rawLimit, 10)
76
+ : DEFAULT_LIMIT;
77
+ const effectiveLimit = Number.isFinite(limit) && limit > 0 ? limit : DEFAULT_LIMIT;
78
+ if (!existsSyncImpl(auditLogPath)) {
79
+ stdout.write('no entries\n');
80
+ return 0;
81
+ }
82
+ let raw;
83
+ try {
84
+ raw = readFileSyncImpl(auditLogPath, 'utf8');
85
+ }
86
+ catch (err) {
87
+ stderr.write(`${pc.red('error:')} could not read audit log at ${auditLogPath}: ${err instanceof Error ? err.message : String(err)}\n`);
88
+ return 1;
89
+ }
90
+ let entries = parseAuditLog(raw);
91
+ // --since filter
92
+ if (opts.since) {
93
+ const sinceMs = Date.parse(opts.since);
94
+ if (Number.isNaN(sinceMs)) {
95
+ stderr.write(`${pc.red('error:')} invalid --since date "${opts.since}". Expected ISO-8601 (e.g. 2026-05-20T00:00:00Z).\n`);
96
+ return 1;
97
+ }
98
+ entries = entries.filter((e) => {
99
+ const ts = Date.parse(e.ts ?? '');
100
+ return !Number.isNaN(ts) && ts >= sinceMs;
101
+ });
102
+ }
103
+ // --limit (applied after filter, from the END of the list — most recent N)
104
+ if (entries.length > effectiveLimit) {
105
+ entries = entries.slice(-effectiveLimit);
106
+ }
107
+ if (entries.length === 0) {
108
+ stdout.write('no entries\n');
109
+ return 0;
110
+ }
111
+ if (opts.json) {
112
+ for (const entry of entries) {
113
+ stdout.write(JSON.stringify(entry) + '\n');
114
+ }
115
+ return 0;
116
+ }
117
+ // Pretty-printed table.
118
+ stdout.write(formatHeader() + '\n');
119
+ entries.forEach((entry, i) => {
120
+ stdout.write(formatEntryRow(entry, i) + '\n');
121
+ });
122
+ stdout.write(`\n${entries.length} entr${entries.length === 1 ? 'y' : 'ies'} shown\n`);
123
+ return 0;
124
+ }
125
+ /**
126
+ * Register `olam substrate audit-log` under the `substrate` parent command.
127
+ *
128
+ * Called from registerSubstrate() in substrate.ts.
129
+ */
130
+ export function registerSubstrateAuditLog(substrateCmdRef) {
131
+ substrateCmdRef
132
+ .command('audit-log')
133
+ .description('Inspect the manifest-refresh audit log (~/.olam/state/manifest-refresh-audit.jsonl). ' +
134
+ 'Read-only. No force-overwrite power.')
135
+ .option('--json', 'Emit raw JSONL on stdout instead of a pretty table')
136
+ .option('--since <ISO-date>', 'Filter entries with timestamp >= <ISO-date>')
137
+ .option('--limit <N>', `Max entries to show (default ${DEFAULT_LIMIT})`)
138
+ .action((opts) => {
139
+ const code = handleAuditLog({
140
+ json: opts.json,
141
+ since: opts.since,
142
+ limit: opts.limit,
143
+ });
144
+ if (code !== 0)
145
+ process.exitCode = code;
146
+ });
147
+ }
148
+ //# sourceMappingURL=substrate-audit-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrate-audit-log.js","sourceRoot":"","sources":["../../src/commands/substrate-audit-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * olam substrate — Manage the operator-facing deployment substrate.
3
+ *
4
+ * Phase 1b A2 of olam-host-suite-phase-1b-k3s-beta-flavour (plan
5
+ * ~/.claude/plans/olam-host-suite-phase-1b-k3s-beta-flavour.md).
6
+ *
7
+ * Subcommands:
8
+ * olam substrate get — print active substrate (+ flavor + beta-expiry)
9
+ * olam substrate set <substrate> — switch to compose | kubernetes
10
+ *
11
+ * Decisions consumed:
12
+ * D1 — `~/.olam/config.json` schema-versioned seam (host.substrate)
13
+ * D2 — user-facing vocab is `compose | kubernetes` (NOT docker | k3s)
14
+ * D7 — telemetry is opt-in stdout-emission (stderr `OLAM_INSTR`)
15
+ * D21 — canonical instrumentation event schema (olam.instr.v1)
16
+ *
17
+ * Risk mitigations:
18
+ * T2 — pre-flight via `runDoctor` programmatically with `engine: <target>` override.
19
+ * Refuses with actionable remediation if prereqs fail.
20
+ * T3 — refuses if worlds exist on current substrate (operator must `olam destroy --all`).
21
+ *
22
+ * Beta-expiry date: 2026-11-16 (Phase 1b ship-date + 6 months per Falsifiable
23
+ * signal section; surfaced in `get` output so operators see the commitment).
24
+ */
25
+ import type { Command } from 'commander';
26
+ import { readConfig, writeConfig } from '../lib/config.js';
27
+ import { emitSubstrateSet } from '../lib/instrumentation.js';
28
+ import { type RunDoctorDeps } from './doctor.js';
29
+ export declare const BETA_EXPIRY_DATE: "2026-11-16";
30
+ type DoctorRunner = (opts: {
31
+ json?: boolean;
32
+ }, deps?: RunDoctorDeps) => Promise<{
33
+ exitCode: number;
34
+ }>;
35
+ type WorldsCounter = () => Promise<number>;
36
+ export type SubstrateDeps = {
37
+ readonly readConfig?: typeof readConfig;
38
+ readonly writeConfig?: typeof writeConfig;
39
+ readonly emit?: typeof emitSubstrateSet;
40
+ readonly runDoctor?: DoctorRunner;
41
+ readonly countWorlds?: WorldsCounter;
42
+ readonly stdout?: NodeJS.WritableStream;
43
+ readonly stderr?: NodeJS.WritableStream;
44
+ };
45
+ /**
46
+ * Implementation of `olam substrate get`. Reads the config + prints a single
47
+ * human-readable line. Exported for testability.
48
+ */
49
+ export declare function handleGet(deps?: SubstrateDeps): Promise<number>;
50
+ /**
51
+ * Implementation of `olam substrate set <substrate>`. Validates target, runs
52
+ * pre-flight via doctor with the target engine, refuses on worlds-exist OR
53
+ * doctor-fail, persists config, emits instrumentation. Exported for testability.
54
+ *
55
+ * Returns the desired process exit code (0 = success, 1 = refused/fail).
56
+ */
57
+ export declare function handleSet(target: string, deps?: SubstrateDeps): Promise<number>;
58
+ export declare function registerSubstrate(program: Command): void;
59
+ export {};
60
+ //# sourceMappingURL=substrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrate.d.ts","sourceRoot":"","sources":["../../src/commands/substrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5D,eAAO,MAAM,gBAAgB,EAAG,YAAqB,CAAC;AAEtD,KAAK,YAAY,GAAG,CAClB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACxB,IAAI,CAAC,EAAE,aAAa,KACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnC,KAAK,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CACzC,CAAC;AAiBF;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzE;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmGzF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiCxD"}