@repo-os/repoos 0.5.66 → 0.5.68
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 +132 -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 +97 -6
- package/dist/cli/index.js +93 -0
- package/dist/cli/repoos-api.d.ts +56 -0
- package/dist/cli/repoos-api.js +179 -0
- package/dist/cli/sse-client.d.ts +5 -0
- package/dist/cli/sse-client.js +42 -0
- package/dist/cli/task-flags.d.ts +23 -0
- package/dist/cli/task-flags.js +79 -0
- package/dist/commands/check.d.ts +12 -9
- package/dist/commands/check.js +52 -18
- package/dist/commands/control-api.d.ts +14 -0
- package/dist/commands/control-api.js +567 -0
- package/dist/commands/driver.d.ts +1 -0
- package/dist/commands/driver.js +178 -0
- package/dist/commands/init.js +20 -1
- package/dist/commands/shot.js +17 -11
- package/dist/commands/status.d.ts +46 -0
- package/dist/commands/status.js +109 -10
- package/dist/commands/stories.d.ts +14 -0
- package/dist/commands/stories.js +294 -0
- package/dist/commands/tasks.d.ts +20 -6
- package/dist/commands/tasks.js +57 -49
- package/dist/commands/watch.d.ts +16 -0
- package/dist/commands/watch.js +109 -0
- 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 +19 -2
- package/dist/core/approval-policy.js +55 -0
- package/dist/core/attention.d.ts +18 -2
- package/dist/core/attention.js +106 -1
- package/dist/core/build.d.ts +2 -0
- package/dist/core/build.js +7 -3
- 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 +15 -1
- package/dist/core/check-failure-summary.js +88 -1
- package/dist/core/check-results.js +4 -1
- package/dist/core/check-slowness.d.ts +160 -0
- package/dist/core/check-slowness.js +203 -0
- package/dist/core/check-store.d.ts +19 -2
- package/dist/core/check-store.js +57 -4
- package/dist/core/close-out-gate.d.ts +97 -0
- package/dist/core/close-out-gate.js +132 -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 +25 -0
- package/dist/core/config.js +233 -23
- package/dist/core/cto-actions.d.ts +56 -0
- package/dist/core/cto-actions.js +98 -0
- package/dist/core/decision-digest.d.ts +102 -0
- package/dist/core/decision-digest.js +416 -0
- package/dist/core/dependency-install.d.ts +18 -0
- package/dist/core/dependency-install.js +81 -1
- package/dist/core/doctor.js +48 -1
- package/dist/core/driver-brief.d.ts +203 -0
- package/dist/core/driver-brief.js +294 -0
- package/dist/core/git.d.ts +50 -6
- package/dist/core/git.js +127 -41
- package/dist/core/lockfile-conflict.d.ts +12 -0
- package/dist/core/lockfile-conflict.js +83 -0
- package/dist/core/needs-input.d.ts +2 -0
- package/dist/core/needs-input.js +16 -2
- package/dist/core/page-browser-gate.d.ts +1 -1
- package/dist/core/project-docs-agents-paths.test.d.ts +1 -0
- package/dist/core/project-docs-agents-paths.test.js +22 -0
- package/dist/core/project-docs.d.ts +5 -0
- package/dist/core/project-docs.js +37 -0
- package/dist/core/record-creator.d.ts +13 -0
- package/dist/core/record-creator.js +45 -0
- package/dist/core/record-creator.test.d.ts +1 -0
- package/dist/core/record-creator.test.js +74 -0
- package/dist/core/remote-pool-queue.d.ts +13 -0
- package/dist/core/remote-pool-queue.js +26 -0
- package/dist/core/repoos.d.ts +4 -0
- package/dist/core/repoos.js +5 -0
- package/dist/core/review-passes.d.ts +11 -0
- package/dist/core/review-passes.js +14 -0
- package/dist/core/review-verdict.d.ts +5 -0
- package/dist/core/review-verdict.js +28 -0
- package/dist/core/review-verdict.test.js +8 -1
- package/dist/core/review-verification.d.ts +107 -0
- package/dist/core/review-verification.js +281 -0
- package/dist/core/review-verification.test.d.ts +1 -0
- package/dist/core/review-verification.test.js +148 -0
- package/dist/core/service-manager.d.ts +9 -0
- package/dist/core/service-manager.js +11 -0
- package/dist/core/shot-assertions.d.ts +50 -0
- package/dist/core/shot-assertions.js +109 -0
- package/dist/core/shot-fixtures.d.ts +14 -0
- package/dist/core/shot-fixtures.js +24 -0
- package/dist/core/shot-page.d.ts +7 -1
- package/dist/core/shot-page.js +21 -9
- package/dist/core/shot-plan.d.ts +61 -0
- package/dist/core/shot-plan.js +126 -3
- package/dist/core/story-definition-files.js +1 -1
- package/dist/core/task-activity-strip.test.d.ts +1 -0
- package/dist/core/task-activity-strip.test.js +25 -0
- package/dist/core/task-body-normalize.test.d.ts +1 -0
- package/dist/core/task-body-normalize.test.js +72 -0
- package/dist/core/task-proof-commands.d.ts +10 -0
- package/dist/core/task-proof-commands.js +59 -0
- package/dist/core/task-underspecified.d.ts +17 -0
- package/dist/core/task-underspecified.js +47 -0
- package/dist/core/task.d.ts +13 -0
- package/dist/core/task.js +106 -1
- package/dist/core/types.d.ts +71 -1
- package/dist/core/types.js +3 -0
- package/dist/core/ui-index.d.ts +7 -0
- package/dist/core/ui-index.js +10 -0
- package/dist/server/agents.d.ts +58 -0
- package/dist/server/agents.js +301 -18
- 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 +5 -1
- package/dist/server/approval-policy.js +29 -0
- package/dist/server/attention-events.js +1 -1
- package/dist/server/attention-feed.d.ts +52 -1
- package/dist/server/attention-feed.js +121 -1
- package/dist/server/board-events.d.ts +26 -0
- package/dist/server/board-events.js +146 -0
- 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/conflict-resolution.d.ts +344 -0
- package/dist/server/conflict-resolution.js +501 -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 +40 -0
- package/dist/server/cto-actions.js +253 -0
- package/dist/server/cto-heartbeat.d.ts +14 -0
- package/dist/server/cto-heartbeat.js +24 -0
- package/dist/server/cto-monitor.d.ts +6 -0
- package/dist/server/cto-monitor.js +23 -2
- package/dist/server/cto.d.ts +7 -2
- package/dist/server/cto.js +28 -38
- package/dist/server/debug-tldr.d.ts +2 -2
- package/dist/server/debug-tldr.js +4 -1
- package/dist/server/decision-digest.d.ts +16 -0
- package/dist/server/decision-digest.js +94 -0
- package/dist/server/distribution.d.ts +13 -0
- package/dist/server/distribution.js +37 -0
- package/dist/server/done.d.ts +20 -1
- package/dist/server/done.js +2 -4
- package/dist/server/driver-brief.d.ts +18 -0
- package/dist/server/driver-brief.js +292 -0
- 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 +1 -0
- package/dist/server/engineer-remote-self-check.js +3 -1
- 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 +4 -12
- package/dist/server/handoff.js +55 -55
- package/dist/server/integration-job.d.ts +46 -6
- package/dist/server/integration-job.js +78 -3
- package/dist/server/integration-orchestrator.d.ts +157 -7
- package/dist/server/integration-orchestrator.js +980 -177
- package/dist/server/integration-status.d.ts +7 -2
- package/dist/server/integration-status.js +18 -4
- package/dist/server/live-index.d.ts +20 -0
- package/dist/server/live-index.js +22 -1
- package/dist/server/notifications/reasons.js +1 -0
- package/dist/server/pre-review-remote-gate.d.ts +15 -0
- package/dist/server/pre-review-remote-gate.js +39 -0
- package/dist/server/preview-verification-slot.d.ts +11 -0
- package/dist/server/preview-verification-slot.js +34 -0
- package/dist/server/release.d.ts +7 -0
- package/dist/server/release.js +16 -0
- package/dist/server/reload.d.ts +4 -0
- package/dist/server/reload.js +6 -0
- package/dist/server/remote-validation.d.ts +524 -6
- package/dist/server/remote-validation.js +1750 -199
- package/dist/server/request-close-out.d.ts +2 -0
- package/dist/server/request-close-out.js +36 -6
- package/dist/server/review-verification-gather.d.ts +6 -0
- package/dist/server/review-verification-gather.js +89 -0
- package/dist/server/review.d.ts +8 -1
- package/dist/server/review.js +80 -7
- package/dist/server/routes/attention.js +9 -0
- package/dist/server/routes/decisions.d.ts +3 -0
- package/dist/server/routes/decisions.js +14 -0
- package/dist/server/routes/driver.d.ts +3 -0
- package/dist/server/routes/driver.js +15 -0
- package/dist/server/routes/helpers.d.ts +1 -0
- package/dist/server/routes/index.d.ts +2 -0
- package/dist/server/routes/index.js +2 -0
- package/dist/server/routes/info.js +7 -0
- package/dist/server/routes/router.d.ts +5 -0
- package/dist/server/routes/router.js +7 -0
- package/dist/server/routes/stories.d.ts +30 -1
- package/dist/server/routes/stories.js +112 -9
- package/dist/server/routes/tasks.d.ts +4 -0
- package/dist/server/routes/tasks.js +143 -59
- package/dist/server/routes/types.d.ts +24 -1
- package/dist/server/server.js +220 -21
- package/dist/server/shot-capture.d.ts +8 -21
- package/dist/server/shot-capture.js +62 -9
- package/dist/server/shots.d.ts +16 -0
- package/dist/server/shots.js +6 -0
- package/dist/server/task-body-migration.d.ts +18 -0
- package/dist/server/task-body-migration.js +152 -0
- package/dist/server/task-check.d.ts +6 -0
- package/dist/server/task-check.js +14 -0
- package/dist/server/task-underspecified-flag.d.ts +8 -2
- package/dist/server/task-underspecified-flag.js +53 -4
- package/dist/server/task-watchdog.d.ts +17 -0
- package/dist/server/task-watchdog.js +47 -3
- package/dist/server/ui-handoff-gate.d.ts +73 -2
- package/dist/server/ui-handoff-gate.js +335 -91
- package/dist/server/write.d.ts +7 -0
- package/dist/server/write.js +20 -8
- package/dist/ui/assets/AgentModelModal-BU_T-d03.js +1 -0
- package/dist/ui/assets/AgentsView-0r3QjL0C.css +1 -0
- package/dist/ui/assets/AgentsView-B2AXFnUJ.js +1 -0
- package/dist/ui/assets/ChecksView-CVnvMKM-.css +1 -0
- package/dist/ui/assets/ChecksView-RAHI2BB3.js +0 -0
- package/dist/ui/assets/ContextView-DAxjJdK4.js +4 -0
- package/dist/ui/assets/DashboardView-DtXleA5o.css +1 -0
- package/dist/ui/assets/DashboardView-hZr-QF_E.js +1 -0
- package/dist/ui/assets/{DiffView-BbfRdnyi.js → DiffView-DLFmq-vx.js} +1 -1
- package/dist/ui/assets/FailedTestsList-3_oexlME.js +1 -0
- package/dist/ui/assets/{InputsView-Pm38FTsm.js → InputsView-CE9ZOYMD.js} +1 -1
- package/dist/ui/assets/{LoginView-UddKfAab.js → LoginView-dfYNibLg.js} +1 -1
- package/dist/ui/assets/ReleasesView-BCE0uCPM.css +1 -0
- package/dist/ui/assets/ReleasesView-Cq8kGWZq.js +5 -0
- package/dist/ui/assets/SettingsView-BzZQH1hi.js +4 -0
- package/dist/ui/assets/StoriesView-3P5nmoFU.js +1 -0
- package/dist/ui/assets/{VoiceDictate-CLPxhrXb.js → VoiceDictate-CMtXjAXc.js} +1 -1
- package/dist/ui/assets/WorkView-BhDux3s_.css +1 -0
- package/dist/ui/assets/WorkView-P_JFoClW.js +2 -0
- package/dist/ui/assets/{abnfDiagram-VCTEODGH-C35Cb3us.js → abnfDiagram-VCTEODGH-DB7IT3Oz.js} +1 -1
- package/dist/ui/assets/architecture-7GRP2DOG-D0IdEE2Q.js +1 -0
- package/dist/ui/assets/{architectureDiagram-5GKGNRK7-nMYcnnYD.js → architectureDiagram-5GKGNRK7-BKe4O-fa.js} +1 -1
- package/dist/ui/assets/{blockDiagram-I7D4REHJ-B7tWmthB.js → blockDiagram-I7D4REHJ-CSam08UZ.js} +1 -1
- package/dist/ui/assets/{c4Diagram-7LVT6UL2-CnY_QO67.js → c4Diagram-7LVT6UL2-D6YRpohJ.js} +1 -1
- package/dist/ui/assets/channel-C0fJQ3Uq.js +1 -0
- package/dist/ui/assets/{chunk-4HAMMTFA-C-gVk_3z.js → chunk-4HAMMTFA-BnbHtCpa.js} +1 -1
- package/dist/ui/assets/{chunk-75Z2AOVW-D-vfikH_.js → chunk-75Z2AOVW-CYy9Me4H.js} +1 -1
- package/dist/ui/assets/{chunk-DU6HZSFF-BiXVQhaB.js → chunk-DU6HZSFF-JVoEkt2i.js} +1 -1
- package/dist/ui/assets/{chunk-F27PBJKO-5-2deQrd.js → chunk-F27PBJKO-g4ruqsFu.js} +1 -1
- package/dist/ui/assets/{chunk-GMAD6QVW-CLC7oF0o.js → chunk-GMAD6QVW-BfX4kTq8.js} +1 -1
- package/dist/ui/assets/{chunk-GVQU2GXP-Cr61GTQu.js → chunk-GVQU2GXP-C9yJ2E9t.js} +1 -1
- package/dist/ui/assets/{chunk-IMKFNOWR-B1lalIwa.js → chunk-IMKFNOWR-CbzZAPQV.js} +1 -1
- package/dist/ui/assets/{chunk-L3NEJ4N5-BnlSzplF.js → chunk-L3NEJ4N5-Cjbclivl.js} +1 -1
- package/dist/ui/assets/{chunk-OSK3NFVY-r9ZRDaqv.js → chunk-OSK3NFVY-YA4gtld_.js} +1 -1
- package/dist/ui/assets/{chunk-P2QGCYS3-C23cpE-P.js → chunk-P2QGCYS3-Cj7e9ARN.js} +1 -1
- package/dist/ui/assets/{chunk-POPQ4Y6H-DI_FkXN2.js → chunk-POPQ4Y6H-fwh_frIf.js} +1 -1
- package/dist/ui/assets/{chunk-PWAF6VOD-CGfzxALl.js → chunk-PWAF6VOD-BUHsDYf7.js} +1 -1
- package/dist/ui/assets/{chunk-SHT3W25Y-DoJGrPBk.js → chunk-SHT3W25Y-BsPOUuAn.js} +1 -1
- package/dist/ui/assets/{chunk-SVP7TREG-DyU7jawq.js → chunk-SVP7TREG-CwMeLZi5.js} +1 -1
- package/dist/ui/assets/{chunk-TICWLB2K-D9vYWbet.js → chunk-TICWLB2K-B9QsE3VX.js} +1 -1
- package/dist/ui/assets/classDiagram-ZZMXUADV-DdZ1tR-T.js +1 -0
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-DdZ1tR-T.js +1 -0
- package/dist/ui/assets/{cynefin-OW5HDTMX-DhmDBTIi.js → cynefin-OW5HDTMX-DaO-Ofss.js} +1 -1
- package/dist/ui/assets/{cynefinDiagram-5FMLGOSQ-DgNCoeoy.js → cynefinDiagram-5FMLGOSQ-DbkXxB0L.js} +1 -1
- package/dist/ui/assets/{dagre-GXQ25YYZ-B7mYz05F.js → dagre-GXQ25YYZ-CJefo5Cd.js} +1 -1
- package/dist/ui/assets/{diagram-S7CK7UJ4-Ddyyvm7S.js → diagram-S7CK7UJ4-BshX_cqp.js} +1 -1
- package/dist/ui/assets/{diagram-UQ7AKVKN-DUmEoGKb.js → diagram-UQ7AKVKN-xP1_CqiO.js} +1 -1
- package/dist/ui/assets/{diagram-VSXAHHWV-BPHi15wT.js → diagram-VSXAHHWV-BygVWS22.js} +1 -1
- package/dist/ui/assets/{diagram-VX7I27RA-KXaNOSYt.js → diagram-VX7I27RA-CH--xipF.js} +1 -1
- package/dist/ui/assets/{diagram-Z3DM3KII-VY-1gBHG.js → diagram-Z3DM3KII-DJrYKohr.js} +1 -1
- package/dist/ui/assets/{ebnfDiagram-PWID7BFC-DS8pCZ-o.js → ebnfDiagram-PWID7BFC-BkQ5ACZ8.js} +1 -1
- package/dist/ui/assets/{erDiagram-RLTQ6QDP-CMWkdSPJ.js → erDiagram-RLTQ6QDP-DKrnpHSN.js} +1 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-DHsluImP.js +1 -0
- package/dist/ui/assets/flowDiagram-HODETNUW-CpTJSjiU.js +1 -0
- package/dist/ui/assets/{ganttDiagram-EL5Y4UJY-BpirkJ4v.js → ganttDiagram-EL5Y4UJY-DzU13pix.js} +1 -1
- package/dist/ui/assets/{gitGraph-4MIJSDKK-CXSKWh2Z.js → gitGraph-4MIJSDKK-C2NqgafQ.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-WWUBYQGX-yjxrBf9P.js → gitGraphDiagram-WWUBYQGX-CD7Lar3K.js} +1 -1
- package/dist/ui/assets/index-C3vwYKvY.js +55 -0
- package/dist/ui/assets/index-CjZQAL44.css +1 -0
- package/dist/ui/assets/{info-A6RAGUB7-CHSw1OnI.js → info-A6RAGUB7-Cl6FFCuQ.js} +1 -1
- package/dist/ui/assets/{infoDiagram-27XIBGKW-XIzCq4Td.js → infoDiagram-27XIBGKW-Co-YjPmk.js} +1 -1
- package/dist/ui/assets/{ishikawaDiagram-5VMMS53U-CwTM6Xqe.js → ishikawaDiagram-5VMMS53U-Cdigo_vG.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-3NMN7TZE-uqHyan0n.js → journeyDiagram-3NMN7TZE-DmZ4MIYL.js} +1 -1
- package/dist/ui/assets/{kanban-definition-UXKFOSKX-WHidT1Vi.js → kanban-definition-UXKFOSKX-2sVFLArm.js} +1 -1
- package/dist/ui/assets/{line-VhTFB16m.js → line-C77c3pt1.js} +1 -1
- package/dist/ui/assets/{mermaid-parser.core-CnnWRcLv.js → mermaid-parser.core-xjtJ3pXb.js} +3 -3
- package/dist/ui/assets/{mermaid.core-CMAk9c7e.js → mermaid.core-CMyeUwV9.js} +4 -4
- package/dist/ui/assets/{mindmap-definition-YA3MSWOX-CgXnpPZI.js → mindmap-definition-YA3MSWOX-BsOAbuQD.js} +1 -1
- package/dist/ui/assets/{packet-AYTQ26CC-D79SEu1K.js → packet-AYTQ26CC-BDcVOEez.js} +1 -1
- package/dist/ui/assets/{pegDiagram-XKGWAZYB-D57a204j.js → pegDiagram-XKGWAZYB-C1hq_Ygi.js} +1 -1
- package/dist/ui/assets/{pie-WAS4IAKB-eJ29qTHN.js → pie-WAS4IAKB-CXk97zCx.js} +1 -1
- package/dist/ui/assets/{pieDiagram-E7YTZNPT-Cmu79QgL.js → pieDiagram-E7YTZNPT-CG9wAg_-.js} +1 -1
- package/dist/ui/assets/{quadrantDiagram-AXDQQJYC-DkJ_lByB.js → quadrantDiagram-AXDQQJYC-BFIIZWqg.js} +1 -1
- package/dist/ui/assets/{radar-RG4KPBEZ-BvmFiqNf.js → radar-RG4KPBEZ-D9HuDG1X.js} +1 -1
- package/dist/ui/assets/{railroad-74A4TZTK-D8y71XD7.js → railroad-74A4TZTK-kCOU5-RT.js} +1 -1
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-CtNhQpzv.js +1 -0
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-5rUlNGX_.js +1 -0
- package/dist/ui/assets/railroad-peg-WCYAUIDC-DOPhbUMW.js +1 -0
- package/dist/ui/assets/{railroadDiagram-O6MQD6OU-DVICUmxm.js → railroadDiagram-O6MQD6OU-RK45rPYx.js} +1 -1
- package/dist/ui/assets/repo-Rgx38OJH.js +2 -0
- package/dist/ui/assets/{requirementDiagram-BXWQKSXE-C-H3_t75.js → requirementDiagram-BXWQKSXE-DzN62GBp.js} +1 -1
- package/dist/ui/assets/{sankeyDiagram-P5KCCOFB-BW8dwgDY.js → sankeyDiagram-P5KCCOFB-Twa9FjBx.js} +1 -1
- package/dist/ui/assets/{sequenceDiagram-WJ2MYXX4-DKdAg21Q.js → sequenceDiagram-WJ2MYXX4-DGUe1AcR.js} +1 -1
- package/dist/ui/assets/{stateDiagram-D77RDMKH-CNl6WXRR.js → stateDiagram-D77RDMKH-ByryPTRm.js} +1 -1
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-xS7RBCS4.js +1 -0
- package/dist/ui/assets/{swimlanes-42K2YHIH-CLrwIems.js → swimlanes-42K2YHIH-CnU3MB_t.js} +1 -1
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-Dd7VwNJ9.js +8 -0
- package/dist/ui/assets/{time-CwKjNEcq.js → time-CD85vGC0.js} +1 -1
- package/dist/ui/assets/{timeline-definition-24CTP7MA-DUaCoZTg.js → timeline-definition-24CTP7MA-D5A6I-WY.js} +1 -1
- package/dist/ui/assets/{treeView-Q6P3EWNA-Da6faho-.js → treeView-Q6P3EWNA-BzAgp6hO.js} +1 -1
- package/dist/ui/assets/{treemap-WGGIJYW6-BZ2UeOx0.js → treemap-WGGIJYW6-BOnPgUXz.js} +1 -1
- package/dist/ui/assets/types-D6qo-egS.js +1 -0
- package/dist/ui/assets/{vennDiagram-4TSXK5OY-bsrbi5iL.js → vennDiagram-4TSXK5OY-CbrfLPNL.js} +1 -1
- package/dist/ui/assets/{wardley-WFR3VGLG-1ye_cK6w.js → wardley-WFR3VGLG-BzZdYjpA.js} +1 -1
- package/dist/ui/assets/{wardleyDiagram-VM6X3IG4-BI_0k668.js → wardleyDiagram-VM6X3IG4-cG-Vx9Gs.js} +1 -1
- package/dist/ui/assets/{xychartDiagram-S5SC5T6Z-ClQRAIHf.js → xychartDiagram-S5SC5T6Z-DXzo3wNb.js} +1 -1
- package/dist/ui/index.html +8 -9
- 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-IyhQlgi_.js +0 -1
- package/dist/ui/assets/AgentsView-BUCXPt-0.css +0 -1
- package/dist/ui/assets/AgentsView-D8wSbWRE.js +0 -1
- package/dist/ui/assets/ChecksView-BmdCOghF.css +0 -1
- package/dist/ui/assets/ChecksView-C_94-h2D.js +0 -0
- package/dist/ui/assets/ContextView-C9qd90E1.js +0 -4
- package/dist/ui/assets/DashboardView-Ca3kwSow.css +0 -1
- package/dist/ui/assets/DashboardView-D0lWbddW.js +0 -1
- package/dist/ui/assets/FailedTestsList-CcmaaJc3.js +0 -1
- package/dist/ui/assets/ReleasesView-CDa4RD79.css +0 -1
- package/dist/ui/assets/ReleasesView-CgTRWJn7.js +0 -5
- package/dist/ui/assets/SettingsView-05j5GTG5.js +0 -4
- package/dist/ui/assets/StoriesView-Bhr88XmF.js +0 -1
- package/dist/ui/assets/WorkView-BBpCR84p.js +0 -2
- package/dist/ui/assets/WorkView-vT6nLFuM.css +0 -1
- package/dist/ui/assets/architecture-7GRP2DOG-C8l6_Iv0.js +0 -1
- package/dist/ui/assets/channel-CseWx8gd.js +0 -1
- package/dist/ui/assets/classDiagram-ZZMXUADV-Bs8Gifp6.js +0 -1
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-Bs8Gifp6.js +0 -1
- package/dist/ui/assets/config-CSMVq0tG.js +0 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-CnRce4Ft.js +0 -1
- package/dist/ui/assets/flowDiagram-HODETNUW-Bl6RGQnG.js +0 -1
- package/dist/ui/assets/index-Dz1V2IY7.css +0 -1
- package/dist/ui/assets/index-elTUWd7x.js +0 -54
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-Br6QWckP.js +0 -1
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-DZ3Kdv94.js +0 -1
- package/dist/ui/assets/railroad-peg-WCYAUIDC-DS-utPYa.js +0 -1
- package/dist/ui/assets/repo-DJOMdIgK.js +0 -2
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-BbU_pRfJ.js +0 -1
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-UcPzpukO.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,132 @@
|
|
|
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
|
+
exact("GET", "/api/driver/brief"),
|
|
22
|
+
exact("GET", "/api/events"),
|
|
23
|
+
exact("POST", "/api/cto/heartbeat"),
|
|
24
|
+
// `repoos review` → PATCH status=review; `repoos override` → PATCH overrides
|
|
25
|
+
re("PATCH", /^\/api\/tasks\/([^/]+)$/.source),
|
|
26
|
+
];
|
|
27
|
+
/** Routes covered by existing file-level CLI commands (not HTTP). */
|
|
28
|
+
const FILE_CLI_MATCHERS = [
|
|
29
|
+
exact("GET", "/api/health"),
|
|
30
|
+
exact("GET", "/api/tasks"),
|
|
31
|
+
re("GET", /^\/api\/tasks\/([^/]+)$/.source),
|
|
32
|
+
exact("POST", "/api/tasks"),
|
|
33
|
+
re("DELETE", /^\/api\/tasks\/([^/]+)$/.source),
|
|
34
|
+
exact("GET", "/api/check-plan"),
|
|
35
|
+
];
|
|
36
|
+
/** UI-only, SSE/hub, auth, or internal routes — no CLI required. */
|
|
37
|
+
const UI_ONLY_MATCHERS = [
|
|
38
|
+
(r) => r.pattern.startsWith("/api/auth/"),
|
|
39
|
+
(r) => r.pattern.startsWith("/api/hub/"),
|
|
40
|
+
(r) => r.pattern.startsWith("/api/telegram/"),
|
|
41
|
+
exact("GET", "/api/index"),
|
|
42
|
+
exact("GET", "/api/board"),
|
|
43
|
+
exact("GET", "/api/counts"),
|
|
44
|
+
exact("GET", "/api/docs"),
|
|
45
|
+
(r) => r.pattern.startsWith("/api/repo/"),
|
|
46
|
+
(r) => r.pattern.startsWith("/api/inputs"),
|
|
47
|
+
(r) => r.pattern.startsWith("/api/skills"),
|
|
48
|
+
(r) => r.pattern.startsWith("/api/skill-registry"),
|
|
49
|
+
(r) => r.pattern.startsWith("/api/stories"),
|
|
50
|
+
exact("GET", "/api/system"),
|
|
51
|
+
exact("GET", "/api/system/logs"),
|
|
52
|
+
(r) => r.pattern.startsWith("/api/support/"),
|
|
53
|
+
(r) => r.pattern.startsWith("/api/tunnel/"),
|
|
54
|
+
(r) => r.pattern.startsWith("/api/release"),
|
|
55
|
+
(r) => r.pattern.startsWith("/api/deployments"),
|
|
56
|
+
(r) => r.pattern.startsWith("/api/chat"),
|
|
57
|
+
(r) => r.pattern.startsWith("/api/debugger"),
|
|
58
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/debugger$/.source),
|
|
59
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/message$/.source),
|
|
60
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/interrupt$/.source),
|
|
61
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/send-to-engineer$/.source),
|
|
62
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/debugger\/send-to-pm$/.source),
|
|
63
|
+
re("POST", /^\/api\/agents\/built-in\/([^/]+)\/run$/.source),
|
|
64
|
+
(r) => r.pattern.startsWith("/api/cto"),
|
|
65
|
+
exact("GET", "/api/stats/by-type"),
|
|
66
|
+
exact("GET", "/api/stats/daily"),
|
|
67
|
+
exact("POST", "/api/system/kill-process"),
|
|
68
|
+
exact("GET", "/api/system/run-tests"),
|
|
69
|
+
exact("POST", "/api/system/run-tests"),
|
|
70
|
+
exact("GET", "/api/attention"),
|
|
71
|
+
exact("GET", "/api/decisions"),
|
|
72
|
+
exact("GET", "/api/check-runs"),
|
|
73
|
+
(r) => r.pattern.startsWith("/api/integration"),
|
|
74
|
+
exact("GET", "/api/close-out/outcomes"),
|
|
75
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/integration-job$/.source),
|
|
76
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/done\/cancel$/.source),
|
|
77
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/worktree-handoff\/discard$/.source),
|
|
78
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/review$/.source),
|
|
79
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/review\/again$/.source),
|
|
80
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/review\/message$/.source),
|
|
81
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/pm\/message$/.source),
|
|
82
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/pm\/interrupt$/.source),
|
|
83
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/attachments\/([^/]+)$/.source),
|
|
84
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/attachments$/.source),
|
|
85
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/shots$/.source),
|
|
86
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/shots$/.source),
|
|
87
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/shots\/([^/]+)$/.source),
|
|
88
|
+
re("DELETE", /^\/api\/tasks\/([^/]+)\/shots\/([^/]+)$/.source),
|
|
89
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/ui-verification$/.source),
|
|
90
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/needs-input\/dismiss$/.source),
|
|
91
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/clear-worktree$/.source),
|
|
92
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/output$/.source),
|
|
93
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/logs$/.source),
|
|
94
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/checks$/.source),
|
|
95
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/stats$/.source),
|
|
96
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/diff-stats$/.source),
|
|
97
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/diff$/.source),
|
|
98
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/merge-conflict$/.source),
|
|
99
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/worktree-dirty$/.source),
|
|
100
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/file$/.source),
|
|
101
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/remote-validation\/log$/.source),
|
|
102
|
+
re("GET", /^\/api\/tasks\/([^/]+)\/remote-validation\/events$/.source),
|
|
103
|
+
exact("GET", "/api/config/raw"),
|
|
104
|
+
exact("PUT", "/api/config/raw"),
|
|
105
|
+
(r) => r.pattern.startsWith("/api/dev/"),
|
|
106
|
+
(r) => r.pattern.startsWith("/api/models"),
|
|
107
|
+
(r) => r.pattern.startsWith("/api/playground"),
|
|
108
|
+
(r) => r.pattern.startsWith("/api/model-providers"),
|
|
109
|
+
exact("GET", "/api/agents/queued"),
|
|
110
|
+
exact("GET", "/api/agents/detect"),
|
|
111
|
+
exact("GET", "/api/agents/detect/stream"),
|
|
112
|
+
exact("POST", "/api/agents/updates"),
|
|
113
|
+
re("GET", /^\/api\/agents\/([^/]+)\/logs$/.source),
|
|
114
|
+
(r) => r.pattern.startsWith("/api/ntfy/"),
|
|
115
|
+
exact("POST", "/api/transcribe"),
|
|
116
|
+
(r) => r.pattern.startsWith("/api/service/"),
|
|
117
|
+
exact("POST", "/api/server/restart"),
|
|
118
|
+
re("POST", /^\/api\/tasks\/([^/]+)\/(sync|hotfix|abandon|reopen|archive|unarchive)$/.source),
|
|
119
|
+
exact("POST", "/api/tasks/freeform"),
|
|
120
|
+
exact("POST", "/api/docs/create"),
|
|
121
|
+
exact("POST", "/api/docs/freeform"),
|
|
122
|
+
re("GET", /^\/api\/freeform\/runs\/([^/]+)$/.source),
|
|
123
|
+
];
|
|
124
|
+
const ALL_MATCHERS = [...CONTROL_API_MATCHERS, ...FILE_CLI_MATCHERS, ...UI_ONLY_MATCHERS];
|
|
125
|
+
export function isApiRouteCovered(route) {
|
|
126
|
+
if (!route.pattern.startsWith("/api/"))
|
|
127
|
+
return true;
|
|
128
|
+
return ALL_MATCHERS.some((m) => m(route));
|
|
129
|
+
}
|
|
130
|
+
export function uncoveredApiRoutes(routes) {
|
|
131
|
+
return routes.filter((r) => r.pattern.startsWith("/api/") && !isApiRouteCovered(r));
|
|
132
|
+
}
|
|
@@ -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,9 +8,9 @@
|
|
|
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";
|
|
12
11
|
import { c } from "./colors.js";
|
|
13
12
|
import { table, termWidth, visibleWidth, wrap } from "./layout.js";
|
|
13
|
+
import { NEW_FLAG_HELP, UPDATE_FLAG_HELP, flagSummary, flagUsageTokens } from "./task-flags.js";
|
|
14
14
|
/** Commands whose own argument parser already handles `--help`. */
|
|
15
15
|
export const SELF_HELP_COMMANDS = new Set(["support", "tunnel", "shot", "uninstall"]);
|
|
16
16
|
const GROUPS = [
|
|
@@ -48,9 +48,9 @@ const GROUPS = [
|
|
|
48
48
|
{ name: "show", usage: "show <id>", desc: "Show a task's full spec" },
|
|
49
49
|
{
|
|
50
50
|
name: "new",
|
|
51
|
-
usage:
|
|
51
|
+
usage: 'new "<title>" ' + flagUsageTokens(NEW_FLAG_HELP).join(" "),
|
|
52
52
|
desc: "Create a task",
|
|
53
|
-
flags:
|
|
53
|
+
flags: flagSummary(NEW_FLAG_HELP),
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
name: "new-doc",
|
|
@@ -71,9 +71,87 @@ const GROUPS = [
|
|
|
71
71
|
{
|
|
72
72
|
name: "mv",
|
|
73
73
|
usage: "mv <id> <status> [--note <text>] [--force-not-merged]",
|
|
74
|
-
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",
|
|
75
75
|
flags: '--note "..." · --force-not-merged',
|
|
76
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: "watch",
|
|
145
|
+
usage: "watch [--json] [--task <id>] [--port N]",
|
|
146
|
+
desc: "Stream board SSE events for external driver sessions (GET /api/events)",
|
|
147
|
+
flags: "--json · --task · --port",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: "driver",
|
|
151
|
+
usage: "driver brief [--json] [--port N]",
|
|
152
|
+
desc: "Print the CTO's board brief from live state (GET /api/driver/brief)",
|
|
153
|
+
flags: "--json · --port",
|
|
154
|
+
},
|
|
77
155
|
{
|
|
78
156
|
name: "rm",
|
|
79
157
|
usage: "rm <id> --yes",
|
|
@@ -82,9 +160,15 @@ const GROUPS = [
|
|
|
82
160
|
},
|
|
83
161
|
{
|
|
84
162
|
name: "update",
|
|
85
|
-
usage: "update <id>
|
|
163
|
+
usage: "update <id> " + flagUsageTokens(UPDATE_FLAG_HELP).join(" "),
|
|
86
164
|
desc: "Edit a task's metadata or body",
|
|
87
|
-
flags:
|
|
165
|
+
flags: flagSummary(UPDATE_FLAG_HELP),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: "story",
|
|
169
|
+
usage: 'story new "<name>" --body <text|-> | story list | story show <number|name> | story update <number|name> [--name …] [--body <text|->]',
|
|
170
|
+
desc: "Create, list, show or update story definitions verbatim (no PM agent)",
|
|
171
|
+
flags: "new/show/update: --body - · list/show: --json",
|
|
88
172
|
},
|
|
89
173
|
{
|
|
90
174
|
name: "index",
|
|
@@ -197,6 +281,12 @@ const EXAMPLES = [
|
|
|
197
281
|
{ cmd: 'repoos mv 0012 active --note "Fix the regression in checkout; see review"' },
|
|
198
282
|
{ cmd: 'repoos note 0012 "Handle the reviewer\'s suggestions before the next review"' },
|
|
199
283
|
{ cmd: 'repoos update 0012 --title "New title" --area web,core' },
|
|
284
|
+
{
|
|
285
|
+
cmd: 'repoos story new "Project updates email" --body "Why this slice exists, scope and non-goals"',
|
|
286
|
+
comment: "verbatim story, no PM",
|
|
287
|
+
},
|
|
288
|
+
{ cmd: "repoos story list", comment: "registered stories, with numbers" },
|
|
289
|
+
{ cmd: "repoos story show 0007", comment: "definition + member tasks and their statuses" },
|
|
200
290
|
{ cmd: "repoos list ready" },
|
|
201
291
|
{ cmd: "repoos outline src/server/agents.ts", comment: "then read only the range you need" },
|
|
202
292
|
{ cmd: "repoos doctor", comment: "passing checks are hidden; --verbose shows all" },
|
|
@@ -216,6 +306,7 @@ const ALIASES = {
|
|
|
216
306
|
add: "new",
|
|
217
307
|
reindex: "index",
|
|
218
308
|
server: "serve",
|
|
309
|
+
stories: "story",
|
|
219
310
|
};
|
|
220
311
|
/** Resolve an alias to its canonical command name (identity when not an alias). */
|
|
221
312
|
export function canonicalCommand(name) {
|
package/dist/cli/index.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { cmdInit } from "../commands/init.js";
|
|
7
7
|
import { cmdList, cmdShow, cmdMv, cmdRm, cmdUpdate, cmdNew, cmdIndex, cmdNote, } from "../commands/tasks.js";
|
|
8
8
|
import { cmdDocs, cmdNewDoc } from "../commands/docs.js";
|
|
9
|
+
import { cmdStory } from "../commands/stories.js";
|
|
9
10
|
import { cmdGc } from "../commands/gc.js";
|
|
10
11
|
import { cmdOutline } from "../commands/outline.js";
|
|
11
12
|
import { cmdCheck } from "../commands/check.js";
|
|
@@ -20,6 +21,9 @@ import { cmdDoctor } from "../commands/doctor.js";
|
|
|
20
21
|
import { cmdCertify } from "../commands/certify.js";
|
|
21
22
|
import { cmdSupport } from "../commands/support.js";
|
|
22
23
|
import { cmdService } from "../commands/service.js";
|
|
24
|
+
import { cmdAgentsRunning, cmdConfig, cmdDone, cmdMessage, cmdOverride, cmdPause, cmdPreview, cmdReview, cmdRunners, cmdStart, cmdStats, cmdDecisions, } from "../commands/control-api.js";
|
|
25
|
+
import { cmdWatch } from "../commands/watch.js";
|
|
26
|
+
import { cmdDriver } from "../commands/driver.js";
|
|
23
27
|
import { checkBuild } from "../core/build.js";
|
|
24
28
|
import { loadConfig } from "../core/config.js";
|
|
25
29
|
import { reexecAfterStaleBuild, reexecUnderBunIfRequested } from "../core/runtime.js";
|
|
@@ -169,6 +173,10 @@ function main() {
|
|
|
169
173
|
case "docs":
|
|
170
174
|
void cmdDocs(rest);
|
|
171
175
|
break;
|
|
176
|
+
case "story":
|
|
177
|
+
case "stories":
|
|
178
|
+
cmdStory(rest);
|
|
179
|
+
break;
|
|
172
180
|
case "index":
|
|
173
181
|
case "reindex":
|
|
174
182
|
cmdIndex(rest);
|
|
@@ -192,6 +200,91 @@ function main() {
|
|
|
192
200
|
case "check":
|
|
193
201
|
void cmdCheck(rest);
|
|
194
202
|
break;
|
|
203
|
+
case "start":
|
|
204
|
+
void cmdStart(rest).then((code) => {
|
|
205
|
+
if (code !== 0)
|
|
206
|
+
process.exitCode = code;
|
|
207
|
+
});
|
|
208
|
+
break;
|
|
209
|
+
case "pause":
|
|
210
|
+
void cmdPause(rest).then((code) => {
|
|
211
|
+
if (code !== 0)
|
|
212
|
+
process.exitCode = code;
|
|
213
|
+
});
|
|
214
|
+
break;
|
|
215
|
+
case "message":
|
|
216
|
+
void cmdMessage(rest).then((code) => {
|
|
217
|
+
if (code !== 0)
|
|
218
|
+
process.exitCode = code;
|
|
219
|
+
});
|
|
220
|
+
break;
|
|
221
|
+
case "review":
|
|
222
|
+
void cmdReview(rest).then((code) => {
|
|
223
|
+
if (code !== 0)
|
|
224
|
+
process.exitCode = code;
|
|
225
|
+
});
|
|
226
|
+
break;
|
|
227
|
+
case "done":
|
|
228
|
+
void cmdDone(rest).then((code) => {
|
|
229
|
+
if (code !== 0)
|
|
230
|
+
process.exitCode = code;
|
|
231
|
+
});
|
|
232
|
+
break;
|
|
233
|
+
case "override":
|
|
234
|
+
void cmdOverride(rest).then((code) => {
|
|
235
|
+
if (code !== 0)
|
|
236
|
+
process.exitCode = code;
|
|
237
|
+
});
|
|
238
|
+
break;
|
|
239
|
+
case "preview":
|
|
240
|
+
void cmdPreview(rest).then((code) => {
|
|
241
|
+
if (code !== 0)
|
|
242
|
+
process.exitCode = code;
|
|
243
|
+
});
|
|
244
|
+
break;
|
|
245
|
+
case "config":
|
|
246
|
+
void cmdConfig(rest).then((code) => {
|
|
247
|
+
if (code !== 0)
|
|
248
|
+
process.exitCode = code;
|
|
249
|
+
});
|
|
250
|
+
break;
|
|
251
|
+
case "runners":
|
|
252
|
+
void cmdRunners(rest).then((code) => {
|
|
253
|
+
if (code !== 0)
|
|
254
|
+
process.exitCode = code;
|
|
255
|
+
});
|
|
256
|
+
break;
|
|
257
|
+
case "agents":
|
|
258
|
+
void cmdAgentsRunning(rest).then((code) => {
|
|
259
|
+
if (code !== 0)
|
|
260
|
+
process.exitCode = code;
|
|
261
|
+
});
|
|
262
|
+
break;
|
|
263
|
+
case "stats":
|
|
264
|
+
void cmdStats(rest).then((code) => {
|
|
265
|
+
if (code !== 0)
|
|
266
|
+
process.exitCode = code;
|
|
267
|
+
});
|
|
268
|
+
break;
|
|
269
|
+
case "decisions":
|
|
270
|
+
case "attention":
|
|
271
|
+
void cmdDecisions(rest).then((code) => {
|
|
272
|
+
if (code !== 0)
|
|
273
|
+
process.exitCode = code;
|
|
274
|
+
});
|
|
275
|
+
break;
|
|
276
|
+
case "watch":
|
|
277
|
+
void cmdWatch(rest).then((code) => {
|
|
278
|
+
if (code !== 0)
|
|
279
|
+
process.exitCode = code;
|
|
280
|
+
});
|
|
281
|
+
break;
|
|
282
|
+
case "driver":
|
|
283
|
+
void cmdDriver(rest).then((code) => {
|
|
284
|
+
if (code !== 0)
|
|
285
|
+
process.exitCode = code;
|
|
286
|
+
});
|
|
287
|
+
break;
|
|
195
288
|
case "shot":
|
|
196
289
|
void cmdShot(rest)
|
|
197
290
|
.then((code) => {
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
/** Re-run dev backdoor login after a 401 (e.g. server reload). */
|
|
41
|
+
reauthenticate(): Promise<boolean>;
|
|
42
|
+
/** Open `GET /api/events` with the same auth as other CLI calls. */
|
|
43
|
+
fetchEventStream(): Promise<Response>;
|
|
44
|
+
request(method: string, path: string, body?: unknown, opts?: {
|
|
45
|
+
retryAuth?: boolean;
|
|
46
|
+
}): Promise<{
|
|
47
|
+
status: number;
|
|
48
|
+
body: ApiJson;
|
|
49
|
+
}>;
|
|
50
|
+
requestOk(method: string, path: string, body?: unknown, allowedStatuses?: number[]): Promise<ApiJson>;
|
|
51
|
+
}
|
|
52
|
+
export declare function pollUntil<T>(fn: () => Promise<T | null>, opts: {
|
|
53
|
+
intervalMs?: number;
|
|
54
|
+
timeoutMs?: number;
|
|
55
|
+
label?: string;
|
|
56
|
+
}): Promise<T>;
|