@astrosheep/keiyaku 2.9.8 → 2.9.10
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 +50 -182
- package/build/.tsbuildinfo +1 -1
- package/build/agents/harness/control-types.js +18 -1
- package/build/agents/harness/index.js +2 -0
- package/build/agents/harness/outcome-error.js +81 -0
- package/build/agents/harness/projection.js +10 -7
- package/build/agents/harness/router.js +5 -1
- package/build/agents/providers/claude-agent-sdk/adapter.js +18 -4
- package/build/agents/providers/claude-agent-sdk/registration.js +11 -1
- package/build/agents/providers/claude-agent-sdk/session.js +19 -5
- package/build/agents/providers/codex-app-server/adapter.js +11 -6
- package/build/agents/providers/codex-app-server/events.js +67 -6
- package/build/agents/providers/codex-app-server/registration.js +11 -1
- package/build/agents/providers/opencode-sdk/adapter.js +8 -1
- package/build/agents/providers/opencode-sdk/events.js +24 -2
- package/build/agents/providers/opencode-sdk/registration.js +11 -1
- package/build/agents/providers/pi/checkpoint.js +9 -1
- package/build/agents/providers/pi/events.js +2 -0
- package/build/agents/providers/pi/registration.js +14 -1
- package/build/cli/commands/akuma/akuma/handler.js +1 -1
- package/build/cli/commands/akuma/akuma/meta.js +3 -3
- package/build/cli/commands/akuma/catalog.js +2 -2
- package/build/cli/commands/akuma/{view → show}/handler.js +5 -5
- package/build/cli/commands/akuma/{view → show}/meta.js +3 -3
- package/build/cli/commands/akuma.js +1 -1
- package/build/cli/commands/contract/amend/handler.js +5 -4
- package/build/cli/commands/contract/arc/handler.js +5 -4
- package/build/cli/commands/contract/audit/handler.js +2 -2
- package/build/cli/commands/contract/bind/handler.js +12 -3
- package/build/cli/commands/contract/bind/meta.js +45 -15
- package/build/cli/commands/contract/forfeit/handler.js +9 -5
- package/build/cli/commands/contract/log/handler.js +2 -2
- package/build/cli/commands/contract/petition/handler.js +34 -7
- package/build/cli/commands/contract/renew/handler.js +7 -7
- package/build/cli/commands/contract/renew/meta.js +3 -3
- package/build/cli/commands/metadata.js +10 -6
- package/build/cli/commands/projection/call/meta.js +1 -1
- package/build/cli/commands/projection/catalog.js +2 -0
- package/build/cli/commands/projection/history/handler.js +21 -0
- package/build/cli/commands/projection/history/meta.js +9 -0
- package/build/cli/commands/projection/shared.js +3 -4
- package/build/cli/commands/projection/status/handler.js +3 -3
- package/build/cli/commands/projection/wait/handler.js +20 -11
- package/build/cli/commands/task/add/handler.js +14 -5
- package/build/cli/commands/task/add/meta.js +2 -2
- package/build/cli/commands/task/catalog.js +4 -0
- package/build/cli/commands/task/done/handler.js +1 -4
- package/build/cli/commands/task/done/meta.js +1 -1
- package/build/cli/commands/task/drop/meta.js +1 -1
- package/build/cli/commands/task/hold/handler.js +3 -0
- package/build/cli/commands/task/hold/meta.js +8 -0
- package/build/cli/commands/task/log/handler.js +1 -1
- package/build/cli/commands/task/log/meta.js +2 -2
- package/build/cli/commands/task/resume/handler.js +3 -0
- package/build/cli/commands/task/resume/meta.js +8 -0
- package/build/cli/commands/task/shared.js +39 -14
- package/build/cli/commands/task/show/handler.js +1 -1
- package/build/cli/commands/task/show/meta.js +1 -1
- package/build/cli/commands/task/start/meta.js +1 -1
- package/build/cli/commands/task/stop/handler.js +1 -4
- package/build/cli/commands/task/stop/meta.js +1 -1
- package/build/cli/commands/task/update/handler.js +11 -3
- package/build/cli/commands/task/update/meta.js +3 -3
- package/build/cli/completion.js +3 -2
- package/build/cli/flags.js +51 -14
- package/build/cli/help.js +4 -1
- package/build/cli/index.js +40 -25
- package/build/cli/parse-flags.js +40 -7
- package/build/cli/parse-metadata.js +5 -2
- package/build/cli/parse-selectors.js +2 -3
- package/build/cli/parse.js +40 -6
- package/build/cli/projection-address.js +12 -10
- package/build/cli/render/amendment-warning.js +8 -0
- package/build/cli/render/arc.js +6 -2
- package/build/cli/render/audit.js +400 -81
- package/build/cli/render/kanshi.js +242 -79
- package/build/cli/render/lifecycle.js +56 -0
- package/build/cli/render/misc.js +24 -28
- package/build/cli/render/petition.js +5 -0
- package/build/cli/render/projection-activity.js +65 -29
- package/build/cli/render/projection-history.js +64 -0
- package/build/cli/render/shared.js +23 -9
- package/build/cli/render/status.js +13 -35
- package/build/cli/render/task.js +51 -26
- package/build/cli/render/terminal-failure.js +3 -1
- package/build/cli/render/wait.js +45 -69
- package/build/cli/subagent-guard.js +1 -1
- package/build/cli/types.js +1 -1
- package/build/config/env-keys.js +3 -1
- package/build/config/env.js +24 -1
- package/build/config/settings/schema.js +3 -1
- package/build/core/address-carrier.js +89 -0
- package/build/core/addressing.js +255 -196
- package/build/core/amend.js +115 -38
- package/build/core/amendment-criteria.js +17 -0
- package/build/core/amendment-warning.js +10 -0
- package/build/core/arc.js +184 -83
- package/build/core/audit/candidate.js +110 -9
- package/build/core/audit/coordinates.js +120 -65
- package/build/core/audit/evidence.js +19 -23
- package/build/core/audit/facade.js +34 -11
- package/build/core/audit/report.js +5 -5
- package/build/core/bind-reconciliation.js +390 -0
- package/build/core/bind-workspace.js +12 -20
- package/build/core/bind.js +242 -273
- package/build/core/call/call.js +1 -0
- package/build/core/call/context.js +46 -71
- package/build/core/call/prompt.js +6 -3
- package/build/core/context.js +49 -35
- package/build/core/contract-carrier-runtime.js +408 -0
- package/build/core/contract-carrier.js +270 -0
- package/build/core/contract-view.js +33 -27
- package/build/core/contract.js +5 -1
- package/build/core/derived-replay.js +207 -0
- package/build/core/draft.js +125 -57
- package/build/core/forfeit.js +113 -56
- package/build/core/identifier-slug.js +63 -13
- package/build/core/ids.js +4 -4
- package/build/core/lifecycle-history.js +35 -0
- package/build/core/lifecycle-recovery.js +117 -0
- package/build/core/lifecycle-runner.js +377 -0
- package/build/core/log.js +37 -11
- package/build/core/outcome-base.js +181 -0
- package/build/core/process-group.js +139 -0
- package/build/core/projection/generation/database.js +82 -7
- package/build/core/projection/generation/model.js +9 -36
- package/build/core/projection/generation/projection-generation-continuation.js +10 -22
- package/build/core/projection/generation/projection-generation-execution.js +13 -6
- package/build/core/projection/index.js +5 -4
- package/build/core/projection/projection-activity.js +29 -8
- package/build/core/projection/projection-alias.js +23 -10
- package/build/core/projection/projection-core.js +21 -7
- package/build/core/projection/projection-execution-observer.js +91 -39
- package/build/core/projection/projection-history.js +474 -0
- package/build/core/projection/projection-runner-lock.js +12 -0
- package/build/core/projection/projection-status-observation.js +365 -0
- package/build/core/projection/projection-status.js +35 -337
- package/build/core/projection/projection-terminal-failure.js +13 -8
- package/build/core/projection/projection-wait.js +7 -2
- package/build/core/projection/tell/launch-store.js +244 -0
- package/build/core/projection/tell/model.js +3 -3
- package/build/core/projection/tell/store.js +70 -118
- package/build/core/registry.js +22 -87
- package/build/core/renew-build.js +424 -0
- package/build/core/renew-plan.js +239 -0
- package/build/core/renew-rewrite.js +77 -0
- package/build/core/renew.js +295 -520
- package/build/core/repository-ledger/accepted-fold-read.js +19 -0
- package/build/core/repository-ledger/accepted-tail.js +116 -0
- package/build/core/repository-ledger/admission.js +38 -0
- package/build/core/repository-ledger/authoritative-transaction.js +1 -0
- package/build/core/repository-ledger/claim-evidence.js +147 -0
- package/build/core/repository-ledger/codec.js +297 -0
- package/build/core/repository-ledger/current-state-store.js +853 -0
- package/build/core/repository-ledger/fold-repository.js +375 -0
- package/build/core/repository-ledger/fold.js +248 -0
- package/build/core/repository-ledger/git-object-store.js +243 -0
- package/build/core/repository-ledger/history-read.js +15 -0
- package/build/core/repository-ledger/incremental-read.js +153 -0
- package/build/core/repository-ledger/index.js +15 -0
- package/build/core/repository-ledger/inventory-plan.js +75 -0
- package/build/core/repository-ledger/inventory.js +310 -0
- package/build/core/repository-ledger/publication-admission.js +125 -0
- package/build/core/repository-ledger/publication.js +353 -0
- package/build/core/repository-ledger/read-model.js +469 -0
- package/build/core/repository-ledger/transaction-membership.js +78 -0
- package/build/core/repository-ledger/traversal.js +404 -0
- package/build/core/repository-ledger/write-transaction.js +339 -0
- package/build/core/seal.js +168 -161
- package/build/core/settlement/claim-delivery.js +42 -215
- package/build/core/settlement/claim.js +235 -153
- package/build/core/settlement/index.js +4 -4
- package/build/core/settlement/petition-claim-gates.js +52 -33
- package/build/core/settlement/petition-forfeit.js +12 -5
- package/build/core/settlement/petition-head-guard.js +8 -5
- package/build/core/settlement/petition-preview.js +68 -56
- package/build/core/settlement/petition-window.js +50 -0
- package/build/core/settlement/petition.js +252 -131
- package/build/core/settlement/queue-read-model.js +72 -95
- package/build/core/settlement/queue-seat-allocation.js +35 -126
- package/build/core/settlement/queue.js +1 -1
- package/build/core/settlement/settlement.js +172 -80
- package/build/core/settlement/verdict.js +112 -66
- package/build/core/settlement/verification-coordination.js +305 -0
- package/build/core/settlement/verification-supervisor.js +275 -0
- package/build/core/settlement/verification.js +398 -31
- package/build/core/status/board.js +125 -127
- package/build/core/status/lifecycle.js +7 -80
- package/build/core/structured-query.js +23 -0
- package/build/core/target-ref.js +1 -1
- package/build/core/task/board.js +59 -24
- package/build/core/task/commands.js +181 -33
- package/build/core/task/coordinate.js +56 -0
- package/build/core/task/document.js +25 -9
- package/build/core/task/index.js +7 -4
- package/build/core/task/query.js +17 -27
- package/build/core/task/settlement-git.js +164 -179
- package/build/core/task/settlement-policy.js +15 -11
- package/build/core/task/source-board.js +31 -13
- package/build/core/task/task-bind-preparation.js +193 -0
- package/build/core/task/task-contract.js +102 -193
- package/build/core/task/task-file-transaction.js +171 -0
- package/build/core/task/task-git-runtime.js +76 -14
- package/build/core/task/task-git-store.js +68 -169
- package/build/core/task/task-store-repository.js +13 -6
- package/build/core/task/task-worktree.js +6 -33
- package/build/core/task/task.js +1 -1
- package/build/core/task/tree.js +3 -3
- package/build/core/task/validation.js +4 -3
- package/build/core/transcripts.js +93 -1
- package/build/core/worktree-bootstrap.js +44 -36
- package/build/core/worktree-path.js +210 -77
- package/build/flow-error.js +7 -7
- package/build/generated/version.js +2 -2
- package/build/git/core.js +76 -13
- package/build/git/refs.js +168 -46
- package/build/git/streaming-batch.js +73 -13
- package/package.json +1 -1
- package/skills/keiyaku/SKILL.md +1 -1
- package/skills/keiyaku-akuma/SKILL.md +3 -3
- package/skills/keiyaku-task/SKILL.md +4 -2
- package/skills/keiyaku-workflow/SKILL.md +88 -203
- package/build/core/entry.js +0 -305
- package/build/core/ledger-batch.js +0 -194
- package/build/core/ledger.js +0 -84
- package/build/core/projection/leash.js +0 -87
- package/build/core/ref-log.js +0 -119
- package/build/core/renew-session.js +0 -128
- package/build/core/status/ledger-batch.js +0 -1
- package/build/core/status/reconciliation.js +0 -137
package/README.md
CHANGED
|
@@ -1,223 +1,91 @@
|
|
|
1
|
-
# Keiyaku
|
|
1
|
+
# 契約 Keiyaku
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**You don't prompt an agent. You sign a contract with a devil.**
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
npm install -g @astrosheep/keiyaku
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Before You Start
|
|
12
|
-
|
|
13
|
-
Missing any of these? Don't come crying.
|
|
14
|
-
|
|
15
|
-
- **Git repo.** Clean worktree. Dirty = refused.
|
|
16
|
-
- **Supported providers.** `codex-sdk`, `codex-app-server`, `claude-agent-sdk`, `opencode-sdk`, and `pi`.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Setup
|
|
21
|
-
|
|
22
|
-
Open a git repo. Run `keiyaku guide` and `keiyaku akuma list`. Then use `keiyaku <command> --help` for exact command formats.
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Flow
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
bind -> delivery work -> petition
|
|
30
|
-
optional: arc -> delivery work -> arc; renew on base drift
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Tools
|
|
36
|
-
|
|
37
|
-
**`call NAME <BODY|->`** — Calls in an agent to do scoped work. When commissioned, call receives the current bind a0 or explicit arc intent. Body is a required literal or `-` for stdin; omitting body is an error even if stdin is piped. Add `--incognito` for a one-off run with no response history.
|
|
5
|
+
Keiyaku (契約, "contract") is a CLI where AI coding agents work under written terms: the change starts as a contract, runs on an isolated branch, and lands only after it survives your gates. The agents are called **akuma** (悪魔) — devils. Devils are excellent workers and terrible masters, which is why everything here is in writing.
|
|
38
6
|
|
|
39
7
|
```bash
|
|
40
|
-
|
|
41
|
-
keiyaku call worker-akuma - < prompt.md
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
**`tell PROJECTION [--wait DURATION] [--] <BODY|->`** — Writes intent to a projection mailbox. Body is a required literal or `-` for stdin. Ordinary bodies need no `--`; use `--` only when the body looks like an option or address. `tell --wait` joins after acceptance without a mandatory separator.
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
keiyaku tell kaji/3f2a1c99 "run integration first"
|
|
50
|
-
keiyaku tell kaji/3f2a1c99 - < direction.md
|
|
51
|
-
keiyaku tell kaji/3f2a1c99 --wait 5m "run integration first"
|
|
52
|
-
keiyaku tell kaji/3f2a1c99 -- --stop
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
**`revive ARTIFACT [BODY|-]`** — Starts a new helper projection from a retained response artifact. Omit body for the default continuation; pass a literal body or `-` for explicit stdin (blank explicit stdin fails).
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
keiyaku revive rsp_01ARZ3NDEKTSV4RRFFQ69G5FAV
|
|
61
|
-
keiyaku revive rsp_01ARZ3NDEKTSV4RRFFQ69G5FAV "continue with the failing test"
|
|
62
|
-
keiyaku revive rsp_01ARZ3NDEKTSV4RRFFQ69G5FAV - < continuation.md
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
**`akuma list` / `akuma show <name>`** — Inspect available helpers before choosing `keiyaku call NAME`.
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
keiyaku akuma list
|
|
71
|
-
keiyaku akuma show akuma-codex
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
**`bind`** — Opens a branch and writes `KEIYAKU.md`. Repo must be clean. Bind supplies derived default intent a0.
|
|
77
|
-
|
|
78
|
-
Vague criteria = vague results. Write "make it better" and don't blame anyone but yourself.
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
# Retry logic for HTTP client
|
|
82
|
-
|
|
83
|
-
## Objective
|
|
84
|
-
5xx failures retry up to 3 times with exponential backoff
|
|
85
|
-
|
|
86
|
-
## Scope
|
|
87
|
-
- src/http/**
|
|
88
|
-
|
|
89
|
-
## Checks
|
|
90
|
-
- Retry unit tests pass
|
|
91
|
-
- Public API unchanged
|
|
92
|
-
- Existing tests still pass
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
**`arc`** — Optional iteration boundary, not admission. Frames the next delivery intent; the first explicit arc seals a0, and later arcs seal the previous open explicit arc.
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
# Retry backoff
|
|
101
|
-
|
|
102
|
-
## Objective
|
|
103
|
-
Implement retries with exponential backoff.
|
|
104
|
-
|
|
105
|
-
## Brief
|
|
106
|
-
Keep the public API unchanged. Commit the delivery work before sealing the arc.
|
|
8
|
+
npm install -g @astrosheep/keiyaku
|
|
107
9
|
```
|
|
108
10
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
**`petition`** — Seals the current a0 or open explicit arc and enters settlement.
|
|
112
|
-
|
|
113
|
-
`CLAIM` = verified, all criteria pass. `FORFEIT` = abandon, throw everything away.
|
|
114
|
-
|
|
115
|
-
Oath required unless you explicitly bypass gates. Configured verification and reviewer gates will reject weak claims.
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
**`status`** — Current state and what's blocking you.
|
|
11
|
+
Node ≥ 22.19 · a git repo · a clean worktree. Dirty worktree = refused at the door.
|
|
120
12
|
|
|
121
|
-
|
|
13
|
+
## How a deal goes down
|
|
122
14
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
| File | |
|
|
128
|
-
|------|--|
|
|
129
|
-
| `KEIYAKU.md` | Active contract |
|
|
130
|
-
| `.keiyaku/draft/*.md` | Recovery input if bind/stdin execution fails |
|
|
131
|
-
| `.keiyaku/response/*.md` | Tool response history |
|
|
132
|
-
|
|
133
|
-
Don't want these tracked:
|
|
134
|
-
|
|
135
|
-
```gitignore
|
|
136
|
-
.keiyaku/draft/
|
|
137
|
-
.keiyaku/response/
|
|
15
|
+
```text
|
|
16
|
+
task bind call petition claim
|
|
17
|
+
───────► 📋 ───────► ⛓ ───────► 😈 ───────► ⚖ ───────► ✓ main
|
|
18
|
+
the ask the contract devil at work judgement it lands
|
|
138
19
|
```
|
|
139
20
|
|
|
140
|
-
|
|
21
|
+
**1 · Put it in writing.** `keiyaku bind` opens the contract — Title, Context, Objective, Design, Scope, Criteria — and an isolated branch. Devils honor the letter, never the spirit. Write "make it better" and you deserve what you get.
|
|
141
22
|
|
|
142
|
-
|
|
23
|
+
**2 · Summon.** `keiyaku call worker-akuma "..."` projects a devil into the contract's worktree. It works; you rule: steer it mid-flight with `tell`, sit in with `wait`, banish it with `kill`. A finished run leaves an artifact — `revive` raises a new devil from its remains.
|
|
143
24
|
|
|
144
|
-
|
|
25
|
+
**3 · Judgement.** `keiyaku petition` seals the work and enters settlement. Verification gates and a reviewer stand between the devil and your main branch. **Claim** what passes. **Forfeit** burns the rest. Nothing lands quietly.
|
|
145
26
|
|
|
146
27
|
```bash
|
|
147
|
-
keiyaku
|
|
148
|
-
keiyaku
|
|
28
|
+
keiyaku guide # the walkthrough
|
|
29
|
+
keiyaku status # where you stand, what blocks you
|
|
30
|
+
keiyaku <cmd> --help # exact grammar, no folklore
|
|
149
31
|
```
|
|
150
32
|
|
|
151
|
-
|
|
33
|
+
## The command surface
|
|
152
34
|
|
|
153
|
-
|
|
35
|
+
| | |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| **Contract** | `bind` `arc` `amend` `renew` `audit` `petition` `forfeit` `log` |
|
|
38
|
+
| **Devils** | `call` `tell` `wait` `kill` `revive` `status` `history` |
|
|
39
|
+
| **Roster** | `akuma list` `akuma show` |
|
|
40
|
+
| **Tasks** | `task add/show/ls/log/start/stop/hold/resume/done/drop/update/doctor` |
|
|
41
|
+
| **System** | `guide` `completion` `dump-env` |
|
|
154
42
|
|
|
155
|
-
|
|
156
|
-
|---|---|---|
|
|
157
|
-
| Builtin | packaged with Keiyaku | lowest |
|
|
158
|
-
| User | `<KEIYAKU_HOME>/akuma/<name>.md` | replaces the same builtin name |
|
|
159
|
-
| Project | `.keiyaku/akuma/<name>.md` | highest |
|
|
43
|
+
Tasks are a file-backed board living in your repo: capture work, wire real dependency semantics (`parent` · `needs` · `supersedes` · `relates-to`), then promote a task into a contract when it's ready to bind.
|
|
160
44
|
|
|
161
|
-
|
|
45
|
+
## Rolling your own devil
|
|
162
46
|
|
|
163
|
-
|
|
47
|
+
An akuma is one Markdown file. Filename is its name, frontmatter is its body, prose is its soul:
|
|
164
48
|
|
|
165
49
|
```markdown
|
|
166
50
|
---
|
|
167
51
|
provider: codex-sdk
|
|
168
|
-
description: Repository implementation agent
|
|
169
52
|
model: gpt-5.4
|
|
170
|
-
|
|
171
|
-
accessPolicy: write
|
|
172
|
-
networkPolicy: disabled
|
|
173
|
-
webSearchPolicy: disabled
|
|
174
|
-
threadOptions.sandboxMode: workspace-write
|
|
53
|
+
description: Repository implementation agent
|
|
175
54
|
---
|
|
176
|
-
|
|
55
|
+
Make scoped changes and run relevant tests.
|
|
177
56
|
```
|
|
178
57
|
|
|
179
|
-
|
|
58
|
+
Providers: `codex-sdk` · `codex-app-server` · `claude-agent-sdk` · `opencode-sdk` · `pi`.
|
|
59
|
+
Resolution: builtin < `<KEIYAKU_HOME>/akuma/` < `.keiyaku/akuma/` — a higher circle replaces the file whole.
|
|
180
60
|
|
|
181
|
-
|
|
182
|
-
|---|---|
|
|
183
|
-
| `codex-sdk` | `description`, `model`, `profile`, `executable`, `effort`, `accessPolicy`, `networkPolicy`, `webSearchPolicy`, `threadOptions.*`, `config.*` |
|
|
184
|
-
| `codex-app-server` | `description`, `model`, `profile`, `executable`, `config.*` |
|
|
185
|
-
| `claude-agent-sdk` | `description`, `model`, `executable`, `effort`, `permissionMode`, `settingSources` |
|
|
186
|
-
| `opencode-sdk` | `description`, `model`, `executable` |
|
|
187
|
-
| `pi` | `description`, `model` |
|
|
188
|
-
|
|
189
|
-
For `threadOptions.*`, JSON values such as arrays and objects are accepted. Keiyaku owns `workingDirectory` and `skipGitRepoCheck`, so profiles cannot set those paths.
|
|
190
|
-
|
|
191
|
-
### Settings
|
|
192
|
-
|
|
193
|
-
Settings select roles and workflow knobs; provider definitions do not belong in settings. Keiyaku loads user settings first and overlays project settings:
|
|
194
|
-
|
|
195
|
-
- User: `<KEIYAKU_HOME>/settings.json`
|
|
196
|
-
- Project: `.keiyaku/settings.json`
|
|
61
|
+
`.keiyaku/settings.json` picks roles and gates, nothing else:
|
|
197
62
|
|
|
198
63
|
```json
|
|
199
64
|
{
|
|
200
|
-
"default": "akuma
|
|
201
|
-
"reviewer": "akuma
|
|
202
|
-
"
|
|
203
|
-
"gate": {
|
|
204
|
-
"commands": [
|
|
205
|
-
{ "label": "tests", "command": "npm", "args": ["test"] }
|
|
206
|
-
]
|
|
207
|
-
}
|
|
65
|
+
"default": "worker-akuma",
|
|
66
|
+
"reviewer": "review-akuma",
|
|
67
|
+
"gate": { "commands": [{ "label": "tests", "command": "npm", "args": ["test"] }] }
|
|
208
68
|
}
|
|
209
69
|
```
|
|
210
70
|
|
|
211
|
-
|
|
71
|
+
## Paper trail
|
|
212
72
|
|
|
213
|
-
|
|
73
|
+
Contracts leave marks — that's the point.
|
|
214
74
|
|
|
215
|
-
|
|
216
|
-
|
|
75
|
+
| Path | |
|
|
76
|
+
| --- | --- |
|
|
77
|
+
| `KEIYAKU.md` | the active contract |
|
|
78
|
+
| `.keiyaku/` | devil roster, settings, task board, response history |
|
|
79
|
+
|
|
80
|
+
```gitignore
|
|
81
|
+
.keiyaku/draft/
|
|
82
|
+
.keiyaku/response/
|
|
217
83
|
```
|
|
218
84
|
|
|
219
|
-
|
|
85
|
+
## Fine print
|
|
220
86
|
|
|
221
|
-
|
|
87
|
+
The full body of law — product and architecture — lives in [`docs/keiyaku-v3/`](docs/keiyaku-v3/README.md). Start at the authority registry; nothing outside it is normative.
|
|
88
|
+
|
|
89
|
+
Keiyaku is early and experimental, built for AI agents operating end to end, and optimized for rapid iteration. Breaking changes are intentional and unapologetic: the current version is the only version.
|
|
222
90
|
|
|
223
|
-
MIT
|
|
91
|
+
MIT. The devils are not.
|