@pleri/olam-cli 0.1.69 → 0.1.72

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 (250) hide show
  1. package/dist/cli-version.d.ts +16 -0
  2. package/dist/cli-version.d.ts.map +1 -0
  3. package/dist/cli-version.js +39 -0
  4. package/dist/cli-version.js.map +1 -0
  5. package/dist/commands/create.d.ts.map +1 -1
  6. package/dist/commands/create.js +2 -0
  7. package/dist/commands/create.js.map +1 -1
  8. package/dist/commands/host-cp.d.ts.map +1 -1
  9. package/dist/commands/host-cp.js +10 -0
  10. package/dist/commands/host-cp.js.map +1 -1
  11. package/dist/commands/runbooks.d.ts +13 -0
  12. package/dist/commands/runbooks.d.ts.map +1 -0
  13. package/dist/commands/runbooks.js +189 -0
  14. package/dist/commands/runbooks.js.map +1 -0
  15. package/dist/commands/world-snapshot.d.ts +1 -0
  16. package/dist/commands/world-snapshot.d.ts.map +1 -1
  17. package/dist/commands/world-snapshot.js +126 -1
  18. package/dist/commands/world-snapshot.js.map +1 -1
  19. package/dist/commands/worldspec/compile.d.ts +20 -0
  20. package/dist/commands/worldspec/compile.d.ts.map +1 -0
  21. package/dist/commands/worldspec/compile.js +130 -0
  22. package/dist/commands/worldspec/compile.js.map +1 -0
  23. package/dist/commands/worldspec/index.d.ts +12 -0
  24. package/dist/commands/worldspec/index.d.ts.map +1 -0
  25. package/dist/commands/worldspec/index.js +23 -0
  26. package/dist/commands/worldspec/index.js.map +1 -0
  27. package/dist/commands/worldspec/init.d.ts +15 -0
  28. package/dist/commands/worldspec/init.d.ts.map +1 -0
  29. package/dist/commands/worldspec/init.js +166 -0
  30. package/dist/commands/worldspec/init.js.map +1 -0
  31. package/dist/commands/worldspec/schema.d.ts +11 -0
  32. package/dist/commands/worldspec/schema.d.ts.map +1 -0
  33. package/dist/commands/worldspec/schema.js +55 -0
  34. package/dist/commands/worldspec/schema.js.map +1 -0
  35. package/dist/commands/worldspec/validate.d.ts +15 -0
  36. package/dist/commands/worldspec/validate.d.ts.map +1 -0
  37. package/dist/commands/worldspec/validate.js +66 -0
  38. package/dist/commands/worldspec/validate.js.map +1 -0
  39. package/dist/exit-codes.d.ts +32 -0
  40. package/dist/exit-codes.d.ts.map +1 -1
  41. package/dist/exit-codes.js +32 -0
  42. package/dist/exit-codes.js.map +1 -1
  43. package/dist/image-digests.json +5 -5
  44. package/dist/index.js +4726 -1231
  45. package/dist/index.js.map +1 -1
  46. package/dist/mcp-server.js +1424 -321
  47. package/host-cp/compose.yaml +6 -0
  48. package/host-cp/src/global-config-source.mjs +71 -0
  49. package/host-cp/src/listening-server-poller.mjs +1 -1
  50. package/host-cp/src/plan-orchestrator.mjs +20 -1
  51. package/host-cp/src/port-bridge-manager.mjs +1 -1
  52. package/host-cp/src/server.mjs +46 -7
  53. package/host-cp/src/version-status.mjs +36 -0
  54. package/package.json +4 -2
  55. package/dist/__tests__/audit-publish-deps-contract.test.d.ts +0 -26
  56. package/dist/__tests__/audit-publish-deps-contract.test.d.ts.map +0 -1
  57. package/dist/__tests__/audit-publish-deps-contract.test.js +0 -86
  58. package/dist/__tests__/audit-publish-deps-contract.test.js.map +0 -1
  59. package/dist/__tests__/auth-status.test.d.ts +0 -2
  60. package/dist/__tests__/auth-status.test.d.ts.map +0 -1
  61. package/dist/__tests__/auth-status.test.js +0 -291
  62. package/dist/__tests__/auth-status.test.js.map +0 -1
  63. package/dist/__tests__/auth-upgrade.test.d.ts +0 -9
  64. package/dist/__tests__/auth-upgrade.test.d.ts.map +0 -1
  65. package/dist/__tests__/auth-upgrade.test.js +0 -397
  66. package/dist/__tests__/auth-upgrade.test.js.map +0 -1
  67. package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts +0 -22
  68. package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts.map +0 -1
  69. package/dist/__tests__/bootstrap-tag-mcp-auth.test.js +0 -63
  70. package/dist/__tests__/bootstrap-tag-mcp-auth.test.js.map +0 -1
  71. package/dist/__tests__/cli-mcp-revoke.test.d.ts +0 -8
  72. package/dist/__tests__/cli-mcp-revoke.test.d.ts.map +0 -1
  73. package/dist/__tests__/cli-mcp-revoke.test.js +0 -124
  74. package/dist/__tests__/cli-mcp-revoke.test.js.map +0 -1
  75. package/dist/__tests__/config.test.d.ts +0 -2
  76. package/dist/__tests__/config.test.d.ts.map +0 -1
  77. package/dist/__tests__/config.test.js +0 -95
  78. package/dist/__tests__/config.test.js.map +0 -1
  79. package/dist/__tests__/create-app-urls.test.d.ts +0 -2
  80. package/dist/__tests__/create-app-urls.test.d.ts.map +0 -1
  81. package/dist/__tests__/create-app-urls.test.js +0 -102
  82. package/dist/__tests__/create-app-urls.test.js.map +0 -1
  83. package/dist/__tests__/docker-host.test.d.ts +0 -14
  84. package/dist/__tests__/docker-host.test.d.ts.map +0 -1
  85. package/dist/__tests__/docker-host.test.js +0 -109
  86. package/dist/__tests__/docker-host.test.js.map +0 -1
  87. package/dist/__tests__/enter.test.d.ts +0 -2
  88. package/dist/__tests__/enter.test.d.ts.map +0 -1
  89. package/dist/__tests__/enter.test.js +0 -90
  90. package/dist/__tests__/enter.test.js.map +0 -1
  91. package/dist/__tests__/help-output.test.d.ts +0 -2
  92. package/dist/__tests__/help-output.test.d.ts.map +0 -1
  93. package/dist/__tests__/help-output.test.js +0 -74
  94. package/dist/__tests__/help-output.test.js.map +0 -1
  95. package/dist/__tests__/host-cp-gh-token.test.d.ts +0 -9
  96. package/dist/__tests__/host-cp-gh-token.test.d.ts.map +0 -1
  97. package/dist/__tests__/host-cp-gh-token.test.js +0 -119
  98. package/dist/__tests__/host-cp-gh-token.test.js.map +0 -1
  99. package/dist/__tests__/host-cp.test.d.ts +0 -9
  100. package/dist/__tests__/host-cp.test.d.ts.map +0 -1
  101. package/dist/__tests__/host-cp.test.js +0 -327
  102. package/dist/__tests__/host-cp.test.js.map +0 -1
  103. package/dist/__tests__/image-presence.test.d.ts +0 -2
  104. package/dist/__tests__/image-presence.test.d.ts.map +0 -1
  105. package/dist/__tests__/image-presence.test.js +0 -44
  106. package/dist/__tests__/image-presence.test.js.map +0 -1
  107. package/dist/__tests__/install-root.test.d.ts +0 -2
  108. package/dist/__tests__/install-root.test.d.ts.map +0 -1
  109. package/dist/__tests__/install-root.test.js +0 -119
  110. package/dist/__tests__/install-root.test.js.map +0 -1
  111. package/dist/__tests__/keys.test.d.ts +0 -9
  112. package/dist/__tests__/keys.test.d.ts.map +0 -1
  113. package/dist/__tests__/keys.test.js +0 -145
  114. package/dist/__tests__/keys.test.js.map +0 -1
  115. package/dist/__tests__/logs.test.d.ts +0 -9
  116. package/dist/__tests__/logs.test.d.ts.map +0 -1
  117. package/dist/__tests__/logs.test.js +0 -124
  118. package/dist/__tests__/logs.test.js.map +0 -1
  119. package/dist/__tests__/mcp-import.test.d.ts +0 -11
  120. package/dist/__tests__/mcp-import.test.d.ts.map +0 -1
  121. package/dist/__tests__/mcp-import.test.js +0 -134
  122. package/dist/__tests__/mcp-import.test.js.map +0 -1
  123. package/dist/__tests__/protocol-version.test.d.ts +0 -2
  124. package/dist/__tests__/protocol-version.test.d.ts.map +0 -1
  125. package/dist/__tests__/protocol-version.test.js +0 -170
  126. package/dist/__tests__/protocol-version.test.js.map +0 -1
  127. package/dist/__tests__/ps.test.d.ts +0 -2
  128. package/dist/__tests__/ps.test.d.ts.map +0 -1
  129. package/dist/__tests__/ps.test.js +0 -172
  130. package/dist/__tests__/ps.test.js.map +0 -1
  131. package/dist/__tests__/registry-allowlist.test.d.ts +0 -2
  132. package/dist/__tests__/registry-allowlist.test.d.ts.map +0 -1
  133. package/dist/__tests__/registry-allowlist.test.js +0 -129
  134. package/dist/__tests__/registry-allowlist.test.js.map +0 -1
  135. package/dist/__tests__/services.test.d.ts +0 -8
  136. package/dist/__tests__/services.test.d.ts.map +0 -1
  137. package/dist/__tests__/services.test.js +0 -185
  138. package/dist/__tests__/services.test.js.map +0 -1
  139. package/dist/__tests__/status-app-urls.test.d.ts +0 -2
  140. package/dist/__tests__/status-app-urls.test.d.ts.map +0 -1
  141. package/dist/__tests__/status-app-urls.test.js +0 -125
  142. package/dist/__tests__/status-app-urls.test.js.map +0 -1
  143. package/dist/__tests__/upgrade-gh-token-contract.test.d.ts +0 -19
  144. package/dist/__tests__/upgrade-gh-token-contract.test.d.ts.map +0 -1
  145. package/dist/__tests__/upgrade-gh-token-contract.test.js +0 -63
  146. package/dist/__tests__/upgrade-gh-token-contract.test.js.map +0 -1
  147. package/dist/__tests__/upgrade.test.d.ts +0 -9
  148. package/dist/__tests__/upgrade.test.d.ts.map +0 -1
  149. package/dist/__tests__/upgrade.test.js +0 -586
  150. package/dist/__tests__/upgrade.test.js.map +0 -1
  151. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts +0 -6
  152. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts.map +0 -1
  153. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js +0 -26
  154. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js.map +0 -1
  155. package/dist/commands/__tests__/begin.test.d.ts +0 -7
  156. package/dist/commands/__tests__/begin.test.d.ts.map +0 -1
  157. package/dist/commands/__tests__/begin.test.js +0 -72
  158. package/dist/commands/__tests__/begin.test.js.map +0 -1
  159. package/dist/commands/__tests__/bootstrap.test.d.ts +0 -2
  160. package/dist/commands/__tests__/bootstrap.test.d.ts.map +0 -1
  161. package/dist/commands/__tests__/bootstrap.test.js +0 -370
  162. package/dist/commands/__tests__/bootstrap.test.js.map +0 -1
  163. package/dist/commands/__tests__/carry-uncommitted.test.d.ts +0 -14
  164. package/dist/commands/__tests__/carry-uncommitted.test.d.ts.map +0 -1
  165. package/dist/commands/__tests__/carry-uncommitted.test.js +0 -83
  166. package/dist/commands/__tests__/carry-uncommitted.test.js.map +0 -1
  167. package/dist/commands/__tests__/clean.test.d.ts +0 -9
  168. package/dist/commands/__tests__/clean.test.d.ts.map +0 -1
  169. package/dist/commands/__tests__/clean.test.js +0 -105
  170. package/dist/commands/__tests__/clean.test.js.map +0 -1
  171. package/dist/commands/__tests__/crystallize.test.d.ts +0 -2
  172. package/dist/commands/__tests__/crystallize.test.d.ts.map +0 -1
  173. package/dist/commands/__tests__/crystallize.test.js +0 -133
  174. package/dist/commands/__tests__/crystallize.test.js.map +0 -1
  175. package/dist/commands/__tests__/diagnose.test.d.ts +0 -9
  176. package/dist/commands/__tests__/diagnose.test.d.ts.map +0 -1
  177. package/dist/commands/__tests__/diagnose.test.js +0 -108
  178. package/dist/commands/__tests__/diagnose.test.js.map +0 -1
  179. package/dist/commands/__tests__/openHostCpUrl.test.d.ts +0 -2
  180. package/dist/commands/__tests__/openHostCpUrl.test.d.ts.map +0 -1
  181. package/dist/commands/__tests__/openHostCpUrl.test.js +0 -63
  182. package/dist/commands/__tests__/openHostCpUrl.test.js.map +0 -1
  183. package/dist/commands/__tests__/refresh.test.d.ts +0 -13
  184. package/dist/commands/__tests__/refresh.test.d.ts.map +0 -1
  185. package/dist/commands/__tests__/refresh.test.js +0 -170
  186. package/dist/commands/__tests__/refresh.test.js.map +0 -1
  187. package/dist/commands/__tests__/status.test.d.ts +0 -8
  188. package/dist/commands/__tests__/status.test.d.ts.map +0 -1
  189. package/dist/commands/__tests__/status.test.js +0 -62
  190. package/dist/commands/__tests__/status.test.js.map +0 -1
  191. package/dist/commands/__tests__/stop.test.d.ts +0 -5
  192. package/dist/commands/__tests__/stop.test.d.ts.map +0 -1
  193. package/dist/commands/__tests__/stop.test.js +0 -30
  194. package/dist/commands/__tests__/stop.test.js.map +0 -1
  195. package/dist/commands/__tests__/update.test.d.ts +0 -7
  196. package/dist/commands/__tests__/update.test.d.ts.map +0 -1
  197. package/dist/commands/__tests__/update.test.js +0 -224
  198. package/dist/commands/__tests__/update.test.js.map +0 -1
  199. package/dist/commands/__tests__/upgrade.all-three.test.d.ts +0 -19
  200. package/dist/commands/__tests__/upgrade.all-three.test.d.ts.map +0 -1
  201. package/dist/commands/__tests__/upgrade.all-three.test.js +0 -80
  202. package/dist/commands/__tests__/upgrade.all-three.test.js.map +0 -1
  203. package/dist/commands/__tests__/upgrade.compose-path.test.d.ts +0 -20
  204. package/dist/commands/__tests__/upgrade.compose-path.test.d.ts.map +0 -1
  205. package/dist/commands/__tests__/upgrade.compose-path.test.js +0 -140
  206. package/dist/commands/__tests__/upgrade.compose-path.test.js.map +0 -1
  207. package/dist/commands/__tests__/upgrade.history.test.d.ts +0 -15
  208. package/dist/commands/__tests__/upgrade.history.test.d.ts.map +0 -1
  209. package/dist/commands/__tests__/upgrade.history.test.js +0 -199
  210. package/dist/commands/__tests__/upgrade.history.test.js.map +0 -1
  211. package/dist/commands/__tests__/upgrade.lock.test.d.ts +0 -15
  212. package/dist/commands/__tests__/upgrade.lock.test.d.ts.map +0 -1
  213. package/dist/commands/__tests__/upgrade.lock.test.js +0 -253
  214. package/dist/commands/__tests__/upgrade.lock.test.js.map +0 -1
  215. package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts +0 -21
  216. package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts.map +0 -1
  217. package/dist/commands/__tests__/upgrade.olam-tag.test.js +0 -114
  218. package/dist/commands/__tests__/upgrade.olam-tag.test.js.map +0 -1
  219. package/dist/commands/__tests__/upgrade.poll.test.d.ts +0 -14
  220. package/dist/commands/__tests__/upgrade.poll.test.d.ts.map +0 -1
  221. package/dist/commands/__tests__/upgrade.poll.test.js +0 -136
  222. package/dist/commands/__tests__/upgrade.poll.test.js.map +0 -1
  223. package/dist/commands/__tests__/upgrade.recreate.test.d.ts +0 -17
  224. package/dist/commands/__tests__/upgrade.recreate.test.d.ts.map +0 -1
  225. package/dist/commands/__tests__/upgrade.recreate.test.js +0 -83
  226. package/dist/commands/__tests__/upgrade.recreate.test.js.map +0 -1
  227. package/dist/commands/__tests__/upgrade.rollback.test.d.ts +0 -12
  228. package/dist/commands/__tests__/upgrade.rollback.test.d.ts.map +0 -1
  229. package/dist/commands/__tests__/upgrade.rollback.test.js +0 -255
  230. package/dist/commands/__tests__/upgrade.rollback.test.js.map +0 -1
  231. package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts +0 -12
  232. package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts.map +0 -1
  233. package/dist/commands/__tests__/upgrade.sha-capture.test.js +0 -63
  234. package/dist/commands/__tests__/upgrade.sha-capture.test.js.map +0 -1
  235. package/dist/commands/__tests__/upgrade.smoke.test.d.ts +0 -19
  236. package/dist/commands/__tests__/upgrade.smoke.test.d.ts.map +0 -1
  237. package/dist/commands/__tests__/upgrade.smoke.test.js +0 -87
  238. package/dist/commands/__tests__/upgrade.smoke.test.js.map +0 -1
  239. package/dist/commands/__tests__/upgrade.swap.test.d.ts +0 -19
  240. package/dist/commands/__tests__/upgrade.swap.test.d.ts.map +0 -1
  241. package/dist/commands/__tests__/upgrade.swap.test.js +0 -312
  242. package/dist/commands/__tests__/upgrade.swap.test.js.map +0 -1
  243. package/dist/commands/__tests__/world-upgrade.test.d.ts +0 -8
  244. package/dist/commands/__tests__/world-upgrade.test.d.ts.map +0 -1
  245. package/dist/commands/__tests__/world-upgrade.test.js +0 -73
  246. package/dist/commands/__tests__/world-upgrade.test.js.map +0 -1
  247. package/dist/lib/__tests__/symlink-reconcile.test.d.ts +0 -2
  248. package/dist/lib/__tests__/symlink-reconcile.test.d.ts.map +0 -1
  249. package/dist/lib/__tests__/symlink-reconcile.test.js +0 -106
  250. package/dist/lib/__tests__/symlink-reconcile.test.js.map +0 -1
