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.
Files changed (63) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +134 -34
  3. package/dist/agent-skills.d.ts +77 -0
  4. package/dist/agent-skills.d.ts.map +1 -0
  5. package/dist/agent-skills.js +468 -0
  6. package/dist/agent-skills.js.map +1 -0
  7. package/dist/catalog.d.ts.map +1 -1
  8. package/dist/catalog.js +38 -5
  9. package/dist/catalog.js.map +1 -1
  10. package/dist/cli-help.d.ts +7 -7
  11. package/dist/cli-help.d.ts.map +1 -1
  12. package/dist/cli-help.js +13 -2
  13. package/dist/cli-help.js.map +1 -1
  14. package/dist/commands/scaffold.d.ts.map +1 -1
  15. package/dist/commands/scaffold.js +45 -14
  16. package/dist/commands/scaffold.js.map +1 -1
  17. package/dist/commands/suggest-metadata.d.ts +3 -1
  18. package/dist/commands/suggest-metadata.d.ts.map +1 -1
  19. package/dist/commands/suggest-metadata.js +179 -6
  20. package/dist/commands/suggest-metadata.js.map +1 -1
  21. package/dist/diagnostic-ids.d.ts +29 -0
  22. package/dist/diagnostic-ids.d.ts.map +1 -1
  23. package/dist/diagnostic-ids.js +28 -0
  24. package/dist/diagnostic-ids.js.map +1 -1
  25. package/dist/discovery.d.ts +22 -0
  26. package/dist/discovery.d.ts.map +1 -1
  27. package/dist/discovery.js +124 -21
  28. package/dist/discovery.js.map +1 -1
  29. package/dist/metadata.d.ts +3 -1
  30. package/dist/metadata.d.ts.map +1 -1
  31. package/dist/metadata.js +166 -29
  32. package/dist/metadata.js.map +1 -1
  33. package/dist/model.d.ts +1 -0
  34. package/dist/model.d.ts.map +1 -1
  35. package/dist/report.d.ts.map +1 -1
  36. package/dist/report.js +16 -1
  37. package/dist/report.js.map +1 -1
  38. package/dist/rules.d.ts.map +1 -1
  39. package/dist/rules.js +33 -22
  40. package/dist/rules.js.map +1 -1
  41. package/dist/scanner.d.ts.map +1 -1
  42. package/dist/scanner.js +3 -1
  43. package/dist/scanner.js.map +1 -1
  44. package/dist/security-diagnostics.d.ts.map +1 -1
  45. package/dist/security-diagnostics.js +98 -35
  46. package/dist/security-diagnostics.js.map +1 -1
  47. package/dist/security-policy-inventory.js +11 -4
  48. package/dist/security-policy-inventory.js.map +1 -1
  49. package/dist/security-policy.d.ts +27 -1
  50. package/dist/security-policy.d.ts.map +1 -1
  51. package/dist/security-policy.js +247 -34
  52. package/dist/security-policy.js.map +1 -1
  53. package/dist/skill-migration.d.ts +30 -0
  54. package/dist/skill-migration.d.ts.map +1 -0
  55. package/dist/skill-migration.js +566 -0
  56. package/dist/skill-migration.js.map +1 -0
  57. package/dist/types.d.ts +2 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/yaml-frontmatter.d.ts +26 -0
  60. package/dist/yaml-frontmatter.d.ts.map +1 -0
  61. package/dist/yaml-frontmatter.js +114 -0
  62. package/dist/yaml-frontmatter.js.map +1 -0
  63. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-frontmatter.d.ts","sourceRoot":"","sources":["../src/yaml-frontmatter.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED,2FAA2F;AAC3F,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GACd,qBAAqB,CAsDvB"}
