@clef-sh/core 0.1.16-beta.110 → 0.1.17

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.
@@ -0,0 +1,19 @@
1
+ import { ComplianceDocument, GenerateOptions } from "./types";
2
+ import { PolicyDocument } from "../policy/types";
3
+ /**
4
+ * Composes a {@link ComplianceDocument} from already-collected scan, lint,
5
+ * policy-evaluation, and Git context inputs. This class does no I/O — the
6
+ * caller (the GitHub Action) owns reading `.clef/policy.yaml`, walking the
7
+ * matrix, and invoking the runners.
8
+ */
9
+ export declare class ComplianceGenerator {
10
+ generate(opts: GenerateOptions): ComplianceDocument;
11
+ /**
12
+ * Compute a {@link ComplianceDocument.policy_hash}-format hash of any
13
+ * {@link PolicyDocument} without generating a full document. Useful for
14
+ * external consumers that want to compare policies across repos.
15
+ */
16
+ static hashPolicy(policy: PolicyDocument): string;
17
+ private buildSummary;
18
+ }
19
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/compliance/generator.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAqB,eAAe,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAsB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA2BrE;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB;IAoBnD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAIjD,OAAO,CAAC,YAAY;CAarB"}
@@ -0,0 +1,66 @@
1
+ import { SubprocessRunner } from "../types";
2
+ import { PolicyDocument } from "../policy/types";
3
+ import { ComplianceDocument } from "./types";
4
+ /**
5
+ * Inputs for {@link runCompliance}.
6
+ *
7
+ * `runner` is required. Compliance only ever shells out to `git` and
8
+ * `sops filestatus` (no stdin piping), so callers can ship a minimal
9
+ * `SubprocessRunner` around `child_process.execFile` — there is no need
10
+ * for the FIFO workaround that `@clef-sh/cli`'s `NodeSubprocessRunner`
11
+ * uses for encrypt/decrypt.
12
+ */
13
+ export interface RunComplianceOptions {
14
+ /** Required. See note above. */
15
+ runner: SubprocessRunner;
16
+ /** Repository root. Defaults to `process.cwd()`. */
17
+ repoRoot?: string;
18
+ /** Manifest path. Defaults to `<repoRoot>/clef.yaml`. */
19
+ manifestPath?: string;
20
+ /**
21
+ * Policy path. Defaults to `<repoRoot>/.clef/policy.yaml`. A missing
22
+ * file is not an error — the run uses {@link DEFAULT_POLICY}.
23
+ */
24
+ policyPath?: string;
25
+ /**
26
+ * Pre-resolved policy. Wins over `policyPath`. Useful when callers
27
+ * have already merged an org-wide policy with the repo's own.
28
+ */
29
+ policy?: PolicyDocument;
30
+ /** Git commit SHA. Auto-detected from CI env / `git rev-parse HEAD`. */
31
+ sha?: string;
32
+ /** `owner/repo`. Auto-detected from CI env / `git remote get-url`. */
33
+ repo?: string;
34
+ /** Subset of the matrix to evaluate. Empty arrays mean "no filter". */
35
+ filter?: {
36
+ namespaces?: string[];
37
+ environments?: string[];
38
+ };
39
+ /** Reference time for `generated_at` and rotation evaluation. */
40
+ now?: Date;
41
+ /** Toggle individual checks. All true by default. */
42
+ include?: {
43
+ scan?: boolean;
44
+ lint?: boolean;
45
+ rotation?: boolean;
46
+ };
47
+ }
48
+ export interface RunComplianceResult {
49
+ document: ComplianceDocument;
50
+ /**
51
+ * `true` iff zero rotation-overdue files, zero scan violations, and
52
+ * zero lint errors. The CI gate.
53
+ */
54
+ passed: boolean;
55
+ /** Wall-clock duration in milliseconds. */
56
+ durationMs: number;
57
+ }
58
+ /**
59
+ * Compose all compliance signals for a repository into a single artifact.
60
+ *
61
+ * @throws Errors only on infrastructure failures: missing manifest, invalid
62
+ * policy YAML, missing `sops` binary. Policy violations are normal
63
+ * results and surface as `result.passed === false`.
64
+ */
65
+ export declare function runCompliance(opts: RunComplianceOptions): Promise<RunComplianceResult>;
66
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/compliance/run.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAc,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,EAAsB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5D,iEAAiE;IACjE,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,sDAAsD;IACtD,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAKD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6D5F"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Compliance artifact schema produced by {@link ComplianceGenerator}.
3
+ *
4
+ * **Public artifact contract.** These types describe the shape of
5
+ * `compliance.json`, the artifact that the GitHub Action uploads on every
6
+ * merge. Bots, dashboards, and audit tooling re-parse this artifact months
7
+ * or years after it was written. Renaming or removing fields silently
8
+ * breaks observability — bump {@link ComplianceDocument.schema_version}
9
+ * and provide a migration if you need to. Adding optional fields is safe.
10
+ */
11
+ import { LintResult } from "../types";
12
+ import { ScanResult } from "../scanner";
13
+ import { FileRotationStatus, PolicyDocument } from "../policy/types";
14
+ /** Aggregate counts surfaced in {@link ComplianceDocument.summary}. */
15
+ export interface ComplianceSummary {
16
+ total_files: number;
17
+ /** Files where `rotation_overdue === false`. */
18
+ compliant: number;
19
+ rotation_overdue: number;
20
+ /** Count of {@link ScanResult.matches} entries. */
21
+ scan_violations: number;
22
+ /** Count of {@link LintResult.issues} entries with `severity === 'error'`. */
23
+ lint_errors: number;
24
+ }
25
+ /**
26
+ * Top-level compliance document. Stable schema — do not break consumers.
27
+ *
28
+ * `policy_snapshot` is inlined so downstream tooling (the bot, the dashboard,
29
+ * auditors) never needs to re-fetch `.clef/policy.yaml` to interpret the
30
+ * verdicts. `policy_hash` is the canonical-JSON SHA-256 of that snapshot,
31
+ * usable for cross-repo drift detection without parsing the snapshot itself.
32
+ */
33
+ export interface ComplianceDocument {
34
+ /** Bumped whenever the schema breaks consumer compatibility. */
35
+ schema_version: "1";
36
+ /** ISO 8601 timestamp of when this document was generated. */
37
+ generated_at: string;
38
+ /** Git commit SHA of the merge commit that triggered this run. */
39
+ sha: string;
40
+ /** Repository in `owner/repo` format. */
41
+ repo: string;
42
+ /** `sha256:` + hex SHA-256 of canonicalized JSON of `policy_snapshot`. */
43
+ policy_hash: string;
44
+ /** Inline copy of the policy used for this evaluation. */
45
+ policy_snapshot: PolicyDocument;
46
+ summary: ComplianceSummary;
47
+ /** Per-file rotation verdicts. One entry per existing matrix file. */
48
+ files: FileRotationStatus[];
49
+ /** Full scan result. */
50
+ scan: ScanResult;
51
+ /** Full lint result. */
52
+ lint: LintResult;
53
+ }
54
+ /** Inputs for {@link ComplianceGenerator.generate}. */
55
+ export interface GenerateOptions {
56
+ /** Git commit SHA of the merge commit being evaluated. */
57
+ sha: string;
58
+ /** Repository in `owner/repo` format. */
59
+ repo: string;
60
+ /** Resolved policy document (extends/merges already applied by the caller). */
61
+ policy: PolicyDocument;
62
+ scanResult: ScanResult;
63
+ lintResult: LintResult;
64
+ /** Per-file rotation verdicts from {@link PolicyEvaluator.evaluateFile}. */
65
+ files: FileRotationStatus[];
66
+ /**
67
+ * Reference time for `generated_at`. Defaults to `new Date()`. Inject for
68
+ * deterministic tests and reproducible artifacts.
69
+ */
70
+ now?: Date;
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compliance/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,cAAc,EAAE,GAAG,CAAC;IACpB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,eAAe,EAAE,cAAc,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,uEAAuE;IACvE,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,wBAAwB;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,wBAAwB;IACxB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,4EAA4E;IAC5E,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ"}
package/dist/index.d.mts CHANGED
@@ -51,4 +51,12 @@ export { ResetManager, describeScope, validateResetScope } from "./reset/manager
51
51
  export type { ResetScope, ResetOptions, ResetResult } from "./reset/manager";
52
52
  export { SyncManager } from "./sync";
53
53
  export type { SyncOptions, SyncPlan, SyncCellPlan, SyncResult } from "./sync";
54
+ export { PolicyParser, CLEF_POLICY_FILENAME } from "./policy/parser";
55
+ export { PolicyEvaluator } from "./policy/evaluator";
56
+ export { DEFAULT_POLICY } from "./policy/types";
57
+ export type { PolicyDocument, PolicyRotationConfig, PolicyEnvironmentRotation, FileRotationStatus, } from "./policy/types";
58
+ export { ComplianceGenerator } from "./compliance/generator";
59
+ export type { ComplianceDocument, ComplianceSummary, GenerateOptions } from "./compliance/types";
60
+ export { runCompliance } from "./compliance/run";
61
+ export type { RunComplianceOptions, RunComplianceResult } from "./compliance/run";
54
62
  //# sourceMappingURL=index.d.ts.map
package/dist/index.d.ts CHANGED
@@ -51,4 +51,12 @@ export { ResetManager, describeScope, validateResetScope } from "./reset/manager
51
51
  export type { ResetScope, ResetOptions, ResetResult } from "./reset/manager";
52
52
  export { SyncManager } from "./sync";
53
53
  export type { SyncOptions, SyncPlan, SyncCellPlan, SyncResult } from "./sync";
54
+ export { PolicyParser, CLEF_POLICY_FILENAME } from "./policy/parser";
55
+ export { PolicyEvaluator } from "./policy/evaluator";
56
+ export { DEFAULT_POLICY } from "./policy/types";
57
+ export type { PolicyDocument, PolicyRotationConfig, PolicyEnvironmentRotation, FileRotationStatus, } from "./policy/types";
58
+ export { ComplianceGenerator } from "./compliance/generator";
59
+ export type { ComplianceDocument, ComplianceSummary, GenerateOptions } from "./compliance/types";
60
+ export { runCompliance } from "./compliance/run";
61
+ export type { RunComplianceOptions, RunComplianceResult } from "./compliance/run";
54
62
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,MAAM,CAAC;AACd,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzF,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,IAAI,mBAAmB,EACpC,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrE,YAAY,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}