@nanocollective/roster 0.1.0-alpha.5 → 0.1.0-alpha.50

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.
Files changed (102) hide show
  1. package/README.md +70 -84
  2. package/dist/cli.js +4833 -2752
  3. package/docs/README.md +9 -6
  4. package/docs/agents.md +24 -20
  5. package/docs/architecture.md +13 -5
  6. package/docs/charters/analyst.md +65 -0
  7. package/docs/charters/cmo.md +69 -0
  8. package/docs/charters/community.md +63 -0
  9. package/docs/charters/cto.md +71 -0
  10. package/docs/charters/designer.md +65 -0
  11. package/docs/charters/devops.md +65 -0
  12. package/docs/charters/pm.md +70 -0
  13. package/docs/charters/qa.md +65 -0
  14. package/docs/charters/support.md +60 -0
  15. package/docs/charters/writer.md +63 -0
  16. package/docs/commands.md +93 -7
  17. package/docs/concepts.md +61 -14
  18. package/docs/cost.md +36 -1
  19. package/docs/developing.md +16 -21
  20. package/docs/doctor-codes.md +10 -2
  21. package/docs/export.md +2 -0
  22. package/docs/extending.md +2 -2
  23. package/docs/getting-started.md +128 -78
  24. package/docs/images/brain.jpg +0 -0
  25. package/docs/images/org.jpg +0 -0
  26. package/docs/images/prompt.jpg +0 -0
  27. package/docs/images/setup-org.jpg +0 -0
  28. package/docs/images/setup-plan.jpg +0 -0
  29. package/docs/images/staff.jpg +0 -0
  30. package/docs/manual-steps.md +94 -123
  31. package/docs/memory.md +21 -3
  32. package/docs/org-yaml.md +40 -2
  33. package/docs/portal.md +165 -48
  34. package/docs/prompts.md +31 -4
  35. package/docs/security.md +37 -5
  36. package/docs/session-workflow.md +63 -17
  37. package/docs/staff-yaml.md +30 -3
  38. package/docs/troubleshooting.md +8 -8
  39. package/docs/upgrading.md +9 -3
  40. package/docs/writing-a-charter.md +28 -0
  41. package/package.json +18 -20
  42. package/templates/brain/.github/workflows/%%STAFF%%-daily.yaml +26 -1
  43. package/templates/brain/.github/workflows/%%STAFF%%-mention.yaml +41 -7
  44. package/templates/brain/CHARTER.md +3 -3
  45. package/templates/brain/README.md +1 -0
  46. package/templates/brain/log/decisions.md +3 -0
  47. package/templates/brain/staff.yaml +4 -1
  48. package/templates/brain/strategy/ideas.md +7 -0
  49. package/templates/briefs/priorities.md +46 -0
  50. package/templates/ops/.github/workflows/session.yaml +236 -15
  51. package/templates/ops/agents.mjs +7 -3
  52. package/templates/ops/compose.mjs +31 -3
  53. package/templates/ops/inflight.mjs +157 -0
  54. package/templates/ops/org/operating.md +43 -4
  55. package/templates/ops/org/voice.md +9 -0
  56. package/templates/ops/prompts/_inflight.md +14 -0
  57. package/templates/ops/prompts/_paths.md +2 -1
  58. package/templates/ops/prompts/daily.md +37 -9
  59. package/templates/ops/prompts/mention.md +21 -0
  60. package/templates/ops/run-record.mjs +146 -0
  61. package/templates/portal/css/base.css +167 -73
  62. package/templates/portal/css/brain.css +23 -20
  63. package/templates/portal/css/diff.css +10 -9
  64. package/templates/portal/css/graph.css +12 -7
  65. package/templates/portal/css/health.css +13 -11
  66. package/templates/portal/css/home.css +93 -0
  67. package/templates/portal/css/inbox.css +45 -25
  68. package/templates/portal/css/layout.css +90 -46
  69. package/templates/portal/css/markdown.css +36 -14
  70. package/templates/portal/css/runs.css +13 -0
  71. package/templates/portal/css/setup.css +116 -34
  72. package/templates/portal/index.html +21 -9
  73. package/templates/portal/js/api.js +44 -4
  74. package/templates/portal/js/app.js +94 -9
  75. package/templates/portal/js/dialog.js +83 -0
  76. package/templates/portal/js/homesort.js +174 -0
  77. package/templates/portal/js/icons.js +37 -0
  78. package/templates/portal/js/inflight.js +18 -0
  79. package/templates/portal/js/md.js +5 -2
  80. package/templates/portal/js/mdedit.js +84 -0
  81. package/templates/portal/js/readiness.js +70 -0
  82. package/templates/portal/js/refresh.js +10 -2
  83. package/templates/portal/js/state.js +11 -5
  84. package/templates/portal/js/views/app.js +24 -7
  85. package/templates/portal/js/views/brain.js +1 -1
  86. package/templates/portal/js/views/checklist.js +10 -4
  87. package/templates/portal/js/views/credential.js +84 -0
  88. package/templates/portal/js/views/graph.js +1 -1
  89. package/templates/portal/js/views/health.js +17 -4
  90. package/templates/portal/js/views/hire.js +593 -0
  91. package/templates/portal/js/views/home.js +546 -0
  92. package/templates/portal/js/views/inbox.js +226 -70
  93. package/templates/portal/js/views/org.js +46 -106
  94. package/templates/portal/js/views/orgedit.js +234 -0
  95. package/templates/portal/js/views/paste.js +87 -21
  96. package/templates/portal/js/views/prompt.js +11 -4
  97. package/templates/portal/js/views/repos.js +20 -15
  98. package/templates/portal/js/views/runonce.js +94 -0
  99. package/templates/portal/js/views/runs.js +170 -0
  100. package/templates/portal/js/views/setup.js +261 -75
  101. package/templates/portal/js/views/staff.js +170 -243
  102. package/templates/portal/js/views/todo.js +62 -0
