@codeledger/engine 0.7.2 → 0.7.5
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/dist/broker/completion.d.ts +9 -0
- package/dist/broker/completion.d.ts.map +1 -0
- package/dist/broker/completion.js +51 -0
- package/dist/broker/completion.js.map +1 -0
- package/dist/broker/evidence.d.ts +11 -0
- package/dist/broker/evidence.d.ts.map +1 -0
- package/dist/broker/evidence.js +39 -0
- package/dist/broker/evidence.js.map +1 -0
- package/dist/broker/index.d.ts +14 -0
- package/dist/broker/index.d.ts.map +1 -0
- package/dist/broker/index.js +14 -0
- package/dist/broker/index.js.map +1 -0
- package/dist/broker/memory-lookup.d.ts +41 -0
- package/dist/broker/memory-lookup.d.ts.map +1 -0
- package/dist/broker/memory-lookup.js +70 -0
- package/dist/broker/memory-lookup.js.map +1 -0
- package/dist/broker/preamble.d.ts +19 -0
- package/dist/broker/preamble.d.ts.map +1 -0
- package/dist/broker/preamble.js +13 -0
- package/dist/broker/preamble.js.map +1 -0
- package/dist/broker/structural.d.ts +10 -0
- package/dist/broker/structural.d.ts.map +1 -0
- package/dist/broker/structural.js +52 -0
- package/dist/broker/structural.js.map +1 -0
- package/dist/broker/task-resolution.d.ts +17 -0
- package/dist/broker/task-resolution.d.ts.map +1 -0
- package/dist/broker/task-resolution.js +386 -0
- package/dist/broker/task-resolution.js.map +1 -0
- package/dist/broker/validation.d.ts +14 -0
- package/dist/broker/validation.d.ts.map +1 -0
- package/dist/broker/validation.js +75 -0
- package/dist/broker/validation.js.map +1 -0
- package/dist/claims/claims.d.ts +14 -0
- package/dist/claims/claims.d.ts.map +1 -0
- package/dist/claims/claims.js +125 -0
- package/dist/claims/claims.js.map +1 -0
- package/dist/claims/index.d.ts +2 -0
- package/dist/claims/index.d.ts.map +1 -0
- package/dist/claims/index.js +2 -0
- package/dist/claims/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +3 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +3 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/metrics.d.ts +24 -0
- package/dist/dashboard/metrics.d.ts.map +1 -0
- package/dist/dashboard/metrics.js +358 -0
- package/dist/dashboard/metrics.js.map +1 -0
- package/dist/dashboard/store.d.ts +26 -0
- package/dist/dashboard/store.d.ts.map +1 -0
- package/dist/dashboard/store.js +97 -0
- package/dist/dashboard/store.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/insight/collector.d.ts +31 -0
- package/dist/insight/collector.d.ts.map +1 -0
- package/dist/insight/collector.js +172 -0
- package/dist/insight/collector.js.map +1 -0
- package/dist/insight/engine.d.ts +18 -0
- package/dist/insight/engine.d.ts.map +1 -0
- package/dist/insight/engine.js +84 -0
- package/dist/insight/engine.js.map +1 -0
- package/dist/insight/formatter.d.ts +9 -0
- package/dist/insight/formatter.d.ts.map +1 -0
- package/dist/insight/formatter.js +87 -0
- package/dist/insight/formatter.js.map +1 -0
- package/dist/insight/index.d.ts +13 -0
- package/dist/insight/index.d.ts.map +1 -0
- package/dist/insight/index.js +11 -0
- package/dist/insight/index.js.map +1 -0
- package/dist/insight/session.d.ts +11 -0
- package/dist/insight/session.d.ts.map +1 -0
- package/dist/insight/session.js +60 -0
- package/dist/insight/session.js.map +1 -0
- package/dist/integration/ambient-coordinator.d.ts +75 -0
- package/dist/integration/ambient-coordinator.d.ts.map +1 -0
- package/dist/integration/ambient-coordinator.js +183 -0
- package/dist/integration/ambient-coordinator.js.map +1 -0
- package/dist/integration/index.d.ts +4 -0
- package/dist/integration/index.d.ts.map +1 -0
- package/dist/integration/index.js +3 -0
- package/dist/integration/index.js.map +1 -0
- package/dist/integration/warning-throttle.d.ts +63 -0
- package/dist/integration/warning-throttle.d.ts.map +1 -0
- package/dist/integration/warning-throttle.js +347 -0
- package/dist/integration/warning-throttle.js.map +1 -0
- package/dist/intervention/escalation.d.ts +23 -0
- package/dist/intervention/escalation.d.ts.map +1 -0
- package/dist/intervention/escalation.js +149 -0
- package/dist/intervention/escalation.js.map +1 -0
- package/dist/intervention/generator.d.ts +12 -0
- package/dist/intervention/generator.d.ts.map +1 -0
- package/dist/intervention/generator.js +191 -0
- package/dist/intervention/generator.js.map +1 -0
- package/dist/intervention/index.d.ts +4 -0
- package/dist/intervention/index.d.ts.map +1 -0
- package/dist/intervention/index.js +4 -0
- package/dist/intervention/index.js.map +1 -0
- package/dist/intervention/signal-aggregator.d.ts +26 -0
- package/dist/intervention/signal-aggregator.d.ts.map +1 -0
- package/dist/intervention/signal-aggregator.js +274 -0
- package/dist/intervention/signal-aggregator.js.map +1 -0
- package/dist/layer-d/conflict-detector.d.ts +12 -0
- package/dist/layer-d/conflict-detector.d.ts.map +1 -0
- package/dist/layer-d/conflict-detector.js +150 -0
- package/dist/layer-d/conflict-detector.js.map +1 -0
- package/dist/layer-d/index.d.ts +3 -0
- package/dist/layer-d/index.d.ts.map +1 -0
- package/dist/layer-d/index.js +3 -0
- package/dist/layer-d/index.js.map +1 -0
- package/dist/layer-d/surface-extractor.d.ts +10 -0
- package/dist/layer-d/surface-extractor.d.ts.map +1 -0
- package/dist/layer-d/surface-extractor.js +96 -0
- package/dist/layer-d/surface-extractor.js.map +1 -0
- package/dist/policy-domains/domains.d.ts +31 -0
- package/dist/policy-domains/domains.d.ts.map +1 -0
- package/dist/policy-domains/domains.js +445 -0
- package/dist/policy-domains/domains.js.map +1 -0
- package/dist/policy-domains/index.d.ts +8 -0
- package/dist/policy-domains/index.d.ts.map +1 -0
- package/dist/policy-domains/index.js +8 -0
- package/dist/policy-domains/index.js.map +1 -0
- package/dist/pulse/index.d.ts +2 -0
- package/dist/pulse/index.d.ts.map +1 -0
- package/dist/pulse/index.js +2 -0
- package/dist/pulse/index.js.map +1 -0
- package/dist/pulse/pulse.d.ts +20 -0
- package/dist/pulse/pulse.d.ts.map +1 -0
- package/dist/pulse/pulse.js +253 -0
- package/dist/pulse/pulse.js.map +1 -0
- package/dist/severity/index.d.ts +2 -0
- package/dist/severity/index.d.ts.map +1 -0
- package/dist/severity/index.js +2 -0
- package/dist/severity/index.js.map +1 -0
- package/dist/severity/severity.d.ts +48 -0
- package/dist/severity/severity.d.ts.map +1 -0
- package/dist/severity/severity.js +134 -0
- package/dist/severity/severity.js.map +1 -0
- package/dist/staleness/index.d.ts +2 -0
- package/dist/staleness/index.d.ts.map +1 -0
- package/dist/staleness/index.js +2 -0
- package/dist/staleness/index.js.map +1 -0
- package/dist/staleness/jit-staleness.d.ts +29 -0
- package/dist/staleness/jit-staleness.d.ts.map +1 -0
- package/dist/staleness/jit-staleness.js +240 -0
- package/dist/staleness/jit-staleness.js.map +1 -0
- package/dist/team-policy/index.d.ts +1 -1
- package/dist/team-policy/index.d.ts.map +1 -1
- package/dist/team-policy/index.js +1 -1
- package/dist/team-policy/index.js.map +1 -1
- package/dist/team-policy/policy.d.ts +7 -0
- package/dist/team-policy/policy.d.ts.map +1 -1
- package/dist/team-policy/policy.js +38 -0
- package/dist/team-policy/policy.js.map +1 -1
- package/dist/trust/approval.d.ts +16 -0
- package/dist/trust/approval.d.ts.map +1 -0
- package/dist/trust/approval.js +183 -0
- package/dist/trust/approval.js.map +1 -0
- package/dist/trust/capsule.d.ts +36 -0
- package/dist/trust/capsule.d.ts.map +1 -0
- package/dist/trust/capsule.js +206 -0
- package/dist/trust/capsule.js.map +1 -0
- package/dist/trust/index.d.ts +6 -0
- package/dist/trust/index.d.ts.map +1 -0
- package/dist/trust/index.js +6 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/trust/learning-feedback.d.ts +18 -0
- package/dist/trust/learning-feedback.d.ts.map +1 -0
- package/dist/trust/learning-feedback.js +146 -0
- package/dist/trust/learning-feedback.js.map +1 -0
- package/dist/trust/risk-scoring.d.ts +16 -0
- package/dist/trust/risk-scoring.d.ts.map +1 -0
- package/dist/trust/risk-scoring.js +142 -0
- package/dist/trust/risk-scoring.js.map +1 -0
- package/dist/trust/timeline.d.ts +42 -0
- package/dist/trust/timeline.d.ts.map +1 -0
- package/dist/trust/timeline.js +154 -0
- package/dist/trust/timeline.js.map +1 -0
- package/package.json +10 -2
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Domain Framework (System 6: Governance-as-Code)
|
|
3
|
+
*
|
|
4
|
+
* Formal domain registry covering 6 governance domains.
|
|
5
|
+
* Each domain has schema definition, defaults, validation, and resolution.
|
|
6
|
+
*
|
|
7
|
+
* Resolution rule: strictest-wins
|
|
8
|
+
* - Booleans: true (enabled/required) wins
|
|
9
|
+
* - Numbers (thresholds): lower value wins (tighter constraint)
|
|
10
|
+
* - Numbers (limits): lower value wins (tighter constraint)
|
|
11
|
+
* - Strings (severity): stricter severity wins (critical > high > medium > low)
|
|
12
|
+
* - String arrays (deny_paths): union of all entries
|
|
13
|
+
*/
|
|
14
|
+
// ── Severity ordering (higher index = stricter) ──────────────────────────────
|
|
15
|
+
const SEVERITY_ORDER = {
|
|
16
|
+
low: 0,
|
|
17
|
+
medium: 1,
|
|
18
|
+
high: 2,
|
|
19
|
+
critical: 3,
|
|
20
|
+
};
|
|
21
|
+
// ── Domain Definitions ───────────────────────────────────────────────────────
|
|
22
|
+
const discoveryDomain = {
|
|
23
|
+
name: 'discovery',
|
|
24
|
+
description: 'Controls discovery gate behavior (auto_run, block_on_no_go, cache_ttl)',
|
|
25
|
+
fields: [
|
|
26
|
+
{
|
|
27
|
+
name: 'auto_run',
|
|
28
|
+
type: 'boolean',
|
|
29
|
+
description: 'Automatically run discovery gate before context selection',
|
|
30
|
+
default_value: false,
|
|
31
|
+
resolution: 'strictest',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'block_on_no_go',
|
|
35
|
+
type: 'boolean',
|
|
36
|
+
description: 'Block context selection when discovery returns no-go verdict',
|
|
37
|
+
default_value: false,
|
|
38
|
+
resolution: 'strictest',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'cache_ttl_seconds',
|
|
42
|
+
type: 'number',
|
|
43
|
+
description: 'Time-to-live for cached discovery results in seconds',
|
|
44
|
+
default_value: 300,
|
|
45
|
+
resolution: 'strictest',
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
defaults: {
|
|
49
|
+
auto_run: false,
|
|
50
|
+
block_on_no_go: false,
|
|
51
|
+
cache_ttl_seconds: 300,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
const enforcementDomain = {
|
|
55
|
+
name: 'enforcement',
|
|
56
|
+
description: 'Controls CI enforcement behavior (mode, min_confidence, max_drift, deny_paths)',
|
|
57
|
+
fields: [
|
|
58
|
+
{
|
|
59
|
+
name: 'mode',
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'Enforcement mode: observe, warn, or block',
|
|
62
|
+
default_value: 'observe',
|
|
63
|
+
resolution: 'strictest',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'min_confidence',
|
|
67
|
+
type: 'number',
|
|
68
|
+
description: 'Minimum confidence score required (0.0–1.0)',
|
|
69
|
+
default_value: 0.0,
|
|
70
|
+
resolution: 'strictest',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'max_drift',
|
|
74
|
+
type: 'number',
|
|
75
|
+
description: 'Maximum allowed drift score (0.0–1.0)',
|
|
76
|
+
default_value: 1.0,
|
|
77
|
+
resolution: 'strictest',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'deny_paths',
|
|
81
|
+
type: 'string[]',
|
|
82
|
+
description: 'File path patterns that must not appear in context bundles',
|
|
83
|
+
default_value: [],
|
|
84
|
+
resolution: 'strictest',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
defaults: {
|
|
88
|
+
mode: 'observe',
|
|
89
|
+
min_confidence: 0.0,
|
|
90
|
+
max_drift: 1.0,
|
|
91
|
+
deny_paths: [],
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
const sourceOfTruthDomain = {
|
|
95
|
+
name: 'source_of_truth',
|
|
96
|
+
description: 'Controls Source-of-Truth behavior (stability, confidence, fragmentation alerts)',
|
|
97
|
+
fields: [
|
|
98
|
+
{
|
|
99
|
+
name: 'require_stability',
|
|
100
|
+
type: 'boolean',
|
|
101
|
+
description: 'Require SoT stability before proceeding',
|
|
102
|
+
default_value: false,
|
|
103
|
+
resolution: 'strictest',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'min_confidence',
|
|
107
|
+
type: 'number',
|
|
108
|
+
description: 'Minimum SoT confidence score (0.0–1.0)',
|
|
109
|
+
default_value: 0.0,
|
|
110
|
+
resolution: 'strictest',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'alert_on_fragmentation',
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
description: 'Alert when SoT fragmentation is detected',
|
|
116
|
+
default_value: false,
|
|
117
|
+
resolution: 'strictest',
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
defaults: {
|
|
121
|
+
require_stability: false,
|
|
122
|
+
min_confidence: 0.0,
|
|
123
|
+
alert_on_fragmentation: false,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
const overridesDomain = {
|
|
127
|
+
name: 'overrides',
|
|
128
|
+
description: 'Controls override governance (approval, depth limits, auditing)',
|
|
129
|
+
fields: [
|
|
130
|
+
{
|
|
131
|
+
name: 'require_approval',
|
|
132
|
+
type: 'boolean',
|
|
133
|
+
description: 'Require approval for policy overrides',
|
|
134
|
+
default_value: false,
|
|
135
|
+
resolution: 'strictest',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: 'max_depth',
|
|
139
|
+
type: 'number',
|
|
140
|
+
description: 'Maximum allowed override nesting depth',
|
|
141
|
+
default_value: 10,
|
|
142
|
+
resolution: 'strictest',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'audit',
|
|
146
|
+
type: 'boolean',
|
|
147
|
+
description: 'Enable audit logging for overrides',
|
|
148
|
+
default_value: false,
|
|
149
|
+
resolution: 'strictest',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
defaults: {
|
|
153
|
+
require_approval: false,
|
|
154
|
+
max_depth: 10,
|
|
155
|
+
audit: false,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const interventionsDomain = {
|
|
159
|
+
name: 'interventions',
|
|
160
|
+
description: 'Controls intervention behavior (auto-generate, severity threshold, escalation)',
|
|
161
|
+
fields: [
|
|
162
|
+
{
|
|
163
|
+
name: 'auto_generate',
|
|
164
|
+
type: 'boolean',
|
|
165
|
+
description: 'Automatically generate interventions',
|
|
166
|
+
default_value: false,
|
|
167
|
+
resolution: 'strictest',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
name: 'min_severity',
|
|
171
|
+
type: 'string',
|
|
172
|
+
description: 'Minimum severity level for alerts: critical, high, medium, low',
|
|
173
|
+
default_value: 'low',
|
|
174
|
+
resolution: 'strictest',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: 'escalation_enabled',
|
|
178
|
+
type: 'boolean',
|
|
179
|
+
description: 'Enable escalation for unresolved interventions',
|
|
180
|
+
default_value: false,
|
|
181
|
+
resolution: 'strictest',
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
defaults: {
|
|
185
|
+
auto_generate: false,
|
|
186
|
+
min_severity: 'low',
|
|
187
|
+
escalation_enabled: false,
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
const dashboardDomain = {
|
|
191
|
+
name: 'dashboard',
|
|
192
|
+
description: 'Controls dashboard metrics (collection, snapshots, alert thresholds)',
|
|
193
|
+
fields: [
|
|
194
|
+
{
|
|
195
|
+
name: 'collection_enabled',
|
|
196
|
+
type: 'boolean',
|
|
197
|
+
description: 'Enable metrics collection',
|
|
198
|
+
default_value: false,
|
|
199
|
+
resolution: 'strictest',
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
name: 'snapshot_interval_minutes',
|
|
203
|
+
type: 'number',
|
|
204
|
+
description: 'Interval between metric snapshots in minutes',
|
|
205
|
+
default_value: 60,
|
|
206
|
+
resolution: 'strictest',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'ahs_min',
|
|
210
|
+
type: 'number',
|
|
211
|
+
description: 'Minimum AHS (Architecture Health Score) alert threshold',
|
|
212
|
+
default_value: 0.0,
|
|
213
|
+
resolution: 'strictest',
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: 'dri_max',
|
|
217
|
+
type: 'number',
|
|
218
|
+
description: 'Maximum DRI (Drift Risk Index) alert threshold',
|
|
219
|
+
default_value: 1.0,
|
|
220
|
+
resolution: 'strictest',
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
defaults: {
|
|
224
|
+
collection_enabled: false,
|
|
225
|
+
snapshot_interval_minutes: 60,
|
|
226
|
+
ahs_min: 0.0,
|
|
227
|
+
dri_max: 1.0,
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
// ── Registry ─────────────────────────────────────────────────────────────────
|
|
231
|
+
/** All 6 policy domain definitions. */
|
|
232
|
+
export const POLICY_DOMAINS = new Map([
|
|
233
|
+
['discovery', discoveryDomain],
|
|
234
|
+
['enforcement', enforcementDomain],
|
|
235
|
+
['source_of_truth', sourceOfTruthDomain],
|
|
236
|
+
['overrides', overridesDomain],
|
|
237
|
+
['interventions', interventionsDomain],
|
|
238
|
+
['dashboard', dashboardDomain],
|
|
239
|
+
]);
|
|
240
|
+
// ── Validation ───────────────────────────────────────────────────────────────
|
|
241
|
+
/**
|
|
242
|
+
* Validate a config object against a specific domain's schema.
|
|
243
|
+
* Returns an array of validation errors (empty if valid).
|
|
244
|
+
*/
|
|
245
|
+
export function validateDomain(domain, config) {
|
|
246
|
+
const errors = [];
|
|
247
|
+
const def = POLICY_DOMAINS.get(domain);
|
|
248
|
+
if (!def) {
|
|
249
|
+
errors.push({
|
|
250
|
+
domain: domain,
|
|
251
|
+
field: '',
|
|
252
|
+
message: `Unknown policy domain: "${domain}"`,
|
|
253
|
+
severity: 'error',
|
|
254
|
+
});
|
|
255
|
+
return errors;
|
|
256
|
+
}
|
|
257
|
+
if (typeof config !== 'object' || config === null || Array.isArray(config)) {
|
|
258
|
+
errors.push({
|
|
259
|
+
domain: def.name,
|
|
260
|
+
field: '',
|
|
261
|
+
message: `${domain} config must be a plain object`,
|
|
262
|
+
severity: 'error',
|
|
263
|
+
});
|
|
264
|
+
return errors;
|
|
265
|
+
}
|
|
266
|
+
const obj = config;
|
|
267
|
+
const validFieldNames = new Set(def.fields.map((f) => f.name));
|
|
268
|
+
// Check for unknown fields
|
|
269
|
+
for (const key of Object.keys(obj)) {
|
|
270
|
+
if (!validFieldNames.has(key)) {
|
|
271
|
+
errors.push({
|
|
272
|
+
domain: def.name,
|
|
273
|
+
field: key,
|
|
274
|
+
message: `Unknown field "${key}" in domain "${domain}"`,
|
|
275
|
+
severity: 'warning',
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// Validate known fields
|
|
280
|
+
for (const field of def.fields) {
|
|
281
|
+
const value = obj[field.name];
|
|
282
|
+
if (value === undefined)
|
|
283
|
+
continue; // optional
|
|
284
|
+
const typeErr = validateFieldType(def.name, field, value);
|
|
285
|
+
if (typeErr)
|
|
286
|
+
errors.push(typeErr);
|
|
287
|
+
}
|
|
288
|
+
return errors;
|
|
289
|
+
}
|
|
290
|
+
/** Validate a single field value against its expected type. */
|
|
291
|
+
function validateFieldType(domain, field, value) {
|
|
292
|
+
switch (field.type) {
|
|
293
|
+
case 'boolean':
|
|
294
|
+
if (typeof value !== 'boolean') {
|
|
295
|
+
return {
|
|
296
|
+
domain,
|
|
297
|
+
field: field.name,
|
|
298
|
+
message: `${domain}.${field.name} must be a boolean, got ${typeof value}`,
|
|
299
|
+
severity: 'error',
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
break;
|
|
303
|
+
case 'number':
|
|
304
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
305
|
+
return {
|
|
306
|
+
domain,
|
|
307
|
+
field: field.name,
|
|
308
|
+
message: `${domain}.${field.name} must be a finite number, got ${typeof value}`,
|
|
309
|
+
severity: 'error',
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
break;
|
|
313
|
+
case 'string':
|
|
314
|
+
if (typeof value !== 'string') {
|
|
315
|
+
return {
|
|
316
|
+
domain,
|
|
317
|
+
field: field.name,
|
|
318
|
+
message: `${domain}.${field.name} must be a string, got ${typeof value}`,
|
|
319
|
+
severity: 'error',
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
// Extra check for severity-type fields
|
|
323
|
+
if (field.name === 'min_severity' && !SEVERITY_ORDER.hasOwnProperty(value)) {
|
|
324
|
+
return {
|
|
325
|
+
domain,
|
|
326
|
+
field: field.name,
|
|
327
|
+
message: `${domain}.${field.name} must be one of: critical, high, medium, low`,
|
|
328
|
+
severity: 'error',
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
// Extra check for mode field
|
|
332
|
+
if (field.name === 'mode') {
|
|
333
|
+
const validModes = new Set(['observe', 'warn', 'block']);
|
|
334
|
+
if (!validModes.has(value)) {
|
|
335
|
+
return {
|
|
336
|
+
domain,
|
|
337
|
+
field: field.name,
|
|
338
|
+
message: `${domain}.${field.name} must be one of: observe, warn, block`,
|
|
339
|
+
severity: 'error',
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
344
|
+
case 'string[]':
|
|
345
|
+
if (!Array.isArray(value)) {
|
|
346
|
+
return {
|
|
347
|
+
domain,
|
|
348
|
+
field: field.name,
|
|
349
|
+
message: `${domain}.${field.name} must be an array of strings, got ${typeof value}`,
|
|
350
|
+
severity: 'error',
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
for (const item of value) {
|
|
354
|
+
if (typeof item !== 'string') {
|
|
355
|
+
return {
|
|
356
|
+
domain,
|
|
357
|
+
field: field.name,
|
|
358
|
+
message: `${domain}.${field.name} array entries must be strings`,
|
|
359
|
+
severity: 'error',
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
// ── Resolution (strictest-wins) ──────────────────────────────────────────────
|
|
368
|
+
/**
|
|
369
|
+
* Resolve multiple configs for a domain using strictest-wins logic.
|
|
370
|
+
* Returns the merged config with the strictest value for each field.
|
|
371
|
+
*/
|
|
372
|
+
export function resolveDomain(domain, configs) {
|
|
373
|
+
const def = POLICY_DOMAINS.get(domain);
|
|
374
|
+
if (!def)
|
|
375
|
+
return {};
|
|
376
|
+
// Start from defaults
|
|
377
|
+
const result = { ...def.defaults };
|
|
378
|
+
for (const config of configs) {
|
|
379
|
+
if (typeof config !== 'object' || config === null || Array.isArray(config))
|
|
380
|
+
continue;
|
|
381
|
+
const obj = config;
|
|
382
|
+
for (const field of def.fields) {
|
|
383
|
+
const value = obj[field.name];
|
|
384
|
+
if (value === undefined)
|
|
385
|
+
continue;
|
|
386
|
+
const current = result[field.name];
|
|
387
|
+
result[field.name] = resolveStrictest(field, current, value);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return result;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Pick the stricter of two values for a field.
|
|
394
|
+
*/
|
|
395
|
+
function resolveStrictest(field, a, b) {
|
|
396
|
+
if (a === undefined)
|
|
397
|
+
return b;
|
|
398
|
+
if (b === undefined)
|
|
399
|
+
return a;
|
|
400
|
+
switch (field.type) {
|
|
401
|
+
case 'boolean':
|
|
402
|
+
// true (enabled/required) is stricter
|
|
403
|
+
return a || b;
|
|
404
|
+
case 'number':
|
|
405
|
+
// For confidence/thresholds: higher is stricter (tighter constraint)
|
|
406
|
+
// For limits/depth/interval: lower is stricter (tighter constraint)
|
|
407
|
+
// For max_drift/dri_max: lower is stricter
|
|
408
|
+
if (field.name === 'min_confidence' || field.name === 'ahs_min') {
|
|
409
|
+
return Math.max(a, b);
|
|
410
|
+
}
|
|
411
|
+
// For everything else (max_depth, max_drift, cache_ttl, snapshot_interval, dri_max): lower is stricter
|
|
412
|
+
return Math.min(a, b);
|
|
413
|
+
case 'string':
|
|
414
|
+
// For severity: stricter severity wins (higher in ordering)
|
|
415
|
+
if (field.name === 'min_severity') {
|
|
416
|
+
const aOrder = SEVERITY_ORDER[a] ?? 0;
|
|
417
|
+
const bOrder = SEVERITY_ORDER[b] ?? 0;
|
|
418
|
+
return aOrder >= bOrder ? a : b;
|
|
419
|
+
}
|
|
420
|
+
// For mode: block > warn > observe
|
|
421
|
+
if (field.name === 'mode') {
|
|
422
|
+
const modeOrder = { observe: 0, warn: 1, block: 2 };
|
|
423
|
+
const aOrder = modeOrder[a] ?? 0;
|
|
424
|
+
const bOrder = modeOrder[b] ?? 0;
|
|
425
|
+
return aOrder >= bOrder ? a : b;
|
|
426
|
+
}
|
|
427
|
+
// Default: last value wins (override)
|
|
428
|
+
return b;
|
|
429
|
+
case 'string[]':
|
|
430
|
+
// Union of all entries (deduplicated)
|
|
431
|
+
return [...new Set([...a, ...b])];
|
|
432
|
+
default:
|
|
433
|
+
return b;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Get the default config for a domain.
|
|
438
|
+
*/
|
|
439
|
+
export function getDefaultDomain(domain) {
|
|
440
|
+
const def = POLICY_DOMAINS.get(domain);
|
|
441
|
+
if (!def)
|
|
442
|
+
return {};
|
|
443
|
+
return { ...def.defaults };
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/policy-domains/domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Domain Framework (System 6: Governance-as-Code)
|
|
3
|
+
*
|
|
4
|
+
* Formal domain registry for 6 governance domains with schema,
|
|
5
|
+
* validation, defaults, and strictest-wins resolution.
|
|
6
|
+
*/
|
|
7
|
+
export { POLICY_DOMAINS, validateDomain, resolveDomain, getDefaultDomain, } from './domains.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy-domains/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Domain Framework (System 6: Governance-as-Code)
|
|
3
|
+
*
|
|
4
|
+
* Formal domain registry for 6 governance domains with schema,
|
|
5
|
+
* validation, defaults, and strictest-wins resolution.
|
|
6
|
+
*/
|
|
7
|
+
export { POLICY_DOMAINS, validateDomain, resolveDomain, getDefaultDomain, } from './domains.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy-domains/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pulse/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pulse/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PulseFileEvent, PulseSession, PulseState, PulseWorkingSet } from '@codeledger/types';
|
|
2
|
+
/** Cluster file events by time proximity into working sets */
|
|
3
|
+
export declare function clusterEvents(events: PulseFileEvent[]): PulseWorkingSet[];
|
|
4
|
+
/** Infer module names from file paths (first N directory segments) */
|
|
5
|
+
export declare function inferModules(files: string[]): string[];
|
|
6
|
+
/** Infer a candidate intent label from file paths and module boundaries */
|
|
7
|
+
export declare function inferIntent(files: string[]): string;
|
|
8
|
+
/** Compute a deterministic session ID from a working set */
|
|
9
|
+
export declare function computeSessionId(workingSet: PulseWorkingSet): string;
|
|
10
|
+
/** Infer a PulseSession from a working set */
|
|
11
|
+
export declare function inferSession(workingSet: PulseWorkingSet): PulseSession;
|
|
12
|
+
/** Scan git working tree for recent changes and produce PulseFileEvents */
|
|
13
|
+
export declare function scanGitChanges(repoRoot: string): PulseFileEvent[];
|
|
14
|
+
/** Load Pulse state from disk */
|
|
15
|
+
export declare function loadPulseState(repoRoot: string): PulseState;
|
|
16
|
+
/** Save Pulse state to disk */
|
|
17
|
+
export declare function savePulseState(repoRoot: string, state: PulseState): void;
|
|
18
|
+
/** Run a Pulse scan: detect changes, cluster, infer sessions, persist */
|
|
19
|
+
export declare function runPulseScan(repoRoot: string): PulseSession[];
|
|
20
|
+
//# sourceMappingURL=pulse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulse.d.ts","sourceRoot":"","sources":["../../src/pulse/pulse.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAe,MAAM,mBAAmB,CAAC;AAShH,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE,CA2BzE;AAiBD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAWtD;AAeD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAgCnD;AAID,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAKpE;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,YAAY,CAkBtE;AAsBD,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CA8CjE;AAID,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAgB3D;AAED,+BAA+B;AAC/B,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAKxE;AAID,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA4B7D"}
|