@hypercarrier/rarebit 0.1.0-alpha.6 → 0.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.1 — 2026-09-29
4
+
5
+ - Move Recap into the scrollable transcript using native custom-entry renderers,
6
+ preserving its muted styling. Retain the widget fallback for older Pi hosts.
7
+ - Request 1–2 sentences and at most 300 characters in the default Summary prompt.
8
+ - Add `Ctrl+Alt+G` and `/rarebit got-it` to persist branch-local recap read
9
+ checkpoints. Subsequent summaries emphasize changes beyond recap coverage.
10
+ - Reuse native Recaps for the same receipt and coverage, including after read
11
+ acknowledgement and resume. Validate read markers against branch evidence.
12
+ - Keep conversation evidence beside read metadata when Summary input is trimmed.
13
+ - Promote newer manual assessments after settlement. Preserve active requests
14
+ until an agent-settled assessment closes them.
15
+ - Display current request-prefix Recaps with their exact receipt coverage.
16
+ Revalidate live branch state after asynchronous reads.
17
+ - Report explicit Summary outcomes even when automatic notices are disabled.
18
+ - Shorten Recap headers to numeric date, 24-hour time, and GMT offset. Keep
19
+ the got-it action inline.
20
+ - Include a native fullscreen renderer probe documenting Pi 0.84.2's mouse-input
21
+ limitation; the read affordance currently supports keyboard activation.
22
+
23
+ ## 0.2.0 — 2026-09-27
24
+
25
+ - Add the `/rarebit` action palette and tabbed `/rarebit settings` editor.
26
+ - Add a configurable `summary_prompt` for Summary format and length. Preserve
27
+ paragraphs and bullets; reject oversized output instead of silently cutting it.
28
+ - Show the complete Recap in a muted, labelled TUI section. Remove
29
+ `/rarebit recap expand`.
30
+ - Keep Recap outside Session messages and model context. Typing preserves it;
31
+ submitted input, new turns, and Session or branch changes clear it.
32
+ - Default Summary diagnostics to off, support host or explicit IANA timezones,
33
+ and expose the estimated Summary input budget in settings.
34
+ - Include a complete example config in `docs/examples/rarebit.settings.json`.
35
+
3
36
  ## 0.1.0-alpha.6 — 2026-09-21
4
37
 
5
38
  - Add bounded `/rarebit fork` and CLI fork flows with native Pi headroom checks.
@@ -8,9 +41,6 @@
8
41
  - Keep read-only package commands usable without optional Pi host peers; fork
9
42
  runtime loads the Pi adapter only when needed.
10
43
 
11
- This is an unpublished release candidate. Intended npm routing after
12
- publication is `next=alpha.6`; `latest` remains `alpha.4`.
13
-
14
44
  ## 0.1.0-alpha.5 — 2026-08-16
15
45
 
16
46
  - Repair Pi 0.84.2 Summary calls to use the active Pi model runtime. The
package/README.md CHANGED
@@ -1,183 +1,357 @@
1
1
  # Rarebit
2
2
 
