packages: - 'packages/*' # ant-cli: AI workflow backend + Cloud IDE (IDEService) # ant-ui: Frontend UI (SPA at /app) # ant-site: Marketing site (SSG at /) - 'examples/*' # Worked examples — not product, in no image (every Dockerfile COPYs # packages/ selectively). Members so one root install covers them and CI # typechecks them. See examples/README.md. allowBuilds: '@vscode/ripgrep': true sharp: true cpu-features: false esbuild: false msgpackr-extract: false protobufjs: false ssh2: false '@google/genai': false # P3 security-hardening (2026-06-30) — accepted dev-only advisories. # All are vite/vitest/esbuild dev-server or build-tool vulns, NOT shipped in any # runtime image or browser bundle and NOT reachable in CI (`vite build` / `vitest # run`, no listening dev server) — closing them requires a vite 5→6 major bump on # ant-ui (breaking), deferred. Runtime vulns are kept at zero via overrides below; # this list lets `pnpm audit` exit clean so a NEW runtime vuln is what surfaces. auditConfig: ignoreGhsas: - GHSA-5xrq-8626-4rwp # vitest: UI-server arbitrary file read (UI server never run) - GHSA-v2wj-q39q-566r # vite: server.fs.deny bypass via queries (dev server) - GHSA-p9ff-h696-f583 # vite: arbitrary file read via dev server - GHSA-fx2h-pf6j-xcff # vite: server.fs.deny bypass on Windows alt paths (dev server) - GHSA-4w7w-66w2-5vf9 # vite: path traversal in optimized deps .map (dev server) - GHSA-v6wh-96g9-6wx3 # vite>launch-editor: NTLMv2 hash disclosure (Windows dev only) - GHSA-67mh-4wv8-2f99 # esbuild: dev server accepts any-origin requests (dev server) # Trivy CI fix — transitive-dependency CVE patches (pnpm 11 workspaces only honor overrides here) overrides: handlebars: '^4.7.9' protobufjs: '^7.6.1' # ws: CVE-2026-48779 HIGH — memory exhaustion from many tiny frame fragments, # fixed 8.21.2. The `/bridge/ws` WebSocket server accepts connections before # JWT registration, so the frame parser is reachable unauthenticated. ws: '^8.21.2' langsmith: '^0.6.0' lodash: '^4.18.1' '@isaacs/brace-expansion': '^5.0.1' picomatch: '^2.3.2' path-to-regexp: '^8.4.0' 'minimatch@<10.2.3': '^10.2.3' # Force the 5.x/9.x lines up to 10.x too. These come only via archiver@7 # (readdir-glob→minimatch@5, archiver-utils→glob@10→minimatch@9), whose sole # transitive brace-expansion@2.1.2 has NO 2.x patch for CVE-2026-14257. # Collapsing minimatch to 10.x drops the 2.x line entirely (10.x → be@5.x). 'minimatch@>=5.0.0 <10.0.0': '^10.2.3' # glob 10.x paired with minimatch 9; bump to 11.x (paired with minimatch 10) # so archiver-utils no longer reintroduces the minimatch@9 → be@2.x line. 'glob@>=10.0.0 <11.0.0': '^11.0.3' '@grpc/grpc-js': '^1.14.4' # tsx<4.22 pulls esbuild ~0.25 (GHSA-gv7w-rqvm-qjhr, fixed 0.28.1); 4.22+ pulls esbuild ~0.28 tsx: '^4.22.4' # P3 security-hardening (2026-06-30) — runtime transitive CVE patches. # follow-redirects: auth-header cross-domain leak (proxy-adjacent, top priority). 'follow-redirects': '^1.15.12' # body-parser/qs: DoS via malformed urlencoded/stringify (express 5 transitive). 'body-parser': '^2.2.1' 'qs': '^6.15.2' # react-markdown/rehype-raw transitive — unsanitized class attr XSS. 'mdast-util-to-hast': '^13.2.1' # mermaid transitive — IN_PLACE / shadow-root XSS chain (FE bundle). 'dompurify': '^3.4.11' # express-rate-limit transitive — Address6 HTML XSS + CVE-2026-69192 # (Address4 SSRF-adjacent parsing bypass, fixed 10.3.1). 'ip-address': '^10.3.1' # uuid: buf bounds check (langgraph/bullmq/dockerode transitive; direct dep also bumped). 'uuid': '^11.1.1' # brace-expansion: DoS — original zero-step (2.0.x), CVE-2026-13149 # exponential-time expand() (fixed 2.1.2 / 5.0.7), and CVE-2026-14257 # memory-exhaustion via unbounded result-string length (fixed 5.0.8 only — # no 2.x backport yet; the 2.x finding is suppressed in secops-ci-policies # until upstream ships one). Scope each major to its vulnerable range only, # leaving 1.x consumers untouched (mirrors minimatch@=2.0.0 <2.1.2': '^2.1.2' # CVE-2026-69152: common-prefix/suffix arbitrary-string generation DoS, # fixed 5.0.9 (also 1.1.18/2.1.4/3.0.6 for those majors — none installed). 'brace-expansion@>=5.0.0 <5.0.9': '^5.0.9' # js-yaml: CVE-2026-59869 DoS on malformed input (fixed 4.3.0 / 3.15.0) + # GHSA-5p4m-2wfm-xmqj quadratic-CPU !!omap resolution (fixed 4.3.1 / 3.15.1). 'js-yaml@>=4.0.0 <4.3.1': '^4.3.1' # nanoid: CVE-2026-67213 infinite loop in customAlphabet/customRandom on # certain inputs (fixed 3.3.17 / 5.1.6 — only the 3.x line is installed). 'nanoid@>=3.0.0 <3.3.17': '^3.3.17' # postcss: CSS-stringify XSS + GHSA-r28c-9q8g-f849 sourceMappingURL path # traversal (.map disclosure, fixed 8.5.18) — build-time only (tailwind/vite). 'postcss': '^8.5.18' # shell-quote: quote() newline-escape bug (concurrently dev script transitive). 'shell-quote': '^1.8.4' # @babel/core: sourceMappingURL arbitrary file read (@vitejs/plugin-react transitive). '@babel/core': '^7.29.1' # rollup: path-traversal arbitrary file write (build-time, via vite/vitest); # in-major bump (4.x), safe with vite 5's rollup ^4 peer range. 'rollup': '^4.59.0' # sharp: GHSA-f88m-g3jw-g9cj HIGH (bundled libvips, fixed 0.35.0) + # GHSA-rgj7-g3m4-5g8c HIGH (further bundled-libvips CVEs, two rated Critical, # fixed 0.35.4). next (ant-site) pulls sharp ^0.34 transitively; force the # patched line workspace-wide. The floor must track the advisory, not just the # first patched release — a range a stale lockfile still satisfies is what let # ant-cloud keep 0.35.3 after this GHSA landed. 'sharp': '^0.35.4' # next: CVE-2026-64641 / -64645 / -64649 HIGH — App Router Server Action # request-smuggling / SSRF chain (fixed 15.5.21). Direct dep in ant-site also # bumped to ^15.5.21; scope the override to the vulnerable <15.5.21 range only. 'next@<15.5.21': '^15.5.21' # fast-uri: CVE-2026-75899 / -75931 / -75975 / -76172 HIGH — hostname/IPv6 # percent-decoding and canonicalization bugs in the URI parser (fixed 3.1.6; # also 2.4.5 / 4.1.3 for those majors — only the 3.x line is installed here, # pulled in transitively via ajv). Scope to the vulnerable 3.x range only. 'fast-uri@>=3.0.0 <3.1.6': '^3.1.6'