renma 0.13.1 → 0.14.0

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,248 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { parseDocument } from "../markdown.js";
4
+ import { parseAssetMetadata } from "../metadata.js";
5
+ export class SuggestMetadataTargetError extends Error {
6
+ constructor(target, cause) {
7
+ super(`Could not read metadata target ${target}: ${readErrorReason(cause)}`);
8
+ this.name = "SuggestMetadataTargetError";
9
+ }
10
+ }
11
+ export async function runSuggestMetadataCommand(target, options = {}) {
12
+ const suggestion = await buildMetadataSuggestion(target, options);
13
+ const format = options.format ?? "prompt";
14
+ process.stdout.write(format === "json"
15
+ ? `${JSON.stringify(suggestion, null, 2)}\n`
16
+ : renderMetadataPrompt(suggestion));
17
+ return 0;
18
+ }
19
+ export async function buildMetadataSuggestion(target, options = {}) {
20
+ const absolutePath = path.resolve(target);
21
+ let content;
22
+ try {
23
+ content = await readFile(absolutePath, "utf8");
24
+ }
25
+ catch (error) {
26
+ throw new SuggestMetadataTargetError(target, error);
27
+ }
28
+ const outputPath = toPosix(target);
29
+ const initialKind = classifyPath(outputPath);
30
+ const document = parseDocument({
31
+ path: outputPath,
32
+ absolutePath,
33
+ kind: initialKind,
34
+ sizeBytes: Buffer.byteLength(content),
35
+ content,
36
+ });
37
+ const { metadata } = parseAssetMetadata(document);
38
+ const kind = initialKind === "context" && metadata.type === "context_lens"
39
+ ? "context_lens"
40
+ : initialKind;
41
+ const existingId = optionalText(metadataValueText(document.metadata.id));
42
+ const existingTitle = optionalText(metadataValueText(document.metadata.title));
43
+ const existingOwner = optionalText(metadata.owner);
44
+ const explicitOwner = optionalText(options.owner);
45
+ const candidateMetadata = {};
46
+ const candidateId = inferCandidateId(kind, outputPath);
47
+ const candidateTitle = mainHeadingTitle(document.headings);
48
+ if (!existingId && candidateId) {
49
+ candidateMetadata.id = candidateId;
50
+ }
51
+ if (!existingTitle && candidateTitle) {
52
+ candidateMetadata.title = candidateTitle;
53
+ }
54
+ if (!existingOwner && explicitOwner) {
55
+ candidateMetadata.owner = explicitOwner;
56
+ }
57
+ const blockedMetadata = [];
58
+ if (!existingOwner && !explicitOwner) {
59
+ blockedMetadata.push({
60
+ field: "owner",
61
+ reason: "No owner was explicitly provided. Missing owner is allowed.",
62
+ });
63
+ }
64
+ if (existingOwner && explicitOwner && existingOwner !== explicitOwner) {
65
+ blockedMetadata.push({
66
+ field: "owner",
67
+ reason: `Existing owner "${existingOwner}" differs from explicitly provided owner "${explicitOwner}". Do not change ownership without human review.`,
68
+ });
69
+ }
70
+ return {
71
+ path: outputPath,
72
+ kind,
73
+ suggestedMode: "metadata-retrofit",
74
+ ownerProvided: Boolean(explicitOwner),
75
+ instructions: buildInstructions({ existingOwner, explicitOwner }),
76
+ candidateMetadata,
77
+ blockedMetadata,
78
+ };
79
+ }
80
+ export function renderMetadataPrompt(suggestion) {
81
+ return `${[
82
+ "# Codex Task: Safely Retrofit Renma Metadata",
83
+ "",
84
+ "Update this existing Renma asset metadata safely.",
85
+ "",
86
+ "Asset:",
87
+ `- Path: \`${suggestion.path}\``,
88
+ `- Kind: \`${suggestion.kind}\``,
89
+ `- Mode: \`${suggestion.suggestedMode}\``,
90
+ "",
91
+ "Rules:",
92
+ ...suggestion.instructions.map((instruction) => `- ${instruction}`),
93
+ "",
94
+ "Candidate Metadata:",
95
+ ...metadataLines(suggestion.candidateMetadata),
96
+ "",
97
+ "Blocked Metadata:",
98
+ ...blockedMetadataLines(suggestion.blockedMetadata),
99
+ "",
100
+ "Verification:",
101
+ "- Run `renma scan .`.",
102
+ "- Run `renma ownership .`.",
103
+ "",
104
+ "Return a small reviewed patch. Do not rewrite the asset body.",
105
+ ].join("\n")}\n`;
106
+ }
107
+ function buildInstructions(input) {
108
+ return [
109
+ "Inspect the existing asset before editing.",
110
+ "Preserve the existing markdown body content.",
111
+ "Preserve existing frontmatter fields and values unless they are clearly invalid.",
112
+ "Add missing metadata only when it is clearly supported by file content, established Renma path conventions, or user-provided options.",
113
+ "Do not infer or invent owner.",
114
+ "Do not infer owner from Git history, file path, prose, or author.",
115
+ "Missing owner is allowed.",
116
+ "Avoid placeholder metadata.",
117
+ "Keep metadata compact.",
118
+ ownerInstruction(input),
119
+ "Run renma scan . and renma ownership . after editing.",
120
+ ];
121
+ }
122
+ function ownerInstruction(input) {
123
+ if (input.existingOwner) {
124
+ if (input.explicitOwner && input.existingOwner !== input.explicitOwner) {
125
+ return `Existing owner is ${input.existingOwner}. The explicitly provided owner ${input.explicitOwner} differs, so do not change ownership without human review.`;
126
+ }
127
+ return `Preserve existing owner: ${input.existingOwner}.`;
128
+ }
129
+ if (input.explicitOwner) {
130
+ return `Use owner: ${input.explicitOwner} because the user explicitly provided it.`;
131
+ }
132
+ return "Do not add owner unless the existing asset already declares one or a maintainer provides one.";
133
+ }
134
+ function metadataLines(candidateMetadata) {
135
+ const entries = Object.entries(candidateMetadata);
136
+ if (entries.length === 0) {
137
+ return ["- (none)"];
138
+ }
139
+ return entries.map(([field, value]) => `- ${field}: \`${value}\``);
140
+ }
141
+ function blockedMetadataLines(blockedMetadata) {
142
+ if (blockedMetadata.length === 0) {
143
+ return ["- (none)"];
144
+ }
145
+ return blockedMetadata.map((item) => `- ${item.field}: ${item.reason}`);
146
+ }
147
+ function classifyPath(filePath) {
148
+ const parts = pathParts(filePath);
149
+ const basename = parts.at(-1) ?? "";
150
+ if (basename === "SKILL.md")
151
+ return "skill";
152
+ if (parts.includes("lenses"))
153
+ return "context_lens";
154
+ if (parts.includes("contexts") || parts.includes("context"))
155
+ return "context";
156
+ if (parts.includes("profiles"))
157
+ return "profile";
158
+ if (parts.includes("references"))
159
+ return "reference";
160
+ if (parts.includes("examples"))
161
+ return "example";
162
+ if (basename === "AGENTS.md" || parts.includes(".agents"))
163
+ return "agent";
164
+ if (basename === "renma.config.json" || basename === ".renma.json") {
165
+ return "config";
166
+ }
167
+ return "unknown";
168
+ }
169
+ function inferCandidateId(kind, filePath) {
170
+ if (kind === "skill") {
171
+ return inferRootedId("skill", filePath, "skills", (parts) => parts.filter((part) => part !== "SKILL"));
172
+ }
173
+ if (kind === "context") {
174
+ return inferRootedId("context", filePath, "contexts");
175
+ }
176
+ if (kind === "context_lens") {
177
+ return inferRootedId("lens", filePath, "lenses");
178
+ }
179
+ return undefined;
180
+ }
181
+ function inferRootedId(prefix, filePath, rootSegment, transform = (parts) => parts) {
182
+ const parts = pathParts(stripExtension(filePath));
183
+ let rootIndex = lastIndexOf(parts, rootSegment);
184
+ if (rootIndex < 0 && rootSegment === "contexts") {
185
+ rootIndex = lastIndexOf(parts, "context");
186
+ }
187
+ if (rootIndex < 0)
188
+ return undefined;
189
+ const idParts = transform(parts.slice(rootIndex + 1))
190
+ .map(slugify)
191
+ .filter(Boolean);
192
+ if (idParts.length === 0)
193
+ return undefined;
194
+ if (idParts[0] === prefix)
195
+ return idParts.join(".");
196
+ return [prefix, ...idParts].join(".");
197
+ }
198
+ function mainHeadingTitle(headings) {
199
+ return headings.find((heading) => heading.depth === 1)?.text.trim();
200
+ }
201
+ function metadataValueText(value) {
202
+ return typeof value === "string" ? value : undefined;
203
+ }
204
+ function optionalText(value) {
205
+ const trimmed = value?.trim();
206
+ return trimmed ? trimmed : undefined;
207
+ }
208
+ function stripExtension(value) {
209
+ return value.replace(/\.[^/.]+$/, "");
210
+ }
211
+ function pathParts(value) {
212
+ return toPosix(value).split("/").filter(Boolean);
213
+ }
214
+ function toPosix(value) {
215
+ return value.replace(/\\/g, "/");
216
+ }
217
+ function lastIndexOf(values, target) {
218
+ for (let index = values.length - 1; index >= 0; index -= 1) {
219
+ if (values[index] === target)
220
+ return index;
221
+ }
222
+ return -1;
223
+ }
224
+ function slugify(value) {
225
+ return value
226
+ .trim()
227
+ .toLowerCase()
228
+ .replace(/[^a-z0-9]+/g, "-")
229
+ .replace(/^-+|-+$/g, "");
230
+ }
231
+ function readErrorReason(error) {
232
+ const code = errorCode(error);
233
+ if (code === "ENOENT")
234
+ return "file does not exist";
235
+ if (code === "EISDIR")
236
+ return "target is a directory";
237
+ if (code === "EACCES" || code === "EPERM")
238
+ return "permission denied";
239
+ return error instanceof Error ? error.message : String(error);
240
+ }
241
+ function errorCode(error) {
242
+ if (typeof error !== "object" || error === null || !("code" in error)) {
243
+ return undefined;
244
+ }
245
+ const code = error.code;
246
+ return typeof code === "string" ? code : undefined;
247
+ }
248
+ //# sourceMappingURL=suggest-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-metadata.js","sourceRoot":"","sources":["../../src/commands/suggest-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ConfigOverrides } from "../config.js";
2
+ import type { TrustGraph } from "../trust-graph.js";
3
+ export type TrustGraphFormat = "json" | "markdown";
4
+ export declare function runTrustGraphCommand(targetPath: string, options: {
5
+ format: TrustGraphFormat;
6
+ overrides?: ConfigOverrides;
7
+ }): Promise<number>;
8
+ export declare function trustGraph(targetPath: string, overrides?: ConfigOverrides): Promise<TrustGraph>;
9
+ export declare function formatTrustGraphJson(graph: TrustGraph): string;
10
+ export declare function formatTrustGraphMarkdown(graph: TrustGraph): string;
11
+ //# sourceMappingURL=trust-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-graph.d.ts","sourceRoot":"","sources":["../../src/commands/trust-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EACV,UAAU,EAKX,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AAgCnD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,CAAC,EAAE,eAAe,CAAA;CAAE,GACjE,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAMrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE9D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CA4ElE"}
@@ -0,0 +1,136 @@
1
+ import { scan } from "../scanner.js";
2
+ const NODE_TYPES = [
3
+ "asset",
4
+ "owner",
5
+ "lifecycle_status",
6
+ "security_profile",
7
+ "effective_policy",
8
+ "diagnostic",
9
+ ];
10
+ const EDGE_TYPES = [
11
+ "owned_by",
12
+ "has_lifecycle_status",
13
+ "declares_dependency",
14
+ "references",
15
+ "selects_security_profile",
16
+ "inherits_policy",
17
+ "has_effective_policy",
18
+ "has_diagnostic",
19
+ ];
20
+ const REVIEW_SEVERITY_ORDER = [
21
+ "error",
22
+ "critical",
23
+ "high",
24
+ "medium",
25
+ "warning",
26
+ "low",
27
+ "info",
28
+ ];
29
+ export async function runTrustGraphCommand(targetPath, options) {
30
+ const graph = await trustGraph(targetPath, options.overrides ?? {});
31
+ process.stdout.write(formatTrustGraph(graph, options.format));
32
+ return 0;
33
+ }
34
+ export async function trustGraph(targetPath, overrides = {}) {
35
+ const result = await scan(targetPath, overrides);
36
+ if (!result.trustGraph) {
37
+ throw new Error("scan did not produce Trust Graph evidence.");
38
+ }
39
+ return result.trustGraph;
40
+ }
41
+ export function formatTrustGraphJson(graph) {
42
+ return `${JSON.stringify(graph, null, 2)}\n`;
43
+ }
44
+ export function formatTrustGraphMarkdown(graph) {
45
+ const lines = [
46
+ "# Renma Trust Graph",
47
+ "",
48
+ `- Schema: ${graph.schemaVersion}`,
49
+ `- Assets: ${graph.summary.assetCount}`,
50
+ `- Nodes: ${graph.summary.nodeCount}`,
51
+ `- Edges: ${graph.summary.edgeCount}`,
52
+ `- Findings: ${graph.summary.findingCount}`,
53
+ "",
54
+ "## Node Counts",
55
+ "",
56
+ "| Type | Count |",
57
+ "| --- | ---: |",
58
+ ...NODE_TYPES.map((type) => `| ${type} | ${graph.summary.nodeTypeCounts[type]} |`),
59
+ "",
60
+ "## Edge Counts",
61
+ "",
62
+ "| Type | Count |",
63
+ "| --- | ---: |",
64
+ ...EDGE_TYPES.map((type) => `| ${type} | ${graph.summary.edgeTypeCounts[type]} |`),
65
+ "",
66
+ "## Trust Evidence Highlights",
67
+ "",
68
+ `- Owned assets: ${graph.summary.edgeTypeCounts.owned_by}/${graph.summary.assetCount}`,
69
+ `- Assets with lifecycle status: ${graph.summary.edgeTypeCounts.has_lifecycle_status}/${graph.summary.assetCount}`,
70
+ `- Selected security profiles: ${graph.summary.edgeTypeCounts.selects_security_profile}`,
71
+ `- Effective policy fingerprints: ${graph.summary.nodeTypeCounts.effective_policy}`,
72
+ `- Diagnostics linked to assets: ${graph.summary.edgeTypeCounts.has_diagnostic}`,
73
+ "",
74
+ "## Finding Severity Counts",
75
+ "",
76
+ "| Severity | Count |",
77
+ "| --- | ---: |",
78
+ `| error | ${graph.summary.findingSeverityCounts.error} |`,
79
+ `| warning | ${graph.summary.findingSeverityCounts.warning} |`,
80
+ `| info | ${graph.summary.findingSeverityCounts.info} |`,
81
+ `| critical | ${graph.summary.findingSeverityCounts.critical} |`,
82
+ `| high | ${graph.summary.findingSeverityCounts.high} |`,
83
+ `| medium | ${graph.summary.findingSeverityCounts.medium} |`,
84
+ `| low | ${graph.summary.findingSeverityCounts.low} |`,
85
+ "",
86
+ "## Finding Risk Class Counts",
87
+ "",
88
+ "| Risk Class | Count |",
89
+ "| --- | ---: |",
90
+ `| violation | ${graph.summary.riskClassCounts.violation} |`,
91
+ `| suspicious | ${graph.summary.riskClassCounts.suspicious} |`,
92
+ `| advisory | ${graph.summary.riskClassCounts.advisory} |`,
93
+ `| unclassified | ${graph.summary.riskClassCounts.unclassified} |`,
94
+ "",
95
+ "## Top Findings",
96
+ "",
97
+ ];
98
+ const topFindings = [...graph.findings]
99
+ .sort(compareFindingsForReview)
100
+ .slice(0, 20);
101
+ if (topFindings.length === 0) {
102
+ lines.push("- (none)");
103
+ }
104
+ else {
105
+ for (const finding of topFindings) {
106
+ const identifier = finding.id ?? finding.code ?? finding.source;
107
+ const risk = finding.riskClass ? ` [${finding.riskClass}]` : "";
108
+ const path = finding.path ? ` ${finding.path}` : "";
109
+ lines.push(`- ${finding.severity}${risk} ${identifier}${path}: ${singleLine(finding.message)}`);
110
+ }
111
+ }
112
+ return `${lines.join("\n")}\n`;
113
+ }
114
+ function formatTrustGraph(graph, format) {
115
+ if (format === "json")
116
+ return formatTrustGraphJson(graph);
117
+ return formatTrustGraphMarkdown(graph);
118
+ }
119
+ function compareFindingsForReview(left, right) {
120
+ const bySeverity = REVIEW_SEVERITY_ORDER.indexOf(left.severity) -
121
+ REVIEW_SEVERITY_ORDER.indexOf(right.severity);
122
+ if (bySeverity !== 0)
123
+ return bySeverity;
124
+ const byPath = (left.path ?? "").localeCompare(right.path ?? "");
125
+ if (byPath !== 0)
126
+ return byPath;
127
+ const byLine = (left.evidence?.startLine ?? 0) - (right.evidence?.startLine ?? 0);
128
+ if (byLine !== 0)
129
+ return byLine;
130
+ return ((left.id ?? left.code ?? "").localeCompare(right.id ?? right.code ?? "") ||
131
+ left.message.localeCompare(right.message));
132
+ }
133
+ function singleLine(value) {
134
+ return value.replace(/\r?\n/g, " ");
135
+ }
136
+ //# sourceMappingURL=trust-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-graph.js","sourceRoot":"","sources":["../../src/commands/trust-graph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAW/D,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,YAAY,CAAC;AAElE,sEAAsE;AACtE,wBAAsB,IAAI,CACxB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAgDrB"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAe/D,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,YAAY,CAAC;AAElE,sEAAsE;AACtE,wBAAsB,IAAI,CACxB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,UAAU,CAAC,CA2DrB"}
package/dist/scanner.js CHANGED
@@ -9,14 +9,16 @@ import { parseDocument } from "./markdown.js";
9
9
  import { detectRepeatedContextPatterns } from "./repeated-context.js";
