@medicine-wheel/mcp 4.0.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.
Files changed (78) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +115 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/jsonl-store.d.ts +184 -0
  6. package/dist/jsonl-store.d.ts.map +1 -0
  7. package/dist/jsonl-store.js +393 -0
  8. package/dist/jsonl-store.js.map +1 -0
  9. package/dist/prompts/index.d.ts +3 -0
  10. package/dist/prompts/index.d.ts.map +1 -0
  11. package/dist/prompts/index.js +229 -0
  12. package/dist/prompts/index.js.map +1 -0
  13. package/dist/resources/index.d.ts +3 -0
  14. package/dist/resources/index.d.ts.map +1 -0
  15. package/dist/resources/index.js +252 -0
  16. package/dist/resources/index.js.map +1 -0
  17. package/dist/store.d.ts +15 -0
  18. package/dist/store.d.ts.map +1 -0
  19. package/dist/store.js +16 -0
  20. package/dist/store.js.map +1 -0
  21. package/dist/tools/ceremony-lifecycle.d.ts +10 -0
  22. package/dist/tools/ceremony-lifecycle.d.ts.map +1 -0
  23. package/dist/tools/ceremony-lifecycle.js +275 -0
  24. package/dist/tools/ceremony-lifecycle.js.map +1 -0
  25. package/dist/tools/coordination.d.ts +10 -0
  26. package/dist/tools/coordination.d.ts.map +1 -0
  27. package/dist/tools/coordination.js +136 -0
  28. package/dist/tools/coordination.js.map +1 -0
  29. package/dist/tools/discovery.d.ts +11 -0
  30. package/dist/tools/discovery.d.ts.map +1 -0
  31. package/dist/tools/discovery.js +552 -0
  32. package/dist/tools/discovery.js.map +1 -0
  33. package/dist/tools/east.d.ts +3 -0
  34. package/dist/tools/east.d.ts.map +1 -0
  35. package/dist/tools/east.js +271 -0
  36. package/dist/tools/east.js.map +1 -0
  37. package/dist/tools/epistemic.d.ts +10 -0
  38. package/dist/tools/epistemic.d.ts.map +1 -0
  39. package/dist/tools/epistemic.js +159 -0
  40. package/dist/tools/epistemic.js.map +1 -0
  41. package/dist/tools/governance-transformation.d.ts +10 -0
  42. package/dist/tools/governance-transformation.d.ts.map +1 -0
  43. package/dist/tools/governance-transformation.js +181 -0
  44. package/dist/tools/governance-transformation.js.map +1 -0
  45. package/dist/tools/integrations.d.ts +9 -0
  46. package/dist/tools/integrations.d.ts.map +1 -0
  47. package/dist/tools/integrations.js +643 -0
  48. package/dist/tools/integrations.js.map +1 -0
  49. package/dist/tools/north.d.ts +3 -0
  50. package/dist/tools/north.d.ts.map +1 -0
  51. package/dist/tools/north.js +436 -0
  52. package/dist/tools/north.js.map +1 -0
  53. package/dist/tools/reasoning-observability.d.ts +10 -0
  54. package/dist/tools/reasoning-observability.d.ts.map +1 -0
  55. package/dist/tools/reasoning-observability.js +90 -0
  56. package/dist/tools/reasoning-observability.js.map +1 -0
  57. package/dist/tools/south.d.ts +3 -0
  58. package/dist/tools/south.d.ts.map +1 -0
  59. package/dist/tools/south.js +295 -0
  60. package/dist/tools/south.js.map +1 -0
  61. package/dist/tools/structural-tension.d.ts +15 -0
  62. package/dist/tools/structural-tension.d.ts.map +1 -0
  63. package/dist/tools/structural-tension.js +695 -0
  64. package/dist/tools/structural-tension.js.map +1 -0
  65. package/dist/tools/west.d.ts +3 -0
  66. package/dist/tools/west.d.ts.map +1 -0
  67. package/dist/tools/west.js +313 -0
  68. package/dist/tools/west.js.map +1 -0
  69. package/dist/types.d.ts +28 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +9 -0
  72. package/dist/types.js.map +1 -0
  73. package/dist/validators/index.d.ts +3 -0
  74. package/dist/validators/index.d.ts.map +1 -0
  75. package/dist/validators/index.js +388 -0
  76. package/dist/validators/index.js.map +1 -0
  77. package/package.json +48 -0
  78. package/tsconfig.json +20 -0
