renma 0.2.0 → 0.4.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,208 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ export async function runScaffoldCommand(options) {
4
+ const bundle = buildScaffoldBundle(options);
5
+ if (options.format === "json") {
6
+ process.stdout.write(`${JSON.stringify(bundle, null, 2)}\n`);
7
+ return 0;
8
+ }
9
+ if (options.format === "prompt") {
10
+ process.stdout.write(bundle.prompt);
11
+ return 0;
12
+ }
13
+ await mkdir(path.dirname(options.targetPath), { recursive: true });
14
+ await writeFile(options.targetPath, bundle.content, { flag: "wx" });
15
+ process.stdout.write(`Created ${options.targetPath}\n`);
16
+ return 0;
17
+ }
18
+ export function buildScaffoldBundle(options) {
19
+ const id = options.id ?? inferId(options.kind, options.targetPath);
20
+ const title = options.title ?? titleFromId(id);
21
+ const owner = options.owner ?? "unowned";
22
+ const tags = options.tags && options.tags.length > 0 ? options.tags : ["authoring"];
23
+ const content = options.kind === "skill"
24
+ ? renderSkillScaffold({ id, title, owner, tags })
25
+ : renderContextScaffold({ id, title, owner, tags });
26
+ return {
27
+ kind: options.kind,
28
+ path: options.targetPath,
29
+ id,
30
+ title,
31
+ owner,
32
+ tags,
33
+ format: options.format,
34
+ content,
35
+ prompt: renderPrompt({
36
+ kind: options.kind,
37
+ targetPath: options.targetPath,
38
+ id,
39
+ title,
40
+ owner,
41
+ tags,
42
+ content,
43
+ }),
44
+ };
45
+ }
46
+ function renderSkillScaffold(metadata) {
47
+ return `---
48
+ id: ${metadata.id}
49
+ title: ${metadata.title}
50
+ version: 0.1.0
51
+ owner: ${metadata.owner}
52
+ status: experimental
53
+ ${renderTagBlock(metadata.tags)}
54
+ requires_context:
55
+ optional_context:
56
+ conflicts:
57
+ ---
58
+
59
+ # ${metadata.title}
60
+
61
+ ## Purpose
62
+
63
+ Describe the recurring task, decision, or workflow this skill should guide.
64
+
65
+ ## Required Inputs
66
+
67
+ - List the inputs, evidence, or repository artifacts the agent should inspect before acting.
68
+
69
+ ## Instructions
70
+
71
+ 1. State the inputs, evidence, or repository artifacts the agent should inspect.
72
+ 2. Describe the review steps, checks, or decision points that should remain explicit and reviewable.
73
+ 3. Identify the expected output, artifact, or handoff.
74
+
75
+ ## Context References
76
+
77
+ Use \`requires_context\` and \`optional_context\` in frontmatter to reference durable context assets.
78
+
79
+ Move reusable domain, testing, platform, product, or tool knowledge into separately owned context assets under \`contexts/\`.
80
+
81
+ ## Constraints
82
+
83
+ - Keep recommendations grounded in provided inputs and repository evidence.
84
+ - Do not invent domain facts, policies, owners, dependencies, or product behavior.
85
+ - Do not choose runtime task context beyond this skill's declared scope.
86
+ - Do not assemble prompts for live model calls.
87
+ - Do not call external services unless the surrounding workflow explicitly allows it.
88
+
89
+ ## Validation
90
+
91
+ - Run \`renma scan\`, \`renma catalog\`, and \`renma graph\` before review.
92
+ `;
93
+ }
94
+ function renderContextScaffold(metadata) {
95
+ return `---
96
+ id: ${metadata.id}
97
+ title: ${metadata.title}
98
+ version: 0.1.0
99
+ owner: ${metadata.owner}
100
+ status: experimental
101
+ ${renderTagBlock(metadata.tags)}
102
+ ---
103
+
104
+ # ${metadata.title}
105
+
106
+ ## Summary
107
+
108
+ Describe the durable context, rule, constraint, or domain fact this asset records.
109
+
110
+ ## Scope
111
+
112
+ This context applies when:
113
+
114
+ - Describe the systems, workflows, or skills that should consider this context.
115
+
116
+ This context does not apply when:
117
+
118
+ - Describe nearby cases that should use a different context asset.
119
+
120
+ ## Guidance
121
+
122
+ - Keep this context specific, reviewable, and source-backed.
123
+ - Prefer stable facts over transient implementation notes.
124
+
125
+ ## Constraints
126
+
127
+ - Keep this asset focused on reusable knowledge that can be referenced by skills.
128
+ - Do not duplicate large source material when a reference is enough.
129
+ - Do not invent domain facts, policies, owners, dependencies, or product behavior.
130
+
131
+ ## Validation
132
+
133
+ - Run \`renma scan\`, \`renma catalog\`, and \`renma graph\` before review.
134
+ `;
135
+ }
136
+ function renderPrompt(input) {
137
+ return `Create a Renma ${input.kind} asset at \`${input.targetPath}\`.
138
+
139
+ Use this metadata exactly:
140
+
141
+ - id: \`${input.id}\`
142
+ - title: \`${input.title}\`
143
+ - owner: \`${input.owner}\`
144
+ - tags: \`${input.tags.join(",")}\`
145
+ - version: \`0.1.0\`
146
+ - status: \`experimental\`
147
+
148
+ Start from this deterministic scaffold and replace placeholder prose with repository-grounded content:
149
+
150
+ \`\`\`md
151
+ ${input.content}\`\`\`
152
+
153
+ Constraints:
154
+
155
+ - Preserve the YAML frontmatter shape unless the repository already requires a stricter local convention.
156
+ - Use only supported statuses: experimental, stable, deprecated, archived.
157
+ - Move durable domain, testing, platform, product, or tool knowledge into separately owned context assets under \`contexts/\`.
158
+ - Use \`requires_context\` for context the skill normally depends on.
159
+ - Use \`optional_context\` for context useful only in some cases.
160
+ - Use simple supported metadata shapes only.
161
+ - For context assets, keep content durable, reviewable, and source-backed.
162
+ - Do not put task-specific prompt instructions in context assets.
163
+ - Add explicit metadata and references where appropriate.
164
+ - Do not invent owners, dependencies, policies, or domain facts.
165
+ - Do not choose runtime task context.
166
+ - Do not assemble prompts for live model calls.
167
+ - Do not call external services.
168
+ - Keep the asset LLM-facing and Renma-verifiable.
169
+ - After creating files, run \`renma scan .\`, \`renma catalog . --format json\`, and \`renma graph . --focus ${input.id} --format mermaid\`.
170
+ `;
171
+ }
172
+ function renderTagBlock(tags) {
173
+ return `tags:
174
+ ${tags.map((tag) => ` - ${tag}`).join("\n")}`;
175
+ }
176
+ function inferId(kind, targetPath) {
177
+ const withoutExtension = targetPath.replace(/\.[^/.]+$/, "");
178
+ const normalized = withoutExtension
179
+ .split(/[\\/]+/)
180
+ .filter(Boolean)
181
+ .filter((part) => part !== "SKILL")
182
+ .map(slugify)
183
+ .filter(Boolean);
184
+ if (kind === "skill") {
185
+ const skillRoot = normalized.indexOf("skills");
186
+ return normalized.slice(skillRoot >= 0 ? skillRoot + 1 : 0).join(".");
187
+ }
188
+ const contextRoot = normalized.findIndex((part) => part === "context" || part === "contexts");
189
+ const parts = normalized.slice(contextRoot >= 0 ? contextRoot + 1 : 0);
190
+ return parts[0] === "context"
191
+ ? parts.join(".")
192
+ : ["context", ...parts].join(".");
193
+ }
194
+ function titleFromId(id) {
195
+ const lastSegment = id.split(".").filter(Boolean).slice(-1)[0] ?? id;
196
+ return lastSegment
197
+ .split("-")
198
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
199
+ .join(" ");
200
+ }
201
+ function slugify(value) {
202
+ return value
203
+ .trim()
204
+ .toLowerCase()
205
+ .replace(/[^a-z0-9]+/g, "-")
206
+ .replace(/^-+|-+$/g, "");
207
+ }
208
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AA2B7B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAwB;IAExB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACzC,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACzE,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,KAAK,OAAO;QACtB,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,UAAU;QACxB,EAAE;QACF,KAAK;QACL,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,MAAM,EAAE,YAAY,CAAC;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,EAAE;YACF,KAAK;YACL,KAAK;YACL,IAAI;YACJ,OAAO;SACR,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAK5B;IACC,OAAO;MACH,QAAQ,CAAC,EAAE;SACR,QAAQ,CAAC,KAAK;;SAEd,QAAQ,CAAC,KAAK;;EAErB,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;;;;;;IAM3B,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCjB,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,QAK9B;IACC,OAAO;MACH,QAAQ,CAAC,EAAE;SACR,QAAQ,CAAC,KAAK;;SAEd,QAAQ,CAAC,KAAK;;EAErB,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;;;IAG3B,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjB,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,KAQrB;IACC,OAAO,kBAAkB,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,UAAU;;;;UAI1D,KAAK,CAAC,EAAE;aACL,KAAK,CAAC,KAAK;aACX,KAAK,CAAC,KAAK;YACZ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;EAO9B,KAAK,CAAC,OAAO;;;;;;;;;;;;;;;;;;+GAkBgG,KAAK,CAAC,EAAE;CACtH,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,IAAc;IACpC,OAAO;EACP,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,OAAO,CAAC,IAAkB,EAAE,UAAkB;IACrD,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,gBAAgB;SAChC,KAAK,CAAC,QAAQ,CAAC;SACf,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;SAClC,GAAG,CAAC,OAAO,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,CACpD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;QAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACjB,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,EAAU;IAC7B,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,OAAO,WAAW;SACf,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKrE,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,UAuB5B,CAAC;AAEF,+EAA+E;AAC/E,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAEzC,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,0EAA0E;AAC1E,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAiBvB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKrE,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,UA6B5B,CAAC;AAEF,+EAA+E;AAC/E,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAEzC,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,0EAA0E;AAC1E,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAiBvB"}
package/dist/config.js CHANGED
@@ -26,6 +26,12 @@ export const DEFAULT_CONFIG = {
26
26
  layout: {
27
27
  workflowAliases: {},
28
28
  },
29
+ security: {
30
+ approvedDomains: [],
31
+ approvedUploadDomains: [],
32
+ disallowedCommands: [],
33
+ profiles: {},
34
+ },
29
35
  };
