@pleri/olam-cli 0.1.69 → 0.1.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/cli-version.d.ts +16 -0
  2. package/dist/cli-version.d.ts.map +1 -0
  3. package/dist/cli-version.js +39 -0
  4. package/dist/cli-version.js.map +1 -0
  5. package/dist/commands/create.d.ts.map +1 -1
  6. package/dist/commands/create.js +2 -0
  7. package/dist/commands/create.js.map +1 -1
  8. package/dist/commands/host-cp.d.ts.map +1 -1
  9. package/dist/commands/host-cp.js +10 -0
  10. package/dist/commands/host-cp.js.map +1 -1
  11. package/dist/commands/runbooks.d.ts +13 -0
  12. package/dist/commands/runbooks.d.ts.map +1 -0
  13. package/dist/commands/runbooks.js +189 -0
  14. package/dist/commands/runbooks.js.map +1 -0
  15. package/dist/commands/world-snapshot.d.ts +1 -0
  16. package/dist/commands/world-snapshot.d.ts.map +1 -1
  17. package/dist/commands/world-snapshot.js +126 -1
  18. package/dist/commands/world-snapshot.js.map +1 -1
  19. package/dist/commands/worldspec/compile.d.ts +20 -0
  20. package/dist/commands/worldspec/compile.d.ts.map +1 -0
  21. package/dist/commands/worldspec/compile.js +130 -0
  22. package/dist/commands/worldspec/compile.js.map +1 -0
  23. package/dist/commands/worldspec/index.d.ts +12 -0
  24. package/dist/commands/worldspec/index.d.ts.map +1 -0
  25. package/dist/commands/worldspec/index.js +23 -0
  26. package/dist/commands/worldspec/index.js.map +1 -0
  27. package/dist/commands/worldspec/init.d.ts +15 -0
  28. package/dist/commands/worldspec/init.d.ts.map +1 -0
  29. package/dist/commands/worldspec/init.js +166 -0
  30. package/dist/commands/worldspec/init.js.map +1 -0
  31. package/dist/commands/worldspec/schema.d.ts +11 -0
  32. package/dist/commands/worldspec/schema.d.ts.map +1 -0
  33. package/dist/commands/worldspec/schema.js +55 -0
  34. package/dist/commands/worldspec/schema.js.map +1 -0
  35. package/dist/commands/worldspec/validate.d.ts +15 -0
  36. package/dist/commands/worldspec/validate.d.ts.map +1 -0
  37. package/dist/commands/worldspec/validate.js +66 -0
  38. package/dist/commands/worldspec/validate.js.map +1 -0
  39. package/dist/exit-codes.d.ts +32 -0
  40. package/dist/exit-codes.d.ts.map +1 -1
  41. package/dist/exit-codes.js +32 -0
  42. package/dist/exit-codes.js.map +1 -1
  43. package/dist/image-digests.json +5 -5
  44. package/dist/index.js +4726 -1231
  45. package/dist/index.js.map +1 -1
  46. package/dist/mcp-server.js +1424 -321
  47. package/host-cp/compose.yaml +6 -0
  48. package/host-cp/src/global-config-source.mjs +71 -0
  49. package/host-cp/src/listening-server-poller.mjs +1 -1
  50. package/host-cp/src/plan-orchestrator.mjs +20 -1
  51. package/host-cp/src/port-bridge-manager.mjs +1 -1
  52. package/host-cp/src/server.mjs +46 -7
  53. package/host-cp/src/version-status.mjs +36 -0
  54. package/package.json +4 -2
  55. package/dist/__tests__/audit-publish-deps-contract.test.d.ts +0 -26
  56. package/dist/__tests__/audit-publish-deps-contract.test.d.ts.map +0 -1
  57. package/dist/__tests__/audit-publish-deps-contract.test.js +0 -86
  58. package/dist/__tests__/audit-publish-deps-contract.test.js.map +0 -1
  59. package/dist/__tests__/auth-status.test.d.ts +0 -2
  60. package/dist/__tests__/auth-status.test.d.ts.map +0 -1
  61. package/dist/__tests__/auth-status.test.js +0 -291
  62. package/dist/__tests__/auth-status.test.js.map +0 -1
  63. package/dist/__tests__/auth-upgrade.test.d.ts +0 -9
  64. package/dist/__tests__/auth-upgrade.test.d.ts.map +0 -1
  65. package/dist/__tests__/auth-upgrade.test.js +0 -397
  66. package/dist/__tests__/auth-upgrade.test.js.map +0 -1
  67. package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts +0 -22
  68. package/dist/__tests__/bootstrap-tag-mcp-auth.test.d.ts.map +0 -1
  69. package/dist/__tests__/bootstrap-tag-mcp-auth.test.js +0 -63
  70. package/dist/__tests__/bootstrap-tag-mcp-auth.test.js.map +0 -1
  71. package/dist/__tests__/cli-mcp-revoke.test.d.ts +0 -8
  72. package/dist/__tests__/cli-mcp-revoke.test.d.ts.map +0 -1
  73. package/dist/__tests__/cli-mcp-revoke.test.js +0 -124
  74. package/dist/__tests__/cli-mcp-revoke.test.js.map +0 -1
  75. package/dist/__tests__/config.test.d.ts +0 -2
  76. package/dist/__tests__/config.test.d.ts.map +0 -1
  77. package/dist/__tests__/config.test.js +0 -95
  78. package/dist/__tests__/config.test.js.map +0 -1
  79. package/dist/__tests__/create-app-urls.test.d.ts +0 -2
  80. package/dist/__tests__/create-app-urls.test.d.ts.map +0 -1
  81. package/dist/__tests__/create-app-urls.test.js +0 -102
  82. package/dist/__tests__/create-app-urls.test.js.map +0 -1
  83. package/dist/__tests__/docker-host.test.d.ts +0 -14
  84. package/dist/__tests__/docker-host.test.d.ts.map +0 -1
  85. package/dist/__tests__/docker-host.test.js +0 -109
  86. package/dist/__tests__/docker-host.test.js.map +0 -1
  87. package/dist/__tests__/enter.test.d.ts +0 -2
  88. package/dist/__tests__/enter.test.d.ts.map +0 -1
  89. package/dist/__tests__/enter.test.js +0 -90
  90. package/dist/__tests__/enter.test.js.map +0 -1
  91. package/dist/__tests__/help-output.test.d.ts +0 -2
  92. package/dist/__tests__/help-output.test.d.ts.map +0 -1
  93. package/dist/__tests__/help-output.test.js +0 -74
  94. package/dist/__tests__/help-output.test.js.map +0 -1
  95. package/dist/__tests__/host-cp-gh-token.test.d.ts +0 -9
  96. package/dist/__tests__/host-cp-gh-token.test.d.ts.map +0 -1
  97. package/dist/__tests__/host-cp-gh-token.test.js +0 -119
  98. package/dist/__tests__/host-cp-gh-token.test.js.map +0 -1
  99. package/dist/__tests__/host-cp.test.d.ts +0 -9
  100. package/dist/__tests__/host-cp.test.d.ts.map +0 -1
  101. package/dist/__tests__/host-cp.test.js +0 -327
  102. package/dist/__tests__/host-cp.test.js.map +0 -1
  103. package/dist/__tests__/image-presence.test.d.ts +0 -2
  104. package/dist/__tests__/image-presence.test.d.ts.map +0 -1
  105. package/dist/__tests__/image-presence.test.js +0 -44
  106. package/dist/__tests__/image-presence.test.js.map +0 -1
  107. package/dist/__tests__/install-root.test.d.ts +0 -2
  108. package/dist/__tests__/install-root.test.d.ts.map +0 -1
  109. package/dist/__tests__/install-root.test.js +0 -119
  110. package/dist/__tests__/install-root.test.js.map +0 -1
  111. package/dist/__tests__/keys.test.d.ts +0 -9
  112. package/dist/__tests__/keys.test.d.ts.map +0 -1
  113. package/dist/__tests__/keys.test.js +0 -145
  114. package/dist/__tests__/keys.test.js.map +0 -1
  115. package/dist/__tests__/logs.test.d.ts +0 -9
  116. package/dist/__tests__/logs.test.d.ts.map +0 -1
  117. package/dist/__tests__/logs.test.js +0 -124
  118. package/dist/__tests__/logs.test.js.map +0 -1
  119. package/dist/__tests__/mcp-import.test.d.ts +0 -11
  120. package/dist/__tests__/mcp-import.test.d.ts.map +0 -1
  121. package/dist/__tests__/mcp-import.test.js +0 -134
  122. package/dist/__tests__/mcp-import.test.js.map +0 -1
  123. package/dist/__tests__/protocol-version.test.d.ts +0 -2
  124. package/dist/__tests__/protocol-version.test.d.ts.map +0 -1
  125. package/dist/__tests__/protocol-version.test.js +0 -170
  126. package/dist/__tests__/protocol-version.test.js.map +0 -1
  127. package/dist/__tests__/ps.test.d.ts +0 -2
  128. package/dist/__tests__/ps.test.d.ts.map +0 -1
  129. package/dist/__tests__/ps.test.js +0 -172
  130. package/dist/__tests__/ps.test.js.map +0 -1
  131. package/dist/__tests__/registry-allowlist.test.d.ts +0 -2
  132. package/dist/__tests__/registry-allowlist.test.d.ts.map +0 -1
  133. package/dist/__tests__/registry-allowlist.test.js +0 -129
  134. package/dist/__tests__/registry-allowlist.test.js.map +0 -1
  135. package/dist/__tests__/services.test.d.ts +0 -8
  136. package/dist/__tests__/services.test.d.ts.map +0 -1
  137. package/dist/__tests__/services.test.js +0 -185
  138. package/dist/__tests__/services.test.js.map +0 -1
  139. package/dist/__tests__/status-app-urls.test.d.ts +0 -2
  140. package/dist/__tests__/status-app-urls.test.d.ts.map +0 -1
  141. package/dist/__tests__/status-app-urls.test.js +0 -125
  142. package/dist/__tests__/status-app-urls.test.js.map +0 -1
  143. package/dist/__tests__/upgrade-gh-token-contract.test.d.ts +0 -19
  144. package/dist/__tests__/upgrade-gh-token-contract.test.d.ts.map +0 -1
  145. package/dist/__tests__/upgrade-gh-token-contract.test.js +0 -63
  146. package/dist/__tests__/upgrade-gh-token-contract.test.js.map +0 -1
  147. package/dist/__tests__/upgrade.test.d.ts +0 -9
  148. package/dist/__tests__/upgrade.test.d.ts.map +0 -1
  149. package/dist/__tests__/upgrade.test.js +0 -586
  150. package/dist/__tests__/upgrade.test.js.map +0 -1
  151. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts +0 -6
  152. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.d.ts.map +0 -1
  153. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js +0 -26
  154. package/dist/commands/__tests__/__fixtures__/upgrade-helpers.js.map +0 -1
  155. package/dist/commands/__tests__/begin.test.d.ts +0 -7
  156. package/dist/commands/__tests__/begin.test.d.ts.map +0 -1
  157. package/dist/commands/__tests__/begin.test.js +0 -72
  158. package/dist/commands/__tests__/begin.test.js.map +0 -1
  159. package/dist/commands/__tests__/bootstrap.test.d.ts +0 -2
  160. package/dist/commands/__tests__/bootstrap.test.d.ts.map +0 -1
  161. package/dist/commands/__tests__/bootstrap.test.js +0 -370
  162. package/dist/commands/__tests__/bootstrap.test.js.map +0 -1
  163. package/dist/commands/__tests__/carry-uncommitted.test.d.ts +0 -14
  164. package/dist/commands/__tests__/carry-uncommitted.test.d.ts.map +0 -1
  165. package/dist/commands/__tests__/carry-uncommitted.test.js +0 -83
  166. package/dist/commands/__tests__/carry-uncommitted.test.js.map +0 -1
  167. package/dist/commands/__tests__/clean.test.d.ts +0 -9
  168. package/dist/commands/__tests__/clean.test.d.ts.map +0 -1
  169. package/dist/commands/__tests__/clean.test.js +0 -105
  170. package/dist/commands/__tests__/clean.test.js.map +0 -1
  171. package/dist/commands/__tests__/crystallize.test.d.ts +0 -2
  172. package/dist/commands/__tests__/crystallize.test.d.ts.map +0 -1
  173. package/dist/commands/__tests__/crystallize.test.js +0 -133
  174. package/dist/commands/__tests__/crystallize.test.js.map +0 -1
  175. package/dist/commands/__tests__/diagnose.test.d.ts +0 -9
  176. package/dist/commands/__tests__/diagnose.test.d.ts.map +0 -1
  177. package/dist/commands/__tests__/diagnose.test.js +0 -108
  178. package/dist/commands/__tests__/diagnose.test.js.map +0 -1
  179. package/dist/commands/__tests__/openHostCpUrl.test.d.ts +0 -2
  180. package/dist/commands/__tests__/openHostCpUrl.test.d.ts.map +0 -1
  181. package/dist/commands/__tests__/openHostCpUrl.test.js +0 -63
  182. package/dist/commands/__tests__/openHostCpUrl.test.js.map +0 -1
  183. package/dist/commands/__tests__/refresh.test.d.ts +0 -13
  184. package/dist/commands/__tests__/refresh.test.d.ts.map +0 -1
  185. package/dist/commands/__tests__/refresh.test.js +0 -170
  186. package/dist/commands/__tests__/refresh.test.js.map +0 -1
  187. package/dist/commands/__tests__/status.test.d.ts +0 -8
  188. package/dist/commands/__tests__/status.test.d.ts.map +0 -1
  189. package/dist/commands/__tests__/status.test.js +0 -62
  190. package/dist/commands/__tests__/status.test.js.map +0 -1
  191. package/dist/commands/__tests__/stop.test.d.ts +0 -5
  192. package/dist/commands/__tests__/stop.test.d.ts.map +0 -1
  193. package/dist/commands/__tests__/stop.test.js +0 -30
  194. package/dist/commands/__tests__/stop.test.js.map +0 -1
  195. package/dist/commands/__tests__/update.test.d.ts +0 -7
  196. package/dist/commands/__tests__/update.test.d.ts.map +0 -1
  197. package/dist/commands/__tests__/update.test.js +0 -224
  198. package/dist/commands/__tests__/update.test.js.map +0 -1
  199. package/dist/commands/__tests__/upgrade.all-three.test.d.ts +0 -19
  200. package/dist/commands/__tests__/upgrade.all-three.test.d.ts.map +0 -1
  201. package/dist/commands/__tests__/upgrade.all-three.test.js +0 -80
  202. package/dist/commands/__tests__/upgrade.all-three.test.js.map +0 -1
  203. package/dist/commands/__tests__/upgrade.compose-path.test.d.ts +0 -20
  204. package/dist/commands/__tests__/upgrade.compose-path.test.d.ts.map +0 -1
  205. package/dist/commands/__tests__/upgrade.compose-path.test.js +0 -140
  206. package/dist/commands/__tests__/upgrade.compose-path.test.js.map +0 -1
  207. package/dist/commands/__tests__/upgrade.history.test.d.ts +0 -15
  208. package/dist/commands/__tests__/upgrade.history.test.d.ts.map +0 -1
  209. package/dist/commands/__tests__/upgrade.history.test.js +0 -199
  210. package/dist/commands/__tests__/upgrade.history.test.js.map +0 -1
  211. package/dist/commands/__tests__/upgrade.lock.test.d.ts +0 -15
  212. package/dist/commands/__tests__/upgrade.lock.test.d.ts.map +0 -1
  213. package/dist/commands/__tests__/upgrade.lock.test.js +0 -253
  214. package/dist/commands/__tests__/upgrade.lock.test.js.map +0 -1
  215. package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts +0 -21
  216. package/dist/commands/__tests__/upgrade.olam-tag.test.d.ts.map +0 -1
  217. package/dist/commands/__tests__/upgrade.olam-tag.test.js +0 -114
  218. package/dist/commands/__tests__/upgrade.olam-tag.test.js.map +0 -1
  219. package/dist/commands/__tests__/upgrade.poll.test.d.ts +0 -14
  220. package/dist/commands/__tests__/upgrade.poll.test.d.ts.map +0 -1
  221. package/dist/commands/__tests__/upgrade.poll.test.js +0 -136
  222. package/dist/commands/__tests__/upgrade.poll.test.js.map +0 -1
  223. package/dist/commands/__tests__/upgrade.recreate.test.d.ts +0 -17
  224. package/dist/commands/__tests__/upgrade.recreate.test.d.ts.map +0 -1
  225. package/dist/commands/__tests__/upgrade.recreate.test.js +0 -83
  226. package/dist/commands/__tests__/upgrade.recreate.test.js.map +0 -1
  227. package/dist/commands/__tests__/upgrade.rollback.test.d.ts +0 -12
  228. package/dist/commands/__tests__/upgrade.rollback.test.d.ts.map +0 -1
  229. package/dist/commands/__tests__/upgrade.rollback.test.js +0 -255
  230. package/dist/commands/__tests__/upgrade.rollback.test.js.map +0 -1
  231. package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts +0 -12
  232. package/dist/commands/__tests__/upgrade.sha-capture.test.d.ts.map +0 -1
  233. package/dist/commands/__tests__/upgrade.sha-capture.test.js +0 -63
  234. package/dist/commands/__tests__/upgrade.sha-capture.test.js.map +0 -1
  235. package/dist/commands/__tests__/upgrade.smoke.test.d.ts +0 -19
  236. package/dist/commands/__tests__/upgrade.smoke.test.d.ts.map +0 -1
  237. package/dist/commands/__tests__/upgrade.smoke.test.js +0 -87
  238. package/dist/commands/__tests__/upgrade.smoke.test.js.map +0 -1
  239. package/dist/commands/__tests__/upgrade.swap.test.d.ts +0 -19
  240. package/dist/commands/__tests__/upgrade.swap.test.d.ts.map +0 -1
  241. package/dist/commands/__tests__/upgrade.swap.test.js +0 -312
  242. package/dist/commands/__tests__/upgrade.swap.test.js.map +0 -1
  243. package/dist/commands/__tests__/world-upgrade.test.d.ts +0 -8
  244. package/dist/commands/__tests__/world-upgrade.test.d.ts.map +0 -1
  245. package/dist/commands/__tests__/world-upgrade.test.js +0 -73
  246. package/dist/commands/__tests__/world-upgrade.test.js.map +0 -1
  247. package/dist/lib/__tests__/symlink-reconcile.test.d.ts +0 -2
  248. package/dist/lib/__tests__/symlink-reconcile.test.d.ts.map +0 -1
  249. package/dist/lib/__tests__/symlink-reconcile.test.js +0 -106
  250. package/dist/lib/__tests__/symlink-reconcile.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-presence.test.js","sourceRoot":"","sources":["../../src/__tests__/image-presence.test.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,sEAAsE;AACtE,qEAAqE;AACrE,2BAA2B;AAE3B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAA6B,MAAM,sBAAsB,CAAC;AAEpF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,iCAAiC,EAAE,aAAa,EAAE,aAAa,EAAE,EAC7E,OAAO,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,iCAAiC,EAAE,aAAa,EAAE,aAAa,EAAE,EAC7E,OAAO,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC;QAC3F,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,iCAAiC,EAAE,aAAa,EAAE,aAAa,EAAE,EAC7E,OAAO,CACR,CAAC;QACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,kCAAkC,EAAE,aAAa,EAAE,oBAAoB,EAAE,EACrF,OAAO,CACR,CAAC;QACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,+BAA+B,EAAE,aAAa,EAAE,cAAc,EAAE,EAC5E,OAAO,CACR,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAChD,OAAO,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,OAAO,GAAyB,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAChD,OAAO,CACR,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=install-root.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-root.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/install-root.test.ts"],"names":[],"mappings":""}