@@ -17,10 +17,61 @@ import * as fs from 'node:fs';
17
17
  import * as path from 'node:path';
18
18
  import { execSync } from 'node:child_process';
19
19
  import pc from 'picocolors';
20
- import { computeGemsFingerprint, computeNodeFingerprint, computePgFingerprint, packTarball, snapshotTarPath, writeManifest, listSnapshots, } from '@olam/core/src/world/snapshot.js';
20
+ import { computeGemsFingerprint, computeNodeFingerprint, computePgFingerprint, evictOldSnapshotsWithFlock, listSnapshots, packTarball, snapshotsDir, snapshotTarPath, writeManifest, } from '@olam/core/src/world/snapshot.js';
21
21
  import { printError, printSuccess, printWarning, printHeader } from '../output.js';
22
22
  import { getOrCreateWorldCommand } from './world.js';
23
23
  // ---------------------------------------------------------------------------
24
+ // Phase D D1 — deprecation warning + local counter
25
+ //
26
+ // The world-snapshot CLI is being phased out (Phase 1 warm-create now
27
+ // auto-captures + auto-restores). This helper emits a structured stderr
28
+ // warning + increments a local counter at ~/.olam/snapshots/.deprecation-
29
+ // counter (mode 0600). Counter is NEVER transmitted; it's local-only
30
+ // telemetry to inform the post-1.5 deletion follow-on plan.
31
+ //
32
+ // Per umbrella plan Phase 1.5 + D22 (≥1-operator-surfaces-any-usage gate
33
+ // before deletion): if an operator runs the CLI even once during the
34
+ // 30-day Slack monitoring window, the deletion follow-on plan is
35
+ // HALTED and we re-investigate.
36
+ //
37
+ // Internal callers (e.g. `spawnAutoCapture` in
38
+ // packages/core/src/world/snapshot.ts) set `OLAM_INTERNAL_SNAPSHOT=1`
39
+ // on the spawn env. The warning still emits to stderr (suppressed by
40
+ // stdio: 'ignore' on the parent side), but the counter does NOT
41
+ // increment — see CP3 review HIGH finding (counter inflation breaks
42
+ // D22 signal integrity). Only operator-driven invocations bump the
43
+ // counter.
44
+ // ---------------------------------------------------------------------------
45
+ const DEPRECATION_WARNING_PREFIX = '[deprecated]';
46
+ const INTERNAL_SENTINEL_ENV = 'OLAM_INTERNAL_SNAPSHOT';
47
+ export function emitDeprecationWarning(subcommand) {
48
+ process.stderr.write(`${DEPRECATION_WARNING_PREFIX} \`olam world snapshot ${subcommand}\` is being phased out — Phase 1 warm-create now restores snapshots automatically on world-create. This CLI will be removed in a future release. See ~/.claude/plans/olam-3-org-fatbox-runtime.md § Phase 1.5 for context.\n`);
49
+ bumpDeprecationCounter();
50
+ }
51
+ function bumpDeprecationCounter() {
52
+ // Internal-call sentinel — set by spawnAutoCapture in
53
+ // packages/core/src/world/snapshot.ts. Skipping the bump preserves
54
+ // D22's signal integrity (the counter measures operator-driven
55
+ // invocations, not auto-capture-triggered ones).
56
+ if (process.env[INTERNAL_SENTINEL_ENV] === '1')
57
+ return;
58
+ const counterPath = path.join(snapshotsDir(), '.deprecation-counter');
59
+ try {
60
+ fs.mkdirSync(path.dirname(counterPath), { recursive: true });
61
+ let current = 0;
62
+ if (fs.existsSync(counterPath)) {
63
+ const raw = fs.readFileSync(counterPath, 'utf-8').trim();
64
+ const parsed = parseInt(raw, 10);
65
+ if (Number.isInteger(parsed) && parsed >= 0)
66
+ current = parsed;
67
+ }
68
+ fs.writeFileSync(counterPath, String(current + 1), { mode: 0o600 });
69
+ }
70
+ catch {
71
+ // Best-effort: a telemetry counter must NEVER block or fail the CLI.
72
+ }
73
+ }
74
+ // ---------------------------------------------------------------------------
24
75
  // Registration
