@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,194 @@
|
|
|
1
|
+
/** The answer POST /api/server/restart and the reload triggers report. */
|
|
2
|
+
export type ReloadState = {
|
|
3
|
+
state: "reloading";
|
|
4
|
+
reason?: string;
|
|
5
|
+
} | {
|
|
6
|
+
state: "deferred";
|
|
7
|
+
running: number;
|
|
8
|
+
reason?: string;
|
|
9
|
+
} | {
|
|
10
|
+
state: "not-stale";
|
|
11
|
+
reason?: string;
|
|
12
|
+
};
|
|
13
|
+
export interface ReloadManagerOptions {
|
|
14
|
+
/** Repo root the serve process is rooted at (the replacement is spawned here). */
|
|
15
|
+
root: string;
|
|
16
|
+
host: string;
|
|
17
|
+
port: number;
|
|
18
|
+
/** Build hash captured at boot — the hash of the code this process runs. */
|
|
19
|
+
loadedHash: string | null;
|
|
20
|
+
/** False when auto-reload is impossible (dev mode, preview child, ephemeral port). */
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
/** True when this process is itself a reload replacement (skip boot self-heal). */
|
|
23
|
+
isReplacement?: boolean;
|
|
24
|
+
/** Count of running agent turns — a reload is deferred while > 0. */
|
|
25
|
+
isBusy: () => number;
|
|
26
|
+
/**
|
|
27
|
+
* True while a review→done close-out is running (0143). The close-out
|
|
28
|
+
* pipeline builds/checks dist itself, so an auto-reload must never fire
|
|
29
|
+
* under it. New builds it produces are parked (`build.available`) for a
|
|
30
|
+
* user-triggered reload instead.
|
|
31
|
+
*/
|
|
32
|
+
closingOut: () => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Fired once when a new build lands on disk while a close-out holds the
|
|
35
|
+
* deferral — the build is parked for a user-triggered reload (via
|
|
36
|
+
* POST /api/server/restart) rather than applied automatically. Receives the
|
|
37
|
+
* on-disk build hash.
|
|
38
|
+
*/
|
|
39
|
+
onBuildAvailable?: (hash: string) => void;
|
|
40
|
+
/** Resolve the compiled CLI entrypoint used to spawn the replacement. */
|
|
41
|
+
cliEntry: () => string | null;
|
|
42
|
+
/** Release only the HTTP listener (the drain window); the process keeps running. */
|
|
43
|
+
stopListening: () => Promise<void>;
|
|
44
|
+
/** Re-bind the HTTP listener after an aborted reload. */
|
|
45
|
+
listen: () => Promise<void>;
|
|
46
|
+
/** The replacement is confirmed ready: tear down and exit this process. */
|
|
47
|
+
onReloadConfirmed: () => Promise<void>;
|
|
48
|
+
/** A reload failed and the old process kept serving. */
|
|
49
|
+
onReloadFailed?: (reason: string) => void;
|
|
50
|
+
/** Low-frequency hash poll interval in ms (fallback when fs.watch is unreliable). */
|
|
51
|
+
pollMs?: number;
|
|
52
|
+
/** How often a deferred reload is retried while the runner stays busy, in ms. */
|
|
53
|
+
retryMs?: number;
|
|
54
|
+
/** Grace before releasing the listener (gives SO_REUSEPORT a chance), in ms. */
|
|
55
|
+
graceMs?: number;
|
|
56
|
+
/** Total time to wait for the replacement's readiness handshake, in ms. */
|
|
57
|
+
handshakeTimeoutMs?: number;
|
|
58
|
+
/**
|
|
59
|
+
* How long the replacement must stay healthy (handshake answered) before the
|
|
60
|
+
* old process logs "replacement is up" and releases its listener. Guards the
|
|
61
|
+
* #0096 incident shape: a replacement that answered once, was confirmed, then
|
|
62
|
+
* died right after the old process exited, leaving the port listenerless.
|
|
63
|
+
*/
|
|
64
|
+
confirmMs?: number;
|
|
65
|
+
/** How long the old process re-binds its listener before giving up, in ms. */
|
|
66
|
+
rebindTimeoutMs?: number;
|
|
67
|
+
log?: (msg: string) => void;
|
|
68
|
+
}
|
|
69
|
+
/** True when running from src/ (dev mode) rather than compiled dist/. */
|
|
70
|
+
export declare function isDevBuild(): boolean;
|
|
71
|
+
/** Read the build hash from dist/.build-info.json, or null when absent. */
|
|
72
|
+
export declare function readBuildHash(root: string): string | null;
|
|
73
|
+
/**
|
|
74
|
+
* Read the build timestamp from dist/.build-stamp.json, or null. Kept separate
|
|
75
|
+
* from the hash marker so `.build-info.json` stays byte-identical across
|
|
76
|
+
* rebuilds of identical source — see readBuildStamp in core/build.ts.
|
|
77
|
+
*/
|
|
78
|
+
export declare function readBuildAt(root: string): string | null;
|
|
79
|
+
export declare class ReloadManager {
|
|
80
|
+
private readonly options;
|
|
81
|
+
private readonly loadedHash;
|
|
82
|
+
private fsWatcher;
|
|
83
|
+
private debounceTimer;
|
|
84
|
+
private pollTimer;
|
|
85
|
+
private retryTimer;
|
|
86
|
+
private reloading;
|
|
87
|
+
private pending;
|
|
88
|
+
private stopped;
|
|
89
|
+
private child;
|
|
90
|
+
private childExited;
|
|
91
|
+
/** Whether we released our own HTTP listener for the replacement to bind. */
|
|
92
|
+
private drained;
|
|
93
|
+
/** Consecutive failed handoffs. Reset on the next successful one. */
|
|
94
|
+
private consecutiveFailures;
|
|
95
|
+
/** Automatic (non-manual) reloads are refused until this time, post-failure. */
|
|
96
|
+
private backoffUntil;
|
|
97
|
+
/**
|
|
98
|
+
* Hash of a build parked by a close-out (0143). Never auto-reloaded — it
|
|
99
|
+
* waits for the user to trigger POST /api/server/restart.
|
|
100
|
+
*/
|
|
101
|
+
private buildAvailableHash;
|
|
102
|
+
/** On-disk build timestamp of the parked build (dist/.build-info.json). */
|
|
103
|
+
private buildAvailableAt;
|
|
104
|
+
constructor(options: ReloadManagerOptions);
|
|
105
|
+
get enabled(): boolean;
|
|
106
|
+
/** True while the manager is actively handing over to a replacement process. */
|
|
107
|
+
get isReloading(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* The build parked by a close-out (0143), if any — hash plus its on-disk
|
|
110
|
+
* build timestamp (dist/.build-info.json generatedAt). Exposed so /api/health
|
|
111
|
+
* can report it and a (re)connecting UI can surface the "new build available"
|
|
112
|
+
* notice without ever having seen the one-shot build.available SSE event.
|
|
113
|
+
* Null while nothing is parked.
|
|
114
|
+
*/
|
|
115
|
+
get buildAvailable(): {
|
|
116
|
+
hash: string;
|
|
117
|
+
buildAt: string | null;
|
|
118
|
+
} | null;
|
|
119
|
+
/** Begin watching dist/.build-info.json (fs.watch + fallback hash poll). */
|
|
120
|
+
start(): void;
|
|
121
|
+
/** Stop watching and cancel timers. Idempotent. */
|
|
122
|
+
stop(): void;
|
|
123
|
+
/**
|
|
124
|
+
* Stale-boot self-heal: if a newer build landed while we were starting,
|
|
125
|
+
* reload immediately (deferred while an agent runs). The replacement child
|
|
126
|
+
* (REPOOS_RELOAD=1) skips this — it boots fresh on the current build.
|
|
127
|
+
*/
|
|
128
|
+
bootSelfHeal(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Public trigger used by the watcher, the boot self-heal, and
|
|
131
|
+
* POST /api/server/restart. Fires the reload when stale and idle; defers
|
|
132
|
+
* while an agent turn runs; reports not-stale when nothing is out of date.
|
|
133
|
+
*
|
|
134
|
+
* `manual` (POST /api/server/restart, a human explicitly asking) bypasses
|
|
135
|
+
* the post-failure backoff below — automatic triggers (the poll, boot
|
|
136
|
+
* self-heal) respect it so a run of failed handoffs doesn't retry every
|
|
137
|
+
* ~5s forever (#0271 incident).
|
|
138
|
+
*/
|
|
139
|
+
requestReload(reason: string, opts?: {
|
|
140
|
+
manual?: boolean;
|
|
141
|
+
}): ReloadState;
|
|
142
|
+
/**
|
|
143
|
+
* The SSE event funnel calls this so a drained runner unblocks a deferred
|
|
144
|
+
* reload. `review` events count: an agent review is a spawned turn too, and
|
|
145
|
+
* one finishing can be what makes the server idle.
|
|
146
|
+
*/
|
|
147
|
+
onEvent(e: {
|
|
148
|
+
type: string;
|
|
149
|
+
}): void;
|
|
150
|
+
private onPoll;
|
|
151
|
+
private tryFirePending;
|
|
152
|
+
/**
|
|
153
|
+
* Park a build that landed during a close-out: it is served only once the
|
|
154
|
+
* user triggers a reload. Idempotent per hash. Supersedes any armed
|
|
155
|
+
* busy-deferral so an eventual drain does not auto-fire it.
|
|
156
|
+
*/
|
|
157
|
+
private parkBuild;
|
|
158
|
+
private startWatching;
|
|
159
|
+
private reload;
|
|
160
|
+
/**
|
|
161
|
+
* Poll /api/health for the replacement's handshake until it answers or the
|
|
162
|
+
* window closes. While the parent holds the port the replacement cannot bind
|
|
163
|
+
* (no SO_REUSEPORT sharing on this platform), so after a short grace we
|
|
164
|
+
* release our own listener — the drain window — and keep polling. Any answer
|
|
165
|
+
* from the parent itself has no handshake, so a spurious self-poll never
|
|
166
|
+
* confirms a replacement.
|
|
167
|
+
*
|
|
168
|
+
* A single handshake answer is NOT enough (#0096): the replacement must stay
|
|
169
|
+
* healthy for the confirm window so a briefly-up-then-dying replacement is
|
|
170
|
+
* treated as a failed reload — the parent re-binds and keeps serving rather
|
|
171
|
+
* than handing over to a process that will leave the port listenerless.
|
|
172
|
+
*/
|
|
173
|
+
private waitForReplacement;
|
|
174
|
+
private killChild;
|
|
175
|
+
/**
|
|
176
|
+
* Re-bind the listener after an aborted reload so the old process keeps
|
|
177
|
+
* serving. Returns `"bound"` when the listener is back, or a reason string
|
|
178
|
+
* describing why it could not be recovered.
|
|
179
|
+
*
|
|
180
|
+
* #0284: a bind attempt by an unrelated `repoos serve` landing in our drain
|
|
181
|
+
* window can steal the port out from under us — we released the listener in
|
|
182
|
+
* waitForReplacement, it grabbed it, and now we can never re-bind (each
|
|
183
|
+
* attempt EADDRINUSEs). Distinguishing that from a transient failure lets
|
|
184
|
+
* the old process surface a loud, actionable error instead of silently
|
|
185
|
+
* looping as a listenerless zombie. We probe the port once the retry window
|
|
186
|
+
* closes: if *something else* is listening there now, the port was stolen
|
|
187
|
+
* rather than merely not-yet-freed.
|
|
188
|
+
*/
|
|
189
|
+
private tryRebind;
|
|
190
|
+
private armRetry;
|
|
191
|
+
private clearRetry;
|
|
192
|
+
private clearTimers;
|
|
193
|
+
private log;
|
|
194
|
+
}
|