@repo-os/repoos 0.5.45

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 (362) hide show
  1. package/LICENSE.md +110 -0
  2. package/README.md +272 -0
  3. package/dist/.build-info.json +4 -0
  4. package/dist/.build-stamp.json +3 -0
  5. package/dist/cli/colors.d.ts +13 -0
  6. package/dist/cli/colors.js +37 -0
  7. package/dist/cli/index.d.ts +2 -0
  8. package/dist/cli/index.js +221 -0
  9. package/dist/commands/check.d.ts +170 -0
  10. package/dist/commands/check.js +1227 -0
  11. package/dist/commands/docs.d.ts +2 -0
  12. package/dist/commands/docs.js +70 -0
  13. package/dist/commands/gc.d.ts +1 -0
  14. package/dist/commands/gc.js +57 -0
  15. package/dist/commands/init.d.ts +9 -0
  16. package/dist/commands/init.js +699 -0
  17. package/dist/commands/screenshots.d.ts +7 -0
  18. package/dist/commands/screenshots.js +77 -0
  19. package/dist/commands/serve.d.ts +55 -0
  20. package/dist/commands/serve.js +204 -0
  21. package/dist/commands/status.d.ts +140 -0
  22. package/dist/commands/status.js +569 -0
  23. package/dist/commands/stop.d.ts +1 -0
  24. package/dist/commands/stop.js +59 -0
  25. package/dist/commands/tasks.d.ts +47 -0
  26. package/dist/commands/tasks.js +334 -0
  27. package/dist/commands/tunnel.d.ts +1 -0
  28. package/dist/commands/tunnel.js +1271 -0
  29. package/dist/commands/ui-harness.d.ts +53 -0
  30. package/dist/commands/ui-harness.js +62 -0
  31. package/dist/commands/ui-smoke.d.ts +6 -0
  32. package/dist/commands/ui-smoke.js +220 -0
  33. package/dist/commands/upgrade.d.ts +15 -0
  34. package/dist/commands/upgrade.js +188 -0
  35. package/dist/core/auth-store.d.ts +81 -0
  36. package/dist/core/auth-store.js +530 -0
  37. package/dist/core/auth.d.ts +75 -0
  38. package/dist/core/auth.js +124 -0
  39. package/dist/core/bootstrap.d.ts +41 -0
  40. package/dist/core/bootstrap.js +236 -0
  41. package/dist/core/build.d.ts +92 -0
  42. package/dist/core/build.js +249 -0
  43. package/dist/core/canary.d.ts +10 -0
  44. package/dist/core/canary.js +14 -0
  45. package/dist/core/check-failure-summary.d.ts +10 -0
  46. package/dist/core/check-failure-summary.js +34 -0
  47. package/dist/core/config.d.ts +160 -0
  48. package/dist/core/config.js +1288 -0
  49. package/dist/core/context-pack.d.ts +74 -0
  50. package/dist/core/context-pack.js +778 -0
  51. package/dist/core/db.d.ts +236 -0
  52. package/dist/core/db.js +747 -0
  53. package/dist/core/detect.d.ts +69 -0
  54. package/dist/core/detect.js +251 -0
  55. package/dist/core/docs.d.ts +76 -0
  56. package/dist/core/docs.js +225 -0
  57. package/dist/core/frontmatter.d.ts +29 -0
  58. package/dist/core/frontmatter.js +215 -0
  59. package/dist/core/git.d.ts +505 -0
  60. package/dist/core/git.js +1453 -0
  61. package/dist/core/indexer.d.ts +33 -0
  62. package/dist/core/indexer.js +282 -0
  63. package/dist/core/input.d.ts +66 -0
  64. package/dist/core/input.js +222 -0
  65. package/dist/core/logger.d.ts +70 -0
  66. package/dist/core/logger.js +138 -0
  67. package/dist/core/models.d.ts +45 -0
  68. package/dist/core/models.js +291 -0
  69. package/dist/core/net-probe.d.ts +4 -0
  70. package/dist/core/net-probe.js +20 -0
  71. package/dist/core/providers/deepinfra.d.ts +23 -0
  72. package/dist/core/providers/deepinfra.js +44 -0
  73. package/dist/core/providers/index.d.ts +24 -0
  74. package/dist/core/providers/index.js +59 -0
  75. package/dist/core/providers/openrouter.d.ts +28 -0
  76. package/dist/core/providers/openrouter.js +82 -0
  77. package/dist/core/providers/spend.d.ts +86 -0
  78. package/dist/core/providers/spend.js +286 -0
  79. package/dist/core/providers/types.d.ts +56 -0
  80. package/dist/core/providers/types.js +39 -0
  81. package/dist/core/repoos.d.ts +59 -0
  82. package/dist/core/repoos.js +221 -0
  83. package/dist/core/runtime.d.ts +35 -0
  84. package/dist/core/runtime.js +167 -0
  85. package/dist/core/skills-registry.d.ts +39 -0
  86. package/dist/core/skills-registry.js +148 -0
  87. package/dist/core/skills-registry.test.d.ts +1 -0
  88. package/dist/core/skills-registry.test.js +52 -0
  89. package/dist/core/sysmem.d.ts +7 -0
  90. package/dist/core/sysmem.js +55 -0
  91. package/dist/core/tailscale.d.ts +2 -0
  92. package/dist/core/tailscale.js +19 -0
  93. package/dist/core/task.d.ts +53 -0
  94. package/dist/core/task.js +310 -0
  95. package/dist/core/toml-line.d.ts +20 -0
  96. package/dist/core/toml-line.js +52 -0
  97. package/dist/core/toml-validate.d.ts +44 -0
  98. package/dist/core/toml-validate.js +335 -0
  99. package/dist/core/tunnel-assistant.d.ts +30 -0
  100. package/dist/core/tunnel-assistant.js +65 -0
  101. package/dist/core/tunnel-registry.d.ts +96 -0
  102. package/dist/core/tunnel-registry.js +267 -0
  103. package/dist/core/tunnel-registry.test.d.ts +1 -0
  104. package/dist/core/tunnel-registry.test.js +309 -0
  105. package/dist/core/tunnel.d.ts +103 -0
  106. package/dist/core/tunnel.js +320 -0
  107. package/dist/core/types.d.ts +811 -0
  108. package/dist/core/types.js +27 -0
  109. package/dist/core/worktree-gc.d.ts +57 -0
  110. package/dist/core/worktree-gc.js +194 -0
  111. package/dist/server/__tests__/integration-job.test.d.ts +1 -0
  112. package/dist/server/__tests__/integration-job.test.js +129 -0
  113. package/dist/server/agents.d.ts +1020 -0
  114. package/dist/server/agents.js +4070 -0
  115. package/dist/server/attachments.d.ts +51 -0
  116. package/dist/server/attachments.js +130 -0
  117. package/dist/server/auto-engineering.d.ts +45 -0
  118. package/dist/server/auto-engineering.js +275 -0
  119. package/dist/server/branchless-release.d.ts +22 -0
  120. package/dist/server/branchless-release.js +67 -0
  121. package/dist/server/built-in-agents.d.ts +305 -0
  122. package/dist/server/built-in-agents.js +1838 -0
  123. package/dist/server/cto-monitor.d.ts +35 -0
  124. package/dist/server/cto-monitor.js +281 -0
  125. package/dist/server/cto.d.ts +125 -0
  126. package/dist/server/cto.js +590 -0
  127. package/dist/server/deployments.d.ts +119 -0
  128. package/dist/server/deployments.js +325 -0
  129. package/dist/server/diff-snapshot.d.ts +20 -0
  130. package/dist/server/diff-snapshot.js +73 -0
  131. package/dist/server/done.d.ts +160 -0
  132. package/dist/server/done.js +488 -0
  133. package/dist/server/freeform.d.ts +55 -0
  134. package/dist/server/freeform.js +179 -0
  135. package/dist/server/handoff.d.ts +99 -0
  136. package/dist/server/handoff.js +575 -0
  137. package/dist/server/hetzner.d.ts +45 -0
  138. package/dist/server/hetzner.js +117 -0
  139. package/dist/server/icons.d.ts +8 -0
  140. package/dist/server/icons.js +195 -0
  141. package/dist/server/integration-job.d.ts +75 -0
  142. package/dist/server/integration-job.js +144 -0
  143. package/dist/server/integration-orchestrator.d.ts +211 -0
  144. package/dist/server/integration-orchestrator.js +1299 -0
  145. package/dist/server/integration-status.d.ts +48 -0
  146. package/dist/server/integration-status.js +71 -0
  147. package/dist/server/live-index.d.ts +295 -0
  148. package/dist/server/live-index.js +452 -0
  149. package/dist/server/model-test.d.ts +20 -0
  150. package/dist/server/model-test.js +100 -0
  151. package/dist/server/ntfy.d.ts +57 -0
  152. package/dist/server/ntfy.js +112 -0
  153. package/dist/server/pm-attachments.d.ts +35 -0
  154. package/dist/server/pm-attachments.js +181 -0
  155. package/dist/server/pm-runs.d.ts +58 -0
  156. package/dist/server/pm-runs.js +80 -0
  157. package/dist/server/preview.d.ts +174 -0
  158. package/dist/server/preview.js +641 -0
  159. package/dist/server/release.d.ts +88 -0
  160. package/dist/server/release.js +449 -0
  161. package/dist/server/reload.d.ts +194 -0
  162. package/dist/server/reload.js +586 -0
  163. package/dist/server/remote-validation.d.ts +132 -0
  164. package/dist/server/remote-validation.js +478 -0
  165. package/dist/server/repo-lock.d.ts +36 -0
  166. package/dist/server/repo-lock.js +141 -0
  167. package/dist/server/review-guard.d.ts +14 -0
  168. package/dist/server/review-guard.js +159 -0
  169. package/dist/server/review.d.ts +243 -0
  170. package/dist/server/review.js +1211 -0
  171. package/dist/server/routes/agents.d.ts +6 -0
  172. package/dist/server/routes/agents.js +28 -0
  173. package/dist/server/routes/auth.d.ts +60 -0
  174. package/dist/server/routes/auth.js +755 -0
  175. package/dist/server/routes/config.d.ts +20 -0
  176. package/dist/server/routes/config.js +347 -0
  177. package/dist/server/routes/debugger.d.ts +33 -0
  178. package/dist/server/routes/debugger.js +360 -0
  179. package/dist/server/routes/deployments.d.ts +3 -0
  180. package/dist/server/routes/deployments.js +16 -0
  181. package/dist/server/routes/docs.d.ts +8 -0
  182. package/dist/server/routes/docs.js +135 -0
  183. package/dist/server/routes/helpers.d.ts +21 -0
  184. package/dist/server/routes/helpers.js +171 -0
  185. package/dist/server/routes/index.d.ts +19 -0
  186. package/dist/server/routes/index.js +18 -0
  187. package/dist/server/routes/info.d.ts +17 -0
  188. package/dist/server/routes/info.js +177 -0
  189. package/dist/server/routes/inputs.d.ts +7 -0
  190. package/dist/server/routes/inputs.js +125 -0
  191. package/dist/server/routes/model-providers.d.ts +27 -0
  192. package/dist/server/routes/model-providers.js +94 -0
  193. package/dist/server/routes/models.d.ts +3 -0
  194. package/dist/server/routes/models.js +36 -0
  195. package/dist/server/routes/notify.d.ts +2 -0
  196. package/dist/server/routes/notify.js +17 -0
  197. package/dist/server/routes/playground.d.ts +29 -0
  198. package/dist/server/routes/playground.js +81 -0
  199. package/dist/server/routes/release.d.ts +20 -0
  200. package/dist/server/routes/release.js +86 -0
  201. package/dist/server/routes/router.d.ts +12 -0
  202. package/dist/server/routes/router.js +32 -0
  203. package/dist/server/routes/skill-registry.d.ts +5 -0
  204. package/dist/server/routes/skill-registry.js +51 -0
  205. package/dist/server/routes/tasks.d.ts +58 -0
  206. package/dist/server/routes/tasks.js +1442 -0
  207. package/dist/server/routes/transcribe.d.ts +2 -0
  208. package/dist/server/routes/transcribe.js +124 -0
  209. package/dist/server/routes/types.d.ts +68 -0
  210. package/dist/server/routes/types.js +1 -0
  211. package/dist/server/routes/ui.d.ts +5 -0
  212. package/dist/server/routes/ui.js +81 -0
  213. package/dist/server/routes/utils.d.ts +3 -0
  214. package/dist/server/routes/utils.js +23 -0
  215. package/dist/server/serve-reaper.d.ts +135 -0
  216. package/dist/server/serve-reaper.js +491 -0
  217. package/dist/server/server.d.ts +49 -0
  218. package/dist/server/server.js +2171 -0
  219. package/dist/server/supervisor.d.ts +89 -0
  220. package/dist/server/supervisor.js +231 -0
  221. package/dist/server/system.d.ts +198 -0
  222. package/dist/server/system.js +480 -0
  223. package/dist/server/task-check.d.ts +45 -0
  224. package/dist/server/task-check.js +71 -0
  225. package/dist/server/task-transitions.d.ts +51 -0
  226. package/dist/server/task-transitions.js +78 -0
  227. package/dist/server/task-watchdog.d.ts +158 -0
  228. package/dist/server/task-watchdog.js +681 -0
  229. package/dist/server/test-run.d.ts +28 -0
  230. package/dist/server/test-run.js +81 -0
  231. package/dist/server/watcher.d.ts +21 -0
  232. package/dist/server/watcher.js +194 -0
  233. package/dist/server/write.d.ts +94 -0
  234. package/dist/server/write.js +345 -0
  235. package/dist/ui/assets/AgentsView-CF4wRvHh.css +1 -0
  236. package/dist/ui/assets/AgentsView-D-myL-kA.js +1 -0
  237. package/dist/ui/assets/ContextView-D3TC-RSp.css +1 -0
  238. package/dist/ui/assets/ContextView-DsOqAdyE.js +4 -0
  239. package/dist/ui/assets/DashboardView-BOhsIJqO.js +1 -0
  240. package/dist/ui/assets/DashboardView-Ck9o0RP2.css +1 -0
  241. package/dist/ui/assets/DeploymentsView--iIUVfEH.css +1 -0
  242. package/dist/ui/assets/DeploymentsView-DXu_FYR2.js +1 -0
  243. package/dist/ui/assets/InputsView-24HVbVPk.js +1 -0
  244. package/dist/ui/assets/InputsView-BLb7GHtx.css +1 -0
  245. package/dist/ui/assets/LoginView-6QlGg6cx.css +1 -0
  246. package/dist/ui/assets/LoginView-BqupI0Lt.js +1 -0
  247. package/dist/ui/assets/ReleasesView-BEG1A0YH.css +1 -0
  248. package/dist/ui/assets/ReleasesView-CAgMuxpe.js +3 -0
  249. package/dist/ui/assets/SettingsView-CA-NYSMK.css +1 -0
  250. package/dist/ui/assets/SettingsView-O3iZSnjg.js +3 -0
  251. package/dist/ui/assets/WorkView-D8Tl6qwy.js +1 -0
  252. package/dist/ui/assets/WorkView-DMYL2s3W.css +1 -0
  253. package/dist/ui/assets/abnfDiagram-VCTEODGH-J5lkSnEE.js +1 -0
  254. package/dist/ui/assets/arc-BHZnmhhM.js +1 -0
  255. package/dist/ui/assets/architecture-7GRP2DOG-pLdFt-xS.js +1 -0
  256. package/dist/ui/assets/architectureDiagram-5GKGNRK7-C3k89uKX.js +36 -0
  257. package/dist/ui/assets/array-BifhSqXX.js +1 -0
  258. package/dist/ui/assets/blockDiagram-I7D4REHJ-AWNoBzop.js +129 -0
  259. package/dist/ui/assets/button-lbikqSph.js +1 -0
  260. package/dist/ui/assets/c4Diagram-7LVT6UL2-DKG1D5gd.js +38 -0
  261. package/dist/ui/assets/channel-gA4qBv3A.js +1 -0
  262. package/dist/ui/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  263. package/dist/ui/assets/chunk-4HAMMTFA-D1YR8lF_.js +62 -0
  264. package/dist/ui/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  265. package/dist/ui/assets/chunk-75Z2AOVW-5GuBxfsL.js +2 -0
  266. package/dist/ui/assets/chunk-DU6HZSFF-DfdNNqwa.js +127 -0
  267. package/dist/ui/assets/chunk-F27PBJKO-BPZzinQ4.js +1 -0
  268. package/dist/ui/assets/chunk-FOHPRMQF-l2z4K2jD.js +161 -0
  269. package/dist/ui/assets/chunk-GMAD6QVW-DGWvSKj5.js +72 -0
  270. package/dist/ui/assets/chunk-GVQU2GXP-D6Aw75wJ.js +1 -0
  271. package/dist/ui/assets/chunk-IMKFNOWR-B8mMBKCW.js +231 -0
  272. package/dist/ui/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  273. package/dist/ui/assets/chunk-L3NEJ4N5-D5OJuXYE.js +1 -0
  274. package/dist/ui/assets/chunk-OSK3NFVY-B7r9w2UW.js +10 -0
  275. package/dist/ui/assets/chunk-P2QGCYS3-C74X4AQX.js +1 -0
  276. package/dist/ui/assets/chunk-POPQ4Y6H-C5_u1gUS.js +1 -0
  277. package/dist/ui/assets/chunk-PWAF6VOD-DfoTLtxn.js +1 -0
  278. package/dist/ui/assets/chunk-SHT3W25Y-D40m2eqz.js +168 -0
  279. package/dist/ui/assets/chunk-SVP7TREG-euxi0Kap.js +88 -0
  280. package/dist/ui/assets/chunk-TICWLB2K-fkdxngzN.js +206 -0
  281. package/dist/ui/assets/chunk-XXDRQBXY-DFBUG-OT.js +1 -0
  282. package/dist/ui/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  283. package/dist/ui/assets/classDiagram-ZZMXUADV-BzW8bq2P.js +1 -0
  284. package/dist/ui/assets/classDiagram-v2-VYDZK3BY-BzW8bq2P.js +1 -0
  285. package/dist/ui/assets/cose-bilkent-JH36ORCC-BTcgMon1.js +1 -0
  286. package/dist/ui/assets/cynefin-OW5HDTMX-B5m_COsS.js +1 -0
  287. package/dist/ui/assets/cynefinDiagram-5FMLGOSQ-C-AG6CGe.js +62 -0
  288. package/dist/ui/assets/cytoscape.esm-FBntH-9t.js +321 -0
  289. package/dist/ui/assets/dagre-GXQ25YYZ-DDfDnp8L.js +4 -0
  290. package/dist/ui/assets/dagre-PrKaheQc.js +1 -0
  291. package/dist/ui/assets/defaultLocale-BFoDCU3G.js +1 -0
  292. package/dist/ui/assets/diagram-S7CK7UJ4-DjQZAlEY.js +30 -0
  293. package/dist/ui/assets/diagram-UQ7AKVKN-DAZ9yp1B.js +41 -0
  294. package/dist/ui/assets/diagram-VSXAHHWV-BWepUKJD.js +3 -0
  295. package/dist/ui/assets/diagram-VX7I27RA-EcV1J81b.js +24 -0
  296. package/dist/ui/assets/diagram-Z3DM3KII-Dbz7XU_K.js +24 -0
  297. package/dist/ui/assets/dist-DTg6UBE_.js +1 -0
  298. package/dist/ui/assets/ebnfDiagram-PWID7BFC-BUyQw8Mm.js +1 -0
  299. package/dist/ui/assets/erDiagram-RLTQ6QDP-WVf8ukKt.js +99 -0
  300. package/dist/ui/assets/eventmodeling-NTZA5JFV-DHqyLOAn.js +1 -0
  301. package/dist/ui/assets/flowDiagram-HODETNUW-CYk_ze5K.js +1 -0
  302. package/dist/ui/assets/ganttDiagram-EL5Y4UJY-rB4MZuB-.js +292 -0
  303. package/dist/ui/assets/gitGraph-4MIJSDKK-BOTWM8dY.js +1 -0
  304. package/dist/ui/assets/gitGraphDiagram-WWUBYQGX-eYscuhtP.js +106 -0
  305. package/dist/ui/assets/graphlib-DS17s2tU.js +1 -0
  306. package/dist/ui/assets/index-BACBfnga.css +1 -0
  307. package/dist/ui/assets/index-BOQ-ust6.js +26 -0
  308. package/dist/ui/assets/info-A6RAGUB7-_67wOORe.js +1 -0
  309. package/dist/ui/assets/infoDiagram-27XIBGKW-XVXbddTA.js +2 -0
  310. package/dist/ui/assets/init-C-OQMol4.js +1 -0
  311. package/dist/ui/assets/ishikawaDiagram-5VMMS53U-ClLNiEru.js +70 -0
  312. package/dist/ui/assets/journeyDiagram-3NMN7TZE-NRawjR6i.js +139 -0
  313. package/dist/ui/assets/kanban-definition-UXKFOSKX-BgSzBfIx.js +89 -0
  314. package/dist/ui/assets/katex-DolUETbr.js +257 -0
  315. package/dist/ui/assets/line-KAyfuul4.js +1 -0
  316. package/dist/ui/assets/linear-cCCPOpu7.js +1 -0
  317. package/dist/ui/assets/mermaid-parser.core-CgXZk1iN.js +7 -0
  318. package/dist/ui/assets/mermaid.core-BUUkChHW.js +44 -0
  319. package/dist/ui/assets/mindmap-definition-YA3MSWOX-Cpn7vW4r.js +96 -0
  320. package/dist/ui/assets/ordinal-BDEzSJ7C.js +1 -0
  321. package/dist/ui/assets/packet-AYTQ26CC-0lZwM-d6.js +1 -0
  322. package/dist/ui/assets/path-COt_16Va.js +1 -0
  323. package/dist/ui/assets/pegDiagram-XKGWAZYB-impy0inn.js +1 -0
  324. package/dist/ui/assets/pie-WAS4IAKB-CqfdGHYg.js +1 -0
  325. package/dist/ui/assets/pieDiagram-E7YTZNPT-CxjL4I1h.js +39 -0
  326. package/dist/ui/assets/quadrantDiagram-AXDQQJYC-Cjd1QMIe.js +7 -0
  327. package/dist/ui/assets/radar-RG4KPBEZ-CRkQIwiv.js +1 -0
  328. package/dist/ui/assets/railroad-74A4TZTK-i67XSWTB.js +1 -0
  329. package/dist/ui/assets/railroad-abnf-HS5TGJTU-Cv9m5aS3.js +1 -0
  330. package/dist/ui/assets/railroad-ebnf-LZEXJU2U-C5ZIn-Jh.js +1 -0
  331. package/dist/ui/assets/railroad-peg-WCYAUIDC-CGra9Oq-.js +1 -0
  332. package/dist/ui/assets/railroadDiagram-O6MQD6OU-_pK0qyaY.js +1 -0
  333. package/dist/ui/assets/releases-B0WNV-SY.js +1 -0
  334. package/dist/ui/assets/repoos-cto-square.webp +0 -0
  335. package/dist/ui/assets/repoos-helpful-pm-square.webp +0 -0
  336. package/dist/ui/assets/repoos-orchestrator-square.webp +0 -0
  337. package/dist/ui/assets/repoos-performance-agent-square.webp +0 -0
  338. package/dist/ui/assets/repoos-ross-from-friends-square.webp +0 -0
  339. package/dist/ui/assets/repoos-tech-debt-agent-square.webp +0 -0
  340. package/dist/ui/assets/requirementDiagram-BXWQKSXE-CRrFX-yw.js +84 -0
  341. package/dist/ui/assets/rough.esm-By172zw-.js +1 -0
  342. package/dist/ui/assets/sankeyDiagram-P5KCCOFB-X_xFRj9E.js +40 -0
  343. package/dist/ui/assets/sequenceDiagram-WJ2MYXX4-Byb49lKf.js +162 -0
  344. package/dist/ui/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  345. package/dist/ui/assets/src-BH-TyZbA.js +1 -0
  346. package/dist/ui/assets/stateDiagram-D77RDMKH-CzaPrqYF.js +1 -0
  347. package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-BCXckz7K.js +1 -0
  348. package/dist/ui/assets/swimlanes-42K2YHIH-Cx_1lnqr.js +1 -0
  349. package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-54qsKi6A.js +8 -0
  350. package/dist/ui/assets/timeline-definition-24CTP7MA-B1IbZPQ-.js +120 -0
  351. package/dist/ui/assets/treeView-Q6P3EWNA-DFWhVE3d.js +1 -0
  352. package/dist/ui/assets/treemap-WGGIJYW6-BmbYPThn.js +1 -0
  353. package/dist/ui/assets/vendor-ui-DPm7zLxi.js +3 -0
  354. package/dist/ui/assets/vendor-vue-CobgyEJp.js +1 -0
  355. package/dist/ui/assets/vennDiagram-4TSXK5OY-Ae2AtRpt.js +34 -0
  356. package/dist/ui/assets/wardley-WFR3VGLG-BtD4X4tL.js +1 -0
  357. package/dist/ui/assets/wardleyDiagram-VM6X3IG4-B3YN2fTd.js +78 -0
  358. package/dist/ui/assets/xychartDiagram-S5SC5T6Z-CIzJfMKA.js +7 -0
  359. package/dist/ui/favicon.svg +11 -0
  360. package/dist/ui/index.html +49 -0
  361. package/dist/ui/sw.js +48 -0
  362. package/package.json +91 -0
