renma 0.15.2 → 0.16.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.
- package/CHANGELOG.md +20 -1
- package/README.md +134 -34
- package/dist/agent-skills.d.ts +77 -0
- package/dist/agent-skills.d.ts.map +1 -0
- package/dist/agent-skills.js +468 -0
- package/dist/agent-skills.js.map +1 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +38 -5
- package/dist/catalog.js.map +1 -1
- package/dist/cli-help.d.ts +7 -7
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +13 -2
- package/dist/cli-help.js.map +1 -1
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +45 -14
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/commands/suggest-metadata.d.ts +3 -1
- package/dist/commands/suggest-metadata.d.ts.map +1 -1
- package/dist/commands/suggest-metadata.js +179 -6
- package/dist/commands/suggest-metadata.js.map +1 -1
- package/dist/diagnostic-ids.d.ts +29 -0
- package/dist/diagnostic-ids.d.ts.map +1 -1
- package/dist/diagnostic-ids.js +28 -0
- package/dist/diagnostic-ids.js.map +1 -1
- package/dist/discovery.d.ts +22 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +124 -21
- package/dist/discovery.js.map +1 -1
- package/dist/metadata.d.ts +3 -1
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +166 -29
- package/dist/metadata.js.map +1 -1
- package/dist/model.d.ts +1 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +16 -1
- package/dist/report.js.map +1 -1
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +33 -22
- package/dist/rules.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +3 -1
- package/dist/scanner.js.map +1 -1
- package/dist/security-diagnostics.d.ts.map +1 -1
- package/dist/security-diagnostics.js +98 -35
- package/dist/security-diagnostics.js.map +1 -1
- package/dist/security-policy-inventory.js +11 -4
- package/dist/security-policy-inventory.js.map +1 -1
- package/dist/security-policy.d.ts +27 -1
- package/dist/security-policy.d.ts.map +1 -1
- package/dist/security-policy.js +247 -34
- package/dist/security-policy.js.map +1 -1
- package/dist/skill-migration.d.ts +30 -0
- package/dist/skill-migration.d.ts.map +1 -0
- package/dist/skill-migration.js +566 -0
- package/dist/skill-migration.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/yaml-frontmatter.d.ts +26 -0
- package/dist/yaml-frontmatter.d.ts.map +1 -0
- package/dist/yaml-frontmatter.js +114 -0
- package/dist/yaml-frontmatter.js.map +1 -0
- package/package.json +4 -1
package/dist/metadata.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inspectAgentSkill } from "./agent-skills.js";
|
|
1
2
|
import { isIsoDate, parseDayDuration } from "./freshness.js";
|
|
2
3
|
const STATUSES = [
|
|
3
4
|
"experimental",
|
|
@@ -5,25 +6,61 @@ const STATUSES = [
|
|
|
5
6
|
"deprecated",
|
|
6
7
|
"archived",
|
|
7
8
|
];
|
|
9
|
+
const CANONICAL_SKILL_METADATA_KEYS = {
|
|
10
|
+
id: "renma.id",
|
|
11
|
+
title: "renma.title",
|
|
12
|
+
version: "renma.version",
|
|
13
|
+
owner: "renma.owner",
|
|
14
|
+
status: "renma.status",
|
|
15
|
+
purpose: "renma.purpose",
|
|
16
|
+
last_reviewed_at: "renma.last-reviewed-at",
|
|
17
|
+
review_cycle: "renma.review-cycle",
|
|
18
|
+
expires_at: "renma.expires-at",
|
|
19
|
+
tags: "renma.tags",
|
|
20
|
+
when_to_use: "renma.when-to-use",
|
|
21
|
+
when_not_to_use: "renma.when-not-to-use",
|
|
22
|
+
requires_context: "renma.requires-context",
|
|
23
|
+
optional_context: "renma.optional-context",
|
|
24
|
+
requires_lens: "renma.requires-lens",
|
|
25
|
+
optional_lens: "renma.optional-lens",
|
|
26
|
+
conflicts: "renma.conflicts",
|
|
27
|
+
superseded_by: "renma.superseded-by",
|
|
28
|
+
};
|
|
29
|
+
const CANONICAL_SKILL_KEY_TO_OPERATIONAL = new Map(Object.entries(CANONICAL_SKILL_METADATA_KEYS).map(([operationalKey, canonicalKey]) => [canonicalKey, operationalKey]));
|
|
30
|
+
const CANONICAL_LIST_KEYS = new Set([
|
|
31
|
+
"tags",
|
|
32
|
+
"when_to_use",
|
|
33
|
+
"when_not_to_use",
|
|
34
|
+
"requires_context",
|
|
35
|
+
"optional_context",
|
|
36
|
+
"requires_lens",
|
|
37
|
+
"optional_lens",
|
|
38
|
+
"conflicts",
|
|
39
|
+
"superseded_by",
|
|
40
|
+
]);
|
|
8
41
|
/** Normalize parsed frontmatter into asset metadata plus validation diagnostics. */
|
|
9
42
|
export function parseAssetMetadata(document) {
|
|
10
43
|
const diagnostics = [];
|
|
11
|
-
const
|
|
44
|
+
const source = operationalMetadataSource(document, diagnostics);
|
|
45
|
+
const rawStatusText = metadataText(source.values.status);
|
|
46
|
+
const rawStatus = source.canonicalSkill
|
|
47
|
+
? rawStatusText?.trim()
|
|
48
|
+
: rawStatusText;
|
|
12
49
|
const status = parseStatus(rawStatus);
|
|
13
|
-
const lastReviewedAt = optionalText(metadataText(
|
|
14
|
-
const reviewCycle = optionalText(metadataText(
|
|
15
|
-
const expiresAt = optionalText(metadataText(
|
|
50
|
+
const lastReviewedAt = optionalText(metadataText(source.values.last_reviewed_at));
|
|
51
|
+
const reviewCycle = optionalText(metadataText(source.values.review_cycle));
|
|
52
|
+
const expiresAt = optionalText(metadataText(source.values.expires_at));
|
|
16
53
|
const metadata = {
|
|
17
|
-
tags:
|
|
18
|
-
whenToUse:
|
|
19
|
-
whenNotToUse:
|
|
20
|
-
requiresContext:
|
|
21
|
-
optionalContext:
|
|
22
|
-
conflicts:
|
|
23
|
-
supersededBy:
|
|
54
|
+
tags: operationalListValue(document, source, "tags", diagnostics),
|
|
55
|
+
whenToUse: operationalListValue(document, source, "when_to_use", diagnostics),
|
|
56
|
+
whenNotToUse: operationalListValue(document, source, "when_not_to_use", diagnostics),
|
|
57
|
+
requiresContext: operationalListValue(document, source, "requires_context", diagnostics),
|
|
58
|
+
optionalContext: operationalListValue(document, source, "optional_context", diagnostics),
|
|
59
|
+
conflicts: operationalListValue(document, source, "conflicts", diagnostics),
|
|
60
|
+
supersededBy: operationalListValue(document, source, "superseded_by", diagnostics),
|
|
24
61
|
};
|
|
25
62
|
if (rawStatus !== undefined && status === undefined) {
|
|
26
|
-
const evidence = metadataFieldEvidence(
|
|
63
|
+
const evidence = metadataFieldEvidence(source, "status");
|
|
27
64
|
diagnostics.push({
|
|
28
65
|
severity: "warning",
|
|
29
66
|
path: document.artifact.path,
|
|
@@ -31,37 +68,42 @@ export function parseAssetMetadata(document) {
|
|
|
31
68
|
...(evidence ? { evidence } : {}),
|
|
32
69
|
});
|
|
33
70
|
}
|
|
34
|
-
assignOptional(metadata, "id", optionalText(metadataText(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
71
|
+
assignOptional(metadata, "id", optionalText(metadataText(source.values.id)));
|
|
72
|
+
if (document.artifact.kind === "skill") {
|
|
73
|
+
assignOptional(metadata, "title", optionalText(metadataText(source.values.title)));
|
|
74
|
+
}
|
|
75
|
+
assignOptional(metadata, "type", optionalText(metadataText(source.values.type)));
|
|
76
|
+
assignOptional(metadata, "version", optionalText(metadataText(source.values.version)));
|
|
77
|
+
assignOptional(metadata, "owner", optionalText(metadataText(source.values.owner)));
|
|
38
78
|
assignOptional(metadata, "status", status);
|
|
39
|
-
assignOptional(metadata, "purpose", optionalText(metadataText(
|
|
79
|
+
assignOptional(metadata, "purpose", optionalText(metadataText(source.values.purpose)));
|
|
40
80
|
assignOptional(metadata, "lastReviewedAt", lastReviewedAt);
|
|
41
81
|
assignOptional(metadata, "reviewCycle", reviewCycle);
|
|
42
82
|
assignOptional(metadata, "expiresAt", expiresAt);
|
|
43
|
-
assignOptionalList(metadata, "appliesTo",
|
|
44
|
-
assignOptionalList(metadata, "focus",
|
|
45
|
-
assignOptionalList(metadata, "expectedOutputs",
|
|
46
|
-
assignOptionalList(metadata, "requiresLens",
|
|
47
|
-
assignOptionalList(metadata, "optionalLens",
|
|
83
|
+
assignOptionalList(metadata, "appliesTo", operationalListValue(document, source, "applies_to", diagnostics));
|
|
84
|
+
assignOptionalList(metadata, "focus", operationalListValue(document, source, "focus", diagnostics));
|
|
85
|
+
assignOptionalList(metadata, "expectedOutputs", operationalListValue(document, source, "expected_outputs", diagnostics));
|
|
86
|
+
assignOptionalList(metadata, "requiresLens", operationalListValue(document, source, "requires_lens", diagnostics));
|
|
87
|
+
assignOptionalList(metadata, "optionalLens", operationalListValue(document, source, "optional_lens", diagnostics));
|
|
48
88
|
if (lastReviewedAt !== undefined && !isIsoDate(lastReviewedAt)) {
|
|
49
|
-
diagnostics.push(invalidMetadataDiagnostic(document, "last_reviewed_at", `Invalid last_reviewed_at "${lastReviewedAt}". Expected ISO date YYYY-MM-DD.`));
|
|
89
|
+
diagnostics.push(invalidMetadataDiagnostic(document, source, "last_reviewed_at", `Invalid last_reviewed_at "${lastReviewedAt}". Expected ISO date YYYY-MM-DD.`));
|
|
50
90
|
}
|
|
51
91
|
if (expiresAt !== undefined && !isIsoDate(expiresAt)) {
|
|
52
|
-
diagnostics.push(invalidMetadataDiagnostic(document, "expires_at", `Invalid expires_at "${expiresAt}". Expected ISO date YYYY-MM-DD.`));
|
|
92
|
+
diagnostics.push(invalidMetadataDiagnostic(document, source, "expires_at", `Invalid expires_at "${expiresAt}". Expected ISO date YYYY-MM-DD.`));
|
|
53
93
|
}
|
|
54
94
|
if (reviewCycle !== undefined &&
|
|
55
95
|
parseDayDuration(reviewCycle) === undefined) {
|
|
56
|
-
diagnostics.push(invalidMetadataDiagnostic(document, "review_cycle", `Invalid review_cycle "${reviewCycle}". Expected supported ISO 8601 day duration such as P90D.`));
|
|
96
|
+
diagnostics.push(invalidMetadataDiagnostic(document, source, "review_cycle", `Invalid review_cycle "${reviewCycle}". Expected supported ISO 8601 day duration such as P90D.`));
|
|
57
97
|
}
|
|
58
98
|
return {
|
|
59
99
|
metadata,
|
|
100
|
+
metadataFields: source.fields,
|
|
101
|
+
metadataListItems: source.listItems,
|
|
60
102
|
diagnostics,
|
|
61
103
|
};
|
|
62
104
|
}
|
|
63
|
-
function invalidMetadataDiagnostic(document, field, message) {
|
|
64
|
-
const evidence = metadataFieldEvidence(
|
|
105
|
+
function invalidMetadataDiagnostic(document, source, field, message) {
|
|
106
|
+
const evidence = metadataFieldEvidence(source, field);
|
|
65
107
|
return {
|
|
66
108
|
severity: "warning",
|
|
67
109
|
path: document.artifact.path,
|
|
@@ -69,6 +111,101 @@ function invalidMetadataDiagnostic(document, field, message) {
|
|
|
69
111
|
...(evidence ? { evidence } : {}),
|
|
70
112
|
};
|
|
71
113
|
}
|
|
114
|
+
function operationalMetadataSource(document, diagnostics) {
|
|
115
|
+
if (document.artifact.kind !== "skill") {
|
|
116
|
+
return legacyMetadataSource(document);
|
|
117
|
+
}
|
|
118
|
+
const inspection = inspectAgentSkill(document);
|
|
119
|
+
return canonicalSkillMetadataSource(document, inspection.frontmatter, inspection.validation.valid, diagnostics);
|
|
120
|
+
}
|
|
121
|
+
function legacyMetadataSource(document) {
|
|
122
|
+
return {
|
|
123
|
+
values: document.metadata,
|
|
124
|
+
fields: document.metadataFields,
|
|
125
|
+
listItems: document.metadataListItems,
|
|
126
|
+
canonicalSkill: false,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function canonicalSkillMetadataSource(document, frontmatter, validAgentSkill, diagnostics) {
|
|
130
|
+
const values = {};
|
|
131
|
+
const fields = {};
|
|
132
|
+
const listItems = {};
|
|
133
|
+
const duplicateMetadataMapping = frontmatter.duplicateFields.find((field) => field.key === "metadata");
|
|
134
|
+
if (duplicateMetadataMapping) {
|
|
135
|
+
diagnostics.push({
|
|
136
|
+
severity: "warning",
|
|
137
|
+
path: document.artifact.path,
|
|
138
|
+
message: "Canonical Agent Skills metadata is ambiguous because the top-level metadata mapping is declared more than once. No metadata.renma.* values were selected.",
|
|
139
|
+
evidence: {
|
|
140
|
+
path: document.artifact.path,
|
|
141
|
+
startLine: duplicateMetadataMapping.startLine,
|
|
142
|
+
endLine: duplicateMetadataMapping.endLine,
|
|
143
|
+
snippet: document.lines
|
|
144
|
+
.slice(duplicateMetadataMapping.startLine - 1, duplicateMetadataMapping.endLine)
|
|
145
|
+
.join("\n"),
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (!validAgentSkill) {
|
|
150
|
+
return { values, fields, listItems, canonicalSkill: true };
|
|
151
|
+
}
|
|
152
|
+
const duplicateKeys = new Set(frontmatter.duplicateMetadataKeys.map((field) => field.key));
|
|
153
|
+
for (const field of frontmatter.metadataFields) {
|
|
154
|
+
// Agent Skills validation diagnoses duplicate canonical metadata keys. Do not guess which
|
|
155
|
+
// duplicate value should become operational, and never fall back to legacy.
|
|
156
|
+
if (duplicateKeys.has(field.key))
|
|
157
|
+
continue;
|
|
158
|
+
const operationalKey = CANONICAL_SKILL_KEY_TO_OPERATIONAL.get(field.key);
|
|
159
|
+
if (!operationalKey)
|
|
160
|
+
continue;
|
|
161
|
+
values[operationalKey] = field.value;
|
|
162
|
+
fields[operationalKey] = {
|
|
163
|
+
path: document.artifact.path,
|
|
164
|
+
key: field.key,
|
|
165
|
+
startLine: field.startLine,
|
|
166
|
+
endLine: field.endLine,
|
|
167
|
+
raw: document.lines.slice(field.startLine - 1, field.endLine).join("\n"),
|
|
168
|
+
};
|
|
169
|
+
listItems[operationalKey] = [];
|
|
170
|
+
}
|
|
171
|
+
return { values, fields, listItems, canonicalSkill: true };
|
|
172
|
+
}
|
|
173
|
+
function operationalListValue(document, source, key, diagnostics) {
|
|
174
|
+
const value = source.values[key];
|
|
175
|
+
if (!source.canonicalSkill) {
|
|
176
|
+
return listValue(value);
|
|
177
|
+
}
|
|
178
|
+
if (!CANONICAL_LIST_KEYS.has(key)) {
|
|
179
|
+
return [];
|
|
180
|
+
}
|
|
181
|
+
if (value === undefined)
|
|
182
|
+
return [];
|
|
183
|
+
const canonicalKey = CANONICAL_SKILL_METADATA_KEYS[key];
|
|
184
|
+
if (typeof value !== "string") {
|
|
185
|
+
diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must be a string containing a JSON array of strings"));
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
let parsed;
|
|
189
|
+
try {
|
|
190
|
+
parsed = JSON.parse(value);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must contain valid JSON for an array of strings"));
|
|
194
|
+
return [];
|
|
195
|
+
}
|
|
196
|
+
if (!Array.isArray(parsed)) {
|
|
197
|
+
diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must contain a JSON array"));
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
if (parsed.some((item) => typeof item !== "string")) {
|
|
201
|
+
diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must contain only string array members"));
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
return parsed.map((item) => item.trim()).filter(Boolean);
|
|
205
|
+
}
|
|
206
|
+
function invalidCanonicalListDiagnostic(document, source, operationalKey, canonicalKey, reason) {
|
|
207
|
+
return invalidMetadataDiagnostic(document, source, operationalKey, `Invalid metadata.${canonicalKey}: ${reason}.`);
|
|
208
|
+
}
|
|
72
209
|
function parseStatus(value) {
|
|
73
210
|
if (!value)
|
|
74
211
|
return undefined;
|
|
@@ -94,8 +231,8 @@ function listValue(value) {
|
|
|
94
231
|
function metadataText(value) {
|
|
95
232
|
return typeof value === "string" ? value : undefined;
|
|
96
233
|
}
|
|
97
|
-
function metadataFieldEvidence(
|
|
98
|
-
const field =
|
|
234
|
+
function metadataFieldEvidence(source, key) {
|
|
235
|
+
const field = source.fields[key];
|
|
99
236
|
if (!field)
|
|
100
237
|
return undefined;
|
|
101
238
|
return {
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,MAAM,QAAQ,GAAkB;IAC9B,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,UAAU;CACX,CAAC;AAEF,MAAM,6BAA6B,GAAG;IACpC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;IACxB,gBAAgB,EAAE,wBAAwB;IAC1C,YAAY,EAAE,oBAAoB;IAClC,UAAU,EAAE,kBAAkB;IAC9B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,mBAAmB;IAChC,eAAe,EAAE,uBAAuB;IACxC,gBAAgB,EAAE,wBAAwB;IAC1C,gBAAgB,EAAE,wBAAwB;IAC1C,aAAa,EAAE,qBAAqB;IACpC,aAAa,EAAE,qBAAqB;IACpC,SAAS,EAAE,iBAAiB;IAC5B,aAAa,EAAE,qBAAqB;CAC5B,CAAC;AAIX,MAAM,kCAAkC,GAAG,IAAI,GAAG,CAChD,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAC/C,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CACnE,CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAA+B;IAChE,MAAM;IACN,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,WAAW;IACX,eAAe;CAChB,CAAC,CAAC;AASH,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IAMzD,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc;QACrC,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE;QACvB,CAAC,CAAC,aAAa,CAAC;IAClB,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,YAAY,CACjC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAC7C,CAAC;IACF,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAkB;QAC9B,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;QACjE,SAAS,EAAE,oBAAoB,CAC7B,QAAQ,EACR,MAAM,EACN,aAAa,EACb,WAAW,CACZ;QACD,YAAY,EAAE,oBAAoB,CAChC,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,WAAW,CACZ;QACD,eAAe,EAAE,oBAAoB,CACnC,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,WAAW,CACZ;QACD,eAAe,EAAE,oBAAoB,CACnC,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,WAAW,CACZ;QACD,SAAS,EAAE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;QAC3E,YAAY,EAAE,oBAAoB,CAChC,QAAQ,EACR,MAAM,EACN,eAAe,EACf,WAAW,CACZ;KACF,CAAC;IAEF,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;YAC5B,OAAO,EAAE,mBAAmB,SAAS,uBAAuB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAClF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,cAAc,CACZ,QAAQ,EACR,OAAO,EACP,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,cAAc,CACZ,QAAQ,EACR,MAAM,EACN,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;IACF,cAAc,CACZ,QAAQ,EACR,SAAS,EACT,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAClD,CAAC;IACF,cAAc,CACZ,QAAQ,EACR,OAAO,EACP,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAChD,CAAC;IACF,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,CACZ,QAAQ,EACR,SAAS,EACT,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAClD,CAAC;IACF,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC3D,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACrD,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,kBAAkB,CAChB,QAAQ,EACR,WAAW,EACX,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAClE,CAAC;IACF,kBAAkB,CAChB,QAAQ,EACR,OAAO,EACP,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAC7D,CAAC;IACF,kBAAkB,CAChB,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,CAAC,CACxE,CAAC;IACF,kBAAkB,CAChB,QAAQ,EACR,cAAc,EACd,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,CACrE,CAAC;IACF,kBAAkB,CAChB,QAAQ,EACR,cAAc,EACd,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,CACrE,CAAC;IAEF,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/D,WAAW,CAAC,IAAI,CACd,yBAAyB,CACvB,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,6BAA6B,cAAc,kCAAkC,CAC9E,CACF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,WAAW,CAAC,IAAI,CACd,yBAAyB,CACvB,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,uBAAuB,SAAS,kCAAkC,CACnE,CACF,CAAC;IACJ,CAAC;IAED,IACE,WAAW,KAAK,SAAS;QACzB,gBAAgB,CAAC,WAAW,CAAC,KAAK,SAAS,EAC3C,CAAC;QACD,WAAW,CAAC,IAAI,CACd,yBAAyB,CACvB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,yBAAyB,WAAW,2DAA2D,CAChG,CACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,cAAc,EAAE,MAAM,CAAC,MAAM;QAC7B,iBAAiB,EAAE,MAAM,CAAC,SAAS;QACnC,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAwB,EACxB,MAAiC,EACjC,KAAa,EACb,OAAe;IAEf,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;QAC5B,OAAO;QACP,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAwB,EACxB,WAAyB;IAEzB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,4BAA4B,CACjC,QAAQ,EACR,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,UAAU,CAAC,KAAK,EAC3B,WAAW,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAwB;IAExB,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,QAAQ;QACzB,MAAM,EAAE,QAAQ,CAAC,cAAc;QAC/B,SAAS,EAAE,QAAQ,CAAC,iBAAiB;QACrC,cAAc,EAAE,KAAK;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAwB,EACxB,WAAkC,EAClC,eAAwB,EACxB,WAAyB;IAEzB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,MAAM,GAA0C,EAAE,CAAC;IACzD,MAAM,SAAS,GAA4C,EAAE,CAAC;IAC9D,MAAM,wBAAwB,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,CAC/D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,UAAU,CACpC,CAAC;IAEF,IAAI,wBAAwB,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;YAC5B,OAAO,EACL,2JAA2J;YAC7J,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,SAAS,EAAE,wBAAwB,CAAC,SAAS;gBAC7C,OAAO,EAAE,wBAAwB,CAAC,OAAO;gBACzC,OAAO,EAAE,QAAQ,CAAC,KAAK;qBACpB,KAAK,CACJ,wBAAwB,CAAC,SAAS,GAAG,CAAC,EACtC,wBAAwB,CAAC,OAAO,CACjC;qBACA,IAAI,CAAC,IAAI,CAAC;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAC5D,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;QAC/C,0FAA0F;QAC1F,4EAA4E;QAC5E,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,SAAS;QAC3C,MAAM,cAAc,GAAG,kCAAkC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,cAAc;YAAE,SAAS;QAC9B,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,GAAG;YACvB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;YAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACzE,CAAC;QACF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAwB,EACxB,MAAiC,EACjC,GAAW,EACX,WAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,KAAkC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAmC,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,YAAY,GAChB,6BAA6B,CAAC,GAAmC,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,WAAW,CAAC,IAAI,CACd,8BAA8B,CAC5B,QAAQ,EACR,MAAM,EACN,GAAG,EACH,YAAY,EACZ,qDAAqD,CACtD,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,CAAC,IAAI,CACd,8BAA8B,CAC5B,QAAQ,EACR,MAAM,EACN,GAAG,EACH,YAAY,EACZ,iDAAiD,CAClD,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,WAAW,CAAC,IAAI,CACd,8BAA8B,CAC5B,QAAQ,EACR,MAAM,EACN,GAAG,EACH,YAAY,EACZ,2BAA2B,CAC5B,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QACpD,WAAW,CAAC,IAAI,CACd,8BAA8B,CAC5B,QAAQ,EACR,MAAM,EACN,GAAG,EACH,YAAY,EACZ,wCAAwC,CACzC,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,8BAA8B,CACrC,QAAwB,EACxB,MAAiC,EACjC,cAAsB,EACtB,YAAoB,EACpB,MAAc;IAEd,OAAO,yBAAyB,CAC9B,QAAQ,EACR,MAAM,EACN,cAAc,EACd,oBAAoB,YAAY,KAAK,MAAM,GAAG,CAC/C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAoB,CAAC;QAC5C,CAAC,CAAE,KAAqB;QACxB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,KAAgC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAiC,EAAE,GAAW;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,GAAG;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,QAAuB,EACvB,GAAM,EACN,KAAmC;IAEnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,QAAuB,EACvB,GAAM,EACN,KAAe;IAEf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAyB,CAAC;IAC5C,CAAC;AACH,CAAC"}
|
package/dist/model.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export type DependencyKind = "requires" | "optional" | "conflicts" | "extends" |
|
|
|
8
8
|
/** Normalized shared metadata for cataloged assets. */
|
|
9
9
|
export interface AssetMetadata {
|
|
10
10
|
id?: string;
|
|
11
|
+
title?: string;
|
|
11
12
|
type?: string;
|
|
12
13
|
version?: string;
|
|
13
14
|
owner?: string;
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhF,0DAA0D;AAC1D,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAEzD,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAEjB,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACtD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,KAAM,SAAQ,KAAK;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;CACxD;AAED,wFAAwF;AACxF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B"}
|
package/dist/report.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA+DrD"}
|
package/dist/report.js
CHANGED
|
@@ -9,6 +9,7 @@ export function formatText(result) {
|
|
|
9
9
|
`Root: ${result.root}`,
|
|
10
10
|
`Config: ${result.configPath ?? "(defaults)"}`,
|
|
11
11
|
`Files scanned: ${result.scannedFileCount}`,
|
|
12
|
+
`Agent Skills: ${result.agentSkills.validSkillCount}/${result.agentSkills.totalSkillCount} valid (${result.agentSkills.invalidSkillCount} invalid, ${result.agentSkills.legacySkillCount} legacy, ${result.agentSkills.hybridSkillCount} hybrid)`,
|
|
12
13
|
...(result.contextLens
|
|
13
14
|
? [
|
|
14
15
|
`Context lenses: ${result.contextLens.validLensCount}/${result.contextLens.totalLensCount} valid (${result.contextLens.invalidLensCount} invalid)`,
|
|
@@ -19,8 +20,22 @@ export function formatText(result) {
|
|
|
19
20
|
`Exit threshold: ${result.exitThreshold}`,
|
|
20
21
|
`Findings: ${result.findings.length}`,
|
|
21
22
|
];
|
|
23
|
+
for (const skill of result.agentSkills.results) {
|
|
24
|
+
if (skill.issues.length === 0)
|
|
25
|
+
continue;
|
|
26
|
+
lines.push("");
|
|
27
|
+
lines.push(`${skill.valid ? "VALID" : "INVALID"} ${skill.path}`);
|
|
28
|
+
for (const issue of skill.issues) {
|
|
29
|
+
lines.push(` ${issue.severity.toUpperCase()} ${issue.code} L${issue.startLine}: ${issue.message}`);
|
|
30
|
+
}
|
|
31
|
+
if (skill.migrationCommand) {
|
|
32
|
+
lines.push("");
|
|
33
|
+
lines.push(" Migration:");
|
|
34
|
+
lines.push(` ${skill.migrationCommand.display}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
22
37
|
if (result.findings.length === 0) {
|
|
23
|
-
lines.push("No findings.");
|
|
38
|
+
lines.push("No rule findings.");
|
|
24
39
|
}
|
|
25
40
|
for (const diagnostic of result.diagnostics) {
|
|
26
41
|
lines.push(`diagnostic ${diagnostic.severity}: ${diagnostic.path ? `${diagnostic.path}: ` : ""}${diagnostic.message}`);
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,KAAK,GAAG;QACZ,YAAY;QACZ,SAAS,MAAM,CAAC,IAAI,EAAE;QACtB,WAAW,MAAM,CAAC,UAAU,IAAI,YAAY,EAAE;QAC9C,kBAAkB,MAAM,CAAC,gBAAgB,EAAE;QAC3C,GAAG,CAAC,MAAM,CAAC,WAAW;YACpB,CAAC,CAAC;gBACE,mBAAmB,MAAM,CAAC,WAAW,CAAC,cAAc,IAAI,MAAM,CAAC,WAAW,CAAC,cAAc,WAAW,MAAM,CAAC,WAAW,CAAC,gBAAgB,WAAW;gBAClJ,mCAAmC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,aAAa,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,UAAU,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE;aACzL;YACH,CAAC,CAAC,EAAE,CAAC;QACP,gBAAgB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;QAC3C,mBAAmB,MAAM,CAAC,aAAa,EAAE;QACzC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;KACtC,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,KAAK,GAAG;QACZ,YAAY;QACZ,SAAS,MAAM,CAAC,IAAI,EAAE;QACtB,WAAW,MAAM,CAAC,UAAU,IAAI,YAAY,EAAE;QAC9C,kBAAkB,MAAM,CAAC,gBAAgB,EAAE;QAC3C,iBAAiB,MAAM,CAAC,WAAW,CAAC,eAAe,IAAI,MAAM,CAAC,WAAW,CAAC,eAAe,WAAW,MAAM,CAAC,WAAW,CAAC,iBAAiB,aAAa,MAAM,CAAC,WAAW,CAAC,gBAAgB,YAAY,MAAM,CAAC,WAAW,CAAC,gBAAgB,UAAU;QACjP,GAAG,CAAC,MAAM,CAAC,WAAW;YACpB,CAAC,CAAC;gBACE,mBAAmB,MAAM,CAAC,WAAW,CAAC,cAAc,IAAI,MAAM,CAAC,WAAW,CAAC,cAAc,WAAW,MAAM,CAAC,WAAW,CAAC,gBAAgB,WAAW;gBAClJ,mCAAmC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,aAAa,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,UAAU,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE;aACzL;YACH,CAAC,CAAC,EAAE,CAAC;QACP,gBAAgB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;QAC3C,mBAAmB,MAAM,CAAC,aAAa,EAAE;QACzC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;KACtC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CACR,cAAc,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAC3G,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,CAC3E,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO;YAC1B,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC"}
|
package/dist/rules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAWpE,OAAO,KAAK,EAEV,OAAO,EAEP,cAAc,EACd,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAcpB,UAAU,WAAW;IACnB,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC;AA+HD,8EAA8E;AAC9E,wBAAgB,QAAQ,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,GAAE,WAAgB,GACxB,OAAO,EAAE,CAeX;AAmmBD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAQ3E"}
|
package/dist/rules.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
+
import { resolvedAgentSkillDescription } from "./agent-skills.js";
|
|
2
3
|
import { addDaysIsoDate, isIsoDate, parseDayDuration, todayIsoDate, } from "./freshness.js";
|
|
3
4
|
import { DIAGNOSTIC_IDS } from "./diagnostic-ids.js";
|
|
4
5
|
import { helperScriptPath } from "./repository-paths.js";
|
|
6
|
+
import { parseAssetMetadata } from "./metadata.js";
|
|
5
7
|
import { runRuleRegistry } from "./rule-engine.js";
|
|
6
8
|
const SECRET_PATTERN = /\b(?:password|passwd|token|api[_-]?key|secret|credential|private[_-]?key)\b\s*[:=]\s*["']?([A-Za-z0-9_./+=-]{8,})/i;
|
|
7
9
|
const PRIVATE_KEY_PATTERN = /-----BEGIN (?:RSA |OPENSSH |EC |DSA )?PRIVATE KEY-----/;
|
|
@@ -434,7 +436,7 @@ function orphanedContextLensFindings(entries, resolver) {
|
|
|
434
436
|
confidence: "medium",
|
|
435
437
|
evidence: metadataFindingEvidence(entry.sourcePath, "Active context lens has no incoming requires_lens or optional_lens references from skills."),
|
|
436
438
|
whyItMatters: "Context lenses are easier to review when a skill declares how the purpose-oriented interpretation is used. An unreferenced active lens may be newly created, intentionally staged, or stale.",
|
|
437
|
-
remediation: "If the lens should be used, reference it from a
|
|
439
|
+
remediation: "If the lens should be used, reference it from a canonical Skill with metadata.renma.requires-lens or metadata.renma.optional-lens JSON-array metadata. Pre-0.16-only Skills use requires_lens or optional_lens only during migration. If the lens is not ready or no longer needed, update its lifecycle status after review.",
|
|
438
440
|
constraints: [
|
|
439
441
|
"Do not make Renma select runtime lenses.",
|
|
440
442
|
"Do not rank or retrieve lenses semantically.",
|
|
@@ -446,7 +448,7 @@ function orphanedContextLensFindings(entries, resolver) {
|
|
|
446
448
|
"Run renma catalog.",
|
|
447
449
|
"Run renma graph focused on the lens or owning skill.",
|
|
448
450
|
],
|
|
449
|
-
llmHint: `Search for
|
|
451
|
+
llmHint: `Search for Skills that should declare "${entry.id}" as a required or optional lens. For canonical Skills, update metadata.renma.requires-lens or metadata.renma.optional-lens as a JSON-array string; use requires_lens or optional_lens only for pre-0.16 migration inputs. Do not add runtime selection logic or prompt assembly.`,
|
|
450
452
|
details: {
|
|
451
453
|
assetId: entry.id,
|
|
452
454
|
sourcePath: entry.sourcePath,
|
|
@@ -640,7 +642,9 @@ function shapeFindings(document) {
|
|
|
640
642
|
return [];
|
|
641
643
|
const text = document.artifact.content.toLowerCase();
|
|
642
644
|
const findings = [];
|
|
643
|
-
const description = document.
|
|
645
|
+
const description = document.artifact.kind === "skill"
|
|
646
|
+
? (resolvedAgentSkillDescription(document) ?? "")
|
|
647
|
+
: (document.metadata.description ?? "");
|
|
644
648
|
const tokenCount = approximateTokenCount(document.artifact.content);
|
|
645
649
|
if (!description) {
|
|
646
650
|
findings.push(documentFinding(document, DIAGNOSTIC_IDS.QUAL_MISSING_DESCRIPTION, "Skill is missing an explicit description", "quality", "medium", "Add frontmatter description so agents can route to the skill intentionally."));
|
|
@@ -936,7 +940,8 @@ function contextPathNonSemanticFindings(document) {
|
|
|
936
940
|
function skillContextReferenceNotDeclaredFindings(document) {
|
|
937
941
|
if (document.artifact.kind !== "skill")
|
|
938
942
|
return [];
|
|
939
|
-
const
|
|
943
|
+
const operationalMetadata = parseAssetMetadata(document).metadata;
|
|
944
|
+
const declaredContexts = new Set(operationalMetadata.requiresContext);
|
|
940
945
|
const bodyLineIndexes = markdownBodyLineIndexes(document);
|
|
941
946
|
const matches = new Map();
|
|
942
947
|
for (const index of bodyLineIndexes) {
|
|
@@ -961,7 +966,7 @@ function skillContextReferenceNotDeclaredFindings(document) {
|
|
|
961
966
|
confidence: "high",
|
|
962
967
|
evidence: evidence(document, match.line, match.text),
|
|
963
968
|
whyItMatters: "Declared context references make skill/context relationships visible to catalog, graph, and validation reports. If a skill only mentions a context in prose, humans may see the dependency but repository tooling cannot validate it.",
|
|
964
|
-
remediation: "Add the referenced shared context asset to
|
|
969
|
+
remediation: "Add the referenced shared context asset to metadata.renma.requires-context as a JSON-array string, or remove the prose reference if it is no longer needed. Pre-0.16 requires_context is migration input only and is not operational in Renma 0.16.0.",
|
|
965
970
|
constraints: [
|
|
966
971
|
"Do not select runtime context.",
|
|
967
972
|
"Do not assemble prompt packages.",
|
|
@@ -973,9 +978,9 @@ function skillContextReferenceNotDeclaredFindings(document) {
|
|
|
973
978
|
"Run renma catalog.",
|
|
974
979
|
"Confirm the skill/context relationship appears in metadata and catalog output.",
|
|
975
980
|
],
|
|
976
|
-
llmHint: `Find context paths mentioned in the
|
|
981
|
+
llmHint: `Find context paths mentioned in the Skill body and add the missing declaration using metadata.renma.requires-context as a JSON-array string. Pre-0.16 requires_context is accepted only by suggest-metadata and is not operational. Missing declaration: ${referencedPath}`,
|
|
977
982
|
details: {
|
|
978
|
-
source:
|
|
983
|
+
source: operationalMetadata.id ?? document.artifact.path,
|
|
979
984
|
target: referencedPath,
|
|
980
985
|
referenceKind: "requires_context",
|
|
981
986
|
sourcePath: document.artifact.path,
|
|
@@ -1002,6 +1007,7 @@ function skillReferencesSupersededAssetFindings(documents) {
|
|
|
1002
1007
|
const skill = skillsByPath.get(skillPath);
|
|
1003
1008
|
if (!skill)
|
|
1004
1009
|
return [];
|
|
1010
|
+
const skillMetadata = parseAssetMetadata(skill).metadata;
|
|
1005
1011
|
const referencedFrom = skillReferenceLine(skill, document.artifact.path);
|
|
1006
1012
|
if (!referencedFrom)
|
|
1007
1013
|
return [];
|
|
@@ -1042,7 +1048,7 @@ function skillReferencesSupersededAssetFindings(documents) {
|
|
|
1042
1048
|
],
|
|
1043
1049
|
llmHint: "Inspect the deprecated local support file and its superseded_by or canonical_context metadata. If the shared context asset is now canonical, update skill guidance and metadata to reference the shared context directly. Keep the local reference only if it contains truly local notes or is intentionally preserved as a compatibility shim.",
|
|
1044
1050
|
details: {
|
|
1045
|
-
source:
|
|
1051
|
+
source: skillMetadata.id ?? skill.artifact.path,
|
|
1046
1052
|
target: metadataText(document.metadata.id) ?? document.artifact.path,
|
|
1047
1053
|
referenceKind: "body_reference",
|
|
1048
1054
|
sourcePath: skill.artifact.path,
|
|
@@ -1059,8 +1065,9 @@ function isSkillLocalReference(document) {
|
|
|
1059
1065
|
/^skills\/[^/]+\/references\/.+\.md$/u.test(document.artifact.path));
|
|
1060
1066
|
}
|
|
1061
1067
|
function sharedContextTargets(document) {
|
|
1068
|
+
const operationalMetadata = parseAssetMetadata(document).metadata;
|
|
1062
1069
|
return [
|
|
1063
|
-
...
|
|
1070
|
+
...operationalMetadata.supersededBy,
|
|
1064
1071
|
...listMetadataValue(document.metadata.canonical_context),
|
|
1065
1072
|
].filter((target, index, targets) => /^contexts?\//u.test(target) && targets.indexOf(target) === index);
|
|
1066
1073
|
}
|
|
@@ -1084,18 +1091,23 @@ function skillReferenceLine(skill, referencePath) {
|
|
|
1084
1091
|
}
|
|
1085
1092
|
function assetReferencesSupersededAssetFindings(documents) {
|
|
1086
1093
|
const supersededAssets = documents
|
|
1087
|
-
.map((document) =>
|
|
1088
|
-
document
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1094
|
+
.map((document) => {
|
|
1095
|
+
const metadata = parseAssetMetadata(document).metadata;
|
|
1096
|
+
return {
|
|
1097
|
+
document,
|
|
1098
|
+
metadata,
|
|
1099
|
+
canonicalTargets: sharedContextTargets(document),
|
|
1100
|
+
};
|
|
1101
|
+
})
|
|
1102
|
+
.filter(({ metadata, canonicalTargets }) => metadata.status === "deprecated" ||
|
|
1103
|
+
metadata.status === "archived" ||
|
|
1093
1104
|
canonicalTargets.length > 0)
|
|
1094
1105
|
.filter(({ canonicalTargets }) => canonicalTargets.length > 0);
|
|
1095
1106
|
return documents.flatMap((referencingDocument) => {
|
|
1096
1107
|
if (referencingDocument.artifact.kind === "skill")
|
|
1097
1108
|
return [];
|
|
1098
|
-
|
|
1109
|
+
const referencingMetadata = parseAssetMetadata(referencingDocument).metadata;
|
|
1110
|
+
return supersededAssets.flatMap(({ document, metadata, canonicalTargets }) => {
|
|
1099
1111
|
if (document.artifact.path === referencingDocument.artifact.path) {
|
|
1100
1112
|
return [];
|
|
1101
1113
|
}
|
|
@@ -1139,13 +1151,12 @@ function assetReferencesSupersededAssetFindings(documents) {
|
|
|
1139
1151
|
],
|
|
1140
1152
|
llmHint: "Inspect the referenced deprecated asset and its superseded_by or canonical context metadata. If the canonical shared context is the intended source of truth, update this asset to reference that context directly. Keep the superseded file only when it serves a deliberate compatibility or migration role.",
|
|
1141
1153
|
details: {
|
|
1142
|
-
source:
|
|
1143
|
-
|
|
1144
|
-
target: metadataText(document.metadata.id) ?? document.artifact.path,
|
|
1154
|
+
source: referencingMetadata.id ?? referencingDocument.artifact.path,
|
|
1155
|
+
target: metadata.id ?? document.artifact.path,
|
|
1145
1156
|
referenceKind: "body_reference",
|
|
1146
1157
|
sourcePath: referencingDocument.artifact.path,
|
|
1147
1158
|
targetPath: document.artifact.path,
|
|
1148
|
-
targetStatus:
|
|
1159
|
+
targetStatus: metadata.status,
|
|
1149
1160
|
replacementTargets: canonicalTargets,
|
|
1150
1161
|
},
|
|
1151
1162
|
},
|
|
@@ -1396,7 +1407,7 @@ function thinSkillLayoutFindings(document) {
|
|
|
1396
1407
|
"Confirm SKILL.md contains routing guidance and required context references only.",
|
|
1397
1408
|
"Run renma readiness and check layout.skills_thin.",
|
|
1398
1409
|
],
|
|
1399
|
-
llmHint: "Extract long procedure sections into contexts/**, add
|
|
1410
|
+
llmHint: "Extract long procedure sections into contexts/**, add metadata.renma.requires-context or metadata.renma.optional-context JSON-array strings, and keep SKILL.md focused on when to use or not use the Skill. Pre-0.16 top-level references are migration input only.",
|
|
1400
1411
|
}));
|
|
1401
1412
|
}
|
|
1402
1413
|
const command = firstExecutableCommand(document);
|
|
@@ -1526,7 +1537,7 @@ function declaredDependencyLayoutFindings(catalog, paths) {
|
|
|
1526
1537
|
confidence: "medium",
|
|
1527
1538
|
evidence: metadataFindingEvidence(source.sourcePath, target),
|
|
1528
1539
|
whyItMatters: "Declared context references should resolve through canonical contexts/**, skills/**, or tools/** repo paths.",
|
|
1529
|
-
remediation: "Rewrite declared
|
|
1540
|
+
remediation: "Rewrite declared required or optional context dependency values to canonical repo-root paths without changing the Skill's operational metadata format.",
|
|
1530
1541
|
verificationSteps: ["Run renma graph and confirm all edges resolve."],
|
|
1531
1542
|
details: {
|
|
1532
1543
|
source: dependency.from,
|