@edenapp/sdk 0.1.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 (432) hide show
  1. package/apps/com/eden/editor/dist/assets/css-DQU6DXDx.js +3 -0
  2. package/apps/com/eden/editor/dist/assets/editor-BRA9licV.css +1 -0
  3. package/apps/com/eden/editor/dist/assets/editor.main-DAsyVptA.js +677 -0
  4. package/apps/com/eden/editor/dist/assets/editor.worker-B4pQIWZD.js +12 -0
  5. package/apps/com/eden/editor/dist/assets/html-CTBLac3N.js +1 -0
  6. package/apps/com/eden/editor/dist/assets/index-B7GgDQ9I.css +1 -0
  7. package/apps/com/eden/editor/dist/assets/index-BWJI9cyM.js +2 -0
  8. package/apps/com/eden/editor/dist/assets/ini-BvajGCUy.js +1 -0
  9. package/apps/com/eden/editor/dist/assets/javascript-DJ6Ya8pi.js +1 -0
  10. package/apps/com/eden/editor/dist/assets/jsonMode-BA0kYRDI.js +10 -0
  11. package/apps/com/eden/editor/dist/assets/less-GGFNNJHn.js +2 -0
  12. package/apps/com/eden/editor/dist/assets/markdown-B811l8j2.js +1 -0
  13. package/apps/com/eden/editor/dist/assets/shell-CsDZo4DB.js +1 -0
  14. package/apps/com/eden/editor/dist/assets/typescript-C7BsmV0J.js +1 -0
  15. package/apps/com/eden/editor/dist/assets/yaml-QL02lm_B.js +1 -0
  16. package/apps/com/eden/editor/dist/index.html +13 -0
  17. package/apps/com/eden/editor/icon.svg +22 -0
  18. package/apps/com/eden/editor/index.html +12 -0
  19. package/apps/com/eden/editor/manifest.json +58 -0
  20. package/apps/com/eden/editor/node_modules/.bin/browserslist +21 -0
  21. package/apps/com/eden/editor/node_modules/.bin/tsc +21 -0
  22. package/apps/com/eden/editor/node_modules/.bin/tsserver +21 -0
  23. package/apps/com/eden/editor/node_modules/.bin/vite +21 -0
  24. package/apps/com/eden/editor/package.json +21 -0
  25. package/apps/com/eden/editor/src/App.tsx +212 -0
  26. package/apps/com/eden/editor/src/components/ErrorBanner.tsx +13 -0
  27. package/apps/com/eden/editor/src/components/LazyMonacoEditor.tsx +154 -0
  28. package/apps/com/eden/editor/src/components/TabBar.tsx +36 -0
  29. package/apps/com/eden/editor/src/components/Toolbar.tsx +39 -0
  30. package/apps/com/eden/editor/src/components/WelcomeScreen.tsx +49 -0
  31. package/apps/com/eden/editor/src/components/index.ts +11 -0
  32. package/apps/com/eden/editor/src/index.tsx +10 -0
  33. package/apps/com/eden/editor/src/styles.css +319 -0
  34. package/apps/com/eden/editor/src/types.ts +69 -0
  35. package/apps/com/eden/editor/tsconfig.json +24 -0
  36. package/apps/com/eden/editor/vite.config.mts +67 -0
  37. package/apps/com/eden/eveshell/assets/apps-grid-icon.svg +17 -0
  38. package/apps/com/eden/eveshell/assets/default-icon.svg +17 -0
  39. package/apps/com/eden/eveshell/dist/assets/index-BS2yCXxK.css +1 -0
  40. package/apps/com/eden/eveshell/dist/assets/index-De0NEh_d.js +1 -0
  41. package/apps/com/eden/eveshell/dist/index.html +13 -0
  42. package/apps/com/eden/eveshell/index.html +12 -0
  43. package/apps/com/eden/eveshell/manifest.json +28 -0
  44. package/apps/com/eden/eveshell/node_modules/.bin/tsc +21 -0
  45. package/apps/com/eden/eveshell/node_modules/.bin/tsserver +21 -0
  46. package/apps/com/eden/eveshell/node_modules/.bin/vite +21 -0
  47. package/apps/com/eden/eveshell/package.json +20 -0
  48. package/apps/com/eden/eveshell/src/components/AllApps.tsx +228 -0
  49. package/apps/com/eden/eveshell/src/components/AppContextMenu.tsx +125 -0
  50. package/apps/com/eden/eveshell/src/components/AppIcon.tsx +40 -0
  51. package/apps/com/eden/eveshell/src/components/Clock.tsx +35 -0
  52. package/apps/com/eden/eveshell/src/components/Dock.tsx +147 -0
  53. package/apps/com/eden/eveshell/src/components/ShellOverlay.tsx +343 -0
  54. package/apps/com/eden/eveshell/src/icon-cache.ts +38 -0
  55. package/apps/com/eden/eveshell/src/index.tsx +11 -0
  56. package/apps/com/eden/eveshell/src/styles.css +409 -0
  57. package/apps/com/eden/eveshell/src/types.ts +5 -0
  58. package/apps/com/eden/eveshell/tsconfig.json +37 -0
  59. package/apps/com/eden/eveshell/vite.config.mts +23 -0
  60. package/apps/com/eden/example/appbus/client-a/app.js +239 -0
  61. package/apps/com/eden/example/appbus/client-a/index.html +48 -0
  62. package/apps/com/eden/example/appbus/client-a/manifest.json +27 -0
  63. package/apps/com/eden/example/appbus/client-a/styles.css +52 -0
  64. package/apps/com/eden/example/appbus/client-b/app.js +130 -0
  65. package/apps/com/eden/example/appbus/client-b/index.html +35 -0
  66. package/apps/com/eden/example/appbus/client-b/manifest.json +27 -0
  67. package/apps/com/eden/example/appbus/client-b/styles.css +48 -0
  68. package/apps/com/eden/example/appbus/hub/README.md +18 -0
  69. package/apps/com/eden/example/appbus/hub/backend.js +121 -0
  70. package/apps/com/eden/example/appbus/hub/manifest.json +17 -0
  71. package/apps/com/eden/example/appbus/isolated/app.js +107 -0
  72. package/apps/com/eden/example/appbus/isolated/index.html +35 -0
  73. package/apps/com/eden/example/appbus/isolated/manifest.json +27 -0
  74. package/apps/com/eden/example/appbus/isolated/styles.css +52 -0
  75. package/apps/com/eden/example/calculator/.dev-manifest.json +5 -0
  76. package/apps/com/eden/example/calculator/app.js +95 -0
  77. package/apps/com/eden/example/calculator/icon.svg +19 -0
  78. package/apps/com/eden/example/calculator/index.html +39 -0
  79. package/apps/com/eden/example/calculator/manifest.json +30 -0
  80. package/apps/com/eden/example/calculator/styles.css +83 -0
  81. package/apps/com/eden/example/hello/README.md +3 -0
  82. package/apps/com/eden/example/hello/backend/dist/backend.js +47 -0
  83. package/apps/com/eden/example/hello/backend/node_modules/.bin/tsc +21 -0
  84. package/apps/com/eden/example/hello/backend/node_modules/.bin/tsserver +21 -0
  85. package/apps/com/eden/example/hello/backend/package.json +13 -0
  86. package/apps/com/eden/example/hello/backend/src/backend.ts +58 -0
  87. package/apps/com/eden/example/hello/backend/tsconfig.json +19 -0
  88. package/apps/com/eden/example/hello/frontend/dist/assets/index-D2WAwW3g.css +1 -0
  89. package/apps/com/eden/example/hello/frontend/dist/assets/index-D4bTq3-Q.js +1 -0
  90. package/apps/com/eden/example/hello/frontend/dist/index.html +59 -0
  91. package/apps/com/eden/example/hello/frontend/index.html +59 -0
  92. package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsc +21 -0
  93. package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsserver +21 -0
  94. package/apps/com/eden/example/hello/frontend/node_modules/.bin/vite +21 -0
  95. package/apps/com/eden/example/hello/frontend/package.json +15 -0
  96. package/apps/com/eden/example/hello/frontend/src/App.ts +191 -0
  97. package/apps/com/eden/example/hello/frontend/styles.css +96 -0
  98. package/apps/com/eden/example/hello/frontend/tsconfig.json +16 -0
  99. package/apps/com/eden/example/hello/frontend/vite.config.mts +21 -0
  100. package/apps/com/eden/example/hello/manifest.json +34 -0
  101. package/apps/com/eden/example/hello/shared/protocol.d.ts +38 -0
  102. package/apps/com/eden/example/showcase/app.js +186 -0
  103. package/apps/com/eden/example/showcase/index.html +637 -0
  104. package/apps/com/eden/example/showcase/manifest.json +24 -0
  105. package/apps/com/eden/example/showcase/styles.css +195 -0
  106. package/apps/com/eden/files/.dev-manifest.json +5 -0
  107. package/apps/com/eden/files/dist/assets/index-BOw4ESi3.js +1 -0
  108. package/apps/com/eden/files/dist/assets/index-BPH5FvSW.css +1 -0
  109. package/apps/com/eden/files/dist/index.html +13 -0
  110. package/apps/com/eden/files/icon.svg +15 -0
  111. package/apps/com/eden/files/index.html +12 -0
  112. package/apps/com/eden/files/manifest.json +28 -0
  113. package/apps/com/eden/files/node_modules/.bin/tsc +21 -0
  114. package/apps/com/eden/files/node_modules/.bin/tsserver +21 -0
  115. package/apps/com/eden/files/node_modules/.bin/vite +21 -0
  116. package/apps/com/eden/files/node_modules/.vite/deps/_metadata.json +46 -0
  117. package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js +1253 -0
  118. package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js.map +7 -0
  119. package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js +1809 -0
  120. package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js.map +7 -0
  121. package/apps/com/eden/files/node_modules/.vite/deps/package.json +3 -0
  122. package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js +112 -0
  123. package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js.map +7 -0
  124. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js +122 -0
  125. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js.map +7 -0
  126. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js +606 -0
  127. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js.map +7 -0
  128. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js +455 -0
  129. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js.map +7 -0
  130. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js +147 -0
  131. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js.map +7 -0
  132. package/apps/com/eden/files/package-lock.json +1754 -0
  133. package/apps/com/eden/files/package.json +20 -0
  134. package/apps/com/eden/files/src/App.tsx +387 -0
  135. package/apps/com/eden/files/src/components/FileExplorerHeader.tsx +90 -0
  136. package/apps/com/eden/files/src/components/FileItem.tsx +70 -0
  137. package/apps/com/eden/files/src/components/FileList.tsx +77 -0
  138. package/apps/com/eden/files/src/components/Modal.tsx +48 -0
  139. package/apps/com/eden/files/src/components/Omnibox.tsx +241 -0
  140. package/apps/com/eden/files/src/dialogs/CreateFileDialog.tsx +71 -0
  141. package/apps/com/eden/files/src/dialogs/CreateFolderDialog.tsx +68 -0
  142. package/apps/com/eden/files/src/dialogs/DeleteConfirmDialog.tsx +35 -0
  143. package/apps/com/eden/files/src/dialogs/DisplayOptionsModal.tsx +122 -0
  144. package/apps/com/eden/files/src/dialogs/ErrorDialog.tsx +28 -0
  145. package/apps/com/eden/files/src/index.tsx +9 -0
  146. package/apps/com/eden/files/src/styles.css +595 -0
  147. package/apps/com/eden/files/src/types.ts +20 -0
  148. package/apps/com/eden/files/src/utils.ts +44 -0
  149. package/apps/com/eden/files/tsconfig.json +27 -0
  150. package/apps/com/eden/files/vite.config.mts +23 -0
  151. package/apps/com/eden/settings/dist/assets/index-CTkJneTg.js +1 -0
  152. package/apps/com/eden/settings/dist/assets/index-GIMJANTM.css +1 -0
  153. package/apps/com/eden/settings/dist/index.html +13 -0
  154. package/apps/com/eden/settings/icon.svg +15 -0
  155. package/apps/com/eden/settings/index.html +12 -0
  156. package/apps/com/eden/settings/manifest.json +28 -0
  157. package/apps/com/eden/settings/node_modules/.bin/tsc +21 -0
  158. package/apps/com/eden/settings/node_modules/.bin/tsserver +21 -0
  159. package/apps/com/eden/settings/node_modules/.bin/vite +21 -0
  160. package/apps/com/eden/settings/package.json +21 -0
  161. package/apps/com/eden/settings/src/App.css +168 -0
  162. package/apps/com/eden/settings/src/App.tsx +301 -0
  163. package/apps/com/eden/settings/src/components/SettingInput.tsx +131 -0
  164. package/apps/com/eden/settings/src/index.tsx +9 -0
  165. package/apps/com/eden/settings/tsconfig.json +21 -0
  166. package/apps/com/eden/settings/vite.config.mts +22 -0
  167. package/apps/com/eden/toaster/README.md +89 -0
  168. package/apps/com/eden/toaster/dist/assets/index-8JMcmBCJ.css +1 -0
  169. package/apps/com/eden/toaster/dist/assets/index-C4cVyh7j.js +16 -0
  170. package/apps/com/eden/toaster/dist/index.html +16 -0
  171. package/apps/com/eden/toaster/index.html +16 -0
  172. package/apps/com/eden/toaster/manifest.json +28 -0
  173. package/apps/com/eden/toaster/node_modules/.bin/vite +21 -0
  174. package/apps/com/eden/toaster/package.json +15 -0
  175. package/apps/com/eden/toaster/src/styles.css +159 -0
  176. package/apps/com/eden/toaster/src/toaster.ts +470 -0
  177. package/apps/com/eden/toaster/tsconfig.json +28 -0
  178. package/apps/com/eden/toaster/vite.config.mts +18 -0
  179. package/apps/com/eden/webbrowser/.dev-manifest.json +5 -0
  180. package/apps/com/eden/webbrowser/icon.svg +20 -0
  181. package/apps/com/eden/webbrowser/index.html +141 -0
  182. package/apps/com/eden/webbrowser/manifest.json +23 -0
  183. package/apps/com/eden/webbrowser/node_modules/.bin/vite +21 -0
  184. package/apps/com/eden/webbrowser/node_modules/.vite/deps/_metadata.json +8 -0
  185. package/apps/com/eden/webbrowser/node_modules/.vite/deps/package.json +3 -0
  186. package/apps/com/eden/webbrowser/package.json +13 -0
  187. package/apps/com/eden/webbrowser/vite.config.mts +11 -0
  188. package/dist/Eden.d.ts +40 -0
  189. package/dist/Eden.d.ts.map +1 -0
  190. package/dist/Eden.js +186 -0
  191. package/dist/Eden.js.map +1 -0
  192. package/dist/SystemHandler.d.ts +11 -0
  193. package/dist/SystemHandler.d.ts.map +1 -0
  194. package/dist/SystemHandler.js +53 -0
  195. package/dist/SystemHandler.js.map +1 -0
  196. package/dist/app-frame/frame-injector.js +19 -0
  197. package/dist/app-frame/frame-injector.js.map +7 -0
  198. package/dist/app-frame/frame.css +186 -0
  199. package/dist/app-runtime/app-preload.js +2 -0
  200. package/dist/app-runtime/app-preload.js.map +7 -0
  201. package/dist/app-runtime/backend-preload.js +2 -0
  202. package/dist/app-runtime/backend-preload.js.map +7 -0
  203. package/dist/appbus/AppChannelHandler.d.ts +65 -0
  204. package/dist/appbus/AppChannelHandler.d.ts.map +1 -0
  205. package/dist/appbus/AppChannelHandler.js +120 -0
  206. package/dist/appbus/AppChannelHandler.js.map +1 -0
  207. package/dist/appbus/AppChannelManager.d.ts +80 -0
  208. package/dist/appbus/AppChannelManager.d.ts.map +1 -0
  209. package/dist/appbus/AppChannelManager.js +312 -0
  210. package/dist/appbus/AppChannelManager.js.map +1 -0
  211. package/dist/appbus/index.d.ts +2 -0
  212. package/dist/appbus/index.d.ts.map +1 -0
  213. package/dist/appbus/index.js +18 -0
  214. package/dist/appbus/index.js.map +1 -0
  215. package/dist/db/DbHandler.d.ts +119 -0
  216. package/dist/db/DbHandler.d.ts.map +1 -0
  217. package/dist/db/DbHandler.js +204 -0
  218. package/dist/db/DbHandler.js.map +1 -0
  219. package/dist/db/DbManager.d.ts +49 -0
  220. package/dist/db/DbManager.d.ts.map +1 -0
  221. package/dist/db/DbManager.js +172 -0
  222. package/dist/db/DbManager.js.map +1 -0
  223. package/dist/db/index.d.ts +3 -0
  224. package/dist/db/index.d.ts.map +1 -0
  225. package/dist/db/index.js +8 -0
  226. package/dist/db/index.js.map +1 -0
  227. package/dist/edencss/eden-tokens.css +1 -0
  228. package/dist/edencss/eden.css +1 -0
  229. package/dist/file-open/FileOpenHandler.d.ts +59 -0
  230. package/dist/file-open/FileOpenHandler.d.ts.map +1 -0
  231. package/dist/file-open/FileOpenHandler.js +122 -0
  232. package/dist/file-open/FileOpenHandler.js.map +1 -0
  233. package/dist/file-open/FileOpenManager.d.ts +91 -0
  234. package/dist/file-open/FileOpenManager.d.ts.map +1 -0
  235. package/dist/file-open/FileOpenManager.js +411 -0
  236. package/dist/file-open/FileOpenManager.js.map +1 -0
  237. package/dist/file-open/index.d.ts +3 -0
  238. package/dist/file-open/index.d.ts.map +1 -0
  239. package/dist/file-open/index.js +8 -0
  240. package/dist/file-open/index.js.map +1 -0
  241. package/dist/filesystem/FilesystemHandler.d.ts +65 -0
  242. package/dist/filesystem/FilesystemHandler.d.ts.map +1 -0
  243. package/dist/filesystem/FilesystemHandler.js +134 -0
  244. package/dist/filesystem/FilesystemHandler.js.map +1 -0
  245. package/dist/filesystem/FilesystemManager.d.ts +70 -0
  246. package/dist/filesystem/FilesystemManager.d.ts.map +1 -0
  247. package/dist/filesystem/FilesystemManager.js +236 -0
  248. package/dist/filesystem/FilesystemManager.js.map +1 -0
  249. package/dist/filesystem/index.d.ts +3 -0
  250. package/dist/filesystem/index.d.ts.map +1 -0
  251. package/dist/filesystem/index.js +8 -0
  252. package/dist/filesystem/index.js.map +1 -0
  253. package/dist/foundation/foundation-preload.js +15 -0
  254. package/dist/foundation/foundation.css +40 -0
  255. package/dist/foundation/foundation.html +22 -0
  256. package/dist/foundation/foundation.js +69 -0
  257. package/dist/hotreload-config.d.ts +8 -0
  258. package/dist/hotreload-config.d.ts.map +1 -0
  259. package/dist/hotreload-config.js +73 -0
  260. package/dist/hotreload-config.js.map +1 -0
  261. package/dist/index.d.ts +7 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +20 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/ipc/CommandDecorators.d.ts +72 -0
  266. package/dist/ipc/CommandDecorators.d.ts.map +1 -0
  267. package/dist/ipc/CommandDecorators.js +49 -0
  268. package/dist/ipc/CommandDecorators.js.map +1 -0
  269. package/dist/ipc/CommandRegistry.d.ts +77 -0
  270. package/dist/ipc/CommandRegistry.d.ts.map +1 -0
  271. package/dist/ipc/CommandRegistry.js +175 -0
  272. package/dist/ipc/CommandRegistry.js.map +1 -0
  273. package/dist/ipc/EdenEmitter.d.ts +54 -0
  274. package/dist/ipc/EdenEmitter.d.ts.map +1 -0
  275. package/dist/ipc/EdenEmitter.js +81 -0
  276. package/dist/ipc/EdenEmitter.js.map +1 -0
  277. package/dist/ipc/EventHandler.d.ts +21 -0
  278. package/dist/ipc/EventHandler.d.ts.map +1 -0
  279. package/dist/ipc/EventHandler.js +87 -0
  280. package/dist/ipc/EventHandler.js.map +1 -0
  281. package/dist/ipc/EventSubscriberManager.d.ts +67 -0
  282. package/dist/ipc/EventSubscriberManager.d.ts.map +1 -0
  283. package/dist/ipc/EventSubscriberManager.js +204 -0
  284. package/dist/ipc/EventSubscriberManager.js.map +1 -0
  285. package/dist/ipc/IPCBridge.d.ts +60 -0
  286. package/dist/ipc/IPCBridge.d.ts.map +1 -0
  287. package/dist/ipc/IPCBridge.js +186 -0
  288. package/dist/ipc/IPCBridge.js.map +1 -0
  289. package/dist/ipc/PermissionRegistry.d.ts +52 -0
  290. package/dist/ipc/PermissionRegistry.d.ts.map +1 -0
  291. package/dist/ipc/PermissionRegistry.js +120 -0
  292. package/dist/ipc/PermissionRegistry.js.map +1 -0
  293. package/dist/ipc/index.d.ts +7 -0
  294. package/dist/ipc/index.d.ts.map +1 -0
  295. package/dist/ipc/index.js +23 -0
  296. package/dist/ipc/index.js.map +1 -0
  297. package/dist/main.d.ts +2 -0
  298. package/dist/main.d.ts.map +1 -0
  299. package/dist/main.js +15 -0
  300. package/dist/main.js.map +1 -0
  301. package/dist/notification/NotificationHandler.d.ts +16 -0
  302. package/dist/notification/NotificationHandler.d.ts.map +1 -0
  303. package/dist/notification/NotificationHandler.js +39 -0
  304. package/dist/notification/NotificationHandler.js.map +1 -0
  305. package/dist/notification/NotificationManager.d.ts +32 -0
  306. package/dist/notification/NotificationManager.d.ts.map +1 -0
  307. package/dist/notification/NotificationManager.js +66 -0
  308. package/dist/notification/NotificationManager.js.map +1 -0
  309. package/dist/notification/index.d.ts +3 -0
  310. package/dist/notification/index.d.ts.map +1 -0
  311. package/dist/notification/index.js +19 -0
  312. package/dist/notification/index.js.map +1 -0
  313. package/dist/package-manager/PackageHandler.d.ts +50 -0
  314. package/dist/package-manager/PackageHandler.d.ts.map +1 -0
  315. package/dist/package-manager/PackageHandler.js +107 -0
  316. package/dist/package-manager/PackageHandler.js.map +1 -0
  317. package/dist/package-manager/PackageManager.d.ts +73 -0
  318. package/dist/package-manager/PackageManager.d.ts.map +1 -0
  319. package/dist/package-manager/PackageManager.js +373 -0
  320. package/dist/package-manager/PackageManager.js.map +1 -0
  321. package/dist/package-manager/index.d.ts +3 -0
  322. package/dist/package-manager/index.d.ts.map +1 -0
  323. package/dist/package-manager/index.js +8 -0
  324. package/dist/package-manager/index.js.map +1 -0
  325. package/dist/process-manager/AutostartManager.d.ts +15 -0
  326. package/dist/process-manager/AutostartManager.d.ts.map +1 -0
  327. package/dist/process-manager/AutostartManager.js +56 -0
  328. package/dist/process-manager/AutostartManager.js.map +1 -0
  329. package/dist/process-manager/BackendManager.d.ts +63 -0
  330. package/dist/process-manager/BackendManager.d.ts.map +1 -0
  331. package/dist/process-manager/BackendManager.js +272 -0
  332. package/dist/process-manager/BackendManager.js.map +1 -0
  333. package/dist/process-manager/ProcessHandler.d.ts +29 -0
  334. package/dist/process-manager/ProcessHandler.d.ts.map +1 -0
  335. package/dist/process-manager/ProcessHandler.js +66 -0
  336. package/dist/process-manager/ProcessHandler.js.map +1 -0
  337. package/dist/process-manager/ProcessManager.d.ts +94 -0
  338. package/dist/process-manager/ProcessManager.d.ts.map +1 -0
  339. package/dist/process-manager/ProcessManager.js +286 -0
  340. package/dist/process-manager/ProcessManager.js.map +1 -0
  341. package/dist/process-manager/index.d.ts +5 -0
  342. package/dist/process-manager/index.d.ts.map +1 -0
  343. package/dist/process-manager/index.js +12 -0
  344. package/dist/process-manager/index.js.map +1 -0
  345. package/dist/settings/EdenSettings.d.ts +8 -0
  346. package/dist/settings/EdenSettings.d.ts.map +1 -0
  347. package/dist/settings/EdenSettings.js +148 -0
  348. package/dist/settings/EdenSettings.js.map +1 -0
  349. package/dist/settings/SettingsHandler.d.ts +117 -0
  350. package/dist/settings/SettingsHandler.d.ts.map +1 -0
  351. package/dist/settings/SettingsHandler.js +199 -0
  352. package/dist/settings/SettingsHandler.js.map +1 -0
  353. package/dist/settings/SettingsManager.d.ts +64 -0
  354. package/dist/settings/SettingsManager.d.ts.map +1 -0
  355. package/dist/settings/SettingsManager.js +221 -0
  356. package/dist/settings/SettingsManager.js.map +1 -0
  357. package/dist/settings/index.d.ts +4 -0
  358. package/dist/settings/index.d.ts.map +1 -0
  359. package/dist/settings/index.js +11 -0
  360. package/dist/settings/index.js.map +1 -0
  361. package/dist/utils/cachedFileReader.d.ts +46 -0
  362. package/dist/utils/cachedFileReader.d.ts.map +1 -0
  363. package/dist/utils/cachedFileReader.js +100 -0
  364. package/dist/utils/cachedFileReader.js.map +1 -0
  365. package/dist/view-manager/DevToolsManager.d.ts +29 -0
  366. package/dist/view-manager/DevToolsManager.d.ts.map +1 -0
  367. package/dist/view-manager/DevToolsManager.js +88 -0
  368. package/dist/view-manager/DevToolsManager.js.map +1 -0
  369. package/dist/view-manager/FloatingWindowController.d.ts +44 -0
  370. package/dist/view-manager/FloatingWindowController.d.ts.map +1 -0
  371. package/dist/view-manager/FloatingWindowController.js +124 -0
  372. package/dist/view-manager/FloatingWindowController.js.map +1 -0
  373. package/dist/view-manager/LayoutCalculator.d.ts +49 -0
  374. package/dist/view-manager/LayoutCalculator.d.ts.map +1 -0
  375. package/dist/view-manager/LayoutCalculator.js +94 -0
  376. package/dist/view-manager/LayoutCalculator.js.map +1 -0
  377. package/dist/view-manager/MouseTracker.d.ts +65 -0
  378. package/dist/view-manager/MouseTracker.d.ts.map +1 -0
  379. package/dist/view-manager/MouseTracker.js +114 -0
  380. package/dist/view-manager/MouseTracker.js.map +1 -0
  381. package/dist/view-manager/TilingManager.d.ts +61 -0
  382. package/dist/view-manager/TilingManager.d.ts.map +1 -0
  383. package/dist/view-manager/TilingManager.js +142 -0
  384. package/dist/view-manager/TilingManager.js.map +1 -0
  385. package/dist/view-manager/ViewCreator.d.ts +72 -0
  386. package/dist/view-manager/ViewCreator.d.ts.map +1 -0
  387. package/dist/view-manager/ViewCreator.js +277 -0
  388. package/dist/view-manager/ViewCreator.js.map +1 -0
  389. package/dist/view-manager/ViewHandler.d.ts +112 -0
  390. package/dist/view-manager/ViewHandler.d.ts.map +1 -0
  391. package/dist/view-manager/ViewHandler.js +307 -0
  392. package/dist/view-manager/ViewHandler.js.map +1 -0
  393. package/dist/view-manager/ViewLifecycle.d.ts +66 -0
  394. package/dist/view-manager/ViewLifecycle.d.ts.map +1 -0
  395. package/dist/view-manager/ViewLifecycle.js +142 -0
  396. package/dist/view-manager/ViewLifecycle.js.map +1 -0
  397. package/dist/view-manager/ViewManager.d.ts +112 -0
  398. package/dist/view-manager/ViewManager.d.ts.map +1 -0
  399. package/dist/view-manager/ViewManager.js +422 -0
  400. package/dist/view-manager/ViewManager.js.map +1 -0
  401. package/dist/view-manager/index.d.ts +11 -0
  402. package/dist/view-manager/index.d.ts.map +1 -0
  403. package/dist/view-manager/index.js +23 -0
  404. package/dist/view-manager/index.js.map +1 -0
  405. package/dist/view-manager/types.d.ts +24 -0
  406. package/dist/view-manager/types.d.ts.map +1 -0
  407. package/dist/view-manager/types.js +11 -0
  408. package/dist/view-manager/types.js.map +1 -0
  409. package/edencss/README.md +214 -0
  410. package/edencss/components/badges.css +180 -0
  411. package/edencss/components/buttons.css +221 -0
  412. package/edencss/components/cards.css +201 -0
  413. package/edencss/components/inputs.css +424 -0
  414. package/edencss/components/lists.css +242 -0
  415. package/edencss/components/modals.css +207 -0
  416. package/edencss/components/progress.css +186 -0
  417. package/edencss/components/sidebar.css +232 -0
  418. package/edencss/components/tabs.css +189 -0
  419. package/edencss/eden.css +16 -0
  420. package/edencss/index.ts +11 -0
  421. package/edencss/style-dictionary.config.mjs +75 -0
  422. package/edencss/tokens-pink.json +163 -0
  423. package/edencss/tokens.css +121 -0
  424. package/edencss/tokens.d.ts +111 -0
  425. package/edencss/tokens.json +369 -0
  426. package/edencss/tokens.ts +125 -0
  427. package/edencss/utilities.css +423 -0
  428. package/foundation/foundation-preload.js +15 -0
  429. package/foundation/foundation.css +40 -0
  430. package/foundation/foundation.html +22 -0
  431. package/foundation/foundation.js +69 -0
  432. package/package.json +55 -0
