@vibe-agent-toolkit/agent-skills 0.1.39-rc.11 → 0.1.39-rc.13

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 (51) hide show
  1. package/dist/files-config.d.ts.map +1 -1
  2. package/dist/files-config.js +23 -7
  3. package/dist/files-config.js.map +1 -1
  4. package/dist/index.d.ts +2 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/plugin-distribution-layout.d.ts +70 -0
  9. package/dist/plugin-distribution-layout.d.ts.map +1 -0
  10. package/dist/plugin-distribution-layout.js +97 -0
  11. package/dist/plugin-distribution-layout.js.map +1 -0
  12. package/dist/skill-packager.d.ts +43 -1
  13. package/dist/skill-packager.d.ts.map +1 -1
  14. package/dist/skill-packager.js +34 -8
  15. package/dist/skill-packager.js.map +1 -1
  16. package/dist/skill-source/git-clone.d.ts +2 -2
  17. package/dist/skill-source/git-clone.d.ts.map +1 -1
  18. package/dist/skill-source/git-clone.js +29 -9
  19. package/dist/skill-source/git-clone.js.map +1 -1
  20. package/dist/skill-source/sources/url-source.d.ts.map +1 -1
  21. package/dist/skill-source/sources/url-source.js +23 -8
  22. package/dist/skill-source/sources/url-source.js.map +1 -1
  23. package/dist/skill-source/sources/workspace-source.d.ts.map +1 -1
  24. package/dist/skill-source/sources/workspace-source.js +16 -8
  25. package/dist/skill-source/sources/workspace-source.js.map +1 -1
  26. package/dist/skill-source/stage.js +6 -2
  27. package/dist/skill-source/stage.js.map +1 -1
  28. package/dist/skill-test/evals-template.d.ts.map +1 -1
  29. package/dist/skill-test/evals-template.js +7 -2
  30. package/dist/skill-test/evals-template.js.map +1 -1
  31. package/dist/skill-test/exit-codes.d.ts +7 -1
  32. package/dist/skill-test/exit-codes.d.ts.map +1 -1
  33. package/dist/skill-test/exit-codes.js +11 -1
  34. package/dist/skill-test/exit-codes.js.map +1 -1
  35. package/dist/skill-test/harness-location.d.ts +22 -4
  36. package/dist/skill-test/harness-location.d.ts.map +1 -1
  37. package/dist/skill-test/harness-location.js +83 -18
  38. package/dist/skill-test/harness-location.js.map +1 -1
  39. package/dist/skill-test/index.d.ts +2 -1
  40. package/dist/skill-test/index.d.ts.map +1 -1
  41. package/dist/skill-test/index.js +2 -1
  42. package/dist/skill-test/index.js.map +1 -1
  43. package/dist/skill-test/run-harness.d.ts +18 -19
  44. package/dist/skill-test/run-harness.d.ts.map +1 -1
  45. package/dist/skill-test/run-harness.js +79 -30
  46. package/dist/skill-test/run-harness.js.map +1 -1
  47. package/dist/skill-test/vendor-manifest.d.ts +3 -3
  48. package/dist/skill-test/vendor-manifest.d.ts.map +1 -1
  49. package/dist/skill-test/vendor-manifest.js +13 -3
  50. package/dist/skill-test/vendor-manifest.js.map +1 -1
  51. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"files-config.d.ts","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAWpE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,+BAA+B;IAC/B,KAAK,EAAE,cAAc,CAAC;CACvB;AAaD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,EACtC,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,GACrC,cAAc,EAAE,CA6ClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EAAE,GACtB,gBAAgB,GAAG,IAAI,CAiCzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,+FAA+F;IAC/F,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EAAE,EACvB,IAAI,EAAE,wBAAwB,GAC7B,aAAa,CAqBf;AAED,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9C,IAAI,CAgBN;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAuBf;AAiFD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyCvF"}
1
+ {"version":3,"file":"files-config.d.ts","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAYpE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,+BAA+B;IAC/B,KAAK,EAAE,cAAc,CAAC;CACvB;AAaD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,EACtC,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,GACrC,cAAc,EAAE,CA6ClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EAAE,GACtB,gBAAgB,GAAG,IAAI,CAiCzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,+FAA+F;IAC/F,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EAAE,EACvB,IAAI,EAAE,wBAAwB,GAC7B,aAAa,CAqBf;AAED,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9C,IAAI,CAgBN;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyBf;AAiGD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyCvF"}
@@ -10,7 +10,7 @@
10
10
  import { existsSync, statSync } from 'node:fs';
