diff --git a/package.json b/package.json index d77e2ca..b44616f 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "dependencies": { "@ai-sdk/gateway": "^4.0.116", "@ai-sdk/vue": "^4.0.143", - "@comark/nuxt": "^0.7.0", + "@comark/nuxt": "^0.8.1", "@iconify-json/logos": "^1.2.16", "@iconify-json/lucide": "^1.2.145", "@iconify-json/simple-icons": "^1.2.100", @@ -68,10 +68,11 @@ "@vueuse/core": "^15.0.0", "ai": "^7.0.143", "beautiful-mermaid": "^1.1.3", - "comark": "^0.7.0", - "comark-content": "^0.4.1", + "comark": "^0.8.1", + "comark-content": "https://pkg.pr.new/comark-content@71b7837", "defu": "^6.1.7", "exsolve": "^1.1.3", + "forges": "https://pkg.pr.new/forges@1aba0ce", "js-yaml": "^5.5.0", "motion-v": "^2.8.0", "nuxt-agent-discovery": "^0.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba19231..c5c254b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,8 +176,8 @@ importers: specifier: ^4.0.143 version: 4.0.143(vue@3.5.44(typescript@6.0.3))(zod@4.6.7) '@comark/nuxt': - specifier: ^0.7.0 - version: 0.7.0(beautiful-mermaid@1.1.3)(magicast@0.5.5)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@oxc-project/types@0.153.0)(@types/node@26.6.2)(@vercel/functions@3.10.1(ws@8.22.0))(@vue/compiler-sfc@3.5.44)(acorn@8.18.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(mlly@1.8.2)(optionator@0.9.4)(oxc-parser@0.153.0)(rolldown@1.2.12)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.12)(rollup@4.64.10))(rollup@4.64.10)(srvx@1.0.5)(supports-color@10.2.2)(terser@5.51.2)(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))(vue-tsc@3.3.13(typescript@6.0.3))(yaml@2.9.1))(rangi@2.2.0)(shiki@4.5.0)(vue@3.5.44(typescript@6.0.3)) + specifier: ^0.8.1 + version: 0.8.1(827e3513c3006b144ecaf11468f2492d) '@iconify-json/logos': specifier: ^1.2.16 version: 1.2.17 @@ -248,17 +248,20 @@ importers: specifier: ^1.1.3 version: 1.1.3 comark: - specifier: ^0.7.0 - version: 0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) + specifier: ^0.8.1 + version: 0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) comark-content: - specifier: ^0.4.1 - version: 0.4.1(@vercel/functions@3.10.1(ws@8.22.0))(beautiful-mermaid@1.1.3)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(rangi@2.2.0)(shiki@4.5.0) + specifier: https://pkg.pr.new/comark-content@71b7837 + version: https://pkg.pr.new/comark-content@71b7837(@vercel/functions@3.10.1(ws@8.22.0))(beautiful-mermaid@1.1.3)(db0@0.3.4)(forges@https://pkg.pr.new/forges@1aba0ce)(ioredis@5.11.1(supports-color@10.2.2))(rangi@2.2.0)(shiki@4.5.0) defu: specifier: ^6.1.7 version: 6.1.7 exsolve: specifier: ^1.1.3 version: 1.1.3 + forges: + specifier: https://pkg.pr.new/forges@1aba0ce + version: https://pkg.pr.new/forges@1aba0ce js-yaml: specifier: ^5.5.0 version: 5.5.0 @@ -267,7 +270,7 @@ importers: version: 2.8.0(@vueuse/core@15.0.0(vue@3.5.44(typescript@6.0.3)))(vue@3.5.44(typescript@6.0.3)) nuxt-agent-discovery: specifier: ^0.7.1 - version: 0.7.1(5ea408f09b9c40e44fa6d8fad9492256) + version: 0.7.1(9eec8c9f09098cc3ff5c450a773d686f) nuxt-llms: specifier: ^0.3.0 version: 0.3.0(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))) @@ -545,18 +548,18 @@ packages: '@colordx/core@7.3.0': resolution: {integrity: sha512-LVzTTPhX7wpy7TkGjouA9zbbCBIw92RGm7ZQqSKFE0oYE3sMx2FGXz90eVpgw7k/+wrrY+qJ86nHXifZWMS5jA==} - '@comark/nuxt@0.7.0': - resolution: {integrity: sha512-cbYIw7EVp8ZjTgkS3Q/M1av0T+odX/vTdDd865IPDX/Fmtv1pNLg4TxrHTC3w4z9zFq5Gmyu4U1sbirqmSKIfg==} + '@comark/nuxt@0.8.1': + resolution: {integrity: sha512-Kc3SVGjKYfNN4h4dm9SNnQKnMl+bp/PvrZ11WU7qCl8ohdxyl5gjEbjhLT223TzSmbHvCtmxzlK/hXsUHXGA2Q==} peerDependencies: nuxt: ^4.0.0 - '@comark/vue@0.7.0': - resolution: {integrity: sha512-C63ObcCAiM5DKVDhWPz27pCRsvl0IG9XZJDGjFef1h/V4kS6lEjsoyepLdl4pvAPoSn6U0oGiJTgHLj5GCw2rQ==} + '@comark/vue@0.8.1': + resolution: {integrity: sha512-zMxShbPfynnSU5AWH7IeXe2RYm8YIqb5r5XC6eX2Rzv5Ed3/jypbCwp2o1JZAEV0/S3Mczil7Nnb0mzMaOAvHA==} peerDependencies: beautiful-mermaid: ^1.1.3 - katex: ^0.17.0 - shiki: ^4.3.1 - vue: ^3.5.0 + katex: ^0.18.7 + shiki: ^4.4.3 + vue: ^3.5.43 peerDependenciesMeta: beautiful-mermaid: optional: true @@ -1221,9 +1224,35 @@ packages: resolution: {integrity: sha512-0Xi3tgwN77w43Q8GCPIrvWmF1J7Peehkts44E0uKNIml9lB8WoUn8YxyUjxBv47XtVR86NWoWALAT+/IEMHJEA==} engines: {node: '>=18.12.0'} - '@nuxt/kit@4.4.8': - resolution: {integrity: sha512-ZUlZ5iYfyfJFDPluhn6ZxFWcsuxWbLnZBc8w3MAROcQ4lYfZ+qFpALBLSNlpc0zhOa++33EE+5PEbOAdVIY+dw==} - engines: {node: '>=18.12.0'} + '@nuxt/kit@4.6.1': + resolution: {integrity: sha512-ld5+/o4EMqyw6Qy+SdEYkezfprS87+p+xOBhnQgXwyrg1EdtILfLeudQ+hX6UyCnsoF6o0SOw3pjN1P4Tg9O0w==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@nuxt/schema': ^3.0.0 || ^4.0.0 || ^5.0.0-0 + confbox: '>=0.1.0' + dotenv: '*' + giget: '>=3.1.0' + jiti: ^2.0.0 + mlly: ^1.2.0 + oxc-parser: '>=0.56.0' + rolldown: '>=1.0.0' + peerDependenciesMeta: + '@nuxt/schema': + optional: true + confbox: + optional: true + dotenv: + optional: true + giget: + optional: true + jiti: + optional: true + mlly: + optional: true + oxc-parser: + optional: true + rolldown: + optional: true '@nuxt/kit@4.6.2': resolution: {integrity: sha512-Vn9DJobc30WdR1vrlRcEAFSFy7NV5CWq3o6gxsfrdGb2FmCh0fuDyvbZC30rm2enyiPaOUPafKctFE/ToBjybw==} @@ -3364,17 +3393,23 @@ packages: colortranslator@5.0.0: resolution: {integrity: sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w==} - comark-content@0.4.1: - resolution: {integrity: sha512-z0nuo3PM53FwBYbxP4rNrUo1QW7jv8YO44HDYaGm2Wx4pmHsLqKdsA6CiHcSOaURze6m7my0Z0YFaLL77LtDUA==} + comark-content@https://pkg.pr.new/comark-content@71b7837: + resolution: {integrity: sha512-C6JqpgTYNfAXusk1L7DcnE37q8kMwebflg6KVVKF6COCiYmdkWVH5xY91nAQhFE/iLmCqqL6If//JP2x/DUaPQ==, tarball: https://pkg.pr.new/comark-content@71b7837} + version: 0.4.1 hasBin: true + peerDependencies: + forges: ^0.2.0 + peerDependenciesMeta: + forges: + optional: true - comark@0.7.0: - resolution: {integrity: sha512-680hLtUOBcvBEJCD+iCU20jk5TrIJlIcE6X4npdC4x7LBhCvmiYJgByozR2fKav6DYw7AYoXsJVae65kXV6Qhw==} + comark@0.8.1: + resolution: {integrity: sha512-oz2Nrt3o/e5SRYVgd3PlBwDUp5P4PWYZbVggORI02rLF63WEjHYkPJkxZh2Hwfpl0J4jDLspe6aeUraNplAsAw==} peerDependencies: beautiful-mermaid: ^1.1.3 - katex: ^0.17.0 + katex: ^0.18.7 rangi: ^2.2.0 - shiki: ^4.3.1 + shiki: ^4.4.3 peerDependenciesMeta: beautiful-mermaid: optional: true @@ -3620,22 +3655,6 @@ packages: resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} engines: {node: '>=0.3.1'} - dom-serializer@3.1.1: - resolution: {integrity: sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==} - engines: {node: '>=20.19.0'} - - domelementtype@3.0.0: - resolution: {integrity: sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==} - engines: {node: '>=20.19.0'} - - domhandler@6.0.1: - resolution: {integrity: sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==} - engines: {node: '>=20.19.0'} - - domutils@4.0.2: - resolution: {integrity: sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==} - engines: {node: '>=20.19.0'} - dot-prop@10.2.0: resolution: {integrity: sha512-BTJ9aZYL3vCfZlZOBLy9v8TUqWGQ0pzFnygKwFZt5udj6viBoFIBviKPUoZLDCPn1FoXffv6McQFDenrm5Krfw==} engines: {node: '>=20'} @@ -4091,6 +4110,11 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + forges@https://pkg.pr.new/forges@1aba0ce: + resolution: {integrity: sha512-T3oVX1DKhcuvs0ovqK//W+mgoWGQzo5CZqlyzqQJcxF2XZ/N5PRLAq4YoIuAL0oK/tihre2fLaPcIFpr3vCEUQ==, tarball: https://pkg.pr.new/forges@1aba0ce} + version: 0.2.0 + engines: {node: '>=22.18'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -4266,10 +4290,6 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@12.0.0: - resolution: {integrity: sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==} - engines: {node: '>=20.19.0'} - http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -4742,8 +4762,8 @@ packages: resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} engines: {node: '>=18'} - markdown-exit@1.1.0-beta.2: - resolution: {integrity: sha512-8CzMGVlFZ4DEfnc8KU+4ycUW2SIOuiXqCHD7z51ecVEi/weyc0f2ylQbCm4KoKuVlTZSuMUMnWT0hTyquZ7anQ==} + markdown-exit@1.3.0: + resolution: {integrity: sha512-bsqlcm3Hk1ukcG1Al83pp3JjVobu4w1mpZz47OzLw8bCY8XchkCX+PXC32l2TH4nZ7p5WFg2NwpnLDXkY1X7Yw==} marked@17.0.6: resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} @@ -6894,23 +6914,32 @@ snapshots: '@colordx/core@7.3.0': {} - '@comark/nuxt@0.7.0(beautiful-mermaid@1.1.3)(magicast@0.5.5)(nuxt@4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@oxc-project/types@0.153.0)(@types/node@26.6.2)(@vercel/functions@3.10.1(ws@8.22.0))(@vue/compiler-sfc@3.5.44)(acorn@8.18.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(mlly@1.8.2)(optionator@0.9.4)(oxc-parser@0.153.0)(rolldown@1.2.12)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.12)(rollup@4.64.10))(rollup@4.64.10)(srvx@1.0.5)(supports-color@10.2.2)(terser@5.51.2)(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))(vue-tsc@3.3.13(typescript@6.0.3))(yaml@2.9.1))(rangi@2.2.0)(shiki@4.5.0)(vue@3.5.44(typescript@6.0.3))': + '@comark/nuxt@0.8.1(827e3513c3006b144ecaf11468f2492d)': dependencies: - '@comark/vue': 0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0)(vue@3.5.44(typescript@6.0.3)) - '@nuxt/kit': 4.4.8(magicast@0.5.5) - comark: 0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) + '@comark/vue': 0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0)(vue@3.5.44(typescript@6.0.3)) + '@nuxt/kit': 4.6.1(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))) + comark: 0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) nuxt: 4.6.2(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@oxc-project/types@0.153.0)(@types/node@26.6.2)(@vercel/functions@3.10.1(ws@8.22.0))(@vue/compiler-sfc@3.5.44)(acorn@8.18.0)(confbox@0.3.1)(db0@0.3.4)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(ioredis@5.11.1(supports-color@10.2.2))(lightningcss@1.33.0)(mlly@1.8.2)(optionator@0.9.4)(oxc-parser@0.153.0)(rolldown@1.2.12)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.12)(rollup@4.64.10))(rollup@4.64.10)(srvx@1.0.5)(supports-color@10.2.2)(terser@5.51.2)(typescript@6.0.3)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))(vue-tsc@3.3.13(typescript@6.0.3))(yaml@2.9.1) transitivePeerDependencies: + - '@nuxt/schema' - beautiful-mermaid + - confbox + - dotenv + - giget + - jiti - katex - - magicast + - magic-string + - mlly + - oxc-parser - rangi + - rolldown - shiki + - unplugin - vue - '@comark/vue@0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0)(vue@3.5.44(typescript@6.0.3))': + '@comark/vue@0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0)(vue@3.5.44(typescript@6.0.3))': dependencies: - comark: 0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) + comark: 0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) vue: 3.5.44(typescript@6.0.3) optionalDependencies: beautiful-mermaid: 1.1.3 @@ -7679,30 +7708,38 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/kit@4.4.8(magicast@0.5.5)': + '@nuxt/kit@4.6.1(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1)))': dependencies: - c12: 3.3.4(magicast@0.5.5) consola: 3.4.2 defu: 6.1.7 destr: 2.0.5 - errx: 0.1.2 + errx: 0.2.2 exsolve: 1.1.3 ignore: 7.0.12 - jiti: 2.7.0 klona: 2.0.6 - mlly: 1.8.2 - ohash: 2.0.12 + microdiff: 1.6.0 + nostics: 1.3.0 + package-manager-detector: 1.9.0 pathe: 2.0.3 - pkg-types: 2.3.3 rc9: 3.1.0 scule: 1.3.0 - semver: 7.8.5 + std-env: 4.3.0 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - ufo: 1.6.4 - unctx: 2.5.0 - untyped: 2.0.0 + unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))) + verkit: 0.5.0 + optionalDependencies: + '@nuxt/schema': 4.6.2 + confbox: 0.3.1 + dotenv: 17.4.2 + giget: 3.3.1 + jiti: 2.7.0 + mlly: 1.8.2 + oxc-parser: 0.153.0 + rolldown: 1.2.12 transitivePeerDependencies: - - magicast + - magic-string + - unplugin '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1)))': dependencies: @@ -9876,10 +9913,10 @@ snapshots: colortranslator@5.0.0: {} - comark-content@0.4.1(@vercel/functions@3.10.1(ws@8.22.0))(beautiful-mermaid@1.1.3)(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2))(rangi@2.2.0)(shiki@4.5.0): + comark-content@https://pkg.pr.new/comark-content@71b7837(@vercel/functions@3.10.1(ws@8.22.0))(beautiful-mermaid@1.1.3)(db0@0.3.4)(forges@https://pkg.pr.new/forges@1aba0ce)(ioredis@5.11.1(supports-color@10.2.2))(rangi@2.2.0)(shiki@4.5.0): dependencies: citty: 0.2.2 - comark: 0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) + comark: 0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) hookable: 6.1.2 jiti: 2.7.0 ofetch: 1.5.1 @@ -9888,6 +9925,8 @@ snapshots: slugify: 1.6.9 ufo: 1.6.4 unstorage: 1.17.6(@vercel/functions@3.10.1(ws@8.22.0))(db0@0.3.4)(ioredis@5.11.1(supports-color@10.2.2)) + optionalDependencies: + forges: https://pkg.pr.new/forges@1aba0ce transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9913,12 +9952,11 @@ snapshots: - shiki - uploadthing - comark@0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0): + comark@0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0): dependencies: entities: 8.1.0 - htmlparser2: 12.0.0 js-yaml: 5.5.0 - markdown-exit: 1.1.0-beta.2 + markdown-exit: 1.3.0 optionalDependencies: beautiful-mermaid: 1.1.3 rangi: 2.2.0 @@ -10081,24 +10119,6 @@ snapshots: diff@9.0.0: {} - dom-serializer@3.1.1: - dependencies: - domelementtype: 3.0.0 - domhandler: 6.0.1 - entities: 8.1.0 - - domelementtype@3.0.0: {} - - domhandler@6.0.1: - dependencies: - domelementtype: 3.0.0 - - domutils@4.0.2: - dependencies: - dom-serializer: 3.1.1 - domelementtype: 3.0.0 - domhandler: 6.0.1 - dot-prop@10.2.0: dependencies: type-fest: 5.10.0 @@ -10703,6 +10723,8 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + forges@https://pkg.pr.new/forges@1aba0ce: {} + forwarded@0.2.0: {} fraction.js@5.3.4: {} @@ -10873,13 +10895,6 @@ snapshots: html-void-elements@3.0.0: {} - htmlparser2@12.0.0: - dependencies: - domelementtype: 3.0.0 - domhandler: 6.0.1 - domutils: 4.0.2 - entities: 8.1.0 - http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -11295,7 +11310,7 @@ snapshots: type-fest: 4.41.0 web-worker: 1.5.0 - markdown-exit@1.1.0-beta.2: + markdown-exit@1.3.0: dependencies: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 @@ -11608,7 +11623,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nuxt-agent-discovery@0.7.1(5ea408f09b9c40e44fa6d8fad9492256): + nuxt-agent-discovery@0.7.1(9eec8c9f09098cc3ff5c450a773d686f): dependencies: '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))) defu: 6.1.7 @@ -11619,7 +11634,7 @@ snapshots: '@nuxtjs/mcp-toolkit': 0.24.2(@nuxt/schema@4.6.2)(@vue/compiler-sfc@3.5.44)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(h3@1.15.11)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(rollup@4.64.10)(supports-color@10.2.2)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1)))(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))(vue@3.5.44(typescript@6.0.3))(zod@4.6.7) '@nuxtjs/robots': 7.0.2(c9a37d20c8fa2d84be94f7552e119e1b) '@nuxtjs/sitemap': 9.1.0(6b527bd25a2b56867661506ca0d66a41) - comark: 0.7.0(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) + comark: 0.8.1(beautiful-mermaid@1.1.3)(rangi@2.2.0)(shiki@4.5.0) nuxt-llms: 0.3.0(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.153.0)(rolldown@1.2.12)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(rollup@4.64.10)(vite@8.3.4(@types/node@26.6.2)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1))) transitivePeerDependencies: - '@nuxt/schema' diff --git a/server/api/code-explorer/[...path].get.ts b/server/api/code-explorer/[...path].get.ts index 1bd84ed..f2515ba 100644 --- a/server/api/code-explorer/[...path].get.ts +++ b/server/api/code-explorer/[...path].get.ts @@ -2,11 +2,11 @@ import { resolve } from 'node:path' import { parseMarkdown, type MarkdownDocument } from 'comark' import rangi from 'comark/plugins/rangi' import fs from 'comark-content/sources/fs' -import github from 'comark-content/sources/github' +import forge from 'comark-content/sources/forge' import { geistTheme } from '../../../utils/geist.ts' // A read source for one example directory. Dev: working tree. Prod: authenticated GitHub — the repo may be -// private, so jsDelivr / unauthenticated raw are out. Mirrors {@link contentSource}'s dev/prod split. +// private, so the provider carries the token. Mirrors {@link contentSource}'s dev/prod split. function exampleSource(repo: string, branch: string, dirPath: string) { const { docs } = useRuntimeConfig() @@ -15,14 +15,7 @@ function exampleSource(repo: string, branch: string, dirPath: string) { return fs(resolve(docs.repoRoot, dirPath)) } - return github({ - repo, - branch, - path: dirPath, - token: githubToken(), - // `branch` is typically an immutable commit SHA => cache hard. - ttl: 60 * 60 * 24, - }) + return forge({ provider: githubProvider(), repo, ref: branch, path: dirPath }) } const CONCURRENCY = 10 diff --git a/server/utils/content.ts b/server/utils/content.ts index 2539c7f..b201804 100644 --- a/server/utils/content.ts +++ b/server/utils/content.ts @@ -1,6 +1,6 @@ import { type ContentSource, DEFAULT_CONTENT_NAME } from 'comark-content' import fs from 'comark-content/sources/fs' -import github from 'comark-content/sources/github' +import forge from 'comark-content/sources/forge' import { withSnapshot } from 'comark-content/sources/snapshot' import { createRuntimeContentInstance } from '../../utils/factory.ts' @@ -151,13 +151,11 @@ function contentSource(): ContentSource { } } - const source = github({ + const source = forge({ + provider: githubProvider(), repo: githubRepo(), - branch: targetBranch(), + ref: targetBranch(), path: docs.contentDir, - token: githubToken(), - // Reads happen through `withRef()`, an immutable commit => cache hard. - ttl: 60 * 60 * 24, }) // Snaphot build during build time by `modules/snapshot/` is used. diff --git a/server/utils/github.ts b/server/utils/github.ts index c163794..556123f 100644 --- a/server/utils/github.ts +++ b/server/utils/github.ts @@ -1,5 +1,6 @@ import { createHash, timingSafeEqual } from 'node:crypto' import { createStorage } from 'unstorage' +import { github } from 'forges/github' import { fetchLastContentCommit } from '../../utils/github' export interface GitHubCommit { @@ -41,6 +42,12 @@ export function githubToken(): string | undefined { return docs.githubToken || process.env.GITHUB_TOKEN || undefined } +/** A forges GitHub provider, authenticated with {@link githubToken} when one is set. */ +export function githubProvider() { + const token = githubToken() + return github(token ? { auth: { type: 'token', token } } : {}) +} + /** Production branch, resolved per request: content pushes skip redeploys (`vercel.json` `ignoreCommand`). */ export function targetBranch(): string { return process.env.VERCEL_GIT_COMMIT_REF || useRuntimeConfig().docs.github.branch || 'main' diff --git a/test/content-contract.test.ts b/test/content-contract.test.ts index 8825ba9..ef3a297 100644 --- a/test/content-contract.test.ts +++ b/test/content-contract.test.ts @@ -13,7 +13,7 @@ import { describe, expect, it } from 'vitest' import { comarkContent, DEFAULT_CONTENT_NAME, readArtifact } from 'comark-content' import { writeSnapshots } from 'comark-content/build' import fsSource from 'comark-content/sources/fs' -import githubSource from 'comark-content/sources/github' +import forgeSource from 'comark-content/sources/forge' import snapshot, { withSnapshot } from 'comark-content/sources/snapshot' import { createContentClient } from 'comark-content/client' import { comarkContent as runtimeComarkContent, DEFAULT_CONTENT_NAME as RUNTIME_CONTENT_NAME, readArtifact as runtimeReadArtifact } from 'comark-content/runtime' @@ -48,7 +48,7 @@ describe('comark-content contract', () => { comarkContent, readArtifact, fsSource, - githubSource, + forgeSource, createContentClient, runtimeComarkContent, runtimeReadArtifact, diff --git a/test/fixtures/consumer/pnpm-workspace.yaml b/test/fixtures/consumer/pnpm-workspace.yaml index 8192926..fc548bc 100644 --- a/test/fixtures/consumer/pnpm-workspace.yaml +++ b/test/fixtures/consumer/pnpm-workspace.yaml @@ -9,3 +9,7 @@ minimumReleaseAgeExclude: - comark - comark-content - nuxt-agent-discovery + +# TEMPORARY: the layer depends on pkg.pr.new builds of comark-content and forges, which pnpm +# rejects as exotic subdependencies. Remove once comark-content 0.5 and forges 0.3.0 are released. +blockExoticSubdeps: false