agentfootprint 9.35.0 → 9.36.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 (32) hide show
  1. package/dist/core/agent/AgentBuilder.js +85 -0
  2. package/dist/core/agent/AgentBuilder.js.map +1 -1
  3. package/dist/core/agent/buildToolRegistry.js +7 -0
  4. package/dist/core/agent/buildToolRegistry.js.map +1 -1
  5. package/dist/core/agent/toolsFromActiveSkill.js +79 -0
  6. package/dist/core/agent/toolsFromActiveSkill.js.map +1 -0
  7. package/dist/esm/core/agent/AgentBuilder.d.ts +62 -0
  8. package/dist/esm/core/agent/AgentBuilder.js +85 -0
  9. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  10. package/dist/esm/core/agent/buildToolRegistry.js +7 -0
  11. package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
  12. package/dist/esm/core/agent/toolsFromActiveSkill.d.ts +55 -0
  13. package/dist/esm/core/agent/toolsFromActiveSkill.js +75 -0
  14. package/dist/esm/core/agent/toolsFromActiveSkill.js.map +1 -0
  15. package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +7 -0
  16. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  17. package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +80 -17
  18. package/dist/esm/lib/injection-engine/skillsFromDir.js +348 -46
  19. package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
  20. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  21. package/dist/lib/injection-engine/skillsFromDir.js +348 -46
  22. package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
  23. package/dist/types/core/agent/AgentBuilder.d.ts +62 -0
  24. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  25. package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
  26. package/dist/types/core/agent/toolsFromActiveSkill.d.ts +56 -0
  27. package/dist/types/core/agent/toolsFromActiveSkill.d.ts.map +1 -0
  28. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +7 -0
  29. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  30. package/dist/types/lib/injection-engine/skillsFromDir.d.ts +80 -17
  31. package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
  32. package/package.json +1 -1
@@ -29,21 +29,56 @@
29
29
  * body (what it reads after deciding). That is the same file convention Claude
30
30
  * Code made familiar, so a skill folder is portable between the two.
31
31
  *
32
- * ── What a SKILL.md can and cannot carry ─────────────────────────────────────
33
- * `name`, `description`, the body. That is the whole per-file surface, and the
34
- * limits follow from it rather than from an oversight:
32
+ * ── What a SKILL.md can carry (9.36.0: the whole runbook) ────────────────────
33
+ * A runbook you already have on disk is three things — what to do (prose),
34
+ * what to do it WITH (tools), and in what order (steps). This door used to
35
+ * carry the first and drop the other two, so the one thing the library exists
36
+ * to say ("extract the workflow you already have") arrived two-thirds empty.
37
+ * All three now cross:
35
38
  *
36
- * - **no `tools`** — a tool is code with an `execute`, and a markdown file has
37
- * none. Every loaded skill is body-only. To give one tools, define that skill
38
- * with `defineSkill` and mix the lists (`[...loaded, codeAuthored]`), or put
39
- * the tools on the route target you declare in code.
40
- * - **no `autoActivate`** — so a loaded skill never scopes the agent's tool list
41
- * on its own (it has no tools to scope).
42
- * - **no per-file `surfaceMode`, `cache` or `refreshPolicy`** — `surfaceMode` is
43
- * settable for the WHOLE directory via `opts`, all of them or none; the others
44
- * take `defineSkill`'s defaults.
45
- * - unknown frontmatter keys are IGNORED, not rejected, so a file carrying
46
- * another tool's metadata still loads here.
39
+ * ---
40
+ * name: billing
41
+ * description: Use for refunds, charges and billing questions.
42
+ * tools: lookup_order, issue_refund
43
+ * steps:
44
+ * - lookup_order: look up the order before touching money
45
+ * - issue_refund: refund only what the lookup found
46
+ * onSkip: hold
47
+ * ---
48
+ * When handling billing: confirm identity first, then …
49
+ *
50
+ * const skills = await skillsFromDir('./skills', {
51
+ * tools: [lookupOrder, issueRefund], // the real Tools, from YOUR code
52
+ * });
53
+ *
54
+ * The remaining limits, and why each one is a decision rather than an
55
+ * oversight:
56
+ *
57
+ * - **the file names a tool; it never defines one.** A tool is code with an
58
+ * `execute`, and a markdown file has none. `tools:` is a list of NAMES,
59
+ * resolved against the `tools` registry the CALLER passes — so the file
60
+ * can only ever pick from capabilities you already handed in, and reading a
61
+ * directory can never introduce one. See "why this is not a code-execution
62
+ * vector" below.
63
+ * - **a name the registry does not carry is refused BY NAME at load** —
64
+ * never a skill that quietly loads without the tool it asked for, because
65
+ * that skill runs, sounds confident, and cannot do the job.
66
+ * - **no per-step `produces` / `consumes`** — the artifact vocabularies
67
+ * (9.25.0) are a build-time contract between skills, not runbook prose;
68
+ * declare them with `defineSkill` where the rest of the agent is declared.
69
+ * - **no `autoActivate`** — a directory does not decide the agent's tool
70
+ * posture. Say it once on the agent with `.toolsFromActiveSkill()`
71
+ * (9.36.0), which scopes every skill's tools to that skill's activation.
72
+ * Without it, a loaded skill's tools are on the wire from iteration 1, the
73
+ * same as any hand-written `defineSkill({ tools })`.
74
+ * - **no per-file `surfaceMode`, `cache` or `refreshPolicy`** — `surfaceMode`
75
+ * is settable for the WHOLE directory via `opts`, all of them or none; the
76
+ * others take `defineSkill`'s defaults.
77
+ * - unknown frontmatter keys are still IGNORED, not rejected, so a file
78
+ * carrying another tool's metadata still loads here. `name`,
79
+ * `description`, `tools`, `steps` and `onSkip` are the KNOWN keys — a file
80
+ * that used one of those five for something else is the one case this
81
+ * release can change, and it changes it loudly.
47
82
  *
