Extension model
A3S Office is modular without pretending that every editor has the same interaction model. Document and Markdown surfaces accept TipTap extensions; spreadsheet, presentation, and PDF currently expose typed host ports while their internal command contexts remain private.
TipTap extensions
Rules:
- Every extension needs a unique
name; collisions with built-in extensions fail explicitly. - Keep the extension array reference stable.
- Custom Nodes and Marks need matching DOCX or Markdown round-trip semantics.
- Do not import implementation modules from
@a3s-lab/office/internalpaths.
In a collaborative Document, extensions currently accepts behavior-only
TipTap Extension values such as shortcuts and plugins. Custom Nodes, Marks,
global attributes, extension kits, and other schema mutations are rejected
because every participant must use the same versioned shared schema; add them
through an A3S Office schema migration before storing them in shared content.
Host extension ports
The library never infers host behavior from localized labels or keyword matching. Selection-menu callbacks receive typed context and safe commands; the host owns prompts, model calls, authorization, and persistence.
