@ashlr/hub 2.2.0

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 (477) hide show
  1. package/CHANGELOG.md +1158 -0
  2. package/LICENSE +21 -0
  3. package/README.md +833 -0
  4. package/bin/ashlr +8 -0
  5. package/dist/api/core.d.ts +28 -0
  6. package/dist/api/core.js +42 -0
  7. package/dist/api/core.js.map +1 -0
  8. package/dist/api/index.d.ts +9 -0
  9. package/dist/api/index.js +9 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/api/plugin.d.ts +12 -0
  12. package/dist/api/plugin.js +13 -0
  13. package/dist/api/plugin.js.map +1 -0
  14. package/dist/api/types.d.ts +9 -0
  15. package/dist/api/types.js +9 -0
  16. package/dist/api/types.js.map +1 -0
  17. package/dist/cli/args.d.ts +20 -0
  18. package/dist/cli/args.js +23 -0
  19. package/dist/cli/args.js.map +1 -0
  20. package/dist/cli/ask.d.ts +22 -0
  21. package/dist/cli/ask.js +240 -0
  22. package/dist/cli/ask.js.map +1 -0
  23. package/dist/cli/audit.d.ts +26 -0
  24. package/dist/cli/audit.js +199 -0
  25. package/dist/cli/audit.js.map +1 -0
  26. package/dist/cli/backlog.d.ts +26 -0
  27. package/dist/cli/backlog.js +322 -0
  28. package/dist/cli/backlog.js.map +1 -0
  29. package/dist/cli/completions.d.ts +18 -0
  30. package/dist/cli/completions.js +156 -0
  31. package/dist/cli/completions.js.map +1 -0
  32. package/dist/cli/daemon.d.ts +31 -0
  33. package/dist/cli/daemon.js +334 -0
  34. package/dist/cli/daemon.js.map +1 -0
  35. package/dist/cli/demo-sandbox.d.ts +78 -0
  36. package/dist/cli/demo-sandbox.js +227 -0
  37. package/dist/cli/demo-sandbox.js.map +1 -0
  38. package/dist/cli/demo.d.ts +76 -0
  39. package/dist/cli/demo.js +285 -0
  40. package/dist/cli/demo.js.map +1 -0
  41. package/dist/cli/digest.d.ts +46 -0
  42. package/dist/cli/digest.js +352 -0
  43. package/dist/cli/digest.js.map +1 -0
  44. package/dist/cli/doctor-init.d.ts +28 -0
  45. package/dist/cli/doctor-init.js +335 -0
  46. package/dist/cli/doctor-init.js.map +1 -0
  47. package/dist/cli/genome.d.ts +62 -0
  48. package/dist/cli/genome.js +1061 -0
  49. package/dist/cli/genome.js.map +1 -0
  50. package/dist/cli/gh.d.ts +27 -0
  51. package/dist/cli/gh.js +322 -0
  52. package/dist/cli/gh.js.map +1 -0
  53. package/dist/cli/goals.d.ts +55 -0
  54. package/dist/cli/goals.js +667 -0
  55. package/dist/cli/goals.js.map +1 -0
  56. package/dist/cli/health.d.ts +56 -0
  57. package/dist/cli/health.js +407 -0
  58. package/dist/cli/health.js.map +1 -0
  59. package/dist/cli/help.d.ts +51 -0
  60. package/dist/cli/help.js +436 -0
  61. package/dist/cli/help.js.map +1 -0
  62. package/dist/cli/inbox.d.ts +28 -0
  63. package/dist/cli/inbox.js +589 -0
  64. package/dist/cli/inbox.js.map +1 -0
  65. package/dist/cli/index.d.ts +41 -0
  66. package/dist/cli/index.js +1208 -0
  67. package/dist/cli/index.js.map +1 -0
  68. package/dist/cli/knowledge.d.ts +33 -0
  69. package/dist/cli/knowledge.js +575 -0
  70. package/dist/cli/knowledge.js.map +1 -0
  71. package/dist/cli/mcp.d.ts +26 -0
  72. package/dist/cli/mcp.js +487 -0
  73. package/dist/cli/mcp.js.map +1 -0
  74. package/dist/cli/models.d.ts +26 -0
  75. package/dist/cli/models.js +435 -0
  76. package/dist/cli/models.js.map +1 -0
  77. package/dist/cli/new.d.ts +32 -0
  78. package/dist/cli/new.js +565 -0
  79. package/dist/cli/new.js.map +1 -0
  80. package/dist/cli/notify.d.ts +20 -0
  81. package/dist/cli/notify.js +188 -0
  82. package/dist/cli/notify.js.map +1 -0
  83. package/dist/cli/onboard.d.ts +85 -0
  84. package/dist/cli/onboard.js +305 -0
  85. package/dist/cli/onboard.js.map +1 -0
  86. package/dist/cli/open.d.ts +38 -0
  87. package/dist/cli/open.js +86 -0
  88. package/dist/cli/open.js.map +1 -0
  89. package/dist/cli/orient.d.ts +14 -0
  90. package/dist/cli/orient.js +110 -0
  91. package/dist/cli/orient.js.map +1 -0
  92. package/dist/cli/picker.d.ts +21 -0
  93. package/dist/cli/picker.js +177 -0
  94. package/dist/cli/picker.js.map +1 -0
  95. package/dist/cli/plugins.d.ts +21 -0
  96. package/dist/cli/plugins.js +394 -0
  97. package/dist/cli/plugins.js.map +1 -0
  98. package/dist/cli/preflight.d.ts +29 -0
  99. package/dist/cli/preflight.js +131 -0
  100. package/dist/cli/preflight.js.map +1 -0
  101. package/dist/cli/pulse.d.ts +26 -0
  102. package/dist/cli/pulse.js +482 -0
  103. package/dist/cli/pulse.js.map +1 -0
  104. package/dist/cli/reflect.d.ts +42 -0
  105. package/dist/cli/reflect.js +381 -0
  106. package/dist/cli/reflect.js.map +1 -0
  107. package/dist/cli/run.d.ts +29 -0
  108. package/dist/cli/run.js +687 -0
  109. package/dist/cli/run.js.map +1 -0
  110. package/dist/cli/sandbox.d.ts +20 -0
  111. package/dist/cli/sandbox.js +345 -0
  112. package/dist/cli/sandbox.js.map +1 -0
  113. package/dist/cli/seams.d.ts +41 -0
  114. package/dist/cli/seams.js +167 -0
  115. package/dist/cli/seams.js.map +1 -0
  116. package/dist/cli/serve.d.ts +25 -0
  117. package/dist/cli/serve.js +249 -0
  118. package/dist/cli/serve.js.map +1 -0
  119. package/dist/cli/ship.d.ts +33 -0
  120. package/dist/cli/ship.js +433 -0
  121. package/dist/cli/ship.js.map +1 -0
  122. package/dist/cli/spec.d.ts +19 -0
  123. package/dist/cli/spec.js +478 -0
  124. package/dist/cli/spec.js.map +1 -0
  125. package/dist/cli/swarm.d.ts +42 -0
  126. package/dist/cli/swarm.js +1365 -0
  127. package/dist/cli/swarm.js.map +1 -0
  128. package/dist/cli/telemetry.d.ts +26 -0
  129. package/dist/cli/telemetry.js +364 -0
  130. package/dist/cli/telemetry.js.map +1 -0
  131. package/dist/cli/tui.d.ts +17 -0
  132. package/dist/cli/tui.js +52 -0
  133. package/dist/cli/tui.js.map +1 -0
  134. package/dist/cli/ui.d.ts +53 -0
  135. package/dist/cli/ui.js +66 -0
  136. package/dist/cli/ui.js.map +1 -0
  137. package/dist/cli/update.d.ts +38 -0
  138. package/dist/cli/update.js +682 -0
  139. package/dist/cli/update.js.map +1 -0
  140. package/dist/cli/vercel.d.ts +20 -0
  141. package/dist/cli/vercel.js +193 -0
  142. package/dist/cli/vercel.js.map +1 -0
  143. package/dist/cli/verify-safety.d.ts +96 -0
  144. package/dist/cli/verify-safety.js +509 -0
  145. package/dist/cli/verify-safety.js.map +1 -0
  146. package/dist/cli/wire.d.ts +22 -0
  147. package/dist/cli/wire.js +205 -0
  148. package/dist/cli/wire.js.map +1 -0
  149. package/dist/core/classify.d.ts +51 -0
  150. package/dist/core/classify.js +450 -0
  151. package/dist/core/classify.js.map +1 -0
  152. package/dist/core/config.d.ts +63 -0
  153. package/dist/core/config.js +474 -0
  154. package/dist/core/config.js.map +1 -0
  155. package/dist/core/daemon/loop.d.ts +74 -0
  156. package/dist/core/daemon/loop.js +618 -0
  157. package/dist/core/daemon/loop.js.map +1 -0
  158. package/dist/core/daemon/state.d.ts +66 -0
  159. package/dist/core/daemon/state.js +197 -0
  160. package/dist/core/daemon/state.js.map +1 -0
  161. package/dist/core/dashboard.d.ts +40 -0
  162. package/dist/core/dashboard.js +463 -0
  163. package/dist/core/dashboard.js.map +1 -0
  164. package/dist/core/digest/build.d.ts +51 -0
  165. package/dist/core/digest/build.js +230 -0
  166. package/dist/core/digest/build.js.map +1 -0
  167. package/dist/core/digest/deliver.d.ts +47 -0
  168. package/dist/core/digest/deliver.js +230 -0
  169. package/dist/core/digest/deliver.js.map +1 -0
  170. package/dist/core/digest/store.d.ts +57 -0
  171. package/dist/core/digest/store.js +223 -0
  172. package/dist/core/digest/store.js.map +1 -0
  173. package/dist/core/doctor-fix.d.ts +21 -0
  174. package/dist/core/doctor-fix.js +440 -0
  175. package/dist/core/doctor-fix.js.map +1 -0
  176. package/dist/core/doctor.d.ts +18 -0
  177. package/dist/core/doctor.js +806 -0
  178. package/dist/core/doctor.js.map +1 -0
  179. package/dist/core/env-bridge.d.ts +64 -0
  180. package/dist/core/env-bridge.js +103 -0
  181. package/dist/core/env-bridge.js.map +1 -0
  182. package/dist/core/genome/capture.d.ts +49 -0
  183. package/dist/core/genome/capture.js +352 -0
  184. package/dist/core/genome/capture.js.map +1 -0
  185. package/dist/core/genome/consolidate.d.ts +38 -0
  186. package/dist/core/genome/consolidate.js +426 -0
  187. package/dist/core/genome/consolidate.js.map +1 -0
  188. package/dist/core/genome/export.d.ts +29 -0
  189. package/dist/core/genome/export.js +102 -0
  190. package/dist/core/genome/export.js.map +1 -0
  191. package/dist/core/genome/playbook.d.ts +33 -0
  192. package/dist/core/genome/playbook.js +320 -0
  193. package/dist/core/genome/playbook.js.map +1 -0
  194. package/dist/core/genome/recall.d.ts +45 -0
  195. package/dist/core/genome/recall.js +293 -0
  196. package/dist/core/genome/recall.js.map +1 -0
  197. package/dist/core/genome/store.d.ts +62 -0
  198. package/dist/core/genome/store.js +711 -0
  199. package/dist/core/genome/store.js.map +1 -0
  200. package/dist/core/git.d.ts +34 -0
  201. package/dist/core/git.js +115 -0
  202. package/dist/core/git.js.map +1 -0
  203. package/dist/core/goals/advance.d.ts +82 -0
  204. package/dist/core/goals/advance.js +263 -0
  205. package/dist/core/goals/advance.js.map +1 -0
  206. package/dist/core/goals/planner.d.ts +58 -0
  207. package/dist/core/goals/planner.js +233 -0
  208. package/dist/core/goals/planner.js.map +1 -0
  209. package/dist/core/goals/store.d.ts +128 -0
  210. package/dist/core/goals/store.js +442 -0
  211. package/dist/core/goals/store.js.map +1 -0
  212. package/dist/core/inbox/apply.d.ts +36 -0
  213. package/dist/core/inbox/apply.js +407 -0
  214. package/dist/core/inbox/apply.js.map +1 -0
  215. package/dist/core/inbox/notify-proposal.d.ts +13 -0
  216. package/dist/core/inbox/notify-proposal.js +21 -0
  217. package/dist/core/inbox/notify-proposal.js.map +1 -0
  218. package/dist/core/inbox/store.d.ts +67 -0
  219. package/dist/core/inbox/store.js +258 -0
  220. package/dist/core/inbox/store.js.map +1 -0
  221. package/dist/core/index-engine.d.ts +62 -0
  222. package/dist/core/index-engine.js +486 -0
  223. package/dist/core/index-engine.js.map +1 -0
  224. package/dist/core/integrations/desktop-notify.d.ts +18 -0
  225. package/dist/core/integrations/desktop-notify.js +42 -0
  226. package/dist/core/integrations/desktop-notify.js.map +1 -0
  227. package/dist/core/integrations/editors.d.ts +50 -0
  228. package/dist/core/integrations/editors.js +216 -0
  229. package/dist/core/integrations/editors.js.map +1 -0
  230. package/dist/core/integrations/github.d.ts +66 -0
  231. package/dist/core/integrations/github.js +332 -0
  232. package/dist/core/integrations/github.js.map +1 -0
  233. package/dist/core/integrations/identity.d.ts +29 -0
  234. package/dist/core/integrations/identity.js +359 -0
  235. package/dist/core/integrations/identity.js.map +1 -0
  236. package/dist/core/integrations/notify.d.ts +23 -0
  237. package/dist/core/integrations/notify.js +96 -0
  238. package/dist/core/integrations/notify.js.map +1 -0
  239. package/dist/core/integrations/vercel.d.ts +37 -0
  240. package/dist/core/integrations/vercel.js +192 -0
  241. package/dist/core/integrations/vercel.js.map +1 -0
  242. package/dist/core/knowledge/ask.d.ts +34 -0
  243. package/dist/core/knowledge/ask.js +325 -0
  244. package/dist/core/knowledge/ask.js.map +1 -0
  245. package/dist/core/knowledge/graph.d.ts +51 -0
  246. package/dist/core/knowledge/graph.js +564 -0
  247. package/dist/core/knowledge/graph.js.map +1 -0
  248. package/dist/core/knowledge/index.d.ts +74 -0
  249. package/dist/core/knowledge/index.js +586 -0
  250. package/dist/core/knowledge/index.js.map +1 -0
  251. package/dist/core/learn/playbooks.d.ts +84 -0
  252. package/dist/core/learn/playbooks.js +241 -0
  253. package/dist/core/learn/playbooks.js.map +1 -0
  254. package/dist/core/learn/reflect.d.ts +87 -0
  255. package/dist/core/learn/reflect.js +435 -0
  256. package/dist/core/learn/reflect.js.map +1 -0
  257. package/dist/core/learn/store.d.ts +51 -0
  258. package/dist/core/learn/store.js +165 -0
  259. package/dist/core/learn/store.js.map +1 -0
  260. package/dist/core/learn/tuning.d.ts +48 -0
  261. package/dist/core/learn/tuning.js +201 -0
  262. package/dist/core/learn/tuning.js.map +1 -0
  263. package/dist/core/lifecycle/scaffold.d.ts +43 -0
  264. package/dist/core/lifecycle/scaffold.js +260 -0
  265. package/dist/core/lifecycle/scaffold.js.map +1 -0
  266. package/dist/core/lifecycle/ship.d.ts +48 -0
  267. package/dist/core/lifecycle/ship.js +513 -0
  268. package/dist/core/lifecycle/ship.js.map +1 -0
  269. package/dist/core/lifecycle/templates.d.ts +20 -0
  270. package/dist/core/lifecycle/templates.js +605 -0
  271. package/dist/core/lifecycle/templates.js.map +1 -0
  272. package/dist/core/mcp-gateway.d.ts +59 -0
  273. package/dist/core/mcp-gateway.js +385 -0
  274. package/dist/core/mcp-gateway.js.map +1 -0
  275. package/dist/core/mcp-native.d.ts +53 -0
  276. package/dist/core/mcp-native.js +507 -0
  277. package/dist/core/mcp-native.js.map +1 -0
  278. package/dist/core/mcp-registry.d.ts +36 -0
  279. package/dist/core/mcp-registry.js +180 -0
  280. package/dist/core/mcp-registry.js.map +1 -0
  281. package/dist/core/observability/budget-alert.d.ts +18 -0
  282. package/dist/core/observability/budget-alert.js +90 -0
  283. package/dist/core/observability/budget-alert.js.map +1 -0
  284. package/dist/core/observability/estimate.d.ts +27 -0
  285. package/dist/core/observability/estimate.js +188 -0
  286. package/dist/core/observability/estimate.js.map +1 -0
  287. package/dist/core/observability/forecast.d.ts +19 -0
  288. package/dist/core/observability/forecast.js +101 -0
  289. package/dist/core/observability/forecast.js.map +1 -0
  290. package/dist/core/observability/governance.d.ts +28 -0
  291. package/dist/core/observability/governance.js +101 -0
  292. package/dist/core/observability/governance.js.map +1 -0
  293. package/dist/core/observability/otlp.d.ts +88 -0
  294. package/dist/core/observability/otlp.js +217 -0
  295. package/dist/core/observability/otlp.js.map +1 -0
  296. package/dist/core/observability/rollup.d.ts +35 -0
  297. package/dist/core/observability/rollup.js +311 -0
  298. package/dist/core/observability/rollup.js.map +1 -0
  299. package/dist/core/observability/telemetry-sink.d.ts +63 -0
  300. package/dist/core/observability/telemetry-sink.js +350 -0
  301. package/dist/core/observability/telemetry-sink.js.map +1 -0
  302. package/dist/core/observability/usage-source.d.ts +60 -0
  303. package/dist/core/observability/usage-source.js +347 -0
  304. package/dist/core/observability/usage-source.js.map +1 -0
  305. package/dist/core/onboard.d.ts +27 -0
  306. package/dist/core/onboard.js +288 -0
  307. package/dist/core/onboard.js.map +1 -0
  308. package/dist/core/orient.d.ts +23 -0
  309. package/dist/core/orient.js +135 -0
  310. package/dist/core/orient.js.map +1 -0
  311. package/dist/core/phantom.d.ts +23 -0
  312. package/dist/core/phantom.js +279 -0
  313. package/dist/core/phantom.js.map +1 -0
  314. package/dist/core/plugins/host-api.d.ts +29 -0
  315. package/dist/core/plugins/host-api.js +113 -0
  316. package/dist/core/plugins/host-api.js.map +1 -0
  317. package/dist/core/plugins/integrity.d.ts +36 -0
  318. package/dist/core/plugins/integrity.js +73 -0
  319. package/dist/core/plugins/integrity.js.map +1 -0
  320. package/dist/core/plugins/manifest.d.ts +31 -0
  321. package/dist/core/plugins/manifest.js +316 -0
  322. package/dist/core/plugins/manifest.js.map +1 -0
  323. package/dist/core/plugins/registry.d.ts +87 -0
  324. package/dist/core/plugins/registry.js +415 -0
  325. package/dist/core/plugins/registry.js.map +1 -0
  326. package/dist/core/plugins/types.d.ts +182 -0
  327. package/dist/core/plugins/types.js +40 -0
  328. package/dist/core/plugins/types.js.map +1 -0
  329. package/dist/core/plugins/wrappers.d.ts +40 -0
  330. package/dist/core/plugins/wrappers.js +229 -0
  331. package/dist/core/plugins/wrappers.js.map +1 -0
  332. package/dist/core/portfolio/backlog.d.ts +40 -0
  333. package/dist/core/portfolio/backlog.js +177 -0
  334. package/dist/core/portfolio/backlog.js.map +1 -0
  335. package/dist/core/portfolio/scanners.d.ts +21 -0
  336. package/dist/core/portfolio/scanners.js +600 -0
  337. package/dist/core/portfolio/scanners.js.map +1 -0
  338. package/dist/core/providers.d.ts +34 -0
  339. package/dist/core/providers.js +250 -0
  340. package/dist/core/providers.js.map +1 -0
  341. package/dist/core/quality/conventions.d.ts +35 -0
  342. package/dist/core/quality/conventions.js +267 -0
  343. package/dist/core/quality/conventions.js.map +1 -0
  344. package/dist/core/quality/fixes.d.ts +56 -0
  345. package/dist/core/quality/fixes.js +209 -0
  346. package/dist/core/quality/fixes.js.map +1 -0
  347. package/dist/core/quality/health.d.ts +69 -0
  348. package/dist/core/quality/health.js +350 -0
  349. package/dist/core/quality/health.js.map +1 -0
  350. package/dist/core/quality/store.d.ts +56 -0
  351. package/dist/core/quality/store.js +195 -0
  352. package/dist/core/quality/store.js.map +1 -0
  353. package/dist/core/readiness.d.ts +112 -0
  354. package/dist/core/readiness.js +431 -0
  355. package/dist/core/readiness.js.map +1 -0
  356. package/dist/core/run/agent-loop.d.ts +40 -0
  357. package/dist/core/run/agent-loop.js +291 -0
  358. package/dist/core/run/agent-loop.js.map +1 -0
  359. package/dist/core/run/budget.d.ts +47 -0
  360. package/dist/core/run/budget.js +113 -0
  361. package/dist/core/run/budget.js.map +1 -0
  362. package/dist/core/run/engines.d.ts +75 -0
  363. package/dist/core/run/engines.js +199 -0
  364. package/dist/core/run/engines.js.map +1 -0
  365. package/dist/core/run/model-manager.d.ts +64 -0
  366. package/dist/core/run/model-manager.js +339 -0
  367. package/dist/core/run/model-manager.js.map +1 -0
  368. package/dist/core/run/orchestrator.d.ts +100 -0
  369. package/dist/core/run/orchestrator.js +1515 -0
  370. package/dist/core/run/orchestrator.js.map +1 -0
  371. package/dist/core/run/provider-client.d.ts +46 -0
  372. package/dist/core/run/provider-client.js +796 -0
  373. package/dist/core/run/provider-client.js.map +1 -0
  374. package/dist/core/run/retry.d.ts +19 -0
  375. package/dist/core/run/retry.js +68 -0
  376. package/dist/core/run/retry.js.map +1 -0
  377. package/dist/core/run/router.d.ts +50 -0
  378. package/dist/core/run/router.js +257 -0
  379. package/dist/core/run/router.js.map +1 -0
  380. package/dist/core/run/self-heal.d.ts +52 -0
  381. package/dist/core/run/self-heal.js +181 -0
  382. package/dist/core/run/self-heal.js.map +1 -0
  383. package/dist/core/run/streaming.d.ts +31 -0
  384. package/dist/core/run/streaming.js +122 -0
  385. package/dist/core/run/streaming.js.map +1 -0
  386. package/dist/core/run/verify.d.ts +30 -0
  387. package/dist/core/run/verify.js +204 -0
  388. package/dist/core/run/verify.js.map +1 -0
  389. package/dist/core/sandbox/audit.d.ts +31 -0
  390. package/dist/core/sandbox/audit.js +169 -0
  391. package/dist/core/sandbox/audit.js.map +1 -0
  392. package/dist/core/sandbox/policy.d.ts +61 -0
  393. package/dist/core/sandbox/policy.js +211 -0
  394. package/dist/core/sandbox/policy.js.map +1 -0
  395. package/dist/core/sandbox/worktree.d.ts +175 -0
  396. package/dist/core/sandbox/worktree.js +673 -0
  397. package/dist/core/sandbox/worktree.js.map +1 -0
  398. package/dist/core/seams/backlog.d.ts +47 -0
  399. package/dist/core/seams/backlog.js +47 -0
  400. package/dist/core/seams/backlog.js.map +1 -0
  401. package/dist/core/seams/daemon-coordinator.d.ts +72 -0
  402. package/dist/core/seams/daemon-coordinator.js +76 -0
  403. package/dist/core/seams/daemon-coordinator.js.map +1 -0
  404. package/dist/core/seams/genome.d.ts +45 -0
  405. package/dist/core/seams/genome.js +53 -0
  406. package/dist/core/seams/genome.js.map +1 -0
  407. package/dist/core/seams/identity.d.ts +40 -0
  408. package/dist/core/seams/identity.js +44 -0
  409. package/dist/core/seams/identity.js.map +1 -0
  410. package/dist/core/seams/inbox.d.ts +60 -0
  411. package/dist/core/seams/inbox.js +66 -0
  412. package/dist/core/seams/inbox.js.map +1 -0
  413. package/dist/core/seams/index.d.ts +20 -0
  414. package/dist/core/seams/index.js +21 -0
  415. package/dist/core/seams/index.js.map +1 -0
  416. package/dist/core/seams/portfolio.d.ts +50 -0
  417. package/dist/core/seams/portfolio.js +61 -0
  418. package/dist/core/seams/portfolio.js.map +1 -0
  419. package/dist/core/seams/registry.d.ts +42 -0
  420. package/dist/core/seams/registry.js +128 -0
  421. package/dist/core/seams/registry.js.map +1 -0
  422. package/dist/core/seams/run-swarm.d.ts +66 -0
  423. package/dist/core/seams/run-swarm.js +74 -0
  424. package/dist/core/seams/run-swarm.js.map +1 -0
  425. package/dist/core/seams/types.d.ts +123 -0
  426. package/dist/core/seams/types.js +35 -0
  427. package/dist/core/seams/types.js.map +1 -0
  428. package/dist/core/spec/spec-store.d.ts +62 -0
  429. package/dist/core/spec/spec-store.js +359 -0
  430. package/dist/core/spec/spec-store.js.map +1 -0
  431. package/dist/core/swarm/gate.d.ts +45 -0
  432. package/dist/core/swarm/gate.js +114 -0
  433. package/dist/core/swarm/gate.js.map +1 -0
  434. package/dist/core/swarm/planner.d.ts +32 -0
  435. package/dist/core/swarm/planner.js +293 -0
  436. package/dist/core/swarm/planner.js.map +1 -0
  437. package/dist/core/swarm/rollback.d.ts +56 -0
  438. package/dist/core/swarm/rollback.js +266 -0
  439. package/dist/core/swarm/rollback.js.map +1 -0
  440. package/dist/core/swarm/runner.d.ts +62 -0
  441. package/dist/core/swarm/runner.js +1263 -0
  442. package/dist/core/swarm/runner.js.map +1 -0
  443. package/dist/core/swarm/sign.d.ts +71 -0
  444. package/dist/core/swarm/sign.js +362 -0
  445. package/dist/core/swarm/sign.js.map +1 -0
  446. package/dist/core/swarm/store.d.ts +52 -0
  447. package/dist/core/swarm/store.js +195 -0
  448. package/dist/core/swarm/store.js.map +1 -0
  449. package/dist/core/tidy.d.ts +32 -0
  450. package/dist/core/tidy.js +354 -0
  451. package/dist/core/tidy.js.map +1 -0
  452. package/dist/core/tools-registry.d.ts +16 -0
  453. package/dist/core/tools-registry.js +308 -0
  454. package/dist/core/tools-registry.js.map +1 -0
  455. package/dist/core/types.d.ts +2545 -0
  456. package/dist/core/types.js +9 -0
  457. package/dist/core/types.js.map +1 -0
  458. package/dist/core/web/api.d.ts +53 -0
  459. package/dist/core/web/api.js +698 -0
  460. package/dist/core/web/api.js.map +1 -0
  461. package/dist/core/web/public/app.js +1906 -0
  462. package/dist/core/web/public/index.html +721 -0
  463. package/dist/core/web/public/styles.css +2007 -0
  464. package/dist/core/web/server.d.ts +18 -0
  465. package/dist/core/web/server.js +122 -0
  466. package/dist/core/web/server.js.map +1 -0
  467. package/dist/core/web/static.d.ts +18 -0
  468. package/dist/core/web/static.js +122 -0
  469. package/dist/core/web/static.js.map +1 -0
  470. package/dist/tui/app.d.ts +33 -0
  471. package/dist/tui/app.js +350 -0
  472. package/dist/tui/app.js.map +1 -0
  473. package/dist/tui/render.d.ts +20 -0
  474. package/dist/tui/render.js +558 -0
  475. package/dist/tui/render.js.map +1 -0
  476. package/package.json +80 -0
  477. package/schema/config.schema.json +223 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * CLI handler for `ashlr digest` — M29 portfolio daily digest (Ashlr v2 pillar G).
