@clef-sh/core 0.1.16 → 0.1.18

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 (37) hide show
  1. package/dist/compliance/generator.d.ts +19 -0
  2. package/dist/compliance/generator.d.ts.map +1 -0
  3. package/dist/compliance/run.d.ts +85 -0
  4. package/dist/compliance/run.d.ts.map +1 -0
  5. package/dist/compliance/types.d.ts +72 -0
  6. package/dist/compliance/types.d.ts.map +1 -0
  7. package/dist/git/integration.d.ts +8 -5
  8. package/dist/git/integration.d.ts.map +1 -1
  9. package/dist/import/index.d.ts +7 -0
  10. package/dist/import/index.d.ts.map +1 -1
  11. package/dist/index.d.mts +11 -2
  12. package/dist/index.d.ts +11 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +979 -318
  15. package/dist/index.js.map +4 -4
  16. package/dist/index.mjs +913 -294
  17. package/dist/index.mjs.map +4 -4
  18. package/dist/lint/runner.d.ts +7 -0
  19. package/dist/lint/runner.d.ts.map +1 -1
  20. package/dist/merge/metadata-driver.d.ts +17 -0
  21. package/dist/merge/metadata-driver.d.ts.map +1 -0
  22. package/dist/pending/metadata.d.ts +40 -15
  23. package/dist/pending/metadata.d.ts.map +1 -1
  24. package/dist/policy/evaluator.d.ts +49 -0
  25. package/dist/policy/evaluator.d.ts.map +1 -0
  26. package/dist/policy/parser.d.ts +36 -0
  27. package/dist/policy/parser.d.ts.map +1 -0
  28. package/dist/policy/types.d.ts +101 -0
  29. package/dist/policy/types.d.ts.map +1 -0
  30. package/dist/scanner/index.d.ts +9 -1
  31. package/dist/scanner/index.d.ts.map +1 -1
  32. package/dist/scanner/patterns.d.ts +12 -0
  33. package/dist/scanner/patterns.d.ts.map +1 -1
  34. package/dist/sops/client.d.ts.map +1 -1
  35. package/dist/types/index.d.ts +25 -1
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/package.json +2 -2
@@ -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;CAiBrB"}
@@ -0,0 +1,85 @@
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
+ * Optional override for the sops binary path. When omitted,
49
+ * {@link resolveSopsPath} chooses (CLEF_SOPS_PATH env, bundled package,
50
+ * then bare "sops" on PATH). Callers that already resolved the path
51
+ * (the UI server, the CLI) can pass it through to skip re-resolution.
52
+ */
53
+ sopsPath?: string;
54
+ /**
55
+ * Age key material — inline private key string. When provided, the
56
+ * internal {@link SopsClient} uses it for decrypt-requiring checks
57
+ * (lint, schema validation). When omitted, those checks run without
58
+ * keys and surface decrypt failures as `info`-level lint issues.
59
+ *
60
+ * KMS-encrypted files authenticate via ambient env (AWS_PROFILE, IMDS,
61
+ * etc.) — no parameter threading required.
62
+ */
63
+ ageKey?: string;
64
+ /** Age key file path. Same semantics as {@link ageKey}. */
65
+ ageKeyFile?: string;
66
+ }
67
+ export interface RunComplianceResult {
68
+ document: ComplianceDocument;
69
+ /**
70
+ * `true` iff zero rotation-overdue files, zero scan violations, and
71
+ * zero lint errors. The CI gate.
72
+ */
73
+ passed: boolean;
74
+ /** Wall-clock duration in milliseconds. */
75
+ durationMs: number;
76
+ }
77
+ /**
78
+ * Compose all compliance signals for a repository into a single artifact.
79
+ *
80
+ * @throws Errors only on infrastructure failures: missing manifest, invalid
81
+ * policy YAML, missing `sops` binary. Policy violations are normal
82
+ * results and surface as `result.passed === false`.
83
+ */
84
+ export declare function runCompliance(opts: RunComplianceOptions): Promise<RunComplianceResult>;
85
+ //# 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;AAIrE,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;IACjE;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;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,CA0E5F"}
@@ -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"}
@@ -139,15 +139,18 @@ export declare class GitIntegration {
139
139
  */
140
140
  installMergeDriver(repoRoot: string): Promise<void>;
141
141
  /**
142
- * Check whether the SOPS merge driver is configured in both
143
- * `.git/config` and `.gitattributes`.
144
- *
145
- * @param repoRoot - Absolute path to the repository root.
146
- * @returns An object indicating which parts are configured.
142
+ * Check whether both Clef merge drivers are configured in `.git/config`
143
+ * and `.gitattributes`. Reports separately on the SOPS driver
144
+ * (`merge=sops` for `.enc.*`) and the metadata driver
145
+ * (`merge=clef-metadata` for `.clef-meta.yaml`) so `clef doctor` can
146
+ * prompt the user to run `clef hooks` when only the SOPS driver is
147
+ * installed (older install, pre-metadata-merge).
147
148
  */
148
149
  checkMergeDriver(repoRoot: string): Promise<{
149
150
  gitConfig: boolean;
150
151
  gitattributes: boolean;
152
+ metadataGitConfig: boolean;
153
+ metadataGitattributes: boolean;
151
154
  }>;
152
155
  private ensureGitattributes;
153
156
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/git/integration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAqB,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA8CrF;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAErD;;;;;;OAMG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,CAAC,MAAM,CAAC;IAqBlB;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAahD;;;;;;;;;;OAUG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7D;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBjD;;;;;;;OAOG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAA;KAAE,CAAC;IAsBpF;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKhD;;;;;;OAMG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAe1F;;;;;;;OAOG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6B1F;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhD;;;;;OAKG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA8CrD;;;;;;;;;;;;OAYG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BzD;;;;;;OAMG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;YAe5C,mBAAmB;IAsBjC;;;;;;OAMG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB5D"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/git/integration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAqB,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA8CrF;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAErD;;;;;;OAMG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7D,OAAO,CAAC,MAAM,CAAC;IAqBlB;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAahD;;;;;;;;;;OAUG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7D;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBjD;;;;;;;OAOG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAA;KAAE,CAAC;IAsBpF;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKhD;;;;;;OAMG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAe1F;;;;;;;OAOG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6B1F;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhD;;;;;OAKG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA8CrD;;;;;;;;;;;;OAYG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCzD;;;;;;;OAOG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC;YAqBY,mBAAmB;IAyBjC;;;;;;OAMG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB5D"}
@@ -10,6 +10,13 @@ export interface ImportOptions {
10
10
  overwrite?: boolean;
11
11
  dryRun?: boolean;
12
12
  stdin?: boolean;
13
+ /**
14
+ * Identity to record on rotations performed by this import (e.g. `"Name
15
+ * <email>"`). When omitted, imported keys are still written to ciphertext
16
+ * but no rotation record is created — appropriate for callers that have
17
+ * their own bookkeeping.
18
+ */
19
+ rotatedBy?: string;
13
20
  }
