Drupal is a registered trademark of Dries Buytaert
cms 2.1.0 Update released for Drupal core (2.1.0)! menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). ai 1.2.13 Minor update available for module ai (1.2.13). ai 1.3.2 Minor update available for module ai (1.3.2). moderated_content_bulk_publish 2.0.51 Minor update available for module moderated_content_bulk_publish (2.0.51). moderated_content_bulk_publish 2.0.50 Minor update available for module moderated_content_bulk_publish (2.0.50). editoria11y 2.2.21 Minor update available for module editoria11y (2.2.21). eca 3.1.0 Minor update available for module eca (3.1.0). sophron 3.1.1 Minor update available for module sophron (3.1.1). ai 1.3.1 Minor update available for module ai (1.3.1). seven 2.0.0-beta6 New beta version released for theme seven (2.0.0-beta6). seven 1.0.1-beta1 First beta version released for theme seven (1.0.1-beta1). miniorange_saml 3.1.4 Minor update available for module miniorange_saml (3.1.4). eca_tamper 2.0.10 Minor update available for module eca_tamper (2.0.10). modeler_api 1.1.1 Minor update available for module modeler_api (1.1.1). turnstile 1.1.26 Minor update available for module turnstile (1.1.26). email_tfa 2.0.8 Minor update available for module email_tfa (2.0.8). paragraphs_entity_embed 4.0.0 Major update available for module paragraphs_entity_embed (4.0.0). bootstrap_italia 2.17.4 Minor update available for theme bootstrap_italia (2.17.4). bootstrap_italia 2.17.6 Minor update available for theme bootstrap_italia (2.17.6).

When users make simple changes to Canvas components ("set the color to blue," "change the heading to Welcome"), the correct result is deterministic. The prop name and value can be resolved directly from the SDC component schema without any AI reasoning.

This module does exactly that. It reads your theme's component YAML schemas, builds prop alias and enum value maps, and resolves edits through seven match tiers:

  • Exact and alias matches: "set text_color to primary" or "set the color to blue"
  • Bare value inference: Just "blue" resolves to the correct prop when unambiguous
  • Relative adjustments: "bigger" or "smaller" navigates enum ordinals
  • Boolean toggles: "show the header" or "hide the footer"
  • Reset patterns: "reset the color" returns the prop to its default
  • Compound edits: "change the heading to Welcome and set the color to blue"

Anything the matcher can't resolve with certainty gets a 422 response, routing the request to the existing AI agent chain. Zero false positives by design.

Key features

  • 8 Tool API plugins with automatic MCP, CLI, and AI agent discovery
  • HTTP bridge controller at the same endpoint the Canvas frontend already calls
  • Optional MCP server submodule (JSON-RPC 2.0) for external clients
  • Schema-driven: adapts automatically when theme components change
  • Config-driven verb and alias lists for customization without patching
  • Opt-in telemetry with PII-safe defaults (SHA-256 hashing, no raw text storage)
  • Works without AI providers configured (Canvas Lite mode: deterministic edits succeed, unmatched edits return 503 instead of routing to AI)

Measured results

All measurements on a 15-component demo page:

  • Deterministic path: 0 tokens, <7ms
  • AI baseline: ~101K tokens, 16.4s
  • Hit rate: 60% on 20 mixed edits, zero false positives

59 kernel tests, 221 assertions. PHPCS clean (Drupal + DrupalPractice).

Requires: AI Agents, Tool, Canvas.

Activity

Total releases
2
First release
Apr 2026
Latest release
1 day ago
Release cadence
0 days
Stability
0% stable

Releases

Version Type Release date
1.0.x-dev Dev Apr 1, 2026
1.0.0-alpha1 Pre-release Apr 1, 2026