@rness/cli 0.21.0 → 0.22.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/README.md +161 -95
- package/dist/bin/rness.js +2 -2
- package/dist/{chunk-D3D2WCGW.js → chunk-OUZQGG6V.js} +464 -399
- package/dist/chunk-OUZQGG6V.js.map +1 -0
- package/dist/{chunk-4BM4FUWO.js → chunk-PW5RMU2G.js} +8 -8
- package/dist/chunk-PW5RMU2G.js.map +1 -0
- package/dist/{chunk-T5PINUCP.js → chunk-SX7D5W43.js} +131 -114
- package/dist/chunk-SX7D5W43.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/{note-RBG7OXVI.js → note-MKUG7GOT.js} +5 -5
- package/dist/{summary-UCMFESSA.js → summary-5DVUIOJM.js} +4 -4
- package/dist/summary-5DVUIOJM.js.map +1 -0
- package/package.json +1 -1
- package/scaffold/README.md +3 -3
- package/scaffold/WORKSPACE.md +2 -2
- package/scaffold/adr/0000-template.md +5 -5
- package/dist/chunk-4BM4FUWO.js.map +0 -1
- package/dist/chunk-D3D2WCGW.js.map +0 -1
- package/dist/chunk-T5PINUCP.js.map +0 -1
- package/dist/summary-UCMFESSA.js.map +0 -1
- /package/dist/{note-RBG7OXVI.js.map → note-MKUG7GOT.js.map} +0 -0
package/README.md
CHANGED
|
@@ -29,9 +29,8 @@ Inside a workspace, every `rness` delegates to the copy pinned in
|
|
|
29
29
|
rness logout
|
|
30
30
|
rness context [--scope <name>] [--json]
|
|
31
31
|
rness status [<tab>] [--json]
|
|
32
|
-
rness
|
|
33
|
-
rness
|
|
34
|
-
rness pulse note [--plan <path>] [--kind approach|deviation|blocker|done] [<text>]
|
|
32
|
+
rness board push [-y]
|
|
33
|
+
rness note [--plan <path>] [--kind approach|deviation|blocker|done] [<text>]
|
|
35
34
|
rness validate
|
|
36
35
|
rness mcp
|
|
37
36
|
|
|
@@ -64,8 +63,8 @@ when dropped, red `?` when missing.
|
|
|
64
63
|
- `--json`, terminal or not: the tabs and their rows — each row with the
|
|
65
64
|
colour of its status on Agent Pulse (`color`, the board's name for it:
|
|
66
65
|
`yellow` for `In progress`; `red` without a status) and its item there
|
|
67
|
-
(`link`, the board filtered on its path; null without a
|
|
68
|
-
board (`pulse`), and what a Claude Code session shows of the workspace,
|
|
66
|
+
(`link`, the board filtered on its path; null without a board, or before
|
|
67
|
+
`board push` creates it) — the board (`pulse`), and what a Claude Code session shows of the workspace,
|
|
69
68
|
worded by the CLI — the session-start banner, the footer's label, the
|
|
70
69
|
scope's plans `In progress` and the notes of the safety net (see
|
|
71
70
|
"Hooks"). The plugin's mod reads it (see
|
|
@@ -198,7 +197,7 @@ the pinned copy, and computes nothing itself:
|
|
|
198
197
|
document is read from `.rness/` without its front matter, as the
|
|
199
198
|
board's card shows it; `q` brings the list back, Esc still closes. An
|
|
200
199
|
edit of the document shows at the next refresh. **Agent
|
|
201
|
-
Pulse is a link** when the workspace
|
|
200
|
+
Pulse is a link** when the workspace has a board: the board from the
|
|
202
201
|
list, the document's item (the board filtered on its path) from the
|
|
203
202
|
document. The terminal opens it as it opens any hyperlink (cmd+click on
|
|
204
203
|
macOS, as a rule), a desktop surface on a click. In `claude -p`, or where
|
|
@@ -247,7 +246,7 @@ workspace root's carry four Claude Code hooks, all run by the pinned copy:
|
|
|
247
246
|
A Claude Code too old for the plugin's mod gets one more line, once (see
|
|
248
247
|
"The mod"). When a board keeps a journal and the scope has a plan in
|
|
249
248
|
progress, the model gets one more line: how and when to post a note (see
|
|
250
|
-
"
|
|
249
|
+
"Boards"). After a compaction, the context only.
|
|
251
250
|
- **Before an edit** (`PreToolUse` on `Edit|Write`): refused, with the
|
|
252
251
|
reason for the model, when it would change what `sync` generates — a
|
|
253
252
|
line of the block of an `AGENTS.md` or `CLAUDE.md` (the reason names the
|
|
@@ -263,10 +262,10 @@ workspace root's carry four Claude Code hooks, all run by the pinned copy:
|
|
|
263
262
|
to the model, which fixes them in the same turn. Any other edit costs one
|
|
264
263
|
path check. Stale blocks are left to `sync`. When a board declares
|
|
265
264
|
`mark` and holds the document, the edit is then marked on it, broken or
|
|
266
|
-
not; see "
|
|
265
|
+
not; see "Boards".
|
|
267
266
|
- **At session end** (`SessionEnd`): when a board declares `clear-marks`,
|
|
268
267
|
clears the marks this session set and syncs; when one declares
|
|
269
|
-
`journal-summary`, posts the session's summary; see "
|
|
268
|
+
`journal-summary`, posts the session's summary; see "Boards". Without
|
|
270
269
|
either, nothing.
|
|
271
270
|
|
|
272
271
|
Each hook is one fixed `sh` line: it runs
|
|
@@ -280,31 +279,37 @@ own hooks stay where they are.
|
|
|
280
279
|
Claude Code runs hooks from a committed settings file without asking each
|
|
281
280
|
developer, including in `claude -p`. These four read `.rness/`, write
|
|
282
281
|
no file of the workspace and run no install; with a journal, the session
|
|
283
|
-
start records the clone's `HEAD` in its git directory. Only with a
|
|
282
|
+
start records the clone's `HEAD` in its git directory. Only with a board created do
|
|
284
283
|
they reach the network, through a detached `rness` process that uses your
|
|
285
|
-
login; when that process fails, it writes why to `
|
|
284
|
+
login; when that process fails, it writes why to `board.json` in rness's
|
|
286
285
|
configuration directory (`~/.config/rness/` by default), which the next
|
|
287
|
-
session start reads, says once and deletes.
|
|
286
|
+
session start reads, says once and deletes (0.21 wrote `pulse.json`: read
|
|
287
|
+
once too). See "Boards". Review a change to
|
|
288
288
|
them like code. Verified with Claude Code 2.1.284 on 2026-09-29: in a clone
|
|
289
289
|
and at the root, the model received the context; after an edit that broke a
|
|
290
290
|
status, it received the problem. The `sh` line is not verified on Windows.
|
|
291
291
|
|
|
292
|
-
###
|
|
293
|
-
|
|
294
|
-
rness
|
|
295
|
-
rness
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
`
|
|
307
|
-
`
|
|
292
|
+
### Boards
|
|
293
|
+
|
|
294
|
+
rness board push # every board rness.json declares: created if it is not yet, then brought up to date
|
|
295
|
+
rness note "…" # the agent's journal on the plan in progress
|
|
296
|
+
|
|
297
|
+
A board is a view of the rules the agent applies: the documents of
|
|
298
|
+
`.rness/` — decisions, specifications, plans, a team's own collections —
|
|
299
|
+
and where an agent is at work on them. The provider supplies the tool:
|
|
300
|
+
GitHub Projects today. Each board is declared in `rness.json`, under
|
|
301
|
+
`boards`: first **Agent Pulse** (`pulse`), where the team sees — and reads
|
|
302
|
+
— every document of `.rness/`, and sees when an agent is at work on one.
|
|
303
|
+
rness writes the boards; if it is not in rness, it does not belong there.
|
|
304
|
+
|
|
305
|
+
- **Boards declared in `rness.json`** (0.21.0; `boards` since 0.22.0,
|
|
306
|
+
`projects` before): `boards` maps a name to a board, written whole — its
|
|
307
|
+
`number`, `collections`, `colors`, `fields`, `labels`, `views`, and
|
|
308
|
+
optionally `title`, `description`, `readme` and `updates` (files of
|
|
309
|
+
`.rness/`) — or to a preset not created yet, by name:
|
|
310
|
+
`"boards": { "pulse": "agent-pulse", "marketing": "collection" }`
|
|
311
|
+
(`agent-pulse` for `pulse`, `collection` for a collection's board; see
|
|
312
|
+
"A board created"). What `rness.json` says is
|
|
308
313
|
the board; what it does not declare, the board does not have, but the
|
|
309
314
|
engine's own: one issue of `.rness` per document, found by its `Path`,
|
|
310
315
|
its `Status`, the label `rness`. Nothing knows Agent Pulse by name: it
|
|
@@ -328,7 +333,7 @@ there.
|
|
|
328
333
|
status its tone, a collection pink). A colour changed is set at the
|
|
329
334
|
next sync, every card keeping its value.
|
|
330
335
|
- A board that `rness.json` declares wrongly is refused alone, by its
|
|
331
|
-
full key (`"
|
|
336
|
+
full key (`"boards.marketing.views[2].date" must name a date
|
|
332
337
|
field`); the others sync. `validate` reports it, and also a collection
|
|
333
338
|
that is no directory of `.rness/`, one on two boards, a `readme` or
|
|
334
339
|
`updates` not there, a README that still declares (below). `readme`
|
|
@@ -343,12 +348,12 @@ field`); the others sync. `validate` reports it, and also a collection
|
|
|
343
348
|
delete it on GitHub if unwanted`), as is a field no longer declared and
|
|
344
349
|
views out of the declared order (GitHub reorders none). A roadmap's
|
|
345
350
|
date is chosen in its settings: GitHub's API does not set it.
|
|
346
|
-
- **Presets and their revisions.** `
|
|
351
|
+
- **Presets and their revisions.** `board push` writes a board from a
|
|
347
352
|
preset, `agent-pulse` or `collection`, recording it (`"preset":
|
|
348
353
|
"agent-pulse/1"`). When a later rness ships a newer revision, `rness
|
|
349
354
|
sync` merges it into the board value by value: a value the team never
|
|
350
355
|
changed takes the new one, one it changed is kept, and said when the
|
|
351
|
-
revision changed it too (`kept
|
|
356
|
+
revision changed it too (`kept boards.pulse.colors.Draft: kept orange,
|
|
352
357
|
agent-pulse/2 gives blue`). Removing `preset` takes a board off the
|
|
353
358
|
merge. An upgrade commits the result, for the team to read before
|
|
354
359
|
pushing.
|
|
@@ -358,7 +363,12 @@ upgrade` runs — writes it whole; nothing changes on GitHub. A
|
|
|
358
363
|
collection's `README.md` that declared `description`, `statuses`,
|
|
359
364
|
`fields` or `labels` has them moved into its board and out of its front
|
|
360
365
|
matter (a value declared otherwise in both is refused, naming both).
|
|
361
|
-
Until then, `
|
|
366
|
+
Until then, `board push` skips a board whose README still declares.
|
|
367
|
+
- **From 0.21 and before.** `projects`, and the older
|
|
368
|
+
`"pulse": { "project": <number> }`, still read as `boards`; more than
|
|
369
|
+
one of the three at once is refused. `rness sync` renames the key
|
|
370
|
+
(`renamed projects to boards in .rness/rness.json`), the boards as they
|
|
371
|
+
were, and every write of `rness.json` writes `boards`.
|
|
362
372
|
|
|
363
373
|
- **Items**: one per document of `rness status`, an issue of
|
|
364
374
|
`<org>/.rness` added to the project. GitHub shows it only to people who
|
|
@@ -394,10 +404,9 @@ status, …`) and its body the document (see **Body**). It carries the
|
|
|
394
404
|
on `main`, and branches of it are rare). The project is linked to
|
|
395
405
|
`.rness`, so Agent Pulse shows in its Projects tab. Comments are the
|
|
396
406
|
team's: a spec's discussion lives on its issue, and rness never writes
|
|
397
|
-
or deletes one. `
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
in its Settings`.
|
|
407
|
+
or deletes one. `board push` needs Issues on `.rness`. Without them it
|
|
408
|
+
stops before writing anything: `boards need Issues on <org>/.rness: turn
|
|
409
|
+
them on in its Settings`.
|
|
401
410
|
- **Body**: the document, the same bytes for the same document. It starts
|
|
402
411
|
with a first line: the document's path and a link to the file. Then comes
|
|
403
412
|
the document without its front matter (the status is a field) and
|
|
@@ -430,36 +439,46 @@ Session → Working session`). A board per directory, named as
|
|
|
430
439
|
`rness status` names its tab, filtered on its `Collection`, its columns
|
|
431
440
|
that collection's own steps: each collection has its own status field
|
|
432
441
|
(`ADR status`, `Specs status`, …; a directory without statuses is columned
|
|
433
|
-
by `Status`, which holds them all for the `All` table). `
|
|
442
|
+
by `Status`, which holds them all for the `All` table). `board push`
|
|
434
443
|
remakes a board built by an earlier version (its URL changes once); a `Working` table, filtered on `Agent: working`. A first view named `View 1` (GitHub's default) becomes `All` when no `All` exists, on create and on sync, showing Title, Collection, Status and Working session. Options are coloured (statuses by lifecycle: blue proposed, purple approved, yellow in progress, red blocked or rejected, yellow superseded, green done, gray abandoned; collections and `working` too); a sync recolours rness's options and leaves other options' colours alone. rness does
|
|
435
444
|
not set the project's visibility: the project gets GitHub's default for a
|
|
436
445
|
new organization project, which is private (`public: false`). Verified
|
|
437
446
|
with Claude Code 2.1.284 on 2026-09-29.
|
|
438
|
-
- **Login**:
|
|
439
|
-
when the workspace declares a
|
|
440
|
-
terminal it offers to log in; with `-y` or off a terminal it stops
|
|
441
|
-
`
|
|
442
|
-
`
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
scope, so
|
|
447
|
+
- **Login**: boards need the `project` scope. `rness login` asks for it
|
|
448
|
+
when the workspace declares a board, and `board push` when it creates one
|
|
449
|
+
(in a terminal it offers to log in; with `-y` or off a terminal it stops
|
|
450
|
+
with `boards need a GitHub login: run rness login` or
|
|
451
|
+
`boards need the project scope: run rness login`). A developer who never
|
|
452
|
+
uses boards grants nothing more than `repo read:org`. When GitHub cannot
|
|
453
|
+
be asked, rness says so (`cannot reach GitHub: …`, or GitHub's own
|
|
454
|
+
answer) instead of asking for a login. A classic `GITHUB_TOKEN` works if
|
|
455
|
+
it carries the scope; a fine-grained or GitHub App token reports no
|
|
456
|
+
scope, so boards refuse it whatever its permissions. An organization
|
|
448
457
|
that restricts OAuth apps must approve "Rness", as for its private
|
|
449
458
|
repositories.
|
|
450
|
-
-
|
|
451
|
-
|
|
452
|
-
board
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
`
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
459
|
+
- **A board created** (0.22.0): a board of `boards` without a `number` —
|
|
460
|
+
a preset's name, or a declaration that leaves it out — is not on GitHub
|
|
461
|
+
yet, and `board push` creates it. Its name is `pulse` or a collection of
|
|
462
|
+
`.rness/`, else it is refused before GitHub is asked anything (`validate`
|
|
463
|
+
says so too). In a terminal push asks once
|
|
464
|
+
(`Create Agent Pulse (pulse) on GitHub, in acme?`); `-y` does not ask.
|
|
465
|
+
Off a terminal without `-y`, or declined, it creates none, pushes the
|
|
466
|
+
others and exits 1: `not created: pulse — rness board push in a terminal,
|
|
467
|
+
or with --yes, creates it`. Then, in order: the login and its `project`
|
|
468
|
+
scope, Issues on `.rness`, the project, and at once its `number` in
|
|
469
|
+
`rness.json` — a preset's name is written whole from that preset, a
|
|
470
|
+
declaration gets its `number` and nothing else — with the `provider`;
|
|
471
|
+
then the fields, options and views, and a first push. Its `created` lines
|
|
472
|
+
say what it added, and the last line what to commit
|
|
473
|
+
(`git -C .rness commit -am "chore: board pulse"`). If a step after the
|
|
474
|
+
project fails, it exits 1 with the number written, and the next
|
|
475
|
+
`board push` completes the layout. A project deleted on GitHub is not
|
|
476
|
+
made again: push stops on `GitHub has no project 4 in acme`; removing the
|
|
477
|
+
`number` asks for a new one. A workspace needs an `org` (a blank one is
|
|
478
|
+
refused); one without a `provider` whose repositories look like GitLab
|
|
479
|
+
is refused before anything is created: write `"provider": "github"` if
|
|
480
|
+
the organization is on GitHub.
|
|
481
|
+
- **`board push`** works in two passes. First every document gets its
|
|
463
482
|
issue — created, converted from a 0.12.0 draft, or reopened — with its
|
|
464
483
|
title, label and fields. Then the bodies whose digest differs are
|
|
465
484
|
written, since a body links to other documents' issues by number. It
|
|
@@ -479,15 +498,14 @@ unchanged`.
|
|
|
479
498
|
as the team's item. A workflow someone turns on (`Item closed`, `Item
|
|
480
499
|
added to project`) may change a field of rness's items; the next sync
|
|
481
500
|
writes it back.
|
|
482
|
-
- **A collection's own
|
|
483
|
-
gives a directory of `.rness/` whose
|
|
484
|
-
|
|
485
|
-
from the preset `collection` into
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
Pulse. The project is written from the collection's files, one way:
|
|
501
|
+
- **A collection's own board** (0.17.0): `"marketing": "collection"` in
|
|
502
|
+
`boards`, then `rness board push`, gives a directory of `.rness/` whose
|
|
503
|
+
documents carry a status — a tab of `rness status` — a project of its
|
|
504
|
+
own, named after it, written whole from the preset `collection` into
|
|
505
|
+
`boards.marketing`. Agent Pulse keeps every other collection and the
|
|
506
|
+
`Working` table; the collection's items leave it (`deleteProjectV2Item`,
|
|
507
|
+
their issues untouched) once its board holds them. `board push` pushes
|
|
508
|
+
the collections' boards, then Agent Pulse. The project is written from the collection's files, one way:
|
|
491
509
|
- `<collection>/README.md` is its README (`readme` in its board since
|
|
492
510
|
0.21.0, where `description`, `statuses`, `fields` and `labels` are
|
|
493
511
|
declared too: what follows is how a README declared them before,
|
|
@@ -522,11 +540,11 @@ added to project`) may change a field of rness's items; the next sync
|
|
|
522
540
|
organization's and the hooks run on every developer's machine. The
|
|
523
541
|
preset `agent-pulse` declares all three, which is 0.20's behaviour;
|
|
524
542
|
removing `hooks` from a board turns its marking off, and a board without
|
|
525
|
-
them is only what `
|
|
526
|
-
one detached `rness
|
|
527
|
-
the order of `
|
|
528
|
-
action (`mark on Marketing failed: …`).
|
|
529
|
-
|
|
543
|
+
them is only what `board push` makes of the documents. For each event,
|
|
544
|
+
one detached `rness board run <event>` does every board's actions, in
|
|
545
|
+
the order of `boards`; a failure is recorded naming the board and the
|
|
546
|
+
action (`mark on Marketing failed: …`). A board not created yet runs
|
|
547
|
+
none. With Agent Pulse's preset:
|
|
530
548
|
session start marks the `In progress` plans of the session's scope
|
|
531
549
|
`Agent: working`, with the session; an edit of a document of `.rness/` marks it — one the agent has just written, with no item yet, gets its issue first
|
|
532
550
|
through a sync, and so does one whose status the edit changed, so its
|
|
@@ -541,8 +559,8 @@ added to project`) may change a field of rness's items; the next sync
|
|
|
541
559
|
its file 3 s after `/exit`. It uses your login: with none, without the
|
|
542
560
|
scope, or when GitHub cannot be reached, nothing is sent, and the next
|
|
543
561
|
session start's banner says why, once:
|
|
544
|
-
`rness:
|
|
545
|
-
`
|
|
562
|
+
`rness: board not updated — <reason>`, such as
|
|
563
|
+
`boards need the project scope: run rness login` or
|
|
546
564
|
`cannot reach GitHub: …`. Two sessions marking one plan both write; the
|
|
547
565
|
last wins.
|
|
548
566
|
- **Agent journal** (spec 0030, 0.21.0): how a plan was implemented, in
|
|
@@ -550,7 +568,7 @@ added to project`) may change a field of rness's items; the next sync
|
|
|
550
568
|
`{ "action": "journal", "to": "plan" | "repo", "limit": 5 }` at
|
|
551
569
|
`session-start`, and `journal-summary` at `session-end`. With a plan
|
|
552
570
|
`In progress` in the session's scope, the session start tells the model
|
|
553
|
-
to post a note — `rness
|
|
571
|
+
to post a note — `rness note`, or `rness_note` — when it chooses an
|
|
554
572
|
approach, deviates from the plan, is blocked, and when done: decisions
|
|
555
573
|
and their reasons, not steps. A note is a comment headed
|
|
556
574
|
`**Approach** · claude · 1a2b3c4d · \`feat/limits\` @ \`9f8e7d6\``
|
|
@@ -579,7 +597,7 @@ the one plan in progress when there is a commit; with neither, nothing.
|
|
|
579
597
|
It counts toward no limit. Not verified against GitHub yet (2026-10-06):
|
|
580
598
|
a sub-issue across repositories, and `Closes` on a pull request merged
|
|
581
599
|
into the default branch.
|
|
582
|
-
- **One issue per document**: before making an issue, `
|
|
600
|
+
- **One issue per document**: before making an issue, `board push` reads
|
|
583
601
|
the open issues of `.rness` labelled `rness` (one request per 100, and
|
|
584
602
|
only when it has one to make). One whose body starts with the document's
|
|
585
603
|
first line was made by an earlier sync, whose item the board's listing
|
|
@@ -596,10 +614,16 @@ a sub-issue across repositories, and `Closes` on a pull request merged
|
|
|
596
614
|
documents, 2026-09-30): the migration from 0.12.0 took 169 s with no
|
|
597
615
|
wait; a sync with nothing to change, 4 s; the listing, one page of
|
|
598
616
|
852 KB in about 1 s.
|
|
599
|
-
- **Not yet**: GitLab and Atlassian. `create` lists
|
|
600
|
-
workspace whose `rness.json` names one is refused by
|
|
601
|
-
and `Review` statuses, several agents on one
|
|
602
|
-
other than Claude Code are not built.
|
|
617
|
+
- **Not yet**: GitLab and Atlassian, and their own boards. `create` lists
|
|
618
|
+
them, disabled; a workspace whose `rness.json` names one is refused by
|
|
619
|
+
`board push`. `Waiting` and `Review` statuses, several agents on one
|
|
620
|
+
board and hooks for agents other than Claude Code are not built.
|
|
621
|
+
- **`rness pulse`**, the name of all this until 0.21: hidden, each of its
|
|
622
|
+
commands still runs as its new one and says so once on stderr
|
|
623
|
+
(`rness pulse sync is now rness board push`); `rness pulse create
|
|
624
|
+
[<collection>]` adds the preset's name to `boards` when it is not there,
|
|
625
|
+
then pushes without asking. `rness pulse mark`, which 0.20's hooks
|
|
626
|
+
started, exits 0 and does nothing. The alias goes in a later minor.
|
|
603
627
|
|
|
604
628
|
### Provider
|
|
605
629
|
|
|
@@ -618,15 +642,16 @@ repository, the board).
|
|
|
618
642
|
names.
|
|
619
643
|
- A workspace without the key is read from its first repository URL: a
|
|
620
644
|
GitLab host reads as `gitlab`, any other host — or no repository — as
|
|
621
|
-
`github`. Nothing to change: `
|
|
622
|
-
detected provider this version cannot talk to. The
|
|
623
|
-
`contract`, `provider`, `org`, `agents`, `
|
|
624
|
-
|
|
625
|
-
`"
|
|
626
|
-
|
|
627
|
-
number still reads, as its preset, until
|
|
645
|
+
`github`. Nothing to change: `board push` writes it when it creates a
|
|
646
|
+
board, and refuses a detected provider this version cannot talk to. The
|
|
647
|
+
order of keys is `contract`, `provider`, `org`, `agents`, `boards`,
|
|
648
|
+
`repos`, `scopes`. The former `projects` and
|
|
649
|
+
`"pulse": { "project": <number> }` still read, as `boards`; more than one
|
|
650
|
+
of them at once is refused. A board in `boards` is written whole, on
|
|
651
|
+
several lines, once created; a number still reads, as its preset, until
|
|
652
|
+
`rness sync` writes it whole.
|
|
628
653
|
- A provider _written_ in `rness.json` that this version cannot talk to
|
|
629
|
-
(`gitlab`) is refused by `validate`, `create`, `login` and `
|
|
654
|
+
(`gitlab`) is refused by `validate`, `create`, `login` and `board`:
|
|
630
655
|
`provider "gitlab" is not supported by @rness/cli 0.17.1 (supported:
|
|
631
656
|
github)`. `add`, `sync` and the local commands never refuse. `null` is not a
|
|
632
657
|
value: an absent key means none.
|
|
@@ -646,7 +671,7 @@ as the server starts (Claude Code starts it with the session):
|
|
|
646
671
|
| `rness_list({ collection, status? })` | every document of a collection, across scopes, optionally of one status |
|
|
647
672
|
| `rness_read({ path })` | one file of `.rness/`, 256 KiB at most; nothing outside it |
|
|
648
673
|
| `rness_search({ query, collection? })` | the documents that match, most matching first, with the matching lines |
|
|
649
|
-
| `rness_note({ text, session, kind?, plan? })` | a note of the agent's journal posted to GitHub, as `rness
|
|
674
|
+
| `rness_note({ text, session, kind?, plan? })` | a note of the agent's journal posted to GitHub, as `rness note` posts it; the issue it went to (see "Boards") |
|
|
650
675
|
|
|
651
676
|
- MCP over stdio, one message per line: the `2026-07-28` revision and the
|
|
652
677
|
earlier ones that open with `initialize` (`2025-11-25` back to
|
|
@@ -686,7 +711,7 @@ anonymously.
|
|
|
686
711
|
it — CI needs no login.
|
|
687
712
|
- rness asks for `repo` and `read:org`: GitHub has no read-only scope for
|
|
688
713
|
private repositories. It only lists and clones. Where the workspace
|
|
689
|
-
declares a
|
|
714
|
+
declares a board it asks for `project` too; see "Boards".
|
|
690
715
|
- A new workspace has to reach GitHub before teammates can join it. Logged
|
|
691
716
|
in, the `create` wizard offers to do it: it creates the private repository
|
|
692
717
|
`<org>/.rness` and pushes the context with `git`. Declined, refused by
|
|
@@ -823,6 +848,42 @@ per repository, the files to commit there.
|
|
|
823
848
|
Exit codes: 0 success, 1 failure, 2 usage — or a refusal without a TTY.
|
|
824
849
|
`RNESS_DEBUG=1` adds stack traces; `RNESS_NO_DELEGATE=1` skips the delegation.
|
|
825
850
|
|
|
851
|
+
## 0.22.1 — what rness writes carries no em dash
|
|
852
|
+
|
|
853
|
+
- Nothing rness writes carries an em dash (U+2014) any more: the `AGENTS.md`
|
|
854
|
+
block, the title `rness doc new` opens (`# NNNN - Title`), the `rness:adr`,
|
|
855
|
+
`rness:spec` and `rness:plan` skills, the scaffold, the titles of a board's
|
|
856
|
+
issues (`NNNN - Title`, renamed once at the next `rness board push`), and
|
|
857
|
+
the messages of the CLI and of the mod: " - ", a comma or a colon take its
|
|
858
|
+
place. A title written with the old separator still reads. The
|
|
859
|
+
repository's lint refuses a new one in a string of the CLI or the mod.
|
|
860
|
+
|
|
861
|
+
## 0.22.0 — `board`, not `pulse`: `rness board push`, `rness note`, `boards` in rness.json
|
|
862
|
+
|
|
863
|
+
- One word for the view, whatever the provider (spec 0033, see "Boards"):
|
|
864
|
+
`rness board push` replaces `rness pulse sync`, `rness note` replaces
|
|
865
|
+
`rness pulse note`, and the hooks start `rness board run`. `rness.json`
|
|
866
|
+
names its boards `boards`; `projects` and the older `pulse` still read,
|
|
867
|
+
and `rness sync` (which `rness upgrade` runs) renames the key. `pulse`
|
|
868
|
+
stays the name of the board rness ships, Agent Pulse.
|
|
869
|
+
- A board comes to exist by its declaration and a push: there is no
|
|
870
|
+
`create`. A board of `boards` without a `number`, or a preset by name
|
|
871
|
+
(`"pulse": "agent-pulse"`, `"marketing": "collection"`), is created by
|
|
872
|
+
`rness board push` once asked (`-y` off a terminal), its number then
|
|
873
|
+
written into `rness.json`.
|
|
874
|
+
- `rness pulse …` still runs, hidden, as its new command, and says so on
|
|
875
|
+
stderr; it goes in a later minor. `rness pulse mark`, kept through
|
|
876
|
+
0.21.x for 0.20's hooks, now exits 0 and does nothing. Spec 0031's
|
|
877
|
+
`eject` is not built and will not be: every board is written whole.
|
|
878
|
+
- The session-start notice is `rness: board not updated — …`, its record
|
|
879
|
+
`board.json` (one 0.21 left in `pulse.json` is said once), and messages
|
|
880
|
+
name boards: `boards need a GitHub login: run rness login`.
|
|
881
|
+
- Upgrade with `npx @rness/cli@latest upgrade`, which runs the new copy
|
|
882
|
+
throughout: a 0.21 copy cannot read `boards` (`unknown key "boards"`).
|
|
883
|
+
- For the package's API: `Manifest.projects` is `Manifest.boards`
|
|
884
|
+
(`Boards`, a record of `BoardEntry`: a number, a preset's name, or a
|
|
885
|
+
`BoardDeclaration`, whose `number` is null until the board is created).
|
|
886
|
+
|
|
826
887
|
## 0.21.0 — boards declared in rness.json; what a session does to a board, declared; the agent's journal
|
|
827
888
|
|
|
828
889
|
- The agent journal (spec 0030, see "Pulse"): a board declares `journal`
|
|
@@ -857,9 +918,14 @@ BoardDeclaration>`; `BoardDeclaration` and `parseBoard` are exported.
|
|
|
857
918
|
its commit it lists the files to commit in the clones, and that list read
|
|
858
919
|
the plugin's mod from the folder of the copy running it, which the install
|
|
859
920
|
had just removed. The list now takes the paths alone. The upgrade itself
|
|
860
|
-
was complete: 0.20.0 to 0.20.1 printed the error after its commit.
|
|
861
|
-
|
|
862
|
-
|
|
921
|
+
was complete: 0.20.0 to 0.20.1 printed the error after its commit.
|
|
922
|
+
- An upgrade to 0.21.0 run by a 0.20 copy (`pnpm rness upgrade` from
|
|
923
|
+
`.rness/`) ends, after its commit, on `rness.json: "projects" must map
|
|
924
|
+
names to distinct project numbers`: the old copy, finishing, cannot read
|
|
925
|
+
the boards the new version has just written. The upgrade is complete, and
|
|
926
|
+
`rness validate` passes. `npx @rness/cli@latest upgrade` runs the new
|
|
927
|
+
copy throughout; `pnpm dlx @rness/cli` takes the previous version for a
|
|
928
|
+
day after a release, pnpm refusing a version younger than 24 hours.
|
|
863
929
|
|
|
864
930
|
## 0.20.1 — the workspace's line in the prompt footer, without a warning sign; the mod never installs the pin
|
|
865
931
|
|
package/dist/bin/rness.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
catchUp,
|
|
5
5
|
findDelegate,
|
|
6
6
|
run
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-SX7D5W43.js";
|
|
8
8
|
import {
|
|
9
9
|
VERSION,
|
|
10
10
|
reportError
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-OUZQGG6V.js";
|
|
12
12
|
|
|
13
13
|
// src/bin/rness.ts
|
|
14
14
|
import { pathToFileURL } from "url";
|