@medicine-wheel/ceremony-protocol 0.2.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 ADDED
@@ -0,0 +1,100 @@
1
+ # @medicine-wheel/ceremony-protocol
2
+
3
+ Ceremony lifecycle protocol for **Medicine Wheel** — manages ceremony state, phase transitions, governance enforcement, and ceremonial review workflows.
4
+
5
+ ## Overview
6
+
7
+ This package provides a protocol for managing the lifecycle of ceremonies within the Medicine Wheel framework. It handles:
8
+
9
+ - **Ceremony State Management** — Track current cycle, host sun, and ceremony phase
10
+ - **Phase Transitions** — Manage progression through opening, council, integration, and closure phases
11
+ - **Governance Enforcement** — Enforce OCAP (Ownership, Control, Access, Possession) principles through path-based governance rules
12
+ - **Ceremonial Review Workflows** — Identify changes that require ceremonial review based on governance configuration
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install @medicine-wheel/ceremony-protocol
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ### Ceremony State
23
+
24
+ ```typescript
25
+ import { loadCeremonyState, getPhaseFraming } from '@medicine-wheel/ceremony-protocol';
26
+ import type { RSISConfig } from '@medicine-wheel/ontology-core';
27
+
28
+ const config: RSISConfig = { /* ... */ };
29
+ const state = loadCeremonyState(config);
30
+ const framing = getPhaseFraming(state?.phase);
31
+ ```
32
+
33
+ ### Phase Transitions
34
+
35
+ ```typescript
36
+ import { nextPhase, PHASE_ORDER } from '@medicine-wheel/ceremony-protocol';
37
+
38
+ const currentPhase = 'opening';
39
+ const next = nextPhase(currentPhase); // 'council'
40
+ ```
41
+
42
+ ### Governance Enforcement
43
+
44
+ ```typescript
45
+ import {
46
+ checkGovernance,
47
+ isIndexExcluded,
48
+ checkCeremonyRequired,
49
+ getAccessLevel,
50
+ formatGovernanceWarning,
51
+ } from '@medicine-wheel/ceremony-protocol';
52
+
53
+ const config: GovernanceConfig = { /* ... */ };
54
+
55
+ // Check if a path is protected
56
+ const rule = checkGovernance('/sacred/path', config);
57
+
58
+ // Check if excluded from indexing
59
+ const excluded = isIndexExcluded('/node_modules', config);
60
+
61
+ // Check if ceremonial review is required
62
+ const requiresCeremony = checkCeremonyRequired('/src/core.ts', config);
63
+
64
+ // Get access level for a path
65
+ const access = getAccessLevel('/protected/file.ts', config);
66
+
67
+ // Format a warning message
68
+ if (rule) {
69
+ console.log(formatGovernanceWarning(rule));
70
+ }
71
+ ```
72
+
73
+ ## Ceremony Phases
74
+
75
+ The protocol recognizes four ceremony phases:
76
+
77
+ 1. **Opening** — What wants to emerge? Focus on intention and vision.
78
+ 2. **Council** — Cross-Sun perspectives on code relationships.
79
+ 3. **Integration** — Weaving insights into synthesis artifacts.
80
+ 4. **Closure** — Reciprocity summaries and seeding observations.
81
+
82
+ ## Governance Access Levels
83
+
84
+ - `open` — No restrictions
85
+ - `ceremony_required` — Changes require ceremonial review
86
+ - `restricted` — Restricted to specific authorities
87
+ - `sacred` — Sacred space requiring special protocols
88
+
89
+ ## Dependencies
90
+
91
+ - `@medicine-wheel/ontology-core` — Core ontology types and interfaces
92
+
93
+ ## License
94
+
95
+ MIT
96
+
97
+ ## Contributing
98
+
99
+ This package is part of the Medicine Wheel project. See the main repository for contribution guidelines.
100
+
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @medicine-wheel/ceremony-protocol
3
+ *
4
+ * Ceremony lifecycle protocol — manages ceremony state, phase transitions,
5
+ * governance enforcement, and ceremonial review workflows.
6
+ */
7
+ import type { RSISConfig, CeremonyPhase, SunName, GovernanceConfig, GovernanceProtectedPath, GovernanceAccess } from '@medicine-wheel/ontology-core';
8
+ export interface CeremonyState {
9
+ currentCycle: string;
10
+ hostSun: SunName;
11
+ phase: CeremonyPhase;
12
+ startDate?: string;
13
+ endDate?: string;
14
+ }
15
+ /** Load ceremony state from an RSIS config */
16
+ export declare function loadCeremonyState(config: RSISConfig): CeremonyState | null;
17
+ /** Get the next ceremony phase */
18
+ export declare function nextPhase(current: CeremonyPhase): CeremonyPhase | null;
19
+ /** Get ceremony-phase-aware framing for tool output */
20
+ export declare function getPhaseFraming(phase?: CeremonyPhase): string;
21
+ /** Check if a file path falls under governance protection */
22
+ export declare function checkGovernance(filePath: string, config: GovernanceConfig): GovernanceProtectedPath | null;
23
+ /** Check if a file path should be excluded from indexing */
24
+ export declare function isIndexExcluded(filePath: string, config: GovernanceConfig): boolean;
25
+ /** Check if changes to a file require ceremonial review */
26
+ export declare function checkCeremonyRequired(filePath: string, config: GovernanceConfig): boolean;
27
+ /** Get governance access level for a path */
28
+ export declare function getAccessLevel(filePath: string, config: GovernanceConfig): GovernanceAccess;
29
+ /** Format a governance warning for tool output */
30
+ export declare function formatGovernanceWarning(rule: GovernanceProtectedPath): string;
31
+ /**
32
+ * Extended ceremony phase type supporting the full fire-keeper lifecycle.
33
+ * - gathering: Reading context, collecting materials, honoring what exists
34
+ * - kindling: East work — establishing vision and intent (maps to 'opening')
35
+ * - tending: South/West work — analysis, validation, deepening (maps to 'council' + 'integration')
36
+ * - harvesting: North work — producing grounded artifacts (maps to 'closure')
37
+ * - resting: Ceremony pause — integration period
38
+ */
39
+ export type CeremonyPhaseExtended = 'gathering' | 'kindling' | 'tending' | 'harvesting' | 'resting';
40
+ /** Get the next extended ceremony phase */
41
+ export declare function nextPhaseExtended(current: CeremonyPhaseExtended): CeremonyPhaseExtended | null;
42
+ /** Get ceremony-phase-aware framing for extended phases */
43
+ export declare function getPhaseFramingExtended(phase?: CeremonyPhaseExtended): string;
44
+ /** Error returned when a ceremony gate blocks an action */
45
+ export interface CeremonyGateError {
46
+ /** Whether the action is blocked */
47
+ blocked: true;
48
+ /** Reason the action is blocked */
49
+ reason: string;
50
+ /** The governance rule that triggered the block */
51
+ rule: GovernanceProtectedPath | null;
52
+ /** Required authority for this action */
53
+ requiredAuthority: string[];
54
+ }
55
+ /** Success result when a ceremony gate allows an action */
56
+ export interface CeremonyGatePass {
57
+ /** Whether the action is blocked */
58
+ blocked: false;
59
+ }
60
+ /** Result of enforcing a ceremony gate */
61
+ export type CeremonyGateResult = CeremonyGateError | CeremonyGatePass;
62
+ /**
63
+ * Enforce a ceremony gate on a file path.
64
+ * Unlike the advisory `checkGovernance()`, this function BLOCKS when
65
+ * ceremony requirements are not met — returning an error with the
66
+ * blocking reason and required authority.
67
+ *
68
+ * @param filePath - Path to check
69
+ * @param config - Governance configuration
70
+ * @returns Gate result — either blocked with reason, or pass
71
+ */
72
+ export declare function enforceCeremonyGate(filePath: string, config: GovernanceConfig): CeremonyGateResult;
73
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAIvC,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAO1E;AAMD,kCAAkC;AAClC,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAItE;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,MAAM,CAa7D;AAID,6DAA6D;AAC7D,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GACvB,uBAAuB,GAAG,IAAI,CAWhC;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CASnF;AAED,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CASzF;AAED,6CAA6C;AAC7C,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAK3F;AAED,kDAAkD;AAClD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAG7E;AAID;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,UAAU,GACV,SAAS,GACT,YAAY,GACZ,SAAS,CAAC;AAUd,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,GAC7B,qBAAqB,GAAG,IAAI,CAI9B;AAED,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAe7E;AAID,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,OAAO,EAAE,IAAI,CAAC;IACd,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACrC,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,0CAA0C;AAC1C,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEtE;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GACvB,kBAAkB,CAuBpB"}
package/dist/index.js ADDED
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ /**
3
+ * @medicine-wheel/ceremony-protocol
4
+ *
5
+ * Ceremony lifecycle protocol — manages ceremony state, phase transitions,
6
+ * governance enforcement, and ceremonial review workflows.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.loadCeremonyState = loadCeremonyState;
10
+ exports.nextPhase = nextPhase;
11
+ exports.getPhaseFraming = getPhaseFraming;
12
+ exports.checkGovernance = checkGovernance;
13
+ exports.isIndexExcluded = isIndexExcluded;
14
+ exports.checkCeremonyRequired = checkCeremonyRequired;
15
+ exports.getAccessLevel = getAccessLevel;
16
+ exports.formatGovernanceWarning = formatGovernanceWarning;
17
+ exports.nextPhaseExtended = nextPhaseExtended;
18
+ exports.getPhaseFramingExtended = getPhaseFramingExtended;
19
+ exports.enforceCeremonyGate = enforceCeremonyGate;
20
+ /** Load ceremony state from an RSIS config */
21
+ function loadCeremonyState(config) {
22
+ if (!config.ceremony)
23
+ return null;
24
+ return {
25
+ currentCycle: config.ceremony.current_cycle || 'unknown',
26
+ hostSun: config.ceremony.host_sun || 'NovelEmergence',
27
+ phase: config.ceremony.phase || 'opening',
28
+ };
29
+ }
30
+ // ── Phase Transitions ───────────────────────────────────────────────────────
31
+ const PHASE_ORDER = ['opening', 'council', 'integration', 'closure'];
32
+ /** Get the next ceremony phase */
33
+ function nextPhase(current) {
34
+ const idx = PHASE_ORDER.indexOf(current);
35
+ if (idx < 0 || idx >= PHASE_ORDER.length - 1)
36
+ return null;
37
+ return PHASE_ORDER[idx + 1];
38
+ }
39
+ /** Get ceremony-phase-aware framing for tool output */
40
+ function getPhaseFraming(phase) {
41
+ switch (phase) {
42
+ case 'opening':
43
+ return 'Opening Phase — What wants to emerge? Focus on intention and vision.';
44
+ case 'council':
45
+ return 'Council Phase — Cross-Sun perspectives on code relationships.';
46
+ case 'integration':
47
+ return 'Integration Phase — Weaving insights into synthesis artifacts.';
48
+ case 'closure':
49
+ return 'Closure Phase — Reciprocity summaries and seeding observations.';
50
+ default:
51
+ return '';
52
+ }
53
+ }
54
+ // ── Governance Enforcement ──────────────────────────────────────────────────
55
+ /** Check if a file path falls under governance protection */
56
+ function checkGovernance(filePath, config) {
57
+ if (!config.protected_paths)
58
+ return null;
59
+ for (const rule of config.protected_paths) {
60
+ if (rule.path.includes('*')) {
61
+ const regex = new RegExp('^' + rule.path.replace(/\*/g, '.*') + '$');
62
+ if (regex.test(filePath))
63
+ return rule;
64
+ }
65
+ else if (filePath.startsWith(rule.path) || filePath === rule.path) {
66
+ return rule;
67
+ }
68
+ }
69
+ return null;
70
+ }
71
+ /** Check if a file path should be excluded from indexing */
72
+ function isIndexExcluded(filePath, config) {
73
+ if (!config.index_exclusions)
74
+ return false;
75
+ return config.index_exclusions.some((exclusion) => {
76
+ if (exclusion.includes('*')) {
77
+ const regex = new RegExp('^' + exclusion.replace(/\*/g, '.*') + '$');
78
+ return regex.test(filePath);
79
+ }
80
+ return filePath.startsWith(exclusion) || filePath === exclusion;
81
+ });
82
+ }
83
+ /** Check if changes to a file require ceremonial review */
84
+ function checkCeremonyRequired(filePath, config) {
85
+ if (!config.ceremony_required_changes)
86
+ return false;
87
+ return config.ceremony_required_changes.some((pattern) => {
88
+ if (pattern.includes('*')) {
89
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
90
+ return regex.test(filePath);
91
+ }
92
+ return filePath.startsWith(pattern) || filePath === pattern;
93
+ });
94
+ }
95
+ /** Get governance access level for a path */
96
+ function getAccessLevel(filePath, config) {
97
+ const rule = checkGovernance(filePath, config);
98
+ if (rule)
99
+ return rule.access;
100
+ if (checkCeremonyRequired(filePath, config))
101
+ return 'ceremony_required';
102
+ return 'open';
103
+ }
104
+ /** Format a governance warning for tool output */
105
+ function formatGovernanceWarning(rule) {
106
+ const authority = rule.authority.join(', ');
107
+ return `⚠️ GOVERNANCE: Changes to [${rule.path}] require [${authority}] approval. Access level: ${rule.access}`;
108
+ }
109
+ const EXTENDED_PHASE_ORDER = [
110
+ 'gathering',
111
+ 'kindling',
112
+ 'tending',
113
+ 'harvesting',
114
+ 'resting',
115
+ ];
116
+ /** Get the next extended ceremony phase */
117
+ function nextPhaseExtended(current) {
118
+ const idx = EXTENDED_PHASE_ORDER.indexOf(current);
119
+ if (idx < 0 || idx >= EXTENDED_PHASE_ORDER.length - 1)
120
+ return null;
121
+ return EXTENDED_PHASE_ORDER[idx + 1];
122
+ }
123
+ /** Get ceremony-phase-aware framing for extended phases */
124
+ function getPhaseFramingExtended(phase) {
125
+ switch (phase) {
126
+ case 'gathering':
127
+ return 'Gathering Phase — Reading context, collecting materials, honoring what already exists.';
128
+ case 'kindling':
129
+ return 'Kindling Phase — East work: What wants to emerge? Establishing vision and intent.';
130
+ case 'tending':
131
+ return 'Tending Phase — South/West work: Analysis, validation, deepening through relational inquiry.';
132
+ case 'harvesting':
133
+ return 'Harvesting Phase — North work: Producing grounded artifacts from ceremony insights.';
134
+ case 'resting':
135
+ return 'Resting Phase — Ceremony pause: Integration period, no active work. Honor what was learned.';
136
+ default:
137
+ return '';
138
+ }
139
+ }
140
+ /**
141
+ * Enforce a ceremony gate on a file path.
142
+ * Unlike the advisory `checkGovernance()`, this function BLOCKS when
143
+ * ceremony requirements are not met — returning an error with the
144
+ * blocking reason and required authority.
145
+ *
146
+ * @param filePath - Path to check
147
+ * @param config - Governance configuration
148
+ * @returns Gate result — either blocked with reason, or pass
149
+ */
150
+ function enforceCeremonyGate(filePath, config) {
151
+ // Check governance protection
152
+ const rule = checkGovernance(filePath, config);
153
+ if (rule && (rule.access === 'restricted' || rule.access === 'sacred')) {
154
+ return {
155
+ blocked: true,
156
+ reason: `Path [${filePath}] has ${rule.access} access — changes require authority approval`,
157
+ rule,
158
+ requiredAuthority: rule.authority,
159
+ };
160
+ }
161
+ // Check ceremony requirement
162
+ if (checkCeremonyRequired(filePath, config)) {
163
+ return {
164
+ blocked: true,
165
+ reason: `Path [${filePath}] requires ceremonial review before changes can proceed`,
166
+ rule: rule,
167
+ requiredAuthority: rule ? rule.authority : ['ceremony-steward'],
168
+ };
169
+ }
170
+ return { blocked: false };
171
+ }
172
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAsBH,8CAOC;AAOD,8BAIC;AAGD,0CAaC;AAKD,0CAcC;AAGD,0CASC;AAGD,sDASC;AAGD,wCAKC;AAGD,0DAGC;AA4BD,8CAMC;AAGD,0DAeC;AAmCD,kDA0BC;AA7MD,8CAA8C;AAC9C,SAAgB,iBAAiB,CAAC,MAAkB;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,SAAS;QACxD,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,gBAAgB;QACrD,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS;KAC1C,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,WAAW,GAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAEtF,kCAAkC;AAClC,SAAgB,SAAS,CAAC,OAAsB;IAC9C,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,uDAAuD;AACvD,SAAgB,eAAe,CAAC,KAAqB;IACnD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,sEAAsE,CAAC;QAChF,KAAK,SAAS;YACZ,OAAO,+DAA+D,CAAC;QACzE,KAAK,aAAa;YAChB,OAAO,gEAAgE,CAAC;QAC1E,KAAK,SAAS;YACZ,OAAO,iEAAiE,CAAC;QAC3E;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E,6DAA6D;AAC7D,SAAgB,eAAe,CAC7B,QAAgB,EAChB,MAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACrE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;aAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,SAAgB,eAAe,CAAC,QAAgB,EAAE,MAAwB;IACxE,IAAI,CAAC,MAAM,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAiB,EAAE,EAAE;QACxD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,KAAK,SAAS,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2DAA2D;AAC3D,SAAgB,qBAAqB,CAAC,QAAgB,EAAE,MAAwB;IAC9E,IAAI,CAAC,MAAM,CAAC,yBAAyB;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAe,EAAE,EAAE;QAC/D,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACnE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,SAAgB,cAAc,CAAC,QAAgB,EAAE,MAAwB;IACvE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAC7B,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kDAAkD;AAClD,SAAgB,uBAAuB,CAAC,IAA6B;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,8BAA8B,IAAI,CAAC,IAAI,cAAc,SAAS,6BAA6B,IAAI,CAAC,MAAM,EAAE,CAAC;AAClH,CAAC;AAmBD,MAAM,oBAAoB,GAA4B;IACpD,WAAW;IACX,UAAU;IACV,SAAS;IACT,YAAY;IACZ,SAAS;CACV,CAAC;AAEF,2CAA2C;AAC3C,SAAgB,iBAAiB,CAC/B,OAA8B;IAE9B,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,oBAAoB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,2DAA2D;AAC3D,SAAgB,uBAAuB,CAAC,KAA6B;IACnE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,wFAAwF,CAAC;QAClG,KAAK,UAAU;YACb,OAAO,mFAAmF,CAAC;QAC7F,KAAK,SAAS;YACZ,OAAO,8FAA8F,CAAC;QACxG,KAAK,YAAY;YACf,OAAO,qFAAqF,CAAC;QAC/F,KAAK,SAAS;YACZ,OAAO,6FAA6F,CAAC;QACvG;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAyBD;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,MAAwB;IAExB,8BAA8B;IAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS,QAAQ,SAAS,IAAI,CAAC,MAAM,8CAA8C;YAC3F,IAAI;YACJ,iBAAiB,EAAE,IAAI,CAAC,SAAS;SAClC,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS,QAAQ,yDAAyD;YAClF,IAAI,EAAE,IAAI;YACV,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@medicine-wheel/ceremony-protocol",
3
+ "version": "0.2.2",
4
+ "description": "Ceremony lifecycle protocol for Medicine Wheel — manages ceremony state, phase transitions, governance enforcement, and ceremonial review workflows",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "sideEffects": false,
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "clean": "rm -rf dist",
19
+ "prepublishOnly": "npm run clean && npm run build"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "README.md"
24
+ ],
25
+ "dependencies": {
26
+ "@medicine-wheel/ontology-core": "^0.2.2"
27
+ },
28
+ "devDependencies": {
29
+ "typescript": "^5.4.0"
30
+ },
31
+ "keywords": [
32
+ "medicine-wheel",
33
+ "ceremony",
34
+ "governance",
35
+ "indigenous",
36
+ "ocap"
37
+ ],
38
+ "license": "MIT"
39
+ }