agent-comms 1.14.0 → 1.15.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 (184) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +1 -1
  3. package/dist/bridges/claude-code/channel.d.ts.map +1 -1
  4. package/dist/bridges/claude-code/channel.js +6 -1
  5. package/dist/bridges/claude-code/channel.js.map +1 -1
  6. package/dist/bridges/codex/tool.d.ts.map +1 -1
  7. package/dist/bridges/codex/tool.js +6 -1
  8. package/dist/bridges/codex/tool.js.map +1 -1
  9. package/dist/bridges/mcp/index.d.ts.map +1 -1
  10. package/dist/bridges/mcp/index.js +6 -1
  11. package/dist/bridges/mcp/index.js.map +1 -1
  12. package/dist/bridges/opencode/plugin.d.ts.map +1 -1
  13. package/dist/bridges/opencode/plugin.js +5 -0
  14. package/dist/bridges/opencode/plugin.js.map +1 -1
  15. package/dist/bridges/pi/index.d.ts.map +1 -1
  16. package/dist/bridges/pi/index.js +39 -17
  17. package/dist/bridges/pi/index.js.map +1 -1
  18. package/dist/bridges/user/controller.d.ts +9 -1
  19. package/dist/bridges/user/controller.d.ts.map +1 -1
  20. package/dist/bridges/user/controller.js +25 -1
  21. package/dist/bridges/user/controller.js.map +1 -1
  22. package/dist/bridges/user/tui.js +2 -0
  23. package/dist/bridges/user/tui.js.map +1 -1
  24. package/dist/bridges/user/web/build.d.ts +2 -0
  25. package/dist/bridges/user/web/build.d.ts.map +1 -1
  26. package/dist/bridges/user/web/build.js +44 -0
  27. package/dist/bridges/user/web/build.js.map +1 -1
  28. package/dist/bridges/user/web/frontend/components/App.d.ts +5 -0
  29. package/dist/bridges/user/web/frontend/components/App.d.ts.map +1 -1
  30. package/dist/bridges/user/web/frontend/components/App.js +1 -1
  31. package/dist/bridges/user/web/frontend/components/App.js.map +1 -1
  32. package/dist/bridges/user/web/frontend/components/ProjectTree.js +6 -3
  33. package/dist/bridges/user/web/frontend/components/ProjectTree.js.map +1 -1
  34. package/dist/bridges/user/web/frontend/components/RelayPanel.d.ts +15 -0
  35. package/dist/bridges/user/web/frontend/components/RelayPanel.d.ts.map +1 -0
  36. package/dist/bridges/user/web/frontend/components/RelayPanel.js +46 -0
  37. package/dist/bridges/user/web/frontend/components/RelayPanel.js.map +1 -0
  38. package/dist/bridges/user/web/frontend/components/Sidebar.d.ts +7 -2
  39. package/dist/bridges/user/web/frontend/components/Sidebar.d.ts.map +1 -1
  40. package/dist/bridges/user/web/frontend/components/Sidebar.js +15 -9
  41. package/dist/bridges/user/web/frontend/components/Sidebar.js.map +1 -1
  42. package/dist/bridges/user/web/frontend/input.js +1 -1
  43. package/dist/bridges/user/web/frontend/input.js.map +1 -1
  44. package/dist/bridges/user/web/frontend/main.js +73 -5
  45. package/dist/bridges/user/web/frontend/main.js.map +1 -1
  46. package/dist/bridges/user/web/frontend/mesh-client.d.ts +43 -0
  47. package/dist/bridges/user/web/frontend/mesh-client.d.ts.map +1 -0
  48. package/dist/bridges/user/web/frontend/mesh-client.js +132 -0
  49. package/dist/bridges/user/web/frontend/mesh-client.js.map +1 -0
  50. package/dist/bridges/user/web/frontend/mesh-worker.d.ts +14 -0
  51. package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +1 -0
  52. package/dist/bridges/user/web/frontend/mesh-worker.js +274 -0
  53. package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -0
  54. package/dist/bridges/user/web/frontend/relay-client.d.ts +40 -0
  55. package/dist/bridges/user/web/frontend/relay-client.d.ts.map +1 -0
  56. package/dist/bridges/user/web/frontend/relay-client.js +97 -0
  57. package/dist/bridges/user/web/frontend/relay-client.js.map +1 -0
  58. package/dist/bridges/user/web/frontend/relay-worker.d.ts +15 -0
  59. package/dist/bridges/user/web/frontend/relay-worker.d.ts.map +1 -0
  60. package/dist/bridges/user/web/frontend/relay-worker.js +366 -0
  61. package/dist/bridges/user/web/frontend/relay-worker.js.map +1 -0
  62. package/dist/bridges/user/web/frontend/sw.d.ts +16 -0
  63. package/dist/bridges/user/web/frontend/sw.d.ts.map +1 -0
  64. package/dist/bridges/user/web/frontend/sw.js +145 -0
  65. package/dist/bridges/user/web/frontend/sw.js.map +1 -0
  66. package/dist/bridges/user/web/frontend/url-sync.d.ts +48 -0
  67. package/dist/bridges/user/web/frontend/url-sync.d.ts.map +1 -0
  68. package/dist/bridges/user/web/frontend/url-sync.js +74 -0
  69. package/dist/bridges/user/web/frontend/url-sync.js.map +1 -0
  70. package/dist/bridges/user/web/server.d.ts +10 -3
  71. package/dist/bridges/user/web/server.d.ts.map +1 -1
  72. package/dist/bridges/user/web/server.js +254 -12
  73. package/dist/bridges/user/web/server.js.map +1 -1
  74. package/dist/core/bridge.d.ts +28 -0
  75. package/dist/core/bridge.d.ts.map +1 -1
  76. package/dist/core/bridge.js +137 -0
  77. package/dist/core/bridge.js.map +1 -1
  78. package/dist/core/comms-store.d.ts +22 -1
  79. package/dist/core/comms-store.d.ts.map +1 -1
  80. package/dist/core/discovery-mdns.d.ts +33 -0
  81. package/dist/core/discovery-mdns.d.ts.map +1 -0
  82. package/dist/core/discovery-mdns.js +182 -0
  83. package/dist/core/discovery-mdns.js.map +1 -0
  84. package/dist/core/discovery-tailscale.d.ts +40 -0
  85. package/dist/core/discovery-tailscale.d.ts.map +1 -0
  86. package/dist/core/discovery-tailscale.js +158 -0
  87. package/dist/core/discovery-tailscale.js.map +1 -0
  88. package/dist/core/discovery.d.ts +82 -0
  89. package/dist/core/discovery.d.ts.map +1 -0
  90. package/dist/core/discovery.js +194 -0
  91. package/dist/core/discovery.js.map +1 -0
  92. package/dist/core/federation.d.ts +100 -0
  93. package/dist/core/federation.d.ts.map +1 -0
  94. package/dist/core/federation.js +411 -0
  95. package/dist/core/federation.js.map +1 -0
  96. package/dist/core/identity.d.ts +31 -0
  97. package/dist/core/identity.d.ts.map +1 -0
  98. package/dist/core/identity.js +251 -0
  99. package/dist/core/identity.js.map +1 -0
  100. package/dist/core/index.d.ts +11 -0
  101. package/dist/core/index.d.ts.map +1 -1
  102. package/dist/core/index.js +6 -0
  103. package/dist/core/index.js.map +1 -1
  104. package/dist/core/mesh-store.d.ts +72 -26
  105. package/dist/core/mesh-store.d.ts.map +1 -1
  106. package/dist/core/mesh-store.js +467 -352
  107. package/dist/core/mesh-store.js.map +1 -1
  108. package/dist/core/push-manager.d.ts +41 -0
  109. package/dist/core/push-manager.d.ts.map +1 -0
  110. package/dist/core/push-manager.js +60 -0
  111. package/dist/core/push-manager.js.map +1 -0
  112. package/dist/core/store.d.ts +21 -1
  113. package/dist/core/store.d.ts.map +1 -1
  114. package/dist/core/store.js +44 -0
  115. package/dist/core/store.js.map +1 -1
  116. package/dist/core/tcp-transport.d.ts +77 -0
  117. package/dist/core/tcp-transport.d.ts.map +1 -0
  118. package/dist/core/tcp-transport.js +596 -0
  119. package/dist/core/tcp-transport.js.map +1 -0
  120. package/dist/core/test/identity.unit.test.d.ts +5 -0
  121. package/dist/core/test/identity.unit.test.d.ts.map +1 -0
  122. package/dist/core/test/identity.unit.test.js +70 -0
  123. package/dist/core/test/identity.unit.test.js.map +1 -0
  124. package/dist/core/tls-transport.d.ts +69 -0
  125. package/dist/core/tls-transport.d.ts.map +1 -0
  126. package/dist/core/tls-transport.js +602 -0
  127. package/dist/core/tls-transport.js.map +1 -0
  128. package/dist/core/tool.d.ts +23 -2
  129. package/dist/core/tool.d.ts.map +1 -1
  130. package/dist/core/tool.js +269 -1
  131. package/dist/core/tool.js.map +1 -1
  132. package/dist/core/transport.d.ts +166 -0
  133. package/dist/core/transport.d.ts.map +1 -0
  134. package/dist/core/transport.js +20 -0
  135. package/dist/core/transport.js.map +1 -0
  136. package/dist/core/types.d.ts +136 -0
  137. package/dist/core/types.d.ts.map +1 -1
  138. package/dist/core/types.js +71 -0
  139. package/dist/core/types.js.map +1 -1
  140. package/dist/core/vapid.d.ts +22 -0
  141. package/dist/core/vapid.d.ts.map +1 -0
  142. package/dist/core/vapid.js +50 -0
  143. package/dist/core/vapid.js.map +1 -0
  144. package/dist/core/web-push.d.ts +37 -0
  145. package/dist/core/web-push.d.ts.map +1 -0
  146. package/dist/core/web-push.js +198 -0
  147. package/dist/core/web-push.js.map +1 -0
  148. package/dist/core/wire-protocol.d.ts +131 -0
  149. package/dist/core/wire-protocol.d.ts.map +1 -0
  150. package/dist/core/wire-protocol.js +54 -0
  151. package/dist/core/wire-protocol.js.map +1 -0
  152. package/dist/core/ws-transport.d.ts +71 -0
  153. package/dist/core/ws-transport.d.ts.map +1 -0
  154. package/dist/core/ws-transport.js +560 -0
  155. package/dist/core/ws-transport.js.map +1 -0
  156. package/dist/test/approval.integration.test.d.ts +9 -0
  157. package/dist/test/approval.integration.test.d.ts.map +1 -0
  158. package/dist/test/approval.integration.test.js +361 -0
  159. package/dist/test/approval.integration.test.js.map +1 -0
  160. package/dist/test/delivery-receipt.helper.d.ts +16 -0
  161. package/dist/test/delivery-receipt.helper.d.ts.map +1 -0
  162. package/dist/test/delivery-receipt.helper.js +409 -0
  163. package/dist/test/delivery-receipt.helper.js.map +1 -0
  164. package/dist/test/delivery-receipt.runner.d.ts +13 -0
  165. package/dist/test/delivery-receipt.runner.d.ts.map +1 -0
  166. package/dist/test/delivery-receipt.runner.js +51 -0
  167. package/dist/test/delivery-receipt.runner.js.map +1 -0
  168. package/dist/test/federation.integration.test.d.ts +15 -0
  169. package/dist/test/federation.integration.test.d.ts.map +1 -0
  170. package/dist/test/federation.integration.test.js +218 -0
  171. package/dist/test/federation.integration.test.js.map +1 -0
  172. package/dist/test/listener-policy.integration.test.d.ts +9 -0
  173. package/dist/test/listener-policy.integration.test.d.ts.map +1 -0
  174. package/dist/test/listener-policy.integration.test.js +239 -0
  175. package/dist/test/listener-policy.integration.test.js.map +1 -0
  176. package/dist/test/tls-transport.integration.test.d.ts +8 -0
  177. package/dist/test/tls-transport.integration.test.d.ts.map +1 -0
  178. package/dist/test/tls-transport.integration.test.js +158 -0
  179. package/dist/test/tls-transport.integration.test.js.map +1 -0
  180. package/dist/test/visibility.integration.test.d.ts +12 -0
  181. package/dist/test/visibility.integration.test.d.ts.map +1 -0
  182. package/dist/test/visibility.integration.test.js +181 -0
  183. package/dist/test/visibility.integration.test.js.map +1 -0
  184. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/App.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAI/D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,EACrC,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,gCAqBlC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/App.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,EACrC,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,gCAyBlC"}
