diff --git a/apps/dashboard/package-lock.json b/apps/dashboard/package-lock.json index 59d2c8f5c..f102b68de 100644 --- a/apps/dashboard/package-lock.json +++ b/apps/dashboard/package-lock.json @@ -67,7 +67,7 @@ "prom-client": "^15.1.3", "swagger2openapi": "^7.0.8", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/jmespath": "^0.15.2", @@ -9465,15 +9465,6 @@ "node": ">=6" } }, - "node_modules/shadcn/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/sharp": { "version": "0.35.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", @@ -11388,9 +11379,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 22739b3eb..bf04013f0 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -79,6 +79,7 @@ "postcss": "8.5.23" }, "proxy-addr": "2.0.8", - "source-map-js": "1.2.2" + "source-map-js": "1.2.2", + "zod": "4.6.7" } } diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 002cdf845..f031395fc 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -2,7 +2,7 @@ "name": "clawql-desktop", "productName": "ClawQL", "version": "7.0.0", - "description": "ClawQL Desktop — local provider secrets + Agent Chat (macOS, Windows, Linux)", + "description": "ClawQL Desktop \u2014 local provider secrets + Agent Chat (macOS, Windows, Linux)", "license": "Apache-2.0", "private": true, "type": "module", @@ -25,7 +25,7 @@ "build": { "appId": "com.clawql.desktop", "productName": "ClawQL", - "copyright": "Copyright © ClawQL", + "copyright": "Copyright \u00a9 ClawQL", "protocols": [ { "name": "ClawQL", @@ -83,7 +83,7 @@ "icon": "build/icon.png", "desktop": { "Name": "ClawQL", - "Comment": "Local ClawQL console — provider secrets and Agent Chat", + "Comment": "Local ClawQL console \u2014 provider secrets and Agent Chat", "Categories": "Development;Utility;" }, "artifactName": "ClawQL-${version}.${ext}" @@ -98,6 +98,7 @@ }, "overrides": { "tar": "7.5.22", - "builder-util-runtime": "9.7.0" + "builder-util-runtime": "9.7.0", + "zod": "4.6.7" } } diff --git a/apps/docs/package-lock.json b/apps/docs/package-lock.json index 4a0d2aa17..5a1c968e5 100644 --- a/apps/docs/package-lock.json +++ b/apps/docs/package-lock.json @@ -7945,16 +7945,6 @@ "devtools-protocol": "*" } }, - "node_modules/chromium-bidi/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/ci-info": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", @@ -17920,9 +17910,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "dev": true, "license": "MIT", "funding": { diff --git a/apps/docs/package.json b/apps/docs/package.json index e3d1a24e3..5a9057021 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -109,6 +109,7 @@ "brace-expansion": "5.0.12", "dompurify": "3.4.17", "proxy-addr": "2.0.8", - "source-map-js": "1.2.2" + "source-map-js": "1.2.2", + "zod": "4.6.7" } } diff --git a/apps/mobile/package-lock.json b/apps/mobile/package-lock.json index 3cb112e4d..fa70dbdff 100644 --- a/apps/mobile/package-lock.json +++ b/apps/mobile/package-lock.json @@ -8916,9 +8916,9 @@ } }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 119886b70..1f38abf89 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -48,7 +48,8 @@ }, "overrides": { "uuid": "11.1.1", - "decode-uri-component": "0.5.0" + "decode-uri-component": "0.5.0", + "zod": "4.6.7" }, "scripts": { "start": "EXPO_PUBLIC_CLAWQL_FIXTURE=1 expo start", diff --git a/apps/www/package-lock.json b/apps/www/package-lock.json index 4e921f021..7e1160693 100644 --- a/apps/www/package-lock.json +++ b/apps/www/package-lock.json @@ -6861,9 +6861,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "dev": true, "license": "MIT", "funding": { diff --git a/apps/www/package.json b/apps/www/package.json index 859c29050..b323000cb 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -52,6 +52,7 @@ "sharp": "0.35.5", "postcss": "8.5.23", "nanoid": "3.3.18", - "source-map-js": "1.2.2" + "source-map-js": "1.2.2", + "zod": "4.6.7" } } diff --git a/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-catalog-off-n2k.json b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-catalog-off-n2k.json new file mode 100644 index 000000000..8b5309106 --- /dev/null +++ b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-catalog-off-n2k.json @@ -0,0 +1,428 @@ +{ + "measuredAt": "2026-10-23T18:25:19.006Z", + "n": 2000, + "operationId": "dns-records-for-a-zone-list-dns-records", + "runtime": "bun", + "bun_smol": true, + "node_max_old_space_mb": null, + "trace_gc": false, + "plateau": { + "anonymous_mb_median": 145.41, + "heap_used_mb_median": null, + "native_anon_minus_heap_mb_median": null, + "samples": 5 + }, + "series_ends": { + "first": { + "i": 0, + "rss_mb": 126.68, + "anonymous_mb": 86.93, + "pss_mb": 122.53, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + "last": { + "i": 2000, + "rss_mb": 187.54, + "anonymous_mb": 145.41, + "pss_mb": 183.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + }, + "latency_ms": { + "p50": 2.3223149999998896, + "p99": 5.1037939999999935, + "p999": 9.176361000000043 + }, + "gc": { + "pause_count": 0, + "pause_ms_p50": null, + "pause_ms_p99": null, + "pause_ms_max": null, + "pause_ms_sum": null + }, + "interpretation": "incomplete_samples", + "series": [ + { + "i": 0, + "rss_mb": 126.68, + "anonymous_mb": 86.93, + "pss_mb": 122.53, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1, + "rss_mb": 129.49, + "anonymous_mb": 89.5, + "pss_mb": 125.3, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 50, + "rss_mb": 159, + "anonymous_mb": 117.46, + "pss_mb": 154.81, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 100, + "rss_mb": 166.99, + "anonymous_mb": 125.45, + "pss_mb": 162.8, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 150, + "rss_mb": 167.98, + "anonymous_mb": 126.32, + "pss_mb": 163.78, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 200, + "rss_mb": 171.03, + "anonymous_mb": 129.32, + "pss_mb": 166.83, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 250, + "rss_mb": 178.04, + "anonymous_mb": 136.27, + "pss_mb": 173.84, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 300, + "rss_mb": 173.04, + "anonymous_mb": 131.27, + "pss_mb": 168.84, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 350, + "rss_mb": 171.66, + "anonymous_mb": 129.83, + "pss_mb": 167.46, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 400, + "rss_mb": 175.29, + "anonymous_mb": 133.4, + "pss_mb": 171.1, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 450, + "rss_mb": 177.7, + "anonymous_mb": 135.81, + "pss_mb": 173.51, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 500, + "rss_mb": 183.25, + "anonymous_mb": 141.36, + "pss_mb": 179.06, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 550, + "rss_mb": 186.58, + "anonymous_mb": 144.69, + "pss_mb": 182.38, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 600, + "rss_mb": 184.18, + "anonymous_mb": 142.22, + "pss_mb": 179.98, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 650, + "rss_mb": 182.11, + "anonymous_mb": 140.16, + "pss_mb": 177.91, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 700, + "rss_mb": 183.08, + "anonymous_mb": 141.13, + "pss_mb": 178.88, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 750, + "rss_mb": 185.13, + "anonymous_mb": 143.18, + "pss_mb": 180.94, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 800, + "rss_mb": 183.41, + "anonymous_mb": 141.46, + "pss_mb": 179.22, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 850, + "rss_mb": 186.12, + "anonymous_mb": 144.16, + "pss_mb": 181.92, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 900, + "rss_mb": 184.57, + "anonymous_mb": 142.62, + "pss_mb": 180.37, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 950, + "rss_mb": 180.29, + "anonymous_mb": 138.34, + "pss_mb": 176.1, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1000, + "rss_mb": 180.03, + "anonymous_mb": 138.07, + "pss_mb": 175.83, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1050, + "rss_mb": 189.32, + "anonymous_mb": 147.37, + "pss_mb": 185.12, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1100, + "rss_mb": 199.74, + "anonymous_mb": 157.79, + "pss_mb": 195.54, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1150, + "rss_mb": 192.53, + "anonymous_mb": 150.57, + "pss_mb": 188.33, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1200, + "rss_mb": 188.5, + "anonymous_mb": 146.55, + "pss_mb": 184.31, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1250, + "rss_mb": 188, + "anonymous_mb": 146.04, + "pss_mb": 183.8, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1300, + "rss_mb": 188.06, + "anonymous_mb": 146.05, + "pss_mb": 183.87, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1350, + "rss_mb": 187.42, + "anonymous_mb": 145.41, + "pss_mb": 183.22, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1400, + "rss_mb": 188.57, + "anonymous_mb": 146.56, + "pss_mb": 184.38, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1450, + "rss_mb": 188.05, + "anonymous_mb": 146.04, + "pss_mb": 183.85, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1500, + "rss_mb": 188.87, + "anonymous_mb": 146.79, + "pss_mb": 184.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1550, + "rss_mb": 188.4, + "anonymous_mb": 146.33, + "pss_mb": 184.21, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1600, + "rss_mb": 188.62, + "anonymous_mb": 146.55, + "pss_mb": 184.42, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1650, + "rss_mb": 186.27, + "anonymous_mb": 144.14, + "pss_mb": 182.08, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1700, + "rss_mb": 186.33, + "anonymous_mb": 144.2, + "pss_mb": 182.13, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1750, + "rss_mb": 185.93, + "anonymous_mb": 143.8, + "pss_mb": 181.74, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1800, + "rss_mb": 186.38, + "anonymous_mb": 144.25, + "pss_mb": 182.18, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1850, + "rss_mb": 186.78, + "anonymous_mb": 144.65, + "pss_mb": 182.58, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1900, + "rss_mb": 192.37, + "anonymous_mb": 150.24, + "pss_mb": 188.17, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1950, + "rss_mb": 188.55, + "anonymous_mb": 146.42, + "pss_mb": 184.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 2000, + "rss_mb": 187.54, + "anonymous_mb": 145.41, + "pss_mb": 183.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + ] +} diff --git a/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-catalog-on-n2k.json b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-catalog-on-n2k.json new file mode 100644 index 000000000..a6d2a52c9 --- /dev/null +++ b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-catalog-on-n2k.json @@ -0,0 +1,428 @@ +{ + "measuredAt": "2026-10-23T18:25:06.764Z", + "n": 2000, + "operationId": "dns-records-for-a-zone-list-dns-records", + "runtime": "bun", + "bun_smol": true, + "node_max_old_space_mb": null, + "trace_gc": false, + "plateau": { + "anonymous_mb_median": 138.44, + "heap_used_mb_median": null, + "native_anon_minus_heap_mb_median": null, + "samples": 5 + }, + "series_ends": { + "first": { + "i": 0, + "rss_mb": 124.32, + "anonymous_mb": 84.99, + "pss_mb": 120.17, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + "last": { + "i": 2000, + "rss_mb": 180.73, + "anonymous_mb": 138.91, + "pss_mb": 176.53, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + }, + "latency_ms": { + "p50": 2.2293930000005275, + "p99": 5.3030119999993985, + "p999": 11.84785600000032 + }, + "gc": { + "pause_count": 0, + "pause_ms_p50": null, + "pause_ms_p99": null, + "pause_ms_max": null, + "pause_ms_sum": null + }, + "interpretation": "incomplete_samples", + "series": [ + { + "i": 0, + "rss_mb": 124.32, + "anonymous_mb": 84.99, + "pss_mb": 120.17, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1, + "rss_mb": 127.82, + "anonymous_mb": 88.28, + "pss_mb": 123.63, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 50, + "rss_mb": 156.21, + "anonymous_mb": 115.07, + "pss_mb": 152.01, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 100, + "rss_mb": 166.71, + "anonymous_mb": 125.43, + "pss_mb": 162.52, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 150, + "rss_mb": 166.71, + "anonymous_mb": 125.31, + "pss_mb": 162.51, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 200, + "rss_mb": 168.9, + "anonymous_mb": 127.44, + "pss_mb": 164.71, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 250, + "rss_mb": 170.3, + "anonymous_mb": 128.79, + "pss_mb": 166.1, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 300, + "rss_mb": 171.56, + "anonymous_mb": 130.05, + "pss_mb": 167.37, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 350, + "rss_mb": 169.87, + "anonymous_mb": 128.32, + "pss_mb": 165.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 400, + "rss_mb": 176.54, + "anonymous_mb": 134.94, + "pss_mb": 172.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 450, + "rss_mb": 178.3, + "anonymous_mb": 136.7, + "pss_mb": 174.1, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 500, + "rss_mb": 181.64, + "anonymous_mb": 140.03, + "pss_mb": 177.44, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 550, + "rss_mb": 178.23, + "anonymous_mb": 136.62, + "pss_mb": 174.03, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 600, + "rss_mb": 179.13, + "anonymous_mb": 137.46, + "pss_mb": 174.94, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 650, + "rss_mb": 177.53, + "anonymous_mb": 135.86, + "pss_mb": 173.33, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 700, + "rss_mb": 178.49, + "anonymous_mb": 136.82, + "pss_mb": 174.29, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 750, + "rss_mb": 180.48, + "anonymous_mb": 138.82, + "pss_mb": 176.29, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 800, + "rss_mb": 177.48, + "anonymous_mb": 135.81, + "pss_mb": 173.28, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 850, + "rss_mb": 179.87, + "anonymous_mb": 138.2, + "pss_mb": 175.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 900, + "rss_mb": 177.77, + "anonymous_mb": 136.09, + "pss_mb": 173.57, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 950, + "rss_mb": 178.03, + "anonymous_mb": 136.36, + "pss_mb": 173.83, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1000, + "rss_mb": 178.12, + "anonymous_mb": 136.45, + "pss_mb": 173.92, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1050, + "rss_mb": 193.07, + "anonymous_mb": 151.4, + "pss_mb": 188.88, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1100, + "rss_mb": 197.17, + "anonymous_mb": 155.5, + "pss_mb": 192.98, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1150, + "rss_mb": 184.35, + "anonymous_mb": 142.67, + "pss_mb": 180.15, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1200, + "rss_mb": 180.38, + "anonymous_mb": 138.7, + "pss_mb": 176.18, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1250, + "rss_mb": 182.54, + "anonymous_mb": 140.87, + "pss_mb": 178.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1300, + "rss_mb": 181.44, + "anonymous_mb": 139.71, + "pss_mb": 177.25, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1350, + "rss_mb": 181.58, + "anonymous_mb": 139.84, + "pss_mb": 177.38, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1400, + "rss_mb": 182.92, + "anonymous_mb": 141.19, + "pss_mb": 178.73, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1450, + "rss_mb": 182.7, + "anonymous_mb": 140.96, + "pss_mb": 178.5, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1500, + "rss_mb": 178.55, + "anonymous_mb": 136.81, + "pss_mb": 174.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1550, + "rss_mb": 177.93, + "anonymous_mb": 136.2, + "pss_mb": 173.74, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1600, + "rss_mb": 178.62, + "anonymous_mb": 136.88, + "pss_mb": 174.42, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1650, + "rss_mb": 178.83, + "anonymous_mb": 137.04, + "pss_mb": 174.64, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1700, + "rss_mb": 179.64, + "anonymous_mb": 137.85, + "pss_mb": 175.45, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1750, + "rss_mb": 180.08, + "anonymous_mb": 138.29, + "pss_mb": 175.89, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1800, + "rss_mb": 179.88, + "anonymous_mb": 138.09, + "pss_mb": 175.68, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1850, + "rss_mb": 179.91, + "anonymous_mb": 138.12, + "pss_mb": 175.71, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1900, + "rss_mb": 181.34, + "anonymous_mb": 139.54, + "pss_mb": 177.14, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1950, + "rss_mb": 180.23, + "anonymous_mb": 138.44, + "pss_mb": 176.04, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 2000, + "rss_mb": 180.73, + "anonymous_mb": 138.91, + "pss_mb": 176.53, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + ] +} diff --git a/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-keys-catalog-off-n2k.json b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-keys-catalog-off-n2k.json new file mode 100644 index 000000000..fff9c26ec --- /dev/null +++ b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-keys-catalog-off-n2k.json @@ -0,0 +1,428 @@ +{ + "measuredAt": "2026-10-23T18:57:24.784Z", + "n": 2000, + "operationId": "dns-records-for-a-zone-list-dns-records", + "runtime": "bun", + "bun_smol": true, + "node_max_old_space_mb": null, + "trace_gc": false, + "plateau": { + "anonymous_mb_median": 133.99, + "heap_used_mb_median": null, + "native_anon_minus_heap_mb_median": null, + "samples": 5 + }, + "series_ends": { + "first": { + "i": 0, + "rss_mb": 116.22, + "anonymous_mb": 76.73, + "pss_mb": 95.03, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + "last": { + "i": 2000, + "rss_mb": 174.81, + "anonymous_mb": 132.83, + "pss_mb": 153.45, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + }, + "latency_ms": { + "p50": 1.9865429999999833, + "p99": 4.895772999999963, + "p999": 14.766209000000345 + }, + "gc": { + "pause_count": 0, + "pause_ms_p50": null, + "pause_ms_p99": null, + "pause_ms_max": null, + "pause_ms_sum": null + }, + "interpretation": "incomplete_samples", + "series": [ + { + "i": 0, + "rss_mb": 116.22, + "anonymous_mb": 76.73, + "pss_mb": 95.03, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1, + "rss_mb": 119.07, + "anonymous_mb": 79.3, + "pss_mb": 97.81, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 50, + "rss_mb": 143.97, + "anonymous_mb": 102.64, + "pss_mb": 122.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 100, + "rss_mb": 155.69, + "anonymous_mb": 114.24, + "pss_mb": 134.33, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 150, + "rss_mb": 155.07, + "anonymous_mb": 113.51, + "pss_mb": 133.71, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 200, + "rss_mb": 157.13, + "anonymous_mb": 115.51, + "pss_mb": 135.77, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 250, + "rss_mb": 164.01, + "anonymous_mb": 122.34, + "pss_mb": 142.65, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 300, + "rss_mb": 169.37, + "anonymous_mb": 127.7, + "pss_mb": 148.01, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 350, + "rss_mb": 165.83, + "anonymous_mb": 124.09, + "pss_mb": 144.47, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 400, + "rss_mb": 167.62, + "anonymous_mb": 125.82, + "pss_mb": 146.26, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 450, + "rss_mb": 172.45, + "anonymous_mb": 130.65, + "pss_mb": 151.08, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 500, + "rss_mb": 170.51, + "anonymous_mb": 128.71, + "pss_mb": 149.15, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 550, + "rss_mb": 171.92, + "anonymous_mb": 130.13, + "pss_mb": 150.56, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 600, + "rss_mb": 170.84, + "anonymous_mb": 128.98, + "pss_mb": 149.48, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 650, + "rss_mb": 174.03, + "anonymous_mb": 132.17, + "pss_mb": 152.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 700, + "rss_mb": 171.04, + "anonymous_mb": 129.18, + "pss_mb": 149.68, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 750, + "rss_mb": 173.02, + "anonymous_mb": 131.16, + "pss_mb": 151.66, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 800, + "rss_mb": 171.31, + "anonymous_mb": 129.45, + "pss_mb": 149.95, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 850, + "rss_mb": 175.52, + "anonymous_mb": 133.66, + "pss_mb": 154.16, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 900, + "rss_mb": 170.62, + "anonymous_mb": 128.76, + "pss_mb": 149.26, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 950, + "rss_mb": 168.35, + "anonymous_mb": 126.49, + "pss_mb": 146.99, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1000, + "rss_mb": 171.96, + "anonymous_mb": 130.1, + "pss_mb": 150.6, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1050, + "rss_mb": 180.85, + "anonymous_mb": 138.99, + "pss_mb": 159.49, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1100, + "rss_mb": 184.09, + "anonymous_mb": 142.23, + "pss_mb": 162.72, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1150, + "rss_mb": 173.03, + "anonymous_mb": 131.17, + "pss_mb": 151.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1200, + "rss_mb": 172.03, + "anonymous_mb": 130.17, + "pss_mb": 150.67, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1250, + "rss_mb": 173.84, + "anonymous_mb": 131.98, + "pss_mb": 152.48, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1300, + "rss_mb": 172.89, + "anonymous_mb": 130.97, + "pss_mb": 151.53, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1350, + "rss_mb": 172.41, + "anonymous_mb": 130.49, + "pss_mb": 151.04, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1400, + "rss_mb": 174.19, + "anonymous_mb": 132.27, + "pss_mb": 152.83, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1450, + "rss_mb": 174.55, + "anonymous_mb": 132.63, + "pss_mb": 153.19, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1500, + "rss_mb": 173.66, + "anonymous_mb": 131.75, + "pss_mb": 152.3, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1550, + "rss_mb": 173.71, + "anonymous_mb": 131.79, + "pss_mb": 152.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1600, + "rss_mb": 177.02, + "anonymous_mb": 135.1, + "pss_mb": 155.66, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1650, + "rss_mb": 178.79, + "anonymous_mb": 136.81, + "pss_mb": 157.42, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1700, + "rss_mb": 178.83, + "anonymous_mb": 136.85, + "pss_mb": 157.47, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1750, + "rss_mb": 180.89, + "anonymous_mb": 138.91, + "pss_mb": 159.53, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1800, + "rss_mb": 177.22, + "anonymous_mb": 135.25, + "pss_mb": 155.86, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1850, + "rss_mb": 175.97, + "anonymous_mb": 133.99, + "pss_mb": 154.61, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1900, + "rss_mb": 176.23, + "anonymous_mb": 134.26, + "pss_mb": 154.87, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1950, + "rss_mb": 175.5, + "anonymous_mb": 133.52, + "pss_mb": 154.13, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 2000, + "rss_mb": 174.81, + "anonymous_mb": 132.83, + "pss_mb": 153.45, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + ] +} \ No newline at end of file diff --git a/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-keys-catalog-on-n2k.json b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-keys-catalog-on-n2k.json new file mode 100644 index 000000000..b395e40c5 --- /dev/null +++ b/docs/benchmarks/cloudflare-multiturn/heap-vs-anon-bun-smol-keys-catalog-on-n2k.json @@ -0,0 +1,428 @@ +{ + "measuredAt": "2026-10-23T18:46:52.623Z", + "n": 2000, + "operationId": "dns-records-for-a-zone-list-dns-records", + "runtime": "bun", + "bun_smol": true, + "node_max_old_space_mb": null, + "trace_gc": false, + "plateau": { + "anonymous_mb_median": 136.2, + "heap_used_mb_median": null, + "native_anon_minus_heap_mb_median": null, + "samples": 5 + }, + "series_ends": { + "first": { + "i": 0, + "rss_mb": 112.29, + "anonymous_mb": 72.57, + "pss_mb": 91.01, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + "last": { + "i": 2000, + "rss_mb": 178.38, + "anonymous_mb": 136.31, + "pss_mb": 156.95, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + }, + "latency_ms": { + "p50": 1.9717740000000958, + "p99": 4.876365000000078, + "p999": 10.131311999999525 + }, + "gc": { + "pause_count": 0, + "pause_ms_p50": null, + "pause_ms_p99": null, + "pause_ms_max": null, + "pause_ms_sum": null + }, + "interpretation": "incomplete_samples", + "series": [ + { + "i": 0, + "rss_mb": 112.29, + "anonymous_mb": 72.57, + "pss_mb": 91.01, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1, + "rss_mb": 115.64, + "anonymous_mb": 75.71, + "pss_mb": 94.31, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 50, + "rss_mb": 144.68, + "anonymous_mb": 103.21, + "pss_mb": 123.32, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 100, + "rss_mb": 153.86, + "anonymous_mb": 112.27, + "pss_mb": 132.44, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 150, + "rss_mb": 155.37, + "anonymous_mb": 113.72, + "pss_mb": 133.95, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 200, + "rss_mb": 157.83, + "anonymous_mb": 116.13, + "pss_mb": 136.41, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 250, + "rss_mb": 164.62, + "anonymous_mb": 122.85, + "pss_mb": 143.2, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 300, + "rss_mb": 166.22, + "anonymous_mb": 124.46, + "pss_mb": 144.8, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 350, + "rss_mb": 161.52, + "anonymous_mb": 119.7, + "pss_mb": 140.1, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 400, + "rss_mb": 166.69, + "anonymous_mb": 124.8, + "pss_mb": 145.27, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 450, + "rss_mb": 164.88, + "anonymous_mb": 122.99, + "pss_mb": 143.45, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 500, + "rss_mb": 170.4, + "anonymous_mb": 128.52, + "pss_mb": 148.98, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 550, + "rss_mb": 172.12, + "anonymous_mb": 130.23, + "pss_mb": 150.7, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 600, + "rss_mb": 174.38, + "anonymous_mb": 132.43, + "pss_mb": 152.95, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 650, + "rss_mb": 169.59, + "anonymous_mb": 127.64, + "pss_mb": 148.17, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 700, + "rss_mb": 169.86, + "anonymous_mb": 127.91, + "pss_mb": 148.44, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 750, + "rss_mb": 166.69, + "anonymous_mb": 124.74, + "pss_mb": 145.27, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 800, + "rss_mb": 165.67, + "anonymous_mb": 123.72, + "pss_mb": 144.25, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 850, + "rss_mb": 168.7, + "anonymous_mb": 126.75, + "pss_mb": 147.28, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 900, + "rss_mb": 169.54, + "anonymous_mb": 127.59, + "pss_mb": 148.12, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 950, + "rss_mb": 172.62, + "anonymous_mb": 130.67, + "pss_mb": 151.2, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1000, + "rss_mb": 167.89, + "anonymous_mb": 125.95, + "pss_mb": 146.47, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1050, + "rss_mb": 181.54, + "anonymous_mb": 139.59, + "pss_mb": 160.12, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1100, + "rss_mb": 185.83, + "anonymous_mb": 143.88, + "pss_mb": 164.41, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1150, + "rss_mb": 173.77, + "anonymous_mb": 131.82, + "pss_mb": 152.35, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1200, + "rss_mb": 170.62, + "anonymous_mb": 128.67, + "pss_mb": 149.2, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1250, + "rss_mb": 174.39, + "anonymous_mb": 132.44, + "pss_mb": 152.96, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1300, + "rss_mb": 178.05, + "anonymous_mb": 136.04, + "pss_mb": 156.63, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1350, + "rss_mb": 173.12, + "anonymous_mb": 131.11, + "pss_mb": 151.7, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1400, + "rss_mb": 173.59, + "anonymous_mb": 131.59, + "pss_mb": 152.17, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1450, + "rss_mb": 173.65, + "anonymous_mb": 131.64, + "pss_mb": 152.23, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1500, + "rss_mb": 175.97, + "anonymous_mb": 133.96, + "pss_mb": 154.55, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1550, + "rss_mb": 177.35, + "anonymous_mb": 135.34, + "pss_mb": 155.93, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1600, + "rss_mb": 177.76, + "anonymous_mb": 135.75, + "pss_mb": 156.34, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1650, + "rss_mb": 177.06, + "anonymous_mb": 135, + "pss_mb": 155.64, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1700, + "rss_mb": 181.13, + "anonymous_mb": 139.06, + "pss_mb": 159.7, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1750, + "rss_mb": 178.18, + "anonymous_mb": 136.11, + "pss_mb": 156.75, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1800, + "rss_mb": 178.27, + "anonymous_mb": 136.2, + "pss_mb": 156.85, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1850, + "rss_mb": 180.2, + "anonymous_mb": 138.13, + "pss_mb": 158.78, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1900, + "rss_mb": 178.2, + "anonymous_mb": 136.13, + "pss_mb": 156.78, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 1950, + "rss_mb": 177.71, + "anonymous_mb": 135.64, + "pss_mb": 156.29, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + }, + { + "i": 2000, + "rss_mb": 178.38, + "anonymous_mb": 136.31, + "pss_mb": 156.95, + "heap_used_mb": null, + "external_mb": null, + "native_anon_minus_heap_mb": null + } + ] +} \ No newline at end of file diff --git a/docs/benchmarks/cloudflare-multiturn/memory-plateau.md b/docs/benchmarks/cloudflare-multiturn/memory-plateau.md index 51ea2efc4..fd2370cdb 100644 --- a/docs/benchmarks/cloudflare-multiturn/memory-plateau.md +++ b/docs/benchmarks/cloudflare-multiturn/memory-plateau.md @@ -4,10 +4,10 @@ Gates and honesty notes for Streamable HTTP memory under sessionful load. ## Two separate problems -| # | Symptom | Cause class | Status | -| ----------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -| **1. Climb** | Anonymous ~200→~3444 MB over ~30k same-session JSON executes | MCP SDK JSON mode orphans `_streamMapping` after `resolveJson` ([typescript-sdk#2559](https://github.com/modelcontextprotocol/typescript-sdk/issues/2559)) | **Fixed in host** via `pruneOrphanJsonStreamMappings` after each POST; PR gate + nightly + unit bound test | -| **2. Lean floor** | Lean listen probe ~130 MB (Oct 15) → ~170–313 MB without lazy listen | Eager `clawql-payments` / memory-ONNX at Ready | **Fixed on tip** — restore Oct-15 lazy listen (`CLAWQL_HTTP_SKIP_PAYMENTS`, dynamic plugin composer); Bun `--smol` lean ~**142–150 MB** anon (N=2k) | +| # | Symptom | Cause class | Status | +| ----------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| **1. Climb** | Anonymous ~200→~3444 MB over ~30k same-session JSON executes | MCP SDK JSON mode orphans `_streamMapping` after `resolveJson` ([typescript-sdk#2559](https://github.com/modelcontextprotocol/typescript-sdk/issues/2559)) | **Fixed in host** via `pruneOrphanJsonStreamMappings` after each POST; PR gate + nightly + unit bound test | +| **2. Lean floor** | Lean listen probe ~130 MB (Oct 15) → ~170–313 MB without lazy listen | Eager `clawql-payments` / memory-ONNX at Ready | **Fixed on tip** — lazy listen + SQLite catalog OOP + `clawql-inference/keys`; Bun `--smol` lean ~**136 MB** anon (N=2k) | Climb (#1) and lean (#2) are both on tip after `#1390` + lazy-listen restore. Peer gap (~99–102 MB MCPJungle/agentgateway) remains a further Bun density climb, not a Rust dataplane path (ADR 0016 Rejected). @@ -69,8 +69,9 @@ Separate from `_streamMapping` climb: - **Oct 15 board / heap A/B:** Bun `--smol` ~**130 MB**, Node 256 ~**132 MB** ([measured-defaults](./measured-defaults.md)). - **Tip without lazy listen:** ~**170–313 MB** (eager payments + pgvector/ONNX at Ready). -- **Tip after lazy listen:** Bun `--smol` equal-arm lean ~**142–150 MB** anon (N=2k `heap-vs-anon-plateau`; catalog flag no-op until SQLite catalog lands on tip). +- **Tip after lazy listen + catalog OOP (#1398):** Bun `--smol` equal-arm ~**138 MB** anon ([catalog-on N=2k](./heap-vs-anon-bun-smol-catalog-on-n2k.json) on remasure branch; ~145 MB catalog-off). +- **Tip after `clawql-inference/keys` (Ready skips full inference barrel):** Bun `--smol` equal-arm ~**136.2 MB** anon median ([keys + catalog-on](./heap-vs-anon-bun-smol-keys-catalog-on-n2k.json); [catalog-off](./heap-vs-anon-bun-smol-keys-catalog-off-n2k.json) ~134 MB — N=2k noise band). ESM `keys` entry is an 8 KB chunk (no payments/openai/routing). - **Remasure:** `BUN_RUNTIME=1 BUN_SMOL=1 N=2000 npm run benchmark:heap-vs-anon-plateau` -- **Next density:** SQLite catalog OOP + deeper `clawql-api` lazy graph to close ~20–50 MB toward peers (~99–102 MB). +- **Next density:** Deeper `clawql-api` lazy graph (grpc/graphql/swagger off Ready) + thin tools barrel to close ~34–37 MB toward peers (~99–102 MB). -See also vault notes: [[Bun JSON streamMapping memory climb fixed]], [[Bun smol lean board 130MB anon plateau config]], [[Density baseline post-prune stalls and lean floor]]. +See also vault notes: [[Bun JSON streamMapping memory climb fixed]], [[Bun smol lean board 130MB anon plateau config]], [[Density baseline post-prune stalls and lean floor]], [[Bun density peer climb tip levers after 1390]]. diff --git a/infra/pulumi/package.json b/infra/pulumi/package.json index 0f40c3916..d013c42f6 100644 --- a/infra/pulumi/package.json +++ b/infra/pulumi/package.json @@ -2,7 +2,7 @@ "name": "clawql-provision", "version": "7.0.0", "private": true, - "description": "Pulumi programs for ClawQL hosted infra (edge / idp-k3s / eks / golden-host) — pairs with Argo CD GitOps and Packer AMIs", + "description": "Pulumi programs for ClawQL hosted infra (edge / idp-k3s / eks / golden-host) \u2014 pairs with Argo CD GitOps and Packer AMIs", "license": "Apache-2.0", "type": "module", "main": "./dist/index.js", @@ -39,7 +39,7 @@ "@pulumi/cloudflare": "^6.19.0", "@pulumi/gcp": "^9.37.0", "@pulumi/pulumi": "^3.267.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", @@ -48,5 +48,8 @@ }, "engines": { "node": ">=22" + }, + "overrides": { + "zod": "4.6.7" } } diff --git a/osv-scanner.toml b/osv-scanner.toml index cfae8e93d..642c04c24 100644 --- a/osv-scanner.toml +++ b/osv-scanner.toml @@ -15,9 +15,9 @@ reason = "extract-zip@2.0.1 (symlink path traversal) is transitive via website l id = "GHSA-7pqw-9j4j-h8q3" reason = "Same extract-zip@2.0.1 symlink path traversal as GHSA-jmr9-qjv8-65gv (new OSV id / CVE-2026-19693); transitive via website lighthouse → puppeteer-core → @puppeteer/browsers; no fixed version. Dev-only browser download path." -[[IgnoredVulns]] -id = "GHSA-vfj7-8cjw-p6xm" -reason = "braces@3.0.3 stack-exhaustion DoS via deeply nested patterns; OSV lists no fixed version beyond 3.0.3 (latest). Transitive via micromatch/chokidar in website/dashboard/www tooling; not a production request-path dependency. Remove when upstream ships a patched braces." +# GHSA-vfj7-8cjw-p6xm (braces@3.0.3) — removed unused ignore; OSV tip now reports +# alias GHSA-q4gf-8mx6-v5v3 / CVE-2026-93687 (covered in .trivyignore). Unused +# IgnoredVulns hard-fail osv-scanner:latest. [[IgnoredVulns]] id = "GHSA-qqmp-wf37-98f9" diff --git a/package-lock.json b/package-lock.json index d90c84f78..9944733e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -70,7 +70,7 @@ "swagger2openapi": "^7.0.8", "undici": "6.28.1", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "bin": { "clawql": "bin/clawql.mjs", @@ -107,7 +107,7 @@ "@pulumi/cloudflare": "^6.19.0", "@pulumi/gcp": "^9.37.0", "@pulumi/pulumi": "^3.267.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", @@ -173,6 +173,15 @@ "@types/send": "<1" } }, + "infra/pulumi/node_modules/zod": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@adraffy/ens-normalize": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", @@ -3708,15 +3717,6 @@ } } }, - "node_modules/@openai/mcp-extensions/node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@opentelemetry/api": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", @@ -13585,9 +13585,9 @@ } }, "node_modules/zod": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz", - "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -13680,7 +13680,7 @@ "prom-client": "^15.1.3", "swagger2openapi": "^7.0.8", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/jmespath": "^0.15.2", @@ -13870,7 +13870,7 @@ "effect": "4.0.0", "nats": "^2.29.3", "sql.js": "^1.14.1", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/express": "^5.0.6", @@ -13970,7 +13970,7 @@ "clawql-api": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@modelcontextprotocol/sdk": "1.32.1", @@ -14012,7 +14012,7 @@ "clawql-core": "0.1.0", "effect": "4.0.0", "fflate": "^0.8.2", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", @@ -14036,7 +14036,7 @@ "clawql-web": "0.1.0", "effect": "4.0.0", "node-html-markdown": "^2.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", @@ -14402,7 +14402,7 @@ "fflate": "^0.8.2", "pg": "^8.21.0", "sql.js": "^1.14.1", - "zod": "4.6.5" + "zod": "4.6.7" }, "bin": { "clawql-memory": "dist/cli.cjs" @@ -14461,7 +14461,7 @@ "clawql-audit": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", @@ -14484,7 +14484,7 @@ "effect": "4.0.0", "sql.js": "^1.14.2", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "bin": { "clawql-ontology": "dist/cli.cjs" @@ -14508,7 +14508,7 @@ "clawql-api": "0.1.0", "effect": "4.0.0", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "bin": { "clawql-operator": "dist/cli.cjs" @@ -14669,7 +14669,7 @@ "dependencies": { "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "bin": { "clawql-release": "dist/cli.cjs" @@ -14691,7 +14691,7 @@ "clawql-api": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", @@ -14776,7 +14776,7 @@ "clawql-api": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/package.json b/package.json index d64ab0550..a745c8f55 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "clawql-mcp", "version": "8.0.0", - "description": "Agentic Gateway — Foundational Platform for Auditable Production AI. MCP search + execute over OpenAPI/Discovery (internal GraphQL projection), optional native GraphQL HTTP and gRPC unary sources", + "description": "Agentic Gateway \u2014 Foundational Platform for Auditable Production AI. MCP search + execute over OpenAPI/Discovery (internal GraphQL projection), optional native GraphQL HTTP and gRPC unary sources", "license": "Apache-2.0", "type": "module", "main": "./dist/server.js", @@ -215,7 +215,7 @@ "swagger2openapi": "^7.0.8", "undici": "6.28.1", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@effect/language-service": "^0.87.3", @@ -276,6 +276,7 @@ "browserslist": "4.28.7", "effect": "4.0.0", "@aws-sdk/credential-provider-login": "3.972.73", - "@toon-format/toon": "2.3.1" + "@toon-format/toon": "2.3.1", + "zod": "4.6.7" } } diff --git a/packages/clawql-api/package.json b/packages/clawql-api/package.json index 5a3540db5..a510b1993 100644 --- a/packages/clawql-api/package.json +++ b/packages/clawql-api/package.json @@ -55,7 +55,7 @@ "prom-client": "^15.1.3", "swagger2openapi": "^7.0.8", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/jmespath": "^0.15.2", diff --git a/packages/clawql-auth/src/inbound/mcp-oauth-bootstrap.test.ts b/packages/clawql-auth/src/inbound/mcp-oauth-bootstrap.test.ts index 65a1af296..8c9920037 100644 --- a/packages/clawql-auth/src/inbound/mcp-oauth-bootstrap.test.ts +++ b/packages/clawql-auth/src/inbound/mcp-oauth-bootstrap.test.ts @@ -25,12 +25,15 @@ describe("MCP OAuth bootstrap fail-closed", () => { stash("CLAWQL_EMA_ORGS_JSON"); stash("CLAWQL_MCP_OAUTH_BOOTSTRAP_STRICT"); stash("CLAWQL_SECRET_STORE"); + stash("CLAWQL_AUTH_AUDIT_STORE"); process.env.CLAWQL_MCP_OAUTH_ENABLED = "1"; process.env.CLAWQL_MCP_OAUTH_SIGNING_SECRET = "test-mcp-oauth-signing-secret-32b!!"; process.env.CLAWQL_EMA_ORGS_JSON = "{not-json"; process.env.CLAWQL_MCP_OAUTH_BOOTSTRAP_STRICT = "1"; process.env.CLAWQL_SECRET_STORE = "memory"; + // Avoid shared ~/.clawql/auth-audit.db under parallel vitest forks (database is locked). + process.env.CLAWQL_AUTH_AUDIT_STORE = "memory"; const exit = await Effect.runPromiseExit(createMcpOAuthFromEnv()); expect(exit._tag).toBe("Failure"); @@ -47,12 +50,14 @@ describe("MCP OAuth bootstrap fail-closed", () => { stash("CLAWQL_EMA_ORGS_JSON"); stash("CLAWQL_MCP_OAUTH_BOOTSTRAP_STRICT"); stash("CLAWQL_SECRET_STORE"); + stash("CLAWQL_AUTH_AUDIT_STORE"); process.env.CLAWQL_MCP_OAUTH_ENABLED = "1"; process.env.CLAWQL_MCP_OAUTH_SIGNING_SECRET = "test-mcp-oauth-signing-secret-32b!!"; process.env.CLAWQL_EMA_ORGS_JSON = "{not-json"; delete process.env.CLAWQL_MCP_OAUTH_BOOTSTRAP_STRICT; process.env.CLAWQL_SECRET_STORE = "memory"; + process.env.CLAWQL_AUTH_AUDIT_STORE = "memory"; const runtime = await Effect.runPromise(createMcpOAuthFromEnv()); expect(runtime).toBeTruthy(); diff --git a/packages/clawql-automation/package.json b/packages/clawql-automation/package.json index d032873cf..ffb9d33ab 100644 --- a/packages/clawql-automation/package.json +++ b/packages/clawql-automation/package.json @@ -108,7 +108,7 @@ "effect": "4.0.0", "nats": "^2.29.3", "sql.js": "^1.14.1", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/express": "^5.0.6", diff --git a/packages/clawql-chatgpt-extensions/package.json b/packages/clawql-chatgpt-extensions/package.json index ef67552d8..97aad753f 100644 --- a/packages/clawql-chatgpt-extensions/package.json +++ b/packages/clawql-chatgpt-extensions/package.json @@ -32,7 +32,7 @@ "clawql-api": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "peerDependencies": { "@modelcontextprotocol/sdk": "1.32.1" diff --git a/packages/clawql-data/package.json b/packages/clawql-data/package.json index 670409436..dd21047b4 100644 --- a/packages/clawql-data/package.json +++ b/packages/clawql-data/package.json @@ -33,7 +33,7 @@ "clawql-core": "0.1.0", "effect": "4.0.0", "fflate": "^0.8.2", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-documents/package.json b/packages/clawql-documents/package.json index 090082c9c..287ca8a0b 100644 --- a/packages/clawql-documents/package.json +++ b/packages/clawql-documents/package.json @@ -46,7 +46,7 @@ "clawql-web": "0.1.0", "effect": "4.0.0", "node-html-markdown": "^2.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-inference/package.json b/packages/clawql-inference/package.json index 58a1901be..a7b456768 100644 --- a/packages/clawql-inference/package.json +++ b/packages/clawql-inference/package.json @@ -18,6 +18,11 @@ "import": "./dist/routing/index.js", "require": "./dist/routing/index.cjs" }, + "./keys": { + "types": "./dist/keys/index.d.ts", + "import": "./dist/keys/index.js", + "require": "./dist/keys/index.cjs" + }, "./plugin": { "types": "./dist/plugin/index.d.ts", "import": "./dist/plugin/index.js", diff --git a/packages/clawql-inference/src/keys/budget-check.ts b/packages/clawql-inference/src/keys/budget-check.ts new file mode 100644 index 000000000..135acbb24 --- /dev/null +++ b/packages/clawql-inference/src/keys/budget-check.ts @@ -0,0 +1,5 @@ +/** Pure VK budget gate — no pricing / gateway imports (Ready-safe). */ +export function isBudgetExceeded(spentUsd: number, budgetUsd: number | undefined): boolean { + if (budgetUsd === undefined || budgetUsd <= 0) return false; + return spentUsd >= budgetUsd; +} diff --git a/packages/clawql-inference/src/keys/budget.ts b/packages/clawql-inference/src/keys/budget.ts index 92820e641..9634f54c4 100644 --- a/packages/clawql-inference/src/keys/budget.ts +++ b/packages/clawql-inference/src/keys/budget.ts @@ -1,12 +1,13 @@ import { Effect } from "effect"; import type { InferenceUsage } from "../gateway.js"; +import { isBudgetExceeded } from "./budget-check.js"; import { DEFAULT_INPUT_USD_PER_TOKEN, DEFAULT_OUTPUT_USD_PER_TOKEN, estimateCostUsdEffect, } from "./pricing.js"; -export { DEFAULT_INPUT_USD_PER_TOKEN, DEFAULT_OUTPUT_USD_PER_TOKEN }; +export { DEFAULT_INPUT_USD_PER_TOKEN, DEFAULT_OUTPUT_USD_PER_TOKEN, isBudgetExceeded }; /** * Host-boundary façade for VK spend recording. @@ -18,8 +19,3 @@ export function estimateCostUsd( ): number { return Effect.runSync(estimateCostUsdEffect(usage, modelOrProviderKey)); } - -export function isBudgetExceeded(spentUsd: number, budgetUsd: number | undefined): boolean { - if (budgetUsd === undefined || budgetUsd <= 0) return false; - return spentUsd >= budgetUsd; -} diff --git a/packages/clawql-inference/src/keys/index.ts b/packages/clawql-inference/src/keys/index.ts new file mode 100644 index 000000000..88fdffaa9 --- /dev/null +++ b/packages/clawql-inference/src/keys/index.ts @@ -0,0 +1,12 @@ +/** + * Thin Ready-safe surface for MCP gateway API-key checks. + * Import `clawql-inference/keys` — not the package root — so listen does not + * evaluate the full inference barrel (routing, payments, openai, cache, …). + */ +export { extractPresentedApiKey, validateVirtualKey, type AuthHeaderSource } from "./validate.js"; +export type { + KeyValidationResult, + VirtualKey, + VirtualKeyContext, + VirtualKeyStoreFile, +} from "./types.js"; diff --git a/packages/clawql-inference/src/keys/validate.ts b/packages/clawql-inference/src/keys/validate.ts index f206aa499..b1c4926d2 100644 --- a/packages/clawql-inference/src/keys/validate.ts +++ b/packages/clawql-inference/src/keys/validate.ts @@ -1,4 +1,4 @@ -import { isBudgetExceeded } from "./budget.js"; +import { isBudgetExceeded } from "./budget-check.js"; import { checkRateLimit } from "./rate-limit.js"; import { findKeyBySecret, loadVirtualKeyStoreSync } from "./store.js"; import type { KeyValidationResult } from "./types.js"; diff --git a/packages/clawql-inference/tsup.config.ts b/packages/clawql-inference/tsup.config.ts index bab38a49a..ea181af19 100644 --- a/packages/clawql-inference/tsup.config.ts +++ b/packages/clawql-inference/tsup.config.ts @@ -4,6 +4,7 @@ export default defineConfig({ entry: { index: "src/index.ts", "routing/index": "src/routing/index.ts", + "keys/index": "src/keys/index.ts", "api/server": "src/api/server.ts", "plugin/index": "src/plugin/index.ts", "audit/process-worm": "src/audit/process-worm.ts", diff --git a/packages/clawql-memory/package.json b/packages/clawql-memory/package.json index 27711581c..40f209fdd 100644 --- a/packages/clawql-memory/package.json +++ b/packages/clawql-memory/package.json @@ -148,7 +148,7 @@ "fflate": "^0.8.2", "pg": "^8.21.0", "sql.js": "^1.14.1", - "zod": "4.6.5", + "zod": "4.6.7", "clawql-gdp": "0.1.0", "@gdp-ts/core": "^0.1.0" }, diff --git a/packages/clawql-observability/package.json b/packages/clawql-observability/package.json index cbf4ec89e..37c8708e9 100644 --- a/packages/clawql-observability/package.json +++ b/packages/clawql-observability/package.json @@ -47,7 +47,7 @@ "clawql-audit": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-ontology/package.json b/packages/clawql-ontology/package.json index 8c17967ad..784654e4e 100644 --- a/packages/clawql-ontology/package.json +++ b/packages/clawql-ontology/package.json @@ -38,7 +38,7 @@ "effect": "4.0.0", "sql.js": "^1.14.2", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-operator/package.json b/packages/clawql-operator/package.json index ce546ff28..8074dc893 100644 --- a/packages/clawql-operator/package.json +++ b/packages/clawql-operator/package.json @@ -40,7 +40,7 @@ "clawql-api": "0.1.0", "effect": "4.0.0", "yaml": "^2.9.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-release/package.json b/packages/clawql-release/package.json index 36c7a2487..db09482bb 100644 --- a/packages/clawql-release/package.json +++ b/packages/clawql-release/package.json @@ -28,7 +28,7 @@ "dependencies": { "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-sandbox/package.json b/packages/clawql-sandbox/package.json index 074b33b4c..f9905d352 100644 --- a/packages/clawql-sandbox/package.json +++ b/packages/clawql-sandbox/package.json @@ -36,7 +36,7 @@ "clawql-api": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/packages/clawql-web/package.json b/packages/clawql-web/package.json index 8f7e4f9c1..7407d2bdf 100644 --- a/packages/clawql-web/package.json +++ b/packages/clawql-web/package.json @@ -31,7 +31,7 @@ "clawql-api": "0.1.0", "clawql-core": "0.1.0", "effect": "4.0.0", - "zod": "4.6.5" + "zod": "4.6.7" }, "devDependencies": { "@types/node": "^26.1.1", diff --git a/src/composition/gateway-auth.ts b/src/composition/gateway-auth.ts index c3420a90c..f2ad70df4 100644 --- a/src/composition/gateway-auth.ts +++ b/src/composition/gateway-auth.ts @@ -13,7 +13,7 @@ import { type GatewayAuthConfig, } from "clawql-auth"; import { Effect } from "effect"; -import { validateVirtualKey } from "clawql-inference"; +import { validateVirtualKey } from "clawql-inference/keys"; import { resolveHostAuthEventSink } from "./auth-process-worm-sink.js"; let gatewayAuth: ClawQLAuth | undefined;