91fd8a8a03
Closes ~80 dependabot alerts (3 critical, ~25 high, ~31 medium) by
bumping direct deps where possible and narrowly overriding the rest.
Cloud uses `resend` email transport and Node 20 - all bumps are safe for
both cloud and self-hosters.
## Direct upgrades
| Package | Where | From | To | Why |
|---|---|---|---|---|
| `vite` | root devDeps | ^5.4.21 | *(removed)* | dead pin; vitest pulls
vite transitively |
| `dompurify` | apps/webapp | ^3.2.6 | ^3.4.1 | XSS CVEs |
| `effect` | apps/webapp | ^3.11.7 | ^3.21.2 | AsyncLocalStorage CVE in
Effect fibers |
| `nodemailer` | internal-packages/emails | ^7.0.11 | ^8.0.6 | SMTP CRLF
injection (only affects self-hosters w/ smtp/aws-ses transport) |
| `uuid` | apps/webapp | ^9.0.0 | ^14.0.0 | buffer bounds check;
ESM-only but bundled by Remix |
| `uuid` + `@types/uuid` | packages/trigger-sdk | ^9.0.0 | *(removed)* |
dead deps, no usage |
| `@types/uuid` | apps/webapp | ^9.0.0 | *(removed)* | uuid 14 ships its
own types |
| `tar` | packages/cli-v3 | ^7.5.4 | ^7.5.13 | path traversal CVEs |
| `testcontainers` + `@testcontainers/postgresql` +
`@testcontainers/redis` | internal-packages/testcontainers | ^10.28.0 |
^11.14.0 | dev/test cleanup; one-line API fix for
`RedisContainer(image)` |
| `rimraf` | webapp + 6 packages | ^3.0.2 / ^5.0.7 | ^6.0.1 | dev/build
tool consolidation |
## Scoped overrides
All bound by both `>=` and `<` to avoid major-version yanks.
| Override | Closes |
|---|---|
| `tar@>=7 <7.5.11` → `^7.5.11` | supervisor's `@kubernetes/client-node
1.0.0` chain |
| `axios@>=1.0.0 <1.15.0` → `^1.15.0` | replaces older 1.9.0 pin |
| `systeminformation@>=5.0.0 <5.31.0` → `^5.31.0` | bumps existing
5.27.14 pin |
| `lodash@>=4.0.0 <4.18.0` → `^4.18.0` | bumps existing 4.17.23 pin |
| `lodash-es@>=4.0.0 <4.18.0` → `^4.18.0` | new (mirrors lodash) |
| `dompurify@>=3 <3.4.0` → `^3.4.1` | catches transitive dompurify via
mermaid |
| `vite@>=5.0.0 <6.4.2` → `^6.4.2` | path traversal; vite 5 has no patch
|
| `rollup@>=4 <4.59.0` → `^4.59.0` | path traversal in vite/vitest chain
|
| `flatted@>=3 <3.4.2` → `^3.4.2` | prototype pollution in eslint
flat-cache |
| `picomatch@>=2 <2.3.2` → `^2.3.2` | ReDoS in 2.x branch (transitive) |
| `picomatch@>=4 <4.0.4` → `^4.0.4` | ReDoS in 4.x branch
(vitest/tinyglobby) |
| `minimatch@>=3 <3.1.3` → `^3.1.3` | ReDoS in eslint 8 chain |
| `protobufjs@>=7 <7.5.5` → `^7.5.5` | **critical** RCE via
@opentelemetry/otlp-transformer |
| `fast-xml-parser@>=4 <4.5.5` → `^4.5.5` | DOCTYPE bypass + others (4.x
branch via aws-sdk in supervisor) |
| `fast-xml-parser@>=5 <5.7.0` → `^5.7.0` | **critical** + others (5.x
branch via aws-sdk in webapp) |
| `path-to-regexp@>=0.1 <0.1.13` → `^0.1.13` | ReDoS in express 4 /
@remix-run/express |
| `ajv@>=8 <8.18.0` → `^8.18.0` | DoS |
| `socket.io-parser@>=4 <4.2.6` → `^4.2.6` | DoS in @trigger.dev/core's
socket.io |
| `postcss@>=8 <8.5.10` → `^8.5.10` | XSS via stringify |
| `yaml@>=2 <2.8.3` → `^2.8.3` | DoS |
| `semver@>=5 <5.7.2` → `^5.7.2` | ReDoS in 5.x |
| `defu@>=6 <6.1.5` → `^6.1.5` | prototype pollution via __proto__ in
@prisma/config c12 chain |
## Dismissed (~47)
| Reason | Cluster | Count |
|---|---|---|
| `not_used` | langsmith + next 15.x in references/* | 10 |
| `not_used` | minimatch 8.x via prisma-generator-ts-enums
(references/prisma-6) | 3 |
| `not_used` | basic-ftp via puppeteer in references/hello-world +
references/seed | 2 |
| `not_used` | hono / @hono/node-server / express-rate-limit /
path-to-regexp 8.x / @modelcontextprotocol/sdk - all via mcp-sdk chain
(dormant in webapp; dev-only localhost in cli-v3) | 22 |
| `not_used` | fastify / @fastify/static / file-type via evalite devDep
| 5 |
| `tolerable_risk` | rollup 3 + minimatch 5/8/9/10 dev/build tooling |
13 |
## Notes
- **mcp-sdk chain**: `@vercel/sdk` in webapp imports `Vercel` API client
only; `mcp-server/*` subpath isn't loaded at runtime. cli-v3's MCP
server runs only via `trigger mcp` on developer machines. Bumping
`@modelcontextprotocol/sdk` to latest (1.29.0) wouldn't close these
alerts anyway - it ships hono ^4.11.4 which is still vulnerable - so
dismissal is the cleaner call.
- **References ignore list**: confirmed with current dependabot ignore
config; added `references/seed/package.json` (only gap).
- **undici** alerts (CVE-2026-1527, 4 alerts) will auto-close: lockfile
already at 6.25.0 > patched 6.24.0; just needs Dependabot rescan.
- **Effect 3.20 fix** is a runtime-only scheduler fix, no public API
changes - verified with research agent against our four `effect/*`
imports.
- **uuid 14** is ESM-only; we only call `validate`/`version` (no crypto
needed) so Node 20 requirement isn't load-bearing for us.
## Public packages (`packages/*`)
Minimal surface, deliberately. None of these change published runtime
behaviour - all changesets-worthy public package changes are deferred to
a regular release pass.
| Package | Change | Runtime impact |
|---|---|---|
| `packages/trigger-sdk` | Removed dead `uuid` dep (no source imports) |
None - dep was unused |
| `packages/cli-v3` | `tar` ^7.5.4 → ^7.5.13 | Patch bump within
already-allowed 7.x range; nothing CLI consumers see |
| `packages/core` / `packages/build` / `packages/python` /
`packages/rsc` / `packages/react-hooks` / `packages/schema-to-json` |
`rimraf` ^3.0.2 → ^6.0.1 in devDeps | Build-time only, no runtime change
|
No changeset added because nothing in these packages affects what
published consumers run.
## Validation
- Webapp typecheck (forced, no cache) passes after every commit
- Smoke-tested testcontainers v11 changes via real `postgresTest` +
`redisTest` (sync.test.ts, releaseConcurrency.test.ts) - both pass
- Webapp built + verified `require("uuid")` no longer in CJS server
output (now bundled inline)
- Test env webapp deployed at `dependabot-q2.rc0` (cloud#740) - no
issues observed
- Test suite run with package prerelease passed
306 lines
10 KiB
JSON
306 lines
10 KiB
JSON
{
|
|
"private": true,
|
|
"name": "webapp",
|
|
"version": "1.0.0",
|
|
"sideEffects": false,
|
|
"scripts": {
|
|
"build": "run-s build:** && pnpm run upload:sourcemaps",
|
|
"build:remix": "remix build --sourcemap",
|
|
"build:server": "esbuild --platform=node --format=cjs ./server.ts --outdir=build --sourcemap",
|
|
"build:sentry": "esbuild --platform=node --format=cjs ./sentry.server.ts --outdir=build --sourcemap",
|
|
"dev": "cross-env PORT=3030 remix dev -c \"node ./build/server.js\"",
|
|
"dev:worker": "cross-env NODE_PATH=../../node_modules/.pnpm/node_modules node ./build/server.js",
|
|
"format": "prettier --write .",
|
|
"lint": "eslint --cache --cache-location ./node_modules/.cache/eslint .",
|
|
"start": "cross-env NODE_ENV=production node --max-old-space-size=8192 ./build/server.js",
|
|
"start:local": "cross-env node --max-old-space-size=8192 ./build/server.js",
|
|
"typecheck": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" tsc --noEmit -p ./tsconfig.check.json",
|
|
"db:seed": "tsx seed.mts",
|
|
"db:seed:ai-spans": "tsx seed-ai-spans.mts",
|
|
"upload:sourcemaps": "bash ./upload-sourcemaps.sh",
|
|
"test": "vitest --no-file-parallelism",
|
|
"eval:dev": "evalite watch"
|
|
},
|
|
"eslintIgnore": [
|
|
"/node_modules",
|
|
"/build",
|
|
"/public/build"
|
|
],
|
|
"dependencies": {
|
|
"@ai-sdk/openai": "^1.3.23",
|
|
"@ariakit/react": "^0.4.6",
|
|
"@ariakit/react-core": "^0.4.6",
|
|
"@aws-sdk/client-ecr": "^3.931.0",
|
|
"@aws-sdk/client-s3": "^3.936.0",
|
|
"@aws-sdk/client-sqs": "^3.445.0",
|
|
"@aws-sdk/client-sts": "^3.840.0",
|
|
"@aws-sdk/credential-provider-node": "^3.936.0",
|
|
"@aws-sdk/s3-presigned-post": "^3.936.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.936.0",
|
|
"@better-auth/utils": "^0.2.6",
|
|
"@codemirror/autocomplete": "6.4.0",
|
|
"@codemirror/commands": "6.1.3",
|
|
"@codemirror/lang-javascript": "6.1.2",
|
|
"@codemirror/lang-json": "6.0.1",
|
|
"@codemirror/lang-sql": "6.5.5",
|
|
"@codemirror/language": "6.3.2",
|
|
"@codemirror/lint": "6.4.2",
|
|
"@codemirror/search": "6.2.3",
|
|
"@codemirror/state": "6.2.0",
|
|
"@codemirror/view": "6.7.2",
|
|
"@conform-to/react": "0.9.2",
|
|
"@conform-to/zod": "0.9.2",
|
|
"@depot/cli": "0.0.1-cli.2.80.0",
|
|
"@depot/sdk-node": "^1.0.0",
|
|
"@electric-sql/react": "^0.3.5",
|
|
"@headlessui/react": "^1.7.8",
|
|
"@heroicons/react": "^2.0.12",
|
|
"@jsonhero/schema-infer": "^0.1.5",
|
|
"@internal/cache": "workspace:*",
|
|
"@internal/compute": "workspace:*",
|
|
"@internal/llm-model-catalog": "workspace:*",
|
|
"@internal/redis": "workspace:*",
|
|
"@internal/run-engine": "workspace:*",
|
|
"@internal/schedule-engine": "workspace:*",
|
|
"@internal/tracing": "workspace:*",
|
|
"@internal/tsql": "workspace:*",
|
|
"@internal/zod-worker": "workspace:*",
|
|
"@internationalized/date": "^3.5.1",
|
|
"@kapaai/react-sdk": "^0.1.3",
|
|
"@lezer/highlight": "^1.1.6",
|
|
"@opentelemetry/api": "1.9.0",
|
|
"@opentelemetry/api-logs": "0.203.0",
|
|
"@opentelemetry/core": "2.0.1",
|
|
"@opentelemetry/exporter-logs-otlp-http": "0.203.0",
|
|
"@opentelemetry/exporter-metrics-otlp-proto": "0.203.0",
|
|
"@opentelemetry/exporter-trace-otlp-http": "0.203.0",
|
|
"@opentelemetry/host-metrics": "^0.37.0",
|
|
"@opentelemetry/instrumentation": "0.203.0",
|
|
"@opentelemetry/instrumentation-aws-sdk": "^0.57.0",
|
|
"@opentelemetry/instrumentation-express": "^0.52.0",
|
|
"@opentelemetry/instrumentation-http": "0.203.0",
|
|
"@opentelemetry/resource-detector-aws": "^2.3.0",
|
|
"@opentelemetry/resources": "2.0.1",
|
|
"@opentelemetry/sdk-logs": "0.203.0",
|
|
"@opentelemetry/sdk-metrics": "2.0.1",
|
|
"@opentelemetry/sdk-node": "0.203.0",
|
|
"@opentelemetry/sdk-trace-base": "2.0.1",
|
|
"@opentelemetry/sdk-trace-node": "2.0.1",
|
|
"@opentelemetry/semantic-conventions": "1.36.0",
|
|
"@popperjs/core": "^2.11.8",
|
|
"@prisma/instrumentation": "^6.14.0",
|
|
"@radix-ui/react-accordion": "^1.2.11",
|
|
"@radix-ui/react-alert-dialog": "^1.0.4",
|
|
"@radix-ui/react-dialog": "^1.0.3",
|
|
"@radix-ui/react-label": "^2.0.1",
|
|
"@radix-ui/react-popover": "^1.0.5",
|
|
"@radix-ui/react-portal": "^1.1.9",
|
|
"@radix-ui/react-radio-group": "^1.1.3",
|
|
"@radix-ui/react-select": "^1.2.1",
|
|
"@radix-ui/react-slider": "^1.1.2",
|
|
"@radix-ui/react-switch": "^1.0.3",
|
|
"@radix-ui/react-tabs": "^1.0.3",
|
|
"@radix-ui/react-tooltip": "^1.0.5",
|
|
"@react-aria/datepicker": "^3.9.1",
|
|
"@react-stately/datepicker": "^3.9.1",
|
|
"@react-types/datepicker": "^3.7.1",
|
|
"@remix-run/express": "2.17.4",
|
|
"@remix-run/node": "2.17.4",
|
|
"@remix-run/react": "2.17.4",
|
|
"@remix-run/router": "^1.23.2",
|
|
"@remix-run/serve": "2.17.4",
|
|
"@remix-run/server-runtime": "2.17.4",
|
|
"@remix-run/v1-meta": "^0.1.3",
|
|
"@s2-dev/streamstore": "^0.22.5",
|
|
"@sentry/remix": "9.46.0",
|
|
"@slack/web-api": "7.9.1",
|
|
"@socket.io/redis-adapter": "^8.3.0",
|
|
"@tabler/icons-react": "^3.36.1",
|
|
"@tailwindcss/container-queries": "^0.1.1",
|
|
"@tanstack/match-sorter-utils": "^8.19.4",
|
|
"@tanstack/react-table": "^8.21.3",
|
|
"@tanstack/react-virtual": "^3.0.4",
|
|
"@team-plain/typescript-sdk": "^3.5.0",
|
|
"@trigger.dev/companyicons": "^1.5.35",
|
|
"@trigger.dev/core": "workspace:*",
|
|
"@trigger.dev/database": "workspace:*",
|
|
"@trigger.dev/otlp-importer": "workspace:*",
|
|
"@trigger.dev/platform": "1.0.27",
|
|
"@trigger.dev/redis-worker": "workspace:*",
|
|
"@trigger.dev/sdk": "workspace:*",
|
|
"@types/pg": "8.6.6",
|
|
"@uiw/react-codemirror": "^4.19.5",
|
|
"@unkey/cache": "^1.5.0",
|
|
"@unkey/error": "^0.2.0",
|
|
"@upstash/ratelimit": "^1.1.3",
|
|
"@vercel/sdk": "^1.19.1",
|
|
"@whatwg-node/fetch": "^0.9.14",
|
|
"ai": "^4.3.19",
|
|
"assert-never": "^1.2.1",
|
|
"aws4fetch": "^1.0.18",
|
|
"class-variance-authority": "^0.5.2",
|
|
"clsx": "^1.2.1",
|
|
"compression": "^1.7.4",
|
|
"cookie": "^0.6.0",
|
|
"cron-parser": "^4.9.0",
|
|
"cronstrue": "^2.21.0",
|
|
"cross-env": "^7.0.3",
|
|
"cuid": "^2.1.8",
|
|
"date-fns": "^4.1.0",
|
|
"dompurify": "^3.4.1",
|
|
"dotenv": "^16.4.5",
|
|
"effect": "^3.21.2",
|
|
"emails": "workspace:*",
|
|
"eventsource": "^4.0.0",
|
|
"evt": "^2.4.13",
|
|
"express": "4.20.0",
|
|
"framer-motion": "^10.12.11",
|
|
"graphile-worker": "0.16.6",
|
|
"humanize-duration": "^3.27.3",
|
|
"input-otp": "^1.4.2",
|
|
"intl-parse-accept-language": "^1.0.0",
|
|
"ioredis": "^5.3.2",
|
|
"isbot": "^3.6.5",
|
|
"jose": "^5.4.0",
|
|
"json-stable-stringify": "^1.3.0",
|
|
"jsonpointer": "^5.0.1",
|
|
"lodash.omit": "^4.5.0",
|
|
"lucide-react": "^0.229.0",
|
|
"marked": "^4.0.18",
|
|
"match-sorter": "^6.3.4",
|
|
"morgan": "^1.10.0",
|
|
"nanoid": "3.3.8",
|
|
"neverthrow": "^8.2.0",
|
|
"non.geist": "^1.0.2",
|
|
"octokit": "^3.2.1",
|
|
"ohash": "^1.1.3",
|
|
"openai": "^4.33.1",
|
|
"p-limit": "^6.2.0",
|
|
"p-map": "^6.0.0",
|
|
"p-retry": "^4.6.1",
|
|
"parse-duration": "^2.1.0",
|
|
"posthog-js": "^1.93.3",
|
|
"posthog-node": "4.17.1",
|
|
"prism-react-renderer": "^2.3.1",
|
|
"prismjs": "^1.30.0",
|
|
"prom-client": "^15.1.0",
|
|
"qrcode.react": "^4.2.0",
|
|
"random-words": "^2.0.0",
|
|
"react": "^18.2.0",
|
|
"react-aria": "^3.31.1",
|
|
"react-collapse": "^5.1.1",
|
|
"react-day-picker": "^9.13.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-grid-layout": "^2.2.2",
|
|
"react-hotkeys-hook": "^4.4.1",
|
|
"react-markdown": "^10.1.0",
|
|
"react-popper": "^2.3.0",
|
|
"react-resizable": "^3.1.3",
|
|
"react-resizable-panels": "^2.0.9",
|
|
"react-stately": "^3.29.1",
|
|
"react-use": "17.5.1",
|
|
"react-window-splitter": "^0.4.1",
|
|
"recharts": "^2.15.2",
|
|
"regression": "^2.0.1",
|
|
"remix-auth": "^3.6.0",
|
|
"remix-auth-email-link": "2.0.2",
|
|
"remix-auth-github": "^1.6.0",
|
|
"remix-auth-google": "^2.0.0",
|
|
"remix-typedjson": "0.3.1",
|
|
"remix-utils": "^7.7.0",
|
|
"seedrandom": "^3.0.5",
|
|
"semver": "^7.5.0",
|
|
"simple-oauth2": "^5.0.0",
|
|
"simplur": "^3.0.1",
|
|
"slug": "^6.0.0",
|
|
"socket.io": "4.7.4",
|
|
"socket.io-adapter": "^2.5.4",
|
|
"sonner": "^1.0.3",
|
|
"sql-formatter": "^15.4.10",
|
|
"sqs-consumer": "^7.4.0",
|
|
"streamdown": "^1.4.0",
|
|
"superjson": "^2.2.1",
|
|
"tailwind-merge": "^1.12.0",
|
|
"tailwind-scrollbar-hide": "^1.1.7",
|
|
"tailwindcss-animate": "^1.0.5",
|
|
"tailwindcss-textshadow": "^2.1.3",
|
|
"tiny-invariant": "^1.2.0",
|
|
"ulid": "^2.3.0",
|
|
"ulidx": "^2.2.1",
|
|
"uuid": "^14.0.0",
|
|
"ws": "^8.11.0",
|
|
"zod": "3.25.76",
|
|
"zod-error": "1.5.0",
|
|
"zod-validation-error": "^1.5.0"
|
|
},
|
|
"devDependencies": {
|
|
"@internal/clickhouse": "workspace:*",
|
|
"@internal/replication": "workspace:*",
|
|
"@internal/testcontainers": "workspace:*",
|
|
"@remix-run/dev": "2.17.4",
|
|
"@remix-run/eslint-config": "2.17.4",
|
|
"@remix-run/testing": "^2.17.4",
|
|
"@sentry/cli": "2.50.2",
|
|
"@swc/core": "^1.3.4",
|
|
"@swc/helpers": "^0.4.11",
|
|
"@tailwindcss/forms": "^0.5.3",
|
|
"@tailwindcss/typography": "^0.5.9",
|
|
"@total-typescript/ts-reset": "^0.4.2",
|
|
"@types/bcryptjs": "^2.4.2",
|
|
"@types/compression": "^1.7.2",
|
|
"@types/cookie": "^0.6.0",
|
|
"@types/eslint": "^8.4.6",
|
|
"@types/express": "^4.17.13",
|
|
"@types/humanize-duration": "^3.27.1",
|
|
"@types/json-query": "^2.2.3",
|
|
"@types/lodash.omit": "^4.5.7",
|
|
"@types/marked": "^4.0.3",
|
|
"@types/morgan": "^1.9.3",
|
|
"@types/node-fetch": "^2.6.2",
|
|
"@types/prismjs": "^1.26.0",
|
|
"@types/qs": "^6.9.7",
|
|
"@types/react": "18.2.69",
|
|
"@types/react-collapse": "^5.0.4",
|
|
"@types/react-dom": "18.2.7",
|
|
"@types/regression": "^2.0.6",
|
|
"@types/seedrandom": "^3.0.8",
|
|
"@types/semver": "^7.5.0",
|
|
"@types/simple-oauth2": "^5.0.4",
|
|
"@types/slug": "^5.0.3",
|
|
"@types/supertest": "^6.0.2",
|
|
"@types/tar": "^6.1.4",
|
|
"@types/ws": "^8.5.3",
|
|
"@typescript-eslint/eslint-plugin": "^5.59.6",
|
|
"@typescript-eslint/parser": "^5.59.6",
|
|
"autoevals": "^0.0.130",
|
|
"autoprefixer": "^10.4.13",
|
|
"css-loader": "^6.10.0",
|
|
"datepicker": "link:@types/@react-aria/datepicker",
|
|
"engine.io": "^6.5.4",
|
|
"esbuild": "^0.15.10",
|
|
"eslint": "^8.24.0",
|
|
"eslint-config-prettier": "^8.5.0",
|
|
"eslint-plugin-import": "^2.29.1",
|
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
"eslint-plugin-turbo": "^2.0.4",
|
|
"evalite": "^0.11.4",
|
|
"npm-run-all": "^4.1.5",
|
|
"postcss-import": "^16.0.1",
|
|
"postcss-loader": "^8.1.1",
|
|
"prettier": "^2.8.8",
|
|
"prettier-plugin-tailwindcss": "^0.3.0",
|
|
"prop-types": "^15.8.1",
|
|
"rimraf": "^6.0.1",
|
|
"style-loader": "^3.3.4",
|
|
"supertest": "^7.0.0",
|
|
"tailwind-scrollbar": "^3.0.1",
|
|
"tailwindcss": "3.4.1",
|
|
"tsconfig-paths": "^3.14.1",
|
|
"tsx": "^4.20.6",
|
|
"vite-tsconfig-paths": "^4.0.5"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.19.0 || >=20.6.0"
|
|
}
|
|
}
|