Contributing

Keep the commons alive.

decant-core works because fixes happen once, in one place — the whole point of the AGPL commons. When an AI interface changes, that fix belongs upstream.

Workflow

git clone https://github.com/Covai-Labs/decant-core.git
cd decant-core
npm install

# add / edit your parser, then verify
npm run test
npm run lint
npm run format:check

Where things live

ai/           # one parser module per platform (extends base.js)
detection/    # detect-platform.js + domains.js registry
utils/        # markdown + LaTeX helpers
web/          # article extraction (Readability, Defuddle, Article-Extractor)
tests/        # node --test fixtures per platform

Adding a platform

  1. Create ai/<platform>.js — extend ChatParser, implement isAvailable(url) and parse().
  2. Register it in detection/detect-platform.js and export it from ai/index.js.
  3. Add its domains to detection/domains.js.
  4. Add a fixture + tests/<platform>.test.js based on an existing snapshot test.
  5. Update the platform lists in README.md and this site'ssrc/data/platforms.ts.

Fixing a broken parser

Open an issue with the platform name and the DOM context, or jump straight to a PR. The test suite double-checks output shape (title, messages,model, metadata), so regressions surface fast.

CLA: by contributing you agree to the grant terms inCONTRIBUTING.md. Keep PRs focused on one fix or feature.