@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.
- package/LICENSE.md +110 -0
- package/README.md +272 -0
- package/dist/.build-info.json +4 -0
- package/dist/.build-stamp.json +3 -0
- package/dist/cli/colors.d.ts +13 -0
- package/dist/cli/colors.js +37 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +221 -0
- package/dist/commands/check.d.ts +170 -0
- package/dist/commands/check.js +1227 -0
- package/dist/commands/docs.d.ts +2 -0
- package/dist/commands/docs.js +70 -0
- package/dist/commands/gc.d.ts +1 -0
- package/dist/commands/gc.js +57 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.js +699 -0
- package/dist/commands/screenshots.d.ts +7 -0
- package/dist/commands/screenshots.js +77 -0
- package/dist/commands/serve.d.ts +55 -0
- package/dist/commands/serve.js +204 -0
- package/dist/commands/status.d.ts +140 -0
- package/dist/commands/status.js +569 -0
- package/dist/commands/stop.d.ts +1 -0
- package/dist/commands/stop.js +59 -0
- package/dist/commands/tasks.d.ts +47 -0
- package/dist/commands/tasks.js +334 -0
- package/dist/commands/tunnel.d.ts +1 -0
- package/dist/commands/tunnel.js +1271 -0
- package/dist/commands/ui-harness.d.ts +53 -0
- package/dist/commands/ui-harness.js +62 -0
- package/dist/commands/ui-smoke.d.ts +6 -0
- package/dist/commands/ui-smoke.js +220 -0
- package/dist/commands/upgrade.d.ts +15 -0
- package/dist/commands/upgrade.js +188 -0
- package/dist/core/auth-store.d.ts +81 -0
- package/dist/core/auth-store.js +530 -0
- package/dist/core/auth.d.ts +75 -0
- package/dist/core/auth.js +124 -0
- package/dist/core/bootstrap.d.ts +41 -0
- package/dist/core/bootstrap.js +236 -0
- package/dist/core/build.d.ts +92 -0
- package/dist/core/build.js +249 -0
- package/dist/core/canary.d.ts +10 -0
- package/dist/core/canary.js +14 -0
- package/dist/core/check-failure-summary.d.ts +10 -0
- package/dist/core/check-failure-summary.js +34 -0
- package/dist/core/config.d.ts +160 -0
- package/dist/core/config.js +1288 -0
- package/dist/core/context-pack.d.ts +74 -0
- package/dist/core/context-pack.js +778 -0
- package/dist/core/db.d.ts +236 -0
- package/dist/core/db.js +747 -0
- package/dist/core/detect.d.ts +69 -0
- package/dist/core/detect.js +251 -0
- package/dist/core/docs.d.ts +76 -0
- package/dist/core/docs.js +225 -0
- package/dist/core/frontmatter.d.ts +29 -0
- package/dist/core/frontmatter.js +215 -0
- package/dist/core/git.d.ts +505 -0
- package/dist/core/git.js +1453 -0
- package/dist/core/indexer.d.ts +33 -0
- package/dist/core/indexer.js +282 -0
- package/dist/core/input.d.ts +66 -0
- package/dist/core/input.js +222 -0
- package/dist/core/logger.d.ts +70 -0
- package/dist/core/logger.js +138 -0
- package/dist/core/models.d.ts +45 -0
- package/dist/core/models.js +291 -0
- package/dist/core/net-probe.d.ts +4 -0
- package/dist/core/net-probe.js +20 -0
- package/dist/core/providers/deepinfra.d.ts +23 -0
- package/dist/core/providers/deepinfra.js +44 -0
- package/dist/core/providers/index.d.ts +24 -0
- package/dist/core/providers/index.js +59 -0
- package/dist/core/providers/openrouter.d.ts +28 -0
- package/dist/core/providers/openrouter.js +82 -0
- package/dist/core/providers/spend.d.ts +86 -0
- package/dist/core/providers/spend.js +286 -0
- package/dist/core/providers/types.d.ts +56 -0
- package/dist/core/providers/types.js +39 -0
- package/dist/core/repoos.d.ts +59 -0
- package/dist/core/repoos.js +221 -0
- package/dist/core/runtime.d.ts +35 -0
- package/dist/core/runtime.js +167 -0
- package/dist/core/skills-registry.d.ts +39 -0
- package/dist/core/skills-registry.js +148 -0
- package/dist/core/skills-registry.test.d.ts +1 -0
- package/dist/core/skills-registry.test.js +52 -0
- package/dist/core/sysmem.d.ts +7 -0
- package/dist/core/sysmem.js +55 -0
- package/dist/core/tailscale.d.ts +2 -0
- package/dist/core/tailscale.js +19 -0
- package/dist/core/task.d.ts +53 -0
- package/dist/core/task.js +310 -0
- package/dist/core/toml-line.d.ts +20 -0
- package/dist/core/toml-line.js +52 -0
- package/dist/core/toml-validate.d.ts +44 -0
- package/dist/core/toml-validate.js +335 -0
- package/dist/core/tunnel-assistant.d.ts +30 -0
- package/dist/core/tunnel-assistant.js +65 -0
- package/dist/core/tunnel-registry.d.ts +96 -0
- package/dist/core/tunnel-registry.js +267 -0
- package/dist/core/tunnel-registry.test.d.ts +1 -0
- package/dist/core/tunnel-registry.test.js +309 -0
- package/dist/core/tunnel.d.ts +103 -0
- package/dist/core/tunnel.js +320 -0
- package/dist/core/types.d.ts +811 -0
- package/dist/core/types.js +27 -0
- package/dist/core/worktree-gc.d.ts +57 -0
- package/dist/core/worktree-gc.js +194 -0
- package/dist/server/__tests__/integration-job.test.d.ts +1 -0
- package/dist/server/__tests__/integration-job.test.js +129 -0
- package/dist/server/agents.d.ts +1020 -0
- package/dist/server/agents.js +4070 -0
- package/dist/server/attachments.d.ts +51 -0
- package/dist/server/attachments.js +130 -0
- package/dist/server/auto-engineering.d.ts +45 -0
- package/dist/server/auto-engineering.js +275 -0
- package/dist/server/branchless-release.d.ts +22 -0
- package/dist/server/branchless-release.js +67 -0
- package/dist/server/built-in-agents.d.ts +305 -0
- package/dist/server/built-in-agents.js +1838 -0
- package/dist/server/cto-monitor.d.ts +35 -0
- package/dist/server/cto-monitor.js +281 -0
- package/dist/server/cto.d.ts +125 -0
- package/dist/server/cto.js +590 -0
- package/dist/server/deployments.d.ts +119 -0
- package/dist/server/deployments.js +325 -0
- package/dist/server/diff-snapshot.d.ts +20 -0
- package/dist/server/diff-snapshot.js +73 -0
- package/dist/server/done.d.ts +160 -0
- package/dist/server/done.js +488 -0
- package/dist/server/freeform.d.ts +55 -0
- package/dist/server/freeform.js +179 -0
- package/dist/server/handoff.d.ts +99 -0
- package/dist/server/handoff.js +575 -0
- package/dist/server/hetzner.d.ts +45 -0
- package/dist/server/hetzner.js +117 -0
- package/dist/server/icons.d.ts +8 -0
- package/dist/server/icons.js +195 -0
- package/dist/server/integration-job.d.ts +75 -0
- package/dist/server/integration-job.js +144 -0
- package/dist/server/integration-orchestrator.d.ts +211 -0
- package/dist/server/integration-orchestrator.js +1299 -0
- package/dist/server/integration-status.d.ts +48 -0
- package/dist/server/integration-status.js +71 -0
- package/dist/server/live-index.d.ts +295 -0
- package/dist/server/live-index.js +452 -0
- package/dist/server/model-test.d.ts +20 -0
- package/dist/server/model-test.js +100 -0
- package/dist/server/ntfy.d.ts +57 -0
- package/dist/server/ntfy.js +112 -0
- package/dist/server/pm-attachments.d.ts +35 -0
- package/dist/server/pm-attachments.js +181 -0
- package/dist/server/pm-runs.d.ts +58 -0
- package/dist/server/pm-runs.js +80 -0
- package/dist/server/preview.d.ts +174 -0
- package/dist/server/preview.js +641 -0
- package/dist/server/release.d.ts +88 -0
- package/dist/server/release.js +449 -0
- package/dist/server/reload.d.ts +194 -0
- package/dist/server/reload.js +586 -0
- package/dist/server/remote-validation.d.ts +132 -0
- package/dist/server/remote-validation.js +478 -0
- package/dist/server/repo-lock.d.ts +36 -0
- package/dist/server/repo-lock.js +141 -0
- package/dist/server/review-guard.d.ts +14 -0
- package/dist/server/review-guard.js +159 -0
- package/dist/server/review.d.ts +243 -0
- package/dist/server/review.js +1211 -0
- package/dist/server/routes/agents.d.ts +6 -0
- package/dist/server/routes/agents.js +28 -0
- package/dist/server/routes/auth.d.ts +60 -0
- package/dist/server/routes/auth.js +755 -0
- package/dist/server/routes/config.d.ts +20 -0
- package/dist/server/routes/config.js +347 -0
- package/dist/server/routes/debugger.d.ts +33 -0
- package/dist/server/routes/debugger.js +360 -0
- package/dist/server/routes/deployments.d.ts +3 -0
- package/dist/server/routes/deployments.js +16 -0
- package/dist/server/routes/docs.d.ts +8 -0
- package/dist/server/routes/docs.js +135 -0
- package/dist/server/routes/helpers.d.ts +21 -0
- package/dist/server/routes/helpers.js +171 -0
- package/dist/server/routes/index.d.ts +19 -0
- package/dist/server/routes/index.js +18 -0
- package/dist/server/routes/info.d.ts +17 -0
- package/dist/server/routes/info.js +177 -0
- package/dist/server/routes/inputs.d.ts +7 -0
- package/dist/server/routes/inputs.js +125 -0
- package/dist/server/routes/model-providers.d.ts +27 -0
- package/dist/server/routes/model-providers.js +94 -0
- package/dist/server/routes/models.d.ts +3 -0
- package/dist/server/routes/models.js +36 -0
- package/dist/server/routes/notify.d.ts +2 -0
- package/dist/server/routes/notify.js +17 -0
- package/dist/server/routes/playground.d.ts +29 -0
- package/dist/server/routes/playground.js +81 -0
- package/dist/server/routes/release.d.ts +20 -0
- package/dist/server/routes/release.js +86 -0
- package/dist/server/routes/router.d.ts +12 -0
- package/dist/server/routes/router.js +32 -0
- package/dist/server/routes/skill-registry.d.ts +5 -0
- package/dist/server/routes/skill-registry.js +51 -0
- package/dist/server/routes/tasks.d.ts +58 -0
- package/dist/server/routes/tasks.js +1442 -0
- package/dist/server/routes/transcribe.d.ts +2 -0
- package/dist/server/routes/transcribe.js +124 -0
- package/dist/server/routes/types.d.ts +68 -0
- package/dist/server/routes/types.js +1 -0
- package/dist/server/routes/ui.d.ts +5 -0
- package/dist/server/routes/ui.js +81 -0
- package/dist/server/routes/utils.d.ts +3 -0
- package/dist/server/routes/utils.js +23 -0
- package/dist/server/serve-reaper.d.ts +135 -0
- package/dist/server/serve-reaper.js +491 -0
- package/dist/server/server.d.ts +49 -0
- package/dist/server/server.js +2171 -0
- package/dist/server/supervisor.d.ts +89 -0
- package/dist/server/supervisor.js +231 -0
- package/dist/server/system.d.ts +198 -0
- package/dist/server/system.js +480 -0
- package/dist/server/task-check.d.ts +45 -0
- package/dist/server/task-check.js +71 -0
- package/dist/server/task-transitions.d.ts +51 -0
- package/dist/server/task-transitions.js +78 -0
- package/dist/server/task-watchdog.d.ts +158 -0
- package/dist/server/task-watchdog.js +681 -0
- package/dist/server/test-run.d.ts +28 -0
- package/dist/server/test-run.js +81 -0
- package/dist/server/watcher.d.ts +21 -0
- package/dist/server/watcher.js +194 -0
- package/dist/server/write.d.ts +94 -0
- package/dist/server/write.js +345 -0
- package/dist/ui/assets/AgentsView-CF4wRvHh.css +1 -0
- package/dist/ui/assets/AgentsView-D-myL-kA.js +1 -0
- package/dist/ui/assets/ContextView-D3TC-RSp.css +1 -0
- package/dist/ui/assets/ContextView-DsOqAdyE.js +4 -0
- package/dist/ui/assets/DashboardView-BOhsIJqO.js +1 -0
- package/dist/ui/assets/DashboardView-Ck9o0RP2.css +1 -0
- package/dist/ui/assets/DeploymentsView--iIUVfEH.css +1 -0
- package/dist/ui/assets/DeploymentsView-DXu_FYR2.js +1 -0
- package/dist/ui/assets/InputsView-24HVbVPk.js +1 -0
- package/dist/ui/assets/InputsView-BLb7GHtx.css +1 -0
- package/dist/ui/assets/LoginView-6QlGg6cx.css +1 -0
- package/dist/ui/assets/LoginView-BqupI0Lt.js +1 -0
- package/dist/ui/assets/ReleasesView-BEG1A0YH.css +1 -0
- package/dist/ui/assets/ReleasesView-CAgMuxpe.js +3 -0
- package/dist/ui/assets/SettingsView-CA-NYSMK.css +1 -0
- package/dist/ui/assets/SettingsView-O3iZSnjg.js +3 -0
- package/dist/ui/assets/WorkView-D8Tl6qwy.js +1 -0
- package/dist/ui/assets/WorkView-DMYL2s3W.css +1 -0
- package/dist/ui/assets/abnfDiagram-VCTEODGH-J5lkSnEE.js +1 -0
- package/dist/ui/assets/arc-BHZnmhhM.js +1 -0
- package/dist/ui/assets/architecture-7GRP2DOG-pLdFt-xS.js +1 -0
- package/dist/ui/assets/architectureDiagram-5GKGNRK7-C3k89uKX.js +36 -0
- package/dist/ui/assets/array-BifhSqXX.js +1 -0
- package/dist/ui/assets/blockDiagram-I7D4REHJ-AWNoBzop.js +129 -0
- package/dist/ui/assets/button-lbikqSph.js +1 -0
- package/dist/ui/assets/c4Diagram-7LVT6UL2-DKG1D5gd.js +38 -0
- package/dist/ui/assets/channel-gA4qBv3A.js +1 -0
- package/dist/ui/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dist/ui/assets/chunk-4HAMMTFA-D1YR8lF_.js +62 -0
- package/dist/ui/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/dist/ui/assets/chunk-75Z2AOVW-5GuBxfsL.js +2 -0
- package/dist/ui/assets/chunk-DU6HZSFF-DfdNNqwa.js +127 -0
- package/dist/ui/assets/chunk-F27PBJKO-BPZzinQ4.js +1 -0
- package/dist/ui/assets/chunk-FOHPRMQF-l2z4K2jD.js +161 -0
- package/dist/ui/assets/chunk-GMAD6QVW-DGWvSKj5.js +72 -0
- package/dist/ui/assets/chunk-GVQU2GXP-D6Aw75wJ.js +1 -0
- package/dist/ui/assets/chunk-IMKFNOWR-B8mMBKCW.js +231 -0
- package/dist/ui/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/dist/ui/assets/chunk-L3NEJ4N5-D5OJuXYE.js +1 -0
- package/dist/ui/assets/chunk-OSK3NFVY-B7r9w2UW.js +10 -0
- package/dist/ui/assets/chunk-P2QGCYS3-C74X4AQX.js +1 -0
- package/dist/ui/assets/chunk-POPQ4Y6H-C5_u1gUS.js +1 -0
- package/dist/ui/assets/chunk-PWAF6VOD-DfoTLtxn.js +1 -0
- package/dist/ui/assets/chunk-SHT3W25Y-D40m2eqz.js +168 -0
- package/dist/ui/assets/chunk-SVP7TREG-euxi0Kap.js +88 -0
- package/dist/ui/assets/chunk-TICWLB2K-fkdxngzN.js +206 -0
- package/dist/ui/assets/chunk-XXDRQBXY-DFBUG-OT.js +1 -0
- package/dist/ui/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/dist/ui/assets/classDiagram-ZZMXUADV-BzW8bq2P.js +1 -0
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-BzW8bq2P.js +1 -0
- package/dist/ui/assets/cose-bilkent-JH36ORCC-BTcgMon1.js +1 -0
- package/dist/ui/assets/cynefin-OW5HDTMX-B5m_COsS.js +1 -0
- package/dist/ui/assets/cynefinDiagram-5FMLGOSQ-C-AG6CGe.js +62 -0
- package/dist/ui/assets/cytoscape.esm-FBntH-9t.js +321 -0
- package/dist/ui/assets/dagre-GXQ25YYZ-DDfDnp8L.js +4 -0
- package/dist/ui/assets/dagre-PrKaheQc.js +1 -0
- package/dist/ui/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dist/ui/assets/diagram-S7CK7UJ4-DjQZAlEY.js +30 -0
- package/dist/ui/assets/diagram-UQ7AKVKN-DAZ9yp1B.js +41 -0
- package/dist/ui/assets/diagram-VSXAHHWV-BWepUKJD.js +3 -0
- package/dist/ui/assets/diagram-VX7I27RA-EcV1J81b.js +24 -0
- package/dist/ui/assets/diagram-Z3DM3KII-Dbz7XU_K.js +24 -0
- package/dist/ui/assets/dist-DTg6UBE_.js +1 -0
- package/dist/ui/assets/ebnfDiagram-PWID7BFC-BUyQw8Mm.js +1 -0
- package/dist/ui/assets/erDiagram-RLTQ6QDP-WVf8ukKt.js +99 -0
- package/dist/ui/assets/eventmodeling-NTZA5JFV-DHqyLOAn.js +1 -0
- package/dist/ui/assets/flowDiagram-HODETNUW-CYk_ze5K.js +1 -0
- package/dist/ui/assets/ganttDiagram-EL5Y4UJY-rB4MZuB-.js +292 -0
- package/dist/ui/assets/gitGraph-4MIJSDKK-BOTWM8dY.js +1 -0
- package/dist/ui/assets/gitGraphDiagram-WWUBYQGX-eYscuhtP.js +106 -0
- package/dist/ui/assets/graphlib-DS17s2tU.js +1 -0
- package/dist/ui/assets/index-BACBfnga.css +1 -0
- package/dist/ui/assets/index-BOQ-ust6.js +26 -0
- package/dist/ui/assets/info-A6RAGUB7-_67wOORe.js +1 -0
- package/dist/ui/assets/infoDiagram-27XIBGKW-XVXbddTA.js +2 -0
- package/dist/ui/assets/init-C-OQMol4.js +1 -0
- package/dist/ui/assets/ishikawaDiagram-5VMMS53U-ClLNiEru.js +70 -0
- package/dist/ui/assets/journeyDiagram-3NMN7TZE-NRawjR6i.js +139 -0
- package/dist/ui/assets/kanban-definition-UXKFOSKX-BgSzBfIx.js +89 -0
- package/dist/ui/assets/katex-DolUETbr.js +257 -0
- package/dist/ui/assets/line-KAyfuul4.js +1 -0
- package/dist/ui/assets/linear-cCCPOpu7.js +1 -0
- package/dist/ui/assets/mermaid-parser.core-CgXZk1iN.js +7 -0
- package/dist/ui/assets/mermaid.core-BUUkChHW.js +44 -0
- package/dist/ui/assets/mindmap-definition-YA3MSWOX-Cpn7vW4r.js +96 -0
- package/dist/ui/assets/ordinal-BDEzSJ7C.js +1 -0
- package/dist/ui/assets/packet-AYTQ26CC-0lZwM-d6.js +1 -0
- package/dist/ui/assets/path-COt_16Va.js +1 -0
- package/dist/ui/assets/pegDiagram-XKGWAZYB-impy0inn.js +1 -0
- package/dist/ui/assets/pie-WAS4IAKB-CqfdGHYg.js +1 -0
- package/dist/ui/assets/pieDiagram-E7YTZNPT-CxjL4I1h.js +39 -0
- package/dist/ui/assets/quadrantDiagram-AXDQQJYC-Cjd1QMIe.js +7 -0
- package/dist/ui/assets/radar-RG4KPBEZ-CRkQIwiv.js +1 -0
- package/dist/ui/assets/railroad-74A4TZTK-i67XSWTB.js +1 -0
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-Cv9m5aS3.js +1 -0
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-C5ZIn-Jh.js +1 -0
- package/dist/ui/assets/railroad-peg-WCYAUIDC-CGra9Oq-.js +1 -0
- package/dist/ui/assets/railroadDiagram-O6MQD6OU-_pK0qyaY.js +1 -0
- package/dist/ui/assets/releases-B0WNV-SY.js +1 -0
- package/dist/ui/assets/repoos-cto-square.webp +0 -0
- package/dist/ui/assets/repoos-helpful-pm-square.webp +0 -0
- package/dist/ui/assets/repoos-orchestrator-square.webp +0 -0
- package/dist/ui/assets/repoos-performance-agent-square.webp +0 -0
- package/dist/ui/assets/repoos-ross-from-friends-square.webp +0 -0
- package/dist/ui/assets/repoos-tech-debt-agent-square.webp +0 -0
- package/dist/ui/assets/requirementDiagram-BXWQKSXE-CRrFX-yw.js +84 -0
- package/dist/ui/assets/rough.esm-By172zw-.js +1 -0
- package/dist/ui/assets/sankeyDiagram-P5KCCOFB-X_xFRj9E.js +40 -0
- package/dist/ui/assets/sequenceDiagram-WJ2MYXX4-Byb49lKf.js +162 -0
- package/dist/ui/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
- package/dist/ui/assets/src-BH-TyZbA.js +1 -0
- package/dist/ui/assets/stateDiagram-D77RDMKH-CzaPrqYF.js +1 -0
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-BCXckz7K.js +1 -0
- package/dist/ui/assets/swimlanes-42K2YHIH-Cx_1lnqr.js +1 -0
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-54qsKi6A.js +8 -0
- package/dist/ui/assets/timeline-definition-24CTP7MA-B1IbZPQ-.js +120 -0
- package/dist/ui/assets/treeView-Q6P3EWNA-DFWhVE3d.js +1 -0
- package/dist/ui/assets/treemap-WGGIJYW6-BmbYPThn.js +1 -0
- package/dist/ui/assets/vendor-ui-DPm7zLxi.js +3 -0
- package/dist/ui/assets/vendor-vue-CobgyEJp.js +1 -0
- package/dist/ui/assets/vennDiagram-4TSXK5OY-Ae2AtRpt.js +34 -0
- package/dist/ui/assets/wardley-WFR3VGLG-BtD4X4tL.js +1 -0
- package/dist/ui/assets/wardleyDiagram-VM6X3IG4-B3YN2fTd.js +78 -0
- package/dist/ui/assets/xychartDiagram-S5SC5T6Z-CIzJfMKA.js +7 -0
- package/dist/ui/favicon.svg +11 -0
- package/dist/ui/index.html +49 -0
- package/dist/ui/sw.js +48 -0
- package/package.json +91 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-model for the integration pipeline status bar (0207).
|
|
3
|
+
*
|
|
4
|
+
* Turns the serialized integration jobs (queue + the in-flight job's phase) and
|
|
5
|
+
* the orchestrator's live progress steps into a single snapshot the UI renders
|
|
6
|
+
* without any re-architecting of the orchestrator itself: it only consumes
|
|
7
|
+
* existing job data plus whichever progress `DoneStep` was last reported for
|
|
8
|
+
* each task by the close-out orchestrator.
|
|
9
|
+
*/
|
|
10
|
+
import type { IntegrationJob, JobCoordinator } from "./integration-job.js";
|
|
11
|
+
import type { DoneStep } from "./done.js";
|
|
12
|
+
/** The five discrete stages surfaced to the user, in pipeline order. */
|
|
13
|
+
export declare const PIPELINE_STAGES: readonly string[];
|
|
14
|
+
export interface IntegrationSnapshot {
|
|
15
|
+
/** True when nothing is queued or in progress — the idle empty state. */
|
|
16
|
+
empty: boolean;
|
|
17
|
+
/** The task currently being integrated, or null when none is in flight. */
|
|
18
|
+
active: {
|
|
19
|
+
taskId: string;
|
|
20
|
+
/** The currently-running stage in `PIPELINE_STAGES` order, or null. */
|
|
21
|
+
stage: string | null;
|
|
22
|
+
/** True when the active job's phase is `failed`. */
|
|
23
|
+
failed: boolean;
|
|
24
|
+
/** The failure detail from the job, when failed. */
|
|
25
|
+
error?: string;
|
|
26
|
+
/** When this job started processing (ISO), for the live stopwatch. Falls
|
|
27
|
+
* back to the enqueue time when processing hasn't been marked started. */
|
|
28
|
+
startedAt: string | null;
|
|
29
|
+
} | null;
|
|
30
|
+
/** Task ids queued behind the active job, in FIFO order. */
|
|
31
|
+
queue: string[];
|
|
32
|
+
at: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The stage shown for a job. Prefers the live progress step recorded by the
|
|
36
|
+
* orchestrator (most accurate); falls back to a best-effort mapping from the
|
|
37
|
+
* job phase so a freshly hydrated snapshot still shows a sensible stage before
|
|
38
|
+
* any progress event has arrived.
|
|
39
|
+
*/
|
|
40
|
+
export declare function stageForJob(job: IntegrationJob, reported: DoneStep | undefined): string | null;
|
|
41
|
+
/** Whether a stage is considered "done" (checked) given the current stage. */
|
|
42
|
+
export declare function isStageComplete(stageIndex: number, currentIndex: number): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Build the pipeline snapshot from the coordinator plus the last-reported
|
|
45
|
+
* progress step per task id. `queue` is every non-terminal job ahead of or
|
|
46
|
+
* behind the currently-in-flight one; jobs already done/failed are hidden.
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildIntegrationSnapshot(coordinator: JobCoordinator, reported: Record<string, DoneStep>, at?: string): IntegrationSnapshot;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** The five discrete stages surfaced to the user, in pipeline order. */
|
|
2
|
+
export const PIPELINE_STAGES = [
|
|
3
|
+
"sync",
|
|
4
|
+
"merge",
|
|
5
|
+
"build",
|
|
6
|
+
"check",
|
|
7
|
+
"done",
|
|
8
|
+
];
|
|
9
|
+
/**
|
|
10
|
+
* The stage shown for a job. Prefers the live progress step recorded by the
|
|
11
|
+
* orchestrator (most accurate); falls back to a best-effort mapping from the
|
|
12
|
+
* job phase so a freshly hydrated snapshot still shows a sensible stage before
|
|
13
|
+
* any progress event has arrived.
|
|
14
|
+
*/
|
|
15
|
+
export function stageForJob(job, reported) {
|
|
16
|
+
if (reported !== undefined)
|
|
17
|
+
return reported;
|
|
18
|
+
switch (job.phase) {
|
|
19
|
+
case "queued":
|
|
20
|
+
return null;
|
|
21
|
+
case "syncing":
|
|
22
|
+
return "sync";
|
|
23
|
+
case "validating":
|
|
24
|
+
return "merge";
|
|
25
|
+
case "publishing":
|
|
26
|
+
case "cleanup":
|
|
27
|
+
case "done":
|
|
28
|
+
return "done";
|
|
29
|
+
case "failed":
|
|
30
|
+
return "done";
|
|
31
|
+
default:
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Whether a stage is considered "done" (checked) given the current stage. */
|
|
36
|
+
export function isStageComplete(stageIndex, currentIndex) {
|
|
37
|
+
return stageIndex < currentIndex;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build the pipeline snapshot from the coordinator plus the last-reported
|
|
41
|
+
* progress step per task id. `queue` is every non-terminal job ahead of or
|
|
42
|
+
* behind the currently-in-flight one; jobs already done/failed are hidden.
|
|
43
|
+
*/
|
|
44
|
+
export function buildIntegrationSnapshot(coordinator, reported, at = new Date().toISOString()) {
|
|
45
|
+
const all = coordinator.allJobs();
|
|
46
|
+
const inFlight = coordinator.peekNext();
|
|
47
|
+
const queue = [];
|
|
48
|
+
for (const job of all) {
|
|
49
|
+
if (job.phase === "done" || job.phase === "failed")
|
|
50
|
+
continue;
|
|
51
|
+
if (inFlight && job.taskId === inFlight.taskId)
|
|
52
|
+
continue;
|
|
53
|
+
queue.push(job.taskId);
|
|
54
|
+
}
|
|
55
|
+
if (!inFlight) {
|
|
56
|
+
return { empty: queue.length === 0, active: null, queue, at };
|
|
57
|
+
}
|
|
58
|
+
const failed = inFlight.phase === "failed";
|
|
59
|
+
return {
|
|
60
|
+
empty: false,
|
|
61
|
+
active: {
|
|
62
|
+
taskId: inFlight.taskId,
|
|
63
|
+
stage: stageForJob(inFlight, reported[inFlight.taskId]),
|
|
64
|
+
failed,
|
|
65
|
+
error: failed ? inFlight.reason : undefined,
|
|
66
|
+
startedAt: inFlight.startedAt ?? inFlight.enqueuedAt,
|
|
67
|
+
},
|
|
68
|
+
queue,
|
|
69
|
+
at,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import type { AgentOutputEntry, AgentSessionStats, RepoOSConfig, Task, Status, RepoIndex, BoardIndex, SupervisorHeartbeat } from "../core/types.js";
|
|
2
|
+
import type { SystemStats } from "./system.js";
|
|
3
|
+
import type { AutoEngineeringDecision } from "./auto-engineering.js";
|
|
4
|
+
import type { IntegrationSnapshot } from "./integration-status.js";
|
|
5
|
+
export type RepoEvent = {
|
|
6
|
+
type: "task.created";
|
|
7
|
+
task: Task;
|
|
8
|
+
at: string;
|
|
9
|
+
} | {
|
|
10
|
+
type: "task.updated";
|
|
11
|
+
task: Task;
|
|
12
|
+
prev: Partial<Task>;
|
|
13
|
+
at: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: "task.deleted";
|
|
16
|
+
id: string;
|
|
17
|
+
path: string;
|
|
18
|
+
at: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: "agent.running";
|
|
21
|
+
id: string;
|
|
22
|
+
at: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: "agent.exited";
|
|
25
|
+
id: string;
|
|
26
|
+
at: string;
|
|
27
|
+
}
|
|
28
|
+
/** A start/send/chat was accepted but held for a free maxConcurrentAgents slot. */
|
|
29
|
+
| {
|
|
30
|
+
type: "agent.queued";
|
|
31
|
+
id: string;
|
|
32
|
+
at: string;
|
|
33
|
+
}
|
|
34
|
+
/** A queued id left the queue — about to spawn (an agent.running follows immediately). */
|
|
35
|
+
| {
|
|
36
|
+
type: "agent.dequeued";
|
|
37
|
+
id: string;
|
|
38
|
+
at: string;
|
|
39
|
+
} | {
|
|
40
|
+
type: "agent.output";
|
|
41
|
+
id: string;
|
|
42
|
+
entry: AgentOutputEntry;
|
|
43
|
+
stream: "out" | "err";
|
|
44
|
+
at: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: "agent.stats";
|
|
47
|
+
id: string;
|
|
48
|
+
stats: AgentSessionStats;
|
|
49
|
+
at: string;
|
|
50
|
+
}
|
|
51
|
+
/** The freeform-create PM flesh-out failed and the draft is kept as-is
|
|
52
|
+
* (0320): lets clients drop their "AI creation in flight" marker so a
|
|
53
|
+
* later manual move of the stale draft cannot flag the card as newly created. */
|
|
54
|
+
| {
|
|
55
|
+
type: "task.aiCreateFailed";
|
|
56
|
+
id: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
at: string;
|
|
59
|
+
}
|
|
60
|
+
/** The freeform-create PM flesh-out started working on a draft (0335):
|
|
61
|
+
* drives the live "PM is working" indicator on the card + task panel. */
|
|
62
|
+
| {
|
|
63
|
+
type: "task.pmWorking";
|
|
64
|
+
id: string;
|
|
65
|
+
at: string;
|
|
66
|
+
}
|
|
67
|
+
/** The freeform-create PM flesh-out finished — success or failure (0335).
|
|
68
|
+
* Emitted on every exit path so the indicator can never get stuck. */
|
|
69
|
+
| {
|
|
70
|
+
type: "task.pmFinished";
|
|
71
|
+
id: string;
|
|
72
|
+
at: string;
|
|
73
|
+
} | {
|
|
74
|
+
type: "index.rebuilt";
|
|
75
|
+
taskCount: number;
|
|
76
|
+
at: string;
|
|
77
|
+
} | {
|
|
78
|
+
type: "task.progress";
|
|
79
|
+
id: string;
|
|
80
|
+
step: string;
|
|
81
|
+
at: string;
|
|
82
|
+
detail?: string;
|
|
83
|
+
phase?: string;
|
|
84
|
+
} | {
|
|
85
|
+
type: "task.corrected";
|
|
86
|
+
id: string;
|
|
87
|
+
path: string;
|
|
88
|
+
note: string;
|
|
89
|
+
at: string;
|
|
90
|
+
} | {
|
|
91
|
+
type: "preview";
|
|
92
|
+
id: string;
|
|
93
|
+
preview: {
|
|
94
|
+
port: number;
|
|
95
|
+
url: string;
|
|
96
|
+
startedAt: string;
|
|
97
|
+
label?: string;
|
|
98
|
+
} | null;
|
|
99
|
+
at: string;
|
|
100
|
+
}
|
|
101
|
+
/** Lifecycle of the automatic agent review of a task in `review` (0101). */
|
|
102
|
+
| {
|
|
103
|
+
type: "review";
|
|
104
|
+
id: string;
|
|
105
|
+
state: "running" | "ready" | "failed" | "cancelled";
|
|
106
|
+
at: string;
|
|
107
|
+
error?: string;
|
|
108
|
+
}
|
|
109
|
+
/** Lifecycle of the CTO monitoring agent (0174). */
|
|
110
|
+
| {
|
|
111
|
+
type: "cto";
|
|
112
|
+
state: "running" | "ready" | "failed" | "cancelled";
|
|
113
|
+
at: string;
|
|
114
|
+
error?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* A newer build landed on disk (typically a close-out merge). It is parked
|
|
118
|
+
* for a user-triggered reload (0143) — the running server keeps serving the
|
|
119
|
+
* old build until POST /api/server/restart.
|
|
120
|
+
*/
|
|
121
|
+
| {
|
|
122
|
+
type: "build.available";
|
|
123
|
+
hash: string;
|
|
124
|
+
buildAt: string | null;
|
|
125
|
+
at: string;
|
|
126
|
+
}
|
|
127
|
+
/** A user-triggered reload could not hand over — the old build keeps serving. */
|
|
128
|
+
| {
|
|
129
|
+
type: "reload.failed";
|
|
130
|
+
reason: string;
|
|
131
|
+
at: string;
|
|
132
|
+
}
|
|
133
|
+
/** Supervisor heartbeat report (0112). */
|
|
134
|
+
| {
|
|
135
|
+
type: "supervisor.heartbeat";
|
|
136
|
+
heartbeat: SupervisorHeartbeat;
|
|
137
|
+
at: string;
|
|
138
|
+
}
|
|
139
|
+
/** Auto-engineering mode state change (0124). */
|
|
140
|
+
| {
|
|
141
|
+
type: "auto-engineering.state";
|
|
142
|
+
state: {
|
|
143
|
+
enabled: boolean;
|
|
144
|
+
maxActiveTasks: number;
|
|
145
|
+
activeCount: number;
|
|
146
|
+
availableSlots: number;
|
|
147
|
+
reconciling: boolean;
|
|
148
|
+
decision: AutoEngineeringDecision | null;
|
|
149
|
+
};
|
|
150
|
+
at: string;
|
|
151
|
+
} | {
|
|
152
|
+
type: "hello";
|
|
153
|
+
taskCount: number;
|
|
154
|
+
at: string;
|
|
155
|
+
} | {
|
|
156
|
+
type: "system.stats";
|
|
157
|
+
stats: SystemStats;
|
|
158
|
+
}
|
|
159
|
+
/** Live snapshot of the integration pipeline for the pinned status bar (0207). */
|
|
160
|
+
| {
|
|
161
|
+
type: "integration";
|
|
162
|
+
pipeline: IntegrationSnapshot;
|
|
163
|
+
}
|
|
164
|
+
/** Full-suite test run (Control page): started, a raw stdout/stderr chunk, or exited. */
|
|
165
|
+
| {
|
|
166
|
+
type: "test-run.started";
|
|
167
|
+
at: string;
|
|
168
|
+
} | {
|
|
169
|
+
type: "test-run.output";
|
|
170
|
+
chunk: string;
|
|
171
|
+
at: string;
|
|
172
|
+
} | {
|
|
173
|
+
type: "test-run.done";
|
|
174
|
+
code: number | null;
|
|
175
|
+
at: string;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* A server-run `repoos check` for one task (0310): the handoff-finalize
|
|
179
|
+
* check or the MTD merge-gate check. Scoped per task (unlike test-run.*
|
|
180
|
+
* above, which is a single global Control-page run) so the Debug tab can
|
|
181
|
+
* show check history and live-stream a check currently running for the
|
|
182
|
+
* task the drawer has open.
|
|
183
|
+
*/
|
|
184
|
+
| {
|
|
185
|
+
type: "task-check.started";
|
|
186
|
+
taskId: string;
|
|
187
|
+
checkId: string;
|
|
188
|
+
checkKind: "handoff-finalize" | "merge-gate";
|
|
189
|
+
at: string;
|
|
190
|
+
} | {
|
|
191
|
+
type: "task-check.output";
|
|
192
|
+
taskId: string;
|
|
193
|
+
checkId: string;
|
|
194
|
+
chunk: string;
|
|
195
|
+
at: string;
|
|
196
|
+
} | {
|
|
197
|
+
type: "task-check.done";
|
|
198
|
+
taskId: string;
|
|
199
|
+
checkId: string;
|
|
200
|
+
code: number | null;
|
|
201
|
+
passed: boolean;
|
|
202
|
+
durationMs: number;
|
|
203
|
+
at: string;
|
|
204
|
+
};
|
|
205
|
+
type Listener = (e: RepoEvent) => void;
|
|
206
|
+
export declare class LiveIndex {
|
|
207
|
+
private config;
|
|
208
|
+
/** task id -> Task */
|
|
209
|
+
private byId;
|
|
210
|
+
/** abs path -> task id, so a file change maps back to a task */
|
|
211
|
+
private pathToId;
|
|
212
|
+
private listeners;
|
|
213
|
+
private useGit;
|
|
214
|
+
private branchCache;
|
|
215
|
+
/**
|
|
216
|
+
* Guard invoked by `applyFileChange` for a transition INTO `review` that
|
|
217
|
+
* did not already pass through the trusted PATCH route. #0210: a direct
|
|
218
|
+
* task-file edit must be held to the same commit/vacuity gate as the trusted
|
|
219
|
+
* handoff path. Returns false to reject the transition (the file is reverted
|
|
220
|
+
* to its previous status); true/fire-and-forget to accept it.
|
|
221
|
+
*/
|
|
222
|
+
private reviewGuard;
|
|
223
|
+
/** Wire the #0210 review-transition guard. The server owns the logic. */
|
|
224
|
+
setReviewGuard(fn: (task: Task, prev: Task) => Promise<boolean>): void;
|
|
225
|
+
constructor(config: RepoOSConfig);
|
|
226
|
+
/** Build from scratch. Safe to call any time; always authoritative. */
|
|
227
|
+
refreshAll(): void;
|
|
228
|
+
/**
|
|
229
|
+
* Async counterpart of `refreshAll`, used only at server startup: it lets
|
|
230
|
+
* `listen()` proceed while the (git-heavy, otherwise multi-second with
|
|
231
|
+
* 200+ tasks) index build runs in the background — see `buildIndexAsync`.
|
|
232
|
+
* Not a drop-in replacement for `refreshAll` in general: a file-watcher
|
|
233
|
+
* update landing mid-build is overwritten by this call's final swap-in,
|
|
234
|
+
* same as it would be by a concurrent `refreshAll`, but this call's window
|
|
235
|
+
* is wider. Fine for the one-shot boot case; callers that need to
|
|
236
|
+
* interleave safely with live updates should keep using `refreshAll`.
|
|
237
|
+
*/
|
|
238
|
+
refreshAllAsync(): Promise<void>;
|
|
239
|
+
/**
|
|
240
|
+
* Refresh every task's worktree `dirty`/`worktreePath` with a real
|
|
241
|
+
* `git status` sweep (batched — see `resolveWorktreeStatuses`), persist the
|
|
242
|
+
* result, and emit `task.updated` for any that changed. Called after the
|
|
243
|
+
* fast boot build and safe to call periodically. No-op without git.
|
|
244
|
+
*/
|
|
245
|
+
reconcileWorktreeStatus(): Promise<void>;
|
|
246
|
+
private isTaskFile;
|
|
247
|
+
/**
|
|
248
|
+
* Re-parse a single file after a create/modify. Emits created or updated.
|
|
249
|
+
*
|
|
250
|
+
* `opts.guarded` marks a change that already passed the #0210 review gate
|
|
251
|
+
* (the trusted PATCH route and the trusted handoff path run the gate
|
|
252
|
+
* themselves), so it is applied synchronously without re-invoking the guard.
|
|
253
|
+
* Unmarked transitions INTO `review` — a direct task-file edit picked up by
|
|
254
|
+
* the watcher — are deferred to the async guard, which reverts the file to
|
|
255
|
+
* its previous status if the transition is rejected. Returns a Promise for
|
|
256
|
+
* that deferred case so callers (and tests) can await its settlement.
|
|
257
|
+
*/
|
|
258
|
+
applyFileChange(absPath: string, opts?: {
|
|
259
|
+
guarded?: boolean;
|
|
260
|
+
}): void | Promise<void>;
|
|
261
|
+
/** Apply a fully-parsed task to the in-memory index and emit. */
|
|
262
|
+
private applyParsed;
|
|
263
|
+
/**
|
|
264
|
+
* Run the #0210 review guard for a deferred transition into `review`. On
|
|
265
|
+
* acceptance the task is applied normally (the worktree was committed by the
|
|
266
|
+
* guard). On rejection the task file is reverted to its previous status —
|
|
267
|
+
* using the same safe write path as a server edit — so the bypass can never
|
|
268
|
+
* leave a task sitting in `review` with uncommitted work.
|
|
269
|
+
*/
|
|
270
|
+
private runReviewGuard;
|
|
271
|
+
/** Handle a file removal. Emits deleted if it mapped to a known task. */
|
|
272
|
+
applyFileDelete(absPath: string): void;
|
|
273
|
+
/**
|
|
274
|
+
* Re-scan local branches / worktrees and re-apply the cheap git facts
|
|
275
|
+
* (`branchExists`, `worktreeExists`, `worktreePath`) to every indexed task.
|
|
276
|
+
* Called after an agent launch, branch sync, or hotfix so the UI's branch/
|
|
277
|
+
* worktree dots are right without a full rebuild.
|
|
278
|
+
*
|
|
279
|
+
* `dirty` is NOT recomputed here — that needs a `git status` per worktree,
|
|
280
|
+
* which this method used to run synchronously for every task on the event
|
|
281
|
+
* loop (~2.5s at 40 worktrees, on every task mutation). It is delegated to
|
|
282
|
+
* the batched `reconcileWorktreeStatus()` sweep, kicked off below and
|
|
283
|
+
* arriving via `task.updated` within ~100ms.
|
|
284
|
+
*/
|
|
285
|
+
refreshBranches(): void;
|
|
286
|
+
getTasks(status?: Status): Task[];
|
|
287
|
+
getTask(id: string): Task | null;
|
|
288
|
+
counts(): Record<Status, number>;
|
|
289
|
+
snapshot(): RepoIndex;
|
|
290
|
+
/** Lightweight board snapshot — skips body, extra, agent overrides. */
|
|
291
|
+
boardSnapshot(): BoardIndex;
|
|
292
|
+
on(fn: Listener): () => void;
|
|
293
|
+
private emit;
|
|
294
|
+
}
|
|
295
|
+
export {};
|