@@ -2,6 +2,6 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "preact/jsx-ru
2
2
  import { ChatArea } from "./ChatArea.js";
3
3
  import { Sidebar } from "./Sidebar.js";
4
4
  export function App(props) {
5
- return (_jsxs(_Fragment, { children: [_jsx(Sidebar, { rooms: props.rooms, agents: props.agents, currentRoom: props.currentRoom, onJoinRoom: props.onJoinRoom, onSelectAgent: props.onSelectAgent, onCreateRoom: props.onCreateRoom, onJoinRoomInput: props.onJoinRoomInput }), _jsx(ChatArea, { messages: props.messages, currentRoom: props.currentRoom, dmTarget: props.dmTarget, onSendAction: props.onSendAction, onLeaveRoom: props.onLeaveRoom })] }));
5
+ return (_jsxs(_Fragment, { children: [_jsx(Sidebar, { rooms: props.rooms, agents: props.agents, currentRoom: props.currentRoom, relayStatus: props.relayStatus, onJoinRoom: props.onJoinRoom, onSelectAgent: props.onSelectAgent, onRenameAgent: props.onRenameAgent, onCreateRoom: props.onCreateRoom, onJoinRoomInput: props.onJoinRoomInput, onRelayConnect: props.onRelayConnect, onRelayDisconnect: props.onRelayDisconnect }), _jsx(ChatArea, { messages: props.messages, currentRoom: props.currentRoom, dmTarget: props.dmTarget, onSendAction: props.onSendAction, onLeaveRoom: props.onLeaveRoom })] }));
6
6
  }
