<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="eli.ai" agent="eli.ai diagram exporter" version="1">
  <diagram id="plugin-host-security-boundary-2e4efe1b" name="Plugin host security boundary">
    <mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <object id="1" label="Plugin host security boundary" schemaVersion="1" diagramId="plugin-host-security-boundary-2e4efe1b" canonicalAppearanceKey="tsx:src/app/(docs)/docs/concepts/plugins/page.tsx:hostChart#1" sourceSha256="2e4efe1be81b5ec26c132244200edd15b8bbc02f1faf4f1d3535bb998bb444be" metadataPayloadSha256="ce8abc80f0d993ff7107ebbd5c85e2e797dfe3451c043155238b4a511009e050" generationKey="1f0aa93ec63f8fb8ee94c75406e491398650bad9e7ce9e78d21a92498d766597" concepts="[&quot;the host runtime — src/server/plugins/&quot;,&quot;Plugins&quot;,&quot;Host&quot;,&quot;a plugin — one in-process TypeScript module&quot;]" keywords="[&quot;Postgres · FORCE RLS&quot;,&quot;ctx.data facade&quot;,&quot;plugin.* rows in audit_log&quot;,&quot;transaction-local app.workspace_id&quot;,&quot;every tenant table&quot;,&quot;event bus&quot;,&quot;id · semver · apiVersion&quot;,&quot;permissions · subscribes · contributes&quot;,&quot;binds implementations to declared names&quot;,&quot;resolve → validate → register → freeze&quot;,&quot;per-workspace enable · grant · config&quot;,&quot;declared ∩ granted ∩ principal&quot;,&quot;timeout · breaker · concurrency&quot;,&quot;withWorkspace(workspaceId, tx =&gt;)&quot;,&quot;outbox → deliveries → worker drain&quot;,&quot;Intake · Atlas · Warrant · Lineage&quot;,&quot;Conduit · Lens · Crucible · Ports&quot;,&quot;typed calls only — no pool, no Tx, no SQL&quot;,&quot;manifest&quot;,&quot;setup(reg)&quot;,&quot;registry&quot;,&quot;installations&quot;,&quot;permissions&quot;,&quot;contain&quot;,&quot;audit&quot;]" application="{&quot;name&quot;:&quot;eli-ai&quot;,&quot;version&quot;:&quot;0.1.0&quot;}" packages="{&quot;mermaid&quot;:&quot;11.16.0&quot;,&quot;mermaidCli&quot;:&quot;11.16.0&quot;,&quot;playwright&quot;:&quot;1.62.1&quot;,&quot;playwrightCore&quot;:&quot;1.62.1&quot;,&quot;puppeteer&quot;:&quot;25.6.0&quot;,&quot;puppeteerCore&quot;:&quot;25.6.0&quot;}" environment="{&quot;architecture&quot;:&quot;x64&quot;,&quot;containerImage&quot;:&quot;playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109&quot;,&quot;node&quot;:&quot;v26.3.1&quot;,&quot;platform&quot;:&quot;linux&quot;,&quot;yarn&quot;:&quot;4.17.1&quot;}" renderer="{&quot;browser&quot;:{&quot;executableSha256&quot;:&quot;0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71&quot;,&quot;name&quot;:&quot;chromium&quot;,&quot;revision&quot;:&quot;1234&quot;,&quot;version&quot;:&quot;151.0.7922.34&quot;},&quot;font&quot;:{&quot;family&quot;:&quot;Eli Diagram Inter Variable&quot;,&quot;fileSha256&quot;:&quot;3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62&quot;,&quot;licenseSha256&quot;:&quot;3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345&quot;},&quot;mermaidConfigSha256&quot;:&quot;68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101&quot;,&quot;themeCssSha256&quot;:&quot;c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033&quot;}" adapterVersions="{&quot;diagramGenerator&quot;:&quot;2&quot;,&quot;drawioFlowchart&quot;:&quot;1&quot;,&quot;drawioGantt&quot;:&quot;1&quot;,&quot;drawioSequence&quot;:&quot;1&quot;,&quot;drawioState&quot;:&quot;1&quot;}" mermaidType="flowchart" direction="TB" generatedAt="2026-08-12T23:40:47.485Z" mermaidSource="flowchart TB&#10;  subgraph P[&quot;a plugin — one in-process TypeScript module&quot;]&#10;    M[&quot;manifest&lt;br/&gt;id · semver · apiVersion&lt;br/&gt;permissions · subscribes · contributes&quot;]&#10;    S[&quot;setup(reg)&lt;br/&gt;binds implementations to declared names&quot;]&#10;  end&#10;&#10;  M --&gt; H&#10;  S --&gt; H&#10;&#10;  subgraph H[&quot;the host runtime — src/server/plugins/&quot;]&#10;    REG[&quot;registry&lt;br/&gt;resolve → validate → register → freeze&quot;]&#10;    INS[&quot;installations&lt;br/&gt;per-workspace enable · grant · config&quot;]&#10;    PERM[&quot;permissions&lt;br/&gt;declared ∩ granted ∩ principal&quot;]&#10;    CON[&quot;contain&lt;br/&gt;timeout · breaker · concurrency&quot;]&#10;    AUD[&quot;audit&lt;br/&gt;plugin.* rows in audit_log&quot;]&#10;  end&#10;&#10;  H --&gt; F[&quot;ctx.data facade&lt;br/&gt;typed calls only — no pool, no Tx, no SQL&quot;]&#10;  F --&gt; WW[&quot;withWorkspace(workspaceId, tx =&gt;)&lt;br/&gt;transaction-local app.workspace_id&quot;]&#10;  WW --&gt; RLS[(&quot;Postgres · FORCE RLS&lt;br/&gt;every tenant table&quot;)]&#10;&#10;  H --&gt; BUS[&quot;event bus&lt;br/&gt;outbox → deliveries → worker drain&quot;]&#10;  BUS --&gt; P&#10;&#10;  F --&gt; SYS[&quot;Intake · Atlas · Warrant · Lineage&lt;br/&gt;Conduit · Lens · Crucible · Ports&quot;]&#10;  SYS --&gt; BUS">
          <mxCell parent="0"/>
        </object>
        <object id="c:P" label="a plugin — one in-process TypeScript module" mermaidId="P" mermaidShape="frame">
          <mxCell parent="1" vertex="1" style="collapsible=0;container=1;dashed=1;fillColor=none;fontColor=#333333;html=1;recursiveResize=0;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="729.984375" y="8" width="353.84375" height="1600.411858" as="geometry"/>
          </mxCell>
        </object>
        <object id="c:H" label="the host runtime — src/server/plugins/" mermaidId="H" mermaidShape="frame">
          <mxCell parent="1" vertex="1" style="collapsible=0;container=1;dashed=1;fillColor=none;fontColor=#333333;html=1;recursiveResize=0;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="377.90625" y="183" width="331" height="746" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:REG" label="registryresolve → validate → register → freeze" mermaidId="REG" mermaidShape="rectangle">
          <mxCell parent="c:H" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="37.5" y="35" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:INS" label="installationsper-workspace enable · grant · config" mermaidId="INS" mermaidShape="rectangle">
          <mxCell parent="c:H" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="37.5" y="185" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:PERM" label="permissionsdeclared ∩ granted ∩ principal" mermaidId="PERM" mermaidShape="rectangle">
          <mxCell parent="c:H" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="37.5" y="335" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:CON" label="containtimeout · breaker · concurrency" mermaidId="CON" mermaidShape="rectangle">
          <mxCell parent="c:H" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="37.5" y="485" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:AUD" label="auditplugin.* rows in audit_log" mermaidId="AUD" mermaidShape="rectangle">
          <mxCell parent="c:H" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="42.101563" y="635" width="246.796875" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:M" label="manifestid · semver · apiVersionpermissions · subscribes · contributes" mermaidId="M" mermaidShape="rectangle">
          <mxCell parent="c:P" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="48.921875" y="1451.411858" width="256" height="124" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:S" label="setup(reg)binds implementations to declared names" mermaidId="S" mermaidShape="rectangle">
          <mxCell parent="c:P" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="48.921875" y="25" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:F" label="ctx.data facadetyped calls only — no pool, no Tx, no SQL" mermaidId="F" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="182.492188" y="979" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:WW" label="withWorkspace(workspaceId, tx =&gt;)transaction-local app.workspace_id" mermaidId="WW" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="8" y="1129" width="284.65625" height="124" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:RLS" label="Postgres · FORCE RLSevery tenant table" mermaidId="RLS" mermaidShape="cylinder">
          <mxCell parent="1" vertex="1" style="backgroundOutline=1;boundedLbl=1;fillColor=#ECECFF;fontColor=#333333;html=1;shape=cylinder3;size=15;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="59.53125" y="1302.99489" width="181.59375" height="106.422077" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:BUS" label="event busoutbox → deliveries → worker drain" mermaidId="BUS" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="424.15625" y="1306.205929" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:SYS" label="Intake · Atlas · Warrant · LineageConduit · Lens · Crucible · Ports" mermaidId="SYS" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="342.65625" y="1129" width="256" height="124" as="geometry"/>
          </mxCell>
        </object>
        <object id="e:L_F_WW_0" label="" mermaidId="L_F_WW_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:F" target="n:WW" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="203.716146" y="1079" as="sourcePoint"/>
              <mxPoint x="150.328125" y="1129" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="150.328125" y="1104"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_WW_RLS_0" label="" mermaidId="L_WW_RLS_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:WW" target="n:RLS" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="150.328125" y="1253" as="sourcePoint"/>
              <mxPoint x="150.328125" y="1303" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="150.328125" y="1278"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_F_SYS_0" label="" mermaidId="L_F_SYS_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:F" target="n:SYS" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="417.268229" y="1079" as="sourcePoint"/>
              <mxPoint x="470.65625" y="1129" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="470.65625" y="1104"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_SYS_BUS_0" label="" mermaidId="L_SYS_BUS_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:SYS" target="n:BUS" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="470.65625" y="1253" as="sourcePoint"/>
              <mxPoint x="500.050226" y="1306.205929" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="470.65625" y="1278"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_M_H_0" label="" mermaidId="L_M_H_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:M" target="c:H" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="957.860273" y="1459.411858" as="sourcePoint"/>
              <mxPoint x="708.90625" y="707.422989" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="978.40625" y="1434.411858"/>
                <mxPoint x="978.40625" y="1356.205929"/>
                <mxPoint x="978.40625" y="1278"/>
                <mxPoint x="978.40625" y="1191"/>
                <mxPoint x="978.40625" y="1104"/>
                <mxPoint x="978.40625" y="1029"/>
                <mxPoint x="978.40625" y="954"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_S_H_0" label="" mermaidId="L_S_H_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:S" target="c:H" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="906.90625" y="133" as="sourcePoint"/>
              <mxPoint x="708.90625" y="374.792297" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="906.90625" y="158"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_H_F_0" label="" mermaidId="L_H_F_0" mermaidKind="relationship">
          <mxCell parent="1" source="c:H" target="n:F" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="377.90625" y="838.803878" as="sourcePoint"/>
              <mxPoint x="310.492188" y="979" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="310.492188" y="954"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_H_BUS_0" label="" mermaidId="L_H_BUS_0" mermaidKind="relationship">
          <mxCell parent="1" source="c:H" target="n:BUS" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="627.98728" y="929" as="sourcePoint"/>
              <mxPoint x="604.262274" y="1306.205929" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="633.65625" y="954"/>
                <mxPoint x="633.65625" y="1029"/>
                <mxPoint x="633.65625" y="1104"/>
                <mxPoint x="633.65625" y="1191"/>
                <mxPoint x="633.65625" y="1278"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_BUS_P_0" label="" mermaidId="L_BUS_P_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:BUS" target="c:P" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="680.15625" y="1391.547002" as="sourcePoint"/>
              <mxPoint x="855.952227" y="1459.411858" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="835.40625" y="1434.411858"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
