@particle-academy/agent-integrations 0.50.0 → 0.52.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 (230) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +69 -0
  3. package/dist/bridges/artboard.d.cts +3 -3
  4. package/dist/bridges/artboard.d.ts +3 -3
  5. package/dist/bridges/catalog.d.cts +3 -3
  6. package/dist/bridges/catalog.d.ts +3 -3
  7. package/dist/bridges/charts.d.cts +3 -3
  8. package/dist/bridges/charts.d.ts +3 -3
  9. package/dist/bridges/cms.d.cts +3 -3
  10. package/dist/bridges/cms.d.ts +3 -3
  11. package/dist/bridges/code.d.cts +3 -3
  12. package/dist/bridges/code.d.ts +3 -3
  13. package/dist/bridges/doc.d.cts +3 -3
  14. package/dist/bridges/doc.d.ts +3 -3
  15. package/dist/bridges/features.d.cts +3 -3
  16. package/dist/bridges/features.d.ts +3 -3
  17. package/dist/bridges/files.d.cts +3 -3
  18. package/dist/bridges/files.d.ts +3 -3
  19. package/dist/bridges/flow.d.cts +3 -3
  20. package/dist/bridges/flow.d.ts +3 -3
  21. package/dist/bridges/forms.d.cts +55 -10
  22. package/dist/bridges/forms.d.ts +55 -10
  23. package/dist/bridges/git.d.cts +3 -3
  24. package/dist/bridges/git.d.ts +3 -3
  25. package/dist/bridges/grid.d.cts +3 -3
  26. package/dist/bridges/grid.d.ts +3 -3
  27. package/dist/bridges/map.d.cts +3 -3
  28. package/dist/bridges/map.d.ts +3 -3
  29. package/dist/bridges/navigation.d.cts +3 -3
  30. package/dist/bridges/navigation.d.ts +3 -3
  31. package/dist/bridges/passkeys.d.cts +3 -3
  32. package/dist/bridges/passkeys.d.ts +3 -3
  33. package/dist/bridges/scene.d.cts +3 -3
  34. package/dist/bridges/scene.d.ts +3 -3
  35. package/dist/bridges/screen-doc.d.cts +3 -3
  36. package/dist/bridges/screen-doc.d.ts +3 -3
  37. package/dist/bridges/screens.d.cts +3 -3
  38. package/dist/bridges/screens.d.ts +3 -3
  39. package/dist/bridges/sheets.d.cts +3 -3
  40. package/dist/bridges/sheets.d.ts +3 -3
  41. package/dist/bridges/slides.d.cts +3 -3
  42. package/dist/bridges/slides.d.ts +3 -3
  43. package/dist/bridges/terminal.d.cts +3 -3
  44. package/dist/bridges/terminal.d.ts +3 -3
  45. package/dist/bridges/tui.d.cts +2 -2
  46. package/dist/bridges/tui.d.ts +2 -2
  47. package/dist/bridges/whiteboard.d.cts +3 -3
  48. package/dist/bridges/whiteboard.d.ts +3 -3
  49. package/dist/bridges-artboard.cjs +11 -5
  50. package/dist/bridges-artboard.cjs.map +1 -1
  51. package/dist/bridges-artboard.js +6 -4
  52. package/dist/bridges-artboard.js.map +1 -1
  53. package/dist/bridges-catalog.cjs +11 -5
  54. package/dist/bridges-catalog.cjs.map +1 -1
  55. package/dist/bridges-catalog.js +3 -3
  56. package/dist/bridges-charts.cjs +11 -5
  57. package/dist/bridges-charts.cjs.map +1 -1
  58. package/dist/bridges-charts.js +3 -3
  59. package/dist/bridges-cms.cjs +11 -5
  60. package/dist/bridges-cms.cjs.map +1 -1
  61. package/dist/bridges-cms.js +4 -4
  62. package/dist/bridges-code.cjs +11 -5
  63. package/dist/bridges-code.cjs.map +1 -1
  64. package/dist/bridges-code.js +3 -3
  65. package/dist/bridges-doc.cjs +11 -5
  66. package/dist/bridges-doc.cjs.map +1 -1
  67. package/dist/bridges-doc.js +3 -3
  68. package/dist/bridges-features.cjs +11 -5
  69. package/dist/bridges-features.cjs.map +1 -1
  70. package/dist/bridges-features.js +3 -3
  71. package/dist/bridges-files.cjs +11 -5
  72. package/dist/bridges-files.cjs.map +1 -1
  73. package/dist/bridges-files.js +3 -3
  74. package/dist/bridges-flow.cjs +11 -5
  75. package/dist/bridges-flow.cjs.map +1 -1
  76. package/dist/bridges-flow.js +6 -4
  77. package/dist/bridges-flow.js.map +1 -1
  78. package/dist/bridges-forms.cjs +123 -16
  79. package/dist/bridges-forms.cjs.map +1 -1
  80. package/dist/bridges-forms.js +4 -3
  81. package/dist/bridges-git.cjs +10 -5
  82. package/dist/bridges-git.cjs.map +1 -1
  83. package/dist/bridges-git.js +3 -3
  84. package/dist/bridges-grid.cjs +11 -5
  85. package/dist/bridges-grid.cjs.map +1 -1
  86. package/dist/bridges-grid.js +3 -3
  87. package/dist/bridges-map.cjs +11 -5
  88. package/dist/bridges-map.cjs.map +1 -1
  89. package/dist/bridges-map.js +3 -3
  90. package/dist/bridges-navigation.cjs +11 -5
  91. package/dist/bridges-navigation.cjs.map +1 -1
  92. package/dist/bridges-navigation.js +3 -3
  93. package/dist/bridges-passkeys.cjs +11 -5
  94. package/dist/bridges-passkeys.cjs.map +1 -1
  95. package/dist/bridges-passkeys.js +3 -3
  96. package/dist/bridges-scene.cjs +11 -5
  97. package/dist/bridges-scene.cjs.map +1 -1
  98. package/dist/bridges-scene.js +3 -3
  99. package/dist/bridges-screen-doc.cjs +14 -6
  100. package/dist/bridges-screen-doc.cjs.map +1 -1
  101. package/dist/bridges-screen-doc.js +4 -4
  102. package/dist/bridges-screens.cjs +15 -7
  103. package/dist/bridges-screens.cjs.map +1 -1
  104. package/dist/bridges-screens.js +4 -3
  105. package/dist/bridges-sheets.cjs +11 -5
  106. package/dist/bridges-sheets.cjs.map +1 -1
  107. package/dist/bridges-sheets.js +3 -3
  108. package/dist/bridges-slides.cjs +11 -5
  109. package/dist/bridges-slides.cjs.map +1 -1
  110. package/dist/bridges-slides.js +3 -3
  111. package/dist/bridges-terminal.cjs +11 -5
  112. package/dist/bridges-terminal.cjs.map +1 -1
  113. package/dist/bridges-terminal.js +3 -3
  114. package/dist/bridges-tui.cjs +1 -1
  115. package/dist/bridges-tui.cjs.map +1 -1
  116. package/dist/bridges-tui.js +2 -2
  117. package/dist/bridges-whiteboard.cjs +11 -5
  118. package/dist/bridges-whiteboard.cjs.map +1 -1
  119. package/dist/bridges-whiteboard.js +3 -3
  120. package/dist/{chunk-CZV3WUW5.js → chunk-3GFKC6OK.js} +20 -7
  121. package/dist/chunk-3GFKC6OK.js.map +1 -0
  122. package/dist/{chunk-JLHVQWOV.js → chunk-6Q3PMT7K.js} +4 -4
  123. package/dist/chunk-6Q3PMT7K.js.map +1 -0
  124. package/dist/{chunk-HOZCDDRA.js → chunk-7HHZBPDE.js} +9 -29
  125. package/dist/chunk-7HHZBPDE.js.map +1 -0
  126. package/dist/{chunk-VFWFT3OK.js → chunk-AL77RO25.js} +97 -17
  127. package/dist/chunk-AL77RO25.js.map +1 -0
  128. package/dist/{chunk-AXWMWYH5.js → chunk-C4AQ2YBW.js} +7 -6
  129. package/dist/chunk-C4AQ2YBW.js.map +1 -0
  130. package/dist/{chunk-NH6HUVXQ.js → chunk-CI5ZVHDY.js} +8 -6
  131. package/dist/chunk-CI5ZVHDY.js.map +1 -0
  132. package/dist/{chunk-5ZWNCHZS.js → chunk-CKJL5C7A.js} +8 -6
  133. package/dist/chunk-CKJL5C7A.js.map +1 -0
  134. package/dist/chunk-DPBAEWB5.js +28 -0
  135. package/dist/chunk-DPBAEWB5.js.map +1 -0
  136. package/dist/{chunk-BG3QXNM6.js → chunk-HNVHAY4A.js} +8 -6
  137. package/dist/chunk-HNVHAY4A.js.map +1 -0
  138. package/dist/{chunk-5M5ELTHE.js → chunk-KAEPC6N4.js} +8 -6
  139. package/dist/chunk-KAEPC6N4.js.map +1 -0
  140. package/dist/{chunk-3WVXAB3D.js → chunk-M423JOQ3.js} +3 -3
  141. package/dist/{chunk-3WVXAB3D.js.map → chunk-M423JOQ3.js.map} +1 -1
  142. package/dist/{chunk-SWWJUOCY.js → chunk-MKC633WU.js} +3 -3
  143. package/dist/{chunk-SWWJUOCY.js.map → chunk-MKC633WU.js.map} +1 -1
  144. package/dist/{chunk-LQB42OSA.js → chunk-MKJE6V4Z.js} +8 -6
  145. package/dist/chunk-MKJE6V4Z.js.map +1 -0
  146. package/dist/{chunk-MIDZWKIF.js → chunk-NB5AQIR2.js} +8 -6
  147. package/dist/chunk-NB5AQIR2.js.map +1 -0
  148. package/dist/{chunk-VMRUW4B4.js → chunk-OUUHFR4N.js} +8 -6
  149. package/dist/chunk-OUUHFR4N.js.map +1 -0
  150. package/dist/{chunk-FCXSR7I5.js → chunk-P6SJBP5T.js} +8 -6
  151. package/dist/chunk-P6SJBP5T.js.map +1 -0
  152. package/dist/{chunk-5JLTXHX6.js → chunk-PMPBI6I3.js} +7 -5
  153. package/dist/chunk-PMPBI6I3.js.map +1 -0
  154. package/dist/{chunk-4WVLZ6YP.js → chunk-PV4FZDYX.js} +8 -6
  155. package/dist/chunk-PV4FZDYX.js.map +1 -0
  156. package/dist/{chunk-3UUF5KKZ.js → chunk-QEVSNDJW.js} +8 -6
  157. package/dist/chunk-QEVSNDJW.js.map +1 -0
  158. package/dist/{chunk-VOCUGTZB.js → chunk-S4DA2UTJ.js} +8 -6
  159. package/dist/chunk-S4DA2UTJ.js.map +1 -0
  160. package/dist/{chunk-RVMM4BHK.js → chunk-V6EHKHSF.js} +8 -6
  161. package/dist/chunk-V6EHKHSF.js.map +1 -0
  162. package/dist/{chunk-36MKPTVD.js → chunk-VE7TRWZR.js} +8 -6
  163. package/dist/chunk-VE7TRWZR.js.map +1 -0
  164. package/dist/{chunk-Z5NL5D4J.js → chunk-VFUKZ6UA.js} +8 -6
  165. package/dist/chunk-VFUKZ6UA.js.map +1 -0
  166. package/dist/{chunk-3HVYUMQF.js → chunk-VHB3VE53.js} +8 -6
  167. package/dist/chunk-VHB3VE53.js.map +1 -0
  168. package/dist/{chunk-R4XXOGQH.js → chunk-ZDKYKJFH.js} +10 -6
  169. package/dist/chunk-ZDKYKJFH.js.map +1 -0
  170. package/dist/components-shared-whiteboard.cjs +29 -10
  171. package/dist/components-shared-whiteboard.cjs.map +1 -1
  172. package/dist/components-shared-whiteboard.js +3 -3
  173. package/dist/dom-navigation/index.d.cts +3 -3
  174. package/dist/dom-navigation/index.d.ts +3 -3
  175. package/dist/index.cjs +211 -78
  176. package/dist/index.cjs.map +1 -1
  177. package/dist/index.d.cts +6 -6
  178. package/dist/index.d.ts +6 -6
  179. package/dist/index.js +27 -26
  180. package/dist/index.js.map +1 -1
  181. package/dist/mcp/index.d.cts +5 -5
  182. package/dist/mcp/index.d.ts +5 -5
  183. package/dist/mcp/stdio.d.cts +3 -3
  184. package/dist/mcp/stdio.d.ts +3 -3
  185. package/dist/mcp.cjs +18 -5
  186. package/dist/mcp.cjs.map +1 -1
  187. package/dist/mcp.js +1 -1
  188. package/dist/presence/index.d.cts +1 -1
  189. package/dist/presence/index.d.ts +1 -1
  190. package/dist/{server-1y0n61R5.d.cts → server-DJJygNo1.d.cts} +2 -2
  191. package/dist/{server-vq6qVl3T.d.ts → server-Dwo9LOxh.d.ts} +2 -2
  192. package/dist/sharing/index.d.cts +3 -3
  193. package/dist/sharing/index.d.ts +3 -3
  194. package/dist/sheets-adapter.d.cts +3 -3
  195. package/dist/sheets-adapter.d.ts +3 -3
  196. package/dist/{tool-host-LYfdPE8u.d.ts → tool-host-BBSaU7IJ.d.cts} +10 -4
  197. package/dist/{tool-host-D67N2a2h.d.cts → tool-host-BqJRPr_T.d.ts} +10 -4
  198. package/dist/{types-DP5yQZQU.d.cts → types-D_H2f-wF.d.cts} +1 -1
  199. package/dist/{types-VX_9je7w.d.ts → types-D_TzdBsK.d.ts} +1 -1
  200. package/dist/{types-gzIpsUDE.d.cts → types-ITRQFAir.d.cts} +26 -1
  201. package/dist/{types-gzIpsUDE.d.ts → types-ITRQFAir.d.ts} +26 -1
  202. package/dist/undo/index.d.cts +2 -2
  203. package/dist/undo/index.d.ts +2 -2
  204. package/dist/undo.cjs +7 -3
  205. package/dist/undo.cjs.map +1 -1
  206. package/dist/undo.js +3 -3
  207. package/docs/multi-form-hosts.md +97 -0
  208. package/package.json +1 -1
  209. package/dist/chunk-36MKPTVD.js.map +0 -1
  210. package/dist/chunk-3HVYUMQF.js.map +0 -1
  211. package/dist/chunk-3UUF5KKZ.js.map +0 -1
  212. package/dist/chunk-4WVLZ6YP.js.map +0 -1
  213. package/dist/chunk-5JLTXHX6.js.map +0 -1
  214. package/dist/chunk-5M5ELTHE.js.map +0 -1
  215. package/dist/chunk-5ZWNCHZS.js.map +0 -1
  216. package/dist/chunk-AXWMWYH5.js.map +0 -1
  217. package/dist/chunk-BG3QXNM6.js.map +0 -1
  218. package/dist/chunk-CZV3WUW5.js.map +0 -1
  219. package/dist/chunk-FCXSR7I5.js.map +0 -1
  220. package/dist/chunk-HOZCDDRA.js.map +0 -1
  221. package/dist/chunk-JLHVQWOV.js.map +0 -1
  222. package/dist/chunk-LQB42OSA.js.map +0 -1
  223. package/dist/chunk-MIDZWKIF.js.map +0 -1
  224. package/dist/chunk-NH6HUVXQ.js.map +0 -1
  225. package/dist/chunk-R4XXOGQH.js.map +0 -1
  226. package/dist/chunk-RVMM4BHK.js.map +0 -1
  227. package/dist/chunk-VFWFT3OK.js.map +0 -1
  228. package/dist/chunk-VMRUW4B4.js.map +0 -1
  229. package/dist/chunk-VOCUGTZB.js.map +0 -1
  230. package/dist/chunk-Z5NL5D4J.js.map +0 -1
