agent-contracts 0.19.4 → 0.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -49565,18 +49565,27 @@ async function resolveRefsDeep(data, baseDir, resolving, rootDoc) {
49565
49565
  }
49566
49566
  resolving.add(refValue);
49567
49567
  const target = resolveJsonPointer(rootDoc, refValue);
49568
- const resolved2 = await resolveRefsDeep(
49568
+ const resolved = await resolveRefsDeep(
49569
49569
  deepClone(target),
49570
49570
  baseDir,
49571
49571
  resolving,
49572
49572
  rootDoc
49573
49573
  );
49574
49574
  resolving.delete(refValue);
49575
- return resolved2;
49575
+ return resolved;
49576
49576
  }
49577
- const refTarget = resolve2(baseDir, refValue);
49577
+ const hashIdx = refValue.indexOf("#");
49578
+ const filePart = hashIdx >= 0 ? refValue.slice(0, hashIdx) : refValue;
49579
+ const fragment = hashIdx >= 0 ? refValue.slice(hashIdx) : null;
49580
+ const refTarget = resolve2(baseDir, filePart);
49578
49581
  const s2 = await fsStat(refTarget).catch(() => null);
49579
49582
  if (s2?.isDirectory()) {
49583
+ if (fragment) {
49584
+ throw new DslLoadError(
49585
+ `Cannot use JSON Pointer fragment with directory $ref: ${refValue}`,
49586
+ refTarget
49587
+ );
49588
+ }
49580
49589
  if (resolving.has(refTarget)) {
49581
49590
  throw new DslLoadError(
49582
49591
  `Circular $ref detected: ${refTarget}`,
@@ -49599,14 +49608,24 @@ async function resolveRefsDeep(data, baseDir, resolving, rootDoc) {
49599
49608
  }
49600
49609
  resolving.add(refTarget);
49601
49610
  const content = await readYaml(refTarget);
49602
- const resolved = await resolveRefsDeep(
49611
+ const fileRoot = fragment ? content : rootDoc;
49612
+ let fileData = await resolveRefsDeep(
49603
49613
  content,
49604
49614
  dirname2(refTarget),
49605
49615
  resolving,
49606
- rootDoc
49616
+ fileRoot
49607
49617
  );
49608
49618
  resolving.delete(refTarget);
49609
- return resolved;
49619
+ if (fragment && fragment.startsWith("#/")) {
49620
+ if (!isRecord(fileData)) {
49621
+ throw new DslLoadError(
49622
+ `Cannot resolve fragment "${fragment}" in ${refTarget}: file content is not an object`,
49623
+ refTarget
49624
+ );
49625
+ }
49626
+ fileData = resolveJsonPointer(fileData, fragment);
49627
+ }
49628
+ return fileData;
49610
49629
  }
49611
49630
  let obj = data;
49612
49631
  if (hasRefs(obj)) {