cawdev-cli 1.0.11-beta → 1.1.1

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/mcp/README.md CHANGED
@@ -3,7 +3,9 @@
3
3
  Plain Node, zero dependencies, stdio JSON-RPC — `server.mjs`, plus the shared
4
4
  rule matcher in `tools/lib/tool-rules.mjs` that the runner uses too. It gives a coding
5
5
  agent a project's roadmap and changelog — the same verbs a person gets in the
6
- console, because the API was built to mirror these tools one-for-one.
6
+ console, because the API was built to mirror these tools one-for-one. This README says
7
+ **card** for the roadmap thing and **run** for the work on it, as the console does; the API and
8
+ the tool names say *entry* (`roadmap_list`, `propose_entry`, `EntryRef`) and keep doing so.
7
9
 
8
10
  ## Setting it up in a repository
9
11
 
@@ -59,45 +61,54 @@ four being different from what you assumed.
59
61
 
60
62
  The sequence is fixed, and the second step is the one people skip:
61
63
 
62
- 1. Branch off an up-to-date `main`, named after the entry — `r4-roadmap-entries`.
63
- 2. **Move the entry to `CODING` naming the branch, before your first commit**
64
+ 1. Branch off an up-to-date `main`, named after the card — `r4-roadmap-entries`.
65
+ 2. **Move the card to `IN_DEVELOPMENT` naming the branch, before your first commit**
64
66
  (`roadmap_set_status`). Not after. The roadmap should be able to answer
65
67
  "what is being worked on right now" without asking anyone.
66
- 3. Build to the entry's "Done when" list.
68
+ 3. Build to the card's "Done when" list.
67
69
  4. Finish with a PR. Never push to `main`. As your session ends the platform
68
- moves the *branch* on the development board, not the card: to `REVIEW` where
70
+ moves the *branch* on the development board, not the card: to `TEST` (the board
71
+ column, not the TEST stage of a run) where
69
72
  the project runs `require_review` and somebody is going to read it, and to
70
73
  `DONE` where it does not — a finish nobody was asked about (R132), because
71
74
  there is no reviewer coming.
72
- 5. When the PR merges, move the entry to `MERGED` naming it. The branch may then
73
- be deleted — `CODING` is for work somebody is doing, not work that is done.
75
+ 5. When the PR merges, move the card to `MERGED` naming it. The branch may then
76
+ be deleted — `IN_DEVELOPMENT` is for work somebody is doing, not work that is done.
74
77
 
75
78
  ### What a status must carry
76
79
 
77
80
  `roadmap_statuses` will tell you, and it is worth reading rather than guessing:
78
- `CODING` needs a branch, `MERGED` needs the merge — a pull request, a merge
81
+ `IN_DEVELOPMENT` needs a branch, `MERGED` needs the merge — a pull request, a merge
79
82
  commit, or a sha — `SHIPPED` needs a version that is a real git tag, and
80
- `DECLINED` needs a reason. `REVIEW` needs nothing, deliberately: the pull
81
- request it would otherwise carry belongs to the run, and a project that reviews
82
- without opening pull requests has none to give it.
83
+ `DECLINED` needs a reason.
83
84
 
84
85
  **A card you file may land in the `BACKLOG`** (R371). Where a new card goes
85
86
  when you name no status is the project's rule, per door, and the default for a
86
87
  card or issue an agent files is the backlog: waiting until a person or a sprint
87
88
  brings it in, in no sprint and on no board column. Its origin names your
88
- session and the card your run was on. A plan session's card lands where the console's
89
+ session and the card your run was on. A plan run's card lands where the console's
89
90
  do (R380). Name a status (`CONSIDERING`, `NEW`) when
90
91
  you mean the pipeline. Giving a backlog card a sprint moves it to the first
91
92
  status of its kind; moving a card to `BACKLOG` takes it out of its sprint.
92
93
 