3
+ *
4
+ * Builds a deterministic DAILY DIGEST from the read-only org-level portfolio
5
+ * snapshot + day-over-day deltas, ALWAYS writes a LOCAL artifact under
6
+ * ~/.ashlr/digests/, prints it, and — ONLY with an explicit `--notify` — sends
7
+ * it outward via the opt-in notify() webhook.
8
+ *
9
+ * Usage:
10
+ * ashlr digest # build + write local + print (default)
11
+ * ashlr digest --json # emit the DigestReport as JSON
12
+ * ashlr digest --window <7d|30d> # cost/forecast window (default 7d)
13
+ * ashlr digest --notify # ALSO send via configured webhook (opt-in)
14
+ * ashlr digest --narrative # OPT-IN: attempt an optional LLM narrative (local-first)
15
+ * ashlr digest --narrative --allow-cloud # permit a CLOUD model for that narrative
16
+ *
17
+ * HARD SAFETY INVARIANTS (M29) enforced by this surface:
18
+ * - READ-ONLY AGGREGATION: the digest only READS local state (via buildDigest
19
+ * -> buildSnapshot) and WRITES only under ~/.ashlr/digests/ (via
20
+ * deliverDigest -> saveDigest). NEVER mutates a repo, writes config, applies
21
+ * a proposal, pushes, opens a PR, or deploys.
22
+ * - NO OUTWARD ACTION BY DEFAULT: the default path writes a LOCAL file and
23
+ * makes ZERO outward network calls. `--notify` is the ONLY outward path and
24
+ * is OPT-IN; notify() is itself a no-op unless a webhook is configured.
25
+ * - LOCAL-FIRST: aggregation + rendering are deterministic with NO LLM. The
26
+ * optional narrative routes through getActiveClient (local-only unless
27
+ * --allow-cloud + key); default path is fully on-machine.
28
+ *
29
+ * NOTE (integration — owned by the Build/Integrate phase, NOT this scaffold):
30
+ * src/cli/index.ts must add a `loadDigestCmd = lazyCmd(() => import('./digest.js'),
31
+ * (m) => m.cmdDigest as Cmd, 'digest command requires src/cli/digest.ts (M29 …)')`,
32
+ * a `case 'digest':` in the dispatch switch, and cmdHelp + help-text entries.
33
+ *
34
+ * Exit codes: 0 success, 1 runtime error, 2 bad usage.
35
+ */
36
+ /**
37
+ * `ashlr digest [--window <7d|30d>] [--json] [--notify] [--allow-cloud]`
38
+ *
39
+ * Default path: build the digest (deterministic, read-only), ALWAYS write the
40
+ * local artifact under ~/.ashlr/digests/, and print it. `--notify` is the ONLY
41
+ * outward path and is OPT-IN. `--allow-cloud` permits a CLOUD model for the
42
+ * optional narrative (off by default; local-only otherwise).
43
+ *
44
+ * Exit codes: 0 success, 1 runtime error, 2 bad usage.
45
+ */
46
+ export declare function cmdDigest(args: string[]): Promise<number>;
@@ -0,0 +1,352 @@
1
+ /**
2
+ * CLI handler for `ashlr digest` — M29 portfolio daily digest (Ashlr v2 pillar G).
3
+ *
4
+ * Builds a deterministic DAILY DIGEST from the read-only org-level portfolio
5
+ * snapshot + day-over-day deltas, ALWAYS writes a LOCAL artifact under
6
+ * ~/.ashlr/digests/, prints it, and — ONLY with an explicit `--notify` — sends
7
+ * it outward via the opt-in notify() webhook.
8
+ *
9
+ * Usage:
10
+ * ashlr digest # build + write local + print (default)
11
+ * ashlr digest --json # emit the DigestReport as JSON
12
+ * ashlr digest --window <7d|30d> # cost/forecast window (default 7d)
13
+ * ashlr digest --notify # ALSO send via configured webhook (opt-in)
14
+ * ashlr digest --narrative # OPT-IN: attempt an optional LLM narrative (local-first)
15
+ * ashlr digest --narrative --allow-cloud # permit a CLOUD model for that narrative
16
+ *
17
+ * HARD SAFETY INVARIANTS (M29) enforced by this surface:
18
+ * - READ-ONLY AGGREGATION: the digest only READS local state (via buildDigest
19
+ * -> buildSnapshot) and WRITES only under ~/.ashlr/digests/ (via
20
+ * deliverDigest -> saveDigest). NEVER mutates a repo, writes config, applies
21
+ * a proposal, pushes, opens a PR, or deploys.
22
+ * - NO OUTWARD ACTION BY DEFAULT: the default path writes a LOCAL file and
23
+ * makes ZERO outward network calls. `--notify` is the ONLY outward path and
24
+ * is OPT-IN; notify() is itself a no-op unless a webhook is configured.
25
+ * - LOCAL-FIRST: aggregation + rendering are deterministic with NO LLM. The
26
+ * optional narrative routes through getActiveClient (local-only unless
27
+ * --allow-cloud + key); default path is fully on-machine.
28
+ *
29
+ * NOTE (integration — owned by the Build/Integrate phase, NOT this scaffold):
30
+ * src/cli/index.ts must add a `loadDigestCmd = lazyCmd(() => import('./digest.js'),
31
+ * (m) => m.cmdDigest as Cmd, 'digest command requires src/cli/digest.ts (M29 …)')`,
32
+ * a `case 'digest':` in the dispatch switch, and cmdHelp + help-text entries.
33
+ *
34
+ * Exit codes: 0 success, 1 runtime error, 2 bad usage.
35
+ */
36
+ import { makeColors, isTty, pad } from './ui.js';
37
+ let _core = undefined;
38
+ async function importCore() {
39
+ if (_core === undefined) {
40
+ try {
41
+ const [build, deliver, config] = await Promise.all([
42
+ import('../core/digest/build.js'),
43
+ import('../core/digest/deliver.js'),
44
+ import('../core/config.js'),
45
+ ]);
46
+ _core = {
47
+ buildDigest: build.buildDigest,
48
+ renderDigestText: deliver.renderDigestText,
49
+ deliverDigest: deliver.deliverDigest,
50
+ loadConfig: config.loadConfig,
51
+ };
52
+ }
53
+ catch {
54
+ _core = null;
55
+ }
56
+ }
57
+ return _core ?? null;
58
+ }
59
+ function parseDigestArgs(args) {
60
+ let json = false;
61
+ let notify = false;
62
+ let narrative = false;
63
+ let allowCloud = false;
64
+ let window = '7d';
65
+ let help = false;
66
+ let error;
67
+ for (let i = 0; i < args.length; i++) {
68
+ const a = args[i];
69
+ if (a === undefined)
70
+ continue;
71
+ if (a === '--help' || a === '-h') {
72
+ help = true;
73
+ }
74
+ else if (a === '--json') {
75
+ json = true;
76
+ }
77
+ else if (a === '--notify') {
78
+ notify = true;
79
+ }
80
+ else if (a === '--narrative') {
81
+ narrative = true;
82
+ }
83
+ else if (a === '--allow-cloud') {
84
+ allowCloud = true;
85
+ }
86
+ else if (a === '--window') {
87
+ const v = args[i + 1];
88
+ if (v === '7d' || v === '30d') {
89
+ window = v;
90
+ i++;
91
+ }
92
+ else {
93
+ error = `--window expects 7d or 30d (got: ${v ?? '<missing>'})`;
94
+ break;
95
+ }
96
+ }
97
+ else if (a.startsWith('--')) {
98
+ error = `Unknown flag: ${a}`;
99
+ break;
100
+ }
101
+ else {
102
+ error = `Unexpected argument: ${a}`;
103
+ break;
104
+ }
105
+ }
106
+ return { json, notify, narrative, allowCloud, window, help, error };
107
+ }
108
+ // ─── Help ─────────────────────────────────────────────────────────────────────
109
+ function printHelp() {
110
+ const tty = isTty();
111
+ const { bold, cyan, dim, gray } = makeColors(tty);
112
+ const out = (s = '') => process.stdout.write(s + '\n');
113
+ out('');
114
+ out(bold(' ashlr digest') + dim(' — org-level daily portfolio digest (read-only; local by default)'));
115
+ out('');
116
+ out(' ' + bold('Usage:'));
117
+ out(` ${cyan('ashlr digest')} [--window <7d|30d>] [--json] [--notify] [--narrative] [--allow-cloud]`);
118
+ out('');
119
+ out(' ' + bold('Options:'));
120
+ const opts = [
121
+ ['--window <7d|30d>', 'Cost/forecast window for the digest. Default 7d.'],
122
+ ['--json', 'Emit the DigestReport as JSON instead of human-readable output.'],
123
+ ['--notify', 'ALSO send the digest via a configured Slack/Discord webhook (OPT-IN; the only outward path).'],
124
+ ['--narrative', 'Attempt an OPTIONAL LLM narrative (local-first). Off by default (deterministic-only).'],
125
+ ['--allow-cloud', 'With --narrative, permit a CLOUD model. Off by default (local-only). No effect without --narrative.'],
126
+ ['--help', 'Show this help.'],
127
+ ];
128
+ const w = Math.max(...opts.map(([f]) => f.length));
129
+ for (const [flag, desc] of opts)
130
+ out(` ${cyan(pad(flag, w))} ${desc}`);
131
+ out('');
132
+ out(' ' + gray('The digest ALWAYS writes a LOCAL artifact under ~/.ashlr/digests/ and prints it.'));
133
+ out(' ' + gray('It makes ZERO outward network calls unless you pass --notify AND a webhook is configured.'));
134
+ out(' ' + gray('Aggregation + rendering are deterministic and local-only; the narrative is opt-in via --narrative.'));
135
+ out('');
136
+ }
137
+ // ─── Human-readable output ─────────────────────────────────────────────────────
138
+ /** Short basename-ish label for a repo path (last non-empty path segment). */
139
+ function repoLabel(repo) {
140
+ if (!repo)
141
+ return '—';
142
+ const parts = repo.split('/').filter(Boolean);
143
+ return parts.length > 0 ? parts[parts.length - 1] : repo;
144
+ }
145
+ /**
146
+ * Format a signed numeric delta with an arrow ('▲ +5', '▼ -3', '· 0'), or '—'
147
+ * when there is no prior digest to compare against (null). `digits` controls
148
+ * fixed-point precision for non-integer figures (e.g. spend in USD).
149
+ */
150
+ function signedDelta(n, digits = 0) {
151
+ if (n === null)
152
+ return '—';
153
+ const v = digits > 0 ? Number(n.toFixed(digits)) : Math.round(n);
154
+ if (v > 0)
155
+ return `▲ +${digits > 0 ? v.toFixed(digits) : v}`;
156
+ if (v < 0)
157
+ return `▼ ${digits > 0 ? v.toFixed(digits) : v}`;
158
+ return '· 0';
159
+ }
160
+ /**
161
+ * Render a DigestReport for the terminal. Deterministic, READ-ONLY display of
162
+ * the already-built digest (mirrors the health/reflect human output). Prints
163
+ * the headline, the repo roll-up + pending proposals, the portfolio health /
164
+ * in-flight goals / top backlog / cost+forecast / effectiveness sections, the
165
+ * "today" day-over-day delta block, and an optional narrative when present.
166
+ */
167
+ function printDigestHuman(report) {
168
+ const tty = isTty();
169
+ const { bold, cyan, dim, gray, green, yellow } = makeColors(tty);
170
+ const out = (s = '') => process.stdout.write(s + '\n');
171
+ const p = report.portfolio;
172
+ out('');
173
+ out(bold(' Digest') + gray(` [${report.date} · ${report.window}]`));
174
+ out('');
175
+ // Headline — the load-bearing one-line summary.
176
+ out(' ' + bold(report.headline || 'No activity to report.'));
177
+ out('');
178
+ // Repos + pending + daemon roll-up.
179
+ const rows = [
180
+ ['Repos', `${report.repos.total} total · ${report.repos.dirty} dirty · ${report.repos.stale} stale`],
181
+ ['Pending proposals', String(report.pendingProposals)],
182
+ [
183
+ 'Cost',
184
+ `$${p.cost.spentUsd.toFixed(4)} (${p.cost.window}) · ~$${p.cost.projectedMonthlyUsd.toFixed(2)}/mo · saved $${p.cost.localSavingsUsd.toFixed(4)} local`,
185
+ ],
186
+ ];
187
+ if (report.daemon) {
188
+ rows.push([
189
+ 'Operator',
190
+ `${report.daemon.running ? 'running' : 'stopped'} · $${report.daemon.todaySpentUsd.toFixed(4)} today`,
191
+ ]);
192
+ }
193
+ const w = Math.max(...rows.map(([k]) => k.length));
194
+ for (const [k, v] of rows)
195
+ out(` ${cyan(pad(k, w))} ${v}`);
196
+ out('');
197
+ // Health summary (ENROLLMENT-SCOPED — empty when nothing enrolled).
198
+ if (p.health.reposScored > 0) {
199
+ out(' ' + bold('Health') + gray(` — ${p.health.averageScore}/100 (${p.health.averageGrade}) over ${p.health.reposScored} repo(s)`));
200
+ for (const r of p.health.worstRepos) {
201
+ out(` ${yellow('•')} ${cyan(repoLabel(r.repo))} ${pad(`${r.score}/100`, 7, 'right')} ${bold(r.grade)}`);
202
+ }
203
+ out('');
204
+ }
205
+ // In-flight goals (M28).
206
+ if (p.goalsInFlight.length > 0) {
207
+ out(' ' + bold('Goals in flight') + gray(` (${p.goalsInFlight.length})`));
208
+ for (const g of p.goalsInFlight) {
209
+ const next = g.nextActionable ? gray(` → ${g.nextActionable}`) : '';
210
+ out(` ${green(`${Math.round(g.fractionDone * 100)}%`)} ${g.objective}${next}`);
211
+ }
212
+ out('');
213
+ }
214
+ // Top backlog (M22).
215
+ if (p.backlogTop.length > 0) {
216
+ out(' ' + bold('Top backlog'));
217
+ for (const item of p.backlogTop) {
218
+ const where = item.repo ? gray(` (${repoLabel(item.repo)})`) : '';
219
+ out(` ${dim(pad(String(item.score), 4, 'right'))} ${item.title}${where}`);
220
+ }
221
+ out('');
222
+ }
223
+ // Effectiveness headline (M26).
224
+ if (p.effectiveness) {
225
+ out(' ' + bold('Effectiveness') + gray(` — ${p.effectiveness.headline}`));
226
+ out('');
227
+ }
228
+ // "Today" day-over-day deltas vs the previous digest.
229
+ const t = p.today;
230
+ if (t.previousAt) {
231
+ out(' ' + bold('Today') + gray(` (vs ${t.previousAt})`));
232
+ out(` ${cyan(pad('Pending', 14))} ${signedDelta(t.pendingProposalsDelta)}`);
233
+ out(` ${cyan(pad('Dirty repos', 14))} ${signedDelta(t.dirtyReposDelta)}`);
234
+ out(` ${cyan(pad('Spend', 14))} ${signedDelta(t.spendUsdDelta, 4)}`);
235
+ out(` ${cyan(pad('Health score', 14))} ${signedDelta(t.healthScoreDelta)}`);
236
+ out(` ${cyan(pad('Goals', 14))} ${signedDelta(t.goalsInFlightDelta)}`);
237
+ out('');
238
+ }
239
+ else {
240
+ out(dim(' No prior digest yet — day-over-day deltas appear from the next run.'));
241
+ out('');
242
+ }
243
+ // Optional narrative (present only when explicitly requested + reachable).
244
+ if (report.narrative) {
245
+ out(' ' + bold('Summary') + (report.narrativeLocal ? gray(' (local model)') : ''));
246
+ for (const line of report.narrative.split('\n'))
247
+ out(' ' + line);
248
+ out('');
249
+ }
250
+ }
251
+ // ─── Main export ─────────────────────────────────────────────────────────────
252
+ /**
253
+ * `ashlr digest [--window <7d|30d>] [--json] [--notify] [--allow-cloud]`
254
+ *
255
+ * Default path: build the digest (deterministic, read-only), ALWAYS write the
256
+ * local artifact under ~/.ashlr/digests/, and print it. `--notify` is the ONLY
257
+ * outward path and is OPT-IN. `--allow-cloud` permits a CLOUD model for the
258
+ * optional narrative (off by default; local-only otherwise).
259
+ *
260
+ * Exit codes: 0 success, 1 runtime error, 2 bad usage.
261
+ */
262
+ export async function cmdDigest(args) {
263
+ const parsed = parseDigestArgs(args);
264
+ if (parsed.help) {
265
+ printHelp();
266
+ return 0;
267
+ }
268
+ if (parsed.error) {
269
+ process.stderr.write('error: ' + parsed.error + '\n');
270
+ process.stderr.write('Run `ashlr digest --help` for usage.\n');
271
+ return 2;
272
+ }
273
+ const tty = isTty();
274
+ const { red, yellow, green, dim, gray, cyan } = makeColors(tty);
275
+ const core = await importCore();
276
+ if (!core) {
277
+ process.stderr.write(red('error: ') +
278
+ 'digest command requires src/core/digest/* (M29 modules not yet built).\n');
279
+ return 1;
280
+ }
281
+ // Privacy notice for --allow-cloud (mirrors reflect.ts / health.ts). Only the
282
+ // OPTIONAL narrative can ever touch a model; all digest numbers are local.
283
+ // Suppressed under --json so the JSON payload on stdout stays clean (the
284
+ // warning goes to stderr regardless, but we keep parity with reflect.ts).
285
+ if (parsed.narrative && parsed.allowCloud && !parsed.json) {
286
+ process.stderr.write(yellow('warning: ') +
287
+ '--narrative + --allow-cloud are set — the OPTIONAL digest narrative MAY be synthesized by a cloud model.\n' +
288
+ ' All digest figures are always computed locally. Omit --allow-cloud to keep the narrative on-machine.\n');
289
+ }
290
+ const cfg = core.loadConfig();
291
+ // 1. Build the digest — deterministic, READ-ONLY aggregation. buildDigest
292
+ // never throws (degrades to a zeroed report), but guard defensively so a
293
+ // surprise rejection surfaces as exit 1 rather than an unhandled rejection.
294
+ let report;
295
+ try {
296
+ report = await core.buildDigest(cfg, {
297
+ window: parsed.window,
298
+ narrative: parsed.narrative,
299
+ allowCloud: parsed.allowCloud,
300
+ });
301
+ }
302
+ catch (err) {
303
+ process.stderr.write(red('error: ') + (err instanceof Error ? err.message : String(err)) + '\n');
304
+ return 1;
305
+ }
306
+ // 2. Deliver — ALWAYS writes the LOCAL artifact under ~/.ashlr/digests/. The
307
+ // notify() webhook is the SINGLE outward path and is reached ONLY when the
308
+ // user explicitly passed --notify (opt-in). deliverDigest never throws.
309
+ let result;
310
+ try {
311
+ result = await core.deliverDigest(report, cfg, { notify: parsed.notify });
312
+ }
313
+ catch (err) {
314
+ process.stderr.write(red('error: ') + (err instanceof Error ? err.message : String(err)) + '\n');
315
+ return 1;
316
+ }
317
+ // 3. Output the report itself.
318
+ if (parsed.json) {
319
+ process.stdout.write(JSON.stringify(report) + '\n');
320
+ }
321
+ else {
322
+ printDigestHuman(report);
323
+ }
324
+ // 4. Surface what delivery actually did (human mode only — JSON callers read
325
+ // `result` is not part of the report payload, so we keep stdout clean).
326
+ if (!parsed.json) {
327
+ const out = (s = '') => process.stdout.write(s + '\n');
328
+ if (result.jsonPath) {
329
+ out(' ' + gray('Saved ') + cyan(result.jsonPath));
330
+ }
331
+ else {
332
+ out(' ' + yellow('warning: ') + dim('could not write the local digest artifact.'));
333
+ }
334
+ if (parsed.notify) {
335
+ // --notify was opted in. notify() is itself a strict no-op (returns false,
336
+ // ZERO network calls) when no webhook is configured — surface that plainly
337
+ // so the user knows nothing went outward.
338
+ if (result.notified) {
339
+ out(' ' + green('✓ ') + dim('delivered via the configured webhook.'));
340
+ }
341
+ else {
342
+ out(' ' + dim('--notify was set but no webhook is configured — nothing was sent (local-only).'));
343
+ }
344
+ }
345
+ else {
346
+ out(' ' + dim('Local only — pass ') + cyan('--notify') + dim(' to also send via a configured webhook.'));
347
+ }
348
+ out('');
349
+ }
350
+ return 0;
351
+ }
352
+ //# sourceMappingURL=digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/cli/digest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * CLI handlers for `ashlr doctor` and `ashlr init`.
3
+ *
4
+ * doctor — one-glance health report (color terminal output or --json).
5
+ * --fix applies safe, local, non-destructive remediations via
6
+ * fixDoctor(); --fix --json emits FixAction[].
7
+ * init — full idempotent onboarding via onboard(). NON-TTY safe: no prompts
8
+ * when stdin is not a TTY. --wire wires detected editors (backup-first).
9
+ * --json emits OnboardResult (with doctorSummary for compat).
10
+ */
11
+ /**
12
+ * `ashlr doctor` — print a health report. Exits 1 if any check fails.
13
+ *
14
+ * Flags:
15
+ * --json Emit the DoctorReport as JSON on stdout (no color).
16
+ * --fix Apply safe automated fixes for fixable checks, then re-run doctor.
17
+ * With --json, emits FixAction[] instead of DoctorReport.
18
+ */
19
+ export declare function cmdDoctor(args: string[]): Promise<number>;
20
+ /**
21
+ * `ashlr init` — full idempotent onboarding via onboard().
22
+ *
23
+ * Flags:
24
+ * --wire Wire detected editors (backup-first, idempotent).
25
+ * --yes Accept all defaults (implied when stdin is not a TTY).
26
+ * --json Emit OnboardResult as JSON (with doctorSummary for compat).
27
+ */
28
+ export declare function cmdInit(args: string[]): Promise<number>;