14
21
  export interface ImportResult {
15
22
  imported: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAS,YAAY,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBADF,UAAU,EAAE,iBAAiB,EAC7B,EAAE,EAAE,kBAAkB;IAGzC;;;;;;;;;OASG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC;CAiFzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAS,YAAY,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBADF,UAAU,EAAE,iBAAiB,EAC7B,EAAE,EAAE,kBAAkB;IAGzC;;;;;;;;;OASG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC;CAiGzB"}
package/dist/index.d.mts CHANGED
@@ -18,8 +18,8 @@ export { ConsumptionClient } from "./consumption/client";
18
18
  export { checkDependency, checkAll, assertSops, REQUIREMENTS } from "./dependencies/checker";
19
19
  export { generateAgeIdentity, deriveAgePublicKey, formatAgeKeyFile } from "./age/keygen";
20
20
  export type { AgeIdentity } from "./age/keygen";
21
- export { metadataPath, loadMetadata, saveMetadata, markPending, markPendingWithRetry, markResolved, getPendingKeys, isPending, generateRandomValue, } from "./pending/metadata";
22
- export type { PendingKey, PendingMetadata } from "./pending/metadata";
21
+ export { metadataPath, loadMetadata, saveMetadata, markPending, markPendingWithRetry, markResolved, getPendingKeys, isPending, recordRotation, removeRotation, getRotations, generateRandomValue, } from "./pending/metadata";
22
+ export type { PendingKey, RotationRecord, CellMetadata, PendingMetadata } from "./pending/metadata";
23
23
  export { ImportRunner } from "./import";
24
24
  export type { ImportFormat, ImportOptions, ImportResult, ParsedImport } from "./import";
25
25
  export { parse, parseDotenv, parseJson, parseYaml, detectFormat } from "./import/parsers";
@@ -33,6 +33,7 @@ export { DriftDetector } from "./drift/detector";
33
33
  export { ReportGenerator, ReportSanitizer, ReportTransformer, CloudClient, collectCIContext, } from "./report";
34
34
  export { SopsMergeDriver } from "./merge/driver";
35
35
  export type { MergeResult, MergeKey, MergeKeyStatus } from "./merge/driver";
36
+ export { mergeMetadataContents, mergeMetadataFiles } from "./merge/metadata-driver";
36
37
  export { ServiceIdentityManager } from "./service-identity/manager";
37
38
  export type { CreateServiceIdentityOptions } from "./service-identity/manager";
38
39
  export { StructureManager } from "./structure/manager";
@@ -51,4 +52,12 @@ export { ResetManager, describeScope, validateResetScope } from "./reset/manager
51
52
  export type { ResetScope, ResetOptions, ResetResult } from "./reset/manager";
52
53
  export { SyncManager } from "./sync";
53
54
  export type { SyncOptions, SyncPlan, SyncCellPlan, SyncResult } from "./sync";
55
+ export { PolicyParser, CLEF_POLICY_FILENAME } from "./policy/parser";
56
+ export { PolicyEvaluator } from "./policy/evaluator";
57
+ export { DEFAULT_POLICY } from "./policy/types";
58
+ export type { PolicyDocument, PolicyRotationConfig, PolicyEnvironmentRotation, FileRotationStatus, KeyRotationStatus, } from "./policy/types";
59
+ export { ComplianceGenerator } from "./compliance/generator";
60
+ export type { ComplianceDocument, ComplianceSummary, GenerateOptions } from "./compliance/types";
61
+ export { runCompliance } from "./compliance/run";
62
+ export type { RunComplianceOptions, RunComplianceResult } from "./compliance/run";
54
63
  //# sourceMappingURL=index.d.ts.map
package/dist/index.d.ts CHANGED
@@ -18,8 +18,8 @@ export { ConsumptionClient } from "./consumption/client";
18
18
  export { checkDependency, checkAll, assertSops, REQUIREMENTS } from "./dependencies/checker";
19
19
  export { generateAgeIdentity, deriveAgePublicKey, formatAgeKeyFile } from "./age/keygen";
20
20
  export type { AgeIdentity } from "./age/keygen";
21
- export { metadataPath, loadMetadata, saveMetadata, markPending, markPendingWithRetry, markResolved, getPendingKeys, isPending, generateRandomValue, } from "./pending/metadata";
22
- export type { PendingKey, PendingMetadata } from "./pending/metadata";
21
+ export { metadataPath, loadMetadata, saveMetadata, markPending, markPendingWithRetry, markResolved, getPendingKeys, isPending, recordRotation, removeRotation, getRotations, generateRandomValue, } from "./pending/metadata";
22
+ export type { PendingKey, RotationRecord, CellMetadata, PendingMetadata } from "./pending/metadata";
23
23
  export { ImportRunner } from "./import";
24
24
  export type { ImportFormat, ImportOptions, ImportResult, ParsedImport } from "./import";
25
25
  export { parse, parseDotenv, parseJson, parseYaml, detectFormat } from "./import/parsers";
@@ -33,6 +33,7 @@ export { DriftDetector } from "./drift/detector";
33
33
  export { ReportGenerator, ReportSanitizer, ReportTransformer, CloudClient, collectCIContext, } from "./report";
34
34
  export { SopsMergeDriver } from "./merge/driver";
35
35
  export type { MergeResult, MergeKey, MergeKeyStatus } from "./merge/driver";
36
+ export { mergeMetadataContents, mergeMetadataFiles } from "./merge/metadata-driver";
36
37
  export { ServiceIdentityManager } from "./service-identity/manager";
37
38
  export type { CreateServiceIdentityOptions } from "./service-identity/manager";
38
39
  export { StructureManager } from "./structure/manager";
@@ -51,4 +52,12 @@ export { ResetManager, describeScope, validateResetScope } from "./reset/manager
51
52
  export type { ResetScope, ResetOptions, ResetResult } from "./reset/manager";
52
53
  export { SyncManager } from "./sync";
53
54
  export type { SyncOptions, SyncPlan, SyncCellPlan, SyncResult } from "./sync";
55
+ export { PolicyParser, CLEF_POLICY_FILENAME } from "./policy/parser";
56
+ export { PolicyEvaluator } from "./policy/evaluator";
57
+ export { DEFAULT_POLICY } from "./policy/types";
58
+ export type { PolicyDocument, PolicyRotationConfig, PolicyEnvironmentRotation, FileRotationStatus, KeyRotationStatus, } from "./policy/types";
59
+ export { ComplianceGenerator } from "./compliance/generator";
60
+ export type { ComplianceDocument, ComplianceSummary, GenerateOptions } from "./compliance/types";
61
+ export { runCompliance } from "./compliance/run";
62
+ export type { RunComplianceOptions, RunComplianceResult } from "./compliance/run";
54
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}