@repo-os/repoos 0.5.45 → 0.5.47
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/README.md +54 -8
- package/dist/.build-info.json +2 -2
- package/dist/.build-stamp.json +1 -1
- package/dist/cli/index.js +80 -32
- package/dist/commands/check.js +5 -1
- package/dist/commands/init.d.ts +26 -1
- package/dist/commands/init.js +288 -35
- package/dist/commands/service.d.ts +1 -0
- package/dist/commands/service.js +198 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.js +11 -1
- package/dist/commands/tasks.d.ts +22 -3
- package/dist/commands/tasks.js +105 -11
- package/dist/commands/ui-harness.d.ts +36 -0
- package/dist/commands/ui-harness.js +4 -19
- package/dist/commands/ui-smoke.js +63 -3
- package/dist/commands/uninstall.d.ts +13 -0
- package/dist/commands/uninstall.js +111 -0
- package/dist/core/agent-updates.d.ts +38 -0
- package/dist/core/agent-updates.js +203 -0
- package/dist/core/board-columns.test.d.ts +1 -0
- package/dist/core/board-columns.test.js +175 -0
- package/dist/core/check-results.d.ts +38 -0
- package/dist/core/check-results.js +176 -0
- package/dist/core/config.d.ts +33 -1
- package/dist/core/config.js +187 -0
- package/dist/core/detect.d.ts +50 -0
- package/dist/core/detect.js +136 -4
- package/dist/core/git.d.ts +24 -1
- package/dist/core/git.js +132 -18
- package/dist/core/models.d.ts +14 -0
- package/dist/core/models.js +104 -5
- package/dist/core/providers/spend.d.ts +1 -1
- package/dist/core/providers/spend.js +69 -5
- package/dist/core/repoos.d.ts +2 -0
- package/dist/core/repoos.js +2 -1
- package/dist/core/review-verdict.d.ts +25 -0
- package/dist/core/review-verdict.js +51 -0
- package/dist/core/review-verdict.test.d.ts +1 -0
- package/dist/core/review-verdict.test.js +40 -0
- package/dist/core/service-manager.d.ts +187 -0
- package/dist/core/service-manager.js +925 -0
- package/dist/core/service-manager.test.d.ts +1 -0
- package/dist/core/service-manager.test.js +372 -0
- package/dist/core/task.js +10 -0
- package/dist/core/types.d.ts +59 -0
- package/dist/core/worktree-gc.js +9 -5
- package/dist/server/agents.d.ts +181 -23
- package/dist/server/agents.js +1234 -56
- package/dist/server/auto-engineering.js +1 -1
- package/dist/server/auto-fix-gate.d.ts +64 -0
- package/dist/server/auto-fix-gate.js +220 -0
- package/dist/server/built-in-agent-runner.d.ts +103 -0
- package/dist/server/built-in-agent-runner.js +410 -0
- package/dist/server/built-in-agent-skill-docs.d.ts +36 -0
- package/dist/server/built-in-agent-skill-docs.js +306 -0
- package/dist/server/built-in-agents.d.ts +130 -40
- package/dist/server/built-in-agents.js +533 -801
- package/dist/server/done.js +9 -9
- package/dist/server/freeform-runs.d.ts +103 -0
- package/dist/server/freeform-runs.js +427 -0
- package/dist/server/freeform.js +11 -1
- package/dist/server/handoff.d.ts +1 -1
- package/dist/server/handoff.js +1 -1
- package/dist/server/integration-job.d.ts +21 -0
- package/dist/server/integration-job.js +7 -0
- package/dist/server/integration-orchestrator.d.ts +40 -0
- package/dist/server/integration-orchestrator.js +311 -88
- package/dist/server/live-index.d.ts +2 -0
- package/dist/server/live-index.js +3 -0
- package/dist/server/preview.d.ts +9 -7
- package/dist/server/preview.js +53 -25
- package/dist/server/reload.d.ts +11 -0
- package/dist/server/reload.js +34 -5
- package/dist/server/review-guard.js +4 -8
- package/dist/server/review.js +14 -23
- package/dist/server/routes/agents.d.ts +2 -0
- package/dist/server/routes/agents.js +25 -0
- package/dist/server/routes/auth.js +17 -12
- package/dist/server/routes/config.js +9 -2
- package/dist/server/routes/docs.js +2 -2
- package/dist/server/routes/helpers.js +3 -2
- package/dist/server/routes/index.d.ts +1 -0
- package/dist/server/routes/index.js +1 -0
- package/dist/server/routes/info.js +3 -0
- package/dist/server/routes/notify.js +2 -2
- package/dist/server/routes/release.d.ts +13 -0
- package/dist/server/routes/release.js +83 -0
- package/dist/server/routes/service.d.ts +25 -0
- package/dist/server/routes/service.js +62 -0
- package/dist/server/routes/tasks.d.ts +32 -0
- package/dist/server/routes/tasks.js +358 -148
- package/dist/server/routes/types.d.ts +7 -0
- package/dist/server/routes/ui.js +2 -2
- package/dist/server/server.js +149 -28
- package/dist/server/skill-suggestions.d.ts +222 -0
- package/dist/server/skill-suggestions.js +627 -0
- package/dist/server/system.d.ts +1 -1
- package/dist/server/task-check.js +4 -2
- package/dist/server/write.d.ts +4 -0
- package/dist/server/write.js +17 -1
- package/dist/ui/assets/AgentsView-CKT4t7th.css +1 -0
- package/dist/ui/assets/AgentsView-Dl4vvY2_.js +1 -0
- package/dist/ui/assets/ContextView-BjwM5xoY.js +4 -0
- package/dist/ui/assets/{ContextView-D3TC-RSp.css → ContextView-TVoMpCso.css} +1 -1
- package/dist/ui/assets/DashboardView-24xLzQn5.js +1 -0
- package/dist/ui/assets/{DashboardView-Ck9o0RP2.css → DashboardView-CRdYYcWz.css} +1 -1
- package/dist/ui/assets/DeploymentsView-D43M8zkp.js +1 -0
- package/dist/ui/assets/DiffView-COhR1P-a.css +1 -0
- package/dist/ui/assets/DiffView-FuqdhCWQ.js +2 -0
- package/dist/ui/assets/InputsView-BJ4MbPN0.js +1 -0
- package/dist/ui/assets/InputsView-oTB_RUkL.css +1 -0
- package/dist/ui/assets/{LoginView-BqupI0Lt.js → LoginView-YDUuuNnS.js} +1 -1
- package/dist/ui/assets/ReleasesView-D-xVP571.js +3 -0
- package/dist/ui/assets/SettingsView-iBTgAqaE.js +3 -0
- package/dist/ui/assets/SettingsView-tL4SoVW8.css +1 -0
- package/dist/ui/assets/{WorkView-DMYL2s3W.css → WorkView-CAdwvLu1.css} +1 -1
- package/dist/ui/assets/WorkView-DLgLtg2V.js +1 -0
- package/dist/ui/assets/{abnfDiagram-VCTEODGH-J5lkSnEE.js → abnfDiagram-VCTEODGH-DPqpqTy5.js} +1 -1
- package/dist/ui/assets/api-Dic4Uw1D.js +1 -0
- package/dist/ui/assets/architecture-7GRP2DOG-wD_U38P8.js +1 -0
- package/dist/ui/assets/{architectureDiagram-5GKGNRK7-C3k89uKX.js → architectureDiagram-5GKGNRK7-CIDQQ6XV.js} +1 -1
- package/dist/ui/assets/{blockDiagram-I7D4REHJ-AWNoBzop.js → blockDiagram-I7D4REHJ-DqZFpX8Q.js} +1 -1
- package/dist/ui/assets/button-CWZu0-iU.js +1 -0
- package/dist/ui/assets/{c4Diagram-7LVT6UL2-DKG1D5gd.js → c4Diagram-7LVT6UL2-pDpB6ffs.js} +1 -1
- package/dist/ui/assets/channel-Da9L8FRd.js +1 -0
- package/dist/ui/assets/{chunk-4HAMMTFA-D1YR8lF_.js → chunk-4HAMMTFA-B1d8wkop.js} +1 -1
- package/dist/ui/assets/{chunk-75Z2AOVW-5GuBxfsL.js → chunk-75Z2AOVW-CWJLkCtL.js} +1 -1
- package/dist/ui/assets/{chunk-DU6HZSFF-DfdNNqwa.js → chunk-DU6HZSFF-DsKrwkNI.js} +1 -1
- package/dist/ui/assets/{chunk-F27PBJKO-BPZzinQ4.js → chunk-F27PBJKO-f905wcEi.js} +1 -1
- package/dist/ui/assets/{chunk-GMAD6QVW-DGWvSKj5.js → chunk-GMAD6QVW-CceBq1iu.js} +1 -1
- package/dist/ui/assets/{chunk-GVQU2GXP-D6Aw75wJ.js → chunk-GVQU2GXP-DUSgZzgc.js} +1 -1
- package/dist/ui/assets/{chunk-IMKFNOWR-B8mMBKCW.js → chunk-IMKFNOWR-OhGUhaWS.js} +1 -1
- package/dist/ui/assets/{chunk-L3NEJ4N5-D5OJuXYE.js → chunk-L3NEJ4N5-DPHn_oGy.js} +1 -1
- package/dist/ui/assets/{chunk-OSK3NFVY-B7r9w2UW.js → chunk-OSK3NFVY-B63-bIWk.js} +1 -1
- package/dist/ui/assets/{chunk-P2QGCYS3-C74X4AQX.js → chunk-P2QGCYS3-BdJ1YcCd.js} +1 -1
- package/dist/ui/assets/{chunk-POPQ4Y6H-C5_u1gUS.js → chunk-POPQ4Y6H-CJbNVNwF.js} +1 -1
- package/dist/ui/assets/{chunk-PWAF6VOD-DfoTLtxn.js → chunk-PWAF6VOD-CNouC5bV.js} +1 -1
- package/dist/ui/assets/{chunk-SHT3W25Y-D40m2eqz.js → chunk-SHT3W25Y-BZTaa-Kf.js} +1 -1
- package/dist/ui/assets/{chunk-SVP7TREG-euxi0Kap.js → chunk-SVP7TREG-DqSFUiOt.js} +1 -1
- package/dist/ui/assets/{chunk-TICWLB2K-fkdxngzN.js → chunk-TICWLB2K-BrDOAaza.js} +1 -1
- package/dist/ui/assets/classDiagram-ZZMXUADV-1Z25SOdJ.js +1 -0
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-1Z25SOdJ.js +1 -0
- package/dist/ui/assets/{cynefin-OW5HDTMX-B5m_COsS.js → cynefin-OW5HDTMX-BulVep4K.js} +1 -1
- package/dist/ui/assets/{cynefinDiagram-5FMLGOSQ-C-AG6CGe.js → cynefinDiagram-5FMLGOSQ-Dhh-eCbO.js} +1 -1
- package/dist/ui/assets/{dagre-GXQ25YYZ-DDfDnp8L.js → dagre-GXQ25YYZ-KsL08dFG.js} +1 -1
- package/dist/ui/assets/{diagram-S7CK7UJ4-DjQZAlEY.js → diagram-S7CK7UJ4-BmJZx8o1.js} +1 -1
- package/dist/ui/assets/{diagram-UQ7AKVKN-DAZ9yp1B.js → diagram-UQ7AKVKN-BOnSqzgH.js} +1 -1
- package/dist/ui/assets/{diagram-VSXAHHWV-BWepUKJD.js → diagram-VSXAHHWV-5SuigqJz.js} +1 -1
- package/dist/ui/assets/{diagram-VX7I27RA-EcV1J81b.js → diagram-VX7I27RA-Dver1NHT.js} +1 -1
- package/dist/ui/assets/{diagram-Z3DM3KII-Dbz7XU_K.js → diagram-Z3DM3KII-gG61Ou2E.js} +1 -1
- package/dist/ui/assets/{ebnfDiagram-PWID7BFC-BUyQw8Mm.js → ebnfDiagram-PWID7BFC-Cj7UixlZ.js} +1 -1
- package/dist/ui/assets/{erDiagram-RLTQ6QDP-WVf8ukKt.js → erDiagram-RLTQ6QDP-gptj191Z.js} +1 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-CFuFGO_7.js +1 -0
- package/dist/ui/assets/flowDiagram-HODETNUW-DK9ZmZ6I.js +1 -0
- package/dist/ui/assets/{ganttDiagram-EL5Y4UJY-rB4MZuB-.js → ganttDiagram-EL5Y4UJY-C-k5hu6A.js} +1 -1
- package/dist/ui/assets/{gitGraph-4MIJSDKK-BOTWM8dY.js → gitGraph-4MIJSDKK-CGOrneoE.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-WWUBYQGX-eYscuhtP.js → gitGraphDiagram-WWUBYQGX-XJWp5pbf.js} +1 -1
- package/dist/ui/assets/index-COMZ2Wdm.js +27 -0
- package/dist/ui/assets/index-C_iaRuyV.css +1 -0
- package/dist/ui/assets/{info-A6RAGUB7-_67wOORe.js → info-A6RAGUB7-DOl-xe0x.js} +1 -1
- package/dist/ui/assets/{infoDiagram-27XIBGKW-XVXbddTA.js → infoDiagram-27XIBGKW-l3o0cYjj.js} +1 -1
- package/dist/ui/assets/{ishikawaDiagram-5VMMS53U-ClLNiEru.js → ishikawaDiagram-5VMMS53U-B1NauCQq.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-3NMN7TZE-NRawjR6i.js → journeyDiagram-3NMN7TZE-dBIA3nBV.js} +1 -1
- package/dist/ui/assets/{kanban-definition-UXKFOSKX-BgSzBfIx.js → kanban-definition-UXKFOSKX-DwNS0OHs.js} +1 -1
- package/dist/ui/assets/{line-KAyfuul4.js → line-Dbmiiwnv.js} +1 -1
- package/dist/ui/assets/{mermaid-parser.core-CgXZk1iN.js → mermaid-parser.core-C4YyLudQ.js} +3 -3
- package/dist/ui/assets/{mermaid.core-BUUkChHW.js → mermaid.core-Ba_OGTSz.js} +4 -4
- package/dist/ui/assets/{mindmap-definition-YA3MSWOX-Cpn7vW4r.js → mindmap-definition-YA3MSWOX-Dh7I3b3_.js} +1 -1
- package/dist/ui/assets/{packet-AYTQ26CC-0lZwM-d6.js → packet-AYTQ26CC-B0Q3gRTD.js} +1 -1
- package/dist/ui/assets/{pegDiagram-XKGWAZYB-impy0inn.js → pegDiagram-XKGWAZYB-B8YG99Cd.js} +1 -1
- package/dist/ui/assets/{pie-WAS4IAKB-CqfdGHYg.js → pie-WAS4IAKB-CUlBHTvR.js} +1 -1
- package/dist/ui/assets/{pieDiagram-E7YTZNPT-CxjL4I1h.js → pieDiagram-E7YTZNPT-BnZqUDkM.js} +1 -1
- package/dist/ui/assets/{quadrantDiagram-AXDQQJYC-Cjd1QMIe.js → quadrantDiagram-AXDQQJYC-DcUwOkYQ.js} +1 -1
- package/dist/ui/assets/{radar-RG4KPBEZ-CRkQIwiv.js → radar-RG4KPBEZ-HF5xGmaW.js} +1 -1
- package/dist/ui/assets/{railroad-74A4TZTK-i67XSWTB.js → railroad-74A4TZTK-BTk1PkNr.js} +1 -1
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-DM2GUVFR.js +1 -0
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-PC05P78D.js +1 -0
- package/dist/ui/assets/railroad-peg-WCYAUIDC-TPiCukJe.js +1 -0
- package/dist/ui/assets/{railroadDiagram-O6MQD6OU-_pK0qyaY.js → railroadDiagram-O6MQD6OU-Bkp0Ch0g.js} +1 -1
- package/dist/ui/assets/{requirementDiagram-BXWQKSXE-CRrFX-yw.js → requirementDiagram-BXWQKSXE-CLfjDVbv.js} +1 -1
- package/dist/ui/assets/{sankeyDiagram-P5KCCOFB-X_xFRj9E.js → sankeyDiagram-P5KCCOFB-DKwhpNDg.js} +1 -1
- package/dist/ui/assets/{sequenceDiagram-WJ2MYXX4-Byb49lKf.js → sequenceDiagram-WJ2MYXX4-Cnp7GvpQ.js} +1 -1
- package/dist/ui/assets/{stateDiagram-D77RDMKH-CzaPrqYF.js → stateDiagram-D77RDMKH-DsqdUH-h.js} +1 -1
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-CSd5puL-.js +1 -0
- package/dist/ui/assets/{swimlanes-42K2YHIH-Cx_1lnqr.js → swimlanes-42K2YHIH-2dKHkIfx.js} +1 -1
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-Be1y9KaM.js +8 -0
- package/dist/ui/assets/{timeline-definition-24CTP7MA-B1IbZPQ-.js → timeline-definition-24CTP7MA-DsEfLZLN.js} +1 -1
- package/dist/ui/assets/{treeView-Q6P3EWNA-DFWhVE3d.js → treeView-Q6P3EWNA-Dv0KgKnC.js} +1 -1
- package/dist/ui/assets/{treemap-WGGIJYW6-BmbYPThn.js → treemap-WGGIJYW6-CP6HeYD3.js} +1 -1
- package/dist/ui/assets/vendor-ui-BsjpmGE7.js +3 -0
- package/dist/ui/assets/{vennDiagram-4TSXK5OY-Ae2AtRpt.js → vennDiagram-4TSXK5OY-XmwE5O7F.js} +1 -1
- package/dist/ui/assets/{wardley-WFR3VGLG-BtD4X4tL.js → wardley-WFR3VGLG-4hmMSweq.js} +1 -1
- package/dist/ui/assets/{wardleyDiagram-VM6X3IG4-B3YN2fTd.js → wardleyDiagram-VM6X3IG4-Ch9Qr3LE.js} +1 -1
- package/dist/ui/assets/{xychartDiagram-S5SC5T6Z-CIzJfMKA.js → xychartDiagram-S5SC5T6Z-CDHgQsZE.js} +1 -1
- package/dist/ui/index.html +7 -4
- package/dist/ui/sw.js +2 -2
- package/package.json +2 -3
- package/dist/commands/screenshots.d.ts +0 -7
- package/dist/commands/screenshots.js +0 -77
- package/dist/ui/assets/AgentsView-CF4wRvHh.css +0 -1
- package/dist/ui/assets/AgentsView-D-myL-kA.js +0 -1
- package/dist/ui/assets/ContextView-DsOqAdyE.js +0 -4
- package/dist/ui/assets/DashboardView-BOhsIJqO.js +0 -1
- package/dist/ui/assets/DeploymentsView-DXu_FYR2.js +0 -1
- package/dist/ui/assets/InputsView-24HVbVPk.js +0 -1
- package/dist/ui/assets/InputsView-BLb7GHtx.css +0 -1
- package/dist/ui/assets/ReleasesView-CAgMuxpe.js +0 -3
- package/dist/ui/assets/SettingsView-CA-NYSMK.css +0 -1
- package/dist/ui/assets/SettingsView-O3iZSnjg.js +0 -3
- package/dist/ui/assets/WorkView-D8Tl6qwy.js +0 -1
- package/dist/ui/assets/architecture-7GRP2DOG-pLdFt-xS.js +0 -1
- package/dist/ui/assets/button-lbikqSph.js +0 -1
- package/dist/ui/assets/channel-gA4qBv3A.js +0 -1
- package/dist/ui/assets/classDiagram-ZZMXUADV-BzW8bq2P.js +0 -1
- package/dist/ui/assets/classDiagram-v2-VYDZK3BY-BzW8bq2P.js +0 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-DHqyLOAn.js +0 -1
- package/dist/ui/assets/flowDiagram-HODETNUW-CYk_ze5K.js +0 -1
- package/dist/ui/assets/index-BACBfnga.css +0 -1
- package/dist/ui/assets/index-BOQ-ust6.js +0 -26
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-Cv9m5aS3.js +0 -1
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-C5ZIn-Jh.js +0 -1
- package/dist/ui/assets/railroad-peg-WCYAUIDC-CGra9Oq-.js +0 -1
- package/dist/ui/assets/stateDiagram-v2-MP3YSRHH-BCXckz7K.js +0 -1
- package/dist/ui/assets/swimlanesDiagram-VR7AAH4N-54qsKi6A.js +0 -8
- package/dist/ui/assets/vendor-ui-DPm7zLxi.js +0 -3
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ It is **not** a Jira/Linear replacement bolted onto your repo. It is the
|
|
|
11
11
|
connective tissue for an AI-native workflow: humans define and review work,
|
|
12
12
|
agents read the same files as full context and execute against the repo.
|
|
13
13
|
RepoOS directly spawns and manages coding agents in isolated worktrees,
|
|
14
|
-
streams their output, and
|
|
14
|
+
streams their output, and leaves merge decisions with humans.
|
|
15
15
|
|
|
16
16
|
```
|
|
17
17
|
the repo ──▶ source of truth (markdown + git)
|
|
@@ -33,18 +33,64 @@ RepoOS doesn't just host tasks that agents read — it spawns and manages the
|
|
|
33
33
|
agents themselves. You configure a coding agent on the Agents page, click Start
|
|
34
34
|
on a task, and RepoOS launches the agent in a dedicated git worktree, streams
|
|
35
35
|
its output live, and lets you resume the conversation at any point. When the
|
|
36
|
-
agent finishes, the task moves to review for human
|
|
37
|
-
first-class participants, but
|
|
36
|
+
agent finishes, the task moves to review for human approval. Agents are
|
|
37
|
+
first-class participants, but people decide what merges.
|
|
38
38
|
|
|
39
39
|
## Install
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Choose one installation method:
|
|
42
|
+
|
|
43
|
+
### curl
|
|
44
|
+
|
|
45
|
+
Install the standalone `repoos` command. This is the quickest option when you
|
|
46
|
+
want a self-contained release build:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
curl -fsSL https://repoos.org/install | bash
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
It runs on Bun when available (recommended), otherwise requires Node.js >=
|
|
53
|
+
20.6.0. It installs to `~/.repoos` and links `repoos` into `~/.local/bin`.
|
|
54
|
+
|
|
55
|
+
### Homebrew
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
brew install repo-os/tap/repoos
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### npm
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm install -g @repo-os/repoos
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Bun
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
bun add -g @repo-os/repoos
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### pnpm
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pnpm add -g @repo-os/repoos
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### mise
|
|
42
80
|
|
|
43
81
|
```bash
|
|
44
|
-
|
|
82
|
+
mise use --global npm:@repo-os/repoos
|
|
45
83
|
```
|
|
46
84
|
|
|
47
|
-
|
|
85
|
+
This uses mise's built-in npm backend and records RepoOS in your global mise
|
|
86
|
+
configuration. Make sure [mise shell activation](https://mise.jdx.dev/getting-started.html)
|
|
87
|
+
is enabled so its `repoos` shim is on your PATH.
|
|
88
|
+
|
|
89
|
+
Use the same tool to update a package-manager install: `npm update -g
|
|
90
|
+
@repo-os/repoos`, `bun update -g @repo-os/repoos`, `pnpm update -g
|
|
91
|
+
@repo-os/repoos`, `mise upgrade npm:@repo-os/repoos`, or `brew upgrade
|
|
92
|
+
repo-os/tap/repoos`. A standalone install updates with `repoos upgrade` and
|
|
93
|
+
removes with `repoos uninstall`.
|
|
48
94
|
|
|
49
95
|
Then in any repo:
|
|
50
96
|
|
|
@@ -78,7 +124,7 @@ repoos mv <id> <status> Move a task (inbox|ready|active|review|done)
|
|
|
78
124
|
repoos new "<title>" [flags] Create a task
|
|
79
125
|
repoos index [--json] Rebuild the derived index (--json for agents/tools)
|
|
80
126
|
repoos serve [--port N] Start the local server: live API + SSE event stream
|
|
81
|
-
repoos check
|
|
127
|
+
repoos check Pre-merge checks (build, typecheck, tests, UI smoke)
|
|
82
128
|
repoos tunnel [subcommand] Cloudflare Tunnel + Zero Trust publishing
|
|
83
129
|
```
|
|
84
130
|
|
|
@@ -241,7 +287,7 @@ RepoOS can spawn and manage coding agents (opencode, Claude Code, Qwen, Codex)
|
|
|
241
287
|
to execute tasks. Agents run in isolated git worktrees per task so parallel work
|
|
242
288
|
never collides. Output streams over SSE in real time, and the per-task chat tab
|
|
243
289
|
lets you resume a session mid-flight. When the agent finishes, the task moves to
|
|
244
|
-
review — human
|
|
290
|
+
review — a human decides whether it is ready to merge.
|
|
245
291
|
|
|
246
292
|
Configure agents on the Agents page: choose the CLI, pick a model (sourced live
|
|
247
293
|
from `opencode models`), add custom instructions, and set up PM and reviewer
|
package/dist/.build-info.json
CHANGED
package/dist/.build-stamp.json
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -12,7 +12,9 @@ import { cmdServe, serveProcessTitle, setServeProcessTitle } from "../commands/s
|
|
|
12
12
|
import { cmdStop } from "../commands/stop.js";
|
|
13
13
|
import { cmdTunnel } from "../commands/tunnel.js";
|
|
14
14
|
import { cmdUpgrade } from "../commands/upgrade.js";
|
|
15
|
+
import { cmdUninstall } from "../commands/uninstall.js";
|
|
15
16
|
import { cmdStatus } from "../commands/status.js";
|
|
17
|
+
import { cmdService } from "../commands/service.js";
|
|
16
18
|
import { checkBuild } from "../core/build.js";
|
|
17
19
|
import { loadConfig } from "../core/config.js";
|
|
18
20
|
import { reexecUnderBunIfRequested } from "../core/runtime.js";
|
|
@@ -48,7 +50,72 @@ function readVersion() {
|
|
|
48
50
|
return "0.0.0-dev";
|
|
49
51
|
}
|
|
50
52
|
const VERSION = readVersion();
|
|
53
|
+
// Column where COMMANDS descriptions start, measured from the start of the
|
|
54
|
+
// command text (not counting the leading 4-space indent). Wide enough for
|
|
55
|
+
// the longest single-line entry ("gc [--yes|--dry-run]", 21 chars) plus a
|
|
56
|
+
// 2-space gap. Kept as one constant (rather than hand-counted spaces per
|
|
57
|
+
// line) so every row stays aligned when an entry is added or renamed.
|
|
58
|
+
const CMD_COL = 23;
|
|
59
|
+
const CMD_INDENT = " ".repeat(4 + CMD_COL);
|
|
60
|
+
/**
|
|
61
|
+
* A COMMANDS row: `cmd` is plain text (for width math), `desc` may contain
|
|
62
|
+
* ANSI codes. Callers join rows with `"\n "` — the 4-space indent lives
|
|
63
|
+
* in the join separator (and the template literal for the first row), not
|
|
64
|
+
* here, so a row must not add its own leading indent.
|
|
65
|
+
*/
|
|
66
|
+
function cmdRow(cmd, desc) {
|
|
67
|
+
if (cmd.length >= CMD_COL) {
|
|
68
|
+
// Too long to share a line with its description — command on its own
|
|
69
|
+
// line, description indented to the same column as every other row.
|
|
70
|
+
return `${c.cyan(cmd)}\n${CMD_INDENT}${desc}`;
|
|
71
|
+
}
|
|
72
|
+
return `${c.cyan(cmd)}${" ".repeat(CMD_COL - cmd.length)}${desc}`;
|
|
73
|
+
}
|
|
74
|
+
// Column where trailing `# comment`s line up in the EXAMPLES block below.
|
|
75
|
+
const EX_COL = 28;
|
|
76
|
+
/** An EXAMPLES row; see cmdRow's doc comment re: indentation living in the join. */
|
|
77
|
+
function exRow(cmd, comment) {
|
|
78
|
+
if (!comment)
|
|
79
|
+
return `${c.dim("$")} ${cmd}`;
|
|
80
|
+
const pad = " ".repeat(Math.max(1, EX_COL - cmd.length));
|
|
81
|
+
return `${c.dim("$")} ${cmd}${pad}${c.dim("# " + comment)}`;
|
|
82
|
+
}
|
|
51
83
|
function help() {
|
|
84
|
+
const commandLines = [
|
|
85
|
+
cmdRow("check", "Full definition-of-done: build, typecheck, tests, UI smoke check"),
|
|
86
|
+
cmdRow("init [name]", "Scaffold work/, repoos.toml, AGENTS.md; outside a git repo runs a guided flow that can launch the web console"),
|
|
87
|
+
cmdRow("list [status]", `Show the board (or one column: ${c.dim("inbox|ready|active|review|done")})`),
|
|
88
|
+
cmdRow("status [--json]", "One-screen health snapshot: server, build freshness, board, worktrees, tunnel, git"),
|
|
89
|
+
cmdRow("show <id>", "Show a task's full spec"),
|
|
90
|
+
cmdRow("mv <id> <status>", `Move a task to a new status — never merges code ${c.dim('flags: --note "...", --force-not-merged')}`),
|
|
91
|
+
cmdRow('note <id> "<text>"', "Append a free-form note to a task's activity log"),
|
|
92
|
+
cmdRow("update <id>", `Edit a task's metadata/body ${c.dim("flags: --title --area --priority --type --body --branch --assigned-to")}`),
|
|
93
|
+
cmdRow('new "<title>"', `Create a task ${c.dim("flags: --ai --type --area --priority --body")}`),
|
|
94
|
+
cmdRow('new-doc "<desc>"', "Create a document from a description via PM agent"),
|
|
95
|
+
cmdRow("index [--json]", "Rebuild the derived index cache"),
|
|
96
|
+
cmdRow("gc [--yes|--dry-run]", "Collect leaked task worktrees/branches (done/absent tasks, integrate candidates)"),
|
|
97
|
+
cmdRow("serve [--port N]", "Start the local server (live API + SSE stream)"),
|
|
98
|
+
cmdRow("stop [--port N]", "Stop this repo's serve process (by its own lockfile)"),
|
|
99
|
+
cmdRow("service [sub]", `Manage background services ${c.dim("list|status|install|start|stop|restart|enable|disable|remove")}`),
|
|
100
|
+
cmdRow("tunnel <sub>", `Publish local apps via Cloudflare Tunnel + Zero Trust ${c.dim("(setup|create|allow|deny|rename|destroy|start|install|stop|list|status)")}`),
|
|
101
|
+
cmdRow("upgrade [--channel beta|canary|rc]", `Self-update a standalone (curl-installed) repoos to the latest release\n${CMD_INDENT}(stable by default; --channel tracks a prerelease line instead)`),
|
|
102
|
+
cmdRow("uninstall [--yes]", "Remove the standalone (curl-installed) repoos from this machine"),
|
|
103
|
+
].join("\n ");
|
|
104
|
+
const exampleLines = [
|
|
105
|
+
exRow("repoos init"),
|
|
106
|
+
exRow("repoos init myproject", "guided new-project flow outside a git repo"),
|
|
107
|
+
exRow('repoos new "Add company dashboard" --ai --type feature --area web --priority p1'),
|
|
108
|
+
exRow('repoos new-doc "API design doc for the payment system"'),
|
|
109
|
+
exRow("repoos mv 0012 active"),
|
|
110
|
+
exRow('repoos mv 0012 active --note "Fix the regression in checkout; see review"'),
|
|
111
|
+
exRow('repoos note 0012 "Handle the reviewer\'s suggestions before the next review"'),
|
|
112
|
+
exRow('repoos update 0012 --title "New title" --area web'),
|
|
113
|
+
exRow("repoos list ready"),
|
|
114
|
+
exRow("repoos status", "one-screen health snapshot"),
|
|
115
|
+
exRow("repoos status --json", "machine-readable, for agents/tools"),
|
|
116
|
+
exRow("repoos index --json", "machine-readable, for agents/tools"),
|
|
117
|
+
exRow("repoos serve", "live API + SSE at http://127.0.0.1:7171"),
|
|
118
|
+
].join("\n ");
|
|
52
119
|
console.log(`
|
|
53
120
|
${c.bold(c.cyan("RepoOS"))} ${c.dim("v" + VERSION)} — the repo is the operating system
|
|
54
121
|
|
|
@@ -56,39 +123,10 @@ function help() {
|
|
|
56
123
|
repoos <command> [args]
|
|
57
124
|
|
|
58
125
|
${c.bold("COMMANDS")}
|
|
59
|
-
${
|
|
60
|
-
${c.cyan("init")} [name] Scaffold work/, repoos.toml, AGENTS.md; outside a git repo runs a guided flow that can launch the web console
|
|
61
|
-
${c.cyan("list")} [status] Show the board (or one column: ${c.dim("inbox|ready|active|review|done")})
|
|
62
|
-
${c.cyan("status")} [--json] One-screen health snapshot: server, build freshness, board, worktrees, tunnel, git
|
|
63
|
-
${c.cyan("show")} <id> Show a task's full spec
|
|
64
|
-
${c.cyan("mv")} <id> <status> Move a task to a new status ${c.dim('flags: --note "..."')}
|
|
65
|
-
${c.cyan("note")} <id> "<text>" Append a free-form note to a task's activity log
|
|
66
|
-
${c.cyan("update")} <id> Edit a task's metadata/body ${c.dim("flags: --title --area --priority --type --body --branch --assigned-to")}
|
|
67
|
-
${c.cyan("new")} "<title>" Create a task ${c.dim("flags: --ai --type --area --priority --body")}
|
|
68
|
-
${c.cyan("new-doc")} "<desc>" Create a document from a description via PM agent
|
|
69
|
-
${c.cyan("index")} [--json] Rebuild the derived index cache
|
|
70
|
-
${c.cyan("gc")} [--yes|--dry-run] Collect leaked task worktrees/branches (done/absent tasks, integrate candidates)
|
|
71
|
-
${c.cyan("serve")} [--port N] Start the local server (live API + SSE stream)
|
|
72
|
-
${c.cyan("stop")} [--port N] Stop this repo's serve process (by its own lockfile)
|
|
73
|
-
${c.cyan("tunnel")} <sub> Publish local apps via Cloudflare Tunnel + Zero Trust ${c.dim("(setup|create|allow|deny|rename|destroy|start|install|stop|list|status)")}
|
|
74
|
-
${c.cyan("upgrade")} [--channel beta|canary|rc]
|
|
75
|
-
Self-update a standalone (curl-installed) repoos to the latest release
|
|
76
|
-
(stable by default; --channel tracks a prerelease line instead)
|
|
126
|
+
${commandLines}
|
|
77
127
|
|
|
78
128
|
${c.bold("EXAMPLES")}
|
|
79
|
-
${
|
|
80
|
-
${c.dim("$")} repoos init myproject # guided new-project flow outside a git repo
|
|
81
|
-
${c.dim("$")} repoos new "Add company dashboard" --ai --type feature --area web --priority p1
|
|
82
|
-
${c.dim("$")} repoos new-doc "API design doc for the payment system"
|
|
83
|
-
${c.dim("$")} repoos mv 0012 active
|
|
84
|
-
${c.dim("$")} repoos mv 0012 active --note "Fix the regression in checkout; see review"
|
|
85
|
-
${c.dim("$")} repoos note 0012 "Handle the reviewer's suggestions before the next review"
|
|
86
|
-
${c.dim("$")} repoos update 0012 --title "New title" --area web
|
|
87
|
-
${c.dim("$")} repoos list ready
|
|
88
|
-
${c.dim("$")} repoos status ${c.dim("# one-screen health snapshot")}
|
|
89
|
-
${c.dim("$")} repoos status --json ${c.dim("# machine-readable, for agents/tools")}
|
|
90
|
-
${c.dim("$")} repoos index --json ${c.dim("# machine-readable, for agents/tools")}
|
|
91
|
-
${c.dim("$")} repoos serve ${c.dim("# live API + SSE at http://127.0.0.1:7171")}
|
|
129
|
+
${exampleLines}
|
|
92
130
|
`);
|
|
93
131
|
}
|
|
94
132
|
function main() {
|
|
@@ -121,6 +159,7 @@ function main() {
|
|
|
121
159
|
"--help",
|
|
122
160
|
"-h",
|
|
123
161
|
"upgrade",
|
|
162
|
+
"uninstall",
|
|
124
163
|
]);
|
|
125
164
|
if (!skipCheck.has(cmd)) {
|
|
126
165
|
const result = checkBuild();
|
|
@@ -157,12 +196,15 @@ function main() {
|
|
|
157
196
|
case "mv":
|
|
158
197
|
case "move": {
|
|
159
198
|
let note;
|
|
199
|
+
let force = false;
|
|
160
200
|
const args = rest.slice();
|
|
161
201
|
for (let i = 0; i < args.length; i++) {
|
|
162
202
|
if (args[i] === "--note")
|
|
163
203
|
note = args[++i];
|
|
204
|
+
else if (args[i] === "--force-not-merged")
|
|
205
|
+
force = true;
|
|
164
206
|
}
|
|
165
|
-
cmdMv(args[0], args[1], note);
|
|
207
|
+
cmdMv(args[0], args[1], note, { force });
|
|
166
208
|
break;
|
|
167
209
|
}
|
|
168
210
|
case "note":
|
|
@@ -192,6 +234,9 @@ function main() {
|
|
|
192
234
|
case "stop":
|
|
193
235
|
cmdStop(rest);
|
|
194
236
|
break;
|
|
237
|
+
case "service":
|
|
238
|
+
void cmdService(rest);
|
|
239
|
+
break;
|
|
195
240
|
case "check":
|
|
196
241
|
void cmdCheck();
|
|
197
242
|
break;
|
|
@@ -201,6 +246,9 @@ function main() {
|
|
|
201
246
|
case "upgrade":
|
|
202
247
|
void cmdUpgrade(rest);
|
|
203
248
|
break;
|
|
249
|
+
case "uninstall":
|
|
250
|
+
void cmdUninstall(rest);
|
|
251
|
+
break;
|
|
204
252
|
case "version":
|
|
205
253
|
case "--version":
|
|
206
254
|
case "-v":
|
package/dist/commands/check.js
CHANGED
|
@@ -1114,7 +1114,11 @@ export async function cmdCheck() {
|
|
|
1114
1114
|
// `bun run test` off this machine — and then invoke the LOCAL `repoos check`
|
|
1115
1115
|
// with REPOOS_SKIP_TESTS=1 for only the cheap static guards + UI smoke.
|
|
1116
1116
|
// Standalone `repoos check` never sets it, so the CLI gate is unchanged.
|
|
1117
|
-
if (
|
|
1117
|
+
if (fmtLintFailed) {
|
|
1118
|
+
console.log(c.dim(" · Skipped — formatting/lint failed above, so build was skipped too"));
|
|
1119
|
+
results.push(pass("tests", "skipped — formatting/lint failed, fix and rerun"));
|
|
1120
|
+
}
|
|
1121
|
+
else if (process.env.REPOOS_SKIP_TESTS === "1") {
|
|
1118
1122
|
console.log(c.dim(" · Skipped — test suite ran on the remote validation runner (REPOOS_SKIP_TESTS=1)"));
|
|
1119
1123
|
results.push(pass("tests", "skipped — ran on the remote validation runner"));
|
|
1120
1124
|
}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,9 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
/** Marker makes the optional existing-repo addition safe to offer repeatedly. */
|
|
2
|
+
export declare const REPOOS_AGENTS_SECTION_MARKER = "<!-- repoos:managed-instructions -->";
|
|
3
|
+
/**
|
|
4
|
+
* A deliberately small appendix for a repository that already owns its agent
|
|
5
|
+
* instructions. RepoOS supplies its managed-runner instructions itself; this
|
|
6
|
+
* only documents the project-level contract that a human or external agent
|
|
7
|
+
* should see in the repo.
|
|
8
|
+
*/
|
|
9
|
+
export declare const REPOOS_AGENTS_SECTION: (workDir: string) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Return the exact addition that `repoos init` may offer for an existing
|
|
12
|
+
* AGENTS.md, or null when this repository already documents RepoOS.
|
|
13
|
+
*/
|
|
14
|
+
export declare function repoOSAgentsSectionAddition(existing: string, workDir?: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* A namespace string: empty string or "/" means repo root; anything else is a
|
|
17
|
+
* repo-relative subdirectory (e.g. "repoos", ".meta/repoos").
|
|
18
|
+
*/
|
|
19
|
+
type ScaffoldLayout = string;
|
|
2
20
|
/** Which starter task to seed beyond 0001 — a blank project or an existing repo. */
|
|
3
21
|
type ScaffoldKind = "new" | "existing";
|
|
4
22
|
export declare function scaffoldInto(root: string, description: string, layout?: ScaffoldLayout, kind?: ScaffoldKind): {
|
|
5
23
|
created: string[];
|
|
6
24
|
skipped: string[];
|
|
7
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Validate a user-supplied namespace string. Returns null when the input means
|
|
28
|
+
* "repo root" (the special `/` or empty), a normalized repo-relative path when
|
|
29
|
+
* valid, or an error message prefixed with `!` when invalid. The caller
|
|
30
|
+
* distinguishes valid from error by checking `result.startsWith("!")`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateNamespace(input: string): string;
|
|
8
33
|
export declare function cmdInit(args: string[]): Promise<void>;
|
|
9
34
|
export {};
|