93
- **Any status may move to any other.** There is no transition diagram — an entry
94
+ **Sprints are a team's** (R474, R489). The `sprint` of `roadmap_create`,
95
+ `roadmap_update` and the filter of `roadmap_list` take an integer or a string:
96
+ `7` or `"S7"` when the project's teams have one S7, `"Core team · S7"` (or
97
+ `"Core team / S7"`) when two do — the API refuses an ambiguous `S7` naming both
98
+ spellings, so read the sentence and send the long one — a sprint id, and `0` or
99
+ `""` to take a card out. A completed sprint refuses a card that is not already
100
+ in it, and only a person can reopen one; do not retry. `sprint_list` says which
101
+ sprints there are. A card prints its sprint as `Core team · S7 Name (active)`.
102
+ Opening, starting, completing and renaming a sprint stay a person's.
103
+
104
+ **Any status may move to any other.** There is no transition diagram — a card
94
105
  really can go from `CONSIDERING` straight to `SHIPPED` if that is what happened.
95
106
  The rules are about what a status *carries*, not the path it took.
96
107
 
97
108
  ### The body is what we want; the plan is how; the comments are the argument
98
109
 
99
110
  `roadmap_get` gives you all three, and `task_current` gives you them for the
100
- entry you are working on.
111
+ card you are working on.
101
112
 
102
113
  **The plan is the one to read before doing any of the work.** It was written by
103
114
  a plan phase and agreed by somebody, and it names the files — R124. If you are
@@ -110,8 +121,8 @@ either. The first is the platform's — it stores what a plan phase reports when
110
121
  the phase ends, so that a session which must not write is not handed a writer to
111
122
  do its own bookkeeping with. The second is refused outright: *an agent cannot
112
123
  start another agent*, which is `RunAccess.requireCanStart`'s rule and not an
113
- omission here. **Read the discussion before you propose anything about an
114
- entry.** It is where an objection was answered and where an obvious-looking
124
+ omission here. **Read the discussion before you propose anything about a
125
+ card.** It is where an objection was answered and where an obvious-looking
115
126
  approach was ruled out with a reason — and re-proposing what was talked out
116
127
  three months ago is precisely what it exists to stop.
117
128
 
@@ -123,7 +134,7 @@ that the next reader does not have to reconstruct it from the thread.
123
134
  A comment you write is attributed to your run as well as to the account that
124
135
  minted your token, so a person can tell an agent's reading from a colleague's.
125
136
 
126
- ### Read what the earlier sessions did before repeating it
137
+ ### Read what the earlier runs did before repeating it
127
138
 
128
139
  `task_current` lists **every run this card has already had** — how each ended,
129
140
  on what branch, with what model, whether the work was pushed, and the commits it
@@ -133,21 +144,21 @@ to know what the first tried.
133
144
 
134
145
  No transcripts come with it, deliberately: the terminal log is on the run's own
135
146
  page in the console, and nine of them would fill the context this call exists to
136
- orient. If you need the detail, the discussion under the entry is where a
137
- previous session should have written down what it learned — and where yours
147
+ orient. If you need the detail, the discussion under the card is where a
148
+ previous run should have written down what it learned — and where yours
138
149
  should.
139
150
 
140
151
  ### There is no delete
141
152
 
142
153
  Not in these tools, not in the API. `roadmap_decline` with a reason is the only
143
- exit an entry has, and the reason is the point: it is what stops the same idea
154
+ exit a card has, and the reason is the point: it is what stops the same idea
144
155
  being proposed again in six months. Same for changelog entries — correct the
145
156
  text, do not remove the record. Same for comments: nothing removes one, and the
146
157
  most you can do to your own is correct its wording.
147
158
 
148
159
  ### Ids are permanent, and a card is named by its ref
149
160
 
150
- An entry's number never changes and is never reused. Commit messages and code
161
+ A card's number never changes and is never reused. Commit messages and code
151
162
  comments point at it. Since R221 a roadmap card and an issue each count on
152
163
  their own sequence, so `R91` and `i91` are two cards: wherever a tool takes
153
164
  `number`, `related`, `after` or `entryNumber`, pass the ref — `"i91"` for an
@@ -169,20 +180,21 @@ what you are allowed to do.
169
180
  |---|---|