@@ -1,119 +0,0 @@
1
- // B6 (Phase B — fresh-install self-bootstrap): installRoot + isDevMode
2
- // + resolveBuildScript. 2-condition dev-mode opt-in (OLAM_DEV=1 + packages/
3
- // sibling) — adequate for local-dev / dogfood audience per pass-3 reframe.
4
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
- import * as fs from 'node:fs';
6
- import * as os from 'node:os';
7
- import * as path from 'node:path';
8
- import { installRoot, isDevMode, resolveBuildScript, MissingBuildScriptError, } from '../install-root.js';
9
- describe('installRoot', () => {
10
- it('resolves to the package root from src/install-root.ts', () => {
11
- // From src/, dirname is .../packages/cli/src; .. lands at .../packages/cli.
12
- const root = installRoot();
13
- expect(root.endsWith('/packages/cli')).toBe(true);
14
- });
15
- it('accepts an injected metaUrl for testing', () => {
16
- // Synthetic: pretend we're at /tmp/foo/dist/install-root.js → root /tmp/foo
17
- const fakeUrl = `file:///tmp/foo/dist/install-root.js`;
18
- expect(installRoot(fakeUrl)).toBe('/tmp/foo');
19
- });
20
- });
21
- describe('isDevMode — 2-condition opt-in', () => {
22
- let tmpRoot;
23
- let originalDev;
24
- beforeEach(() => {
25
- originalDev = process.env.OLAM_DEV;
26
- delete process.env.OLAM_DEV;
27
- tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-installroot-'));
28
- });
29
- afterEach(() => {
30
- if (originalDev !== undefined)
31
- process.env.OLAM_DEV = originalDev;
32
- else
33
- delete process.env.OLAM_DEV;
34
- fs.rmSync(tmpRoot, { recursive: true, force: true });
35
- });
36
- /** Synthesize a "package install root" that sits at <tmp>/x/y/packages/cli. */
37
- function makeFakeInstall(root, withMonorepo) {
38
- const pkgRoot = path.join(root, 'packages', 'cli');
39
- fs.mkdirSync(pkgRoot, { recursive: true });
40
- if (withMonorepo) {
41
- // Add the monorepo-marker siblings: packages/ exists (already created
42
- // above) and a top-level package.json. From pkgRoot, two levels up
43
- // (`..`/`..`) is the monorepo root.
44
- fs.writeFileSync(path.join(root, 'package.json'), '{"private": true}');
45
- }
46
- return pkgRoot;
47
- }
48
- it('returns false when OLAM_DEV is not set, even with a packages/ sibling', () => {
49
- const installDir = makeFakeInstall(tmpRoot, /*withMonorepo*/ true);
50
- expect(isDevMode({}, installDir)).toBe(false);
51
- });
52
- it('returns false when OLAM_DEV=1 but no packages/ + package.json siblings', () => {
53
- const installDir = makeFakeInstall(tmpRoot, /*withMonorepo*/ false);
54
- // Note: makeFakeInstall always creates packages/ (as part of the install
55
- // dir layout). For "no monorepo" we just don't write the top-level
56
- // package.json. The check requires BOTH packages/ AND package.json.
57
- expect(isDevMode({ OLAM_DEV: '1' }, installDir)).toBe(false);
58
- });
59
- it('returns true when OLAM_DEV=1 AND both packages/ + package.json siblings exist', () => {
60
- const installDir = makeFakeInstall(tmpRoot, /*withMonorepo*/ true);
61
- expect(isDevMode({ OLAM_DEV: '1' }, installDir)).toBe(true);
62
- });
63
- it('returns false when OLAM_DEV is set to a non-"1" value', () => {
64
- const installDir = makeFakeInstall(tmpRoot, /*withMonorepo*/ true);
65
- expect(isDevMode({ OLAM_DEV: 'true' }, installDir)).toBe(false);
66
- expect(isDevMode({ OLAM_DEV: 'yes' }, installDir)).toBe(false);
67
- expect(isDevMode({ OLAM_DEV: '0' }, installDir)).toBe(false);
68
- });
69
- });
70
- describe('resolveBuildScript', () => {
71
- let tmpRoot;
72
- beforeEach(() => {
73
- tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-resolve-script-'));
74
- });
75
- afterEach(() => {
76
- fs.rmSync(tmpRoot, { recursive: true, force: true });
77
- });
78
- it('returns the absolute path to the script when in dev mode', () => {
79
- const installDir = path.join(tmpRoot, 'packages', 'cli');
80
- fs.mkdirSync(installDir, { recursive: true });
81
- fs.writeFileSync(path.join(tmpRoot, 'package.json'), '{}');
82
- const result = resolveBuildScript({
83
- scriptRelPath: 'packages/adapters/src/docker/build-auth.sh',
84
- env: { OLAM_DEV: '1' },
85
- installRootDir: installDir,
86
- });
87
- expect(result).toBe(path.join(tmpRoot, 'packages/adapters/src/docker/build-auth.sh'));
88
- });
89
- it('throws MissingBuildScriptError when not in dev mode', () => {
90
- const installDir = path.join(tmpRoot, 'packages', 'cli');
91
- fs.mkdirSync(installDir, { recursive: true });
92
- expect(() => resolveBuildScript({
93
- scriptRelPath: 'packages/adapters/src/docker/build-auth.sh',
94
- env: {},
95
- installRootDir: installDir,
96
- })).toThrow(MissingBuildScriptError);
97
- });
98
- it('error message names the remedy (clone + OLAM_DEV=1)', () => {
99
- const installDir = path.join(tmpRoot, 'packages', 'cli');
100
- fs.mkdirSync(installDir, { recursive: true });
101
- try {
102
- resolveBuildScript({
103
- scriptRelPath: 'packages/adapters/src/docker/build-auth.sh',
104
- env: {},
105
- installRootDir: installDir,
106
- });
107
- throw new Error('expected throw');
108
- }
109
- catch (err) {
110
- expect(err).toBeInstanceOf(MissingBuildScriptError);
111
- const msg = err.message;
112
- expect(msg).toContain('git clone');
113
- expect(msg).toContain('OLAM_DEV=1');
114
- expect(msg).toContain('--from-source');
115
- expect(msg).toContain('ghcr.io/pleri');
116
- }
117
- });
118
- });
119
- //# sourceMappingURL=install-root.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-root.test.js","sourceRoot":"","sources":["../../src/__tests__/install-root.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Unit tests for keys.ts pure helpers.
3
- *
4
- * Covers readKeysFile (missing/empty/malformed/valid) and the
5
- * env-merge precedence contract (OLAM_LLM_* keys do not overwrite
6
- * existing worldEnv entries).
7
- */
8
- export {};
9
- //# sourceMappingURL=keys.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/keys.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,145 +0,0 @@
1
- /**
2
- * Unit tests for keys.ts pure helpers.
3
- *
4
- * Covers readKeysFile (missing/empty/malformed/valid) and the
5
- * env-merge precedence contract (OLAM_LLM_* keys do not overwrite
6
- * existing worldEnv entries).
7
- */
8
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
9
- import * as fs from 'node:fs';
10
- import * as os from 'node:os';
11
- import * as path from 'node:path';
12
- import { readKeysFile, keysFilePath } from '../commands/keys.js';
13
- let tmpHome;
14
- let originalHome;
15
- beforeEach(() => {
16
- tmpHome = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-keys-test-'));
17
- originalHome = process.env.OLAM_HOME;
18
- process.env.OLAM_HOME = tmpHome;
19
- });
20
- afterEach(() => {
21
- if (originalHome === undefined)
22
- delete process.env.OLAM_HOME;
23
- else
24
- process.env.OLAM_HOME = originalHome;
25
- fs.rmSync(tmpHome, { recursive: true, force: true });
26
- });
27
- // ── keysFilePath ──────────────────────────────────────────────────
28
- describe('keysFilePath', () => {
29
- it('returns path under OLAM_HOME', () => {
30
- expect(keysFilePath()).toBe(path.join(tmpHome, 'keys.yaml'));
31
- });
32
- it('honors OLAM_HOME so tests do not stomp on the real ~/.olam', () => {
33
- expect(keysFilePath()).not.toContain(os.homedir() + path.sep + '.olam');
34
- });
35
- });
36
- // ── readKeysFile ──────────────────────────────────────────────────
37
- describe('readKeysFile', () => {
38
- it('returns null when ~/.olam/keys.yaml does not exist', () => {
39
- expect(readKeysFile()).toBeNull();
40
- });
41
- it('returns null for an empty file', () => {
42
- fs.mkdirSync(tmpHome, { recursive: true });
43
- fs.writeFileSync(keysFilePath(), '');
44
- expect(readKeysFile()).toBeNull();
45
- });
46
- it('returns null for a whitespace-only file', () => {
47
- fs.mkdirSync(tmpHome, { recursive: true });
48
- fs.writeFileSync(keysFilePath(), ' \n\n');
49
- expect(readKeysFile()).toBeNull();
50
- });
51
- it('returns null for malformed YAML', () => {
52
- fs.mkdirSync(tmpHome, { recursive: true });
53
- fs.writeFileSync(keysFilePath(), ': bad: yaml: [}');
54
- expect(readKeysFile()).toBeNull();
55
- });
56
- it('returns null when YAML is not an object (array)', () => {
57
- fs.mkdirSync(tmpHome, { recursive: true });
58
- fs.writeFileSync(keysFilePath(), '- item1\n- item2\n');
59
- expect(readKeysFile()).toBeNull();
60
- });
61
- it('returns null when YAML is a scalar', () => {
62
- fs.mkdirSync(tmpHome, { recursive: true });
63
- fs.writeFileSync(keysFilePath(), 'just a string\n');
64
- expect(readKeysFile()).toBeNull();
65
- });
66
- it('parses a valid single-key file', () => {
67
- fs.mkdirSync(tmpHome, { recursive: true });
68
- fs.writeFileSync(keysFilePath(), 'OPENAI: sk-proj-testvalue\n');
69
- expect(readKeysFile()).toEqual({ OPENAI: 'sk-proj-testvalue' });
70
- });
71
- it('parses multiple keys', () => {
72
- fs.mkdirSync(tmpHome, { recursive: true });
73
- fs.writeFileSync(keysFilePath(), 'OPENAI: sk-proj-aaa\nGEMINI: AIzaBBB\n');
74
- expect(readKeysFile()).toEqual({ OPENAI: 'sk-proj-aaa', GEMINI: 'AIzaBBB' });
75
- });
76
- it('skips non-string values silently', () => {
77
- fs.mkdirSync(tmpHome, { recursive: true });
78
- fs.writeFileSync(keysFilePath(), 'OPENAI: sk-valid\nnumeric: 12345\n');
79
- // numeric is a YAML integer, not a string — should be skipped
80
- const result = readKeysFile();
81
- expect(result).not.toBeNull();
82
- expect(result.OPENAI).toBe('sk-valid');
83
- expect('numeric' in result).toBe(false);
84
- });
85
- it('returns null when all values are non-string', () => {
86
- fs.mkdirSync(tmpHome, { recursive: true });
87
- fs.writeFileSync(keysFilePath(), 'count: 42\nflag: true\n');
88
- expect(readKeysFile()).toBeNull();
89
- });
90
- it('honors OLAM_HOME so tests do not stomp on the real ~/.olam', () => {
91
- fs.mkdirSync(tmpHome, { recursive: true });
92
- fs.writeFileSync(keysFilePath(), 'OPENAI: sentinel\n');
93
- expect(readKeysFile()).toEqual({ OPENAI: 'sentinel' });
94
- expect(keysFilePath()).toBe(path.join(tmpHome, 'keys.yaml'));
95
- });
96
- });
97
- // ── env-merge precedence helper ───────────────────────────────────
98
- //
99
- // The manager.ts injection logic is: only set OLAM_LLM_<KEY> when it
100
- // is NOT already present in worldEnv. Verify that contract here by
101
- // simulating the merge logic used in manager.ts.
102
- function mergeKeysIntoEnv(keys, existing) {
103
- const env = { ...existing };
104
- for (const [k, v] of Object.entries(keys)) {
105
- const envKey = `OLAM_LLM_${k.toUpperCase()}`;
106
- if (!(envKey in env)) {
107
- env[envKey] = v;
108
- }
109
- }
110
- return env;
111
- }
112
- describe('env-merge precedence', () => {
113
- it('injects OLAM_LLM_<UPPER_KEY> for each key', () => {
114
- const result = mergeKeysIntoEnv({ OPENAI: 'sk-abc', GEMINI: 'AIza-xyz' }, {});
115
- expect(result).toEqual({
116
- OLAM_LLM_OPENAI: 'sk-abc',
117
- OLAM_LLM_GEMINI: 'AIza-xyz',
118
- });
119
- });
120
- it('uppercases the key name regardless of file case', () => {
121
- const result = mergeKeysIntoEnv({ openai: 'sk-lower' }, {});
122
- expect(result.OLAM_LLM_OPENAI).toBe('sk-lower');
123
- });
124
- it('does NOT overwrite an existing OLAM_LLM_* entry', () => {
125
- const result = mergeKeysIntoEnv({ OPENAI: 'from-file' }, { OLAM_LLM_OPENAI: 'already-set' });
126
- expect(result.OLAM_LLM_OPENAI).toBe('already-set');
127
- });
128
- it('does NOT overwrite OLAM_TASK or other protected env keys', () => {
129
- const result = mergeKeysIntoEnv({ TASK: 'injected' }, { OLAM_LLM_TASK: 'protected' });
130
- expect(result.OLAM_LLM_TASK).toBe('protected');
131
- });
132
- it('does not inject anything when keys map is empty', () => {
133
- const existing = { OLAM_TASK: 'build feature' };
134
- const result = mergeKeysIntoEnv({}, existing);
135
- expect(result).toEqual(existing);
136
- });
137
- it('preserves all existing env entries unchanged', () => {
138
- const existing = { OLAM_TASK: 'task', OLAM_R2_BUCKET: 'bucket' };
139
- const result = mergeKeysIntoEnv({ OPENAI: 'sk-new' }, existing);
140
- expect(result.OLAM_TASK).toBe('task');
141
- expect(result.OLAM_R2_BUCKET).toBe('bucket');
142
- expect(result.OLAM_LLM_OPENAI).toBe('sk-new');
143
- });
144
- });
145
- //# sourceMappingURL=keys.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.test.js","sourceRoot":"","sources":["../../src/__tests__/keys.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEjE,IAAI,OAAe,CAAC;AACpB,IAAI,YAAgC,CAAC;AAErC,UAAU,CAAC,GAAG,EAAE;IACd,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;;QACxD,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC;IAC1C,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,qEAAqE;AAErE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,qEAAqE;AAErE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,6BAA6B,CAAC,CAAC;QAChE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,wCAAwC,CAAC,CAAC;QAC3E,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,oCAAoC,CAAC,CAAC;QACvE,8DAA8D;QAC9D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,IAAI,MAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAC5D,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,qEAAqE;AACrE,EAAE;AACF,qEAAqE;AACrE,mEAAmE;AACnE,iDAAiD;AAEjD,SAAS,gBAAgB,CACvB,IAA4B,EAC5B,QAAgC;IAEhC,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,eAAe,EAAE,QAAQ;YACzB,eAAe,EAAE,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAC7B,EAAE,MAAM,EAAE,WAAW,EAAE,EACvB,EAAE,eAAe,EAAE,aAAa,EAAE,CACnC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG,gBAAgB,CAC7B,EAAE,IAAI,EAAE,UAAU,EAAE,EACpB,EAAE,aAAa,EAAE,WAAW,EAAE,CAC/B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Unit tests for logs.ts pure helpers.
3
- *
4
- * The colorLine and formatLine functions are exported for testability.
5
- * http.get streaming is exercised by manual `olam logs` invocation against
6
- * a running world (see B1 Verification in the tracker).
7
- */
8
- export {};
9
- //# sourceMappingURL=logs.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/logs.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,124 +0,0 @@
1
- /**
2
- * Unit tests for logs.ts pure helpers.
3
- *
4
- * The colorLine and formatLine functions are exported for testability.
5
- * http.get streaming is exercised by manual `olam logs` invocation against
6
- * a running world (see B1 Verification in the tracker).
7
- */
8
- import { describe, it, expect } from 'vitest';
9
- import { colorLine, formatLine, parseSseEvent } from '../commands/logs.js';
10
- // picocolors is applied in the tests; we test the string content rather than
11
- // exact ANSI codes since ANSI output depends on the terminal environment.
12
- // To make assertions deterministic, we strip ANSI codes via a simple regex.
13
- const ANSI_RE = /\x1b\[[0-9;]*[A-Za-z]/g;
14
- function strip(s) {
15
- return s.replace(ANSI_RE, '');
16
- }
17
- describe('parseSseEvent', () => {
18
- it('returns null for non-data lines', () => {
19
- expect(parseSseEvent('')).toBeNull();
20
- expect(parseSseEvent(': ping')).toBeNull();
21
- expect(parseSseEvent('event: heartbeat')).toBeNull();
22
- expect(parseSseEvent(': connected')).toBeNull();
23
- });
24
- it('returns null for malformed JSON', () => {
25
- expect(parseSseEvent('data: {bad json')).toBeNull();
26
- expect(parseSseEvent('data: not-json')).toBeNull();
27
- });
28
- it('returns null for unknown event types', () => {
29
- expect(parseSseEvent('data: {"type":"unknown","foo":"bar"}')).toBeNull();
30
- expect(parseSseEvent('data: {"type":"error","message":"x"}')).toBeNull();
31
- });
32
- it('parses replay events correctly', () => {
33
- const ev = parseSseEvent('data: {"type":"replay","service":"atlas-core","lines":["a","b"]}');
34
- expect(ev).not.toBeNull();
35
- expect(ev.type).toBe('replay');
36
- if (ev !== null && ev.type === 'replay') {
37
- expect(ev.service).toBe('atlas-core');
38
- expect(ev.lines).toEqual(['a', 'b']);
39
- }
40
- });
41
- it('parses replay events without service field', () => {
42
- const ev = parseSseEvent('data: {"type":"replay","lines":["x"]}');
43
- expect(ev).not.toBeNull();
44
- expect(ev.type).toBe('replay');
45
- });
46
- it('parses line events correctly', () => {
47
- const ev = parseSseEvent('data: {"type":"line","service":"diner-app","line":"server started","ts":1234567}');
48
- expect(ev).not.toBeNull();
49
- expect(ev.type).toBe('line');
50
- if (ev !== null && ev.type === 'line') {
51
- expect(ev.service).toBe('diner-app');
52
- expect(ev.line).toBe('server started');
53
- expect(ev.ts).toBe(1234567);
54
- }
55
- });
56
- it('returns null for replay with non-array lines', () => {
57
- expect(parseSseEvent('data: {"type":"replay","lines":"not-array"}')).toBeNull();
58
- });
59
- it('returns null for line event with non-string line', () => {
60
- expect(parseSseEvent('data: {"type":"line","line":42,"ts":0}')).toBeNull();
61
- });
62
- });
63
- describe('colorLine', () => {
64
- it('returns plain text unchanged', () => {
65
- expect(strip(colorLine('server started'))).toBe('server started');
66
- });
67
- it('colors ERROR lines (output contains the text)', () => {
68
- const result = colorLine('ERROR: database unreachable');
69
- expect(strip(result)).toBe('ERROR: database unreachable');
70
- // Colored output should differ from plain (ANSI codes present or same in no-color mode).
71
- // We verify the content is preserved, not the specific ANSI code.
72
- });
73
- it('colors WARN lines', () => {
74
- const result = colorLine('WARN: slow query detected');
75
- expect(strip(result)).toBe('WARN: slow query detected');
76
- });
77
- it('dims INFO lines', () => {
78
- const result = colorLine('INFO: server listening on port 3000');
79
- expect(strip(result)).toBe('INFO: server listening on port 3000');
80
- });
81
- it('does not false-positive on ERRORS (plural) — word boundary check', () => {
82
- // "ERRORS" should still match \bERROR\b in some regex flavors; check it works
83
- const result = colorLine('ERRORS found: 3');
84
- // "ERRORS" contains "ERROR" — \bERROR\b does NOT match inside "ERRORS"
85
- // because \b is a word boundary and S follows R. Actually \bERROR\b will NOT
86
- // match in "ERRORS" because after the R comes S, not a non-word char. Good.
87
- expect(strip(result)).toBe('ERRORS found: 3');
88
- });
89
- it('preserves multi-word lines', () => {
90
- const line = '2024-01-15T10:00:00Z INFO [atlas-core] Request completed in 42ms';
91
- expect(strip(colorLine(line))).toBe(line);
92
- });
93
- });
94
- describe('formatLine', () => {
95
- it('no prefix when showService=false', () => {
96
- const result = formatLine('hello world', 'atlas-core', false);
97
- expect(strip(result)).toBe('hello world');
98
- });
99
- it('no prefix when showService=true but service is undefined', () => {
100
- const result = formatLine('hello world', undefined, true);
101
- expect(strip(result)).toBe('hello world');
102
- });
103
- it('prepends [service] when showService=true and service provided', () => {
104
- const result = formatLine('server started', 'atlas-core', true);
105
- expect(strip(result)).toContain('[atlas-core]');
106
- expect(strip(result)).toContain('server started');
107
- // Service prefix comes first
108
- const plain = strip(result);
109
- expect(plain.indexOf('[atlas-core]')).toBeLessThan(plain.indexOf('server started'));
110
- });
111
- it('prepends [service] for multi-service stream with diner-app', () => {
112
- const result = formatLine('compiled successfully', 'diner-app', true);
113
- const plain = strip(result);
114
- expect(plain).toContain('[diner-app]');
115
- expect(plain).toContain('compiled successfully');
116
- });
117
- it('applies color AND prefix together — ERROR line with service', () => {
118
- const result = formatLine('ERROR: crash', 'atlas-core', true);
119
- const plain = strip(result);
120
- expect(plain).toContain('[atlas-core]');
121
- expect(plain).toContain('ERROR: crash');
122
- });
123
- });
124
- //# sourceMappingURL=logs.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.test.js","sourceRoot":"","sources":["../../src/__tests__/logs.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Tests for olam mcp import discovery + validation.
3
- *
4
- * Acceptance:
5
- * discovery_sweep — fixture with 10 MCPs across 4 source paths →
6
- * all 10 discovered + dedupe correct < 500ms
7
- * idempotent_rerun — importing twice imports 10 then 0
8
- * validation_probe — exit 0 + stdout → validated=true; exit 1 → validated=false
9
- */
10
- export {};
11
- //# sourceMappingURL=mcp-import.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-import.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mcp-import.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1,134 +0,0 @@
1
- /**
2
- * Tests for olam mcp import discovery + validation.
3
- *
4
- * Acceptance:
5
- * discovery_sweep — fixture with 10 MCPs across 4 source paths →
6
- * all 10 discovered + dedupe correct < 500ms
7
- * idempotent_rerun — importing twice imports 10 then 0
8
- * validation_probe — exit 0 + stdout → validated=true; exit 1 → validated=false
9
- */
10
- import { describe, test, expect, beforeEach } from 'vitest';
11
- import * as fs from 'node:fs';
12
- import * as os from 'node:os';
13
- import * as path from 'node:path';
14
- import { discoverMcpSources } from '../commands/mcp/import-discovery.js';
15
- import { validateMcpEntry } from '../commands/mcp/import-validate.js';
16
- function makeMcpConfig(entries) {
17
- return JSON.stringify({ mcpServers: entries }, null, 2);
18
- }
19
- function writeTmpFile(dir, name, content) {
20
- const filePath = path.join(dir, name);
21
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
22
- fs.writeFileSync(filePath, content);
23
- return filePath;
24
- }
25
- describe('discovery_sweep', () => {
26
- test('discovers 10 MCPs across 4 fixture source files in <500ms', async () => {
27
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-mcp-import-'));
28
- process.env.HOME = tmpDir;
29
- // Write fixture configs
30
- // Source 1: Claude Code ~/.claude.json (3 entries)
31
- writeTmpFile(tmpDir, '.claude.json', makeMcpConfig({
32
- 'linear': { command: 'npx', args: ['@linear/mcp'] },
33
- 'slack': { command: 'npx', args: ['@slack/mcp'] },
34
- 'neon': { command: 'neon-mcp' },
35
- }));
36
- // Source 2: Cursor ~/.cursor/mcp.json (3 entries, 1 duplicate)
37
- writeTmpFile(tmpDir, '.cursor/mcp.json', makeMcpConfig({
38
- 'linear': { command: 'npx', args: ['@linear/mcp'] }, // dup → ignored
39
- 'context7': { command: 'context7-mcp' },
40
- 'github': { command: 'npx', args: ['@github/mcp'] },
41
- }));
42
- // Source 3: Windsurf (2 entries)
43
- writeTmpFile(tmpDir, '.codeium/windsurf/mcp_config.json', makeMcpConfig({
44
- 'figma': { command: 'figma-mcp' },
45
- 'notion': { command: 'notion-mcp' },
46
- }));
47
- // Source 4: Project .mcp.json (4 entries)
48
- const repoDir = path.join(tmpDir, 'my-project');
49
- fs.mkdirSync(repoDir, { recursive: true });
50
- writeTmpFile(repoDir, '.mcp.json', makeMcpConfig({
51
- 'stripe': { command: 'stripe-mcp' },
52
- 'vercel': { command: 'vercel-mcp' },
53
- 'resend': { command: 'resend-mcp' },
54
- 'openapi': { command: 'openapi-mcp' },
55
- }));
56
- const start = performance.now();
57
- const { entries, durationMs } = await discoverMcpSources([repoDir]);
58
- const elapsed = performance.now() - start;
59
- expect(elapsed).toBeLessThan(500);
60
- expect(durationMs).toBeLessThan(500);
61
- // Unique entries: 3 (claude.json) + 2 (cursor dedupe: context7, github)
62
- // + 2 (windsurf) + 4 (project) = 11
63
- // linear appears in both claude.json and cursor → only counted once
64
- expect(entries.length).toBe(11);
65
- const names = entries.map((e) => e.name);
66
- expect(names).toContain('linear');
67
- expect(names).toContain('neon');
68
- expect(names).toContain('context7');
69
- expect(names).toContain('figma');
70
- expect(names).toContain('stripe');
71
- // linear should appear only once (first occurrence wins)
72
- expect(names.filter((n) => n === 'linear').length).toBe(1);
73
- });
74
- });
75
- describe('validation_probe', () => {
76
- test('exit 0 + stdout → validated=true', async () => {
77
- const result = await validateMcpEntry({
78
- name: 'echo-mcp',
79
- command: process.execPath, // node
80
- args: ['-p', '"tools:[]"'], // -p prints the expression result to stdout
81
- source: 'test',
82
- sourceLabel: 'test',
83
- });
84
- expect(result.validated).toBe(true);
85
- expect(result.name).toBe('echo-mcp');
86
- });
87
- test('exit 1 → validated=false (but no throw)', async () => {
88
- const result = await validateMcpEntry({
89
- name: 'failing-mcp',
90
- command: process.execPath,
91
- args: ['-e', 'process.exit(1)'],
92
- source: 'test',
93
- sourceLabel: 'test',
94
- });
95
- expect(result.validated).toBe(false);
96
- expect(result.name).toBe('failing-mcp');
97
- });
98
- test('missing command → validated=false', async () => {
99
- const result = await validateMcpEntry({
100
- name: 'ghost-mcp',
101
- command: '/usr/bin/command-that-does-not-exist-12345',
102
- source: 'test',
103
- sourceLabel: 'test',
104
- });
105
- expect(result.validated).toBe(false);
106
- });
107
- test('timeout after 5s → validated=false', async () => {
108
- // Use a tight CPU spin-loop that won't exit before the 5s kill
109
- const result = await validateMcpEntry({
110
- name: 'hanging-mcp',
111
- command: process.execPath,
112
- args: ['-e', 'for(;;){}'],
113
- source: 'test',
114
- sourceLabel: 'test',
115
- });
116
- expect(result.validated).toBe(false);
117
- expect(result.reason).toContain('timeout');
118
- }, 10000);
119
- });
120
- describe('idempotent_rerun', () => {
121
- test('discovery returns consistent results across multiple runs', async () => {
122
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'olam-mcp-idem-'));
123
- process.env.HOME = tmpDir;
124
- writeTmpFile(tmpDir, '.claude.json', makeMcpConfig({
125
- 'alpha': { command: 'alpha-mcp' },
126
- 'beta': { command: 'beta-mcp' },
127
- }));
128
- const r1 = await discoverMcpSources();
129
- const r2 = await discoverMcpSources();
130
- expect(r1.entries.length).toBe(r2.entries.length);
131
- expect(r1.entries.map((e) => e.name).sort()).toEqual(r2.entries.map((e) => e.name).sort());
132
- });
133
- });
134
- //# sourceMappingURL=mcp-import.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-import.test.js","sourceRoot":"","sources":["../../src/__tests__/mcp-import.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=protocol-version.test.d.ts.map