25
76
  // ---------------------------------------------------------------------------
26
77
  export function registerWorldSnapshot(program) {
@@ -44,11 +95,22 @@ export function registerWorldSnapshot(program) {
44
95
  .action((opts) => {
45
96
  handleList(opts.world);
46
97
  });
98
+ // ── evict ─────────────────────────────────────────────────────────────────
99
+ // Phase C C9: per-host flocked LRU eviction with --dry-run preview.
100
+ snapshot
101
+ .command('evict')
102
+ .description('Evict oldest snapshots until total size ≤ cap (default 5GB; override via OLAM_SNAPSHOT_MAX_BYTES)')
103
+ .option('--max-bytes <N>', 'Cap in bytes (default: $OLAM_SNAPSHOT_MAX_BYTES or 5GB)')
104
+ .option('--dry-run', 'List what would be evicted; do not delete', false)
105
+ .action(async (opts) => {
106
+ await handleEvict({ maxBytes: opts.maxBytes, dryRun: !!opts.dryRun });
107
+ });
47
108
  }
48
109
  // ---------------------------------------------------------------------------
49
110
  // create handler
50
111
  // ---------------------------------------------------------------------------
51
112
  async function handleCreate(worldId, kindArg) {
113
+ emitDeprecationWarning('create');
52
114
  const kinds = resolveKinds(kindArg);
53
115
  if (kinds.length === 0) {
54
116
  printError(`Unknown --kind "${kindArg}". Use: gems, node, pg, or all.`);
@@ -258,7 +320,70 @@ async function capturePg(worldId, workspacePath, repoNames) {
258
320
  // ---------------------------------------------------------------------------
259
321
  // list handler
260
322
  // ---------------------------------------------------------------------------
323
+ // ---------------------------------------------------------------------------
324
+ // evict handler (Phase C C9)
325
+ // ---------------------------------------------------------------------------
326
+ async function handleEvict(opts) {
327
+ const cap = opts.maxBytes
328
+ ? parseInt(opts.maxBytes, 10)
329
+ : parseInt(process.env['OLAM_SNAPSHOT_MAX_BYTES'] ?? '', 10);
330
+ const maxBytes = Number.isInteger(cap) && cap > 0 ? cap : 5 * 1024 * 1024 * 1024;
331
+ if (opts.dryRun) {
332
+ // Walk the snapshot dir, sort oldest-first, simulate eviction.
333
+ const root = snapshotsDir();
334
+ if (!fs.existsSync(root)) {
335
+ console.log(pc.dim('No snapshot dir; nothing to evict.'));
336
+ return;
337
+ }
338
+ const allTars = [];
339
+ const walk = (d) => {
340
+ for (const entry of fs.readdirSync(d, { withFileTypes: true })) {
341
+ const full = path.join(d, entry.name);
342
+ if (entry.isDirectory()) {
343
+ walk(full);
344
+ }
345
+ else if (entry.name.endsWith('.tar.gz')) {
346
+ const stat = fs.statSync(full);
347
+ allTars.push({ path: full, size: stat.size, mtime: stat.mtimeMs });
348
+ }
349
+ }
350
+ };
351
+ walk(root);
352
+ const total = allTars.reduce((a, t) => a + t.size, 0);
353
+ if (total <= maxBytes) {
354
+ console.log(`${formatBytes(total)} total ≤ ${formatBytes(maxBytes)} cap; nothing to evict.`);
355
+ return;
356
+ }
357
+ allTars.sort((a, b) => a.mtime - b.mtime);
358
+ const toEvict = [];
359
+ let remaining = total;
360
+ for (const t of allTars) {
361
+ if (remaining <= maxBytes)
362
+ break;
363
+ toEvict.push(t);
364
+ remaining -= t.size;
365
+ }
366
+ printHeader(`Would evict ${toEvict.length} snapshot(s) (${formatBytes(total - remaining)})`);
367
+ console.log();
368
+ for (const t of toEvict) {
369
+ const age = formatAge(Date.now() - t.mtime);
370
+ console.log(` ${pc.dim(formatBytes(t.size).padStart(8))} ${age.padStart(10)} ${t.path}`);
371
+ }
372
+ console.log();
373
+ console.log(pc.dim(`Total after eviction: ${formatBytes(remaining)} (cap: ${formatBytes(maxBytes)})`));
374
+ return;
375
+ }
376
+ // Live eviction with flock.
377
+ const freed = evictOldSnapshotsWithFlock(maxBytes);
378
+ if (freed > 0) {
379
+ printSuccess(`Evicted ${formatBytes(freed)} (cap: ${formatBytes(maxBytes)})`);
380
+ }
381
+ else {
382
+ console.log(pc.dim('No eviction needed (or another process held the lock).'));
383
+ }
384
+ }
261
385
  function handleList(worldIdFilter) {
386
+ emitDeprecationWarning('list');
262
387
  const entries = listSnapshots(worldIdFilter);
263
388
  if (entries.length === 0) {
264
389
  const where = worldIdFilter ? ` for world "${worldIdFilter}"` : '';
@@ -1 +1 @@
1
- {"version":3,"file":"world-snapshot.js","sourceRoot":"","sources":["../../src/commands/world-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"world-snapshot.js","sourceRoot":"","sources":["../../src/commands/world-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `olam worldspec compile <path>... [--out <dir>] [--no-digests]` —
3
+ * compile one or more worldspec YAMLs into a deterministic execution-
4
+ * graph.json + lockfile.json. v1 SEAM contract per Decision #9.
5
+ *
6
+ * Multiple paths layer in argument order (later overrides earlier);
7
+ * matches plan body's "per-project default + orchestrator (highest
8
+ * priority) + task-level overrides" pattern.
9
+ *
10
+ * `--no-digests` skips Docker subprocess invocations (writes <digest-
11
+ * pending> sentinels). Useful for: dry-run validation, CI environments
12
+ * where Docker isn't available, deterministic-output tests.
13
+ *
14
+ * Defaults output to `./compiled/{execution-graph,lockfile}.json` if
15
+ * --out is provided; otherwise prints execution-graph to stdout (for
16
+ * piping / inspection).
17
+ */
18
+ import type { Command } from 'commander';
19
+ export declare function registerWorldspecCompile(parent: Command): void;
20
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/commands/worldspec/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BzC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0H9D"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * `olam worldspec compile <path>... [--out <dir>] [--no-digests]` —
3
+ * compile one or more worldspec YAMLs into a deterministic execution-
4
+ * graph.json + lockfile.json. v1 SEAM contract per Decision #9.
5
+ *
6
+ * Multiple paths layer in argument order (later overrides earlier);
7
+ * matches plan body's "per-project default + orchestrator (highest
8
+ * priority) + task-level overrides" pattern.
9
+ *
10
+ * `--no-digests` skips Docker subprocess invocations (writes <digest-
11
+ * pending> sentinels). Useful for: dry-run validation, CI environments
12
+ * where Docker isn't available, deterministic-output tests.
13
+ *
14
+ * Defaults output to `./compiled/{execution-graph,lockfile}.json` if
15
+ * --out is provided; otherwise prints execution-graph to stdout (for
16
+ * piping / inspection).
17
+ */
18
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
19
+ import { resolve as resolvePath } from 'node:path';
20
+ import YAML from 'yaml';
21
+ import { canonicalStringify, compileWorldspec, dockerDigestResolver, resolveDigests, WorldspecSchema, } from '@olam/core/src/worldspec/index.js';
22
+ import { EXIT_DIGEST_UNRESOLVED, EXIT_GENERIC_ERROR, EXIT_WORLDSPEC_FILE_NOT_FOUND, EXIT_WORLDSPEC_INVALID, } from '../../exit-codes.js';
23
+ import { printError, printSuccess } from '../../output.js';
24
+ export function registerWorldspecCompile(parent) {
25
+ parent
26
+ .command('compile <path...>')
27
+ .description('Compile worldspec YAMLs into a deterministic execution-graph + lockfile')
28
+ .option('--out <dir>', 'Write artifacts to <dir>/{execution-graph,lockfile}.json')
29
+ .option('--no-digests', 'Skip Docker digest resolution (emits <digest-pending> sentinels)')
30
+ .option('--allow-pending-digests', 'Continue with <digest-pending> sentinels if Docker digest resolution fails (CI / dry-run); without this flag, digest failure exits 23 to preserve Decision #13 fail-fast invariant', false)
31
+ .action(async (paths, opts) => {
32
+ // Step 1: load + validate each worldspec
33
+ const specs = [];
34
+ const sourcePolicies = [];
35
+ for (const p of paths) {
36
+ const abs = resolvePath(process.cwd(), p);
37
+ if (!existsSync(abs)) {
38
+ printError(`worldspec not found at ${abs}`);
39
+ process.exit(EXIT_WORLDSPEC_FILE_NOT_FOUND);
40
+ }
41
+ let yaml;
42
+ try {
43
+ yaml = YAML.parse(readFileSync(abs, 'utf8'));
44
+ }
45
+ catch (err) {
46
+ printError(`${p}: YAML parse error: ${err.message}`);
47
+ process.exit(EXIT_WORLDSPEC_INVALID);
48
+ }
49
+ const parsed = WorldspecSchema.safeParse(yaml);
50
+ if (!parsed.success) {
51
+ printError(`${p}: schema violation — run 'olam worldspec validate ${p}' for details`);
52
+ process.exit(EXIT_WORLDSPEC_INVALID);
53
+ }
54
+ specs.push(parsed.data);
55
+ sourcePolicies.push(p);
56
+ }
57
+ // Step 2: read package version (compilerVersion in execution-graph)
58
+ const compilerVersion = `@pleri/olam-cli@${getPkgVersion()}`;
59
+ // Step 3: compile (synchronous; <50ms target)
60
+ let result;
61
+ try {
62
+ result = compileWorldspec(specs, {
63
+ compilerVersion,
64
+ sourcePolicies,
65
+ });
66
+ }
67
+ catch (err) {
68
+ printError(`compile failed: ${err.message}`);
69
+ process.exit(EXIT_GENERIC_ERROR);
70
+ }
71
+ // Step 4: optionally resolve digests via Docker.
72
+ // MEDIUM fix (A6 CP3 2026-05-09): default behaviour now FAILS FAST
73
+ // when digest resolution fails. Decision #13 says lockfile records
74
+ // sha256 for fail-fast at world-spawn; silently committing
75
+ // <digest-pending> regresses that invariant. Operators who want
76
+ // dry-run / no-Docker CI explicitly opt in via --allow-pending-digests.
77
+ let lockfile = result.lockfile;
78
+ if (opts.digests !== false) {
79
+ try {
80
+ lockfile = await resolveDigests(lockfile, dockerDigestResolver);
81
+ }
82
+ catch (err) {
83
+ if (opts.allowPendingDigests) {
84
+ process.stderr.write(`warn: digest resolution failed (${err.message}); ` +
85
+ `lockfile will contain <digest-pending> sentinels per --allow-pending-digests. ` +
86
+ `Re-compile with Docker reachable to populate digests before relying on world-spawn fail-fast.\n`);
87
+ }
88
+ else {
89
+ printError(`digest resolution failed: ${err.message}\n` +
90
+ `Lockfile cannot fail-fast on tampered images without sha256 records (Decision #13).\n` +
91
+ `Resolutions:\n` +
92
+ ` • Ensure Docker is running + image is locally present (\`docker pull\`)\n` +
93
+ ` • Or pass --allow-pending-digests to opt INTO <digest-pending> sentinels (CI / dry-run)\n` +
94
+ ` • Or pass --no-digests to skip resolution entirely`);
95
+ process.exit(EXIT_DIGEST_UNRESOLVED);
96
+ }
97
+ }
98
+ }
99
+ // Step 5: emit
100
+ const graphJson = canonicalStringify(result.executionGraph);
101
+ const lockfileJson = canonicalStringify(lockfile);
102
+ if (opts.out) {
103
+ const outDir = resolvePath(process.cwd(), opts.out);
104
+ try {
105
+ mkdirSync(outDir, { recursive: true });
106
+ writeFileSync(resolvePath(outDir, 'execution-graph.json'), graphJson, 'utf8');
107
+ writeFileSync(resolvePath(outDir, 'lockfile.json'), lockfileJson, 'utf8');
108
+ printSuccess(`wrote execution-graph + lockfile to ${outDir}`);
109
+ }
110
+ catch (err) {
111
+ printError(`failed to write ${outDir}: ${err.message}`);
112
+ process.exit(EXIT_GENERIC_ERROR);
113
+ }
114
+ }
115
+ else {
116
+ // Stdout: just the execution-graph (lockfile suppressed; use --out for both)
117
+ process.stdout.write(graphJson);
118
+ }
119
+ process.exit(0);
120
+ });
121
+ }
122
+ function getPkgVersion() {
123
+ // v1: static fallback. The CLI's actual version comes from its
124
+ // package.json at publish time; for execution-graph.compilerVersion
125
+ // the static value is sufficient (deterministic-output tests need a
126
+ // stable version string anyway). Phase B may wire dynamic version
127
+ // injection at bundle time.
128
+ return '0.2.0';
129
+ }
130
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../src/commands/worldspec/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `olam worldspec` parent command — registers `validate`, `schema`, `init`
3
+ * subcommands. v1 catalogue. Future subcommands (e.g., `olam worldspec
4
+ * compile`) will register here.
5
+ *
6
+ * Co-exists with the existing `olam policy-check` subcommand (PR-time
7
+ * `.md` policy enforcement). Decision #10: namespace separation, not
8
+ * shared. Both surfaces remain after v1 ships.
9
+ */
10
+ import type { Command } from 'commander';
11
+ export declare function registerWorldspec(program: Command): void;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/worldspec/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAWxD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `olam worldspec` parent command — registers `validate`, `schema`, `init`
3
+ * subcommands. v1 catalogue. Future subcommands (e.g., `olam worldspec
4
+ * compile`) will register here.
5
+ *
6
+ * Co-exists with the existing `olam policy-check` subcommand (PR-time
7
+ * `.md` policy enforcement). Decision #10: namespace separation, not
8
+ * shared. Both surfaces remain after v1 ships.
9
+ */
10
+ import { registerWorldspecCompile } from './compile.js';
11
+ import { registerWorldspecInit } from './init.js';
12
+ import { registerWorldspecSchema } from './schema.js';
13
+ import { registerWorldspecValidate } from './validate.js';
14
+ export function registerWorldspec(program) {
15
+ const worldspec = program
16
+ .command('worldspec')
17
+ .description('Author + validate + compile .olam/worldspecs/*.yaml — declarative dev-environment contracts');
18
+ registerWorldspecValidate(worldspec);
19
+ registerWorldspecSchema(worldspec);
20
+ registerWorldspecInit(worldspec);
21
+ registerWorldspecCompile(worldspec);
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/worldspec/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CACV,6FAA6F,CAC9F,CAAC;IAEJ,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACrC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACnC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `olam worldspec init [--from-adb-yaml]` — scaffold a `default.yaml`
3
+ * worldspec in the current repo. Detects project shape from existing
4
+ * files (package.json / Gemfile / .ruby-version / .adb.yaml) and seeds
5
+ * sensible capability defaults.
6
+ *
7
+ * Output: `<cwd>/.olam/worldspecs/default.yaml`
8
+ *
9
+ * Idempotent: refuses to overwrite an existing file unless `--force`.
10
+ * Emits a clear next-step UX line on success (closes Decision-#11
11
+ * onboarding banner gap surfaced in plan body).
12
+ */
13
+ import type { Command } from 'commander';
14
+ export declare function registerWorldspecInit(parent: Command): void;
15
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/worldspec/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAyE3D"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * `olam worldspec init [--from-adb-yaml]` — scaffold a `default.yaml`
3
+ * worldspec in the current repo. Detects project shape from existing
4
+ * files (package.json / Gemfile / .ruby-version / .adb.yaml) and seeds
5
+ * sensible capability defaults.
6
+ *
7
+ * Output: `<cwd>/.olam/worldspecs/default.yaml`
8
+ *
9
+ * Idempotent: refuses to overwrite an existing file unless `--force`.
10
+ * Emits a clear next-step UX line on success (closes Decision-#11
11
+ * onboarding banner gap surfaced in plan body).
12
+ */
13
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
14
+ import { execSync } from 'node:child_process';
15
+ import { basename, dirname, resolve as resolvePath } from 'node:path';
16
+ import { EXIT_GENERIC_ERROR, EXIT_WORLDSPEC_EXISTS, } from '../../exit-codes.js';
17
+ import { printError, printSuccess } from '../../output.js';
18
+ export function registerWorldspecInit(parent) {
19
+ parent
20
+ .command('init')
21
+ .description('Scaffold a default.yaml worldspec in the current repo (.olam/worldspecs/)')
22
+ .option('--force', 'Overwrite an existing .olam/worldspecs/default.yaml', false)
23
+ .option('--from-adb-yaml', 'Read project shape from .adb.yaml when present', false)
24
+ .action((opts) => {
25
+ const cwd = process.cwd();
26
+ const targetDir = resolvePath(cwd, '.olam/worldspecs');
27
+ const targetFile = resolvePath(targetDir, 'default.yaml');
28
+ if (existsSync(targetFile) && !opts.force) {
29
+ printError(`${targetFile} already exists; pass --force to overwrite`);
30
+ // MEDIUM fix (A3 CP3 audit 2026-05-09): EXIT_WORLDSPEC_EXISTS
31
+ // distinguishes "you forgot --force" from EXIT_GENERIC_ERROR=1
32
+ // (internal/parse crash). Pipelines that grep $? can branch.
33
+ process.exit(EXIT_WORLDSPEC_EXISTS);
34
+ }
35
+ // MEDIUM fix (A3 CP3 audit 2026-05-09): warn-then-exit on
36
+ // --from-adb-yaml — flag was a dead stub (presence-only). Either
37
+ // ship parser or surface explicit "not yet implemented" so
38
+ // operators don't assume their .adb.yaml shape was read.
39
+ if (opts.fromAdbYaml) {
40
+ printError('--from-adb-yaml is not yet implemented (deferred to v1.1); ' +
41
+ 'remove the flag and re-run, or proceed with manual edit.');
42
+ process.exit(EXIT_GENERIC_ERROR);
43
+ }
44
+ const shape = detectProjectShape(cwd, opts.fromAdbYaml);
45
+ const yaml = renderWorldspecYaml(shape);
46
+ try {
47
+ mkdirSync(targetDir, { recursive: true });
48
+ // MEDIUM fix (A3 CP3 audit 2026-05-09): use 'wx' flag in
49
+ // non-force path AND open with 'w' explicitly when --force.
50
+ // 'wx' refuses if the path exists OR is a symlink → closes
51
+ // TOCTOU between existsSync above and writeFileSync below.
52
+ // (existsSync gate above is the user-facing UX; 'wx' is the
53
+ // race-resistant lower-bound guarantee.)
54
+ writeFileSync(targetFile, yaml, {
55
+ encoding: 'utf8',
56
+ flag: opts.force ? 'w' : 'wx',
57
+ });
58
+ }
59
+ catch (err) {
60
+ printError(`failed to scaffold ${targetFile}: ${err.message}`);
61
+ process.exit(EXIT_GENERIC_ERROR);
62
+ }
63
+ printSuccess(`scaffolded ${targetFile}`);
64
+ // Two-arg printInfo expects (label, value); craft a label-less line
65
+ // via console.log so the next-step UX renders cleanly without padding.
66
+ console.log(` Edit it to fit your repo, then run: olam worldspec validate ${relativeFromCwd(targetFile, cwd)}`);
67
+ process.exit(0);
68
+ });
69
+ }
70
+ function detectProjectShape(root, useAdbYaml) {
71
+ const hasGemfile = existsSync(resolvePath(root, 'Gemfile'));
72
+ const hasNodePackageJson = existsSync(resolvePath(root, 'package.json'));
73
+ const hasAdbYaml = existsSync(resolvePath(root, '.adb.yaml'));
74
+ let rubyVersion = null;
75
+ const rubyVersionPath = resolvePath(root, '.ruby-version');
76
+ if (existsSync(rubyVersionPath)) {
77
+ try {
78
+ const raw = readFileSync(rubyVersionPath, 'utf8').trim();
79
+ // .ruby-version can be `3.3.0` or `ruby-3.3.0`; extract the SemVer.
80
+ const match = raw.match(/(\d+\.\d+\.\d+)/);
81
+ if (match)
82
+ rubyVersion = match[1] ?? null;
83
+ }
84
+ catch {
85
+ // ignore — fall back to null
86
+ }
87
+ }
88
+ // --from-adb-yaml is a future hook (parse .adb.yaml's runtime block);
89
+ // for v1 we just record presence so the scaffolded YAML's comment
90
+ // references it correctly. Real adb-yaml parsing is deferred to v2.
91
+ void useAdbYaml;
92
+ return {
93
+ repoName: getRepoName(root),
94
+ hasGemfile,
95
+ rubyVersion,
96
+ hasNodePackageJson,
97
+ hasAdbYaml,
98
+ };
99
+ }
100
+ function getRepoName(root) {
101
+ try {
102
+ const url = execSync('git remote get-url origin', {
103
+ cwd: root,
104
+ encoding: 'utf-8',
105
+ stdio: ['ignore', 'pipe', 'ignore'],
106
+ }).trim();
107
+ const match = url.match(/\/([^/]+?)(?:\.git)?$/);
108
+ if (match && match[1])
109
+ return match[1];
110
+ }
111
+ catch {
112
+ // not a git repo or no origin; fall back to dir basename
113
+ }
114
+ return basename(root);
115
+ }
116
+ function renderWorldspecYaml(shape) {
117
+ const lines = [];
118
+ lines.push('# Scaffolded by `olam worldspec init`. Edit to fit your repo.');
119
+ if (shape.hasAdbYaml) {
120
+ lines.push('# Detected .adb.yaml — consider migrating its runtime + service blocks here.');
121
+ }
122
+ lines.push('schemaVersion: 1');
123
+ lines.push(`name: ${kebab(shape.repoName)}-default`);
124
+ lines.push('description: ""');
125
+ lines.push('repos:');
126
+ // MEDIUM fix (A3 CP3 audit 2026-05-09): kebab the repoName before
127
+ // emitting into YAML — git remote URLs can contain newlines / colons
128
+ // that smuggle YAML structure if interpolated raw (covered by name:
129
+ // line via kebab() but missed here in the first commit).
130
+ lines.push(` - ${kebab(shape.repoName)}`);
131
+ lines.push('images:');
132
+ lines.push(' devbox: ghcr.io/REPLACE_ME/olam-devbox:latest');
133
+ lines.push(' imageSource: local-first');
134
+ lines.push('capabilities:');
135
+ if (shape.hasGemfile) {
136
+ lines.push(' - type: runtime.ruby');
137
+ lines.push(` version: "${shape.rubyVersion ?? '3.3.0'}"`);
138
+ lines.push(` forRepo: ${kebab(shape.repoName)}`);
139
+ lines.push(' - type: database.postgres');
140
+ lines.push(' version: "13"');
141
+ }
142
+ if (shape.hasNodePackageJson && !shape.hasGemfile) {
143
+ lines.push(' # Node.js project detected. runtime.node is deferred to v1.1');
144
+ lines.push(' # (boot-d hook can pin node version in the meantime).');
145
+ }
146
+ lines.push(' - type: auth.ghcr');
147
+ lines.push(' scopes:');
148
+ lines.push(' - read:packages');
149
+ lines.push(' - type: dispatch.readiness');
150
+ lines.push(' mode: regex');
151
+ lines.push(' pattern: "❯"');
152
+ lines.push('');
153
+ return lines.join('\n');
154
+ }
155
+ function kebab(s) {
156
+ return s
157
+ .toLowerCase()
158
+ .replace(/[^a-z0-9]+/g, '-')
159
+ .replace(/^-+|-+$/g, '');
160
+ }
161
+ function relativeFromCwd(absPath, cwd) {
162
+ if (absPath.startsWith(cwd + '/'))
163
+ return absPath.slice(cwd.length + 1);
164
+ return absPath;
165
+ }
166
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/worldspec/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `olam worldspec schema --version 1 [--out <path>]` — emit a composite
3
+ * JSON Schema (Draft 2019-09) for IDE integration (VS Code yaml.schemas,
4
+ * etc). Single-source-of-truth: derived from WorldspecSchema via
5
+ * zod-to-json-schema, so v1.x evolution stays in sync without drift.
6
+ *
7
+ * Defaults to stdout; pass --out to write a file.
8
+ */
9
+ import type { Command } from 'commander';
10
+ export declare function registerWorldspecSchema(parent: Command): void;
11
+ //# sourceMappingURL=schema.d.ts.map