170
181
  | `roadmap_where` | Which platform, which token, read from where, and who you are. Start here. |
171
182
  | `roadmap_statuses` | The eight statuses, what they mean, what each requires. |
172
- | `roadmap_list` | Entries, optionally by status. `brief` omits bodies — use it to survey. |
173
- | `roadmap_get` | One entry in full: its body, **the plan agreed for it**, and the discussion on it. |
174
- | `roadmap_create` | Create an entry; the platform allocates its permanent number. |
175
- | `roadmap_update` | Title, body, section, related ids, the cards it starts coding after (`after` — R181), when it is due and how big it is (`due` — R351: an ISO date, `""` clears; `estimate`: a positive number, `0` clears), the version it is meant for (`targetVersion` — R358, `""` clears; since R362 it must be one the project defined under Project settings → Versions, and any other name is refused), the versions an issue was found in (`affectedVersions` — R378, issues only: names the project defined or shipped in, `[]` clears), and who it is assigned to (`assignee` — R331: a username, `""` clears; `roadmap_list`/`issue_list` take `assignee` too, and `me` means the token's owner). |
176
- | `roadmap_comment` | Say something *beside* an entry rather than inside it. |
183
+ | `roadmap_list` | Cards, optionally by status or `sprint` (any spelling below). `brief` omits bodies — use it to survey. |
184
+ | `sprint_list` | The project's sprints with how far each has got (R489): `Core team · S7 Notifications — active — 4 of 9 landed`. ACTIVE and UPCOMING unless `state` says otherwise. A read: PLAN and VERIFY have it. |
185
+ | `roadmap_get` | One card in full: its body, **the plan agreed for it**, and the discussion on it. |
186
+ | `roadmap_create` | Create a card; the platform allocates its permanent number. |
187
+ | `roadmap_update` | Title, body, section, sprint (R489: `7`, `S7`, `"Core team · S7"`, a sprint id; `0` or `""` takes the card out — see below), related ids, the cards it starts coding after (`after` — R181), when it is due and how big it is (`due` — R351: an ISO date, `""` clears; `estimate`: a positive number, `0` clears), the version it is meant for (`targetVersion` — R358, `""` clears; since R362 it must be one the project defined under Project settings → Versions, and any other name is refused), the versions an issue was found in (`affectedVersions` — R378, issues only: names the project defined or shipped in, `[]` clears), and who it is assigned to (`assignee` — R331: a username, `""` clears; `roadmap_list`/`issue_list` take `assignee` too, and `me` means the token's owner). |
188
+ | `roadmap_comment` | Say something *beside* a card rather than inside it. |
177
189
  | `done_when_tick` | Tick (or untick) one numbered item of the card's Done-when checklist as built, with one line of evidence (R368). `task_current` lists the items. Defaults to the run's own card and refuses another; the reviewer's column is a person's and no token can set it. |
178
- | `roadmap_set_status` | Move an entry, carrying whatever the status requires. |
190
+ | `roadmap_set_status` | Move a card, carrying whatever the status requires. |
179
191
  | `roadmap_decline` | Decline with a reason. The only exit. |
180
- | `backlog_file` | File **feedback**, not a card — something a person should decide about. A WRITER accepts it as a card or an issue, or refuses it (R199). Tagged `agent` as a source, plus any `tags` you pass — `customer` when you relay what a user said (R372). |
192
+ | `backlog_file` | File **feedback**, not a card — something a person should decide about. A WRITER accepts it as a card or an issue, or refuses it (R199). Tagged `agent` as a source, plus any `tags` you pass — `customer` when you relay what a user said (R372). Inside a run, what you find that is **not this card's** goes here, one item per suggestion: the platform stamps the item with the run, so the feedback page links the run and its card, and accepting it relates the new card to yours (R572). Every stage holds it, read-only ones included. |
181
193
  | `changelog_list` | The changelog, grouped by release, newest first. |
182
194
  | `changelog_get` | One entry. |
183
195
  | `changelog_add` | Add an entry; no version means `Unreleased`. |
184
196
  | `changelog_update` | Edit one, including moving it to a release when it ships. |
185
- | `quality_get` | The SonarQube reading — the default branch's gate, a named branch's gate and new problems (inside a run, this run's branch by default), and the open findings with links. Read-only: nothing here refreshes, scans or files (R302). |
197
+ | `quality_get` | The SonarQube reading — the default branch's gate, a named branch's gate and new problems (inside a run, this run's branch by default), and the open findings with links (not those a person dismissed, R467). Read-only: nothing here refreshes, scans or files (R302). |
186
198
 
187
199
  ### Inside a run
188
200
 
@@ -192,8 +204,8 @@ token gets a refusal saying so.
192
204
 
193
205
  | Tool | What it does |
194
206
  |---|---|
195
- | `task_current` | The entry you are working on, its branch, everything already said and asked on this run, **and every earlier run on the same card**. **Call it first**, and again whenever you are unsure where you are. |
196
- | `report` | `progress` as often as useful; `done` when finished, naming the branch and any PR; `blocked` when a person must resolve something. `done` and `blocked` end the run; on a coding run `done` is refused until everything is committed and pushed (R345). |
207
+ | `task_current` | The card you are working on, its branch, everything already said and asked on this run, **and every earlier run on the same card**. **Call it first**, and again whenever you are unsure where you are. |
208
+ | `report` | `progress` as often as useful; `done` when finished, naming the branch and any PR; `blocked` when a person must resolve something. `done` and `blocked` end the run; on a review run the `done` body is filed as the branch's review (R529), so write it for the person reading the thread; on a coding run `done` is refused until everything is committed and pushed (R345). |
197
209
  | `ask_user` | Ask the person who started the run, and wait. Blocks up to ten minutes, then hands back a `question_id`. |
198
210
  | `await_answer` | Resume waiting for a question `ask_user` handed back. |
199
211
  | `ask_group` | Ask a **round** — up to twelve questions that belong together, under one title. Blocks until every one of them has been answered, then hands back a `group_id`. |
@@ -202,7 +214,7 @@ token gets a refusal saying so.
202
214
  | `approve` | **Not yours to call.** Claude Code calls it itself, as `--permission-prompt-tool`, when no rule covers a tool call. |
203
215
 
204
216
  **`ask_user` is for decisions that are genuinely theirs** — an architectural
205
- choice, a trade-off with no right answer, something the entry does not settle.
217
+ choice, a trade-off with no right answer, something the card does not settle.
206
218
  Not for checking work you can check yourself. Every question stops the run and
207
219
  costs somebody's attention.
208
220
 
@@ -213,7 +225,7 @@ asked because the decision was not yours. Call `await_answer`, or `report`
213
225
  **`ask_group` is for when you have several questions at once** — R96. One
214
226
  question at a time is right for a decision you hit halfway through a piece of
215
227
  work; it is wrong when you are trying to understand something, because forty
216
- separate inbox items arriving over an afternoon is not a conversation, it is an
228
+ separate Waiting on you items arriving over an afternoon is not a conversation, it is an
217
229
  interruption repeated forty times. A round arrives as one form under one title,
218
230
  the person answers it in one sitting, and you are woken once when all of it is
219
231
  answered.
@@ -259,9 +271,9 @@ Two smoke tests, both driving the server over real stdio.
259
271
  CAWDEV_URL=http://localhost:4200 CAWDEV_TOKEN=cawd_… node tools/mcp/smoke.mjs scratch-project
260
272
  ```
261
273
 
262
- **Name a scratch project.** The smoke test creates a roadmap entry and declines
263
- it, and entries cannot be deleted — so it refuses to guess which project you
264
- meant. It left two declined entries in cawdev's own roadmap before it did.
274
+ **Name a scratch project.** The smoke test creates a roadmap card and declines
275
+ it, and cards cannot be deleted — so it refuses to guess which project you
276
+ meant. It left two declined cards in cawdev's own roadmap before it did.
265
277
 
266
278
  It drives the server the way a client does — spawn, write lines to stdin, read
267
279
  lines from stdout — rather than importing its functions, because the parts most