48
83
  * A worked example feeding this into a graph:
49
84
  * `examples/features/47-skills-from-dir-graph.ts`.
@@ -57,6 +92,17 @@
57
92
  * only make about a path on your own disk at build time. Each file is read
58
93
  * ONCE, here; a later edit does not reach a run already in flight.
59
94
  *
95
+ * ── Why carrying tools is not a code-execution vector ───────────────────────
96
+ * Nothing in a SKILL.md is evaluated, imported, required or resolved as a
97
+ * path. `tools:` is a list of strings, and the only thing a string can do here
98
+ * is MATCH — against `tool.schema.name` in a registry the caller constructed in
99
+ * their own source, from their own imports. A hostile file can therefore ask
100
+ * for a tool you already gave the agent (and it would have to guess the name);
101
+ * it can never name a module, widen the agent's capabilities, or cause one byte
102
+ * of new code to run. The set of things this directory can do is a SUBSET of
103
+ * what the calling file already decided to do, which is the same property the
104
+ * local-path rule above buys for bodies.
105
+ *
60
106
  * Node-only. `node:fs/promises` and `node:path` are imported lazily inside the
61
107
  * call, the same gating `lib/tool-lint/cli.ts` uses: this module is reachable
62
108
  * from the `agentfootprint/context` barrel, and a TOP-LEVEL node:fs
@@ -73,6 +119,9 @@ const SKILL_FILE = 'SKILL.md';
73
119
  const SKILL_NAME_RE = /^[a-zA-Z0-9_-]{1,64}$/;
74
120
  /** Anything of the form `scheme://…` — http, https, s3, git+ssh, file, … */
75
121
  const URL_LIKE_RE = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//;
122
+ /** How many registry names a refusal lists before it stops. Long enough to
123
+ * spot the typo, short enough that a 200-tool agent's error is still readable. */
124
+ const NAMES_IN_REFUSAL = 20;
76
125
  /**
77
126
  * Load every `SKILL.md` under `dir` as a Skill Injection.
78
127
  *
@@ -90,8 +139,9 @@ const URL_LIKE_RE = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//;
90
139
  *
91
140
  * @throws when `dir` is not a local path, does not exist, is not a directory,
92
141
  * or contains no `SKILL.md` at all; when a file's frontmatter is malformed
93
- * (the message names the file); or when two files claim the same skill name
94
- * (the message names both).
142
+ * (the message names the file); when two files claim the same skill name
143
+ * (the message names both); or when a file names a tool the `tools` registry
144
+ * does not carry, or sequences a tool the file itself did not declare.
95
145
  */
96
146
  export async function skillsFromDir(dir, opts = {}) {
97
147
  assertLocalDirectoryArgument(dir);
@@ -150,15 +200,26 @@ export async function skillsFromDir(dir, opts = {}) {
150
200
  }
151
201
  byName.set(skill.name, skill);
152
202
  }
