@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.
- package/dist/cli-version.d.ts +16 -0
- package/dist/cli-version.d.ts.map +1 -0
- package/dist/cli-version.js +39 -0
- package/dist/cli-version.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +2 -0
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/host-cp.d.ts.map +1 -1
- package/dist/commands/host-cp.js +10 -0
- package/dist/commands/host-cp.js.map +1 -1
- package/dist/commands/runbooks.d.ts +13 -0
- package/dist/commands/runbooks.d.ts.map +1 -0
- package/dist/commands/runbooks.js +189 -0
- package/dist/commands/runbooks.js.map +1 -0
- package/dist/commands/world-snapshot.d.ts +1 -0
- package/dist/commands/world-snapshot.d.ts.map +1 -1
- package/dist/commands/world-snapshot.js +126 -1
- package/dist/commands/world-snapshot.js.map +1 -1
- package/dist/commands/worldspec/compile.d.ts +20 -0
- package/dist/commands/worldspec/compile.d.ts.map +1 -0
- package/dist/commands/worldspec/compile.js +130 -0
- package/dist/commands/worldspec/compile.js.map +1 -0
- package/dist/commands/worldspec/index.d.ts +12 -0
- package/dist/commands/worldspec/index.d.ts.map +1 -0
- package/dist/commands/worldspec/index.js +23 -0
- package/dist/commands/worldspec/index.js.map +1 -0
- package/dist/commands/worldspec/init.d.ts +15 -0
- package/dist/commands/worldspec/init.d.ts.map +1 -0
- package/dist/commands/worldspec/init.js +166 -0
- package/dist/commands/worldspec/init.js.map +1 -0
- package/dist/commands/worldspec/schema.d.ts +11 -0
- package/dist/commands/worldspec/schema.d.ts.map +1 -0
- package/dist/commands/worldspec/schema.js +55 -0
- package/dist/commands/worldspec/schema.js.map +1 -0
- package/dist/commands/worldspec/validate.d.ts +15 -0
- package/dist/commands/worldspec/validate.d.ts.map +1 -0
- package/dist/commands/worldspec/validate.js +66 -0
- package/dist/commands/worldspec/validate.js.map +1 -0
- package/dist/exit-codes.d.ts +32 -0
- package/dist/exit-codes.d.ts.map +1 -1
- package/dist/exit-codes.js +32 -0
- package/dist/exit-codes.js.map +1 -1
- package/dist/image-digests.json +5 -5
- package/dist/index.js +4726 -1231
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +1424 -321
- package/host-cp/compose.yaml +6 -0
- package/host-cp/src/global-config-source.mjs +71 -0
- package/host-cp/src/listening-server-poller.mjs +1 -1
- package/host-cp/src/plan-orchestrator.mjs +20 -1
- package/host-cp/src/port-bridge-manager.mjs +1 -1
- package/host-cp/src/server.mjs +46 -7
- package/host-cp/src/version-status.mjs +36 -0
- package/package.json +4 -2
- package/dist/__tests__/audit-publish-deps-contract.test.d.ts +0 -26
- package/dist/__tests__/audit-publish-deps-contract.test.d.ts.map +0 -1
- package/dist/__tests__/audit-publish-deps-contract.test.js +0 -86
- package/dist/__tests__/audit-publish-deps-contract.test.js.map +0 -1
- package/dist/__tests__/auth-status.test.d.ts +0 -2
- package/dist/__tests__/auth-status.test.d.ts.map +0 -1
- package/dist/__tests__/auth-status.test.js +0 -291
- package/dist/__tests__/auth-status.test.js.map +0 -1
- package/dist/__tests__/auth-upgrade.test.d.ts +0 -9
- package/dist/__tests__/auth-upgrade.test.d.ts.map +0 -1
- package/dist/__tests__/auth-upgrade.test.js +0 -397
- package/dist/__tests__/auth-upgrade.test.js.map +0 -1
- package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts +0 -22
- package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts.map +0 -1
- package/dist/__tests__/bootstrap-tag-mcp-auth.test.js +0 -63
- package/dist/__tests__/bootstrap-tag-mcp-auth.test.js.map +0 -1
- package/dist/__tests__/cli-mcp-revoke.test.d.ts +0 -8
- package/dist/__tests__/cli-mcp-revoke.test.d.ts.map +0 -1
- package/dist/__tests__/cli-mcp-revoke.test.js +0 -124
- package/dist/__tests__/cli-mcp-revoke.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -95
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/create-app-urls.test.d.ts +0 -2
- package/dist/__tests__/create-app-urls.test.d.ts.map +0 -1
- package/dist/__tests__/create-app-urls.test.js +0 -102
- package/dist/__tests__/create-app-urls.test.js.map +0 -1
- package/dist/__tests__/docker-host.test.d.ts +0 -14
- package/dist/__tests__/docker-host.test.d.ts.map +0 -1
- package/dist/__tests__/docker-host.test.js +0 -109
- package/dist/__tests__/docker-host.test.js.map +0 -1
- package/dist/__tests__/enter.test.d.ts +0 -2
- package/dist/__tests__/enter.test.d.ts.map +0 -1
- package/dist/__tests__/enter.test.js +0 -90
- package/dist/__tests__/enter.test.js.map +0 -1
- package/dist/__tests__/help-output.test.d.ts +0 -2
- package/dist/__tests__/help-output.test.d.ts.map +0 -1
- package/dist/__tests__/help-output.test.js +0 -74
- package/dist/__tests__/help-output.test.js.map +0 -1
- package/dist/__tests__/host-cp-gh-token.test.d.ts +0 -9
- package/dist/__tests__/host-cp-gh-token.test.d.ts.map +0 -1
- package/dist/__tests__/host-cp-gh-token.test.js +0 -119
- package/dist/__tests__/host-cp-gh-token.test.js.map +0 -1
- package/dist/__tests__/host-cp.test.d.ts +0 -9
- package/dist/__tests__/host-cp.test.d.ts.map +0 -1
- package/dist/__tests__/host-cp.test.js +0 -327
- package/dist/__tests__/host-cp.test.js.map +0 -1
- package/dist/__tests__/image-presence.test.d.ts +0 -2
- package/dist/__tests__/image-presence.test.d.ts.map +0 -1
- package/dist/__tests__/image-presence.test.js +0 -44
- package/dist/__tests__/image-presence.test.js.map +0 -1
- package/dist/__tests__/install-root.test.d.ts +0 -2
- package/dist/__tests__/install-root.test.d.ts.map +0 -1
- package/dist/__tests__/install-root.test.js +0 -119
- package/dist/__tests__/install-root.test.js.map +0 -1
- package/dist/__tests__/keys.test.d.ts +0 -9
- package/dist/__tests__/keys.test.d.ts.map +0 -1
- package/dist/__tests__/keys.test.js +0 -145
- package/dist/__tests__/keys.test.js.map +0 -1
- package/dist/__tests__/logs.test.d.ts +0 -9
- package/dist/__tests__/logs.test.d.ts.map +0 -1
- package/dist/__tests__/logs.test.js +0 -124
- package/dist/__tests__/logs.test.js.map +0 -1
- package/dist/__tests__/mcp-import.test.d.ts +0 -11
- package/dist/__tests__/mcp-import.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-import.test.js +0 -134
- package/dist/__tests__/mcp-import.test.js.map +0 -1
- package/dist/__tests__/protocol-version.test.d.ts +0 -2
- package/dist/__tests__/protocol-version.test.d.ts.map +0 -1
- package/dist/__tests__/protocol-version.test.js +0 -170
- package/dist/__tests__/protocol-version.test.js.map +0 -1
- package/dist/__tests__/ps.test.d.ts +0 -2
- package/dist/__tests__/ps.test.d.ts.map +0 -1
- package/dist/__tests__/ps.test.js +0 -172
- package/dist/__tests__/ps.test.js.map +0 -1
- package/dist/__tests__/registry-allowlist.test.d.ts +0 -2
- package/dist/__tests__/registry-allowlist.test.d.ts.map +0 -1
- package/dist/__tests__/registry-allowlist.test.js +0 -129
- package/dist/__tests__/registry-allowlist.test.js.map +0 -1
- package/dist/__tests__/services.test.d.ts +0 -8
- package/dist/__tests__/services.test.d.ts.map +0 -1
- package/dist/__tests__/services.test.js +0 -185
- package/dist/__tests__/services.test.js.map +0 -1
- package/dist/__tests__/status-app-urls.test.d.ts +0 -2
- package/dist/__tests__/status-app-urls.test.d.ts.map +0 -1
- package/dist/__tests__/status-app-urls.test.js +0 -125
- package/dist/__tests__/status-app-urls.test.js.map +0 -1
- package/dist/__tests__/upgrade-gh-token-contract.test.d.ts +0 -19
- package/dist/__tests__/upgrade-gh-token-contract.test.d.ts.map +0 -1
- package/dist/__tests__/upgrade-gh-token-contract.test.js +0 -63
- package/dist/__tests__/upgrade-gh-token-contract.test.js.map +0 -1
- package/dist/__tests__/upgrade.test.d.ts +0 -9
- package/dist/__tests__/upgrade.test.d.ts.map +0 -1
- package/dist/__tests__/upgrade.test.js +0 -586
- package/dist/__tests__/upgrade.test.js.map +0 -1
- package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts +0 -6
- package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts.map +0 -1
- package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js +0 -26
- package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js.map +0 -1
- package/dist/commands/__tests__/begin.test.d.ts +0 -7
- package/dist/commands/__tests__/begin.test.d.ts.map +0 -1
- package/dist/commands/__tests__/begin.test.js +0 -72
- package/dist/commands/__tests__/begin.test.js.map +0 -1
- package/dist/commands/__tests__/bootstrap.test.d.ts +0 -2
- package/dist/commands/__tests__/bootstrap.test.d.ts.map +0 -1
- package/dist/commands/__tests__/bootstrap.test.js +0 -370
- package/dist/commands/__tests__/bootstrap.test.js.map +0 -1
- package/dist/commands/__tests__/carry-uncommitted.test.d.ts +0 -14
- package/dist/commands/__tests__/carry-uncommitted.test.d.ts.map +0 -1
- package/dist/commands/__tests__/carry-uncommitted.test.js +0 -83
- package/dist/commands/__tests__/carry-uncommitted.test.js.map +0 -1
- package/dist/commands/__tests__/clean.test.d.ts +0 -9
- package/dist/commands/__tests__/clean.test.d.ts.map +0 -1
- package/dist/commands/__tests__/clean.test.js +0 -105
- package/dist/commands/__tests__/clean.test.js.map +0 -1
- package/dist/commands/__tests__/crystallize.test.d.ts +0 -2
- package/dist/commands/__tests__/crystallize.test.d.ts.map +0 -1
- package/dist/commands/__tests__/crystallize.test.js +0 -133
- package/dist/commands/__tests__/crystallize.test.js.map +0 -1
- package/dist/commands/__tests__/diagnose.test.d.ts +0 -9
- package/dist/commands/__tests__/diagnose.test.d.ts.map +0 -1
- package/dist/commands/__tests__/diagnose.test.js +0 -108
- package/dist/commands/__tests__/diagnose.test.js.map +0 -1
- package/dist/commands/__tests__/openHostCpUrl.test.d.ts +0 -2
- package/dist/commands/__tests__/openHostCpUrl.test.d.ts.map +0 -1
- package/dist/commands/__tests__/openHostCpUrl.test.js +0 -63
- package/dist/commands/__tests__/openHostCpUrl.test.js.map +0 -1
- package/dist/commands/__tests__/refresh.test.d.ts +0 -13
- package/dist/commands/__tests__/refresh.test.d.ts.map +0 -1
- package/dist/commands/__tests__/refresh.test.js +0 -170
- package/dist/commands/__tests__/refresh.test.js.map +0 -1
- package/dist/commands/__tests__/status.test.d.ts +0 -8
- package/dist/commands/__tests__/status.test.d.ts.map +0 -1
- package/dist/commands/__tests__/status.test.js +0 -62
- package/dist/commands/__tests__/status.test.js.map +0 -1
- package/dist/commands/__tests__/stop.test.d.ts +0 -5
- package/dist/commands/__tests__/stop.test.d.ts.map +0 -1
- package/dist/commands/__tests__/stop.test.js +0 -30
- package/dist/commands/__tests__/stop.test.js.map +0 -1
- package/dist/commands/__tests__/update.test.d.ts +0 -7
- package/dist/commands/__tests__/update.test.d.ts.map +0 -1
- package/dist/commands/__tests__/update.test.js +0 -224
- package/dist/commands/__tests__/update.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.all-three.test.d.ts +0 -19
- package/dist/commands/__tests__/upgrade.all-three.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.all-three.test.js +0 -80
- package/dist/commands/__tests__/upgrade.all-three.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.compose-path.test.d.ts +0 -20
- package/dist/commands/__tests__/upgrade.compose-path.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.compose-path.test.js +0 -140
- package/dist/commands/__tests__/upgrade.compose-path.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.history.test.d.ts +0 -15
- package/dist/commands/__tests__/upgrade.history.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.history.test.js +0 -199
- package/dist/commands/__tests__/upgrade.history.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.lock.test.d.ts +0 -15
- package/dist/commands/__tests__/upgrade.lock.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.lock.test.js +0 -253
- package/dist/commands/__tests__/upgrade.lock.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts +0 -21
- package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.olam-tag.test.js +0 -114
- package/dist/commands/__tests__/upgrade.olam-tag.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.poll.test.d.ts +0 -14
- package/dist/commands/__tests__/upgrade.poll.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.poll.test.js +0 -136
- package/dist/commands/__tests__/upgrade.poll.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.recreate.test.d.ts +0 -17
- package/dist/commands/__tests__/upgrade.recreate.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.recreate.test.js +0 -83
- package/dist/commands/__tests__/upgrade.recreate.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.rollback.test.d.ts +0 -12
- package/dist/commands/__tests__/upgrade.rollback.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.rollback.test.js +0 -255
- package/dist/commands/__tests__/upgrade.rollback.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts +0 -12
- package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.sha-capture.test.js +0 -63
- package/dist/commands/__tests__/upgrade.sha-capture.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.smoke.test.d.ts +0 -19
- package/dist/commands/__tests__/upgrade.smoke.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.smoke.test.js +0 -87
- package/dist/commands/__tests__/upgrade.smoke.test.js.map +0 -1
- package/dist/commands/__tests__/upgrade.swap.test.d.ts +0 -19
- package/dist/commands/__tests__/upgrade.swap.test.d.ts.map +0 -1
- package/dist/commands/__tests__/upgrade.swap.test.js +0 -312
- package/dist/commands/__tests__/upgrade.swap.test.js.map +0 -1
- package/dist/commands/__tests__/world-upgrade.test.d.ts +0 -8
- package/dist/commands/__tests__/world-upgrade.test.d.ts.map +0 -1
- package/dist/commands/__tests__/world-upgrade.test.js +0 -73
- package/dist/commands/__tests__/world-upgrade.test.js.map +0 -1
- package/dist/lib/__tests__/symlink-reconcile.test.d.ts +0 -2
- package/dist/lib/__tests__/symlink-reconcile.test.d.ts.map +0 -1
- package/dist/lib/__tests__/symlink-reconcile.test.js +0 -106
- 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,
|
|
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
|