@pi-unipi/unipi 3.0.0 → 3.0.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +10 -134
  3. package/package.json +23 -23
  4. package/packages/app-bridge/package.json +2 -2
  5. package/packages/ask-user/package.json +2 -2
  6. package/packages/autocomplete/package.json +1 -1
  7. package/packages/background-tasks/package.json +2 -2
  8. package/packages/btw/package.json +2 -2
  9. package/packages/compactor/package.json +3 -3
  10. package/packages/core/README.md +4 -1
  11. package/packages/core/index.ts +1 -0
  12. package/packages/core/package.json +1 -1
  13. package/packages/core/src/settings/snapshot.ts +247 -0
  14. package/packages/dream/package.json +2 -2
  15. package/packages/footer/package.json +3 -3
  16. package/packages/fusion/package.json +4 -4
  17. package/packages/info-screen/package.json +2 -2
  18. package/packages/input-shortcuts/package.json +2 -2
  19. package/packages/kanboard/package.json +7 -7
  20. package/packages/long-horizon/README.md +1 -3
  21. package/packages/long-horizon/index.ts +131 -27
  22. package/packages/long-horizon/package.json +2 -2
  23. package/packages/long-horizon/src/owner.ts +33 -1
  24. package/packages/long-horizon/src/session-state.ts +366 -0
  25. package/packages/long-horizon/src/tools/graph.ts +10 -6
  26. package/packages/mcp/package.json +2 -2
  27. package/packages/memory/package.json +3 -3
  28. package/packages/notify/package.json +2 -2
  29. package/packages/skill-registry/package.json +2 -2
  30. package/packages/subagents/package.json +3 -3
  31. package/packages/subagents/src/index.ts +29 -5
  32. package/packages/unipi/bundled.js +950 -464
  33. package/packages/unipi/index.ts +18 -1
  34. package/packages/updater/package.json +2 -2
  35. package/packages/utility/package.json +2 -2
  36. package/packages/watchdog/package.json +3 -3
  37. package/packages/web-api/package.json +2 -2
  38. package/packages/workflow/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -6,9 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.0.1] — 2026-11-02
