@pleri/olam-cli 0.1.70 → 0.1.73
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/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/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 +4379 -897
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +1252 -286
- 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 +21 -2
- package/host-cp/src/port-bridge-manager.mjs +1 -1
- package/host-cp/src/server.mjs +46 -7
- 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 -129
- 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 -335
- 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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"carry-uncommitted.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/carry-uncommitted.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smoke tests for `olam clean`'s formatting + dry-run path. The
|
|
3
|
-
* categorisation logic is exercised against a fixture worlds dir
|
|
4
|
-
* with a known shape; the file ops are limited to fs.rmSync calls
|
|
5
|
-
* we make in --apply mode (covered separately by reapEntry tests
|
|
6
|
-
* if/when that surface needs deeper coverage).
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=clean.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clean.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/clean.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smoke tests for `olam clean`'s formatting + dry-run path. The
|
|
3
|
-
* categorisation logic is exercised against a fixture worlds dir
|
|
4
|
-
* with a known shape; the file ops are limited to fs.rmSync calls
|
|
5
|
-
* we make in --apply mode (covered separately by reapEntry tests
|
|
6
|
-
* if/when that surface needs deeper coverage).
|
|
7
|
-
*/
|
|
8
|
-
import { describe, expect, it, beforeEach, afterEach, vi } from 'vitest';
|
|
9
|
-
import fs from 'node:fs';
|
|
10
|
-
import os from 'node:os';
|
|
11
|
-
import path from 'node:path';
|
|
12
|
-
import { runClean } from '../clean.js';
|
|
13
|
-
let tmpHome;
|
|
14
|
-
let originalHome;
|
|
15
|
-
let stdoutChunks;
|
|
16
|
-
let stderrChunks;
|
|
17
|
-
function mockStdout() {
|
|
18
|
-
stdoutChunks = [];
|
|
19
|
-
stderrChunks = [];
|
|
20
|
-
vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
|
|
21
|
-
stdoutChunks.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString());
|
|
22
|
-
return true;
|
|
23
|
-
});
|
|
24
|
-
vi.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
|
|
25
|
-
stderrChunks.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString());
|
|
26
|
-
return true;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
beforeEach(() => {
|
|
30
|
-
originalHome = process.env.HOME;
|
|
31
|
-
tmpHome = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-clean-test-'));
|
|
32
|
-
process.env.HOME = tmpHome;
|
|
33
|
-
// Minimal shape — clean.ts only needs ~/.olam/worlds/ + the registry,
|
|
34
|
-
// and we test against the dry-run path so registry can be empty.
|
|
35
|
-
fs.mkdirSync(path.join(tmpHome, '.olam', 'worlds'), { recursive: true });
|
|
36
|
-
});
|
|
37
|
-
afterEach(() => {
|
|
38
|
-
vi.restoreAllMocks();
|
|
39
|
-
if (originalHome !== undefined)
|
|
40
|
-
process.env.HOME = originalHome;
|
|
41
|
-
else
|
|
42
|
-
delete process.env.HOME;
|
|
43
|
-
fs.rmSync(tmpHome, { recursive: true, force: true });
|
|
44
|
-
});
|
|
45
|
-
describe('runClean — dry-run', () => {
|
|
46
|
-
it('returns 0 and lists no entries when worlds dir is empty', async () => {
|
|
47
|
-
mockStdout();
|
|
48
|
-
const code = await runClean({
|
|
49
|
-
apply: false,
|
|
50
|
-
includeDirty: false,
|
|
51
|
-
yes: false,
|
|
52
|
-
json: false,
|
|
53
|
-
});
|
|
54
|
-
expect(code).toBe(0);
|
|
55
|
-
const out = stdoutChunks.join('');
|
|
56
|
-
expect(out).toContain('no worlds on disk');
|
|
57
|
-
expect(out).toContain('Dry-run only');
|
|
58
|
-
});
|
|
59
|
-
it('emits JSON inventory when --json is set', async () => {
|
|
60
|
-
fs.mkdirSync(path.join(tmpHome, '.olam', 'worlds', 'gold-arc-1454'), { recursive: true });
|
|
61
|
-
fs.writeFileSync(path.join(tmpHome, '.olam', 'worlds', 'gold-arc-1454', 'world.db'), Buffer.alloc(1024));
|
|
62
|
-
mockStdout();
|
|
63
|
-
const code = await runClean({
|
|
64
|
-
apply: false,
|
|
65
|
-
includeDirty: false,
|
|
66
|
-
yes: false,
|
|
67
|
-
json: true,
|
|
68
|
-
});
|
|
69
|
-
expect(code).toBe(0);
|
|
70
|
-
const out = stdoutChunks.join('');
|
|
71
|
-
const parsed = JSON.parse(out);
|
|
72
|
-
expect(parsed.entries).toHaveLength(1);
|
|
73
|
-
expect(parsed.entries[0]?.id).toBe('gold-arc-1454');
|
|
74
|
-
expect(parsed.entries[0]?.category).toBe('orphan');
|
|
75
|
-
expect(parsed.entries[0]?.bytes).toBe(1024);
|
|
76
|
-
});
|
|
77
|
-
it('classifies a no-git directory as orphan', async () => {
|
|
78
|
-
fs.mkdirSync(path.join(tmpHome, '.olam', 'worlds', 'no-git-test'), { recursive: true });
|
|
79
|
-
fs.writeFileSync(path.join(tmpHome, '.olam', 'worlds', 'no-git-test', 'a.bin'), Buffer.alloc(2048));
|
|
80
|
-
mockStdout();
|
|
81
|
-
const code = await runClean({
|
|
82
|
-
apply: false,
|
|
83
|
-
includeDirty: false,
|
|
84
|
-
yes: false,
|
|
85
|
-
json: true,
|
|
86
|
-
});
|
|
87
|
-
expect(code).toBe(0);
|
|
88
|
-
const parsed = JSON.parse(stdoutChunks.join(''));
|
|
89
|
-
expect(parsed.entries.find((e) => e.id === 'no-git-test')?.category).toBe('orphan');
|
|
90
|
-
});
|
|
91
|
-
it('handles a missing worlds directory gracefully', async () => {
|
|
92
|
-
fs.rmSync(path.join(tmpHome, '.olam', 'worlds'), { recursive: true });
|
|
93
|
-
mockStdout();
|
|
94
|
-
const code = await runClean({
|
|
95
|
-
apply: false,
|
|
96
|
-
includeDirty: false,
|
|
97
|
-
yes: false,
|
|
98
|
-
json: true,
|
|
99
|
-
});
|
|
100
|
-
expect(code).toBe(0);
|
|
101
|
-
const parsed = JSON.parse(stdoutChunks.join(''));
|
|
102
|
-
expect(parsed.entries).toHaveLength(0);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
//# sourceMappingURL=clean.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clean.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/clean.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crystallize.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/crystallize.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
// A1 (Phase A — fresh-install self-bootstrap): when PLERI is not configured,
|
|
2
|
-
// `olam crystallize` exits 2 (named constant) with a stderr-only warn so
|
|
3
|
-
// piped scripts can detect "skipped" without parsing stdout.
|
|
4
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
5
|
-
import { Command } from 'commander';
|
|
6
|
-
import { registerCrystallize } from '../crystallize.js';
|
|
7
|
-
import { EXIT_PLERI_NOT_CONFIGURED } from '../../exit-codes.js';
|
|
8
|
-
import * as ctxModule from '../../context.js';
|
|
9
|
-
function captureStreams() {
|
|
10
|
-
const sink = { stdout: '', stderr: '' };
|
|
11
|
-
const origStdout = process.stdout.write.bind(process.stdout);
|
|
12
|
-
const origStderr = process.stderr.write.bind(process.stderr);
|
|
13
|
-
process.stdout.write = (chunk) => {
|
|
14
|
-
sink.stdout += typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString();
|
|
15
|
-
return true;
|
|
16
|
-
};
|
|
17
|
-
process.stderr.write = (chunk) => {
|
|
18
|
-
sink.stderr += typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString();
|
|
19
|
-
return true;
|
|
20
|
-
};
|
|
21
|
-
// Save originals on the sink so the caller can restore them.
|
|
22
|
-
sink.restore = () => {
|
|
23
|
-
process.stdout.write = origStdout;
|
|
24
|
-
process.stderr.write = origStderr;
|
|
25
|
-
};
|
|
26
|
-
return sink;
|
|
27
|
-
}
|
|
28
|
-
describe('olam crystallize — PLERI not configured', () => {
|
|
29
|
-
let originalExitCode;
|
|
30
|
-
beforeEach(() => {
|
|
31
|
-
originalExitCode = process.exitCode;
|
|
32
|
-
process.exitCode = 0;
|
|
33
|
-
});
|
|
34
|
-
afterEach(() => {
|
|
35
|
-
process.exitCode = originalExitCode ?? 0;
|
|
36
|
-
vi.restoreAllMocks();
|
|
37
|
-
});
|
|
38
|
-
it('exits with EXIT_PLERI_NOT_CONFIGURED (2) when ctx.pleriClient is null', async () => {
|
|
39
|
-
// Stub loadContext to return a ctx with no pleriClient (PLERI not configured).
|
|
40
|
-
vi.spyOn(ctxModule, 'loadContext').mockResolvedValue({
|
|
41
|
-
ctx: {
|
|
42
|
-
// Minimal shape — only the field crystallize reads at the gate is needed.
|
|
43
|
-
pleriClient: null,
|
|
44
|
-
},
|
|
45
|
-
error: undefined,
|
|
46
|
-
});
|
|
47
|
-
const program = new Command();
|
|
48
|
-
registerCrystallize(program);
|
|
49
|
-
const sink = captureStreams();
|
|
50
|
-
try {
|
|
51
|
-
// commander throws on `process.exit` calls but we set exitCode + return,
|
|
52
|
-
// so this is just an async function call.
|
|
53
|
-
await program.parseAsync(['node', 'olam', 'crystallize', 'fake-world-id']);
|
|
54
|
-
}
|
|
55
|
-
finally {
|
|
56
|
-
sink.restore();
|
|
57
|
-
}
|
|
58
|
-
expect(process.exitCode).toBe(EXIT_PLERI_NOT_CONFIGURED);
|
|
59
|
-
expect(process.exitCode).toBe(2);
|
|
60
|
-
expect(sink.stderr).toContain('crystallize requires PLERI_BASE_URL');
|
|
61
|
-
expect(sink.stdout).toBe('');
|
|
62
|
-
});
|
|
63
|
-
it('keeps stdout empty so piped consumers can distinguish skip from success', async () => {
|
|
64
|
-
vi.spyOn(ctxModule, 'loadContext').mockResolvedValue({
|
|
65
|
-
// Match production shape: pleriClient is `undefined` when not configured
|
|
66
|
-
// (set conditionally inside `if (config.pleri)` in context.ts).
|
|
67
|
-
ctx: {
|
|
68
|
-
pleriClient: undefined,
|
|
69
|
-
},
|
|
70
|
-
error: undefined,
|
|
71
|
-
});
|
|
72
|
-
const program = new Command();
|
|
73
|
-
registerCrystallize(program);
|
|
74
|
-
const sink = captureStreams();
|
|
75
|
-
try {
|
|
76
|
-
await program.parseAsync(['node', 'olam', 'crystallize', 'any-world']);
|
|
77
|
-
}
|
|
78
|
-
finally {
|
|
79
|
-
sink.restore();
|
|
80
|
-
}
|
|
81
|
-
// The contract: stdout is empty on skip; stderr carries the warn.
|
|
82
|
-
expect(sink.stdout.length).toBe(0);
|
|
83
|
-
expect(sink.stderr.length).toBeGreaterThan(0);
|
|
84
|
-
});
|
|
85
|
-
it('exits 2 on a truly fresh install (no .olam/ dir → OlamConfigNotFoundError)', async () => {
|
|
86
|
-
// The "fresh-install" scenario this epic is named after: a user runs
|
|
87
|
-
// `npm i -g @pleri/olam-cli && olam crystallize <world>` on a project
|
|
88
|
-
// with no `.olam/` directory at all. PLERI is by definition not
|
|
89
|
-
// configured; the skip semantics should match the partial-config case.
|
|
90
|
-
const configNotFound = new Error('No olam config found');
|
|
91
|
-
configNotFound.name = 'OlamConfigNotFoundError';
|
|
92
|
-
vi.spyOn(ctxModule, 'loadContext').mockResolvedValue({
|
|
93
|
-
ctx: undefined,
|
|
94
|
-
error: configNotFound,
|
|
95
|
-
});
|
|
96
|
-
const program = new Command();
|
|
97
|
-
registerCrystallize(program);
|
|
98
|
-
const sink = captureStreams();
|
|
99
|
-
try {
|
|
100
|
-
await program.parseAsync(['node', 'olam', 'crystallize', 'fresh-install-world']);
|
|
101
|
-
}
|
|
102
|
-
finally {
|
|
103
|
-
sink.restore();
|
|
104
|
-
}
|
|
105
|
-
expect(process.exitCode).toBe(EXIT_PLERI_NOT_CONFIGURED);
|
|
106
|
-
expect(sink.stderr).toContain('crystallize requires PLERI_BASE_URL');
|
|
107
|
-
expect(sink.stderr).toContain('Olam is not initialised');
|
|
108
|
-
expect(sink.stdout).toBe('');
|
|
109
|
-
});
|
|
110
|
-
it('warn message names the remediation path (config or env var)', async () => {
|
|
111
|
-
vi.spyOn(ctxModule, 'loadContext').mockResolvedValue({
|
|
112
|
-
// Match production shape: pleriClient is `undefined` when not configured
|
|
113
|
-
// (set conditionally inside `if (config.pleri)` in context.ts).
|
|
114
|
-
ctx: {
|
|
115
|
-
pleriClient: undefined,
|
|
116
|
-
},
|
|
117
|
-
error: undefined,
|
|
118
|
-
});
|
|
119
|
-
const program = new Command();
|
|
120
|
-
registerCrystallize(program);
|
|
121
|
-
const sink = captureStreams();
|
|
122
|
-
try {
|
|
123
|
-
await program.parseAsync(['node', 'olam', 'crystallize', 'world']);
|
|
124
|
-
}
|
|
125
|
-
finally {
|
|
126
|
-
sink.restore();
|
|
127
|
-
}
|
|
128
|
-
// Operators looking at the warn line need to know how to enable the feature.
|
|
129
|
-
expect(sink.stderr).toMatch(/PLERI_BASE_URL/);
|
|
130
|
-
expect(sink.stderr).toMatch(/\.olam\/config\.yaml/);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
//# sourceMappingURL=crystallize.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crystallize.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/crystallize.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for G1/G2/G3 — olam diagnose.
|
|
3
|
-
*
|
|
4
|
-
* buildDiagnosticsZip is injectable via _exec, _outDir, _logDir, _zip so no
|
|
5
|
-
* real zip command or home-dir paths are touched during tests.
|
|
6
|
-
* buildTelemetryPayload is async and tested with lazy import injection.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=diagnose.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/diagnose.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for G1/G2/G3 — olam diagnose.
|
|
3
|
-
*
|
|
4
|
-
* buildDiagnosticsZip is injectable via _exec, _outDir, _logDir, _zip so no
|
|
5
|
-
* real zip command or home-dir paths are touched during tests.
|
|
6
|
-
* buildTelemetryPayload is async and tested with lazy import injection.
|
|
7
|
-
*/
|
|
8
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
9
|
-
import * as fs from 'node:fs';
|
|
10
|
-
import * as path from 'node:path';
|
|
11
|
-
import * as os from 'node:os';
|
|
12
|
-
// Phase F's machine-schema is intentionally NOT cherry-picked alongside this
|
|
13
|
-
// Phase G code; buildTelemetryPayload hard-codes channel='stable' for now.
|
|
14
|
-
import { buildDiagnosticsZip, buildTelemetryPayload } from '../diagnose.js';
|
|
15
|
-
function makeFakeZip(outDir) {
|
|
16
|
-
const written = {};
|
|
17
|
-
const fakeZip = (zipPath, files) => {
|
|
18
|
-
for (const f of files) {
|
|
19
|
-
if (fs.existsSync(f))
|
|
20
|
-
written[path.basename(f)] = fs.readFileSync(f, 'utf-8');
|
|
21
|
-
}
|
|
22
|
-
fs.writeFileSync(zipPath, 'fake-zip');
|
|
23
|
-
};
|
|
24
|
-
return { fakeZip, written };
|
|
25
|
-
}
|
|
26
|
-
describe('buildDiagnosticsZip (G1 — show-telemetry)', () => {
|
|
27
|
-
let tmpOut;
|
|
28
|
-
let tmpLog;
|
|
29
|
-
beforeEach(() => {
|
|
30
|
-
tmpOut = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-diag-test-'));
|
|
31
|
-
tmpLog = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-log-test-'));
|
|
32
|
-
});
|
|
33
|
-
afterEach(() => {
|
|
34
|
-
try {
|
|
35
|
-
fs.rmSync(tmpOut, { recursive: true, force: true });
|
|
36
|
-
}
|
|
37
|
-
catch { /* ok */ }
|
|
38
|
-
try {
|
|
39
|
-
fs.rmSync(tmpLog, { recursive: true, force: true });
|
|
40
|
-
}
|
|
41
|
-
catch { /* ok */ }
|
|
42
|
-
});
|
|
43
|
-
it('calls zip with the expected output path and returns entries', async () => {
|
|
44
|
-
const zipCalls = [];
|
|
45
|
-
const fakeZip = (zipPath, files) => {
|
|
46
|
-
zipCalls.push({ zipPath, files });
|
|
47
|
-
fs.writeFileSync(zipPath, 'fake-zip');
|
|
48
|
-
};
|
|
49
|
-
const { zipPath, entries } = await buildDiagnosticsZip(() => '', tmpOut, tmpLog, fakeZip);
|
|
50
|
-
expect(zipPath).toContain('olam-diag-');
|
|
51
|
-
expect(zipPath.endsWith('.zip')).toBe(true);
|
|
52
|
-
expect(entries).toContain('version.txt');
|
|
53
|
-
expect(entries).toContain('os-info.txt');
|
|
54
|
-
expect(zipCalls).toHaveLength(1);
|
|
55
|
-
expect(zipCalls[0].zipPath).toBe(zipPath);
|
|
56
|
-
});
|
|
57
|
-
it('version.txt contains CLI version from env', async () => {
|
|
58
|
-
process.env['OLAM_CLI_VERSION'] = '0.1.9';
|
|
59
|
-
const { fakeZip, written } = makeFakeZip(tmpOut);
|
|
60
|
-
await buildDiagnosticsZip(() => '', tmpOut, tmpLog, fakeZip);
|
|
61
|
-
expect(written['version.txt']).toContain('0.1.9');
|
|
62
|
-
delete process.env['OLAM_CLI_VERSION'];
|
|
63
|
-
});
|
|
64
|
-
it('os-info.txt does not contain homedir or hostname', async () => {
|
|
65
|
-
const { fakeZip, written } = makeFakeZip(tmpOut);
|
|
66
|
-
await buildDiagnosticsZip(() => '', tmpOut, tmpLog, fakeZip);
|
|
67
|
-
const osInfo = written['os-info.txt'] ?? '';
|
|
68
|
-
expect(osInfo).not.toContain(os.homedir());
|
|
69
|
-
expect(osInfo).not.toContain(os.hostname());
|
|
70
|
-
});
|
|
71
|
-
it('strips secrets from log content before writing', async () => {
|
|
72
|
-
// Write a fake log file with a secret in the injectable _logDir
|
|
73
|
-
fs.writeFileSync(path.join(tmpLog, 'host-2026-05-06.log'), 'token=sk-ant-abcdefghijklmnopqrstuvwxyz012345\nother log line\n');
|
|
74
|
-
const { fakeZip, written } = makeFakeZip(tmpOut);
|
|
75
|
-
await buildDiagnosticsZip(() => '', tmpOut, tmpLog, fakeZip);
|
|
76
|
-
const logContent = written['log-tail.txt'] ?? '';
|
|
77
|
-
expect(logContent).toBeTruthy(); // log-tail.txt was actually written (real code path)
|
|
78
|
-
expect(logContent).not.toContain('sk-ant-');
|
|
79
|
-
expect(logContent).toContain('[REDACTED]');
|
|
80
|
-
});
|
|
81
|
-
it('throws if zip function throws', async () => {
|
|
82
|
-
const failZip = (_zipPath, _files) => {
|
|
83
|
-
throw new Error('zip: command not found');
|
|
84
|
-
};
|
|
85
|
-
await expect(buildDiagnosticsZip(() => '', tmpOut, tmpLog, failZip)).rejects.toThrow(/zip command/);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
describe('buildTelemetryPayload (G2 --show-telemetry)', () => {
|
|
89
|
-
it('contains required fields, no userid or path', async () => {
|
|
90
|
-
const payload = await buildTelemetryPayload();
|
|
91
|
-
expect(payload).toHaveProperty('version');
|
|
92
|
-
expect(payload).toHaveProperty('os');
|
|
93
|
-
expect(payload).toHaveProperty('arch');
|
|
94
|
-
expect(payload).toHaveProperty('channel');
|
|
95
|
-
expect(payload).toHaveProperty('manifest_age_hours');
|
|
96
|
-
// Privacy invariant: no userid, no project, no path, no hostname
|
|
97
|
-
expect(payload).not.toHaveProperty('userid');
|
|
98
|
-
expect(payload).not.toHaveProperty('project');
|
|
99
|
-
expect(payload).not.toHaveProperty('path');
|
|
100
|
-
expect(payload).not.toHaveProperty('hostname');
|
|
101
|
-
expect(payload).not.toHaveProperty('homedir');
|
|
102
|
-
});
|
|
103
|
-
it('returns channel from config', async () => {
|
|
104
|
-
const payload = await buildTelemetryPayload();
|
|
105
|
-
expect(payload.channel).toBe('stable');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
//# sourceMappingURL=diagnose.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/diagnose.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openHostCpUrl.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/openHostCpUrl.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
// Phase D6 (olam-dogfood-vision): unit tests for the openHostCpUrl
|
|
2
|
-
// helper's skip paths. Doesn't actually open a browser; covers the
|
|
3
|
-
// non-interactive / CI / headless-linux short-circuits.
|
|
4
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
5
|
-
import { openHostCpUrl } from '../host-cp.js';
|
|
6
|
-
const ORIGINAL_CI = process.env.CI;
|
|
7
|
-
const ORIGINAL_DISPLAY = process.env.DISPLAY;
|
|
8
|
-
const ORIGINAL_WAYLAND = process.env.WAYLAND_DISPLAY;
|
|
9
|
-
const ORIGINAL_PLATFORM = process.platform;
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
delete process.env.CI;
|
|
12
|
-
});
|
|
13
|
-
afterEach(() => {
|
|
14
|
-
if (ORIGINAL_CI !== undefined)
|
|
15
|
-
process.env.CI = ORIGINAL_CI;
|
|
16
|
-
if (ORIGINAL_DISPLAY !== undefined)
|
|
17
|
-
process.env.DISPLAY = ORIGINAL_DISPLAY;
|
|
18
|
-
if (ORIGINAL_WAYLAND !== undefined)
|
|
19
|
-
process.env.WAYLAND_DISPLAY = ORIGINAL_WAYLAND;
|
|
20
|
-
Object.defineProperty(process, 'platform', { value: ORIGINAL_PLATFORM });
|
|
21
|
-
});
|
|
22
|
-
describe('openHostCpUrl — skip paths', () => {
|
|
23
|
-
it('skips when CI=true', () => {
|
|
24
|
-
process.env.CI = 'true';
|
|
25
|
-
const result = openHostCpUrl('http://127.0.0.1:19000/world/test');
|
|
26
|
-
expect(result.opened).toBe(false);
|
|
27
|
-
expect(result.reason).toContain('CI');
|
|
28
|
-
});
|
|
29
|
-
it('skips when stdout is not a TTY (vitest runs piped)', () => {
|
|
30
|
-
// vitest's default reporter pipes stdout, so this is the natural
|
|
31
|
-
// state during the test run. CI=undefined, isTTY=false → skip.
|
|
32
|
-
delete process.env.CI;
|
|
33
|
-
const result = openHostCpUrl('http://127.0.0.1:19000/world/test');
|
|
34
|
-
// We can't always pin which path triggers (depends on vitest
|
|
35
|
-
// reporter / CI env), but the function MUST report opened=false
|
|
36
|
-
// here without throwing.
|
|
37
|
-
expect(result.opened).toBe(false);
|
|
38
|
-
expect(typeof result.reason).toBe('string');
|
|
39
|
-
expect(result.reason.length).toBeGreaterThan(0);
|
|
40
|
-
});
|
|
41
|
-
it('returns a structured shape (never throws)', () => {
|
|
42
|
-
// Defensive contract: openHostCpUrl is a UX helper and must
|
|
43
|
-
// never throw — failures must come back as
|
|
44
|
-
// {opened: false, reason: string}.
|
|
45
|
-
const result = openHostCpUrl('http://malformed-but-not-spawnable.local/');
|
|
46
|
-
expect(result).toHaveProperty('opened');
|
|
47
|
-
expect(typeof result.opened).toBe('boolean');
|
|
48
|
-
if (!result.opened) {
|
|
49
|
-
expect(typeof result.reason).toBe('string');
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
it('skips on linux without DISPLAY/WAYLAND_DISPLAY', () => {
|
|
53
|
-
Object.defineProperty(process, 'platform', { value: 'linux' });
|
|
54
|
-
delete process.env.DISPLAY;
|
|
55
|
-
delete process.env.WAYLAND_DISPLAY;
|
|
56
|
-
const result = openHostCpUrl('http://127.0.0.1:19000/world/test');
|
|
57
|
-
expect(result.opened).toBe(false);
|
|
58
|
-
// Either CI / non-TTY / headless-linux can short-circuit; assert
|
|
59
|
-
// we got SOME structured reason rather than a thrown exception.
|
|
60
|
-
expect(typeof result.reason).toBe('string');
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=openHostCpUrl.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openHostCpUrl.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/openHostCpUrl.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unit tests for `olam refresh` command.
|
|
3
|
-
*
|
|
4
|
-
* Tests:
|
|
5
|
-
* 1. collectCpSourceFiles — mirrors build-devbox.sh:38-77 logic
|
|
6
|
-
* 2. validateServerMjsPresent — sanity-check gate
|
|
7
|
-
* 3. Command parser — arg/flag validation
|
|
8
|
-
* 4. Snapshot test — actual standalone dir matches expected structure
|
|
9
|
-
*
|
|
10
|
-
* Run: `cd packages/cli && npx vitest run src/commands/__tests__/refresh.test.ts`
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=refresh.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/refresh.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|