@@ -0,0 +1,48 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>AppBus Client A</title>
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+
11
+ <body class="eden-bg-base">
12
+ <div class="app-container eden-flex-col eden-gap-md eden-p-md">
13
+ <header class="eden-card eden-p-sm eden-flex eden-justify-between eden-items-center">
14
+ <h1 class="eden-text-lg">🔵 Client A</h1>
15
+ <span id="hub-status" class="eden-badge eden-badge-danger">Disconnected</span>
16
+ </header>
17
+
18
+ <!-- Hub Chat Section -->
19
+ <section class="eden-card eden-flex-col eden-gap-sm chat-section">
20
+ <div class="eden-flex eden-items-center eden-gap-sm">
21
+ <h2 class="eden-text-md">Hub Chat</h2>
22
+ <span id="hub-clients-count" class="eden-badge eden-badge-info">0</span>
23
+ </div>
24
+ <div id="hub-chat" class="chat-messages eden-glass-light eden-p-sm"></div>
25
+ <div class="eden-flex eden-gap-sm">
26
+ <input type="text" id="hub-message" class="eden-input" placeholder="Message to Hub chat..." />
27
+ <button id="hub-send-btn" class="eden-btn eden-btn-primary">Send</button>
28
+ </div>
29
+ </section>
30
+
31
+ <!-- Direct Chat Section (with Isolated app) -->
32
+ <section class="eden-card eden-card-elevated eden-flex-col eden-gap-sm chat-section direct-chat">
33
+ <div class="eden-flex eden-items-center eden-gap-sm">
34
+ <h2 class="eden-text-md">Direct Chat</h2>
35
+ <span id="direct-status" class="eden-badge">Waiting</span>
36
+ </div>
37
+ <div id="direct-chat" class="chat-messages eden-glass-light eden-p-sm"></div>
38
+ <div class="eden-flex eden-gap-sm">
39
+ <input type="text" id="direct-message" class="eden-input" placeholder="Message to Isolated app..." />
40
+ <button id="direct-send-btn" class="eden-btn eden-btn-secondary">Send</button>
41
+ </div>
42
+ </section>
43
+ </div>
44
+
45
+ <script src="app.js"></script>
46
+ </body>
47
+
48
+ </html>
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "com.eden.example.appbus.client-a",
3
+ "name": "AppBus Client A",
4
+ "version": "1.0.0",
5
+ "description": "Frontend app that connects to Hub and exposes direct-chat service for Isolated app",
6
+ "author": "Dariusz Majnert",
7
+ "frontend": {
8
+ "entry": "index.html"
9
+ },
10
+ "window": {
11
+ "mode": "floating",
12
+ "defaultSize": {
13
+ "width": 450,
14
+ "height": 600
15
+ },
16
+ "minSize": {
17
+ "width": 350,
18
+ "height": 400
19
+ },
20
+ "resizable": true,
21
+ "movable": true
22
+ },
23
+ "permissions": [
24
+ "appbus/expose",
25
+ "appbus/connect"
26
+ ]
27
+ }
@@ -0,0 +1,52 @@
1
+ /* Client A - Minimal custom styles (edencss provides the rest) */
2
+
3
+ .app-container {
4
+ height: 100vh;
5
+ display: flex;
6
+ flex-direction: column;
7
+ font-family: var(--eden-font-family-base);
8
+ }
9
+
10
+ .chat-section {
11
+ flex: 1;
12
+ min-height: 0;
13
+ display: flex;
14
+ flex-direction: column;
15
+ }
16
+
17
+ .chat-messages {
18
+ flex: 1;
19
+ overflow-y: auto;
20
+ min-height: 100px;
21
+ border-radius: var(--eden-radius-md);
22
+ }
23
+
24
+ .chat-message {
25
+ margin-bottom: var(--eden-space-sm);
26
+ padding: var(--eden-space-xs) var(--eden-space-sm);
27
+ border-radius: var(--eden-radius-sm);
28
+ background: var(--eden-color-bg-surface);
29
+ font-size: var(--eden-font-size-sm);
30
+ }
31
+
32
+ .chat-message.own {
33
+ background: var(--eden-color-accent-primary-muted);
34
+ margin-left: 20%;
35
+ }
36
+
37
+ .chat-message.system {
38
+ background: var(--eden-color-bg-glass-light);
39
+ color: var(--eden-color-text-secondary);
40
+ font-style: italic;
41
+ text-align: center;
42
+ }
43
+
44
+ .chat-message .time {
45
+ font-size: var(--eden-font-size-xs);
46
+ color: var(--eden-color-text-tertiary);
47
+ float: right;
48
+ }
49
+
50
+ .direct-chat {
51
+ border: 1px solid var(--eden-color-accent-warning-muted);
52
+ }
@@ -0,0 +1,130 @@
1
+ // AppBus Client B
2
+ // Connects to Hub for mediated chat only (no direct chat)
3
+
4
+ const CLIENT_ID = 'com.eden.example.appbus.client-b';
5
+ const NICKNAME = 'Client B';
6
+
7
+ class ClientBApp {
8
+ constructor() {
9
+ this.hubConnection = null;
10
+
11
+ // DOM elements
12
+ this.hubStatus = document.getElementById('hub-status');
13
+ this.hubClientsCount = document.getElementById('hub-clients-count');
14
+ this.hubChat = document.getElementById('hub-chat');
15
+ this.hubMessage = document.getElementById('hub-message');
16
+ this.hubSendBtn = document.getElementById('hub-send-btn');
17
+
18
+ this.setupEventListeners();
19
+ this.connectToHub();
20
+ }
21
+
22
+ setupEventListeners() {
23
+ this.hubSendBtn.addEventListener('click', () => this.sendHubMessage());
24
+ this.hubMessage.addEventListener('keypress', (e) => {
25
+ if (e.key === 'Enter') this.sendHubMessage();
26
+ });
27
+ }
28
+
29
+ async connectToHub() {
30
+ this.addMessage('Connecting to Hub...', 'system');
31
+
32
+ try {
33
+ const result = await window.appBus.connect(
34
+ 'com.eden.example.appbus.hub',
35
+ 'chat-relay'
36
+ );
37
+
38
+ if ('error' in result) {
39
+ this.addMessage(`Failed: ${result.error}`, 'system');
40
+ return;
41
+ }
42
+
43
+ this.hubConnection = result;
44
+ this.hubStatus.textContent = 'Connected';
45
+ this.hubStatus.className = 'eden-badge eden-badge-success';
46
+
47
+ // Handle hub disconnect
48
+ this.hubConnection.onClose(() => {
49
+ this.addMessage('Hub connection closed', 'system');
50
+ this.hubStatus.textContent = 'Disconnected';
51
+ this.hubStatus.className = 'eden-badge eden-badge-danger';
52
+ this.hubConnection = null;
53
+ });
54
+
55
+ // Listen for incoming messages
56
+ this.hubConnection.on('chat-message', (data) => {
57
+ const isOwn = data.from === CLIENT_ID;
58
+ this.addMessage(`${data.nickname}: ${data.message}`, isOwn ? 'own' : 'other');
59
+ });
60
+
61
+ this.hubConnection.on('client-joined', (data) => {
62
+ this.addMessage(`${data.nickname} joined the chat`, 'system');
63
+ this.updateClientCount();
64
+ });
65
+
66
+ this.hubConnection.on('client-left', (data) => {
67
+ this.addMessage(`${data.nickname} left the chat`, 'system');
68
+ this.updateClientCount();
69
+ });
70
+
71
+ // Join the chat
72
+ const joinResult = await this.hubConnection.request('join', {
73
+ clientId: CLIENT_ID,
74
+ nickname: NICKNAME
75
+ });
76
+
77
+ if (joinResult.success) {
78
+ this.addMessage('Joined hub chat!', 'system');
79
+ this.hubClientsCount.textContent = joinResult.clients.length;
80
+ }
81
+
82
+ } catch (err) {
83
+ this.addMessage(`Error: ${err.message}`, 'system');
84
+ }
85
+ }
86
+
87
+ async sendHubMessage() {
88
+ const text = this.hubMessage.value.trim();
89
+ if (!text || !this.hubConnection) return;
90
+
91
+ this.hubMessage.value = '';
92
+
93
+ try {
94
+ await this.hubConnection.request('send-message', {
95
+ clientId: CLIENT_ID,
96
+ message: text
97
+ });
98
+ } catch (err) {
99
+ this.addMessage(`Send failed: ${err.message}`, 'system');
100
+ }
101
+ }
102
+
103
+ async updateClientCount() {
104
+ if (!this.hubConnection) return;
105
+ try {
106
+ const result = await this.hubConnection.request('list-clients', {});
107
+ this.hubClientsCount.textContent = result.clients.length;
108
+ } catch (err) {
109
+ console.error('Failed to get client count:', err);
110
+ }
111
+ }
112
+
113
+ addMessage(text, type = 'other') {
114
+ const div = document.createElement('div');
115
+ div.className = `chat-message ${type}`;
116
+
117
+ const time = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
118
+ div.innerHTML = `<span class="time">${time}</span>${text}`;
119
+
120
+ this.hubChat.appendChild(div);
121
+ this.hubChat.scrollTop = this.hubChat.scrollHeight;
122
+ }
123
+ }
124
+
125
+ // Initialize when DOM is ready
126
+ if (document.readyState === 'loading') {
127
+ document.addEventListener('DOMContentLoaded', () => new ClientBApp());
128
+ } else {
129
+ new ClientBApp();
130
+ }
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>AppBus Client B</title>
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+
11
+ <body class="eden-bg-base">
12
+ <div class="app-container eden-flex-col eden-gap-md eden-p-md">
13
+ <header class="eden-card eden-p-sm eden-flex eden-justify-between eden-items-center">
14
+ <h1 class="eden-text-lg">🟢 Client B</h1>
15
+ <span id="hub-status" class="eden-badge eden-badge-danger">Disconnected</span>
16
+ </header>
17
+
18
+ <!-- Hub Chat Section -->
19
+ <section class="eden-card eden-flex-col eden-gap-sm chat-section">
20
+ <div class="eden-flex eden-items-center eden-gap-sm">
21
+ <h2 class="eden-text-md">Hub Chat</h2>
22
+ <span id="hub-clients-count" class="eden-badge eden-badge-success">0</span>
23
+ </div>
24
+ <div id="hub-chat" class="chat-messages eden-glass-light eden-p-sm"></div>
25
+ <div class="eden-flex eden-gap-sm">
26
+ <input type="text" id="hub-message" class="eden-input" placeholder="Message to Hub chat..." />
27
+ <button id="hub-send-btn" class="eden-btn eden-btn-success">Send</button>
28
+ </div>
29
+ </section>
30
+ </div>
31
+
32
+ <script src="app.js"></script>
33
+ </body>
34
+
35
+ </html>
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "com.eden.example.appbus.client-b",
3
+ "name": "AppBus Client B",
4
+ "version": "1.0.0",
5
+ "description": "Frontend app that connects to Hub for mediated chat",
6
+ "author": "Dariusz Majnert",
7
+ "frontend": {
8
+ "entry": "index.html"
9
+ },
10
+ "window": {
11
+ "mode": "floating",
12
+ "defaultSize": {
13
+ "width": 400,
14
+ "height": 500
15
+ },
16
+ "minSize": {
17
+ "width": 300,
18
+ "height": 350
19
+ },
20
+ "resizable": true,
21
+ "movable": true
22
+ },
23
+ "permissions": [
24
+ "appbus/connect",
25
+ "appbus/expose"
26
+ ]
27
+ }
@@ -0,0 +1,48 @@
1
+ /* Client B - Minimal custom styles (edencss provides the rest) */
2
+
3
+ .app-container {
4
+ height: 100vh;
5
+ display: flex;
6
+ flex-direction: column;
7
+ font-family: var(--eden-font-family-base);
8
+ }
9
+
10
+ .chat-section {
11
+ flex: 1;
12
+ min-height: 0;
13
+ display: flex;
14
+ flex-direction: column;
15
+ }
16
+
17
+ .chat-messages {
18
+ flex: 1;
19
+ overflow-y: auto;
20
+ min-height: 100px;
21
+ border-radius: var(--eden-radius-md);
22
+ }
23
+
24
+ .chat-message {
25
+ margin-bottom: var(--eden-space-sm);
26
+ padding: var(--eden-space-xs) var(--eden-space-sm);
27
+ border-radius: var(--eden-radius-sm);
28
+ background: var(--eden-color-bg-surface);
29
+ font-size: var(--eden-font-size-sm);
30
+ }
31
+
32
+ .chat-message.own {
33
+ background: var(--eden-color-accent-success-muted);
34
+ margin-left: 20%;
35
+ }
36
+
37
+ .chat-message.system {
38
+ background: var(--eden-color-bg-glass-light);
39
+ color: var(--eden-color-text-secondary);
40
+ font-style: italic;
41
+ text-align: center;
42
+ }
43
+
44
+ .chat-message .time {
45
+ font-size: var(--eden-font-size-xs);
46
+ color: var(--eden-color-text-tertiary);
47
+ float: right;
48
+ }
@@ -0,0 +1,18 @@
1
+ # AppBus Chat Hub
2
+
3
+ Backend-only mediator app that routes chat messages between connected frontend apps.
4
+
5
+ ## Services
6
+
7
+ ### chat-relay
8
+
9
+ - `join(clientId, nickname)` - Register as a chat participant
10
+ - `send-message(clientId, message)` - Send a message to all participants
11
+ - `leave(clientId)` - Leave the chat
12
+ - `list-clients()` - Get list of connected clients
13
+
14
+ ## Events
15
+
16
+ - `chat-message` - Broadcast when a message is sent
17
+ - `client-joined` - Broadcast when a client joins
18
+ - `client-left` - Broadcast when a client leaves
@@ -0,0 +1,121 @@
1
+ // AppBus Chat Hub - Backend Mediator
2
+ // Routes messages between connected clients using bidirectional connections
3
+
4
+ const appId = process.env.EDEN_APP_ID;
5
+ console.log(`[Hub] Starting chat hub for ${appId}`);
6
+
7
+ // Connected clients map: appId -> { connection, nickname }
8
+ const clients = new Map();
9
+
10
+ // Expose the chat-relay service
11
+ // When a client connects, we receive their AppBusConnection
12
+ worker.appBus.exposeService('chat-relay', (connection, { appId: clientAppId }) => {
13
+ console.log(`[Hub] Client connecting: ${clientAppId}`);
14
+
15
+ // Store the connection (nickname will be set on join)
16
+ clients.set(clientAppId, { connection, nickname: clientAppId });
17
+
18
+ // Handle client disconnect
19
+ connection.onClose(() => {
20
+ const client = clients.get(clientAppId);
21
+ if (client) {
22
+ console.log(`[Hub] Client disconnected: ${client.nickname} (${clientAppId})`);
23
+ clients.delete(clientAppId);
24
+ broadcastToOthers(clientAppId, 'client-left', {
25
+ clientId: clientAppId,
26
+ nickname: client.nickname
27
+ });
28
+ }
29
+ });
30
+
31
+ // Handle join request
32
+ connection.handle('join', ({ clientId, nickname }) => {
33
+ clients.set(clientAppId, { connection, nickname });
34
+ console.log(`[Hub] Client joined: ${nickname} (${clientAppId})`);
35
+
36
+ // Notify all other clients
37
+ broadcastToOthers(clientAppId, 'client-joined', { clientId: clientAppId, nickname });
38
+
39
+ return {
40
+ success: true,
41
+ clients: getClientList()
42
+ };
43
+ });
44
+
45
+ // Handle send-message request
46
+ connection.handle('send-message', ({ clientId, message }) => {
47
+ const client = clients.get(clientAppId);
48
+ if (!client) {
49
+ return { success: false, error: 'Not joined' };
50
+ }
51
+
52
+ const chatMessage = {
53
+ from: clientAppId,
54
+ nickname: client.nickname,
55
+ message,
56
+ timestamp: Date.now()
57
+ };
58
+
59
+ console.log(`[Hub] Broadcasting message from ${client.nickname}: ${message}`);
60
+
61
+ // Broadcast to all clients (including sender for confirmation)
62
+ broadcast('chat-message', chatMessage);
63
+
64
+ return { success: true };
65
+ });
66
+
67
+ // Handle leave request
68
+ connection.handle('leave', ({ clientId }) => {
69
+ const client = clients.get(clientAppId);
70
+ if (client) {
71
+ clients.delete(clientAppId);
72
+ broadcastToOthers(clientAppId, 'client-left', {
73
+ clientId: clientAppId,
74
+ nickname: client.nickname
75
+ });
76
+ }
77
+ return { success: true };
78
+ });
79
+
80
+ // Handle list-clients request
81
+ connection.handle('list-clients', () => {
82
+ return { clients: getClientList() };
83
+ });
84
+
85
+ }, {
86
+ description: 'Chat relay service for hub-mediated messaging'
87
+ });
88
+
89
+ // Helper: Get list of connected clients
90
+ function getClientList() {
91
+ return Array.from(clients.entries()).map(([id, info]) => ({
92
+ clientId: id,
93
+ nickname: info.nickname
94
+ }));
95
+ }
96
+
97
+ // Helper: Broadcast to all connected clients
98
+ function broadcast(eventName, data) {
99
+ clients.forEach(({ connection }, clientId) => {
100
+ try {
101
+ connection.send(eventName, data);
102
+ } catch (err) {
103
+ console.error(`[Hub] Error sending to ${clientId}:`, err);
104
+ }
105
+ });
106
+ }
107
+
108
+ // Helper: Broadcast to all except one client
109
+ function broadcastToOthers(excludeClientId, eventName, data) {
110
+ clients.forEach(({ connection }, clientId) => {
111
+ if (clientId !== excludeClientId) {
112
+ try {
113
+ connection.send(eventName, data);
114
+ } catch (err) {
115
+ console.error(`[Hub] Error sending to ${clientId}:`, err);
116
+ }
117
+ }
118
+ });
119
+ }
120
+
121
+ console.log('[Hub] Chat relay service exposed and ready');
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": "com.eden.example.appbus.hub",
3
+ "name": "AppBus Chat Hub",
4
+ "version": "1.0.0",
5
+ "description": "Backend-only mediator that routes chat messages between connected apps",
6
+ "author": "Dariusz Majnert",
7
+ "backend": {
8
+ "entry": "backend.js"
9
+ },
10
+ "window": {
11
+ "mode": "none"
12
+ },
13
+ "permissions": [
14
+ "appbus/expose",
15
+ "appbus/connect"
16
+ ]
17
+ }
@@ -0,0 +1,107 @@
1
+ // AppBus Isolated
2
+ // Only connects directly to Client A's direct-chat service (no Hub involvement)
3
+
4
+ class IsolatedApp {
5
+ constructor() {
6
+ this.connection = null;
7
+
8
+ // DOM elements
9
+ this.connectionStatus = document.getElementById('connection-status');
10
+ this.chat = document.getElementById('chat');
11
+ this.messageInput = document.getElementById('message');
12
+ this.sendBtn = document.getElementById('send-btn');
13
+
14
+ this.setupEventListeners();
15
+ this.connectToClientA();
16
+ }
17
+
18
+ setupEventListeners() {
19
+ this.sendBtn.addEventListener('click', () => this.sendMessage());
20
+ this.messageInput.addEventListener('keypress', (e) => {
21
+ if (e.key === 'Enter') this.sendMessage();
22
+ });
23
+ }
24
+
25
+ async connectToClientA() {
26
+ this.addMessage('Connecting to Client A...', 'system');
27
+ this.sendBtn.disabled = true;
28
+
29
+ try {
30
+ const result = await window.appBus.connect(
31
+ 'com.eden.example.appbus.client-a',
32
+ 'direct-chat'
33
+ );
34
+
35
+ if ('error' in result) {
36
+ this.addMessage(`Failed: ${result.error}`, 'system');
37
+ this.addMessage('Make sure Client A is running!', 'system');
38
+
39
+ // Retry after 3 seconds
40
+ setTimeout(() => this.connectToClientA(), 3000);
41
+ return;
42
+ }
43
+
44
+ this.connection = result;
45
+ this.connectionStatus.textContent = 'Connected';
46
+ this.connectionStatus.className = 'eden-badge eden-badge-success';
47
+ this.sendBtn.disabled = false;
48
+
49
+ // Handle connection close
50
+ this.connection.onClose(() => {
51
+ this.addMessage('Connection to Client A closed', 'system');
52
+ this.connectionStatus.textContent = 'Disconnected';
53
+ this.connectionStatus.className = 'eden-badge eden-badge-danger';
54
+ this.connection = null;
55
+ this.sendBtn.disabled = true;
56
+ });
57
+
58
+ // Test connection with ping
59
+ try {
60
+ const pingResult = await this.connection.request('ping', {});
61
+ this.addMessage(`Connected to ${pingResult.from}!`, 'system');
62
+ } catch (err) {
63
+ this.addMessage('Connected (ping failed)', 'system');
64
+ }
65
+
66
+ // Listen for messages from Client A (bidirectional!)
67
+ this.connection.on('message', (data) => {
68
+ this.addMessage(`Client A: ${data.text}`, 'other');
69
+ });
70
+
71
+ } catch (err) {
72
+ this.addMessage(`Error: ${err.message}`, 'system');
73
+
74
+ // Retry after 3 seconds
75
+ setTimeout(() => this.connectToClientA(), 3000);
76
+ }
77
+ }
78
+
79
+ sendMessage() {
80
+ const text = this.messageInput.value.trim();
81
+ if (!text || !this.connection) return;
82
+
83
+ this.messageInput.value = '';
84
+ this.addMessage(`Me: ${text}`, 'own');
85
+
86
+ // Use send() for fire-and-forget messaging (bidirectional)
87
+ this.connection.send('message', { text });
88
+ }
89
+
90
+ addMessage(text, type = 'other') {
91
+ const div = document.createElement('div');
92
+ div.className = `chat-message ${type}`;
93
+
94
+ const time = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
95
+ div.innerHTML = `<span class="time">${time}</span>${text}`;
96
+
97
+ this.chat.appendChild(div);
98
+ this.chat.scrollTop = this.chat.scrollHeight;
99
+ }
100
+ }
101
+
102
+ // Initialize when DOM is ready
103
+ if (document.readyState === 'loading') {
104
+ document.addEventListener('DOMContentLoaded', () => new IsolatedApp());
105
+ } else {
106
+ new IsolatedApp();
107
+ }
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>AppBus Isolated</title>
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+
11
+ <body class="eden-bg-base">
12
+ <div class="app-container eden-flex-col eden-gap-md eden-p-md">
13
+ <header class="eden-card eden-p-sm eden-flex eden-justify-between eden-items-center">
14
+ <h1 class="eden-text-lg">🟡 Isolated</h1>
15
+ <span id="connection-status" class="eden-badge eden-badge-danger">Disconnected</span>
16
+ </header>
17
+
18
+ <!-- Direct Chat with Client A -->
19
+ <section class="eden-card eden-card-elevated eden-flex-col eden-gap-sm chat-section direct-chat">
20
+ <div>
21
+ <h2 class="eden-text-md">Direct Chat with Client A</h2>
22
+ <p class="eden-text-sm eden-text-secondary">This chat bypasses the Hub entirely</p>
23
+ </div>
24
+ <div id="chat" class="chat-messages eden-glass-light eden-p-sm"></div>
25
+ <div class="eden-flex eden-gap-sm">
26
+ <input type="text" id="message" class="eden-input" placeholder="Message to Client A..." />
27
+ <button id="send-btn" class="eden-btn eden-btn-warning">Send</button>
28
+ </div>
29
+ </section>
30
+ </div>
31
+
32
+ <script src="app.js"></script>
33
+ </body>
34
+
35
+ </html>