10
+
11
+ ### Fixed
12
+
13
+ - **A subagent profile created mid-turn works immediately.** The profile list was a snapshot taken at the start of each prompt, so an agent file written during a turn stayed invisible: `run_subagent` answered "Unknown profile" and graph work items naming it were refused. The next prompt — or `/reload` — was the only way to make it appear. The agent files are now re-read when a subagent starts and when the graph asks for the available profiles.
14
+ Do this: nothing.
15
+ - **A new session no longer adopts another session's goal, ralph loop, swarm or agent graph.** Long-horizon state is session-scoped now: `/new`, `/resume` of a different session, a new chat from the app and cron runs start clean instead of "repairing" (and re-running) the other session's in-flight work, waking and replying immediately. One run belongs to the session that started it. Resuming the session that started the run picks it up as before, and the first resume of the owning session picks up pre-3.0.1 runs (the old workspace-level files are adopted once, only when the session's own transcript proves it owned them). A new session in the same project gets a one-line note when another session holds a live graph — `/resume` it to follow it.
16
+ Do this: nothing. Old runs keep their state; resume the session that started them.
17
+
18
+ ### Added
19
+
20
+ - **pi publishes the settings catalog for the app's Settings → UniPi screen.** Every module's settings (defaults, types, scopes, enum options) are written to `~/.unipi/config/settings-schema.json` on mount and on each session start; the UniPi host serves them with the current config layers so the app can read and change pi's settings with no pi running. Secret values never leave the PC — the host reports only which keys are set.
21
+ Do this: update the app to 1.0.1 and start pi once after updating — the catalog is written on mount.
22
+
23
+ ### Changed
24
+
25
+ - **Graph and swarm show the profiles the model can pick.** `view_agent_graph` now lists `available_profiles`, and the orchestration prompts say that each work item's profile is a per-item choice (a read-only investigation uses `subagent_explore`, write-capable work uses `subagent_general` or a custom profile).
26
+ Do this: nothing.
27
+
9
28
  ## [3.0.0] — 2026-10-25
10
29
 
11
- UniPi 3.0 is the first stable release of the 3.x line. It replaces 2.20.5 as npm `latest`. Upgrade guide: [docs/guide/upgrade-3.0.md](docs/guide/upgrade-3.0.md).
30
+ UniPi 3.0 is the first stable release of the 3.x line. It replaces 2.20.5 as npm `latest`. Upgrade guide: [docs/guide/upgrade-3.0.md](https://github.com/Neuron-Mr-White/unipi/blob/main/docs/guide/upgrade-3.0.md).
12
31
 
13
32
  ### Highlights
14
33
 
package/README.md CHANGED
@@ -30,43 +30,15 @@
30
30
  pi install npm:@pi-unipi/unipi
31
31
  ```
32
32
 
33
- > [!NOTE]
34
- > **Coming from 2.x?** Read the [3.0 upgrade guide](docs/guide/upgrade-3.0.md).
35
- > On a 3.0 alpha? The updater offers 3.0.0 at session start, or run
36
- > `pi install npm:@pi-unipi/unipi` once to move off the `alpha` tag.
37
- > The 2.x line stays on the [`v2` branch](https://github.com/Neuron-Mr-White/unipi/tree/v2#readme).
38
-
39
- UniPi needs [Pi](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)
40
- `0.87.1` or later. This command installs 21 extension packages. Each package
41
- also works alone.
42
-
43
- > [!TIP]
44
- > **Windows:** web reads use a native module that needs the Microsoft Visual
45
- > C++ 2015-2022 runtime. Most Windows installs have it; slimmed images such as
46
- > tiny11 do not. Without it UniPi still loads and web reads fall back to plain
47
- > fetch. To install it, run
48
- > `winget install Microsoft.VCRedist.2015+.x64` or download
49
- > [vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist.x64.exe).
50
- > `/unipi:doctor` reports whether it is missing.
33
+ Needs [Pi](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) `0.87.1`+. Installs 21 packages; each also works alone. Coming from 2.x: [upgrade guide](docs/guide/upgrade-3.0.md).
51
34
 
52
35
  <p align="center">
53
36
  <img src="docs/assets/screenshots/simple-memory-glance.png" alt="A UniPi session in simple mode with memory recall, memory save and the glance footer">
54
37
  </p>
55
38
 
56
- This screenshot shows one turn in a demo session:
57
-
58
- - **Simple mode** (the default) shows each tool call as one line.
59
- - **Memory** finds the test setup from an earlier session and saves a new fact
60
- for later sessions.
61
- - **The glance footer** frames the input box. It shows the git branch, the
62
- mode, the context use and the model. The strip below it shows tokens in and
63
- out, cost, speed, turns, time and cache hits. It fits itself to the window:
64
- on a narrow screen the less important parts drop out first.
65
-
66
39
  ## Why UniPi
67
40
 
68
- Pi is a small coding agent for the terminal. It reads files, edits files and
69
- runs commands. UniPi adds the parts that a long session needs.
41
+ UniPi adds what long Pi sessions need.
70
42
 
71
43
  | UniPi gives you | How |
72
44
  |---|---|
@@ -85,8 +57,7 @@ runs commands. UniPi adds the parts that a long session needs.
85
57
 
86
58
  ## Proof
87
59
 
88
- Each feature below exists because published results support it. The numbers
89
- come from the linked sources. They are not UniPi benchmarks.
60
+ Published results behind each feature (not UniPi benchmarks).
90
61
 
91
62
  | Feature | Benchmark | Source |
92
63
  |---|---|---|
@@ -99,31 +70,14 @@ come from the linked sources. They are not UniPi benchmarks.
99
70
  | **Graph** | Up to 3.7× lower latency, 6.7× lower cost and about 9% higher accuracy than ReAct. | [LLMCompiler (ICML 2024)](https://arxiv.org/abs/2312.04511) |
100
71
  | **Prefix cache** | Up to 90% lower cost and 85% lower latency for long prompts. | [Anthropic prompt caching](https://claude.com/blog/prompt-caching) · [Modular handbook](https://handbook.modular.com/inference-optimization/prefix-caching/) · [our cache study](docs/deepseek-cache-rate-research.md) |
101
72
 
102
- Long work matters more each year. METR measured that the length of software
103
- tasks that agents can finish doubles about every 7 months
104
- ([METR](https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/)).
105
- UniPi gives these longer runs memory, budgets and a verifier.
106
-
107
- Two notes on the sources. OpenRouter's Fusion uses a panel of models and a
108
- judge. UniPi Fusion uses a lead and a sidekick. The Ralph numbers are a
109
- reported result, not a controlled benchmark.
110
-
111
- The [architecture pages](docs/architecture/README.md) show how each mechanism
112
- works in UniPi, with the limits from the source.
113
-
114
73
  ## Kanboard
115
74
 
116
- Kanboard is a task board for each project. You and the agent use the same
117
- board. The agent claims a task, works it, and sends it to review with a
118
- summary. You approve it or send it back with a note.
75
+ A task board per project, shared by you and the agent. The agent claims a task, works it and sends it to review.
119
76
 
120
77
  <p align="center">
121
78
  <img src="docs/assets/screenshots/kanboard-dashboard.png" alt="Kanboard dashboard: tasks waiting on you, running agents, ready tasks and a 14-day throughput chart">
122
79
  </p>
123
80
 
124
- The dashboard shows what needs you across all projects. You can approve a
125
- review or answer a blocked question in one click.
126
-
127
81
  <p align="center">
128
82
  <img src="docs/assets/screenshots/kanboard-board.png" alt="Kanboard board view with Backlog, Todo, In Progress, Blocked, In Review and Done lanes">
129
83
  </p>
@@ -134,68 +88,20 @@ review or answer a blocked question in one click.
134
88
  board writes.
135
89
  - Run `/unipi:kanboard-autowork start` to let the agent work every ready task.
136
90
 
137
- The screenshots use demo data. Read the [Kanboard README](packages/kanboard/README.md).
91
+ More: [Kanboard README](packages/kanboard/README.md).
138
92
 
139
93
  ## See your session: `/unipi:info`
140
94
 
141
- Pi starts. Unicrab says hello and gives you three facts: how fast Pi got
142
- ready, the session you came back to, and what you spent today. Then it goes
143
- away. It does not take your keys, so you can type your first prompt at once.
144
-
145
- <p align="center">
146
- <img src="docs/assets/screenshots/info-splash.png" width="760" alt="The Unicrab startup splash: mascot, UNIPI wordmark, version, ready time, resumed session and today's spend">
147
- </p>
148
-
149
- Run `/unipi:info` when you want the full picture. The first page is about
150
- **this session**. It answers the questions you ask during long work:
151
-
152
- - **What did this cost?** Cost, tokens, replies and time, in large digits.
153
- - **What fills my context?** A bucket shows each part in its own colour:
154
- system prompt, tool schemas, summaries, your prompts, replies and tool
155
- results. The edge of the bucket shows how full the window is. It turns
156
- amber at 70% and red at 90%.
157
- - **Which tool output is the heaviest?** The page names the three largest.
158
- - **Which tools failed?** Each tool gets a bar, and failures show in red.
95
+ Cost, context use, heaviest tool output, spend history and what compaction saved.
159
96
 
160
97
  <p align="center">
161
98
  <img src="docs/assets/screenshots/info-session.png" alt="The This session page: cost, tokens, replies, time, the context bucket, billed tokens and tools">
162
99
  </p>
163
100
 
164
- The other pages answer the questions that come later:
165
-
166
- | Page | It shows |
167
- |---|---|
168
- | Usage | Spend today, this week and this month, a 30-day chart, and the share of each model. |
169
- | Compactor | Tokens that compaction kept out of your requests, and the money that saved. |
170
- | Tools · Skills · Modules | What Pi loaded, where it came from, and what each UniPi module adds. |
171
- | MCP · Memory · Web · Updates · Keys | The state of each module. |
172
-
173
- <table>
174
- <tr>
175
- <td><img src="docs/assets/screenshots/info-usage.png" alt="The Usage page: spend tiles, a 30-day chart with the peak labelled, and models this month"></td>
176
- <td><img src="docs/assets/screenshots/info-compactor.png" alt="The Compactor page: money saved for this session, this project and all projects, and a without-versus-with bar"></td>
177
- </tr>
178
- </table>
179
-
180
- A small letter before a number tells you its scope: **`s`** is this session,
181
- **`p`** is this project and **`g`** is every project on this machine. Numbers
182
- from one project never show in another.
183
-
184
- How the Compactor page counts: each compaction makes the context smaller.
185
- Every reply after it sends that smaller context. The page multiplies the
186
- tokens removed by the number of replies that followed. Then it prices them at
187
- the rate you paid for context. A free model saves tokens but no money.
188
-
189
- Keys: `←`/`→` or `1`–`9` change the page, `r` refreshes it, `q` closes it.
190
- `/unipi:info usage` opens one page. The dashboard opens at once on cached
191
- numbers, then updates them in the background. The screenshots use demo data.
192
- Read the [Info Screen README](packages/info-screen/README.md).
101
+ More: [Info Screen README](packages/info-screen/README.md).
193
102
 
194
103
  ## Harness architecture
195
104
 
196
- UniPi adds these mechanisms to the Pi harness. Each page gives the problem, a
197
- diagram, the limits from the source, and the files to read.
198
-
199
105
  | Mechanism | Problem it solves |
200
106
  |---|---|
201
107
  | [Event bus](docs/architecture/event-bus.md) | 21 packages must work together without import-time coupling. |
@@ -231,33 +137,11 @@ flowchart LR
231
137
  | See and control | [Footer](packages/footer/README.md) · [Info Screen](packages/info-screen/README.md) · [Input Shortcuts](packages/input-shortcuts/README.md) · [Command Enchantment](packages/autocomplete/README.md) |
232
138
  | Maintain | [Utility](packages/utility/README.md) · [Updater](packages/updater/README.md) · [Core](packages/core/README.md) |
233
139
 
234
- The [docs index](docs/README.md#packages) gives one line and the npm name for
235
- each package.
236
-
237
140
  ## Meet Unicrab
238
141
 
239
142
  <img align="right" src="docs/assets/unicrab-pixel.png" width="120" alt="Unicrab pixel art">
240
143
 
241
- Unicrab is the UniPi mascot. It started as the author's pet crab. Now it says
242
- hello when Pi starts and leaves hints above the input box. Press `Alt+H` for the
243
- next hint, or run `/unipi:hint` to read all 127 of them.
244
-
245
- After an update, the first hint tells you what is new in that release.
246
-
247
- Read [The making of Unicrab](docs/story/unicrab.md): from a real crab, to pixel
248
- art, to a terminal character that is 7 columns wide.
249
-
250
- <p align="center">
251
- <img src="docs/assets/screenshots/unicrab-start.png" alt="The UniPi start screen with Unicrab in half-block pixel art">
252
- </p>
253
-
254
- ## What's new
255
-
256
- The recent releases, in short. The [changelog](CHANGELOG.md) has the details.
257
-
258
- | Release | What changed for you |
259
- |---|---|
260
- | 3.0.0 | The first stable UniPi 3. Long work modes, MemPalace memory, the new Kanboard, plan and permission modes, rebuilt subagents and compactor, and the UniPi app bridge. See the [upgrade guide](docs/guide/upgrade-3.0.md). |
144
+ The UniPi mascot. It says hello when Pi starts and leaves hints above the input (`Alt+H`, `/unipi:hint`). [The making of Unicrab](docs/story/unicrab.md).
261
145
 
262
146
  ## Docs
263
147
 
@@ -266,11 +150,6 @@ The recent releases, in short. The [changelog](CHANGELOG.md) has the details.
266
150
  - [Architecture](docs/architecture/README.md)
267
151
  - [All docs](docs/README.md)
268
152
 
269
- The docs use STE-flavored English
270
- ([ASD-STE100](https://www.asd-ste100.org/)): short sentences, active voice and
271
- one meaning for each word. The [style guide](docs/contributing/docs-style.md)
272
- gives the rules.
273
-
274
153
  ## Development
275
154
 
276
155
  ```bash
@@ -290,9 +169,7 @@ To add a package:
290
169
  `package.json`.
291
170
  5. Run `npm run typecheck` and `npm test`.
292
171
 
293
- Packages talk over events and shared state holders. Import from
294
- `@pi-unipi/core`, not from a peer package. The
295
- [event bus page](docs/architecture/event-bus.md) explains the rules.
172
+ Import from `@pi-unipi/core`, never from a peer package ([event bus](docs/architecture/event-bus.md)).
296
173
 
297
174
  ## Contributing
298
175
 
@@ -302,8 +179,7 @@ Packages talk over events and shared state holders. Import from
302
179
  4. Run `npm run typecheck` and `npm test`.
303
180
  5. Open a pull request.
304
181
 
305
- Keep one job in each package. For docs, follow the
306
- [style guide](docs/contributing/docs-style.md).
182
+ One job per package. Docs follow the [style guide](docs/contributing/docs-style.md).
307
183
 
308
184
  ## License
309
185
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/unipi",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "All-in-one extension suite for Pi coding agent",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -82,28 +82,28 @@
82
82
  "typebox": "^1.1.38"
83
83
  },
84
84
  "dependencies": {
85
- "@pi-unipi/app-bridge": "3.0.0",
86
- "@pi-unipi/ask-user": "3.0.0",
87
- "@pi-unipi/background-tasks": "3.0.0",
88
- "@pi-unipi/btw": "3.0.0",
89
- "@pi-unipi/command-enchantment": "3.0.0",
90
- "@pi-unipi/compactor": "3.0.0",
91
- "@pi-unipi/core": "3.0.0",
92
- "@pi-unipi/dream": "3.0.0",
93
- "@pi-unipi/footer": "3.0.0",
94
- "@pi-unipi/fusion": "3.0.0",
95
- "@pi-unipi/info-screen": "3.0.0",
96
- "@pi-unipi/input-shortcuts": "3.0.0",
97
- "@pi-unipi/kanboard": "3.0.0",
98
- "@pi-unipi/mcp": "3.0.0",
99
- "@pi-unipi/memory": "3.0.0",
100
- "@pi-unipi/notify": "3.0.0",
101
- "@pi-unipi/skill-registry": "3.0.0",
102
- "@pi-unipi/subagents": "3.0.0",
103
- "@pi-unipi/updater": "3.0.0",
104
- "@pi-unipi/utility": "3.0.0",
105
- "@pi-unipi/web-api": "3.0.0",
106
- "@pi-unipi/workflow": "3.0.0",
85
+ "@pi-unipi/app-bridge": "3.0.1",
86
+ "@pi-unipi/ask-user": "3.0.1",
87
+ "@pi-unipi/background-tasks": "3.0.1",
88
+ "@pi-unipi/btw": "3.0.1",
89
+ "@pi-unipi/command-enchantment": "3.0.1",
90
+ "@pi-unipi/compactor": "3.0.1",
91
+ "@pi-unipi/core": "3.0.1",
92
+ "@pi-unipi/dream": "3.0.1",
93
+ "@pi-unipi/footer": "3.0.1",
94
+ "@pi-unipi/fusion": "3.0.1",
95
+ "@pi-unipi/info-screen": "3.0.1",
96
+ "@pi-unipi/input-shortcuts": "3.0.1",
97
+ "@pi-unipi/kanboard": "3.0.1",
98
+ "@pi-unipi/mcp": "3.0.1",
99
+ "@pi-unipi/memory": "3.0.1",
100
+ "@pi-unipi/notify": "3.0.1",
101
+ "@pi-unipi/skill-registry": "3.0.1",
102
+ "@pi-unipi/subagents": "3.0.1",
103
+ "@pi-unipi/updater": "3.0.1",
104
+ "@pi-unipi/utility": "3.0.1",
105
+ "@pi-unipi/web-api": "3.0.1",
106
+ "@pi-unipi/workflow": "3.0.1",
107
107
  "@resvg/resvg-wasm": "^2.6.2",
108
108
  "beautiful-mermaid": "^1.1.3"
109
109
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/app-bridge",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Live bridge between a pi TUI session and the UniPi phone app — streaming chat, prompts, steering and dialogs from the phone",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "dependencies": {
34
- "@pi-unipi/core": "3.0.0"
34
+ "@pi-unipi/core": "3.0.1"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/ask-user",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Structured user input tool for Pi coding agent — single-select, multi-select, freeform",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -42,7 +42,7 @@
42
42
  "access": "public"
43
43
  },
44
44
  "dependencies": {
45
- "@pi-unipi/core": "3.0.0"
45
+ "@pi-unipi/core": "3.0.1"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/command-enchantment",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Enhanced TUI autocomplete for /unipi:* commands — colored, sorted, and grouped by package",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/background-tasks",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Background tasks for UniPi — durable shell jobs and delegated background agents with a footer dock",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@earendil-works/pi-ai": "^0.87.1",
13
- "@pi-unipi/core": "3.0.0",
13
+ "@pi-unipi/core": "3.0.1",
14
14
  "turndown": "^7.2.4"
15
15
  },
16
16
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/btw",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "A pi extension for parallel side conversations with /unipi:btw — part of the Unipi suite",
5
5
  "type": "module",
6
6
  "main": "extensions/btw.ts",
@@ -37,7 +37,7 @@
37
37
  "@earendil-works/pi-tui": "^0.87.1"
38
38
  },
39
39
  "dependencies": {
40
- "@pi-unipi/core": "3.0.0"
40
+ "@pi-unipi/core": "3.0.1"
41
41
  },
42
42
  "pi": {
43
43
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/compactor",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Compaction for Pi — lossless zero-LLM or model summaries, rebuilt from full history, with session recall",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -33,8 +33,8 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0",
37
- "@pi-unipi/info-screen": "3.0.0",
36
+ "@pi-unipi/core": "3.0.1",
37
+ "@pi-unipi/info-screen": "3.0.1",
38
38
  "@earendil-works/pi-agent-core": "^0.87.1"
39
39
  },
40
40
  "peerDependencies": {
@@ -11,7 +11,10 @@ file helpers, so packages work together without direct imports.
11
11
 
12
12
  - Defines the shared event names in `UNIPI_EVENTS` and module names in `MODULES`.
13
13
  - Gives the settings engine. Each module registers a namespace. The
14
- `/unipi:settings` hub shows all namespaces.
14
+ `/unipi:settings` hub shows all namespaces, and pi publishes the whole
15
+ catalog to `~/.unipi/config/settings-schema.json` so the UniPi app's
16
+ Settings → UniPi screen can show and change pi's settings (served by the
17
+ unipi-host; secret values stay on the PC).
15
18
  - Gives the state layout under `~/.unipi/`. Each module gets `global`, `config`,
16
19
  `state` and `session` folders.
17
20
  - Gives the turn arbiter, harness message metadata and the shared TUI kit.
@@ -41,6 +41,7 @@ export * from "./src/workspace/state-migration.js";
41
41
  export * from "./src/settings/paths.js";
42
42
  export * from "./src/settings/engine.js";
43
43
  export * from "./src/settings/schema.js";
44
+ export * from "./src/settings/snapshot.js";
44
45
  export { SettingsHub, type SettingsHubDeps } from "./src/settings/hub.js";
45
46
  export { openSettingsHub } from "./src/settings/open.js";
46
47
  export * from "./src/attach/detect.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/core",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Shared utilities, event types, and constants for Unipi extension suite",
5
5
  "type": "module",
6
6
  "license": "MIT",