You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor(scan): drop ecosystem field, fall back to dir-mode for any folder
- discover(): if a path doesn't look like node_modules or site-packages, walk it
as a single anonymous package instead of erroring out. Refines SKIP_DIRS to
pure-metadata dirs only — .venv, node_modules, etc. stay in scope because
malware lives there by design.
- Drop the `ecosystem` field everywhere (schema, orchestrator, CLI display,
prompt template, tests). Discovery layout no longer needs to be carried into
reports; package@version is enough.
- Drop --max-files-per-pkg. --budget-usd plus the preflight estimate already
cover cost control, and the per-package cap conflicted with dir-mode.
- Bump PROMPT_VERSION to invalidate cached verdicts produced under the old
user-prompt format.
- README: document the new discovery model + dir-mode fallback.
- Test: cover dir-mode fallback and .git exclusion.
Verified end-to-end in cull-sandbox against a Datadog compromised_lib zip
(@emilgroup/[email protected]): discovered → estimated $0.0023 →
scanned for $0.0027 → flagged malicious with high-confidence findings
(postinstall hook, systemd persistence, npm-search worm propagation,
auto-publish hijack).
`PATH` must point at a package install directory: `node_modules`, `site-packages`, or a directory that clearly looks like one.
46
+
`cull scan` auto-detects `node_modules` and `site-packages` layouts; anything else is scanned as a single anonymous folder. Pure-metadata dirs (`.git`, `__pycache__`, lint caches) are skipped at walk time. Dependency dirs (`.venv`, nested `node_modules`) are *not* — that is exactly the attack surface this tool is for. Use `--estimate-only` first to see how big the scan will be.
0 commit comments