Merge branch 'chore/knip-dead-exports' into release/v1.37.27

This commit is contained in:
Marc-André Bombeck committed 2026-08-23 19:38:45 +02:00
commit 31991924f0
32 files changed
+282 -571

No files matched your search

+14 -1
View File
@@ -32,7 +32,7 @@
// This is a review tool, not a second gate, for two reasons written down so
// the next reader does not have to rediscover them:
//
// 1. It reports 29 files today. Some are test-only by construction (the
// 1. It reports 21 files today. Some are test-only by construction (the
// guard helpers under `src/__tests__/helpers/`, the settings section
// harness) and some are deliberately unreachable from production
// (`src/lib/ai/mock-client.ts` is excluded structurally by the
@@ -130,6 +130,19 @@
// Scoped to a single file: an export used only inside its own module is not
// a finding. It is also why the default pass cannot answer the question the
// production pass answers — this setting is about exports, not reachability.
//
// It had a second effect nobody asked for, worth knowing because it means
// the gate under-reported for a year. Until knip 6.28.0 this setting also
// exempted every RE-EXPORT: a barrel line was unconditionally marked
// "referenced in its own file", so `export { x } from "./x"` that nothing
// imported was never reported. knip 6.28.0 (PR webpro-nl/knip#1895, fixing
// issue #1894 — `--fix` deleted the source export and left the barrel line
// behind, emitting code that did not compile) dropped the exemption. The
// upgrade from 6.16.1 took this repo from 0 findings to 206 on unchanged
// code; all but two were barrel lines with no importer, and they are gone
// now. The suppression was entirely gated on this setting — with it off,
// 6.16.1 and 6.32.2 agree exactly. So a green Dead-code gate on any knip
// before 6.28.0 said nothing about re-exports.
"ignoreExportsUsedInFile": true,
"ignoreIssues": {
"src/components/ui/**": ["exports", "types"],
+1 -1
View File
@@ -123,7 +123,7 @@
"@vitest/coverage-v8": "^4.1.5",
"eslint": "^9",
"eslint-config-next": "16.2.12",
"knip": "^6.16.1",
"knip": "^6.32.2",
"lefthook": "^2.1.10",
"pdf-parse": "^2.4.5",
"pdfjs-dist": "6.2.108",
+215 -218
View File
@@ -228,8 +228,8 @@ importers:
specifier: 16.2.12
version: 16.2.12(@typescript-eslint/parser@8.65.0(eslint@9.39.3(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.3(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
knip:
specifier: ^6.16.1
version: 6.16.1
specifier: ^6.32.2
version: 6.32.2
lefthook:
specifier: ^2.1.10
version: 2.1.10
@@ -580,6 +580,9 @@ packages:
'@emnapi/core@1.11.1':
resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
'@emnapi/core@1.11.2':
resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==}
'@emnapi/core@1.8.1':
resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
@@ -589,6 +592,9 @@ packages:
'@emnapi/runtime@1.11.1':
resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
'@emnapi/runtime@1.11.2':
resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==}
'@emnapi/runtime@1.8.1':
resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
@@ -1357,12 +1363,6 @@ packages:
'@napi-rs/wasm-runtime@0.2.12':
resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
'@napi-rs/wasm-runtime@1.1.4':
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
peerDependencies:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
'@napi-rs/wasm-runtime@1.2.2':
resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0}
@@ -1634,239 +1634,234 @@ packages:
cpu: [x64]
os: [win32]
'@oxc-parser/binding-android-arm-eabi@0.133.0':
resolution: {integrity: sha512-l/44caGse+VpnY9gx0yvvc5QnnG3yG1FO3KZgYvNL1GZrfK86zIwAOgGEVlxDyRymzrU/KHiblPFpevKOmJmUA==}
'@oxc-parser/binding-android-arm-eabi@0.143.0':
resolution: {integrity: sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
'@oxc-parser/binding-android-arm64@0.133.0':
resolution: {integrity: sha512-KUHmPMziLBp4u+zbrLdB7iWS7KshuZe+RAp7ELnY9SI9nNXBZ+dp8fiBqWOxhXqn+FQg3a4UcQhwmsJOKV8Jjg==}
'@oxc-parser/binding-android-arm64@0.143.0':
resolution: {integrity: sha512-9BbdjHETk6O3zH/DDid9IgBtF0GlpLabNKN231uraXpRDSfY+iiZxTP5bk1Z63GBownVdhdINFIeddmMz4MzpQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
'@oxc-parser/binding-darwin-arm64@0.133.0':
resolution: {integrity: sha512-q8dWmnU/8ea2tga9w2f1PinQ5rcMPDUGkF64T189b65YMjUomET4oy5oRldOr4AwOQkneOG/Zttnz1Dvrc62wg==}
'@oxc-parser/binding-darwin-arm64@0.143.0':
resolution: {integrity: sha512-gh+6ecoHUy4/sUcolBl/1qPXKBbYNxFY0Pk0ujgQvINTMSftJY7o4yb8gOkDJPeZeB8+a+u7xTe6umoP8N5HFA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
'@oxc-parser/binding-darwin-x64@0.133.0':
resolution: {integrity: sha512-cOKeIELIB2bJnCKwqx4Rdj+1Lss/U6uCbLxRySZrhyOOQa1flKhwZFjEHRHxk8fU1NKmhK5OnTdPQ4CpjuFuVw==}
'@oxc-parser/binding-darwin-x64@0.143.0':
resolution: {integrity: sha512-qd1hl2d+lXgHv/VQ/M9qm8TrMC5T4RqDBwtOnl+1D0QMjwcz+8AaB4JSg8STgeag0GP6a6L74XEGAsrTSJWNzQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
'@oxc-parser/binding-freebsd-x64@0.133.0':
resolution: {integrity: sha512-OpaSv4pW3KgFrMYQxTaS0aOE4T1DQF3qZE/4B6uqqv1KgPWWd4UQhJALi8PJPX1RRV5K7ThKXRfF7qGg2+3l1A==}
'@oxc-parser/binding-freebsd-x64@0.143.0':
resolution: {integrity: sha512-M5XXcNa7aOqLPKTR41msfghKu2yQ4xWvCm11/gwU0JzOzHNk5sgW//rVEjJ+LO48+VDAMzXTSzurUVxIDKwozw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
'@oxc-parser/binding-linux-arm-gnueabihf@0.133.0':
resolution: {integrity: sha512-JGK1wlGrGwxBIlVSF7KWTX1/ru6BEtf28fRROztDRkLfiW+Kxa4onnriezMIiogfn9hVw2KzYcKiLjkLR2ns8A==}
'@oxc-parser/binding-linux-arm-gnueabihf@0.143.0':
resolution: {integrity: sha512-T/GXusuOkPNQhCQCSBbcU/N8j0rAypuDBl1IyFK+lyYT594XsVz80clPC/OtbSSpBGyJxj8uYEfctxVuxVYoww==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@oxc-parser/binding-linux-arm-musleabihf@0.133.0':
resolution: {integrity: sha512-yuZO533Ftonxn/iyoqQzURzLQHMspvsIyfiCSNi1t/ER4eIQaR0SsmUOUm5b/lmSig7IWIUa5/BrbEkAPwcilQ==}
'@oxc-parser/binding-linux-arm-musleabihf@0.143.0':
resolution: {integrity: sha512-oKu4RcBlXSqo3OC62dp6YTnQaZIurNDpCX3BnAM3+bJxt7s8J2TJKMnC0UYer1qhlRaDCg6wkTaTw+2IlsZ12w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@oxc-parser/binding-linux-arm64-gnu@0.133.0':
resolution: {integrity: sha512-hvpbqT5pN2rR+3+xtWeizwfR/aZ0vGceg6TqYMl+ToxMpk9/tmnX7kSvQnfEUkoua8mhogzvIKsAkn0wxgblBA==}
'@oxc-parser/binding-linux-arm64-gnu@0.143.0':
resolution: {integrity: sha512-WJBbD186AZmMGaSIhlktC+rPl8L3peCTXAh88Ih9uEvK0en2mPojGyCGYiL6mHtV1RPV3JyfJW5t6n5hh0lXhA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-arm64-musl@0.133.0':
resolution: {integrity: sha512-wJQGamIosQBoJHW9+S5XxrtKRo3eyJxsnS1XCPrqN0LHi8uw1pTqqTfn3t/NVuvbBg7Pumn4ez9Eidgcn0xbEg==}
'@oxc-parser/binding-linux-arm64-musl@0.143.0':
resolution: {integrity: sha512-t1AcYOwEzgceadT4v5e+vaCCb0AncCA3v5AyzfBAz/tMq11qzVccXKzNHtkWdjBsgvTKwRkaUF3QvT4kot8vcQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@oxc-parser/binding-linux-ppc64-gnu@0.133.0':
resolution: {integrity: sha512-Koaz32/O5+abIfrNGdyndgRvdOZ9jEf5/z3Ep9h3h2QWpdDiUQpVwgH0OcMXCs+l9aXxPLtkupqyVig9W6FDKw==}
'@oxc-parser/binding-linux-ppc64-gnu@0.143.0':
resolution: {integrity: sha512-RsnO/NoD8376LMJq8JS8TwI0ieNaFRTuNe2GVJntQg6gwZNMENZsEbknHdVwjpOmxdGLGodcwaGSbAeRr5Bgjw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-riscv64-gnu@0.133.0':
resolution: {integrity: sha512-R4vOjWzxhnNWHnVLeiB6jNuIifdy9vcMXZGPc7StXcxBovI+U2zg1QhZ9o8OjV80oGivs1lX5NfPLzk4IPqlRA==}
'@oxc-parser/binding-linux-riscv64-gnu@0.143.0':
resolution: {integrity: sha512-48fSVfR9TZi5CASZFyv0VC6z6BCoeihFsX031mAD/oSH7d9PYsPgIqza7d9mjP7Z2KTEpTFyH6SIu0Ui6R1vdg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-riscv64-musl@0.133.0':
resolution: {integrity: sha512-iwgBNUTHiMdxARLYuM0SBlnYeb19iw1Ea5M+4ERZupCsBMLArti6FyZ6UfFjJxIiTDr2oW2DGQFxlQVQ/dW9rA==}
'@oxc-parser/binding-linux-riscv64-musl@0.143.0':
resolution: {integrity: sha512-T8CpdD+SfE01DnIOD4HpVxu0ZJOfMJ/VhCvikKfaXAxkZ+9veyLM/D2hpi7Y2hFUyPmVQO3FNZHmYzV/WlVR4g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@oxc-parser/binding-linux-s390x-gnu@0.133.0':
resolution: {integrity: sha512-ZwZNo8FZmB/gVfboQl+wXilBigGl+6nQQs+nITOeAP/HcAOjiHl6XZJL9F/KXNEspODQcbjAiyjUbeCJd9a0fA==}
'@oxc-parser/binding-linux-s390x-gnu@0.143.0':
resolution: {integrity: sha512-QLdeMsCcacenPEFsfxnBUDF1y6opyz5+fmOz9bfD5Y7fiGCMupUCuB3KTPQhNwshIG1P9fPqar9MHxuBDd4bwQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-x64-gnu@0.133.0':
resolution: {integrity: sha512-govCvWx1dBlED3uu4qXctxpRcouu9I8Kn+DBktGCl760JtlGJzc9l/OmPJKlYWSbrRqKkMZehNeZ/4Wfma7uSA==}
'@oxc-parser/binding-linux-x64-gnu@0.143.0':
resolution: {integrity: sha512-659ujfqLy6k7cuH3sbzhd8b+ztSq+i6E2E9pG78Q0BmHjAExfGIdgc8cGgMdwAozDXeZFHkJ+LXYJdWsaGdgyw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-x64-musl@0.133.0':
resolution: {integrity: sha512-ssTlpXD5Mq9uCssDJPzlRWqBt4Y7Zzd9i+XZhWmK/9Y6KUIuAxVYTYiI8lxcGWi0+3/Cz4A8q9UrD4NK9Y2j7g==}
'@oxc-parser/binding-linux-x64-musl@0.143.0':
resolution: {integrity: sha512-/Mw/9j4TfZcnKphPrzOE6t4MMknXadcAAuVUlDRTF/ETWB5xOgQvOJV2Mh9We/bWxZdoxaGAdc+hy4GuYwQ2yQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@oxc-parser/binding-openharmony-arm64@0.133.0':
resolution: {integrity: sha512-51aByfXhPtLEdWG4a2Ihdw6cPWV1ei1AarALpFdDP8MLWDLE2NuUMgbo3DERR2Kt8fT/ok1GUvBiLxVGke9uUQ==}
'@oxc-parser/binding-openharmony-arm64@0.143.0':
resolution: {integrity: sha512-8rIKWR2BFuifbIK/1XB9wTaSdtuJ25dlE7ZQYDnEwj/2xH2vHsxnvIjHT3ZjSVuLLwGGlSslIG/fbOJ8TV8rTw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
'@oxc-parser/binding-wasm32-wasi@0.133.0':
resolution: {integrity: sha512-2e16tkKp+wDO2GTAmXfxbBcCmGEaFPIJEIRBBmVKNVXSc8/fJsSIaBGyFTPHM9ST5GNWgJcYIt94rDTks+PLwA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
'@oxc-parser/binding-win32-arm64-msvc@0.133.0':
resolution: {integrity: sha512-KPTNDKbxH1cglrqTyVeXHb4Pk4oksz8EcE1/v8zqU7N4UXbiHfA/IwtXZ2U77fnRAWBbgVkl/lZbL7o3hRdejg==}
'@oxc-parser/binding-win32-arm64-msvc@0.143.0':
resolution: {integrity: sha512-5U9kQYMfRRI6Zq7KDxgbIP0RMnKrfn3gLepRMgJuRkPSUALTiRCk9d/uyhb4lGDjUdzwK7mBkKqhLgzBPCmLpQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
'@oxc-parser/binding-win32-ia32-msvc@0.133.0':
resolution: {integrity: sha512-Una1bNYv9zCavQrfnDR9wuZVB3itLjCEH4Oz7i6CwAJN/Xq9b+zbbcxmvdkKvvJt4Ngc/MBmIYlbLo3zS4TQ0A==}
'@oxc-parser/binding-win32-ia32-msvc@0.143.0':
resolution: {integrity: sha512-25P7AaHk4R88Yv2XH4gToDVmh0cOu+bEURQU10CRrmvgabfRArSGAP5osmwUKeSUHj0VS50upbpbRWWW/m7mHA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
'@oxc-parser/binding-win32-x64-msvc@0.133.0':
resolution: {integrity: sha512-kjBhCiOGSYTwDJQuuZa7a94JbP8htWu7J0X1KwH74kV2K5eYf6eyJRYmkpCDvr0XEL8tMxYI4WU1VekblFCLgg==}
'@oxc-parser/binding-win32-x64-msvc@0.143.0':
resolution: {integrity: sha512-ORMh3JE1s6V7ySicdRK7vgaDQnn5o+UHg9ct989PlWHbel8O9ARrmWXM6kZjrBMtNucxNayQ8g69G0VfWzhANw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
'@oxc-project/types@0.133.0':
resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==}
'@oxc-project/types@0.139.0':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
'@oxc-resolver/binding-android-arm-eabi@11.20.0':
resolution: {integrity: sha512-IjfWOXRgJFNdORDl+Uf1aibNgZY2guOD3zmOhx1BGVb/MIiqlFTdmjpQNplSN58lhWehnX4UNqC3QwpUo8pjJg==}
'@oxc-project/types@0.143.0':
resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==}
'@oxc-resolver/binding-android-arm-eabi@11.24.2':
resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==}
cpu: [arm]
os: [android]
'@oxc-resolver/binding-android-arm64@11.20.0':
resolution: {integrity: sha512-QqslZAuFQG8Q9xm7JuIn8JUbvywhSBMVhuQHtYW+auirZJloS41oxUUaBXk7uUhZJgp44c5zQLeVvmFaDQB+2Q==}
'@oxc-resolver/binding-android-arm64@11.24.2':
resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==}
cpu: [arm64]
os: [android]
'@oxc-resolver/binding-darwin-arm64@11.20.0':
resolution: {integrity: sha512-MUcavykj2ewlR+kc5arpg4tC2RvzJkUxWtNv74pf7lcNk00GpIpN43vXMj+j6r4eMmfZhlb8hueKoIb8e9kAGQ==}
'@oxc-resolver/binding-darwin-arm64@11.24.2':
resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==}
cpu: [arm64]
os: [darwin]
'@oxc-resolver/binding-darwin-x64@11.20.0':
resolution: {integrity: sha512-BGB16nRUK5Etiv//ihPyzj8Lj1px0mhh4YIfe0FDf045ywknfSm0GEbiRESpr6Q4K82AvnyaRIhhluHByvS4bg==}
'@oxc-resolver/binding-darwin-x64@11.24.2':
resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==}
cpu: [x64]
os: [darwin]
'@oxc-resolver/binding-freebsd-x64@11.20.0':
resolution: {integrity: sha512-JZgtePaqj3qmD5XFHJaSLWzHRxQu0LaPkdoM1KJXYADvAaa83ijXHclV3ej3CueeW0wxfIAbGCZVP45J0CA7uQ==}
'@oxc-resolver/binding-freebsd-x64@11.24.2':
resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==}
cpu: [x64]
os: [freebsd]
'@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0':
resolution: {integrity: sha512-hOQ/p3ry3v3SchUBXicrrnszaI/UmYzM4wtS4RGfwgVUX7a+HbyQSzJ5aOzu+o6XZkFkS3ZXN4PZAzhOb77OSg==}
'@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2':
resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==}
cpu: [arm]
os: [linux]
'@oxc-resolver/binding-linux-arm-musleabihf@11.20.0':
resolution: {integrity: sha512-2ArPksaw0AqeuGBfoS715VF+JvJQAhD2niWgjE5hVO+L+nAfikVQopvngCMX9x4BD8itWoQ3dnikrQyl5Ho5Jg==}
'@oxc-resolver/binding-linux-arm-musleabihf@11.24.2':
resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==}
cpu: [arm]
os: [linux]
'@oxc-resolver/binding-linux-arm64-gnu@11.20.0':
resolution: {integrity: sha512-0bJnmYFp62JdZ4nVMDUZ/C58BCZOCcqgKtnUlp7L9Ojf/czIN+3j72YlLPeWLkzlr6SlYvIQA4SGV/HyO0d+qg==}
'@oxc-resolver/binding-linux-arm64-gnu@11.24.2':
resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-arm64-musl@11.20.0':
resolution: {integrity: sha512-wKHHzPKZo7Ufhv/Bt6yxT7FOgnIgW4gwXcJUipkShGp68W3wGVqvr1Sr0fY65lN0Oy6y41+g2kIDvkgZaMMUkw==}
'@oxc-resolver/binding-linux-arm64-musl@11.24.2':
resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@oxc-resolver/binding-linux-ppc64-gnu@11.20.0':
resolution: {integrity: sha512-RN8goF7Ie0B79L4i4G6OeBocTgSC56vJbQ65VJje+oXnldVpLnOU7j/AQ/dP94TcCS+Yh6WG8u3Qt4ETteXFNQ==}
'@oxc-resolver/binding-linux-ppc64-gnu@11.24.2':
resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-riscv64-gnu@11.20.0':
resolution: {integrity: sha512-5l1yU6/xQEqLZRzxqmMxJfWPslpwCmBsdDGaBvABPehxquCXDC7dd7oraNdKSJUMDXSM7VvVj8H2D2FTjU7oWw==}
'@oxc-resolver/binding-linux-riscv64-gnu@11.24.2':
resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-riscv64-musl@11.20.0':
resolution: {integrity: sha512-xHEvkbgz6UC+A3JOyDQy76LkUaxsNSfIr3/GV8slwZsnuooJiIB34gzJfsyvR4JdCYNUUPsRJc/w/oWkODu+hg==}
'@oxc-resolver/binding-linux-riscv64-musl@11.24.2':
resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@oxc-resolver/binding-linux-s390x-gnu@11.20.0':
resolution: {integrity: sha512-aWPDUUmSeyHvlW+SoEUd+JIJsQhVhu6a5tBpDRMu058naPAchTgAVGCFy35zjbnFlt0i8hLWziff6HX0D3LU4g==}
'@oxc-resolver/binding-linux-s390x-gnu@11.24.2':
resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-x64-gnu@11.20.0':
resolution: {integrity: sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g==}
'@oxc-resolver/binding-linux-x64-gnu@11.24.2':
resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-x64-musl@11.20.0':
resolution: {integrity: sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ==}
'@oxc-resolver/binding-linux-x64-musl@11.24.2':
resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==}
cpu: [x64]
os: [linux]
libc: [musl]
'@oxc-resolver/binding-openharmony-arm64@11.20.0':
resolution: {integrity: sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ==}
'@oxc-resolver/binding-openharmony-arm64@11.24.2':
resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==}
cpu: [arm64]
os: [openharmony]
'@oxc-resolver/binding-wasm32-wasi@11.20.0':
resolution: {integrity: sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg==}
'@oxc-resolver/binding-wasm32-wasi@11.24.2':
resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==}
engines: {node: '>=14.0.0'}
cpu: [wasm32]
'@oxc-resolver/binding-win32-arm64-msvc@11.20.0':
resolution: {integrity: sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA==}
'@oxc-resolver/binding-win32-arm64-msvc@11.24.2':
resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==}
cpu: [arm64]
os: [win32]
'@oxc-resolver/binding-win32-x64-msvc@11.20.0':
resolution: {integrity: sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw==}
'@oxc-resolver/binding-win32-x64-msvc@11.24.2':
resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==}
cpu: [x64]
os: [win32]
@@ -4671,9 +4666,6 @@ packages:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
get-tsconfig@4.14.0:
resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
get-tsconfig@4.14.1:
resolution: {integrity: sha512-Dz/6HxkrxgNehhxLVeyv8sad9UzF2xBVeaKBQNDfJ5XiSXmp2gTR0eO0RWiT2NCKS5aGP9jjkOMggTN90qU50A==}
@@ -5183,8 +5175,8 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
knip@6.16.1:
resolution: {integrity: sha512-TKMn1rxgH6h9vXR9Y0B+Cq7AdPTr9EI02IwoT65NzqYUkvoDQAaJ/aPybiFpAhZ1px6cNYYwXf86iHkBgzCo9w==}
knip@6.32.2:
resolution: {integrity: sha512-WXTXbmocrw7gqm1A1TQvFN0OgJ7hUSU6E1g6SPRIzzHFogUBhXByc7cYeOFVtJ2uODg7DP4VbESYBYnfbtBYsg==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -5707,12 +5699,12 @@ packages:
resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==}
engines: {node: '>= 0.4'}
oxc-parser@0.133.0:
resolution: {integrity: sha512-661RSx+ZcjBmjBYid+Fpp/2F5EbtildpeoZh5HdgnGs+jZ03nqQEQW8yGkt4BGyOC3OMPDQQRl8M5kqD2/g6jw==}
oxc-parser@0.143.0:
resolution: {integrity: sha512-ov0NzaDCOInknS7mP1cwKdJERt3utPW8ldjtdUXQ8Ty0GEFD08wk422vCUN0d7pST6kqtV7dxoI9w1Zi0l/9TA==}
engines: {node: ^20.19.0 || >=22.12.0}
oxc-resolver@11.20.0:
resolution: {integrity: sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g==}
oxc-resolver@11.24.2:
resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==}
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
@@ -6457,6 +6449,10 @@ packages:
resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==}
engines: {node: '>= 18'}
smol-toml@1.8.0:
resolution: {integrity: sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==}
engines: {node: '>= 18'}
sonner@2.0.7:
resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==}
peerDependencies:
@@ -6800,8 +6796,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
unbash@3.0.0:
resolution: {integrity: sha512-FeFPZ/WFT0mbRCuydiZzpPFlrYN8ZUpphQKoq4EeElVIYjYyGzPMxQR/simUwCOJIyVhpFk4RbtyO7RuMpMnHA==}
unbash@4.0.10:
resolution: {integrity: sha512-b7zoBQvpWp0vuN5q2vK2RRBR2SvuruQAs50DApdDveBSn3eSYd84IaHodFqQIMlvY9K2VnyBUEXgwOBuGU9GBg==}
engines: {node: '>=14'}
unbox-primitive@1.1.0:
@@ -7681,6 +7677,12 @@ snapshots:
tslib: 2.8.1
optional: true
'@emnapi/core@1.11.2':
dependencies:
'@emnapi/wasi-threads': 1.2.2
tslib: 2.8.1
optional: true
'@emnapi/core@1.8.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
@@ -7697,6 +7699,11 @@ snapshots:
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.11.2':
dependencies:
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.8.1':
dependencies:
tslib: 2.8.1
@@ -8334,13 +8341,6 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@tybys/wasm-util': 0.10.1
optional: true
'@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
@@ -8355,6 +8355,13 @@ snapshots:
'@tybys/wasm-util': 0.10.3
optional: true
'@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)':
dependencies:
'@emnapi/core': 1.11.2
'@emnapi/runtime': 1.11.2
'@tybys/wasm-util': 0.10.3
optional: true
'@next/bundle-analyzer@16.3.1':
dependencies:
webpack-bundle-analyzer: 4.10.1
@@ -8575,133 +8582,126 @@ snapshots:
'@openai/codex@0.144.6-win32-x64':
optional: true
'@oxc-parser/binding-android-arm-eabi@0.133.0':
'@oxc-parser/binding-android-arm-eabi@0.143.0':
optional: true
'@oxc-parser/binding-android-arm64@0.133.0':
'@oxc-parser/binding-android-arm64@0.143.0':
optional: true
'@oxc-parser/binding-darwin-arm64@0.133.0':
'@oxc-parser/binding-darwin-arm64@0.143.0':
optional: true
'@oxc-parser/binding-darwin-x64@0.133.0':
'@oxc-parser/binding-darwin-x64@0.143.0':
optional: true
'@oxc-parser/binding-freebsd-x64@0.133.0':
'@oxc-parser/binding-freebsd-x64@0.143.0':
optional: true
'@oxc-parser/binding-linux-arm-gnueabihf@0.133.0':
'@oxc-parser/binding-linux-arm-gnueabihf@0.143.0':
optional: true
'@oxc-parser/binding-linux-arm-musleabihf@0.133.0':
'@oxc-parser/binding-linux-arm-musleabihf@0.143.0':
optional: true
'@oxc-parser/binding-linux-arm64-gnu@0.133.0':
'@oxc-parser/binding-linux-arm64-gnu@0.143.0':
optional: true
'@oxc-parser/binding-linux-arm64-musl@0.133.0':
'@oxc-parser/binding-linux-arm64-musl@0.143.0':
optional: true
'@oxc-parser/binding-linux-ppc64-gnu@0.133.0':
'@oxc-parser/binding-linux-ppc64-gnu@0.143.0':
optional: true
'@oxc-parser/binding-linux-riscv64-gnu@0.133.0':
'@oxc-parser/binding-linux-riscv64-gnu@0.143.0':
optional: true
'@oxc-parser/binding-linux-riscv64-musl@0.133.0':
'@oxc-parser/binding-linux-riscv64-musl@0.143.0':
optional: true
'@oxc-parser/binding-linux-s390x-gnu@0.133.0':
'@oxc-parser/binding-linux-s390x-gnu@0.143.0':
optional: true
'@oxc-parser/binding-linux-x64-gnu@0.133.0':
'@oxc-parser/binding-linux-x64-gnu@0.143.0':
optional: true
'@oxc-parser/binding-linux-x64-musl@0.133.0':
'@oxc-parser/binding-linux-x64-musl@0.143.0':
optional: true
'@oxc-parser/binding-openharmony-arm64@0.133.0':
'@oxc-parser/binding-openharmony-arm64@0.143.0':
optional: true
'@oxc-parser/binding-wasm32-wasi@0.133.0':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
'@oxc-parser/binding-win32-arm64-msvc@0.143.0':
optional: true
'@oxc-parser/binding-win32-arm64-msvc@0.133.0':
'@oxc-parser/binding-win32-ia32-msvc@0.143.0':
optional: true
'@oxc-parser/binding-win32-ia32-msvc@0.133.0':
'@oxc-parser/binding-win32-x64-msvc@0.143.0':
optional: true
'@oxc-parser/binding-win32-x64-msvc@0.133.0':
optional: true
'@oxc-project/types@0.133.0': {}
'@oxc-project/types@0.139.0': {}
'@oxc-resolver/binding-android-arm-eabi@11.20.0':
'@oxc-project/types@0.143.0': {}
'@oxc-resolver/binding-android-arm-eabi@11.24.2':
optional: true
'@oxc-resolver/binding-android-arm64@11.20.0':
'@oxc-resolver/binding-android-arm64@11.24.2':
optional: true
'@oxc-resolver/binding-darwin-arm64@11.20.0':
'@oxc-resolver/binding-darwin-arm64@11.24.2':
optional: true
'@oxc-resolver/binding-darwin-x64@11.20.0':
'@oxc-resolver/binding-darwin-x64@11.24.2':
optional: true
'@oxc-resolver/binding-freebsd-x64@11.20.0':
'@oxc-resolver/binding-freebsd-x64@11.24.2':
optional: true
'@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0':
'@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2':
optional: true
'@oxc-resolver/binding-linux-arm-musleabihf@11.20.0':
'@oxc-resolver/binding-linux-arm-musleabihf@11.24.2':
optional: true
'@oxc-resolver/binding-linux-arm64-gnu@11.20.0':
'@oxc-resolver/binding-linux-arm64-gnu@11.24.2':
optional: true
'@oxc-resolver/binding-linux-arm64-musl@11.20.0':
'@oxc-resolver/binding-linux-arm64-musl@11.24.2':
optional: true
'@oxc-resolver/binding-linux-ppc64-gnu@11.20.0':
'@oxc-resolver/binding-linux-ppc64-gnu@11.24.2':
optional: true
'@oxc-resolver/binding-linux-riscv64-gnu@11.20.0':
'@oxc-resolver/binding-linux-riscv64-gnu@11.24.2':
optional: true
'@oxc-resolver/binding-linux-riscv64-musl@11.20.0':
'@oxc-resolver/binding-linux-riscv64-musl@11.24.2':
optional: true
'@oxc-resolver/binding-linux-s390x-gnu@11.20.0':
'@oxc-resolver/binding-linux-s390x-gnu@11.24.2':
optional: true
'@oxc-resolver/binding-linux-x64-gnu@11.20.0':
'@oxc-resolver/binding-linux-x64-gnu@11.24.2':
optional: true
'@oxc-resolver/binding-linux-x64-musl@11.20.0':
'@oxc-resolver/binding-linux-x64-musl@11.24.2':
optional: true
'@oxc-resolver/binding-openharmony-arm64@11.20.0':
'@oxc-resolver/binding-openharmony-arm64@11.24.2':
optional: true
'@oxc-resolver/binding-wasm32-wasi@11.20.0':
'@oxc-resolver/binding-wasm32-wasi@11.24.2':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
'@emnapi/core': 1.11.2
'@emnapi/runtime': 1.11.2
'@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)
optional: true
'@oxc-resolver/binding-win32-arm64-msvc@11.20.0':
'@oxc-resolver/binding-win32-arm64-msvc@11.24.2':
optional: true
'@oxc-resolver/binding-win32-x64-msvc@11.20.0':
'@oxc-resolver/binding-win32-x64-msvc@11.24.2':
optional: true
'@parse/node-apn@8.1.0(supports-color@7.2.0)':
@@ -11807,10 +11807,6 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.3.0
get-tsconfig@4.14.0:
dependencies:
resolve-pkg-maps: 1.0.0
get-tsconfig@4.14.1:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -12283,19 +12279,19 @@ snapshots:
kleur@4.1.5: {}
knip@6.16.1:
knip@6.32.2:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
fdir: 6.5.0(picomatch@4.0.5)
formatly: 0.3.0
get-tsconfig: 4.14.0
get-tsconfig: 4.14.1
jiti: 2.7.0
oxc-parser: 0.133.0
oxc-resolver: 11.20.0
picomatch: 4.0.4
smol-toml: 1.6.1
oxc-parser: 0.143.0
oxc-resolver: 11.24.2
picomatch: 4.0.5
smol-toml: 1.8.0
strip-json-comments: 5.0.3
tinyglobby: 0.2.17
unbash: 3.0.0
unbash: 4.0.10
yaml: 2.9.0
zod: 4.4.3
@@ -12777,52 +12773,51 @@ snapshots:
object-keys: 1.1.1
safe-push-apply: 1.0.0
oxc-parser@0.133.0:
oxc-parser@0.143.0:
dependencies:
'@oxc-project/types': 0.133.0
'@oxc-project/types': 0.143.0
optionalDependencies:
'@oxc-parser/binding-android-arm-eabi': 0.133.0
'@oxc-parser/binding-android-arm64': 0.133.0
'@oxc-parser/binding-darwin-arm64': 0.133.0
'@oxc-parser/binding-darwin-x64': 0.133.0
'@oxc-parser/binding-freebsd-x64': 0.133.0
'@oxc-parser/binding-linux-arm-gnueabihf': 0.133.0
'@oxc-parser/binding-linux-arm-musleabihf': 0.133.0
'@oxc-parser/binding-linux-arm64-gnu': 0.133.0
'@oxc-parser/binding-linux-arm64-musl': 0.133.0
'@oxc-parser/binding-linux-ppc64-gnu': 0.133.0
'@oxc-parser/binding-linux-riscv64-gnu': 0.133.0
'@oxc-parser/binding-linux-riscv64-musl': 0.133.0
'@oxc-parser/binding-linux-s390x-gnu': 0.133.0
'@oxc-parser/binding-linux-x64-gnu': 0.133.0
'@oxc-parser/binding-linux-x64-musl': 0.133.0
'@oxc-parser/binding-openharmony-arm64': 0.133.0
'@oxc-parser/binding-wasm32-wasi': 0.133.0
'@oxc-parser/binding-win32-arm64-msvc': 0.133.0
'@oxc-parser/binding-win32-ia32-msvc': 0.133.0
'@oxc-parser/binding-win32-x64-msvc': 0.133.0
'@oxc-parser/binding-android-arm-eabi': 0.143.0
'@oxc-parser/binding-android-arm64': 0.143.0
'@oxc-parser/binding-darwin-arm64': 0.143.0
'@oxc-parser/binding-darwin-x64': 0.143.0
'@oxc-parser/binding-freebsd-x64': 0.143.0
'@oxc-parser/binding-linux-arm-gnueabihf': 0.143.0
'@oxc-parser/binding-linux-arm-musleabihf': 0.143.0
'@oxc-parser/binding-linux-arm64-gnu': 0.143.0
'@oxc-parser/binding-linux-arm64-musl': 0.143.0
'@oxc-parser/binding-linux-ppc64-gnu': 0.143.0
'@oxc-parser/binding-linux-riscv64-gnu': 0.143.0
'@oxc-parser/binding-linux-riscv64-musl': 0.143.0
'@oxc-parser/binding-linux-s390x-gnu': 0.143.0
'@oxc-parser/binding-linux-x64-gnu': 0.143.0
'@oxc-parser/binding-linux-x64-musl': 0.143.0
'@oxc-parser/binding-openharmony-arm64': 0.143.0
'@oxc-parser/binding-win32-arm64-msvc': 0.143.0
'@oxc-parser/binding-win32-ia32-msvc': 0.143.0
'@oxc-parser/binding-win32-x64-msvc': 0.143.0
oxc-resolver@11.20.0:
oxc-resolver@11.24.2:
optionalDependencies:
'@oxc-resolver/binding-android-arm-eabi': 11.20.0
'@oxc-resolver/binding-android-arm64': 11.20.0
'@oxc-resolver/binding-darwin-arm64': 11.20.0
'@oxc-resolver/binding-darwin-x64': 11.20.0
'@oxc-resolver/binding-freebsd-x64': 11.20.0
'@oxc-resolver/binding-linux-arm-gnueabihf': 11.20.0
'@oxc-resolver/binding-linux-arm-musleabihf': 11.20.0
'@oxc-resolver/binding-linux-arm64-gnu': 11.20.0
'@oxc-resolver/binding-linux-arm64-musl': 11.20.0
'@oxc-resolver/binding-linux-ppc64-gnu': 11.20.0
'@oxc-resolver/binding-linux-riscv64-gnu': 11.20.0
'@oxc-resolver/binding-linux-riscv64-musl': 11.20.0
'@oxc-resolver/binding-linux-s390x-gnu': 11.20.0
'@oxc-resolver/binding-linux-x64-gnu': 11.20.0
'@oxc-resolver/binding-linux-x64-musl': 11.20.0
'@oxc-resolver/binding-openharmony-arm64': 11.20.0
'@oxc-resolver/binding-wasm32-wasi': 11.20.0
'@oxc-resolver/binding-win32-arm64-msvc': 11.20.0
'@oxc-resolver/binding-win32-x64-msvc': 11.20.0
'@oxc-resolver/binding-android-arm-eabi': 11.24.2
'@oxc-resolver/binding-android-arm64': 11.24.2
'@oxc-resolver/binding-darwin-arm64': 11.24.2
'@oxc-resolver/binding-darwin-x64': 11.24.2
'@oxc-resolver/binding-freebsd-x64': 11.24.2
'@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2
'@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2
'@oxc-resolver/binding-linux-arm64-gnu': 11.24.2
'@oxc-resolver/binding-linux-arm64-musl': 11.24.2
'@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2
'@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2
'@oxc-resolver/binding-linux-riscv64-musl': 11.24.2
'@oxc-resolver/binding-linux-s390x-gnu': 11.24.2
'@oxc-resolver/binding-linux-x64-gnu': 11.24.2
'@oxc-resolver/binding-linux-x64-musl': 11.24.2
'@oxc-resolver/binding-openharmony-arm64': 11.24.2
'@oxc-resolver/binding-wasm32-wasi': 11.24.2
'@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
'@oxc-resolver/binding-win32-x64-msvc': 11.24.2
p-limit@2.3.0:
dependencies:
@@ -13677,6 +13672,8 @@ snapshots:
smol-toml@1.6.1: {}
smol-toml@1.8.0: {}
sonner@2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
react: 19.2.7
@@ -13972,8 +13969,8 @@ snapshots:
tinyglobby@0.2.17:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
tinyrainbow@3.1.0: {}
@@ -14098,7 +14095,7 @@ snapshots:
typescript@6.0.3: {}
unbash@3.0.0: {}
unbash@4.0.10: {}
unbox-primitive@1.1.0:
dependencies:
@@ -14224,7 +14221,7 @@ snapshots:
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.5
postcss: 8.5.25
postcss: 8.5.26
rolldown: 1.1.5
tinyglobby: 0.2.17
optionalDependencies:
-6
View File
@@ -15,14 +15,8 @@ import {
getTrendSentiment,
sentimentColorClass,
type TrendDirectionSentiment,
type TrendSentimentDirection,
} from "@/lib/insights/trend-sentiment";
// v1.9.0 — the metric-aware sentiment mapping moved to a shared module so the
// range-delta caption paints the same colour for the same signal. Re-exported
// here so existing `@/components/charts/trend-card` importers keep the type.
export type { TrendDirectionSentiment, TrendSentimentDirection };
interface SecondaryMetric {
/** Sub-value latest reading (e.g. diastolic when latest is systolic). */
latest: number | null;
-1
View File
@@ -16,5 +16,4 @@ export {
selectAllState,
selectedIdsOnPage,
selectedCountOnPage,
type SelectAllState,
} from "./selection";
@@ -13,7 +13,6 @@ import { toast } from "sonner";
import type {
CoachConversationAttachmentDTO,
CoachConversationDetailDTO,
CoachConversationDTO,
CoachConversationsPage,
CoachProvenance,
CoachScope,
@@ -1118,7 +1117,6 @@ export function useSendCoachMessage(opts: UseSendCoachMessageOptions = {}) {
// `@/lib/ai/coach/types` directly.
export type {
CoachConversationAttachmentDTO,
CoachConversationDTO,
CoachConversationDetailDTO,
CoachProvenance,
CoachSuggestion,
@@ -11,7 +11,4 @@ export { WorkoutDetailZones } from "./zones";
export { WorkoutDetailRoute } from "./route-map";
export { WorkoutDetailSplits } from "./splits";
export { WorkoutDetailDayContext } from "./day-context";
export {
WorkoutInsightCard,
type WorkoutActivityInsightData,
} from "./insight-slot";
export { WorkoutInsightCard } from "./insight-slot";
@@ -44,10 +44,7 @@
*/
import { encodeCadence } from "@/components/medications/scheduling/cadence-picker";
import {
dateToIsoString,
isoStringToDate,
} from "@/components/medications/scheduling/course-window-row";
import { dateToIsoString } from "@/components/medications/scheduling/course-window-row";
import {
type CadenceKind,
type CadenceSubControls,
@@ -1277,4 +1274,4 @@ function subControlsFromRrule(rrule: string): CadenceSubControls {
// Re-exports — convenience for the dialog and tests
// ────────────────────────────────────────────────────────────────────
export { dateToIsoString, isoStringToDate };
export { dateToIsoString };
-2
View File
@@ -42,8 +42,6 @@ import {
} from "@/lib/validations/health-profile-facts";
import { decryptHealthProfileFactValue } from "@/lib/profile/health-facts";
export { ABOUT_ME_MAX_CHARS } from "@/lib/validations/about-me";
export interface SelfContext {
aboutMe: string | null;
conditions: string | null;
+1 -12
View File
@@ -29,11 +29,7 @@
import { z } from "zod/v4";
import {
WEEKDAY_TOKENS,
type CadenceKind,
type WeekdayToken,
} from "@/components/medications/scheduling/types";
import { WEEKDAY_TOKENS } from "@/components/medications/scheduling/types";
/** Closed list — matches the design-synthesis dose-unit dropdown. */
export const DOSE_UNITS = [
@@ -90,13 +86,6 @@ export type MedicationExtractionResult = z.infer<
typeof medicationExtractionSchema
>;
/**
* Re-export the wizard `CadenceKind` + `WeekdayToken` types so callers
* (the route, the tests) import a single module rather than chasing
* the wizard types directory.
*/
export type { CadenceKind, WeekdayToken };
/**
* Build the system prompt. Same shape across calls — the model only
* sees the user's free text via `buildUserPrompt()`. The system prompt
+1 -6
View File
@@ -26,10 +26,7 @@
*
* Pure and in-place — the snapshot is a plain record by the time it gets here.
*/
import {
TODAY_CLAIM_MAX_AGE_DAYS,
isCurrentForTodayClaim,
} from "@/lib/insights/measurement-freshness";
import { isCurrentForTodayClaim } from "@/lib/insights/measurement-freshness";
/** When a metric block's series actually ends, and what may be said about it. */
export interface SnapshotAsOf {
@@ -187,5 +184,3 @@ export function annotateSnapshotFreshness(snapshot: Record<string, unknown>): {
}
return { stale, coarseWithheld };
}
export { TODAY_CLAIM_MAX_AGE_DAYS };
+3 -19
View File
@@ -6,28 +6,12 @@
* figures, and a bounded loop that executes them. The legacy snapshot path
* stays alive as the no-tools fallback (per-provider `supportsTools`).
*/
export {
COACH_TOOL_DEFS,
COACH_TOOL_NAMES,
isCoachToolName,
type CoachToolName,
} from "./definitions";
export {
executeCoachTool,
type CoachToolResult,
type CoachToolTrace,
} from "./executor";
export { COACH_TOOL_DEFS } from "./definitions";
export type { CoachToolTrace } from "./executor";
export {
buildCoachDataInventory,
renderDataInventory,
renderFocusHint,
type CoachDataInventory,
type InventoryEntry,
} from "./inventory";
export { buildToolModeAddendum } from "./system-addendum";
export {
runCoachToolLoop,
MAX_ROUNDS,
HARD_CAP,
type CoachToolLoopResult,
} from "./loop";
export { runCoachToolLoop, MAX_ROUNDS } from "./loop";
+1 -2
View File
@@ -11,7 +11,6 @@ import {
SCORE_PILLAR_DOMAINS,
SCORE_PILLAR_IDS,
SCORE_VERSION,
type CompositeValue,
type HealthScoreReport,
type PillarInputs,
type ScorePillarId,
@@ -95,5 +94,5 @@ export function computeHealthScore(
};
}
export type { CompositeValue, HealthScoreReport };
export type { HealthScoreReport };
export * from "./types";
-2
View File
@@ -20,8 +20,6 @@ import { randomBytes } from "node:crypto";
import { prisma } from "@/lib/db";
import { hashToken } from "@/lib/auth/hmac";
export { INVITE_MAX_TTL_DAYS } from "@/lib/validations/invite";
/** Raw-token prefix — distinct from `hlk_` (API) and `hlr_` (refresh). */
export const INVITE_TOKEN_PREFIX = "hlv_";
-6
View File
@@ -44,13 +44,7 @@ export function buildNativeCallbackUrl(params: Record<string, string>): string {
// Re-export the shared mint/consume core so the OIDC callback + token route
// keep importing from here unchanged.
export {
HANDOFF_CODE_PREFIX,
mintNativeHandoff,
consumeNativeHandoff,
stampIssuedRefreshToken,
} from "@/lib/auth/native-handoff";
export type {
HandoffFlow,
MintedHandoff,
ConsumeHandoffResult,
} from "@/lib/auth/native-handoff";
-3
View File
@@ -40,7 +40,6 @@ import {
} from "@/lib/crypto";
import {
ENCRYPTED_COLUMNS,
encryptedColumnKey,
type EncryptedColumn,
} from "@/lib/crypto/encrypted-columns";
@@ -381,5 +380,3 @@ export async function rotateCorpus(
totalErrors,
};
}
export { encryptedColumnKey };
-2
View File
@@ -26,10 +26,8 @@ import { CUSTOM_SYMPTOM_KEY_PREFIX } from "@/lib/cycle/custom-symptoms-shared";
export {
CUSTOM_SYMPTOM_KEY_PREFIX,
CUSTOM_SYMPTOM_CATEGORY_KEY,
CUSTOM_SYMPTOM_CATEGORY_ID,
MAX_CUSTOM_SYMPTOMS_PER_USER,
CUSTOM_SYMPTOM_ICON_ALLOWLIST,
isCustomSymptomKey,
createCustomSymptomSchema,
updateCustomSymptomSchema,
+1 -17
View File
@@ -10,25 +10,9 @@ export * from "./types";
export * from "./day-math";
export {
predictCycle,
estimateCycleLength,
estimatePeriodLength,
observedPeriodLength,
detectTempShift,
detectMucusPeak,
confirmSymptothermal,
detectTemperatureTrend,
detectLhSurgeOvulation,
median,
mad,
resolveLuteal,
clampLuteal,
} from "./prediction";
export { phaseForDay, phaseSeries, type PhaseCycle } from "./phase";
export {
resolveCycleVerdict,
type CycleVerdict,
type CycleVerdictState,
type CyclePhaseSpan,
type CycleProfileLengths,
type VerdictCalendarDay,
} from "./verdict";
export { phaseForDay, type PhaseCycle } from "./phase";
+1 -7
View File
@@ -18,7 +18,7 @@ import {
isStructuredLeafId,
REPORT_GROUPS,
} from "./report-selection/catalogue";
import { MEASUREMENT_TYPE_LABEL_KEYS } from "./measurements/type-label-keys";
import { getUnitForType } from "./validations/measurement";
import {
makeFormatters,
@@ -166,12 +166,6 @@ export interface DoctorReportRenderOptions {
includeCharts?: boolean;
}
// Per-type label keys live in a lucide-free module so leaf consumers — the
// public clinician share view, this renderer — can import the map without
// dragging icon components into their graph. Re-exported here so the PDF core
// stays the single import surface its existing callers already use.
export { MEASUREMENT_TYPE_LABEL_KEYS };
export const DOCTOR_REPORT_TYPE_UNIT_KEYS: Record<string, string | null> = {
WEIGHT: "kg",
BLOOD_PRESSURE_SYS: "mmHg",
-3
View File
@@ -37,12 +37,9 @@
* to show a biomarker's name resolves it through the labs catalog instead.
*/
import { LOINC_SYSTEM, UCUM_SYSTEM } from "@/lib/fhir/loinc-map";
import { localisedValues } from "@/lib/i18n/shared-resolve";
import { stripDiacritics } from "@/lib/i18n/fold-for-match";
export { LOINC_SYSTEM, UCUM_SYSTEM };
/** A curated biomarker → LOINC + canonical-UCUM entry. */
export interface LabLoincMapping {
loinc: string;
+1 -6
View File
@@ -39,12 +39,7 @@ import {
type CoachReadStripData,
} from "@/lib/insights/derived/coach-read-shape";
export type {
CoachReadBaseline,
CoachReadDriver,
CoachReadStripData,
CoachReadBaselinePlacement,
} from "@/lib/insights/derived/coach-read-shape";
export type { CoachReadStripData } from "@/lib/insights/derived/coach-read-shape";
/**
* Read the latest reading for `(userId, type)` — the value the strip places
+25 -163
View File
@@ -1,185 +1,47 @@
/**
* v1.10.0 — public barrel for the derived-metrics layer.
*
* The one module every consumer imports from. Append-only per wave —
* Wave 1 exports the foundation (`Derived<T>` + coverage builders +
* registry + norms + the flagship baseline engine + the route
* dispatcher); W2/W3 append their per-metric engines (`fitness-age`,
* `vascular-age`, `sleep-score`, `readiness`) here.
* Carries the cross-cutting surface: the registry (which metrics exist and
* how they are archetyped), the route dispatcher, the baseline profile
* loader, and the handful of per-metric compute engines and value shapes
* that consumers outside this directory actually reach for.
*
* Re-exports the client-safe types/coverage builders and the
* server-only compute engines from one place; consumers import only what
* they need. (A `"use client"` component must value-import only from
* `./types` + `./coverage` + `./registry` — those are server-import-free.
* The route + server consumers may import the engines below.)
* It is deliberately NOT a mirror of every export under `./`. The per-metric
* scoring helpers, their `*Opts` / `*Band` types and the sub-score weights are
* imported from their concrete module (`./sleep-score`, `./trajectory`, …) by
* the code and tests that use them; re-exporting them here only produced lines
* nothing imported. Add a line below when an outside consumer appears, not in
* anticipation of one.
*
* A `"use client"` component must value-import only from `./types`,
* `./coverage` and `./registry` — those are server-import-free. The route and
* server consumers may import the engines below.
*/
// ── client-safe contract (types + pure builders + metadata) ──────────
export type {
Derived,
DerivedOk,
DerivedInsufficient,
DerivedCoverage,
DerivedConfidence,
DerivedConfidenceBand,
DerivedProvenance,
DerivedProvenanceSource,
} from "./types";
// ── client-safe contract ─────────────────────────────────────────────
export { isDerivedOk } from "./types";
export {
deriveCoverage,
buildOk,
buildInsufficient,
scoreToBand,
nowProvenanceTimestamp,
} from "./coverage";
export type { DeriveCoverageArgs } from "./coverage";
export {
DERIVED_METRIC_IDS,
VITALS_BASELINE_TYPES,
TRAJECTORY_TYPES,
SAME_TIME_BASELINE_TYPES,
SAME_TIME_BASELINE_WINDOW_DAYS,
SAME_TIME_BASELINE_MIN_HISTORY_DAYS,
isDerivedMetricId,
getDerivedMetricMeta,
isVitalsBaselineType,
isTrajectoryType,
isSameTimeBaselineType,
} from "./registry";
export type {
DerivedMetricId,
DerivedMetricMeta,
DerivedArchetype,
} from "./registry";
export {
lookupNormalRange,
hasSharpenedNorm,
predictSixMinuteWalkDistance,
} from "./norms";
export type { NormRange, NormSex } from "./norms";
export type { DerivedMetricId } from "./registry";
// ── server-only compute engines (do NOT value-import from a client component) ──
export {
computeVitalsBaseline,
loadBaselineProfile,
buildBaselineBand,
median,
medianAbsoluteDeviation,
} from "./baseline";
export type {
VitalsBaselineValue,
VitalsBaselineOpts,
BaselineProfile,
} from "./baseline";
export { loadBaselineProfile } from "./baseline";
export type { BaselineProfile } from "./baseline";
export { computeDerivedMetric } from "./dispatch";
export type { DerivedComputeArgs } from "./dispatch";
// ── W2b vitals tier: passthrough re-frames + derived bands ───────────
export {
computeFitnessAge,
placeVo2Band,
fitnessAgeDeltaYears,
} from "./fitness-age";
export type { FitnessAgeValue, FitnessBand } from "./fitness-age";
export type { SleepScoreValue } from "./sleep-score";
export {
computeSixMinuteWalkBand,
placeSixMinuteWalkBand,
} from "./six-minute-walk";
export type { SixMinuteWalkValue, SixMinuteWalkBand } from "./six-minute-walk";
export { computeReadiness } from "./readiness";
export type { ReadinessValue, ReadinessComponentKey } from "./readiness";
export { computeVascularAgeDelta, placeVascularBand } from "./vascular-age";
export type { VascularAgeDeltaValue, VascularBand } from "./vascular-age";
export { computeCoincidentDeviation } from "./coincident-deviation";
export { computeHrvBalance, placeHrvBalance } from "./hrv-balance";
export type { HrvBalanceValue, HrvBalanceBand } from "./hrv-balance";
export type { WellnessScoreValue } from "./wellness-scores";
export { computeBmi, classifyBmi } from "./bmi";
export type { BmiValue, BmiBand, BmiCategory } from "./bmi";
// ── W3 composites (server-only compute engines) ──────────────────────
export {
computeSleepScore,
blendSleepSubScores,
reconstructNights,
sleepNeedMinutes,
scoreSufficiency,
scoreEfficiency,
scoreComposition,
scoreConsistency,
scoreTiming,
SLEEP_SUBSCORE_WEIGHTS,
} from "./sleep-score";
export type {
SleepScoreValue,
SleepScoreOpts,
SleepSubScore,
SleepSubScoreKey,
NightSummary,
} from "./sleep-score";
export {
computeReadiness,
blendReadinessComponents,
scoreDeviation,
READINESS_WEIGHTS,
READINESS_MIN_COMPONENTS,
} from "./readiness";
export type {
ReadinessValue,
ReadinessOpts,
ReadinessComponent,
ReadinessComponentKey,
} from "./readiness";
export {
computeCoincidentDeviation,
classifyDeviation,
COINCIDENT_FIRE_THRESHOLD,
COINCIDENT_MIN_BANDS,
} from "./coincident-deviation";
export type {
CoincidentDeviationValue,
CoincidentDeviationOpts,
VitalDeviation,
} from "./coincident-deviation";
// ── persisted nightly wellness scores (passthrough read) ─────────────
export {
computeWellnessScore,
bandWellnessScore,
WELLNESS_SCORE_TYPES,
} from "./wellness-scores";
export type {
WellnessScoreValue,
WellnessScoreBand,
WellnessScoreType,
WellnessScoreOpts,
} from "./wellness-scores";
// ── v1.11.0 (Epic B, Pillar 3) forecasting engine (server-only) ──────
export {
computeTrajectory,
fitOls,
predictionIntervalHalfWidth,
TRAJECTORY_MIN_R2,
TRAJECTORY_MIN_HISTORY_DAYS,
} from "./trajectory";
export type {
TrajectoryValue,
TrajectoryPoint,
TrajectoryOpts,
OlsFit,
} from "./trajectory";
// ── v1.34.0 same-time baseline for cumulative metrics (server-only) ──
export { computeSameTimeBaseline } from "./same-time-baseline";
export type {
SameTimeBaselineValue,
SameTimeBaselineOpts,
SameTimeBand,
} from "./same-time-baseline";
export { computeTrajectory } from "./trajectory";
export type { TrajectoryValue } from "./trajectory";
+1 -5
View File
@@ -39,11 +39,7 @@ import {
computeMoodDimensionSeries,
type MoodDimensionSummary,
} from "@/lib/insights/mood-dimension-series";
export {
computeMoodDimensionSeries,
type MoodDimensionPoint,
type MoodDimensionSummary,
} from "@/lib/insights/mood-dimension-series";
export { type MoodDimensionSummary } from "@/lib/insights/mood-dimension-series";
import { resolveUserTimezone } from "@/lib/tz/resolver";
import { annotate } from "@/lib/logging/context";
import { createCustomLabelResolver } from "@/lib/mood/custom-tags";
-3
View File
@@ -1,6 +1,5 @@
import { resolveProvider, resolveProviderChain } from "@/lib/ai/provider";
import {
AllProvidersFailedError,
runRawCompletionWithFallback,
type ProviderChainResolved,
} from "@/lib/ai/provider-runner";
@@ -299,5 +298,3 @@ export async function runStatusCompletion(
tokensUsed: result.tokensUsed ?? null,
};
}
export { AllProvidersFailedError };
-4
View File
@@ -41,9 +41,5 @@ export {
listTargets,
listTargetsBySource,
listDistinctTargets,
type LinkSourceKind,
type LinkTargetKind,
type LinkRequest,
type LinkResult,
type LinkedTarget,
} from "@/lib/links/link-service";
+11 -41
View File
@@ -1,47 +1,17 @@
/**
* HealthLog MCP server — barrel.
*
* A read-only-by-default Model Context Protocol surface that re-exports
* A read-only-by-default Model Context Protocol surface that exposes
* HealthLog's existing server-authoritative read paths over the MCP wire, so a
* user can query their own health data from any MCP-capable assistant. The tool
* / resource layer here is transport-agnostic; transports (stdio now, remote
* `/mcp` later) attach to `createMcpServer(ctx)`.
* / resource layer under this directory is transport-agnostic; transports
* attach to `createMcpServer(ctx)`.
*
* The barrel carries only what the remote `/mcp` transport route needs. The
* tool, resource, prompt and write registries are imported from their concrete
* module by `./server` and by their own tests — mirroring them here produced
* lines nothing imported.
*/
export { createMcpServer, MCP_SERVER_NAME, MCP_SERVER_VERSION } from "./server";
export { resolveMcpAuthContext, type McpAuthContext } from "./auth";
export { MCP_TOOLS, MCP_TOOL_NAMES, type McpToolDefinition } from "./tools";
export { MCP_WRITE_TOOLS, MCP_WRITE_TOOL_NAMES } from "./write-tools";
export {
logMcpMeasurement,
logMcpMood,
type McpMeasurementResult,
type McpMoodResult,
} from "./writes";
export {
MCP_RESOURCES,
MCP_RESOURCE_URIS,
type McpResourceDefinition,
} from "./resources";
export {
MCP_PROMPTS,
MCP_PROMPT_NAMES,
type McpPromptDefinition,
type McpPromptResult,
type McpPromptMessage,
} from "./prompts";
export {
getCorrelation,
compareMetric,
getMetricBaseline,
detectChangepoints,
resolveRichMetric,
type RichMetric,
} from "./rich-reads";
export {
SCOPE_HEALTH_READ,
SCOPE_HEALTH_WRITE,
SCOPE_WILDCARD,
tokenAllowsRead,
tokenAllowsWrite,
sessionBinding,
} from "./scopes";
export { createMcpServer } from "./server";
export { resolveMcpAuthContext } from "./auth";
export { SCOPE_HEALTH_READ } from "./scopes";
+2 -11
View File
@@ -1,17 +1,9 @@
export {
assertRecordSettingsAccess,
resolveGuardianRecordSettingsAccess,
type RecordSettingsAccess,
} from "./access";
export { toRecordSettingsDto, type RecordSettingsDto } from "./dto";
export { resolveGuardianRecordSettingsAccess } from "./access";
export { toRecordSettingsDto } from "./dto";
export { resolveManagedIntegrationState } from "./integrations";
export {
classifySettingsDestination,
isGuardianSettingsWriteAllowed,
isManageDelegateSettingsDestination,
SETTINGS_DESTINATION_INVENTORY,
type SettingsDestinationClassification,
type SettingsDestinationKind,
} from "./classification";
export {
isManagedRecordSettingsFamily,
@@ -22,6 +14,5 @@ export {
parseManagedRecordSettingsPatch,
safeParseManagedRecordSettingsPatch,
type ManagedRecordSettingsFamily,
type ManagedRecordSettingsPatch,
} from "./configuration";
export { assertRecordSettingsResponseForRecord } from "./response";
@@ -26,13 +26,6 @@ import {
type ReportSelection,
} from "./selection";
export {
savedReportProfileSchema,
parseSavedProfile,
SAVED_PROFILE_FALLBACK,
type SavedReportProfile,
} from "./profile-shape";
/**
* Resolve the owner's saved selection.
*
+1 -4
View File
@@ -11,7 +11,7 @@
* The template intersects the fenced tier at zero leaves, and
* `catalogue-guard.test.ts` fails the build if that stops being true.
*/
import { SENSITIVE_LEAF_IDS, type ReportLeafId } from "./catalogue";
import { type ReportLeafId } from "./catalogue";
/**
* Identity and insurer (the cover page a practice files the document under),
@@ -59,6 +59,3 @@ export function standardTemplateFor(
const hidden = new Set(hiddenLeaves);
return STANDARD_TEMPLATE_LEAVES.filter((leaf) => !hidden.has(leaf));
}
/** Exported so the purity guard reads the same set the panel does. */
export const SENSITIVE_LEAVES = SENSITIVE_LEAF_IDS;
-1
View File
@@ -49,7 +49,6 @@ export {
formatInUserTz,
userDayKey,
hourInTz,
type FormatInUserTzShape,
} from "./format";
const BERLIN_DAY_FORMATTER = new Intl.DateTimeFormat("en-US", {
-4
View File
@@ -19,7 +19,6 @@ import {
REMINDER_METRIC_MAX_CHARS,
} from "@/lib/ai/coach/reminders";
import {
SUGGESTED_ACTION_TYPES,
CHECKUP_LABEL_MAX_CHARS,
ACTION_NOTE_MAX_CHARS,
ACTION_METRIC_MAX_CHARS,
@@ -133,6 +132,3 @@ export const coachSuggestedActionSchema = z
export type CoachSuggestedActionInput = z.infer<
typeof coachSuggestedActionSchema
>;
/** Stable list of confirmable action types (mirrors the lib allowlist). */
export const COACH_SUGGESTED_ACTION_TYPES = SUGGESTED_ACTION_TYPES;
-3
View File
@@ -307,10 +307,7 @@ export type ListLabResultsInput = z.infer<typeof listLabResultsSchema>;
* implementation. Re-exported here for the existing import sites.
*/
export {
classifyAgainstEffectiveRange,
classifyReferenceRange,
formatReferenceRange,
resolveEffectiveReferenceRange,
type EffectiveReferenceRange,
type ReferenceRangeOrigin,
type ReferenceRangeStatus,