@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.
Files changed (241) hide show
  1. package/dist/commands/create.d.ts.map +1 -1
  2. package/dist/commands/create.js +2 -0
  3. package/dist/commands/create.js.map +1 -1
  4. package/dist/commands/runbooks.d.ts +13 -0
  5. package/dist/commands/runbooks.d.ts.map +1 -0
  6. package/dist/commands/runbooks.js +189 -0
  7. package/dist/commands/runbooks.js.map +1 -0
  8. package/dist/commands/world-snapshot.d.ts +1 -0
  9. package/dist/commands/world-snapshot.d.ts.map +1 -1
  10. package/dist/commands/world-snapshot.js +126 -1
  11. package/dist/commands/world-snapshot.js.map +1 -1
  12. package/dist/commands/worldspec/compile.d.ts +20 -0
  13. package/dist/commands/worldspec/compile.d.ts.map +1 -0
  14. package/dist/commands/worldspec/compile.js +130 -0
  15. package/dist/commands/worldspec/compile.js.map +1 -0
  16. package/dist/commands/worldspec/index.d.ts +12 -0
  17. package/dist/commands/worldspec/index.d.ts.map +1 -0
  18. package/dist/commands/worldspec/index.js +23 -0
  19. package/dist/commands/worldspec/index.js.map +1 -0
  20. package/dist/commands/worldspec/init.d.ts +15 -0
  21. package/dist/commands/worldspec/init.d.ts.map +1 -0
  22. package/dist/commands/worldspec/init.js +166 -0
  23. package/dist/commands/worldspec/init.js.map +1 -0
  24. package/dist/commands/worldspec/schema.d.ts +11 -0
  25. package/dist/commands/worldspec/schema.d.ts.map +1 -0
  26. package/dist/commands/worldspec/schema.js +55 -0
  27. package/dist/commands/worldspec/schema.js.map +1 -0
  28. package/dist/commands/worldspec/validate.d.ts +15 -0
  29. package/dist/commands/worldspec/validate.d.ts.map +1 -0
  30. package/dist/commands/worldspec/validate.js +66 -0
  31. package/dist/commands/worldspec/validate.js.map +1 -0
  32. package/dist/exit-codes.d.ts +32 -0
  33. package/dist/exit-codes.d.ts.map +1 -1
  34. package/dist/exit-codes.js +32 -0
  35. package/dist/exit-codes.js.map +1 -1
  36. package/dist/image-digests.json +5 -5
  37. package/dist/index.js +4379 -897
  38. package/dist/index.js.map +1 -1
  39. package/dist/mcp-server.js +1252 -286
  40. package/host-cp/src/global-config-source.mjs +71 -0
  41. package/host-cp/src/listening-server-poller.mjs +1 -1
  42. package/host-cp/src/plan-orchestrator.mjs +21 -2
  43. package/host-cp/src/port-bridge-manager.mjs +1 -1
  44. package/host-cp/src/server.mjs +46 -7
  45. package/package.json +4 -2
  46. package/dist/__tests__/audit-publish-deps-contract.test.d.ts +0 -26
  47. package/dist/__tests__/audit-publish-deps-contract.test.d.ts.map +0 -1
  48. package/dist/__tests__/audit-publish-deps-contract.test.js +0 -86
  49. package/dist/__tests__/audit-publish-deps-contract.test.js.map +0 -1
  50. package/dist/__tests__/auth-status.test.d.ts +0 -2
  51. package/dist/__tests__/auth-status.test.d.ts.map +0 -1
  52. package/dist/__tests__/auth-status.test.js +0 -291
  53. package/dist/__tests__/auth-status.test.js.map +0 -1
  54. package/dist/__tests__/auth-upgrade.test.d.ts +0 -9
  55. package/dist/__tests__/auth-upgrade.test.d.ts.map +0 -1
  56. package/dist/__tests__/auth-upgrade.test.js +0 -397
  57. package/dist/__tests__/auth-upgrade.test.js.map +0 -1
  58. package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts +0 -22
  59. package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts.map +0 -1
  60. package/dist/__tests__/bootstrap-tag-mcp-auth.test.js +0 -63
  61. package/dist/__tests__/bootstrap-tag-mcp-auth.test.js.map +0 -1
  62. package/dist/__tests__/cli-mcp-revoke.test.d.ts +0 -8
  63. package/dist/__tests__/cli-mcp-revoke.test.d.ts.map +0 -1
  64. package/dist/__tests__/cli-mcp-revoke.test.js +0 -124
  65. package/dist/__tests__/cli-mcp-revoke.test.js.map +0 -1
  66. package/dist/__tests__/config.test.d.ts +0 -2
  67. package/dist/__tests__/config.test.d.ts.map +0 -1
  68. package/dist/__tests__/config.test.js +0 -95
  69. package/dist/__tests__/config.test.js.map +0 -1
  70. package/dist/__tests__/create-app-urls.test.d.ts +0 -2
  71. package/dist/__tests__/create-app-urls.test.d.ts.map +0 -1
  72. package/dist/__tests__/create-app-urls.test.js +0 -102
  73. package/dist/__tests__/create-app-urls.test.js.map +0 -1
  74. package/dist/__tests__/docker-host.test.d.ts +0 -14
  75. package/dist/__tests__/docker-host.test.d.ts.map +0 -1
  76. package/dist/__tests__/docker-host.test.js +0 -109
  77. package/dist/__tests__/docker-host.test.js.map +0 -1
  78. package/dist/__tests__/enter.test.d.ts +0 -2
  79. package/dist/__tests__/enter.test.d.ts.map +0 -1
  80. package/dist/__tests__/enter.test.js +0 -90
  81. package/dist/__tests__/enter.test.js.map +0 -1
  82. package/dist/__tests__/help-output.test.d.ts +0 -2
  83. package/dist/__tests__/help-output.test.d.ts.map +0 -1
  84. package/dist/__tests__/help-output.test.js +0 -74
  85. package/dist/__tests__/help-output.test.js.map +0 -1
  86. package/dist/__tests__/host-cp-gh-token.test.d.ts +0 -9
  87. package/dist/__tests__/host-cp-gh-token.test.d.ts.map +0 -1
  88. package/dist/__tests__/host-cp-gh-token.test.js +0 -129
  89. package/dist/__tests__/host-cp-gh-token.test.js.map +0 -1
  90. package/dist/__tests__/host-cp.test.d.ts +0 -9
  91. package/dist/__tests__/host-cp.test.d.ts.map +0 -1
  92. package/dist/__tests__/host-cp.test.js +0 -335
  93. package/dist/__tests__/host-cp.test.js.map +0 -1
  94. package/dist/__tests__/image-presence.test.d.ts +0 -2
  95. package/dist/__tests__/image-presence.test.d.ts.map +0 -1
  96. package/dist/__tests__/image-presence.test.js +0 -44
  97. package/dist/__tests__/image-presence.test.js.map +0 -1
  98. package/dist/__tests__/install-root.test.d.ts +0 -2
  99. package/dist/__tests__/install-root.test.d.ts.map +0 -1
  100. package/dist/__tests__/install-root.test.js +0 -119
  101. package/dist/__tests__/install-root.test.js.map +0 -1
  102. package/dist/__tests__/keys.test.d.ts +0 -9
  103. package/dist/__tests__/keys.test.d.ts.map +0 -1
  104. package/dist/__tests__/keys.test.js +0 -145
  105. package/dist/__tests__/keys.test.js.map +0 -1
  106. package/dist/__tests__/logs.test.d.ts +0 -9
  107. package/dist/__tests__/logs.test.d.ts.map +0 -1
  108. package/dist/__tests__/logs.test.js +0 -124
  109. package/dist/__tests__/logs.test.js.map +0 -1
  110. package/dist/__tests__/mcp-import.test.d.ts +0 -11
  111. package/dist/__tests__/mcp-import.test.d.ts.map +0 -1
  112. package/dist/__tests__/mcp-import.test.js +0 -134
  113. package/dist/__tests__/mcp-import.test.js.map +0 -1
  114. package/dist/__tests__/protocol-version.test.d.ts +0 -2
  115. package/dist/__tests__/protocol-version.test.d.ts.map +0 -1
  116. package/dist/__tests__/protocol-version.test.js +0 -170
  117. package/dist/__tests__/protocol-version.test.js.map +0 -1
  118. package/dist/__tests__/ps.test.d.ts +0 -2
  119. package/dist/__tests__/ps.test.d.ts.map +0 -1
  120. package/dist/__tests__/ps.test.js +0 -172
  121. package/dist/__tests__/ps.test.js.map +0 -1
  122. package/dist/__tests__/registry-allowlist.test.d.ts +0 -2
  123. package/dist/__tests__/registry-allowlist.test.d.ts.map +0 -1
  124. package/dist/__tests__/registry-allowlist.test.js +0 -129
  125. package/dist/__tests__/registry-allowlist.test.js.map +0 -1
  126. package/dist/__tests__/services.test.d.ts +0 -8
  127. package/dist/__tests__/services.test.d.ts.map +0 -1
  128. package/dist/__tests__/services.test.js +0 -185
  129. package/dist/__tests__/services.test.js.map +0 -1
  130. package/dist/__tests__/status-app-urls.test.d.ts +0 -2
  131. package/dist/__tests__/status-app-urls.test.d.ts.map +0 -1
  132. package/dist/__tests__/status-app-urls.test.js +0 -125
  133. package/dist/__tests__/status-app-urls.test.js.map +0 -1
  134. package/dist/__tests__/upgrade-gh-token-contract.test.d.ts +0 -19
  135. package/dist/__tests__/upgrade-gh-token-contract.test.d.ts.map +0 -1
  136. package/dist/__tests__/upgrade-gh-token-contract.test.js +0 -63
  137. package/dist/__tests__/upgrade-gh-token-contract.test.js.map +0 -1
  138. package/dist/__tests__/upgrade.test.d.ts +0 -9
  139. package/dist/__tests__/upgrade.test.d.ts.map +0 -1
  140. package/dist/__tests__/upgrade.test.js +0 -586
  141. package/dist/__tests__/upgrade.test.js.map +0 -1
  142. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts +0 -6
  143. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts.map +0 -1
  144. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js +0 -26
  145. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js.map +0 -1
  146. package/dist/commands/__tests__/begin.test.d.ts +0 -7
  147. package/dist/commands/__tests__/begin.test.d.ts.map +0 -1
  148. package/dist/commands/__tests__/begin.test.js +0 -72
  149. package/dist/commands/__tests__/begin.test.js.map +0 -1
  150. package/dist/commands/__tests__/bootstrap.test.d.ts +0 -2
  151. package/dist/commands/__tests__/bootstrap.test.d.ts.map +0 -1
  152. package/dist/commands/__tests__/bootstrap.test.js +0 -370
  153. package/dist/commands/__tests__/bootstrap.test.js.map +0 -1
  154. package/dist/commands/__tests__/carry-uncommitted.test.d.ts +0 -14
  155. package/dist/commands/__tests__/carry-uncommitted.test.d.ts.map +0 -1
  156. package/dist/commands/__tests__/carry-uncommitted.test.js +0 -83
  157. package/dist/commands/__tests__/carry-uncommitted.test.js.map +0 -1
  158. package/dist/commands/__tests__/clean.test.d.ts +0 -9
  159. package/dist/commands/__tests__/clean.test.d.ts.map +0 -1
  160. package/dist/commands/__tests__/clean.test.js +0 -105
  161. package/dist/commands/__tests__/clean.test.js.map +0 -1
  162. package/dist/commands/__tests__/crystallize.test.d.ts +0 -2
  163. package/dist/commands/__tests__/crystallize.test.d.ts.map +0 -1
  164. package/dist/commands/__tests__/crystallize.test.js +0 -133
  165. package/dist/commands/__tests__/crystallize.test.js.map +0 -1
  166. package/dist/commands/__tests__/diagnose.test.d.ts +0 -9
  167. package/dist/commands/__tests__/diagnose.test.d.ts.map +0 -1
  168. package/dist/commands/__tests__/diagnose.test.js +0 -108
  169. package/dist/commands/__tests__/diagnose.test.js.map +0 -1
  170. package/dist/commands/__tests__/openHostCpUrl.test.d.ts +0 -2
  171. package/dist/commands/__tests__/openHostCpUrl.test.d.ts.map +0 -1
  172. package/dist/commands/__tests__/openHostCpUrl.test.js +0 -63
  173. package/dist/commands/__tests__/openHostCpUrl.test.js.map +0 -1
  174. package/dist/commands/__tests__/refresh.test.d.ts +0 -13
  175. package/dist/commands/__tests__/refresh.test.d.ts.map +0 -1
  176. package/dist/commands/__tests__/refresh.test.js +0 -170
  177. package/dist/commands/__tests__/refresh.test.js.map +0 -1
  178. package/dist/commands/__tests__/status.test.d.ts +0 -8
  179. package/dist/commands/__tests__/status.test.d.ts.map +0 -1
  180. package/dist/commands/__tests__/status.test.js +0 -62
  181. package/dist/commands/__tests__/status.test.js.map +0 -1
  182. package/dist/commands/__tests__/stop.test.d.ts +0 -5
  183. package/dist/commands/__tests__/stop.test.d.ts.map +0 -1
  184. package/dist/commands/__tests__/stop.test.js +0 -30
  185. package/dist/commands/__tests__/stop.test.js.map +0 -1
  186. package/dist/commands/__tests__/update.test.d.ts +0 -7
  187. package/dist/commands/__tests__/update.test.d.ts.map +0 -1
  188. package/dist/commands/__tests__/update.test.js +0 -224
  189. package/dist/commands/__tests__/update.test.js.map +0 -1
  190. package/dist/commands/__tests__/upgrade.all-three.test.d.ts +0 -19
  191. package/dist/commands/__tests__/upgrade.all-three.test.d.ts.map +0 -1
  192. package/dist/commands/__tests__/upgrade.all-three.test.js +0 -80
  193. package/dist/commands/__tests__/upgrade.all-three.test.js.map +0 -1
  194. package/dist/commands/__tests__/upgrade.compose-path.test.d.ts +0 -20
  195. package/dist/commands/__tests__/upgrade.compose-path.test.d.ts.map +0 -1
  196. package/dist/commands/__tests__/upgrade.compose-path.test.js +0 -140
  197. package/dist/commands/__tests__/upgrade.compose-path.test.js.map +0 -1
  198. package/dist/commands/__tests__/upgrade.history.test.d.ts +0 -15
  199. package/dist/commands/__tests__/upgrade.history.test.d.ts.map +0 -1
  200. package/dist/commands/__tests__/upgrade.history.test.js +0 -199
  201. package/dist/commands/__tests__/upgrade.history.test.js.map +0 -1
  202. package/dist/commands/__tests__/upgrade.lock.test.d.ts +0 -15
  203. package/dist/commands/__tests__/upgrade.lock.test.d.ts.map +0 -1
  204. package/dist/commands/__tests__/upgrade.lock.test.js +0 -253
  205. package/dist/commands/__tests__/upgrade.lock.test.js.map +0 -1
  206. package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts +0 -21
  207. package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts.map +0 -1
  208. package/dist/commands/__tests__/upgrade.olam-tag.test.js +0 -114
  209. package/dist/commands/__tests__/upgrade.olam-tag.test.js.map +0 -1
  210. package/dist/commands/__tests__/upgrade.poll.test.d.ts +0 -14
  211. package/dist/commands/__tests__/upgrade.poll.test.d.ts.map +0 -1
  212. package/dist/commands/__tests__/upgrade.poll.test.js +0 -136
  213. package/dist/commands/__tests__/upgrade.poll.test.js.map +0 -1
  214. package/dist/commands/__tests__/upgrade.recreate.test.d.ts +0 -17
  215. package/dist/commands/__tests__/upgrade.recreate.test.d.ts.map +0 -1
  216. package/dist/commands/__tests__/upgrade.recreate.test.js +0 -83
  217. package/dist/commands/__tests__/upgrade.recreate.test.js.map +0 -1
  218. package/dist/commands/__tests__/upgrade.rollback.test.d.ts +0 -12
  219. package/dist/commands/__tests__/upgrade.rollback.test.d.ts.map +0 -1
  220. package/dist/commands/__tests__/upgrade.rollback.test.js +0 -255
  221. package/dist/commands/__tests__/upgrade.rollback.test.js.map +0 -1
  222. package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts +0 -12
  223. package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts.map +0 -1
  224. package/dist/commands/__tests__/upgrade.sha-capture.test.js +0 -63
  225. package/dist/commands/__tests__/upgrade.sha-capture.test.js.map +0 -1
  226. package/dist/commands/__tests__/upgrade.smoke.test.d.ts +0 -19
  227. package/dist/commands/__tests__/upgrade.smoke.test.d.ts.map +0 -1
  228. package/dist/commands/__tests__/upgrade.smoke.test.js +0 -87
  229. package/dist/commands/__tests__/upgrade.smoke.test.js.map +0 -1
  230. package/dist/commands/__tests__/upgrade.swap.test.d.ts +0 -19
  231. package/dist/commands/__tests__/upgrade.swap.test.d.ts.map +0 -1
  232. package/dist/commands/__tests__/upgrade.swap.test.js +0 -312
  233. package/dist/commands/__tests__/upgrade.swap.test.js.map +0 -1
  234. package/dist/commands/__tests__/world-upgrade.test.d.ts +0 -8
  235. package/dist/commands/__tests__/world-upgrade.test.d.ts.map +0 -1
  236. package/dist/commands/__tests__/world-upgrade.test.js +0 -73
  237. package/dist/commands/__tests__/world-upgrade.test.js.map +0 -1
  238. package/dist/lib/__tests__/symlink-reconcile.test.d.ts +0 -2
  239. package/dist/lib/__tests__/symlink-reconcile.test.d.ts.map +0 -1
  240. package/dist/lib/__tests__/symlink-reconcile.test.js +0 -106
  241. 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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=crystallize.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=openHostCpUrl.test.d.ts.map
@@ -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"}