@medicine-wheel/app 0.15.0 → 0.15.2

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 (2) hide show
  1. package/README.md +88 -14
  2. package/package.json +25 -25
package/README.md CHANGED
@@ -10,8 +10,25 @@
10
10
 
11
11
  ## News
12
12
 
13
- The suite now includes an interactive app, CLI, MCP server, and PostgreSQL/Neon
14
- storage alongside its composable libraries.
13
+ 31 published packages: the app, 29 libraries and the MCP server (85 tools over
14
+ stdio and StreamableHTTP).
15
+
16
+ Recently landed:
17
+
18
+ - **`@medicine-wheel/client`** — one typed HTTP door to a running wheel, with
19
+ the wheel's paging honesty carried through to the caller.
20
+ - **`@medicine-wheel/community-identity`** — who is in the circle: people,
21
+ roles, circles, memberships, invitations and self-issued credentials.
22
+ - **`@medicine-wheel/honcho`** — the wheel's projection into
23
+ [Honcho](https://honcho.dev). Set `HONCHO_URL` and every stored beat,
24
+ ceremony and diary entry projects on write.
25
+ - **A ceremony knows its episode, its circle and what it closes**, and a beat
26
+ knows who spoke and who witnessed.
27
+ - **Read routes page honestly** — `count`, `total`, `matched`, `truncated`
28
+ instead of a silently cut list — and `GET /api/nodes/{id}/web` serves one
29
+ node's neighbourhood.
30
+ - **An episodes surface and a lineage layout** in the app: the chronicle as a
31
+ spine you read left to right.
15
32
 
16
33
 
17
34
  ## Architecture
@@ -21,6 +38,7 @@ storage alongside its composable libraries.
21
38
  ├── @medicine-wheel/ceremony-protocol ← Ceremony state & governance
22
39
  ├── @medicine-wheel/fire-keeper ← Ceremony coordination agent
23
40
  ├── @medicine-wheel/community-review ← Elder review & consensus
41
+ ├── @medicine-wheel/community-identity ← People, roles, circles, memberships
24
42
  ├── @medicine-wheel/consent-lifecycle ← Relational consent lifecycle
25
43
  ├── @medicine-wheel/narrative-engine ← Beat sequencing & arc validation
26
44
  ├── @medicine-wheel/importance-unit ← Relational unit of knowledge
@@ -30,6 +48,7 @@ storage alongside its composable libraries.
30
48
  ├── @medicine-wheel/relational-query ← Query, traversal & audit
31
49
  ├── @medicine-wheel/prompt-decomposition ← Intent extraction & PDE
32
50
  ├── @medicine-wheel/ui-components ← React components
51
+ ├── @medicine-wheel/client ← Typed HTTP door to a running wheel
33
52
  ├── @medicine-wheel/data-store ← Shared data access (Redis)
34
53
  ├── @medicine-wheel/data-store-postgres ← PostgreSQL / Neon provider scaffold
35
54
  ├── @medicine-wheel/storage-provider ← Canonical persistence contract (JSONL ⇄ Neon)
@@ -85,6 +104,11 @@ Community-based ceremonial review protocol — implements Wilson's validation th
85
104
 
86
105
  - **Dependencies:** `@medicine-wheel/ontology-core`, `@medicine-wheel/ceremony-protocol`, `zod`
87
106
 
107
+ ### [@medicine-wheel/community-identity](src/community-identity)
108
+ Who is in the circle, so a wheel can tell two people apart. A person is a `human` node with `metadata.kind: "person"` and a role, a circle is a `circle` node, membership is a `member_of` edge. Roles run `participant → emerging_guide → ceremony_facilitator → firekeeper → admin`, with `story_keeper` parallel to firekeeper and `companion_ai` / `integration_ai` beside them, each carrying a permission map. Invitations, credentials and the audit trail stay with the consumer — hashed, never on the wheel.
109
+
110
+ - **Dependencies:** `@medicine-wheel/ontology-core`, `zod`
111
+
88
112
  ### [@medicine-wheel/consent-lifecycle](src/consent-lifecycle)
89
113
  Ongoing relational consent lifecycle — consent as a living relational obligation with lifecycle tracking, renewal, renegotiation, withdrawal cascades, and community-level consent protocols.
90
114
 
@@ -132,6 +156,11 @@ React UI component library — `DirectionCard`, `BeatTimeline`, `NodeInspector`,
132
156
  - **Dependencies:** `@medicine-wheel/ontology-core`
133
157
  - **Peer:** `react`
134
158
 
159
+ ### [@medicine-wheel/client](src/client)
160
+ The typed HTTP door to a running wheel — nodes, edges, ceremonies, beats and the ceremonial diary. The wheel's paging honesty (`count`, `total`, `matched`, `truncated`) is carried through to the caller, `limit: 'all'` asks for the whole store, and errors fail fast: an unreachable wheel throws with status 502, a refusal carries the wheel's status and body. No retry.
161
+
162
+ - **Dependencies:** `@medicine-wheel/ontology-core`, `@medicine-wheel/storage-provider`
163
+
135
164
  ### [@medicine-wheel/data-store](src/data-store)
136
165
  Shared Redis data-access layer — connection management (Upstash, Vercel KV, local), Node/Edge/Ceremony/Accountability CRUD, session-ceremony linking, and generic Redis helpers.
137
166
 
@@ -206,36 +235,48 @@ Idea into committed design through approval gates a human holds — `explore →
206
235
 
207
236
  RISE framework specifications are in [`rispecs/`](rispecs/). Start with [`medicine-wheel.spec.md`](rispecs/medicine-wheel.spec.md) for the system overview.
208
237
 
209
- | Package | Spec |
238
+ | Package / topic | Spec |
210
239
  |---------|------|
211
240
  | System Overview | [medicine-wheel.spec.md](rispecs/medicine-wheel.spec.md) |
212
241
  | ontology-core | [ontology-core.spec.md](rispecs/ontology-core.spec.md) |
213
242
  | ceremony-protocol | [ceremony-protocol.spec.md](rispecs/ceremony-protocol.spec.md) |
214
243
  | fire-keeper | [fire-keeper.spec.md](rispecs/fire-keeper.spec.md) |
215
244
  | community-review | [community-review.spec.md](rispecs/community-review.spec.md) |
245
+ | community-identity | [community-identity.spec.md](rispecs/community-identity.spec.md) |
216
246
  | consent-lifecycle | [consent-lifecycle.spec.md](rispecs/consent-lifecycle.spec.md) |
217
- | narrative-engine | [narrative-engine.spec.md](rispecs/narrative-engine.spec.md) |
247
+ | narrative-engine | [narrative-engine.spec.md](rispecs/narrative-engine.spec.md) · [narrative-beats-lifecycle.spec.md](rispecs/narrative-beats-lifecycle.spec.md) |
218
248
  | importance-unit | [importance-unit.spec.md](rispecs/importance-unit.spec.md) |
219
249
  | relational-index | [relational-index.spec.md](rispecs/relational-index.spec.md) |
220
250
  | transformation-tracker | [transformation-tracker.spec.md](rispecs/transformation-tracker.spec.md) |
221
251
  | graph-viz | [graph-viz.spec.md](rispecs/graph-viz.spec.md) |
222
- | relational-query | [relational-query.spec.md](rispecs/relational-query.spec.md) |
223
- | prompt-decomposition | [prompt-decomposition.spec.md](rispecs/prompt-decomposition.spec.md) |
224
- | storage-provider | [storage-provider.spec.md](rispecs/storage-provider.spec.md) |
252
+ | relational-query | [relational-query.spec.md](rispecs/relational-query.spec.md) · [relational-web-package.spec.md](rispecs/relational-web-package.spec.md) |
253
+ | prompt-decomposition | [prompt-decomposition.spec.md](rispecs/prompt-decomposition.spec.md) · [decomposition-strategies.spec.md](rispecs/decomposition-strategies.spec.md) |
254
+ | ui-components | [ui-components.spec.md](rispecs/ui-components.spec.md) |
255
+ | client | [client.spec.md](rispecs/client.spec.md) |
256
+ | storage-provider | [storage-provider.spec.md](rispecs/storage-provider.spec.md) · [storage-provider-abstraction.spec.md](rispecs/storage-provider-abstraction.spec.md) |
225
257
  | data-store | [data-store.spec.md](rispecs/data-store.spec.md) |
226
258
  | data-store-postgres | [data-store-postgres.spec.md](rispecs/data-store-postgres.spec.md) |
227
- | perception-layer | [perception-layer.spec.md](rispecs/perception-layer.spec.md) |
228
- | narrative-cluster | [narrative-cluster.spec.md](rispecs/narrative-cluster.spec.md) |
229
259
  | session-reader | [session-reader.spec.md](rispecs/session-reader.spec.md) |
230
260
  | infra | [infrastructure-topology-ui.spec.md](rispecs/infrastructure-topology-ui.spec.md) |
231
- | ui-components | [ui-components.spec.md](rispecs/ui-components.spec.md) |
232
- | data-store | [data-store.spec.md](rispecs/data-store.spec.md) |
233
- | session-reader | [session-reader.spec.md](rispecs/session-reader.spec.md) |
261
+ | perception-layer | [perception-layer.spec.md](rispecs/perception-layer.spec.md) |
262
+ | narrative-cluster | [narrative-cluster.spec.md](rispecs/narrative-cluster.spec.md) |
263
+ | captures & recordings | [capture-registry.spec.md](rispecs/capture-registry.spec.md) |
264
+ | inquiry weaves | [inquiry-weave-registration.spec.md](rispecs/inquiry-weave-registration.spec.md) |
265
+ | plans & insights | [plan-insight-perspective-registration.spec.md](rispecs/plan-insight-perspective-registration.spec.md) |
266
+ | council & community | [council-record.spec.md](rispecs/council-record.spec.md) · [community-choice.spec.md](rispecs/community-choice.spec.md) |
267
+ | reading & scope | [reading-layer.spec.md](rispecs/reading-layer.spec.md) · [workspace-scope-and-access.spec.md](rispecs/workspace-scope-and-access.spec.md) |
268
+ | film production | [relational-production-protocol.spec.md](rispecs/relational-production-protocol.spec.md) · [film-production-upgrades.spec.md](rispecs/film-production-upgrades.spec.md) |
269
+ | kinship & bridges | [kinship-graph.spec.md](rispecs/kinship-graph.spec.md) · [narrative-medicine-wheel-bridge.spec.md](rispecs/narrative-medicine-wheel-bridge.spec.md) · [article-publishing-pipeline.spec.md](rispecs/article-publishing-pipeline.spec.md) |
234
270
 
235
271
  ## LLM Integration
236
272
 
237
273
  - [`llms.txt`](llms.txt) — Quick navigation for LLMs
238
274
  - [`llms-full.txt`](llms-full.txt) — Exhaustive reference with code samples
275
+ - [`CLAUDE.md`](CLAUDE.md) — Repo laws for agents: versioning, the topological
276
+ workspace order, what `mw skill run` does not do, and how a running service is
277
+ registered on the wheel
278
+ - [`RELEASING.md`](RELEASING.md) — Publishing is not deploying. Publish, install
279
+ globally, run the installed binary, then bump
239
280
 
240
281
  ## Getting Started
241
282
 
@@ -272,10 +313,43 @@ mwsrv --docker -D /src/myapp
272
313
  mw status
273
314
  mw directions
274
315
  mw node list
316
+ mw ceremony list
317
+ mw beat list
318
+ mw web <node-id> [depth] # one node's neighbourhood
319
+ mw chart list # structural tension charts
320
+ mw validate wilson "<description>" # validators (wilson, ocap, accountability, bridge)
321
+ mw orient "<outcome>" # the question asked before the work
322
+ ```
323
+
324
+ The `mw` CLI uses HTTP against the running server by default (`MW_API_URL`,
325
+ default `http://localhost:8040`); MCP fallback is available via a local
326
+ `MW_MCP_PATH`. `mw skill view` and `mw skill install` work with the shipped
327
+ skill definitions — `mw skill run` exits 3 by design, because the skills are
328
+ documents and there is no runtime that executes them.
329
+
330
+ ### MCP server
331
+ ```bash
332
+ # stdio — local JSONL store under .mw/store/
333
+ npx @medicine-wheel/mcp
334
+
335
+ # server-mediated store — the same relational state the app holds
336
+ MW_API_URL=http://localhost:8040 npx @medicine-wheel/mcp
337
+ ```
338
+
339
+ 85 tools over stdio and StreamableHTTP (`POST /api/mcp` on the running app).
340
+
341
+ ### Honcho projection (optional)
342
+ ```bash
343
+ HONCHO_URL=http://localhost:8133 # switches the river on
344
+ HONCHO_WORKSPACE_ID=medicine-wheel # default
345
+ # HONCHO_API_KEY when Honcho asks for auth
275
346
  ```
276
347
 
277
- The `mw` CLI uses HTTP against the running server by default; MCP fallback is
278
- available via a local `MW_MCP_PATH`.
348
+ With `HONCHO_URL` set, every stored beat, ceremony and diary entry projects into
349
+ Honcho on write, in the background. `GET /api/health` reports `honcho.enabled`.
350
+ A projection never delays the wheel's answer, and a Honcho that is down is a
351
+ line on stderr, not an error to the writer. A running server holds its old
352
+ build and its old environment — restart it for either to take effect.
279
353
 
280
354
  ## License
281
355
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medicine-wheel/app",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "description": "Medicine Wheel — Interactive visual layer for Indigenous relational research with Four Directions, ceremonies, and narrative arcs",
5
5
  "bin": {
6
6
  "mw": "dist/cli/mw.js",
@@ -89,30 +89,30 @@
89
89
  "release:major": "npm run version:major && npm run publish:all && npm run release:commit"
90
90
  },
91
91
  "dependencies": {
92
- "@medicine-wheel/ceremonial-diary": "^0.15.0",
93
- "@medicine-wheel/ceremony-protocol": "^0.15.0",
94
- "@medicine-wheel/community-review": "^0.15.0",
95
- "@medicine-wheel/consent-lifecycle": "^0.15.0",
96
- "@medicine-wheel/creative-orientation": "^0.15.0",
97
- "@medicine-wheel/data-store": "^0.15.0",
98
- "@medicine-wheel/data-store-postgres": "^0.15.0",
99
- "@medicine-wheel/fire-keeper": "^0.15.0",
100
- "@medicine-wheel/github-ceremony": "^0.15.0",
101
- "@medicine-wheel/graph-viz": "^0.15.0",
102
- "@medicine-wheel/honcho": "^0.15.0",
103
- "@medicine-wheel/importance-unit": "^0.15.0",
104
- "@medicine-wheel/mcp": "^4.15.0",
105
- "@medicine-wheel/narrative-cluster": "^0.15.0",
106
- "@medicine-wheel/narrative-engine": "^0.15.0",
107
- "@medicine-wheel/ontology-core": "^0.15.0",
108
- "@medicine-wheel/perception-layer": "^0.15.0",
109
- "@medicine-wheel/prompt-decomposition": "^0.15.0",
110
- "@medicine-wheel/relational-index": "^0.15.0",
111
- "@medicine-wheel/relational-query": "^0.15.0",
112
- "@medicine-wheel/session-reader": "^0.15.0",
113
- "@medicine-wheel/storage-provider": "^0.15.0",
114
- "@medicine-wheel/transformation-tracker": "^0.15.0",
115
- "@medicine-wheel/ui-components": "^0.15.0",
92
+ "@medicine-wheel/ceremonial-diary": "^0.15.2",
93
+ "@medicine-wheel/ceremony-protocol": "^0.15.2",
94
+ "@medicine-wheel/community-review": "^0.15.2",
95
+ "@medicine-wheel/consent-lifecycle": "^0.15.2",
96
+ "@medicine-wheel/creative-orientation": "^0.15.2",
97
+ "@medicine-wheel/data-store": "^0.15.2",
98
+ "@medicine-wheel/data-store-postgres": "^0.15.2",
99
+ "@medicine-wheel/fire-keeper": "^0.15.2",
100
+ "@medicine-wheel/github-ceremony": "^0.15.2",
101
+ "@medicine-wheel/graph-viz": "^0.15.2",
102
+ "@medicine-wheel/honcho": "^0.15.2",
103
+ "@medicine-wheel/importance-unit": "^0.15.2",
104
+ "@medicine-wheel/mcp": "^4.15.2",
105
+ "@medicine-wheel/narrative-cluster": "^0.15.2",
106
+ "@medicine-wheel/narrative-engine": "^0.15.2",
107
+ "@medicine-wheel/ontology-core": "^0.15.2",
108
+ "@medicine-wheel/perception-layer": "^0.15.2",
109
+ "@medicine-wheel/prompt-decomposition": "^0.15.2",
110
+ "@medicine-wheel/relational-index": "^0.15.2",
111
+ "@medicine-wheel/relational-query": "^0.15.2",
112
+ "@medicine-wheel/session-reader": "^0.15.2",
113
+ "@medicine-wheel/storage-provider": "^0.15.2",
114
+ "@medicine-wheel/transformation-tracker": "^0.15.2",
115
+ "@medicine-wheel/ui-components": "^0.15.2",
116
116
  "@neondatabase/serverless": "^0.10.0",
117
117
  "@xyflow/react": "^12.3.0",
118
118
  "clsx": "^2.1.1",