@pleri/olam-cli 0.1.70 → 0.1.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +20 -1
  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,170 +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
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
13
- import * as fs from 'node:fs';
14
- import * as os from 'node:os';
15
- import * as path from 'node:path';
16
- import { Command } from 'commander';
17
- import { collectCpSourceFiles, validateServerMjsPresent } from '../refresh-helpers.js';
18
- // ── Helpers ─────────────────────────────────────────────────────────────────
19
- function makeFakeStandalone(files) {
20
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-test-standalone-'));
21
- for (const f of files) {
22
- const fullPath = path.join(dir, f);
23
- fs.mkdirSync(path.dirname(fullPath), { recursive: true });
24
- fs.writeFileSync(fullPath, `// ${f}`);
25
- }
26
- return dir;
27
- }
28
- // ── collectCpSourceFiles ─────────────────────────────────────────────────────
29
- describe('collectCpSourceFiles', () => {
30
- let tmpDir;
31
- beforeEach(() => {
32
- tmpDir = '';
33
- });
34
- afterEach(() => {
35
- if (tmpDir)
36
- fs.rmSync(tmpDir, { recursive: true, force: true });
37
- });
38
- it('collects top-level *.mjs excluding *.test.mjs', () => {
39
- tmpDir = makeFakeStandalone([
40
- 'server.mjs',
41
- 'stub.mjs',
42
- 'stub.test.mjs', // should be excluded
43
- 'api-files.mjs',
44
- ]);
45
- const entries = collectCpSourceFiles(tmpDir);
46
- const destPaths = entries.map(e => e.destRelPath).sort();
47
- expect(destPaths).toContain('server.mjs');
48
- expect(destPaths).toContain('stub.mjs');
49
- expect(destPaths).toContain('api-files.mjs');
50
- expect(destPaths).not.toContain('stub.test.mjs');
51
- });
52
- it('includes lib/*.mjs excluding lib/*.test.mjs', () => {
53
- tmpDir = makeFakeStandalone([
54
- 'server.mjs',
55
- 'lib/exec-with-status.mjs',
56
- 'lib/exec-with-status.test.mjs', // should be excluded
57
- ]);
58
- const entries = collectCpSourceFiles(tmpDir);
59
- const destPaths = entries.map(e => e.destRelPath).sort();
60
- expect(destPaths).toContain('lib/exec-with-status.mjs');
61
- expect(destPaths).not.toContain('lib/exec-with-status.test.mjs');
62
- });
63
- it('skips lib/ entirely when it does not exist', () => {
64
- tmpDir = makeFakeStandalone(['server.mjs', 'stub.mjs']);
65
- const entries = collectCpSourceFiles(tmpDir);
66
- const destPaths = entries.map(e => e.destRelPath);
67
- expect(destPaths.every(p => !p.startsWith('lib/'))).toBe(true);
68
- });
69
- it('returns srcPath values that exist on disk', () => {
70
- tmpDir = makeFakeStandalone(['server.mjs', 'lib/exec-with-status.mjs']);
71
- const entries = collectCpSourceFiles(tmpDir);
72
- for (const { srcPath } of entries) {
73
- expect(fs.existsSync(srcPath), `srcPath should exist: ${srcPath}`).toBe(true);
74
- }
75
- });
76
- it('throws when standalone dir does not exist', () => {
77
- expect(() => collectCpSourceFiles('/nonexistent/standalone')).toThrow(/not found/);
78
- });
79
- it('does not include non-.mjs files', () => {
80
- tmpDir = makeFakeStandalone(['server.mjs', 'package.json', 'README.md']);
81
- const entries = collectCpSourceFiles(tmpDir);
82
- const destPaths = entries.map(e => e.destRelPath);
83
- expect(destPaths).toContain('server.mjs');
84
- expect(destPaths).not.toContain('package.json');
85
- expect(destPaths).not.toContain('README.md');
86
- });
87
- });
88
- // ── validateServerMjsPresent ─────────────────────────────────────────────────
89
- describe('validateServerMjsPresent', () => {
90
- it('throws when server.mjs is absent', () => {
91
- const entries = [
92
- { srcPath: '/fake/stub.mjs', destRelPath: 'stub.mjs' },
93
- ];
94
- expect(() => validateServerMjsPresent(entries)).toThrow(/server\.mjs/);
95
- });
96
- it('passes when server.mjs is present', () => {
97
- const entries = [
98
- { srcPath: '/fake/server.mjs', destRelPath: 'server.mjs' },
99
- { srcPath: '/fake/stub.mjs', destRelPath: 'stub.mjs' },
100
- ];
101
- expect(() => validateServerMjsPresent(entries)).not.toThrow();
102
- });
103
- });
104
- function parseRefreshArgs(argv) {
105
- let result = { worldId: undefined, opts: {} };
106
- const program = new Command();
107
- program.exitOverride();
108
- program
109
- .command('refresh')
110
- .argument('[world]', 'World ID')
111
- .option('--all', 'Refresh every running world')
112
- .option('--no-restart', 'Copy files but skip restart')
113
- .option('--skip-build', 'Skip server.mjs check')
114
- .action((worldId, opts) => {
115
- result = { worldId, opts };
116
- });
117
- program.parse(['refresh', ...argv], { from: 'user' });
118
- return result;
119
- }
120
- describe('olam refresh — command parser', () => {
121
- it('parses a positional world ID', () => {
122
- const { worldId, opts } = parseRefreshArgs(['gold-sky-9120']);
123
- expect(worldId).toBe('gold-sky-9120');
124
- expect(opts.all).toBeUndefined();
125
- });
126
- it('parses --all without positional arg', () => {
127
- const { worldId, opts } = parseRefreshArgs(['--all']);
128
- expect(worldId).toBeUndefined();
129
- expect(opts.all).toBe(true);
130
- });
131
- it('--no-restart sets restart to false', () => {
132
- const { opts } = parseRefreshArgs(['test-world', '--no-restart']);
133
- expect(opts.restart).toBe(false);
134
- });
135
- it('--skip-build flag is recognised', () => {
136
- const { opts } = parseRefreshArgs(['test-world', '--skip-build']);
137
- expect(opts.skipBuild).toBe(true);
138
- });
139
- });
140
- // ── Snapshot: actual standalone/ matches build-devbox.sh expectations ────────
141
- describe('collectCpSourceFiles — actual standalone dir', () => {
142
- it('collects the actual standalone/ dir without error', () => {
143
- // This test is a canary: if it fails, the standalone dir is missing
144
- // or server.mjs is not present — which means build-devbox.sh would
145
- // also fail. File path is relative to this test file's compile-time
146
- // location; adjust if the test runner CWD changes.
147
- // Resolve relative to monorepo root from this file's location.
148
- // vitest runs from the package root; use process.cwd() as the anchor.
149
- const standaloneDir = path.resolve(process.cwd(), '../control-plane/standalone');
150
- if (!fs.existsSync(standaloneDir)) {
151
- // Skip gracefully when running in an environment without the full
152
- // monorepo (e.g. isolated package publish tests).
153
- console.warn(`SKIP: standalone dir not found at ${standaloneDir}`);
154
- return;
155
- }
156
- const entries = collectCpSourceFiles(standaloneDir);
157
- expect(entries.length).toBeGreaterThan(0);
158
- // server.mjs must be present (sanity-checked by build-devbox.sh too)
159
- const destPaths = entries.map(e => e.destRelPath);
160
- expect(destPaths).toContain('server.mjs');
161
- // No test files should sneak in
162
- const testFiles = destPaths.filter(p => p.endsWith('.test.mjs'));
163
- expect(testFiles, `test files leaked into source list: ${testFiles.join(', ')}`).toHaveLength(0);
164
- // All srcPaths must exist
165
- for (const { srcPath } of entries) {
166
- expect(fs.existsSync(srcPath), `srcPath missing: ${srcPath}`).toBe(true);
167
- }
168
- });
169
- });
170
- //# sourceMappingURL=refresh.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/refresh.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Tests for D2 — `olam status` machine-status extension (Phase D).
3
- *
4
- * getMachineStatus accepts injectable probe/loadCtx/readToken so no
5
- * @olam/adapters transitive dependency touches this test file.
6
- */
7
- export {};
8
- //# sourceMappingURL=status.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/status.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Tests for D2 — `olam status` machine-status extension (Phase D).
3
- *
4
- * getMachineStatus accepts injectable probe/loadCtx/readToken so no
5
- * @olam/adapters transitive dependency touches this test file.
6
- */
7
- import { describe, it, expect, vi } from 'vitest';
8
- describe('getMachineStatus (D2)', () => {
9
- it('returns host_cp=stopped when probe returns null', async () => {
10
- const { getMachineStatus } = await import('../status.js');
11
- const probe = vi.fn().mockResolvedValue(null);
12
- const loadCtx = vi.fn().mockResolvedValue({ ctx: null });
13
- const readToken = vi.fn().mockReturnValue(null);
14
- const ms = await getMachineStatus(probe, loadCtx, readToken);
15
- expect(ms.host_cp).toBe('stopped');
16
- expect(ms.port).toBe(19000);
17
- });
18
- it('returns host_cp=running when probe returns url', async () => {
19
- const { getMachineStatus } = await import('../status.js');
20
- const probe = vi.fn().mockResolvedValue({ url: 'http://127.0.0.1:19000', mode: 'container' });
21
- const loadCtx = vi.fn().mockResolvedValue({ ctx: null });
22
- const readToken = vi.fn().mockReturnValue('tok');
23
- const ms = await getMachineStatus(probe, loadCtx, readToken);
24
- expect(ms.host_cp).toBe('running');
25
- expect(ms.token_present).toBe(true);
26
- });
27
- it('counts worlds from context', async () => {
28
- const { getMachineStatus } = await import('../status.js');
29
- const probe = vi.fn().mockResolvedValue(null);
30
- const loadCtx = vi.fn().mockResolvedValue({
31
- ctx: { worldManager: { listWorlds: () => ['a', 'b', 'c'] } },
32
- });
33
- const readToken = vi.fn().mockReturnValue(null);
34
- const ms = await getMachineStatus(probe, loadCtx, readToken);
35
- expect(ms.worlds).toBe(3);
36
- });
37
- it('worlds=0 when context not available', async () => {
38
- const { getMachineStatus } = await import('../status.js');
39
- const probe = vi.fn().mockResolvedValue(null);
40
- const loadCtx = vi.fn().mockRejectedValue(new Error('not configured'));
41
- const readToken = vi.fn().mockReturnValue(null);
42
- const ms = await getMachineStatus(probe, loadCtx, readToken);
43
- expect(ms.worlds).toBe(0);
44
- });
45
- it('returns JSON-serializable object with all required fields', async () => {
46
- const { getMachineStatus } = await import('../status.js');
47
- const probe = vi.fn().mockResolvedValue(null);
48
- const loadCtx = vi.fn().mockResolvedValue({ ctx: null });
49
- const readToken = vi.fn().mockReturnValue(null);
50
- const ms = await getMachineStatus(probe, loadCtx, readToken);
51
- expect(ms).toHaveProperty('version');
52
- expect(ms).toHaveProperty('port');
53
- expect(ms).toHaveProperty('host_cp');
54
- expect(ms).toHaveProperty('token_present');
55
- expect(ms).toHaveProperty('worlds');
56
- expect(ms).toHaveProperty('update_available');
57
- expect(ms).toHaveProperty('last_update_check');
58
- // Verify it round-trips through JSON
59
- expect(() => JSON.stringify(ms)).not.toThrow();
60
- });
61
- });
62
- //# sourceMappingURL=status.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/status.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for D2 — `olam stop` command (Phase D).
3
- */
4
- export {};
5
- //# sourceMappingURL=stop.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/stop.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Tests for D2 — `olam stop` command (Phase D).
3
- */
4
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
5
- vi.mock('../host-cp.js', () => ({
6
- stopHostCp: vi.fn(),
7
- startHostCp: vi.fn(),
8
- readToken: vi.fn().mockReturnValue(null),
9
- probeHostCp: vi.fn().mockResolvedValue(null),
10
- HOST_CP_PORT: 19000,
11
- }));
12
- describe('doStop (D2)', () => {
13
- it('calls stopFn once', async () => {
14
- const { doStop } = await import('../stop.js');
15
- const stopFn = vi.fn().mockResolvedValue(undefined);
16
- await doStop(stopFn);
17
- expect(stopFn).toHaveBeenCalledOnce();
18
- });
19
- it('propagates stopFn failure via exitCode', async () => {
20
- const { doStop } = await import('../stop.js');
21
- const stopFn = vi.fn().mockImplementation(async () => {
22
- process.exitCode = 1;
23
- });
24
- const prev = process.exitCode;
25
- await doStop(stopFn);
26
- expect(process.exitCode).toBe(1);
27
- process.exitCode = prev;
28
- });
29
- });
30
- //# sourceMappingURL=stop.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/stop.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;IACxC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAC5C,YAAY,EAAE,KAAK;CACpB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACnD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,QAAQ,GAAG,IAA0B,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Tests for F1/F2 — `olam update` core install flow + flags.
3
- *
4
- * Injectable exec + readConfig + reconcile — no npm or filesystem side effects.
5
- */
6
- export {};
7
- //# sourceMappingURL=update.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/update.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,224 +0,0 @@
1
- /**
2
- * Tests for F1/F2 — `olam update` core install flow + flags.
3
- *
4
- * Injectable exec + readConfig + reconcile — no npm or filesystem side effects.
5
- */
6
- import { describe, it, expect, vi } from 'vitest';
7
- import { doUpdate, doCheck, doRollback, getCurrentVersion, readLastStable, writeLastStable, } from '../update.js';
8
- // Cut transitive @olam/adapters from the test graph
9
- vi.mock('../../lib/symlink-reconcile.js', () => ({
10
- reconcileSkillSymlinks: vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }),
11
- }));
12
- function makeExec(responses) {
13
- return (cmd) => {
14
- for (const [pat, res] of Object.entries(responses)) {
15
- if (cmd.includes(pat))
16
- return res;
17
- }
18
- return { exitCode: 0, stdout: '', stderr: '' };
19
- };
20
- }
21
- const okInstall = { exitCode: 0, stdout: '', stderr: '' };
22
- const failInstall = { exitCode: 1, stdout: '', stderr: 'E503 registry down' };
23
- const npmLsResult = {
24
- exitCode: 0,
25
- stdout: JSON.stringify({ dependencies: { '@pleri/olam-cli': { version: '0.1.4' } } }),
26
- stderr: '',
27
- };
28
- const npmLsNew = {
29
- exitCode: 0,
30
- stdout: JSON.stringify({ dependencies: { '@pleri/olam-cli': { version: '0.1.5' } } }),
31
- stderr: '',
32
- };
33
- const npmRootResult = { exitCode: 0, stdout: '/usr/local/lib/node_modules', stderr: '' };
34
- const noConfig = async () => null;
35
- const stableConfig = async () => ({ channel: 'stable' });
36
- describe('doUpdate (F1 core install flow)', () => {
37
- it('runs npm install with the configured channel', async () => {
38
- const calls = [];
39
- const exec = (cmd) => {
40
- calls.push(cmd);
41
- if (cmd.includes('npm ls'))
42
- return npmLsResult;
43
- if (cmd.includes('npm install'))
44
- return okInstall;
45
- if (cmd.includes('npm root'))
46
- return npmRootResult;
47
- return okInstall;
48
- };
49
- await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), stableConfig, exec);
50
- expect(calls.some((c) => c.includes('npm install -g @pleri/olam-cli@stable'))).toBe(true);
51
- });
52
- it('returns exitCode=0 and action=installed on success', async () => {
53
- const execCalls = { 'npm ls': npmLsNew, 'npm install': okInstall, 'npm root': npmRootResult };
54
- const exec = makeExec(execCalls);
55
- const result = await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), noConfig, exec);
56
- expect(result.action).toBe('installed');
57
- expect(result.exitCode).toBe(0);
58
- });
59
- it('auto-restores to prev version on npm failure', async () => {
60
- const calls = [];
61
- const exec = (cmd) => {
62
- calls.push(cmd);
63
- if (cmd.includes('npm ls'))
64
- return npmLsResult;
65
- if (cmd.includes('npm install -g @pleri/olam-cli@stable'))
66
- return failInstall;
67
- if (cmd.includes('npm install -g @pleri/olam-cli@0.1.4'))
68
- return okInstall; // restore
69
- return okInstall;
70
- };
71
- const result = await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), stableConfig, exec);
72
- expect(result.action).toBe('restored');
73
- expect(result.exitCode).toBe(11);
74
- const restoreCall = calls.find((c) => c.includes('npm install') && c.includes('0.1.4'));
75
- expect(restoreCall).toBeDefined();
76
- });
77
- it('returns exitCode=11 when install fails', async () => {
78
- const exec = makeExec({ 'npm ls': npmLsResult, 'npm install': failInstall });
79
- const result = await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), noConfig, exec);
80
- expect(result.exitCode).toBe(11);
81
- });
82
- it('calls reconcile on successful install', async () => {
83
- const reconMock = vi.fn().mockReturnValue({ added: ['olam-new'], removed: [], kept: [] });
84
- const exec = makeExec({ 'npm ls': npmLsNew, 'npm install': okInstall, 'npm root': npmRootResult });
85
- const result = await doUpdate({ quiet: true }, exec, reconMock, stableConfig, exec);
86
- expect(reconMock).toHaveBeenCalled();
87
- expect(result.symlinks?.added).toContain('olam-new');
88
- });
89
- it('does NOT call reconcile on failed install', async () => {
90
- const reconMock = vi.fn();
91
- const exec = makeExec({ 'npm ls': npmLsResult, 'npm install': failInstall });
92
- await doUpdate({ quiet: true }, exec, reconMock, noConfig, exec);
93
- expect(reconMock).not.toHaveBeenCalled();
94
- });
95
- it('uses channel from config when not specified in opts', async () => {
96
- const calls = [];
97
- const exec = (cmd) => {
98
- calls.push(cmd);
99
- if (cmd.includes('npm ls'))
100
- return npmLsResult;
101
- return okInstall;
102
- };
103
- const cfg = async () => ({ channel: 'beta' });
104
- await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), cfg, exec);
105
- expect(calls.some((c) => c.includes('@beta'))).toBe(true);
106
- });
107
- });
108
- describe('getCurrentVersion', () => {
109
- it('parses version from npm ls --json output', () => {
110
- const exec = makeExec({ 'npm ls': npmLsResult });
111
- expect(getCurrentVersion(exec)).toBe('0.1.4');
112
- });
113
- it('returns null when npm ls fails', () => {
114
- const exec = makeExec({ 'npm ls': { exitCode: 1, stdout: '', stderr: '' } });
115
- expect(getCurrentVersion(exec)).toBeNull();
116
- });
117
- });
118
- describe('readLastStable / writeLastStable', () => {
119
- it('round-trips version through a temp file', () => {
120
- const tmpFile = `/tmp/olam-test-last-stable-${Date.now()}.txt`;
121
- writeLastStable('0.1.3', tmpFile);
122
- expect(readLastStable(tmpFile)).toBe('0.1.3');
123
- });
124
- it('returns null for missing file', () => {
125
- expect(readLastStable('/tmp/nonexistent-olam-stable-xyz.txt')).toBeNull();
126
- });
127
- });
128
- // ── F2 flag tests ────────────────────────────────────────────────────────────
129
- describe('doCheck (F2 --check)', () => {
130
- it('returns already-current when current matches stable dist-tag', async () => {
131
- const exec = makeExec({
132
- 'npm ls': { exitCode: 0, stdout: JSON.stringify({ dependencies: { '@pleri/olam-cli': { version: '0.1.5' } } }), stderr: '' },
133
- 'npm view': { exitCode: 0, stdout: '0.1.5\n', stderr: '' },
134
- });
135
- const result = await doCheck(exec);
136
- expect(result.action).toBe('already-current');
137
- expect(result.exitCode).toBe(10);
138
- });
139
- it('returns update-available when newer version exists', async () => {
140
- const exec = makeExec({
141
- 'npm ls': { exitCode: 0, stdout: JSON.stringify({ dependencies: { '@pleri/olam-cli': { version: '0.1.4' } } }), stderr: '' },
142
- 'npm view': { exitCode: 0, stdout: '0.1.5\n', stderr: '' },
143
- });
144
- const result = await doCheck(exec);
145
- expect(result.action).toBe('update-available');
146
- expect(result.exitCode).toBe(0);
147
- expect(result.current).toBe('0.1.4');
148
- expect(result.latest).toBe('0.1.5');
149
- });
150
- });
151
- // ── F3 freeze / force / upgrade_blocked ──────────────────────────────────────
152
- describe('doUpdate (F3 freeze + force)', () => {
153
- it('returns failed when auto_update=false and no --force', async () => {
154
- const frozenConfig = async () => ({ channel: 'stable', auto_update: false });
155
- const exec = makeExec({ 'npm ls': npmLsResult, 'npm install': okInstall, 'npm root': npmRootResult });
156
- const result = await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), frozenConfig, exec);
157
- expect(result.exitCode).toBe(11);
158
- expect(result.action).toBe('failed');
159
- });
160
- it('proceeds when auto_update=false but --force is set', async () => {
161
- const frozenConfig = async () => ({ channel: 'stable', auto_update: false });
162
- const exec = makeExec({ 'npm ls': npmLsNew, 'npm install': okInstall, 'npm root': npmRootResult });
163
- const result = await doUpdate({ quiet: true, force: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), frozenConfig, exec);
164
- expect(result.action).toBe('installed');
165
- expect(result.exitCode).toBe(0);
166
- });
167
- it('blocks install when upgrade_blocked is true (without --force)', async () => {
168
- const exec = (cmd) => {
169
- if (cmd.includes('npm ls'))
170
- return npmLsResult;
171
- // isUpgradeBlocked now issues a single npm view ... olam.upgrade_blocked command
172
- if (cmd.includes('olam.upgrade_blocked'))
173
- return { exitCode: 0, stdout: 'true', stderr: '' };
174
- return okInstall;
175
- };
176
- const result = await doUpdate({ quiet: true }, exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), noConfig, exec);
177
- expect(result.exitCode).toBe(11);
178
- });
179
- });
180
- describe('doRollback (F2 --rollback)', () => {
181
- it('returns nothing-to-rollback (exit 14) when no cache file', async () => {
182
- const exec = makeExec({ 'npm ls': { exitCode: 1, stdout: '', stderr: '' } });
183
- // Ensure no temp cache exists — use a fresh instance without a pre-written file
184
- // doRollback reads LAST_STABLE_FILE by default; since it won't exist in CI → exit 14
185
- // We use the injectable path by ensuring writeLastStable hasn't been called for this file.
186
- // In this test, we rely on the global readLastStable returning null for missing file.
187
- // However, to avoid test pollution from the F1 round-trip test, skip mocking the file.
188
- // Just exercise the path via injected exec that has no npm ls hit.
189
- const result = await doRollback(exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), exec);
190
- // If last-stable.txt exists from the prior round-trip test in /tmp, this may not be 14.
191
- // Accept either nothing-to-rollback OR already-at-cached as valid no-prev behaviors.
192
- expect([14, 0]).toContain(result.exitCode);
193
- });
194
- it('installs the previous version on rollback (via last-stable.txt global path)', async () => {
195
- // Write '0.1.3' to the default LAST_STABLE_FILE so doRollback can read it
196
- writeLastStable('0.1.3');
197
- const calls = [];
198
- const exec = (cmd) => {
199
- calls.push(cmd);
200
- if (cmd.includes('npm ls'))
201
- return { exitCode: 0, stdout: JSON.stringify({ dependencies: { '@pleri/olam-cli': { version: '0.1.5' } } }), stderr: '' };
202
- if (cmd.includes('npm install'))
203
- return okInstall;
204
- if (cmd.includes('npm root'))
205
- return npmRootResult;
206
- return okInstall;
207
- };
208
- const result = await doRollback(exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), exec);
209
- expect(result.action).toBe('rolled-back');
210
- expect(result.restoredVersion).toBe('0.1.3');
211
- expect(calls.some((c) => c.includes('npm install') && c.includes('0.1.3'))).toBe(true);
212
- });
213
- it('returns already-at-cached (OQ26) when current == last-stable', async () => {
214
- // Write the "prev" version as the same as current
215
- writeLastStable('0.1.5');
216
- const exec = makeExec({
217
- 'npm ls': { exitCode: 0, stdout: JSON.stringify({ dependencies: { '@pleri/olam-cli': { version: '0.1.5' } } }), stderr: '' },
218
- });
219
- const result = await doRollback(exec, vi.fn().mockReturnValue({ added: [], removed: [], kept: [] }), exec);
220
- expect(result.action).toBe('already-at-cached');
221
- expect(result.exitCode).toBe(0);
222
- });
223
- });
224
- //# sourceMappingURL=update.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/update.test.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Verifies Phase 2a A4 sequential build orchestration: `olam upgrade` invokes
3
- * `bash build-auth.sh` → `bash build-devbox.sh` → `bash build-host-cp.sh` in
4
- * that order with `OLAM_TAG=olam-next` env, and the devbox step uses inherit
5
- * stdio (live tee) for cold-cache visibility.
6
- *
7
- * The CLI source is read as text and parsed for the load-bearing invariants:
8
- * - Build scripts listed in correct order
9
- * - OLAM_TAG=olam-next env propagated
10
- * - Devbox uses tee (inherit stdio) per F13 audit fix
11
- * - Other two use silent runStep capture
12
- *
13
- * Direct integration testing (spawning real `bash build-*.sh`) lives at
14
- * tests/integration/build-scripts-olam-tag.sh — manual smoke; not in CI.
15
- *
16
- * Run: `cd packages/cli && npx vitest run src/commands/__tests__/upgrade.all-three.test.ts`
17
- */
18
- export {};
19
- //# sourceMappingURL=upgrade.all-three.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upgrade.all-three.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/upgrade.all-three.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}