tpmjs/docs/diagrams/02-discovery.svg

102 lines
25 KiB
XML

<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 2198 666"><svg class="d2-2497787290 d2-svg" width="2198" height="666" viewBox="-81 -131 2198 666"><rect x="-81.000000" y="-131.000000" width="2198.000000" height="666.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-2497787290 .text {
font-family: "d2-2497787290-font-regular";
}
@font-face {
font-family: d2-2497787290-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-2497787290 .text-bold {
font-family: "d2-2497787290-font-bold";
}
@font-face {
font-family: d2-2497787290-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-2497787290 .fill-N1{fill:#0A0F25;}
.d2-2497787290 .fill-N2{fill:#676C7E;}
.d2-2497787290 .fill-N3{fill:#9499AB;}
.d2-2497787290 .fill-N4{fill:#CFD2DD;}
.d2-2497787290 .fill-N5{fill:#DEE1EB;}
.d2-2497787290 .fill-N6{fill:#EEF1F8;}
.d2-2497787290 .fill-N7{fill:#FFFFFF;}
.d2-2497787290 .fill-B1{fill:#0D32B2;}
.d2-2497787290 .fill-B2{fill:#0D32B2;}
.d2-2497787290 .fill-B3{fill:#E3E9FD;}
.d2-2497787290 .fill-B4{fill:#E3E9FD;}
.d2-2497787290 .fill-B5{fill:#EDF0FD;}
.d2-2497787290 .fill-B6{fill:#F7F8FE;}
.d2-2497787290 .fill-AA2{fill:#4A6FF3;}
.d2-2497787290 .fill-AA4{fill:#EDF0FD;}
.d2-2497787290 .fill-AA5{fill:#F7F8FE;}
.d2-2497787290 .fill-AB4{fill:#EDF0FD;}
.d2-2497787290 .fill-AB5{fill:#F7F8FE;}
.d2-2497787290 .stroke-N1{stroke:#0A0F25;}
.d2-2497787290 .stroke-N2{stroke:#676C7E;}
.d2-2497787290 .stroke-N3{stroke:#9499AB;}
.d2-2497787290 .stroke-N4{stroke:#CFD2DD;}
.d2-2497787290 .stroke-N5{stroke:#DEE1EB;}
.d2-2497787290 .stroke-N6{stroke:#EEF1F8;}
.d2-2497787290 .stroke-N7{stroke:#FFFFFF;}
.d2-2497787290 .stroke-B1{stroke:#0D32B2;}
.d2-2497787290 .stroke-B2{stroke:#0D32B2;}
.d2-2497787290 .stroke-B3{stroke:#E3E9FD;}
.d2-2497787290 .stroke-B4{stroke:#E3E9FD;}
.d2-2497787290 .stroke-B5{stroke:#EDF0FD;}
.d2-2497787290 .stroke-B6{stroke:#F7F8FE;}
.d2-2497787290 .stroke-AA2{stroke:#4A6FF3;}
.d2-2497787290 .stroke-AA4{stroke:#EDF0FD;}
.d2-2497787290 .stroke-AA5{stroke:#F7F8FE;}
.d2-2497787290 .stroke-AB4{stroke:#EDF0FD;}
.d2-2497787290 .stroke-AB5{stroke:#F7F8FE;}
.d2-2497787290 .background-color-N1{background-color:#0A0F25;}
.d2-2497787290 .background-color-N2{background-color:#676C7E;}
.d2-2497787290 .background-color-N3{background-color:#9499AB;}
.d2-2497787290 .background-color-N4{background-color:#CFD2DD;}
.d2-2497787290 .background-color-N5{background-color:#DEE1EB;}
.d2-2497787290 .background-color-N6{background-color:#EEF1F8;}
.d2-2497787290 .background-color-N7{background-color:#FFFFFF;}
.d2-2497787290 .background-color-B1{background-color:#0D32B2;}
.d2-2497787290 .background-color-B2{background-color:#0D32B2;}
.d2-2497787290 .background-color-B3{background-color:#E3E9FD;}
.d2-2497787290 .background-color-B4{background-color:#E3E9FD;}
.d2-2497787290 .background-color-B5{background-color:#EDF0FD;}
.d2-2497787290 .background-color-B6{background-color:#F7F8FE;}
.d2-2497787290 .background-color-AA2{background-color:#4A6FF3;}
.d2-2497787290 .background-color-AA4{background-color:#EDF0FD;}
.d2-2497787290 .background-color-AA5{background-color:#F7F8FE;}
.d2-2497787290 .background-color-AB4{background-color:#EDF0FD;}
.d2-2497787290 .background-color-AB5{background-color:#F7F8FE;}
.d2-2497787290 .color-N1{color:#0A0F25;}
.d2-2497787290 .color-N2{color:#676C7E;}
.d2-2497787290 .color-N3{color:#9499AB;}
.d2-2497787290 .color-N4{color:#CFD2DD;}
.d2-2497787290 .color-N5{color:#DEE1EB;}
.d2-2497787290 .color-N6{color:#EEF1F8;}
.d2-2497787290 .color-N7{color:#FFFFFF;}
.d2-2497787290 .color-B1{color:#0D32B2;}
.d2-2497787290 .color-B2{color:#0D32B2;}
.d2-2497787290 .color-B3{color:#E3E9FD;}
.d2-2497787290 .color-B4{color:#E3E9FD;}
.d2-2497787290 .color-B5{color:#EDF0FD;}
.d2-2497787290 .color-B6{color:#F7F8FE;}
.d2-2497787290 .color-AA2{color:#4A6FF3;}
.d2-2497787290 .color-AA4{color:#EDF0FD;}
.d2-2497787290 .color-AA5{color:#F7F8FE;}
.d2-2497787290 .color-AB4{color:#EDF0FD;}
.d2-2497787290 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2497787290);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2497787290);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2497787290);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2497787290);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2497787290);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2497787290);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2497787290);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2497787290);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="bnBt external"><g class="shape" ><rect x="20.000000" y="182.000000" width="220.000000" height="126.000000" rx="8.000000" stroke="#f57c00" fill="#fff3e0" style="stroke-width:2;" /></g><text x="130.000000" y="169.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">npm Registry</text></g><g class="c3luYw== sync"><g class="shape" ><rect x="360.000000" y="212.000000" width="141.000000" height="66.000000" rx="8.000000" stroke="#3f51b5" fill="#e8eaf6" style="stroke-width:2;" /></g><text x="430.500000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Sync Workers</text></g><g class="ZXh0cmFjdA== extract"><g class="shape" ><rect x="621.000000" y="182.000000" width="736.000000" height="126.000000" rx="8.000000" stroke="#7b1fa2" fill="#f3e5f5" style="stroke-width:2;" /></g><text x="989.000000" y="169.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Schema Extraction</text></g><g class="cmVnaXN0cnk= storage"><g class="shape" ><rect x="1497.000000" y="182.000000" width="179.000000" height="126.000000" rx="8.000000" stroke="#388e3c" fill="#e8f5e9" style="stroke-width:2;" /></g><text x="1586.500000" y="169.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Tool Registry</text></g><g class="YXZhaWxhYmxl available"><g class="shape" ><rect x="1816.000000" y="10.000000" width="200.000000" height="424.000000" rx="8.000000" stroke="#1976d2" fill="#e3f2fd" style="stroke-width:2;" /></g><text x="1916.000000" y="-3.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Available</text></g><g class="bnBtLnBhY2thZ2Vz"><g class="shape" ><rect x="50.000000" y="212.000000" width="160.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="130.000000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">&#39;tpmjs&#39; keyword</text></g><g class="ZXh0cmFjdC5pbXBvcnQ="><g class="shape" ><rect x="651.000000" y="212.000000" width="171.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="736.500000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Import via esm.sh</text></g><g class="ZXh0cmFjdC5hbmFseXpl"><g class="shape" ><rect x="922.000000" y="212.000000" width="155.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="999.500000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Extract Schema</text></g><g class="ZXh0cmFjdC56b2Q="><g class="shape" ><rect x="1177.000000" y="212.000000" width="150.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1252.000000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Convert to Zod</text></g><g class="cmVnaXN0cnkudG9vbHM="><g class="shape" ><rect x="1527.000000" y="212.000000" width="119.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1586.500000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Tool Table</text></g><g class="YXZhaWxhYmxlLndlYg=="><g class="shape" ><rect x="1869.000000" y="40.000000" width="94.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1916.000000" y="78.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Web UI</text></g><g class="YXZhaWxhYmxlLm1jcA=="><g class="shape" ><rect x="1846.000000" y="212.000000" width="140.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1916.000000" y="250.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">MCP Protocol</text></g><g class="YXZhaWxhYmxlLmFwaQ=="><g class="shape" ><rect x="1863.000000" y="338.000000" width="107.000000" height="66.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1916.500000" y="376.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">REST API</text></g><g class="KG5wbSAtJmd0OyBzeW5jKVswXQ== hero"><marker id="mk-d2-2497787290-3347204642" markerWidth="13.000000" markerHeight="16.000000" refX="8.500000" refY="8.000000" viewBox="0.000000 0.000000 13.000000 16.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 13.000000,8.000000 0.000000,16.000000" fill="#1976d2" class="connection" stroke-width="3" /> </marker><path d="M 242.500000 245.000000 C 296.000000 245.000000 320.000000 245.000000 354.500000 245.000000" stroke="#1976d2" fill="none" class="connection" style="stroke-width:3;" marker-end="url(#mk-d2-2497787290-3347204642)" mask="url(#d2-2497787290)" /></g><g class="KHN5bmMgLSZndDsgZXh0cmFjdClbMF0= hero"><path d="M 503.500000 245.000000 C 541.000000 245.000000 565.000000 245.000000 615.500000 245.000000" stroke="#1976d2" fill="none" class="connection" style="stroke-width:3;" marker-end="url(#mk-d2-2497787290-3347204642)" mask="url(#d2-2497787290)" /></g><g class="ZXh0cmFjdC4oaW1wb3J0IC0mZ3Q7IGFuYWx5emUpWzBd"><marker id="mk-d2-2497787290-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 824.000000 245.000000 C 862.000000 245.000000 882.000000 245.000000 918.000000 245.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2497787290-3488378134)" mask="url(#d2-2497787290)" /></g><g class="ZXh0cmFjdC4oYW5hbHl6ZSAtJmd0OyB6b2QpWzBd"><path d="M 1079.000000 245.000000 C 1117.000000 245.000000 1137.000000 245.000000 1173.000000 245.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2497787290-3488378134)" mask="url(#d2-2497787290)" /></g><g class="KGV4dHJhY3Quem9kIC0mZ3Q7IHJlZ2lzdHJ5LnRvb2xzKVswXQ=="><path d="M 1329.000000 245.000000 C 1367.000000 245.000000 1387.000000 245.000000 1402.000000 245.000000 C 1417.000000 245.000000 1487.000000 245.000000 1523.000000 245.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2497787290-3488378134)" mask="url(#d2-2497787290)" /></g><g class="KHJlZ2lzdHJ5LnRvb2xzIC0mZ3Q7IGF2YWlsYWJsZS53ZWIpWzBd"><path d="M 1616.006970 210.271992 C 1679.800049 100.800003 1706.000000 73.000000 1721.000000 73.000000 C 1736.000000 73.000000 1810.599976 73.000000 1865.000000 73.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2497787290-3488378134)" mask="url(#d2-2497787290)" /></g><g class="KHJlZ2lzdHJ5LnRvb2xzIC0mZ3Q7IGF2YWlsYWJsZS5tY3ApWzBd"><path d="M 1648.000000 245.000000 C 1686.000000 245.000000 1706.000000 245.000000 1721.000000 245.000000 C 1736.000000 245.000000 1806.000000 245.000000 1842.000000 245.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2497787290-3488378134)" mask="url(#d2-2497787290)" /></g><g class="KHJlZ2lzdHJ5LnRvb2xzIC0mZ3Q7IGF2YWlsYWJsZS5hcGkpWzBd"><path d="M 1616.313562 279.508163 C 1679.800049 352.399994 1706.000000 371.000000 1721.000000 371.000000 C 1736.000000 371.000000 1809.300049 371.000000 1858.500000 371.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2497787290-3488378134)" mask="url(#d2-2497787290)" /></g><mask id="d2-2497787290" maskUnits="userSpaceOnUse" x="-81" y="-131" width="2198" height="666">
<rect x="-81" y="-131" width="2198" height="666" fill="white"></rect>
</mask></svg></svg>