10
10
  import { runRules } from "./rules.js";
11
11
  import { securityDiagnosticFindings } from "./security-diagnostics.js";
12
- import { summarizeSecurityPolicyInventory } from "./security-policy-inventory.js";
12
+ import { collectSecurityPolicyAssetEvidence, summarizeSecurityPolicyInventory, } from "./security-policy-inventory.js";
13
13
  import { applySuppressions } from "./suppressions.js";
14
+ import { buildTrustGraph } from "./trust-graph.js";
14
15
  /** Run the complete deterministic scan pipeline for a target path. */
15
16
  export async function scan(targetPath, overrides = {}) {
16
17
  const root = path.resolve(targetPath);
17
18
  const { config, configPath } = await loadConfig(root, overrides);
18
19
  const { artifacts, diagnostics } = await discoverArtifacts(root, config);
19
20
  const securityPolicyInventory = summarizeSecurityPolicyInventory(artifacts, config.security);
21
+ const securityPolicies = collectSecurityPolicyAssetEvidence(artifacts, config.security);
20
22
  const documents = artifacts.map(parseDocument);
21
23
  const catalogResult = buildCatalog(documents);
22
24
  const contextLens = summarizeContextLensGovernance(documents, catalogResult.catalog);
@@ -41,6 +43,12 @@ export async function scan(targetPath, overrides = {}) {
41
43
  findings: suppressed.findings,
42
44
  diagnostics: scanDiagnostics,
43
45
  });
