Skip to content

CI recap install: @agent-native/core pulls a 925MB / ~900-package web-app tree for pure-Node CLI usage #2107

Description

@jalbarrang

Summary

The PR Visual Recap workflow installs @agent-native/core on every pull-request run. The package currently pulls the entire plan web-app dependency tree — ~895 packages, 925MB of node_modules — even though every command the CI workflow invokes is pure Node. On a GitHub-hosted ubuntu-latest runner the cold install takes ~2 minutes per PR push, which dominates the recap job's setup time.

Measurements

@agent-native/[email protected], Node 22:

packages node_modules install (local, warm network) install (ubuntu-latest, observed)
npm install 895 925MB 93s ~121s
npm install --ignore-scripts 895 925MB 80s

The tree includes a full web app: react-router, @radix-ui/*, @sentry/browser+@sentry/node, @codemirror/*, @assistant-ui/*, @tiptap/*, playwright/playwright-core, sharp, @resvg/resvg-js, @libsql/client, @neondatabase/serverless, etc.

Why this seems avoidable

The commands the distributed pr-visual-recap.yml workflow actually runs are pure Node + git/https:

recap collect-diff · scan · build-prompt · publish · comment · check · usage · agent-summary · block-reference

I verified all of them work from an --ignore-scripts install (no sharp/resvg native binaries) — consistent with the workflow's own dogfood path, which already installs with --ignore-scripts. The heavy pieces appear to serve only:

  • playwright / sharp / @resvg/resvg-jsrecap shot (screenshot embedding — optional; we run link-only comments)
  • the React/router/editor stack → the plan web app, not the CLI

Suggestions (any of these would help)

  1. Publish a slim CLI-only package (e.g. @agent-native/recap-cli) that the workflow installs, with the web-app stack out of its dependency graph.
  2. Or move screenshot/browser deps (playwright, sharp, @resvg/resvg-js) to optionalDependencies so CI can --omit=optional.
  3. Or document --ignore-scripts as the supported CI install mode in the workflow template (we've adopted it downstream; ~13s saved, but the 895-package download remains).

Related install noise (same runs)

Happy to provide timing logs or test a canary build.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions