@anarchitects/governance-core 0.0.1

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 (43) hide show
  1. package/README.md +239 -0
  2. package/dist/core/adapter.d.ts +65 -0
  3. package/dist/core/adapter.d.ts.map +1 -0
  4. package/dist/core/ai.d.ts +21 -0
  5. package/dist/core/ai.d.ts.map +1 -0
  6. package/dist/core/assessment.d.ts +23 -0
  7. package/dist/core/assessment.d.ts.map +1 -0
  8. package/dist/core/built-in-rule-pack.d.ts +5 -0
  9. package/dist/core/built-in-rule-pack.d.ts.map +1 -0
  10. package/dist/core/built-in-rules.d.ts +16 -0
  11. package/dist/core/built-in-rules.d.ts.map +1 -0
  12. package/dist/core/drift.d.ts +5 -0
  13. package/dist/core/drift.d.ts.map +1 -0
  14. package/dist/core/exceptions.d.ts +34 -0
  15. package/dist/core/exceptions.d.ts.map +1 -0
  16. package/dist/core/index.d.ts +14 -0
  17. package/dist/core/index.d.ts.map +1 -0
  18. package/dist/core/models.d.ts +371 -0
  19. package/dist/core/models.d.ts.map +1 -0
  20. package/dist/core/profile.d.ts +105 -0
  21. package/dist/core/profile.d.ts.map +1 -0
  22. package/dist/core/rule-engine.d.ts +4 -0
  23. package/dist/core/rule-engine.d.ts.map +1 -0
  24. package/dist/core/rules.d.ts +37 -0
  25. package/dist/core/rules.d.ts.map +1 -0
  26. package/dist/core/signals.d.ts +21 -0
  27. package/dist/core/signals.d.ts.map +1 -0
  28. package/dist/core/snapshots.d.ts +12 -0
  29. package/dist/core/snapshots.d.ts.map +1 -0
  30. package/dist/extensions/capabilities.d.ts +15 -0
  31. package/dist/extensions/capabilities.d.ts.map +1 -0
  32. package/dist/extensions/contracts.d.ts +50 -0
  33. package/dist/extensions/contracts.d.ts.map +1 -0
  34. package/dist/extensions/diagnostics.d.ts +12 -0
  35. package/dist/extensions/diagnostics.d.ts.map +1 -0
  36. package/dist/extensions/index.d.ts +5 -0
  37. package/dist/extensions/index.d.ts.map +1 -0
  38. package/dist/extensions/runtime.d.ts +50 -0
  39. package/dist/extensions/runtime.d.ts.map +1 -0
  40. package/dist/index.d.ts +3 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +1587 -0
  43. package/package.json +52 -0
package/README.md ADDED
@@ -0,0 +1,239 @@
1
+ # `@anarchitects/governance-core`
2
+
3
+ Canonical Governance contracts, deterministic evaluation logic, and portable extension APIs.
4
+
5
+ ## Overview
6
+
7
+ `@anarchitects/governance-core` is the package that defines the Governance model layer for the Community-owned Governance package family. It owns the public contracts that adapters, hosts, and extensions normalize into, plus the deterministic logic that evaluates those contracts.
8
+
9
+ Use this package when you need:
10
+
11
+ - canonical workspace, project, dependency, ownership, violation, measurement, health, assessment, snapshot, drift, signal, and AI-analysis contracts
12
+ - deterministic rule evaluation and assessment assembly
13
+ - built-in Governance rule packs
14
+ - portable adapter input contracts
15
+ - portable extension contracts, capability contracts, diagnostics, and runtime registration helpers
16
+
17
+ ## Responsibilities
18
+
19
+ This package is responsible for:
20
+
21
+ - defining the canonical `GovernanceWorkspace` model and related result shapes
22
+ - defining adapter-facing input contracts such as `GovernanceProjectInput`, `GovernanceDependencyInput`, and `GovernanceWorkspaceAdapterResult`
23
+ - defining profile, rule, signal, exception, measurement, health, assessment, snapshot, and drift contracts
24
+ - providing deterministic helpers such as profile normalization, rule evaluation, assessment assembly, snapshot comparison, and AI handoff payload builders
25
+ - providing portable extension contracts and runtime helpers that stay independent from Nx
26
+
27
+ This package is not responsible for:
28
+
29
+ - concrete adapter implementations
30
+ - CLI command behavior or argument parsing
31
+ - Nx runtime behavior
32
+ - Nx graph loading or metadata extraction
33
+ - Nx executors or generators
34
+ - plugin runtime behavior
35
+
36
+ ## Public API
37
+
38
+ The package has a single public entrypoint:
39
+
40
+ ```ts
41
+ import {
42
+ buildGovernanceAssessment,
43
+ buildGovernanceWorkspace,
44
+ buildMetricSnapshot,
45
+ compareSnapshots,
46
+ coreBuiltInRulePack,
47
+ evaluateRulePack,
48
+ normalizeGovernanceException,
49
+ normalizeGovernanceProfile,
50
+ registerLoadedGovernanceExtensions,
51
+ type GovernanceWorkspaceAdapter,
52
+ type GovernanceWorkspace,
53
+ type GovernanceWorkspaceAdapterResult,
54
+ } from '@anarchitects/governance-core';
55
+ ```
56
+
57
+ The root export currently re-exports these API groups:
58
+
59
+ - `adapter`
60
+ - `assessment`
61
+ - `ai`
62
+ - `built-in-rule-pack`
63
+ - `built-in-rules`
64
+ - `drift`
65
+ - `models`
66
+ - `exceptions`
67
+ - `profile`
68
+ - `rule-engine`
69
+ - `rules`
70
+ - `signals`
71
+ - `snapshots`
72
+ - `extensions`
73
+
74
+ ### Core contracts
75
+
76
+ Core contracts include:
77
+
78
+ - workspace, project, dependency, and ownership models
79
+ - violations, measurements, recommendations, health scores, and top issues
80
+ - Governance profiles and rule configuration
81
+ - Governance exceptions and exception reports
82
+ - signal contracts and signal breakdowns
83
+ - snapshot and drift contracts
84
+ - adapter input/result contracts for hosts and adapters
85
+ - adapter contract, probe, and normalization helpers such as `GovernanceWorkspaceAdapter`, `GovernanceWorkspaceAdapterProbeResult`, and `buildGovernanceWorkspace(...)`
86
+ - AI analysis and handoff payload contracts
87
+
88
+ ### Deterministic logic
89
+
90
+ Deterministic helpers include:
91
+
92
+ - `buildGovernanceAssessment(...)`
93
+ - `evaluateRules(...)` and `evaluateRulePack(...)`
94
+ - `normalizeGovernanceProfile(...)`
95
+ - `normalizeGovernanceException(...)`
96
+ - `buildMetricSnapshot(...)`
97
+ - `compareSnapshots(...)`, `summarizeDrift(...)`, and `buildDriftSummary(...)`
98
+ - `buildAiHandoffPayload(...)` and the specialized AI handoff helpers
99
+
100
+ ### Built-in rule content
101
+
102
+ Built-in Governance rule content includes:
103
+
104
+ - `coreBuiltInRulePack`
105
+ - `coreBuiltInRulePacks`
106
+ - `coreBuiltInPolicyRules`
107
+ - `evaluateCoreBuiltInPolicyViolations(...)`
108
+
109
+ ### Extension APIs
110
+
111
+ Portable extension APIs include:
112
+
113
+ - extension contracts in `contracts`
114
+ - capability registry contracts in `capabilities`
115
+ - extension diagnostics in `diagnostics`
116
+ - runtime registration and execution helpers in `runtime`
117
+
118
+ Notable extension exports include:
119
+
120
+ - `DefaultGovernanceCapabilityRegistry`
121
+ - `GovernanceExtensionHostContext`
122
+ - `GovernanceExtensionDefinition`
123
+ - `GovernanceWorkspaceEnricher`
124
+ - `GovernanceExtensionRulePack`
125
+ - `GovernanceSignalProvider`
126
+ - `GovernanceMetricProvider`
127
+ - `GovernanceExtensionDiagnostic`
128
+ - `registerLoadedGovernanceExtensions(...)`
129
+ - `applyGovernanceEnrichers(...)`
130
+ - `evaluateGovernanceRulePacks(...)`
131
+ - `collectGovernanceSignals(...)`
132
+ - `collectGovernanceMeasurements(...)`
133
+
134
+ ## Usage
135
+
136
+ The package is designed to sit between concrete adapters and higher-level hosts:
137
+
138
+ ```ts
139
+ import {
140
+ buildGovernanceAssessment,
141
+ coreBuiltInRulePack,
142
+ evaluateRulePack,
143
+ normalizeGovernanceProfile,
144
+ type GovernanceWorkspace,
145
+ } from '@anarchitects/governance-core';
146
+
147
+ const workspace: GovernanceWorkspace = {
148
+ id: 'demo',
149
+ name: 'demo',
150
+ root: '.',
151
+ projects: [],
152
+ dependencies: [],
153
+ };
154
+
155
+ const profile = normalizeGovernanceProfile({
156
+ name: 'default',
157
+ boundaryPolicySource: 'governance',
158
+ layers: ['app', 'domain', 'data'],
159
+ allowedDomainDependencies: {},
160
+ ownership: { required: false, metadataField: 'team' },
161
+ health: {
162
+ statusThresholds: {
163
+ goodMinScore: 80,
164
+ warningMinScore: 60,
165
+ },
166
+ },
167
+ metrics: {},
168
+ });
169
+
170
+ const ruleResult = await evaluateRulePack(coreBuiltInRulePack, {
171
+ workspace,
172
+ profile,
173
+ });
174
+
175
+ const assessment = buildGovernanceAssessment({
176
+ workspace,
177
+ profile: profile.name,
178
+ violations: ruleResult.violations,
179
+ measurements: [],
180
+ signals: [],
181
+ warnings: [],
182
+ exceptions: {
183
+ summary: {
184
+ declaredCount: 0,
185
+ matchedCount: 0,
186
+ suppressedPolicyViolationCount: 0,
187
+ suppressedConformanceFindingCount: 0,
188
+ unusedExceptionCount: 0,
189
+ activeExceptionCount: 0,
190
+ staleExceptionCount: 0,
191
+ expiredExceptionCount: 0,
192
+ reactivatedPolicyViolationCount: 0,
193
+ reactivatedConformanceFindingCount: 0,
194
+ },
195
+ used: [],
196
+ unused: [],
197
+ suppressedFindings: [],
198
+ reactivatedFindings: [],
199
+ },
200
+ health: {
201
+ score: 100,
202
+ status: 'good',
203
+ grade: 'A',
204
+ reasons: [],
205
+ hotspots: {
206
+ metrics: [],
207
+ projects: [],
208
+ },
209
+ explainability: {
210
+ topIssues: [],
211
+ metrics: [],
212
+ projects: [],
213
+ },
214
+ },
215
+ recommendations: [],
216
+ });
217
+ ```
218
+
219
+ ## Package Boundaries
220
+
221
+ `@anarchitects/governance-core` is platform-independent.
222
+
223
+ That means:
224
+
225
+ - no Nx runtime assumptions
226
+ - no dependency on concrete adapters
227
+ - no dependency on CLI runtime concerns
228
+ - no dependency on executor, generator, or plugin infrastructure
229
+
230
+ Concrete adapters should emit canonical Core-owned contracts. Hosts and CLIs should orchestrate Core APIs without moving canonical model ownership out of this package.
231
+
232
+ For detailed package-boundary rules and allowed dependency direction, see
233
+ [ADR 0001: Governance Package Boundaries for Core, CLI, Adapters, and Extensions](../../../docs/adr/0001-governance-package-boundaries.md).
234
+
235
+ ## Related Packages
236
+
237
+ - `@anarchitects/governance-adapter-typescript` discovers TypeScript workspaces and maps them into Core-owned contracts
238
+ - `@anarchitects/governance-cli` provides a standalone host/runtime surface over Core APIs
239
+ - `@anarchitects/governance-extension-*` packages should plug into Core-owned extension contracts
@@ -0,0 +1,65 @@
1
+ import { GovernanceWorkspace } from './models.js';
2
+ import { ProfileOverrides } from './profile.js';
3
+ export interface GovernanceWorkspaceAdapterResult {
4
+ workspace?: GovernanceWorkspace;
5
+ workspaceId?: string;
6
+ workspaceName?: string;
7
+ workspaceRoot?: string;
8
+ projects?: GovernanceProjectInput[];
9
+ dependencies?: GovernanceDependencyInput[];
10
+ capabilities?: GovernanceCapability[];
11
+ diagnostics?: GovernanceDiagnostic[];
12
+ metadata?: Record<string, unknown>;
13
+ }
14
+ export type GovernanceWorkspaceAdapterProbeConfidence = 'none' | 'low' | 'medium' | 'high';
15
+ export interface GovernanceWorkspaceAdapterProbeResult {
16
+ supported: boolean;
17
+ confidence?: GovernanceWorkspaceAdapterProbeConfidence;
18
+ reasons?: string[];
19
+ diagnostics?: GovernanceDiagnostic[];
20
+ capabilities?: GovernanceCapability[];
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ export interface GovernanceWorkspaceAdapter<TInput = unknown> {
24
+ id: string;
25
+ probe?(input: TInput): GovernanceWorkspaceAdapterProbeResult;
26
+ loadWorkspace(input: TInput): GovernanceWorkspaceAdapterResult;
27
+ }
28
+ export interface GovernanceProjectInput {
29
+ id: string;
30
+ name?: string;
31
+ root?: string;
32
+ type?: string;
33
+ domain?: string;
34
+ layer?: string;
35
+ scope?: string;
36
+ tags?: string[];
37
+ ownership?: GovernanceOwnershipInput;
38
+ metadata?: Record<string, unknown>;
39
+ }
40
+ export interface GovernanceDependencyInput {
41
+ sourceProjectId: string;
42
+ targetProjectId: string;
43
+ type?: string;
44
+ sourceFile?: string;
45
+ metadata?: Record<string, unknown>;
46
+ }
47
+ export interface GovernanceOwnershipInput {
48
+ team?: string;
49
+ contacts?: string[];
50
+ source?: string;
51
+ metadata?: Record<string, unknown>;
52
+ }
53
+ export interface GovernanceCapability<TData = unknown> {
54
+ id: string;
55
+ version?: string;
56
+ data?: TData;
57
+ }
58
+ export interface GovernanceDiagnostic {
59
+ code: string;
60
+ message: string;
61
+ source?: string;
62
+ details?: Record<string, unknown>;
63
+ }
64
+ export declare function buildGovernanceWorkspace(adapterResult: GovernanceWorkspaceAdapterResult, overrides?: ProfileOverrides): GovernanceWorkspace;
65
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/core/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { AiAnalysisRequest, AiAnalysisResult } from './models.js';
2
+ export type AiHandoffUseCase = Extract<AiAnalysisRequest['kind'], 'root-cause' | 'drift' | 'pr-impact' | 'scorecard' | 'management-insights'>;
3
+ export interface GovernanceAiHandoffPayload<TRequest = Record<string, unknown>, TAnalysis = AiAnalysisResult> {
4
+ useCase: AiHandoffUseCase;
5
+ request: TRequest;
6
+ analysis: TAnalysis;
7
+ payloadScope?: Record<string, unknown>;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ export declare function buildAiHandoffPayload<TRequest, TAnalysis = AiAnalysisResult>(useCase: AiHandoffUseCase, params: {
11
+ request: TRequest;
12
+ analysis: TAnalysis;
13
+ payloadScope?: Record<string, unknown>;
14
+ metadata?: Record<string, unknown>;
15
+ }): GovernanceAiHandoffPayload<TRequest, TAnalysis>;
16
+ export declare function buildAiRootCauseHandoffPayload<TRequest>(params: Parameters<typeof buildAiHandoffPayload<TRequest>>[1]): GovernanceAiHandoffPayload<TRequest>;
17
+ export declare function buildAiPrImpactHandoffPayload<TRequest>(params: Parameters<typeof buildAiHandoffPayload<TRequest>>[1]): GovernanceAiHandoffPayload<TRequest>;
18
+ export declare function buildAiDriftHandoffPayload<TRequest>(params: Parameters<typeof buildAiHandoffPayload<TRequest>>[1]): GovernanceAiHandoffPayload<TRequest>;
19
+ export declare function buildAiScorecardHandoffPayload<TRequest>(params: Parameters<typeof buildAiHandoffPayload<TRequest>>[1]): GovernanceAiHandoffPayload<TRequest>;
20
+ export declare function buildAiManagementInsightsHandoffPayload<TRequest>(params: Parameters<typeof buildAiHandoffPayload<TRequest>>[1]): GovernanceAiHandoffPayload<TRequest>;
21
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/core/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,iBAAiB,CAAC,MAAM,CAAC,EACzB,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,qBAAqB,CAC3E,CAAC;AAEF,MAAM,WAAW,0BAA0B,CACzC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,GAAG,gBAAgB;IAE5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,EAC1E,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;IACN,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,0BAA0B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAQjD;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EACrD,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,0BAA0B,CAAC,QAAQ,CAAC,CAEtC;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EACpD,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,0BAA0B,CAAC,QAAQ,CAAC,CAEtC;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EACjD,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,0BAA0B,CAAC,QAAQ,CAAC,CAEtC;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EACrD,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,0BAA0B,CAAC,QAAQ,CAAC,CAEtC;AAED,wBAAgB,uCAAuC,CAAC,QAAQ,EAC9D,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,0BAA0B,CAAC,QAAQ,CAAC,CAEtC"}
@@ -0,0 +1,23 @@
1
+ import { GovernanceAssessment, GovernanceExceptionReport, GovernanceTopIssue, Measurement, MetricBreakdown, Recommendation, SignalBreakdown, Violation, GovernanceWorkspace, HealthScore } from './models.js';
2
+ import { GovernanceSignal } from './signals.js';
3
+ export type GovernanceAssessmentReportType = 'health' | 'boundaries' | 'ownership' | 'architecture';
4
+ export interface GovernanceAssessmentInput {
5
+ workspace: GovernanceWorkspace;
6
+ profile: string;
7
+ warnings?: string[];
8
+ exceptions: GovernanceExceptionReport;
9
+ violations: Violation[];
10
+ signals: GovernanceSignal[];
11
+ measurements: Measurement[];
12
+ health: HealthScore;
13
+ recommendations?: Recommendation[];
14
+ reportType?: GovernanceAssessmentReportType;
15
+ }
16
+ export declare function buildGovernanceAssessment(input: GovernanceAssessmentInput): GovernanceAssessment;
17
+ export declare function filterViolationsForReportType(violations: Violation[], reportType: GovernanceAssessmentReportType | undefined): Violation[];
18
+ export declare function filterMeasurementsForReportType(measurements: Measurement[], reportType: GovernanceAssessmentReportType | undefined): Measurement[];
19
+ export declare function filterSignalsForReportType(signals: GovernanceSignal[], reportType: GovernanceAssessmentReportType | undefined): GovernanceSignal[];
20
+ export declare function buildSignalBreakdown(signals: GovernanceSignal[]): SignalBreakdown;
21
+ export declare function buildMetricBreakdown(measurements: Measurement[]): MetricBreakdown;
22
+ export declare function buildTopIssues(signals: GovernanceSignal[]): GovernanceTopIssue[];
23
+ //# sourceMappingURL=assessment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment.d.ts","sourceRoot":"","sources":["../../src/core/assessment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EAEzB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,8BAA8B,GACtC,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,yBAAyB,CAAC;IACtC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,8BAA8B,CAAC;CAC7C;AA6DD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,yBAAyB,GAC/B,oBAAoB,CA2BtB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,SAAS,EAAE,EACvB,UAAU,EAAE,8BAA8B,GAAG,SAAS,GACrD,SAAS,EAAE,CAcb;AAED,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,WAAW,EAAE,EAC3B,UAAU,EAAE,8BAA8B,GAAG,SAAS,GACrD,WAAW,EAAE,CAsBf;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,UAAU,EAAE,8BAA8B,GAAG,SAAS,GACrD,gBAAgB,EAAE,CAcpB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EAAE,GAC1B,eAAe,CA4CjB;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,WAAW,EAAE,GAC1B,eAAe,CA4CjB;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EAAE,GAC1B,kBAAkB,EAAE,CAoCtB"}
@@ -0,0 +1,5 @@
1
+ import { GovernanceRulePack } from './rules.js';
2
+ export declare const CORE_BUILT_IN_RULE_PACK_ID = "core";
3
+ export declare const coreBuiltInRulePack: GovernanceRulePack;
4
+ export declare const coreBuiltInRulePacks: GovernanceRulePack[];
5
+ //# sourceMappingURL=built-in-rule-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-rule-pack.d.ts","sourceRoot":"","sources":["../../src/core/built-in-rule-pack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,0BAA0B,SAAS,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,kBAIjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAA0B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Violation } from './models.js';
2
+ import { GovernanceRule, GovernanceRuleContext, GovernanceRuleResult } from './rules.js';
3
+ type SynchronousGovernanceRule<TOptions = unknown> = GovernanceRule<TOptions> & {
4
+ evaluate(context: GovernanceRuleContext<TOptions>): GovernanceRuleResult;
5
+ };
6
+ export declare const domainBoundaryRule: SynchronousGovernanceRule;
7
+ export declare const layerBoundaryRule: SynchronousGovernanceRule;
8
+ export declare const ownershipPresenceRule: SynchronousGovernanceRule;
9
+ export declare const projectNameConventionRule: SynchronousGovernanceRule;
10
+ export declare const tagConventionRule: SynchronousGovernanceRule;
11
+ export declare const missingDomainRule: SynchronousGovernanceRule;
12
+ export declare const missingLayerRule: SynchronousGovernanceRule;
13
+ export declare const coreBuiltInPolicyRules: GovernanceRule[];
14
+ export declare function evaluateCoreBuiltInPolicyViolations(context: GovernanceRuleContext): Violation[];
15
+ export {};
16
+ //# sourceMappingURL=built-in-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-rules.d.ts","sourceRoot":"","sources":["../../src/core/built-in-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,SAAS,EAAE,MAAM,aAAa,CAAC;AAYhE,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,KAAK,yBAAyB,CAAC,QAAQ,GAAG,OAAO,IAC/C,cAAc,CAAC,QAAQ,CAAC,GAAG;IACzB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAAC;CAC1E,CAAC;AAEJ,eAAO,MAAM,kBAAkB,EAAE,yBAuChC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,yBA+C/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,yBAqCnC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,yBAgCvC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,yBAmC/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,yBA2B/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,yBA2B9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAQlD,CAAC;AAEF,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,qBAAqB,GAC7B,SAAS,EAAE,CAwFb"}
@@ -0,0 +1,5 @@
1
+ import { DriftSignal, DriftSummary, MetricSnapshot, SnapshotComparison } from './models.js';
2
+ export declare function compareSnapshots(baseline: MetricSnapshot, current: MetricSnapshot): SnapshotComparison;
3
+ export declare function summarizeDrift(comparison: SnapshotComparison, threshold?: number): DriftSignal[];
4
+ export declare function buildDriftSummary(signals: DriftSignal[]): DriftSummary;
5
+ //# sourceMappingURL=drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/core/drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,cAAc,EACd,kBAAkB,EAWnB,MAAM,aAAa,CAAC;AA8BrB,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,cAAc,GACtB,kBAAkB,CAkBpB;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,kBAAkB,EAC9B,SAAS,SAAO,GACf,WAAW,EAAE,CAoIf;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,YAAY,CAwBtE"}
@@ -0,0 +1,34 @@
1
+ import { GovernanceConformanceCategory } from './signals.js';
2
+ export type GovernanceExceptionSource = 'policy' | 'conformance';
3
+ export interface GovernanceExceptionReview {
4
+ createdAt?: string;
5
+ reviewBy?: string;
6
+ expiresAt?: string;
7
+ }
8
+ export interface GovernancePolicyExceptionScope {
9
+ source: 'policy';
10
+ ruleId: string;
11
+ projectId: string;
12
+ targetProjectId?: string;
13
+ }
14
+ export interface GovernanceConformanceExceptionScope {
15
+ source: 'conformance';
16
+ ruleId?: string;
17
+ category?: GovernanceConformanceCategory;
18
+ projectId?: string;
19
+ relatedProjectIds?: string[];
20
+ }
21
+ export type GovernanceExceptionScope = GovernancePolicyExceptionScope | GovernanceConformanceExceptionScope;
22
+ export interface GovernanceException {
23
+ id: string;
24
+ source: GovernanceExceptionSource;
25
+ scope: GovernanceExceptionScope;
26
+ reason: string;
27
+ owner: string;
28
+ review: GovernanceExceptionReview;
29
+ }
30
+ export declare function normalizeGovernanceException(exception: GovernanceException): GovernanceException;
31
+ export declare function buildGovernanceExceptionScopeKey(scope: GovernanceExceptionScope): string;
32
+ export declare function isPolicyExceptionScope(scope: GovernanceExceptionScope): scope is GovernancePolicyExceptionScope;
33
+ export declare function isConformanceExceptionScope(scope: GovernanceExceptionScope): scope is GovernanceConformanceExceptionScope;
34
+ //# sourceMappingURL=exceptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/core/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mCAAmC;IAClD,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,6BAA6B,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,wBAAwB,GAChC,8BAA8B,GAC9B,mCAAmC,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,mBAAmB,GAC7B,mBAAmB,CAsBrB;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,wBAAwB,GAC9B,MAAM,CAmBR;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,wBAAwB,GAC9B,KAAK,IAAI,8BAA8B,CAEzC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,wBAAwB,GAC9B,KAAK,IAAI,mCAAmC,CAE9C"}
@@ -0,0 +1,14 @@
1
+ export * from './adapter.js';
2
+ export * from './assessment.js';
3
+ export * from './ai.js';
4
+ export * from './built-in-rule-pack.js';
5
+ export * from './built-in-rules.js';
6
+ export * from './drift.js';
7
+ export * from './models.js';
8
+ export * from './exceptions.js';
9
+ export * from './profile.js';
10
+ export * from './rule-engine.js';
11
+ export * from './rules.js';
12
+ export * from './signals.js';
13
+ export * from './snapshots.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}