@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 +100 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +172 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -0
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
|
+
|
package/dist/index.d.ts
ADDED
|
@@ -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":"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"}
|
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
|
+
}
|