@repo-os/repoos 0.5.65 → 0.5.67
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/dist/.build-info.json +2 -2
- package/dist/.build-stamp.json +1 -1
- package/dist/cli/api-route-parity.d.ts +13 -0
- package/dist/cli/api-route-parity.js +128 -0
- package/dist/cli/cli-session.d.ts +6 -0
- package/dist/cli/cli-session.js +56 -0
- package/dist/cli/effective-from-api.d.ts +11 -0
- package/dist/cli/effective-from-api.js +12 -0
- package/dist/cli/help.js +89 -5
- package/dist/cli/index.js +76 -2
- package/dist/cli/repoos-api.d.ts +52 -0
- package/dist/cli/repoos-api.js +164 -0
- package/dist/commands/check.js +118 -77
- package/dist/commands/control-api.d.ts +13 -0
- package/dist/commands/control-api.js +527 -0
- package/dist/commands/docs-io.d.ts +19 -0
- package/dist/commands/docs-io.js +66 -0
- package/dist/commands/docs.d.ts +9 -0
- package/dist/commands/docs.js +49 -0
- package/dist/commands/init.d.ts +85 -1
- package/dist/commands/init.js +633 -82
- package/dist/commands/service.js +22 -3
- package/dist/commands/tasks.d.ts +13 -0
- package/dist/commands/tasks.js +178 -21
- package/dist/core/agent-run-health.d.ts +59 -0
- package/dist/core/agent-run-health.js +173 -0
- package/dist/core/approval-policy.d.ts +45 -0
- package/dist/core/approval-policy.js +161 -0
- package/dist/core/attention.d.ts +83 -0
- package/dist/core/attention.js +261 -0
- package/dist/core/check-buildable-project.d.ts +16 -0
- package/dist/core/check-buildable-project.js +34 -0
- package/dist/core/check-failure-summary.d.ts +1 -1
- package/dist/core/check-failure-summary.js +1 -1
- package/dist/core/check-store.d.ts +23 -2
- package/dist/core/check-store.js +66 -7
- package/dist/core/close-out-failure.d.ts +4 -11
- package/dist/core/close-out-failure.js +20 -0
- package/dist/core/close-out-timing.d.ts +28 -0
- package/dist/core/close-out-timing.js +81 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.js +546 -53
- package/dist/core/cto-actions.d.ts +56 -0
- package/dist/core/cto-actions.js +98 -0
- package/dist/core/db.d.ts +6 -4
- package/dist/core/db.js +15 -10
- package/dist/core/dependency-install.d.ts +85 -0
- package/dist/core/dependency-install.js +363 -0
- package/dist/core/doctor.js +71 -0
- package/dist/core/git.d.ts +48 -2
- package/dist/core/git.js +97 -13
- package/dist/core/indexer.js +7 -2
- package/dist/core/input.js +26 -19
- package/dist/core/lockfile-conflict.d.ts +12 -0
- package/dist/core/lockfile-conflict.js +83 -0
- package/dist/core/models.d.ts +2 -0
- package/dist/core/models.js +79 -4
- package/dist/core/needs-input.d.ts +2 -0
- package/dist/core/needs-input.js +21 -1
- package/dist/core/page-browser-gate.d.ts +50 -0
- package/dist/core/page-browser-gate.js +130 -0
- package/dist/core/process-group.d.ts +20 -0
- package/dist/core/process-group.js +85 -0
- package/dist/core/project-docs.d.ts +96 -0
- package/dist/core/project-docs.js +544 -0
- package/dist/core/providers/harness-auth.d.ts +21 -0
- package/dist/core/providers/harness-auth.js +87 -0
- package/dist/core/remote-pool-queue.d.ts +13 -0
- package/dist/core/remote-pool-queue.js +20 -0
- package/dist/core/repoos.js +4 -0
- package/dist/core/review-findings.d.ts +2 -0
- package/dist/core/review-findings.js +43 -0
- package/dist/core/review-passes.d.ts +27 -0
- package/dist/core/review-passes.js +90 -0
- package/dist/core/review-report-sections.d.ts +14 -0
- package/dist/core/review-report-sections.js +59 -0
- package/dist/core/shot-plan.d.ts +35 -0
- package/dist/core/shot-plan.js +44 -26
- package/dist/core/storage/index.d.ts +11 -0
- package/dist/core/storage/index.js +11 -0
- package/dist/core/storage/local.d.ts +11 -0
- package/dist/core/storage/local.js +118 -0
- package/dist/core/storage/registry.d.ts +65 -0
- package/dist/core/storage/registry.js +127 -0
- package/dist/core/storage/types.d.ts +94 -0
- package/dist/core/storage/types.js +23 -0
- package/dist/core/story-context.d.ts +31 -0
- package/dist/core/story-context.js +201 -0
- package/dist/core/task-dependencies.js +6 -0
- package/dist/core/task-fields.d.ts +19 -0
- package/dist/core/task-fields.js +48 -0
- package/dist/core/task-proof-commands.d.ts +10 -0
- package/dist/core/task-proof-commands.js +59 -0
- package/dist/core/task-selection.d.ts +97 -0
- package/dist/core/task-selection.js +151 -0
- package/dist/core/task-underspecified.d.ts +37 -1
- package/dist/core/task-underspecified.js +97 -2
- package/dist/core/task.js +35 -0
- package/dist/core/types.d.ts +259 -8
- package/dist/core/types.js +1 -0
- package/dist/core/ui-index.d.ts +7 -0
- package/dist/core/ui-index.js +10 -0
- package/dist/core/ui-verification-config.d.ts +6 -0
- package/dist/core/ui-verification-config.js +11 -0
- package/dist/server/__tests__/integration-job.test.js +14 -1
- package/dist/server/agents.d.ts +141 -13
- package/dist/server/agents.js +664 -80
- package/dist/server/api-route-catalog.d.ts +12 -0
- package/dist/server/api-route-catalog.js +11 -0
- package/dist/server/approval-policy.d.ts +15 -0
- package/dist/server/approval-policy.js +94 -0
- package/dist/server/attachments.d.ts +14 -1
- package/dist/server/attachments.js +36 -13
- package/dist/server/attention-events.d.ts +8 -0
- package/dist/server/attention-events.js +88 -0
- package/dist/server/attention-feed.d.ts +21 -0
- package/dist/server/attention-feed.js +41 -0
- package/dist/server/attention-notify.d.ts +15 -0
- package/dist/server/attention-notify.js +51 -0
- package/dist/server/auto-engineering.d.ts +27 -1
- package/dist/server/auto-engineering.js +152 -122
- package/dist/server/close-out-repair.d.ts +10 -0
- package/dist/server/close-out-repair.js +100 -0
- package/dist/server/close-out-requeue.d.ts +15 -0
- package/dist/server/close-out-requeue.js +35 -0
- package/dist/server/config-watch.d.ts +41 -0
- package/dist/server/config-watch.js +169 -0
- package/dist/server/cto-action-rates.d.ts +6 -0
- package/dist/server/cto-action-rates.js +65 -0
- package/dist/server/cto-actions.d.ts +39 -0
- package/dist/server/cto-actions.js +253 -0
- package/dist/server/cto-monitor.d.ts +3 -0
- package/dist/server/cto-monitor.js +25 -3
- package/dist/server/cto.js +29 -8
- package/dist/server/debug-tldr.d.ts +1 -1
- package/dist/server/debug-tldr.js +2 -0
- package/dist/server/distribution.d.ts +13 -0
- package/dist/server/distribution.js +37 -0
- package/dist/server/done.d.ts +13 -0
- package/dist/server/done.js +2 -4
- package/dist/server/engineer-launch.d.ts +27 -0
- package/dist/server/engineer-launch.js +75 -0
- package/dist/server/engineer-remote-self-check.d.ts +49 -0
- package/dist/server/engineer-remote-self-check.js +184 -0
- package/dist/server/handoff-failure-loop.d.ts +57 -0
- package/dist/server/handoff-failure-loop.js +278 -0
- package/dist/server/handoff.d.ts +8 -2
- package/dist/server/handoff.js +64 -60
- package/dist/server/integration-job.d.ts +7 -0
- package/dist/server/integration-job.js +6 -3
- package/dist/server/integration-orchestrator.d.ts +25 -17
- package/dist/server/integration-orchestrator.js +170 -106
- package/dist/server/live-index.d.ts +23 -0
- package/dist/server/live-index.js +13 -1
- package/dist/server/model-test.d.ts +12 -1
- package/dist/server/model-test.js +56 -6
- package/dist/server/notifications/reasons.js +1 -0
- package/dist/server/pre-review-remote-gate.d.ts +13 -2
- package/dist/server/pre-review-remote-gate.js +49 -7
- package/dist/server/preview.d.ts +63 -0
- package/dist/server/preview.js +209 -24
- package/dist/server/reload.d.ts +4 -0
- package/dist/server/reload.js +6 -0
- package/dist/server/remote-validation.d.ts +380 -3
- package/dist/server/remote-validation.js +1188 -131
- package/dist/server/request-close-out.d.ts +38 -0
- package/dist/server/request-close-out.js +175 -0
- package/dist/server/review.d.ts +20 -2
- package/dist/server/review.js +151 -64
- package/dist/server/routes/attention.d.ts +3 -0
- package/dist/server/routes/attention.js +20 -0
- package/dist/server/routes/config.js +41 -5
- package/dist/server/routes/hub.js +3 -2
- package/dist/server/routes/index.d.ts +1 -0
- package/dist/server/routes/index.js +1 -0
- package/dist/server/routes/model-providers.d.ts +8 -3
- package/dist/server/routes/model-providers.js +11 -5
- package/dist/server/routes/release.d.ts +4 -0
- package/dist/server/routes/release.js +11 -0
- package/dist/server/routes/router.d.ts +5 -0
- package/dist/server/routes/router.js +7 -0
- package/dist/server/routes/tasks.d.ts +10 -0
- package/dist/server/routes/tasks.js +347 -33
- package/dist/server/routes/types.d.ts +7 -1
- package/dist/server/server.js +172 -12
- package/dist/server/shot-capture.js +6 -0
- package/dist/server/task-underspecified-flag.d.ts +25 -2
- package/dist/server/task-underspecified-flag.js +87 -5
- package/dist/server/task-watchdog.d.ts +8 -0
- package/dist/server/task-watchdog.js +44 -3
- package/dist/server/telegram/commands.js +2 -2
- package/dist/server/ui-handoff-gate.d.ts +53 -0
- package/dist/server/ui-handoff-gate.js +255 -0
- package/dist/server/write.d.ts +18 -0
- package/dist/server/write.js +53 -6
- package/dist/ui/assets/AgentModelModal-DhY5NOZ1.js +1 -0
- package/dist/ui/assets/{AgentsView-B-VbBCBQ.css → AgentsView-B_yMHKiT.css} +1 -1
- package/dist/ui/assets/AgentsView-Dxv4s_ff.js +1 -0
- package/dist/ui/assets/ChecksView-BGUWmHHI.js +0 -0
- package/dist/ui/assets/{ChecksView-BmdCOghF.css → ChecksView-DAZIbg5B.css} +1 -1
- package/dist/ui/assets/ContextView-BxlQCnkt.js +4 -0
- package/dist/ui/assets/DashboardView-2xJiQLBz.js +1 -0
- package/dist/ui/assets/{DashboardView-AGzNLRGm.css → DashboardView-Ca3kwSow.css} +1 -1
- package/dist/ui/assets/{DeleteConfirmDialog-C8JmtQyq.js → DeleteConfirmDialog-B7_fR8N6.js} +1 -1
- package/dist/ui/assets/{DeploymentsView-DuhTjFqk.js → DeploymentsView-oXkw2BSL.js} +1 -1
- package/dist/ui/assets/DiffView-CcApcT6t.css +1 -0
- package/dist/ui/assets/DiffView-qdIZFGbS.js +4 -0
- package/dist/ui/assets/FailedTestsList-92u0pppH.js +1 -0
- package/dist/ui/assets/InputsView-DtPR9kyl.js +1 -0
- package/dist/ui/assets/{LoginView-BrQXEW51.js → LoginView-DWEf0kRL.js} +1 -1
- package/dist/ui/assets/ReleasesView-JG7zXQPU.js +5 -0
- package/dist/ui/assets/ReleasesView-mGdLAyHK.css +1 -0
- package/dist/ui/assets/{SettingsView-C7KstbuH.css → SettingsView-BlDj5TRt.css} +1 -1
- package/dist/ui/assets/SettingsView-C8blwbyh.js +4 -0
- package/dist/ui/assets/StoriesView-1FeSeEMD.js +1 -0
- package/dist/ui/assets/{VoiceDictate-DlhkQVor.js → VoiceDictate-sbY2kf3g.js} +1 -1
- package/dist/ui/assets/WorkView-Y9JCMf7I.js +2 -0
- package/dist/ui/assets/{WorkView-bYMFgM5P.css → WorkView-vT6nLFuM.css} +1 -1
- package/dist/ui/assets/{abnfDiagram-VCTEODGH-D7K5xY21.js → abnfDiagram-VCTEODGH-DbjEiPQk.js} +1 -1
- package/dist/ui/assets/architecture-7GRP2DOG-D3Zr7GMJ.js +1 -0
- package/dist/ui/assets/{architectureDiagram-5GKGNRK7-B_BA-0Uq.js → architectureDiagram-5GKGNRK7-iuYOljXl.js} +1 -1
- package/dist/ui/assets/{blockDiagram-I7D4REHJ-Cpb81UDE.js → blockDiagram-I7D4REHJ-BMQZCcl4.js} +1 -1
- package/dist/ui/assets/{button-Q8k6lD-C.js → button-uIODk23A.js} +1 -1
- package/dist/ui/assets/{c4Diagram-7LVT6UL2-V3L4erkN.js → c4Diagram-7LVT6UL2-CYARlZF5.js} +1 -1
- package/dist/ui/assets/channel-CsOxGNSt.js +1 -0
- package/dist/ui/assets/{checkbox-Cx8SQV7s.js → checkbox-EUK8itx1.js} +1 -1
- package/dist/ui/assets/{chunk-4HAMMTFA-DEg9Tw-P.js → chunk-4HAMMTFA-C-0fE7Hb.js} +1 -1
- package/dist/ui/assets/{chunk-75Z2AOVW-B3NLZ27i.js → chunk-75Z2AOVW-9h5YgMdt.js} +1 -1
- package/dist/ui/assets/{chunk-DU6HZSFF-DL1X-Drb.js → chunk-DU6HZSFF-9BISDKkf.js} +1 -1
- package/dist/ui/assets/{chunk-F27PBJKO-CtsVl7e2.js → chunk-F27PBJKO-VJth4ETL.js} +1 -1
- package/dist/ui/assets/{chunk-GMAD6QVW-DVbfeU88.js → chunk-GMAD6QVW-CMTnCPtC.js} +1 -1
- package/dist/ui/assets/{chunk-GVQU2GXP-DrRVvPhy.js → chunk-GVQU2GXP-bjPEFMMp.js} +1 -1
- package/dist/ui/assets/{chunk-IMKFNOWR-D9x4VaSZ.js → chunk-IMKFNOWR-C1BByNVf.js} +1 -1
- package/dist/ui/assets/{chunk-L3NEJ4N5-CQ838V5P.js → chunk-L3NEJ4N5-whMpUmjS.js} +1 -1
- package/dist/ui/assets/{chunk-OSK3NFVY-CscJ3Ugl.js → chunk-OSK3NFVY-B6Ch9_w3.js} +1 -1
- package/dist/ui/assets/{chunk-P2QGCYS3-Dn_74uGA.js → chunk-P2QGCYS3-CWRV4Ah9.js} +1 -1
- package/dist/ui/assets/{chunk-POPQ4Y6H-BWQVTVVG.js → chunk-POPQ4Y6H-CcHY8rtu.js} +1 -1
- package/dist/ui/assets/{chunk-PWAF6VOD-BEip3UPe.js → chunk-PWAF6VOD-BC0VBnZU.js} +1 -1
- package/dist/ui/assets/{chunk-SHT3W25Y-BBhLU2Ko.js → chunk-SHT3W25Y-DfFIsip4.js} +1 -1
- package/dist/ui/assets/{chunk-SVP7TREG-BAIckYL1.js → chunk-SVP7TREG-C3xL4bvJ.js} +1 -1
- package/dist/ui/assets/{chunk-TICWLB2K-DL38vvUq.js → chunk-TICWLB2K-Bt1FxNVL.js} +1 -1
- package/dist/ui/assets/classDiagram-ZZMXUADV-DXz5ZBJc.js +1 -0
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-DXz5ZBJc.js +1 -0
- package/dist/ui/assets/{cynefin-OW5HDTMX-BtNk2QXI.js → cynefin-OW5HDTMX-BPQzV4Oh.js} +1 -1
- package/dist/ui/assets/{cynefinDiagram-5FMLGOSQ-C1RB8hg-.js → cynefinDiagram-5FMLGOSQ-BTmi3fdq.js} +1 -1
- package/dist/ui/assets/{dagre-GXQ25YYZ-BK1Ciodj.js → dagre-GXQ25YYZ-EBMMAtpz.js} +1 -1
- package/dist/ui/assets/{diagram-S7CK7UJ4-C0Kgo7tc.js → diagram-S7CK7UJ4-BaEfBV0o.js} +1 -1
- package/dist/ui/assets/{diagram-UQ7AKVKN-B64zLMX6.js → diagram-UQ7AKVKN-BRL9YWBF.js} +1 -1
- package/dist/ui/assets/{diagram-VSXAHHWV-CzrxcSQH.js → diagram-VSXAHHWV-CI_jmzDG.js} +1 -1
- package/dist/ui/assets/{diagram-VX7I27RA-yjdIqP0q.js → diagram-VX7I27RA-DoZgqatt.js} +1 -1
- package/dist/ui/assets/{diagram-Z3DM3KII-DOyxmmRK.js → diagram-Z3DM3KII-CEZOwotu.js} +1 -1
- package/dist/ui/assets/{ebnfDiagram-PWID7BFC-igftIl5p.js → ebnfDiagram-PWID7BFC-DoHUC2pF.js} +1 -1
- package/dist/ui/assets/{erDiagram-RLTQ6QDP-D1YF1lZ2.js → erDiagram-RLTQ6QDP-Bpj96FeR.js} +1 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-BP096yAZ.js +1 -0
- package/dist/ui/assets/flowDiagram-HODETNUW-CGQzpVgi.js +1 -0
- package/dist/ui/assets/{ganttDiagram-EL5Y4UJY-7cJOmpvL.js → ganttDiagram-EL5Y4UJY-BXWL7ow_.js} +1 -1
- package/dist/ui/assets/{gitGraph-4MIJSDKK-vTrxvPkn.js → gitGraph-4MIJSDKK-CygEn6Pm.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-WWUBYQGX-BzFDa_ja.js → gitGraphDiagram-WWUBYQGX-BEN8kG8Y.js} +1 -1
- package/dist/ui/assets/index-CNf-gQPU.js +54 -0
- package/dist/ui/assets/index-Dp0zyDhg.css +1 -0
- package/dist/ui/assets/{info-A6RAGUB7-DZ5p-DTt.js → info-A6RAGUB7-CG18k5Tc.js} +1 -1
- package/dist/ui/assets/{infoDiagram-27XIBGKW-Dt9fTB-K.js → infoDiagram-27XIBGKW-BVEnM-o1.js} +1 -1
- package/dist/ui/assets/{ishikawaDiagram-5VMMS53U-DzWqCZwA.js → ishikawaDiagram-5VMMS53U-Bz24j_3Q.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-3NMN7TZE-DPqO0nTE.js → journeyDiagram-3NMN7TZE-Cw49nq1P.js} +1 -1
- package/dist/ui/assets/{kanban-definition-UXKFOSKX-Csmtd8-e.js → kanban-definition-UXKFOSKX-Ck2BMOZW.js} +1 -1
- package/dist/ui/assets/{line-BhE0sIdC.js → line-3ywrXSvS.js} +1 -1
- package/dist/ui/assets/{mermaid-parser.core-DXuNQalk.js → mermaid-parser.core-pTkacvis.js} +3 -3
- package/dist/ui/assets/{mermaid.core-CBbbhK6t.js → mermaid.core-KI_Ug6Sr.js} +4 -4
- package/dist/ui/assets/{mindmap-definition-YA3MSWOX-DVfGFieO.js → mindmap-definition-YA3MSWOX-CK7Qs2O6.js} +1 -1
- package/dist/ui/assets/{packet-AYTQ26CC-B1T01rik.js → packet-AYTQ26CC-CB1LAlf8.js} +1 -1
- package/dist/ui/assets/{pegDiagram-XKGWAZYB-DX3MmX7k.js → pegDiagram-XKGWAZYB-C7wyvhpZ.js} +1 -1
- package/dist/ui/assets/{pie-WAS4IAKB-CYWT14Ey.js → pie-WAS4IAKB-CtkGbS6o.js} +1 -1
- package/dist/ui/assets/{pieDiagram-E7YTZNPT-CnZwSuIL.js → pieDiagram-E7YTZNPT-DqYUbDdy.js} +1 -1
- package/dist/ui/assets/{quadrantDiagram-AXDQQJYC-TlCorrVm.js → quadrantDiagram-AXDQQJYC-BVzreR-s.js} +1 -1
- package/dist/ui/assets/{radar-RG4KPBEZ-zD8NcNrm.js → radar-RG4KPBEZ-ElYRqk-4.js} +1 -1
- package/dist/ui/assets/{railroad-74A4TZTK-CZZJ_fBU.js → railroad-74A4TZTK-XUiiGOGw.js} +1 -1
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-ebjcwFgX.js +1 -0
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-Z5mPRjaM.js +1 -0
- package/dist/ui/assets/railroad-peg-WCYAUIDC-Ds7v_hnS.js +1 -0
- package/dist/ui/assets/{railroadDiagram-O6MQD6OU-CcUsh2xT.js → railroadDiagram-O6MQD6OU-C-um7ttl.js} +1 -1
- package/dist/ui/assets/repo-XLbfa7u-.js +2 -0
- package/dist/ui/assets/{requirementDiagram-BXWQKSXE-BRs-m-IN.js → requirementDiagram-BXWQKSXE-CB77SNNB.js} +1 -1
- package/dist/ui/assets/{sankeyDiagram-P5KCCOFB-DZr6ULrz.js → sankeyDiagram-P5KCCOFB-D_qnpDIk.js} +1 -1
- package/dist/ui/assets/{sequenceDiagram-WJ2MYXX4-DG3jgNAD.js → sequenceDiagram-WJ2MYXX4-DrR-O2gR.js} +1 -1
- package/dist/ui/assets/{stateDiagram-D77RDMKH-BdOc9c8v.js → stateDiagram-D77RDMKH-Mz-Cjby1.js} +1 -1
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-cIIjufMH.js +1 -0
- package/dist/ui/assets/{swimlanes-42K2YHIH-CNGoL8K1.js → swimlanes-42K2YHIH-BwFAfw2O.js} +1 -1
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-BT2MlBys.js +8 -0
- package/dist/ui/assets/{timeline-definition-24CTP7MA-22MZfL5_.js → timeline-definition-24CTP7MA-DS_U9LBk.js} +1 -1
- package/dist/ui/assets/{title-DRn1SiDB.js → title-ClcAtTzM.js} +1 -1
- package/dist/ui/assets/{treeView-Q6P3EWNA-BD4hTxfi.js → treeView-Q6P3EWNA-D0Ds2Pnh.js} +1 -1
- package/dist/ui/assets/{treemap-WGGIJYW6-Cemii_iW.js → treemap-WGGIJYW6-Dr6ADVsx.js} +1 -1
- package/dist/ui/assets/{vendor-ui-DvMtGHLC.js → vendor-ui-DsOjPSxk.js} +2 -2
- package/dist/ui/assets/{vennDiagram-4TSXK5OY-NxbwfKSB.js → vennDiagram-4TSXK5OY-CcEibS-z.js} +1 -1
- package/dist/ui/assets/{wardley-WFR3VGLG-CAkXWtRC.js → wardley-WFR3VGLG-D19UeE7v.js} +1 -1
- package/dist/ui/assets/{wardleyDiagram-VM6X3IG4-Ukj6iPYI.js → wardleyDiagram-VM6X3IG4-m2YJGsr8.js} +1 -1
- package/dist/ui/assets/{xychartDiagram-S5SC5T6Z-ESpPlWUQ.js → xychartDiagram-S5SC5T6Z-D-ENA4CQ.js} +1 -1
- package/dist/ui/index.html +11 -11
- package/dist/ui/sw.js +2 -2
- package/dist/ui-app/src/lib/effective-agent.d.ts +47 -0
- package/dist/ui-app/src/lib/effective-agent.js +37 -0
- package/package.json +1 -1
- package/dist/ui/assets/AgentModelModal-B8ihisnq.js +0 -1
- package/dist/ui/assets/AgentsView-DC2kfIH_.js +0 -1
- package/dist/ui/assets/ChecksView-DwfZfOc9.js +0 -0
- package/dist/ui/assets/ContextView-2tUPHg0-.js +0 -4
- package/dist/ui/assets/DashboardView-BHv_FI1_.js +0 -1
- package/dist/ui/assets/DiffView-DphAy_We.js +0 -4
- package/dist/ui/assets/DiffView-gEzzmiij.css +0 -1
- package/dist/ui/assets/FailedTestsList-Dr_4RX1g.js +0 -1
- package/dist/ui/assets/InputsView-YBZYQo72.js +0 -1
- package/dist/ui/assets/ReleasesView-BQYf9YdH.js +0 -5
- package/dist/ui/assets/ReleasesView-CDa4RD79.css +0 -1
- package/dist/ui/assets/SettingsView-CwgTYYnZ.js +0 -4
- package/dist/ui/assets/StoriesView-DHA8hQcu.js +0 -1
- package/dist/ui/assets/WorkView-DYpJLDv-.js +0 -2
- package/dist/ui/assets/architecture-7GRP2DOG-BILS7kzQ.js +0 -1
- package/dist/ui/assets/channel-C2fJCoOG.js +0 -1
- package/dist/ui/assets/classDiagram-ZZMXUADV-D2HbZ8pG.js +0 -1
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-D2HbZ8pG.js +0 -1
- package/dist/ui/assets/config-Brg64iOP.js +0 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-Cq__3onz.js +0 -1
- package/dist/ui/assets/flowDiagram-HODETNUW-oqazLecl.js +0 -1
- package/dist/ui/assets/index-BzQofiD_.js +0 -54
- package/dist/ui/assets/index-CjufFN0L.css +0 -1
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-CfWwDqoE.js +0 -1
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-BHW-SzuB.js +0 -1
- package/dist/ui/assets/railroad-peg-WCYAUIDC-DqepkVj5.js +0 -1
- package/dist/ui/assets/repo-CMEa_Ho-.js +0 -2
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-C-B8vQtJ.js +0 -1
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-l739H5Fp.js +0 -8
package/dist/.build-info.json
CHANGED
package/dist/.build-stamp.json
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI/API parity map (#0723). Every registered `/api/*` route must match at
|
|
3
|
+
* least one rule here or the parity test fails.
|
|
4
|
+
*
|
|
5
|
+
* Allowlist entries use exact method + pattern strings from `Router.listRoutes()`
|
|
6
|
+
* — no broad substring matchers that could hide new routes.
|
|
7
|
+
*/
|
|
8
|
+
export interface ApiRouteRef {
|
|
9
|
+
method: string;
|
|
10
|
+
pattern: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function isApiRouteCovered(route: ApiRouteRef): boolean;
|
|
13
|
+
export declare function uncoveredApiRoutes(routes: readonly ApiRouteRef[]): ApiRouteRef[];
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI/API parity map (#0723). Every registered `/api/*` route must match at
|
|
3
|
+
* least one rule here or the parity test fails.
|
|
4
|
+
*
|
|
5
|
+
* Allowlist entries use exact method + pattern strings from `Router.listRoutes()`
|
|
6
|
+
* — no broad substring matchers that could hide new routes.
|
|
7
|
+
*/
|
|
8
|
+
const exact = (method, pattern) => (r) => r.method === method && r.pattern === pattern;
|
|
9
|
+
const re = (method, patternSource) => (r) => r.method === method && r.pattern === patternSource;
|
|
10
|
+
/** Routes implemented by the server-backed control CLI (#0723). */
|
|
11
|
+
const CONTROL_API_MATCHERS = [
|
|
12
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/(start|pause|message|done)$/.source),
|
|
13
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/preview$/.source),
|
|
14
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/preview\/stop$/.source),
|
|
15
|
+
exact("GET", "/api/config"),
|
|
16
|
+
exact("PATCH", "/api/config"),
|
|
17
|
+
exact("GET", "/api/remote-validation/status"),
|
|
18
|
+
exact("POST", "/api/remote-validation/test"),
|
|
19
|
+
exact("GET", "/api/agents/running"),
|
|
20
|
+
exact("GET", "/api/stats/board"),
|
|
21
|
+
// `repoos review` → PATCH status=review; `repoos override` → PATCH overrides
|
|
22
|
+
re("PATCH", /^\/api\/tasks\/([^/]+)$/.source),
|
|
23
|
+
];
|
|
24
|
+
/** Routes covered by existing file-level CLI commands (not HTTP). */
|
|
25
|
+
const FILE_CLI_MATCHERS = [
|
|
26
|
+
exact("GET", "/api/health"),
|
|
27
|
+
exact("GET", "/api/tasks"),
|
|
28
|
+
re("GET", /^\/api\/tasks\/([^/]+)$/.source),
|
|
29
|
+
exact("POST", "/api/tasks"),
|
|
30
|
+
re("DELETE", /^\/api\/tasks\/([^/]+)$/.source),
|
|
31
|
+
exact("GET", "/api/check-plan"),
|
|
32
|
+
];
|
|
33
|
+
/** UI-only, SSE/hub, auth, or internal routes — no CLI required. */
|
|
34
|
+
const UI_ONLY_MATCHERS = [
|
|
35
|
+
(r) => r.pattern.startsWith("/api/auth/"),
|
|
36
|
+
(r) => r.pattern.startsWith("/api/hub/"),
|
|
37
|
+
(r) => r.pattern.startsWith("/api/telegram/"),
|
|
38
|
+
exact("GET", "/api/index"),
|
|
39
|
+
exact("GET", "/api/board"),
|
|
40
|
+
exact("GET", "/api/counts"),
|
|
41
|
+
exact("GET", "/api/docs"),
|
|
42
|
+
(r) => r.pattern.startsWith("/api/repo/"),
|
|
43
|
+
(r) => r.pattern.startsWith("/api/inputs"),
|
|
44
|
+
(r) => r.pattern.startsWith("/api/skills"),
|
|
45
|
+
(r) => r.pattern.startsWith("/api/skill-registry"),
|
|
46
|
+
(r) => r.pattern.startsWith("/api/stories"),
|
|
47
|
+
exact("GET", "/api/system"),
|
|
48
|
+
exact("GET", "/api/system/logs"),
|
|
49
|
+
(r) => r.pattern.startsWith("/api/support/"),
|
|
50
|
+
(r) => r.pattern.startsWith("/api/tunnel/"),
|
|
51
|
+
(r) => r.pattern.startsWith("/api/release"),
|
|
52
|
+
(r) => r.pattern.startsWith("/api/deployments"),
|
|
53
|
+
(r) => r.pattern.startsWith("/api/chat"),
|
|
54
|
+
(r) => r.pattern.startsWith("/api/debugger"),
|
|
55
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/debugger$/.source),
|
|
56
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/message$/.source),
|
|
57
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/interrupt$/.source),
|
|
58
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/send-to-engineer$/.source),
|
|
59
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/send-to-pm$/.source),
|
|
60
|
+
re("POST", /^\/api\/agents\/built-in\/([^/]+)\/run$/.source),
|
|
61
|
+
(r) => r.pattern.startsWith("/api/cto"),
|
|
62
|
+
exact("GET", "/api/stats/by-type"),
|
|
63
|
+
exact("GET", "/api/stats/daily"),
|
|
64
|
+
exact("POST", "/api/system/kill-process"),
|
|
65
|
+
exact("GET", "/api/system/run-tests"),
|
|
66
|
+
exact("POST", "/api/system/run-tests"),
|
|
67
|
+
exact("GET", "/api/attention"),
|
|
68
|
+
exact("GET", "/api/check-runs"),
|
|
69
|
+
(r) => r.pattern.startsWith("/api/integration"),
|
|
70
|
+
exact("GET", "/api/close-out/outcomes"),
|
|
71
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/integration-job$/.source),
|
|
72
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/done\/cancel$/.source),
|
|
73
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/worktree-handoff\/discard$/.source),
|
|
74
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/review$/.source),
|
|
75
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/review\/again$/.source),
|
|
76
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/review\/message$/.source),
|
|
77
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/pm\/message$/.source),
|
|
78
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/pm\/interrupt$/.source),
|
|
79
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/attachments\/([^/]+)$/.source),
|
|
80
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/attachments$/.source),
|
|
81
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/shots$/.source),
|
|
82
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/shots$/.source),
|
|
83
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/shots\/([^/]+)$/.source),
|
|
84
|
+
re("DELETE", /^\/api\/tasks\/([^/]+)\/shots\/([^/]+)$/.source),
|
|
85
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/ui-verification$/.source),
|
|
86
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/needs-input\/dismiss$/.source),
|
|
87
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/clear-worktree$/.source),
|
|
88
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/output$/.source),
|
|
89
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/logs$/.source),
|
|
90
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/checks$/.source),
|
|
91
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/stats$/.source),
|
|
92
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/diff-stats$/.source),
|
|
93
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/diff$/.source),
|
|
94
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/merge-conflict$/.source),
|
|
95
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/worktree-dirty$/.source),
|
|
96
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/file$/.source),
|
|
97
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/remote-validation\/log$/.source),
|
|
98
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/remote-validation\/events$/.source),
|
|
99
|
+
exact("GET", "/api/config/raw"),
|
|
100
|
+
exact("PUT", "/api/config/raw"),
|
|
101
|
+
(r) => r.pattern.startsWith("/api/dev/"),
|
|
102
|
+
(r) => r.pattern.startsWith("/api/models"),
|
|
103
|
+
(r) => r.pattern.startsWith("/api/playground"),
|
|
104
|
+
(r) => r.pattern.startsWith("/api/model-providers"),
|
|
105
|
+
exact("GET", "/api/agents/queued"),
|
|
106
|
+
exact("GET", "/api/agents/detect"),
|
|
107
|
+
exact("GET", "/api/agents/detect/stream"),
|
|
108
|
+
exact("POST", "/api/agents/updates"),
|
|
109
|
+
re("GET", /^\/api\/agents\/([^/]+)\/logs$/.source),
|
|
110
|
+
(r) => r.pattern.startsWith("/api/ntfy/"),
|
|
111
|
+
exact("POST", "/api/transcribe"),
|
|
112
|
+
(r) => r.pattern.startsWith("/api/service/"),
|
|
113
|
+
exact("POST", "/api/server/restart"),
|
|
114
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/(sync|hotfix|abandon|reopen|archive|unarchive)$/.source),
|
|
115
|
+
exact("POST", "/api/tasks/freeform"),
|
|
116
|
+
exact("POST", "/api/docs/create"),
|
|
117
|
+
exact("POST", "/api/docs/freeform"),
|
|
118
|
+
re("GET", /^\/api\/freeform\/runs\/([^/]+)$/.source),
|
|
119
|
+
];
|
|
120
|
+
const ALL_MATCHERS = [...CONTROL_API_MATCHERS, ...FILE_CLI_MATCHERS, ...UI_ONLY_MATCHERS];
|
|
121
|
+
export function isApiRouteCovered(route) {
|
|
122
|
+
if (!route.pattern.startsWith("/api/"))
|
|
123
|
+
return true;
|
|
124
|
+
return ALL_MATCHERS.some((m) => m(route));
|
|
125
|
+
}
|
|
126
|
+
export function uncoveredApiRoutes(routes) {
|
|
127
|
+
return routes.filter((r) => r.pattern.startsWith("/api/") && !isApiRouteCovered(r));
|
|
128
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function cliSessionPath(root: string, cacheDir: string): string;
|
|
2
|
+
export declare function readCliSession(root: string, cacheDir: string): string | null;
|
|
3
|
+
export declare function writeCliSession(root: string, cacheDir: string, token: string): void;
|
|
4
|
+
export declare function clearCliSession(root: string, cacheDir: string): void;
|
|
5
|
+
/** Parse `Set-Cookie` for the RepoOS session token value. */
|
|
6
|
+
export declare function sessionTokenFromSetCookie(setCookie: string | string[] | undefined, cookieName: string): string | null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persisted RepoOS web session for the CLI (#0723).
|
|
3
|
+
*
|
|
4
|
+
* Stores the HttpOnly session token the server issued at login so repeat CLI
|
|
5
|
+
* calls do not need OTP every time. Mode 0600, never logged. Loopback calls
|
|
6
|
+
* still prefer the server's local-cli-token when present (#0582).
|
|
7
|
+
*/
|
|
8
|
+
import { chmodSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from "node:fs";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
export function cliSessionPath(root, cacheDir) {
|
|
11
|
+
return join(root, cacheDir, "cli-session");
|
|
12
|
+
}
|
|
13
|
+
export function readCliSession(root, cacheDir) {
|
|
14
|
+
try {
|
|
15
|
+
const token = readFileSync(cliSessionPath(root, cacheDir), "utf8").trim();
|
|
16
|
+
return token || null;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function writeCliSession(root, cacheDir, token) {
|
|
23
|
+
const dir = join(root, cacheDir);
|
|
24
|
+
mkdirSync(dir, { recursive: true });
|
|
25
|
+
const path = cliSessionPath(root, cacheDir);
|
|
26
|
+
writeFileSync(path, `${token}\n`, { mode: 0o600 });
|
|
27
|
+
try {
|
|
28
|
+
chmodSync(path, 0o600);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
/* best-effort */
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function clearCliSession(root, cacheDir) {
|
|
35
|
+
try {
|
|
36
|
+
unlinkSync(cliSessionPath(root, cacheDir));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
/* absent */
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Parse `Set-Cookie` for the RepoOS session token value. */
|
|
43
|
+
export function sessionTokenFromSetCookie(setCookie, cookieName) {
|
|
44
|
+
if (!setCookie)
|
|
45
|
+
return null;
|
|
46
|
+
const parts = Array.isArray(setCookie) ? setCookie : [setCookie];
|
|
47
|
+
for (const header of parts) {
|
|
48
|
+
const segment = header.split(";")[0]?.trim();
|
|
49
|
+
if (!segment?.startsWith(`${cookieName}=`))
|
|
50
|
+
continue;
|
|
51
|
+
const value = segment.slice(cookieName.length + 1);
|
|
52
|
+
if (value)
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the engineer a task will run with, from server API payloads (#0723).
|
|
3
|
+
* Uses the same rules as the UI (`effective-agent.ts`), not a local disk reindex.
|
|
4
|
+
*/
|
|
5
|
+
import { type EffectiveAgent, type EffectiveAgentInput } from "../ui-app/src/lib/effective-agent.js";
|
|
6
|
+
export interface ApiTaskOverrides {
|
|
7
|
+
agentOverride?: string | null;
|
|
8
|
+
cliOverride?: string | null;
|
|
9
|
+
modelOverride?: string | null;
|
|
10
|
+
}
|
|
11
|
+
export declare function effectiveEngineerFromApi(agents: readonly EffectiveAgentInput[], task: ApiTaskOverrides): EffectiveAgent;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the engineer a task will run with, from server API payloads (#0723).
|
|
3
|
+
* Uses the same rules as the UI (`effective-agent.ts`), not a local disk reindex.
|
|
4
|
+
*/
|
|
5
|
+
import { resolveEffectiveAgent, } from "../ui-app/src/lib/effective-agent.js";
|
|
6
|
+
export function effectiveEngineerFromApi(agents, task) {
|
|
7
|
+
return resolveEffectiveAgent(agents, {
|
|
8
|
+
agentOverride: task.agentOverride ?? null,
|
|
9
|
+
cliOverride: task.cliOverride ?? null,
|
|
10
|
+
modelOverride: task.modelOverride ?? null,
|
|
11
|
+
}, "engineer");
|
|
12
|
+
}
|
package/dist/cli/help.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* usage line lives in per-command help rather than inline.
|
|
9
9
|
*/
|
|
10
10
|
import { readVersion } from "../core/version.js";
|
|
11
|
+
import { PRIORITIES, TASK_TYPES } from "../core/types.js";
|
|
11
12
|
import { c } from "./colors.js";
|
|
12
13
|
import { table, termWidth, visibleWidth, wrap } from "./layout.js";
|
|
13
14
|
/** Commands whose own argument parser already handles `--help`. */
|
|
@@ -18,8 +19,9 @@ const GROUPS = [
|
|
|
18
19
|
commands: [
|
|
19
20
|
{
|
|
20
21
|
name: "init",
|
|
21
|
-
usage: "init [name]",
|
|
22
|
+
usage: "init [name|--dir <path>] [--new --description <text>|--description-file <path>|- --areas a,b --commit|--no-commit --launch|--no-launch --json] [--docs-from <dir|file|.zip>] [--starter vision|codebase] [--force]",
|
|
22
23
|
desc: "Scaffold work/, repoos.toml, AGENTS.md; guided flow for a new project",
|
|
24
|
+
flags: "new-project (--new/--yes): --description · --description-file · --areas · --layout · --commit/--no-commit · --launch/--no-launch · --preview-stub/--no-preview-stub · --dir · --force · --json. Any init: --docs-from <dir|file|.zip> · --starter vision|codebase · --force. Existing-repo init takes none of the new-project flags.",
|
|
23
25
|
},
|
|
24
26
|
{
|
|
25
27
|
name: "upgrade",
|
|
@@ -46,15 +48,21 @@ const GROUPS = [
|
|
|
46
48
|
{ name: "show", usage: "show <id>", desc: "Show a task's full spec" },
|
|
47
49
|
{
|
|
48
50
|
name: "new",
|
|
49
|
-
usage:
|
|
51
|
+
usage: `new "<title>" [--ai --type ${TASK_TYPES.join("|")} --area <a> --priority ${PRIORITIES.join("|")} --body <b>]`,
|
|
50
52
|
desc: "Create a task",
|
|
51
|
-
flags:
|
|
53
|
+
flags: `--ai · --type · --area · --priority · --body`,
|
|
52
54
|
},
|
|
53
55
|
{
|
|
54
56
|
name: "new-doc",
|
|
55
57
|
usage: 'new-doc "<desc>"',
|
|
56
58
|
desc: "Create a document from a description via the PM agent",
|
|
57
59
|
},
|
|
60
|
+
{
|
|
61
|
+
name: "docs",
|
|
62
|
+
usage: "docs <import|scaffold> [path] [--force] [--dry-run]",
|
|
63
|
+
desc: "Import an existing doc set, or scaffold starter project docs",
|
|
64
|
+
flags: "--force · --dry-run",
|
|
65
|
+
},
|
|
58
66
|
{
|
|
59
67
|
name: "note",
|
|
60
68
|
usage: 'note <id> "<text>"',
|
|
@@ -63,14 +71,86 @@ const GROUPS = [
|
|
|
63
71
|
{
|
|
64
72
|
name: "mv",
|
|
65
73
|
usage: "mv <id> <status> [--note <text>] [--force-not-merged]",
|
|
66
|
-
desc: "Move a task to a new status —
|
|
74
|
+
desc: "Move a task to a new status (file write) — use review/done for handoff and close-out",
|
|
67
75
|
flags: '--note "..." · --force-not-merged',
|
|
68
76
|
},
|
|
77
|
+
{
|
|
78
|
+
name: "start",
|
|
79
|
+
usage: "start <id> [--fresh] [--json] [--port N]",
|
|
80
|
+
desc: "Start or resume the engineer on a task (POST /api/tasks/:id/start)",
|
|
81
|
+
flags: "--fresh · --json · --port",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "pause",
|
|
85
|
+
usage: "pause <id> [--json] [--port N]",
|
|
86
|
+
desc: "Pause the running agent (POST /api/tasks/:id/pause)",
|
|
87
|
+
flags: "--json · --port",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "message",
|
|
91
|
+
usage: 'message <id> "<text>" [--json] [--port N]',
|
|
92
|
+
desc: "Send a follow-up to the task agent (POST /api/tasks/:id/message)",
|
|
93
|
+
flags: "--json · --port",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "review",
|
|
97
|
+
usage: "review <id> [--wait] [--json] [--port N]",
|
|
98
|
+
desc: "Request review synchronously (PATCH status=review; waits for handoff)",
|
|
99
|
+
flags: "--wait · --json · --port",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "done",
|
|
103
|
+
usage: "done <id> [--commit-dirty] [--wait] [--json] [--port N]",
|
|
104
|
+
desc: "Move to done through the close-out pipeline (POST /api/tasks/:id/done)",
|
|
105
|
+
flags: "--commit-dirty · --wait · --json · --port",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: "override",
|
|
109
|
+
usage: "override <id> [--cli <name>] [--model <model>] [--json] [--port N]",
|
|
110
|
+
desc: "Set per-task engineer overrides (PATCH /api/tasks/:id)",
|
|
111
|
+
flags: "--cli · --model · --json · --port",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "preview",
|
|
115
|
+
usage: "preview <id> [--stop] [--json] [--port N]",
|
|
116
|
+
desc: "Start or stop the task preview (POST /api/tasks/:id/preview)",
|
|
117
|
+
flags: "--stop · --json · --port",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "config",
|
|
121
|
+
usage: "config get|set <key> [value] [--json] [--port N]",
|
|
122
|
+
desc: "Read or write server config (GET/PATCH /api/config)",
|
|
123
|
+
flags: "--json · --port",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "runners",
|
|
127
|
+
usage: "runners [--probe] [--json] [--port N]",
|
|
128
|
+
desc: "Remote validation runner status (and optional probe)",
|
|
129
|
+
flags: "--probe · --json · --port",
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "agents",
|
|
133
|
+
usage: "agents [--json] [--port N]",
|
|
134
|
+
desc: "List running agents (GET /api/agents/running)",
|
|
135
|
+
flags: "--json · --port",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "stats",
|
|
139
|
+
usage: "stats [--json] [--port N]",
|
|
140
|
+
desc: "Board spend summary (GET /api/stats/board)",
|
|
141
|
+
flags: "--json · --port",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "rm",
|
|
145
|
+
usage: "rm <id> --yes",
|
|
146
|
+
desc: "Delete a task file from the repo (same as the UI Delete button)",
|
|
147
|
+
flags: "--yes",
|
|
148
|
+
},
|
|
69
149
|
{
|
|
70
150
|
name: "update",
|
|
71
151
|
usage: "update <id> [flags]",
|
|
72
152
|
desc: "Edit a task's metadata or body",
|
|
73
|
-
flags:
|
|
153
|
+
flags: `--title · --area · --priority ${PRIORITIES.join("|")} · --type ${TASK_TYPES.join("|")} · --body · --branch · --assigned-to`,
|
|
74
154
|
},
|
|
75
155
|
{
|
|
76
156
|
name: "index",
|
|
@@ -171,6 +251,10 @@ const GROUPS = [
|
|
|
171
251
|
const EXAMPLES = [
|
|
172
252
|
{ cmd: "repoos init" },
|
|
173
253
|
{ cmd: "repoos init myproject", comment: "guided new-project flow outside a git repo" },
|
|
254
|
+
{
|
|
255
|
+
cmd: 'repoos init myproject --new --description "A tiny social app" --areas web,api --no-launch',
|
|
256
|
+
comment: "non-interactive new project (no TTY, e.g. an agent)",
|
|
257
|
+
},
|
|
174
258
|
{
|
|
175
259
|
cmd: 'repoos new "Add company dashboard" --ai --type feature --area web,server --priority p1',
|
|
176
260
|
},
|
package/dist/cli/index.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Dependency-free arg routing — no commander/yargs needed for Stage 1.
|
|
5
5
|
*/
|
|
6
6
|
import { cmdInit } from "../commands/init.js";
|
|
7
|
-
import { cmdList, cmdShow, cmdMv, cmdUpdate, cmdNew, cmdIndex, cmdNote, } from "../commands/tasks.js";
|
|
8
|
-
import { cmdNewDoc } from "../commands/docs.js";
|
|
7
|
+
import { cmdList, cmdShow, cmdMv, cmdRm, cmdUpdate, cmdNew, cmdIndex, cmdNote, } from "../commands/tasks.js";
|
|
8
|
+
import { cmdDocs, cmdNewDoc } from "../commands/docs.js";
|
|
9
9
|
import { cmdGc } from "../commands/gc.js";
|
|
10
10
|
import { cmdOutline } from "../commands/outline.js";
|
|
11
11
|
import { cmdCheck } from "../commands/check.js";
|
|
@@ -20,6 +20,7 @@ import { cmdDoctor } from "../commands/doctor.js";
|
|
|
20
20
|
import { cmdCertify } from "../commands/certify.js";
|
|
21
21
|
import { cmdSupport } from "../commands/support.js";
|
|
22
22
|
import { cmdService } from "../commands/service.js";
|
|
23
|
+
import { cmdAgentsRunning, cmdConfig, cmdDone, cmdMessage, cmdOverride, cmdPause, cmdPreview, cmdReview, cmdRunners, cmdStart, cmdStats, } from "../commands/control-api.js";
|
|
23
24
|
import { checkBuild } from "../core/build.js";
|
|
24
25
|
import { loadConfig } from "../core/config.js";
|
|
25
26
|
import { reexecAfterStaleBuild, reexecUnderBunIfRequested } from "../core/runtime.js";
|
|
@@ -152,6 +153,10 @@ function main() {
|
|
|
152
153
|
case "note":
|
|
153
154
|
cmdNote(rest);
|
|
154
155
|
break;
|
|
156
|
+
case "rm":
|
|
157
|
+
case "delete":
|
|
158
|
+
cmdRm(rest);
|
|
159
|
+
break;
|
|
155
160
|
case "update":
|
|
156
161
|
cmdUpdate(rest);
|
|
157
162
|
break;
|
|
@@ -162,6 +167,9 @@ function main() {
|
|
|
162
167
|
case "new-doc":
|
|
163
168
|
void cmdNewDoc(rest);
|
|
164
169
|
break;
|
|
170
|
+
case "docs":
|
|
171
|
+
void cmdDocs(rest);
|
|
172
|
+
break;
|
|
165
173
|
case "index":
|
|
166
174
|
case "reindex":
|
|
167
175
|
cmdIndex(rest);
|
|
@@ -185,6 +193,72 @@ function main() {
|
|
|
185
193
|
case "check":
|
|
186
194
|
void cmdCheck(rest);
|
|
187
195
|
break;
|
|
196
|
+
case "start":
|
|
197
|
+
void cmdStart(rest).then((code) => {
|
|
198
|
+
if (code !== 0)
|
|
199
|
+
process.exitCode = code;
|
|
200
|
+
});
|
|
201
|
+
break;
|
|
202
|
+
case "pause":
|
|
203
|
+
void cmdPause(rest).then((code) => {
|
|
204
|
+
if (code !== 0)
|
|
205
|
+
process.exitCode = code;
|
|
206
|
+
});
|
|
207
|
+
break;
|
|
208
|
+
case "message":
|
|
209
|
+
void cmdMessage(rest).then((code) => {
|
|
210
|
+
if (code !== 0)
|
|
211
|
+
process.exitCode = code;
|
|
212
|
+
});
|
|
213
|
+
break;
|
|
214
|
+
case "review":
|
|
215
|
+
void cmdReview(rest).then((code) => {
|
|
216
|
+
if (code !== 0)
|
|
217
|
+
process.exitCode = code;
|
|
218
|
+
});
|
|
219
|
+
break;
|
|
220
|
+
case "done":
|
|
221
|
+
void cmdDone(rest).then((code) => {
|
|
222
|
+
if (code !== 0)
|
|
223
|
+
process.exitCode = code;
|
|
224
|
+
});
|
|
225
|
+
break;
|
|
226
|
+
case "override":
|
|
227
|
+
void cmdOverride(rest).then((code) => {
|
|
228
|
+
if (code !== 0)
|
|
229
|
+
process.exitCode = code;
|
|
230
|
+
});
|
|
231
|
+
break;
|
|
232
|
+
case "preview":
|
|
233
|
+
void cmdPreview(rest).then((code) => {
|
|
234
|
+
if (code !== 0)
|
|
235
|
+
process.exitCode = code;
|
|
236
|
+
});
|
|
237
|
+
break;
|
|
238
|
+
case "config":
|
|
239
|
+
void cmdConfig(rest).then((code) => {
|
|
240
|
+
if (code !== 0)
|
|
241
|
+
process.exitCode = code;
|
|
242
|
+
});
|
|
243
|
+
break;
|
|
244
|
+
case "runners":
|
|
245
|
+
void cmdRunners(rest).then((code) => {
|
|
246
|
+
if (code !== 0)
|
|
247
|
+
process.exitCode = code;
|
|
248
|
+
});
|
|
249
|
+
break;
|
|
250
|
+
case "agents":
|
|
251
|
+
void cmdAgentsRunning(rest).then((code) => {
|
|
252
|
+
if (code !== 0)
|
|
253
|
+
process.exitCode = code;
|
|
254
|
+
});
|
|
255
|
+
break;
|
|
256
|
+
case "stats":
|
|
257
|
+
void cmdStats(rest).then((code) => {
|
|
258
|
+
if (code !== 0)
|
|
259
|
+
process.exitCode = code;
|
|
260
|
+
});
|
|
261
|
+
break;
|
|
188
262
|
case "shot":
|
|
189
263
|
void cmdShot(rest)
|
|
190
264
|
.then((code) => {
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for the running RepoOS control plane (#0723).
|
|
3
|
+
*
|
|
4
|
+
* Authenticates with the loopback local-cli token when available (#0582), else a
|
|
5
|
+
* stored session cookie, and transparently re-logs in via the dev backdoor on
|
|
6
|
+
* 401 after a server reload (never prints the backdoor code).
|
|
7
|
+
*/
|
|
8
|
+
import { loadConfig } from "../core/config.js";
|
|
9
|
+
export declare class RepoOsApiError extends Error {
|
|
10
|
+
readonly status: number;
|
|
11
|
+
readonly body?: unknown | undefined;
|
|
12
|
+
constructor(message: string, status: number, body?: unknown | undefined);
|
|
13
|
+
}
|
|
14
|
+
export interface RepoOsApiOptions {
|
|
15
|
+
root?: string;
|
|
16
|
+
port?: number;
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ApiJson {
|
|
20
|
+
ok?: boolean;
|
|
21
|
+
error?: string;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
export declare function resolveControlPlaneBase(opts?: RepoOsApiOptions): {
|
|
25
|
+
root: string;
|
|
26
|
+
baseUrl: string;
|
|
27
|
+
config: ReturnType<typeof loadConfig>;
|
|
28
|
+
};
|
|
29
|
+
export declare class RepoOsApi {
|
|
30
|
+
private readonly root;
|
|
31
|
+
private readonly baseUrl;
|
|
32
|
+
private readonly config;
|
|
33
|
+
private session;
|
|
34
|
+
constructor(opts?: RepoOsApiOptions);
|
|
35
|
+
private localToken;
|
|
36
|
+
get base(): string;
|
|
37
|
+
private buildHeaders;
|
|
38
|
+
private devBackdoorLogin;
|
|
39
|
+
health(): Promise<boolean>;
|
|
40
|
+
request(method: string, path: string, body?: unknown, opts?: {
|
|
41
|
+
retryAuth?: boolean;
|
|
42
|
+
}): Promise<{
|
|
43
|
+
status: number;
|
|
44
|
+
body: ApiJson;
|
|
45
|
+
}>;
|
|
46
|
+
requestOk(method: string, path: string, body?: unknown, allowedStatuses?: number[]): Promise<ApiJson>;
|
|
47
|
+
}
|
|
48
|
+
export declare function pollUntil<T>(fn: () => Promise<T | null>, opts: {
|
|
49
|
+
intervalMs?: number;
|
|
50
|
+
timeoutMs?: number;
|
|
51
|
+
label?: string;
|
|
52
|
+
}): Promise<T>;
|