@rness/cli 0.8.0 → 0.9.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.
package/README.md CHANGED
@@ -29,6 +29,7 @@ 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 validate
32
+ rness mcp
32
33
 
33
34
  `create` never runs inside a workspace. `add`, `sync` and `create` ask for
34
35
  confirmation in a terminal; pass `-y`/`--yes` in scripts. `sync --check`
@@ -61,7 +62,8 @@ the files a given agent needs, for the agents the team declares in
61
62
  `../../.rness` in `permissions.additionalDirectories`, so a session in the
62
63
  repository reads the context repository without a prompt. Claude Code
63
64
  applies it once the repository has been trusted interactively. Verified
64
- with Claude Code 2.1.284 on 2026-09-29.
65
+ with Claude Code 2.1.284 on 2026-09-29. Each clone also gets `.mcp.json`,
66
+ which registers the MCP server; see "MCP server".
65
67
  - rness owns values, not files: what is missing is added, nothing else is
66
68
  touched, and a file it cannot parse is reported, never rewritten.
67
69
  `sync --check` and `validate` report a missing value. Removing an agent
@@ -69,6 +71,38 @@ the files a given agent needs, for the agents the team declares in
69
71
  - Other agents (Codex, Cursor, GitHub Copilot) read the `AGENTS.md` block;
70
72
  `sync` refuses an agent it has no target for.
71
73
 
74
+ ### MCP server
75
+
76
+ rness mcp # started by the agent over stdio, not by hand
77
+
78
+ A local, read-only MCP server over the workspace's `.rness/`, for an agent to
79
+ find what applies to the repository it works in and where a subject was
80
+ decided:
81
+
82
+ | Tool | Returns |
83
+ | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
84
+ | `rness_context({ scope? })` | the scope of the working directory (or the one named) and what applies to it: standards, decisions, specifications, plans — id, status, title, path |
85
+ | `rness_list({ collection, status? })` | every document of a collection, across scopes, optionally of one status |
86
+ | `rness_read({ path })` | one file of `.rness/`, 256 KiB at most; nothing outside it |
87
+ | `rness_search({ query, collection? })` | the documents that match, most matching first, with the matching lines |
88
+
89
+ - MCP over stdio, one message per line: the `2026-07-28` revision and the
90
+ earlier ones that open with `initialize` (`2025-11-25` back to
91
+ `2024-11-05`). No MCP SDK, no added dependency.
92
+ - `.rness/` is read again on each call, so an edit shows at once. Nothing is
93
+ written.
94
+ - With `claude` in `agents`, `sync` registers it in each clone:
95
+ `.mcp.json` gets `mcpServers.rness`, which runs the pinned copy
96
+ (`node ../../.rness/node_modules/@rness/cli/dist/bin/rness.js mcp`), and
97
+ `.claude/settings.json` lists `rness` in `enabledMcpjsonServers`. A
98
+ team's own `rness` entry is left as it is.
99
+ - Verified with Claude Code 2.1.284 on 2026-09-29: the server starts from the
100
+ repository and its tools answer. Not verified yet: that
101
+ `enabledMcpjsonServers` spares the approval prompt in an interactive
102
+ session.
103
+ - Another agent can run the same command from a clone; rness writes no
104
+ configuration for it.
105
+
72
106
  ### Log in
73
107
 
74
108
  rness login # shows a code and https://github.com/login/device
@@ -138,7 +172,7 @@ dependency does this: `util.styleText`, and a banner kept as a constant.
138
172
  ### Upgrade
139
173
 
140
174
  rness upgrade # the latest release; `rness upgrade 0.5.0` for another
141
- npx @rness/cli@latest upgrade # your global rness is older than the pin, or the pin is below 0.5.0
175
+ npx @rness/cli@latest upgrade # your global rness is below 0.8.0, or the pin is below 0.5.0
142
176
  pnpm rness upgrade # inside .rness: the pinned copy merges its own scaffold
143
177
 
144
178
  The version is written in one place, `.rness/package.json`. `upgrade` pins it
@@ -191,9 +225,10 @@ now names; `rness validate` warns while it is behind.
191
225
  drops the scaffold commit, and the next upgrade falls back to an older base.
192
226
 
193
227
  `upgrade` is never delegated to the pinned copy, which is what it replaces
194
- — so it runs the copy you typed. A global `rness` older than the pin answers
195
- "already at" and merges no scaffold: use the `npx` form, or the pinned copy
196
- from inside `.rness`. A workspace pinned below 0.5.0, whose copy has no such
228
+ — so it runs the copy you typed. From 0.8.0, a global `rness` older than the
229
+ pin merges the scaffold of the copy installed in `.rness`. A global below
230
+ 0.8.0 knows no scaffold: it answers "already at" and merges nothing — use the
231
+ `npx` form, or the pinned copy from inside `.rness`. A workspace pinned below 0.5.0, whose copy has no such
197
232
  command, starts with the `npx` form.
198
233
 
199
234
  An upgrade touches `.rness` only: a generated block is current when its hash
@@ -203,6 +238,28 @@ its content does.
203
238
  Exit codes: 0 success, 1 failure, 2 usage — or a refusal without a TTY.
204
239
  `RNESS_DEBUG=1` adds stack traces; `RNESS_NO_DELEGATE=1` skips the delegation.
205
240
 
241
+ ## 0.9.0 — the context on demand: `rness mcp`
242
+
243
+ - `rness mcp`: a local, read-only MCP server with four tools —
244
+ `rness_context`, `rness_list`, `rness_read`, `rness_search`. See "MCP
245
+ server".
246
+ - The Claude target registers it: each clone gets `.mcp.json`
247
+ (`mcpServers.rness`) and `rness` in `enabledMcpjsonServers` of
248
+ `.claude/settings.json`. After upgrading, run `rness sync` once and commit
249
+ both files in each repository; until then `sync --check` and `validate`
250
+ report them missing.
251
+ - Blocks are unchanged.
252
+
253
+ ## 0.8.1 — adoption without placeholders
254
+
255
+ - Adopting the scaffold no longer adds a `.gitkeep` to a directory that
256
+ already holds files (`specs/`, `plans/` of a workspace older than
257
+ `create`).
258
+ - In a terminal, `upgrade` says "Merging the @rness/cli 0.8.0 scaffold"
259
+ instead of "the @rness/cli 0.8.0 scaffold merging".
260
+ - A test now pins what 0.8.0 already did: a global `rness` older than the pin
261
+ merges the scaffold of the copy installed in `.rness`.
262
+
206
263
  ## 0.8.0 — upgrade merges the scaffold
207
264
 
208
265
  - `rness upgrade` merges the target version's scaffold into `.rness` with
package/dist/bin/rness.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  findDelegate,
7
7
  reportError,
8
8
  run
9
- } from "../chunk-VQMX52HT.js";
9
+ } from "../chunk-DL72BCPT.js";
10
10
 
11
11
  // src/bin/rness.ts
12
12
  import { pathToFileURL } from "url";