@particle-academy/agent-integrations 0.44.0 → 0.45.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.
Files changed (168) hide show
  1. package/README.md +32 -0
  2. package/dist/bridges/artboard.d.cts +3 -3
  3. package/dist/bridges/artboard.d.ts +3 -3
  4. package/dist/bridges/catalog.d.cts +3 -3
  5. package/dist/bridges/catalog.d.ts +3 -3
  6. package/dist/bridges/charts.d.cts +3 -3
  7. package/dist/bridges/charts.d.ts +3 -3
  8. package/dist/bridges/cms.d.cts +3 -3
  9. package/dist/bridges/cms.d.ts +3 -3
  10. package/dist/bridges/code.d.cts +3 -3
  11. package/dist/bridges/code.d.ts +3 -3
  12. package/dist/bridges/doc.d.cts +3 -3
  13. package/dist/bridges/doc.d.ts +3 -3
  14. package/dist/bridges/features.d.cts +3 -3
  15. package/dist/bridges/features.d.ts +3 -3
  16. package/dist/bridges/files.d.cts +3 -3
  17. package/dist/bridges/files.d.ts +3 -3
  18. package/dist/bridges/flow.d.cts +3 -3
  19. package/dist/bridges/flow.d.ts +3 -3
  20. package/dist/bridges/forms.d.cts +3 -3
  21. package/dist/bridges/forms.d.ts +3 -3
  22. package/dist/bridges/git.d.cts +3 -3
  23. package/dist/bridges/git.d.ts +3 -3
  24. package/dist/bridges/grid.d.cts +3 -3
  25. package/dist/bridges/grid.d.ts +3 -3
  26. package/dist/bridges/map.d.cts +3 -3
  27. package/dist/bridges/map.d.ts +3 -3
  28. package/dist/bridges/passkeys.d.cts +3 -3
  29. package/dist/bridges/passkeys.d.ts +3 -3
  30. package/dist/bridges/scene.d.cts +3 -3
  31. package/dist/bridges/scene.d.ts +3 -3
  32. package/dist/bridges/screens.d.cts +3 -3
  33. package/dist/bridges/screens.d.ts +3 -3
  34. package/dist/bridges/sheets.d.cts +3 -3
  35. package/dist/bridges/sheets.d.ts +3 -3
  36. package/dist/bridges/slides.d.cts +3 -3
  37. package/dist/bridges/slides.d.ts +3 -3
  38. package/dist/bridges/terminal.d.cts +3 -3
  39. package/dist/bridges/terminal.d.ts +3 -3
  40. package/dist/bridges/tui.d.cts +2 -2
  41. package/dist/bridges/tui.d.ts +2 -2
  42. package/dist/bridges/whiteboard.d.cts +3 -3
  43. package/dist/bridges/whiteboard.d.ts +3 -3
  44. package/dist/bridges-artboard.cjs.map +1 -1
  45. package/dist/bridges-artboard.js +2 -2
  46. package/dist/bridges-catalog.cjs.map +1 -1
  47. package/dist/bridges-catalog.js +3 -3
  48. package/dist/bridges-charts.cjs.map +1 -1
  49. package/dist/bridges-charts.js +3 -3
  50. package/dist/bridges-cms.cjs.map +1 -1
  51. package/dist/bridges-cms.js +4 -4
  52. package/dist/bridges-code.cjs.map +1 -1
  53. package/dist/bridges-code.js +3 -3
  54. package/dist/bridges-doc.cjs.map +1 -1
  55. package/dist/bridges-doc.js +3 -3
  56. package/dist/bridges-features.cjs.map +1 -1
  57. package/dist/bridges-features.js +3 -3
  58. package/dist/bridges-files.cjs.map +1 -1
  59. package/dist/bridges-files.js +3 -3
  60. package/dist/bridges-flow.cjs.map +1 -1
  61. package/dist/bridges-flow.js +2 -2
  62. package/dist/bridges-forms.cjs.map +1 -1
  63. package/dist/bridges-forms.js +3 -3
  64. package/dist/bridges-git.cjs.map +1 -1
  65. package/dist/bridges-git.js +3 -3
  66. package/dist/bridges-grid.cjs.map +1 -1
  67. package/dist/bridges-grid.js +3 -3
  68. package/dist/bridges-map.cjs.map +1 -1
  69. package/dist/bridges-map.js +3 -3
  70. package/dist/bridges-passkeys.cjs.map +1 -1
  71. package/dist/bridges-passkeys.js +3 -3
  72. package/dist/bridges-scene.cjs.map +1 -1
  73. package/dist/bridges-scene.js +3 -3
  74. package/dist/bridges-screens.cjs.map +1 -1
  75. package/dist/bridges-screens.js +3 -3
  76. package/dist/bridges-sheets.cjs.map +1 -1
  77. package/dist/bridges-sheets.js +3 -3
  78. package/dist/bridges-slides.cjs.map +1 -1
  79. package/dist/bridges-slides.js +3 -3
  80. package/dist/bridges-terminal.cjs.map +1 -1
  81. package/dist/bridges-terminal.js +3 -3
  82. package/dist/bridges-tui.cjs.map +1 -1
  83. package/dist/bridges-tui.js +2 -2
  84. package/dist/bridges-whiteboard.cjs.map +1 -1
  85. package/dist/bridges-whiteboard.js +3 -3
  86. package/dist/{chunk-5W6YOXLT.js → chunk-36MKPTVD.js} +4 -4
  87. package/dist/{chunk-5W6YOXLT.js.map → chunk-36MKPTVD.js.map} +1 -1
  88. package/dist/{chunk-SXVRIIXW.js → chunk-3HVYUMQF.js} +4 -4
  89. package/dist/{chunk-SXVRIIXW.js.map → chunk-3HVYUMQF.js.map} +1 -1
  90. package/dist/{chunk-MZ74LLDS.js → chunk-3UUF5KKZ.js} +4 -4
  91. package/dist/{chunk-MZ74LLDS.js.map → chunk-3UUF5KKZ.js.map} +1 -1
  92. package/dist/{chunk-WEXMZMJH.js → chunk-3WVXAB3D.js} +3 -3
  93. package/dist/{chunk-WEXMZMJH.js.map → chunk-3WVXAB3D.js.map} +1 -1
  94. package/dist/{chunk-Z4L2GOAK.js → chunk-5ZWNCHZS.js} +4 -4
  95. package/dist/{chunk-Z4L2GOAK.js.map → chunk-5ZWNCHZS.js.map} +1 -1
  96. package/dist/{chunk-TEB5U6Y5.js → chunk-7NVATRLE.js} +4 -4
  97. package/dist/{chunk-TEB5U6Y5.js.map → chunk-7NVATRLE.js.map} +1 -1
  98. package/dist/{chunk-PUMQDV67.js → chunk-AXWMWYH5.js} +4 -4
  99. package/dist/{chunk-PUMQDV67.js.map → chunk-AXWMWYH5.js.map} +1 -1
  100. package/dist/{chunk-NKAH67JK.js → chunk-CS3CHGYC.js} +4 -4
  101. package/dist/{chunk-NKAH67JK.js.map → chunk-CS3CHGYC.js.map} +1 -1
  102. package/dist/{chunk-QJYRWEXD.js → chunk-CZV3WUW5.js} +35 -8
  103. package/dist/chunk-CZV3WUW5.js.map +1 -0
  104. package/dist/{chunk-PCFRBVKS.js → chunk-FCXSR7I5.js} +4 -4
  105. package/dist/{chunk-PCFRBVKS.js.map → chunk-FCXSR7I5.js.map} +1 -1
  106. package/dist/{chunk-NIFPRC7P.js → chunk-GVTBMJU6.js} +4 -4
  107. package/dist/{chunk-NIFPRC7P.js.map → chunk-GVTBMJU6.js.map} +1 -1
  108. package/dist/{chunk-E2I3YVKC.js → chunk-JLHVQWOV.js} +3 -3
  109. package/dist/{chunk-E2I3YVKC.js.map → chunk-JLHVQWOV.js.map} +1 -1
  110. package/dist/{chunk-2LSU3NFO.js → chunk-LQB42OSA.js} +4 -4
  111. package/dist/{chunk-2LSU3NFO.js.map → chunk-LQB42OSA.js.map} +1 -1
  112. package/dist/{chunk-VJD3Y7E5.js → chunk-MIDZWKIF.js} +4 -4
  113. package/dist/{chunk-VJD3Y7E5.js.map → chunk-MIDZWKIF.js.map} +1 -1
  114. package/dist/{chunk-LOD77NCD.js → chunk-PWYEW6NL.js} +4 -4
  115. package/dist/{chunk-LOD77NCD.js.map → chunk-PWYEW6NL.js.map} +1 -1
  116. package/dist/{chunk-HVDHT7DM.js → chunk-R4XXOGQH.js} +3 -3
  117. package/dist/{chunk-HVDHT7DM.js.map → chunk-R4XXOGQH.js.map} +1 -1
  118. package/dist/{chunk-7LLMILTM.js → chunk-RVMM4BHK.js} +4 -4
  119. package/dist/{chunk-7LLMILTM.js.map → chunk-RVMM4BHK.js.map} +1 -1
  120. package/dist/{chunk-NIXOY473.js → chunk-SWWJUOCY.js} +3 -3
  121. package/dist/{chunk-NIXOY473.js.map → chunk-SWWJUOCY.js.map} +1 -1
  122. package/dist/{chunk-EIBV76IB.js → chunk-VFWFT3OK.js} +4 -4
  123. package/dist/{chunk-EIBV76IB.js.map → chunk-VFWFT3OK.js.map} +1 -1
  124. package/dist/{chunk-2Q4EGZHJ.js → chunk-VMRUW4B4.js} +4 -4
  125. package/dist/{chunk-2Q4EGZHJ.js.map → chunk-VMRUW4B4.js.map} +1 -1
  126. package/dist/{chunk-GT63LSPJ.js → chunk-VOCUGTZB.js} +4 -4
  127. package/dist/{chunk-GT63LSPJ.js.map → chunk-VOCUGTZB.js.map} +1 -1
  128. package/dist/{chunk-N5VOPV64.js → chunk-Z5NL5D4J.js} +4 -4
  129. package/dist/{chunk-N5VOPV64.js.map → chunk-Z5NL5D4J.js.map} +1 -1
  130. package/dist/components-shared-whiteboard.cjs +33 -6
  131. package/dist/components-shared-whiteboard.cjs.map +1 -1
  132. package/dist/components-shared-whiteboard.js +3 -3
  133. package/dist/index.cjs +33 -6
  134. package/dist/index.cjs.map +1 -1
  135. package/dist/index.d.cts +7 -7
  136. package/dist/index.d.ts +7 -7
  137. package/dist/index.js +27 -27
  138. package/dist/mcp/index.d.cts +5 -5
  139. package/dist/mcp/index.d.ts +5 -5
  140. package/dist/mcp/stdio.d.cts +94 -0
  141. package/dist/mcp/stdio.d.ts +94 -0
  142. package/dist/mcp-stdio.cjs +120 -0
  143. package/dist/mcp-stdio.cjs.map +1 -0
  144. package/dist/mcp-stdio.js +117 -0
  145. package/dist/mcp-stdio.js.map +1 -0
  146. package/dist/mcp.cjs +33 -6
  147. package/dist/mcp.cjs.map +1 -1
  148. package/dist/mcp.js +1 -1
  149. package/dist/presence/index.d.cts +1 -1
  150. package/dist/presence/index.d.ts +1 -1
  151. package/dist/{server-BJNF7pQe.d.cts → server-BIcA3ZtK.d.cts} +32 -3
  152. package/dist/{server-Dt97UxuD.d.ts → server-DnUyeavY.d.ts} +32 -3
  153. package/dist/sharing/index.d.cts +3 -3
  154. package/dist/sharing/index.d.ts +3 -3
  155. package/dist/sheets-adapter.d.cts +3 -3
  156. package/dist/sheets-adapter.d.ts +3 -3
  157. package/dist/{tool-host-BpEBqf5u.d.cts → tool-host-LVBgCN5m.d.cts} +1 -1
  158. package/dist/{tool-host-xY5F-eqG.d.ts → tool-host-Wo0pkY83.d.ts} +1 -1
  159. package/dist/{types-DSwsNTBG.d.ts → types-BxNRKSVd.d.ts} +1 -1
  160. package/dist/{types-C58ZXs4K.d.cts → types-C2DtnHIn.d.cts} +25 -1
  161. package/dist/{types-C58ZXs4K.d.ts → types-C2DtnHIn.d.ts} +25 -1
  162. package/dist/{types-C4NaIW6B.d.cts → types-EcElKOlk.d.cts} +1 -1
  163. package/dist/undo/index.d.cts +2 -2
  164. package/dist/undo/index.d.ts +2 -2
  165. package/dist/undo.cjs.map +1 -1
  166. package/dist/undo.js +3 -3
  167. package/package.json +13 -2
  168. package/dist/chunk-QJYRWEXD.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import { ShareControls, AgentCursor, AgentActivityHighlight, AgentPanel } from './chunk-QDC7MXBH.js';
