@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,589 @@
1
+ /**
2
+ * `ashlr inbox` — Approval Inbox CLI (M23).
3
+ *
4
+ * The single human control plane for every proposed outward action. PENDING
5
+ * proposals NEVER auto-apply. The ONLY path to applyProposal is the explicit
6
+ * `inbox approve <id> [--yes]` subcommand, with a confirm gate.
7
+ *
8
+ * Subcommands:
9
+ * inbox List PENDING proposals + counts by status.
10
+ * inbox show <id> Full detail of one proposal incl. diff (read-only).
11
+ * inbox approve <id> Confirm gate, setStatus approved, then applyProposal.
12
+ * inbox approve <id> --yes Skip interactive prompt (requires TTY check; non-TTY
13
+ * with no --yes refuses — no silent auto-approve).
14
+ * inbox reject <id> Mark rejected; applies nothing.
15
+ *
16
+ * Flags:
17
+ * --yes Skip interactive confirm prompt (approve only; non-TTY w/o --yes refuses).
18
+ * --json Emit raw JSON for list / show / approve result.
19
+ *
20
+ * Non-TTY: approve without --yes refuses (no auto-approve, ever).
21
+ * READ-ONLY except for approve (which routes through the single applyProposal gate).
22
+ */
23
+ import { makeColors, pad } from './ui.js';
24
+ let _listProposals;
25
+ let _loadProposal;
26
+ let _setStatus;
27
+ let _pendingCount;
28
+ let _applyProposal;
29
+ async function loadStoreModule() {
30
+ if (_listProposals === undefined) {
31
+ try {
32
+ const mod = await import('../core/inbox/store.js');
33
+ _listProposals = mod.listProposals;
34
+ _loadProposal = mod.loadProposal;
35
+ _setStatus = mod.setStatus;
36
+ _pendingCount = mod.pendingCount;
37
+ }
38
+ catch {
39
+ _listProposals = null;
40
+ _loadProposal = null;
41
+ _setStatus = null;
42
+ _pendingCount = null;
43
+ }
44
+ }
45
+ return _listProposals !== null;
46
+ }
47
+ async function loadApplyModule() {
48
+ if (_applyProposal === undefined) {
49
+ try {
50
+ const mod = await import('../core/inbox/apply.js');
51
+ _applyProposal = mod.applyProposal;
52
+ }
53
+ catch {
54
+ _applyProposal = null;
55
+ }
56
+ }
57
+ return _applyProposal !== null;
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Formatting helpers
61
+ // ---------------------------------------------------------------------------
62
+ const STATUS_LABELS = {
63
+ pending: 'pending',
64
+ approved: 'approved',
65
+ rejected: 'rejected',
66
+ applied: 'applied',
67
+ failed: 'failed',
68
+ };
69
+ const STATUS_COLORS = {
70
+ pending: 'yellow',
71
+ approved: 'cyan',
72
+ rejected: 'dim',
73
+ applied: 'green',
74
+ failed: 'red',
75
+ };
76
+ const KIND_COLORS = {
77
+ patch: 'blue',
78
+ pr: 'cyan',
79
+ deploy: 'magenta',
80
+ note: 'gray',
81
+ };
82
+ /** Relative age string from an ISO timestamp. */
83
+ function relAge(iso) {
84
+ try {
85
+ const ms = Date.now() - new Date(iso).getTime();
86
+ if (ms < 60_000)
87
+ return 'just now';
88
+ if (ms < 3_600_000)
89
+ return `${Math.floor(ms / 60_000)}m ago`;
90
+ if (ms < 86_400_000)
91
+ return `${Math.floor(ms / 3_600_000)}h ago`;
92
+ return `${Math.floor(ms / 86_400_000)}d ago`;
93
+ }
94
+ catch {
95
+ return iso;
96
+ }
97
+ }
98
+ /** Shorten an absolute repo path for display. */
99
+ function shortRepo(repo) {
100
+ if (!repo)
101
+ return '(none)';
102
+ const home = process.env['HOME'] ?? '';
103
+ const s = home ? repo.replace(home, '~') : repo;
104
+ const parts = s.split('/');
105
+ return parts.length > 3 ? '…/' + parts.slice(-2).join('/') : s;
106
+ }
107
+ /** Describe what approve will do, for the confirm gate. */
108
+ function describeApplyAction(p) {
109
+ switch (p.kind) {
110
+ case 'patch':
111
+ return `apply a patch on a NEW local branch in ${shortRepo(p.repo)} (no push, local only)`;
112
+ case 'pr':
113
+ return `create a branch + commit, then open a PR in ${shortRepo(p.repo)} via gh CLI`;
114
+ case 'deploy':
115
+ return `run the gated ship/deploy path for ${shortRepo(p.repo)}`;
116
+ case 'note':
117
+ return 'record a note (no-op, no repo mutation)';
118
+ }
119
+ }
120
+ /** Print a table of proposals. */
121
+ function printTable(proposals, tty) {
122
+ const col = makeColors(tty);
123
+ if (proposals.length === 0) {
124
+ console.log(col.dim(' (no proposals)'));
125
+ return;
126
+ }
127
+ const idW = 12; // first 12 chars of id
128
+ const kindW = 7; // 'deploy' = 6
129
+ const statusW = 8; // 'approved' = 8
130
+ const repoW = Math.min(28, Math.max(8, ...proposals.map(p => shortRepo(p.repo).length)));
131
+ const ageW = 10;
132
+ const titleW = Math.min(55, Math.max(10, ...proposals.map(p => p.title.length)));
133
+ const hdr = [
134
+ col.bold(pad('ID', idW)),
135
+ col.bold(pad('KIND', kindW)),
136
+ col.bold(pad('STATUS', statusW)),
137
+ col.bold(pad('REPO', repoW)),
138
+ col.bold(pad('AGE', ageW)),
139
+ col.bold('TITLE'),
140
+ ].join(' ');
141
+ console.log('');
142
+ console.log(' ' + hdr);
143
+ console.log(' ' + col.dim('─'.repeat(idW + kindW + statusW + repoW + ageW + titleW + 10)));
144
+ for (const p of proposals) {
145
+ const kindColor = KIND_COLORS[p.kind] ?? 'cyan';
146
+ const statColor = STATUS_COLORS[p.status] ?? 'dim';
147
+ const kindFn = col[kindColor];
148
+ const statFn = col[statColor];
149
+ const idShort = p.id.slice(0, idW);
150
+ const age = relAge(p.createdAt);
151
+ const title = p.title.length > titleW
152
+ ? p.title.slice(0, titleW - 1) + '…'
153
+ : p.title;
154
+ const row = [
155
+ col.dim(pad(idShort, idW)),
156
+ kindFn(pad(p.kind, kindW)),
157
+ statFn(pad(STATUS_LABELS[p.status] ?? p.status, statusW)),
158
+ col.dim(pad(shortRepo(p.repo), repoW)),
159
+ col.dim(pad(age, ageW)),
160
+ title,
161
+ ].join(' ');
162
+ console.log(' ' + row);
163
+ }
164
+ console.log('');
165
+ }
166
+ /** Print a status summary line: counts by status. */
167
+ function printStatusCounts(proposals, tty) {
168
+ const col = makeColors(tty);
169
+ const counts = {};
170
+ for (const p of proposals) {
171
+ counts[p.status] = (counts[p.status] ?? 0) + 1;
172
+ }
173
+ const all = ['pending', 'approved', 'rejected', 'applied', 'failed'];
174
+ const parts = all
175
+ .filter(s => (counts[s] ?? 0) > 0)
176
+ .map(s => {
177
+ const n = counts[s] ?? 0;
178
+ const colorFn = col[STATUS_COLORS[s]];
179
+ return colorFn(`${n} ${s}`);
180
+ });
181
+ if (parts.length === 0) {
182
+ console.log(col.dim(' Inbox is empty.'));
183
+ }
184
+ else {
185
+ console.log(' ' + col.bold('Counts:') + ' ' + parts.join(col.dim(' · ')));
186
+ }
187
+ console.log('');
188
+ }
189
+ /** Interactive readline confirm (y/N). Resolves false if stdin is not a TTY. */
190
+ async function promptConfirmAsync(question) {
191
+ if (!process.stdin.isTTY) {
192
+ return false;
193
+ }
194
+ const readline = await import('node:readline');
195
+ return new Promise((resolve) => {
196
+ const rl = readline.createInterface({
197
+ input: process.stdin,
198
+ output: process.stdout,
199
+ });
200
+ rl.question(question + ' [y/N] ', (answer) => {
201
+ rl.close();
202
+ resolve(answer.trim().toLowerCase() === 'y');
203
+ });
204
+ });
205
+ }
206
+ // ---------------------------------------------------------------------------
207
+ // Subcommand: list (default)
208
+ // ---------------------------------------------------------------------------
209
+ async function cmdInboxList(jsonMode) {
210
+ const tty = process.stdout.isTTY === true;
211
+ const col = makeColors(tty);
212
+ const storeOk = await loadStoreModule();
213
+ if (!storeOk || !_listProposals || !_pendingCount) {
214
+ console.error(col.red('error: ') + 'inbox requires src/core/inbox/store.ts (M23 module not yet built).');
215
+ return 1;
216
+ }
217
+ const all = _listProposals();
218
+ const pending = _listProposals({ status: 'pending' });
219
+ if (jsonMode) {
220
+ console.log(JSON.stringify({ proposals: pending, counts: buildCounts(all) }, null, 2));
221
+ return 0;
222
+ }
223
+ const pendingN = pending.length;
224
+ console.log('');
225
+ console.log(col.bold(' ashlr inbox') +
226
+ col.dim(` — ${pendingN} pending proposal${pendingN !== 1 ? 's' : ''}` +
227
+ ` · ${all.length} total`));
228
+ if (pendingN === 0) {
229
+ printStatusCounts(all, tty);
230
+ console.log(col.dim(' No pending proposals.'));
231
+ console.log(col.dim(' Proposals are created here by the autonomous org (M24+) or `ashlr backlog`.'));
232
+ console.log('');
233
+ return 0;
234
+ }
235
+ printTable(pending, tty);
236
+ printStatusCounts(all, tty);
237
+ console.log(col.dim(' Use `ashlr inbox show <id>` for full detail.'));
238
+ console.log(col.dim(' Use `ashlr inbox approve <id>` to approve and apply.'));
239
+ console.log(col.dim(' Use `ashlr inbox reject <id>` to discard.'));
240
+ console.log('');
241
+ return 0;
242
+ }
243
+ function buildCounts(proposals) {
244
+ const counts = {
245
+ pending: 0, approved: 0, rejected: 0, applied: 0, failed: 0,
246
+ };
247
+ for (const p of proposals) {
248
+ counts[p.status] = (counts[p.status] ?? 0) + 1;
249
+ }
250
+ return counts;
251
+ }
252
+ // ---------------------------------------------------------------------------
253
+ // Subcommand: show <id>
254
+ // ---------------------------------------------------------------------------
255
+ async function cmdInboxShow(id, jsonMode) {
256
+ const tty = process.stdout.isTTY === true;
257
+ const col = makeColors(tty);
258
+ const storeOk = await loadStoreModule();
259
+ if (!storeOk || !_loadProposal) {
260
+ console.error(col.red('error: ') + 'inbox requires src/core/inbox/store.ts (M23 module not yet built).');
261
+ return 1;
262
+ }
263
+ if (!id) {
264
+ console.error(col.red('error: ') + 'Usage: ashlr inbox show <id>');
265
+ return 2;
266
+ }
267
+ const p = _loadProposal(id);
268
+ if (!p) {
269
+ console.error(col.red('error: ') + `Proposal not found: ${id}`);
270
+ return 1;
271
+ }
272
+ if (jsonMode) {
273
+ console.log(JSON.stringify(p, null, 2));
274
+ return 0;
275
+ }
276
+ const kindColor = KIND_COLORS[p.kind] ?? 'cyan';
277
+ const statColor = STATUS_COLORS[p.status] ?? 'dim';
278
+ const kindFn = col[kindColor];
279
+ const statFn = col[statColor];
280
+ console.log('');
281
+ console.log(col.bold(' Proposal: ') + col.dim(p.id));
282
+ console.log(' ' + col.bold('Title: ') + p.title);
283
+ console.log(' ' + col.bold('Kind: ') + kindFn(p.kind));
284
+ console.log(' ' + col.bold('Status: ') + statFn(p.status));
285
+ console.log(' ' + col.bold('Origin: ') + p.origin);
286
+ console.log(' ' + col.bold('Repo: ') + col.dim(shortRepo(p.repo)));
287
+ console.log(' ' + col.bold('Created: ') + col.dim(p.createdAt + ' (' + relAge(p.createdAt) + ')'));
288
+ if (p.decidedAt) {
289
+ console.log(' ' + col.bold('Decided: ') + col.dim(p.decidedAt + ' (' + relAge(p.decidedAt) + ')'));
290
+ }
291
+ if (p.sandboxId) {
292
+ console.log(' ' + col.bold('Sandbox: ') + col.dim(p.sandboxId));
293
+ }
294
+ if (p.result) {
295
+ console.log(' ' + col.bold('Result: ') + p.result);
296
+ }
297
+ console.log('');
298
+ console.log(' ' + col.bold('Summary:'));
299
+ for (const line of p.summary.split('\n')) {
300
+ console.log(' ' + line);
301
+ }
302
+ console.log('');
303
+ if (p.diff) {
304
+ console.log(' ' + col.bold('Diff:'));
305
+ // Print diff with simple coloring: + lines green, - lines red, @@ cyan.
306
+ for (const line of p.diff.split('\n')) {
307
+ if (line.startsWith('+') && !line.startsWith('+++')) {
308
+ process.stdout.write(' ' + col.green(line) + '\n');
309
+ }
310
+ else if (line.startsWith('-') && !line.startsWith('---')) {
311
+ process.stdout.write(' ' + col.red(line) + '\n');
312
+ }
313
+ else if (line.startsWith('@@')) {
314
+ process.stdout.write(' ' + col.cyan(line) + '\n');
315
+ }
316
+ else {
317
+ process.stdout.write(' ' + col.dim(line) + '\n');
318
+ }
319
+ }
320
+ console.log('');
321
+ }
322
+ else {
323
+ console.log(' ' + col.dim('(no diff attached)'));
324
+ console.log('');
325
+ }
326
+ if (p.status === 'pending') {
327
+ console.log(col.dim(' Approve: ') + col.cyan(`ashlr inbox approve ${p.id.slice(0, 12)}`));
328
+ console.log(col.dim(' Reject: ') + col.cyan(`ashlr inbox reject ${p.id.slice(0, 12)}`));
329
+ console.log('');
330
+ }
331
+ return 0;
332
+ }
333
+ // ---------------------------------------------------------------------------
334
+ // Subcommand: approve <id> [--yes]
335
+ // ---------------------------------------------------------------------------
336
+ async function cmdInboxApprove(id, yes, jsonMode) {
337
+ const tty = process.stdout.isTTY === true;
338
+ const col = makeColors(tty);
339
+ // Guard: non-TTY without --yes refuses
340
+ if (!tty && !yes) {
341
+ const msg = 'non-TTY: inbox approve requires --yes to prevent silent auto-approval';
342
+ if (jsonMode) {
343
+ console.log(JSON.stringify({ ok: false, error: msg }));
344
+ }
345
+ else {
346
+ console.error(col.red('error: ') + msg);
347
+ console.error(col.dim(' Use `ashlr inbox approve <id> --yes` in non-interactive environments.'));
348
+ }
349
+ return 2;
350
+ }
351
+ if (!id) {
352
+ console.error(col.red('error: ') + 'Usage: ashlr inbox approve <id> [--yes]');
353
+ return 2;
354
+ }
355
+ const storeOk = await loadStoreModule();
356
+ if (!storeOk || !_loadProposal || !_setStatus) {
357
+ console.error(col.red('error: ') + 'inbox requires src/core/inbox/store.ts (M23 module not yet built).');
358
+ return 1;
359
+ }
360
+ // Load proposal — resolve by prefix if needed
361
+ const p = resolveProposal(id);
362
+ if (!p) {
363
+ if (jsonMode) {
364
+ console.log(JSON.stringify({ ok: false, error: `Proposal not found: ${id}` }));
365
+ }
366
+ else {
367
+ console.error(col.red('error: ') + `Proposal not found: ${id}`);
368
+ }
369
+ return 1;
370
+ }
371
+ // Must be pending OR already-approved (not yet applied) to proceed.
372
+ // A proposal already in 'approved' state (e.g. approved earlier but not yet
373
+ // applied) can still be applied — we skip the re-decision but run the gate.
374
+ // Refuse only terminal/rejected states: rejected / applied / failed.
375
+ if (p.status !== 'pending' && p.status !== 'approved') {
376
+ const msg = `Proposal ${p.id.slice(0, 12)} is ${p.status}, not pending — nothing to approve.`;
377
+ if (jsonMode) {
378
+ console.log(JSON.stringify({ ok: false, error: msg, status: p.status }));
379
+ }
380
+ else {
381
+ console.error(col.yellow('warning: ') + msg);
382
+ }
383
+ return p.status === 'applied' ? 0 : 1;
384
+ }
385
+ // ── Confirm gate ──────────────────────────────────────────────────────────
386
+ if (!jsonMode) {
387
+ const kindColor = KIND_COLORS[p.kind] ?? 'cyan';
388
+ const kindFn = col[kindColor];
389
+ console.log('');
390
+ console.log(col.bold(' Approve proposal:'));
391
+ console.log(' ' + col.bold('ID: ') + col.dim(p.id.slice(0, 12)));
392
+ console.log(' ' + col.bold('Kind: ') + kindFn(p.kind));
393
+ console.log(' ' + col.bold('Title: ') + p.title);
394
+ console.log(' ' + col.bold('Action: ') + describeApplyAction(p));
395
+ if (p.repo) {
396
+ console.log(' ' + col.bold('Repo: ') + col.dim(shortRepo(p.repo)));
397
+ }
398
+ console.log('');
399
+ if (p.kind === 'patch') {
400
+ console.log(' ' + col.yellow('Note: a new local branch will be created. No push, no PR. Local only.'));
401
+ }
402
+ else if (p.kind === 'pr') {
403
+ console.log(' ' + col.yellow('Note: this will create a PR via gh CLI (outward action).'));
404
+ }
405
+ else if (p.kind === 'deploy') {
406
+ console.log(' ' + col.yellow('Note: this will trigger the ship/deploy gate (outward action).'));
407
+ }
408
+ console.log('');
409
+ }
410
+ if (!yes) {
411
+ const confirmed = await promptConfirmAsync(` Approve and apply this ${p.kind} proposal?`);
412
+ if (!confirmed) {
413
+ if (!jsonMode) {
414
+ console.log(col.dim(' Aborted — proposal remains pending.'));
415
+ console.log('');
416
+ }
417
+ else {
418
+ console.log(JSON.stringify({ ok: false, error: 'aborted by user' }));
419
+ }
420
+ return 0;
421
+ }
422
+ }
423
+ // ── Transition status to approved ────────────────────────────────────────
424
+ _setStatus(p.id, 'approved');
425
+ // ── Load apply module and run ─────────────────────────────────────────────
426
+ const applyOk = await loadApplyModule();
427
+ if (!applyOk || !_applyProposal) {
428
+ // apply module not built yet — mark back to pending + report
429
+ _setStatus(p.id, 'pending'); // revert
430
+ const msg = 'inbox/apply.ts not yet built — approval reverted to pending';
431
+ if (jsonMode) {
432
+ console.log(JSON.stringify({ ok: false, error: msg }));
433
+ }
434
+ else {
435
+ console.error(col.red('error: ') + msg);
436
+ }
437
+ return 1;
438
+ }
439
+ if (!jsonMode) {
440
+ process.stdout.write(col.dim(' Applying…') + (tty ? '\r' : '\n'));
441
+ }
442
+ const result = await _applyProposal(p.id, { confirmed: true });
443
+ if (tty && !jsonMode) {
444
+ process.stdout.write('\x1b[2K\r');
445
+ }
446
+ if (jsonMode) {
447
+ console.log(JSON.stringify(result, null, 2));
448
+ return result.ok ? 0 : 1;
449
+ }
450
+ if (result.ok) {
451
+ console.log(col.green(' ✓ Applied: ') + result.detail);
452
+ console.log('');
453
+ }
454
+ else {
455
+ console.error(col.red(' ✗ Failed: ') + result.detail);
456
+ console.log('');
457
+ return 1;
458
+ }
459
+ return 0;
460
+ }
461
+ // ---------------------------------------------------------------------------
462
+ // Subcommand: reject <id>
463
+ // ---------------------------------------------------------------------------
464
+ async function cmdInboxReject(id, jsonMode) {
465
+ const tty = process.stdout.isTTY === true;
466
+ const col = makeColors(tty);
467
+ if (!id) {
468
+ console.error(col.red('error: ') + 'Usage: ashlr inbox reject <id>');
469
+ return 2;
470
+ }
471
+ const storeOk = await loadStoreModule();
472
+ if (!storeOk || !_setStatus) {
473
+ console.error(col.red('error: ') + 'inbox requires src/core/inbox/store.ts (M23 module not yet built).');
474
+ return 1;
475
+ }
476
+ const p = resolveProposal(id);
477
+ if (!p) {
478
+ if (jsonMode) {
479
+ console.log(JSON.stringify({ ok: false, error: `Proposal not found: ${id}` }));
480
+ }
481
+ else {
482
+ console.error(col.red('error: ') + `Proposal not found: ${id}`);
483
+ }
484
+ return 1;
485
+ }
486
+ if (p.status !== 'pending') {
487
+ const msg = `Proposal ${p.id.slice(0, 12)} is already ${p.status}.`;
488
+ if (jsonMode) {
489
+ console.log(JSON.stringify({ ok: false, error: msg, status: p.status }));
490
+ }
491
+ else {
492
+ console.error(col.yellow('warning: ') + msg);
493
+ }
494
+ return 1;
495
+ }
496
+ _setStatus(p.id, 'rejected');
497
+ if (jsonMode) {
498
+ console.log(JSON.stringify({ ok: true, id: p.id, status: 'rejected' }));
499
+ }
500
+ else {
501
+ console.log(col.dim(' Proposal ') + col.bold(p.id.slice(0, 12)) + col.dim(' rejected.'));
502
+ console.log('');
503
+ }
504
+ return 0;
505
+ }
506
+ // ---------------------------------------------------------------------------
507
+ // ID resolution — accept full id or an unambiguous prefix
508
+ // ---------------------------------------------------------------------------
509
+ function resolveProposal(idOrPrefix) {
510
+ if (!_loadProposal || !_listProposals)
511
+ return null;
512
+ // Try exact match first
513
+ const exact = _loadProposal(idOrPrefix);
514
+ if (exact)
515
+ return exact;
516
+ // Try prefix match
517
+ const all = _listProposals();
518
+ const matches = all.filter(p => p.id.startsWith(idOrPrefix));
519
+ if (matches.length === 1)
520
+ return matches[0] ?? null;
521
+ if (matches.length > 1) {
522
+ console.error(makeColors(process.stdout.isTTY === true).red('error: ') +
523
+ `Ambiguous id prefix "${idOrPrefix}" matches ${matches.length} proposals. Use more characters.`);
524
+ return null;
525
+ }
526
+ return null;
527
+ }
528
+ // ---------------------------------------------------------------------------
529
+ // Public entry point
530
+ // ---------------------------------------------------------------------------
531
+ /**
532
+ * `ashlr inbox [show|approve|reject] [id] [--yes] [--json]`
533
+ *
534
+ * Returns a process exit code (0 = success, non-zero = error/usage).
535
+ */
536
+ export async function cmdInbox(args) {
537
+ const tty = process.stdout.isTTY === true;
538
+ const col = makeColors(tty);
539
+ // ── Parse args ─────────────────────────────────────────────────────────
540
+ let subcmd = 'list';
541
+ let targetId = '';
542
+ let yes = false;
543
+ let jsonMode = false;
544
+ const positionals = [];
545
+ for (let i = 0; i < args.length; i++) {
546
+ const a = args[i];
547
+ if (a === '--yes') {
548
+ yes = true;
549
+ }
550
+ else if (a === '--json') {
551
+ jsonMode = true;
552
+ }
553
+ else if (a?.startsWith('-')) {
554
+ console.error(col.red('error: ') + `Unknown flag: ${a}`);
555
+ console.error(col.dim('Usage: ashlr inbox [show|approve|reject] [<id>] [--yes] [--json]'));
556
+ return 2;
557
+ }
558
+ else {
559
+ positionals.push(a);
560
+ }
561
+ }
562
+ if (positionals.length > 0) {
563
+ const first = positionals[0];
564
+ if (first === 'show' || first === 'approve' || first === 'reject') {
565
+ subcmd = first;
566
+ targetId = positionals[1] ?? '';
567
+ }
568
+ else {
569
+ // Treat bare positional as an id for show (convenience)
570
+ subcmd = 'show';
571
+ targetId = first;
572
+ }
573
+ }
574
+ switch (subcmd) {
575
+ case 'list':
576
+ return cmdInboxList(jsonMode);
577
+ case 'show':
578
+ return cmdInboxShow(targetId, jsonMode);
579
+ case 'approve':
580
+ return cmdInboxApprove(targetId, yes, jsonMode);
581
+ case 'reject':
582
+ return cmdInboxReject(targetId, jsonMode);
583
+ default:
584
+ console.error(col.red('error: ') + `Unknown inbox subcommand: ${subcmd}`);
585
+ console.error(col.dim('Usage: ashlr inbox [show|approve|reject] [<id>] [--yes] [--json]'));
586
+ return 2;
587
+ }
588
+ }
589
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/cli/inbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ashlr CLI — main entry point.
4
+ *
5
+ * Commands:
6
+ * index [--refresh] Rebuild the desktop index; print counts by category.
7
+ * go [query] [--open|--cd] Find an item; open in editor, cd, or just print.
8
+ * status Attention board: dirty/stale repos, aligned table.
9
+ * ls [category] List all indexed items, optionally filtered.
10
+ * open [query] Open best match in editor; no query → picker.
11
+ * tidy [--apply] [--json] Plan (dry-run) or apply tidy moves; --json emits machine output.
12
+ * config [get|set|path] Read/write config values.
13
+ * doctor One-glance health check (config, phantom, providers).
14
+ * init [--yes] Idempotent onboarding; NON-TTY safe with --yes.
15
+ * mcp [list|doctor|install] MCP aggregation gateway and registry management.
16
+ * run "<goal>" [opts] Local-first agent orchestrator; decompose & execute a goal.
17
+ * run show <id> Print a past run in detail.
18
+ * runs [--json] List past runs.
19
+ * pulse [--json] [--window] Local observability dashboard: tokens, cost, activity.
20
+ * new <name> [opts] Scaffold a new project and register it in the index.
21
+ * ship [path] [opts] Run pre-ship gate (lint/test/build/deps) + optional deploy.
22
+ * recall "<query>" Search shared genome memory; return top relevant entries.
23
+ * learn "<text>" [opts] Append a note to shared genome memory.
24
+ * genome Genome status/health: entry count, projects, staleness.
25
+ * update [--check] [--json] Safe self-update: git pull --ff-only + rebuild; --check reports only.
26
+ * spec new "<goal>" [opts] Author a versioned end-state spec artifact.
27
+ * spec list/show/refine Manage spec artifacts.
28
+ * swarm "<goal>"|<specId> Decompose a spec into a contracts-first agent swarm and run it.
29
+ * swarms [--json] List past swarm runs.
30
+ * tui [--once] Interactive terminal dashboard (alias: dash).
31
+ * serve [--port N] [--open] Local web dashboard + JSON API on 127.0.0.1 (default port 7777).
32
+ * gh <pr|issue|ci> Read GitHub PRs / issues / CI status (read-only via gh CLI).
33
+ * gh pr create Create a PR (explicit + confirm-gated mutation).
34
+ * vercel <ls|logs> Read Vercel deployments / latest logs (read-only via vercel CLI).
35
+ * wire [claude|codex|cursor|all] Wire ashlr MCP gateway into editor config(s).
36
+ * notify test Send a test ping to the configured webhook (no-op if unconfigured).
37
+ * help Show this help.
38
+ *
39
+ * Exit codes: 0 success, 1 error/not-found, 2 bad usage.
40
+ */
41
+ export {};