7
7
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/App.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAqBvC,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,OAAO,CACL,8BACE,KAAC,OAAO,IACN,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,eAAe,EAAE,KAAK,CAAC,eAAe,GACtC,EACF,KAAC,QAAQ,IACP,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,WAAW,EAAE,KAAK,CAAC,WAAW,GAC9B,IACD,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/App.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAyBvC,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,OAAO,CACL,8BACE,KAAC,OAAO,IACN,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,GAC1C,EACF,KAAC,QAAQ,IACP,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,WAAW,EAAE,KAAK,CAAC,WAAW,GAC9B,IACD,CACJ,CAAC;AACJ,CAAC"}
@@ -20,12 +20,15 @@ function TreeNodeView({ node, onJoinRoom, onSelectAgent, onRenameAgent, currentR
20
20
  }
21
21
  function DirectoryView({ node, onJoinRoom, onSelectAgent, onRenameAgent, currentRoom, }) {
22
22
  const [expanded, setExpanded] = useState(true);
23
- return (_jsxs("div", { class: "tree-directory", children: [_jsxs("div", { class: "tree-directory-name", children: [_jsxs("span", { class: "tree-folder-toggle", onClick: () => {
23
+ const hasRoom = node.roomId !== undefined;
24
+ const isCurrentRoom = currentRoom === node.roomId;
25
+ return (_jsxs("div", { class: "tree-directory", children: [_jsxs("div", { class: "tree-directory-name", children: [_jsx("span", { class: "tree-folder-toggle", title: "Expand/collapse", onClick: (e) => {
26
+ e.stopPropagation();
24
27
  setExpanded(!expanded);
25
- }, children: [_jsx("span", { class: "tree-folder-icon", children: expanded ? "📂" : "📁" }), _jsx("span", { children: node.name })] }), node.roomId && (_jsx("span", { class: `tree-room-join${currentRoom === node.roomId ? " active" : ""}`, onClick: () => {
28
+ }, children: _jsx("span", { class: "tree-folder-icon", children: expanded ? "📂" : "📁" }) }), _jsx("span", { class: `tree-directory-label${isCurrentRoom ? " active" : ""}${hasRoom ? " clickable" : ""}`, onClick: () => {
26
29
  if (node.roomId)
27
30
  onJoinRoom(node.roomId);
28
- }, children: "\uD83D\uDCAC" }))] }), expanded && (_jsx("div", { class: "tree-children", children: node.children.map((child) => (_jsx(TreeNodeView, { node: child, onJoinRoom: onJoinRoom, onSelectAgent: onSelectAgent, onRenameAgent: onRenameAgent, currentRoom: currentRoom }, child.type === "agent" ? child.agentId : child.path))) }))] }));
31
+ }, children: node.name })] }), expanded && (_jsx("div", { class: "tree-children", children: node.children.map((child) => (_jsx(TreeNodeView, { node: child, onJoinRoom: onJoinRoom, onSelectAgent: onSelectAgent, onRenameAgent: onRenameAgent, currentRoom: currentRoom }, child.type === "agent" ? child.agentId : child.path))) }))] }));
29
32
  }
30
33
  function AgentView({ node, onSelectAgent, onRenameAgent }) {
31
34
  const [editing, setEditing] = useState(false);
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTree.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/ProjectTree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectTree.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/ProjectTree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * RelayPanel — UI for configuring the PWA mesh relay.
3
+ *
4
+ * Provides input fields for two mesh WebSocket URLs, connect/disconnect
5
+ * controls, and a live status display showing connection state and
6
+ * forwarding statistics.
7
+ */
8
+ import type { RelayStatus } from "../relay-client.js";
9
+ export interface RelayPanelProps {
10
+ status: RelayStatus;
11
+ onConnect: (urlA: string, urlB: string) => void;
12
+ onDisconnect: () => void;
13
+ }
14
+ export declare function RelayPanel({ status, onConnect, onDisconnect, }: RelayPanelProps): import("preact").JSX.Element;
15
+ //# sourceMappingURL=RelayPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelayPanel.d.ts","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/RelayPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAS,EACT,YAAY,GACb,EAAE,eAAe,gCAiJjB"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
2
+ /**
3
+ * RelayPanel — UI for configuring the PWA mesh relay.
4
+ *
5
+ * Provides input fields for two mesh WebSocket URLs, connect/disconnect
6
+ * controls, and a live status display showing connection state and
7
+ * forwarding statistics.
8
+ */
9
+ import { useState, useEffect } from "preact/hooks";
10
+ export function RelayPanel({ status, onConnect, onDisconnect, }) {
11
+ const [urlA, setUrlA] = useState(status.urlA ?? "ws://localhost:8080/ws/mesh");
12
+ const [urlB, setUrlB] = useState(status.urlB ?? "ws://localhost:8081/ws/mesh");
13
+ const [expanded, setExpanded] = useState(false);
14
+ const bothConnected = status.connectedA && status.connectedB;
15
+ const eitherConnected = status.connectedA || status.connectedB;
16
+ // Sync URL fields when the relay reports new URLs (e.g. after reconnect)
17
+ useEffect(() => {
18
+ if (status.urlA)
19
+ setUrlA(status.urlA);
20
+ if (status.urlB)
21
+ setUrlB(status.urlB);
22
+ }, [status.urlA, status.urlB]);
23
+ if (!expanded) {
24
+ return (_jsx("div", { class: "relay-panel relay-collapsed", children: _jsxs("button", { class: "relay-toggle-btn", onClick: () => {
25
+ setExpanded(true);
26
+ }, children: ["\u293A Relay", bothConnected && (_jsx("span", { class: "relay-badge relay-badge-green", children: "\u25CF" })), eitherConnected && !bothConnected && (_jsx("span", { class: "relay-badge relay-badge-yellow", children: "\u25CF" })), status.forwardedCount > 0 && (_jsx("span", { class: "relay-count", children: status.forwardedCount }))] }) }));
27
+ }
28
+ const handleConnect = (e) => {
29
+ e.preventDefault();
30
+ if (urlA.trim() && urlB.trim()) {
31
+ onConnect(urlA.trim(), urlB.trim());
32
+ }
33
+ };
34
+ return (_jsxs("div", { class: "relay-panel", children: [_jsxs("div", { class: "relay-header", children: [_jsx("span", { class: "relay-title", children: "Mesh Relay" }), _jsx("button", { class: "relay-collapse-btn", onClick: () => {
35
+ setExpanded(false);
36
+ }, title: "Collapse relay panel", children: "\u2715" })] }), _jsxs("form", { class: "relay-form", onSubmit: handleConnect, children: [_jsxs("label", { class: "relay-label", children: ["Mesh A", _jsx("input", { type: "url", class: "relay-input", placeholder: "ws://machine-a:8080/ws/mesh", value: urlA, onInput: (e) => {
37
+ const target = e.target;
38
+ if (target instanceof HTMLInputElement)
39
+ setUrlA(target.value);
40
+ }, disabled: eitherConnected }), _jsx("span", { class: `relay-status-dot ${status.connectedA ? "active" : ""}` })] }), _jsxs("label", { class: "relay-label", children: ["Mesh B", _jsx("input", { type: "url", class: "relay-input", placeholder: "ws://machine-b:8080/ws/mesh", value: urlB, onInput: (e) => {
41
+ const target = e.target;
42
+ if (target instanceof HTMLInputElement)
43
+ setUrlB(target.value);
44
+ }, disabled: eitherConnected }), _jsx("span", { class: `relay-status-dot ${status.connectedB ? "active" : ""}` })] }), _jsx("div", { class: "relay-actions", children: !eitherConnected ? (_jsx("button", { type: "submit", class: "relay-connect-btn", disabled: !urlA.trim() || !urlB.trim(), children: "Connect" })) : (_jsx("button", { type: "button", class: "relay-disconnect-btn", onClick: onDisconnect, children: "Disconnect" })) })] }), eitherConnected && (_jsxs("div", { class: "relay-stats", children: [_jsxs("span", { class: "relay-stat", children: ["Forwarded: ", status.forwardedCount] }), _jsxs("span", { class: "relay-stat", children: ["A: ", status.connectedA ? "connected" : "disconnected"] }), _jsxs("span", { class: "relay-stat", children: ["B: ", status.connectedB ? "connected" : "disconnected"] })] })), status.errors.length > 0 && (_jsx("div", { class: "relay-errors", children: status.errors.slice(-3).map((err, i) => (_jsx("div", { class: "relay-error", children: err }, i))) }))] }));
45
+ }
46
+ //# sourceMappingURL=RelayPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelayPanel.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/RelayPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,21 @@
1
1
  /**
2
- * Sidebar — rooms list, agents list, create/join room controls.
2
+ * Sidebar — project tree, manual rooms, create/join room controls.
3
3
  */
4
4
  import type { Agent, Room } from "../types.js";
5
+ import type { RelayStatus } from "../relay-client.js";
5
6
  interface SidebarProps {
6
7
  rooms: Room[];
7
8
  agents: Agent[];
8
9
  currentRoom: string | undefined;
10
+ relayStatus: RelayStatus;
9
11
  onJoinRoom: (roomId: string) => void;
10
12
  onSelectAgent: (agentId: string) => void;
13
+ onRenameAgent: (agentId: string, newName: string) => void;
11
14
  onCreateRoom: (name: string, type: "public" | "private" | "secret", description: string) => void;
12
15
  onJoinRoomInput: (roomName: string) => void;
16
+ onRelayConnect: (urlA: string, urlB: string) => void;
17
+ onRelayDisconnect: () => void;
13
18
  }
14
- export declare function Sidebar({ rooms, agents, currentRoom, onJoinRoom, onSelectAgent, onCreateRoom, onJoinRoomInput, }: SidebarProps): import("preact").JSX.Element;
19
+ export declare function Sidebar({ rooms, agents, currentRoom, relayStatus, onJoinRoom, onSelectAgent, onRenameAgent, onCreateRoom, onJoinRoomInput, onRelayConnect, onRelayDisconnect, }: SidebarProps): import("preact").JSX.Element;
15
20
  export {};
16
21
  //# sourceMappingURL=Sidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/Sidebar.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAI/C,UAAU,YAAY;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,EACrC,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,EAAE,YAAY,gCAoFd"}
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/Sidebar.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,UAAU,YAAY;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,EACrC,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,EAAE,YAAY,gCAkFd"}
@@ -1,31 +1,37 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
2
2
  /**
3
- * Sidebar — rooms list, agents list, create/join room controls.
3
+ * Sidebar — project tree, manual rooms, create/join room controls.
4
4
  */
5
5
  import { useState } from "preact/hooks";
6
+ import { buildProjectTree } from "../project-tree.js";
6
7
  import { CreateRoomForm } from "./CreateRoomForm.js";
7
8
  import { JoinForm } from "./JoinForm.js";
8
- export function Sidebar({ rooms, agents, currentRoom, onJoinRoom, onSelectAgent, onCreateRoom, onJoinRoomInput, }) {
9
+ import { ProjectTree } from "./ProjectTree.js";
10
+ import { RelayPanel } from "./RelayPanel.js";
11
+ export function Sidebar({ rooms, agents, currentRoom, relayStatus, onJoinRoom, onSelectAgent, onRenameAgent, onCreateRoom, onJoinRoomInput, onRelayConnect, onRelayDisconnect, }) {
9
12
  const [createFormVisible, setCreateFormVisible] = useState(false);
10
13
  const [joinFormVisible, setJoinFormVisible] = useState(false);
11
- return (_jsxs("div", { id: "sidebar", children: [_jsx("h2", { children: "Agent Comms" }), _jsxs("div", { class: "sidebar-section", children: [_jsxs("div", { class: "section-heading", children: [_jsx("h3", { children: "Rooms" }), _jsx("button", { id: "create-room-toggle", class: "icon-btn", title: "Create room", onClick: () => {
14
+ const [showOffline, setShowOffline] = useState(false);
15
+ const visibleAgents = showOffline
16
+ ? agents
17
+ : agents.filter((a) => a.status !== "offline");
18
+ const tree = buildProjectTree(visibleAgents, rooms);
19
+ return (_jsxs("div", { id: "sidebar", children: [_jsxs("h2", { children: ["Agent Comms", _jsx("button", { id: "toggle-offline-btn", class: `icon-btn${showOffline ? " active" : ""}`, title: `${showOffline ? "Hide" : "Show"} offline agents`, onClick: () => {
20
+ setShowOffline((v) => !v);
21
+ }, children: showOffline ? "◉" : "◎" })] }), _jsxs("div", { class: "sidebar-section", children: [_jsx(ProjectTree, { tree: tree, onJoinRoom: onJoinRoom, onSelectAgent: onSelectAgent, onRenameAgent: onRenameAgent, currentRoom: currentRoom }), _jsxs("div", { class: "section-heading", children: [_jsx("h3", { children: "Create" }), _jsx("button", { id: "create-room-toggle", class: "icon-btn", title: "Create room", onClick: () => {
12
22
  setCreateFormVisible((v) => !v);
13
23
  }, children: "+" })] }), _jsx(CreateRoomForm, { visible: createFormVisible, onSubmit: (name, type, desc) => {
14
24
  onCreateRoom(name, type, desc);
15
25
  setCreateFormVisible(false);
16
26
  }, onCancel: () => {
17
27
  setCreateFormVisible(false);
18
- } }), _jsx("div", { id: "room-list", children: rooms.map((room) => (_jsxs("div", { class: `room-item${currentRoom === room.id ? " active" : ""}`, onClick: () => {
19
- onJoinRoom(room.id);
20
- }, children: [room.type.charAt(0).toUpperCase(), " ", room.name, " ", _jsxs("span", { style: "color:var(--dim)", children: ["(", String(room.members.length), ")"] })] }, room.id))) }), _jsx("button", { id: "join-toggle-btn", class: "join-toggle-btn", onClick: () => {
28
+ } }), _jsx("button", { id: "join-toggle-btn", class: "join-toggle-btn", onClick: () => {
21
29
  setJoinFormVisible((v) => !v);
22
30
  }, children: "+ Join Room" }), _jsx(JoinForm, { visible: joinFormVisible, onSubmit: (name) => {
23
31
  onJoinRoomInput(name);
24
32
  setJoinFormVisible(false);
25
33
  }, onCancel: () => {
26
34
  setJoinFormVisible(false);
27
- } }), _jsx("h3", { children: "Agents" }), _jsx("div", { id: "agent-list", children: agents.map((agent) => (_jsxs("div", { class: "agent-item", onClick: () => {
28
- onSelectAgent(agent.id);
29
- }, children: [_jsx("span", { class: `status-dot ${agent.status}` }), ` ${agent.name}`] }, agent.id))) })] })] }));
35
+ } }), _jsx(RelayPanel, { status: relayStatus, onConnect: onRelayConnect, onDisconnect: onRelayDisconnect })] })] }));
30
36
  }
31
37
  //# sourceMappingURL=Sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/Sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../../../src/bridges/user/web/frontend/components/Sidebar.tsx"],"names":[],"mappings":"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"}
@@ -154,7 +154,7 @@ function parseCommand(text, currentRoom) {
154
154
  kind: "local",
155
155
  result: {
156
156
  type: "help",
157
- text: "Commands: /join, /leave, /rooms, /agents, /dm, /create, /destroy, /help",
157
+ text: "Commands: /join, /leave, /rooms, /agents, /dm, /create, /destroy, /rename, /help",
158
158
  },
159
159
  };
160
160
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/input.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,12 @@ import "./styles.css";
10
10
  import { App } from "./components/App.js";
11
11
  import { CommsWs, fetchAgents, fetchRoomMessages, fetchRooms } from "./api.js";
12
12
  import { requireElement } from "./dom.js";
13
- import { parseInput } from "./input.js";
13
+ import { parseInput, routeAction } from "./input.js";
14
14
  import { State } from "./state.js";
15
+ import { MeshClient } from "./mesh-client.js";
16
+ import { RelayClient } from "./relay-client.js";
15
17
  import { deliveryEventToMessage, roomMessageToDisplay } from "./messages.js";
18
+ import { parseDeepLink, resolveDeepLink, syncUrl } from "./url-sync.js";
16
19
  // ---------------------------------------------------------------------------
17
20
  // Mount point
18
21
  // ---------------------------------------------------------------------------
@@ -22,6 +25,32 @@ const rootEl = requireElement(document, "#root");
22
25
  // ---------------------------------------------------------------------------
23
26
  const state = new State();
24
27
  // ---------------------------------------------------------------------------
28
+ // Mesh client — real-time state via SharedWorker
29
+ // ---------------------------------------------------------------------------
30
+ const meshClient = new MeshClient();
31
+ meshClient.subscribe((meshState) => {
32
+ // Apply real-time mesh state updates on top of the REST-fetched baseline.
33
+ // The MeshClient delivers authoritative state from the mesh worker,
34
+ // which maintains a local copy of all agents and rooms.
35
+ if (meshState.agents.length > 0) {
36
+ state.setAgents(meshState.agents);
37
+ }
38
+ if (meshState.rooms.length > 0) {
39
+ state.setRooms(meshState.rooms);
40
+ }
41
+ state.setConnected(meshState.connected);
42
+ });
43
+ meshClient.connect();
44
+ // ---------------------------------------------------------------------------
45
+ // Relay client — P2P mesh relay
46
+ // ---------------------------------------------------------------------------
47
+ const relayClient = new RelayClient();
48
+ let relayStatus = relayClient.get();
49
+ relayClient.connect();
50
+ relayClient.subscribe((status) => {
51
+ relayStatus = status;
52
+ });
53
+ // ---------------------------------------------------------------------------
25
54
  // Helpers
26
55
  // ---------------------------------------------------------------------------
27
56
  function addMessage(msg) {
@@ -51,7 +80,8 @@ function handleFrame(frame) {
51
80
  addMessage(msg);
52
81
  if (frame.event.type === "member_joined" ||
53
82
  frame.event.type === "member_left" ||
54
- frame.event.type === "member_status") {
83
+ frame.event.type === "member_status" ||
84
+ frame.event.type === "name_changed") {
55
85
  void refreshState();
56
86
  }
57
87
  break;
@@ -115,6 +145,18 @@ function onLeaveRoom() {
115
145
  function handleSendAction(text) {
116
146
  const s = state.get();
117
147
  const result = parseInput(text, s.currentRoom, s.dmTarget);
148
+ // Check if this action needs local client-side handling
149
+ const localRoute = routeAction(result);
150
+ if (localRoute) {
151
+ switch (localRoute.kind) {
152
+ case "join_room":
153
+ void onJoinRoom(localRoute.room);
154
+ return;
155
+ case "leave_room":
156
+ onLeaveRoom();
157
+ return;
158
+ }
159
+ }
118
160
  switch (result.kind) {
119
161
  case "action":
120
162
  sendAction(result.action);
@@ -138,19 +180,45 @@ function onCreateRoom(name, type, description) {
138
180
  function onJoinRoomInput(roomName) {
139
181
  void onJoinRoom(roomName);
140
182
  }
183
+ function onRenameAgent(agentId, newName) {
184
+ sendAction({ action: "rename_agent", agent: agentId, name: newName });
185
+ }
141
186
  // ---------------------------------------------------------------------------
142
187
  // Render loop
143
188
  // ---------------------------------------------------------------------------
144
189
  function rerender() {
145
190
  const s = state.get();
146
- render(_jsx(App, { rooms: s.rooms, agents: s.agents, currentRoom: s.currentRoom, dmTarget: s.dmTarget, messages: s.messages, connected: s.connected, onJoinRoom: (roomId) => {
191
+ // Keep the URL in sync with the current view
192
+ syncUrl({ currentRoom: s.currentRoom, dmTarget: s.dmTarget });
193
+ render(_jsx(App, { rooms: s.rooms, agents: s.agents, currentRoom: s.currentRoom, dmTarget: s.dmTarget, messages: s.messages, connected: s.connected, relayStatus: relayStatus, onJoinRoom: (roomId) => {
147
194
  void onJoinRoom(roomId);
148
- }, onSelectAgent: onSelectAgent, onLeaveRoom: onLeaveRoom, onSendAction: handleSendAction, onCreateRoom: onCreateRoom, onJoinRoomInput: onJoinRoomInput }), rootEl);
195
+ }, onSelectAgent: onSelectAgent, onRenameAgent: onRenameAgent, onLeaveRoom: onLeaveRoom, onSendAction: handleSendAction, onCreateRoom: onCreateRoom, onJoinRoomInput: onJoinRoomInput, onRelayConnect: (urlA, urlB) => {
196
+ relayClient.connectRelay(urlA, urlB);
197
+ }, onRelayDisconnect: () => {
198
+ relayClient.disconnect();
199
+ } }), rootEl);
149
200
  }
150
201
  state.subscribe(rerender);
151
202
  // ---------------------------------------------------------------------------
152
203
  // Boot
153
204
  // ---------------------------------------------------------------------------
205
+ const deepLink = parseDeepLink(location.search);
154
206
  ws.connect();
155
- void refreshState();
207
+ // Initial state fetch, then resolve any deep link from the URL
208
+ void refreshState().then(() => {
209
+ if (!deepLink)
210
+ return;
211
+ const s = state.get();
212
+ const resolved = resolveDeepLink(deepLink, s.rooms);
213
+ if (!resolved)
214
+ return;
215
+ switch (resolved.kind) {
216
+ case "room":
217
+ void onJoinRoom(resolved.targetId);
218
+ break;
219
+ case "dm":
220
+ onSelectAgent(resolved.targetId);
221
+ break;
222
+ }
223
+ });
156
224
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/main.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE7E,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEjD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAE1B,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,UAAU,CAAC,GAAmB;IACrC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,IAAI,aAAiC,CAAC;AAEtC,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC;IACrB,MAAM,EAAE,GAAG,EAAE;QACX,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,GAAG,EAAE;QACZ,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,WAAW;CACrB,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAEtB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,GAAG;gBAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YAEzB,IACE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe;gBACpC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;gBAClC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,EACpC,CAAC;gBACD,KAAK,YAAY,EAAE,CAAC;YACtB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,QAAQ;YACX,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,aAAa,EAAE,MAAM,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;oBACtE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;oBAClC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAC7B,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBACD,KAAK,YAAY,EAAE,CAAC;YACtB,CAAC;YACD,aAAa,GAAG,SAAS,CAAC;YAC1B,MAAM;QAER,KAAK,OAAO;YACV,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChE,MAAM;QAER,KAAK,OAAO;YACV,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM;IACV,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,UAAU,CAAC,MAAc;IAChC,aAAa,GAAG,MAAM,CAAC;IACvB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc;IACtC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7B,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,aAAa,EAAE,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAElD,eAAe;IACf,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjD,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3B,KAAK,CAAC,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;IAC5C,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAChC,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,WAAW,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE3D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,OAAO;YACV,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM;QACR,KAAK,SAAS;YACZ,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,IAAqC,EACrC,WAAmB;IAEnB,MAAM,MAAM,GAAW;QACrB,MAAM,EAAE,aAAa;QACrB,IAAI;QACJ,IAAI;QACJ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;IACF,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,SAAS,QAAQ;IACf,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,CACJ,KAAC,GAAG,IACF,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,WAAW,EAAE,CAAC,CAAC,WAAW,EAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,SAAS,EAAE,CAAC,CAAC,SAAS,EACtB,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YACrB,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,EACD,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,GAChC,EACF,MAAM,CACP,CAAC;AACJ,CAAC;AAED,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1B,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,EAAE,CAAC,OAAO,EAAE,CAAC;AACb,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/main.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * MeshClient — main-thread API for the mesh SharedWorker.
3
+ *
4
+ * Creates a SharedWorker from the built mesh-worker.js bundle and
5
+ * provides a typed interface for the React frontend to:
6
+ *
7
+ * - Query current mesh state (agents, rooms)
8
+ * - Execute actions (send, join, create room, etc.)
9
+ * - Subscribe to real-time state changes (patches)
10
+ *
11
+ * The SharedWorker maintains a single WebSocket connection to the
12
+ * server's /ws/mesh endpoint shared across all tabs.
13
+ */
14
+ import type { Agent, Room } from "./types.js";
15
+ type AgentIdentity = Agent;
16
+ type RoomLike = Room;
17
+ export type MeshStateListener = (state: MeshClientState) => void;
18
+ export interface MeshClientState {
19
+ agents: AgentIdentity[];
20
+ rooms: RoomLike[];
21
+ connected: boolean;
22
+ }
23
+ export declare class MeshClient {
24
+ private worker;
25
+ private state;
26
+ private readonly listeners;
27
+ private actionCounter;
28
+ private readonly pendingActions;
29
+ /** Connect to the mesh SharedWorker. Idempotent. */
30
+ connect(): void;
31
+ /** Get the current mesh state (snapshot). */
32
+ get(): Readonly<MeshClientState>;
33
+ /** Subscribe to state changes. Returns an unsubscribe function. */
34
+ subscribe(listener: MeshStateListener): () => void;
35
+ /** Send an action through the mesh worker. */
36
+ sendAction(action: Record<string, unknown>): void;
37
+ /** Disconnect and clean up. */
38
+ disconnect(): void;
39
+ private postToWorker;
40
+ private notify;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=mesh-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-client.d.ts","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/mesh-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAM9C,KAAK,aAAa,GAAG,KAAK,CAAC;AAC3B,KAAK,QAAQ,GAAG,IAAI,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAM3B;IAEJ,oDAAoD;IACpD,OAAO,IAAI,IAAI;IA0Ef,6CAA6C;IAC7C,GAAG,IAAI,QAAQ,CAAC,eAAe,CAAC;IAIhC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAOlD,8CAA8C;IAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKjD,+BAA+B;IAC/B,UAAU,IAAI,IAAI;IAQlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,MAAM;CAMf"}