Skip to content

Submodules

Agent Surface Fallback

agent_surface_fallback. Recommended.

Markdownify only routes .md for the entity types it is configured for. This submodule gives every other route that renders HTML a Markdown twin, Views pages included.

A .md request that no other route claims is replayed as a sub-request for the original route with the markdown wrapper format, the mechanism core uses to render one page in different envelopes. The sub-request goes through routing and access checks like any other, so a page that is 403 or 404 as HTML is 403 or 404 as Markdown. Only the main content is converted, never the page regions; the page title becomes a leading heading.

Entity routes are never converted here: exposed entity types have Markdownify's own routes, and the rest are unexposed on purpose. Neither are administrative routes.

It stands in for Markdownify issue #3551170; disable it once that lands. It has no settings.

Agent Surface RSL

agent_surface_rsl.

Serves an RSL 1.0 licence at /license.xml, built from the declared signals: allowed categories become <permits>, disallowed ones <prohibits>. Bundles with a path prefix that differ from the site defaults get a <content> block of their own.

<?xml version="1.0" encoding="UTF-8"?>
<rsl xmlns="https://rslstandard.org/rsl">
  <content url="/">
    <license>
      <permits type="usage">ai-train,ai-input,search</permits>
      <payment type="free"/>
    </license>
  </content>
  <content url="/recipes/">
    <license>
      <permits type="usage">ai-input,search</permits>
      <prohibits type="usage">ai-train</prohibits>
      <payment type="free"/>
    </license>
  </content>
</rsl>

The licence is advertised with a License: line in robots.txt, a Link: rel="license" header, a <link rel="license"> element and the license front matter key. Enabling the submodule adds the rsl vocabulary to the enabled list; uninstalling it removes it.

The payment type is free by default. Other RSL values (purchase, subscription, training, crawl, use, contribution, attribution) can be set in the agent_surface_rsl.settings configuration as payment_type; there is no form for it, and the module implements no compensation model.

Agent Surface llms.txt

agent_surface_llmstxt. Requires llms.txt.

Appends one section per content type to /llms.txt, listing the .md alternates of the most recently changed published nodes in the site default language, then links to the usage terms. Everything is evaluated as the anonymous user, because the file is served to everyone and cached once.

The llms.txt tab on the Agent Surface settings sets how many nodes are listed per content type (50 by default) and which content types are listed. The file's heading and summary are edited on the llms.txt module's own form.

## Article
- [Oatmeal](http://kitchen.example/recipes/oatmeal.md)
- [Barley soup](http://kitchen.example/recipes/barley-soup.md)
- [Buckwheat pancakes](http://kitchen.example/recipes/buckwheat-pancakes.md)
## Basic page
- [About](http://kitchen.example/about.md)
## Usage terms
- [robots.txt](http://kitchen.example/robots.txt): Content-Usage and Content-Signal directives
- [license.xml](http://kitchen.example/license.xml): RSL 1.0 licence
- Every page has a Markdown alternate at its URL plus ".md"; each carries the usage terms as front matter.

The llms.txt tab: the number of nodes listed per content type and the content types to list.

Agent Surface Filesystem Cache

agent_surface_filecache. Requires Response Filesystem Cache.

Registers Markdown responses under /markdownify with Response Filesystem Cache, so repeat requests are answered from disk and invalidated by cache tags. Files are served through Drupal with the stored Content-Type, so the web server's MIME table for .md does not matter.

Only the /markdownify/... form of a Markdown URL has a common path prefix. .md suffix URLs are not covered until Response Filesystem Cache can match on a suffix; until then they are served by Drupal, with the page cache and dynamic page cache still in front.