@shoalrun/cli 0.1.0-beta.1 → 1.1.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 (483) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/CODE-REFERENCES.md +156 -0
  3. package/README.md +18 -6
  4. package/adapters/python/requirements.txt +1 -0
  5. package/adapters/python/shoalrun_reference.py +234 -0
  6. package/adapters/typescript/README.md +27 -0
  7. package/adapters/typescript/shoalrun-reference.mjs +260 -0
  8. package/agent-docs/.well-known/shoalrun/navigation/project-updates-50f26fe22670.txt +6 -2
  9. package/agent-docs/SNAPSHOT.json +5 -5
  10. package/agent-docs/about.md +3 -3
  11. package/agent-docs/api-docs/code-reference-settings.md +160 -0
  12. package/agent-docs/api-docs/code-reference-settings.sections/catalog-settings.md +50 -0
  13. package/agent-docs/api-docs/code-reference-settings.sections/complete-reference-page.md +46 -0
  14. package/agent-docs/api-docs/code-reference-settings.sections/converter-snapshot.md +58 -0
  15. package/agent-docs/api-docs/code-reference-settings.sections/descriptions-type-links-and-source-links.md +40 -0
  16. package/agent-docs/api-docs/code-reference-settings.sections/html-markdown-and-agents.md +38 -0
  17. package/agent-docs/api-docs/code-reference-settings.sections/metadata-and-selection.md +38 -0
  18. package/agent-docs/api-docs/code-reference-settings.sections/publication-sources.md +54 -0
  19. package/agent-docs/api-docs/code-reference-settings.sections/python-adapter-limits.md +38 -0
  20. package/agent-docs/api-docs/code-reference-settings.sections/related-reading.md +32 -0
  21. package/agent-docs/api-docs/code-reference-settings.sections/symbol-fields.md +56 -0
  22. package/agent-docs/api-docs/code-references.md +151 -0
  23. package/agent-docs/api-docs/code-references.sections/a-real-typescript-example.md +38 -0
  24. package/agent-docs/api-docs/code-references.sections/add-python-source.md +56 -0
  25. package/agent-docs/api-docs/code-references.sections/before-you-start.md +40 -0
  26. package/agent-docs/api-docs/code-references.sections/build-and-verify.md +47 -0
  27. package/agent-docs/api-docs/code-references.sections/choose-the-reading-layout.md +46 -0
  28. package/agent-docs/api-docs/code-references.sections/extract-and-validate-a-snapshot.md +52 -0
  29. package/agent-docs/api-docs/code-references.sections/html-markdown-and-agents.md +42 -0
  30. package/agent-docs/api-docs/code-references.sections/register-the-catalog-and-navigation.md +58 -0
  31. package/agent-docs/api-docs/code-references.sections/related-reading.md +40 -0
  32. package/agent-docs/api-docs/code-references.sections/versions-profiles-and-delivery.md +40 -0
  33. package/agent-docs/api-docs/typescript-references.md +93 -0
  34. package/agent-docs/author/agent-overview.md +2 -2
  35. package/agent-docs/author/components/for-facet.md +127 -0
  36. package/agent-docs/author/components/only.md +3 -1
  37. package/agent-docs/author/components.md +2 -1
  38. package/agent-docs/author/reader-views.md +2 -2
  39. package/agent-docs/author/reader-views.sections/configure-the-choices.md +2 -2
  40. package/agent-docs/author/reader-views.sections/connect-your-own-control.md +2 -2
  41. package/agent-docs/author/reader-views.sections/how-it-works-for-agents.md +2 -2
  42. package/agent-docs/author/reader-views.sections/mark-pages.md +2 -2
  43. package/agent-docs/author/reader-views.sections/mark-sections-and-add-an-entry-choice.md +2 -2
  44. package/agent-docs/author/reader-views.sections/place-filter-controls.md +2 -2
  45. package/agent-docs/author/reader-views.sections/try-the-controls-here.md +2 -2
  46. package/agent-docs/changelog/code-api-references.md +44 -0
  47. package/agent-docs/changelog/facet-typescript.md +54 -0
  48. package/agent-docs/changelog.md +17 -1
  49. package/agent-docs/cli.md +11 -1
  50. package/agent-docs/cli.sections/audit-a-project-and-api-sources.md +1 -1
  51. package/agent-docs/cli.sections/author-pages.md +1 -1
  52. package/agent-docs/cli.sections/build-and-serve.md +1 -1
  53. package/agent-docs/cli.sections/inspect-config-and-operations.md +1 -1
  54. package/agent-docs/cli.sections/npm-scripts-in-this-repository.md +1 -1
  55. package/agent-docs/cli.sections/related-reading.md +1 -1
  56. package/agent-docs/cli.sections/search-and-chat.md +1 -1
  57. package/agent-docs/cli.sections/start-a-project.md +1 -1
  58. package/agent-docs/cli.sections/validate-code-reference-snapshots.md +41 -0
  59. package/agent-docs/cli.sections/working-tree-authoring-tools.md +1 -1
  60. package/agent-docs/config/apis.md +5 -1
  61. package/agent-docs/config/examples.md +3 -3
  62. package/agent-docs/config/examples.sections/feature-showcase.md +3 -3
  63. package/agent-docs/config/examples.sections/minimal-site.md +2 -2
  64. package/agent-docs/config/examples.sections/multilingual-help-center.md +2 -2
  65. package/agent-docs/config/examples.sections/parcel-api-documentation.md +2 -2
  66. package/agent-docs/config/examples.sections/related-reading.md +2 -2
  67. package/agent-docs/config/examples.sections/shared-company-preset.md +2 -2
  68. package/agent-docs/config/outputs.md +12 -12
  69. package/agent-docs/config/outputs.sections/exports.md +12 -12
  70. package/agent-docs/config/outputs.sections/metadata.md +1 -1
  71. package/agent-docs/config/outputs.sections/pdf-output.md +1 -1
  72. package/agent-docs/config/outputs.sections/related-reading.md +1 -1
  73. package/agent-docs/config/site.md +17 -17
  74. package/agent-docs/config/site.sections/related-reading.md +1 -1
  75. package/agent-docs/config/site.sections/theme.md +1 -1
  76. package/agent-docs/config.md +2 -2
  77. package/agent-docs/configuration.md +2 -2
  78. package/agent-docs/configuration.sections/build-several-sites-from-shared-content.md +1 -1
  79. package/agent-docs/configuration.sections/change-inherited-lists-deliberately.md +1 -1
  80. package/agent-docs/configuration.sections/extract-a-section-with-include.md +1 -1
  81. package/agent-docs/configuration.sections/inspect-and-validate-changes.md +1 -1
  82. package/agent-docs/configuration.sections/related-reading.md +1 -1
  83. package/agent-docs/configuration.sections/separate-config-inheritance-from-page-metadata.md +1 -1
  84. package/agent-docs/configuration.sections/share-defaults-through-extends.md +1 -1
  85. package/agent-docs/configuration.sections/start-with-one-working-file.md +2 -2
  86. package/agent-docs/configuration.sections/understand-the-three-stages.md +1 -1
  87. package/agent-docs/configuration.sections/understand-where-paths-point.md +1 -1
  88. package/agent-docs/content-delivery/api.md +10 -2
  89. package/agent-docs/content-delivery/api.sections/errors.md +52 -0
  90. package/agent-docs/content-delivery/api.sections/generated-typescript-reference.md +36 -0
  91. package/agent-docs/content-delivery/api.sections/html-markdown-and-agents.md +36 -0
  92. package/agent-docs/content-delivery/api.sections/mount-html.md +42 -0
  93. package/agent-docs/content-delivery/api.sections/open-a-rest-source.md +55 -0
  94. package/agent-docs/content-delivery/api.sections/open-a-source.md +51 -0
  95. package/agent-docs/content-delivery/api.sections/read-a-snapshot.md +55 -0
  96. package/agent-docs/content-delivery/api.sections/related-reading.md +42 -0
  97. package/agent-docs/content-delivery/api.sections/validate-a-manifest.md +40 -0
  98. package/agent-docs/content-delivery/client.md +9 -1
  99. package/agent-docs/content-delivery/sdk/all.md +1772 -0
  100. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-exportedid.md +34 -0
  101. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-id.md +34 -0
  102. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-title.md +34 -0
  103. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor.md +44 -0
  104. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentasset-mediatype.md +34 -0
  105. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentasset.md +40 -0
  106. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliveryerror-code.md +34 -0
  107. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliveryerror.md +46 -0
  108. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-manifestbytes.md +36 -0
  109. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-resourcebytes.md +36 -0
  110. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-resources.md +36 -0
  111. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits.md +44 -0
  112. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contenterrorcode.md +32 -0
  113. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-bytes.md +34 -0
  114. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-digest.md +34 -0
  115. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-path.md +34 -0
  116. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile.md +44 -0
  117. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentformat.md +32 -0
  118. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-asset.md +34 -0
  119. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-fragment.md +34 -0
  120. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-href.md +34 -0
  121. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-key.md +34 -0
  122. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-kind.md +34 -0
  123. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-query.md +34 -0
  124. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-ref.md +34 -0
  125. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink.md +52 -0
  126. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-assets.md +34 -0
  127. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-diagnostics.md +34 -0
  128. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-digest.md +34 -0
  129. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-files.md +34 -0
  130. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-kind.md +34 -0
  131. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-publication.md +34 -0
  132. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-publicbase.md +34 -0
  133. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-resources.md +34 -0
  134. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-review.md +34 -0
  135. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-schemaversion.md +34 -0
  136. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest.md +68 -0
  137. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-anchors.md +36 -0
  138. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-links.md +36 -0
  139. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-unmount.md +36 -0
  140. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount.md +49 -0
  141. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-channel.md +34 -0
  142. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-language.md +34 -0
  143. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-product.md +34 -0
  144. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-version.md +34 -0
  145. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication.md +46 -0
  146. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentref.md +43 -0
  147. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrefkey.md +42 -0
  148. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation-anchors.md +34 -0
  149. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation-links.md +34 -0
  150. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation.md +42 -0
  151. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-assets.md +34 -0
  152. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-canonicalurl.md +34 -0
  153. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-externaldependencies.md +34 -0
  154. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-publication.md +36 -0
  155. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-ref.md +36 -0
  156. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-representations.md +36 -0
  157. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-source.md +34 -0
  158. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-summary.md +36 -0
  159. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-title.md +36 -0
  160. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-type.md +36 -0
  161. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource.md +65 -0
  162. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresourcekey.md +42 -0
  163. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry-key.md +34 -0
  164. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry-resource.md +34 -0
  165. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry.md +42 -0
  166. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterror-error.md +34 -0
  167. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterror.md +43 -0
  168. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterrorcode.md +32 -0
  169. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-publication.md +34 -0
  170. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-resources.md +34 -0
  171. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-revision.md +34 -0
  172. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-schemaversion.md +34 -0
  173. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist.md +46 -0
  174. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-key.md +34 -0
  175. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-publication.md +34 -0
  176. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-resource.md +34 -0
  177. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-revision.md +34 -0
  178. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-schemaversion.md +34 -0
  179. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource.md +48 -0
  180. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-content.md +36 -0
  181. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-format.md +36 -0
  182. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-representation.md +36 -0
  183. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-resource.md +36 -0
  184. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-revision.md +36 -0
  185. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult.md +48 -0
  186. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-dispose.md +36 -0
  187. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-get.md +45 -0
  188. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-list.md +38 -0
  189. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-publication.md +36 -0
  190. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-revision.md +36 -0
  191. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot.md +47 -0
  192. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-fetch.md +36 -0
  193. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-limits.md +36 -0
  194. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-manifesturl.md +36 -0
  195. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-signal.md +36 -0
  196. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions.md +46 -0
  197. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-mountcontent.md +48 -0
  198. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-openmanifestcontentsource.md +54 -0
  199. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-openrestcontentsource.md +44 -0
  200. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-baseurl.md +36 -0
  201. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-fetch.md +36 -0
  202. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-limits.md +36 -0
  203. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-publication.md +36 -0
  204. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-revision.md +36 -0
  205. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-signal.md +36 -0
  206. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions.md +50 -0
  207. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-validatecontentmanifest.md +45 -0
  208. package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content.md +65 -0
  209. package/agent-docs/content-delivery/sdk/content-anchor/exported-id.md +25 -0
  210. package/agent-docs/content-delivery/sdk/content-anchor/id.md +25 -0
  211. package/agent-docs/content-delivery/sdk/content-anchor/title.md +25 -0
  212. package/agent-docs/content-delivery/sdk/content-anchor.md +71 -0
  213. package/agent-docs/content-delivery/sdk/content-asset/media-type.md +25 -0
  214. package/agent-docs/content-delivery/sdk/content-asset.md +43 -0
  215. package/agent-docs/content-delivery/sdk/content-delivery-error/code.md +25 -0
  216. package/agent-docs/content-delivery/sdk/content-delivery-error.md +53 -0
  217. package/agent-docs/content-delivery/sdk/content-delivery-limits/manifest-bytes.md +27 -0
  218. package/agent-docs/content-delivery/sdk/content-delivery-limits/resource-bytes.md +27 -0
  219. package/agent-docs/content-delivery/sdk/content-delivery-limits/resources.md +27 -0
  220. package/agent-docs/content-delivery/sdk/content-delivery-limits.md +77 -0
  221. package/agent-docs/content-delivery/sdk/content-error-code.md +23 -0
  222. package/agent-docs/content-delivery/sdk/content-file/bytes.md +25 -0
  223. package/agent-docs/content-delivery/sdk/content-file/digest.md +25 -0
  224. package/agent-docs/content-delivery/sdk/content-file/path.md +25 -0
  225. package/agent-docs/content-delivery/sdk/content-file.md +71 -0
  226. package/agent-docs/content-delivery/sdk/content-format.md +23 -0
  227. package/agent-docs/content-delivery/sdk/content-link/asset.md +25 -0
  228. package/agent-docs/content-delivery/sdk/content-link/fragment.md +25 -0
  229. package/agent-docs/content-delivery/sdk/content-link/href.md +25 -0
  230. package/agent-docs/content-delivery/sdk/content-link/key.md +25 -0
  231. package/agent-docs/content-delivery/sdk/content-link/kind.md +25 -0
  232. package/agent-docs/content-delivery/sdk/content-link/query.md +25 -0
  233. package/agent-docs/content-delivery/sdk/content-link/ref.md +25 -0
  234. package/agent-docs/content-delivery/sdk/content-link.md +127 -0
  235. package/agent-docs/content-delivery/sdk/content-manifest/assets.md +25 -0
  236. package/agent-docs/content-delivery/sdk/content-manifest/diagnostics.md +25 -0
  237. package/agent-docs/content-delivery/sdk/content-manifest/digest.md +25 -0
  238. package/agent-docs/content-delivery/sdk/content-manifest/files.md +25 -0
  239. package/agent-docs/content-delivery/sdk/content-manifest/kind.md +25 -0
  240. package/agent-docs/content-delivery/sdk/content-manifest/public-base.md +25 -0
  241. package/agent-docs/content-delivery/sdk/content-manifest/publication.md +25 -0
  242. package/agent-docs/content-delivery/sdk/content-manifest/resources.md +25 -0
  243. package/agent-docs/content-delivery/sdk/content-manifest/review.md +25 -0
  244. package/agent-docs/content-delivery/sdk/content-manifest/schema-version.md +25 -0
  245. package/agent-docs/content-delivery/sdk/content-manifest.md +179 -0
  246. package/agent-docs/content-delivery/sdk/content-mount/anchors.md +27 -0
  247. package/agent-docs/content-delivery/sdk/content-mount/links.md +27 -0
  248. package/agent-docs/content-delivery/sdk/content-mount/unmount.md +27 -0
  249. package/agent-docs/content-delivery/sdk/content-mount.md +82 -0
  250. package/agent-docs/content-delivery/sdk/content-publication/channel.md +25 -0
  251. package/agent-docs/content-delivery/sdk/content-publication/language.md +25 -0
  252. package/agent-docs/content-delivery/sdk/content-publication/product.md +25 -0
  253. package/agent-docs/content-delivery/sdk/content-publication/version.md +25 -0
  254. package/agent-docs/content-delivery/sdk/content-publication.md +85 -0
  255. package/agent-docs/content-delivery/sdk/content-ref-key.md +34 -0
  256. package/agent-docs/content-delivery/sdk/content-ref.md +40 -0
  257. package/agent-docs/content-delivery/sdk/content-representation/anchors.md +25 -0
  258. package/agent-docs/content-delivery/sdk/content-representation/links.md +25 -0
  259. package/agent-docs/content-delivery/sdk/content-representation.md +57 -0
  260. package/agent-docs/content-delivery/sdk/content-resource/assets.md +25 -0
  261. package/agent-docs/content-delivery/sdk/content-resource/canonical-url.md +25 -0
  262. package/agent-docs/content-delivery/sdk/content-resource/external-dependencies.md +25 -0
  263. package/agent-docs/content-delivery/sdk/content-resource/publication.md +27 -0
  264. package/agent-docs/content-delivery/sdk/content-resource/ref.md +27 -0
  265. package/agent-docs/content-delivery/sdk/content-resource/representations.md +27 -0
  266. package/agent-docs/content-delivery/sdk/content-resource/source.md +25 -0
  267. package/agent-docs/content-delivery/sdk/content-resource/summary.md +27 -0
  268. package/agent-docs/content-delivery/sdk/content-resource/title.md +27 -0
  269. package/agent-docs/content-delivery/sdk/content-resource/type.md +27 -0
  270. package/agent-docs/content-delivery/sdk/content-resource-key.md +34 -0
  271. package/agent-docs/content-delivery/sdk/content-resource.md +192 -0
  272. package/agent-docs/content-delivery/sdk/content-rest-entry/key.md +25 -0
  273. package/agent-docs/content-delivery/sdk/content-rest-entry/resource.md +25 -0
  274. package/agent-docs/content-delivery/sdk/content-rest-entry.md +57 -0
  275. package/agent-docs/content-delivery/sdk/content-rest-error/error.md +25 -0
  276. package/agent-docs/content-delivery/sdk/content-rest-error-code.md +23 -0
  277. package/agent-docs/content-delivery/sdk/content-rest-error.md +46 -0
  278. package/agent-docs/content-delivery/sdk/content-rest-list/publication.md +25 -0
  279. package/agent-docs/content-delivery/sdk/content-rest-list/resources.md +25 -0
  280. package/agent-docs/content-delivery/sdk/content-rest-list/revision.md +25 -0
  281. package/agent-docs/content-delivery/sdk/content-rest-list/schema-version.md +25 -0
  282. package/agent-docs/content-delivery/sdk/content-rest-list.md +85 -0
  283. package/agent-docs/content-delivery/sdk/content-rest-resource/key.md +25 -0
  284. package/agent-docs/content-delivery/sdk/content-rest-resource/publication.md +25 -0
  285. package/agent-docs/content-delivery/sdk/content-rest-resource/resource.md +25 -0
  286. package/agent-docs/content-delivery/sdk/content-rest-resource/revision.md +25 -0
  287. package/agent-docs/content-delivery/sdk/content-rest-resource/schema-version.md +25 -0
  288. package/agent-docs/content-delivery/sdk/content-rest-resource.md +99 -0
  289. package/agent-docs/content-delivery/sdk/content-result/content.md +27 -0
  290. package/agent-docs/content-delivery/sdk/content-result/format.md +27 -0
  291. package/agent-docs/content-delivery/sdk/content-result/representation.md +27 -0
  292. package/agent-docs/content-delivery/sdk/content-result/resource.md +27 -0
  293. package/agent-docs/content-delivery/sdk/content-result/revision.md +27 -0
  294. package/agent-docs/content-delivery/sdk/content-result.md +114 -0
  295. package/agent-docs/content-delivery/sdk/content-snapshot/dispose.md +27 -0
  296. package/agent-docs/content-delivery/sdk/content-snapshot/get.md +36 -0
  297. package/agent-docs/content-delivery/sdk/content-snapshot/list.md +29 -0
  298. package/agent-docs/content-delivery/sdk/content-snapshot/publication.md +27 -0
  299. package/agent-docs/content-delivery/sdk/content-snapshot/revision.md +27 -0
  300. package/agent-docs/content-delivery/sdk/content-snapshot.md +123 -0
  301. package/agent-docs/content-delivery/sdk/exports.md +742 -0
  302. package/agent-docs/content-delivery/sdk/exports.sections/functions.md +30 -0
  303. package/agent-docs/content-delivery/sdk/exports.sections/members.md +47 -0
  304. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentanchor.md +41 -0
  305. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentasset.md +37 -0
  306. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentdeliveryerror.md +43 -0
  307. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentdeliverylimits.md +41 -0
  308. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contenterrorcode.md +29 -0
  309. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentfile.md +41 -0
  310. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentformat.md +29 -0
  311. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentlink.md +49 -0
  312. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentmanifest.md +65 -0
  313. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentmount.md +46 -0
  314. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentpublication.md +43 -0
  315. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentref.md +40 -0
  316. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrefkey.md +39 -0
  317. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrepresentation.md +39 -0
  318. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresource.md +62 -0
  319. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresourcekey.md +39 -0
  320. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestentry.md +39 -0
  321. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresterror.md +40 -0
  322. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresterrorcode.md +29 -0
  323. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestlist.md +43 -0
  324. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestresource.md +45 -0
  325. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresult.md +45 -0
  326. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentsnapshot.md +44 -0
  327. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-manifestcontentsourceoptions.md +43 -0
  328. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-mountcontent.md +45 -0
  329. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-openmanifestcontentsource.md +51 -0
  330. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-openrestcontentsource.md +41 -0
  331. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-restcontentsourceoptions.md +47 -0
  332. package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-validatecontentmanifest.md +42 -0
  333. package/agent-docs/content-delivery/sdk/manifest-content-source-options/fetch.md +27 -0
  334. package/agent-docs/content-delivery/sdk/manifest-content-source-options/limits.md +27 -0
  335. package/agent-docs/content-delivery/sdk/manifest-content-source-options/manifest-url.md +27 -0
  336. package/agent-docs/content-delivery/sdk/manifest-content-source-options/signal.md +27 -0
  337. package/agent-docs/content-delivery/sdk/manifest-content-source-options.md +93 -0
  338. package/agent-docs/content-delivery/sdk/mount-content.md +46 -0
  339. package/agent-docs/content-delivery/sdk/open-manifest-content-source.md +51 -0
  340. package/agent-docs/content-delivery/sdk/open-rest-content-source.md +39 -0
  341. package/agent-docs/content-delivery/sdk/rest-content-source-options/base-url.md +28 -0
  342. package/agent-docs/content-delivery/sdk/rest-content-source-options/fetch.md +27 -0
  343. package/agent-docs/content-delivery/sdk/rest-content-source-options/limits.md +27 -0
  344. package/agent-docs/content-delivery/sdk/rest-content-source-options/publication.md +27 -0
  345. package/agent-docs/content-delivery/sdk/rest-content-source-options/revision.md +27 -0
  346. package/agent-docs/content-delivery/sdk/rest-content-source-options/signal.md +27 -0
  347. package/agent-docs/content-delivery/sdk/rest-content-source-options.md +125 -0
  348. package/agent-docs/content-delivery/sdk/validate-content-manifest.md +38 -0
  349. package/agent-docs/contribute/agent-skills.md +33 -6
  350. package/agent-docs/documents.json +7710 -530
  351. package/agent-docs/features.md +20 -18
  352. package/agent-docs/provenance.json +6 -6
  353. package/agent-docs/publish/api-references.md +3 -1
  354. package/agent-docs/publish/api-references.sections/author-the-reference-page.md +3 -1
  355. package/agent-docs/publish/api-references.sections/build-and-verify-the-output.md +3 -1
  356. package/agent-docs/publish/api-references.sections/inspect-the-machine-readable-contract.md +3 -1
  357. package/agent-docs/publish/api-references.sections/next-steps.md +3 -1
  358. package/agent-docs/publish/api-references.sections/preview-a-small-api-reference.md +3 -1
  359. package/agent-docs/publish/api-references.sections/put-the-spec-in-your-project.md +3 -1
  360. package/agent-docs/publish/api-references.sections/register-the-operation.md +3 -1
  361. package/agent-docs/publish/api-references.sections/related-reading.md +3 -1
  362. package/agent-docs/publish/api-references.sections/review-imported-content-before-publishing.md +3 -1
  363. package/agent-docs/publish/api-references.sections/what-readers-get.md +3 -1
  364. package/agent-docs/publish/content-export.md +3 -1
  365. package/agent-docs/publish/content-export.sections/assets-downloads-and-notices.md +1 -1
  366. package/agent-docs/publish/content-export.sections/check-the-result.md +1 -1
  367. package/agent-docs/publish/content-export.sections/inspect-the-manifest.md +1 -1
  368. package/agent-docs/publish/content-export.sections/prerequisites.md +1 -1
  369. package/agent-docs/publish/content-export.sections/related-reading.md +1 -1
  370. package/agent-docs/publish/content-export.sections/review-exported-api-material.md +1 -1
  371. package/agent-docs/publish/content-export.sections/try-the-help-drawer-example.md +1 -1
  372. package/agent-docs/publish/content-export.sections/what-the-representations-retain.md +1 -1
  373. package/agent-docs/publish/pdf.md +2 -2
  374. package/agent-docs/publish/pdf.sections/apply-print-styling.md +1 -1
  375. package/agent-docs/publish/pdf.sections/check-the-result.md +1 -1
  376. package/agent-docs/publish/pdf.sections/export-a-page-or-publication.md +2 -2
  377. package/agent-docs/publish/pdf.sections/html-markdown-and-agents.md +1 -1
  378. package/agent-docs/publish/pdf.sections/offer-browser-page-printing.md +1 -1
  379. package/agent-docs/publish/pdf.sections/offer-direct-downloads-through-a-node-server.md +1 -1
  380. package/agent-docs/publish/pdf.sections/prerequisites.md +1 -1
  381. package/agent-docs/publish/pdf.sections/publish-an-optional-manual-download.md +1 -1
  382. package/agent-docs/publish/single-source-sites.md +26 -2
  383. package/agent-docs/publish/single-source-sites.sections/build-and-check-each-output.md +49 -0
  384. package/agent-docs/publish/single-source-sites.sections/html-markdown-and-agents.md +33 -0
  385. package/agent-docs/publish/single-source-sites.sections/include-additional-sections-in-a-build.md +47 -0
  386. package/agent-docs/publish/single-source-sites.sections/related-reading.md +43 -0
  387. package/agent-docs/publish/single-source-sites.sections/select-the-pages-for-each-site.md +74 -0
  388. package/agent-docs/publish/single-source-sites.sections/share-the-base-configuration.md +93 -0
  389. package/agent-docs/reference/agent-skills.md +2 -2
  390. package/agent-docs/search-index.json +1 -1
  391. package/agent-docs/start.md +3 -3
  392. package/agent-docs/start.sections/add-the-page-to-navigation.md +2 -2
  393. package/agent-docs/start.sections/build-and-check-both-outputs.md +2 -2
  394. package/agent-docs/start.sections/build-this-site.md +2 -2
  395. package/agent-docs/start.sections/check-writing-style.md +2 -2
  396. package/agent-docs/start.sections/create-a-page.md +2 -2
  397. package/agent-docs/start.sections/make-it-yours.md +2 -2
  398. package/agent-docs/start.sections/migrating-from-github-packages.md +2 -2
  399. package/agent-docs/start.sections/prerequisites.md +2 -2
  400. package/agent-docs/start.sections/related-reading.md +2 -2
  401. package/agent-docs/start.sections/start-your-own-project.md +3 -3
  402. package/agent-docs/status.md +6 -4
  403. package/agent-docs/styling/themes.md +7 -3
  404. package/agent-docs/what-is-shoalrun.md +2 -2
  405. package/assets/search-lexical.js +15 -4
  406. package/dist/artifact-bundle.d.ts +1 -0
  407. package/dist/artifact-bundle.js +11 -3
  408. package/dist/cli-discovery.d.ts +1 -1
  409. package/dist/cli-discovery.js +1 -0
  410. package/dist/cli.js +7 -0
  411. package/dist/code-reference-model.d.ts +85 -0
  412. package/dist/code-reference-model.js +73 -0
  413. package/dist/code-references.d.ts +23 -0
  414. package/dist/code-references.js +371 -0
  415. package/dist/compiler-config.d.ts +1 -0
  416. package/dist/compiler.d.ts +8 -0
  417. package/dist/compiler.js +14 -7
  418. package/dist/component-names.js +1 -1
  419. package/dist/component-transform.js +14 -22
  420. package/dist/conditional-tree.d.ts +2 -0
  421. package/dist/conditional-tree.js +14 -0
  422. package/dist/config.js +1 -1
  423. package/dist/content-delivery-contract.d.ts +39 -0
  424. package/dist/content-delivery-contract.js +2 -0
  425. package/dist/content-delivery-validation.d.ts +6 -0
  426. package/dist/content-delivery-validation.js +6 -0
  427. package/dist/content-delivery.d.ts +19 -1
  428. package/dist/content-delivery.js +10 -1
  429. package/dist/content-export-command.d.ts +42 -3
  430. package/dist/content-export.d.ts +42 -3
  431. package/dist/content-export.js +15 -6
  432. package/dist/content-filter.d.ts +2 -0
  433. package/dist/content-filter.js +4 -0
  434. package/dist/content-mount.d.ts +12 -1
  435. package/dist/content-mount.js +8 -1
  436. package/dist/content-rest-client.d.ts +11 -1
  437. package/dist/content-rest-client.js +4 -1
  438. package/dist/content-rest-contract.d.ts +5 -0
  439. package/dist/content-source.d.ts +2 -0
  440. package/dist/content-workspace.d.ts +5 -1
  441. package/dist/content-workspace.js +7 -2
  442. package/dist/deployment-profile.d.ts +3 -1
  443. package/dist/deployment-profile.js +18 -19
  444. package/dist/fonts.d.ts +9 -0
  445. package/dist/fonts.js +58 -3
  446. package/dist/page-materialization.js +3 -2
  447. package/dist/page-renderer.d.ts +1 -0
  448. package/dist/page-renderer.js +3 -1
  449. package/dist/palettes.d.ts +1 -1
  450. package/dist/publication-manifest.js +1 -1
  451. package/dist/publication-render.d.ts +2 -1
  452. package/dist/publication-render.js +2 -2
  453. package/dist/representation-tree.js +12 -2
  454. package/dist/search-query.js +13 -6
  455. package/dist/section-selection.d.ts +29 -0
  456. package/dist/section-selection.js +92 -0
  457. package/dist/snippets.d.ts +1 -0
  458. package/example-configs/facet-sections/README.md +37 -0
  459. package/example-configs/facet-sections/base.yaml +29 -0
  460. package/example-configs/facet-sections/content/billing.mdx +25 -0
  461. package/example-configs/facet-sections/customer.config.yaml +4 -0
  462. package/example-configs/facet-sections/docs.config.yaml +3 -0
  463. package/example-configs/faceted-sites/README.md +4 -2
  464. package/examples/code-references/content/start.md +53 -0
  465. package/examples/code-references/docs.config.yaml +262 -0
  466. package/examples/code-references/python/orchard/__init__.py +11 -0
  467. package/examples/code-references/python/orchard/client.py +212 -0
  468. package/examples/code-references/python/orchard/errors.py +31 -0
  469. package/examples/code-references/python/orchard/models.py +69 -0
  470. package/examples/code-references/python/orchard/pagination.py +39 -0
  471. package/examples/code-references/reference.json +1244 -0
  472. package/package.json +9 -1
  473. package/schemas/code-reference.schema.json +306 -0
  474. package/skills/shoalrun-author/SKILL.md +17 -0
  475. package/skills/shoalrun-author/references/code-api-references.md +19 -0
  476. package/skills/shoalrun-author/references/facet-selection.md +48 -0
  477. package/skills/shoalrun-brand/SKILL.md +9 -0
  478. package/skills/shoalrun-component-author/SKILL.md +9 -0
  479. package/skills/shoalrun-pdf/SKILL.md +9 -0
  480. package/skills/shoalrun-recipes/SKILL.md +9 -0
  481. package/skills/shoalrun-setup/SKILL.md +9 -0
  482. package/skills/shoalrun-walkthrough/SKILL.md +9 -0
  483. package/styles/site.css +61 -2
