@particle-academy/agent-integrations 0.41.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/bridges/artboard.d.cts +2 -2
- package/dist/bridges/artboard.d.ts +2 -2
- package/dist/bridges/catalog.d.cts +2 -2
- package/dist/bridges/catalog.d.ts +2 -2
- package/dist/bridges/charts.d.cts +2 -2
- package/dist/bridges/charts.d.ts +2 -2
- package/dist/bridges/cms.d.cts +2 -2
- package/dist/bridges/cms.d.ts +2 -2
- package/dist/bridges/code.d.cts +2 -2
- package/dist/bridges/code.d.ts +2 -2
- package/dist/bridges/doc.d.cts +2 -2
- package/dist/bridges/doc.d.ts +2 -2
- package/dist/bridges/features.d.cts +2 -2
- package/dist/bridges/features.d.ts +2 -2
- package/dist/bridges/files.d.cts +2 -2
- package/dist/bridges/files.d.ts +2 -2
- package/dist/bridges/flow.d.cts +2 -2
- package/dist/bridges/flow.d.ts +2 -2
- package/dist/bridges/forms.d.cts +2 -2
- package/dist/bridges/forms.d.ts +2 -2
- package/dist/bridges/git.d.cts +2 -2
- package/dist/bridges/git.d.ts +2 -2
- package/dist/bridges/grid.d.cts +2 -2
- package/dist/bridges/grid.d.ts +2 -2
- package/dist/bridges/map.d.cts +2 -2
- package/dist/bridges/map.d.ts +2 -2
- package/dist/bridges/passkeys.d.cts +2 -2
- package/dist/bridges/passkeys.d.ts +2 -2
- package/dist/bridges/scene.d.cts +2 -2
- package/dist/bridges/scene.d.ts +2 -2
- package/dist/bridges/screens.d.cts +2 -2
- package/dist/bridges/screens.d.ts +2 -2
- package/dist/bridges/sheets.d.cts +2 -2
- package/dist/bridges/sheets.d.ts +2 -2
- package/dist/bridges/slides.d.cts +2 -2
- package/dist/bridges/slides.d.ts +2 -2
- package/dist/bridges/terminal.d.cts +2 -2
- package/dist/bridges/terminal.d.ts +2 -2
- package/dist/bridges/tui.d.cts +1 -1
- package/dist/bridges/tui.d.ts +1 -1
- package/dist/bridges/whiteboard.d.cts +2 -2
- package/dist/bridges/whiteboard.d.ts +2 -2
- package/dist/bridges-artboard.cjs.map +1 -1
- package/dist/bridges-artboard.js +2 -2
- package/dist/bridges-catalog.cjs.map +1 -1
- package/dist/bridges-catalog.js +3 -3
- package/dist/bridges-charts.cjs.map +1 -1
- package/dist/bridges-charts.js +3 -3
- package/dist/bridges-cms.cjs.map +1 -1
- package/dist/bridges-cms.js +4 -4
- package/dist/bridges-code.cjs.map +1 -1
- package/dist/bridges-code.js +3 -3
- package/dist/bridges-doc.cjs.map +1 -1
- package/dist/bridges-doc.js +3 -3
- package/dist/bridges-features.cjs.map +1 -1
- package/dist/bridges-features.js +3 -3
- package/dist/bridges-files.cjs.map +1 -1
- package/dist/bridges-files.js +3 -3
- package/dist/bridges-flow.cjs.map +1 -1
- package/dist/bridges-flow.js +2 -2
- package/dist/bridges-forms.cjs.map +1 -1
- package/dist/bridges-forms.js +3 -3
- package/dist/bridges-git.cjs.map +1 -1
- package/dist/bridges-git.js +3 -3
- package/dist/bridges-grid.cjs.map +1 -1
- package/dist/bridges-grid.js +3 -3
- package/dist/bridges-map.cjs.map +1 -1
- package/dist/bridges-map.js +3 -3
- package/dist/bridges-passkeys.cjs.map +1 -1
- package/dist/bridges-passkeys.js +3 -3
- package/dist/bridges-scene.cjs.map +1 -1
- package/dist/bridges-scene.js +3 -3
- package/dist/bridges-screens.cjs.map +1 -1
- package/dist/bridges-screens.js +3 -3
- package/dist/bridges-sheets.cjs.map +1 -1
- package/dist/bridges-sheets.js +3 -3
- package/dist/bridges-slides.cjs.map +1 -1
- package/dist/bridges-slides.js +3 -3
- package/dist/bridges-terminal.cjs.map +1 -1
- package/dist/bridges-terminal.js +3 -3
- package/dist/bridges-tui.cjs.map +1 -1
- package/dist/bridges-tui.js +2 -2
- package/dist/bridges-whiteboard.cjs.map +1 -1
- package/dist/bridges-whiteboard.js +3 -3
- package/dist/{chunk-2U5JB6ZA.js → chunk-2LSU3NFO.js} +4 -4
- package/dist/{chunk-2U5JB6ZA.js.map → chunk-2LSU3NFO.js.map} +1 -1
- package/dist/{chunk-PR4SXFZH.js → chunk-2Q4EGZHJ.js} +4 -4
- package/dist/{chunk-PR4SXFZH.js.map → chunk-2Q4EGZHJ.js.map} +1 -1
- package/dist/{chunk-G5EZNWXJ.js → chunk-5W6YOXLT.js} +4 -4
- package/dist/{chunk-G5EZNWXJ.js.map → chunk-5W6YOXLT.js.map} +1 -1
- package/dist/{chunk-CA7GIJJC.js → chunk-7LLMILTM.js} +4 -4
- package/dist/{chunk-CA7GIJJC.js.map → chunk-7LLMILTM.js.map} +1 -1
- package/dist/{chunk-MFMBR6LN.js → chunk-E2I3YVKC.js} +3 -3
- package/dist/{chunk-MFMBR6LN.js.map → chunk-E2I3YVKC.js.map} +1 -1
- package/dist/{chunk-USQGA672.js → chunk-EIBV76IB.js} +4 -4
- package/dist/{chunk-USQGA672.js.map → chunk-EIBV76IB.js.map} +1 -1
- package/dist/{chunk-WCKSDFTM.js → chunk-GT63LSPJ.js} +4 -4
- package/dist/{chunk-WCKSDFTM.js.map → chunk-GT63LSPJ.js.map} +1 -1
- package/dist/{chunk-CT3LRNH7.js → chunk-HVDHT7DM.js} +3 -3
- package/dist/{chunk-CT3LRNH7.js.map → chunk-HVDHT7DM.js.map} +1 -1
- package/dist/{chunk-7THGQUX3.js → chunk-LOD77NCD.js} +4 -4
- package/dist/{chunk-7THGQUX3.js.map → chunk-LOD77NCD.js.map} +1 -1
- package/dist/{chunk-BHQJJ2YG.js → chunk-MZ74LLDS.js} +4 -4
- package/dist/{chunk-BHQJJ2YG.js.map → chunk-MZ74LLDS.js.map} +1 -1
- package/dist/{chunk-D756GBMQ.js → chunk-N5VOPV64.js} +4 -4
- package/dist/{chunk-D756GBMQ.js.map → chunk-N5VOPV64.js.map} +1 -1
- package/dist/{chunk-ZNGTC4CO.js → chunk-NIFPRC7P.js} +4 -4
- package/dist/{chunk-ZNGTC4CO.js.map → chunk-NIFPRC7P.js.map} +1 -1
- package/dist/{chunk-JJUABMAP.js → chunk-NIXOY473.js} +3 -3
- package/dist/{chunk-JJUABMAP.js.map → chunk-NIXOY473.js.map} +1 -1
- package/dist/{chunk-OAFJ53X3.js → chunk-NKAH67JK.js} +4 -4
- package/dist/{chunk-OAFJ53X3.js.map → chunk-NKAH67JK.js.map} +1 -1
- package/dist/{chunk-RIXYCFDO.js → chunk-PCFRBVKS.js} +4 -4
- package/dist/{chunk-RIXYCFDO.js.map → chunk-PCFRBVKS.js.map} +1 -1
- package/dist/{chunk-4D3II37O.js → chunk-PUMQDV67.js} +4 -4
- package/dist/{chunk-4D3II37O.js.map → chunk-PUMQDV67.js.map} +1 -1
- package/dist/{chunk-DF3PLL2E.js → chunk-QJYRWEXD.js} +28 -5
- package/dist/chunk-QJYRWEXD.js.map +1 -0
- package/dist/{chunk-GRHPEK6M.js → chunk-QOANLXSW.js} +53 -8
- package/dist/chunk-QOANLXSW.js.map +1 -0
- package/dist/{chunk-XY2TDE6E.js → chunk-SXVRIIXW.js} +4 -4
- package/dist/{chunk-XY2TDE6E.js.map → chunk-SXVRIIXW.js.map} +1 -1
- package/dist/{chunk-6YUBWQTS.js → chunk-TEB5U6Y5.js} +4 -4
- package/dist/{chunk-6YUBWQTS.js.map → chunk-TEB5U6Y5.js.map} +1 -1
- package/dist/{chunk-MJ2S25ON.js → chunk-VJD3Y7E5.js} +4 -4
- package/dist/{chunk-MJ2S25ON.js.map → chunk-VJD3Y7E5.js.map} +1 -1
- package/dist/{chunk-BT7HM5I6.js → chunk-WEXMZMJH.js} +3 -3
- package/dist/{chunk-BT7HM5I6.js.map → chunk-WEXMZMJH.js.map} +1 -1
- package/dist/{chunk-UZHNKUER.js → chunk-Z4L2GOAK.js} +4 -4
- package/dist/{chunk-UZHNKUER.js.map → chunk-Z4L2GOAK.js.map} +1 -1
- package/dist/components-shared-whiteboard.cjs +26 -3
- package/dist/components-shared-whiteboard.cjs.map +1 -1
- package/dist/components-shared-whiteboard.js +3 -3
- package/dist/index.cjs +88 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +88 -8
- package/dist/index.d.ts +88 -8
- package/dist/index.js +87 -26
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.cts +3 -3
- package/dist/mcp/index.d.ts +3 -3
- package/dist/mcp.cjs +26 -3
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/relay-server/index.d.cts +36 -1
- package/dist/relay-server/index.d.ts +36 -1
- package/dist/relay-server-cli.cjs +51 -6
- package/dist/relay-server-cli.cjs.map +1 -1
- package/dist/relay-server-cli.js +1 -1
- package/dist/relay-server.cjs +51 -6
- package/dist/relay-server.cjs.map +1 -1
- package/dist/relay-server.js +1 -1
- package/dist/{server-DDD3IZ56.d.cts → server-BJNF7pQe.d.cts} +1 -1
- package/dist/{server-CDX643Kz.d.ts → server-Dt97UxuD.d.ts} +1 -1
- package/dist/sharing/index.d.cts +2 -2
- package/dist/sharing/index.d.ts +2 -2
- package/dist/sheets-adapter.d.cts +2 -2
- package/dist/sheets-adapter.d.ts +2 -2
- package/dist/{tool-host-EuYHYSSH.d.cts → tool-host-BpEBqf5u.d.cts} +17 -0
- package/dist/{tool-host-CWTOJEm2.d.ts → tool-host-xY5F-eqG.d.ts} +17 -0
- package/dist/{types-NFGP769G.d.cts → types-C4NaIW6B.d.cts} +1 -1
- package/dist/{types-BKD6uf86.d.ts → types-DSwsNTBG.d.ts} +1 -1
- package/dist/undo/index.d.cts +1 -1
- package/dist/undo/index.d.ts +1 -1
- package/dist/undo.cjs.map +1 -1
- package/dist/undo.js +3 -3
- package/docs/relay-server.md +34 -0
- package/package.json +1 -1
- package/dist/chunk-DF3PLL2E.js.map +0 -1
- package/dist/chunk-GRHPEK6M.js.map +0 -1
|
@@ -43,14 +43,37 @@ var MCP_PROTOCOL_VERSION = "2025-06-18";
|
|
|
43
43
|
var ToolRegistry = class {
|
|
44
44
|
constructor() {
|
|
45
45
|
this.tools = /* @__PURE__ */ new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Tools that existed and were withdrawn, kept so a call that races an unmount
|
|
48
|
+
* can say WHICH thing happened.
|
|
49
|
+
*
|
|
50
|
+
* The tool surface is dynamic by design — "site tools always, page tools while
|
|
51
|
+
* mounted" — so an agent deciding to call a tool while the human navigates
|
|
52
|
+
* away is normal traffic, not an edge case. Reporting that as `Unknown tool`
|
|
53
|
+
* is the least useful thing available: it reads as "the agent is broken" or
|
|
54
|
+
* "you asked for something imaginary", when the truth is "that surface just
|
|
55
|
+
* closed".
|
|
56
|
+
*
|
|
57
|
+
* Names only. Nothing about the handler is retained, so this cannot keep a
|
|
58
|
+
* disposed surface alive.
|
|
59
|
+
*/
|
|
60
|
+
this.withdrawn = /* @__PURE__ */ new Set();
|
|
46
61
|
}
|
|
47
62
|
registerTool(definition, handler) {
|
|
48
63
|
this.tools.set(definition.name, { definition, handler });
|
|
64
|
+
this.withdrawn.delete(definition.name);
|
|
49
65
|
this.onToolsChanged();
|
|
50
66
|
return () => {
|
|
51
|
-
if (this.tools.delete(definition.name))
|
|
67
|
+
if (this.tools.delete(definition.name)) {
|
|
68
|
+
this.withdrawn.add(definition.name);
|
|
69
|
+
this.onToolsChanged();
|
|
70
|
+
}
|
|
52
71
|
};
|
|
53
72
|
}
|
|
73
|
+
/** Why `name` is not callable, phrased for whoever has to act on it. */
|
|
74
|
+
missingToolMessage(name) {
|
|
75
|
+
return this.withdrawn.has(name) ? `Tool "${name}" was withdrawn: the surface it targets is no longer mounted. Call tools/list for the current surface \u2014 the site-wide tools remain available.` : `Unknown tool: ${name}`;
|
|
76
|
+
}
|
|
54
77
|
getTool(name) {
|
|
55
78
|
return this.tools.get(name) ?? null;
|
|
56
79
|
}
|
|
@@ -60,7 +83,7 @@ var ToolRegistry = class {
|
|
|
60
83
|
async callTool(name, args = {}) {
|
|
61
84
|
const tool = this.tools.get(name);
|
|
62
85
|
if (!tool) {
|
|
63
|
-
throw new Error(
|
|
86
|
+
throw new Error(this.missingToolMessage(name));
|
|
64
87
|
}
|
|
65
88
|
return tool.handler(args);
|
|
66
89
|
}
|
|
@@ -141,7 +164,7 @@ var MicroMcpServer = class extends ToolRegistry {
|
|
|
141
164
|
}
|
|
142
165
|
const tool = this.tools.get(name);
|
|
143
166
|
if (!tool) {
|
|
144
|
-
throw rpcError(JSONRPC_METHOD_NOT_FOUND,
|
|
167
|
+
throw rpcError(JSONRPC_METHOD_NOT_FOUND, this.missingToolMessage(name));
|
|
145
168
|
}
|
|
146
169
|
const result = await tool.handler(args, { transport });
|
|
147
170
|
return result;
|