30
36
  /** Error raised for invalid Renma configuration or CLI configuration input. */
31
37
  export class ConfigError extends Error {
@@ -90,6 +96,7 @@ function normalizeConfig(value, configPath) {
90
96
  "max_depth",
91
97
  "concurrency",
92
98
  "layout",
99
+ "security",
93
100
  ]);
94
101
  for (const key of Object.keys(value)) {
95
102
  if (!allowed.has(key)) {
@@ -114,6 +121,8 @@ function normalizeConfig(value, configPath) {
114
121
  config.concurrency = positiveInteger("concurrency", value.concurrency);
115
122
  if (value.layout !== undefined)
116
123
  config.layout = layoutPolicy(value.layout);
124
+ if (value.security !== undefined)
125
+ config.security = securityPolicy(value.security);
117
126
  return config;
118
127
  }
119
128
  function enumValue(field, value, allowed) {
@@ -166,6 +175,116 @@ function layoutPolicy(value) {
166
175
  },
167
176
  };
168
177
  }
178
+ function securityPolicy(value) {
179
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
180
+ throw new ConfigError("security must be an object.");
181
+ }
182
+ const security = value;
183
+ const allowed = new Set([
184
+ "approvedDomains",
185
+ "approvedUploadDomains",
186
+ "disallowedCommands",
187
+ "profiles",
188
+ ]);
189
+ for (const key of Object.keys(security)) {
190
+ if (!allowed.has(key)) {
191
+ throw new ConfigError(`Unknown security config key "${key}". Allowed keys: ${[
192
+ ...allowed,
193
+ ].join(", ")}.`);
194
+ }
195
+ }
196
+ return {
197
+ approvedDomains: security.approvedDomains === undefined
198
+ ? DEFAULT_CONFIG.security.approvedDomains
199
+ : stringArray("security.approvedDomains", security.approvedDomains),
200
+ approvedUploadDomains: security.approvedUploadDomains === undefined
201
+ ? DEFAULT_CONFIG.security.approvedUploadDomains
202
+ : stringArray("security.approvedUploadDomains", security.approvedUploadDomains),
203
+ disallowedCommands: security.disallowedCommands === undefined
204
+ ? DEFAULT_CONFIG.security.disallowedCommands
205
+ : stringArray("security.disallowedCommands", security.disallowedCommands),
206
+ profiles: security.profiles === undefined
207
+ ? DEFAULT_CONFIG.security.profiles
208
+ : securityProfiles(security.profiles),
209
+ };
210
+ }
211
+ function securityProfiles(value) {
212
+ const profiles = objectRecord("security.profiles", value);
213
+ const normalized = {};
214
+ for (const [name, profile] of Object.entries(profiles)) {
215
+ if (!profile || typeof profile !== "object" || Array.isArray(profile)) {
216
+ throw new ConfigError(`security.profiles.${name} must be an object.`);
217
+ }
218
+ const source = profile;
219
+ const allowed = new Set([
220
+ "allowedDataClass",
221
+ "allowed_data_class",
222
+ "networkAllowed",
223
+ "network_allowed",
224
+ "externalUploadAllowed",
225
+ "external_upload_allowed",
226
+ "secretsAllowed",
227
+ "secrets_allowed",
228
+ "humanApprovalRequired",
229
+ "human_approval_required",
230
+ "requiresHumanApproval",
231
+ "requires_human_approval",
232
+ "securityProfile",
233
+ "security_profile",
234
+ "allowedData",
235
+ "allowed_data",
236
+ "forbiddenInputs",
237
+ "forbidden_inputs",
238
+ "approvedDomains",
239
+ "approvedUploadDomains",
240
+ "disallowedCommands",
241
+ ]);
242
+ for (const key of Object.keys(source)) {
243
+ if (!allowed.has(key)) {
244
+ throw new ConfigError(`Unknown security profile key "${key}" in security.profiles.${name}.`);
245
+ }
246
+ }
247
+ normalized[name] = {
248
+ allowedDataClass: optionalString(`security.profiles.${name}.allowedDataClass`, source.allowedDataClass ?? source.allowed_data_class),
249
+ networkAllowed: optionalBoolean(`security.profiles.${name}.networkAllowed`, source.networkAllowed ?? source.network_allowed),
250
+ externalUploadAllowed: optionalBoolean(`security.profiles.${name}.externalUploadAllowed`, source.externalUploadAllowed ?? source.external_upload_allowed),
251
+ secretsAllowed: optionalBoolean(`security.profiles.${name}.secretsAllowed`, source.secretsAllowed ?? source.secrets_allowed),
252
+ humanApprovalRequired: optionalBoolean(`security.profiles.${name}.humanApprovalRequired`, source.humanApprovalRequired ??
253
+ source.human_approval_required ??
254
+ source.requiresHumanApproval ??
255
+ source.requires_human_approval),
256
+ securityProfile: optionalString(`security.profiles.${name}.securityProfile`, source.securityProfile ?? source.security_profile),
257
+ allowedData: stringArray(`security.profiles.${name}.allowedData`, source.allowedData ?? source.allowed_data ?? []),
258
+ forbiddenInputs: stringArray(`security.profiles.${name}.forbiddenInputs`, source.forbiddenInputs ?? source.forbidden_inputs ?? []),
259
+ approvedDomains: stringArray(`security.profiles.${name}.approvedDomains`, source.approvedDomains ?? []),
260
+ approvedUploadDomains: stringArray(`security.profiles.${name}.approvedUploadDomains`, source.approvedUploadDomains ?? []),
261
+ disallowedCommands: stringArray(`security.profiles.${name}.disallowedCommands`, source.disallowedCommands ?? []),
262
+ };
263
+ }
264
+ return normalized;
265
+ }
266
+ function optionalString(name, value) {
267
+ if (value === undefined)
268
+ return undefined;
269
+ if (typeof value !== "string") {
270
+ throw new ConfigError(`${name} must be a string.`);
271
+ }
272
+ return value;
273
+ }
274
+ function optionalBoolean(name, value) {
275
+ if (value === undefined)
276
+ return undefined;
277
+ if (typeof value !== "boolean") {
278
+ throw new ConfigError(`${name} must be a boolean.`);
279
+ }
280
+ return value;
281
+ }
282
+ function objectRecord(name, value) {
283
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
284
+ throw new ConfigError(`${name} must be an object.`);
285
+ }
286
+ return value;
287
+ }
169
288
  function stringRecord(name, value) {
170
289
  if (!value || typeof value !== "object" || Array.isArray(value))
171
290
  throw new ConfigError(`${name} must be an object of string values.`);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAIR,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAiEhE"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAKR,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAiEhE"}