@@ -1,11 +1,16 @@
1
1
  /** Browser-safe delivery contracts. These types do not import the compiler. */
2
+ /** Exact documentation publication selected by a content source. */
2
3
  export type ContentPublication = {
3
4
  channel: string;
4
5
  version: string;
5
6
  language: string;
6
7
  product?: string;
7
8
  };
9
+ /** Portable representations a content client can request. */
8
10
  export type ContentFormat = 'html' | 'markdown';
11
+ /** Stable identity of a page, a section within a page, or a named snippet instance.
12
+ * A reference is scoped to the publication and revision of the opened snapshot.
13
+ */
9
14
  export type ContentRef = {
10
15
  kind: 'page';
11
16
  documentId: string;
@@ -17,19 +22,23 @@ export type ContentRef = {
17
22
  kind: 'snippet';
18
23
  id: string;
19
24
  };
25
+ /** Export-relative file path, byte length, and SHA-256 digest. */
20
26
  export type ContentFile = {
21
27
  path: string;
22
28
  bytes: number;
23
29
  digest: string;
24
30
  };
31
+ /** A content-addressed file with its declared media type. */
25
32
  export type ContentAsset = ContentFile & {
26
33
  mediaType: string;
27
34
  };
35
+ /** Mapping from a canonical document fragment to its exported HTML ID. */
28
36
  export type ContentAnchor = {
29
37
  id: string;
30
38
  exportedId: string;
31
39
  title?: string;
32
40
  };
41
+ /** Classified link and optional resource identity for application routing. */
33
42
  export type ContentLink = {
34
43
  key: string;
35
44
  kind: 'resource' | 'canonical' | 'external' | 'asset';
@@ -39,15 +48,22 @@ export type ContentLink = {
39
48
  query?: string;
40
49
  asset?: string;
41
50
  };
51
+ /** One portable format, including its file metadata, anchors, and typed links. */
42
52
  export type ContentRepresentation = ContentAsset & {
43
53
  anchors: ContentAnchor[];
44
54
  links: ContentLink[];
45
55
  };
56
+ /** Inventory entry describing one exported document, section, or snippet instance. */
46
57
  export type ContentResource = {
58
+ /** Stable identity used by ContentSnapshot.get. */
47
59
  ref: ContentRef;
60
+ /** Exact product, channel, version, and documentation language. */
48
61
  publication: ContentPublication;
62
+ /** Human-readable resource title. */
49
63
  title: string;
64
+ /** Short explanation of the resource's purpose. */
50
65
  summary: string;
66
+ /** Authored document type, or section/snippet for a selected resource. */
51
67
  type: string;
52
68
  canonicalUrl?: string;
53
69
  source?: {
@@ -55,6 +71,7 @@ export type ContentResource = {
55
71
  snippetId?: string;
56
72
  valuesDigest?: string;
57
73
  };
74
+ /** Available portable formats and their files, anchors, and typed links. */
58
75
  representations: Partial<Record<ContentFormat, ContentRepresentation>>;
59
76
  assets: string[];
60
77
  externalDependencies: Array<{
@@ -62,6 +79,7 @@ export type ContentResource = {
62
79
  kind: 'image';
63
80
  }>;
64
81
  };
82
+ /** One validated, content-addressed export inventory. */
65
83
  export type ContentManifest = {
66
84
  schemaVersion: 1 | 2;
67
85
  kind: 'shoalrun-content-export';
@@ -84,26 +102,47 @@ export type ContentManifest = {
84
102
  message: string;
85
103
  }>;
86
104
  };
105
+ /** A fetched representation together with the metadata needed to render or route it. */
87
106
  export type ContentResult = {
107
+ /** Inventory entry that was selected by the requested reference. */
88
108
  resource: Readonly<ContentResource>;
109
+ /** File, media type, anchors, and typed links for the selected format. */
89
110
  representation: Readonly<ContentRepresentation>;
111
+ /** Representation actually returned by the source. */
90
112
  format: ContentFormat;
113
+ /** Validated UTF-8 HTML or Markdown text. */
91
114
  content: string;
115
+ /** Revision shared by this response and its opened content snapshot. */
92
116
  revision: string;
93
117
  };
118
+ /** A client pinned to one immutable inventory revision and publication. */
94
119
  export interface ContentSnapshot {
120
+ /** Content digest identifying this inventory revision. */
95
121
  readonly revision: string;
122
+ /** Publication shared by every resource available from this snapshot. */
96
123
  readonly publication: Readonly<ContentPublication>;
124
+ /** List the resources in the opened inventory without fetching their bodies.
125
+ * @returns Read-only resource entries for this publication and revision.
126
+ */
97
127
  list(): readonly Readonly<ContentResource>[];
128
+ /** Fetch one available representation of a stable content reference.
129
+ * @param ref Page, section, or named snippet instance in this snapshot.
130
+ * @param options Required format and an optional signal for this read.
131
+ * @returns Validated representation text with its routing and revision metadata.
132
+ */
98
133
  get(ref: ContentRef, options: {
99
134
  format: ContentFormat;
100
135
  signal?: AbortSignal;
101
136
  }): Promise<ContentResult>;
137
+ /** Cancel pending requests and prevent subsequent reads or inventory access. */
102
138
  dispose(): void;
103
139
  }
140
+ /** Stable error categories raised by content-source validation and reads. */
104
141
  export type ContentErrorCode = 'invalid_manifest' | 'not_found' | 'unsupported_format' | 'stale_revision' | 'network_error' | 'invalid_content' | 'disposed';
142
+ /** Delivery failure with a machine-readable code and a human-readable message. */
105
143
  export declare class ContentDeliveryError extends Error {
106
144
  readonly code: ContentErrorCode;
107
145
  constructor(code: ContentErrorCode, message: string);
108
146
  }
147
+ /** Serialize a reference to a deterministic key without including publication scope. */
109
148
  export declare function contentRefKey(ref: ContentRef): string;
@@ -1,3 +1,4 @@
1
+ /** Delivery failure with a machine-readable code and a human-readable message. */
1
2
  export class ContentDeliveryError extends Error {
2
3
  code;
3
4
  constructor(code, message) {
@@ -6,6 +7,7 @@ export class ContentDeliveryError extends Error {
6
7
  this.name = 'ContentDeliveryError';
7
8
  }
8
9
  }
10
+ /** Serialize a reference to a deterministic key without including publication scope. */
9
11
  export function contentRefKey(ref) {
10
12
  switch (ref.kind) {
11
13
  case 'page': return JSON.stringify(['page', ref.documentId]);
@@ -2,6 +2,12 @@ import type { ContentManifest, ContentRef, ContentPublication } from './content-
2
2
  export declare const safeContentPath: (value: any) => value is string;
3
3
  export declare const validContentPublication: (value: any) => value is ContentPublication;
4
4
  export declare function validContentRef(value: any): value is ContentRef;
5
+ /** Validate a parsed manifest's shape, identities, paths, and resource bounds.
6
+ * This assertion narrows the value but doesn't verify fetched file bytes or trust in a host.
7
+ * @param value Parsed JSON manifest to validate.
8
+ * @param maxResources Maximum allowed resource count; defaults to 10,000.
9
+ * @param maxResourceBytes Maximum declared representation bytes; defaults to 8,000,000.
10
+ */
5
11
  export declare function validateContentManifest(value: any, maxResources?: number, maxResourceBytes?: number): asserts value is ContentManifest;
6
12
  /** Shared metadata validation; transport supplies its file/asset inventory policy. */
7
13
  export declare function validateContentResources(resources: any[], expectedPublication: unknown, assets: Set<string>, checkRepresentation: (value: any) => boolean, publicBase?: string): void;
@@ -26,6 +26,12 @@ function safeExternal(value, image = false) {
26
26
  return false;
27
27
  }
28
28
  }
29
+ /** Validate a parsed manifest's shape, identities, paths, and resource bounds.
30
+ * This assertion narrows the value but doesn't verify fetched file bytes or trust in a host.
31
+ * @param value Parsed JSON manifest to validate.
32
+ * @param maxResources Maximum allowed resource count; defaults to 10,000.
33
+ * @param maxResourceBytes Maximum declared representation bytes; defaults to 8,000,000.
34
+ */
29
35
  export function validateContentManifest(value, maxResources = 10_000, maxResourceBytes = 8_000_000) {
30
36
  if (!keys(value, ['schemaVersion', 'kind', 'digest', 'publicBase', 'publication', 'review', 'resources', 'assets', 'files', 'diagnostics']) || ![1, 2].includes(value.schemaVersion) || value.kind !== 'shoalrun-content-export' || !digestPattern.test(value.digest ?? ''))
31
37
  invalid('Unsupported content manifest.');
@@ -4,18 +4,36 @@ export * from './content-rest-contract.js';
4
4
  export { validateContentManifest } from './content-delivery-validation.js';
5
5
  export { mountContent } from './content-mount.js';
6
6
  export type { ContentMount } from './content-mount.js';
7
+ /** Positive safe-integer bounds applied when opening and reading content. */
7
8
  export type ContentDeliveryLimits = {
9
+ /** Maximum manifest or REST inventory bytes. Defaults to 5,000,000. */
8
10
  manifestBytes?: number;
11
+ /** Maximum bytes for an individual representation. Defaults to 8,000,000. */
9
12
  resourceBytes?: number;
13
+ /** Maximum resource count in the inventory. Defaults to 10,000. */
10
14
  resources?: number;
11
15
  };
16
+ /** Configuration for opening a static content-export manifest. */
12
17
  export type ManifestContentSourceOptions = {
18
+ /** Manifest URL; a browser resolves relative URLs against its current location. */
13
19
  manifestUrl: string | URL;
20
+ /** Fetch implementation. Defaults to globalThis.fetch. */
14
21
  fetch?: typeof globalThis.fetch;
22
+ /** Cancel the opening request. Use get's signal to cancel an individual read. */
15
23
  signal?: AbortSignal;
24
+ /** Inventory and representation bounds. */
16
25
  limits?: ContentDeliveryLimits;
17
26
  };
18
- /** Opens one immutable manifest revision. The caller owns trust in the build/host. */
27
+ /** Open and validate one immutable static manifest revision.
28
+ * The caller owns trust in the compiler output and host. Browser URLs must use
29
+ * the application's origin. Requests reject redirects and unexpected content types.
30
+ * @param options Manifest URL, request implementation, cancellation, and limits.
31
+ * @returns A revision-pinned snapshot for listing and reading exported resources.
32
+ * @example
33
+ * const snapshot = await openManifestContentSource({ manifestUrl: '/help/manifest.json' });
34
+ * const page = await snapshot.get({ kind: 'page', documentId: 'guide.start' }, { format: 'markdown' });
35
+ * snapshot.dispose();
36
+ */
19
37
  export declare function openManifestContentSource(options: ManifestContentSourceOptions): Promise<ContentSnapshot>;
20
38
  export { openRestContentSource } from './content-rest-client.js';
21
39
  export type { RestContentSourceOptions } from './content-rest-client.js';
@@ -6,7 +6,16 @@ export { validateContentManifest } from './content-delivery-validation.js';
6
6
  import { freeze, sha256, readBounded } from './content-delivery-transport.js';
7
7
  const invalid = (message) => { throw new ContentDeliveryError('invalid_manifest', message); };
8
8
  export { mountContent } from './content-mount.js';
9
- /** Opens one immutable manifest revision. The caller owns trust in the build/host. */
9
+ /** Open and validate one immutable static manifest revision.
10
+ * The caller owns trust in the compiler output and host. Browser URLs must use
11
+ * the application's origin. Requests reject redirects and unexpected content types.
12
+ * @param options Manifest URL, request implementation, cancellation, and limits.
13
+ * @returns A revision-pinned snapshot for listing and reading exported resources.
14
+ * @example
15
+ * const snapshot = await openManifestContentSource({ manifestUrl: '/help/manifest.json' });
16
+ * const page = await snapshot.get({ kind: 'page', documentId: 'guide.start' }, { format: 'markdown' });
17
+ * snapshot.dispose();
18
+ */
10
19
  export async function openManifestContentSource(options) {
11
20
  const fetcher = options.fetch ?? globalThis.fetch;
12
21
  let manifestUrl;
@@ -4,7 +4,12 @@ export declare function runExportCommand(args: string[]): Promise<{
4
4
  preparedPdf: import("./content-export.js").PdfExportPreparation;
5
5
  status: string;
6
6
  output: string;
7
- publication: import("./content-source.js").Variant;
7
+ publication: {
8
+ product?: string;
9
+ channel: string;
10
+ version: string;
11
+ language: string;
12
+ };
8
13
  formats: import("./content-export-config.js").ExportFormat[];
9
14
  profileSelection: {
10
15
  schemaVersion: number;
@@ -18,6 +23,14 @@ export declare function runExportCommand(args: string[]): Promise<{
18
23
  requires?: import("./deployment-profile.js").FeatureRequirements;
19
24
  }[];
20
25
  } | undefined;
26
+ contentSelection: {
27
+ selection: import("./reader-filters.js").ReaderSelection | null;
28
+ decisions: Record<string, unknown>[];
29
+ warnings: {
30
+ code: string;
31
+ message: string;
32
+ }[];
33
+ };
21
34
  resources: number;
22
35
  documents: number;
23
36
  documentIds: string[];
@@ -42,7 +55,12 @@ export declare function runExportCommand(args: string[]): Promise<{
42
55
  pdf: string;
43
56
  status: string;
44
57
  output: string;
45
- publication: import("./content-source.js").Variant;
58
+ publication: {
59
+ product?: string;
60
+ channel: string;
61
+ version: string;
62
+ language: string;
63
+ };
46
64
  formats: import("./content-export-config.js").ExportFormat[];
47
65
  profileSelection: {
48
66
  schemaVersion: number;
@@ -56,6 +74,14 @@ export declare function runExportCommand(args: string[]): Promise<{
56
74
  requires?: import("./deployment-profile.js").FeatureRequirements;
57
75
  }[];
58
76
  } | undefined;
77
+ contentSelection: {
78
+ selection: import("./reader-filters.js").ReaderSelection | null;
79
+ decisions: Record<string, unknown>[];
80
+ warnings: {
81
+ code: string;
82
+ message: string;
83
+ }[];
84
+ };
59
85
  resources: number;
60
86
  documents: number;
61
87
  documentIds: string[];
@@ -78,7 +104,12 @@ export declare function runExportCommand(args: string[]): Promise<{
78
104
  } | {
79
105
  status: string;
80
106
  output: string;
81
- publication: import("./content-source.js").Variant;
107
+ publication: {
108
+ product?: string;
109
+ channel: string;
110
+ version: string;
111
+ language: string;
112
+ };
82
113
  formats: import("./content-export-config.js").ExportFormat[];
83
114
  profileSelection: {
84
115
  schemaVersion: number;
@@ -92,6 +123,14 @@ export declare function runExportCommand(args: string[]): Promise<{
92
123
  requires?: import("./deployment-profile.js").FeatureRequirements;
93
124
  }[];
94
125
  } | undefined;
126
+ contentSelection: {
127
+ selection: import("./reader-filters.js").ReaderSelection | null;
128
+ decisions: Record<string, unknown>[];
129
+ warnings: {
130
+ code: string;
131
+ message: string;
132
+ }[];
133
+ };
95
134
  resources: number;
96
135
  documents: number;
97
136
  documentIds: string[];
@@ -66,7 +66,12 @@ export declare function exportContent(configFile: string, destination: string, o
66
66
  preparedPdf: PdfExportPreparation;
67
67
  status: string;
68
68
  output: string;
69
- publication: Variant;
69
+ publication: {
70
+ product?: string;
71
+ channel: string;
72
+ version: string;
73
+ language: string;
74
+ };
70
75
  formats: ExportFormat[];
71
76
  profileSelection: {
72
77
  schemaVersion: number;
@@ -80,6 +85,14 @@ export declare function exportContent(configFile: string, destination: string, o
80
85
  requires?: import("./deployment-profile.js").FeatureRequirements;
81
86
  }[];
82
87
  } | undefined;
88
+ contentSelection: {
89
+ selection: import("./reader-filters.js").ReaderSelection | null;
90
+ decisions: Record<string, unknown>[];
91
+ warnings: {
92
+ code: string;
93
+ message: string;
94
+ }[];
95
+ };
83
96
  resources: number;
84
97
  documents: number;
85
98
  documentIds: string[];
@@ -104,7 +117,12 @@ export declare function exportContent(configFile: string, destination: string, o
104
117
  pdf: string;
105
118
  status: string;
106
119
  output: string;
107
- publication: Variant;
120
+ publication: {
121
+ product?: string;
122
+ channel: string;
123
+ version: string;
124
+ language: string;
125
+ };
108
126
  formats: ExportFormat[];
109
127
  profileSelection: {
110
128
  schemaVersion: number;
@@ -118,6 +136,14 @@ export declare function exportContent(configFile: string, destination: string, o
118
136
  requires?: import("./deployment-profile.js").FeatureRequirements;
119
137
  }[];
120
138
  } | undefined;
139
+ contentSelection: {
140
+ selection: import("./reader-filters.js").ReaderSelection | null;
141
+ decisions: Record<string, unknown>[];
142
+ warnings: {
143
+ code: string;
144
+ message: string;
145
+ }[];
146
+ };
121
147
  resources: number;
122
148
  documents: number;
123
149
  documentIds: string[];
@@ -140,7 +166,12 @@ export declare function exportContent(configFile: string, destination: string, o
140
166
  } | {
141
167
  status: string;
142
168
  output: string;
143
- publication: Variant;
169
+ publication: {
170
+ product?: string;
171
+ channel: string;
172
+ version: string;
173
+ language: string;
174
+ };
144
175
  formats: ExportFormat[];
145
176
  profileSelection: {
146
177
  schemaVersion: number;
@@ -154,6 +185,14 @@ export declare function exportContent(configFile: string, destination: string, o
154
185
  requires?: import("./deployment-profile.js").FeatureRequirements;
155
186
  }[];
156
187
  } | undefined;
188
+ contentSelection: {
189
+ selection: import("./reader-filters.js").ReaderSelection | null;
190
+ decisions: Record<string, unknown>[];
191
+ warnings: {
192
+ code: string;
193
+ message: string;
194
+ }[];
195
+ };
157
196
  resources: number;
158
197
  documents: number;
159
198
  documentIds: string[];
@@ -1,5 +1,6 @@
1
+ import { createSectionSelection, pruneSelectedTree, sectionSelectionReport, writeSectionSelectionReport } from './section-selection.js';
1
2
  import { documentKey, publicationKey, samePublication } from './publication-identity.js';
2
- import { pruneFeatureTree, profileSelection } from './deployment-profile.js';
3
+ import { profileSelection } from './deployment-profile.js';
3
4
  import { readFile, realpath } from 'node:fs/promises';
4
5
  import path from 'node:path';
5
6
  import { fileURLToPath } from 'node:url';
@@ -121,7 +122,8 @@ export async function exportContent(configFile, destination, options = {}) {
121
122
  const providerSetting = configField(config.metadata, 'provider');
122
123
  const metadataProvider = await loadMetadataProvider(providerSetting, providerSetting ? explainSegments(loaded, ['metadata', 'provider', 'module']).source.file : configFile);
123
124
  const metadataDependencies = new Set();
124
- const workspace = await prepareContentWorkspace({ base, basePath, config, loaded, variants: [publication], language, readerFilters, metadataProvider, metadataDependencies, allowRouteCollisions: true });
125
+ const sectionSelection = createSectionSelection(readerFilters, selection, publications);
126
+ const workspace = await prepareContentWorkspace({ base, basePath, config, loaded, variants: [publication], language, readerFilters, metadataProvider, metadataDependencies, sectionSelection, allowRouteCollisions: true });
125
127
  const { docs: eligible, apiPlan, snippets, sourceForOperation } = workspace;
126
128
  const ids = new Set(target.resources ? target.resources.filter(item => item.kind !== 'snippet').map(item => item.documentId) : target.documents);
127
129
  for (const id of ids) {
@@ -180,7 +182,7 @@ export async function exportContent(configFile, destination, options = {}) {
180
182
  throw new Error(`Unknown export snippet ${selection.snippetId}`);
181
183
  // This is an explicit isolated context. It has no containing page, operations,
182
184
  // relationships, page variables, or inherited publication/access metadata.
183
- const snippetDocument = { featureContext: loaded.deployment?.context, file: definition.file, body: '', tree: root([]), variant: publication,
185
+ const snippetDocument = { sectionSelection, featureContext: loaded.deployment?.context, file: definition.file, body: '', tree: root([]), variant: publication,
184
186
  route: `/__content_snippets/${encodeURIComponent(selection.id)}`, markdownRoute: '',
185
187
  frontmatter: { id: selection.id, title: selection.title, summary: selection.summary, type: 'snippet', slug: '/', access: { policy: 'public' } } };
186
188
  const checkSnippet = (id, seen = new Set()) => {
@@ -190,7 +192,7 @@ export async function exportContent(configFile, destination, options = {}) {
190
192
  const source = snippets.get(id);
191
193
  if (!source)
192
194
  throw new Error(`Unknown snippet ${id}`);
193
- visitTree(pruneFeatureTree(source.tree, loaded.deployment?.context, source.file), node => {
195
+ visitTree(pruneSelectedTree(source.tree, snippetDocument, source.file, false), node => {
194
196
  if (['RelatedReading', 'DocCard', 'DocCards', 'DocCollection', 'CookbookChooser', 'ApiExample', 'ApiSchema', 'FrontmatterReference', 'Anchor'].includes(node.name))
195
197
  throw new Error(`Snippet instance ${selection.id}: <${node.name}> needs page context`);
196
198
  if (node.name === 'Snippet') {
@@ -316,6 +318,11 @@ export async function exportContent(configFile, destination, options = {}) {
316
318
  const key = `${sourceKeyFor(destination)}:${format}`;
317
319
  if (canonicalAnchors.has(key))
318
320
  return canonicalAnchors.get(key);
321
+ // An export-selected tree cannot prove anchors in a differently selected website.
322
+ // Refuse the fragment rather than silently publish a broken canonical link.
323
+ const normalizeSelection = (value) => JSON.stringify(Object.entries(value ?? {}).sort(([a], [b]) => compare(a, b)).map(([facet, choices]) => [facet, [...choices].sort(compare)]));
324
+ if (sectionSelection.hasConditions && normalizeSelection(selection) !== normalizeSelection(siteSelection))
325
+ throw new Error(`Cannot verify canonical anchor in ${destination.frontmatter.id} across different site and export contentFilter selections; include the target resource or use its page URL without a fragment`);
319
326
  const source = sourceInventories.get(key);
320
327
  if (!source || destination.endpoint)
321
328
  throw new Error(`Cannot validate canonical fragments in ${destination.frontmatter.id}; select the target resource explicitly`);
@@ -553,7 +560,7 @@ export async function exportContent(configFile, destination, options = {}) {
553
560
  };
554
561
  const input = { documents: printDocuments, title: selected.length === 1 ? selected[0].title : site.title, publication, assets: assets.artifacts, publicBase: target.publicBase, config: pdfConfig, configFile, assetRoots: [...roots, ...pdfInputs.map(file => path.dirname(file))] };
555
562
  const preparedPdf = { input, manifest, inputs };
556
- const common = { status: unreviewed.length ? 'needs-review' : 'ok', output: path.resolve(destination || base), publication, formats: target.formats, profileSelection: profileSelection(loaded.deployment), resources: records.length, documents: records.length, documentIds: selected.map(item => item.doc.frontmatter.id), comparison: { status: 'no-baseline', added: [], removed: [], diagnostics: [] }, assets: assets.records.size, apiReview: manifest.review.apis, diagnostics };
563
+ const common = { status: unreviewed.length ? 'needs-review' : 'ok', output: path.resolve(destination || base), publication, formats: target.formats, profileSelection: profileSelection(loaded.deployment), contentSelection: sectionSelectionReport(sectionSelection), resources: records.length, documents: records.length, documentIds: selected.map(item => item.doc.frontmatter.id), comparison: { status: 'no-baseline', added: [], removed: [], diagnostics: [] }, assets: assets.records.size, apiReview: manifest.review.apis, diagnostics };
557
564
  if (options.preparePdfOnly)
558
565
  return { ...common, digest: exportDigest(JSON.stringify(manifest)), preparedPdf };
559
566
  checkOutputDirectory(destination, base, workspace.contentDir, inputs);
@@ -573,6 +580,7 @@ export async function exportContent(configFile, destination, options = {}) {
573
580
  const digest = exportDigest(JSON.stringify(payload));
574
581
  pdfArtifacts.set('manifest.json', JSON.stringify({ ...payload, digest }, null, 2) + '\n');
575
582
  await commitArtifacts(path.resolve(destination), pdfArtifacts, undefined, 'pdf');
583
+ await writeSectionSelectionReport(base, sectionSelection, { target: { kind: 'pdf', name: options.target ?? null, output: path.resolve(destination) }, buildId: digest, configDigest: loaded.digest, filterOrigin: target.contentFilter ? 'export.contentFilter' : 'site.contentFilter' });
576
584
  return { ...common, digest, pdf: filename };
577
585
  }
578
586
  const manifest = { schemaVersion: publication.product === undefined ? 1 : 2, kind: 'shoalrun-content-export', publicBase: target.publicBase, publication,
@@ -599,7 +607,8 @@ export async function exportContent(configFile, destination, options = {}) {
599
607
  throw new Error('Review candidate cannot overwrite an approved export; choose a separate review destination');
600
608
  }
601
609
  await commitArtifacts(path.resolve(destination), artifacts, undefined, 'export');
610
+ await writeSectionSelectionReport(base, sectionSelection, { target: { kind: 'export', name: options.target ?? null, output: path.resolve(destination) }, buildId: bundleDigest, configDigest: loaded.digest, filterOrigin: target.contentFilter ? 'export.contentFilter' : 'unfiltered' });
602
611
  return { status: unreviewed.length ? 'needs-review' : 'ok', output: path.resolve(destination), publication, formats: target.formats,
603
- profileSelection: profileSelection(loaded.deployment), resources: records.length, documents: records.filter(item => item.ref.kind === 'page').length, documentIds: records.flatMap(item => item.ref.kind === 'page' ? [item.ref.documentId] : []), comparison, assets: assets.records.size, digest: bundleDigest,
612
+ profileSelection: profileSelection(loaded.deployment), contentSelection: sectionSelectionReport(sectionSelection), resources: records.length, documents: records.filter(item => item.ref.kind === 'page').length, documentIds: records.flatMap(item => item.ref.kind === 'page' ? [item.ref.documentId] : []), comparison, assets: assets.records.size, digest: bundleDigest,
604
613
  apiReview: reviews.map(row => ({ apiId: row.apiId, digest: row.digest })), diagnostics };
605
614
  }
@@ -2,3 +2,5 @@ import { type ReaderFiltersConfig, type ReaderSelection } from './reader-filters
2
2
  /** Build-time page selection; every selected facet must match at least one choice. */
3
3
  export declare function validateContentFilter(value: unknown, facets?: ReaderFiltersConfig): ReaderSelection | undefined;
4
4
  export declare function matchesContentFilter(marks: ReaderSelection | undefined, selection: ReaderSelection | undefined): boolean;
5
+ /** Section requirements narrow a selected page; unselected facets pass. */
6
+ export declare function matchesSectionContentFilter(requirements: ReaderSelection, selection: ReaderSelection | undefined): boolean;
@@ -14,3 +14,7 @@ export function validateContentFilter(value, facets) {
14
14
  export function matchesContentFilter(marks, selection) {
15
15
  return !selection || Object.entries(selection).every(([facet, choices]) => choices.some(choice => marks?.[facet]?.includes(choice)));
16
16
  }
17
+ /** Section requirements narrow a selected page; unselected facets pass. */
18
+ export function matchesSectionContentFilter(requirements, selection) {
19
+ return Object.entries(requirements).every(([facet, choices]) => !selection?.[facet] || choices.some(choice => selection[facet].includes(choice)));
20
+ }
@@ -1,10 +1,21 @@
1
1
  import type { ContentAnchor, ContentLink, ContentResult } from './content-delivery-contract.js';
2
+ /** Handles and rewritten routing metadata for one mounted HTML instance. */
2
3
  export type ContentMount = {
4
+ /** Anchors after instance-specific ID rewriting. */
3
5
  anchors: readonly ContentAnchor[];
6
+ /** Typed links, including rewritten local fragments for this instance. */
4
7
  links: readonly ContentLink[];
8
+ /** Remove nodes that still belong to this mount. */
5
9
  unmount(): void;
6
10
  };
7
- /** Mount trusted compiler output, not arbitrary HTML. This is not a sanitizer. */
11
+ /** Mount trusted compiler HTML with instance-specific anchor and accessibility IDs.
12
+ * This is not a sanitizer. The result must come from trusted compiler output.
13
+ * The mount replaces the container's children and rewrites local routing metadata.
14
+ * @param container DOM element receiving the content.
15
+ * @param result A validated HTML representation; Markdown results aren't accepted.
16
+ * @param options Optional unique instance ID and cancellation signal.
17
+ * @returns Rewritten anchors, typed links, and an unmount handle.
18
+ */
8
19
  export declare function mountContent(container: Element, result: ContentResult, options?: {
9
20
  instanceId?: string;
10
21
  signal?: AbortSignal;
@@ -1,5 +1,12 @@
1
1
  import { ContentDeliveryError, contentRefKey } from './content-delivery-contract.js';
2
- /** Mount trusted compiler output, not arbitrary HTML. This is not a sanitizer. */
2
+ /** Mount trusted compiler HTML with instance-specific anchor and accessibility IDs.
3
+ * This is not a sanitizer. The result must come from trusted compiler output.
4
+ * The mount replaces the container's children and rewrites local routing metadata.
5
+ * @param container DOM element receiving the content.
6
+ * @param result A validated HTML representation; Markdown results aren't accepted.
7
+ * @param options Optional unique instance ID and cancellation signal.
8
+ * @returns Rewritten anchors, typed links, and an unmount handle.
9
+ */
3
10
  export function mountContent(container, result, options = {}) {
4
11
  options.signal?.throwIfAborted();
5
12
  if (result.format !== 'html')
@@ -1,12 +1,22 @@
1
1
  import type { ContentSnapshot, ContentPublication } from './content-delivery-contract.js';
2
2
  import type { ContentDeliveryLimits } from './content-delivery.js';
3
+ /** Options for a REST inventory and its revision-pinned resource reads. */
3
4
  export type RestContentSourceOptions = {
5
+ /** REST mount URL, such as /content/v1. Browser requests must use the application's origin. */
4
6
  baseUrl: string | URL;
7
+ /** Exact publication to request; include product for a product-scoped source. */
5
8
  publication: ContentPublication;
9
+ /** Expected inventory revision. Omit it to open the current revision. */
6
10
  revision?: string;
11
+ /** Fetch implementation. Defaults to globalThis.fetch. */
7
12
  fetch?: typeof globalThis.fetch;
13
+ /** Cancel the inventory-opening request. */
8
14
  signal?: AbortSignal;
15
+ /** Inventory and representation bounds. */
9
16
  limits?: ContentDeliveryLimits;
10
17
  };
11
- /** Preloads a REST inventory and pins all subsequent reads to that revision. */
18
+ /** Open a REST inventory and pin subsequent resource reads to its revision.
19
+ * @param options REST mount, exact publication, optional revision, and request settings.
20
+ * @returns A snapshot with the same list/get/dispose interface as the manifest source.
21
+ */
12
22
  export declare function openRestContentSource(options: RestContentSourceOptions): Promise<ContentSnapshot>;
@@ -7,7 +7,10 @@ const digestPattern = /^[a-f0-9]{64}$/;
7
7
  const record = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
8
8
  const exactKeys = (value, keys) => record(value) && Object.keys(value).length === keys.length && Object.keys(value).every(key => keys.includes(key));
9
9
  const invalid = (message) => { throw new ContentDeliveryError('invalid_manifest', message); };
10
- /** Preloads a REST inventory and pins all subsequent reads to that revision. */
10
+ /** Open a REST inventory and pin subsequent resource reads to its revision.
11
+ * @param options REST mount, exact publication, optional revision, and request settings.
12
+ * @returns A snapshot with the same list/get/dispose interface as the manifest source.
13
+ */
11
14
  export async function openRestContentSource(options) {
12
15
  let baseUrl;
13
16
  try {
@@ -1,16 +1,19 @@
1
1
  import type { ContentPublication, ContentRef, ContentResource } from './content-delivery-contract.js';
2
2
  /** Public identity only: independent of publication, revision, and export filenames. */
3
3
  export declare function contentResourceKey(ref: ContentRef): string;
4
+ /** One resource inventory entry with its REST lookup key. */
4
5
  export type ContentRestEntry = {
5
6
  key: string;
6
7
  resource: ContentResource;
7
8
  };
9
+ /** Revision-scoped inventory envelope returned by the content REST service. */
8
10
  export type ContentRestList = {
9
11
  schemaVersion: 1 | 2;
10
12
  revision: string;
11
13
  publication: ContentPublication;
12
14
  resources: ContentRestEntry[];
13
15
  };
16
+ /** Revision-scoped metadata envelope for a single content resource. */
14
17
  export type ContentRestResource = {
15
18
  schemaVersion: 1 | 2;
16
19
  revision: string;
@@ -18,7 +21,9 @@ export type ContentRestResource = {
18
21
  key: string;
19
22
  resource: ContentResource;
20
23
  };
24
+ /** Error categories used by the content REST protocol. */
21
25
  export type ContentRestErrorCode = 'invalid_request' | 'not_found' | 'unsupported_format' | 'stale_revision' | 'method_not_allowed' | 'internal_error';
26
+ /** JSON error envelope returned by the content REST service. */
22
27
  export type ContentRestError = {
23
28
  error: {
24
29
  code: ContentRestErrorCode;
@@ -57,6 +57,8 @@ export type Frontmatter = {
57
57
  [key: string]: unknown;
58
58
  };
59
59
  export type Document = {
60
+ sectionSelection?: import('./section-selection.js').SectionSelection;
61
+ codeReference?: import('./code-reference-model.js').CodeReference;
60
62
  featureContext?: import('./deployment-profile.js').FeatureContext;
61
63
  change?: ResolvedChange;
62
64
  subjectDeprecation?: ResolvedSubjectDeprecation;
@@ -1,3 +1,4 @@
1
+ import { type SectionSelection } from './section-selection.js';
1
2
  import { type Document, type Variant } from './content.js';
2
3
  import { type AuthoredPublicationConfig } from './publication-plan.js';
3
4
  import { type loadConfig } from './config.js';
@@ -5,25 +6,28 @@ import { type SnippetDefinition } from './snippets.js';
5
6
  import type { ReaderFiltersConfig, ReaderSelection } from './reader-filters.js';
6
7
  import type { loadMetadataProvider } from './metadata-provider.js';
7
8
  /** Shared source resolution. No website navigation, styles, hosting or provider setup. */
8
- export declare function prepareContentWorkspace({ base, basePath, config, loaded, variants, language, readerFilters, contentFilter, metadataProvider, metadataDependencies, sourceOverrides, authoringFiles, allowRouteCollisions }: {
9
+ export declare function prepareContentWorkspace({ base, basePath, config, loaded, variants, language, readerFilters, contentFilter, metadataProvider, metadataDependencies, sourceOverrides, authoringFiles, allowRouteCollisions, sectionSelection: suppliedSectionSelection }: {
9
10
  base: string;
10
11
  basePath: string;
11
12
  config: AuthoredPublicationConfig & {
12
13
  snippets?: unknown;
13
14
  variables?: unknown;
14
15
  apis?: unknown;
16
+ codeReferences?: unknown;
15
17
  };
16
18
  loaded: Awaited<ReturnType<typeof loadConfig>>;
17
19
  variants: Variant[];
18
20
  language: string;
19
21
  readerFilters?: ReaderFiltersConfig;
20
22
  contentFilter?: ReaderSelection;
23
+ sectionSelection?: SectionSelection;
21
24
  metadataProvider?: Awaited<ReturnType<typeof loadMetadataProvider>>;
22
25
  metadataDependencies: Set<string>;
23
26
  sourceOverrides?: ReadonlyMap<string, string>;
24
27
  authoringFiles?: ReadonlySet<string>;
25
28
  allowRouteCollisions?: boolean;
26
29
  }): Promise<{
30
+ sectionSelection: SectionSelection;
27
31
  docs: Map<string, Document>;
28
32
  knownDocumentIds: Set<string>;
29
33
  knownDocumentTypes: Map<string, string>;