203
+ // The registry, indexed once for the whole directory. Built even when no file
204
+ // declares tools — an empty Map costs nothing and keeps the resolve path one
205
+ // shape. `undefined` (option omitted) is DISTINCT from an empty registry: the
206
+ // refusals say different things, because the fixes are different.
207
+ const registry = indexToolRegistry(opts.tools);
153
208
  return parsed
154
209
  .slice()
155
210
  .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))
156
- .map((skill) => defineSkill({
157
- id: skill.name,
158
- description: skill.description,
159
- body: skill.body,
160
- ...(opts.surfaceMode !== undefined && { surfaceMode: opts.surfaceMode }),
161
- }));
211
+ .map((skill) => {
212
+ const tools = resolveDeclaredTools(skill, opts.tools, registry);
213
+ return defineSkill({
214
+ id: skill.name,
215
+ description: skill.description,
216
+ body: skill.body,
217
+ ...(tools !== undefined && { tools }),
218
+ ...(skill.steps !== undefined && { steps: skill.steps }),
219
+ ...(skill.onSkip !== undefined && { onSkip: skill.onSkip }),
220
+ ...(opts.surfaceMode !== undefined && { surfaceMode: opts.surfaceMode }),
221
+ });
222
+ });
162
223
  }
163
224
  // ─── Authorship guard ──────────────────────────────────────────────
164
225
  /**
@@ -203,16 +264,92 @@ function assertLocalDirectoryArgument(dir) {
203
264
  `at build time.`);
204
265
  }
205
266
  }
206
- // ─── Frontmatter ───────────────────────────────────────────────────
267
+ // ─── Tool resolution (names on disk → Tools from your code) ────────
268
+ /**
269
+ * Index the caller's registry by wire name.
270
+ *
271
+ * `undefined` in, empty Map out — the CALLER's `undefined` is remembered
272
+ * separately by `resolveDeclaredTools`, because "you passed no registry" and
273
+ * "your registry does not carry that one" need different sentences.
274
+ *
275
+ * Two registry entries under one name is refused here rather than resolved by
276
+ * last-wins: which of the two a skill got would depend on array order, and a
277
+ * skill silently running the wrong `execute` is the failure this whole door is
278
+ * supposed to make impossible.
279
+ */
280
+ function indexToolRegistry(tools) {
281
+ const index = new Map();
282
+ for (const tool of tools ?? []) {
283
+ const name = tool?.schema?.name;
284
+ if (typeof name !== 'string' || name.length === 0) {
285
+ throw new Error(`skillsFromDir: the \`tools\` registry contains an entry with no \`schema.name\`. ` +
286
+ `Every entry must be a Tool (defineTool(...) produces one) — a SKILL.md resolves ` +
287
+ `tools BY NAME, so an unnamed one can never be picked.`);
288
+ }
289
+ const prior = index.get(name);
290
+ if (prior !== undefined && prior !== tool) {
291
+ throw new Error(`skillsFromDir: the \`tools\` registry carries two different tools named '${name}'. ` +
292
+ `A SKILL.md names a tool by that string, so which implementation a skill got would ` +
293
+ `depend on array order. Rename one, or pass only the one you mean.`);
294
+ }
295
+ index.set(name, tool);
296
+ }
297
+ return index;
298
+ }
299
+ /** The registry's names, sorted and capped — the material every refusal ends with. */
300
+ function availableNames(registry) {
301
+ if (registry.size === 0)
302
+ return '(the registry you passed is empty)';
303
+ const names = [...registry.keys()].sort();
304
+ const shown = names.slice(0, NAMES_IN_REFUSAL).join(', ');
305
+ return names.length > NAMES_IN_REFUSAL
306
+ ? `${shown}, …and ${names.length - NAMES_IN_REFUSAL} more`
307
+ : shown;
308
+ }
309
+ /**
310
+ * Turn one file's declared tool NAMES into real Tools, or refuse by name.
311
+ *
312
+ * Undefined out means the file declared no `tools:` key — a prose-only skill,
313
+ * byte-identical to what this loader has always produced. It never means "the
314
+ * names did not resolve": that throws.
315
+ */
316
+ function resolveDeclaredTools(skill, passed, registry) {
317
+ if (skill.toolNames === undefined)
318
+ return undefined;
319
+ // The commonest mistake, and the one with the most misleading failure: the
320
+ // file is right, the call site forgot the half a file cannot carry. Refused
321
+ // with the whole list it asked for, so the fix is a copy-paste.
322
+ if (passed === undefined) {
323
+ throw new Error(`skillsFromDir: '${skill.file}' declares tools '${skill.toolNames.join(', ')}', but ` +
324
+ `skillsFromDir was called without a tool registry. A markdown file can NAME a tool; ` +
325
+ `only your code can supply one. Pass them: ` +
326
+ `skillsFromDir(dir, { tools: [${skill.toolNames.join(', ')}] }). ` +
327
+ `(If \`tools\` in this file belongs to another program, rename that key — it is a ` +
328
+ `key this loader now reads.)`);
329
+ }
330
+ const resolved = [];
331
+ for (const name of skill.toolNames) {
332
+ const tool = registry.get(name);
333
+ if (tool === undefined) {
334
+ throw new Error(`skillsFromDir: '${skill.file}' names the tool '${name}', which the \`tools\` registry ` +
335
+ `passed to skillsFromDir does not carry. A skill that loads without the tool it ` +
336
+ `asked for still runs and still sounds sure of itself, so this is refused instead. ` +
337
+ `Add it to the registry, or fix the name — available: ${availableNames(registry)}.`);
338
+ }
339
+ resolved.push(tool);
340
+ }
341
+ return resolved;
342
+ }
207
343
  /**
208
344
  * Parse one `SKILL.md`. Every refusal names the file — a loader that says
209
345
  * "malformed frontmatter" over a directory of forty files has told you nothing.
210
346
  *
211
347
  * The grammar is deliberately small: an opening `---` line, `key: value` lines
212
348
  * (`#` comments and blank lines skipped, single/double quotes stripped), a
213
- * closing `---` line, then the body. Keys other than `name` and `description`
214
- * are IGNORED rather than rejected, so a file carrying extra frontmatter for
215
- * another tool still loads here.
349
+ * closing `---` line, then the body. A key with NOTHING after the colon opens a
350
+ * block list, whose items are the following `- …` lines. Keys other than the
351
+ * five known ones are IGNORED rather than rejected, so a file carrying extra
352
+ * frontmatter for another tool still loads here.
216
353
  */
