AI Agents, Pro and x402 extensions
Core declares contribution points for CMS content types, Astro layout themes, editor actions and dashboard widgets. Optional Python distributions contribute to those same points without changing Core. Portable Datalayer themes remain a framework-neutral export from Primer Addons rather than an extension-specific Astro layout.
Install optional extensions
From the Reactor repository root:
make cms-astro-ai-build
make cms-astro-pro
make cms-astro-x402-build
make cms-astro-ai-build builds only the AI Agents frontend. To build,
install, and launch the CMS with that extension enabled, use
make cms-astro-ai instead of make cms-astro.
The same distinction applies to paid content: make cms-astro-x402-build
builds its wheel only, while make cms-astro-x402 builds, installs, and starts
the CMS with x402 enabled.
The Pro command is an ordinary Python installation. The AI build populates the
JavaScript that its run target installs, and the x402 build creates its wheel.
Each extension package
contains a backend plugin manifest and an embedded JavaScript module under
share/datalayer/reactor/extensions/. Refresh the admin page after installing
one so the frontend asks the running Reactor host for the current extension
list.
AI Agents
AI Agents packages the authenticated ChatFloating authoring assistant and
its CMS frontend-tool contract. Its frontend is built separately and embedded
in the wheel, while Core exposes only the generic mount point used by public
site extensions. See AI-assisted publishing.
Pro
The Pro example contributes:
- an SEO analysis editor action;
- scheduled-publication metadata;
- the Midnight Pro Astro layout theme;
- an editorial audit dashboard widget.
Its backend analyze action checks title length, word count and headings and
returns a score. It is deliberately a separate package to demonstrate that a
commercial distribution boundary does not require a separate plugin API.
x402
The x402 package contributes paid-access controls and a payment-status widget.
Astro middleware adds an x402 helper to Astro.locals, so a paid route can
enforce access before it renders content:
const payment = await Astro.locals.x402({
price: '0.25',
description: 'Read the premium article',
});
if (payment instanceof Response) return payment;
Without a payment signature, the extension returns HTTP 402 and a
PAYMENT-REQUIRED header. A verified request receives a PAYMENT-RESPONSE
receipt.
The included verifier uses a deterministic HMAC signature so the example can be tested locally without a wallet or network service.
The HMAC verifier is a development fixture, not a blockchain settlement mechanism. A production deployment should keep the same Reactor/Astro boundary but delegate verification and settlement to a real x402 facilitator.
See Python-packaged extensions for packaging details and contribution points for the frontend composition model.