@@ -0,0 +1,114 @@
1
+ import { isMap, isNode, isScalar, LineCounter, parseDocument as parseYamlDocument, } from "yaml";
2
+ /** Parse a focused YAML 1.2 frontmatter document without replacing the Markdown parser. */
3
+ export function parseAgentSkillFrontmatter(content) {
4
+ const lines = content.split(/\r?\n/);
5
+ const firstLine = lines[0]?.replace(/^\uFEFF/, "").trim();
6
+ if (firstLine !== "---")
7
+ return emptyResult(false, false, 1);
8
+ const closingIndex = lines.findIndex((line, index) => index > 0 && /^---\s*$/.test(line));
9
+ if (closingIndex < 0)
10
+ return emptyResult(true, false, lines.length + 1);
11
+ const source = lines.slice(1, closingIndex).join("\n");
12
+ const lineCounter = new LineCounter();
13
+ const yaml = parseYamlDocument(source, {
14
+ lineCounter,
15
+ prettyErrors: false,
16
+ strict: true,
17
+ stringKeys: true,
18
+ uniqueKeys: false,
19
+ version: "1.2",
20
+ });
21
+ const errors = yaml.errors.map((error) => ({
22
+ code: error.code,
23
+ message: error.message,
24
+ line: (error.linePos?.[0].line ?? lineCounter.linePos(error.pos[0]).line) + 1,
25
+ }));
26
+ if (!isMap(yaml.contents)) {
27
+ return {
28
+ ...emptyResult(true, true, closingIndex + 2),
29
+ errors,
30
+ };
31
+ }
32
+ const fields = mapFields(yaml, yaml.contents.items, lineCounter);
33
+ const metadataPair = yaml.contents.items.find((pair) => scalarString(pair.key) === "metadata");
34
+ const metadataFields = isMap(metadataPair?.value)
35
+ ? mapFields(yaml, metadataPair.value.items, lineCounter)
36
+ : [];
37
+ return {
38
+ present: true,
39
+ closed: true,
40
+ mapping: true,
41
+ bodyStartLine: closingIndex + 2,
42
+ values: Object.fromEntries(fields.map((field) => [field.key, field.value])),
43
+ fields,
44
+ metadataFields,
45
+ duplicateFields: findDuplicates(fields),
46
+ duplicateMetadataKeys: findDuplicates(metadataFields),
47
+ errors,
48
+ };
49
+ }
50
+ function emptyResult(present, closed, bodyStartLine) {
51
+ return {
52
+ present,
53
+ closed,
54
+ mapping: false,
55
+ bodyStartLine,
56
+ values: {},
57
+ fields: [],
58
+ metadataFields: [],
59
+ duplicateFields: [],
60
+ duplicateMetadataKeys: [],
61
+ errors: [],
62
+ };
63
+ }
64
+ function mapFields(document, pairs, lineCounter) {
65
+ return pairs.flatMap((pair) => {
66
+ const key = scalarString(pair.key);
67
+ if (key === undefined)
68
+ return [];
69
+ const keyRange = nodeRange(pair.key);
70
+ const valueRange = nodeRange(pair.value);
71
+ const startOffset = keyRange?.[0] ?? valueRange?.[0];
72
+ const endOffset = valueRange?.[2] ?? keyRange?.[2];
73
+ const startLine = (startOffset === undefined ? 1 : lineCounter.linePos(startOffset).line) +
74
+ 1;
75
+ // YAML node ranges use an exclusive end offset. Pointing at that offset
76
+ // can advance evidence to the following field, so locate the final byte
77
+ // belonging to this pair instead.
78
+ const endLine = (endOffset === undefined
79
+ ? startLine - 1
80
+ : lineCounter.linePos(Math.max(startOffset ?? 0, endOffset - 1)).line) +
81
+ 1;
82
+ return [
83
+ {
84
+ key,
85
+ value: nodeValue(document, pair.value),
86
+ startLine,
87
+ endLine,
88
+ },
89
+ ];
90
+ });
91
+ }
92
+ function scalarString(value) {
93
+ return isScalar(value) && typeof value.value === "string"
94
+ ? value.value
95
+ : undefined;
96
+ }
97
+ function nodeValue(document, value) {
98
+ if (value === null || value === undefined)
99
+ return null;
100
+ return isNode(value) ? value.toJS(document) : value;
101
+ }
102
+ function nodeRange(value) {
103
+ return isNode(value) ? (value.range ?? undefined) : undefined;
104
+ }
105
+ function findDuplicates(fields) {
106
+ const seen = new Set();
107
+ return fields.filter((field) => {
108
+ if (seen.has(field.key))
109
+ return true;
110
+ seen.add(field.key);
111
+ return false;
112
+ });
113
+ }
114
+ //# sourceMappingURL=yaml-frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-frontmatter.js","sourceRoot":"","sources":["../src/yaml-frontmatter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "renma",
3
- "version": "0.15.2",
3
+ "version": "0.16.0",
4
4
  "description": "Manage human-curated context assets for LLMs and agents in Git.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -55,5 +55,8 @@
55
55
  "prettier": "^3.5.3",
56
56
  "typescript": "^5.8.3",
57
57
  "typescript-eslint": "^8.61.0"
58
+ },
59
+ "dependencies": {
60
+ "yaml": "^2.9.0"
58
61
  }
59
62
  }