Commit Graph

100 Commits

Author SHA1 Message Date
github-actions[bot] fd23edca7e chore: version packages (#1649) 2026-09-01 21:34:33 -07:00
Aiden Bai 8c2f03aea9 feat: make React cleanup first-class (#1624)
* feat: make React cleanup first-class

* refactor: remove editor integrations

* fix: harden React cleanup analysis

* fix: detect default export duplication roots

* fix: unwrap typed duplication roots

* feat: add opt-in project analysis rules

* fix: canonicalize project analysis paths

* fix: harden project analysis precision

* fix: recognize cross-platform project entries

* fix: eliminate project analysis false positives

* fix: harden project analysis reachability

* fix: canonicalize project analysis inputs

* fix: resolve project analysis review findings

* fix: eliminate residual project analysis false positives

* fix: ignore commented registry previews

* fix: eliminate project analysis false positives

* fix: normalize project analysis paths across platforms

* fix: normalize Nextra theme path identity

* test: canonicalize convention fixture paths

* fix: preserve project analysis provenance

* fix: harden project analysis precision

* fix: honor project analysis boundaries

* fix: recognize conditional config plugins

* fix: recognize executable project references

* fix: recognize Stencil tool contracts

* fix: recognize nested tool references

* fix: recognize project setup contracts

* fix: recognize generated and local package consumers

* fix: recognize static template package references

* fix: recognize nested package runtime contracts

* fix: close project analysis parser gaps

* fix: parse project conventions structurally

* refactor: replace structural scanners with parsers

* fix: recognize functional Next CSS config

* fix: close remaining project analysis gaps

* fix: apply tag filters to project analysis

* fix: preserve embedded source positions

* fix: validate static config helper bindings

* fix: bound runtime directory discovery

* fix: close final dependency analysis gaps

* fix: preserve declaration dependency references

* chore: refresh generated rule metadata

* fix: make project analysis portable and bounded

* test: stabilize cleanup scaling guard

* refactor: parse project syntax with oxc

* fix: normalize native filesystem paths

* fix: separate path identity from report paths

* fix: match project files by filesystem identity

* fix: match build glob files by package identity

* fix: use native path keys for file identity

* fix: canonicalize Windows file identities

* fix: canonicalize package ownership paths

* test: inspect Windows path identities

* test: trace Windows package ownership

* fix: keep Windows path identities consistent

* fix: classify test contracts by normalized path

* fix: scope test contracts by canonical package path

* fix: keep test package graphs conservative

* test: keep React complexity advisory
2026-08-13 16:26:08 -07:00
Aiden Bai a2b460d4ae test: stabilize CI timing guards (#1645) 2026-08-13 05:38:07 -07:00
github-actions[bot] 86198f151b chore: version packages (#1618) 2026-08-13 04:38:53 -07:00
Aiden Bai c50e3bdbe3 fix(core): keep react detection React-specific 2026-08-13 05:02:35 +00:00
Aiden Bai acdcb236b9 fix(core): report supported library projects 2026-08-13 04:36:17 +00:00
Aiden Bai 51e198db8b perf: reuse source inventories across project scans (#1617)
* perf: reuse source inventories across project scans

* chore: upgrade Oxc toolchain

* fix: fall back for empty shared inventories
2026-08-09 01:42:22 -07:00
github-actions[bot] d23a0d723c chore: version packages (#1616)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-09 04:53:53 +00:00
github-actions[bot] 3bb84fbeb2 chore: version packages (#1613)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 19:17:54 -05:00
Ray Arayilakath c843b01a9e feat(core): add Axiom OTLP transport and an anonymizing tracer (#1608)
* feat(core): add Axiom OTLP transport and an anonymizing tracer

Adds the export path for shipping traces and metrics to Axiom, plus the
anonymization guarantee that has to come with it. Nothing emits yet — the CLI
still routes telemetry to Sentry; this is the engine-side groundwork.

`layerAxiomTraces` and `layerAxiomMetrics` are composed by hand rather than
through `Otlp.layer`, because Axiom routes each signal to a different dataset
via a different header and `Otlp.layer` passes one `headers` object to every
signal. Serialization is protobuf, not JSON: Axiom's `/v1/metrics` accepts
`application/x-protobuf` only. `OtlpSerialization.layerProtobuf` ships with
Effect, so this adds no dependency.

They are separate layers on purpose. Effect tracks delta-temporality state on
the metrics exporter instance, so a second exporter in one process starts with
no previous snapshot and re-reports every counter's full value — doubling every
metric. `telemetry-payload.test.ts` pins that behavior so a future refactor that
merges them fails loudly instead of silently doubling data.

OTLP has no `beforeSend` hook, so Sentry's central scrubber has no equivalent.
`makeScrubbingTracer` wraps the tracer and runs every span name, attribute, and
event payload through `anonymizeText` on the way to the exporter, and is applied
inside `layerAxiomTraces` so an attribute added later cannot bypass it.
`anonymize-text.ts` moves to core (both its scrubbers already lived there) and
`run-inspect.ts` now scrubs `inspect.directory` at the source rather than relying
on the backstop.

`TELEMETRY_SHUTDOWN_TIMEOUT_MS` is 1s, tighter than Sentry's 2s error flush: the
metrics exporter passes `maxBatchSize: "disabled"` internally, which skips
Effect's empty-buffer short-circuit, so it POSTs on every scope close whether or
not anything was recorded. On a firewalled machine that request cannot fail fast,
and unlike the Sentry flush it would run on every scan rather than only on crashes.

Verified against a local collector: correct per-signal datasets and protobuf
content type, and no home directory, username, or secret reaches the wire.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix(core): close three review findings in the Axiom transport

Scrub the failure a span ended with. The OTLP tracer runs `Cause.prettyErrors`
over the exit and exports each result as `exception.type` / `exception.message` /
`exception.stacktrace`. None of those go through `span.attribute`, so they
bypassed the scrubbing tracer entirely — and stack traces are full of absolute
paths, meaning any failing scan shipped the user's home directory. This was the
one route into the payload the backstop didn't cover. Interrupt-only causes are
left alone; the exporter emits a fixed label for them and never touches the
error text.

Honor `exportIntervalMs` for traces. It was threaded through to the metrics
exporter but not the tracer, so a long-lived process — the language server —
would hold spans for the full ten-minute default no matter what interval it
asked for.

Trim trailing slashes without a regex. `/\/+$/` backtracks quadratically on a
domain made mostly of slashes, which CodeQL flags as a polynomial-regex denial
of service because the value comes from the caller.

Also corrects a doc comment that still described metrics as being built at exit,
which stopped being true when the CLI moved to a single shared scope.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 19:14:46 -05:00
github-actions[bot] 43863e2f10 chore: version packages (#1607)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 15:24:23 -07:00
github-actions[bot] e83abeb694 chore: version packages (#1604)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 05:34:32 -07:00
Aiden Bai 13138a4af5 refactor: simplify internals across the workspace (#1590) 2026-08-08 00:20:14 -07:00
github-actions[bot] df8660f419 chore: version packages (#1602)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 17:47:30 -07:00
github-actions[bot] 59ae70b4fb chore: version packages (#1586) 2026-08-07 03:14:51 -07:00
github-actions[bot] ff436b0b96 chore: version packages (#1570) 2026-08-05 00:42:33 -07:00
github-actions[bot] dcfe06428d chore: version packages (#1548) 2026-08-03 18:25:23 -07:00
github-actions[bot] 0b673ccb76 chore: version packages (#1462) 2026-07-31 22:57:26 -07:00
Aiden Bai 2db2a97283 perf: reduce scan startup and workspace contention (#1533) 2026-07-30 19:42:52 -07:00
github-actions[bot] 201106e0e8 chore: version packages (#1442) 2026-07-26 20:43:07 -07:00
github-actions[bot] 54ba416f83 chore: version packages (#1433) 2026-07-23 03:44:25 -07:00
github-actions[bot] d2cd2f41b2 chore: version packages (#1425) 2026-07-22 15:46:10 -07:00
github-actions[bot] 84b999002a chore: version packages (#1420)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 01:36:31 -07:00
github-actions[bot] d489fa081a chore: version packages (#1382) 2026-07-21 00:29:21 -07:00
github-actions[bot] 78189225ae chore: version packages (#1378) 2026-07-17 23:39:46 -07:00
github-actions[bot] c0d9d385cd chore: version packages (#1307)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 21:27:09 -07:00
github-actions[bot] d8b2989fd5 chore: version packages (#1262)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-14 07:33:33 -07:00
github-actions[bot] ece35b3ffa chore: version packages (#1217) 2026-07-14 05:36:31 -07:00
github-actions[bot] bdd1321f62 chore: version packages (#1163) 2026-07-13 07:22:18 -04:00
github-actions[bot] e877ca7cba chore: version packages (#1145) 2026-07-12 00:45:02 -04:00
github-actions[bot] 0f07133c70 chore: version packages (#1118)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-11 17:21:17 -07:00
Aiden Bai 938008119a feat(report): add versioned JSON v3 metadata (#1120)
* feat(report): add versioned JSON v3 metadata

Expose deterministic diagnostic identities and exact scan completeness while preserving v1 and v2 decoding.

* fix(report): make v3 identities and coverage exact

Keep workspace diagnostics distinct and align JSON completeness, telemetry verdicts, and fallback output with the versioned report contract.
2026-07-10 23:49:19 -07:00
github-actions[bot] dfccac44e4 chore: version packages (#1113) 2026-07-10 01:33:16 -07:00
github-actions[bot] fcb203ee80 chore: version packages (#1086) 2026-07-09 05:50:24 -07:00
cursor[bot] 0eb5293c1d Fix API lint opt-out and deslop traversal cleanup (#1085)
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
2026-07-08 18:57:17 -07:00
github-actions[bot] aa519e5f55 chore: version packages (#1068) 2026-07-07 23:50:24 -04:00
github-actions[bot] 160f84c6cc chore: version packages (#1063) 2026-07-04 02:07:38 -07:00
devin-ai-integration[bot] 6b21b70d1a feat(core): surface reactDetected so a gated-off scan can't pass for clean (#1062)
Co-authored-by: Aiden Bai <aiden.bai05@gmail.com>
2026-07-04 01:42:13 -07:00
github-actions[bot] 574cba6e94 chore: version packages (#1055)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-04 00:39:30 -05:00
github-actions[bot] 8325343421 chore: version packages (#1031) 2026-07-03 17:18:50 -07:00
github-actions[bot] 397816a2b8 chore: version packages (#1029) 2026-07-02 21:41:14 -04:00
github-actions[bot] 4e91677d40 chore: version packages (#1026) 2026-07-02 17:00:20 -07:00
github-actions[bot] 113637e9bf chore: version packages (#918) 2026-07-02 03:16:24 -07:00
Aiden Bai ba2af1b7fa chore: add AI training restriction to license (#936) 2026-06-22 16:28:25 -07:00
Aiden Bai 157177a49f revert: undo direct commits; changes moved to PR 2026-06-21 20:27:27 -07:00
Aiden Bai 9f2845464a chore: add AI training restriction to license (#935)
* chore: add AI training restriction to license

Adds a no-training clause to prevent use of the source code as training,
fine-tuning, or evaluation data for ML models without prior written
permission. Academic researchers can request a no-cost exemption at
founders@million.dev.

Also updates the title to reflect the additional restrictions, and removes
the "outputs" language (legally overreaching — users own output from their
own data).

* chore: simplify training restriction to uniform written-permission requirement

* feat(cli): warn when react-doctor is run inside an AI/ML training pipeline

Detects presence-based env vars for HuggingFace, CUDA/GPU, experiment
trackers (W&B, MLflow, Comet, Neptune), Ray workers, RL simulators
(MuJoCo, Gymnasium), cloud ML platforms (SageMaker, Azure ML, Vertex AI),
AI agent sandboxes (Daytona, E2B, Modal, RunPod, Harbor), and coding-agent
eval harnesses (SWE-bench, SWE-agent). Prints a warning to stderr pointing
to founders@million.dev for written permission.

* feat(cli): expand CI provider and AI/ML training environment detection

CI providers (+18): Semaphore, AppVeyor, Harness, Buddy, Codefresh,
Netlify, Railway, Vercel, Codemagic, Prow, Agola, Cirrus CI, Render,
Fly.io, Blacksmith, WarpBuild, Namespace, Ubicloud

ML/AI training (+21): Kaggle, Google Colab, Databricks, SageMaker
(SM_TRAINING_ENV + TRAINING_JOB_ARN), Azure ML (AZUREML_RUN_ID),
Vertex AI (CLOUD_ML_PROJECT_ID), W&B sweeps, DVC stages, ClearML,
Flyte, Determined AI, Lightning AI, Argo Workflows, Kubeflow Pipelines,
HuggingFace Spaces, Replicate, Vast.ai, Google TPU, ROCm

Coding agents (+3): Cline, Augment, Trae AI

* feat(api,packaging): add AI training warning to programmatic API; fix license labels

- Adds AI/ML environment detection to diagnose() (both single-dir and
  batch forms) so programmatic users (e.g. CodeRabbit integrations) see
  the same license warning as CLI users. Warns once per process via a
  module-level guard. Kept inline to avoid a CLI→API dep.
- Changes all package.json "license" fields from "MIT" to
  "SEE LICENSE IN LICENSE" so automated scanners (Fossa, Snyk,
  TLDR-Legal) report the actual terms instead of plain MIT.

* feat(website): add /license page with commercial contact CTA
2026-06-21 20:22:22 -07:00
github-actions[bot] f4e8e4bd5f chore: version packages (#891) 2026-06-20 00:11:26 -04:00
github-actions[bot] 96b5bb4e5b chore: version packages (#827) 2026-06-19 00:26:04 -04:00
github-actions[bot] 15238de701 chore: version packages (#821) 2026-06-15 04:01:19 -07:00
github-actions[bot] daf0579d19 chore: version packages (#810) 2026-06-13 21:36:52 -07:00