@pleri/olam-cli 0.1.201 → 0.1.204

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 (828) hide show
  1. package/README.md +102 -169
  2. package/dist/agent-stream/agent-sdk-to-chunks.js +1 -1
  3. package/dist/agent-stream/driver-runner.js +73 -7
  4. package/dist/agent-stream/host-driver-launch.js +14 -1
  5. package/dist/agent-stream/prototype-gen-launch.js +113 -0
  6. package/dist/agent-stream/question-broker-bridge.js +335 -0
  7. package/dist/agent-stream/sdk-env-merge.demo.js +35 -0
  8. package/dist/agent-stream/sdk-env-merge.js +98 -0
  9. package/dist/image-digests.json +8 -8
  10. package/dist/index.js +8752 -5674
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp-server.js +24721 -12934
  13. package/hermes-bundle/version.json +1 -1
  14. package/hooks/__tests__/_loader.py +26 -0
  15. package/hooks/__tests__/prompts.py +63 -0
  16. package/hooks/__tests__/test_classify_bench.py +94 -0
  17. package/hooks/__tests__/test_classify_pins.py +78 -0
  18. package/hooks/model-router.py +17 -4
  19. package/host-cp/k8s/manifests/50-deployment.yaml +1 -1
  20. package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
  21. package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +1 -1
  22. package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +1 -1
  23. package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +1 -1
  24. package/host-cp/src/op-side-longpoll.mjs +212 -0
  25. package/host-cp/src/plan-chat-proxy-headers.mjs +53 -0
  26. package/host-cp/src/plan-chat-service.mjs +100 -0
  27. package/host-cp/src/plan-orchestrator.mjs +100 -6
  28. package/host-cp/src/server.mjs +607 -45
  29. package/package.json +8 -4
  30. package/dist/ask/checkout.d.ts +0 -19
  31. package/dist/ask/checkout.d.ts.map +0 -1
  32. package/dist/ask/checkout.js +0 -40
  33. package/dist/ask/checkout.js.map +0 -1
  34. package/dist/ask/knowledge-pack-builder.d.ts +0 -72
  35. package/dist/ask/knowledge-pack-builder.d.ts.map +0 -1
  36. package/dist/ask/knowledge-pack-builder.js +0 -96
  37. package/dist/ask/knowledge-pack-builder.js.map +0 -1
  38. package/dist/ask/knowledge-pack.generated.d.ts +0 -8
  39. package/dist/ask/knowledge-pack.generated.d.ts.map +0 -1
  40. package/dist/ask/knowledge-pack.generated.js +0 -2362
  41. package/dist/ask/knowledge-pack.generated.js.map +0 -1
  42. package/dist/ask/one-shot.d.ts +0 -21
  43. package/dist/ask/one-shot.d.ts.map +0 -1
  44. package/dist/ask/one-shot.js +0 -50
  45. package/dist/ask/one-shot.js.map +0 -1
  46. package/dist/ask/repl.d.ts +0 -30
  47. package/dist/ask/repl.d.ts.map +0 -1
  48. package/dist/ask/repl.js +0 -109
  49. package/dist/ask/repl.js.map +0 -1
  50. package/dist/ask/sdk-client.d.ts +0 -87
  51. package/dist/ask/sdk-client.d.ts.map +0 -1
  52. package/dist/ask/sdk-client.js +0 -118
  53. package/dist/ask/sdk-client.js.map +0 -1
  54. package/dist/ask/system-prompt.d.ts +0 -30
  55. package/dist/ask/system-prompt.d.ts.map +0 -1
  56. package/dist/ask/system-prompt.js +0 -31
  57. package/dist/ask/system-prompt.js.map +0 -1
  58. package/dist/cli-version.d.ts +0 -16
  59. package/dist/cli-version.d.ts.map +0 -1
  60. package/dist/cli-version.js +0 -39
  61. package/dist/cli-version.js.map +0 -1
  62. package/dist/commands/ask.d.ts +0 -27
  63. package/dist/commands/ask.d.ts.map +0 -1
  64. package/dist/commands/ask.js +0 -63
  65. package/dist/commands/ask.js.map +0 -1
  66. package/dist/commands/auth-list-json.d.ts +0 -87
  67. package/dist/commands/auth-list-json.d.ts.map +0 -1
  68. package/dist/commands/auth-list-json.js +0 -71
  69. package/dist/commands/auth-list-json.js.map +0 -1
  70. package/dist/commands/auth-migrate.d.ts +0 -212
  71. package/dist/commands/auth-migrate.d.ts.map +0 -1
  72. package/dist/commands/auth-migrate.js +0 -465
  73. package/dist/commands/auth-migrate.js.map +0 -1
  74. package/dist/commands/auth-status.d.ts +0 -51
  75. package/dist/commands/auth-status.d.ts.map +0 -1
  76. package/dist/commands/auth-status.js +0 -250
  77. package/dist/commands/auth-status.js.map +0 -1
  78. package/dist/commands/auth-upgrade.d.ts +0 -88
  79. package/dist/commands/auth-upgrade.d.ts.map +0 -1
  80. package/dist/commands/auth-upgrade.js +0 -431
  81. package/dist/commands/auth-upgrade.js.map +0 -1
  82. package/dist/commands/auth.d.ts +0 -31
  83. package/dist/commands/auth.d.ts.map +0 -1
  84. package/dist/commands/auth.js +0 -784
  85. package/dist/commands/auth.js.map +0 -1
  86. package/dist/commands/begin.d.ts +0 -27
  87. package/dist/commands/begin.d.ts.map +0 -1
  88. package/dist/commands/begin.js +0 -45
  89. package/dist/commands/begin.js.map +0 -1
  90. package/dist/commands/bootstrap.d.ts +0 -111
  91. package/dist/commands/bootstrap.d.ts.map +0 -1
  92. package/dist/commands/bootstrap.js +0 -485
  93. package/dist/commands/bootstrap.js.map +0 -1
  94. package/dist/commands/clean.d.ts +0 -41
  95. package/dist/commands/clean.d.ts.map +0 -1
  96. package/dist/commands/clean.js +0 -382
  97. package/dist/commands/clean.js.map +0 -1
  98. package/dist/commands/completion.d.ts +0 -30
  99. package/dist/commands/completion.d.ts.map +0 -1
  100. package/dist/commands/completion.js +0 -50
  101. package/dist/commands/completion.js.map +0 -1
  102. package/dist/commands/config.d.ts +0 -3
  103. package/dist/commands/config.d.ts.map +0 -1
  104. package/dist/commands/config.js +0 -146
  105. package/dist/commands/config.js.map +0 -1
  106. package/dist/commands/create.d.ts +0 -8
  107. package/dist/commands/create.d.ts.map +0 -1
  108. package/dist/commands/create.js +0 -775
  109. package/dist/commands/create.js.map +0 -1
  110. package/dist/commands/crystallize.d.ts +0 -18
  111. package/dist/commands/crystallize.d.ts.map +0 -1
  112. package/dist/commands/crystallize.js +0 -123
  113. package/dist/commands/crystallize.js.map +0 -1
  114. package/dist/commands/destroy.d.ts +0 -59
  115. package/dist/commands/destroy.d.ts.map +0 -1
  116. package/dist/commands/destroy.js +0 -148
  117. package/dist/commands/destroy.js.map +0 -1
  118. package/dist/commands/diagnose.d.ts +0 -36
  119. package/dist/commands/diagnose.d.ts.map +0 -1
  120. package/dist/commands/diagnose.js +0 -177
  121. package/dist/commands/diagnose.js.map +0 -1
  122. package/dist/commands/dispatch-resolve.d.ts +0 -54
  123. package/dist/commands/dispatch-resolve.d.ts.map +0 -1
  124. package/dist/commands/dispatch-resolve.js +0 -105
  125. package/dist/commands/dispatch-resolve.js.map +0 -1
  126. package/dist/commands/dispatch.d.ts +0 -18
  127. package/dist/commands/dispatch.d.ts.map +0 -1
  128. package/dist/commands/dispatch.js +0 -159
  129. package/dist/commands/dispatch.js.map +0 -1
  130. package/dist/commands/doctor.d.ts +0 -258
  131. package/dist/commands/doctor.d.ts.map +0 -1
  132. package/dist/commands/doctor.js +0 -1073
  133. package/dist/commands/doctor.js.map +0 -1
  134. package/dist/commands/enter.d.ts +0 -63
  135. package/dist/commands/enter.d.ts.map +0 -1
  136. package/dist/commands/enter.js +0 -230
  137. package/dist/commands/enter.js.map +0 -1
  138. package/dist/commands/flywheel/check-persona-skeleton.d.ts +0 -35
  139. package/dist/commands/flywheel/check-persona-skeleton.d.ts.map +0 -1
  140. package/dist/commands/flywheel/check-persona-skeleton.js +0 -151
  141. package/dist/commands/flywheel/check-persona-skeleton.js.map +0 -1
  142. package/dist/commands/flywheel/diversity-check.d.ts +0 -17
  143. package/dist/commands/flywheel/diversity-check.d.ts.map +0 -1
  144. package/dist/commands/flywheel/diversity-check.js +0 -64
  145. package/dist/commands/flywheel/diversity-check.js.map +0 -1
  146. package/dist/commands/flywheel/emit-breadcrumb.d.ts +0 -20
  147. package/dist/commands/flywheel/emit-breadcrumb.d.ts.map +0 -1
  148. package/dist/commands/flywheel/emit-breadcrumb.js +0 -137
  149. package/dist/commands/flywheel/emit-breadcrumb.js.map +0 -1
  150. package/dist/commands/flywheel/index.d.ts +0 -27
  151. package/dist/commands/flywheel/index.d.ts.map +0 -1
  152. package/dist/commands/flywheel/index.js +0 -54
  153. package/dist/commands/flywheel/index.js.map +0 -1
  154. package/dist/commands/flywheel/install-sessionstart-hook.d.ts +0 -64
  155. package/dist/commands/flywheel/install-sessionstart-hook.d.ts.map +0 -1
  156. package/dist/commands/flywheel/install-sessionstart-hook.js +0 -197
  157. package/dist/commands/flywheel/install-sessionstart-hook.js.map +0 -1
  158. package/dist/commands/flywheel/install-shims.d.ts +0 -41
  159. package/dist/commands/flywheel/install-shims.d.ts.map +0 -1
  160. package/dist/commands/flywheel/install-shims.js +0 -126
  161. package/dist/commands/flywheel/install-shims.js.map +0 -1
  162. package/dist/commands/flywheel/k10-measure.d.ts +0 -17
  163. package/dist/commands/flywheel/k10-measure.d.ts.map +0 -1
  164. package/dist/commands/flywheel/k10-measure.js +0 -63
  165. package/dist/commands/flywheel/k10-measure.js.map +0 -1
  166. package/dist/commands/flywheel/k5-score.d.ts +0 -14
  167. package/dist/commands/flywheel/k5-score.d.ts.map +0 -1
  168. package/dist/commands/flywheel/k5-score.js +0 -59
  169. package/dist/commands/flywheel/k5-score.js.map +0 -1
  170. package/dist/commands/flywheel/k5-validate.d.ts +0 -46
  171. package/dist/commands/flywheel/k5-validate.d.ts.map +0 -1
  172. package/dist/commands/flywheel/k5-validate.js +0 -246
  173. package/dist/commands/flywheel/k5-validate.js.map +0 -1
  174. package/dist/commands/flywheel/migrate-overlays.d.ts +0 -116
  175. package/dist/commands/flywheel/migrate-overlays.d.ts.map +0 -1
  176. package/dist/commands/flywheel/migrate-overlays.js +0 -792
  177. package/dist/commands/flywheel/migrate-overlays.js.map +0 -1
  178. package/dist/commands/flywheel/ping.d.ts +0 -21
  179. package/dist/commands/flywheel/ping.d.ts.map +0 -1
  180. package/dist/commands/flywheel/ping.js +0 -79
  181. package/dist/commands/flywheel/ping.js.map +0 -1
  182. package/dist/commands/flywheel/sanitize-persona-output.d.ts +0 -38
  183. package/dist/commands/flywheel/sanitize-persona-output.d.ts.map +0 -1
  184. package/dist/commands/flywheel/sanitize-persona-output.js +0 -102
  185. package/dist/commands/flywheel/sanitize-persona-output.js.map +0 -1
  186. package/dist/commands/flywheel/session-start.d.ts +0 -26
  187. package/dist/commands/flywheel/session-start.d.ts.map +0 -1
  188. package/dist/commands/flywheel/session-start.js +0 -119
  189. package/dist/commands/flywheel/session-start.js.map +0 -1
  190. package/dist/commands/hermes-kg-hook.d.ts +0 -36
  191. package/dist/commands/hermes-kg-hook.d.ts.map +0 -1
  192. package/dist/commands/hermes-kg-hook.js +0 -80
  193. package/dist/commands/hermes-kg-hook.js.map +0 -1
  194. package/dist/commands/hermes.d.ts +0 -46
  195. package/dist/commands/hermes.d.ts.map +0 -1
  196. package/dist/commands/hermes.js +0 -320
  197. package/dist/commands/hermes.js.map +0 -1
  198. package/dist/commands/host-cp.d.ts +0 -216
  199. package/dist/commands/host-cp.d.ts.map +0 -1
  200. package/dist/commands/host-cp.js +0 -913
  201. package/dist/commands/host-cp.js.map +0 -1
  202. package/dist/commands/implode.d.ts +0 -86
  203. package/dist/commands/implode.d.ts.map +0 -1
  204. package/dist/commands/implode.js +0 -468
  205. package/dist/commands/implode.js.map +0 -1
  206. package/dist/commands/init.d.ts +0 -86
  207. package/dist/commands/init.d.ts.map +0 -1
  208. package/dist/commands/init.js +0 -357
  209. package/dist/commands/init.js.map +0 -1
  210. package/dist/commands/install.d.ts +0 -22
  211. package/dist/commands/install.d.ts.map +0 -1
  212. package/dist/commands/install.js +0 -203
  213. package/dist/commands/install.js.map +0 -1
  214. package/dist/commands/keys-list-json.d.ts +0 -55
  215. package/dist/commands/keys-list-json.d.ts.map +0 -1
  216. package/dist/commands/keys-list-json.js +0 -54
  217. package/dist/commands/keys-list-json.js.map +0 -1
  218. package/dist/commands/keys.d.ts +0 -26
  219. package/dist/commands/keys.d.ts.map +0 -1
  220. package/dist/commands/keys.js +0 -157
  221. package/dist/commands/keys.js.map +0 -1
  222. package/dist/commands/kg-build.d.ts +0 -80
  223. package/dist/commands/kg-build.d.ts.map +0 -1
  224. package/dist/commands/kg-build.js +0 -282
  225. package/dist/commands/kg-build.js.map +0 -1
  226. package/dist/commands/kg-classify.d.ts +0 -30
  227. package/dist/commands/kg-classify.d.ts.map +0 -1
  228. package/dist/commands/kg-classify.js +0 -88
  229. package/dist/commands/kg-classify.js.map +0 -1
  230. package/dist/commands/kg-doctor.d.ts +0 -76
  231. package/dist/commands/kg-doctor.d.ts.map +0 -1
  232. package/dist/commands/kg-doctor.js +0 -262
  233. package/dist/commands/kg-doctor.js.map +0 -1
  234. package/dist/commands/kg-install-hook.d.ts +0 -20
  235. package/dist/commands/kg-install-hook.d.ts.map +0 -1
  236. package/dist/commands/kg-install-hook.js +0 -208
  237. package/dist/commands/kg-install-hook.js.map +0 -1
  238. package/dist/commands/kg-mirror.d.ts +0 -72
  239. package/dist/commands/kg-mirror.d.ts.map +0 -1
  240. package/dist/commands/kg-mirror.js +0 -397
  241. package/dist/commands/kg-mirror.js.map +0 -1
  242. package/dist/commands/kg-savings.d.ts +0 -20
  243. package/dist/commands/kg-savings.d.ts.map +0 -1
  244. package/dist/commands/kg-savings.js +0 -77
  245. package/dist/commands/kg-savings.js.map +0 -1
  246. package/dist/commands/kg-service-container.d.ts +0 -68
  247. package/dist/commands/kg-service-container.d.ts.map +0 -1
  248. package/dist/commands/kg-service-container.js +0 -191
  249. package/dist/commands/kg-service-container.js.map +0 -1
  250. package/dist/commands/kg-status.d.ts +0 -59
  251. package/dist/commands/kg-status.d.ts.map +0 -1
  252. package/dist/commands/kg-status.js +0 -344
  253. package/dist/commands/kg-status.js.map +0 -1
  254. package/dist/commands/kg-uninstall-hook.d.ts +0 -12
  255. package/dist/commands/kg-uninstall-hook.d.ts.map +0 -1
  256. package/dist/commands/kg-uninstall-hook.js +0 -121
  257. package/dist/commands/kg-uninstall-hook.js.map +0 -1
  258. package/dist/commands/kg-watch.d.ts +0 -49
  259. package/dist/commands/kg-watch.d.ts.map +0 -1
  260. package/dist/commands/kg-watch.js +0 -172
  261. package/dist/commands/kg-watch.js.map +0 -1
  262. package/dist/commands/lanes-list-json.d.ts +0 -69
  263. package/dist/commands/lanes-list-json.d.ts.map +0 -1
  264. package/dist/commands/lanes-list-json.js +0 -42
  265. package/dist/commands/lanes-list-json.js.map +0 -1
  266. package/dist/commands/lanes.d.ts +0 -18
  267. package/dist/commands/lanes.d.ts.map +0 -1
  268. package/dist/commands/lanes.js +0 -133
  269. package/dist/commands/lanes.js.map +0 -1
  270. package/dist/commands/list.d.ts +0 -33
  271. package/dist/commands/list.d.ts.map +0 -1
  272. package/dist/commands/list.js +0 -87
  273. package/dist/commands/list.js.map +0 -1
  274. package/dist/commands/logs.d.ts +0 -52
  275. package/dist/commands/logs.d.ts.map +0 -1
  276. package/dist/commands/logs.js +0 -180
  277. package/dist/commands/logs.js.map +0 -1
  278. package/dist/commands/mcp/add.d.ts +0 -9
  279. package/dist/commands/mcp/add.d.ts.map +0 -1
  280. package/dist/commands/mcp/add.js +0 -87
  281. package/dist/commands/mcp/add.js.map +0 -1
  282. package/dist/commands/mcp/client.d.ts +0 -60
  283. package/dist/commands/mcp/client.d.ts.map +0 -1
  284. package/dist/commands/mcp/client.js +0 -70
  285. package/dist/commands/mcp/client.js.map +0 -1
  286. package/dist/commands/mcp/complete.d.ts +0 -36
  287. package/dist/commands/mcp/complete.d.ts.map +0 -1
  288. package/dist/commands/mcp/complete.js +0 -66
  289. package/dist/commands/mcp/complete.js.map +0 -1
  290. package/dist/commands/mcp/import-discovery.d.ts +0 -25
  291. package/dist/commands/mcp/import-discovery.d.ts.map +0 -1
  292. package/dist/commands/mcp/import-discovery.js +0 -135
  293. package/dist/commands/mcp/import-discovery.js.map +0 -1
  294. package/dist/commands/mcp/import-validate.d.ts +0 -15
  295. package/dist/commands/mcp/import-validate.d.ts.map +0 -1
  296. package/dist/commands/mcp/import-validate.js +0 -55
  297. package/dist/commands/mcp/import-validate.js.map +0 -1
  298. package/dist/commands/mcp/import.d.ts +0 -12
  299. package/dist/commands/mcp/import.d.ts.map +0 -1
  300. package/dist/commands/mcp/import.js +0 -126
  301. package/dist/commands/mcp/import.js.map +0 -1
  302. package/dist/commands/mcp/index.d.ts +0 -14
  303. package/dist/commands/mcp/index.d.ts.map +0 -1
  304. package/dist/commands/mcp/index.js +0 -39
  305. package/dist/commands/mcp/index.js.map +0 -1
  306. package/dist/commands/mcp/install-shared.d.ts +0 -24
  307. package/dist/commands/mcp/install-shared.d.ts.map +0 -1
  308. package/dist/commands/mcp/install-shared.js +0 -42
  309. package/dist/commands/mcp/install-shared.js.map +0 -1
  310. package/dist/commands/mcp/install.d.ts +0 -20
  311. package/dist/commands/mcp/install.d.ts.map +0 -1
  312. package/dist/commands/mcp/install.js +0 -59
  313. package/dist/commands/mcp/install.js.map +0 -1
  314. package/dist/commands/mcp/list.d.ts +0 -6
  315. package/dist/commands/mcp/list.d.ts.map +0 -1
  316. package/dist/commands/mcp/list.js +0 -56
  317. package/dist/commands/mcp/list.js.map +0 -1
  318. package/dist/commands/mcp/login.d.ts +0 -6
  319. package/dist/commands/mcp/login.d.ts.map +0 -1
  320. package/dist/commands/mcp/login.js +0 -38
  321. package/dist/commands/mcp/login.js.map +0 -1
  322. package/dist/commands/mcp/remove.d.ts +0 -6
  323. package/dist/commands/mcp/remove.d.ts.map +0 -1
  324. package/dist/commands/mcp/remove.js +0 -21
  325. package/dist/commands/mcp/remove.js.map +0 -1
  326. package/dist/commands/mcp/revoke.d.ts +0 -11
  327. package/dist/commands/mcp/revoke.d.ts.map +0 -1
  328. package/dist/commands/mcp/revoke.js +0 -51
  329. package/dist/commands/mcp/revoke.js.map +0 -1
  330. package/dist/commands/mcp/serve.d.ts +0 -23
  331. package/dist/commands/mcp/serve.d.ts.map +0 -1
  332. package/dist/commands/mcp/serve.js +0 -55
  333. package/dist/commands/mcp/serve.js.map +0 -1
  334. package/dist/commands/mcp/status.d.ts +0 -6
  335. package/dist/commands/mcp/status.d.ts.map +0 -1
  336. package/dist/commands/mcp/status.js +0 -57
  337. package/dist/commands/mcp/status.js.map +0 -1
  338. package/dist/commands/mcp/uninstall.d.ts +0 -20
  339. package/dist/commands/mcp/uninstall.d.ts.map +0 -1
  340. package/dist/commands/mcp/uninstall.js +0 -60
  341. package/dist/commands/mcp/uninstall.js.map +0 -1
  342. package/dist/commands/memory/_paths.d.ts +0 -25
  343. package/dist/commands/memory/_paths.d.ts.map +0 -1
  344. package/dist/commands/memory/_paths.js +0 -57
  345. package/dist/commands/memory/_paths.js.map +0 -1
  346. package/dist/commands/memory/bridge.d.ts +0 -57
  347. package/dist/commands/memory/bridge.d.ts.map +0 -1
  348. package/dist/commands/memory/bridge.js +0 -152
  349. package/dist/commands/memory/bridge.js.map +0 -1
  350. package/dist/commands/memory/index.d.ts +0 -20
  351. package/dist/commands/memory/index.d.ts.map +0 -1
  352. package/dist/commands/memory/index.js +0 -47
  353. package/dist/commands/memory/index.js.map +0 -1
  354. package/dist/commands/memory/install-hooks.d.ts +0 -22
  355. package/dist/commands/memory/install-hooks.d.ts.map +0 -1
  356. package/dist/commands/memory/install-hooks.js +0 -156
  357. package/dist/commands/memory/install-hooks.js.map +0 -1
  358. package/dist/commands/memory/install.d.ts +0 -57
  359. package/dist/commands/memory/install.d.ts.map +0 -1
  360. package/dist/commands/memory/install.js +0 -114
  361. package/dist/commands/memory/install.js.map +0 -1
  362. package/dist/commands/memory/logs.d.ts +0 -19
  363. package/dist/commands/memory/logs.d.ts.map +0 -1
  364. package/dist/commands/memory/logs.js +0 -50
  365. package/dist/commands/memory/logs.js.map +0 -1
  366. package/dist/commands/memory/mode.d.ts +0 -47
  367. package/dist/commands/memory/mode.d.ts.map +0 -1
  368. package/dist/commands/memory/mode.js +0 -185
  369. package/dist/commands/memory/mode.js.map +0 -1
  370. package/dist/commands/memory/reclassify.d.ts +0 -56
  371. package/dist/commands/memory/reclassify.d.ts.map +0 -1
  372. package/dist/commands/memory/reclassify.js +0 -177
  373. package/dist/commands/memory/reclassify.js.map +0 -1
  374. package/dist/commands/memory/secret.d.ts +0 -16
  375. package/dist/commands/memory/secret.d.ts.map +0 -1
  376. package/dist/commands/memory/secret.js +0 -80
  377. package/dist/commands/memory/secret.js.map +0 -1
  378. package/dist/commands/memory/start.d.ts +0 -25
  379. package/dist/commands/memory/start.d.ts.map +0 -1
  380. package/dist/commands/memory/start.js +0 -83
  381. package/dist/commands/memory/start.js.map +0 -1
  382. package/dist/commands/memory/stats.d.ts +0 -69
  383. package/dist/commands/memory/stats.d.ts.map +0 -1
  384. package/dist/commands/memory/stats.js +0 -164
  385. package/dist/commands/memory/stats.js.map +0 -1
  386. package/dist/commands/memory/status.d.ts +0 -45
  387. package/dist/commands/memory/status.d.ts.map +0 -1
  388. package/dist/commands/memory/status.js +0 -134
  389. package/dist/commands/memory/status.js.map +0 -1
  390. package/dist/commands/memory/stop.d.ts +0 -13
  391. package/dist/commands/memory/stop.d.ts.map +0 -1
  392. package/dist/commands/memory/stop.js +0 -52
  393. package/dist/commands/memory/stop.js.map +0 -1
  394. package/dist/commands/memory/uninstall.d.ts +0 -19
  395. package/dist/commands/memory/uninstall.d.ts.map +0 -1
  396. package/dist/commands/memory/uninstall.js +0 -60
  397. package/dist/commands/memory/uninstall.js.map +0 -1
  398. package/dist/commands/memory-service-container.d.ts +0 -130
  399. package/dist/commands/memory-service-container.d.ts.map +0 -1
  400. package/dist/commands/memory-service-container.js +0 -251
  401. package/dist/commands/memory-service-container.js.map +0 -1
  402. package/dist/commands/observe.d.ts +0 -9
  403. package/dist/commands/observe.d.ts.map +0 -1
  404. package/dist/commands/observe.js +0 -42
  405. package/dist/commands/observe.js.map +0 -1
  406. package/dist/commands/plans-list-json.d.ts +0 -77
  407. package/dist/commands/plans-list-json.d.ts.map +0 -1
  408. package/dist/commands/plans-list-json.js +0 -61
  409. package/dist/commands/plans-list-json.js.map +0 -1
  410. package/dist/commands/plans.d.ts +0 -3
  411. package/dist/commands/plans.d.ts.map +0 -1
  412. package/dist/commands/plans.js +0 -221
  413. package/dist/commands/plans.js.map +0 -1
  414. package/dist/commands/policy-check.d.ts +0 -14
  415. package/dist/commands/policy-check.d.ts.map +0 -1
  416. package/dist/commands/policy-check.js +0 -76
  417. package/dist/commands/policy-check.js.map +0 -1
  418. package/dist/commands/pr.d.ts +0 -17
  419. package/dist/commands/pr.d.ts.map +0 -1
  420. package/dist/commands/pr.js +0 -148
  421. package/dist/commands/pr.js.map +0 -1
  422. package/dist/commands/ps.d.ts +0 -57
  423. package/dist/commands/ps.d.ts.map +0 -1
  424. package/dist/commands/ps.js +0 -202
  425. package/dist/commands/ps.js.map +0 -1
  426. package/dist/commands/refresh-helpers.d.ts +0 -25
  427. package/dist/commands/refresh-helpers.d.ts.map +0 -1
  428. package/dist/commands/refresh-helpers.js +0 -56
  429. package/dist/commands/refresh-helpers.js.map +0 -1
  430. package/dist/commands/refresh.d.ts +0 -23
  431. package/dist/commands/refresh.d.ts.map +0 -1
  432. package/dist/commands/refresh.js +0 -237
  433. package/dist/commands/refresh.js.map +0 -1
  434. package/dist/commands/rekey.d.ts +0 -84
  435. package/dist/commands/rekey.d.ts.map +0 -1
  436. package/dist/commands/rekey.js +0 -209
  437. package/dist/commands/rekey.js.map +0 -1
  438. package/dist/commands/repos-list-json.d.ts +0 -58
  439. package/dist/commands/repos-list-json.d.ts.map +0 -1
  440. package/dist/commands/repos-list-json.js +0 -45
  441. package/dist/commands/repos-list-json.js.map +0 -1
  442. package/dist/commands/repos.d.ts +0 -11
  443. package/dist/commands/repos.d.ts.map +0 -1
  444. package/dist/commands/repos.js +0 -102
  445. package/dist/commands/repos.js.map +0 -1
  446. package/dist/commands/restart.d.ts +0 -18
  447. package/dist/commands/restart.d.ts.map +0 -1
  448. package/dist/commands/restart.js +0 -113
  449. package/dist/commands/restart.js.map +0 -1
  450. package/dist/commands/resume.d.ts +0 -63
  451. package/dist/commands/resume.d.ts.map +0 -1
  452. package/dist/commands/resume.js +0 -174
  453. package/dist/commands/resume.js.map +0 -1
  454. package/dist/commands/runbooks.d.ts +0 -45
  455. package/dist/commands/runbooks.d.ts.map +0 -1
  456. package/dist/commands/runbooks.js +0 -313
  457. package/dist/commands/runbooks.js.map +0 -1
  458. package/dist/commands/seed.d.ts +0 -27
  459. package/dist/commands/seed.d.ts.map +0 -1
  460. package/dist/commands/seed.js +0 -303
  461. package/dist/commands/seed.js.map +0 -1
  462. package/dist/commands/services-tls.d.ts +0 -120
  463. package/dist/commands/services-tls.d.ts.map +0 -1
  464. package/dist/commands/services-tls.js +0 -489
  465. package/dist/commands/services-tls.js.map +0 -1
  466. package/dist/commands/services.d.ts +0 -218
  467. package/dist/commands/services.d.ts.map +0 -1
  468. package/dist/commands/services.js +0 -830
  469. package/dist/commands/services.js.map +0 -1
  470. package/dist/commands/setup-linux-gate.d.ts +0 -26
  471. package/dist/commands/setup-linux-gate.d.ts.map +0 -1
  472. package/dist/commands/setup-linux-gate.js +0 -40
  473. package/dist/commands/setup-linux-gate.js.map +0 -1
  474. package/dist/commands/setup-metrics.d.ts +0 -26
  475. package/dist/commands/setup-metrics.d.ts.map +0 -1
  476. package/dist/commands/setup-metrics.js +0 -56
  477. package/dist/commands/setup-metrics.js.map +0 -1
  478. package/dist/commands/setup-phase-5a-skill-source.d.ts +0 -84
  479. package/dist/commands/setup-phase-5a-skill-source.d.ts.map +0 -1
  480. package/dist/commands/setup-phase-5a-skill-source.js +0 -259
  481. package/dist/commands/setup-phase-5a-skill-source.js.map +0 -1
  482. package/dist/commands/setup-phase-5b-project-sweep.d.ts +0 -38
  483. package/dist/commands/setup-phase-5b-project-sweep.d.ts.map +0 -1
  484. package/dist/commands/setup-phase-5b-project-sweep.js +0 -175
  485. package/dist/commands/setup-phase-5b-project-sweep.js.map +0 -1
  486. package/dist/commands/setup-phase-8-kg-hook.d.ts +0 -48
  487. package/dist/commands/setup-phase-8-kg-hook.d.ts.map +0 -1
  488. package/dist/commands/setup-phase-8-kg-hook.js +0 -93
  489. package/dist/commands/setup-phase-8-kg-hook.js.map +0 -1
  490. package/dist/commands/setup-phase-9-memory-bridge.d.ts +0 -36
  491. package/dist/commands/setup-phase-9-memory-bridge.d.ts.map +0 -1
  492. package/dist/commands/setup-phase-9-memory-bridge.js +0 -59
  493. package/dist/commands/setup-phase-9-memory-bridge.js.map +0 -1
  494. package/dist/commands/setup.d.ts +0 -231
  495. package/dist/commands/setup.d.ts.map +0 -1
  496. package/dist/commands/setup.js +0 -1374
  497. package/dist/commands/setup.js.map +0 -1
  498. package/dist/commands/skills-100x.d.ts +0 -34
  499. package/dist/commands/skills-100x.d.ts.map +0 -1
  500. package/dist/commands/skills-100x.js +0 -405
  501. package/dist/commands/skills-100x.js.map +0 -1
  502. package/dist/commands/skills-doctor.d.ts +0 -14
  503. package/dist/commands/skills-doctor.d.ts.map +0 -1
  504. package/dist/commands/skills-doctor.js +0 -126
  505. package/dist/commands/skills-doctor.js.map +0 -1
  506. package/dist/commands/skills-hook.d.ts +0 -19
  507. package/dist/commands/skills-hook.d.ts.map +0 -1
  508. package/dist/commands/skills-hook.js +0 -99
  509. package/dist/commands/skills-hook.js.map +0 -1
  510. package/dist/commands/skills-install-model-router.d.ts +0 -20
  511. package/dist/commands/skills-install-model-router.d.ts.map +0 -1
  512. package/dist/commands/skills-install-model-router.js +0 -55
  513. package/dist/commands/skills-install-model-router.js.map +0 -1
  514. package/dist/commands/skills-migrate-back.d.ts +0 -21
  515. package/dist/commands/skills-migrate-back.d.ts.map +0 -1
  516. package/dist/commands/skills-migrate-back.js +0 -222
  517. package/dist/commands/skills-migrate-back.js.map +0 -1
  518. package/dist/commands/skills-migrate-hooks-back.d.ts +0 -19
  519. package/dist/commands/skills-migrate-hooks-back.d.ts.map +0 -1
  520. package/dist/commands/skills-migrate-hooks-back.js +0 -83
  521. package/dist/commands/skills-migrate-hooks-back.js.map +0 -1
  522. package/dist/commands/skills-migrate-hooks.d.ts +0 -40
  523. package/dist/commands/skills-migrate-hooks.d.ts.map +0 -1
  524. package/dist/commands/skills-migrate-hooks.js +0 -178
  525. package/dist/commands/skills-migrate-hooks.js.map +0 -1
  526. package/dist/commands/skills-migrate.d.ts +0 -33
  527. package/dist/commands/skills-migrate.d.ts.map +0 -1
  528. package/dist/commands/skills-migrate.js +0 -216
  529. package/dist/commands/skills-migrate.js.map +0 -1
  530. package/dist/commands/skills-onboard.d.ts +0 -26
  531. package/dist/commands/skills-onboard.d.ts.map +0 -1
  532. package/dist/commands/skills-onboard.js +0 -230
  533. package/dist/commands/skills-onboard.js.map +0 -1
  534. package/dist/commands/skills-shadow-backups.d.ts +0 -15
  535. package/dist/commands/skills-shadow-backups.d.ts.map +0 -1
  536. package/dist/commands/skills-shadow-backups.js +0 -132
  537. package/dist/commands/skills-shadow-backups.js.map +0 -1
  538. package/dist/commands/skills-source.d.ts +0 -61
  539. package/dist/commands/skills-source.d.ts.map +0 -1
  540. package/dist/commands/skills-source.js +0 -895
  541. package/dist/commands/skills-source.js.map +0 -1
  542. package/dist/commands/skills.d.ts +0 -59
  543. package/dist/commands/skills.d.ts.map +0 -1
  544. package/dist/commands/skills.js +0 -461
  545. package/dist/commands/skills.js.map +0 -1
  546. package/dist/commands/status.d.ts +0 -65
  547. package/dist/commands/status.d.ts.map +0 -1
  548. package/dist/commands/status.js +0 -249
  549. package/dist/commands/status.js.map +0 -1
  550. package/dist/commands/stop.d.ts +0 -10
  551. package/dist/commands/stop.d.ts.map +0 -1
  552. package/dist/commands/stop.js +0 -17
  553. package/dist/commands/stop.js.map +0 -1
  554. package/dist/commands/substrate-audit-log.d.ts +0 -51
  555. package/dist/commands/substrate-audit-log.d.ts.map +0 -1
  556. package/dist/commands/substrate-audit-log.js +0 -161
  557. package/dist/commands/substrate-audit-log.js.map +0 -1
  558. package/dist/commands/substrate.d.ts +0 -87
  559. package/dist/commands/substrate.d.ts.map +0 -1
  560. package/dist/commands/substrate.js +0 -194
  561. package/dist/commands/substrate.js.map +0 -1
  562. package/dist/commands/update.d.ts +0 -89
  563. package/dist/commands/update.d.ts.map +0 -1
  564. package/dist/commands/update.js +0 -331
  565. package/dist/commands/update.js.map +0 -1
  566. package/dist/commands/upgrade-history.d.ts +0 -15
  567. package/dist/commands/upgrade-history.d.ts.map +0 -1
  568. package/dist/commands/upgrade-history.js +0 -34
  569. package/dist/commands/upgrade-history.js.map +0 -1
  570. package/dist/commands/upgrade-lock.d.ts +0 -93
  571. package/dist/commands/upgrade-lock.d.ts.map +0 -1
  572. package/dist/commands/upgrade-lock.js +0 -225
  573. package/dist/commands/upgrade-lock.js.map +0 -1
  574. package/dist/commands/upgrade-log.d.ts +0 -86
  575. package/dist/commands/upgrade-log.d.ts.map +0 -1
  576. package/dist/commands/upgrade-log.js +0 -146
  577. package/dist/commands/upgrade-log.js.map +0 -1
  578. package/dist/commands/upgrade.d.ts +0 -445
  579. package/dist/commands/upgrade.d.ts.map +0 -1
  580. package/dist/commands/upgrade.js +0 -1718
  581. package/dist/commands/upgrade.js.map +0 -1
  582. package/dist/commands/workspace-list-json.d.ts +0 -73
  583. package/dist/commands/workspace-list-json.d.ts.map +0 -1
  584. package/dist/commands/workspace-list-json.js +0 -59
  585. package/dist/commands/workspace-list-json.js.map +0 -1
  586. package/dist/commands/workspace.d.ts +0 -23
  587. package/dist/commands/workspace.d.ts.map +0 -1
  588. package/dist/commands/workspace.js +0 -203
  589. package/dist/commands/workspace.js.map +0 -1
  590. package/dist/commands/world-snapshot.d.ts +0 -32
  591. package/dist/commands/world-snapshot.d.ts.map +0 -1
  592. package/dist/commands/world-snapshot.js +0 -531
  593. package/dist/commands/world-snapshot.js.map +0 -1
  594. package/dist/commands/world-upgrade.d.ts +0 -33
  595. package/dist/commands/world-upgrade.d.ts.map +0 -1
  596. package/dist/commands/world-upgrade.js +0 -82
  597. package/dist/commands/world-upgrade.js.map +0 -1
  598. package/dist/commands/world.d.ts +0 -12
  599. package/dist/commands/world.d.ts.map +0 -1
  600. package/dist/commands/world.js +0 -18
  601. package/dist/commands/world.js.map +0 -1
  602. package/dist/commands/worldspec/compile.d.ts +0 -20
  603. package/dist/commands/worldspec/compile.d.ts.map +0 -1
  604. package/dist/commands/worldspec/compile.js +0 -130
  605. package/dist/commands/worldspec/compile.js.map +0 -1
  606. package/dist/commands/worldspec/index.d.ts +0 -12
  607. package/dist/commands/worldspec/index.d.ts.map +0 -1
  608. package/dist/commands/worldspec/index.js +0 -23
  609. package/dist/commands/worldspec/index.js.map +0 -1
  610. package/dist/commands/worldspec/init.d.ts +0 -15
  611. package/dist/commands/worldspec/init.d.ts.map +0 -1
  612. package/dist/commands/worldspec/init.js +0 -166
  613. package/dist/commands/worldspec/init.js.map +0 -1
  614. package/dist/commands/worldspec/schema.d.ts +0 -11
  615. package/dist/commands/worldspec/schema.d.ts.map +0 -1
  616. package/dist/commands/worldspec/schema.js +0 -55
  617. package/dist/commands/worldspec/schema.js.map +0 -1
  618. package/dist/commands/worldspec/validate.d.ts +0 -15
  619. package/dist/commands/worldspec/validate.d.ts.map +0 -1
  620. package/dist/commands/worldspec/validate.js +0 -66
  621. package/dist/commands/worldspec/validate.js.map +0 -1
  622. package/dist/commands/yolo.d.ts +0 -95
  623. package/dist/commands/yolo.d.ts.map +0 -1
  624. package/dist/commands/yolo.js +0 -377
  625. package/dist/commands/yolo.js.map +0 -1
  626. package/dist/context.d.ts +0 -30
  627. package/dist/context.d.ts.map +0 -1
  628. package/dist/context.js +0 -56
  629. package/dist/context.js.map +0 -1
  630. package/dist/docker-host.d.ts +0 -18
  631. package/dist/docker-host.d.ts.map +0 -1
  632. package/dist/docker-host.js +0 -17
  633. package/dist/docker-host.js.map +0 -1
  634. package/dist/exit-codes.d.ts +0 -67
  635. package/dist/exit-codes.d.ts.map +0 -1
  636. package/dist/exit-codes.js +0 -67
  637. package/dist/exit-codes.js.map +0 -1
  638. package/dist/from-manifest.d.ts +0 -53
  639. package/dist/from-manifest.d.ts.map +0 -1
  640. package/dist/from-manifest.js +0 -95
  641. package/dist/from-manifest.js.map +0 -1
  642. package/dist/image-presence.d.ts +0 -40
  643. package/dist/image-presence.d.ts.map +0 -1
  644. package/dist/image-presence.js +0 -39
  645. package/dist/image-presence.js.map +0 -1
  646. package/dist/index.d.ts +0 -9
  647. package/dist/index.d.ts.map +0 -1
  648. package/dist/install-root.d.ts +0 -74
  649. package/dist/install-root.d.ts.map +0 -1
  650. package/dist/install-root.js +0 -98
  651. package/dist/install-root.js.map +0 -1
  652. package/dist/lib/anthropic-base-url-file.d.ts +0 -37
  653. package/dist/lib/anthropic-base-url-file.d.ts.map +0 -1
  654. package/dist/lib/anthropic-base-url-file.js +0 -46
  655. package/dist/lib/anthropic-base-url-file.js.map +0 -1
  656. package/dist/lib/auth-backend.d.ts +0 -168
  657. package/dist/lib/auth-backend.d.ts.map +0 -1
  658. package/dist/lib/auth-backend.js +0 -172
  659. package/dist/lib/auth-backend.js.map +0 -1
  660. package/dist/lib/auth-list-cache.d.ts +0 -67
  661. package/dist/lib/auth-list-cache.d.ts.map +0 -1
  662. package/dist/lib/auth-list-cache.js +0 -84
  663. package/dist/lib/auth-list-cache.js.map +0 -1
  664. package/dist/lib/auth-list.d.ts +0 -107
  665. package/dist/lib/auth-list.d.ts.map +0 -1
  666. package/dist/lib/auth-list.js +0 -123
  667. package/dist/lib/auth-list.js.map +0 -1
  668. package/dist/lib/auth-login.d.ts +0 -92
  669. package/dist/lib/auth-login.d.ts.map +0 -1
  670. package/dist/lib/auth-login.js +0 -124
  671. package/dist/lib/auth-login.js.map +0 -1
  672. package/dist/lib/auth-mutator-backend.d.ts +0 -54
  673. package/dist/lib/auth-mutator-backend.d.ts.map +0 -1
  674. package/dist/lib/auth-mutator-backend.js +0 -62
  675. package/dist/lib/auth-mutator-backend.js.map +0 -1
  676. package/dist/lib/auth-refresh-kubernetes.d.ts +0 -65
  677. package/dist/lib/auth-refresh-kubernetes.d.ts.map +0 -1
  678. package/dist/lib/auth-refresh-kubernetes.js +0 -125
  679. package/dist/lib/auth-refresh-kubernetes.js.map +0 -1
  680. package/dist/lib/auth-remote.d.ts +0 -172
  681. package/dist/lib/auth-remote.d.ts.map +0 -1
  682. package/dist/lib/auth-remote.js +0 -394
  683. package/dist/lib/auth-remote.js.map +0 -1
  684. package/dist/lib/bootstrap-kubernetes.d.ts +0 -164
  685. package/dist/lib/bootstrap-kubernetes.d.ts.map +0 -1
  686. package/dist/lib/bootstrap-kubernetes.js +0 -1002
  687. package/dist/lib/bootstrap-kubernetes.js.map +0 -1
  688. package/dist/lib/build-if-stale.d.ts +0 -33
  689. package/dist/lib/build-if-stale.d.ts.map +0 -1
  690. package/dist/lib/build-if-stale.js +0 -156
  691. package/dist/lib/build-if-stale.js.map +0 -1
  692. package/dist/lib/bundle-freshness.d.ts +0 -57
  693. package/dist/lib/bundle-freshness.d.ts.map +0 -1
  694. package/dist/lib/bundle-freshness.js +0 -223
  695. package/dist/lib/bundle-freshness.js.map +0 -1
  696. package/dist/lib/bundle-source.d.ts +0 -52
  697. package/dist/lib/bundle-source.d.ts.map +0 -1
  698. package/dist/lib/bundle-source.js +0 -83
  699. package/dist/lib/bundle-source.js.map +0 -1
  700. package/dist/lib/cf-access-token.d.ts +0 -32
  701. package/dist/lib/cf-access-token.d.ts.map +0 -1
  702. package/dist/lib/cf-access-token.js +0 -51
  703. package/dist/lib/cf-access-token.js.map +0 -1
  704. package/dist/lib/completion-generator.d.ts +0 -107
  705. package/dist/lib/completion-generator.d.ts.map +0 -1
  706. package/dist/lib/completion-generator.js +0 -226
  707. package/dist/lib/completion-generator.js.map +0 -1
  708. package/dist/lib/config.d.ts +0 -114
  709. package/dist/lib/config.d.ts.map +0 -1
  710. package/dist/lib/config.js +0 -246
  711. package/dist/lib/config.js.map +0 -1
  712. package/dist/lib/flywheel-probes.d.ts +0 -58
  713. package/dist/lib/flywheel-probes.d.ts.map +0 -1
  714. package/dist/lib/flywheel-probes.js +0 -163
  715. package/dist/lib/flywheel-probes.js.map +0 -1
  716. package/dist/lib/health-probes.d.ts +0 -267
  717. package/dist/lib/health-probes.d.ts.map +0 -1
  718. package/dist/lib/health-probes.js +0 -933
  719. package/dist/lib/health-probes.js.map +0 -1
  720. package/dist/lib/help-groups.d.ts +0 -36
  721. package/dist/lib/help-groups.d.ts.map +0 -1
  722. package/dist/lib/help-groups.js +0 -124
  723. package/dist/lib/help-groups.js.map +0 -1
  724. package/dist/lib/host-side-proxy.d.ts +0 -67
  725. package/dist/lib/host-side-proxy.d.ts.map +0 -1
  726. package/dist/lib/host-side-proxy.js +0 -177
  727. package/dist/lib/host-side-proxy.js.map +0 -1
  728. package/dist/lib/instrumentation.d.ts +0 -85
  729. package/dist/lib/instrumentation.d.ts.map +0 -1
  730. package/dist/lib/instrumentation.js +0 -104
  731. package/dist/lib/instrumentation.js.map +0 -1
  732. package/dist/lib/k8s-bootstrap.d.ts +0 -126
  733. package/dist/lib/k8s-bootstrap.d.ts.map +0 -1
  734. package/dist/lib/k8s-bootstrap.js +0 -218
  735. package/dist/lib/k8s-bootstrap.js.map +0 -1
  736. package/dist/lib/k8s-context-discovery.d.ts +0 -80
  737. package/dist/lib/k8s-context-discovery.d.ts.map +0 -1
  738. package/dist/lib/k8s-context-discovery.js +0 -102
  739. package/dist/lib/k8s-context-discovery.js.map +0 -1
  740. package/dist/lib/k8s-secret-render.d.ts +0 -141
  741. package/dist/lib/k8s-secret-render.d.ts.map +0 -1
  742. package/dist/lib/k8s-secret-render.js +0 -318
  743. package/dist/lib/k8s-secret-render.js.map +0 -1
  744. package/dist/lib/kg-caps.d.ts +0 -19
  745. package/dist/lib/kg-caps.d.ts.map +0 -1
  746. package/dist/lib/kg-caps.js +0 -19
  747. package/dist/lib/kg-caps.js.map +0 -1
  748. package/dist/lib/kubectl-context.d.ts +0 -87
  749. package/dist/lib/kubectl-context.d.ts.map +0 -1
  750. package/dist/lib/kubectl-context.js +0 -105
  751. package/dist/lib/kubectl-context.js.map +0 -1
  752. package/dist/lib/kubectl-wrap.d.ts +0 -65
  753. package/dist/lib/kubectl-wrap.d.ts.map +0 -1
  754. package/dist/lib/kubectl-wrap.js +0 -135
  755. package/dist/lib/kubectl-wrap.js.map +0 -1
  756. package/dist/lib/manifest-refresh.d.ts +0 -136
  757. package/dist/lib/manifest-refresh.d.ts.map +0 -1
  758. package/dist/lib/manifest-refresh.js +0 -298
  759. package/dist/lib/manifest-refresh.js.map +0 -1
  760. package/dist/lib/memory-host-process-migration.d.ts +0 -56
  761. package/dist/lib/memory-host-process-migration.d.ts.map +0 -1
  762. package/dist/lib/memory-host-process-migration.js +0 -156
  763. package/dist/lib/memory-host-process-migration.js.map +0 -1
  764. package/dist/lib/memory-secret.d.ts +0 -83
  765. package/dist/lib/memory-secret.d.ts.map +0 -1
  766. package/dist/lib/memory-secret.js +0 -147
  767. package/dist/lib/memory-secret.js.map +0 -1
  768. package/dist/lib/peripheral-registry.d.ts +0 -53
  769. package/dist/lib/peripheral-registry.d.ts.map +0 -1
  770. package/dist/lib/peripheral-registry.js +0 -73
  771. package/dist/lib/peripheral-registry.js.map +0 -1
  772. package/dist/lib/plans-client.d.ts +0 -69
  773. package/dist/lib/plans-client.d.ts.map +0 -1
  774. package/dist/lib/plans-client.js +0 -140
  775. package/dist/lib/plans-client.js.map +0 -1
  776. package/dist/lib/port-forward.d.ts +0 -168
  777. package/dist/lib/port-forward.d.ts.map +0 -1
  778. package/dist/lib/port-forward.js +0 -393
  779. package/dist/lib/port-forward.js.map +0 -1
  780. package/dist/lib/shell-rc.d.ts +0 -90
  781. package/dist/lib/shell-rc.d.ts.map +0 -1
  782. package/dist/lib/shell-rc.js +0 -91
  783. package/dist/lib/shell-rc.js.map +0 -1
  784. package/dist/lib/shim-generator.d.ts +0 -51
  785. package/dist/lib/shim-generator.d.ts.map +0 -1
  786. package/dist/lib/shim-generator.js +0 -88
  787. package/dist/lib/shim-generator.js.map +0 -1
  788. package/dist/lib/skills-apply-overlays.d.ts +0 -35
  789. package/dist/lib/skills-apply-overlays.d.ts.map +0 -1
  790. package/dist/lib/skills-apply-overlays.js +0 -243
  791. package/dist/lib/skills-apply-overlays.js.map +0 -1
  792. package/dist/lib/symlink-reconcile.d.ts +0 -32
  793. package/dist/lib/symlink-reconcile.d.ts.map +0 -1
  794. package/dist/lib/symlink-reconcile.js +0 -80
  795. package/dist/lib/symlink-reconcile.js.map +0 -1
  796. package/dist/lib/upgrade-check.d.ts +0 -60
  797. package/dist/lib/upgrade-check.d.ts.map +0 -1
  798. package/dist/lib/upgrade-check.js +0 -169
  799. package/dist/lib/upgrade-check.js.map +0 -1
  800. package/dist/lib/upgrade-kubernetes.d.ts +0 -193
  801. package/dist/lib/upgrade-kubernetes.d.ts.map +0 -1
  802. package/dist/lib/upgrade-kubernetes.js +0 -1014
  803. package/dist/lib/upgrade-kubernetes.js.map +0 -1
  804. package/dist/lib/world-mcp-register.d.ts +0 -98
  805. package/dist/lib/world-mcp-register.d.ts.map +0 -1
  806. package/dist/lib/world-mcp-register.js +0 -117
  807. package/dist/lib/world-mcp-register.js.map +0 -1
  808. package/dist/output.d.ts +0 -10
  809. package/dist/output.d.ts.map +0 -1
  810. package/dist/output.js +0 -31
  811. package/dist/output.js.map +0 -1
  812. package/dist/pleri-config.d.ts +0 -22
  813. package/dist/pleri-config.d.ts.map +0 -1
  814. package/dist/pleri-config.js +0 -42
  815. package/dist/pleri-config.js.map +0 -1
  816. package/dist/protocol-version.d.ts +0 -79
  817. package/dist/protocol-version.d.ts.map +0 -1
  818. package/dist/protocol-version.js +0 -133
  819. package/dist/protocol-version.js.map +0 -1
  820. package/dist/registry-allowlist.d.ts +0 -47
  821. package/dist/registry-allowlist.d.ts.map +0 -1
  822. package/dist/registry-allowlist.js +0 -67
  823. package/dist/registry-allowlist.js.map +0 -1
  824. package/dist/spawn/home-override.d.ts +0 -82
  825. package/dist/spawn/home-override.d.ts.map +0 -1
  826. package/dist/spawn/home-override.js +0 -107
  827. package/dist/spawn/home-override.js.map +0 -1
  828. package/host-cp/src/linear-sync.mjs +0 -43
