@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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.0 — 2026-11-07
4
+
5
+ - Select additional sections with [ForFacet](https://www.shoalrun.com/author/components/for-facet)
6
+ and existing build facets, without customer profiles. Omit unmatched content
7
+ before rendering, indexing, and dependency expansion.
8
+ - Generate [TypeScript SDK references](https://www.shoalrun.com/api-docs/typescript-references)
9
+ from public declarations and JSDoc. Preserve overloads, optional methods,
10
+ readonly properties, and linked types. The authoring skill covers extraction
11
+ and build selection; the website includes the generated content client API.
12
+ - Add project skill discovery links, explicit loading instructions, and short
13
+ task checklists for the bundled agent workflows.
14
+ - Improve browser and CLI keyword ranking for queries written as questions.
15
+ - Mark intentional HTML-only blocks for compatible parity checks while retaining
16
+ tooltip and info-hint comparison.
17
+
18
+ Upgrade to CLI `1.1.0` and rebuild the site and application exports. TypeScript
19
+ extraction requires an explicit `typescript@5.9.3` development dependency;
20
+ normal builds consume the saved snapshot without running extraction.
21
+
22
+ ## 1.0.0 — 2026-11-06
23
+
24
+ - Generate [code API references](https://www.shoalrun.com/api-docs/code-references)
25
+ from Python source and docstrings, or bring a converter using the shared JSON
26
+ snapshot format. Choose symbol, class, module, or optional complete-page
27
+ references with linked types, field defaults, and native content delivery.
28
+ - Preload local custom body and heading fonts, cache custom assets by content,
29
+ and revalidate bundled fonts. Match the preset's font style and CSS weight
30
+ selection, including overlapping face registrations.
31
+ - Tighten shared page-header spacing around metadata and page actions.
32
+ - Correct npm distribution tagging and verify it separately from upload.
33
+ Stable releases use `latest`; later prereleases preserve that stable channel.
34
+
35
+ Upgrade to CLI `1.0.0` and rebuild. Python extraction is optional and runs
36
+ explicitly; normal site builds consume the saved snapshot without Python.
37
+
38
+
3
39
  ## 0.1.0-beta.1 — 2026-11-05
4
40
 
5
41
  - Add custom code-fence highlighting with local TextMate JSON grammars and aliases.
@@ -0,0 +1,156 @@
1
+ # Code API references
2
+
3
+ Code API references describe a library's classes, functions, methods, fields, parameters, return values, and exceptions. OpenAPI references describe HTTP endpoints. Guides explain how to accomplish tasks; code references explain the interfaces used to accomplish them.
4
+
5
+ Shoalrun consumes a versioned JSON snapshot and generates native reference pages. The pages participate in navigation, search, publication selection, reader filters, customer-profile pruning, Markdown output, content exports, and PDF exports. They use the site's theme and a compact code-reference layout with signatures and member tables.
6
+
7
+ ## Generate Python references
8
+
9
+ The optional Python adapter reads local source with Griffe. It doesn't import the documented package or enable runtime inspection, extensions, or external alias resolution. It requires Python 3.11 or newer and the pinned `griffelib` dependency. Normal Shoalrun builds consume the JSON snapshot and don't require Python.
10
+
11
+ From a checkout of this package:
12
+
13
+ ```sh
14
+ python3.11 -m venv .venv-reference
15
+ .venv-reference/bin/python -m pip install --require-hashes -r adapters/python/requirements.txt
16
+ .venv-reference/bin/python adapters/python/shoalrun_reference.py \
17
+ --root examples/code-references/python --module orchard \
18
+ --out examples/code-references/reference.json
19
+ shoalrun references check examples/code-references/reference.json
20
+ shoalrun build examples/code-references/docs.config.yaml site-dist
21
+ ```
22
+
23
+ Use `--style google`, `--style numpy`, or `--style sphinx` for the docstring convention. Review the generated snapshot before publishing it. Public source declarations and their docstrings can contain sensitive information even when extraction doesn't execute code.
24
+
25
+ The adapter emits locally defined symbols, skips aliases and underscore-prefixed members except constructors, and rejects symlinks in its declared source root. It doesn't expand inherited members, execute decorators, resolve external re-exports, or infer undocumented behavior. Its example SDK stores records in memory and doesn't contact a live service.
26
+
27
+ ## Generate TypeScript references
28
+
29
+ The optional TypeScript adapter follows the public exports of one entry module, including local re-exports. It reads source or declaration files with the TypeScript compiler API; it doesn't import, execute, or emit documented code. Install `typescript@5.9.3` explicitly in the project that supplies the compiler configuration. The adapter supports TypeScript 5.9.x and rejects other compiler versions.
30
+
31
+ From that project, run:
32
+
33
+ ```sh
34
+ node node_modules/@shoalrun/cli/adapters/typescript/shoalrun-reference.mjs \
35
+ --project tsconfig.json --entry src/index.ts --module example.sdk \
36
+ --out reference.json
37
+ shoalrun references check reference.json
38
+ ```
39
+
40
+ `--entry` resolves relative to the compiler configuration. `--root` defaults to its directory and bounds emitted declarations and relative provenance paths; an entry or exported declaration outside that root fails. The configuration may be outside an explicitly supplied root. `--out` resolves relative to the current working directory. Extraction reports TypeScript errors rather than publishing an incomplete entry point. It doesn't install dependencies, run project plugins, or fetch remote declarations.
41
+
42
+ Functions, overloads, classes, interfaces, type aliases, enums, and constants retain signatures. Object/interface fields and methods become child symbols. JSDoc descriptions, `@param`, `@returns`, and `@example` supply prose. Private/protected members and `@internal`/`@private` symbols are omitted. Local type references link eligible exports. Inherited members aren't expanded; union alternatives remain in their full alias declaration. Namespace exports and other unsupported declarations fail explicitly. See [the adapter guide](adapters/typescript/README.md) for limits.
43
+
44
+ Normal site builds still read the saved JSON and don't need TypeScript. Refresh explicitly after changing the public source or JSDoc, then validate and review the generated reference. Type extraction doesn't prove runtime behavior.
45
+
46
+ ## Configure a catalog
47
+
48
+ ```yaml
49
+ codeReferences:
50
+ sdk:
51
+ source: { kind: file, path: ./reference.json }
52
+ pathPrefix: /reference/code
53
+ symbols:
54
+ orchard.client.Client:
55
+ documentId: reference.client
56
+ slug: /reference/client
57
+ navigation:
58
+ - { id: client, doc: reference.client }
59
+ ```
60
+
61
+ Paths resolve relative to the file that declares them and must stay inside the project root. Generated pages use `type: code-reference`. The `programmingLanguage` in a snapshot is distinct from a publication's language, such as `en`.
62
+
63
+ Set `symbols.<symbol-id>.documentId` and `slug` to keep deliberate public identities and URLs. Without these settings, Shoalrun generates deterministic IDs and routes from the catalog and symbol IDs. Moving or renaming a symbol changes those defaults.
64
+
65
+ Use `include` and `exclude` lists of exact symbol IDs to select public symbols. Private symbols and descendants of private symbols aren't published. `metadata` supplies ordinary page metadata; `symbols.<id>.metadata` overrides it for one symbol. A symbol's explicit `shared` or `requires` classification replaces the catalog's classification. Each symbol's feature requirements are evaluated separately; classification isn't inherited from its parent symbol. Project frontmatter defaults and enforced settings still apply.
66
+
67
+ For independent product versions, replace `source` with explicit source bindings:
68
+
69
+ ```yaml
70
+ codeReferences:
71
+ sdk:
72
+ publications:
73
+ - product: sdk
74
+ channel: production
75
+ version: v1
76
+ language: en
77
+ source: { kind: file, path: ./reference-v1.json }
78
+ - product: sdk
79
+ channel: production
80
+ version: v2
81
+ language: en
82
+ source: { kind: file, path: ./reference-v2.json }
83
+ ```
84
+
85
+ Declare those products and versions in `publications` as usual. Each binding uses its own snapshot. Links and member tables include only eligible pages in the same catalog and publication.
86
+
87
+ ## Bring another converter
88
+
89
+ A converter for Kotlin or another language can emit the same snapshot format. Shoalrun doesn't need to load that converter during compilation. Run it explicitly in your own build workflow, validate its output, and point a catalog at the resulting file.
90
+
91
+ The contract is [schemas/code-reference.schema.json](schemas/code-reference.schema.json). A minimal snapshot looks like this:
92
+
93
+ ```json
94
+ {
95
+ "schemaVersion": 1,
96
+ "kind": "shoalrun-code-reference",
97
+ "programmingLanguage": "kotlin",
98
+ "producer": { "name": "example-converter", "version": "1.0.0" },
99
+ "symbols": [{
100
+ "id": "example.greet",
101
+ "name": "greet",
102
+ "kind": "function",
103
+ "summary": "Create a greeting.",
104
+ "signatures": ["fun greet(name: String): String"],
105
+ "parameters": [{ "name": "name", "type": "String", "description": "Reader name." }],
106
+ "returns": { "type": "String", "description": "The greeting." }
107
+ }]
108
+ }
109
+ ```
110
+
111
+ This illustrates the converter contract; it isn't a bundled Kotlin extractor. Supported symbol kinds are module, namespace, class, interface, enum, type, function, method, constructor, property, attribute, and constant. Optional fields include `parent`, `description`, `raises`, `yields`, `examples`, `seeAlso`, relative source provenance, and a source digest. Symbol IDs must be unique, referenced IDs must exist, and parent ownership must be acyclic. `shoalrun references check` performs these semantic checks as well as schema validation. JavaScript tools can import `validateCodeReference` from `@shoalrun/cli/references`.
112
+
113
+ Descriptions use inert Markdown, with raw HTML stripped. They don't run MDX or expand project directives. Use `[Record](symbol:orchard.models.Record)` to link a symbol in the same catalog and publication. External links support HTTPS and mailto; relative links and images aren't supported. Use code examples for runnable-looking snippets; extraction doesn't execute or verify those examples.
114
+
115
+ ## Types, fields, and source links
116
+
117
+ Converters can supply `typeReferences`, mapping the exact type text to a symbol ID in the same snapshot. Shoalrun links those types in parameter, return, yield, base-class, exception, and field descriptions only when the target is published in the same catalog and publication. Excluded targets stay plain text. Signatures retain copyable code. Shoalrun doesn't guess targets from short names.
118
+
119
+ Field symbols can supply `annotation`, `required`, and `default`. A nullable field can still be required; `required` describes whether a value must be supplied, not whether the type admits null. Unknown requirements stay unmarked. Defaults are source expressions, not evaluated values.
120
+
121
+ Class symbols can supply `bases` and `constructorSignature`. The Python adapter extracts local constructors and synthesizes simple local dataclass constructors; it leaves unsupported cases unspecified. Dataclass factory defaults appear as `<factory>` in the constructor signature and retain their source expression in the field details.
122
+
123
+ To show **View source**, configure a catalog's `sourceLink.baseUrl` with an HTTPS repository URL ending at the directory that contains the snapshot's relative source paths. Include the desired immutable commit or release in that URL. For example, a base URL ending in `/blob/<commit>/src` and a source path of `sdk/models.py` produce `/blob/<commit>/src/sdk/models.py#L12` for line 12. Query strings, fragments, and embedded credentials aren't accepted in the base URL. Shoalrun doesn't download source or publish source files automatically. Source links are omitted when no base URL is configured.
124
+
125
+ ## Choose separate or grouped pages
126
+
127
+ Configure each catalog independently:
128
+
129
+ ```yaml
130
+ codeReferences:
131
+ sdk:
132
+ source: { kind: file, path: ./reference.json }
133
+ layout: classes
134
+ singlePage:
135
+ documentId: reference.sdk.complete
136
+ slug: /reference/sdk/all
137
+ title: Complete SDK reference
138
+ navigation:
139
+ - { id: complete-reference, doc: reference.sdk.complete }
140
+ ```
141
+
142
+ `layout` accepts:
143
+
144
+ | Value | Reading experience |
145
+ | --- | --- |
146
+ | `symbols` | Separate symbol pages with linked member tables. This is the default. |
147
+ | `classes` | Class pages include member details inline. Module pages include their direct functions and class overviews. |
148
+ | `modules` | Module pages include details for the classes, functions, and fields in that module. Submodules have their own grouping. |
149
+
150
+ Individual symbol pages and URLs remain available in every layout. Choose class or module pages for the main navigation when you want fewer navigation entries. Grouping controls the reading experience; it doesn't remove the underlying symbol pages or change their content-delivery identities.
151
+
152
+ `singlePage` independently adds a complete reference for the catalog, containing every eligible symbol in the selected publication. It works with any layout. Omit it or set `singlePage: false` to disable it. Within a grouped or complete page, links to symbols included on that page jump to their sections. Links to other symbols retain their individual URLs. Generated heading anchors distinguish repeated headings, such as Parameters and Returns.
153
+
154
+ The complete page defaults to document ID `reference.<catalog>.complete` and slug `<pathPrefix>/all`. You can configure its `documentId`, `slug`, `title`, `summary`, and `metadata`. Its metadata inherits the catalog's settings; an explicit `shared` or `requires` classification replaces the catalog classification. Strictly classified projects must classify the complete page as well as the symbols.
155
+
156
+ Each combined page contains only symbols already allowed by its publication, profile grants, visibility, and build audience selection. Enabling a complete page doesn't grant access to excluded content. If no symbols are eligible, no empty complete page is emitted. Complete and grouped pages support the same HTML, Markdown, content export, and PDF workflows as other reference pages. Their default outline depth is two; explicit frontmatter settings can override it.
package/README.md CHANGED
@@ -2,14 +2,14 @@
2
2
 
3
3
  Shoalrun builds a documentation website, Markdown pages, and application content from the same Markdown and MDX source. People can browse the site; applications and agents can read stable documents, sections, and snippet instances. Native components keep essential instructions and API details readable in both HTML and Markdown.
4
4
 
5
- This package provides the `shoalrun` CLI, starter projects, agent skills, and offline documentation. It requires Node.js 22.12 or newer. This beta is distributed through the public npm registry. Installation requires no npm account or package token.
5
+ This package provides the `shoalrun` CLI, starter projects, agent skills, and offline documentation. It requires Node.js 22.12 or newer. The package is distributed through the public npm registry. Installation requires no npm account or package token.
6
6
 
7
7
  ## Install
8
8
 
9
9
  From the project where you want to keep your documentation:
10
10
 
11
11
  ```sh
12
- npm install --save-dev --save-exact @shoalrun/cli@0.1.0-beta.1
12
+ npm install --save-dev --save-exact @shoalrun/cli@1.1.0
13
13
  ```
14
14
 
15
15
  ## Create and preview a site
@@ -38,8 +38,10 @@ The [features overview](https://www.shoalrun.com/features) describes the complet
38
38
  | --- | --- |
39
39
  | A documentation site | Pages, navigation, local preview, themes, palettes, fonts, and project CSS. |
40
40
  | Reusable procedures | Recipes, shared ingredients, and cookbooks that help readers choose a complete task. |
41
- | API reference | OpenAPI operation pages, code examples, focused contracts, and an explicit source-review gate. |
41
+ | HTTP API references | OpenAPI operation pages, code examples, focused contracts, and an explicit source-review gate. |
42
+ | Code API references | [Python docstrings, TypeScript declarations, and converter-supplied symbols](CODE-REFERENCES.md), rendered as native reference pages. |
42
43
  | Several product releases | Independent product versions and defaults, publication routes, and a header publication selector. |
44
+ | Build selection | Select pages and `<ForFacet>` sections with configured facets and choices, without customer profiles. |
43
45
  | Customer editions | External profiles, SKU revisions, feature grants, and conditional pages or sections. |
44
46
  | Application help | HTML and Markdown exports, stable page/section/snippet references, static and REST clients, and instance-safe mounting. |
45
47
  | Agent discovery | Markdown twins, compact linked indexes, read-only MCP tools, bundled skills, and offline references. |
@@ -47,10 +49,20 @@ The [features overview](https://www.shoalrun.com/features) describes the complet
47
49
 
48
50
  Local builds and keyword search need no provider credentials. Semantic retrieval and generated answers use separately configured services; credentials stay server-side. Reader filters are browsing controls, not authorization. Customer profiles select output during compilation; private-edition hosting remains your responsibility.
49
51
 
52
+ ## Select pages and sections for a build
53
+
54
+ Declare choices under `readerFilters.facets` and set `site.contentFilter`, for example `{ audience: [customer] }`. Mark shared pages with `audiences: [customer, internal]`, then wrap additional internal instructions in `<ForFacet audience="internal">` blocks. The customer build omits those blocks from HTML, Markdown, search, discovery, and expanded resources. An unfiltered build includes them.
55
+
56
+ Unmarked sections remain included; pages without a mark for a selected facet are excluded. Every facet attribute must match, with whitespace-separated alternative choices inside each attribute. This is additive information in selected builds, not replacement text. `<ReaderSection>` remains a browser visibility control and its content ships.
57
+
58
+ Portable export targets need their own `contentFilter`; PDF exports inherit the site's filter unless overridden. Selection reports stay in `.shoalrun/content-selection.json`, outside public output. See the [runnable audience example](example-configs/facet-sections/README.md) and [authoring selection guidance](skills/shoalrun-author/references/facet-selection.md).
59
+
50
60
  ## Match your brand
51
61
 
52
62
  Use `site.logo`, `site.favicon`, and header settings for site identity. Choose a theme preset and configure `theme.palette`, `theme.mode`, and `theme.fonts`. Use `site.customCss` for changes beyond those settings. Customer profiles can supply deployment-owned branding without storing customer records in the shared source.
53
63
 
64
+ Local body and heading fonts registered through `theme.fonts` preload automatically. Custom font URLs include a content digest so browsers can cache them and fetch fresh files after font edits. Preloading starts the download earlier; first-visit layout movement still depends on the font metrics and connection.
65
+
54
66
  Check controls and interactive states as well as article text: a dark header can contain light inputs, menus, and search results. Palette validation doesn't check arbitrary project CSS. See [themes and fonts](https://www.shoalrun.com/styling/themes), the [CSS reference](https://www.shoalrun.com/author/css), and [deployment profiles](DEPLOYMENT-PROFILES.md).
55
67
 
56
68
  ## Export styled PDFs
@@ -128,7 +140,7 @@ npx --no-install shoalrun skills list
128
140
  npx --no-install shoalrun skills read shoalrun-setup
129
141
  ```
130
142
 
131
- Ask your agent to read the skill for the task. `skills list` returns names, descriptions, and local instruction-file paths. These commands read the skills; installing the npm package does not automatically install them into your agent.
143
+ Ask your agent to read the skill for the task. `skills list` returns names, descriptions, and local instruction-file paths. These commands read the skills; installing the npm package does not automatically install them into your agent. Expose complete folders through your agent's discovery directory. Copy complete folders into the skill directory supported by your agent, preserving existing skills and reviewing copied versions when upgrading. Give the project's agent instructions an exact path to load before editing, with direct file reading as a fallback. See [skill setup](https://www.shoalrun.com/contribute/agent-skills).
132
144
 
133
145
  The editing workflow is to capture a baseline, edit source files, validate the changes, then review a local preview. From your documentation project directory:
134
146
 
@@ -346,14 +358,14 @@ with a Hero replaces the standard page header and does not display its dates.
346
358
  If you previously used the private GitHub Packages alpha, check `npm config get @shoalrun:registry`. Remove or replace any `@shoalrun:registry=https://npm.pkg.github.com` entry in your project or user `.npmrc`. You can explicitly select the public registry for the upgrade:
347
359
 
348
360
  ```sh
349
- npm install --save-dev --save-exact @shoalrun/cli@0.1.0-beta.1 --@shoalrun:registry=https://registry.npmjs.org
361
+ npm install --save-dev --save-exact @shoalrun/cli@1.1.0 --@shoalrun:registry=https://registry.npmjs.org
350
362
  ```
351
363
 
352
364
  Commit the updated package manifest and lockfile together. Check that the lockfile resolves `@shoalrun/cli` from `registry.npmjs.org`. Keep any credentials needed by other private dependencies; Shoalrun itself no longer needs a package token.
353
365
 
354
366
  ## Status and development
355
367
 
356
- This beta may change configuration and output formats between releases. No compatibility promise or maintained older release line is offered yet. Creating and previewing a basic site does not require a model provider or Chrome. Optional provider-backed features require their own configuration.
368
+ Shoalrun 1.0 is the stable release line. Pin exact versions and review release notes for configuration or output-contract changes. Older release lines aren't maintained. Creating and previewing a basic site does not require a model provider or Chrome. Optional provider-backed features require their own configuration.
357
369
 
358
370
  Shoalrun is maintainer-led and does not accept unsolicited pull requests at this time. The [repository development instructions](https://github.com/shoalrun/shoalrun#develop-the-framework) explain how to build and test your own checkout or fork.
359
371
 
@@ -0,0 +1 @@
1
+ griffelib==2.4.1 --hash=sha256:76bc562f936ad1ce198d2cf6d0731bd5c92a7d934b69ef828ef22ee0ffdb62ce
@@ -0,0 +1,234 @@
1
+ #!/usr/bin/env python3
2
+ """Convert local Python source to Shoalrun code-reference JSON without importing it."""
3
+ import argparse
4
+ import ast
5
+ import hashlib
6
+ import importlib.metadata
7
+ import json
8
+ import os
9
+ from pathlib import Path
10
+ import re
11
+ import sys
12
+
13
+ VERSION = "1.0.0"
14
+ EXTRACTOR_VERSION = "2.4.1"
15
+
16
+
17
+ def convert(root, module, style):
18
+ if importlib.metadata.version("griffelib") != EXTRACTOR_VERSION:
19
+ raise ValueError(f"This adapter requires griffelib=={EXTRACTOR_VERSION}")
20
+ import griffe
21
+
22
+ root = root.resolve(strict=True)
23
+ if not root.is_dir() or not re.fullmatch(r"[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*", module):
24
+ raise ValueError("Provide a local source directory and a dotted Python module name")
25
+ # Reject symlinks before the extractor can follow any source outside this root.
26
+ digest = hashlib.sha256()
27
+ count = size = 0
28
+ for directory, dirs, files in os.walk(root, followlinks=False):
29
+ for name in dirs + files:
30
+ if (Path(directory) / name).is_symlink():
31
+ raise ValueError("Python source roots must not contain symlinks")
32
+ for name in sorted(files):
33
+ file = Path(directory) / name
34
+ if file.suffix not in (".py", ".pyi"):
35
+ continue
36
+ data = file.read_bytes()
37
+ size += len(data)
38
+ count += 1
39
+ if count > 10000 or size > 32 * 1024 * 1024:
40
+ raise ValueError("Python source root exceeds 10,000 files or 32 MiB")
41
+ relative = file.relative_to(root).as_posix().encode()
42
+ digest.update(len(relative).to_bytes(4, "big") + relative + len(data).to_bytes(8, "big") + data)
43
+ dirs.sort()
44
+ target = root.joinpath(*module.split("."))
45
+ if not target.with_suffix(".py").is_file() and not (target / "__init__.py").is_file():
46
+ raise ValueError("Requested module must exist as Python source under --root")
47
+ loaded = griffe.load(module, search_paths=[root], try_relative_path=False,
48
+ extensions=griffe.Extensions(), allow_inspection=False,
49
+ force_inspection=False, resolve_aliases=False,
50
+ resolve_external=False, find_stubs_package=False,
51
+ docstring_parser=style)
52
+ symbols = []
53
+
54
+ def field_info(obj):
55
+ info = {}
56
+ if obj.annotation is not None:
57
+ info["annotation"] = str(obj.annotation)
58
+ if obj.value is not None:
59
+ info["default"] = str(obj.value)
60
+ parent = obj.parent
61
+ if parent and parent.is_class and "dataclass" in parent.labels and "instance-attribute" in obj.labels:
62
+ if obj.value is None:
63
+ info["required"] = True
64
+ elif str(obj.value).startswith("field("):
65
+ call = ast.parse(str(obj.value), mode="eval").body
66
+ options = {keyword.arg: keyword.value for keyword in call.keywords}
67
+ if "init" not in options:
68
+ info["required"] = not ("default" in options or "default_factory" in options)
69
+ elif isinstance(options["init"], ast.Constant) and options["init"].value is False:
70
+ info["required"] = False
71
+ else:
72
+ info["required"] = False
73
+ elif parent and parent.is_class and any(str(base) in ("TypedDict", "typing.TypedDict", "typing_extensions.TypedDict") for base in parent.bases):
74
+ annotation = str(obj.annotation).split("[", 1)[0].rsplit(".", 1)[-1]
75
+ info["required"] = annotation != "NotRequired" and (annotation == "Required" or str(parent.keywords.get("total", "True")) != "False")
76
+ return info
77
+
78
+ def type_references(obj, expressions):
79
+ references = {}
80
+ for expression in expressions:
81
+ if expression is None:
82
+ continue
83
+ if isinstance(expression, str):
84
+ for token in re.findall(r"[A-Za-z_]\w*(?:\.\w+)*", expression):
85
+ try:
86
+ references[token] = obj.resolve(token)
87
+ except griffe.NameResolutionError:
88
+ pass
89
+ else:
90
+ for part in [expression, *expression.iterate()]:
91
+ if isinstance(part, griffe.Expr) and part.reference_path:
92
+ references[str(part)] = part.reference_path
93
+ return references
94
+
95
+ def visit(obj, parent=None):
96
+ if obj.is_alias or (obj.name.startswith("_") and obj.name != "__init__"):
97
+ return
98
+ kind = obj.kind.value
99
+ if kind == "function" and parent is not None and obj.parent.is_class:
100
+ kind = "constructor" if obj.name == "__init__" else "method"
101
+ if obj.is_class and any(str(base) in ("Enum", "IntEnum", "StrEnum", "enum.Enum", "enum.IntEnum", "enum.StrEnum") for base in obj.bases):
102
+ kind = "enum"
103
+ if kind == "type alias":
104
+ kind = "type"
105
+ symbol = {"id": obj.path, "name": obj.name, "kind": kind, "visibility": "public"}
106
+ if parent:
107
+ symbol["parent"] = parent
108
+ file = obj.filepath.resolve(strict=True)
109
+ relative = file.relative_to(root).as_posix()
110
+ symbol["source"] = {"path": relative}
111
+ if obj.lineno:
112
+ symbol["source"]["line"] = obj.lineno
113
+ sections = obj.docstring.parsed if obj.docstring else []
114
+ prose = []
115
+ parameter_docs = {}
116
+ for section in sections:
117
+ section_kind = section.kind.value
118
+ if section_kind == "text":
119
+ prose.append(section.value)
120
+ elif section_kind == "parameters":
121
+ parameter_docs.update({p.name: p for p in section.value})
122
+ elif section_kind == "raises":
123
+ symbol["raises"] = [{"name": str(p.annotation or p.name or "Exception"), "description": p.description} for p in section.value]
124
+ elif section_kind in ("returns", "yields") and len(section.value) == 1:
125
+ item = section.value[0]
126
+ symbol[section_kind] = {"description": item.description}
127
+ if item.annotation is not None:
128
+ symbol[section_kind]["type"] = str(item.annotation)
129
+ elif section_kind == "examples":
130
+ examples = []
131
+ for example_kind, value in section.value:
132
+ if example_kind.value == "text":
133
+ prose.append(value)
134
+ else:
135
+ examples.append({"code": value})
136
+ if examples:
137
+ symbol["examples"] = examples
138
+ else:
139
+ # Preserve less-common sections rather than silently losing their prose.
140
+ if obj.docstring:
141
+ prose = [obj.docstring.value]
142
+ symbol.pop("returns", None)
143
+ symbol.pop("yields", None)
144
+ symbol.pop("raises", None)
145
+ symbol.pop("examples", None)
146
+ break
147
+ if prose:
148
+ symbol["description"] = "\n\n".join(prose)
149
+ symbol["summary"] = prose[0].split("\n", 1)[0][:1000]
150
+ annotations = []
151
+ if obj.is_function:
152
+ annotations.extend([obj.returns, *(p.annotation for p in obj.parameters)])
153
+ prefix = "async def " if "async" in obj.labels else "def "
154
+ signatures = obj.overloads or [obj]
155
+ symbol["signatures"] = [prefix + entry.signature() for entry in signatures]
156
+ params = []
157
+ for parameter in obj.parameters:
158
+ if parameter.name in ("self", "cls") and obj.parent.is_class:
159
+ continue
160
+ detail = {"name": parameter.name}
161
+ if parameter.annotation is not None:
162
+ detail["type"] = str(parameter.annotation)
163
+ if parameter.default is not None:
164
+ detail["default"] = str(parameter.default)
165
+ if parameter.name in parameter_docs:
166
+ detail["description"] = parameter_docs[parameter.name].description
167
+ params.append(detail)
168
+ if params:
169
+ symbol["parameters"] = params
170
+ if obj.returns is not None:
171
+ symbol.setdefault("returns", {})["type"] = str(obj.returns)
172
+ elif obj.is_class:
173
+ annotations.extend(obj.bases)
174
+ if obj.bases:
175
+ symbol["bases"] = [str(base) for base in obj.bases]
176
+ constructor = obj.members.get("__init__")
177
+ if constructor is not None and not constructor.is_alias and constructor.is_function:
178
+ symbol["constructorSignature"] = constructor.signature(name=obj.name, return_type=False)
179
+ annotations.extend(p.annotation for p in constructor.parameters)
180
+ elif "dataclass" in obj.labels and not obj.bases and not any("init=" in str(decorator.value) or "kw_only=" in str(decorator.value) for decorator in obj.decorators):
181
+ # Synthesize only the simple local dataclass case; never execute decorators.
182
+ fields = [member for member in obj.attributes.values() if "instance-attribute" in member.labels]
183
+ if all(field_info(member).get("required") is not None and (not str(member.value).startswith("field(") or str(member.value).startswith("field(default_factory=")) for member in fields):
184
+ declarations = []
185
+ for member in fields:
186
+ info = field_info(member)
187
+ default = "<factory>" if str(member.value).startswith("field(default_factory=") else info.get("default")
188
+ declarations.append(member.name + (": " + info["annotation"] if "annotation" in info else "") + (" = " + default if default is not None else ""))
189
+ annotations.append(member.annotation)
190
+ symbol["constructorSignature"] = obj.name + "(" + ", ".join(declarations) + ")"
191
+ symbol["signatures"] = ["class " + obj.name + ("(" + ", ".join(map(str, obj.bases)) + ")" if obj.bases else "")]
192
+ elif obj.is_attribute:
193
+ annotations.append(obj.annotation)
194
+ symbol.update(field_info(obj))
195
+ annotation = ": " + str(obj.annotation) if obj.annotation is not None else ""
196
+ symbol["signatures"] = [obj.name + annotation]
197
+ annotations.extend(item["name"] for item in symbol.get("raises", []))
198
+ references = type_references(obj, annotations)
199
+ if references:
200
+ symbol["typeReferences"] = references
201
+ symbols.append(symbol)
202
+ for child in sorted(getattr(obj, "members", {}).values(), key=lambda item: item.name):
203
+ visit(child, obj.path)
204
+
205
+ visit(loaded)
206
+ known = {symbol["id"] for symbol in symbols}
207
+ for symbol in symbols:
208
+ if "typeReferences" in symbol:
209
+ symbol["typeReferences"] = {name: target for name, target in symbol["typeReferences"].items() if target in known}
210
+ if not symbol["typeReferences"]:
211
+ del symbol["typeReferences"]
212
+ return {"schemaVersion": 1, "kind": "shoalrun-code-reference", "programmingLanguage": "python",
213
+ "producer": {"name": "shoalrun-python", "version": VERSION, "extractorVersion": EXTRACTOR_VERSION},
214
+ "sourceDigest": digest.hexdigest(), "symbols": symbols}
215
+
216
+
217
+ def main():
218
+ parser = argparse.ArgumentParser(description=__doc__)
219
+ parser.add_argument("--root", type=Path, required=True)
220
+ parser.add_argument("--module", required=True)
221
+ parser.add_argument("--style", choices=("google", "numpy", "sphinx"), default="google")
222
+ parser.add_argument("--out", type=Path, required=True)
223
+ args = parser.parse_args()
224
+ try:
225
+ data = convert(args.root, args.module, args.style)
226
+ args.out.write_text(json.dumps(data, indent=2, ensure_ascii=False) + "\n", encoding="utf8")
227
+ except (ImportError, importlib.metadata.PackageNotFoundError):
228
+ parser.exit(1, "Install the adapter's pinned requirements in Python 3.11+ before running it.\n")
229
+ except (ValueError, OSError) as error:
230
+ parser.exit(1, f"{error}\n")
231
+
232
+
233
+ if __name__ == "__main__":
234
+ main()
@@ -0,0 +1,27 @@
1
+ # TypeScript code-reference adapter
2
+
3
+ This optional adapter uses the project's installed TypeScript 5.9.x compiler API to extract one public entry point into Shoalrun's version 1 snapshot format. The maintained dependency is `typescript@5.9.3`. TypeScript 6/7 compiler APIs aren't covered by this adapter.
4
+
5
+ Install the dependency explicitly, then run from your documentation or library project:
6
+
7
+ ```sh
8
+ npm install --save-dev --save-exact typescript@5.9.3
9
+ node node_modules/@shoalrun/cli/adapters/typescript/shoalrun-reference.mjs \
10
+ --project tsconfig.json \
11
+ --entry src/index.ts \
12
+ --module example.sdk \
13
+ --out reference.json
14
+ npx --no-install shoalrun references check reference.json
15
+ ```
16
+
17
+ Set `--root DIRECTORY` to bound declarations and provenance to a narrower source tree. Entry paths resolve relative to the project's compiler configuration. The output path resolves relative to the current directory. The module ID is a stable logical prefix for exported symbol IDs; use the same value when refreshing the snapshot.
18
+
19
+ Public local re-exports are followed. Functions and overloads, classes, interfaces, aliases, enums, constants, declared members, and static members are represented. Private/protected declarations and `@internal` or `@private` symbols are skipped. A structural alias or inferred structural type containing an excluded member stops extraction instead of printing private details in a parent signature; expose a separate public type. Copied initializers and parameter defaults containing excluded declarations also stop extraction rather than publishing those values. Inherited members aren't expanded. Anonymous call/index signatures are retained in interface declarations, and union alternatives remain in their alias declaration. Unsupported declarations, unresolved imports, and exported declarations outside the declared source root stop extraction.
20
+
21
+ JSDoc descriptions, parameter descriptions, return descriptions, and examples are retained. Other JSDoc tags aren't converted into runtime constraints. Source initializers used as defaults are copied as expressions, never evaluated. Some conditional type expansions stop extraction when their visibility cannot be verified. Type references link known public targets; built-ins and unavailable types remain text. Source locations refer to the actual input, including `.d.ts` files when those are used.
22
+
23
+ The adapter calls `createProgram` without emitting files. It doesn't execute the documented module or run project transformers/plugins, install dependencies, or fetch remote inputs. The TypeScript compiler package and local configuration remain trusted development inputs. Use a reviewed project and inspect the JSON before publication.
24
+
25
+ The source digest covers effective compiler options and all compiler source files, including external type dependencies. Graph accounting limits include those dependencies; they are checked after TypeScript loads the graph and are not execution or memory isolation. Run extraction only on trusted local projects. The output cannot overwrite a compiler input, including through symlinks, and is replaced atomically after validation.
26
+
27
+ A site build needs only the saved JSON. Configure it through `codeReferences` as described in [CODE-REFERENCES.md](../../CODE-REFERENCES.md). This keeps extraction separate from rendering, publication selection, and content delivery.