@nanocollective/roster 0.1.0-alpha.4 → 0.1.0-alpha.40
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 +70 -84
- package/dist/cli.js +4562 -2744
- package/docs/README.md +9 -6
- package/docs/agents.md +24 -20
- package/docs/architecture.md +13 -5
- package/docs/charters/analyst.md +65 -0
- package/docs/charters/cmo.md +69 -0
- package/docs/charters/community.md +63 -0
- package/docs/charters/cto.md +71 -0
- package/docs/charters/designer.md +65 -0
- package/docs/charters/devops.md +65 -0
- package/docs/charters/pm.md +70 -0
- package/docs/charters/qa.md +65 -0
- package/docs/charters/support.md +60 -0
- package/docs/charters/writer.md +63 -0
- package/docs/commands.md +90 -5
- package/docs/concepts.md +48 -14
- package/docs/cost.md +36 -1
- package/docs/developing.md +16 -21
- package/docs/doctor-codes.md +8 -2
- package/docs/export.md +2 -0
- package/docs/extending.md +2 -2
- package/docs/getting-started.md +126 -77
- package/docs/images/brain.jpg +0 -0
- package/docs/images/org.jpg +0 -0
- package/docs/images/prompt.jpg +0 -0
- package/docs/images/setup-org.jpg +0 -0
- package/docs/images/setup-plan.jpg +0 -0
- package/docs/images/staff.jpg +0 -0
- package/docs/manual-steps.md +94 -123
- package/docs/memory.md +21 -3
- package/docs/org-yaml.md +39 -2
- package/docs/portal.md +119 -44
- package/docs/prompts.md +31 -4
- package/docs/security.md +37 -5
- package/docs/session-workflow.md +49 -17
- package/docs/staff-yaml.md +14 -2
- package/docs/troubleshooting.md +8 -8
- package/docs/upgrading.md +9 -3
- package/docs/writing-a-charter.md +28 -0
- package/package.json +1 -1
- package/templates/brain/.github/workflows/%%STAFF%%-daily.yaml +6 -0
- package/templates/brain/.github/workflows/%%STAFF%%-mention.yaml +6 -0
- package/templates/brain/CHARTER.md +3 -3
- package/templates/brain/README.md +1 -0
- package/templates/brain/log/decisions.md +3 -0
- package/templates/brain/strategy/ideas.md +7 -0
- package/templates/briefs/priorities.md +46 -0
- package/templates/ops/.github/workflows/session.yaml +108 -14
- package/templates/ops/agents.mjs +7 -3
- package/templates/ops/compose.mjs +16 -3
- package/templates/ops/inflight.mjs +157 -0
- package/templates/ops/org/operating.md +21 -1
- package/templates/ops/org/voice.md +9 -0
- package/templates/ops/prompts/_inflight.md +14 -0
- package/templates/ops/prompts/_paths.md +2 -1
- package/templates/ops/prompts/daily.md +16 -7
- package/templates/ops/prompts/mention.md +2 -0
- package/templates/ops/run-record.mjs +144 -0
- package/templates/portal/css/base.css +146 -73
- package/templates/portal/css/brain.css +23 -20
- package/templates/portal/css/diff.css +10 -9
- package/templates/portal/css/graph.css +12 -7
- package/templates/portal/css/health.css +13 -11
- package/templates/portal/css/inbox.css +57 -25
- package/templates/portal/css/layout.css +96 -41
- package/templates/portal/css/markdown.css +36 -14
- package/templates/portal/css/runs.css +13 -0
- package/templates/portal/css/setup.css +116 -34
- package/templates/portal/index.html +18 -2
- package/templates/portal/js/api.js +41 -4
- package/templates/portal/js/app.js +132 -9
- package/templates/portal/js/dialog.js +82 -0
- package/templates/portal/js/icons.js +37 -0
- package/templates/portal/js/inflight.js +18 -0
- package/templates/portal/js/md.js +5 -2
- package/templates/portal/js/mdedit.js +84 -0
- package/templates/portal/js/readiness.js +35 -0
- package/templates/portal/js/refresh.js +2 -1
- package/templates/portal/js/state.js +17 -4
- package/templates/portal/js/views/app.js +24 -7
- package/templates/portal/js/views/checklist.js +10 -4
- package/templates/portal/js/views/credential.js +84 -0
- package/templates/portal/js/views/graph.js +1 -1
- package/templates/portal/js/views/health.js +17 -4
- package/templates/portal/js/views/hire.js +583 -0
- package/templates/portal/js/views/inbox.js +248 -81
- package/templates/portal/js/views/org.js +46 -106
- package/templates/portal/js/views/orgedit.js +234 -0
- package/templates/portal/js/views/paste.js +87 -21
- package/templates/portal/js/views/prompt.js +11 -4
- package/templates/portal/js/views/repos.js +20 -15
- package/templates/portal/js/views/runonce.js +94 -0
- package/templates/portal/js/views/runs.js +170 -0
- package/templates/portal/js/views/setup.js +257 -75
- package/templates/portal/js/views/staff.js +158 -243
- package/templates/portal/js/views/todo.js +62 -0
package/README.md
CHANGED
|
@@ -1,118 +1,110 @@
|
|
|
1
|
-
#
|
|
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
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
-
[
|
|
8
|
+
[](https://github.com/Nano-Collective/roster/actions/workflows/pr-checks.yml)
|
|
9
|
+
[](https://www.npmjs.com/package/@nanocollective/roster)
|
|
10
|
+
[](LICENSE)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
##
|
|
16
|
+
## Quick start
|
|
16
17
|
|
|
17
18
|
```bash
|
|
18
|
-
npx @nanocollective/roster
|
|
19
|
-
|
|
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
|
-
|
|
28
|
-
[
|
|
55
|
+
Also `lint`, `brief` and `export`. `roster help <command>` for flags, or
|
|
56
|
+
[the CLI reference](docs/commands.md).
|
|
29
57
|
|
|
30
|
-
##
|
|
58
|
+
## How it is shaped
|
|
31
59
|
|
|
32
60
|
```
|
|
33
|
-
Nano-Collective/roster this repo
|
|
34
|
-
|
|
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
|
-
<
|
|
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/
|
|
39
|
-
org/voice.md
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
87
|
+
## Documentation
|
|
76
88
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
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
|
|
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.
|