From 67956697d61ddfe42bad83a9b3402911c7323bf5 Mon Sep 17 00:00:00 2001 From: JohnnyT Date: Mon, 5 Oct 2026 04:34:28 -0600 Subject: [PATCH 1/2] Builds an API reference with typedoc Adds typedoc as an exact-pinned dev dependency and a typedoc.json naming the two public entry points (the main entry and ./tagged), with the README as the index page and warnings treated as errors. The output goes to docs/api/, which is git-ignored: the reference is built locally by `pnpm run docs`, and the full gate runs that script as its last stage, a build check only. The existing gate stages are unchanged. HostContext is referenced by ExecuteResult but not exported, so the config lists it as intentionally not exported rather than changing any source file. Adds the docs manifest the documentation tools read, at .claude/diataxis.md, and one README line naming the docs command. Refs: pts-uhhm --- .claude/diataxis.md | 41 ++++++++++ .gitignore | 4 + README.md | 2 + package.json | 4 +- pnpm-lock.yaml | 184 +++++++++++++++++++++++++++++++++++++++++--- typedoc.json | 9 +++ 6 files changed, 231 insertions(+), 13 deletions(-) create mode 100644 .claude/diataxis.md create mode 100644 typedoc.json diff --git a/.claude/diataxis.md b/.claude/diataxis.md new file mode 100644 index 0000000..e880b76 --- /dev/null +++ b/.claude/diataxis.md @@ -0,0 +1,41 @@ +--- +# The docs manifest the documentation tools read. Generated from the family's manifest +# table: change a key there and regenerate. The two prose lines below may be sharpened. +product: "@riddler/predicator" +family: statifier +audience: "TypeScript developers evaluating rules in a browser, Node or React Native" +tone: "plain, second person, no marketing" +terminology: + use: + - execution + - chart + - document + - revision + avoid: + - "run (noun)" + - workflow instance +example_world: library-loan +docs_root: docs +quadrants: + tutorials: docs/tutorials + how_to: docs/guides + reference: docs/reference + explanation: docs/explanation +readme: README.md +reference_generator: typedoc +publish: site-later +contributor_paths: + - docs/adr + - docs/plans + - docs/spikes + - docs/research + - docs/design + - docs/measurements + - CLAUDE.md +executed_snippets: + - test/readme.test.ts +readme_max_lines: 1200 +--- + +The same predicate language in TypeScript, corpus-identical to the Elixir evaluator. +Examples are written in the library loan: a copy of a book lent to a patron, due, renewed, returned or lost. diff --git a/.gitignore b/.gitignore index 02ad99b..70c5feb 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,10 @@ dist/ coverage/ reports/ +# The generated API reference, built by `pnpm run docs` (typedoc.json). It is +# built locally and checked by the gate, and never committed. +/docs/api/ + # Temporary files, for example, from tests. /tmp/ diff --git a/README.md b/README.md index bb890e9..6b637c0 100644 --- a/README.md +++ b/README.md @@ -1060,6 +1060,8 @@ and is mirrored here in a later release. The records under `docs/adr/` are what this package decided for itself: what kind of thing it is, the value domain and the host boundary, the conformance apparatus, and the compiler surface. +`mise exec -- pnpm run docs` builds the API reference locally, into `docs/api/`. + ## Development ```bash diff --git a/package.json b/package.json index 7190ca5..8bf551e 100644 --- a/package.json +++ b/package.json @@ -49,13 +49,14 @@ }, "scripts": { "prepack": "node scripts/publish-guard.mjs", - "gate": "node --version && pnpm run typecheck && pnpm run lint && pnpm run neutrality && vitest run --coverage && pnpm run corpus:check && pnpm run cites && pnpm run build && pnpm run identity && pnpm run resolution", + "gate": "node --version && pnpm run typecheck && pnpm run lint && pnpm run neutrality && vitest run --coverage && pnpm run corpus:check && pnpm run cites && pnpm run build && pnpm run identity && pnpm run resolution && pnpm run docs", "gate:loop": "pnpm run typecheck && pnpm run lint && pnpm run test", "typecheck": "tsc --noEmit -p tsconfig.src.json && tsc --noEmit", "lint": "biome check .", "format": "biome format --write .", "test": "vitest run", "build": "tsup", + "docs": "typedoc", "neutrality": "node scripts/engine-neutrality.mjs", "corpus:check": "node scripts/corpus-check.mjs", "cites": "node scripts/record-cites.mjs", @@ -70,6 +71,7 @@ "@vitest/coverage-v8": "5.0.1", "tsup": "8.5.1", "tsx": "4.23.13", + "typedoc": "0.28.20", "typescript": "5.9.3", "vitest": "5.0.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c04a3f9..4b0e456 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -177,16 +177,19 @@ importers: version: 5.0.1(vitest@5.0.1) tsup: specifier: 8.5.1 - version: 8.5.1(postcss@8.5.28)(tsx@4.23.13)(typescript@5.9.3) + version: 8.5.1(postcss@8.5.28)(tsx@4.23.13)(typescript@5.9.3)(yaml@2.9.1) tsx: specifier: 4.23.13 version: 4.23.13 + typedoc: + specifier: 0.28.20 + version: 0.28.20(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vitest: specifier: 5.0.1 - version: 5.0.1(@types/node@24.13.4)(@vitest/coverage-v8@5.0.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)) + version: 5.0.1(@types/node@24.13.4)(@vitest/coverage-v8@5.0.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1)) packages: @@ -580,6 +583,9 @@ packages: cpu: [x64] os: [win32] + '@gerrit0/mini-shiki@3.23.0': + resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -840,6 +846,21 @@ packages: cpu: [x64] os: [win32] + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -849,9 +870,15 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + '@types/node@24.13.4': resolution: {integrity: sha512-YJ7EqCstVTzIr0fMr7qul/977en+pQHrfmuKIo6Zr9i75Be21dr3MovcfvGtyvi2HAUrRerWps5sMO9I7WaxDw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@vitest/coverage-v8@5.0.1': resolution: {integrity: sha512-FRC8ACiudC3dI6MTplzRSYWHDRnIv2IPfbzs4FdoJNsMal/35sWV8hwIfV8ZcqzSPy+uXHeMVONt9CEqtOU17w==} peerDependencies: @@ -891,6 +918,9 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -898,6 +928,14 @@ packages: ast-v8-to-istanbul@1.0.6: resolution: {integrity: sha512-fvpl29helSO2w/z7utIbrkNXILdrLwDwAMH2I/zPKlGf5244+gf+B4cyS1sANcrPY2h+hWCGSgC8N61s/+AF9A==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} + bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -940,6 +978,10 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} @@ -1065,10 +1107,16 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.2: + resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} + load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -1078,6 +1126,17 @@ packages: magicast@0.5.5: resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} + markdown-it@14.3.2: + resolution: {integrity: sha512-sHHjZ5fJKlgrG4qns2YwVcdNep35h5fERrfkD2YNsb9UFk0UIHarbiTaHKVMlPuWAoiilyK8Fv/jAm11slsY7Q==} + hasBin: true + + mdurl@2.1.0: + resolution: {integrity: sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -1139,6 +1198,10 @@ packages: resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -1236,11 +1299,21 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + typedoc@0.28.20: + resolution: {integrity: sha512-uSKqkh8Cr48vllnEy+jdaAgOeR6Y+QCBW7usgUsKj7gJEfR7stw9U/fE49LBnj2tPRKPY0c0EBJSWe9Appmplg==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} @@ -1336,6 +1409,11 @@ packages: engines: {node: '>=8'} hasBin: true + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + snapshots: '@babel/helper-string-parser@7.29.7': {} @@ -1544,6 +1622,14 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true + '@gerrit0/mini-shiki@3.23.0': + dependencies: + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.6.0 @@ -1685,6 +1771,26 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.63.3': optional: true + '@shikijs/engine-oniguruma@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + + '@shikijs/themes@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + + '@shikijs/types@3.23.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.0.2': {} + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -1694,10 +1800,16 @@ snapshots: '@types/estree@1.0.9': {} + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + '@types/node@24.13.4': dependencies: undici-types: 7.18.2 + '@types/unist@3.0.3': {} + '@vitest/coverage-v8@5.0.1(vitest@5.0.1)': dependencies: '@bcoe/v8-coverage': 1.0.2 @@ -1708,7 +1820,7 @@ snapshots: obug: 2.2.1 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 5.0.1(@types/node@24.13.4)(@vitest/coverage-v8@5.0.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)) + vitest: 5.0.1(@types/node@24.13.4)(@vitest/coverage-v8@5.0.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1)) '@vitest/istanbul-lib-coverage@1.0.1': {} @@ -1716,14 +1828,14 @@ snapshots: dependencies: '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/mocker@5.0.1(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13))': + '@vitest/mocker@5.0.1(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.1 estree-walker: 3.0.3 magic-string: 1.4.1 optionalDependencies: - vite: 8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13) + vite: 8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1) '@vitest/spy@5.0.1': {} @@ -1731,6 +1843,8 @@ snapshots: any-promise@1.3.0: {} + argparse@2.0.1: {} + assertion-error@2.0.1: {} ast-v8-to-istanbul@1.0.6: @@ -1739,6 +1853,12 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 + balanced-match@4.0.4: {} + + brace-expansion@5.0.12: + dependencies: + balanced-match: 4.0.4 + bundle-require@5.1.0(esbuild@0.27.7): dependencies: esbuild: 0.27.7 @@ -1764,6 +1884,8 @@ snapshots: detect-libc@2.1.2: {} + entities@4.5.0: {} + es-module-lexer@2.3.2: {} esbuild@0.27.7: @@ -1900,8 +2022,14 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.2: + dependencies: + uc.micro: 2.1.0 + load-tsconfig@0.2.5: {} + lunr@2.3.9: {} + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 @@ -1916,6 +2044,21 @@ snapshots: '@babel/types': 7.29.8 source-map-js: 1.2.1 + markdown-it@14.3.2: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.2 + mdurl: 2.1.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + mdurl@2.1.0: {} + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.12 + mlly@1.8.2: dependencies: acorn: 8.18.0 @@ -1951,12 +2094,13 @@ snapshots: mlly: 1.8.2 pathe: 2.0.3 - postcss-load-config@6.0.1(postcss@8.5.28)(tsx@4.23.13): + postcss-load-config@6.0.1(postcss@8.5.28)(tsx@4.23.13)(yaml@2.9.1): dependencies: lilconfig: 3.1.3 optionalDependencies: postcss: 8.5.28 tsx: 4.23.13 + yaml: 2.9.1 postcss@8.5.28: dependencies: @@ -1964,6 +2108,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + punycode.js@2.3.1: {} + readdirp@4.1.2: {} resolve-from@5.0.0: {} @@ -2066,7 +2212,7 @@ snapshots: ts-interface-checker@0.1.13: {} - tsup@8.5.1(postcss@8.5.28)(tsx@4.23.13)(typescript@5.9.3): + tsup@8.5.1(postcss@8.5.28)(tsx@4.23.13)(typescript@5.9.3)(yaml@2.9.1): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -2077,7 +2223,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.28)(tsx@4.23.13) + postcss-load-config: 6.0.1(postcss@8.5.28)(tsx@4.23.13)(yaml@2.9.1) resolve-from: 5.0.0 rollup: 4.63.3 source-map: 0.7.6 @@ -2100,13 +2246,24 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + typedoc@0.28.20(typescript@5.9.3): + dependencies: + '@gerrit0/mini-shiki': 3.23.0 + lunr: 2.3.9 + markdown-it: 14.3.2 + minimatch: 10.2.6 + typescript: 5.9.3 + yaml: 2.9.1 + typescript@5.9.3: {} + uc.micro@2.1.0: {} + ufo@1.6.4: {} undici-types@7.18.2: {} - vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13): + vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -2118,11 +2275,12 @@ snapshots: esbuild: 0.27.7 fsevents: 2.3.3 tsx: 4.23.13 + yaml: 2.9.1 - vitest@5.0.1(@types/node@24.13.4)(@vitest/coverage-v8@5.0.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)): + vitest@5.0.1(@types/node@24.13.4)(@vitest/coverage-v8@5.0.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.1(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)) + '@vitest/mocker': 5.0.1(vite@8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1)) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -2133,7 +2291,7 @@ snapshots: tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - vite: 8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13) + vite: 8.3.0(@types/node@24.13.4)(esbuild@0.27.7)(tsx@4.23.13)(yaml@2.9.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.13.4 @@ -2145,3 +2303,5 @@ snapshots: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + + yaml@2.9.1: {} diff --git a/typedoc.json b/typedoc.json new file mode 100644 index 0000000..d332855 --- /dev/null +++ b/typedoc.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": ["src/index.ts", "src/tagged.ts"], + "tsconfig": "tsconfig.src.json", + "readme": "README.md", + "out": "docs/api", + "treatWarningsAsErrors": true, + "intentionallyNotExported": ["HostContext"] +} From 0b93efbc47eaadff3e24a8524b73bb652398fff0 Mon Sep 17 00:00:00 2001 From: JohnnyT Date: Mon, 5 Oct 2026 04:46:11 -0600 Subject: [PATCH 2/2] Allows the brace-expansion integrity value The planning-reference scan reads the lockfile's base64 integrity value for brace-expansion 5.0.12 as prose, and a run inside it takes an id's shape. The allowlist covers that one exact string; no planning reference is involved. Allowed by a ruling of the operator, 2026-10-05. Refs: pts-uhhm --- .claude/firewall-allow.txt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .claude/firewall-allow.txt diff --git a/.claude/firewall-allow.txt b/.claude/firewall-allow.txt new file mode 100644 index 0000000..16f12ec --- /dev/null +++ b/.claude/firewall-allow.txt @@ -0,0 +1,9 @@ +# Exact strings the maintainers' planning-reference scan may pass. One exact +# string per line; a line starting with "# " is a comment. An entry allows a +# match only where the entry's text covers it on the same line. + +# pnpm-lock.yaml: the integrity value of brace-expansion 5.0.12. The scan +# reads base64 as prose and a run inside this hash takes an id's shape; no +# planning reference is involved. Allowed by a ruling of the operator, +# 2026-10-05. +sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==