11
11
  import { copyFile, mkdir } from 'node:fs/promises';
12
12
  import { dirname } from 'node:path';
13
- import { fileContentHash, globMagicRemainder, isGlob, safePath, staticGlobBase, toForwardSlash, } from '@vibe-agent-toolkit/utils';
13
+ import { fileContentHash, globMagicRemainder, hasParentTraversalSegment, isGlob, safePath, staticGlobBase, toForwardSlash, } from '@vibe-agent-toolkit/utils';
14
14
  import { glob } from 'glob';
15
15
  /**
16
16
  * Normalize a path for comparison: strip leading ./ and normalize slashes.
@@ -209,7 +209,9 @@ export function verifyFilesIntegrity(pairs) {
209
209
  * @throws if the actual subtree omits an expected file or contains an extra one.
210
210
  */
211
211
  export async function verifyDestSet(destDir, expectedRel, source) {
212
- const actual = (await glob('**/*', { cwd: destDir, nodir: true }))
212
+ // dot: true to stay symmetric with the copy glob (M10) both sides must see
213
+ // hidden files, otherwise a dropped dot-file is invisible to integrity.
214
+ const actual = (await glob('**/*', { cwd: destDir, nodir: true, dot: true }))
213
215
  .map((m) => toForwardSlash(m))
214
216
  .sort((a, b) => a.localeCompare(b));
215
217
  const expected = [...expectedRel].sort((a, b) => a.localeCompare(b));
@@ -241,7 +243,9 @@ async function copyNonGlobEntry(entry, absoluteSource, skillOutputDir) {
241
243
  if (statSync(absoluteSource).isDirectory()) {
242
244
  throw new Error(`files: source '${entry.source}' is a directory; use a glob like '${entry.source}/**/*' to copy its contents.`);
243
245
  }
244
- const absoluteDest = safePath.join(skillOutputDir, entry.dest);
246
+ // joinUnderRoot rejects a dest that escapes the skill output dir (absolute /
247
+ // drive-letter / '..'), defense-in-depth beyond the schema refine.
248
+ const absoluteDest = safePath.joinUnderRoot(skillOutputDir, entry.dest);
245
249
  // eslint-disable-next-line security/detect-non-literal-fs-filename -- dest path from validated config
246
250
  await mkdir(dirname(absoluteDest), { recursive: true });
247
251
  await copyFile(absoluteSource, absoluteDest);
@@ -254,8 +258,17 @@ async function copyNonGlobEntry(entry, absoluteSource, skillOutputDir) {
254
258
  async function copyGlobEntry(entry, projectRoot, skillOutputDir, bundledFileSet) {
255
259
  const base = staticGlobBase(entry.source);
256
260
  const remainder = globMagicRemainder(entry.source);
261
+ // H2: the static base may legitimately contain leading '..' (the deliberate
262
+ // sibling-base monorepo feature), but the MAGIC REMAINDER must never contain a
263
+ // '..' segment — `glob` honors it and climbs above absoluteBase. Reject it.
264
+ if (hasParentTraversalSegment(remainder)) {
265
+ throw new Error(`files: source '${entry.source}' (glob) has a '..' segment in its glob portion ('${remainder}'); ` +
266
+ `parent-directory traversal is not allowed after the static base.`);
267
+ }
257
268
  const absoluteBase = safePath.resolve(safePath.join(projectRoot, base));
258
- const rawMatches = await glob(remainder, { cwd: absoluteBase, nodir: true });
269
+ // dot: true so hidden files under the source subtree are included — keeps the
270
+ // package symmetric with verifyDestSet (M10: silent dot-file drop).
271
+ const rawMatches = await glob(remainder, { cwd: absoluteBase, nodir: true, dot: true });
259
272
  const matches = rawMatches.map((m) => toForwardSlash(m)).sort((a, b) => a.localeCompare(b));
260
273
  if (matches.length === 0) {
261
274
  throw new Error(`files: source '${entry.source}' (glob) matched no files under ${absoluteBase} — has your build run?`);
@@ -267,11 +280,14 @@ async function copyGlobEntry(entry, projectRoot, skillOutputDir, bundledFileSet)
267
280
  // verifyDestSet diffs the on-disk subtree against.
268
281
  const rels = [];
269
282
  for (const rel of matches) {
270
- const absSource = safePath.join(absoluteBase, rel);
283
+ // joinUnderRoot asserts each matched file stays under absoluteBase (read) and
284
+ // that the rebased dest stays under the skill output dir (write) — H1/H2
285
+ // defense-in-depth against a traversal that slipped past earlier guards.
286
+ const absSource = safePath.joinUnderRoot(absoluteBase, rel);
271
287
  if (bundledFileSet.has(toForwardSlash(absSource)))
272
288
  continue;
273
289
  const relDest = toForwardSlash(safePath.join(entry.dest, rel));
274
- const absDest = safePath.join(skillOutputDir, entry.dest, rel);
290
+ const absDest = safePath.joinUnderRoot(skillOutputDir, entry.dest, rel);
275
291
  // eslint-disable-next-line security/detect-non-literal-fs-filename -- dest path from validated config
276
292
  await mkdir(dirname(absDest), { recursive: true });
277
293
  await copyFile(absSource, absDest);
@@ -316,7 +332,7 @@ export async function applyFilesConfig(opts) {
316
332
  // Scoped set check: the glob entry owns its dest subtree and the build
317
333
  // wiped the output dir first, so the on-disk subtree must equal exactly
318
334
  // the rels we copied — catches a misrouted rebase the pair-hash misses.
319
- await verifyDestSet(safePath.join(opts.skillOutputDir, fileEntry.dest), rels, fileEntry.source);
335
+ await verifyDestSet(safePath.joinUnderRoot(opts.skillOutputDir, fileEntry.dest), rels, fileEntry.source);
320
336
  }
321
337
  copied.push(...entryCopied);
322
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"files-config.js","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files-config.js","sourceRoot":"","sources":["../src/files-config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Build, validate, and package agent skills in the Agent Skills format
4
4
  */
5
5
  export { buildAgentSkill, type BuildOptions, type BuildResult } from './builder.js';
6
- export { extractH1Title, packageSkill, packageSkills, ZipSizeLimitError, type PackageSkillOptions, type PackageSkillResult, type PackagingTarget, type SkillBuildSpec, type SkillMetadata, } from './skill-packager.js';
6
+ export { extractH1Title, packageSkill, packageSkills, packagingConfigToPackageOptions, ZipSizeLimitError, type PackageSkillOptions, type PackageSkillResult, type PackagingTarget, type SkillBuildSpec, type SkillMetadata, } from './skill-packager.js';
7
7
  export { walkLinkGraph, type ExcludeRule, type LinkGraphResult, type LinkResolution, type WalkableRegistry, type WalkLinkGraphOptions, } from './walk-link-graph.js';
8
8
  export { getTargetSubdir, CONTENT_TYPE_ROUTING_MAP, type TargetSubdirCategory, } from './content-type-routing.js';
9
9
  export { applyFilesConfig, mergeFilesConfig, matchLinkToFiles, computeDeferredPaths, type ApplyFilesConfigOptions, type ComputeDeferredPathsOpts, type DeferredPaths, type FilesMatchResult, } from './files-config.js';
@@ -32,4 +32,5 @@ export type { DeriveObservationsOptions, DerivationSubject } from './evidence/in
32
32
  export type { AnyInventory, BaseInventory, ComponentRef, DeclaredList, HookRef, InstallInventory, LspRef, MarketplaceInventory, McpRef, ParseError as InventoryParseError, PluginInventory, PluginRef, ResolvedReference, SkillInventory, } from './inventory/index.js';
33
33
  export { isInstallInventory, isMarketplaceInventory, isPluginInventory, isSkillInventory, serializeInventory, serializeInventoryShallow, INVENTORY_SCHEMA_VERSION, detectDeclaredButMissing, detectMarketplacePluginSourceMissing, detectPresentButUndeclared, detectReferenceTargetMissing, } from './inventory/index.js';
34
34
  export * from './skill-test/index.js';
35
+ export { computeTreeCopiedSkillLocations, findDistributedSkillLocationBySource, getPluginOutputDir, getPluginSourceDir, listPluginSourceSkillDirs, skillNameToFsPath, type DistributedSkillLocation, } from './plugin-distribution-layout.js';
35
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Build, validate, and package agent skills in the Agent Skills format
4
4
  */
5
5
  export { buildAgentSkill } from './builder.js';
6
- export { extractH1Title, packageSkill, packageSkills, ZipSizeLimitError, } from './skill-packager.js';
6
+ export { extractH1Title, packageSkill, packageSkills, packagingConfigToPackageOptions, ZipSizeLimitError, } from './skill-packager.js';
7
7
  export { walkLinkGraph, } from './walk-link-graph.js';
8
8
  export { getTargetSubdir, CONTENT_TYPE_ROUTING_MAP, } from './content-type-routing.js';
9
9
  export { applyFilesConfig, mergeFilesConfig, matchLinkToFiles, computeDeferredPaths, } from './files-config.js';
@@ -29,4 +29,5 @@ export { resolveSkillSource } from './skill-source/resolve-skill-source.js';
29
29
  export { PATTERN_REGISTRY, getPatternDefinition, assertPatternRegistered, deriveObservationsFromEvidence, } from './evidence/index.js';
30
30
  export { isInstallInventory, isMarketplaceInventory, isPluginInventory, isSkillInventory, serializeInventory, serializeInventoryShallow, INVENTORY_SCHEMA_VERSION, detectDeclaredButMissing, detectMarketplacePluginSourceMissing, detectPresentButUndeclared, detectReferenceTargetMissing, } from './inventory/index.js';
31
31
  export * from './skill-test/index.js';
32
+ export { computeTreeCopiedSkillLocations, findDistributedSkillLocationBySource, getPluginOutputDir, getPluginSourceDir, listPluginSourceSkillDirs, skillNameToFsPath, } from './plugin-distribution-layout.js';
32
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,GAMlB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,GAMd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GAKrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,GAG/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAA4B,MAAM,mCAAmC,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EACL,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAyB,MAAM,sCAAsC,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAA+B,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAK1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,GAItB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EACL,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAErB,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAuB,MAAM,6BAA6B,CAAC;AAElF,8CAA8C;AAC9C,OAAO,EAAE,kBAAkB,EAAkC,MAAM,wCAAwC,CAAC;AAgB5G,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAoB7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,+BAA+B,EAC/B,iBAAiB,GAMlB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,GAMd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GAKrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,GAG/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAA4B,MAAM,mCAAmC,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EACL,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAyB,MAAM,sCAAsC,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAA+B,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAK1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,GAItB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EACL,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAErB,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAuB,MAAM,6BAA6B,CAAC;AAElF,8CAA8C;AAC9C,OAAO,EAAE,kBAAkB,EAAkC,MAAM,wCAAwC,CAAC;AAgB5G,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAoB7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,EACpC,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,GAElB,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Plugin distribution layout helpers.
3
+ *
4
+ * Shared primitives for locating where `vat build --only claude` places
5
+ * tree-copied plugin skills in the output tree, and where it reads them from.
6
+ *
7
+ * Consumed by `vat build`, `vat verify`, and consistency-check so the path
8
+ * conventions can never drift between those commands.
9
+ */
10
+ import type { ProjectConfig } from '@vibe-agent-toolkit/resources';
11
+ /**
12
+ * Absolute path to the built plugin output directory.
13
+ *
14
+ * Shape: `<configDir>/dist/.claude/plugins/marketplaces/<mp>/plugins/<name>/`
15
+ *
16
+ * Extracted verbatim from build.ts lines 577–580 so that build can later adopt
17
+ * this helper with zero behavior change.
18
+ */
19
+ export declare function getPluginOutputDir(configDir: string, marketplaceName: string, pluginName: string): string;
20
+ /**
21
+ * Absolute path to the plugin source directory.
22
+ *
23
+ * Resolves to `<configDir>/<plugin.source>` when the plugin declares a custom
24
+ * source, otherwise `<configDir>/plugins/<plugin.name>`.
25
+ *
26
+ * Extracted verbatim from build.ts lines 581–584.
27
+ */
28
+ export declare function getPluginSourceDir(configDir: string, plugin: {
29
+ name: string;
30
+ source?: string | undefined;
31
+ }): string;
32
+ /**
33
+ * Names of immediate skill subdirectories under `<pluginSourceDir>/skills/`.
34
+ *
35
+ * Returns `[]` when the `skills/` directory does not exist (pool-only plugin).
36
+ * Non-directory entries (files, symlinks, …) are silently skipped.
37
+ *
38
+ * Mirrors `listSubdirectories` in install.ts.
39
+ */
40
+ export declare function listPluginSourceSkillDirs(pluginSourceDir: string): string[];
41
+ /** Location of a single skill shipped via source tree-copy. */
42
+ export interface DistributedSkillLocation {
43
+ /** Name of the marketplace this skill ships through. */
44
+ marketplaceName: string;
45
+ /** Name of the plugin that contains this skill. */
46
+ pluginName: string;
47
+ /** Directory name under the plugin's `skills/` source dir (also the skill fs path segment). */
48
+ skillDirName: string;
49
+ /** Absolute SOURCE skill dir: `<pluginSourceDir>/skills/<skillDirName>`. */
50
+ skillSourceDir: string;
51
+ /** Absolute output path where `vat build` places the skill: `getPluginOutputDir(...)/skills/<skillDirName>`. */
52
+ skillOutputDir: string;
53
+ }
54
+ /**
55
+ * Every skill shipped via source tree-copy across all marketplaces in the
56
+ * config, paired with the output directory where `vat build` places it.
57
+ *
58
+ * Pool-only plugins — those whose source `skills/` directory is absent on disk
59
+ * — contribute nothing to the result.
60
+ */
61
+ export declare function computeTreeCopiedSkillLocations(config: ProjectConfig, configDir: string): DistributedSkillLocation[];
62
+ /** FS-safe single path segment for a skill name (colon → `__`, invalid on Windows). */
63
+ export declare function skillNameToFsPath(name: string): string;
64
+ /**
65
+ * Find the tree-copied location whose SOURCE skill dir equals `skillSourceDir`
66
+ * (compared via resolved absolute paths). Returns `undefined` for pool skills
67
+ * or skills not declared in any plugin's `skills/` source dir.
68
+ */
69
+ export declare function findDistributedSkillLocationBySource(config: ProjectConfig, configDir: string, skillSourceDir: string): DistributedSkillLocation | undefined;
70
+ //# sourceMappingURL=plugin-distribution-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-distribution-layout.d.ts","sourceRoot":"","sources":["../src/plugin-distribution-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CAWR;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACpD,MAAM,CAKR;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ3E;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,gHAAgH;IAChH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,wBAAwB,EAAE,CA0B5B;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,wBAAwB,GAAG,SAAS,CAKtC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Plugin distribution layout helpers.
3
+ *
4
+ * Shared primitives for locating where `vat build --only claude` places
5
+ * tree-copied plugin skills in the output tree, and where it reads them from.
6
+ *
7
+ * Consumed by `vat build`, `vat verify`, and consistency-check so the path
8
+ * conventions can never drift between those commands.
9
+ */
10
+ import { existsSync, readdirSync } from 'node:fs';
11
+ import { safePath } from '@vibe-agent-toolkit/utils';
12
+ /**
13
+ * Absolute path to the built plugin output directory.
14
+ *
15
+ * Shape: `<configDir>/dist/.claude/plugins/marketplaces/<mp>/plugins/<name>/`
16
+ *
17
+ * Extracted verbatim from build.ts lines 577–580 so that build can later adopt
18
+ * this helper with zero behavior change.
19
+ */
20
+ export function getPluginOutputDir(configDir, marketplaceName, pluginName) {
21
+ return safePath.join(configDir, 'dist', '.claude', 'plugins', 'marketplaces', marketplaceName, 'plugins', pluginName);
22
+ }
23
+ /**
24
+ * Absolute path to the plugin source directory.
25
+ *
26
+ * Resolves to `<configDir>/<plugin.source>` when the plugin declares a custom
27
+ * source, otherwise `<configDir>/plugins/<plugin.name>`.
28
+ *
29
+ * Extracted verbatim from build.ts lines 581–584.
30
+ */
31
+ export function getPluginSourceDir(configDir, plugin) {
32
+ return safePath.join(configDir, plugin.source ?? safePath.join('plugins', plugin.name));
33
+ }
34
+ /**
35
+ * Names of immediate skill subdirectories under `<pluginSourceDir>/skills/`.
36
+ *
37
+ * Returns `[]` when the `skills/` directory does not exist (pool-only plugin).
38
+ * Non-directory entries (files, symlinks, …) are silently skipped.
39
+ *
40
+ * Mirrors `listSubdirectories` in install.ts.
41
+ */
42
+ export function listPluginSourceSkillDirs(pluginSourceDir) {
43
+ const skillsDir = safePath.join(pluginSourceDir, 'skills');
44
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- caller validates pluginSourceDir
45
+ if (!existsSync(skillsDir))
46
+ return [];
47
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- caller validates pluginSourceDir
48
+ return readdirSync(skillsDir, { withFileTypes: true })
49
+ .filter(d => d.isDirectory())
50
+ .map(d => d.name);
51
+ }
52
+ /**
53
+ * Every skill shipped via source tree-copy across all marketplaces in the
54
+ * config, paired with the output directory where `vat build` places it.
55
+ *
56
+ * Pool-only plugins — those whose source `skills/` directory is absent on disk
57
+ * — contribute nothing to the result.
58
+ */
59
+ export function computeTreeCopiedSkillLocations(config, configDir) {
60
+ const locations = [];
61
+ const marketplaces = config.claude?.marketplaces;
62
+ if (!marketplaces)
63
+ return locations;
64
+ for (const [marketplaceName, marketplace] of Object.entries(marketplaces)) {
65
+ for (const plugin of marketplace.plugins) {
66
+ const pluginSourceDir = getPluginSourceDir(configDir, plugin);
67
+ const skillDirNames = listPluginSourceSkillDirs(pluginSourceDir);
68
+ if (skillDirNames.length === 0)
69
+ continue;
70
+ const pluginOutputDir = getPluginOutputDir(configDir, marketplaceName, plugin.name);
71
+ for (const skillDirName of skillDirNames) {
72
+ locations.push({
73
+ marketplaceName,
74
+ pluginName: plugin.name,
75
+ skillDirName,
76
+ skillSourceDir: safePath.join(pluginSourceDir, 'skills', skillDirName),
77
+ skillOutputDir: safePath.join(pluginOutputDir, 'skills', skillDirName),
78
+ });
79
+ }
80
+ }
81
+ }
82
+ return locations;
83
+ }
84
+ /** FS-safe single path segment for a skill name (colon → `__`, invalid on Windows). */
85
+ export function skillNameToFsPath(name) {
86
+ return name.replaceAll(':', '__');
87
+ }
88
+ /**
89
+ * Find the tree-copied location whose SOURCE skill dir equals `skillSourceDir`
90
+ * (compared via resolved absolute paths). Returns `undefined` for pool skills
91
+ * or skills not declared in any plugin's `skills/` source dir.
92
+ */
93
+ export function findDistributedSkillLocationBySource(config, configDir, skillSourceDir) {
94
+ const target = safePath.resolve(skillSourceDir);
95
+ return computeTreeCopiedSkillLocations(config, configDir).find(loc => safePath.resolve(loc.skillSourceDir) === target);
96
+ }
97
+ //# sourceMappingURL=plugin-distribution-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-distribution-layout.js","sourceRoot":"","sources":["../src/plugin-distribution-layout.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ import { type ValidationConfig, type ValidationIssue } from '@vibe-agent-toolkit
18
18
  import { ResourceRegistry } from '@vibe-agent-toolkit/resources';
19
19
  import { type GitTracker } from '@vibe-agent-toolkit/utils';
20
20
  import { type SkillFileEntry } from './files-config.js';
21
- import { type PackagingValidationResult } from './validators/packaging-validator.js';
21
+ import { type PackagingValidationResult, type SkillPackagingConfig } from './validators/packaging-validator.js';
22
22
  /**
23
23
  * Resource naming strategy type
24
24
  */
@@ -130,6 +130,17 @@ export interface PackageSkillOptions {
130
130
  */
131
131
  validation?: ValidationConfig | undefined;
132
132
  }
133
+ /**
134
+ * Map a merged {@link SkillPackagingConfig} onto {@link PackageSkillOptions}.
135
+ *
136
+ * The single canonical conversion used by BOTH `vat skills build` and
137
+ * `vat skill test` (the pool build), so the dist a test exercises is byte-for-byte
138
+ * what `vat skills build` would produce. `basePath` defaults to `dirname(skillPath)`.
139
+ */
140
+ export declare function packagingConfigToPackageOptions(config: SkillPackagingConfig, anchors: {
141
+ skillPath: string;
142
+ outputPath: string;
143
+ }): PackageSkillOptions;
133
144
  export interface SkillMetadata {
134
145
  name: string;
135
146
  description?: string;
@@ -223,6 +234,20 @@ export declare function packageSkills(skills: SkillBuildSpec[], projectRoot: str
223
234
  * ```
224
235
  */
225
236
  export declare function packageSkill(skillPath: string, options?: PackageSkillOptions): Promise<PackageSkillResult>;
237
+ /**
238
+ * Generate a synthetic resource ID for a non-markdown asset that collides with an
239
+ * existing markdown resource. Uses the absolute asset path prefixed with `asset::`
240
+ * to guarantee uniqueness — this id is used only for skill-packager internal
241
+ * lookups (output registry + link rewriting), not for user-facing output.
242
+ */
243
+ export declare function synthesizeAssetId(assetPath: string): string;
244
+ /**
245
+ * Determine the resource subdirectory for a file.
246
+ *
247
+ * For claude-web target: uses the existing references directory.
248
+ * For claude-code target: uses content-type routing based on file extension.
249
+ */
250
+ export declare function getResourceSubdirForFile(filePath: string, target: PackagingTarget): string;
226
251
  /**
227
252
  * Extract H1 title from markdown content
228
253
  *
@@ -230,6 +255,23 @@ export declare function packageSkill(skillPath: string, options?: PackageSkillOp
230
255
  * @returns The H1 title text, or undefined if not found
231
256
  */
232
257
  export declare function extractH1Title(content: string): string | undefined;
258
+ /**
259
+ * Find the common ancestor directory of all file paths
260
+ *
261
+ * @param filePaths - Array of absolute file paths
262
+ * @returns Common ancestor directory path
263
+ */
264
+ export declare function findCommonAncestor(filePaths: string[]): string;
265
+ /**
266
+ * Generate target path based on naming strategy
267
+ *
268
+ * @param filePath - Absolute path to the source file
269
+ * @param basePath - Base path to calculate relative path from
270
+ * @param strategy - Naming strategy to use
271
+ * @param stripPrefix - Path prefix to remove before applying strategy (works for all strategies)
272
+ * @returns Target path (relative) for the packaged resource
273
+ */
274
+ export declare function generateTargetPath(filePath: string, basePath: string, strategy?: ResourceNamingStrategy, stripPrefix?: string): string;
233
275
  /**
234
276
  * Thrown when a claude-web ZIP exceeds the 8MB Claude.ai upload limit.
235
277
  * The CLI catches this and exits with code 1.
@@ -1 +1 @@
1
- {"version":3,"file":"skill-packager.d.ts","sourceRoot":"","sources":["../src/skill-packager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-packager.d.ts","sourceRoot":"","sources":["../src/skill-packager.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,27 @@ const PACKAGE_JSON_FILENAME = 'package.json';
31
31
  const DEFAULT_STRIP_TEMPLATE = '{{link.text}}';
32
32
  /** Default packaging target */
33
33
  const DEFAULT_PACKAGING_TARGET = 'claude-code';
34
+ /**
35
+ * Map a merged {@link SkillPackagingConfig} onto {@link PackageSkillOptions}.
36
+ *
37
+ * The single canonical conversion used by BOTH `vat skills build` and
38
+ * `vat skill test` (the pool build), so the dist a test exercises is byte-for-byte
39
+ * what `vat skills build` would produce. `basePath` defaults to `dirname(skillPath)`.
40
+ */
41
+ export function packagingConfigToPackageOptions(config, anchors) {
42
+ return {
43
+ outputPath: anchors.outputPath,
44
+ formats: ['directory'],
45
+ rewriteLinks: true,
46
+ basePath: dirname(anchors.skillPath),
47
+ ...(config.resourceNaming && { resourceNaming: config.resourceNaming }),
48
+ ...(config.stripPrefix && { stripPrefix: config.stripPrefix }),
49
+ ...(config.linkFollowDepth !== undefined && { linkFollowDepth: config.linkFollowDepth }),
50
+ ...(config.excludeReferencesFromBundle && { excludeReferencesFromBundle: config.excludeReferencesFromBundle }),
51
+ ...(config.files && { files: config.files }),
52
+ ...(config.validation && { validation: config.validation }),
53
+ };
54
+ }
34
55
  /**
35
56
  * Package multiple skills with a shared ResourceRegistry.
36
57
  *
@@ -341,7 +362,7 @@ async function loadCollectionSchemas(config, baseDir) {
341
362
  * to guarantee uniqueness — this id is used only for skill-packager internal
342
363
  * lookups (output registry + link rewriting), not for user-facing output.
343
364
  */
344
- function synthesizeAssetId(assetPath) {
365
+ export function synthesizeAssetId(assetPath) {
345
366
  return `asset::${toForwardSlash(safePath.resolve(assetPath))}`;
346
367
  }
347
368
  /**
@@ -487,7 +508,9 @@ function applyNonGlobEntriesToPathMap(filesConfig, projectRoot, outputPath, path
487
508
  if (isGlob(fileEntry.source))
488
509
  continue;
489
510
  const absoluteSource = safePath.resolve(safePath.join(projectRoot, fileEntry.source));
490
- const absoluteDest = safePath.join(outputPath, fileEntry.dest);
511
+ // joinUnderRoot guards against a dest escaping the output dir (zip-slip class),
512
+ // defense-in-depth beyond the schema refine on SkillFileEntry.dest.
513
+ const absoluteDest = safePath.joinUnderRoot(outputPath, fileEntry.dest);
491
514
  // Validate source exists at build time
492
515
  // eslint-disable-next-line security/detect-non-literal-fs-filename -- source path from validated config
493
516
  if (!existsSync(absoluteSource)) {
@@ -535,7 +558,8 @@ function registerDeferredDestLinks(filesConfig, resources, skillPath, outputPath
535
558
  else {
536
559
  // Single-file entry: UNCHANGED — exact dest match (resolved against skillDir).
537
560
  const absDestTarget = safePath.resolve(skillDir, entry.dest);
538
- const absDestOutput = safePath.join(outputPath, entry.dest);
561
+ // joinUnderRoot keeps the synthesized output path inside the skill output dir.
562
+ const absDestOutput = safePath.joinUnderRoot(outputPath, entry.dest);
539
563
  const id = synthesizeAssetId(absDestTarget);
540
564
  if (!stampDeferredDestResolvedId(resources, absDestTarget, id))
541
565
  continue;
@@ -588,8 +612,10 @@ function synthesizeGlobLinkResource(link, resourceFilePath, ctx) {
588
612
  return;
589
613
  // Stamp resolvedId per-linked-file
590
614
  link.resolvedId = synthesizeAssetId(T);
591
- // absDestOutput: preserve T's path relative to skillDir under outputPath
592
- const absDestOutput = safePath.join(ctx.outputPath, safePath.relative(ctx.skillDir, T));
615
+ // absDestOutput: preserve T's path relative to skillDir under outputPath.
616
+ // joinUnderRoot keeps it inside the output dir (T is verified under absDestDir,
617
+ // itself under skillDir once the dest schema rejects '..'/absolute).
618
+ const absDestOutput = safePath.joinUnderRoot(ctx.outputPath, safePath.relative(ctx.skillDir, T));
593
619
  // Dedup against existing + already-synthesized
594
620
  const alreadyPresent = ctx.existingOutputResources.some(r => toForwardSlash(r.filePath) === toForwardSlash(absDestOutput)) ||
595
621
  ctx.syntheticResources.some(r => toForwardSlash(r.filePath) === toForwardSlash(absDestOutput));
@@ -630,7 +656,7 @@ function stampDeferredDestResolvedId(resources, absDestTarget, id) {
630
656
  * For claude-web target: uses the existing references directory.
631
657
  * For claude-code target: uses content-type routing based on file extension.
632
658
  */
633
- function getResourceSubdirForFile(filePath, target) {
659
+ export function getResourceSubdirForFile(filePath, target) {
634
660
  if (target === 'claude-web') {
635
661
  return 'references';
636
662
  }
@@ -942,7 +968,7 @@ export function extractH1Title(content) {
942
968
  * @param filePaths - Array of absolute file paths
943
969
  * @returns Common ancestor directory path
944
970
  */
945
- function findCommonAncestor(filePaths) {
971
+ export function findCommonAncestor(filePaths) {
946
972
  if (filePaths.length === 0) {
947
973
  return process.cwd();
948
974
  }
@@ -981,7 +1007,7 @@ function findCommonAncestor(filePaths) {
981
1007
  * @param stripPrefix - Path prefix to remove before applying strategy (works for all strategies)
982
1008
  * @returns Target path (relative) for the packaged resource
983
1009
  */
984
- function generateTargetPath(filePath, basePath, strategy = 'basename', stripPrefix) {
1010
+ export function generateTargetPath(filePath, basePath, strategy = 'basename', stripPrefix) {
985
1011
  if (strategy === 'basename') {
986
1012
  // Default: just use the filename (flat structure)
987
1013
  return basename(filePath);