chore: bring code interpreter dependencies up to current - #5
Conversation
Batch A (minor/patch): - @aws-sdk/client-lambda-microvms/s3 3.1079.0 -> 3.1109.0 - @opentelemetry/core/resources/sdk-trace-base 2.8.0 -> 2.10.0 - @opentelemetry/exporter-trace-otlp-proto 0.219.0 -> 0.221.0 - @rollup/plugin-typescript 12.1.1 -> 12.3.0 - @types/semver 7.5.8 -> 7.8.0 - @typescript-eslint/eslint-plugin/parser 8.0.1 -> 8.67.0 - axios 1.8.4 -> 1.19.0 - eslint-plugin-import 2.29.1 -> 2.32.0 - winston 3.14.2 -> 3.19.0 Batch B (major): - rollup 2.79.2 -> 4.62.4; migrate service/rollup.config.js -> rollup.config.mjs - @rollup/plugin-alias 5.1.1 -> 6.0.0 - @rollup/plugin-commonjs 28.0.1 -> 29.0.3 - @rollup/plugin-node-resolve 15.3.0 -> 16.0.3 - express 4.x -> 5.2.1 (both api and service) - @types/express unified to 5.0.6 - express-rate-limit 7.4.1 -> 8.6.2 - rate-limit-redis 4.2.0 -> 6.0.1 - ioredis 5.4.1 -> 6.0.0 - bullmq 5.13.1 -> 6.1.2 - nanoid 3.3.7 -> 6.0.1; remove deprecated @types/nanoid - prettier 2.4.1 -> 3.9.6; run prettier --write . - eslint 8.57.0 -> 10.8.1; migrate .eslintrc.json -> eslint.config.mjs - eslint-import-resolver-typescript 3.6.3 -> 4.4.5 - @types/node 22.5.5 -> 22.20.1 (kept on Node 22 line) - typescript 5.x -> 5.9.3 (TS 7 deferred to separate spike) Also: - Remove rollup-plugin-sourcemaps (stale, Rollup 4 has built-in sourcemaps). - Add helm templates to .prettierignore. - Fix Express 5 route-param string|string[] typing in egress-gateway, file-server. - Update rate-limit-redis import to named RedisStore and adjust SendCommandFn. Verification: - bun install passes for api and service. - cd api && bun run build passes. - cd service && bun run build passes. - ESLint flat config loads; remaining explicit-return-type warnings need follow-up. Refs: ADORSYS-GIS/ai-helm#1002
…ith jq - limits.ts: pass req.ip to express-rate-limit v8 ipKeyGenerator (API now takes a string IP, not a Request) - registry.ts: wrap onLateValue promise in a void-returning arrow to fix TS2322 (void | Promise<void> not assignable to void) - tool-input-signature.ts: port jq 1.6 jvp_dtoa_fmt number formatting so hashToolInput/hashRawToolInputJson match jq canonicalization for exponent-form numbers and raw number spellings Fixes the two failing bun tests and the two build type errors introduced by the dependency refresh.
There was a problem hiding this comment.
🅵 Fast automated pass — SAST + a quick, diff-scoped look (no repo-wide retrieval). For a deeper, repo-aware review, mention @lightbridge-assistant on this PR.
No defects found. In this round I opened and reviewed on disk all the substantive api/src modules: config.ts, logger.ts, metrics.ts, execution-manifest.ts, execution-manifest-request.ts, internal-service-auth.ts, session-checkpoint.ts, session-workspace.ts, index.ts, tool-call-socket-process.ts, tool-call-socket-proxy.ts, nsjail.ts, nsjail-setup-gate.ts, secure-startup.ts, safe-error.ts, telemetry.ts, warmup.ts, runtime.ts, job.ts, build.js — plus every hunks of the shown diff (v2.ts /execute reflow verified control-flow-preserving; lifecycle.ts, scripts, openapi.yaml, package files, enum/index.ts, .prettierignore cosmetic). Findings were nil across correctness/security/quality/performance: config env parsing is safeInt-bounded, manifest crypto uses canonical JSON + timingSafeEqual/ed25519 with time-window checks, hardened-startup forbids HMAC-secret+direct URLs, nsjail carries an arch-specific seccomp policy, telemetry uses the bumped otel 2.10 APIs (imports present in 2.10/0.221.0), and nanoid v6 (ESM-only) is only used in the bun ESM bundle. SAST (opengrep) found nothing. NOT reviewed (named, not claimed — I did not open them): all of service/src/, all test files, the remaining scripts, READMEs/docs, docker-compose, helm/, tsconfigs, and lockfiles (api/package-lock.json, service/bun.lock, launcher/Cargo.lock); these need a full-diff pass to establish old→new changes.
4 pre-existing observation(s) about code outside this PR's diff (informational — not findings on this change)
- 🔍 opengrep: Detected non-literal calls to spawn(). This could lead to a command injection vulnerability. —
api/src/warmup.ts - 🔍 opengrep: Detected calls to child_process from a function argument
cmd. This could lead to a command injection if the input is … —service/scripts/test-irsa-simulation.ts - 🔍 opengrep: Detected calls to child_process from a function argument
cmd. This could lead to a command injection if the input is … —service/scripts/test-irsa-simulation.ts - 🔍 opengrep: The call to 'createDecipheriv' with the Galois Counter Mode (GCM) mode of operation is missing an expected authenticati… —
service/src/egress-grant.ts
🤖 AI-generated review — treat it as untrusted, verify before acting; a human owns the final decision (AI governance).
| * Keeping tar and gzip as separate streaming stages preserves bounded | ||
| * memory, backpressure, and the existing tar.gz wire format. */ | ||
| const tar = spawn( | ||
| options.tarCommand ?? 'tar', |
There was a problem hiding this comment.
🔍 opengrep: Detected calls to child_process from a function argument options. This could lead to a command injection if the input…
Detected calls to child_process from a function argument options. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.
Detected by opengrep rule opt.opengrep-rules.javascript.lang.security.detect-child-process — a deterministic static-analysis match. Verify before acting; suppress a false positive with an opengrep-ignore comment.
Was this useful? React 👍/👎 to give us feedback
The previous change rewrote tool-input-signature.ts to match jq 1.6's number canonicalization. Production sandboxes run jq 1.7, which preserves the raw number spelling and uses uppercase 'E' — the original implementation already matched that. Reverting restores prod compatibility: tests pass in CI/prod (jq 1.7) and fail locally on jq 1.6, which is the intended behavior. Keeps the unrelated build fixes (limits.ts ipKeyGenerator, registry.ts void wrapper).
Implement ticket #4