217
354
  function parseSkillFile(raw, file) {
218
355
  // Strip a UTF-8 BOM — an editor artifact, not the author's intent.
@@ -227,25 +364,9 @@ function parseSkillFile(raw, file) {
227
364
  throw new Error(`skillsFromDir: '${file}' opens a '---' frontmatter block that is never closed. ` +
228
365
  `Add a '---' line after the last frontmatter key.`);
229
366
  }
230
- const fields = new Map();
231
- for (let i = 1; i < closingIndex; i++) {
232
- const line = lines[i] ?? '';
233
- if (line.trim().length === 0 || line.trimStart().startsWith('#'))
234
- continue;
235
- const separator = line.indexOf(':');
236
- if (separator === -1) {
237
- throw new Error(`skillsFromDir: '${file}' frontmatter line ${i + 1} is not 'key: value' — got ` +
238
- `${JSON.stringify(line)}.`);
239
- }
240
- const key = line.slice(0, separator).trim();
241
- if (key.length === 0) {
242
- throw new Error(`skillsFromDir: '${file}' frontmatter line ${i + 1} has an empty key — got ` +
243
- `${JSON.stringify(line)}.`);
244
- }
245
- fields.set(key, unquote(line.slice(separator + 1).trim()));
246
- }
247
- const name = fields.get('name') ?? '';
248
- const description = fields.get('description') ?? '';
367
+ const fields = parseFrontmatterFields(lines, closingIndex, file);
368
+ const name = readScalar(fields, 'name', file);
369
+ const description = readScalar(fields, 'description', file);
249
370
  const body = lines
250
371
  .slice(closingIndex + 1)
251
372
  .join('\n')
@@ -266,7 +387,188 @@ function parseSkillFile(raw, file) {
266
387
  throw new Error(`skillsFromDir: '${file}' has no body after the closing '---'. The body is what the ` +
267
388
  `model reads once it activates the skill.`);
268
389
  }
269
- return { name, description, body, file };
390
+ const toolNames = readToolNames(fields, file);
391
+ const steps = readSteps(fields, file, toolNames);
392
+ const onSkip = readOnSkip(fields, file, steps);
393
+ return {
394
+ name,
395
+ description,
396
+ body,
397
+ ...(toolNames !== undefined && { toolNames }),
398
+ ...(steps !== undefined && { steps }),
399
+ ...(onSkip !== undefined && { onSkip }),
400
+ file,
401
+ };
402
+ }
403
+ /**
404
+ * The frontmatter lines → `key → value` map.
405
+ *
406
+ * A `- …` line is an ITEM only while a list is open (the line above it was a
407
+ * key with an empty value). Anywhere else it falls through to the `key: value`
408
+ * rule exactly as it always did — so a stray dash in somebody's unknown key
409
+ * keeps loading, and only a deliberate block list is read as one.
410
+ */
411
+ function parseFrontmatterFields(lines, closingIndex, file) {
412
+ const fields = new Map();
413
+ let openList;
414
+ for (let i = 1; i < closingIndex; i++) {
415
+ const line = lines[i] ?? '';
416
+ const trimmed = line.trim();
417
+ if (trimmed.length === 0 || trimmed.startsWith('#'))
418
+ continue;
419
+ if (openList !== undefined && (trimmed === '-' || trimmed.startsWith('- '))) {
420
+ const item = trimmed === '-' ? '' : trimmed.slice(2).trim();
421
+ const separator = item.indexOf(':');
422
+ openList.push(separator === -1
423
+ ? { key: item, line: i + 1 }
424
+ : {
425
+ key: item.slice(0, separator).trim(),
426
+ value: unquote(item.slice(separator + 1).trim()),
427
+ line: i + 1,
428
+ });
429
+ continue;
430
+ }
431
+ const separator = line.indexOf(':');
432
+ if (separator === -1) {
433
+ throw new Error(`skillsFromDir: '${file}' frontmatter line ${i + 1} is not 'key: value' — got ` +
434
+ `${JSON.stringify(line)}.`);
435
+ }
436
+ const key = line.slice(0, separator).trim();
437
+ if (key.length === 0) {
438
+ throw new Error(`skillsFromDir: '${file}' frontmatter line ${i + 1} has an empty key — got ` +
439
+ `${JSON.stringify(line)}.`);
440
+ }
441
+ const value = unquote(line.slice(separator + 1).trim());
442
+ if (value.length === 0) {
443
+ // An empty value OPENS a list. With no items after it the field stays an
444
+ // empty list, which every reader below treats exactly as the empty string
445
+ // it used to be — so `name:` with nothing after it still says "missing
446
+ // 'name'", not something new about lists.
447
+ const items = [];
448
+ openList = items;
449
+ fields.set(key, { kind: 'list', items });
450
+ }
451
+ else {
452
+ openList = undefined;
453
+ fields.set(key, { kind: 'scalar', text: value });
454
+ }
455
+ }
456
+ return fields;
457
+ }
458
+ /** A single-valued key, as it always read. An empty block list reads as '' — a
459
+ * key with nothing under it never carried a value in the first place. */
460
+ function readScalar(fields, key, file) {
461
+ const field = fields.get(key);
462
+ if (field === undefined)
463
+ return '';
464
+ if (field.kind === 'scalar')
465
+ return field.text;
466
+ if (field.items.length === 0)
467
+ return '';
468
+ throw new Error(`skillsFromDir: '${file}' frontmatter '${key}' is a list, and '${key}' takes one value. ` +
469
+ `Write it as '${key}: <value>' on one line.`);
470
+ }
471
+ /**
472
+ * `tools:` → the declared names, or undefined when the key is absent.
473
+ *
474
+ * Two spellings, because both read naturally at the size they are for:
475
+ * `tools: a, b` for the two-tool skill, and a block list once there are six.
476
+ */
477
+ function readToolNames(fields, file) {
478
+ const field = fields.get('tools');
479
+ if (field === undefined)
480
+ return undefined;
481
+ const names = field.kind === 'scalar'
482
+ ? field.text
483
+ .split(',')
484
+ .map((n) => unquote(n.trim()))
485
+ .filter((n) => n.length > 0)
486
+ : field.items.map((item) => {
487
+ if (item.value !== undefined) {
488
+ throw new Error(`skillsFromDir: '${file}' line ${item.line}: a 'tools' item is a NAME, not a ` +
489
+ `pair — write '- ${item.key}'. (Did you mean to put this under 'steps', where ` +
490
+ `each item is '- <tool>: <why>'?)`);
491
+ }
492
+ return item.key;
493
+ });
494
+ if (names.length === 0) {
495
+ throw new Error(`skillsFromDir: '${file}' declares 'tools' with no names. Say what you mean and omit ` +
496
+ `the key — a skill with no tools is exactly what this loader has always produced. ` +
497
+ `Otherwise: 'tools: lookup_order, issue_refund', or a '- <name>' block list.`);
498
+ }
499
+ const seen = new Set();
500
+ for (const name of names) {
501
+ if (seen.has(name)) {
502
+ throw new Error(`skillsFromDir: '${file}' lists the tool '${name}' twice in 'tools'. Each tool ` +
503
+ `belongs to a skill once (a skill's tools must be unique within itself); repeat it ` +
504
+ `in 'steps' instead if the procedure runs it twice.`);
505
+ }
506
+ seen.add(name);
507
+ }
508
+ return names;
509
+ }
510
+ /**
511
+ * `steps:` → the procedure, as data.
512
+ *
513
+ * Validated against the file's OWN `tools` here, ahead of `defineSkill`'s
514
+ * identical check, for one reason: this message can name the FILE and the LINE.
515
+ * `defineSkill` sees a skill id and cannot.
516
+ */
517
+ function readSteps(fields, file, toolNames) {
518
+ const field = fields.get('steps');
519
+ if (field === undefined)
520
+ return undefined;
521
+ if (field.kind === 'scalar') {
522
+ throw new Error(`skillsFromDir: '${file}' writes 'steps' on one line, and a procedure is an ORDERED ` +
523
+ `list of pairs. Write it as a block:\nsteps:\n - lookup_order: look up the order ` +
524
+ `first\n - issue_refund: refund only what the lookup found`);
525
+ }
526
+ if (field.items.length === 0) {
527
+ throw new Error(`skillsFromDir: '${file}' declares 'steps' with no items. Say what you mean and omit ` +
528
+ `the key — a skill without steps is byte-identical to one that never heard of them.`);
529
+ }
530
+ if (toolNames === undefined) {
531
+ throw new Error(`skillsFromDir: '${file}' declares 'steps' but no 'tools'. Every step runs one of the ` +
532
+ `skill's own tools, so a sequence with nothing to sequence can never engage. Add ` +
533
+ `'tools: …', or drop 'steps'.`);
534
+ }
535
+ const declared = new Set(toolNames);
536
+ return field.items.map((item) => {
537
+ if (item.value === undefined || item.value.length === 0) {
538
+ throw new Error(`skillsFromDir: '${file}' line ${item.line}: every step is '- <tool>: <why>' and ` +
539
+ `this one has no why. The note is the sentence the model reads about why the step ` +
540
+ `exists — a step without one is a force-march instruction, and the note is the ` +
541
+ `whole point.`);
542
+ }
543
+ if (item.key.length === 0) {
544
+ throw new Error(`skillsFromDir: '${file}' line ${item.line}: this step names no tool. Every step is ` +
545
+ `'- <tool>: <why>'.`);
546
+ }
547
+ if (!declared.has(item.key)) {
548
+ throw new Error(`skillsFromDir: '${file}' line ${item.line}: step '${item.key}' is not in this ` +
549
+ `file's 'tools' (${toolNames.join(', ')}). Steps may only sequence the skill's own ` +
550
+ `tools — add it to 'tools', or fix the name. Everything else the agent has stays ` +
551
+ `available as an escape hatch, unsequenced.`);
552
+ }
553
+ return { tool: item.key, note: item.value };
554
+ });
555
+ }
556
+ /** `onSkip:` → the skip policy. Refused here rather than at `defineSkill` so
557
+ * the message can name the file the author has to open. */
558
+ function readOnSkip(fields, file, steps) {
559
+ if (fields.get('onSkip') === undefined)
560
+ return undefined;
561
+ const raw = readScalar(fields, 'onSkip', file);
562
+ if (steps === undefined) {
563
+ throw new Error(`skillsFromDir: '${file}' declares 'onSkip' with no 'steps'. It says what a SKIPPED ` +
564
+ `step does, and this file declares no steps. Add 'steps:', or drop 'onSkip'.`);
565
+ }
566
+ if (raw !== 'advance' && raw !== 'hold') {
567
+ throw new Error(`skillsFromDir: '${file}' declares onSkip '${raw}', which is not a policy this ` +
568
+ `library has. The two are 'advance' (record the skip and move on — the default) and ` +
569
+ `'hold' (record the skip and keep the step current).`);
570
+ }
571
+ return raw;
270
572
  }
271
573
  /** Strip one layer of matching single or double quotes from a YAML-ish scalar. */
272
574
  function unquote(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"skillsFromDir.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillsFromDir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillsFromDir.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillsFromDir.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":"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"}