@@ -1,1002 +0,0 @@
1
- /**
2
- * bootstrap-kubernetes.ts — k3s mode of `olam bootstrap`.
3
- *
4
- * Wraps the legacy `scripts/dogfood/up.sh` reference flow into a CLI
5
- * routine so external operators with only the published `@pleri/olam-cli`
6
- * tarball (no access to the private `pleri/olam` repo) can bring up an
7
- * end-to-end olam-on-k3s stack with one command.
8
- *
9
- * Steps (idempotent):
10
- * 0. Preflight — detect required tools (k3d, kubectl, helm, jq, curl,
11
- * openssl, gh, docker). With --auto-install on macOS, run `brew
12
- * install` for missing brew-formulae.
13
- * 1. Secrets — generate `~/.olam/{auth-secret,kg-bearer-token,
14
- * auth-db-secret,mcp-auth-jwt-secret,memory-bearer-secret}` if absent.
15
- * 2. Container runtime (macOS only) — honour host.preferred_runtime;
16
- * auto-detect otherwise (prefer an installed Docker Desktop over
17
- * imposing Colima). For Docker Desktop: select the `desktop-linux`
18
- * context + ensure the daemon is up. For Colima: ensure running +
19
- * chmod /var/run/docker.sock inside the VM (virtiofs mitigation).
20
- * 3. k3d cluster — create `<cluster>` with the gh-config bind. Skipped
21
- * if cluster already exists.
22
- * 4. Observability — chain bundled scripts in `<install>/host-cp/
23
- * observability/` to install Loki + Promtail + Grafana +
24
- * kube-prometheus-stack + Kyverno admission policy.
25
- * 5. Delegate to `olam upgrade -y` — that flow handles namespace + RBAC
26
- * + secrets + ghcr-pull + host-side docker-socket-proxy +
27
- * manifest apply + rollout + verify.
28
- *
29
- * Note: `olam upgrade` already ships the 8-step k8s flow in
30
- * `upgrade-kubernetes.ts` (Phase 1b C2 + Phase 2 C/D). This module is
31
- * the prereq + cluster-create + observability wrapper around it.
32
- */
33
- import { spawn, spawnSync } from "node:child_process";
34
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, chmodSync, statSync, } from "node:fs";
35
- import { join } from "node:path";
36
- import { homedir, platform } from "node:os";
37
- import { randomBytes } from "node:crypto";
38
- import pc from "picocolors";
39
- import ora from "ora";
40
- import { printError, printSuccess, printInfo, printWarning, printHeader, } from "../output.js";
41
- import { installRoot } from "../install-root.js";
42
- import { resolveK8sAssetsRoot } from "./k8s-bootstrap.js";
43
- import { canonicalSecretPath, ensureSecretsDir } from "@olam/core/src/secrets/paths.js";
44
- const OLAM_HOME = join(homedir(), ".olam");
45
- export const DEFAULT_K3S_CLUSTER = "olam-host";
46
- const REQUIRED_TOOLS = [
47
- { name: "k3d", brew: "k3d" },
48
- { name: "kubectl", brew: "kubectl" },
49
- { name: "helm", brew: "helm" },
50
- { name: "jq", brew: "jq" },
51
- {
52
- name: "curl",
53
- hint: "expected on macOS by default; `apt install curl` on linux",
54
- },
55
- {
56
- name: "openssl",
57
- hint: "expected on macOS by default; `apt install openssl` on linux",
58
- },
59
- { name: "gh", brew: "gh", hint: "after install: `gh auth login`" },
60
- { name: "docker", hint: "Docker Desktop, or colima on macOS" },
61
- ];
62
- const SECRET_FILES = [
63
- "auth-secret",
64
- "kg-bearer-token",
65
- "auth-db-secret",
66
- "mcp-auth-jwt-secret",
67
- "memory-bearer-secret",
68
- ];
69
- const OBSERVABILITY_SCRIPTS = [
70
- "loki-ingest.sh",
71
- "grafana-port-forward.sh",
72
- "prom-no-double-grafana.sh",
73
- "kyverno-cardinality-mutate.sh",
74
- ];
75
- /** Wraps `command -v <tool>` returning true when the binary is on PATH. */
76
- function hasTool(tool) {
77
- const result = spawnSync("command", ["-v", tool], {
78
- shell: true,
79
- stdio: "pipe",
80
- });
81
- return result.status === 0;
82
- }
83
- function detectMissingTools() {
84
- return REQUIRED_TOOLS.filter((tool) => !hasTool(tool.name));
85
- }
86
- function runOrFail(cmd, args, description) {
87
- const result = spawnSync(cmd, args, { stdio: "inherit" });
88
- if (result.status !== 0) {
89
- printError(`${description} failed (exit ${result.status ?? "signal"})`);
90
- process.exit(result.status ?? 1);
91
- }
92
- }
93
- function runCapture(cmd, args) {
94
- const result = spawnSync(cmd, args, { encoding: "utf8" });
95
- return {
96
- ok: result.status === 0,
97
- stdout: result.stdout ?? "",
98
- stderr: result.stderr ?? "",
99
- };
100
- }
101
- function step(label) {
102
- process.stdout.write("\n" + pc.bold(pc.cyan(`==> ${label}`)) + "\n");
103
- }
104
- /** Truncate a single status line so the spinner never wraps the terminal. */
105
- function truncate(text, max) {
106
- const clean = text.replace(/\s+/g, " ").trim();
107
- return clean.length > max ? clean.slice(0, max - 1) + "…" : clean;
108
- }
109
- /**
110
- * Run a child process with live, single-line progress (default) or full
111
- * sequential streaming (verbose / non-TTY). Combined stdout+stderr is always
112
- * captured to `~/.olam/logs/<logName>.log` for post-hoc debugging regardless
113
- * of mode. Async (uses `spawn`) so the spinner can actually animate — the
114
- * legacy `spawnSync` path blocked the event loop and showed nothing for the
115
- * full 90-155s of each observability script.
116
- */
117
- export function runLiveTask(label, cmd, args, opts) {
118
- const logDir = join(homedir(), ".olam", "logs");
119
- mkdirSync(logDir, { recursive: true });
120
- const logPath = join(logDir, `${opts.logName}.log`);
121
- const startMs = Date.now();
122
- const settle = opts.settle ?? "auto";
123
- const useSpinner = !opts.verbose && Boolean(process.stdout.isTTY);
124
- return new Promise((resolve) => {
125
- const child = spawn(cmd, [...args], {
126
- env: opts.env ?? process.env,
127
- stdio: ["ignore", "pipe", "pipe"],
128
- });
129
- const chunks = [];
130
- let latestLine = "";
131
- let outBuf = "";
132
- let errBuf = "";
133
- const spinner = useSpinner ? ora({ text: label }).start() : null;
134
- const elapsed = () => ((Date.now() - startMs) / 1000).toFixed(0);
135
- const render = () => {
136
- if (!spinner)
137
- return;
138
- const suffix = latestLine ? ` ${pc.dim("·")} ${truncate(latestLine, 60)}` : "";
139
- spinner.text = `${label}${suffix} ${pc.dim(`(${elapsed()}s)`)}`;
140
- };
141
- const ticker = spinner ? setInterval(render, 1000) : null;
142
- if (ticker && typeof ticker.unref === "function")
143
- ticker.unref();
144
- const onData = (buf, which) => {
145
- const text = buf.toString("utf-8");
146
- chunks.push(text);
147
- const acc = (which === "out" ? outBuf : errBuf) + text;
148
- const lines = acc.split("\n");
149
- const remainder = lines.pop() ?? "";
150
- if (which === "out")
151
- outBuf = remainder;
152
- else
153
- errBuf = remainder;
154
- for (const raw of lines) {
155
- const line = raw.replace(/\s+$/, "");
156
- if (line.length === 0)
157
- continue;
158
- if (spinner) {
159
- latestLine = line;
160
- render();
161
- }
162
- else if (opts.verbose) {
163
- process.stdout.write(` ${pc.dim(`[${label}]`)} ${line}\n`);
164
- }
165
- }
166
- };
167
- child.stdout?.on("data", (b) => onData(b, "out"));
168
- child.stderr?.on("data", (b) => onData(b, "err"));
169
- const finalize = (code) => {
170
- if (ticker)
171
- clearInterval(ticker);
172
- const durationMs = Date.now() - startMs;
173
- writeFileSync(logPath, chunks.join(""), "utf-8");
174
- const ok = code === 0;
175
- const secs = `${(durationMs / 1000).toFixed(1)}s`;
176
- if (spinner) {
177
- if (settle === "auto") {
178
- if (ok)
179
- spinner.succeed(`${label} ${pc.dim(`(${secs})`)}`);
180
- else
181
- spinner.fail(`${label} — failed (${secs}) — log=${logPath}`);
182
- }
183
- else {
184
- // Caller owns the final line; clear the transient progress line.
185
- spinner.stop();
186
- }
187
- }
188
- else if (settle === "auto") {
189
- // No spinner (verbose or non-TTY): the live line never rendered, so emit
190
- // a plain terminal status line. Manual-settle callers print their own.
191
- if (ok) {
192
- process.stdout.write(`${pc.green("ok")} ${label} ${pc.dim(`(${secs})`)}\n`);
193
- }
194
- else {
195
- process.stderr.write(`${pc.red("error")} ${label} — failed (${secs}) — log=${logPath}\n`);
196
- }
197
- }
198
- resolve({ ok, exitCode: code, durationMs, logPath });
199
- };
200
- child.on("error", (err) => {
201
- chunks.push(`\n[spawn error] ${err.message}\n`);
202
- finalize(-1);
203
- });
204
- child.on("close", (code) => finalize(code));
205
- });
206
- }
207
- function preflight(opts) {
208
- step("0/7 — preflight (tool detection)");
209
- const missing = detectMissingTools();
210
- if (missing.length === 0) {
211
- printSuccess("all required tools present");
212
- }
213
- else if (opts.autoInstall && platform() === "darwin") {
214
- const brewable = missing.filter((t) => t.brew);
215
- if (brewable.length > 0) {
216
- printInfo("auto-install", `${brewable.length} brew formula(s): ${brewable.map((t) => t.brew).join(", ")}`);
217
- runOrFail("brew", ["install", ...brewable.map((t) => t.brew)], "brew install");
218
- }
219
- const stillMissing = detectMissingTools();
220
- if (stillMissing.length > 0) {
221
- printError("tools still missing after auto-install:");
222
- for (const t of stillMissing) {
223
- process.stderr.write(` - ${t.name}${t.hint ? ` — ${t.hint}` : ""}\n`);
224
- }
225
- process.exit(1);
226
- }
227
- printSuccess("all required tools present after auto-install");
228
- }
229
- else {
230
- printError(`${missing.length} required tool(s) missing:`);
231
- for (const t of missing) {
232
- const hint = t.brew
233
- ? `brew install ${t.brew}`
234
- : (t.hint ?? "(install manually)");
235
- process.stderr.write(` - ${pc.bold(t.name)}: ${hint}\n`);
236
- }
237
- process.stderr.write("\nRe-run with --auto-install on macOS to install brew-formulae automatically.\n");
238
- process.exit(1);
239
- }
240
- // gh auth — honour env-var auth (GH_TOKEN / GITHUB_TOKEN). `gh auth status`
241
- // exits non-zero when auth comes from env even though the user IS authenticated
242
- // (gh prints "✓ Logged in (GH_TOKEN)" but returns exit code 1 because no
243
- // gh-managed credential is stored). Don't fail bootstrap on that case —
244
- // exercise the token directly via `gh api user` which actually validates it.
245
- const authStatus = runCapture("gh", ["auth", "status"]);
246
- const ghTokenSet = !!(process.env.GH_TOKEN || process.env.GITHUB_TOKEN);
247
- if (!authStatus.ok && !ghTokenSet) {
248
- printError("gh is not authenticated — run: gh auth login");
249
- process.exit(1);
250
- }
251
- if (!authStatus.ok && ghTokenSet) {
252
- // Env-var token present but gh auth status non-zero. Validate by hitting
253
- // the API. If that fails too, the token is bad/expired.
254
- if (!runCapture("gh", ["api", "user", "--jq", ".login"]).ok) {
255
- printError("GH_TOKEN/GITHUB_TOKEN set but invalid — `gh api user` failed");
256
- process.exit(1);
257
- }
258
- }
259
- printSuccess("gh authenticated");
260
- // docker reachability. On macOS the runtime (Docker Desktop / Colima)
261
- // may not be started yet — ensureContainerRuntime (step 2/7) brings it
262
- // up, so a cold daemon here is only a warning. On Linux the operator
263
- // owns the daemon, so an unreachable daemon stays a hard failure.
264
- if (!runCapture("docker", ["info"]).ok) {
265
- if (platform() === "darwin") {
266
- printWarning("docker daemon not reachable yet — starting the container runtime next");
267
- }
268
- else {
269
- printError("docker daemon unreachable — start Docker Desktop or colima");
270
- process.exit(1);
271
- }
272
- }
273
- else {
274
- printSuccess("docker daemon reachable");
275
- }
276
- }
277
- function ensureSecrets() {
278
- step("1/7 — operator secrets");
279
- mkdirSync(OLAM_HOME, { recursive: true });
280
- ensureSecretsDir();
281
- for (const name of SECRET_FILES) {
282
- // Write to canonical new location (~/.olam/secrets/<name>).
283
- const newPath = canonicalSecretPath(name);
284
- // Legacy path — if it already exists there, skip (migration handles move).
285
- const legacyPath = join(OLAM_HOME, name);
286
- if (existsSync(newPath) || existsSync(legacyPath)) {
287
- printInfo("skip", `~/.olam/secrets/${name} already exists`);
288
- continue;
289
- }
290
- const hex = randomBytes(32).toString("hex");
291
- writeFileSync(newPath, hex + "\n", { encoding: "utf8", mode: 0o600 });
292
- chmodSync(newPath, 0o600);
293
- printSuccess(`generated ~/.olam/secrets/${name}`);
294
- }
295
- }
296
- /**
297
- * Decide which macOS container runtime to drive for the k3d node.
298
- *
299
- * Explicit operator preference (from `~/.olam/config.json
300
- * host.preferred_runtime`) always wins. When unset, prefer an installed
301
- * Docker Desktop over Colima — i.e. never impose a second Colima VM onto
302
- * a machine that already runs Docker Desktop. Pure function: the
303
- * detection result is injected so it stays unit-testable.
304
- */
305
- export function resolveMacRuntime(preferred, dockerDesktopInstalled) {
306
- if (preferred)
307
- return preferred;
308
- return dockerDesktopInstalled ? "docker-desktop" : "colima";
309
- }
310
- /** True when the Docker Desktop app bundle is present on this Mac. */
311
- function isDockerDesktopInstalled() {
312
- return existsSync("/Applications/Docker.app");
313
- }
314
- /** True when the active docker context has a reachable daemon. */
315
- function dockerDaemonReachable() {
316
- return runCapture("docker", ["info"]).ok;
317
- }
318
- /**
319
- * macOS container-runtime bring-up (step 2/7). Honours
320
- * `opts.preferredRuntime`; auto-detects Docker Desktop otherwise. k3d
321
- * runs its k3s node on whichever daemon the *active docker context*
322
- * points at, so this both selects the runtime and points the context at
323
- * it before `k3d cluster create`. No-op on non-darwin (Linux operators
324
- * manage their own daemon).
325
- */
326
- function ensureContainerRuntime(opts) {
327
- if (platform() !== "darwin")
328
- return;
329
- const runtime = resolveMacRuntime(opts.preferredRuntime, isDockerDesktopInstalled());
330
- if (runtime === "external-k8s") {
331
- step("2/7 — container runtime (external-k8s)");
332
- printInfo("runtime", "preferred_runtime=external-k8s — not managing Docker Desktop/Colima");
333
- return;
334
- }
335
- if (runtime === "docker-desktop") {
336
- ensureDockerDesktop();
337
- return;
338
- }
339
- ensureColima();
340
- }
341
- /**
342
- * Ensure Docker Desktop is the active docker context and its daemon is
343
- * up. Starts the app (`open -a Docker`) and polls `docker info` for up to
344
- * ~90s when the daemon isn't ready yet. Used instead of Colima whenever
345
- * Docker Desktop is the resolved runtime.
346
- */
347
- function ensureDockerDesktop() {
348
- step("2/7 — Docker Desktop (macOS)");
349
- // Point the docker CLI at Docker Desktop's daemon. `desktop-linux` is
350
- // Docker Desktop's macOS context name; k3d reads the active context to
351
- // choose where the k3s node container runs. Non-fatal if the context is
352
- // already current or named differently on exotic installs.
353
- if (runCapture("docker", ["context", "use", "desktop-linux"]).ok) {
354
- printSuccess("docker context → desktop-linux");
355
- }
356
- else {
357
- printWarning("could not select the 'desktop-linux' docker context — using the current context");
358
- }
359
- if (dockerDaemonReachable()) {
360
- printSuccess("Docker Desktop daemon reachable");
361
- return;
362
- }
363
- printWarning("Docker Desktop not running — starting (open -a Docker)");
364
- runCapture("open", ["-a", "Docker"]);
365
- for (let waited = 0; waited < 90; waited += 3) {
366
- spawnSync("sleep", ["3"]);
367
- if (dockerDaemonReachable()) {
368
- printSuccess(`Docker Desktop daemon reachable (after ~${waited + 3}s)`);
369
- return;
370
- }
371
- }
372
- printError("Docker Desktop did not become ready within 90s — start it manually and re-run `olam bootstrap`");
373
- process.exit(1);
374
- }
375
- function ensureColima() {
376
- if (platform() !== "darwin")
377
- return;
378
- step("2/7 — colima (macOS)");
379
- if (!runCapture("colima", ["status"]).ok) {
380
- printWarning("colima not running — starting");
381
- runOrFail("colima", [
382
- "start",
383
- "--cpu",
384
- "4",
385
- "--memory",
386
- "8",
387
- "--vm-type=vz",
388
- "--mount-type=virtiofs",
389
- ], "colima start");
390
- }
391
- printSuccess("colima running");
392
- // virtiofs blocks chmod of docker.sock from the macOS side. Idempotent + non-fatal.
393
- const chmod = runCapture("colima", [
394
- "ssh",
395
- "--",
396
- "sudo",
397
- "chmod",
398
- "666",
399
- "/var/run/docker.sock",
400
- ]);
401
- if (chmod.ok) {
402
- printSuccess("docker.sock chmod applied inside colima VM");
403
- }
404
- else {
405
- printWarning("colima ssh chmod failed — k3d cluster create may still succeed");
406
- }
407
- }
408
- function ensureCluster(opts) {
409
- if (opts.skipClusterCreate) {
410
- step("3/7 — cluster (skipped via --skip-cluster-create)");
411
- return;
412
- }
413
- step(`3/7 — k3d cluster create (${opts.cluster})`);
414
- if (runCapture("k3d", ["cluster", "list", opts.cluster]).ok) {
415
- printInfo("cluster", `'${opts.cluster}' already exists`);
416
- return;
417
- }
418
- // host-cp's deployment has two hostPath mounts:
419
- // /host/.config/gh ← gh CLI config (optional; bound when present)
420
- // /host/olam ← operator's olam source (DEV ONLY via --host-cp-dev-path)
421
- // Published-CLI consumers have no olam checkout; the operator-repo mount
422
- // is left absent + DirectoryOrCreate handles it gracefully in-cluster.
423
- const volumes = [];
424
- const ghConfigDir = `${homedir()}/.config/gh`;
425
- if (existsSync(ghConfigDir)) {
426
- volumes.push("--volume", `${ghConfigDir}:/host/.config/gh`);
427
- }
428
- else {
429
- printInfo("cluster", `${ghConfigDir} not found; skipping gh-config bind (run \`gh auth login\` to enable)`);
430
- }
431
- if (opts.hostCpDevPath) {
432
- if (!existsSync(opts.hostCpDevPath)) {
433
- printError(`--host-cp-dev-path ${opts.hostCpDevPath} does not exist`);
434
- process.exit(1);
435
- }
436
- volumes.push("--volume", `${opts.hostCpDevPath}:/host/olam`);
437
- printInfo("cluster", `dev-mode: mounting ${opts.hostCpDevPath} → /host/olam`);
438
- }
439
- runOrFail("k3d", [
440
- "cluster",
441
- "create",
442
- opts.cluster,
443
- ...volumes,
444
- "--wait",
445
- "--timeout",
446
- "90s",
447
- ], `k3d cluster create ${opts.cluster}`);
448
- if (!runCapture("kubectl", ["cluster-info"]).ok) {
449
- printError("kubectl cannot reach the cluster — check kubeconfig context");
450
- process.exit(1);
451
- }
452
- printSuccess(`cluster ready (${runCapture("kubectl", ["config", "current-context"]).stdout.trim()})`);
453
- }
454
- /** Resolve the bundled observability scripts dir. */
455
- function resolveObservabilityScriptsDir() {
456
- // Install-mode: bundle-host-cp.mjs copies scripts/e2e/*.sh to
457
- // <install-root>/host-cp/observability/.
458
- const installed = join(installRoot(), "host-cp", "observability");
459
- if (existsSync(installed))
460
- return installed;
461
- // Dev-mode fallback: resolve via the k8s assets root + walk up to repo
462
- // root then into scripts/e2e/. Works when running against the monorepo.
463
- const k8sRoot = resolveK8sAssetsRoot();
464
- if (k8sRoot) {
465
- const dev = join(k8sRoot, "..", "..", "..", "scripts", "e2e");
466
- if (existsSync(dev))
467
- return dev;
468
- }
469
- return null;
470
- }
471
- /**
472
- * Resolve the bundled peripheral-services dir (helm-values + manifests).
473
- * Returns null when neither install-mode nor dev-mode layout matches.
474
- */
475
- function resolvePeripheralServicesDir() {
476
- // Install-mode: bundle-host-cp.mjs copies packages/peripheral-services/
477
- // {helm-values,manifests} to <install-root>/host-cp/peripheral-services/.
478
- const installed = join(installRoot(), "host-cp", "peripheral-services");
479
- if (existsSync(installed))
480
- return installed;
481
- // Dev-mode fallback: walk up from k8s assets root to packages/peripheral-services.
482
- const k8sRoot = resolveK8sAssetsRoot();
483
- if (k8sRoot) {
484
- const dev = join(k8sRoot, "..", "..", "peripheral-services");
485
- if (existsSync(dev))
486
- return dev;
487
- }
488
- return null;
489
- }
490
- /**
491
- * Resolve OLAM_BUNDLE_ROOT — the dir the observability scripts read to find
492
- * `peripheral-services/{helm-values,manifests}/...`. In install-mode this is
493
- * `<install>/host-cp`; in dev-mode it's the monorepo's `packages/` dir.
494
- */
495
- function resolveBundleRoot() {
496
- const installed = join(installRoot(), "host-cp");
497
- if (existsSync(join(installed, "peripheral-services")))
498
- return installed;
499
- const k8sRoot = resolveK8sAssetsRoot();
500
- if (k8sRoot) {
501
- const dev = join(k8sRoot, "..", "..");
502
- if (existsSync(join(dev, "peripheral-services")))
503
- return dev;
504
- }
505
- return null;
506
- }
507
- /**
508
- * Probe whether the component installed by `script` is already healthy.
509
- * Uses `spawnSync` with `stdio: 'pipe'` so output never leaks to the operator.
510
- * Returns false on any error or unexpected output — conservatively runs the
511
- * script when in doubt.
512
- */
513
- export function isObservabilityComponentReady(component) {
514
- /** Silent kubectl probe — returns trimmed stdout or empty string on failure. */
515
- function kget(args) {
516
- const r = spawnSync("kubectl", [...args], {
517
- encoding: "utf-8",
518
- stdio: "pipe",
519
- });
520
- if (r.status !== 0)
521
- return "";
522
- return (r.stdout ?? "").trim();
523
- }
524
- switch (component) {
525
- case "kyverno-cardinality-mutate": {
526
- // ClusterPolicy doesn't expose `.status.ready` as a flat field — the real
527
- // shape is `.status.conditions[?(@.type=="Ready")].status == "True"`.
528
- // The previous flat probe always returned empty → script re-ran every
529
- // boot. Caught during live verification on 2026-05-28.
530
- const policyReady = kget([
531
- "get", "clusterpolicy", "enforce-cardinality-labeldrop",
532
- "-o", `jsonpath={.status.conditions[?(@.type=="Ready")].status}`,
533
- ]);
534
- const admissionReplicas = parseInt(kget([
535
- "get", "deploy", "-n", "kyverno", "kyverno-admission-controller",
536
- "-o", "jsonpath={.status.readyReplicas}",
537
- ]) || "0", 10);
538
- return policyReady === "True" && admissionReplicas >= 1;
539
- }
540
- case "prom-no-double-grafana": {
541
- const grafanaReplicas = parseInt(kget([
542
- "-n", "monitoring", "get", "deploy", "olam-grafana",
543
- "-o", "jsonpath={.status.readyReplicas}",
544
- ]) || "0", 10);
545
- const promReplicas = parseInt(kget([
546
- "-n", "monitoring", "get", "sts",
547
- "prometheus-olam-prom-kube-prometheus-prometheus",
548
- "-o", "jsonpath={.status.readyReplicas}",
549
- ]) || "0", 10);
550
- return grafanaReplicas >= 1 && promReplicas >= 1;
551
- }
552
- case "loki-ingest": {
553
- const lokiReplicas = parseInt(kget([
554
- "-n", "monitoring", "get", "sts", "olam-loki",
555
- "-o", "jsonpath={.status.readyReplicas}",
556
- ]) || "0", 10);
557
- const promtailReady = parseInt(kget([
558
- "-n", "monitoring", "get", "ds", "olam-promtail",
559
- "-o", "jsonpath={.status.numberReady}",
560
- ]) || "0", 10);
561
- return lokiReplicas >= 1 && promtailReady >= 1;
562
- }
563
- case "grafana-port-forward": {
564
- // Probe: Grafana deploy has >= 1 ready replica AND the olam-dashboards
565
- // ConfigMap exists (created by this script). When both are true the
566
- // chart + dashboards are already installed; skip the re-run.
567
- const grafanaReplicas = parseInt(kget([
568
- "-n", "monitoring", "get", "deploy", "olam-grafana",
569
- "-o", "jsonpath={.status.readyReplicas}",
570
- ]) || "0", 10);
571
- const dashboardsCm = kget([
572
- "-n", "monitoring", "get", "cm", "olam-dashboards",
573
- "-o", "name",
574
- ]);
575
- return grafanaReplicas >= 1 && dashboardsCm.trim().length > 0;
576
- }
577
- default:
578
- return false;
579
- }
580
- }
581
- /**
582
- * Read the Grafana admin credentials from the cluster secret.
583
- * Returns null when the secret is absent or kubectl fails (bootstrap
584
- * may not have run observability yet).
585
- */
586
- export function getGrafanaCredentials() {
587
- function getSecretKey(key) {
588
- const r = spawnSync("kubectl", [
589
- "-n", "monitoring", "get", "secret", "olam-grafana-admin",
590
- "-o", `jsonpath={.data.${key}}`,
591
- ], { encoding: "utf-8", stdio: "pipe" });
592
- if (r.status !== 0)
593
- return "";
594
- return (r.stdout ?? "").trim();
595
- }
596
- const rawUser = getSecretKey("admin-user");
597
- const rawPassword = getSecretKey("admin-password");
598
- if (!rawUser || !rawPassword)
599
- return null;
600
- try {
601
- const user = Buffer.from(rawUser, "base64").toString("utf-8");
602
- const password = Buffer.from(rawPassword, "base64").toString("utf-8");
603
- if (!user || !password)
604
- return null;
605
- return { user, password };
606
- }
607
- catch {
608
- return null;
609
- }
610
- }
611
- /**
612
- * Run a single observability bash script with live progress.
613
- *
614
- * Default mode shows a one-line spinner (latest output + elapsed) that the
615
- * CALLER settles (manual settle) so it can map exit codes to nuanced states
616
- * (e.g. the loki scrub-wait flake → warn, not fail). Verbose / non-TTY mode
617
- * streams all output sequentially. Combined output is always captured to
618
- * `~/.olam/logs/observability-<name>.log`.
619
- */
620
- export async function runObservabilityScript(scriptPath, scriptName, env, verbose = false) {
621
- const baseName = scriptName.replace(/\.sh$/, "");
622
- const res = await runLiveTask(baseName, "bash", [scriptPath], {
623
- verbose,
624
- env,
625
- logName: `observability-${baseName}`,
626
- settle: "manual",
627
- });
628
- return { ok: res.ok, durationMs: res.durationMs, logPath: res.logPath };
629
- }
630
- async function installObservability(opts) {
631
- if (opts.skipObservability) {
632
- step("4/7 — observability (skipped via --skip-observability)");
633
- return;
634
- }
635
- step("4/7 — observability");
636
- const observabilityDir = resolveObservabilityScriptsDir();
637
- if (!observabilityDir) {
638
- throw new Error(`Bundled observability assets missing. ` +
639
- `This indicates a corrupt or incomplete @pleri/olam-cli installation. ` +
640
- `Remediation: reinstall with 'npm install -g @pleri/olam-cli@latest', ` +
641
- `or open an issue at https://github.com/pleri/olam/issues with this error.`);
642
- }
643
- // Export OLAM_BUNDLE_ROOT so the scripts resolve helm-values/manifests from
644
- // the published tarball instead of `git rev-parse` (which fails outside the
645
- // monorepo). resolveBundleRoot returns null only in degenerate dev contexts;
646
- // the scripts handle absence by falling back to git.
647
- const bundleRoot = resolveBundleRoot();
648
- const scriptEnv = { ...process.env };
649
- if (bundleRoot) {
650
- scriptEnv.OLAM_BUNDLE_ROOT = bundleRoot;
651
- }
652
- const outcomes = [];
653
- for (const script of OBSERVABILITY_SCRIPTS) {
654
- const path = join(observabilityDir, script);
655
- if (!existsSync(path)) {
656
- outcomes.push({ script, state: "missing" });
657
- continue;
658
- }
659
- if (!opts.forceObservability) {
660
- const component = script.replace(/\.sh$/, "");
661
- if (isObservabilityComponentReady(component)) {
662
- outcomes.push({ script, state: "skipped" });
663
- continue;
664
- }
665
- }
666
- const runResult = await runObservabilityScript(path, script, scriptEnv, opts.verbose);
667
- if (runResult.ok) {
668
- outcomes.push({
669
- script,
670
- state: "ran",
671
- durationMs: runResult.durationMs,
672
- logPath: runResult.logPath,
673
- });
674
- }
675
- else if (script === "loki-ingest.sh") {
676
- outcomes.push({
677
- script,
678
- state: "loki-flake",
679
- durationMs: runResult.durationMs,
680
- logPath: runResult.logPath,
681
- });
682
- }
683
- else {
684
- outcomes.push({
685
- script,
686
- state: "ran-failed",
687
- durationMs: runResult.durationMs,
688
- logPath: runResult.logPath,
689
- });
690
- }
691
- }
692
- // Compact name: strip the .sh suffix and the cardinality-mutate suffix that
693
- // serves no informational purpose at this level.
694
- const niceName = (script) => script.replace(/\.sh$/, "").replace(/-cardinality-mutate$/, "");
695
- // All-installed fast path: one line instead of four. Trims the most common
696
- // case (operator re-runs setup on a healthy cluster) to a single line.
697
- const allSkipped = outcomes.length > 0 && outcomes.every((o) => o.state === "skipped");
698
- if (allSkipped) {
699
- printSuccess(`all ${outcomes.length} already installed (--force-observability to reinstall)`);
700
- return;
701
- }
702
- for (const o of outcomes) {
703
- const name = niceName(o.script);
704
- const seconds = o.durationMs !== undefined
705
- ? `${(o.durationMs / 1000).toFixed(1)}s`
706
- : "";
707
- switch (o.state) {
708
- case "missing":
709
- printWarning(`${name}: script not found — skipping`);
710
- break;
711
- case "skipped":
712
- printSuccess(`${name}: already installed`);
713
- break;
714
- case "ran":
715
- printSuccess(`${name}: ${seconds}`);
716
- break;
717
- case "loki-flake":
718
- printWarning(`${name}: ${seconds} (promtail scrub-wait flake; continuing)`);
719
- break;
720
- case "ran-failed": {
721
- printError(`${name}: failed (${seconds}) — log=${o.logPath}`);
722
- if (o.logPath !== undefined) {
723
- const tail = readFileSync(o.logPath, "utf-8")
724
- .split("\n")
725
- .slice(-20)
726
- .join("\n");
727
- process.stderr.write(` --- last 20 lines from ${o.script} ---\n${tail}\n`);
728
- }
729
- process.exit(1);
730
- }
731
- }
732
- }
733
- }
734
- /**
735
- * Step 5: Apply the peripheral-services manifest tree (IngressRoutes,
736
- * NetworkPolicies, ServiceMonitors, recording rules, Grafana dashboard
737
- * ConfigMaps, Kyverno ClusterPolicy). These are NOT covered by `olam
738
- * upgrade`'s host-cp manifest apply — without this step, the observability
739
- * stack runs but has no scrape targets and no dashboards.
740
- */
741
- function applyPeripheralServicesManifests() {
742
- step("5/7 — peripheral-services manifests (IngressRoutes + ServiceMonitors + recording rules + dashboards + Kyverno)");
743
- const dir = resolvePeripheralServicesDir();
744
- if (!dir) {
745
- printWarning("bundled peripheral-services manifests not found — skipping");
746
- return;
747
- }
748
- const manifestsDir = join(dir, "manifests");
749
- if (!existsSync(manifestsDir)) {
750
- printWarning(`peripheral-services/manifests not found at ${manifestsDir} — skipping`);
751
- return;
752
- }
753
- // Skip deployment manifests (files matching *deploy*.yaml): these overlap with the
754
- // canonical deployment specs applied by `olam upgrade` step 3 (k8s/manifests/<svc>/50-deployment.yaml).
755
- // Applying them here causes a rolling update when upgrade re-applies with a different image
756
- // digest, making `kubectl rollout status` fail while the old pod is Terminating.
757
- // Standalone operators can still apply deployment manifests manually if needed.
758
- const manifestFiles = readdirSync(manifestsDir)
759
- .filter((f) => (f.endsWith(".yaml") || f.endsWith(".yml")) && !/deploy/i.test(f))
760
- .map((f) => join(manifestsDir, f));
761
- if (manifestFiles.length === 0) {
762
- printWarning("no non-deployment peripheral-services manifests found — skipping");
763
- return;
764
- }
765
- // Capture kubectl apply output for each manifest; count unchanged vs changed.
766
- // On a healthy re-run every resource reports "unchanged" — no per-manifest spam.
767
- // Verbose output is written to ~/.olam/logs/peripheral-services-apply.log.
768
- const logDir = join(homedir(), ".olam", "logs");
769
- mkdirSync(logDir, { recursive: true });
770
- const logPath = join(logDir, "peripheral-services-apply.log");
771
- const logLines = [];
772
- let unchangedCount = 0;
773
- let changedCount = 0;
774
- for (const manifest of manifestFiles) {
775
- const r = spawnSync("kubectl", ["apply", "-f", manifest], {
776
- stdio: "pipe",
777
- encoding: "utf-8",
778
- });
779
- const combined = (r.stdout ?? "") + (r.stderr ?? "");
780
- logLines.push(`==> ${manifest}\n${combined}`);
781
- if (r.status !== 0) {
782
- // Write the full log before aborting so the operator can diagnose.
783
- writeFileSync(logPath, logLines.join("\n"), "utf-8");
784
- printError(`kubectl apply failed for ${manifest.replace(manifestsDir + "/", "")} — see ${logPath}`);
785
- process.stderr.write(` --- last lines ---\n${combined.split("\n").slice(-10).join("\n")}\n`);
786
- process.exit(r.status ?? 1);
787
- }
788
- // Count resources by whether kubectl reported "unchanged" or "configured"/"created".
789
- const lines = combined.split("\n").filter((l) => l.trim().length > 0);
790
- for (const line of lines) {
791
- if (/unchanged$/.test(line.trim())) {
792
- unchangedCount++;
793
- }
794
- else if (/configured$|created$/.test(line.trim())) {
795
- changedCount++;
796
- }
797
- }
798
- }
799
- writeFileSync(logPath, logLines.join("\n"), "utf-8");
800
- // Compact: "12 manifests — no-op" or "12 manifests — 3 changed"
801
- const summary = changedCount > 0
802
- ? `${manifestFiles.length} manifests — ${changedCount} changed`
803
- : `${manifestFiles.length} manifests — no-op`;
804
- printSuccess(`peripheral-services: ${summary}`);
805
- }
806
- /**
807
- * Recursively collect deployment manifest files (`50-deployment.yaml`) under
808
- * `manifestsRoot`, including the top-level host-cp one and every peripheral
809
- * subdir.
810
- */
811
- function findDeploymentManifests(manifestsRoot) {
812
- const out = [];
813
- const walk = (dir) => {
814
- let names;
815
- try {
816
- names = readdirSync(dir);
817
- }
818
- catch {
819
- return;
820
- }
821
- for (const name of names) {
822
- const full = join(dir, name);
823
- let isDir = false;
824
- try {
825
- isDir = statSync(full).isDirectory();
826
- }
827
- catch {
828
- continue;
829
- }
830
- if (isDir) {
831
- walk(full);
832
- }
833
- else if (/^50-deployment\.ya?ml$/.test(name)) {
834
- out.push(full);
835
- }
836
- }
837
- };
838
- walk(manifestsRoot);
839
- return out;
840
- }
841
- /**
842
- * Parse the bundled deployment manifests and return the UNIQUE set of
843
- * `ghcr.io/pleri/olam-*@sha256:<digest>` image refs they pin. These are the
844
- * authoritative refs that actually get deployed (host-cp + plan-chat share one
845
- * host-cp digest → deduped to a single pull). Non-olam images (busybox init,
846
- * postgres, electric) are ignored.
847
- *
848
- * Pure function — no I/O beyond reading the passed-in files; unit-tested.
849
- */
850
- export function collectOlamImageRefs(manifestsRoot) {
851
- const refRe = /image:\s*(ghcr\.io\/pleri\/olam-[a-z0-9-]+@sha256:[a-f0-9]{64})/g;
852
- const seen = new Set();
853
- for (const file of findDeploymentManifests(manifestsRoot)) {
854
- let raw;
855
- try {
856
- raw = readFileSync(file, "utf-8");
857
- }
858
- catch {
859
- continue;
860
- }
861
- for (const m of raw.matchAll(refRe)) {
862
- const ref = m[1];
863
- if (ref)
864
- seen.add(ref);
865
- }
866
- }
867
- return [...seen].sort();
868
- }
869
- /**
870
- * Step 6/7: pre-pull the manifest-pinned olam-* images and import them into the
871
- * k3d node's containerd. Warms the cache so pod rollouts in step 7 don't
872
- * cold-pull — which is what widened the rollout-race window that surfaced as
873
- * "image not detected" / "pod not ready" in `olam doctor`. Best-effort:
874
- * per-image failures warn + continue (kubelet on-demand pull is the fallback).
875
- */
876
- async function prepullImages(opts) {
877
- if (opts.skipPrepull) {
878
- step("6/7 — pre-pull olam images (skipped via --skip-prepull)");
879
- return;
880
- }
881
- step("6/7 — pre-pull olam images (docker pull + k3d image import)");
882
- const k8sRoot = resolveK8sAssetsRoot();
883
- const manifestsRoot = k8sRoot ? join(k8sRoot, "manifests") : null;
884
- if (!manifestsRoot || !existsSync(manifestsRoot)) {
885
- printWarning("bundled manifests not found — skipping pre-pull (pods will cold-pull on demand)");
886
- return;
887
- }
888
- const refs = collectOlamImageRefs(manifestsRoot);
889
- if (refs.length === 0) {
890
- printWarning("no ghcr.io/pleri/olam-* image refs found in manifests — skipping");
891
- return;
892
- }
893
- printInfo("pre-pull", `${refs.length} unique olam image(s) → node '${opts.cluster}'`);
894
- for (const ref of refs) {
895
- const short = ref.replace(/^ghcr\.io\/pleri\//, "").replace(/@sha256:.*/, "");
896
- const pull = await runLiveTask(`pull ${short}`, "docker", ["pull", ref], {
897
- verbose: opts.verbose,
898
- logName: `prepull-${short}`,
899
- });
900
- if (!pull.ok) {
901
- printWarning(`${short}: docker pull failed — pod will cold-pull on demand (log=${pull.logPath})`);
902
- continue;
903
- }
904
- const imp = await runLiveTask(`import ${short}`, "k3d", ["image", "import", ref, "-c", opts.cluster], { verbose: opts.verbose, logName: `prepull-import-${short}` });
905
- if (!imp.ok) {
906
- printWarning(`${short}: k3d image import failed — pod will cold-pull on demand (log=${imp.logPath})`);
907
- }
908
- }
909
- }
910
- async function delegateToUpgrade(opts) {
911
- step("7/7 — apply host-cp + peripherals + rollout (olam upgrade)");
912
- // Re-invoke `olam upgrade -y` via the same process binary. The upgrade
913
- // flow's 8-step k8s path (upgrade-kubernetes.ts) handles namespace +
914
- // RBAC + Secrets + ghcr-pull + host-side docker-socket-proxy + manifest
915
- // apply + rollout status + port-forward + /health verify + audit log.
916
- const olamBin = process.argv[1] ?? "olam";
917
- // Verbose: stream the full upgrade output inline (its own ora spinners + logs
918
- // are most useful raw when debugging). Default: collapse to one live line and
919
- // capture everything to ~/.olam/logs/bootstrap-upgrade.log.
920
- if (opts.verbose) {
921
- const result = spawnSync(process.execPath, [olamBin, "upgrade", "-y"], {
922
- stdio: "inherit",
923
- });
924
- if (result.status !== 0) {
925
- printError("olam upgrade failed — see output above");
926
- process.exit(result.status ?? 1);
927
- }
928
- return;
929
- }
930
- const res = await runLiveTask("olam upgrade", process.execPath, [olamBin, "upgrade", "-y"], { verbose: false, logName: "bootstrap-upgrade", settle: "auto" });
931
- if (!res.ok) {
932
- printError(`olam upgrade failed (exit ${res.exitCode}) — see ${res.logPath}`);
933
- const tail = readFileSync(res.logPath, "utf-8")
934
- .split("\n")
935
- .slice(-30)
936
- .join("\n");
937
- process.stderr.write(` --- last 30 lines from olam upgrade ---\n${tail}\n`);
938
- process.exit(res.exitCode ?? 1);
939
- }
940
- }
941
- function summary(opts) {
942
- step("done");
943
- const grafanaCreds = getGrafanaCredentials();
944
- const grafanaCredsBlock = grafanaCreds
945
- ? ` User: ${grafanaCreds.user}\n Password: ${grafanaCreds.password}`
946
- : ` # Get password: kubectl -n monitoring get secret olam-grafana-admin \\
947
- # -o jsonpath='{.data.admin-password}' | base64 -d`;
948
- process.stdout.write(`
949
- Cluster: ${opts.cluster}
950
- Next steps:
951
- olam doctor # verify the stack
952
- olam services status # peripherals 1/1
953
- kubectl get pods -n olam
954
-
955
- Grafana:
956
- URL: http://localhost:3000 (after the port-forward below)
957
- ${grafanaCredsBlock}
958
- Port-forward: kubectl port-forward -n monitoring svc/olam-grafana 3000:80
959
-
960
- Prometheus:
961
- URL: http://localhost:9090 (after the port-forward below)
962
- Port-forward: kubectl port-forward -n monitoring svc/olam-prom-kube-prometheus-prometheus 9090:9090
963
- `);
964
- }
965
- export async function runBootstrapKubernetes(rawOpts) {
966
- // Default auto-install ON for macOS. The wizard contract is "fresh
967
- // machine → working cluster in one command", which requires installing
968
- // missing brew formulae without operator intervention. Linux operators
969
- // see a per-tool install hint (apt/dnf auto-install is queued as a
970
- // follow-up). Pass --no-auto-install or set autoInstall=false to
971
- // restore the earlier opt-in behaviour.
972
- const defaultAutoInstall = platform() === "darwin";
973
- // `verbose` is the canonical flag; `verboseObservability` is the deprecated
974
- // alias and ORs in for back-compat.
975
- const verbose = (rawOpts.verbose ?? false) || (rawOpts.verboseObservability ?? false);
976
- const opts = {
977
- cluster: rawOpts.cluster ?? DEFAULT_K3S_CLUSTER,
978
- autoInstall: rawOpts.autoInstall ?? defaultAutoInstall,
979
- skipObservability: rawOpts.skipObservability ?? false,
980
- skipClusterCreate: rawOpts.skipClusterCreate ?? false,
981
- forceObservability: rawOpts.forceObservability ?? false,
982
- skipPrepull: rawOpts.skipPrepull ?? false,
983
- verbose,
984
- verboseObservability: rawOpts.verboseObservability ?? false,
985
- hostCpDevPath: rawOpts.hostCpDevPath,
986
- preferredRuntime: rawOpts.preferredRuntime,
987
- };
988
- printHeader("olam setup — k3s mode");
989
- printInfo("mode", "one-command bring-up of olam peripherals + observability on a local k3d cluster");
990
- preflight(opts);
991
- ensureSecrets();
992
- ensureContainerRuntime(opts);
993
- ensureCluster(opts);
994
- await installObservability(opts);
995
- applyPeripheralServicesManifests();
996
- await prepullImages(opts);
997
- await delegateToUpgrade(opts);
998
- summary(opts);
999
- printSuccess("setup complete");
1000
- return { exitCode: 0, summary: `setup complete on cluster ${opts.cluster}` };
1001
- }
1002
- //# sourceMappingURL=bootstrap-kubernetes.js.map