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
-
Create
ai/<platform>.js— extendChatParser, implementisAvailable(url)andparse(). -
Register it in
detection/detect-platform.jsand export it fromai/index.js. - Add its domains to
detection/domains.js. -
Add a fixture +
tests/<platform>.test.jsbased on an existing snapshot test. -
Update the platform lists in
README.mdand 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
in
CONTRIBUTING.md. Keep PRs focused on one fix or feature.