package/README.md CHANGED
@@ -1,118 +1,110 @@
1
- # roster
1
+ # Roster
2
2
 
3
3
  Built by the [Nano Collective](https://nanocollective.org) — a community collective building AI tooling not for profit, but for the community.
4
4
 
5
- **An agent-run org, powered by GitHub.** Each staff member is an AI whose brain is a private
6
- repo: a charter, a memory, a decision log, and a scheduled session that does a day's work
7
- unattended and hands off.
5
+ Roster (alpha) runs an organisation on AI staff whose brain is a private GitHub repo: a charter,
6
+ a memory, a decision log, and a scheduled session that does a day's work unattended and hands off.
8
7
 
9
- **Full documentation is in [`docs/`](docs/README.md).** Start with
10
- [getting started](docs/getting-started.md), then read [manual steps](docs/manual-steps.md).
8
+ [![PR checks](https://github.com/Nano-Collective/roster/actions/workflows/pr-checks.yml/badge.svg)](https://github.com/Nano-Collective/roster/actions/workflows/pr-checks.yml)
9
+ [![npm](https://img.shields.io/npm/v/@nanocollective/roster)](https://www.npmjs.com/package/@nanocollective/roster)
10
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
11
11
 
12
- Status: **working, private, one tenant.** Every command below is built and exercised daily
13
- against a live two-agent org. Not published yet.
12
+ It runs every day against a live org: a CTO and a CMO have built and marketed
13
+ [Pip](https://playpip.io) since July, with one person reading and merging what they hand off.
14
+ [The case study](https://roster.nanocollective.org/case-study/pip/) has the numbers.
14
15
 
15
- ## What it does
16
+ ## Quick start
16
17
 
17
18
  ```bash
18
- npx @nanocollective/roster # set up, or join, an org — in a browser
19
- roster init --org acme # or from a terminal: ops repo, org layer, merge base
19
+ npx @nanocollective/roster
20
+ ```
21
+
22
+ Run it in an empty directory. The page that opens is the setup screen, and it is the whole of
23
+ setup: say which GitHub organisation, read the plan, then create it. An org that already runs
24
+ Roster gets checked out instead, which is how you join one a colleague set up.
25
+
26
+ You need `gh` [authenticated](https://cli.github.com), a GitHub organisation, and a credential
27
+ for whichever [coding agent](docs/agents.md) you want to run. Then read
28
+ [getting started](docs/getting-started.md): about an hour and a half to a first staff member's
29
+ first finished run, most of it writing what the business is and the staff member's charter.
30
+
31
+ ## Usage
32
+
33
+ Everything the portal does is also a command, on the same files. Nothing changes anything
34
+ without `--apply`.
35
+
36
+ **`roster` here means either of these.** With nothing installed, run commands through npx:
37
+ `npx @nanocollective/roster@latest upgrade`. Or install it once with
38
+ `npm install -g @nanocollective/roster` and type `roster upgrade`. When you run through npx,
39
+ the commands roster suggests are printed the npx way, so they can be pasted as they are.
40
+
41
+ ```bash
42
+ roster init --org acme # ops repo, org layer, merge base
20
43
  roster hire cto # scaffold a staff member: repo, workflows, labels, peers
21
44
  roster app cto # create their GitHub App, write its secrets
45
+ roster credential # the coding agent's credential, once for the org
46
+ roster run cto # one run now, followed to the end
22
47
  roster doctor # is any of this actually wired up
48
+ roster fix # every finding, as one brief for a coding agent
23
49
  roster portal # read every brain, and the docs, locally
50
+ roster prompt cto # the exact prompt a run will be sent
24
51
  roster upgrade # take framework changes without losing your edits
52
+ roster retire cto # let someone go, with their brain kept
25
53
  ```
26
54
 
27
- Nothing changes anything without `--apply`. `roster help <command>` for the rest, or
28
- [docs/commands.md](docs/commands.md).
55
+ Also `lint`, `brief` and `export`. `roster help <command>` for flags, or
56
+ [the CLI reference](docs/commands.md).
29
57
 
30
- ## The shape
58
+ ## How it is shaped
31
59
 
32
60
  ```
33
- Nano-Collective/roster this repo. The CLI, the templates, the portal, the docs.
34
- ✗ never a runtime dependency of a tenant
61
+ Nano-Collective/roster this repo: the CLI, the templates, the portal, the docs.
62
+ Never a runtime dependency of an org.
35
63
 
36
- <tenant>/roster-ops the org layer + the machinery, generated from templates/ops/
64
+ <your-org>/roster-ops the org layer and the machinery, generated from templates/ops/
37
65
  org/business.md what the business is. You write this.
38
- org/operating.md the autonomy contract
39
- org/voice.md house style
40
- org/guardrails.md the non-negotiables
41
- prompts/ composable run-kind fragments
42
- compose.mjs vendored. Builds the prompt at run time.
43
- agents.mjs vendored. Which coding agent runs, and how.
44
- .github/workflows/session.yaml the reusable workflow every staff repo calls
45
-
46
- <tenant>/<brain> one repo per staff member. The repo is the brain.
47
- CHARTER.md the personality. Hand written. Never generated.
66
+ org/priorities.md what matters this month, ranked. You write this too.
67
+ org/operating.md, voice.md, the autonomy contract, house style, the non-negotiables,
68
+ guardrails.md inherited by every staff member
69
+ compose.mjs, agents.mjs vendored: builds the prompt, runs the coding agent
70
+ inflight.mjs, run-record.mjs vendored: human work in flight, and what each run cost
71
+ .github/workflows/session.yaml the reusable workflow every staff repo calls
72
+
73
+ <your-org>/<staff> one per staff member. The repo is the brain.
74
+ CHARTER.md the personality. Hand written, never generated.
48
75
  staff.yaml the machine-readable half of the charter
49
76
  memory/INDEX.md one line per fact, read at every boot
50
- memory/notes/ the argument behind a fact, read on demand
51
- .github/workflows/ three callers, about forty lines each
52
77
  ```
53
78
 
54
- **Why a tenant vendors the machinery:** a private reusable workflow can only be called from
55
- inside its own org, and a morning run should not depend on npm, on a network call, or on an
56
- organisation the tenant does not control. So the framework writes templates *out* and never runs
57
- anything. `roster upgrade` carries a new version across, and it is run by a human because App
58
- tokens cannot push changes under `.github/workflows/` anywhere.
59
-
79
+ An org vendors the machinery because a morning run should not depend on npm, on a network
80
+ call, or on an organisation it does not control. `roster upgrade` carries a new version across.
60
81
  See [architecture](docs/architecture.md).
61
82
 
62
- ## Any coding agent
63
-
64
- roster composes a prompt and hands it to an agent. A runner is three shell-level facts:
65
-
66
- ```yaml
67
- agent:
68
- id: codex
69
- ```
70
-
71
- Presets for `claude-code-action` (default), `claude`, `codex` and `nanocoder`. Anything else
72
- works by writing `install`, `run` and `token_env` into `org.yaml`.
83
+ **Any coding agent.** Presets for `claude-code-action` (the default), `claude`, `codex` and
84
+ `nanocoder`; anything else works by writing `install`, `run` and `token_env` into `org.yaml`.
73
85
  See [choosing a coding agent](docs/agents.md).
74
86
 
75
- ## Composition
87
+ ## Documentation
76
88
 
77
- A runtime prompt is assembled from org policy, the staff member's charter, and the run kind:
78
-
79
- ```
80
- prompts/<kind>.md
81
- {{> prompts/_paths.md}} where the repos are in the runner
82
- {{> prompts/_identity.md}} which bot you are, on which repo
83
- {{>? staff:prompts/work.md}} optional per-role override
84
- {{> org/operating.md}} the autonomy contract
85
- {{> org/guardrails.md}}
86
- {{> org/voice.md}}
87
- ```
88
-
89
- `{{> x}}` is required, `{{>? x}}` renders empty when absent, and `staff:` resolves inside the
90
- staff member's own repo. That is the extension seam: **a role extends the org without forking
91
- it.** Change `org/voice.md` once and everyone inherits it on their next run.
92
-
93
- See [prompts](docs/prompts.md).
94
-
95
- ## Development
96
-
97
- ```bash
98
- pnpm install
99
- pnpm test # 148 tests, node:test through tsx
100
- pnpm test:all # the full gate
101
- pnpm dev doctor --offline
102
- ```
103
-
104
- Run it from a workspace root: a directory holding the ops repo and every brain repo side by
105
- side, which is the same shape the CI runner checks out.
89
+ Online at [roster.nanocollective.org/docs](https://roster.nanocollective.org/docs/), and the
90
+ same pages in [`docs/`](docs/README.md). Start with [getting started](docs/getting-started.md),
91
+ then [manual steps](docs/manual-steps.md). The [reference](docs/README.md#reference) covers
92
+ `org.yaml`, `staff.yaml`, the prompt syntax, the session workflow and every `doctor` code.
106
93
 
107
94
  ## Contributing
108
95
 
109
- See [CONTRIBUTING.md](CONTRIBUTING.md). Contributions are welcome at any level of experience.
96
+ Contributions are welcome at any level of experience. See [CONTRIBUTING.md](CONTRIBUTING.md).
110
97
 
111
98
  ```bash
112
99
  pnpm install
113
- pnpm test:all # format, lint, types, dead code, tests
100
+ pnpm test:all # format, lint, types, dead code, tests
101
+ pnpm dev doctor --offline # run the CLI from source
114
102
  ```
115
103
 
104
+ Before touching anything that reaches a live org, read
105
+ [working on Roster itself](docs/developing.md). The short version: never fix a generated file
106
+ in an org, and check `roster prompt` output byte for byte before shipping a prompt change.
107
+
116
108
  ## Community
117
109
 
118
110
  - [Nano Collective](https://nanocollective.org)
@@ -121,9 +113,3 @@ pnpm test:all # format, lint, types, dead code, tests
121
113
  - [Discord](https://discord.gg/ktPDV6rekE)
122
114
 
123
115
  Licensed [MIT](LICENSE), copyright Nano Collective.
124
-
125
- ---
126
-
127
- Before touching anything that reaches a live org, read
128
- [working on roster itself](docs/developing.md). The short version: never fix a generated file
129
- in a tenant, and check `roster prompt` output byte for byte before shipping a prompt change.