package/dist/markdown.js CHANGED
@@ -60,17 +60,43 @@ export function parseDocument(artifact) {
60
60
  }
61
61
  return { artifact, lines, headings, codeFences, links, metadata };
62
62
  }
63
+ const LIST_METADATA_KEYS = new Set([
64
+ "tags",
65
+ "when_to_use",
66
+ "when_not_to_use",
67
+ "requires_context",
68
+ "optional_context",
69
+ "conflicts",
70
+ "superseded_by",
71
+ ]);
63
72
  function parseFrontmatter(lines) {
64
73
  if (lines[0] !== "---")
65
74
  return {};
66
75
  const metadata = {};
76
+ let activeListKey;
67
77
  for (let index = 1; index < lines.length; index += 1) {
68
78
  const line = lines[index];
69
79
  if (line === "---")
70
80
  break;
71
- const match = line?.match(/^([A-Za-z0-9_-]+):\s*(.+)$/);
72
- if (match)
73
- metadata[match[1]] = match[2]?.trim() ?? "";
81
+ const listItem = line?.match(/^\s+-\s+(.+)$/);
82
+ if (activeListKey && listItem) {
83
+ const current = metadata[activeListKey];
84
+ if (Array.isArray(current))
85
+ current.push(listItem[1]?.trim() ?? "");
86
+ continue;
87
+ }
88
+ activeListKey = undefined;
89
+ const match = line?.match(/^([A-Za-z0-9_-]+):\s*(.*)$/);
90
+ if (!match)
91
+ continue;
92
+ const key = match[1];
93
+ const value = match[2]?.trim() ?? "";
94
+ if (LIST_METADATA_KEYS.has(key) && value.length === 0) {
95
+ metadata[key] = [];
96
+ activeListKey = key;
97
+ continue;
98
+ }
99
+ metadata[key] = value;
74
100
  }
75
101
  return metadata;
76
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS7D,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG;IAC5D,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CA+BA"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAiB,cAAc,EAAE,MAAM,YAAY,CAAC;AAS5E,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG;IAC5D,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CA2CA"}
package/dist/metadata.js CHANGED
@@ -7,7 +7,7 @@ const STATUSES = [
7
7
  /** Normalize parsed frontmatter into asset metadata plus validation diagnostics. */
8
8
  export function parseAssetMetadata(document) {
9
9
  const diagnostics = [];
10
- const rawStatus = document.metadata.status;
10
+ const rawStatus = metadataText(document.metadata.status);
11
11
  const status = parseStatus(rawStatus);
12
12
  const metadata = {
13
13
  tags: listValue(document.metadata.tags),
@@ -25,9 +25,9 @@ export function parseAssetMetadata(document) {
25
25
  message: `Invalid status "${rawStatus}". Expected one of: ${STATUSES.join(", ")}.`,
26
26
  });
27
27
  }
28
- assignOptional(metadata, "id", optionalText(document.metadata.id));
29
- assignOptional(metadata, "version", optionalText(document.metadata.version));
30
- assignOptional(metadata, "owner", optionalText(document.metadata.owner));
28
+ assignOptional(metadata, "id", optionalText(metadataText(document.metadata.id)));
29
+ assignOptional(metadata, "version", optionalText(metadataText(document.metadata.version)));
30
+ assignOptional(metadata, "owner", optionalText(metadataText(document.metadata.owner)));
31
31
  assignOptional(metadata, "status", status);
32
32
  return {
33
33
  metadata,
@@ -48,11 +48,17 @@ function optionalText(value) {
48
48
  function listValue(value) {
49
49
  if (!value)
50
50
  return [];
51
+ if (Array.isArray(value)) {
52
+ return value.map((item) => item.trim()).filter(Boolean);
53
+ }
51
54
  return value
52
55
  .split(",")
53
56
  .map((item) => item.trim())
54
57
  .filter(Boolean);
55
58
  }
59
+ function metadataText(value) {
60
+ return typeof value === "string" ? value : undefined;
61
+ }
56
62
  function assignOptional(metadata, key, value) {
57
63
  if (value !== undefined) {
58
64
  metadata[key] = value;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ,GAAkB;IAC9B,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,UAAU;CACX,CAAC;AAEF,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IAIzD,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAkB;QAC9B,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnD,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC1D,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9D,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9D,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjD,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;KACzD,CAAC;IAEF,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACpD,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;SACnF,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE3C,OAAO;QACL,QAAQ;QACR,WAAW;KACZ,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,KAAyB;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,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,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"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAEpE,OAAO,KAAK,EAEV,OAAO,EACP,cAAc,EACd,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAwIpB,8EAA8E;AAC9E,wBAAgB,QAAQ,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,EAAE,CAOX;AA+TD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAQ3E"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAEpE,OAAO,KAAK,EAEV,OAAO,EAEP,cAAc,EACd,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAwIpB,8EAA8E;AAC9E,wBAAgB,QAAQ,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,EAAE,CAOX;AA+TD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAQ3E"}
package/dist/rules.js CHANGED
@@ -754,8 +754,8 @@ function skillReferencesSupersededAssetFindings(documents) {
754
754
  if (!isSkillLocalReference(document))
755
755
  return [];
756
756
  const canonicalTargets = sharedContextTargets(document);
757
- const supersededStatus = document.metadata.status === "deprecated" ||
758
- document.metadata.status === "archived";
757
+ const supersededStatus = metadataText(document.metadata.status) === "deprecated" ||
758
+ metadataText(document.metadata.status) === "archived";
759
759
  if (!supersededStatus && canonicalTargets.length === 0)
760
760
  return [];
761
761
  if (canonicalTargets.length === 0)
@@ -843,8 +843,8 @@ function assetReferencesSupersededAssetFindings(documents) {
843
843
  document,
844
844
  canonicalTargets: sharedContextTargets(document),
845
845
  }))
846
- .filter(({ document, canonicalTargets }) => document.metadata.status === "deprecated" ||
847
- document.metadata.status === "archived" ||
846
+ .filter(({ document, canonicalTargets }) => metadataText(document.metadata.status) === "deprecated" ||
847
+ metadataText(document.metadata.status) === "archived" ||
848
848
  canonicalTargets.length > 0)
849
849
  .filter(({ canonicalTargets }) => canonicalTargets.length > 0);
850
850
  return documents.flatMap((referencingDocument) => {
@@ -1057,11 +1057,16 @@ function markdownBodyLineIndexes(document) {
1057
1057
  function listMetadataValue(value) {
1058
1058
  if (!value)
1059
1059
  return [];
1060
+ if (Array.isArray(value))
1061
+ return value.map((item) => item.trim()).filter(Boolean);
1060
1062
  return value
1061
1063
  .split(",")
1062
1064
  .map((item) => item.trim())
1063
1065
  .filter(Boolean);
1064
1066
  }
1067
+ function metadataText(value) {
1068
+ return typeof value === "string" ? value : undefined;
1069
+ }
1065
1070
  function matchingLineFindings(document, matcher) {
1066
1071
  return document.lines.flatMap((line, index) => {
1067
1072
  const partial = matcher(line);