@@ -0,0 +1,552 @@
1
+ /**
2
+ * Discovery Tools - Enable browsing and searching of medicine wheel data
3
+ *
4
+ * These tools address the gap: users couldn't find ceremonies, nodes, beats, or cycles
5
+ * without already knowing IDs. Discovery enables relational exploration.
6
+ *
7
+ * Adapted to use in-memory store instead of Redis/NCP.
8
+ */
9
+ import { store } from "../store.js";
10
+ export const discoveryTools = [
11
+ {
12
+ name: "list_relational_nodes",
13
+ description: "List all relational nodes in the medicine wheel memory. Filter by type or direction. Returns nodes sorted by creation date (newest first).",
14
+ inputSchema: {
15
+ type: "object",
16
+ properties: {
17
+ type: {
18
+ type: "string",
19
+ enum: ["human", "land", "spirit", "ancestor", "future", "knowledge"],
20
+ description: "Filter by node type (optional)",
21
+ },
22
+ direction: {
23
+ type: "string",
24
+ enum: ["east", "south", "west", "north"],
25
+ description: "Filter by medicine wheel direction (optional)",
26
+ },
27
+ limit: {
28
+ type: "number",
29
+ description: "Maximum nodes to return (default: 50)",
30
+ minimum: 1,
31
+ maximum: 200,
32
+ },
33
+ },
34
+ },
35
+ handler: async (args) => {
36
+ try {
37
+ const { type, direction, limit = 50 } = args;
38
+ let nodes;
39
+ if (type) {
40
+ nodes = store.getNodesByType(type);
41
+ }
42
+ else if (direction) {
43
+ nodes = store.getNodesByDirection(direction);
44
+ }
45
+ else {
46
+ nodes = store.getAllNodes(limit);
47
+ }
48
+ const sorted = nodes
49
+ .sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at))
50
+ .slice(0, limit);
51
+ return {
52
+ count: sorted.length,
53
+ total_available: nodes.length,
54
+ filters: { type, direction, limit },
55
+ nodes: sorted,
56
+ teaching: "Every relation is a responsibility. Browse with intention.",
57
+ };
58
+ }
59
+ catch (error) {
60
+ const errorMsg = error instanceof Error ? error.message : String(error);
61
+ return {
62
+ status: "error",
63
+ message: `Failed to list nodes: ${errorMsg}`,
64
+ error: errorMsg,
65
+ };
66
+ }
67
+ },
68
+ },
69
+ {
70
+ name: "list_ceremonies",
71
+ description: "List all ceremonies logged in the medicine wheel. Filter by direction or type. Returns ceremonies sorted by timestamp (newest first).",
72
+ inputSchema: {
73
+ type: "object",
74
+ properties: {
75
+ direction: {
76
+ type: "string",
77
+ enum: ["east", "south", "west", "north"],
78
+ description: "Filter by medicine wheel direction (optional)",
79
+ },
80
+ type: {
81
+ type: "string",
82
+ enum: ["smudging", "talking_circle", "spirit_feeding", "opening", "closing"],
83
+ description: "Filter by ceremony type (optional)",
84
+ },
85
+ limit: {
86
+ type: "number",
87
+ description: "Maximum ceremonies to return (default: 50)",
88
+ minimum: 1,
89
+ maximum: 200,
90
+ },
91
+ },
92
+ },
93
+ handler: async (args) => {
94
+ try {
95
+ const { direction, type, limit = 50 } = args;
96
+ let ceremonies;
97
+ if (direction) {
98
+ ceremonies = store.getCeremoniesByDirection(direction);
99
+ }
100
+ else if (type) {
101
+ ceremonies = store.getCeremoniesByType(type);
102
+ }
103
+ else {
104
+ ceremonies = store.getAllCeremonies(limit);
105
+ }
106
+ const sorted = ceremonies.slice(0, limit);
107
+ return {
108
+ count: sorted.length,
109
+ filters: { direction, type, limit },
110
+ ceremonies: sorted,
111
+ teaching: "Research is ceremony. Each logged ceremony is a witness to relational practice.",
112
+ };
113
+ }
114
+ catch (error) {
115
+ const errorMsg = error instanceof Error ? error.message : String(error);
116
+ return {
117
+ status: "error",
118
+ message: `Failed to list ceremonies: ${errorMsg}`,
119
+ error: errorMsg,
120
+ };
121
+ }
122
+ },
123
+ },
124
+ {
125
+ name: "list_narrative_beats",
126
+ description: "List narrative beats in the medicine wheel journey. Filter by direction to see specific acts. Returns beats sorted by timestamp.",
127
+ inputSchema: {
128
+ type: "object",
129
+ properties: {
130
+ direction: {
131
+ type: "string",
132
+ enum: ["east", "south", "west", "north"],
133
+ description: "Filter by direction/act (east=Act1, south=Act2, west=Act3, north=Act4)",
134
+ },
135
+ limit: {
136
+ type: "number",
137
+ description: "Maximum beats to return (default: 50)",
138
+ minimum: 1,
139
+ maximum: 200,
140
+ },
141
+ },
142
+ },
143
+ handler: async (args) => {
144
+ try {
145
+ const { direction, limit = 50 } = args;
146
+ let beats;
147
+ if (direction) {
148
+ beats = store.getBeatsByDirection(direction);
149
+ }
150
+ else {
151
+ beats = store.getAllBeats(limit);
152
+ }
153
+ const sorted = beats.slice(0, limit);
154
+ const byDirection = {
155
+ east: sorted.filter(b => b.direction === 'east').length,
156
+ south: sorted.filter(b => b.direction === 'south').length,
157
+ west: sorted.filter(b => b.direction === 'west').length,
158
+ north: sorted.filter(b => b.direction === 'north').length,
159
+ };
160
+ return {
161
+ count: sorted.length,
162
+ filters: { direction, limit },
163
+ summary: byDirection,
164
+ beats: sorted,
165
+ teaching: "Each beat marks a moment in the research journey. Together they form the narrative arc.",
166
+ };
167
+ }
168
+ catch (error) {
169
+ const errorMsg = error instanceof Error ? error.message : String(error);
170
+ return {
171
+ status: "error",
172
+ message: `Failed to list narrative beats: ${errorMsg}`,
173
+ error: errorMsg,
174
+ };
175
+ }
176
+ },
177
+ },
178
+ {
179
+ name: "list_cycles",
180
+ description: "List all medicine wheel research cycles. Shows both active and archived cycles.",
181
+ inputSchema: {
182
+ type: "object",
183
+ properties: {
184
+ status: {
185
+ type: "string",
186
+ enum: ["active", "archived", "all"],
187
+ description: "Filter by cycle status (default: all)",
188
+ },
189
+ },
190
+ },
191
+ handler: async (args) => {
192
+ try {
193
+ const { status = "all" } = args;
194
+ const { active, archived } = store.getAllCycles();
195
+ let cycles;
196
+ if (status === "active") {
197
+ cycles = active;
198
+ }
199
+ else if (status === "archived") {
200
+ cycles = archived;
201
+ }
202
+ else {
203
+ cycles = [...active, ...archived];
204
+ }
205
+ return {
206
+ active_count: active.length,
207
+ archived_count: archived.length,
208
+ total: cycles.length,
209
+ filter: status,
210
+ cycles: cycles.map(c => ({
211
+ id: c.id,
212
+ research_question: c.research_question,
213
+ current_direction: c.current_direction,
214
+ start_date: c.start_date,
215
+ ceremonies_conducted: c.ceremonies_conducted,
216
+ relations_mapped: c.relations_mapped,
217
+ wilson_alignment: c.wilson_alignment,
218
+ ocap_compliant: c.ocap_compliant,
219
+ })),
220
+ teaching: "A cycle is a complete turn of the wheel. Each research question deserves its full journey.",
221
+ };
222
+ }
223
+ catch (error) {
224
+ const errorMsg = error instanceof Error ? error.message : String(error);
225
+ return {
226
+ status: "error",
227
+ message: `Failed to list cycles: ${errorMsg}`,
228
+ error: errorMsg,
229
+ };
230
+ }
231
+ },
232
+ },
233
+ {
234
+ name: "telescope_narrative_beat",
235
+ description: "Drill into a narrative beat's relational web. Shows the beat's details, linked ceremonies, honored relations, and connected nodes.",
236
+ inputSchema: {
237
+ type: "object",
238
+ properties: {
239
+ beat_id: {
240
+ type: "string",
241
+ description: "ID of the narrative beat to telescope into",
242
+ },
243
+ depth: {
244
+ type: "number",
245
+ description: "How deep to traverse relational connections (default: 2, max: 5)",
246
+ minimum: 1,
247
+ maximum: 5,
248
+ },
249
+ },
250
+ required: ["beat_id"],
251
+ },
252
+ handler: async (args) => {
253
+ try {
254
+ const { beat_id, depth = 2 } = args;
255
+ const beat = store.getBeat(beat_id);
256
+ if (!beat) {
257
+ return {
258
+ status: "not_found",
259
+ message: `Narrative beat ${beat_id} not found`,
260
+ };
261
+ }
262
+ // Get linked ceremonies
263
+ const ceremonies = [];
264
+ for (const ceremonyId of beat.ceremonies) {
265
+ const ceremony = store.getCeremony(ceremonyId);
266
+ if (ceremony)
267
+ ceremonies.push(ceremony);
268
+ }
269
+ // Get honored relations and their webs
270
+ const relationWebs = [];
271
+ for (const nodeId of beat.relations_honored) {
272
+ const web = store.getRelationalWeb(nodeId, depth);
273
+ relationWebs.push({
274
+ center_node_id: nodeId,
275
+ nodes: web.nodes,
276
+ edges: web.edges,
277
+ });
278
+ }
279
+ return {
280
+ beat: beat,
281
+ ceremonies: ceremonies,
282
+ relations: {
283
+ honored_count: beat.relations_honored.length,
284
+ depth_traversed: depth,
285
+ webs: relationWebs,
286
+ },
287
+ total_nodes_discovered: relationWebs.reduce((sum, w) => sum + w.nodes.length, 0),
288
+ total_edges_discovered: relationWebs.reduce((sum, w) => sum + w.edges.length, 0),
289
+ teaching: "Telescoping reveals the full relational context of a moment in the journey.",
290
+ };
291
+ }
292
+ catch (error) {
293
+ const errorMsg = error instanceof Error ? error.message : String(error);
294
+ return {
295
+ status: "error",
296
+ message: `Failed to telescope narrative beat: ${errorMsg}`,
297
+ error: errorMsg,
298
+ };
299
+ }
300
+ },
301
+ },
302
+ {
303
+ name: "search_nodes",
304
+ description: "Search relational nodes by name or description. Supports filtering by type and direction.",
305
+ inputSchema: {
306
+ type: "object",
307
+ properties: {
308
+ query: {
309
+ type: "string",
310
+ description: "Search query (matches name and description)",
311
+ },
312
+ type: {
313
+ type: "string",
314
+ enum: ["human", "land", "spirit", "ancestor", "future", "knowledge"],
315
+ description: "Filter by node type (optional)",
316
+ },
317
+ direction: {
318
+ type: "string",
319
+ enum: ["east", "south", "west", "north"],
320
+ description: "Filter by direction (optional)",
321
+ },
322
+ limit: {
323
+ type: "number",
324
+ description: "Maximum results (default: 20)",
325
+ minimum: 1,
326
+ maximum: 100,
327
+ },
328
+ },
329
+ required: ["query"],
330
+ },
331
+ handler: async (args) => {
332
+ try {
333
+ const { query, type, direction, limit = 20 } = args;
334
+ const nodes = store.searchNodes(query, { type, direction, limit });
335
+ return {
336
+ query,
337
+ count: nodes.length,
338
+ filters: { type, direction, limit },
339
+ nodes: nodes,
340
+ teaching: "Searching is asking. The relations you find are those ready to be known.",
341
+ };
342
+ }
343
+ catch (error) {
344
+ const errorMsg = error instanceof Error ? error.message : String(error);
345
+ return {
346
+ status: "error",
347
+ message: `Failed to search nodes: ${errorMsg}`,
348
+ error: errorMsg,
349
+ };
350
+ }
351
+ },
352
+ },
353
+ {
354
+ name: "get_relational_node",
355
+ description: "Get a single relational node by its ID. Returns the full node object or not_found.",
356
+ inputSchema: {
357
+ type: "object",
358
+ properties: {
359
+ node_id: {
360
+ type: "string",
361
+ description: "The ID of the relational node to retrieve",
362
+ },
363
+ },
364
+ required: ["node_id"],
365
+ },
366
+ handler: async (args) => {
367
+ try {
368
+ const { node_id } = args;
369
+ const node = store.getNode(node_id);
370
+ if (!node) {
371
+ return {
372
+ status: "not_found",
373
+ message: `Relational node ${node_id} not found`,
374
+ };
375
+ }
376
+ return {
377
+ status: "found",
378
+ node,
379
+ teaching: "To know a relation by name is to accept responsibility for it.",
380
+ };
381
+ }
382
+ catch (error) {
383
+ const errorMsg = error instanceof Error ? error.message : String(error);
384
+ return {
385
+ status: "error",
386
+ message: `Failed to get relational node: ${errorMsg}`,
387
+ error: errorMsg,
388
+ };
389
+ }
390
+ },
391
+ },
392
+ {
393
+ name: "get_ceremony",
394
+ description: "Get a single ceremony by its ID. Returns the full ceremony object or not_found.",
395
+ inputSchema: {
396
+ type: "object",
397
+ properties: {
398
+ ceremony_id: {
399
+ type: "string",
400
+ description: "The ID of the ceremony to retrieve",
401
+ },
402
+ },
403
+ required: ["ceremony_id"],
404
+ },
405
+ handler: async (args) => {
406
+ try {
407
+ const { ceremony_id } = args;
408
+ const ceremony = store.getCeremony(ceremony_id);
409
+ if (!ceremony) {
410
+ return {
411
+ status: "not_found",
412
+ message: `Ceremony ${ceremony_id} not found`,
413
+ };
414
+ }
415
+ return {
416
+ status: "found",
417
+ ceremony,
418
+ teaching: "Research is ceremony. Each record is a witness to relational practice.",
419
+ };
420
+ }
421
+ catch (error) {
422
+ const errorMsg = error instanceof Error ? error.message : String(error);
423
+ return {
424
+ status: "error",
425
+ message: `Failed to get ceremony: ${errorMsg}`,
426
+ error: errorMsg,
427
+ };
428
+ }
429
+ },
430
+ },
431
+ {
432
+ name: "get_cycle",
433
+ description: "Get a single medicine wheel research cycle by its ID. Lighter than get_narrative_arc — returns the cycle object without beats.",
434
+ inputSchema: {
435
+ type: "object",
436
+ properties: {
437
+ cycle_id: {
438
+ type: "string",
439
+ description: "The ID of the cycle to retrieve",
440
+ },
441
+ },
442
+ required: ["cycle_id"],
443
+ },
444
+ handler: async (args) => {
445
+ try {
446
+ const { cycle_id } = args;
447
+ const cycle = store.getCycle(cycle_id);
448
+ if (!cycle) {
449
+ return {
450
+ status: "not_found",
451
+ message: `Cycle ${cycle_id} not found`,
452
+ };
453
+ }
454
+ return {
455
+ status: "found",
456
+ cycle,
457
+ teaching: "A cycle is a complete turn of the wheel. Each question deserves its full journey.",
458
+ };
459
+ }
460
+ catch (error) {
461
+ const errorMsg = error instanceof Error ? error.message : String(error);
462
+ return {
463
+ status: "error",
464
+ message: `Failed to get cycle: ${errorMsg}`,
465
+ error: errorMsg,
466
+ };
467
+ }
468
+ },
469
+ },
470
+ {
471
+ name: "list_edges",
472
+ description: "List relational edges (connections between nodes). Optionally filter by a specific node to see all its relationships.",
473
+ inputSchema: {
474
+ type: "object",
475
+ properties: {
476
+ node_id: {
477
+ type: "string",
478
+ description: "Filter edges connected to this node ID (optional)",
479
+ },
480
+ limit: {
481
+ type: "number",
482
+ description: "Maximum edges to return (default: 50)",
483
+ minimum: 1,
484
+ maximum: 200,
485
+ },
486
+ },
487
+ },
488
+ handler: async (args) => {
489
+ try {
490
+ const { node_id, limit = 50 } = args;
491
+ let edges;
492
+ if (node_id) {
493
+ edges = store.getEdgesForNode(node_id);
494
+ }
495
+ else {
496
+ edges = store.edges.getAll();
497
+ }
498
+ const limited = edges.slice(0, limit);
499
+ return {
500
+ count: limited.length,
501
+ total_available: edges.length,
502
+ filters: { node_id, limit },
503
+ edges: limited,
504
+ teaching: "Every edge is a responsibility. Relationships are not mere links — they carry obligations.",
505
+ };
506
+ }
507
+ catch (error) {
508
+ const errorMsg = error instanceof Error ? error.message : String(error);
509
+ return {
510
+ status: "error",
511
+ message: `Failed to list edges: ${errorMsg}`,
512
+ error: errorMsg,
513
+ };
514
+ }
515
+ },
516
+ },
517
+ {
518
+ name: "list_mmots",
519
+ description: "List Medicine-wheel Marks-On-Time (MMOTs) for a specific chart. MMOTs are temporal annotations on medicine wheel charts.",
520
+ inputSchema: {
521
+ type: "object",
522
+ properties: {
523
+ chart_id: {
524
+ type: "string",
525
+ description: "The chart ID to list MMOTs for",
526
+ },
527
+ },
528
+ required: ["chart_id"],
529
+ },
530
+ handler: async (args) => {
531
+ try {
532
+ const { chart_id } = args;
533
+ const mmots = store.getMmotsByChart(chart_id);
534
+ return {
535
+ count: mmots.length,
536
+ chart_id,
537
+ mmots,
538
+ teaching: "Marks on time honour the moments that shaped the journey.",
539
+ };
540
+ }
541
+ catch (error) {
542
+ const errorMsg = error instanceof Error ? error.message : String(error);
543
+ return {
544
+ status: "error",
545
+ message: `Failed to list MMOTs: ${errorMsg}`,
546
+ error: errorMsg,
547
+ };
548
+ }
549
+ },
550
+ },
551
+ ];
552
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Tool } from "../types.js";
2
+ export declare const eastTools: Tool[];
3
+ //# sourceMappingURL=east.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"east.d.ts","sourceRoot":"","sources":["../../src/tools/east.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,SAAS,EAAE,IAAI,EAqR3B,CAAC"}