@@ -59,13 +59,23 @@ var ToolRegistry = class {
59
59
  */
60
60
  this.withdrawn = /* @__PURE__ */ new Set();
61
61
  }
62
- registerTool(definition, handler) {
63
- this.tools.set(definition.name, { definition, handler });
64
- this.withdrawn.delete(definition.name);
62
+ registerTool(definition, handler, options = {}) {
63
+ const name = definition.name;
64
+ const { owner, replace = false } = options;
65
+ const held = this.tools.get(name);
66
+ if (held && !replace && (owner === void 0 || held.owner !== owner)) {
67
+ throw new Error(
68
+ `Tool "${name}" is already registered by ${describeOwner(held.owner)}; ${describeOwner(owner)} cannot register it too. Two registrants for one name would leave the first one listed but unreachable. Give one of them a different tool name, dispose the first registration, or pass { replace: true } to take the name over deliberately.`
69
+ );
70
+ }
71
+ const record = owner === void 0 ? { definition, handler } : { definition, handler, owner };
72
+ this.tools.set(name, record);
73
+ this.withdrawn.delete(name);
65
74
  this.onToolsChanged();
66
75
  return () => {
67
- if (this.tools.delete(definition.name)) {
68
- this.withdrawn.add(definition.name);
76
+ if (this.tools.get(name) === record) {
77
+ this.tools.delete(name);
78
+ this.withdrawn.add(name);
69
79
  this.onToolsChanged();
70
80
  }
71
81
  };
@@ -94,6 +104,9 @@ var ToolRegistry = class {
94
104
  onToolsChanged() {
95
105
  }
96
106
  };
107
+ function describeOwner(owner) {
108
+ return owner === void 0 ? "an unnamed registrant (pass { owner } to registerTool to identify it)" : `"${owner}"`;
109
+ }
97
110
 
98
111
  // src/mcp/server.ts
99
112
  var MicroMcpServer = class extends ToolRegistry {
@@ -559,6 +572,7 @@ function extractMeta(result) {
559
572
 
560
573
  // src/undo/undo-tools.ts
561
574
  var installedHosts = /* @__PURE__ */ new WeakSet();
575
+ var UNDO_TOOLS_OWNER = "agent-undo";
562
576
  function ensureUndoToolsRegistered(host, options = {}) {
563
577
  if (installedHosts.has(host)) return;
564
578
  installedHosts.add(host);
@@ -583,7 +597,8 @@ function registerUndoTools(host, options = {}) {
583
597
  const entry = await fancyAutoCommon.undoOne(agentOf(args));
584
598
  if (!entry) return errorResult("Nothing to undo.");
585
599
  return textResult(`Undid: ${entry.label}`, { entry: serialize(entry) });
586
- }
600
+ },
601
+ { owner: UNDO_TOOLS_OWNER }
587
602
  )
588
603
  );
589
604
  disposers.push(
@@ -601,7 +616,8 @@ function registerUndoTools(host, options = {}) {
601
616
  const entry = await fancyAutoCommon.redoOne(agentOf(args));
602
617
  if (!entry) return errorResult("Nothing to redo.");
603
618
  return textResult(`Redid: ${entry.label}`, { entry: serialize(entry) });
604
- }
619
+ },
620
+ { owner: UNDO_TOOLS_OWNER }
605
621
  )
606
622
  );
607
623
  disposers.push(
@@ -619,7 +635,8 @@ function registerUndoTools(host, options = {}) {
619
635
  const history = fancyAutoCommon.readHistory(agentOf(args)).map(serialize);
620
636
  const text = history.map((e) => `${new Date(e.timestamp).toISOString()} ${e.bridgeId} ${e.action}: ${e.label}`).join("\n");
621
637
  return textResult(text || "(empty)", history);
622
- }
638
+ },
639
+ { owner: UNDO_TOOLS_OWNER }
623
640
  )
624
641
  );
625
642
  return () => disposers.forEach((d) => d());
@@ -644,6 +661,7 @@ function registerWhiteboardBridge(host, options) {
644
661
  const { adapter } = options;
645
662
  const agent = { ...DEFAULT_AGENT, ...options.agent ?? {} };
646
663
  const disposers = [];
664
+ const bridgeId = "whiteboard";
647
665
  ensureUndoToolsRegistered(host, { defaultAgentId: agent.id });
648
666
  const wbTarget = (args, result) => ({
649
667
  kind: "whiteboard",
@@ -675,7 +693,8 @@ function registerWhiteboardBridge(host, options) {
675
693
  additionalProperties: false
676
694
  }
677
695
  },
678
- final
696
+ final,
697
+ { owner: bridgeId }
679
698
  )
680
699
  );
681
700
  };
@@ -1053,7 +1072,7 @@ function registerWhiteboardBridge(host, options) {
1053
1072
  wbTarget
1054
1073
  );
1055
1074
  return {
1056
- id: "whiteboard",
1075
+ id: bridgeId,
1057
1076
  title: "Whiteboard",
1058
1077
  dispose: () => {
1059
1078
  for (const d of disposers) d();