2
2
  import { createSessionDescriptor, attachSseRelay } from './chunk-6TZ5IBRN.js';
3
3
  import { attachInProcess } from './chunk-AFUULW5E.js';
4
- import { registerWhiteboardBridge } from './chunk-2LSU3NFO.js';
5
- import './chunk-HVDHT7DM.js';
4
+ import { registerWhiteboardBridge } from './chunk-LQB42OSA.js';
5
+ import './chunk-R4XXOGQH.js';
6
6
  import './chunk-2VENWGLZ.js';
7
7
  import './chunk-C3TYI5TJ.js';
8
- import { MicroMcpServer } from './chunk-QJYRWEXD.js';
8
+ import { MicroMcpServer } from './chunk-CZV3WUW5.js';
9
9
  import { useState, useRef, useEffect, useCallback, useMemo } from 'react';
10
10
  import { Board, Connector, Shape, StickyNote, CursorLayer } from '@particle-academy/fancy-whiteboard';
11
11
  import { jsxs, jsx } from 'react/jsx-runtime';
package/dist/index.cjs CHANGED
@@ -101,10 +101,18 @@ var MicroMcpServer = class extends ToolRegistry {
101
101
  constructor(options) {
102
102
  super();
103
103
  this.transports = /* @__PURE__ */ new Set();
104
- this.notifyListChangedScheduled = false;
104
+ /**
105
+ * Transports owed a `tools/list_changed` at the end of this tick. Empty when
106
+ * none is scheduled. See {@link scheduleListChangedNotification}.
107
+ */
108
+ this.listChangedOwed = /* @__PURE__ */ new Set();
105
109
  this.info = options.info;
106
110
  this.capabilities = options.capabilities ?? { tools: { listChanged: true } };
107
111
  this.instructions = options.instructions;
112
+ if (options.protocolVersions && options.protocolVersions.length === 0) {
113
+ throw new Error("MicroMcpServer: protocolVersions is empty \u2014 a server must speak at least one protocol revision.");
114
+ }
115
+ this.protocolVersions = options.protocolVersions ? [...options.protocolVersions] : [MCP_PROTOCOL_VERSION];
108
116
  }
109
117
  attach(transport) {
110
118
  this.transports.add(transport);
@@ -150,7 +158,7 @@ var MicroMcpServer = class extends ToolRegistry {
150
158
  switch (method) {
151
159
  case "initialize":
152
160
  return {
153
- protocolVersion: MCP_PROTOCOL_VERSION,
161
+ protocolVersion: this.negotiate(params?.protocolVersion),
154
162
  capabilities: this.capabilities,
155
163
  serverInfo: this.info,
156
164
  ...this.instructions ? { instructions: this.instructions } : {}
@@ -176,12 +184,31 @@ var MicroMcpServer = class extends ToolRegistry {
176
184
  throw rpcError(JSONRPC_METHOD_NOT_FOUND, `Unsupported method: ${method}`);
177
185
  }
178
186
  }
187
+ /** The revision to answer `initialize` with: the one asked for if spoken, else the newest. */
188
+ negotiate(requested) {
189
+ return typeof requested === "string" && this.protocolVersions.includes(requested) ? requested : this.protocolVersions[0];
190
+ }
191
+ /**
192
+ * Tell the transports that SAW the old tool list that it changed.
193
+ *
194
+ * Changes in one tick coalesce into one notification. The recipients are the
195
+ * transports attached at the moment of a change, not at the moment the
196
+ * notification goes out: a transport attached afterwards never had the old
197
+ * list, so "your list is stale" is noise to it — and on stdio, where a host
198
+ * builds the server and attaches stdin/stdout in the same tick, it was the
199
+ * first frame a client received, before it had even sent `initialize`.
200
+ */
179
201
  scheduleListChangedNotification() {
180
- if (this.notifyListChangedScheduled) return;
181
- this.notifyListChangedScheduled = true;
202
+ if (this.transports.size === 0) return;
203
+ const scheduled = this.listChangedOwed.size > 0;
204
+ for (const t of this.transports) this.listChangedOwed.add(t);
205
+ if (scheduled) return;
182
206
  queueMicrotask(() => {
183
- this.notifyListChangedScheduled = false;
184
- this.broadcast({ jsonrpc: "2.0", method: "notifications/tools/list_changed" });
207
+ const owed = this.listChangedOwed;
208
+ this.listChangedOwed = /* @__PURE__ */ new Set();
209
+ for (const t of owed) {
210
+ if (this.transports.has(t)) t.send({ jsonrpc: "2.0", method: "notifications/tools/list_changed" });
211
+ }
185
212
  });
186
213
  }
187
214
  /** Send an application notification to every client, or one attached transport. */