@@ -0,0 +1,28 @@
1
+ import type { RepoOSConfig } from "../core/types.js";
2
+ export interface TestRunState {
3
+ running: boolean;
4
+ startedAt: string | null;
5
+ finishedAt: string | null;
6
+ /** Process exit code, or null while running / if the process never exited cleanly. */
7
+ code: number | null;
8
+ /** Full output so far (stdout+stderr interleaved in arrival order), capped. */
9
+ output: string;
10
+ }
11
+ export declare class TestRunManager {
12
+ private state;
13
+ private proc;
14
+ getState(): TestRunState;
15
+ /**
16
+ * Starts `bun run test` in `config.root`. Rejects if a run is already in
17
+ * progress — one at a time, so output/timing never interleaves between
18
+ * two runs. `onChunk` fires for every stdout/stderr chunk as it arrives;
19
+ * `onDone` fires once, with the exit code (null if the process itself
20
+ * failed to spawn or was killed by a signal).
21
+ */
22
+ start(config: RepoOSConfig, onChunk: (chunk: string) => void, onDone: (code: number | null) => void): {
23
+ ok: true;
24
+ } | {
25
+ ok: false;
26
+ reason: string;
27
+ };
28
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Runs the full `bun run test` suite as an ephemeral background process and
3
+ * streams its output live over SSE (Control page's "Run full test suite"
4
+ * button). Deliberately minimal compared to AgentRunner: no durable
5
+ * registry, no reload-adoption, no per-task log files — this is a one-off
6
+ * admin action, not a resumable session, so it doesn't need to survive a
7
+ * server restart. A run in progress when the server restarts is simply
8
+ * gone; the human just clicks the button again.
9
+ */
10
+ import { spawn } from "node:child_process";
11
+ /** Cap on retained output so a very long/noisy run can't grow this without
12
+ * bound in memory — old text is dropped from the front, oldest first. */
13
+ const MAX_BUFFERED_CHARS = 2_000_000;
14
+ export class TestRunManager {
15
+ state = {
16
+ running: false,
17
+ startedAt: null,
18
+ finishedAt: null,
19
+ code: null,
20
+ output: "",
21
+ };
22
+ proc = null;
23
+ getState() {
24
+ return this.state;
25
+ }
26
+ /**
27
+ * Starts `bun run test` in `config.root`. Rejects if a run is already in
28
+ * progress — one at a time, so output/timing never interleaves between
29
+ * two runs. `onChunk` fires for every stdout/stderr chunk as it arrives;
30
+ * `onDone` fires once, with the exit code (null if the process itself
31
+ * failed to spawn or was killed by a signal).
32
+ */
33
+ start(config, onChunk, onDone) {
34
+ if (this.state.running) {
35
+ return { ok: false, reason: "a test run is already in progress" };
36
+ }
37
+ this.state = {
38
+ running: true,
39
+ startedAt: new Date().toISOString(),
40
+ finishedAt: null,
41
+ code: null,
42
+ output: "",
43
+ };
44
+ const proc = spawn("bun", ["run", "test"], {
45
+ cwd: config.root,
46
+ // NO_COLOR/CI suppress vitest's ANSI color codes and interactive
47
+ // cursor movement, which the plain <pre> log has no use for and which
48
+ // would otherwise show up as literal escape-sequence garbage.
49
+ env: { ...process.env, NO_COLOR: "1", CI: "1" },
50
+ });
51
+ this.proc = proc;
52
+ const handleChunk = (buf) => {
53
+ const text = buf.toString("utf8");
54
+ this.state.output += text;
55
+ if (this.state.output.length > MAX_BUFFERED_CHARS) {
56
+ this.state.output = this.state.output.slice(this.state.output.length - MAX_BUFFERED_CHARS);
57
+ }
58
+ onChunk(text);
59
+ };
60
+ proc.stdout?.on("data", handleChunk);
61
+ proc.stderr?.on("data", handleChunk);
62
+ proc.on("close", (code) => {
63
+ this.state.running = false;
64
+ this.state.finishedAt = new Date().toISOString();
65
+ this.state.code = code;
66
+ this.proc = null;
67
+ onDone(code);
68
+ });
69
+ proc.on("error", (err) => {
70
+ const text = `\n[could not start test run: ${err.message}]\n`;
71
+ this.state.output += text;
72
+ onChunk(text);
73
+ this.state.running = false;
74
+ this.state.finishedAt = new Date().toISOString();
75
+ this.state.code = null;
76
+ this.proc = null;
77
+ onDone(null);
78
+ });
79
+ return { ok: true };
80
+ }
81
+ }
@@ -0,0 +1,21 @@
1
+ import type { RepoOSConfig } from "../core/types.js";
2
+ import type { LiveIndex } from "./live-index.js";
3
+ export declare class WorkWatcher {
4
+ private config;
5
+ private index;
6
+ private watchers;
7
+ private timers;
8
+ private watchedDirs;
9
+ private pathToMtime;
10
+ private pollTimer;
11
+ constructor(config: RepoOSConfig, index: LiveIndex);
12
+ start(): void;
13
+ stop(): void;
14
+ private tryRecursive;
15
+ private watchTree;
16
+ private schedule;
17
+ private updateMtime;
18
+ private reconcile;
19
+ private scanDirectory;
20
+ private isTaskFile;
21
+ }
@@ -0,0 +1,194 @@
1
+ /**
2
+ * File watcher over the work directory. Uses Node/Bun native fs.watch — no
3
+ * dependency. Editors and agents often emit several events for a single save
4
+ * (write temp file, rename, chmod), so we debounce per-path before telling the
5
+ * LiveIndex anything.
6
+ *
7
+ * fs.watch recursion support varies by platform (works on macOS and Windows,
8
+ * historically not on Linux). We try recursive first and fall back to watching
9
+ * each subdirectory individually, re-scanning when directories appear.
10
+ *
11
+ * fs.watch can drop events under rapid filesystem activity. To ensure the index
12
+ * never silently diverges from disk, we layer a low-frequency poll (every 5s) as
13
+ * a platform-proof fallback, comparing mtimes to catch missed content changes,
14
+ * new files, and deletions. fs.watch remains the primary, low-latency path.
15
+ */
16
+ import { watch, existsSync, readdirSync, statSync } from "node:fs";
17
+ import { join, extname } from "node:path";
18
+ const DEBOUNCE_MS = 60;
19
+ const DEFAULT_POLL_MS = 5000;
20
+ export class WorkWatcher {
21
+ config;
22
+ index;
23
+ watchers = [];
24
+ timers = new Map();
25
+ watchedDirs = new Set();
26
+ pathToMtime = new Map();
27
+ pollTimer = null;
28
+ constructor(config, index) {
29
+ this.config = config;
30
+ this.index = index;
31
+ }
32
+ start() {
33
+ const workPath = join(this.config.root, this.config.workDir);
34
+ if (!existsSync(workPath))
35
+ return;
36
+ if (!this.tryRecursive(workPath)) {
37
+ this.watchTree(workPath);
38
+ }
39
+ this.pollTimer = setInterval(() => this.reconcile(), DEFAULT_POLL_MS);
40
+ this.pollTimer.unref?.();
41
+ }
42
+ stop() {
43
+ for (const w of this.watchers) {
44
+ try {
45
+ w.close();
46
+ }
47
+ catch {
48
+ /* ignore */
49
+ }
50
+ }
51
+ this.watchers = [];
52
+ for (const t of this.timers.values())
53
+ clearTimeout(t);
54
+ this.timers.clear();
55
+ this.watchedDirs.clear();
56
+ if (this.pollTimer) {
57
+ clearInterval(this.pollTimer);
58
+ this.pollTimer = null;
59
+ }
60
+ this.pathToMtime.clear();
61
+ }
62
+ tryRecursive(dir) {
63
+ try {
64
+ const w = watch(dir, { recursive: true }, (_event, filename) => {
65
+ if (!filename)
66
+ return;
67
+ this.schedule(join(dir, filename.toString()));
68
+ });
69
+ this.watchers.push(w);
70
+ return true;
71
+ }
72
+ catch {
73
+ return false; // ENOSYS / EINVAL on platforms without recursive support
74
+ }
75
+ }
76
+ watchTree(dir) {
77
+ if (this.watchedDirs.has(dir))
78
+ return;
79
+ let w;
80
+ try {
81
+ w = watch(dir, (_event, filename) => {
82
+ if (!filename)
83
+ return;
84
+ const full = join(dir, filename.toString());
85
+ // a new subdirectory may need its own watcher
86
+ try {
87
+ if (existsSync(full) && statSync(full).isDirectory()) {
88
+ this.watchTree(full);
89
+ return;
90
+ }
91
+ }
92
+ catch {
93
+ /* fall through to schedule */
94
+ }
95
+ this.schedule(full);
96
+ });
97
+ }
98
+ catch {
99
+ return;
100
+ }
101
+ this.watchers.push(w);
102
+ this.watchedDirs.add(dir);
103
+ // recurse into existing subdirs
104
+ try {
105
+ for (const entry of readdirSync(dir)) {
106
+ if (entry.startsWith("."))
107
+ continue;
108
+ const sub = join(dir, entry);
109
+ if (statSync(sub).isDirectory())
110
+ this.watchTree(sub);
111
+ }
112
+ }
113
+ catch {
114
+ /* ignore */
115
+ }
116
+ }
117
+ schedule(absPath) {
118
+ const existing = this.timers.get(absPath);
119
+ if (existing)
120
+ clearTimeout(existing);
121
+ this.timers.set(absPath, setTimeout(() => {
122
+ this.timers.delete(absPath);
123
+ this.updateMtime(absPath);
124
+ this.index.applyFileChange(absPath);
125
+ }, DEBOUNCE_MS));
126
+ }
127
+ updateMtime(absPath) {
128
+ try {
129
+ if (existsSync(absPath)) {
130
+ const stat = statSync(absPath);
131
+ this.pathToMtime.set(absPath, stat.mtimeMs);
132
+ }
133
+ else {
134
+ this.pathToMtime.delete(absPath);
135
+ }
136
+ }
137
+ catch {
138
+ /* ignore stat errors */
139
+ }
140
+ }
141
+ reconcile() {
142
+ const workPath = join(this.config.root, this.config.workDir);
143
+ if (!existsSync(workPath))
144
+ return;
145
+ const seenPaths = new Set();
146
+ this.scanDirectory(workPath, seenPaths);
147
+ // Check for deletions: tracked files that no longer exist
148
+ for (const [path] of this.pathToMtime) {
149
+ if (!seenPaths.has(path) && !existsSync(path)) {
150
+ this.pathToMtime.delete(path);
151
+ this.index.applyFileDelete(path);
152
+ }
153
+ }
154
+ }
155
+ scanDirectory(dir, seenPaths) {
156
+ try {
157
+ for (const entry of readdirSync(dir)) {
158
+ if (entry.startsWith("."))
159
+ continue;
160
+ const fullPath = join(dir, entry);
161
+ try {
162
+ const stat = statSync(fullPath);
163
+ if (stat.isDirectory()) {
164
+ this.scanDirectory(fullPath, seenPaths);
165
+ }
166
+ else if (this.isTaskFile(fullPath)) {
167
+ seenPaths.add(fullPath);
168
+ const currentMtime = stat.mtimeMs;
169
+ const cachedMtime = this.pathToMtime.get(fullPath);
170
+ if (cachedMtime === undefined) {
171
+ // New file not yet tracked
172
+ this.pathToMtime.set(fullPath, currentMtime);
173
+ this.index.applyFileChange(fullPath);
174
+ }
175
+ else if (cachedMtime !== currentMtime) {
176
+ // Content changed (mtime differs)
177
+ this.pathToMtime.set(fullPath, currentMtime);
178
+ this.index.applyFileChange(fullPath);
179
+ }
180
+ }
181
+ }
182
+ catch {
183
+ /* ignore stat errors on individual entries */
184
+ }
185
+ }
186
+ }
187
+ catch {
188
+ /* ignore directory read errors */
189
+ }
190
+ }
191
+ isTaskFile(absPath) {
192
+ return this.config.taskExtensions.includes(extname(absPath));
193
+ }
194
+ }
@@ -0,0 +1,94 @@
1
+ import type { RepoOSConfig, Task, Status } from "../core/types.js";
2
+ import { type ScreenshotMeta } from "./attachments.js";
3
+ export interface TaskPatch {
4
+ status?: Status;
5
+ title?: string;
6
+ priority?: string;
7
+ area?: string;
8
+ assignedTo?: string;
9
+ branch?: string;
10
+ type?: string;
11
+ body?: string;
12
+ /** Clear (false) or set (true) the waiting-on-human flag. */
13
+ needsInput?: boolean;
14
+ /** Machine-readable reason `needsInput` was set, or null to clear it. Only meaningful alongside `needsInput: true`. */
15
+ needsInputReason?: string | null;
16
+ /** Clear (false) or set (true) the branch-drifted flag. */
17
+ needsMerge?: boolean;
18
+ /** Per-task agent name override, or null to clear. */
19
+ agentOverride?: string | null;
20
+ /** Per-task CLI override, or null to clear. */
21
+ cliOverride?: string | null;
22
+ /** Per-task model override, or null to clear. */
23
+ modelOverride?: string | null;
24
+ /** Per-task PM agent name override, or null to clear. */
25
+ pmAgentOverride?: string | null;
26
+ /** Per-task PM CLI override, or null to clear. */
27
+ pmCliOverride?: string | null;
28
+ /** Per-task PM model override, or null to clear. */
29
+ pmModelOverride?: string | null;
30
+ /** Per-task reviewer agent name override, or null to clear. */
31
+ reviewAgentOverride?: string | null;
32
+ /** Per-task reviewer CLI override, or null to clear. */
33
+ reviewCliOverride?: string | null;
34
+ /** Per-task reviewer model override, or null to clear. */
35
+ reviewModelOverride?: string | null;
36
+ /**
37
+ * Append one uploaded screenshot to the task's `## Screenshots` section
38
+ * (created before `## Activity` when absent). This is the only mutation path
39
+ * for that section; a body replacement in this or a later patch never drops
40
+ * it (see {@link PROTECTED_SECTIONS}).
41
+ */
42
+ addScreenshot?: ScreenshotMeta;
43
+ /**
44
+ * Append several screenshots in one patch (0381): the PM chat's pending
45
+ * images land on a freshly created task as a batch, so the section is
46
+ * written once with a single activity entry instead of one rewrite per
47
+ * image. Same section rules as `addScreenshot`.
48
+ */
49
+ addScreenshots?: ScreenshotMeta[];
50
+ /** Set hotfix mode (true to enable, false to disable). */
51
+ hotfix?: boolean;
52
+ /** Hotfix merge target. */
53
+ hotfixTarget?: "branch" | "main";
54
+ /**
55
+ * Append a short, free-form note to the task's activity log (e.g.
56
+ * instructions from a PM/reviewer back to the developer). The note is
57
+ * recorded as its own activity entry — it never rewrites the task body and
58
+ * can be combined with a status transition in the same patch. An empty or
59
+ * whitespace-only note is ignored.
60
+ */
61
+ note?: string | null;
62
+ }
63
+ export interface PatchTaskOptions {
64
+ /**
65
+ * Called when a patch actually changes a task's status, with the task being
66
+ * written and the previous/new statuses. Lets the server reap preview
67
+ * servers when a task leaves active/review (see preview.ts).
68
+ */
69
+ onStatusChange?: (task: Task, prev: Status, next: Status) => void;
70
+ }
71
+ export declare class WriteError extends Error {
72
+ }
73
+ /** Thrown when a delete target resolves outside the configured work dir. */
74
+ export declare class PathGuardError extends WriteError {
75
+ }
76
+ /**
77
+ * Apply a patch to a task file safely. `absPath` is the file to edit. Returns
78
+ * the freshly re-parsed Task. Throws WriteError on bad input or missing file.
79
+ */
80
+ export declare function patchTaskFile(config: RepoOSConfig, absPath: string, patch: TaskPatch, opts?: PatchTaskOptions): Task;
81
+ /**
82
+ * Mark the successful end of the review-to-done flow in the task's existing
83
+ * append-only activity log. This is deliberately separate from TaskPatch so a
84
+ * normal status edit cannot make an unmerged task appear in release history.
85
+ */
86
+ export declare function markTaskReleased(config: RepoOSConfig, absPath: string): Task;
87
+ /**
88
+ * Remove a task file. `absPath` must resolve inside the configured work dir —
89
+ * this mirrors the `safeRepoFile` guard and prevents deleting arbitrary repo
90
+ * files through the API. Throws PathGuardError when the target is outside the
91
+ * work dir, and WriteError when the file is already gone (callers treat the
92
+ * latter as an idempotent 404).
93
+ */
94
+ export declare function deleteTaskFile(config: RepoOSConfig, absPath: string): string;