@pleri/olam-cli 0.1.200 → 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,933 +0,0 @@
1
- /**
2
- * health-probes.ts — Shared host-health probe module.
3
- *
4
- * Phase A1 of olam-operator-onboarding-parity (plan
5
- * ~/.claude/plans/olam-operator-onboarding-parity.md).
6
- *
7
- * The Seam (Decision 3): `olam doctor` + `olam diagnose` both consume
8
- * these probes. No probe writes to disk; no probe spawns long-running
9
- * processes; each is independently safe to run in parallel.
10
- *
11
- * Probe contract:
12
- * - Each returns ProbeResult: { ok: true, message } | { ok: false, message, remedy }
13
- * - Each is async; can run in parallel via Promise.all
14
- * - Each accepts injectable deps (docker exec / fetch / OLAM_HOME) for testability
15
- *
16
- * Cap thresholds (probeKgStorage) mirror packages/cli/src/commands/kg-status.ts:
17
- * - 1.5 GB soft-cap → ok:true with "soft-warn" message
18
- * - 5.0 GB hard-cap → ok:false with prune remedy
19
- *
20
- * Daemon-reachability rule (Risk T5): callers that probe per-image
21
- * presence MUST call probeDockerDaemon first and fast-fail on its
22
- * failure. Image probes throw confusing "404 no such image" errors
23
- * when the daemon is paused mid-check.
24
- */
25
- import { spawnSync } from 'node:child_process';
26
- import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
27
- import { homedir } from 'node:os';
28
- import path from 'node:path';
29
- import { SOFT_CAP_BYTES, HARD_CAP_BYTES } from './kg-caps.js';
30
- /**
31
- * Resolve the operator's configured Anthropic base URL, which signals that
32
- * a remote auth-worker is in use and no local OAuth vault is required.
33
- *
34
- * Resolution order (mirrors packages/auth-client/src/cloud-mode.ts):
35
- * 1. OLAM_ANTHROPIC_BASE_URL env var
36
- * 2. ANTHROPIC_BASE_URL env var
37
- * 3. ~/.olam/anthropic-base-url file
38
- *
39
- * Returns null when none are set / non-empty.
40
- */
41
- function resolveAnthropicBaseUrl(olamHomeOverride) {
42
- const envFirst = process.env.OLAM_ANTHROPIC_BASE_URL ?? process.env.ANTHROPIC_BASE_URL;
43
- if (envFirst && envFirst.trim().length > 0)
44
- return envFirst.trim();
45
- try {
46
- const olamHome = olamHomeOverride ?? process.env.OLAM_HOME ?? path.join(homedir(), '.olam');
47
- const filePath = path.join(olamHome, 'anthropic-base-url');
48
- if (!existsSync(filePath))
49
- return null;
50
- const body = readFileSync(filePath, 'utf-8').trim();
51
- return body.length > 0 ? body : null;
52
- }
53
- catch {
54
- return null;
55
- }
56
- }
57
- const HEALTH_TIMEOUT_MS = 5_000;
58
- /**
59
- * Probe: GitHub CLI authenticated via `gh auth status`.
60
- *
61
- * k3d uses `gh auth token` to create the GHCR pull secret during olam setup.
62
- * This probe warns (non-gating) when gh CLI is not authenticated.
63
- */
64
- export async function probeGithubCliAuth(dockerExec = defaultDockerExec) {
65
- const r = dockerExec('gh', ['auth', 'status']);
66
- if (r.status === 0) {
67
- return { ok: true, message: 'GitHub CLI authenticated' };
68
- }
69
- return {
70
- ok: true,
71
- warn: true,
72
- message: 'GitHub CLI not authenticated',
73
- remedy: 'Run `gh auth login` — k3d uses gh token to create the GHCR pull secret.',
74
- };
75
- }
76
- /**
77
- * Probe: Claude Code installed and accessible via `claude --version`.
78
- *
79
- * OLAM requires Claude Code as the primary agent runtime. This probe warns
80
- * (non-gating) when Claude Code is not found on PATH.
81
- */
82
- export async function probeClaudeCodeInstalled(dockerExec = defaultDockerExec) {
83
- const r = dockerExec('claude', ['--version']);
84
- if (r.status === 0 && r.stdout.trim().length > 0) {
85
- const version = r.stdout.trim().split('\n')[0] ?? r.stdout.trim();
86
- return { ok: true, message: `Claude Code ${version}` };
87
- }
88
- return {
89
- ok: true,
90
- warn: true,
91
- message: 'Claude Code not found',
92
- remedy: 'Install Claude Code: https://docs.claude.com/en/docs/claude-code',
93
- };
94
- }
95
- // ── Phase C / C2: Colima version probe ────────────────────────────────
96
- //
97
- // Decision (plan Goal — VERBATIM): when Colima version is in the 0.10.x
98
- // range, surface a WARN with the literal remediation text below. Any
99
- // drift from this string is a regression — operators copy-paste it.
100
- //
101
- // The matcher is intentionally strict (`^v?0\.10\.\d+$`) — a future 0.11
102
- // or 0.9 release MUST NOT match.
103
- export const COLIMA_010_WARN_TEXT =
104
- // eslint-disable-next-line @typescript-eslint/quotes
105
- "Colima 0.10.1's --kubernetes mode is broken upstream. Either switch to OLAM_HOST_CP_ENGINE=docker (recommended) or downgrade Colima to 0.9.x. Track abiosoft/colima issues for fix.";
106
- const COLIMA_010_RANGE = /^v?0\.10\.\d+$/;
107
- /**
108
- * Default Docker exec implementation. Consumers MUST inject their own
109
- * `exec` parameter in tests — this default reaches real
110
- * `node:child_process.spawnSync` and will shell out to a real `docker`
111
- * binary on the test runner (green on dev laptops with Docker running;
112
- * red on CI runners without daemon). Audit finding HIGH-2.
113
- */
114
- const defaultDockerExec = (cmd, args) => {
115
- const r = spawnSync(cmd, [...args], {
116
- encoding: 'utf-8',
117
- stdio: ['ignore', 'pipe', 'pipe'],
118
- });
119
- return {
120
- status: r.status,
121
- stdout: r.stdout ?? '',
122
- stderr: r.stderr ?? '',
123
- };
124
- };
125
- /**
126
- * Default fetch implementation. Consumers MUST inject their own
127
- * `fetchImpl` parameter in tests — this default reaches the global
128
- * `fetch` and will make real network calls on the test runner.
129
- * Audit finding HIGH-2.
130
- */
131
- const defaultFetch = (input, init) => fetch(input, init);
132
- // ── Probes ─────────────────────────────────────────────────────────────
133
- /**
134
- * Verify docker daemon is reachable via `docker info --format`.
135
- *
136
- * MUST be called first by callers that probe per-image presence; image
137
- * probes throw confusing "404 no such image" errors when the daemon is
138
- * paused mid-check (Risk T5 mitigation).
139
- */
140
- export async function probeDockerDaemon(dockerExec = defaultDockerExec) {
141
- const r = dockerExec('docker', ['info', '--format', '{{.ServerVersion}}']);
142
- if (r.status === 0 && r.stdout.trim().length > 0) {
143
- return { ok: true, message: `docker ${r.stdout.trim()} reachable` };
144
- }
145
- return {
146
- ok: false,
147
- message: 'docker daemon not reachable',
148
- remedy: 'Start Docker Desktop (or your docker daemon) and re-run.',
149
- };
150
- }
151
- /**
152
- * Verify the `docker compose` v2 plugin is installed.
153
- *
154
- * Symptom this guards against (B2 / npm-only operator on macOS via Homebrew):
155
- * `brew install docker` does NOT ship the compose v2 plugin. `docker compose pull …`
156
- * fails — depending on docker version — with either "is not a docker command"
157
- * (newer docker) or "unknown shorthand flag" (bare docker mis-parsing the
158
- * remainder of the compose argv). The cryptic flag error misdirects operators
159
- * away from the real fix.
160
- *
161
- * Returns:
162
- * - PASS when `docker compose version` exits 0 with v2.x in stdout.
163
- * - FAIL with macOS-aware remedy when docker is present but the plugin isn't.
164
- * - FAIL with "install docker" remedy when the docker binary is missing entirely.
165
- *
166
- * Detection: relies on stderr / exit status of `docker compose version`. The
167
- * exact stderr text varies by docker version, so we match a small set of
168
- * substrings rather than a single regex.
169
- */
170
- export async function probeComposePlugin(dockerExec = defaultDockerExec) {
171
- const r = dockerExec('docker', ['compose', 'version']);
172
- if (r.status === 0 && r.stdout.trim().length > 0) {
173
- // Successful invocation. stdout is something like "Docker Compose version v2.29.7".
174
- const version = r.stdout.trim().split('\n')[0] ?? r.stdout.trim();
175
- return { ok: true, message: `${version}` };
176
- }
177
- // Distinguish "docker binary missing" from "docker present but compose plugin missing".
178
- // status === null happens when spawn itself failed (binary not found).
179
- if (r.status === null) {
180
- return {
181
- ok: false,
182
- message: 'docker not installed (`docker` binary not found)',
183
- remedy: 'Install Docker. On macOS: `brew install docker docker-compose` (CLI only) or install Docker Desktop. On Linux follow https://docs.docker.com/engine/install/.',
184
- };
185
- }
186
- const stderrText = `${r.stdout}\n${r.stderr}`.toLowerCase();
187
- const isPluginMissing = stderrText.includes('is not a docker command') ||
188
- stderrText.includes('unknown command') ||
189
- stderrText.includes('unknown shorthand flag') ||
190
- stderrText.includes('no such file or directory');
191
- if (isPluginMissing) {
192
- return {
193
- ok: false,
194
- message: 'docker-compose-v2 plugin not installed',
195
- remedy: 'Install the compose v2 plugin. macOS: `brew install docker-compose`. Linux: install the `docker-compose-plugin` package (apt/dnf) or follow https://docs.docker.com/compose/install/linux/.',
196
- };
197
- }
198
- // Unrecognized failure — probably docker daemon down or another preflight class.
199
- // Surface what we can; `probeDockerDaemon` will give the more specific remedy.
200
- return {
201
- ok: false,
202
- message: `docker compose probe failed (status ${r.status})`,
203
- remedy: 'Check `docker compose version` manually. If docker itself is down, start Docker Desktop or your docker daemon and re-run.',
204
- };
205
- }
206
- /**
207
- * Verify each ref is present locally via `docker image inspect`.
208
- *
209
- * Fast-fail: returns the first missing image; subsequent refs NOT
210
- * probed. Caller decides ordering of refs.
211
- */
212
- export async function probeImagePresence(refs, dockerExec = defaultDockerExec) {
213
- for (const ref of refs) {
214
- const r = dockerExec('docker', ['image', 'inspect', '--format', '{{.Id}}', ref]);
215
- if (r.status !== 0) {
216
- return {
217
- ok: false,
218
- message: `image ${ref} not present locally`,
219
- remedy: 'Run `olam bootstrap` to pull the published image, or build locally.',
220
- };
221
- }
222
- }
223
- return { ok: true, message: `${refs.length} image(s) present` };
224
- }
225
- /**
226
- * GET http://127.0.0.1:19000/health with 5s timeout; expect HTTP 200
227
- * AND a JSON envelope matching the host-cp shape (defends against
228
- * false-positives from a port-collision with some other 19000-bound
229
- * process — audit finding HIGH body-shape).
230
- *
231
- * Real envelope (per `packages/host-cp/src/server.mjs:665-688`):
232
- * { status: 'ok', phase, uptime_seconds: number, cache: {...},
233
- * mode: { deployment, world_host }, registry: {...}, auth: {...} }
234
- *
235
- * Probe asserts three orthogonal fields (`phase` + `cache` object +
236
- * `mode.deployment`) that no random web server would carry together.
237
- * Substring-on-the-token-path was an earlier fragile heuristic; this
238
- * version pins to actual server contract.
239
- *
240
- * Aborts via AbortController on timeout; failure mode is captured in
241
- * the error path with reason ("timeout" / "ECONNREFUSED" / etc.).
242
- *
243
- * Always consumes the response body before returning (avoids undici
244
- * socket leak when the probe is invoked in a loop).
245
- */
246
- export async function probeHostCpHealth(fetchImpl = defaultFetch) {
247
- const controller = new AbortController();
248
- const timeout = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);
249
- try {
250
- const res = await fetchImpl('http://127.0.0.1:19000/health', { signal: controller.signal });
251
- const body = await res.text().catch(() => '');
252
- if (res.status !== 200) {
253
- return {
254
- ok: false,
255
- message: `host-cp /health returned ${res.status}`,
256
- remedy: 'Restart host-cp via `olam host-cp start`; verify port 19000 is bound to 127.0.0.1.',
257
- };
258
- }
259
- if (isHostCpHealthEnvelope(body)) {
260
- return { ok: true, message: 'host-cp /health returned 200' };
261
- }
262
- return {
263
- ok: false,
264
- message: 'host-cp /health returned 200 but body did not match the host-cp envelope (possible port collision on :19000)',
265
- remedy: 'Check `lsof -iTCP:19000`; another process may have bound the port. Restart host-cp via `olam host-cp start`.',
266
- };
267
- }
268
- catch (err) {
269
- const e = err;
270
- const reason = e.name === 'AbortError' ? `timeout (${HEALTH_TIMEOUT_MS}ms)` : e.message;
271
- return {
272
- ok: false,
273
- message: `host-cp /health unreachable: ${reason}`,
274
- remedy: 'Restart host-cp via `olam host-cp start`; verify port 19000 is bound to 127.0.0.1.',
275
- };
276
- }
277
- finally {
278
- clearTimeout(timeout);
279
- }
280
- }
281
- /**
282
- * Match three orthogonal fields from host-cp's real /health envelope.
283
- * Returns true only when ALL match (a random 19000-bound web server is
284
- * very unlikely to ship all three in one response by accident).
285
- */
286
- function isHostCpHealthEnvelope(body) {
287
- let parsed;
288
- try {
289
- parsed = JSON.parse(body);
290
- }
291
- catch {
292
- return false;
293
- }
294
- if (!parsed || typeof parsed !== 'object')
295
- return false;
296
- const obj = parsed;
297
- if (typeof obj.phase !== 'string')
298
- return false;
299
- if (!obj.cache || typeof obj.cache !== 'object')
300
- return false;
301
- const mode = obj.mode;
302
- if (!mode || typeof mode !== 'object')
303
- return false;
304
- if (typeof mode.deployment !== 'string')
305
- return false;
306
- return true;
307
- }
308
- /**
309
- * Read the canonical credentials vault at `<OLAM_HOME>/auth-data/accounts.json`
310
- * (matching `packages/auth-service/src/store.ts:LOCAL_DATA_DIR` and
311
- * `scripts/audit-credentials.mjs:resolveAccountsPath`); count active
312
- * `claude` credentials.
313
- *
314
- * Vault shape (per packages/auth-service/src/types.ts): a flat JSON array
315
- * of account objects. Each account has:
316
- * - provider: 'claude' | 'codex' | ...
317
- * - state?: 'active' | 'cooldown' | 'disabled'
318
- * - rateLimited?: boolean (legacy fallback for state)
319
- * - expiresAt?: number (epoch ms)
320
- * - rateLimitResetsAt?: string (ISO 8601)
321
- *
322
- * Predicate mirrors `effectiveState()` from scripts/audit-credentials.mjs
323
- * inline (the canonical helper is a .mjs script that we can't import from
324
- * this TS module). If the canonical predicate evolves (new fields, new
325
- * state literals), this mirror MUST be updated.
326
- *
327
- * Override: `OLAM_AUTH_DATA_PATH` env var lets CI/test fixtures point
328
- * at an alternate accounts.json. Matches the canonical helper.
329
- */
330
- /**
331
- * Redact bearer secrets from a URL before displaying it in terminal output.
332
- *
333
- * Handles two formats:
334
- * 1. Userinfo-style: https://user:secret@host/...
335
- * → https://<redacted>@host/...
336
- * 2. Kaluga/auth-worker path-style: https://host/auth/<sub>/<secret>(/path?)
337
- * → https://host/auth/<sub>/<redacted>(/path?)
338
- * The <sub> (UUID-like operator identity) is preserved for support debugging;
339
- * only the trailing secret segment is redacted.
340
- */
341
- function redactBearerUrl(url) {
342
- // Format 1: userinfo → https://user:secret@host/...
343
- let safe = url.replace(/\/\/[^@/]*@/, '//<redacted>@');
344
- // Format 2: kaluga.co-style path-bearer → https://host/auth/<sub>/<secret>(/<path>?)
345
- // The secret is the segment immediately after /auth/<sub>/. We keep <sub> (operator
346
- // identity, useful for support) and redact only the secret. [^/?#]+ stops at
347
- // path separator, query string, or fragment so trailing path is preserved.
348
- safe = safe.replace(/\/auth\/([^/?#]+)\/([^/?#]+)/, '/auth/$1/<redacted>');
349
- return safe;
350
- }
351
- export async function probeAuthVault(olamHomeOverride) {
352
- // Honour remote auth-worker config — operators using ~/.olam/anthropic-base-url
353
- // (or env OLAM_ANTHROPIC_BASE_URL / ANTHROPIC_BASE_URL) don't need the legacy
354
- // local OAuth vault. Source: packages/auth-client/src/cloud-mode.ts.
355
- const remoteUrl = resolveAnthropicBaseUrl(olamHomeOverride);
356
- if (remoteUrl !== null) {
357
- // Redact bearer secrets embedded in the URL before printing to the terminal.
358
- const safeUrl = redactBearerUrl(remoteUrl);
359
- return { ok: true, message: `remote auth-worker configured (${safeUrl})` };
360
- }
361
- const vaultPath = resolveAccountsPath(olamHomeOverride);
362
- if (!existsSync(vaultPath)) {
363
- return {
364
- ok: false,
365
- message: `auth vault missing at ${vaultPath}`,
366
- remedy: 'Run `olam services up && olam auth login` to provision the vault.',
367
- };
368
- }
369
- let parsed;
370
- try {
371
- parsed = JSON.parse(readFileSync(vaultPath, 'utf-8'));
372
- }
373
- catch (err) {
374
- return {
375
- ok: false,
376
- message: `auth vault malformed: ${err.message}`,
377
- remedy: 'Inspect the accounts.json file; restore from backup or re-run `olam services up`.',
378
- };
379
- }
380
- if (!Array.isArray(parsed)) {
381
- return {
382
- ok: false,
383
- message: 'auth vault malformed: expected JSON array at top level',
384
- remedy: 'Restore the vault from backup or re-run `olam services up && olam auth login`.',
385
- };
386
- }
387
- const accounts = parsed.filter((a) => a !== null && typeof a === 'object');
388
- const now = Date.now();
389
- const activeClaude = accounts.filter((a) => a.provider === 'claude' && effectiveState(a, now) === 'active');
390
- if (activeClaude.length === 0) {
391
- return {
392
- ok: false,
393
- message: `no active claude credentials (vault has ${accounts.length} account(s))`,
394
- remedy: 'Run `olam auth login` to add a credential, or wait for the next reset.',
395
- };
396
- }
397
- return { ok: true, message: `${activeClaude.length} active claude credential(s)` };
398
- }
399
- function resolveAccountsPath(olamHomeOverride) {
400
- // OLAM_AUTH_DATA_PATH is the explicit override (matches the canonical
401
- // helper at scripts/audit-credentials.mjs). Honoured first for CI fixtures.
402
- const explicit = process.env.OLAM_AUTH_DATA_PATH;
403
- if (explicit)
404
- return explicit;
405
- const olamHome = olamHomeOverride ?? process.env.OLAM_HOME ?? path.join(homedir(), '.olam');
406
- return path.join(olamHome, 'auth-data', 'accounts.json');
407
- }
408
- /**
409
- * Inline mirror of `effectiveState()` from scripts/audit-credentials.mjs.
410
- *
411
- * IMPORTANT: keep this in sync with the canonical helper. If the helper
412
- * changes, this copy MUST change too (no compile-time link between them).
413
- */
414
- function effectiveState(account, now) {
415
- const persisted = account.state ?? (account.rateLimited ? 'cooldown' : 'active');
416
- if (persisted === 'disabled')
417
- return 'disabled';
418
- if (typeof account.expiresAt === 'number' && account.expiresAt <= now)
419
- return 'expired';
420
- if (persisted === 'cooldown') {
421
- const reset = account.rateLimitResetsAt ? new Date(account.rateLimitResetsAt).getTime() : 0;
422
- if (reset > 0 && reset <= now)
423
- return 'active';
424
- }
425
- return persisted;
426
- }
427
- /**
428
- * Cumulative KG storage under OLAM_HOME (pristines + overlays).
429
- * Soft warn at 1.5 GB; hard fail at 5 GB.
430
- *
431
- * Layout (mirrors packages/cli/src/commands/kg-status.ts):
432
- * - Pristines: ~/.olam/kg/<workspace>/graphify-out/
433
- * - Overlays: ~/.olam/worlds/<world>/<clone>/graphify-out/
434
- *
435
- * Cap constants duplicated rather than imported from kg-status.ts to
436
- * keep this module self-contained (the Seam decision — see plan
437
- * decision 3). A future PR may extract them to a single source if
438
- * a third consumer lands.
439
- */
440
- export async function probeKgStorage(olamHomeOverride) {
441
- const olamHome = olamHomeOverride ?? process.env.OLAM_HOME ?? path.join(homedir(), '.olam');
442
- const kgRoot = path.join(olamHome, 'kg');
443
- const worldsRoot = path.join(olamHome, 'worlds');
444
- const kgBytes = enumerateGraphifyOut(kgRoot, 'pristine');
445
- const overlayBytes = enumerateGraphifyOut(worldsRoot, 'overlay');
446
- const totalBytes = kgBytes + overlayBytes;
447
- if (totalBytes >= HARD_CAP_BYTES) {
448
- return {
449
- ok: false,
450
- message: `KG storage ${formatBytes(totalBytes)} exceeds 5 GB hard cap`,
451
- remedy: 'Prune stale pristines: `rm -rf ~/.olam/kg/<workspace>` after operator review.',
452
- };
453
- }
454
- if (totalBytes >= SOFT_CAP_BYTES) {
455
- return {
456
- ok: true,
457
- message: `KG storage ${formatBytes(totalBytes)} (soft-warn — exceeds 1.5 GB; consider pruning)`,
458
- remedy: 'Prune stale pristines: `rm -rf ~/.olam/kg/<workspace>` or raise OLAM_KG_SOFT_CAP.',
459
- };
460
- }
461
- return { ok: true, message: `KG storage ${formatBytes(totalBytes)} (under cap)` };
462
- }
463
- function enumerateGraphifyOut(root, layout) {
464
- if (!existsSync(root))
465
- return 0;
466
- let total = 0;
467
- let entries;
468
- try {
469
- entries = readdirSync(root, { withFileTypes: true });
470
- }
471
- catch {
472
- return 0;
473
- }
474
- for (const entry of entries) {
475
- if (!entry.isDirectory())
476
- continue;
477
- if (layout === 'pristine') {
478
- total += dirSizeBytes(path.join(root, entry.name, 'graphify-out'));
479
- }
480
- else {
481
- const worldDir = path.join(root, entry.name);
482
- let clones;
483
- try {
484
- clones = readdirSync(worldDir, { withFileTypes: true });
485
- }
486
- catch {
487
- continue;
488
- }
489
- for (const clone of clones) {
490
- if (!clone.isDirectory())
491
- continue;
492
- total += dirSizeBytes(path.join(worldDir, clone.name, 'graphify-out'));
493
- }
494
- }
495
- }
496
- return total;
497
- }
498
- /**
499
- * Recursive byte sum over a directory.
500
- *
501
- * Symlink policy: short-circuited via `entry.isSymbolicLink()` in the
502
- * common case. KNOWN FALSE-POSITIVE CLASS (audit finding HIGH-3): on
503
- * filesystems that don't populate `d_type` (some network mounts, FUSE,
504
- * exotic overlay FS), `Dirent` flags report `UV_DIRENT_UNKNOWN` and
505
- * both `isSymbolicLink()` and `isDirectory()` return `false`. Such an
506
- * entry is then `statSync`'d as a file; if it's actually a symlink to
507
- * a giant file, the target's bytes are counted. Probability is low on
508
- * APFS/ext4; impact is "doctor false-fail on a healthy host with
509
- * exotic FS." Mirrors the same shape in kg-status.ts:240.
510
- */
511
- function dirSizeBytes(dir) {
512
- if (!existsSync(dir))
513
- return 0;
514
- let total = 0;
515
- const stack = [dir];
516
- while (stack.length > 0) {
517
- const cur = stack.pop();
518
- let entries;
519
- try {
520
- entries = readdirSync(cur, { withFileTypes: true });
521
- }
522
- catch {
523
- continue;
524
- }
525
- for (const entry of entries) {
526
- const full = path.join(cur, entry.name);
527
- if (entry.isSymbolicLink())
528
- continue;
529
- if (entry.isDirectory()) {
530
- stack.push(full);
531
- continue;
532
- }
533
- try {
534
- total += statSync(full).size;
535
- }
536
- catch {
537
- // race: file disappeared between readdir + stat
538
- }
539
- }
540
- }
541
- return total;
542
- }
543
- function formatBytes(n) {
544
- if (n < 1024)
545
- return `${n} B`;
546
- if (n < 1024 * 1024)
547
- return `${(n / 1024).toFixed(1)} KB`;
548
- if (n < 1024 * 1024 * 1024)
549
- return `${(n / 1024 / 1024).toFixed(1)} MB`;
550
- return `${(n / 1024 / 1024 / 1024).toFixed(2)} GB`;
551
- }
552
- // ── Phase C / C2: engine + colima + K8s probes ─────────────────────────
553
- /**
554
- * Probe: detect the active container engine via host-cp's `/health`
555
- * X-Olam-Engine header (Phase A landed the header in #614). When host-cp
556
- * is unreachable, the probe FAILs with the same remedy as probeHostCpHealth
557
- * — operators with a stopped host-cp see one canonical fix, not two.
558
- *
559
- * Returns the engine name as part of the PASS message. The doctor row
560
- * label is engine-agnostic (`engine`); the body surfaces the name.
561
- * No kubectl jargon — for `engine=kubernetes` we say "kubernetes", not
562
- * "kubectl context k3d-olam" or similar.
563
- */
564
- export async function probeEngine(fetchImpl = defaultFetch) {
565
- const controller = new AbortController();
566
- const timeout = setTimeout(() => controller.abort(), HEALTH_TIMEOUT_MS);
567
- try {
568
- const res = await fetchImpl('http://127.0.0.1:19000/health', { signal: controller.signal });
569
- await res.text().catch(() => '');
570
- if (res.status !== 200) {
571
- return {
572
- ok: false,
573
- message: `host-cp /health returned ${res.status}; engine unknown`,
574
- remedy: 'Restart host-cp via `olam host-cp start`; verify port 19000 is bound to 127.0.0.1.',
575
- };
576
- }
577
- const engineHeader = res.headers.get('x-olam-engine') ?? res.headers.get('X-Olam-Engine');
578
- if (!engineHeader) {
579
- return {
580
- ok: true,
581
- message: 'engine unknown (X-Olam-Engine header absent — older host-cp?)',
582
- };
583
- }
584
- return {
585
- ok: true,
586
- message: `engine ${engineHeader}`,
587
- engineName: engineHeader,
588
- };
589
- }
590
- catch (err) {
591
- const e = err;
592
- const reason = e.name === 'AbortError' ? `timeout (${HEALTH_TIMEOUT_MS}ms)` : e.message;
593
- return {
594
- ok: false,
595
- message: `engine probe unreachable: ${reason}`,
596
- remedy: 'Restart host-cp via `olam host-cp start`; verify port 19000 is bound to 127.0.0.1.',
597
- };
598
- }
599
- finally {
600
- clearTimeout(timeout);
601
- }
602
- }
603
- /**
604
- * Probe: Colima version. On macOS / Linux dev hosts using Colima as the
605
- * Docker daemon, the 0.10.x release line ships a broken
606
- * `--kubernetes` flag (upstream issue). When detected, surface a WARN
607
- * with the plan-specced verbatim remediation text.
608
- *
609
- * Behaviour matrix:
610
- * - `colima` binary not on PATH → PASS (most operators don't run Colima)
611
- * - `colima version` returns non-0.10.x → PASS with the detected version
612
- * - `colima version` returns 0.10.x → WARN with verbatim remedy
613
- * - `colima version` errors (binary present, daemon issue, etc.) → PASS
614
- * with a soft message (don't fail doctor on a tool-specific quirk)
615
- */
616
- export async function probeColimaVersion(dockerExec = defaultDockerExec) {
617
- // Probe-which: does the binary exist? Spawn `colima --version` so we get
618
- // both an "is it there?" check and the version in one call. If the
619
- // first arg is unsupported we fall back to `version`.
620
- const r = dockerExec('colima', ['version']);
621
- if (r.status === null || (r.status !== 0 && /not found|ENOENT|not.found/i.test(r.stderr))) {
622
- // Binary absent — most operators use Docker Desktop / native Docker.
623
- return { ok: true, message: 'colima not installed (not in use)' };
624
- }
625
- if (r.status !== 0) {
626
- return {
627
- ok: true,
628
- message: `colima present but version probe failed: ${(r.stderr || '').trim()}`,
629
- };
630
- }
631
- // `colima version` output starts with e.g. "colima version 0.10.1" or
632
- // "0.10.1" depending on the build. Tokenise + find the first semver.
633
- const tokens = r.stdout.split(/\s+/);
634
- const version = tokens.find((t) => /^v?\d+\.\d+\.\d+/.test(t)) ?? '';
635
- if (!version) {
636
- return {
637
- ok: true,
638
- message: `colima present but version unrecognised: ${r.stdout.trim().slice(0, 80)}`,
639
- };
640
- }
641
- if (COLIMA_010_RANGE.test(version)) {
642
- return {
643
- ok: true,
644
- warn: true,
645
- message: `colima ${version} detected — known kubernetes-mode regression`,
646
- remedy: COLIMA_010_WARN_TEXT,
647
- };
648
- }
649
- return { ok: true, message: `colima ${version} (clear)` };
650
- }
651
- /**
652
- * Probe: K8s API reachable via `kubectl version --output=json --request-timeout=2s`.
653
- *
654
- * Replaces probeDockerDaemon at position 1 of the doctor probe array when
655
- * the active engine is kubernetes (Decision 16 positional contract — the
656
- * `--json` consumer index stability is load-bearing).
657
- *
658
- * No kubectl jargon in the doctor output — this probe's row label stays
659
- * canonical ("api server") and the message hides the underlying
660
- * implementation detail.
661
- */
662
- export async function probeK8sApiReachable(exec = defaultDockerExec) {
663
- // `kubectl version --short` was removed upstream; --output=json + parse.
664
- const r = exec('kubectl', ['version', '--output=json', '--request-timeout=2s']);
665
- if (r.status === 0 && r.stdout.length > 0) {
666
- let parsed;
667
- try {
668
- parsed = JSON.parse(r.stdout);
669
- }
670
- catch {
671
- parsed = null;
672
- }
673
- const obj = parsed && typeof parsed === 'object' ? parsed : {};
674
- const serverInfo = obj.serverVersion;
675
- const gitVersion = typeof serverInfo?.gitVersion === 'string' ? serverInfo.gitVersion : 'unknown';
676
- return { ok: true, message: `api server ${gitVersion} reachable` };
677
- }
678
- return {
679
- ok: false,
680
- message: 'api server not reachable',
681
- remedy: 'Confirm the cluster is up (e.g. `k3d cluster list`) and your context points at it.',
682
- };
683
- }
684
- /**
685
- * Probe: required olam images are pullable on the K8s engine.
686
- *
687
- * Replaces probeImagePresence at position 2 of the doctor probe array when
688
- * the active engine is kubernetes (Decision 16 positional contract).
689
- *
690
- * Implementation note: on k3d / minikube, image presence is per-node and
691
- * checked via `kubectl get nodes -o json` + inspecting the `status.images`
692
- * arrays. We probe the host-cp image (`olam-host-cp:latest`) — the canonical
693
- * minimum-set. If absent, point the operator at `k3d image import` (or the
694
- * cluster's equivalent) without exposing kubectl in the remedy.
695
- */
696
- export async function probeK8sImagePresence(refs, exec = defaultDockerExec) {
697
- const r = exec('kubectl', ['get', 'nodes', '-o', 'json', '--request-timeout=2s']);
698
- if (r.status !== 0) {
699
- return {
700
- ok: false,
701
- message: 'unable to list cluster nodes for image presence check',
702
- remedy: 'Confirm the cluster is up and your context points at it; re-run `olam doctor`.',
703
- };
704
- }
705
- let parsed;
706
- try {
707
- parsed = JSON.parse(r.stdout);
708
- }
709
- catch {
710
- return {
711
- ok: false,
712
- message: 'cluster node list returned malformed output',
713
- remedy: 'Restart your cluster; if persistent, re-create it.',
714
- };
715
- }
716
- const nodes = parsed && typeof parsed === 'object'
717
- ? parsed.items
718
- : undefined;
719
- if (!Array.isArray(nodes) || nodes.length === 0) {
720
- return {
721
- ok: false,
722
- message: 'cluster has no nodes',
723
- remedy: 'Start the cluster and try again.',
724
- };
725
- }
726
- const presentImages = new Set();
727
- for (const node of nodes) {
728
- const status = node.status;
729
- const images = status?.images;
730
- if (!Array.isArray(images))
731
- continue;
732
- for (const img of images) {
733
- const names = img.names;
734
- if (!Array.isArray(names))
735
- continue;
736
- for (const n of names)
737
- presentImages.add(n);
738
- }
739
- }
740
- for (const ref of refs) {
741
- if (!hasImageRef(presentImages, ref)) {
742
- return {
743
- ok: false,
744
- message: `image ${ref} not present on any cluster node`,
745
- remedy: 'Run `olam bootstrap` to import the published image into the cluster.',
746
- };
747
- }
748
- }
749
- return { ok: true, message: `${refs.length} image(s) present on cluster` };
750
- }
751
- function hasImageRef(present, ref) {
752
- if (present.has(ref))
753
- return true;
754
- // k3d / containerd often prefix with `docker.io/library/` for bare names.
755
- const variants = [`docker.io/library/${ref}`, `docker.io/${ref}`];
756
- return variants.some((v) => present.has(v));
757
- }
758
- /**
759
- * Default implementation: checks the provided context name (or reads
760
- * `kubectl config current-context` when omitted) against well-known prefixes.
761
- *
762
- * Heuristic (fail-open → falls back to k3d remedy as safe default):
763
- * - context starts with 'colima' → 'colima'
764
- * - context starts with 'k3d-' → 'k3d'
765
- * - else → 'unknown'
766
- */
767
- export function defaultDetectK8sClusterType(kubectlContext) {
768
- const ctx = kubectlContext ?? readCurrentKubectlContext();
769
- if (!ctx)
770
- return 'unknown';
771
- if (ctx.startsWith('colima'))
772
- return 'colima';
773
- if (ctx.startsWith('k3d-'))
774
- return 'k3d';
775
- return 'unknown';
776
- }
777
- function readCurrentKubectlContext() {
778
- const r = spawnSync('kubectl', ['config', 'current-context'], {
779
- encoding: 'utf-8',
780
- stdio: ['ignore', 'pipe', 'pipe'],
781
- });
782
- if (r.status !== 0)
783
- return undefined;
784
- return r.stdout?.trim() || undefined;
785
- }
786
- // ── ADR 021: Colima kubernetes.enabled detection ──────────────────────────────
787
- /**
788
- * Probe: detect whether Colima has `kubernetes.enabled: true` in its profile config.
789
- *
790
- * Used by `olam setup` Phase 1 (Colima lint, ADR 021).
791
- *
792
- * Returns:
793
- * - PASS (ok:true, warn:false) when:
794
- * - platform is not darwin (Colima is macOS-mostly — skip lint on Linux)
795
- * - Colima profile YAML does not exist
796
- * - `kubernetes.enabled` is not `true`
797
- * - WARN (ok:true, warn:true) when `kubernetes.enabled: true` is found
798
- *
799
- * The lint is a WARNING, not a hard fail — the operator may know what they're
800
- * doing (e.g. intentional --reuse-cluster=colima usage).
801
- *
802
- * @param platform - os.platform() result (injectable for tests)
803
- * @param home - operator's home directory (injectable for tests)
804
- * @param colimaProfile - Colima profile name (default: $COLIMA_PROFILE or 'default')
805
- * @param readFileFn - injectable fs.readFileSync for tests
806
- * @param existsFn - injectable fs.existsSync for tests
807
- */
808
- export function probeColimaKubernetesEnabled(opts) {
809
- const { platform, home } = opts;
810
- const colimaProfile = opts.colimaProfile ?? process.env.COLIMA_PROFILE ?? 'default';
811
- const readFileFn = opts.readFileFn ?? ((p, enc) => readFileSync(p, enc));
812
- const existsFn = opts.existsFn ?? existsSync;
813
- // Only relevant on macOS
814
- if (platform !== 'darwin') {
815
- return { ok: true, message: 'colima k8s lint: not darwin, skip' };
816
- }
817
- const colimaYamlPath = path.join(home, '.colima', colimaProfile, 'colima.yaml');
818
- if (!existsFn(colimaYamlPath)) {
819
- return { ok: true, message: `colima k8s lint: ${colimaYamlPath} not found, skip` };
820
- }
821
- let yaml;
822
- try {
823
- yaml = readFileFn(colimaYamlPath, 'utf8');
824
- }
825
- catch {
826
- return { ok: true, message: `colima k8s lint: could not read ${colimaYamlPath}` };
827
- }
828
- // Heuristic: find the `kubernetes:` section and look for `enabled: true` within it.
829
- // Colima YAML looks like:
830
- // kubernetes:
831
- // enabled: true
832
- // ...
833
- const kubernetesSection = yaml.split(/^kubernetes:/m)[1];
834
- if (!kubernetesSection) {
835
- return { ok: true, message: 'colima k8s lint: no kubernetes section found' };
836
- }
837
- // Read until the next top-level key (unindented line)
838
- const sectionLines = kubernetesSection.split('\n');
839
- const sectionBody = [];
840
- for (const line of sectionLines) {
841
- // A non-empty, non-indented line starts the next top-level key
842
- if (line.length > 0 && !/^\s/.test(line))
843
- break;
844
- sectionBody.push(line);
845
- }
846
- const section = sectionBody.join('\n');
847
- const enabled = /^\s+enabled:\s*true\s*$/m.test(section);
848
- if (!enabled) {
849
- return { ok: true, message: 'colima k8s lint: kubernetes.enabled is not true' };
850
- }
851
- return {
852
- ok: true,
853
- warn: true,
854
- message: `Colima has Kubernetes mode enabled at profile '${colimaProfile}'`,
855
- remedy: `Colima has Kubernetes mode enabled at profile '${colimaProfile}'. `
856
- + `k3d will attempt to coexist but may fail to start with 'context deadline exceeded' `
857
- + `due to port conflicts. To fix: \`colima stop && colima start --kubernetes=false\`, `
858
- + `OR re-run \`olam setup --reuse-cluster=colima\` to use Colima's existing k3s.`,
859
- };
860
- }
861
- // ── Setup wizard probes (binary-presence checks, not cluster connectivity) ─────
862
- /**
863
- * Probe: `kubectl` binary on PATH.
864
- *
865
- * Checks for the binary via `kubectl version --client --output=json`.
866
- * Does NOT require a live cluster — client-only check. Used by the
867
- * kubernetes substrate path of `olam setup` Phase 1 system check.
868
- */
869
- export async function probeKubectl(exec = defaultDockerExec) {
870
- const r = exec('kubectl', ['version', '--client', '--output=json']);
871
- if (r.status === 0 && r.stdout.length > 0) {
872
- let clientVersion = 'unknown';
873
- try {
874
- const parsed = JSON.parse(r.stdout);
875
- const clientInfo = parsed.clientVersion;
876
- if (typeof clientInfo?.gitVersion === 'string') {
877
- clientVersion = clientInfo.gitVersion;
878
- }
879
- }
880
- catch {
881
- // version string unavailable; probe still passes
882
- }
883
- return { ok: true, message: `kubectl ${clientVersion} on PATH` };
884
- }
885
- return {
886
- ok: false,
887
- message: 'kubectl not found on PATH',
888
- remedy: 'Install kubectl: macOS: `brew install kubectl`; Linux: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/',
889
- };
890
- }
891
- /**
892
- * Probe: `k3d` binary on PATH (macOS kubernetes substrate).
893
- *
894
- * Used by `olam setup --substrate=kubernetes` Phase 1 on macOS to
895
- * distinguish "k3d missing" (defer to Phase 1.5 install) from
896
- * "k3d present". Returns ok:false so Phase 1.5 knows to install.
897
- */
898
- export async function probeK3d(exec = defaultDockerExec) {
899
- const r = exec('k3d', ['version']);
900
- if (r.status === 0 && r.stdout.length > 0) {
901
- const versionLine = r.stdout.trim().split('\n')[0] ?? '';
902
- return { ok: true, message: `k3d ${versionLine} on PATH` };
903
- }
904
- return {
905
- ok: false,
906
- message: 'k3d not found on PATH',
907
- remedy: 'Install k3d: `brew install k3d` (macOS) or curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash',
908
- };
909
- }
910
- /**
911
- * Build the doctor/upgrade remedy text for a missing docker socket bind-mount.
912
- * Colima operators need `colima start --kubernetes` with the socket mount flag;
913
- * k3d operators need `k3d cluster create` with the --volume flag.
914
- * Issue #713 fix: no longer k3d-only.
915
- */
916
- export function buildDockerSocketRemedy(clusterType) {
917
- if (clusterType === 'colima') {
918
- return ('Recreate the Colima k3s cluster with the docker socket bind-mount:\n' +
919
- ' colima stop\n' +
920
- ' colima start --kubernetes \\\n' +
921
- ' --mount /var/run/docker.sock:/var/run/docker.sock:w \\\n' +
922
- ' --mount ~/.config/gh:/host/.config/gh:r\n' +
923
- 'Then run: olam upgrade');
924
- }
925
- // k3d or unknown — emit the k3d command as the safe default.
926
- return ('Recreate the k3d cluster with the docker socket bind-mount:\n' +
927
- ' k3d cluster create olam-host \\\n' +
928
- ' --volume /var/run/docker.sock:/var/run/docker.sock@server:* \\\n' +
929
- ' --volume ~/.config/gh:/host/.config/gh \\\n' +
930
- ' --wait --timeout 90s\n' +
931
- 'Then run: olam upgrade');
932
- }
933
- //# sourceMappingURL=health-probes.js.map