3
- `@hypercarrier/rarebit` recovers decision-bearing conversational evidence from
4
- one persisted Pi Session. It deterministically selects readable user messages
5
- and assistant continuation or stop prose on the active branch. It excludes tool
6
- payloads, tool results, and hidden reasoning.
7
-
8
- Rarebit is public alpha software. Its CLI output, exports, sidecar protocol,
9
- and visual language can change. It is not a Task, Project, runtime, priority,
10
- attention, or delivery authority. Native Pi Session JSONL remains the evidence
11
- authority.
12
-
13
- Alpha.6 is an unpublished release candidate. It adds bounded Rarebit fork
14
- flows, PiQ recovery, machine-only lineage, and Pi-native headroom checks.
15
- Intended npm routing after publication is `next=alpha.6`; `latest` remains
16
- `alpha.4`. Published alpha.5 repairs Pi 0.84.2 Summary calls by using the
17
- active Pi model runtime. Its durable publication evidence is the
18
- [alpha.5 release receipt](release/v0.1.0-alpha.5-release-receipt.md).
19
-
20
- The old alpha.1, alpha.2, and alpha.3 tag graphs remain public and are not
21
- privacy-clean. Existing package versions, tags, and releases remain immutable.
22
- The source-only candidate derivation and vendored-scanner binding is
23
- [`release/privacy-lineage.v1.json`](release/privacy-lineage.v1.json). It is
24
- excluded from npm and does not claim publication completion.
3
+ [![Rarebit: catch up on a long Pi session](https://raw.githubusercontent.com/deephbz/rarebit/main/brand/assets/banner.svg)](https://deephbz.github.io/rarebit)
4
+
5
+ **[Rarebit website](https://deephbz.github.io/rarebit)**
6
+
7
+ ## Watch the demo
8
+
9
+ [![Watch the one-minute Rarebit demo](https://raw.githubusercontent.com/deephbz/rarebit/main/brand/promo-video/preview.jpg)](https://github.com/deephbz/rarebit/releases/download/v0.2.0/rarebit-promo.mp4)
10
+
11
+ [Play the video inline in the release notes](https://github.com/deephbz/rarebit/releases/tag/v0.2.0#watch-the-demo)
12
+ · [Download the MP4](https://github.com/deephbz/rarebit/releases/download/v0.2.0/rarebit-promo.mp4)
13
+
14
+ Rarebit helps you catch up on a long Pi session without rereading its tool
15
+ traffic. It selects original messages from the active branch so you can read the
16
+ conversation, ask an agent to use it, or start a focused new Session. The
17
+ original Pi Session stays intact.
25
18
 
26
- ## Install
19
+ Rarebit is public alpha software. Its CLI output, exports, sidecar protocol, and
20
+ visual language can change.
27
21
 
28
- Use Node 22 or later and Pi 0.83 or later. Install it in Pi from npm:
22
+ ## Start here
23
+
24
+ Three outcomes cover the useful path:
25
+
26
+ - **Catch up** — read selected conversational prose from the active branch.
27
+ - **Recall** — let an agent read that same selection for one request.
28
+ - **Fork** — start a fresh native Pi Session from a bounded newest suffix.
29
+
30
+ Install Rarebit and make the first deterministic, zero-model extraction:
29
31
 
30
32
  ```sh
31
- pi install npm:@hypercarrier/rarebit@0.1.0-alpha.6
32
- pi list
33
+ # In a shell, install the extension in Pi, then restart Pi to load it.
34
+ pi install npm:@hypercarrier/rarebit@0.2.0
35
+
36
+ # Install the CLI in the Node project where you will run it.
37
+ npm install @hypercarrier/rarebit@0.2.0
38
+ npm exec -- rarebit extract \
39
+ --session /absolute/path/to/session.jsonl --json > selected-prose.json
33
40
  ```
34
41
 
35
- For a local checkout, Pi loads a directory without copying it:
42
+ Replace the example path with an exact Pi Session JSONL path or supported Session
43
+ identifier. Pi normally stores Session JSONL below `~/.pi/agent/sessions/`.
44
+ Open `selected-prose.json` to catch up on the conversation. Then
45
+ choose Recall or Fork when you need an agent request or a fresh Session.
36
46
 
37
- ```sh
38
- pi install /absolute/path/to/rarebit
39
- pi list
47
+ Summary and Title are optional model-derived projections. Recap only displays
48
+ an existing Summary in the Pi TUI.
49
+
50
+ ## The product in one view
51
+
52
+ ```text
53
+ long Pi Session
54
+ └─ Distill: selected active-branch prose
55
+ ├─ Catch up: read the conversation
56
+ ├─ Recall: let an agent use the selection for one request
57
+ ├─ Fork: start a new native Pi Session from a bounded suffix
58
+ └─ Summary / Title: optional model-derived projections
59
+ └─ Recap: show an existing Summary in the Pi TUI
40
60
  ```
41
61
 
42
- The package imports Pi's bundled `@earendil-works/pi-ai` as a peer dependency.
43
- Do not install or bundle a second Pi core. Pi packages execute with your user
44
- permissions, so review source before installation.
62
+ ### 1. Catch up and distill
45
63
 
46
- To use the CLI in a normal Node project, install it and invoke the local bin
47
- with npm:
64
+ Rarebit selects these occurrences from one exact active branch:
48
65
 
49
- ```sh
50
- npm install @hypercarrier/rarebit@0.1.0-alpha.6
51
- npm exec -- rarebit --help
66
+ - readable user messages;
67
+ - assistant prose at a continuation boundary;
68
+ - assistant prose at a normal stop boundary.
69
+
70
+ It excludes tool-call inputs, tool results, hidden reasoning, and transport
71
+ records. Selection is deterministic. It is not model summarization. Each
72
+ selected occurrence keeps its source entry, branch position, role, outcome,
73
+ timestamp when available, and lineage.
74
+
75
+ ### 2. Recall for the agent
76
+
77
+ In Pi, run:
78
+
79
+ ```text
80
+ /rarebit recall What decisions and open questions should guide the next turn?
52
81
  ```
53
82
 
54
- ## First query and extract
83
+ Recall writes a private conversation view and a detailed lineage view, then
84
+ sends one user-message envelope with your request and both file references. The
85
+ agent reads those referenced files through its configured model provider. The
86
+ files are private on local disk, but Rarebit makes no provider-privacy claim;
87
+ apply your provider's policy. An idle Pi starts one turn. A busy Pi queues one
88
+ steering message. Recall does not create a durable Recall record or a second
89
+ follow-up message.
55
90
 
56
- Give the CLI an exact Session JSONL path or supported Pi Session identifier.
57
- `query` returns metadata only. `extract` returns selected raw Session prose.
91
+ For agent workflows outside the Pi TUI, use the CLI's `extract` operation. It
92
+ is the CLI catch-up interface; there is no CLI `recall` command:
58
93
 
59
94
  ```sh
60
- npm exec -- rarebit query --session /absolute/path/to/session.jsonl --json
61
- npm exec -- rarebit extract --session /absolute/path/to/session.jsonl --json
95
+ npm exec -- rarebit extract \
96
+ --session /absolute/path/to/session.jsonl --json > selected-prose.json
62
97
  ```
63
98
 
64
- The Pi extension adds `/rarebit` controls after installation. It has `status`,
65
- `config`, `auto-title`, `title`, `summarize`, `recall`, and `fork` subcommands.
99
+ Treat that output as sensitive. It contains selected raw prose.
100
+
101
+ ### 3. Fork as a distilled native fork
66
102
 
67
- `/rarebit fork` validates the newest contiguous Rarebit suffix, writes a new
68
- Session in Pi's Session store for the current working directory, and switches
69
- to it without starting a model turn. Use `/rarebit fork --max-token-length 64000` to set the
70
- imported prose budget. Imported messages keep their roles and source outcomes,
71
- use zero usage, and carry machine-only lineage. The generated opening message
72
- records source ID/path/leaf, target directory, coverage, and the read-only PiQ
73
- recovery command. Legacy source entries retain `(sessionId, sourceOrder)` when
74
- native entry IDs are absent; Rarebit does not migrate those sources.
103
+ Fork creates a new native Pi Session from the newest contiguous suffix of the
104
+ selected active-branch prose. It does not summarize, deduplicate, or modify the
105
+ source. It does not start a model turn and does not transfer mutable Team, Task,
106
+ subscription, or extension state.
75
107
 
76
- The CLI performs the same operation without changing the caller's Session:
108
+ In Pi:
109
+
110
+ ```text
111
+ /rarebit fork
112
+ ```
113
+
114
+ From a shell, use the exact source Session path or ID:
77
115
 
78
116
  ```sh
79
- rarebit fork /absolute/source.jsonl
80
- rarebit fork /absolute/source.jsonl --max-token-length 64000 --no-launch
117
+ npm exec -- rarebit fork /absolute/path/to/session.jsonl
118
+ npm exec -- rarebit fork /absolute/path/to/session.jsonl \
119
+ --max-token-length 64000 --no-launch --json
81
120
  ```
82
121
 
83
- The first form launches Pi in the invocation working directory. The second
84
- returns JSON for automation. Fork mode requires an installed Pi coding-agent
85
- peer; read-only query, extract, and PiQ commands do not. Use `piq entries
86
- --session <path>` to read omitted native evidence without writing or migrating
87
- the source.
122
+ The default import budget is 64,000 estimated tokens. Fork keeps whole
123
+ occurrences in branch order. If the newest occurrence cannot fit, it refuses
124
+ with an actionable error. The new Session contains machine-readable source
125
+ lineage and a recovery route. It does not promise complete context transfer.
88
126
 
89
- ## Model setup and optional derivations
127
+ Use `piq` to inspect source evidence that the bounded fork omitted:
90
128
 
91
- Summary and Title use a dedicated configured model. They never inherit Pi's
92
- interactive `defaultModel`. Put this in global Pi settings, or in a trusted
93
- project's `.pi/settings.json`:
129
+ ```sh
130
+ npm exec -- piq entries --session /absolute/path/to/session.jsonl
131
+ ```
94
132
 
95
- ```json
96
- {
97
- "rarebit": {
98
- "model": "provider/model",
99
- "min_total_length": 80000,
100
- "max_rarebit_ratio": 0.4,
101
- "auto_title": true
102
- }
103
- }
133
+ PiQ is read-only JSONL output for `jq`. It does not classify Rarebits, mutate a
134
+ Session, invoke a model, or migrate legacy entries.
135
+
136
+ ### 4. Summary, Title, and Recap
137
+
138
+ Summary and Title are optional derivations over the selected evidence. Recap is
139
+ a presentation of an existing Summary, not a derivation.
140
+
141
+ - **Summary** is a lossy, model-derived Session assessment. It can describe
142
+ what appears finished or needs attention in the selected prose. It is not
143
+ proof of completed work.
144
+ - **Title** is a mutable label proposal derived from a suitable user message.
145
+ - **Recap** presents the current Summary in the Pi TUI. It reads an existing
146
+ receipt and does not generate a Summary.
147
+
148
+ Use the Pi commands for a derivation or presentation:
149
+
150
+ ```text
151
+ /rarebit summarize
152
+ /rarebit title
153
+ /rarebit recap
154
+ /rarebit got-it
104
155
  ```
105
156
 
106
- Then request explicit model work when you want it:
157
+ The CLI exposes the same model operations for an exact Session:
107
158
 
108
159
  ```sh
109
- npm exec -- rarebit summarize --session /absolute/path/to/session.jsonl --json --force
110
- npm exec -- rarebit title --session /absolute/path/to/session.jsonl --json
160
+ npm exec -- rarebit summarize \
161
+ --session /absolute/path/to/session.jsonl --json --force
162
+ npm exec -- rarebit title \
163
+ --session /absolute/path/to/session.jsonl --json
111
164
  ```
112
165
 
113
- A Summary is a lossy assessment of an identified selection. It can report only
114
- Session-scoped appearance, not completed Project or Task work. A Title is a
115
- mutable label proposal, not Session identity. Automatic Summary work runs only
116
- at persisted direct-input or settled-agent boundaries and only when its policy
117
- permits it.
166
+ Summary and Title need a configured model. Query, extract, and PiQ inspection
167
+ do not need a model. Fork creation needs an installed Pi peer and a resolvable
168
+ target model context, but it does not invoke that model or start a turn.
118
169
 
119
- ## Privacy, local data, and provider egress
170
+ ## Continue from the first result
120
171
 
121
- Rarebit reads Pi Session JSONL locally and does not modify it. `extract` prints
122
- selected raw prose, so handle its output as sensitive.
172
+ 1. Install the pinned npm package in Pi and restart Pi. For a local checkout,
173
+ use `pi install /absolute/path/to/rarebit`.
174
+ 2. Read or automate against `selected-prose.json`. The deterministic path works
175
+ without a model.
176
+ 3. Run `/rarebit recall <request>` when the agent should read selected earlier
177
+ conversation for one request.
178
+ 4. Use `/rarebit fork` when a bounded, fresh Session is more useful than
179
+ continuing the original one.
180
+ 5. Add model configuration only when you need Summary or Title.
123
181
 
124
- Summary and Title send selected Rarebit prose to the provider and model that you
125
- configure. When input exceeds the fixed limit, Rarebit sends a newest suffix
126
- with an explicit omission marker. It does not send tool inputs, tool results,
127
- hidden reasoning, provider credentials, or HTTP headers as Rarebit content.
182
+ The package uses Pi's bundled `@earendil-works/pi-ai` peer. Do not install or
183
+ bundle a second Pi core. Pi packages run with your user permissions. Review
184
+ source before installation. Use `npm install @hypercarrier/rarebit@0.2.0` and
185
+ `npm exec -- rarebit --help` when you use the CLI from a normal Node project.
128
186
 
129
- Derived receipts live below `~/.pi/agent/rarebit/materializations-v4/`; job
130
- leases live below `~/.pi/agent/rarebit/jobs-v4/`. These directories use mode
131
- 0700 and their files use mode 0600. Receipts retain compact metadata but no
132
- selected prose, prompt, provider response body, headers, or credentials. They
133
- remain until you remove them. Session JSONL retention is controlled by Pi.
187
+ ## Scope and source
134
188
 
135
- ## First Recall
189
+ Native Pi Session JSONL remains the evidence authority. Rarebit does not own
190
+ Task, Project, runtime, priority, attention, or delivery state. A Summary is a
191
+ lossy Session assessment, not proof of completed Task or Project work. A Title
192
+ is a label proposal, and Recap only presents the current Summary.
136
193
 
137
- Run `/rarebit recall <prompt>` in a Pi Session. Rarebit writes the exact active
138
- branch selection to two private files: a conversation view and detailed
139
- lineage evidence. It then sends one atomic, human-readable Markdown user
140
- message containing your exact request and absolute pointers to both files.
194
+ ## Configure optional derivations
141
195
 
142
- When Pi is idle, that message starts one turn. When Pi is busy, it queues one
143
- steering message. Recall does not send a second follow-up, add a custom Session
144
- entry, or create a durable Recall receipt.
196
+ Copy the example from
197
+ [`docs/examples/rarebit.settings.json`](docs/examples/rarebit.settings.json)
198
+ into the `rarebit` object in global Pi settings
199
+ (`~/.pi/agent/settings.json`, or `$PI_CODING_AGENT_DIR/settings.json` when set)
200
+ or a trusted Project's `.pi/settings.json`. Preserve other settings.
145
201
 
146
- The temporary directory is mode 0700 and its JSON files are mode 0600. The
147
- files remain after the request so Pi can read them; delete the directory after
148
- the turn no longer needs it. Both files and the persisted Pi message are
149
- sensitive. Do not put their paths or content in a ticket.
202
+ ```json
203
+ {
204
+ "rarebit": {
205
+ "model": "provider/model",
206
+ "min_total_length": 80000,
207
+ "max_rarebit_ratio": 0.4,
208
+ "auto_title": true,
209
+ "max_input_tokens": 64000,
210
+ "summary_prompt": "State when evidence is uncertain, confusing, contradictory, or importantly missing.",
211
+ "diagnostics": {
212
+ "summary_triggered": false,
213
+ "summary_updated": false
214
+ },
215
+ "recap": {
216
+ "enabled": true,
217
+ "delay_ms": 60000,
218
+ "timezone": "host"
219
+ }
220
+ }
221
+ }
222
+ ```
223
+
224
+ Set `model` to a model available through your authenticated provider. Rarebit
225
+ uses this model for Summary and Title; it does not inherit Pi's interactive
226
+ `defaultModel`.
227
+
228
+ Use `/rarebit settings` to edit the dedicated namespace. The editor supports
229
+ global settings and a trusted Project override. Settings apply to future
230
+ operations. The default Summary prompt requests 1–2 sentences and at most 300
231
+ characters including spaces; this is model guidance, not an enforced truncation.
232
+ Existing custom prompts keep their own length guidance. The `summary_prompt` value changes Summary format and length, but
233
+ Rarebit still owns evidence handling and the structured status contract.
234
+
235
+ Automatic Summary work runs only at eligible persisted direct-input or settled-
236
+ agent boundaries. It also requires the configured minimum estimated Session
237
+ length and maximum selected-prose ratio. A Pi Session start does not trigger
238
+ synthesis. Explicit `/rarebit summarize` or `rarebit summarize --force` remains
239
+ available.
240
+
241
+ After successful materialization, Recap can offer the current Summary in the Pi
242
+ TUI after one minute by default. On Pi with `registerEntryRenderer` (tested on
243
+ 0.84.2), it appears in the scrollable transcript with the same muted border and
244
+ prose styling, and survives resume. Older Pi versions retain the pinned widget
245
+ fallback, which clears at input/turn/Session boundaries.
246
+
247
+ Press **Ctrl+Alt+G** or run `/rarebit got-it` to mark the latest displayed Recap
248
+ in the active branch as read. Its inline header affordance changes to `✓ got it`.
249
+ Native Session JSONL stores a read marker for the Recap receipt and covered
250
+ evidence cut. A request-prefix Recap ends at its receipt cut, before later
251
+ assistant prose. New messages remain unread. The next Summary includes the read
252
+ boundary and emphasizes later updates while still checking earlier unresolved
253
+ requests. Reading a Recap does not approve or complete work, and does not trigger
254
+ a model call. The marker is branch-local and survives resume. The read marker
255
+ is unavailable with the legacy widget fallback.
256
+
257
+ A manual `/rarebit summarize` reports when the Summary is current, already
258
+ current or in flight, generated but no longer current, or failed. These result
259
+ messages do not enable automatic Summary notices.
260
+
261
+ Mouse activation is not supported yet: Pi 0.84.2 consumes fullscreen mouse
262
+ input before extension listeners, so the affordance is a keyboard action.
263
+ Set `rarebit.recap.enabled` to `false`, change `delay_ms`, or set
264
+ `timezone` to `host` or an IANA zone such as `Asia/Hong_Kong`.
265
+
266
+ ## Privacy and local data
267
+
268
+ - Rarebit reads native Pi Session JSONL locally. Fork writes a new target
269
+ Session but never modifies the source Session.
270
+ - `query` returns metadata and selected occurrence identifiers. `extract`
271
+ returns selected raw prose on demand.
272
+ - Scrollable Recaps and read markers are stored as native custom Session entries.
273
+ They do not enter the main agent model context. Read-boundary metadata enters
274
+ subsequent Rarebit Summary requests.
275
+ - Summary and Title send selected prose to the provider and model you
276
+ configure. If the input exceeds `max_input_tokens`, Rarebit sends a newest
277
+ suffix with an explicit omission marker and coverage record.
278
+ - Rarebit does not send tool inputs, tool results, hidden reasoning, provider
279
+ credentials, or HTTP headers as Rarebit content.
280
+ - Derived receipts live below
281
+ `~/.pi/agent/rarebit/materializations-v4/`. Job leases live below
282
+ `~/.pi/agent/rarebit/jobs-v4/`. These directories use mode `0700`; their
283
+ files use mode `0600`.
284
+ - Receipts retain compact metadata, not selected prose, prompts, provider
285
+ response bodies, headers, or credentials. Receipts remain until you remove
286
+ them.
287
+ - Recall files are private OS-temporary JSON files. They contain selected
288
+ content and lineage and remain until you delete them after the turn no longer
289
+ needs them. The persisted Pi user message and both files are sensitive.
290
+
291
+ Pi controls Session JSONL retention. Do not put Session prose, credentials,
292
+ Recall files, or private paths in public issues.
150
293
 
151
294
  ## Update, uninstall, and rollback
152
295
 
153
- Pin alpha versions for reproducible installs:
296
+ Pin a version when you need reproducible installs:
154
297
 
155
298
  ```sh
156
- pi install npm:@hypercarrier/rarebit@0.1.0-alpha.6
299
+ pi install npm:@hypercarrier/rarebit@0.2.0
157
300
  pi remove npm:@hypercarrier/rarebit
158
301
  ```
159
302
 
160
- The exact-version install also moves an existing Rarebit npm installation to
161
- that pin. Pi skips versioned npm sources during package updates. Do not use an
162
- unpinned source for alpha.5 recovery: unpinned npm resolution follows the
163
- retained `latest`, which remains alpha.4.
303
+ A versioned npm install moves an existing Rarebit npm source to that pin. Pi
304
+ skips versioned npm sources during package updates. Restart Pi after an install
305
+ to load new extension code.
306
+
307
+ To roll back, reinstall a known version:
308
+
309
+ ```sh
310
+ pi install npm:@hypercarrier/rarebit@<version>
311
+ ```
164
312
 
165
- To roll back, reinstall a known version with `pi install npm:@hypercarrier/rarebit@<version>`.
166
313
  Removal stops package loading. It does not alter Pi Session JSONL or delete
167
- Rarebit sidecars, job leases, or Recall temp files. Remove retained local data
168
- only after you review it.
314
+ Rarebit sidecars, job leases, or Recall temporary files. Review retained local
315
+ data before removing it.
316
+
317
+ If you need source evidence after a fork or a bounded extraction, use the
318
+ read-only PiQ command:
319
+
320
+ ```sh
321
+ npm exec -- piq entries --session /absolute/path/to/session.jsonl
322
+ ```
323
+
324
+ For sidecar locks, leases, and recovery details, see [`RUNBOOK.md`](RUNBOOK.md).
169
325
 
170
326
  ## Compatibility and support
171
327
 
172
- This alpha supports Node 22+ and Pi 0.83.0 or later. Its Pi AI peer has no
173
- upper bound. The release gate runs Recall against Pi 0.83.0 and Pi 0.84.2. It
328
+ Rarebit supports Node 22+ and Pi 0.83.0 or later. Its Pi AI peer has no upper
329
+ bound. The release gate runs Recall against Pi 0.83.0 and Pi 0.84.2. Rarebit
174
330
  works as a deterministic CLI without a model. Summary, Title, and the Pi
175
331
  extension require a compatible Pi installation and configured provider
176
332
  credentials.
177
333
 
178
- Report security issues privately as described in [SECURITY.md](SECURITY.md).
179
- Use https://github.com/deephbz/rarebit/issues for normal support. Include no
180
- Session prose, credentials, or Recall files in public reports.
334
+ Report security issues privately as described in [`SECURITY.md`](SECURITY.md).
335
+ Use [GitHub Issues](https://github.com/deephbz/rarebit/issues) for normal
336
+ support. Include no Session prose, credentials, or Recall files in public
337
+ reports.
338
+
339
+ ## Release and source history
340
+
341
+ Rarebit is released from an immutable version tag by
342
+ [`.github/workflows/publish.yml`](.github/workflows/publish.yml). The workflow
343
+ runs package gates, verifies one packed artifact, scans that artifact, and
344
+ publishes it with npm provenance.
345
+
346
+ The old `alpha.1`, `alpha.2`, and `alpha.3` tag graphs remain public and are not
347
+ privacy-clean. Existing package versions, tags, and releases remain immutable.
348
+ The source-only candidate derivation and vendored-scanner binding is
349
+ [`release/privacy-lineage.v1.json`](release/privacy-lineage.v1.json). It is
350
+ excluded from npm and does not claim publication completion.
351
+
352
+ More detail:
181
353
 
182
- See [RUNBOOK.md](RUNBOOK.md) for recovery and sidecar details, and
183
- [VISUAL-LANGUAGE.md](VISUAL-LANGUAGE.md) for evidence-mark meaning.
354
+ - [Visual language](VISUAL-LANGUAGE.md) defines evidence marks and Summary
355
+ presentation.
356
+ - [Runbook](RUNBOOK.md) covers operator recovery and sidecars.
357
+ - [Rarebit website](https://deephbz.github.io/rarebit) introduces the product.
package/RUNBOOK.md CHANGED
@@ -1,20 +1,27 @@
1
1
  # Rarebit runbook
2
2
 
3
- This runbook applies to `0.1.0-alpha.6`. This candidate adds bounded fork
4
- flows, PiQ recovery, machine-only lineage, and Pi-native headroom checks. The
5
- published alpha.5 release repaired Pi 0.84.2 Summary calls. See
6
- [CHANGELOG.md](CHANGELOG.md) for release details.
3
+ Rarebit release automation lives in
4
+ [`.github/workflows/publish.yml`](.github/workflows/publish.yml). It validates
5
+ an immutable version tag, runs the package gates, verifies one packed artifact,
6
+ and publishes that artifact with npm provenance. See [CHANGELOG.md](CHANGELOG.md)
7
+ for product changes.
7
8
 
8
9
  Set `rarebit.model` in global Pi settings or in a trusted Project's
9
10
  `.pi/settings.json`. It must be `provider/model` or an object with `provider`
10
11
  and `id`. Rarebit fails closed when it is missing or invalid. It does not use
11
12
  Pi's interactive `defaultModel`.
12
13
 
13
- Install or move this package to the alpha.6 pin with
14
- `pi install npm:@hypercarrier/rarebit@0.1.0-alpha.6`. Pi treats versioned npm
15
- sources as pinned, so package update commands skip it. Do not use an unpinned
16
- source for alpha.6 recovery: unpinned npm resolution follows `latest`, which
17
- remains alpha.4. Run `pi remove npm:@hypercarrier/rarebit` to
14
+ Use `/rarebit settings` to edit the dedicated namespace. `summary_prompt`
15
+ changes the Summary text's format and length; the evidence and structured
16
+ status rules remain fixed. Remove the override to restore the built-in prompt.
17
+ If a response exceeds the 8,000-character safety limit, request a shorter
18
+ Summary in the prompt and run `/rarebit summarize` again. Oversized output
19
+ fails explicitly instead of producing a cut-off Recap.
20
+
21
+ Install or move this package to an exact version with
22
+ `pi install npm:@hypercarrier/rarebit@<version>`. Pi treats versioned npm
23
+ sources as pinned, so package update commands skip it. Run `pi remove
24
+ npm:@hypercarrier/rarebit` to
18
25
  stop loading it. These commands do not modify native Sessions or remove Rarebit
19
26
  retained data.
20
27
 
@@ -0,0 +1,19 @@
1
+ {
2
+ "rarebit": {
3
+ "model": "openai-codex/gpt-5.6-luna",
4
+ "min_total_length": 80000,
5
+ "max_rarebit_ratio": 0.4,
6
+ "auto_title": true,
7
+ "max_input_tokens": 64000,
8
+ "summary_prompt": "The summary is free-form prose. State when evidence is uncertain, confusing, contradictory, or importantly missing instead of inventing a coherent account.",
9
+ "diagnostics": {
10
+ "summary_triggered": false,
11
+ "summary_updated": false
12
+ },
13
+ "recap": {
14
+ "enabled": true,
15
+ "delay_ms": 60000,
16
+ "timezone": "host"
17
+ }
18
+ }
19
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypercarrier/rarebit",
3
- "version": "0.1.0-alpha.6",
3
+ "version": "0.2.1",
4
4
  "description": "Sparse, provenance-bearing conversational evidence recovery for Pi sessions.",
5
5
  "license": "MIT",
6
6
  "author": "HyperCarrier contributors",
@@ -29,6 +29,7 @@
29
29
  },
30
30
  "scripts": {
31
31
  "test": "node --test test/*.test.mjs",
32
+ "test:e2e:tui": "node scripts/e2e-v020-pi.mjs",
32
33
  "test:e2e:summary-cache": "node scripts/e2e-summary-cache.mjs",
33
34
  "test:e2e:recall": "node scripts/e2e-recall-pi0842.mjs",
34
35
  "test:e2e:recall:pi083": "node scripts/e2e-recall-pi083.mjs",
@@ -36,7 +37,8 @@
36
37
  },
37
38
  "peerDependencies": {
38
39
  "@earendil-works/pi-ai": ">=0.83.0",
39
- "@earendil-works/pi-coding-agent": ">=0.83.0"
40
+ "@earendil-works/pi-coding-agent": ">=0.83.0",
41
+ "@earendil-works/pi-tui": ">=0.83.0"
40
42
  },
41
43
  "peerDependenciesMeta": {
42
44
  "@earendil-works/pi-ai": {
@@ -44,10 +46,14 @@
44
46
  },
45
47
  "@earendil-works/pi-coding-agent": {
46
48
  "optional": true
49
+ },
50
+ "@earendil-works/pi-tui": {
51
+ "optional": true
47
52
  }
48
53
  },
49
54
  "devDependencies": {
50
55
  "@earendil-works/pi-coding-agent": "0.84.2",
56
+ "@earendil-works/pi-tui": "0.84.2",
51
57
  "ajv": "^6.15.0",
52
58
  "typescript": "^5.9.3"
53
59
  },
@@ -104,6 +110,7 @@
104
110
  "bin/piq.mjs",
105
111
  "src",
106
112
  "schemas",
113
+ "docs/examples/rarebit.settings.json",
107
114
  "scripts",
108
115
  "test",
109
116
  "README.md",