@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.
- package/CHANGELOG.md +36 -0
- package/CODE-REFERENCES.md +156 -0
- package/README.md +18 -6
- package/adapters/python/requirements.txt +1 -0
- package/adapters/python/shoalrun_reference.py +234 -0
- package/adapters/typescript/README.md +27 -0
- package/adapters/typescript/shoalrun-reference.mjs +260 -0
- package/agent-docs/.well-known/shoalrun/navigation/project-updates-50f26fe22670.txt +6 -2
- package/agent-docs/SNAPSHOT.json +5 -5
- package/agent-docs/about.md +3 -3
- package/agent-docs/api-docs/code-reference-settings.md +160 -0
- package/agent-docs/api-docs/code-reference-settings.sections/catalog-settings.md +50 -0
- package/agent-docs/api-docs/code-reference-settings.sections/complete-reference-page.md +46 -0
- package/agent-docs/api-docs/code-reference-settings.sections/converter-snapshot.md +58 -0
- package/agent-docs/api-docs/code-reference-settings.sections/descriptions-type-links-and-source-links.md +40 -0
- package/agent-docs/api-docs/code-reference-settings.sections/html-markdown-and-agents.md +38 -0
- package/agent-docs/api-docs/code-reference-settings.sections/metadata-and-selection.md +38 -0
- package/agent-docs/api-docs/code-reference-settings.sections/publication-sources.md +54 -0
- package/agent-docs/api-docs/code-reference-settings.sections/python-adapter-limits.md +38 -0
- package/agent-docs/api-docs/code-reference-settings.sections/related-reading.md +32 -0
- package/agent-docs/api-docs/code-reference-settings.sections/symbol-fields.md +56 -0
- package/agent-docs/api-docs/code-references.md +151 -0
- package/agent-docs/api-docs/code-references.sections/a-real-typescript-example.md +38 -0
- package/agent-docs/api-docs/code-references.sections/add-python-source.md +56 -0
- package/agent-docs/api-docs/code-references.sections/before-you-start.md +40 -0
- package/agent-docs/api-docs/code-references.sections/build-and-verify.md +47 -0
- package/agent-docs/api-docs/code-references.sections/choose-the-reading-layout.md +46 -0
- package/agent-docs/api-docs/code-references.sections/extract-and-validate-a-snapshot.md +52 -0
- package/agent-docs/api-docs/code-references.sections/html-markdown-and-agents.md +42 -0
- package/agent-docs/api-docs/code-references.sections/register-the-catalog-and-navigation.md +58 -0
- package/agent-docs/api-docs/code-references.sections/related-reading.md +40 -0
- package/agent-docs/api-docs/code-references.sections/versions-profiles-and-delivery.md +40 -0
- package/agent-docs/api-docs/typescript-references.md +93 -0
- package/agent-docs/author/agent-overview.md +2 -2
- package/agent-docs/author/components/for-facet.md +127 -0
- package/agent-docs/author/components/only.md +3 -1
- package/agent-docs/author/components.md +2 -1
- package/agent-docs/author/reader-views.md +2 -2
- package/agent-docs/author/reader-views.sections/configure-the-choices.md +2 -2
- package/agent-docs/author/reader-views.sections/connect-your-own-control.md +2 -2
- package/agent-docs/author/reader-views.sections/how-it-works-for-agents.md +2 -2
- package/agent-docs/author/reader-views.sections/mark-pages.md +2 -2
- package/agent-docs/author/reader-views.sections/mark-sections-and-add-an-entry-choice.md +2 -2
- package/agent-docs/author/reader-views.sections/place-filter-controls.md +2 -2
- package/agent-docs/author/reader-views.sections/try-the-controls-here.md +2 -2
- package/agent-docs/changelog/code-api-references.md +44 -0
- package/agent-docs/changelog/facet-typescript.md +54 -0
- package/agent-docs/changelog.md +17 -1
- package/agent-docs/cli.md +11 -1
- package/agent-docs/cli.sections/audit-a-project-and-api-sources.md +1 -1
- package/agent-docs/cli.sections/author-pages.md +1 -1
- package/agent-docs/cli.sections/build-and-serve.md +1 -1
- package/agent-docs/cli.sections/inspect-config-and-operations.md +1 -1
- package/agent-docs/cli.sections/npm-scripts-in-this-repository.md +1 -1
- package/agent-docs/cli.sections/related-reading.md +1 -1
- package/agent-docs/cli.sections/search-and-chat.md +1 -1
- package/agent-docs/cli.sections/start-a-project.md +1 -1
- package/agent-docs/cli.sections/validate-code-reference-snapshots.md +41 -0
- package/agent-docs/cli.sections/working-tree-authoring-tools.md +1 -1
- package/agent-docs/config/apis.md +5 -1
- package/agent-docs/config/examples.md +3 -3
- package/agent-docs/config/examples.sections/feature-showcase.md +3 -3
- package/agent-docs/config/examples.sections/minimal-site.md +2 -2
- package/agent-docs/config/examples.sections/multilingual-help-center.md +2 -2
- package/agent-docs/config/examples.sections/parcel-api-documentation.md +2 -2
- package/agent-docs/config/examples.sections/related-reading.md +2 -2
- package/agent-docs/config/examples.sections/shared-company-preset.md +2 -2
- package/agent-docs/config/outputs.md +12 -12
- package/agent-docs/config/outputs.sections/exports.md +12 -12
- package/agent-docs/config/outputs.sections/metadata.md +1 -1
- package/agent-docs/config/outputs.sections/pdf-output.md +1 -1
- package/agent-docs/config/outputs.sections/related-reading.md +1 -1
- package/agent-docs/config/site.md +17 -17
- package/agent-docs/config/site.sections/related-reading.md +1 -1
- package/agent-docs/config/site.sections/theme.md +1 -1
- package/agent-docs/config.md +2 -2
- package/agent-docs/configuration.md +2 -2
- package/agent-docs/configuration.sections/build-several-sites-from-shared-content.md +1 -1
- package/agent-docs/configuration.sections/change-inherited-lists-deliberately.md +1 -1
- package/agent-docs/configuration.sections/extract-a-section-with-include.md +1 -1
- package/agent-docs/configuration.sections/inspect-and-validate-changes.md +1 -1
- package/agent-docs/configuration.sections/related-reading.md +1 -1
- package/agent-docs/configuration.sections/separate-config-inheritance-from-page-metadata.md +1 -1
- package/agent-docs/configuration.sections/share-defaults-through-extends.md +1 -1
- package/agent-docs/configuration.sections/start-with-one-working-file.md +2 -2
- package/agent-docs/configuration.sections/understand-the-three-stages.md +1 -1
- package/agent-docs/configuration.sections/understand-where-paths-point.md +1 -1
- package/agent-docs/content-delivery/api.md +10 -2
- package/agent-docs/content-delivery/api.sections/errors.md +52 -0
- package/agent-docs/content-delivery/api.sections/generated-typescript-reference.md +36 -0
- package/agent-docs/content-delivery/api.sections/html-markdown-and-agents.md +36 -0
- package/agent-docs/content-delivery/api.sections/mount-html.md +42 -0
- package/agent-docs/content-delivery/api.sections/open-a-rest-source.md +55 -0
- package/agent-docs/content-delivery/api.sections/open-a-source.md +51 -0
- package/agent-docs/content-delivery/api.sections/read-a-snapshot.md +55 -0
- package/agent-docs/content-delivery/api.sections/related-reading.md +42 -0
- package/agent-docs/content-delivery/api.sections/validate-a-manifest.md +40 -0
- package/agent-docs/content-delivery/client.md +9 -1
- package/agent-docs/content-delivery/sdk/all.md +1772 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-exportedid.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-id.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-title.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentasset-mediatype.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentasset.md +40 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliveryerror-code.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliveryerror.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-manifestbytes.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-resourcebytes.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-resources.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contenterrorcode.md +32 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-bytes.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-digest.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-path.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentformat.md +32 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-asset.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-fragment.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-href.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-key.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-kind.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-query.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-ref.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink.md +52 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-assets.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-diagnostics.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-digest.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-files.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-kind.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-publication.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-publicbase.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-resources.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-review.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-schemaversion.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest.md +68 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-anchors.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-links.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-unmount.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount.md +49 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-channel.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-language.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-product.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-version.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentref.md +43 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrefkey.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation-anchors.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation-links.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-assets.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-canonicalurl.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-externaldependencies.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-publication.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-ref.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-representations.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-source.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-summary.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-title.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-type.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource.md +65 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresourcekey.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry-key.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry-resource.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterror-error.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterror.md +43 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterrorcode.md +32 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-publication.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-resources.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-revision.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-schemaversion.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-key.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-publication.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-resource.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-revision.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-schemaversion.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource.md +48 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-content.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-format.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-representation.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-resource.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-revision.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult.md +48 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-dispose.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-get.md +45 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-list.md +38 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-publication.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-revision.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot.md +47 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-fetch.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-limits.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-manifesturl.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-signal.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-mountcontent.md +48 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-openmanifestcontentsource.md +54 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-openrestcontentsource.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-baseurl.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-fetch.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-limits.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-publication.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-revision.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-signal.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions.md +50 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-validatecontentmanifest.md +45 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content.md +65 -0
- package/agent-docs/content-delivery/sdk/content-anchor/exported-id.md +25 -0
- package/agent-docs/content-delivery/sdk/content-anchor/id.md +25 -0
- package/agent-docs/content-delivery/sdk/content-anchor/title.md +25 -0
- package/agent-docs/content-delivery/sdk/content-anchor.md +71 -0
- package/agent-docs/content-delivery/sdk/content-asset/media-type.md +25 -0
- package/agent-docs/content-delivery/sdk/content-asset.md +43 -0
- package/agent-docs/content-delivery/sdk/content-delivery-error/code.md +25 -0
- package/agent-docs/content-delivery/sdk/content-delivery-error.md +53 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits/manifest-bytes.md +27 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits/resource-bytes.md +27 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits/resources.md +27 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits.md +77 -0
- package/agent-docs/content-delivery/sdk/content-error-code.md +23 -0
- package/agent-docs/content-delivery/sdk/content-file/bytes.md +25 -0
- package/agent-docs/content-delivery/sdk/content-file/digest.md +25 -0
- package/agent-docs/content-delivery/sdk/content-file/path.md +25 -0
- package/agent-docs/content-delivery/sdk/content-file.md +71 -0
- package/agent-docs/content-delivery/sdk/content-format.md +23 -0
- package/agent-docs/content-delivery/sdk/content-link/asset.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/fragment.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/href.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/key.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/kind.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/query.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/ref.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link.md +127 -0
- package/agent-docs/content-delivery/sdk/content-manifest/assets.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/diagnostics.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/digest.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/files.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/kind.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/public-base.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/publication.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/resources.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/review.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/schema-version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest.md +179 -0
- package/agent-docs/content-delivery/sdk/content-mount/anchors.md +27 -0
- package/agent-docs/content-delivery/sdk/content-mount/links.md +27 -0
- package/agent-docs/content-delivery/sdk/content-mount/unmount.md +27 -0
- package/agent-docs/content-delivery/sdk/content-mount.md +82 -0
- package/agent-docs/content-delivery/sdk/content-publication/channel.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication/language.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication/product.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication/version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication.md +85 -0
- package/agent-docs/content-delivery/sdk/content-ref-key.md +34 -0
- package/agent-docs/content-delivery/sdk/content-ref.md +40 -0
- package/agent-docs/content-delivery/sdk/content-representation/anchors.md +25 -0
- package/agent-docs/content-delivery/sdk/content-representation/links.md +25 -0
- package/agent-docs/content-delivery/sdk/content-representation.md +57 -0
- package/agent-docs/content-delivery/sdk/content-resource/assets.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/canonical-url.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/external-dependencies.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/publication.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/ref.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/representations.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/source.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/summary.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/title.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/type.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource-key.md +34 -0
- package/agent-docs/content-delivery/sdk/content-resource.md +192 -0
- package/agent-docs/content-delivery/sdk/content-rest-entry/key.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-entry/resource.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-entry.md +57 -0
- package/agent-docs/content-delivery/sdk/content-rest-error/error.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-error-code.md +23 -0
- package/agent-docs/content-delivery/sdk/content-rest-error.md +46 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/publication.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/resources.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/revision.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/schema-version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list.md +85 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/key.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/publication.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/resource.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/revision.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/schema-version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource.md +99 -0
- package/agent-docs/content-delivery/sdk/content-result/content.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/format.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/representation.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/resource.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/revision.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result.md +114 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/dispose.md +27 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/get.md +36 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/list.md +29 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/publication.md +27 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/revision.md +27 -0
- package/agent-docs/content-delivery/sdk/content-snapshot.md +123 -0
- package/agent-docs/content-delivery/sdk/exports.md +742 -0
- package/agent-docs/content-delivery/sdk/exports.sections/functions.md +30 -0
- package/agent-docs/content-delivery/sdk/exports.sections/members.md +47 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentanchor.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentasset.md +37 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentdeliveryerror.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentdeliverylimits.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contenterrorcode.md +29 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentfile.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentformat.md +29 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentlink.md +49 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentmanifest.md +65 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentmount.md +46 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentpublication.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentref.md +40 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrefkey.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrepresentation.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresource.md +62 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresourcekey.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestentry.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresterror.md +40 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresterrorcode.md +29 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestlist.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestresource.md +45 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresult.md +45 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentsnapshot.md +44 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-manifestcontentsourceoptions.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-mountcontent.md +45 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-openmanifestcontentsource.md +51 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-openrestcontentsource.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-restcontentsourceoptions.md +47 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-validatecontentmanifest.md +42 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/fetch.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/limits.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/manifest-url.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/signal.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options.md +93 -0
- package/agent-docs/content-delivery/sdk/mount-content.md +46 -0
- package/agent-docs/content-delivery/sdk/open-manifest-content-source.md +51 -0
- package/agent-docs/content-delivery/sdk/open-rest-content-source.md +39 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/base-url.md +28 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/fetch.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/limits.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/publication.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/revision.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/signal.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options.md +125 -0
- package/agent-docs/content-delivery/sdk/validate-content-manifest.md +38 -0
- package/agent-docs/contribute/agent-skills.md +33 -6
- package/agent-docs/documents.json +7710 -530
- package/agent-docs/features.md +20 -18
- package/agent-docs/provenance.json +6 -6
- package/agent-docs/publish/api-references.md +3 -1
- package/agent-docs/publish/api-references.sections/author-the-reference-page.md +3 -1
- package/agent-docs/publish/api-references.sections/build-and-verify-the-output.md +3 -1
- package/agent-docs/publish/api-references.sections/inspect-the-machine-readable-contract.md +3 -1
- package/agent-docs/publish/api-references.sections/next-steps.md +3 -1
- package/agent-docs/publish/api-references.sections/preview-a-small-api-reference.md +3 -1
- package/agent-docs/publish/api-references.sections/put-the-spec-in-your-project.md +3 -1
- package/agent-docs/publish/api-references.sections/register-the-operation.md +3 -1
- package/agent-docs/publish/api-references.sections/related-reading.md +3 -1
- package/agent-docs/publish/api-references.sections/review-imported-content-before-publishing.md +3 -1
- package/agent-docs/publish/api-references.sections/what-readers-get.md +3 -1
- package/agent-docs/publish/content-export.md +3 -1
- package/agent-docs/publish/content-export.sections/assets-downloads-and-notices.md +1 -1
- package/agent-docs/publish/content-export.sections/check-the-result.md +1 -1
- package/agent-docs/publish/content-export.sections/inspect-the-manifest.md +1 -1
- package/agent-docs/publish/content-export.sections/prerequisites.md +1 -1
- package/agent-docs/publish/content-export.sections/related-reading.md +1 -1
- package/agent-docs/publish/content-export.sections/review-exported-api-material.md +1 -1
- package/agent-docs/publish/content-export.sections/try-the-help-drawer-example.md +1 -1
- package/agent-docs/publish/content-export.sections/what-the-representations-retain.md +1 -1
- package/agent-docs/publish/pdf.md +2 -2
- package/agent-docs/publish/pdf.sections/apply-print-styling.md +1 -1
- package/agent-docs/publish/pdf.sections/check-the-result.md +1 -1
- package/agent-docs/publish/pdf.sections/export-a-page-or-publication.md +2 -2
- package/agent-docs/publish/pdf.sections/html-markdown-and-agents.md +1 -1
- package/agent-docs/publish/pdf.sections/offer-browser-page-printing.md +1 -1
- package/agent-docs/publish/pdf.sections/offer-direct-downloads-through-a-node-server.md +1 -1
- package/agent-docs/publish/pdf.sections/prerequisites.md +1 -1
- package/agent-docs/publish/pdf.sections/publish-an-optional-manual-download.md +1 -1
- package/agent-docs/publish/single-source-sites.md +26 -2
- package/agent-docs/publish/single-source-sites.sections/build-and-check-each-output.md +49 -0
- package/agent-docs/publish/single-source-sites.sections/html-markdown-and-agents.md +33 -0
- package/agent-docs/publish/single-source-sites.sections/include-additional-sections-in-a-build.md +47 -0
- package/agent-docs/publish/single-source-sites.sections/related-reading.md +43 -0
- package/agent-docs/publish/single-source-sites.sections/select-the-pages-for-each-site.md +74 -0
- package/agent-docs/publish/single-source-sites.sections/share-the-base-configuration.md +93 -0
- package/agent-docs/reference/agent-skills.md +2 -2
- package/agent-docs/search-index.json +1 -1
- package/agent-docs/start.md +3 -3
- package/agent-docs/start.sections/add-the-page-to-navigation.md +2 -2
- package/agent-docs/start.sections/build-and-check-both-outputs.md +2 -2
- package/agent-docs/start.sections/build-this-site.md +2 -2
- package/agent-docs/start.sections/check-writing-style.md +2 -2
- package/agent-docs/start.sections/create-a-page.md +2 -2
- package/agent-docs/start.sections/make-it-yours.md +2 -2
- package/agent-docs/start.sections/migrating-from-github-packages.md +2 -2
- package/agent-docs/start.sections/prerequisites.md +2 -2
- package/agent-docs/start.sections/related-reading.md +2 -2
- package/agent-docs/start.sections/start-your-own-project.md +3 -3
- package/agent-docs/status.md +6 -4
- package/agent-docs/styling/themes.md +7 -3
- package/agent-docs/what-is-shoalrun.md +2 -2
- package/assets/search-lexical.js +15 -4
- package/dist/artifact-bundle.d.ts +1 -0
- package/dist/artifact-bundle.js +11 -3
- package/dist/cli-discovery.d.ts +1 -1
- package/dist/cli-discovery.js +1 -0
- package/dist/cli.js +7 -0
- package/dist/code-reference-model.d.ts +85 -0
- package/dist/code-reference-model.js +73 -0
- package/dist/code-references.d.ts +23 -0
- package/dist/code-references.js +371 -0
- package/dist/compiler-config.d.ts +1 -0
- package/dist/compiler.d.ts +8 -0
- package/dist/compiler.js +14 -7
- package/dist/component-names.js +1 -1
- package/dist/component-transform.js +14 -22
- package/dist/conditional-tree.d.ts +2 -0
- package/dist/conditional-tree.js +14 -0
- package/dist/config.js +1 -1
- package/dist/content-delivery-contract.d.ts +39 -0
- package/dist/content-delivery-contract.js +2 -0
- package/dist/content-delivery-validation.d.ts +6 -0
- package/dist/content-delivery-validation.js +6 -0
- package/dist/content-delivery.d.ts +19 -1
- package/dist/content-delivery.js +10 -1
- package/dist/content-export-command.d.ts +42 -3
- package/dist/content-export.d.ts +42 -3
- package/dist/content-export.js +15 -6
- package/dist/content-filter.d.ts +2 -0
- package/dist/content-filter.js +4 -0
- package/dist/content-mount.d.ts +12 -1
- package/dist/content-mount.js +8 -1
- package/dist/content-rest-client.d.ts +11 -1
- package/dist/content-rest-client.js +4 -1
- package/dist/content-rest-contract.d.ts +5 -0
- package/dist/content-source.d.ts +2 -0
- package/dist/content-workspace.d.ts +5 -1
- package/dist/content-workspace.js +7 -2
- package/dist/deployment-profile.d.ts +3 -1
- package/dist/deployment-profile.js +18 -19
- package/dist/fonts.d.ts +9 -0
- package/dist/fonts.js +58 -3
- package/dist/page-materialization.js +3 -2
- package/dist/page-renderer.d.ts +1 -0
- package/dist/page-renderer.js +3 -1
- package/dist/palettes.d.ts +1 -1
- package/dist/publication-manifest.js +1 -1
- package/dist/publication-render.d.ts +2 -1
- package/dist/publication-render.js +2 -2
- package/dist/representation-tree.js +12 -2
- package/dist/search-query.js +13 -6
- package/dist/section-selection.d.ts +29 -0
- package/dist/section-selection.js +92 -0
- package/dist/snippets.d.ts +1 -0
- package/example-configs/facet-sections/README.md +37 -0
- package/example-configs/facet-sections/base.yaml +29 -0
- package/example-configs/facet-sections/content/billing.mdx +25 -0
- package/example-configs/facet-sections/customer.config.yaml +4 -0
- package/example-configs/facet-sections/docs.config.yaml +3 -0
- package/example-configs/faceted-sites/README.md +4 -2
- package/examples/code-references/content/start.md +53 -0
- package/examples/code-references/docs.config.yaml +262 -0
- package/examples/code-references/python/orchard/__init__.py +11 -0
- package/examples/code-references/python/orchard/client.py +212 -0
- package/examples/code-references/python/orchard/errors.py +31 -0
- package/examples/code-references/python/orchard/models.py +69 -0
- package/examples/code-references/python/orchard/pagination.py +39 -0
- package/examples/code-references/reference.json +1244 -0
- package/package.json +9 -1
- package/schemas/code-reference.schema.json +306 -0
- package/skills/shoalrun-author/SKILL.md +17 -0
- package/skills/shoalrun-author/references/code-api-references.md +19 -0
- package/skills/shoalrun-author/references/facet-selection.md +48 -0
- package/skills/shoalrun-brand/SKILL.md +9 -0
- package/skills/shoalrun-component-author/SKILL.md +9 -0
- package/skills/shoalrun-pdf/SKILL.md +9 -0
- package/skills/shoalrun-recipes/SKILL.md +9 -0
- package/skills/shoalrun-setup/SKILL.md +9 -0
- package/skills/shoalrun-walkthrough/SKILL.md +9 -0
- package/styles/site.css +61 -2
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/** Static public-entry-point extraction. Never imports or emits documented code. */
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
6
|
+
import { createRequire } from 'node:module';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import { validateCodeReference } from '../../dist/code-reference-model.js';
|
|
9
|
+
|
|
10
|
+
const inside = (root, file) => file === root || file.startsWith(root + path.sep);
|
|
11
|
+
const order = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
12
|
+
|
|
13
|
+
export function convertTypeScript({ project, entry, moduleName, root, typescript, onInputs }) {
|
|
14
|
+
project = fs.realpathSync(project);
|
|
15
|
+
root = fs.realpathSync(root ?? path.dirname(project));
|
|
16
|
+
entry = fs.realpathSync(path.resolve(path.dirname(project), entry));
|
|
17
|
+
if (!inside(root, entry)) throw new Error('Entry must stay inside the declared source root');
|
|
18
|
+
if (!moduleName || /\s|[\x00-\x1f]/.test(moduleName)) throw new Error('Provide a nonempty module ID without whitespace');
|
|
19
|
+
const ts = typescript ?? createRequire(project)('typescript');
|
|
20
|
+
if (!/^5\.9\./.test(ts.version)) throw new Error('This adapter supports TypeScript 5.9.x; install typescript@5.9.3 in the project');
|
|
21
|
+
const diagnostics = messages => messages.map(message => ts.flattenDiagnosticMessageText(message.messageText, '\n')).join('\n');
|
|
22
|
+
const configInputs = new Set([project]);
|
|
23
|
+
const readConfig = file => { if (fs.existsSync(file)) configInputs.add(fs.realpathSync(file)); return ts.sys.readFile(file); };
|
|
24
|
+
const config = ts.readConfigFile(project, readConfig);
|
|
25
|
+
if (config.error) throw new Error(diagnostics([config.error]));
|
|
26
|
+
const parsed = ts.parseJsonConfigFileContent(config.config, { ...ts.sys, readFile: readConfig }, path.dirname(project));
|
|
27
|
+
// A reference entry need not be included in the project's ordinary build files.
|
|
28
|
+
const configErrors = parsed.errors.filter(error => error.code !== 18003);
|
|
29
|
+
if (configErrors.length) throw new Error(diagnostics(configErrors));
|
|
30
|
+
const program = ts.createProgram({ rootNames: [entry], options: { ...parsed.options, noEmit: true, incremental: false, composite: false } });
|
|
31
|
+
const files = program.getSourceFiles().map(file => ({ file, path: fs.realpathSync(file.fileName) })).sort((a, b) => order(a.path, b.path));
|
|
32
|
+
if (files.length > 10000) throw new Error('Source graph exceeds 10,000 files');
|
|
33
|
+
if (files.reduce((bytes, { file }) => bytes + Buffer.byteLength(file.text), 0) > 32 * 1024 * 1024) throw new Error('Source graph exceeds 32 MiB');
|
|
34
|
+
onInputs?.([...configInputs, ...files.map(item => item.path)]);
|
|
35
|
+
const errors = ts.getPreEmitDiagnostics(program).filter(message => message.category === ts.DiagnosticCategory.Error);
|
|
36
|
+
if (errors.length) throw new Error(diagnostics(errors));
|
|
37
|
+
const checker = program.getTypeChecker();
|
|
38
|
+
const source = program.getSourceFile(entry);
|
|
39
|
+
const entrySymbol = source && checker.getSymbolAtLocation(source);
|
|
40
|
+
if (!entrySymbol) throw new Error('The entry must be an external TypeScript module with public exports');
|
|
41
|
+
const canonical = symbol => symbol.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
|
|
42
|
+
const exports = checker.getExportsOfModule(entrySymbol).sort((a, b) => order(a.name, b.name));
|
|
43
|
+
const ids = new Map();
|
|
44
|
+
const publicId = symbol => symbol && ids.get(canonical(symbol))?.[0];
|
|
45
|
+
const format = ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope;
|
|
46
|
+
const text = parts => ts.displayPartsToString(parts ?? []);
|
|
47
|
+
const description = symbol => text(symbol.getDocumentationComment(checker));
|
|
48
|
+
const tags = symbol => symbol.getJsDocTags(checker);
|
|
49
|
+
const declaration = symbol => symbol.valueDeclaration ?? symbol.declarations?.[0];
|
|
50
|
+
const location = node => {
|
|
51
|
+
const file = fs.realpathSync(node.getSourceFile().fileName);
|
|
52
|
+
if (!inside(root, file)) throw new Error('An exported declaration escapes the source root; choose a local public entry');
|
|
53
|
+
return { path: path.relative(root, file).split(path.sep).join('/'), line: node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()).line + 1 };
|
|
54
|
+
};
|
|
55
|
+
const excludedNode = node => !!node && ((node.name && ts.isPrivateIdentifier(node.name)) || ts.isPrivateIdentifier(node) || ts.getJSDocTags(node).some(tag => ['internal', 'private'].includes(tag.tagName.text)) || !!(ts.getCombinedModifierFlags(node) & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected)));
|
|
56
|
+
const visible = symbol => !tags(symbol).some(tag => tag.name === 'internal' || tag.name === 'private') &&
|
|
57
|
+
!symbol.declarations?.some(node => (node.name && ts.isPrivateIdentifier(node.name)) || ts.getCombinedModifierFlags(node) & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected));
|
|
58
|
+
for (const exported of exports) {
|
|
59
|
+
const target = canonical(exported);
|
|
60
|
+
if (!visible(exported) || !visible(target)) continue;
|
|
61
|
+
const list = ids.get(target) ?? [];
|
|
62
|
+
list.push(`${moduleName}.${exported.name}`); ids.set(target, list);
|
|
63
|
+
}
|
|
64
|
+
// The snapshot cannot express a partially hidden structural type faithfully.
|
|
65
|
+
// Fail instead of printing excluded members inside a parent signature.
|
|
66
|
+
const assertPublicStructure = node => {
|
|
67
|
+
if (ts.isBlock(node)) return;
|
|
68
|
+
if (ts.isTypeElement(node)) {
|
|
69
|
+
const symbol = node.name && checker.getSymbolAtLocation(node.name);
|
|
70
|
+
if ((symbol && !visible(symbol)) || ts.getJSDocTags(node).some(tag => ['internal', 'private'].includes(tag.tagName.text))) {
|
|
71
|
+
if (node.parent && ts.isTypeLiteralNode(node.parent)) throw new Error('A structural type contains an @internal or @private member; expose a separate public type');
|
|
72
|
+
return; // Direct interface/class members are omitted individually.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
ts.forEachChild(node, assertPublicStructure);
|
|
76
|
+
};
|
|
77
|
+
const assertPrintable = node => {
|
|
78
|
+
if (excludedNode(node)) throw new Error('A printed declaration or initializer contains an @internal, @private, private or protected member; expose a separate public value');
|
|
79
|
+
ts.forEachChild(node, assertPrintable);
|
|
80
|
+
};
|
|
81
|
+
const snippet = (node, kind = ts.EmitHint.Unspecified) => {
|
|
82
|
+
assertPrintable(node);
|
|
83
|
+
return ts.createPrinter({ removeComments: true }).printNode(kind, node, node.getSourceFile()).trim();
|
|
84
|
+
};
|
|
85
|
+
const typeText = (type, node) => {
|
|
86
|
+
const value = checker.typeToString(type, node, format);
|
|
87
|
+
const inspect = (current, seen = new Set()) => {
|
|
88
|
+
if (!current || seen.has(current)) return; seen.add(current);
|
|
89
|
+
if (current.isUnionOrIntersection()) { for (const part of current.types) inspect(part, seen); return; }
|
|
90
|
+
if (current.flags & ts.TypeFlags.Substitution) { inspect(current.baseType, seen); inspect(current.constraint, seen); return; }
|
|
91
|
+
if (current.flags & ts.TypeFlags.Conditional) throw new Error('A conditional type expansion cannot be verified for excluded members; expose a named public type');
|
|
92
|
+
if (!(current.flags & ts.TypeFlags.Object)) return;
|
|
93
|
+
for (const argument of current.aliasTypeArguments ?? []) inspect(argument, seen);
|
|
94
|
+
if (current.objectFlags & ts.ObjectFlags.Reference) for (const argument of checker.getTypeArguments(current)) inspect(argument, seen);
|
|
95
|
+
// A separately emitted public type is already validated at its own declaration.
|
|
96
|
+
if (publicId(current.aliasSymbol ?? current.symbol)) return;
|
|
97
|
+
for (const signature of [...current.getCallSignatures(), ...current.getConstructSignatures()]) {
|
|
98
|
+
inspect(checker.getReturnTypeOfSignature(signature), seen);
|
|
99
|
+
for (const parameter of signature.getParameters()) {
|
|
100
|
+
const decl = declaration(parameter);
|
|
101
|
+
if (decl) inspect(checker.getTypeOfSymbolAtLocation(parameter, decl), seen);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Named references print their name; anonymous structures print their members.
|
|
105
|
+
if (current.aliasSymbol || current.symbol && !['__type', '__object'].includes(current.symbol.name)) return;
|
|
106
|
+
for (const property of checker.getPropertiesOfType(current)) {
|
|
107
|
+
if (!visible(property)) throw new Error('An inferred structural type contains an @internal or @private member; expose a separate public type');
|
|
108
|
+
const decl = declaration(property);
|
|
109
|
+
if (decl) inspect(checker.getTypeOfSymbolAtLocation(property, decl), seen);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
inspect(type);
|
|
113
|
+
if (/import\(["'](?:\/|[A-Za-z]:[\\/])/.test(value)) throw new Error('An inferred public type contains a machine-local import path; declare an exported type explicitly');
|
|
114
|
+
return value;
|
|
115
|
+
};
|
|
116
|
+
const references = new Map();
|
|
117
|
+
const collectReferences = (node, output) => {
|
|
118
|
+
if (!node) return;
|
|
119
|
+
if (ts.isIdentifier(node)) {
|
|
120
|
+
const symbol = checker.getSymbolAtLocation(node);
|
|
121
|
+
const target = symbol && publicId(symbol);
|
|
122
|
+
if (target) output.set(node.text, target);
|
|
123
|
+
}
|
|
124
|
+
// Only declarations/types, never walk a function body or initializer.
|
|
125
|
+
ts.forEachChild(node, child => { if (!ts.isBlock(child) && child !== node.initializer) collectReferences(child, output); });
|
|
126
|
+
};
|
|
127
|
+
const symbols = [{ id: moduleName, name: moduleName, kind: 'module', visibility: 'public', source: location(source) }];
|
|
128
|
+
const append = (symbol, id, name, parent, member = false) => {
|
|
129
|
+
if (!visible(symbol)) return;
|
|
130
|
+
const node = declaration(symbol);
|
|
131
|
+
if (!node) throw new Error(`No declaration for exported symbol ${name}`);
|
|
132
|
+
const decls = symbol.declarations ?? [node];
|
|
133
|
+
for (const decl of decls) { location(decl); assertPublicStructure(decl); }
|
|
134
|
+
const ref = new Map(); references.set(id, ref);
|
|
135
|
+
const doc = description(symbol);
|
|
136
|
+
const base = { id, name, parent, visibility: 'public', source: location(node), ...(doc ? { summary: doc.split(/\n\s*\n/)[0].replace(/\s+/g, ' ').slice(0, 1000), description: doc } : {}) };
|
|
137
|
+
const type = checker.getTypeOfSymbolAtLocation(symbol, node);
|
|
138
|
+
const declared = checker.getDeclaredTypeOfSymbol(symbol);
|
|
139
|
+
let signatures = [];
|
|
140
|
+
if (ts.isFunctionDeclaration(node) || ts.isMethodDeclaration(node) || ts.isMethodSignature(node) || ts.isFunctionTypeNode(node) || type.getCallSignatures().length && !ts.isTypeAliasDeclaration(node)) {
|
|
141
|
+
base.kind = member ? 'method' : 'function';
|
|
142
|
+
signatures = checker.getNonNullableType(type).getCallSignatures();
|
|
143
|
+
base.signatures = signatures.map(signature => `${name}${symbol.flags & ts.SymbolFlags.Optional ? '?' : ''}${checker.signatureToString(signature, node, format, ts.SignatureKind.Call)}`);
|
|
144
|
+
const parameterDocs = new Map(tags(symbol).filter(tag => tag.name === 'param').flatMap(tag => { const match = /^(\S+)\s+([\s\S]*)$/.exec(text(tag.text)); return match ? [[match[1], match[2]]] : []; }));
|
|
145
|
+
const primary = signatures.at(-1);
|
|
146
|
+
if (primary) {
|
|
147
|
+
base.parameters = primary.getParameters().map(parameter => {
|
|
148
|
+
const decl = declaration(parameter);
|
|
149
|
+
const parameterName = decl?.name && (ts.isObjectBindingPattern(decl.name) || ts.isArrayBindingPattern(decl.name)) ? snippet(decl.name) : parameter.name;
|
|
150
|
+
const initializer = decl?.initializer;
|
|
151
|
+
const parameterDescription = description(parameter) || parameterDocs.get(parameter.name);
|
|
152
|
+
collectReferences(decl?.type, ref);
|
|
153
|
+
return { name: parameterName, type: typeText(checker.getTypeOfSymbolAtLocation(parameter, decl ?? node), decl ?? node),
|
|
154
|
+
...(parameterDescription ? { description: parameterDescription } : {}), ...(initializer ? { default: snippet(initializer) } : {}) };
|
|
155
|
+
});
|
|
156
|
+
base.returns = { type: typeText(checker.getReturnTypeOfSignature(primary), node) };
|
|
157
|
+
const returns = tags(symbol).find(tag => ['returns', 'return'].includes(tag.name));
|
|
158
|
+
if (returns) base.returns.description = text(returns.text);
|
|
159
|
+
}
|
|
160
|
+
for (const signature of signatures) {
|
|
161
|
+
typeText(checker.getReturnTypeOfSignature(signature), node);
|
|
162
|
+
for (const parameter of signature.getParameters()) typeText(checker.getTypeOfSymbolAtLocation(parameter, declaration(parameter) ?? node), declaration(parameter) ?? node);
|
|
163
|
+
const decl = signature.getDeclaration();
|
|
164
|
+
if (decl) collectReferences(decl.type, ref);
|
|
165
|
+
for (const parameter of decl?.parameters ?? []) collectReferences(parameter.type, ref);
|
|
166
|
+
}
|
|
167
|
+
} else if (ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) {
|
|
168
|
+
base.kind = ts.isClassDeclaration(node) ? 'class' : 'interface';
|
|
169
|
+
const generics = node.typeParameters?.map(parameter => snippet(parameter)).join(', ');
|
|
170
|
+
const heritageClauses = decls.flatMap(owner => owner.heritageClauses ?? []);
|
|
171
|
+
const heritage = [[ts.SyntaxKind.ExtendsKeyword, 'extends'], [ts.SyntaxKind.ImplementsKeyword, 'implements']].map(([token, label]) => { const types = [...new Set(heritageClauses.filter(clause => clause.token === token).flatMap(clause => clause.types.map(type => snippet(type))))]; return types.length ? label + ' ' + types.join(', ') : ''; }).filter(Boolean).join(' ');
|
|
172
|
+
base.signatures = [`${base.kind} ${name}${generics ? `<${generics}>` : ''}${heritage ? ` ${heritage}` : ''}`];
|
|
173
|
+
base.bases = heritageClauses.length ? heritageClauses.flatMap(clause => clause.types.map(type => snippet(type))) : undefined;
|
|
174
|
+
for (const clause of heritageClauses) collectReferences(clause, ref);
|
|
175
|
+
for (const parameter of node.typeParameters ?? []) collectReferences(parameter, ref);
|
|
176
|
+
for (const owner of decls.filter(item => ts.isClassDeclaration(item) || ts.isInterfaceDeclaration(item))) for (const member of owner.members) if (!excludedNode(member) && (ts.isCallSignatureDeclaration(member) || ts.isConstructSignatureDeclaration(member) || ts.isIndexSignatureDeclaration(member))) { base.signatures.push(snippet(member)); collectReferences(member, ref); }
|
|
177
|
+
if (base.kind === 'class') {
|
|
178
|
+
const constructors = type.getConstructSignatures().filter(ctor => !excludedNode(ctor.getDeclaration() ?? node));
|
|
179
|
+
if (constructors.length) {
|
|
180
|
+
base.constructorSignature = constructors.map(ctor => `new ${name}${checker.signatureToString(ctor, node, format, ts.SignatureKind.Call)}`).join('\n');
|
|
181
|
+
for (const ctor of constructors) {
|
|
182
|
+
for (const parameter of ctor.getParameters()) {
|
|
183
|
+
const decl = declaration(parameter);
|
|
184
|
+
typeText(checker.getTypeOfSymbolAtLocation(parameter, decl ?? node), decl ?? node);
|
|
185
|
+
if (decl?.initializer) assertPrintable(decl.initializer);
|
|
186
|
+
}
|
|
187
|
+
for (const parameter of ctor.getDeclaration()?.parameters ?? []) collectReferences(parameter.type, ref);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
} else if (ts.isTypeAliasDeclaration(node)) {
|
|
192
|
+
base.kind = 'type';
|
|
193
|
+
const generics = node.typeParameters?.map(parameter => snippet(parameter)).join(', ');
|
|
194
|
+
assertPublicStructure(node.type);
|
|
195
|
+
const publicType = node.type;
|
|
196
|
+
base.signatures = [`type ${name}${generics ? `<${generics}>` : ''} = ${snippet(publicType)};`];
|
|
197
|
+
collectReferences(publicType, ref);
|
|
198
|
+
} else if (ts.isEnumDeclaration(node)) {
|
|
199
|
+
base.kind = 'enum'; base.signatures = [`enum ${name}`];
|
|
200
|
+
} else if (ts.isVariableDeclaration(node) || ts.isPropertyDeclaration(node) || ts.isPropertySignature(node) || ts.isParameter(node) || ts.isGetAccessorDeclaration(node) || ts.isEnumMember(node)) {
|
|
201
|
+
base.kind = member ? 'property' : 'constant';
|
|
202
|
+
base.annotation = typeText(type, node);
|
|
203
|
+
const readonly = ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Readonly || ts.isGetAccessorDeclaration(node) && !symbol.declarations?.some(ts.isSetAccessorDeclaration);
|
|
204
|
+
base.signatures = [`${readonly ? 'readonly ' : ''}${name}${symbol.flags & ts.SymbolFlags.Optional ? '?' : ''}: ${base.annotation}`];
|
|
205
|
+
if (ts.isEnumMember(node)) base.kind = 'constant';
|
|
206
|
+
if (member && !ts.isEnumMember(node)) base.required = !(symbol.flags & ts.SymbolFlags.Optional);
|
|
207
|
+
if (node.initializer) base.default = snippet(node.initializer);
|
|
208
|
+
collectReferences(node.type, ref);
|
|
209
|
+
} else throw new Error(`Unsupported exported declaration ${name}: ${ts.SyntaxKind[node.kind]}`);
|
|
210
|
+
const examples = tags(symbol).filter(tag => tag.name === 'example').map(tag => ({ code: text(tag.text).replace(/^```(?:ts|typescript|js|javascript)?\s*\n([\s\S]*?)\n```\s*$/, '$1') }));
|
|
211
|
+
if (examples.length) base.examples = examples;
|
|
212
|
+
symbols.push(base);
|
|
213
|
+
const owns = decl => decls.some(owner => { for (let current = decl; current; current = current.parent) if (current === owner) return true; return false; });
|
|
214
|
+
if (['class', 'interface', 'type'].includes(base.kind) && !(declared.flags & ts.TypeFlags.Union)) {
|
|
215
|
+
for (const property of checker.getPropertiesOfType(declared).sort((a, b) => order(a.name, b.name))) {
|
|
216
|
+
if (property.declarations?.some(owns)) { const memberNode = declaration(property); const name = ts.isComputedPropertyName(memberNode.name) ? snippet(memberNode.name) : property.name; append(property, `${id}.${encodeURIComponent(name)}`, name, id, true); }
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (base.kind === 'class') for (const property of checker.getPropertiesOfType(type).sort((a, b) => order(a.name, b.name))) {
|
|
220
|
+
if (property.declarations?.some(owns)) { const memberNode = declaration(property); const name = ts.isComputedPropertyName(memberNode.name) ? snippet(memberNode.name) : property.name; const before = symbols.length; append(property, `${id}.static.${encodeURIComponent(name)}`, name, id, true); const added = symbols[before]; if (added?.signatures) added.signatures = added.signatures.map(signature => `static ${signature}`); }
|
|
221
|
+
}
|
|
222
|
+
if (base.kind === 'enum') for (const property of checker.getExportsOfModule(symbol)) if (ts.isEnumMember(declaration(property))) append(property, `${id}.${property.name}`, property.name, id, true);
|
|
223
|
+
};
|
|
224
|
+
for (const exported of exports) if (visible(exported)) append(canonical(exported), `${moduleName}.${exported.name}`, exported.name, moduleName);
|
|
225
|
+
const known = new Set(symbols.map(symbol => symbol.id));
|
|
226
|
+
for (const symbol of symbols) {
|
|
227
|
+
const mapped = Object.fromEntries([...(references.get(symbol.id) ?? [])].filter(([, target]) => known.has(target)));
|
|
228
|
+
if (Object.keys(mapped).length) symbol.typeReferences = mapped;
|
|
229
|
+
}
|
|
230
|
+
const normalize = value => Array.isArray(value) ? value.map(normalize) : value && typeof value === 'object' ? Object.fromEntries(Object.entries(value).sort(([a], [b]) => order(a, b)).map(([key, item]) => [key, normalize(item)])) : typeof value === 'string' && path.isAbsolute(value) ? (inside(root, value) ? '$ROOT/' + path.relative(root, value).split(path.sep).join('/') : '$EXTERNAL/' + path.basename(value)) : value;
|
|
231
|
+
const digest = createHash('sha256').update(`typescript:${ts.version}\nentry:${path.relative(root, entry)}\nmodule:${moduleName}\noptions:${JSON.stringify(normalize(program.getCompilerOptions()))}\n`);
|
|
232
|
+
const evidence = files.map(({ file, path: filePath }) => [inside(root, filePath) ? path.relative(root, filePath).split(path.sep).join('/') : '$EXTERNAL/' + path.basename(filePath), file.text]).sort((a, b) => order(JSON.stringify(a), JSON.stringify(b)));
|
|
233
|
+
for (const file of evidence) digest.update(JSON.stringify(file));
|
|
234
|
+
return validateCodeReference({ schemaVersion: 1, kind: 'shoalrun-code-reference', programmingLanguage: 'typescript', producer: { name: 'shoalrun-typescript', version: '1.0.0', extractorVersion: ts.version }, sourceDigest: digest.digest('hex'), symbols });
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** Never overwrite a compiler input, including through an output symlink or parent. */
|
|
238
|
+
export function writeTypeScriptSnapshot(output, snapshot, inputs) {
|
|
239
|
+
const resolved = fs.existsSync(output) ? fs.realpathSync(output) : path.join(fs.realpathSync(path.dirname(output)), path.basename(output));
|
|
240
|
+
if (inputs.some(file => fs.realpathSync(file) === resolved)) throw new Error('Snapshot output cannot overwrite a compiler input');
|
|
241
|
+
const temporary = path.join(path.dirname(output), `.shoalrun-reference-${randomUUID()}.json`);
|
|
242
|
+
try { fs.writeFileSync(temporary, JSON.stringify(snapshot, null, 2) + '\n', { encoding: 'utf8', flag: 'wx' }); fs.renameSync(temporary, output); }
|
|
243
|
+
finally { fs.rmSync(temporary, { force: true }); }
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
247
|
+
try {
|
|
248
|
+
const args = {}; const allowed = ['--project', '--entry', '--module', '--root', '--out'];
|
|
249
|
+
for (let i = 2; i < process.argv.length; i += 2) {
|
|
250
|
+
const key = process.argv[i], value = process.argv[i + 1];
|
|
251
|
+
if (!allowed.includes(key) || args[key] || !value || value.startsWith('--')) throw new Error('Usage: node shoalrun-reference.mjs --project tsconfig.json --entry src/index.ts --module sdk --out reference.json [--root DIRECTORY]');
|
|
252
|
+
args[key] = value;
|
|
253
|
+
}
|
|
254
|
+
for (const key of ['--project', '--entry', '--module', '--out']) if (!args[key]) throw new Error(`Missing ${key}`);
|
|
255
|
+
let inputs;
|
|
256
|
+
const snapshot = convertTypeScript({ onInputs: value => { inputs = value; }, project: path.resolve(args['--project']), entry: args['--entry'], moduleName: args['--module'], root: args['--root'] && path.resolve(args['--root']) });
|
|
257
|
+
writeTypeScriptSnapshot(path.resolve(args['--out']), snapshot, inputs);
|
|
258
|
+
console.log(JSON.stringify({ status: 'ok', symbols: snapshot.symbols.length, programmingLanguage: snapshot.programmingLanguage }));
|
|
259
|
+
} catch (error) { console.error(error.code === 'MODULE_NOT_FOUND' ? 'Install typescript@5.9.3 in the project before running this optional adapter.' : error.message); process.exitCode = 1; }
|
|
260
|
+
}
|
|
@@ -28,13 +28,17 @@ Full-page token counts use cl100k_base. Navigation section ID: project-updates.
|
|
|
28
28
|
|
|
29
29
|
- [Styled PDFs and custom code languages](https://www.shoalrun.com/changelog/pdf-custom-languages.md) — ID: change.pdf-custom-languages. changelog-entry; 487 tokens. Print branded pages, export a complete PDF manual, and highlight your own code language.
|
|
30
30
|
|
|
31
|
+
- [Shoalrun 1.0 — SDK references and smoother font loading](https://www.shoalrun.com/changelog/code-api-references.md) — ID: change.code-api-references. changelog-entry; 538 tokens. Generate code API references from source and docstrings, choose how readers browse them, and load custom fonts earlier.
|
|
32
|
+
|
|
33
|
+
- [Build selection and TypeScript references](https://www.shoalrun.com/changelog/facet-typescript.md) — ID: change.facet-typescript. changelog-entry; 694 tokens. Select additional sections for each build, generate TypeScript SDK references, and improve search queries written as questions.
|
|
34
|
+
|
|
31
35
|
- [Authoring snapshot previews and review reports](https://www.shoalrun.com/changelog/authoring-preview.md) — ID: change.authoring-preview. changelog-entry; 554 tokens. Snapshot previews with coverage and freshness reports.
|
|
32
36
|
|
|
33
37
|
- [Agent authoring, search, and documentation answers](https://www.shoalrun.com/changelog/authoring-search.md) — ID: change.authoring-search. changelog-entry; 468 tokens. Reviewed agent drafts, search improvements, and answer context.
|
|
34
38
|
|
|
35
39
|
- [Working-tree authoring tools](https://www.shoalrun.com/changelog/authoring-tools.md) — ID: change.authoring-tools. changelog-entry; 384 tokens. Project discovery and captured working-tree validation.
|
|
36
40
|
|
|
37
|
-
- [Changelog](https://www.shoalrun.com/changelog.md) — ID: reference.changelog. reference;
|
|
41
|
+
- [Changelog](https://www.shoalrun.com/changelog.md) — ID: reference.changelog. reference; 1610 tokens. Compiler, CLI, and reader changes.
|
|
38
42
|
|
|
39
43
|
- [MCP hosting, analytics, and component improvements](https://www.shoalrun.com/changelog/2026-10-17-mcp-hosting.md) — ID: change.mcp-hosting. changelog-entry; 1147 tokens. MCP hosting, analytics, and shared component content.
|
|
40
44
|
|
|
@@ -48,4 +52,4 @@ Full-page token counts use cl100k_base. Navigation section ID: project-updates.
|
|
|
48
52
|
|
|
49
53
|
- [Non-goals](https://www.shoalrun.com/non-goals.md) — ID: guide.non-goals. explanation; 821 tokens. Scope limits for skill generation, agent orchestration, and reader-view authorization.
|
|
50
54
|
|
|
51
|
-
- [Project status](https://www.shoalrun.com/status.md) — ID: guide.status. reference;
|
|
55
|
+
- [Project status](https://www.shoalrun.com/status.md) — ID: guide.status. reference; 1990 tokens. Current capabilities, planned features, and known limits.
|
package/agent-docs/SNAPSHOT.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"sourceRepository": "https://github.com/shoalrun/docs",
|
|
4
|
-
"sourceCommit": "
|
|
5
|
-
"siteBuildId": "
|
|
6
|
-
"manifestDigest": "
|
|
7
|
-
"indexDigest": "
|
|
8
|
-
"packageIntegrity": "sha512-
|
|
4
|
+
"sourceCommit": "6198b4fcbc880b56999926ea74c69cd3d122a86a",
|
|
5
|
+
"siteBuildId": "ead78e4f9fa835d4189aade2c8d34a51b43400308304d415029ae2320db07da4",
|
|
6
|
+
"manifestDigest": "16d07fdeb5b061d6838131d603e76c475f85fcde040d5625d65516fdc19be7f8",
|
|
7
|
+
"indexDigest": "d23c76564004ef45e9523730cea63c4ed0e96d6889c2b17a49d207b1063bbb3e",
|
|
8
|
+
"packageIntegrity": "sha512-oZG3QJeXiQYa/b0Vf6j13lFj/grebtzaeLsRkL+QbLqxGjcmnR/Gs5q/nQDai358sJcDh0XUUAcMFarbPLooHQ=="
|
|
9
9
|
}
|
package/agent-docs/about.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: guide.about
|
|
3
3
|
title: About Shoalrun
|
|
4
|
-
summary: Learn what Shoalrun
|
|
4
|
+
summary: Learn what Shoalrun does and where the project is heading.
|
|
5
5
|
type: overview
|
|
6
6
|
area: project
|
|
7
7
|
subarea: project-overview
|
|
@@ -12,7 +12,7 @@ canonical: /about
|
|
|
12
12
|
|
|
13
13
|
> Documentation index: [llms.min.txt](https://www.shoalrun.com/llms.min.txt) · Document manifest: [documents.json](https://www.shoalrun.com/documents.json)
|
|
14
14
|
|
|
15
|
-
**Updated: 2026-11-
|
|
15
|
+
**Updated: 2026-11-07.**
|
|
16
16
|
|
|
17
17
|
I'm CT Smith, and I'm building Shoalrun cause there's no such thing as a perfect doc tool. I have opinions, undirected rage, and curiosity about doc-building tools. I built my first documentation generator back in 2015. It was based on Jekyll and relied heavily (probably too heavily) on general templating and... you guessed it... *page metadata*.
|
|
18
18
|
|
|
@@ -42,7 +42,7 @@ API content follows the same approach. Local OpenAPI files can supply reference
|
|
|
42
42
|
|
|
43
43
|
I'm building Shoalrun for tinkerers like me, who will never be fully satisfied with a mass market docs tool. Docs are never one-size-fits-all, on any level.
|
|
44
44
|
|
|
45
|
-
You can try the
|
|
45
|
+
You can try the CLI from npm: [Getting started](https://www.shoalrun.com/start.md) walks through installation and your first page. The [project status](https://www.shoalrun.com/status.md) describes what works and what still needs work.
|
|
46
46
|
|
|
47
47
|
yee haw forever,
|
|
48
48
|
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: reference.code-api-references
|
|
3
|
+
title: Code API reference settings
|
|
4
|
+
summary: Catalog configuration, converter snapshots, Python extraction limits,
|
|
5
|
+
and generated reference behavior.
|
|
6
|
+
type: reference
|
|
7
|
+
area: api
|
|
8
|
+
subarea: api-generation
|
|
9
|
+
canonical: /api-docs/code-reference-settings
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Code API reference settings
|
|
13
|
+
|
|
14
|
+
> Documentation index: [llms.min.txt](https://www.shoalrun.com/llms.min.txt) · Document manifest: [documents.json](https://www.shoalrun.com/documents.json)
|
|
15
|
+
|
|
16
|
+
Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigation/docs-50f26fe22670.txt) (ID: docs). [All sections and pages](https://www.shoalrun.com/llms.min.txt)
|
|
17
|
+
|
|
18
|
+
Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Document an API > Code API reference settings
|
|
19
|
+
|
|
20
|
+
**Updated: 2026-11-07.**
|
|
21
|
+
|
|
22
|
+
**Available since: 1.0.0.**
|
|
23
|
+
|
|
24
|
+
`codeReferences` maps a catalog ID to a local converter snapshot and presentation settings. Start with [Generate code API references](https://www.shoalrun.com/api-docs/code-references.md) for a complete Python workflow, or use [TypeScript extraction](https://www.shoalrun.com/api-docs/typescript-references.md) for a public source or declaration entry point. This setting is separate from `apis`, which registers OpenAPI sources.
|
|
25
|
+
|
|
26
|
+
## Catalog settings
|
|
27
|
+
|
|
28
|
+
Use these fields inside `codeReferences.<catalog-id>`. Catalog IDs use lowercase letters, numbers, and dashes, starting with a letter.
|
|
29
|
+
|
|
30
|
+
| Field | Meaning |
|
|
31
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
32
|
+
| `source` | `{ kind: file, path: ./reference.json }` for the default publication. Paths resolve relative to the declaring config file and must remain inside the project root. |
|
|
33
|
+
| `publications` | Explicit `{ product?, channel, version, language?, source }` bindings. Declare this or `source`, not both. |
|
|
34
|
+
| `layout` | `symbols` (default), `classes`, or `modules`. Changes inline grouping while retaining individual symbol pages. |
|
|
35
|
+
| `pathPrefix` | Prefix for generated symbol slugs; defaults to `/reference/code`. Explicit symbol slugs take precedence. |
|
|
36
|
+
| `include`, `exclude` | Exact symbol IDs to select. Every listed ID must exist. Private symbols and descendants of private symbols aren't published. |
|
|
37
|
+
| `symbols` | Per-symbol `{ documentId?, slug?, metadata? }` overrides. |
|
|
38
|
+
| `metadata` | Ordinary page metadata, including taxonomy, reader filters, `shared`, and feature requirements. Project defaults and enforced metadata still apply. |
|
|
39
|
+
| `sourceLink.baseUrl` | Optional HTTPS repository directory URL. Must omit credentials, query strings, and fragments. |
|
|
40
|
+
| `singlePage` | An optional object defining a complete reference page. Omit it or use `false` to disable it. |
|
|
41
|
+
|
|
42
|
+
Generated pages have `type: code-reference`. Default document IDs combine the catalog and symbol IDs; IDs outside the simple identifier character set use a deterministic digest. Default slugs combine the path prefix, normalized symbol ID, and a digest. Use explicit overrides when a public URL or content-delivery identity must survive a symbol rename.
|
|
43
|
+
|
|
44
|
+
## Complete reference page
|
|
45
|
+
|
|
46
|
+
The `singlePage` object accepts these fields. No complete page is emitted when its selection contains no eligible symbols.
|
|
47
|
+
|
|
48
|
+
| Field | Default or behavior |
|
|
49
|
+
| ------------ | ----------------------------------------------------- |
|
|
50
|
+
| `documentId` | `reference.<catalog-id>.complete` |
|
|
51
|
+
| `slug` | `<pathPrefix>/all` |
|
|
52
|
+
| `title` | `Complete API reference` |
|
|
53
|
+
| `summary` | `Classes, functions, and fields in this publication.` |
|
|
54
|
+
| `metadata` | Overrides the catalog's metadata for this page. |
|
|
55
|
+
|
|
56
|
+
Grouped and complete pages use outline depth two unless frontmatter supplies another depth. Each embedded symbol gets a section heading. Links to embedded symbols target that section; ordinary symbol URLs remain valid for external links and content delivery.
|
|
57
|
+
|
|
58
|
+
## Publication sources
|
|
59
|
+
|
|
60
|
+
Bind a snapshot to each interface release. This example assumes the `sdk` product and versions already exist in `publications`:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
codeReferences:
|
|
64
|
+
sdk:
|
|
65
|
+
publications:
|
|
66
|
+
- product: sdk
|
|
67
|
+
channel: production
|
|
68
|
+
version: v1
|
|
69
|
+
language: en
|
|
70
|
+
source: { kind: file, path: ./reference/v1.json }
|
|
71
|
+
- product: sdk
|
|
72
|
+
channel: production
|
|
73
|
+
version: v2
|
|
74
|
+
language: en
|
|
75
|
+
source: { kind: file, path: ./reference/v2.json }
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Links, member tables, inline details, and complete references stay within the selected catalog and publication. A full snapshot isn't automatically published as a downloadable asset.
|
|
79
|
+
|
|
80
|
+
## Metadata and selection
|
|
81
|
+
|
|
82
|
+
A symbol's explicit `shared` or `requires` classification replaces the catalog's classification. Requirements are evaluated separately for each symbol; a parent's feature requirements don't automatically apply to its children. Strictly classified projects need an explicit classification for eligible public symbols and the complete page. Inherited frontmatter defaults don't satisfy that source-classification requirement.
|
|
83
|
+
|
|
84
|
+
Visibility, feature grants, access policy, and build reader-filter selection apply before references are combined. An excluded type is left as plain text rather than linked to unavailable content. Reader views remain browsing controls; build/profile selection determines which content is published.
|
|
85
|
+
|
|
86
|
+
## Converter snapshot
|
|
87
|
+
|
|
88
|
+
A converter writes JSON with `schemaVersion: 1`, `kind: shoalrun-code-reference`, a `programmingLanguage`, producer identity, and a nonempty `symbols` array. The package ships `schemas/code-reference.schema.json`; `shoalrun references check <snapshot.json>` also checks unique IDs, referenced targets, and acyclic parents.
|
|
89
|
+
|
|
90
|
+
This Kotlin-shaped example illustrates the shared contract. It doesn't imply a bundled Kotlin extractor:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"schemaVersion": 1,
|
|
95
|
+
"kind": "shoalrun-code-reference",
|
|
96
|
+
"programmingLanguage": "kotlin",
|
|
97
|
+
"producer": { "name": "example-converter", "version": "1.0.0" },
|
|
98
|
+
"symbols": [{
|
|
99
|
+
"id": "example.greet",
|
|
100
|
+
"name": "greet",
|
|
101
|
+
"kind": "function",
|
|
102
|
+
"summary": "Create a greeting.",
|
|
103
|
+
"signatures": ["fun greet(name: String): String"],
|
|
104
|
+
"parameters": [{ "name": "name", "type": "String", "description": "Reader name." }],
|
|
105
|
+
"returns": { "type": "String", "description": "A greeting ready to display." }
|
|
106
|
+
}]
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Run a converter explicitly in your workflow, validate its output, then build. Shoalrun doesn't load executable converter plugins during compilation. JavaScript tools can import `validateCodeReference` from `@shoalrun/cli/references`.
|
|
111
|
+
|
|
112
|
+
## Symbol fields
|
|
113
|
+
|
|
114
|
+
Each symbol needs `id`, `name`, and `kind`. Supported kinds are `module`, `namespace`, `class`, `interface`, `enum`, `type`, `function`, `method`, `constructor`, `property`, `attribute`, and `constant`.
|
|
115
|
+
|
|
116
|
+
Use these optional fields to describe the interface without supplying executable markup or an arbitrary syntax tree:
|
|
117
|
+
|
|
118
|
+
| Field | Meaning |
|
|
119
|
+
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
120
|
+
| `parent` | ID of an existing parent symbol. Cycles aren't allowed. |
|
|
121
|
+
| `visibility` | `public` by default, or `private`. |
|
|
122
|
+
| `summary`, `description` | Short page summary and inert Markdown description. |
|
|
123
|
+
| `signatures` | Array of declaration strings, including overloads. |
|
|
124
|
+
| `parameters` | Array of `{ name, type?, description?, default? }`. |
|
|
125
|
+
| `returns`, `yields` | `{ type?, description? }`. |
|
|
126
|
+
| `raises` | Array of `{ name, type?, description?, default? }`. |
|
|
127
|
+
| `examples` | Array of `{ title?, code }`. Examples aren't executed. |
|
|
128
|
+
| `annotation`, `required`, `default` | Field type, whether a value must be supplied, and its default source expression. Unknown requirements stay unmarked. Nullable doesn't mean optional. |
|
|
129
|
+
| `bases`, `constructorSignature` | Base-type strings and a constructor declaration for a class. |
|
|
130
|
+
| `typeReferences` | Mapping from exact type text to an existing symbol ID. Only eligible targets become links; Shoalrun doesn't guess short-name matches. |
|
|
131
|
+
| `seeAlso` | Existing symbol IDs for related reference links. |
|
|
132
|
+
| `source` | `{ path, line? }` with a relative provenance path and optional positive line number. |
|
|
133
|
+
|
|
134
|
+
The snapshot can also include a SHA-256 `sourceDigest`. Unknown fields are rejected. Snapshots are limited to 10,000 symbols and 32 MiB; individual text fields have schema limits.
|
|
135
|
+
|
|
136
|
+
## Descriptions, type links, and source links
|
|
137
|
+
|
|
138
|
+
Descriptions don't run MDX or expand project directives. Raw HTML is stripped. Use `[Record](symbol:example.Record)` for a symbol link within the same catalog and publication. External links support HTTPS and mailto; relative links and images aren't supported.
|
|
139
|
+
|
|
140
|
+
Explicit type references create links in parameter, return, yield, base-class, exception, and field information. Signatures remain copyable code. The Python adapter resolves supported local annotation targets statically and keeps unknown or external targets unlinked.
|
|
141
|
+
|
|
142
|
+
Set `sourceLink.baseUrl` to a repository URL ending at the directory that contains the relative source paths. Include an immutable commit or release in that URL. A source path `sdk/models.py` with line `12` is appended as `/sdk/models.py#L12`. Shoalrun doesn't fetch or publish source files. Without this setting, source links are omitted.
|
|
143
|
+
|
|
144
|
+
## Python adapter limits
|
|
145
|
+
|
|
146
|
+
The packaged adapter requires Python 3.11 or newer and `griffelib==2.4.1`. Its requirements file pins the dependency and archive hash. The source root must contain the requested local module and can't contain symlinks. Extraction rejects roots exceeding 10,000 Python source files or 32 MiB.
|
|
147
|
+
|
|
148
|
+
Extraction doesn't enable runtime inspection, extensions, external discovery, or alias resolution. The adapter skips aliases and underscore-prefixed members except constructors. It doesn't expand inherited members or execute decorators. Local constructors and supported simple dataclass constructors supply class signatures; unsupported cases stay unspecified. Factory defaults appear as `<factory>` in constructor signatures and retain the source expression in field details.
|
|
149
|
+
|
|
150
|
+
## HTML, Markdown, and agents
|
|
151
|
+
|
|
152
|
+
HTML shows symbol context, declarations, member tables, and detailed sections. The tables use local horizontal scrolling instead of shrinking the text on small screens; keyboard readers can focus the scroll region. Copy controls need JavaScript. Grouped pages and complete references keep their content readable without those controls.
|
|
153
|
+
|
|
154
|
+
Markdown and content exports retain declarations, descriptions, field facts, examples, and links with their resource identity and publication scope. They omit the site's styling and Copy buttons. Agents can read generated pages through discovery tools or content delivery without running the extractor. A caller can select the complete page for export or PDF preparation by its document ID; enabling that page doesn't prebuild PDFs.
|
|
155
|
+
|
|
156
|
+
## Related reading
|
|
157
|
+
|
|
158
|
+
### Next steps
|
|
159
|
+
|
|
160
|
+
- [Generate code API references](https://www.shoalrun.com/api-docs/code-references.md) — Extract a Python snapshot and preview both grouped and complete SDK references.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: reference.code-api-references
|
|
3
|
+
title: Code API reference settings
|
|
4
|
+
summary: Catalog configuration, converter snapshots, Python extraction limits,
|
|
5
|
+
and generated reference behavior.
|
|
6
|
+
type: reference
|
|
7
|
+
area: api
|
|
8
|
+
subarea: api-generation
|
|
9
|
+
canonical: /api-docs/code-reference-settings
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Code API reference settings
|
|
13
|
+
|
|
14
|
+
> Documentation index: [llms.min.txt](https://www.shoalrun.com/llms.min.txt) · Document manifest: [documents.json](https://www.shoalrun.com/documents.json)
|
|
15
|
+
|
|
16
|
+
Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigation/docs-50f26fe22670.txt) (ID: docs). [All sections and pages](https://www.shoalrun.com/llms.min.txt)
|
|
17
|
+
|
|
18
|
+
Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Document an API > Code API reference settings
|
|
19
|
+
|
|
20
|
+
**Updated: 2026-11-07.**
|
|
21
|
+
|
|
22
|
+
**Available since: 1.0.0.**
|
|
23
|
+
|
|
24
|
+
Parent page: [Full Markdown page](/api-docs/code-reference-settings.md)
|
|
25
|
+
|
|
26
|
+
**Page reading path** — these links apply to the full page.
|
|
27
|
+
|
|
28
|
+
**Next steps**
|
|
29
|
+
|
|
30
|
+
- [Generate code API references](https://www.shoalrun.com/api-docs/code-references.md) — Extract a Python snapshot and preview both grouped and complete SDK references.
|
|
31
|
+
|
|
32
|
+
`codeReferences` maps a catalog ID to a local converter snapshot and presentation settings. Start with [Generate code API references](https://www.shoalrun.com/api-docs/code-references.md) for a complete Python workflow, or use [TypeScript extraction](https://www.shoalrun.com/api-docs/typescript-references.md) for a public source or declaration entry point. This setting is separate from `apis`, which registers OpenAPI sources.
|
|
33
|
+
|
|
34
|
+
## Catalog settings
|
|
35
|
+
|
|
36
|
+
Use these fields inside `codeReferences.<catalog-id>`. Catalog IDs use lowercase letters, numbers, and dashes, starting with a letter.
|
|
37
|
+
|
|
38
|
+
| Field | Meaning |
|
|
39
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
40
|
+
| `source` | `{ kind: file, path: ./reference.json }` for the default publication. Paths resolve relative to the declaring config file and must remain inside the project root. |
|
|
41
|
+
| `publications` | Explicit `{ product?, channel, version, language?, source }` bindings. Declare this or `source`, not both. |
|
|
42
|
+
| `layout` | `symbols` (default), `classes`, or `modules`. Changes inline grouping while retaining individual symbol pages. |
|
|
43
|
+
| `pathPrefix` | Prefix for generated symbol slugs; defaults to `/reference/code`. Explicit symbol slugs take precedence. |
|
|
44
|
+
| `include`, `exclude` | Exact symbol IDs to select. Every listed ID must exist. Private symbols and descendants of private symbols aren't published. |
|
|
45
|
+
| `symbols` | Per-symbol `{ documentId?, slug?, metadata? }` overrides. |
|
|
46
|
+
| `metadata` | Ordinary page metadata, including taxonomy, reader filters, `shared`, and feature requirements. Project defaults and enforced metadata still apply. |
|
|
47
|
+
| `sourceLink.baseUrl` | Optional HTTPS repository directory URL. Must omit credentials, query strings, and fragments. |
|
|
48
|
+
| `singlePage` | An optional object defining a complete reference page. Omit it or use `false` to disable it. |
|
|
49
|
+
|
|
50
|
+
Generated pages have `type: code-reference`. Default document IDs combine the catalog and symbol IDs; IDs outside the simple identifier character set use a deterministic digest. Default slugs combine the path prefix, normalized symbol ID, and a digest. Use explicit overrides when a public URL or content-delivery identity must survive a symbol rename.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: reference.code-api-references
|
|
3
|
+
title: Code API reference settings
|
|
4
|
+
summary: Catalog configuration, converter snapshots, Python extraction limits,
|
|
5
|
+
and generated reference behavior.
|
|
6
|
+
type: reference
|
|
7
|
+
area: api
|
|
8
|
+
subarea: api-generation
|
|
9
|
+
canonical: /api-docs/code-reference-settings
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Code API reference settings
|
|
13
|
+
|
|
14
|
+
> Documentation index: [llms.min.txt](https://www.shoalrun.com/llms.min.txt) · Document manifest: [documents.json](https://www.shoalrun.com/documents.json)
|
|
15
|
+
|
|
16
|
+
Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigation/docs-50f26fe22670.txt) (ID: docs). [All sections and pages](https://www.shoalrun.com/llms.min.txt)
|
|
17
|
+
|
|
18
|
+
Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Document an API > Code API reference settings
|
|
19
|
+
|
|
20
|
+
**Updated: 2026-11-07.**
|
|
21
|
+
|
|
22
|
+
**Available since: 1.0.0.**
|
|
23
|
+
|
|
24
|
+
Parent page: [Full Markdown page](/api-docs/code-reference-settings.md)
|
|
25
|
+
|
|
26
|
+
**Page reading path** — these links apply to the full page.
|
|
27
|
+
|
|
28
|
+
**Next steps**
|
|
29
|
+
|
|
30
|
+
- [Generate code API references](https://www.shoalrun.com/api-docs/code-references.md) — Extract a Python snapshot and preview both grouped and complete SDK references.
|
|
31
|
+
|
|
32
|
+
`codeReferences` maps a catalog ID to a local converter snapshot and presentation settings. Start with [Generate code API references](https://www.shoalrun.com/api-docs/code-references.md) for a complete Python workflow, or use [TypeScript extraction](https://www.shoalrun.com/api-docs/typescript-references.md) for a public source or declaration entry point. This setting is separate from `apis`, which registers OpenAPI sources.
|
|
33
|
+
|
|
34
|
+
## Complete reference page
|
|
35
|
+
|
|
36
|
+
The `singlePage` object accepts these fields. No complete page is emitted when its selection contains no eligible symbols.
|
|
37
|
+
|
|
38
|
+
| Field | Default or behavior |
|
|
39
|
+
| ------------ | ----------------------------------------------------- |
|
|
40
|
+
| `documentId` | `reference.<catalog-id>.complete` |
|
|
41
|
+
| `slug` | `<pathPrefix>/all` |
|
|
42
|
+
| `title` | `Complete API reference` |
|
|
43
|
+
| `summary` | `Classes, functions, and fields in this publication.` |
|
|
44
|
+
| `metadata` | Overrides the catalog's metadata for this page. |
|
|
45
|
+
|
|
46
|
+
Grouped and complete pages use outline depth two unless frontmatter supplies another depth. Each embedded symbol gets a section heading. Links to embedded symbols target that section; ordinary symbol URLs remain valid for external links and content delivery.
|