@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.
- package/README.md +88 -14
- package/package.json +25 -25
package/README.md
CHANGED
|
@@ -10,8 +10,25 @@
|
|
|
10
10
|
|
|
11
11
|
## News
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
|
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
|
-
|
|
|
232
|
-
|
|
|
233
|
-
|
|
|
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
|
-
|
|
278
|
-
|
|
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.
|
|
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.
|
|
93
|
-
"@medicine-wheel/ceremony-protocol": "^0.15.
|
|
94
|
-
"@medicine-wheel/community-review": "^0.15.
|
|
95
|
-
"@medicine-wheel/consent-lifecycle": "^0.15.
|
|
96
|
-
"@medicine-wheel/creative-orientation": "^0.15.
|
|
97
|
-
"@medicine-wheel/data-store": "^0.15.
|
|
98
|
-
"@medicine-wheel/data-store-postgres": "^0.15.
|
|
99
|
-
"@medicine-wheel/fire-keeper": "^0.15.
|
|
100
|
-
"@medicine-wheel/github-ceremony": "^0.15.
|
|
101
|
-
"@medicine-wheel/graph-viz": "^0.15.
|
|
102
|
-
"@medicine-wheel/honcho": "^0.15.
|
|
103
|
-
"@medicine-wheel/importance-unit": "^0.15.
|
|
104
|
-
"@medicine-wheel/mcp": "^4.15.
|
|
105
|
-
"@medicine-wheel/narrative-cluster": "^0.15.
|
|
106
|
-
"@medicine-wheel/narrative-engine": "^0.15.
|
|
107
|
-
"@medicine-wheel/ontology-core": "^0.15.
|
|
108
|
-
"@medicine-wheel/perception-layer": "^0.15.
|
|
109
|
-
"@medicine-wheel/prompt-decomposition": "^0.15.
|
|
110
|
-
"@medicine-wheel/relational-index": "^0.15.
|
|
111
|
-
"@medicine-wheel/relational-query": "^0.15.
|
|
112
|
-
"@medicine-wheel/session-reader": "^0.15.
|
|
113
|
-
"@medicine-wheel/storage-provider": "^0.15.
|
|
114
|
-
"@medicine-wheel/transformation-tracker": "^0.15.
|
|
115
|
-
"@medicine-wheel/ui-components": "^0.15.
|
|
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",
|