create-open-autonomy 2.1.0

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 (40) hide show
  1. package/README.md +75 -0
  2. package/package.json +38 -0
  3. package/src/cli.ts +35 -0
  4. package/src/kit.ts +139 -0
  5. package/template/.github/workflows/ci.yml +18 -0
  6. package/template/.github/workflows/land.yml +30 -0
  7. package/template/.open-autonomy/config.yaml +27 -0
  8. package/template/.open-autonomy/mint-key.ts +49 -0
  9. package/template/.open-autonomy/package.json +10 -0
  10. package/template/.open-autonomy/reporter.ts +320 -0
  11. package/template/.open-autonomy/setup.ts +91 -0
  12. package/template/AGENTS.md +9 -0
  13. package/template/CHANGELOG.md +4 -0
  14. package/template/CONSTITUTION.md +23 -0
  15. package/template/CONTRIBUTING.md +13 -0
  16. package/template/LICENSE +55 -0
  17. package/template/README.md +24 -0
  18. package/template/container/Dockerfile +13 -0
  19. package/template/container/Dockerfile.reporter +10 -0
  20. package/template/container/Dockerfile.valve +5 -0
  21. package/template/container/README.md +45 -0
  22. package/template/container/build-hermes.sh +21 -0
  23. package/template/container/compose.yml +99 -0
  24. package/template/container/hermes.pin +6 -0
  25. package/template/container/key-valve.ts +73 -0
  26. package/template/hermes/.no-bundled-skills +0 -0
  27. package/template/hermes/README.md +19 -0
  28. package/template/hermes/SOUL.md +7 -0
  29. package/template/hermes/config.yaml +32 -0
  30. package/template/hermes/cron/jobs.seed.json +12 -0
  31. package/template/hermes/hooks/seed/HOOK.yaml +4 -0
  32. package/template/hermes/hooks/seed/handler.py +220 -0
  33. package/template/hermes/kanban.seed.json +13 -0
  34. package/template/hermes/profiles/treasurer/.no-bundled-skills +0 -0
  35. package/template/hermes/profiles/treasurer/SOUL.md +13 -0
  36. package/template/hermes/profiles/treasurer/config.yaml +33 -0
  37. package/template/hermes/skills/open-autonomy/develop/SKILL.md +69 -0
  38. package/template/hermes/skills/open-autonomy/pm/SKILL.md +30 -0
  39. package/template/package.json +8 -0
  40. package/template/test/project.test.ts +7 -0
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: develop
3
+ description: Build one board task — its acceptance lines are the whole definition of done — verify it where the project is verified, land it on an agent branch, hand off. No tests for their own sake.
4
+ version: 3.0.0
5
+ metadata:
6
+ hermes:
7
+ tags: [open-autonomy, kanban, git]
8
+ category: devops
9
+ requires_toolsets: [terminal]
10
+ ---
11
+
12
+ # Develop
13
+
14
+ You work one task from the board. `kanban_show` gives it to you: a title, and acceptance lines in its body.
15
+ Those lines are the whole definition of done. You make every one true in the running system; code existing
16
+ is not done.
17
+
18
+ ## The work
19
+
20
+ 1. Start from a fresh main: `git fetch origin && git checkout -B agent/<task id> origin/main`. If you already
21
+ changed files, do this first and carry the changes over.
22
+ 2. Read `CONSTITUTION.md` (what the project is and must remain: a task that would break an invariant or enter
23
+ what is out of scope is blocked, not built), `CONTRIBUTING.md` (how code is written here) and `AGENTS.md`.
24
+ Read the code an acceptance line touches before you write.
25
+ 3. Build it. Match `CONTRIBUTING.md`. Write a test only where an acceptance line names one, or where the project's
26
+ check would otherwise not cover the line; never tests for their own sake.
27
+ 4. Verify every acceptance line where `AGENTS.md` says the project is verified: in the project's own twin world
28
+ when it keeps one (`world/`), as its operator, driving the real surface; otherwise the project's check. You
29
+ cannot reach production and must not try. Run the check once, green, before every push.
30
+ 5. Commit small, signed as the agent, the task id first in the subject:
31
+ `git commit -s --author="Open Autonomy agent <agent@open-autonomy.org>" -m "<task id>: <what changed>"`.
32
+ 6. Push the branch: `git push -u origin agent/<task id>`. The landing workflow opens the pull request and merges
33
+ it when the checks pass. Never wait for it; never open a pull request; never push to `main`; never rewrite
34
+ history. If the branch exists from an earlier attempt, push to `agent/<task id>-<YYYYMMDD-HHMM>`.
35
+ 7. Hand off: `kanban_request_review` naming the branch and the commit, and what is verified how.
36
+
37
+ If a line cannot be made true from here, `kanban_block` with exactly what is missing, and stop. Never file,
38
+ split or decompose tasks, and never create one: the board is the owner's. Do not loop on a failure you cannot
39
+ explain.
40
+
41
+ ## When an acceptance line needs a purchase
42
+
43
+ You cannot pay: your key reaches the model, not the rails. The treasurer, a second profile of this same agent,
44
+ holds the only key that can. Ask it the way a company does, once, and wait:
45
+
46
+ 1. File the request, the one task you may create:
47
+ `kanban_create` with `assignee: "treasurer"`, `workspace_kind: "dir"`, `workspace_path: "/work/project"` (so the
48
+ treasurer reads the owner's bounds), title `Purchase: <what> at <merchant>, at most $<ceiling>`, and a body of
49
+ `- ` lines: what, merchant (and its category), at most N cents, purpose, `for task: <your task id>`,
50
+ and how to pay (the merchant's checkout: a URL, a command). Stay within the owner's bounds in
51
+ `.open-autonomy/config.yaml`; a request outside them is refused, and the bound is the owner's to change.
52
+ 2. `kanban_block` your task with `kind: "needs_input"` and the request's title as the reason, and stop. (Not
53
+ `dependency`: the board re-runs a dependency block at once when no parent is pending; `needs_input` holds
54
+ until the treasurer releases you.)
55
+ 3. When the treasurer has paid it posts `RECEIPT: …` as a comment on your task and unblocks it; your next
56
+ attempt sees the receipt in `kanban_show`. Record what was bought where the acceptance line says, and go on.
57
+
58
+ The card never passes through you. Every purchase lands on the public audit trail under your task.
59
+
60
+ ## The board from a shell
61
+
62
+ The board's tools (`kanban_show`, `kanban_create`, `kanban_block`, `kanban_request_review`) are yours in the
63
+ conversation. From the terminal the CLI needs its home and its path named in full:
64
+ `HERMES_HOME=/opt/data /opt/hermes/bin/hermes kanban …`.
65
+
66
+ ## Cost
67
+
68
+ Every model call is metered to the project and public. Read before you write, run the check once, stop when
69
+ verified.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: pm
3
+ description: Keep the board moving — once an hour, read it, unstick what is stuck, and say what moved and what the owner must decide.
4
+ version: 3.0.0
5
+ metadata:
6
+ hermes:
7
+ tags: [open-autonomy, kanban, pm]
8
+ category: devops
9
+ requires_toolsets: [terminal]
10
+ ---
11
+
12
+ # PM
13
+
14
+ The board is the roadmap. The owner files tasks on it, the dispatcher pulls them down in order and runs each
15
+ as a worker session, and the review lane verifies every handoff. Your hour is about one thing: it keeps moving.
16
+
17
+ 1. Read the board: `hermes kanban list --json`, then `hermes kanban show <id>` for every task that is not done.
18
+ 2. Unstick what you can, once per hour — and only what is yours to unstick:
19
+ - `blocked` with kind `transient` (the worker crashed, the balance was exhausted, a push was refused):
20
+ `hermes kanban unblock <id>`. The dispatcher retries it.
21
+ - `blocked` with kind `needs_input`, or `scheduled`: never. That is a decision waiting on the owner (or a
22
+ purchase waiting on the treasurer). Name it in your report and leave it exactly as it is. Releasing it
23
+ restarts a worker that will only block again, and the board escalates repeated blocks into decomposition.
24
+ - `running` with no heartbeat for over an hour, or `review` with no reviewer for over an hour: `hermes kanban
25
+ unblock <id>` returns it to ready.
26
+ The CLI from your shell needs its home and path in full: `HERMES_HOME=/opt/data /opt/hermes/bin/hermes kanban …`.
27
+ 3. Report, in one paragraph, where the job says: what was done since the last hour, what is in progress, what is
28
+ stuck and why, and what the owner must decide. When the board is empty, say so; nothing else to do.
29
+
30
+ You never create, edit, reorder or complete tasks, and never write code. A moving board is the whole job.
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "__PROJECT__",
3
+ "private": true,
4
+ "type": "module",
5
+ "scripts": {
6
+ "check": "bun test"
7
+ }
8
+ }
@@ -0,0 +1,7 @@
1
+ import { expect, test } from 'bun:test';
2
+ import { readFileSync } from 'node:fs';
3
+
4
+ // The project's own check starts here. A test proves an acceptance line or guards a bug that happened.
5
+ test('the repository names itself', () => {
6
+ expect(readFileSync(new URL('../README.md', import.meta.url), 'utf8').startsWith('# __PROJECT__')).toBe(true);
7
+ });