46
+ const trustGraph = buildTrustGraph({
47
+ catalog: catalogResult.catalog,
48
+ findings: suppressed.findings,
49
+ diagnostics: scanDiagnostics,
50
+ securityPolicies,
51
+ });
44
52
  return {
45
53
  root,
46
54
  ...(configPath ? { configPath } : {}),
@@ -48,6 +56,7 @@ export async function scan(targetPath, overrides = {}) {
48
56
  format: config.format,
49
57
  contextLens: contextLens.summary,
50
58
  securityPolicyInventory,
59
+ trustGraph,
51
60
  findings: suppressed.findings,
52
61
  diagnostics: scanDiagnostics,
53
62
  diagnosticsV2,
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type SecurityPolicy } from "./security-policy.js";
2
- import type { Artifact, ArtifactKind, SecurityConfig } from "./types.js";
2
+ import type { Artifact, ArtifactKind, Evidence, SecurityConfig } from "./types.js";
3
3
  type InventoryArtifactKind = ArtifactKind;
4
4
  export interface PolicyBooleanCounts {
5
5
  true: number;
@@ -47,7 +47,34 @@ export interface SecurityPolicyInventorySummary {
47
47
  kind: ArtifactKind;
48
48
  }>;
49
49
  }
50
+ export interface EffectiveSecurityPolicyEvidence {
51
+ fingerprint: string;
52
+ allowedData: string[];
53
+ forbiddenInputs: string[];
54
+ networkAllowed: boolean | null;
55
+ externalUploadAllowed: boolean | null;
56
+ secretsAllowed: boolean | null;
57
+ humanApprovalRequired: boolean | null;
58
+ approvedNetworkDestinations: string[];
59
+ approvedUploadDestinations: string[];
60
+ disallowedCommands: string[];
61
+ }
62
+ export type SecurityProfileResolution = "none" | "resolved" | "missing" | "cyclic";
63
+ export interface SecurityPolicyAssetEvidence {
64
+ path: string;
65
+ kind: ArtifactKind;
66
+ hasLocalPolicyMetadata: boolean;
67
+ selectedSecurityProfile?: string;
68
+ profileResolution: SecurityProfileResolution;
69
+ profileChain: string[];
70
+ effectivePolicy: EffectiveSecurityPolicyEvidence;
71
+ evidence: {
72
+ selectedSecurityProfile?: Evidence;
73
+ policyFields: Evidence[];
74
+ };
75
+ }
50
76
  export declare function summarizeSecurityPolicyInventory(artifacts: Artifact[], config?: SecurityConfig): SecurityPolicyInventorySummary;
77
+ export declare function collectSecurityPolicyAssetEvidence(artifacts: Artifact[], config?: SecurityConfig): SecurityPolicyAssetEvidence[];
51
78
  export declare function zeroSecurityPolicyInventorySummary(): SecurityPolicyInventorySummary;
52
79
  export declare function isPolicyInventoryArtifact(artifact: Artifact, hasLocalMetadata?: boolean): boolean;
53
80
  export declare function hasLocalSecurityPolicyMetadata(policy: SecurityPolicy): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"security-policy-inventory.d.ts","sourceRoot":"","sources":["../src/security-policy-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzE,KAAK,qBAAqB,GAAG,YAAY,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,cAAc,EAAE,mBAAmB,CAAC;IACpC,qBAAqB,EAAE,mBAAmB,CAAC;IAC3C,cAAc,EAAE,mBAAmB,CAAC;IACpC,qBAAqB,EAAE,mBAAmB,CAAC;IAC3C,+BAA+B,EAAE,MAAM,CAAC;IACxC,8BAA8B,EAAE,MAAM,CAAC;IACvC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C,CAAC;IACF,8BAA8B,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,6BAA6B,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,kBAAkB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,mBAAmB,EAAE,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,YAAY,CAAC;KACpB,CAAC,CAAC;CACJ;AAmCD,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,CAAC,EAAE,cAAc,GACtB,8BAA8B,CAwEhC;AAED,wBAAgB,kCAAkC,IAAI,8BAA8B,CA2BnF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,UAEf,GACA,OAAO,CAET;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAIT"}
1
+ {"version":3,"file":"security-policy-inventory.d.ts","sourceRoot":"","sources":["../src/security-policy-inventory.ts"],"names":[],"mappings":"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"}