@agimon-ai/po-web-dashboard 0.0.0-alpha.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 (924) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +10 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  4. package/dist/core.cjs +222 -0
  5. package/dist/core.d.mts +21 -0
  6. package/dist/core.mjs +21 -0
  7. package/dist/index.cjs +546 -0
  8. package/dist/index.d.mts +81 -0
  9. package/dist/index.mjs +81 -0
  10. package/dist/testing.cjs +18 -0
  11. package/dist/testing.d.mts +6 -0
  12. package/dist/testing.mjs +6 -0
  13. package/dist/types/auth.cjs +20 -0
  14. package/dist/types/auth.cjs.map +1 -0
  15. package/dist/types/auth.d.mts +160 -0
  16. package/dist/types/auth.d.mts.map +1 -0
  17. package/dist/types/auth.mjs +19 -0
  18. package/dist/types/auth.mjs.map +1 -0
  19. package/dist/types/bridge.d.mts +18 -0
  20. package/dist/types/bridge.d.mts.map +1 -0
  21. package/dist/types/devProxy.cjs +41 -0
  22. package/dist/types/devProxy.cjs.map +1 -0
  23. package/dist/types/devProxy.d.mts +54 -0
  24. package/dist/types/devProxy.d.mts.map +1 -0
  25. package/dist/types/devProxy.mjs +39 -0
  26. package/dist/types/devProxy.mjs.map +1 -0
  27. package/dist/types/hub.cjs +220 -0
  28. package/dist/types/hub.cjs.map +1 -0
  29. package/dist/types/hub.d.mts +447 -0
  30. package/dist/types/hub.d.mts.map +1 -0
  31. package/dist/types/hub.mjs +179 -0
  32. package/dist/types/hub.mjs.map +1 -0
  33. package/dist/types/media.cjs +75 -0
  34. package/dist/types/media.cjs.map +1 -0
  35. package/dist/types/media.d.mts +22 -0
  36. package/dist/types/media.d.mts.map +1 -0
  37. package/dist/types/media.mjs +70 -0
  38. package/dist/types/media.mjs.map +1 -0
  39. package/dist/types/notification.cjs +19 -0
  40. package/dist/types/notification.cjs.map +1 -0
  41. package/dist/types/notification.d.mts +10 -0
  42. package/dist/types/notification.d.mts.map +1 -0
  43. package/dist/types/notification.mjs +19 -0
  44. package/dist/types/notification.mjs.map +1 -0
  45. package/dist/types/remoteAccess.cjs +92 -0
  46. package/dist/types/remoteAccess.cjs.map +1 -0
  47. package/dist/types/remoteAccess.d.mts +214 -0
  48. package/dist/types/remoteAccess.d.mts.map +1 -0
  49. package/dist/types/remoteAccess.mjs +68 -0
  50. package/dist/types/remoteAccess.mjs.map +1 -0
  51. package/dist/types/session.cjs +23 -0
  52. package/dist/types/session.cjs.map +1 -0
  53. package/dist/types/session.d.mts +29 -0
  54. package/dist/types/session.d.mts.map +1 -0
  55. package/dist/types/session.mjs +18 -0
  56. package/dist/types/session.mjs.map +1 -0
  57. package/dist/types/sessionMcp.d.mts +56 -0
  58. package/dist/types/sessionMcp.d.mts.map +1 -0
  59. package/dist/types/settings.cjs +18 -0
  60. package/dist/types/settings.cjs.map +1 -0
  61. package/dist/types/settings.d.mts +126 -0
  62. package/dist/types/settings.d.mts.map +1 -0
  63. package/dist/types/settings.mjs +12 -0
  64. package/dist/types/settings.mjs.map +1 -0
  65. package/dist/types.cjs +101 -0
  66. package/dist/types.d.mts +11 -0
  67. package/dist/types.mjs +9 -0
  68. package/dist/views.cjs +120 -0
  69. package/dist/views.d.mts +56 -0
  70. package/dist/views.mjs +56 -0
  71. package/dist/web/components/MascotMark.cjs +18 -0
  72. package/dist/web/components/MascotMark.cjs.map +1 -0
  73. package/dist/web/components/MascotMark.d.mts +9 -0
  74. package/dist/web/components/MascotMark.d.mts.map +1 -0
  75. package/dist/web/components/MascotMark.mjs +18 -0
  76. package/dist/web/components/MascotMark.mjs.map +1 -0
  77. package/dist/web/components/PluginSurface.cjs +15 -0
  78. package/dist/web/components/PluginSurface.cjs.map +1 -0
  79. package/dist/web/components/PluginSurface.d.mts +13 -0
  80. package/dist/web/components/PluginSurface.d.mts.map +1 -0
  81. package/dist/web/components/PluginSurface.mjs +15 -0
  82. package/dist/web/components/PluginSurface.mjs.map +1 -0
  83. package/dist/web/components/QrCode.cjs +37 -0
  84. package/dist/web/components/QrCode.cjs.map +1 -0
  85. package/dist/web/components/QrCode.d.mts +22 -0
  86. package/dist/web/components/QrCode.d.mts.map +1 -0
  87. package/dist/web/components/QrCode.mjs +37 -0
  88. package/dist/web/components/QrCode.mjs.map +1 -0
  89. package/dist/web/components/Remote.fixture.cjs +73 -0
  90. package/dist/web/components/Remote.fixture.cjs.map +1 -0
  91. package/dist/web/components/Remote.fixture.mjs +72 -0
  92. package/dist/web/components/Remote.fixture.mjs.map +1 -0
  93. package/dist/web/components/SessionMcp.cjs +279 -0
  94. package/dist/web/components/SessionMcp.cjs.map +1 -0
  95. package/dist/web/components/SessionMcp.d.mts +12 -0
  96. package/dist/web/components/SessionMcp.d.mts.map +1 -0
  97. package/dist/web/components/SessionMcp.mjs +278 -0
  98. package/dist/web/components/SessionMcp.mjs.map +1 -0
  99. package/dist/web/components/Story.fixture.cjs +124 -0
  100. package/dist/web/components/Story.fixture.cjs.map +1 -0
  101. package/dist/web/components/Story.fixture.d.mts +19 -0
  102. package/dist/web/components/Story.fixture.d.mts.map +1 -0
  103. package/dist/web/components/Story.fixture.mjs +119 -0
  104. package/dist/web/components/Story.fixture.mjs.map +1 -0
  105. package/dist/web/components/Template.fixture.cjs +67 -0
  106. package/dist/web/components/Template.fixture.cjs.map +1 -0
  107. package/dist/web/components/Template.fixture.d.mts +7 -0
  108. package/dist/web/components/Template.fixture.d.mts.map +1 -0
  109. package/dist/web/components/Template.fixture.mjs +65 -0
  110. package/dist/web/components/Template.fixture.mjs.map +1 -0
  111. package/dist/web/components/ToolRendererBoundary.cjs +23 -0
  112. package/dist/web/components/ToolRendererBoundary.cjs.map +1 -0
  113. package/dist/web/components/ToolRendererBoundary.d.mts +23 -0
  114. package/dist/web/components/ToolRendererBoundary.d.mts.map +1 -0
  115. package/dist/web/components/ToolRendererBoundary.mjs +23 -0
  116. package/dist/web/components/ToolRendererBoundary.mjs.map +1 -0
  117. package/dist/web/features/activity/ActivityDock.cjs +271 -0
  118. package/dist/web/features/activity/ActivityDock.cjs.map +1 -0
  119. package/dist/web/features/activity/ActivityDock.d.mts +22 -0
  120. package/dist/web/features/activity/ActivityDock.d.mts.map +1 -0
  121. package/dist/web/features/activity/ActivityDock.mjs +271 -0
  122. package/dist/web/features/activity/ActivityDock.mjs.map +1 -0
  123. package/dist/web/features/activity/ContextItemDialog.cjs +276 -0
  124. package/dist/web/features/activity/ContextItemDialog.cjs.map +1 -0
  125. package/dist/web/features/activity/ContextItemDialog.d.mts +16 -0
  126. package/dist/web/features/activity/ContextItemDialog.d.mts.map +1 -0
  127. package/dist/web/features/activity/ContextItemDialog.mjs +276 -0
  128. package/dist/web/features/activity/ContextItemDialog.mjs.map +1 -0
  129. package/dist/web/features/activity/ContextPanel.cjs +248 -0
  130. package/dist/web/features/activity/ContextPanel.cjs.map +1 -0
  131. package/dist/web/features/activity/ContextPanel.d.mts +4 -0
  132. package/dist/web/features/activity/ContextPanel.d.mts.map +1 -0
  133. package/dist/web/features/activity/ContextPanel.mjs +248 -0
  134. package/dist/web/features/activity/ContextPanel.mjs.map +1 -0
  135. package/dist/web/features/activity/DockTabs.cjs +47 -0
  136. package/dist/web/features/activity/DockTabs.cjs.map +1 -0
  137. package/dist/web/features/activity/DockTabs.d.mts +9 -0
  138. package/dist/web/features/activity/DockTabs.d.mts.map +1 -0
  139. package/dist/web/features/activity/DockTabs.mjs +47 -0
  140. package/dist/web/features/activity/DockTabs.mjs.map +1 -0
  141. package/dist/web/features/connection/RefusedCard.cjs +76 -0
  142. package/dist/web/features/connection/RefusedCard.cjs.map +1 -0
  143. package/dist/web/features/connection/RefusedCard.d.mts +5 -0
  144. package/dist/web/features/connection/RefusedCard.d.mts.map +1 -0
  145. package/dist/web/features/connection/RefusedCard.mjs +76 -0
  146. package/dist/web/features/connection/RefusedCard.mjs.map +1 -0
  147. package/dist/web/features/dialogs/DialogOverlay.cjs +164 -0
  148. package/dist/web/features/dialogs/DialogOverlay.cjs.map +1 -0
  149. package/dist/web/features/dialogs/DialogOverlay.d.mts +15 -0
  150. package/dist/web/features/dialogs/DialogOverlay.d.mts.map +1 -0
  151. package/dist/web/features/dialogs/DialogOverlay.mjs +164 -0
  152. package/dist/web/features/dialogs/DialogOverlay.mjs.map +1 -0
  153. package/dist/web/features/leader/CommandPalette.cjs +390 -0
  154. package/dist/web/features/leader/CommandPalette.cjs.map +1 -0
  155. package/dist/web/features/leader/CommandPalette.d.mts +14 -0
  156. package/dist/web/features/leader/CommandPalette.d.mts.map +1 -0
  157. package/dist/web/features/leader/CommandPalette.mjs +390 -0
  158. package/dist/web/features/leader/CommandPalette.mjs.map +1 -0
  159. package/dist/web/features/remote/DevProxyTargets.cjs +122 -0
  160. package/dist/web/features/remote/DevProxyTargets.cjs.map +1 -0
  161. package/dist/web/features/remote/DevProxyTargets.d.mts +15 -0
  162. package/dist/web/features/remote/DevProxyTargets.d.mts.map +1 -0
  163. package/dist/web/features/remote/DevProxyTargets.mjs +122 -0
  164. package/dist/web/features/remote/DevProxyTargets.mjs.map +1 -0
  165. package/dist/web/features/remote/HandoverProgress.cjs +28 -0
  166. package/dist/web/features/remote/HandoverProgress.cjs.map +1 -0
  167. package/dist/web/features/remote/HandoverProgress.d.mts +12 -0
  168. package/dist/web/features/remote/HandoverProgress.d.mts.map +1 -0
  169. package/dist/web/features/remote/HandoverProgress.mjs +28 -0
  170. package/dist/web/features/remote/HandoverProgress.mjs.map +1 -0
  171. package/dist/web/features/remote/PairedDeviceList.cjs +37 -0
  172. package/dist/web/features/remote/PairedDeviceList.cjs.map +1 -0
  173. package/dist/web/features/remote/PairedDeviceList.d.mts +5 -0
  174. package/dist/web/features/remote/PairedDeviceList.d.mts.map +1 -0
  175. package/dist/web/features/remote/PairedDeviceList.mjs +37 -0
  176. package/dist/web/features/remote/PairedDeviceList.mjs.map +1 -0
  177. package/dist/web/features/remote/PairingApprovalDialog.cjs +65 -0
  178. package/dist/web/features/remote/PairingApprovalDialog.cjs.map +1 -0
  179. package/dist/web/features/remote/PairingApprovalDialog.d.mts +11 -0
  180. package/dist/web/features/remote/PairingApprovalDialog.d.mts.map +1 -0
  181. package/dist/web/features/remote/PairingApprovalDialog.mjs +65 -0
  182. package/dist/web/features/remote/PairingApprovalDialog.mjs.map +1 -0
  183. package/dist/web/features/remote/RemoteAccessDialog.cjs +83 -0
  184. package/dist/web/features/remote/RemoteAccessDialog.cjs.map +1 -0
  185. package/dist/web/features/remote/RemoteAccessDialog.d.mts +11 -0
  186. package/dist/web/features/remote/RemoteAccessDialog.d.mts.map +1 -0
  187. package/dist/web/features/remote/RemoteAccessDialog.mjs +83 -0
  188. package/dist/web/features/remote/RemoteAccessDialog.mjs.map +1 -0
  189. package/dist/web/features/remote/RemoteAccessOptions.cjs +154 -0
  190. package/dist/web/features/remote/RemoteAccessOptions.cjs.map +1 -0
  191. package/dist/web/features/remote/RemoteAccessOptions.d.mts +11 -0
  192. package/dist/web/features/remote/RemoteAccessOptions.d.mts.map +1 -0
  193. package/dist/web/features/remote/RemoteAccessOptions.mjs +154 -0
  194. package/dist/web/features/remote/RemoteAccessOptions.mjs.map +1 -0
  195. package/dist/web/features/remote/RemoteAccessPairing.cjs +93 -0
  196. package/dist/web/features/remote/RemoteAccessPairing.cjs.map +1 -0
  197. package/dist/web/features/remote/RemoteAccessPairing.d.mts +5 -0
  198. package/dist/web/features/remote/RemoteAccessPairing.d.mts.map +1 -0
  199. package/dist/web/features/remote/RemoteAccessPairing.mjs +93 -0
  200. package/dist/web/features/remote/RemoteAccessPairing.mjs.map +1 -0
  201. package/dist/web/features/remote/SandboxWorkspaces.cjs +87 -0
  202. package/dist/web/features/remote/SandboxWorkspaces.cjs.map +1 -0
  203. package/dist/web/features/remote/SandboxWorkspaces.d.mts +7 -0
  204. package/dist/web/features/remote/SandboxWorkspaces.d.mts.map +1 -0
  205. package/dist/web/features/remote/SandboxWorkspaces.mjs +87 -0
  206. package/dist/web/features/remote/SandboxWorkspaces.mjs.map +1 -0
  207. package/dist/web/features/remote/TrustedDeviceList.cjs +65 -0
  208. package/dist/web/features/remote/TrustedDeviceList.cjs.map +1 -0
  209. package/dist/web/features/remote/TrustedDeviceList.d.mts +13 -0
  210. package/dist/web/features/remote/TrustedDeviceList.d.mts.map +1 -0
  211. package/dist/web/features/remote/TrustedDeviceList.mjs +64 -0
  212. package/dist/web/features/remote/TrustedDeviceList.mjs.map +1 -0
  213. package/dist/web/features/selection/SelectionBar.cjs +401 -0
  214. package/dist/web/features/selection/SelectionBar.cjs.map +1 -0
  215. package/dist/web/features/selection/SelectionBar.d.mts +14 -0
  216. package/dist/web/features/selection/SelectionBar.d.mts.map +1 -0
  217. package/dist/web/features/selection/SelectionBar.mjs +400 -0
  218. package/dist/web/features/selection/SelectionBar.mjs.map +1 -0
  219. package/dist/web/features/session/AgentLockPanel.cjs +31 -0
  220. package/dist/web/features/session/AgentLockPanel.cjs.map +1 -0
  221. package/dist/web/features/session/AgentLockPanel.mjs +31 -0
  222. package/dist/web/features/session/AgentLockPanel.mjs.map +1 -0
  223. package/dist/web/features/session/Composer.cjs +808 -0
  224. package/dist/web/features/session/Composer.cjs.map +1 -0
  225. package/dist/web/features/session/Composer.d.mts +21 -0
  226. package/dist/web/features/session/Composer.d.mts.map +1 -0
  227. package/dist/web/features/session/Composer.mjs +806 -0
  228. package/dist/web/features/session/Composer.mjs.map +1 -0
  229. package/dist/web/features/session/ComposerPrompt.cjs +47 -0
  230. package/dist/web/features/session/ComposerPrompt.cjs.map +1 -0
  231. package/dist/web/features/session/ComposerPrompt.d.mts +16 -0
  232. package/dist/web/features/session/ComposerPrompt.d.mts.map +1 -0
  233. package/dist/web/features/session/ComposerPrompt.mjs +47 -0
  234. package/dist/web/features/session/ComposerPrompt.mjs.map +1 -0
  235. package/dist/web/features/session/DormantPanel.cjs +61 -0
  236. package/dist/web/features/session/DormantPanel.cjs.map +1 -0
  237. package/dist/web/features/session/DormantPanel.d.mts +8 -0
  238. package/dist/web/features/session/DormantPanel.d.mts.map +1 -0
  239. package/dist/web/features/session/DormantPanel.mjs +61 -0
  240. package/dist/web/features/session/DormantPanel.mjs.map +1 -0
  241. package/dist/web/features/session/MentionPreviews.cjs +128 -0
  242. package/dist/web/features/session/MentionPreviews.cjs.map +1 -0
  243. package/dist/web/features/session/MentionPreviews.d.mts +17 -0
  244. package/dist/web/features/session/MentionPreviews.d.mts.map +1 -0
  245. package/dist/web/features/session/MentionPreviews.mjs +127 -0
  246. package/dist/web/features/session/MentionPreviews.mjs.map +1 -0
  247. package/dist/web/features/session/MessageMarkdown.cjs +20 -0
  248. package/dist/web/features/session/MessageMarkdown.cjs.map +1 -0
  249. package/dist/web/features/session/MessageMarkdown.d.mts +19 -0
  250. package/dist/web/features/session/MessageMarkdown.d.mts.map +1 -0
  251. package/dist/web/features/session/MessageMarkdown.mjs +20 -0
  252. package/dist/web/features/session/MessageMarkdown.mjs.map +1 -0
  253. package/dist/web/features/session/QueueSheet.cjs +189 -0
  254. package/dist/web/features/session/QueueSheet.cjs.map +1 -0
  255. package/dist/web/features/session/QueueSheet.d.mts +16 -0
  256. package/dist/web/features/session/QueueSheet.d.mts.map +1 -0
  257. package/dist/web/features/session/QueueSheet.mjs +189 -0
  258. package/dist/web/features/session/QueueSheet.mjs.map +1 -0
  259. package/dist/web/features/session/SessionActivity.cjs +88 -0
  260. package/dist/web/features/session/SessionActivity.cjs.map +1 -0
  261. package/dist/web/features/session/SessionActivity.d.mts +16 -0
  262. package/dist/web/features/session/SessionActivity.d.mts.map +1 -0
  263. package/dist/web/features/session/SessionActivity.mjs +87 -0
  264. package/dist/web/features/session/SessionActivity.mjs.map +1 -0
  265. package/dist/web/features/session/SessionTranscriptView.cjs +34 -0
  266. package/dist/web/features/session/SessionTranscriptView.cjs.map +1 -0
  267. package/dist/web/features/session/SessionTranscriptView.d.mts +16 -0
  268. package/dist/web/features/session/SessionTranscriptView.d.mts.map +1 -0
  269. package/dist/web/features/session/SessionTranscriptView.mjs +34 -0
  270. package/dist/web/features/session/SessionTranscriptView.mjs.map +1 -0
  271. package/dist/web/features/session/ThreadView.cjs +40 -0
  272. package/dist/web/features/session/ThreadView.cjs.map +1 -0
  273. package/dist/web/features/session/ThreadView.d.mts +18 -0
  274. package/dist/web/features/session/ThreadView.d.mts.map +1 -0
  275. package/dist/web/features/session/ThreadView.mjs +40 -0
  276. package/dist/web/features/session/ThreadView.mjs.map +1 -0
  277. package/dist/web/features/session/Timeline.cjs +620 -0
  278. package/dist/web/features/session/Timeline.cjs.map +1 -0
  279. package/dist/web/features/session/Timeline.d.mts +28 -0
  280. package/dist/web/features/session/Timeline.d.mts.map +1 -0
  281. package/dist/web/features/session/Timeline.mjs +619 -0
  282. package/dist/web/features/session/Timeline.mjs.map +1 -0
  283. package/dist/web/features/session/ToolCard.cjs +210 -0
  284. package/dist/web/features/session/ToolCard.cjs.map +1 -0
  285. package/dist/web/features/session/ToolCard.d.mts +16 -0
  286. package/dist/web/features/session/ToolCard.d.mts.map +1 -0
  287. package/dist/web/features/session/ToolCard.mjs +210 -0
  288. package/dist/web/features/session/ToolCard.mjs.map +1 -0
  289. package/dist/web/features/session/session.fixture.cjs +76 -0
  290. package/dist/web/features/session/session.fixture.cjs.map +1 -0
  291. package/dist/web/features/session/session.fixture.d.mts +6 -0
  292. package/dist/web/features/session/session.fixture.d.mts.map +1 -0
  293. package/dist/web/features/session/session.fixture.mjs +74 -0
  294. package/dist/web/features/session/session.fixture.mjs.map +1 -0
  295. package/dist/web/features/sessions/NewSessionDialog.cjs +70 -0
  296. package/dist/web/features/sessions/NewSessionDialog.cjs.map +1 -0
  297. package/dist/web/features/sessions/NewSessionDialog.d.mts +9 -0
  298. package/dist/web/features/sessions/NewSessionDialog.d.mts.map +1 -0
  299. package/dist/web/features/sessions/NewSessionDialog.mjs +70 -0
  300. package/dist/web/features/sessions/NewSessionDialog.mjs.map +1 -0
  301. package/dist/web/features/sessions/ResumeSessionDialog.cjs +131 -0
  302. package/dist/web/features/sessions/ResumeSessionDialog.cjs.map +1 -0
  303. package/dist/web/features/sessions/ResumeSessionDialog.d.mts +14 -0
  304. package/dist/web/features/sessions/ResumeSessionDialog.d.mts.map +1 -0
  305. package/dist/web/features/sessions/ResumeSessionDialog.mjs +131 -0
  306. package/dist/web/features/sessions/ResumeSessionDialog.mjs.map +1 -0
  307. package/dist/web/features/sessions/SessionRailDialogs.cjs +62 -0
  308. package/dist/web/features/sessions/SessionRailDialogs.cjs.map +1 -0
  309. package/dist/web/features/sessions/SessionRailDialogs.d.mts +10 -0
  310. package/dist/web/features/sessions/SessionRailDialogs.d.mts.map +1 -0
  311. package/dist/web/features/sessions/SessionRailDialogs.mjs +62 -0
  312. package/dist/web/features/sessions/SessionRailDialogs.mjs.map +1 -0
  313. package/dist/web/features/sessions/WelcomePanel.cjs +42 -0
  314. package/dist/web/features/sessions/WelcomePanel.cjs.map +1 -0
  315. package/dist/web/features/sessions/WelcomePanel.d.mts +16 -0
  316. package/dist/web/features/sessions/WelcomePanel.d.mts.map +1 -0
  317. package/dist/web/features/sessions/WelcomePanel.mjs +42 -0
  318. package/dist/web/features/sessions/WelcomePanel.mjs.map +1 -0
  319. package/dist/web/features/sessions/useNewSessionActions.cjs +38 -0
  320. package/dist/web/features/sessions/useNewSessionActions.cjs.map +1 -0
  321. package/dist/web/features/sessions/useNewSessionActions.d.mts +12 -0
  322. package/dist/web/features/sessions/useNewSessionActions.d.mts.map +1 -0
  323. package/dist/web/features/sessions/useNewSessionActions.mjs +38 -0
  324. package/dist/web/features/sessions/useNewSessionActions.mjs.map +1 -0
  325. package/dist/web/features/sessions/useSessionRail.cjs +302 -0
  326. package/dist/web/features/sessions/useSessionRail.cjs.map +1 -0
  327. package/dist/web/features/sessions/useSessionRail.d.mts +14 -0
  328. package/dist/web/features/sessions/useSessionRail.d.mts.map +1 -0
  329. package/dist/web/features/sessions/useSessionRail.mjs +302 -0
  330. package/dist/web/features/sessions/useSessionRail.mjs.map +1 -0
  331. package/dist/web/features/settings/AppearanceSettings.cjs +126 -0
  332. package/dist/web/features/settings/AppearanceSettings.cjs.map +1 -0
  333. package/dist/web/features/settings/AppearanceSettings.d.mts +12 -0
  334. package/dist/web/features/settings/AppearanceSettings.d.mts.map +1 -0
  335. package/dist/web/features/settings/AppearanceSettings.mjs +126 -0
  336. package/dist/web/features/settings/AppearanceSettings.mjs.map +1 -0
  337. package/dist/web/features/settings/ContributedSettings.cjs +257 -0
  338. package/dist/web/features/settings/ContributedSettings.cjs.map +1 -0
  339. package/dist/web/features/settings/ContributedSettings.d.mts +14 -0
  340. package/dist/web/features/settings/ContributedSettings.d.mts.map +1 -0
  341. package/dist/web/features/settings/ContributedSettings.mjs +257 -0
  342. package/dist/web/features/settings/ContributedSettings.mjs.map +1 -0
  343. package/dist/web/features/settings/ImageSettings.cjs +146 -0
  344. package/dist/web/features/settings/ImageSettings.cjs.map +1 -0
  345. package/dist/web/features/settings/ImageSettings.d.mts +12 -0
  346. package/dist/web/features/settings/ImageSettings.d.mts.map +1 -0
  347. package/dist/web/features/settings/ImageSettings.mjs +146 -0
  348. package/dist/web/features/settings/ImageSettings.mjs.map +1 -0
  349. package/dist/web/features/settings/LoginFlowDialog.cjs +226 -0
  350. package/dist/web/features/settings/LoginFlowDialog.cjs.map +1 -0
  351. package/dist/web/features/settings/LoginFlowDialog.d.mts +15 -0
  352. package/dist/web/features/settings/LoginFlowDialog.d.mts.map +1 -0
  353. package/dist/web/features/settings/LoginFlowDialog.mjs +225 -0
  354. package/dist/web/features/settings/LoginFlowDialog.mjs.map +1 -0
  355. package/dist/web/features/settings/NotificationSettings.cjs +69 -0
  356. package/dist/web/features/settings/NotificationSettings.cjs.map +1 -0
  357. package/dist/web/features/settings/NotificationSettings.d.mts +5 -0
  358. package/dist/web/features/settings/NotificationSettings.d.mts.map +1 -0
  359. package/dist/web/features/settings/NotificationSettings.mjs +69 -0
  360. package/dist/web/features/settings/NotificationSettings.mjs.map +1 -0
  361. package/dist/web/features/settings/PluginSettings.cjs +106 -0
  362. package/dist/web/features/settings/PluginSettings.cjs.map +1 -0
  363. package/dist/web/features/settings/PluginSettings.d.mts +10 -0
  364. package/dist/web/features/settings/PluginSettings.d.mts.map +1 -0
  365. package/dist/web/features/settings/PluginSettings.mjs +106 -0
  366. package/dist/web/features/settings/PluginSettings.mjs.map +1 -0
  367. package/dist/web/features/settings/ProviderSettings.cjs +323 -0
  368. package/dist/web/features/settings/ProviderSettings.cjs.map +1 -0
  369. package/dist/web/features/settings/ProviderSettings.d.mts +9 -0
  370. package/dist/web/features/settings/ProviderSettings.d.mts.map +1 -0
  371. package/dist/web/features/settings/ProviderSettings.mjs +323 -0
  372. package/dist/web/features/settings/ProviderSettings.mjs.map +1 -0
  373. package/dist/web/features/settings/RemoteControlSettings.cjs +50 -0
  374. package/dist/web/features/settings/RemoteControlSettings.cjs.map +1 -0
  375. package/dist/web/features/settings/RemoteControlSettings.d.mts +5 -0
  376. package/dist/web/features/settings/RemoteControlSettings.d.mts.map +1 -0
  377. package/dist/web/features/settings/RemoteControlSettings.mjs +50 -0
  378. package/dist/web/features/settings/RemoteControlSettings.mjs.map +1 -0
  379. package/dist/web/features/settings/RepositorySettings.cjs +318 -0
  380. package/dist/web/features/settings/RepositorySettings.cjs.map +1 -0
  381. package/dist/web/features/settings/RepositorySettings.d.mts +7 -0
  382. package/dist/web/features/settings/RepositorySettings.d.mts.map +1 -0
  383. package/dist/web/features/settings/RepositorySettings.mjs +318 -0
  384. package/dist/web/features/settings/RepositorySettings.mjs.map +1 -0
  385. package/dist/web/features/settings/RepositoryWorkspace.cjs +160 -0
  386. package/dist/web/features/settings/RepositoryWorkspace.cjs.map +1 -0
  387. package/dist/web/features/settings/RepositoryWorkspace.d.mts +10 -0
  388. package/dist/web/features/settings/RepositoryWorkspace.d.mts.map +1 -0
  389. package/dist/web/features/settings/RepositoryWorkspace.mjs +160 -0
  390. package/dist/web/features/settings/RepositoryWorkspace.mjs.map +1 -0
  391. package/dist/web/features/settings/SessionMcpSettings.cjs +488 -0
  392. package/dist/web/features/settings/SessionMcpSettings.cjs.map +1 -0
  393. package/dist/web/features/settings/SessionMcpSettings.d.mts +5 -0
  394. package/dist/web/features/settings/SessionMcpSettings.d.mts.map +1 -0
  395. package/dist/web/features/settings/SessionMcpSettings.mjs +488 -0
  396. package/dist/web/features/settings/SessionMcpSettings.mjs.map +1 -0
  397. package/dist/web/features/settings/SettingsMenu.cjs +135 -0
  398. package/dist/web/features/settings/SettingsMenu.cjs.map +1 -0
  399. package/dist/web/features/settings/SettingsMenu.d.mts +9 -0
  400. package/dist/web/features/settings/SettingsMenu.d.mts.map +1 -0
  401. package/dist/web/features/settings/SettingsMenu.mjs +135 -0
  402. package/dist/web/features/settings/SettingsMenu.mjs.map +1 -0
  403. package/dist/web/features/settings/SettingsPanelHost.cjs +32 -0
  404. package/dist/web/features/settings/SettingsPanelHost.cjs.map +1 -0
  405. package/dist/web/features/settings/SettingsPanelHost.d.mts +8 -0
  406. package/dist/web/features/settings/SettingsPanelHost.d.mts.map +1 -0
  407. package/dist/web/features/settings/SettingsPanelHost.mjs +32 -0
  408. package/dist/web/features/settings/SettingsPanelHost.mjs.map +1 -0
  409. package/dist/web/features/settings/TemplateSettings.cjs +177 -0
  410. package/dist/web/features/settings/TemplateSettings.cjs.map +1 -0
  411. package/dist/web/features/settings/TemplateSettings.d.mts +8 -0
  412. package/dist/web/features/settings/TemplateSettings.d.mts.map +1 -0
  413. package/dist/web/features/settings/TemplateSettings.mjs +177 -0
  414. package/dist/web/features/settings/TemplateSettings.mjs.map +1 -0
  415. package/dist/web/features/settings/TunnelSettings.cjs +182 -0
  416. package/dist/web/features/settings/TunnelSettings.cjs.map +1 -0
  417. package/dist/web/features/settings/TunnelSettings.d.mts +8 -0
  418. package/dist/web/features/settings/TunnelSettings.d.mts.map +1 -0
  419. package/dist/web/features/settings/TunnelSettings.mjs +182 -0
  420. package/dist/web/features/settings/TunnelSettings.mjs.map +1 -0
  421. package/dist/web/features/settings/settings.fixture.cjs +230 -0
  422. package/dist/web/features/settings/settings.fixture.cjs.map +1 -0
  423. package/dist/web/features/settings/settings.fixture.d.mts +6 -0
  424. package/dist/web/features/settings/settings.fixture.d.mts.map +1 -0
  425. package/dist/web/features/settings/settings.fixture.mjs +223 -0
  426. package/dist/web/features/settings/settings.fixture.mjs.map +1 -0
  427. package/dist/web/features/status/TopBar.cjs +200 -0
  428. package/dist/web/features/status/TopBar.cjs.map +1 -0
  429. package/dist/web/features/status/TopBar.d.mts +11 -0
  430. package/dist/web/features/status/TopBar.d.mts.map +1 -0
  431. package/dist/web/features/status/TopBar.mjs +200 -0
  432. package/dist/web/features/status/TopBar.mjs.map +1 -0
  433. package/dist/web/lib/authApi.cjs +77 -0
  434. package/dist/web/lib/authApi.cjs.map +1 -0
  435. package/dist/web/lib/authApi.d.mts +28 -0
  436. package/dist/web/lib/authApi.d.mts.map +1 -0
  437. package/dist/web/lib/authApi.mjs +72 -0
  438. package/dist/web/lib/authApi.mjs.map +1 -0
  439. package/dist/web/lib/browserNotifications.cjs +37 -0
  440. package/dist/web/lib/browserNotifications.cjs.map +1 -0
  441. package/dist/web/lib/browserNotifications.d.mts +12 -0
  442. package/dist/web/lib/browserNotifications.d.mts.map +1 -0
  443. package/dist/web/lib/browserNotifications.mjs +35 -0
  444. package/dist/web/lib/browserNotifications.mjs.map +1 -0
  445. package/dist/web/lib/browserTelemetry.cjs +158 -0
  446. package/dist/web/lib/browserTelemetry.cjs.map +1 -0
  447. package/dist/web/lib/browserTelemetry.d.mts +28 -0
  448. package/dist/web/lib/browserTelemetry.d.mts.map +1 -0
  449. package/dist/web/lib/browserTelemetry.mjs +154 -0
  450. package/dist/web/lib/browserTelemetry.mjs.map +1 -0
  451. package/dist/web/lib/commands.cjs +176 -0
  452. package/dist/web/lib/commands.cjs.map +1 -0
  453. package/dist/web/lib/commands.d.mts +53 -0
  454. package/dist/web/lib/commands.d.mts.map +1 -0
  455. package/dist/web/lib/commands.mjs +153 -0
  456. package/dist/web/lib/commands.mjs.map +1 -0
  457. package/dist/web/lib/composerSubmissions.cjs +20 -0
  458. package/dist/web/lib/composerSubmissions.cjs.map +1 -0
  459. package/dist/web/lib/composerSubmissions.d.mts +7 -0
  460. package/dist/web/lib/composerSubmissions.d.mts.map +1 -0
  461. package/dist/web/lib/composerSubmissions.mjs +19 -0
  462. package/dist/web/lib/composerSubmissions.mjs.map +1 -0
  463. package/dist/web/lib/composition.cjs +403 -0
  464. package/dist/web/lib/composition.cjs.map +1 -0
  465. package/dist/web/lib/composition.d.mts +137 -0
  466. package/dist/web/lib/composition.d.mts.map +1 -0
  467. package/dist/web/lib/composition.mjs +392 -0
  468. package/dist/web/lib/composition.mjs.map +1 -0
  469. package/dist/web/lib/contextComposition.cjs +132 -0
  470. package/dist/web/lib/contextComposition.cjs.map +1 -0
  471. package/dist/web/lib/contextComposition.d.mts +75 -0
  472. package/dist/web/lib/contextComposition.d.mts.map +1 -0
  473. package/dist/web/lib/contextComposition.mjs +127 -0
  474. package/dist/web/lib/contextComposition.mjs.map +1 -0
  475. package/dist/web/lib/contextDetailApi.cjs +61 -0
  476. package/dist/web/lib/contextDetailApi.cjs.map +1 -0
  477. package/dist/web/lib/contextDetailApi.d.mts +12 -0
  478. package/dist/web/lib/contextDetailApi.d.mts.map +1 -0
  479. package/dist/web/lib/contextDetailApi.mjs +61 -0
  480. package/dist/web/lib/contextDetailApi.mjs.map +1 -0
  481. package/dist/web/lib/dashboardRenderers.cjs +9 -0
  482. package/dist/web/lib/dashboardRenderers.cjs.map +1 -0
  483. package/dist/web/lib/dashboardRenderers.d.mts +12 -0
  484. package/dist/web/lib/dashboardRenderers.d.mts.map +1 -0
  485. package/dist/web/lib/dashboardRenderers.mjs +9 -0
  486. package/dist/web/lib/dashboardRenderers.mjs.map +1 -0
  487. package/dist/web/lib/dashboardRoute.cjs +27 -0
  488. package/dist/web/lib/dashboardRoute.cjs.map +1 -0
  489. package/dist/web/lib/dashboardRoute.d.mts +29 -0
  490. package/dist/web/lib/dashboardRoute.d.mts.map +1 -0
  491. package/dist/web/lib/dashboardRoute.mjs +26 -0
  492. package/dist/web/lib/dashboardRoute.mjs.map +1 -0
  493. package/dist/web/lib/dashboardTranscript.cjs +15 -0
  494. package/dist/web/lib/dashboardTranscript.cjs.map +1 -0
  495. package/dist/web/lib/dashboardTranscript.d.mts +6 -0
  496. package/dist/web/lib/dashboardTranscript.d.mts.map +1 -0
  497. package/dist/web/lib/dashboardTranscript.mjs +14 -0
  498. package/dist/web/lib/dashboardTranscript.mjs.map +1 -0
  499. package/dist/web/lib/devProxyApi.cjs +74 -0
  500. package/dist/web/lib/devProxyApi.cjs.map +1 -0
  501. package/dist/web/lib/devProxyApi.d.mts +21 -0
  502. package/dist/web/lib/devProxyApi.d.mts.map +1 -0
  503. package/dist/web/lib/devProxyApi.mjs +72 -0
  504. package/dist/web/lib/devProxyApi.mjs.map +1 -0
  505. package/dist/web/lib/fileMentions.cjs +30 -0
  506. package/dist/web/lib/fileMentions.cjs.map +1 -0
  507. package/dist/web/lib/fileMentions.d.mts +13 -0
  508. package/dist/web/lib/fileMentions.d.mts.map +1 -0
  509. package/dist/web/lib/fileMentions.mjs +29 -0
  510. package/dist/web/lib/fileMentions.mjs.map +1 -0
  511. package/dist/web/lib/hubApi.cjs +283 -0
  512. package/dist/web/lib/hubApi.cjs.map +1 -0
  513. package/dist/web/lib/hubApi.d.mts +109 -0
  514. package/dist/web/lib/hubApi.d.mts.map +1 -0
  515. package/dist/web/lib/hubApi.mjs +268 -0
  516. package/dist/web/lib/hubApi.mjs.map +1 -0
  517. package/dist/web/lib/leaderTree.cjs +150 -0
  518. package/dist/web/lib/leaderTree.cjs.map +1 -0
  519. package/dist/web/lib/leaderTree.d.mts +41 -0
  520. package/dist/web/lib/leaderTree.d.mts.map +1 -0
  521. package/dist/web/lib/leaderTree.mjs +149 -0
  522. package/dist/web/lib/leaderTree.mjs.map +1 -0
  523. package/dist/web/lib/livePush.cjs +97 -0
  524. package/dist/web/lib/livePush.cjs.map +1 -0
  525. package/dist/web/lib/livePush.d.mts +10 -0
  526. package/dist/web/lib/livePush.d.mts.map +1 -0
  527. package/dist/web/lib/livePush.mjs +94 -0
  528. package/dist/web/lib/livePush.mjs.map +1 -0
  529. package/dist/web/lib/modelContextAdapter.cjs +63 -0
  530. package/dist/web/lib/modelContextAdapter.cjs.map +1 -0
  531. package/dist/web/lib/modelContextAdapter.d.mts +11 -0
  532. package/dist/web/lib/modelContextAdapter.d.mts.map +1 -0
  533. package/dist/web/lib/modelContextAdapter.mjs +62 -0
  534. package/dist/web/lib/modelContextAdapter.mjs.map +1 -0
  535. package/dist/web/lib/piTransport.cjs +103 -0
  536. package/dist/web/lib/piTransport.cjs.map +1 -0
  537. package/dist/web/lib/piTransport.d.mts +8 -0
  538. package/dist/web/lib/piTransport.d.mts.map +1 -0
  539. package/dist/web/lib/piTransport.mjs +102 -0
  540. package/dist/web/lib/piTransport.mjs.map +1 -0
  541. package/dist/web/lib/pluginCompositions.cjs +57 -0
  542. package/dist/web/lib/pluginCompositions.cjs.map +1 -0
  543. package/dist/web/lib/pluginCompositions.d.mts +37 -0
  544. package/dist/web/lib/pluginCompositions.d.mts.map +1 -0
  545. package/dist/web/lib/pluginCompositions.mjs +52 -0
  546. package/dist/web/lib/pluginCompositions.mjs.map +1 -0
  547. package/dist/web/lib/pluginRegistry.cjs +675 -0
  548. package/dist/web/lib/pluginRegistry.cjs.map +1 -0
  549. package/dist/web/lib/pluginRegistry.d.mts +155 -0
  550. package/dist/web/lib/pluginRegistry.d.mts.map +1 -0
  551. package/dist/web/lib/pluginRegistry.mjs +633 -0
  552. package/dist/web/lib/pluginRegistry.mjs.map +1 -0
  553. package/dist/web/lib/pluginScopes.cjs +48 -0
  554. package/dist/web/lib/pluginScopes.cjs.map +1 -0
  555. package/dist/web/lib/pluginScopes.d.mts +8 -0
  556. package/dist/web/lib/pluginScopes.d.mts.map +1 -0
  557. package/dist/web/lib/pluginScopes.mjs +47 -0
  558. package/dist/web/lib/pluginScopes.mjs.map +1 -0
  559. package/dist/web/lib/pluginSlotProps.cjs +83 -0
  560. package/dist/web/lib/pluginSlotProps.cjs.map +1 -0
  561. package/dist/web/lib/pluginSlotProps.d.mts +21 -0
  562. package/dist/web/lib/pluginSlotProps.d.mts.map +1 -0
  563. package/dist/web/lib/pluginSlotProps.mjs +82 -0
  564. package/dist/web/lib/pluginSlotProps.mjs.map +1 -0
  565. package/dist/web/lib/promptFocus.cjs +30 -0
  566. package/dist/web/lib/promptFocus.cjs.map +1 -0
  567. package/dist/web/lib/promptFocus.d.mts +7 -0
  568. package/dist/web/lib/promptFocus.d.mts.map +1 -0
  569. package/dist/web/lib/promptFocus.mjs +29 -0
  570. package/dist/web/lib/promptFocus.mjs.map +1 -0
  571. package/dist/web/lib/protocolHubSocket.cjs +107 -0
  572. package/dist/web/lib/protocolHubSocket.cjs.map +1 -0
  573. package/dist/web/lib/protocolHubSocket.d.mts +18 -0
  574. package/dist/web/lib/protocolHubSocket.d.mts.map +1 -0
  575. package/dist/web/lib/protocolHubSocket.mjs +107 -0
  576. package/dist/web/lib/protocolHubSocket.mjs.map +1 -0
  577. package/dist/web/lib/protocolTimeline.cjs +86 -0
  578. package/dist/web/lib/protocolTimeline.cjs.map +1 -0
  579. package/dist/web/lib/protocolTimeline.d.mts +9 -0
  580. package/dist/web/lib/protocolTimeline.d.mts.map +1 -0
  581. package/dist/web/lib/protocolTimeline.mjs +85 -0
  582. package/dist/web/lib/protocolTimeline.mjs.map +1 -0
  583. package/dist/web/lib/qrMatrix.cjs +37 -0
  584. package/dist/web/lib/qrMatrix.cjs.map +1 -0
  585. package/dist/web/lib/qrMatrix.d.mts +5 -0
  586. package/dist/web/lib/qrMatrix.d.mts.map +1 -0
  587. package/dist/web/lib/qrMatrix.mjs +35 -0
  588. package/dist/web/lib/qrMatrix.mjs.map +1 -0
  589. package/dist/web/lib/remoteApi.cjs +100 -0
  590. package/dist/web/lib/remoteApi.cjs.map +1 -0
  591. package/dist/web/lib/remoteApi.d.mts +45 -0
  592. package/dist/web/lib/remoteApi.d.mts.map +1 -0
  593. package/dist/web/lib/remoteApi.mjs +92 -0
  594. package/dist/web/lib/remoteApi.mjs.map +1 -0
  595. package/dist/web/lib/sealedSession.cjs +81 -0
  596. package/dist/web/lib/sealedSession.cjs.map +1 -0
  597. package/dist/web/lib/sealedSession.d.mts +24 -0
  598. package/dist/web/lib/sealedSession.d.mts.map +1 -0
  599. package/dist/web/lib/sealedSession.mjs +75 -0
  600. package/dist/web/lib/sealedSession.mjs.map +1 -0
  601. package/dist/web/lib/sessionActivityRenderer.cjs +19 -0
  602. package/dist/web/lib/sessionActivityRenderer.cjs.map +1 -0
  603. package/dist/web/lib/sessionActivityRenderer.d.mts +10 -0
  604. package/dist/web/lib/sessionActivityRenderer.d.mts.map +1 -0
  605. package/dist/web/lib/sessionActivityRenderer.mjs +17 -0
  606. package/dist/web/lib/sessionActivityRenderer.mjs.map +1 -0
  607. package/dist/web/lib/sessionAsset.cjs +45 -0
  608. package/dist/web/lib/sessionAsset.cjs.map +1 -0
  609. package/dist/web/lib/sessionAsset.d.mts +17 -0
  610. package/dist/web/lib/sessionAsset.d.mts.map +1 -0
  611. package/dist/web/lib/sessionAsset.mjs +44 -0
  612. package/dist/web/lib/sessionAsset.mjs.map +1 -0
  613. package/dist/web/lib/sessionAvatar.cjs +18 -0
  614. package/dist/web/lib/sessionAvatar.cjs.map +1 -0
  615. package/dist/web/lib/sessionAvatar.d.mts +10 -0
  616. package/dist/web/lib/sessionAvatar.d.mts.map +1 -0
  617. package/dist/web/lib/sessionAvatar.mjs +18 -0
  618. package/dist/web/lib/sessionAvatar.mjs.map +1 -0
  619. package/dist/web/lib/sessionMcpApi.cjs +120 -0
  620. package/dist/web/lib/sessionMcpApi.cjs.map +1 -0
  621. package/dist/web/lib/sessionMcpApi.d.mts +27 -0
  622. package/dist/web/lib/sessionMcpApi.d.mts.map +1 -0
  623. package/dist/web/lib/sessionMcpApi.mjs +114 -0
  624. package/dist/web/lib/sessionMcpApi.mjs.map +1 -0
  625. package/dist/web/lib/sessionMcpPrompt.cjs +24 -0
  626. package/dist/web/lib/sessionMcpPrompt.cjs.map +1 -0
  627. package/dist/web/lib/sessionMcpPrompt.mjs +23 -0
  628. package/dist/web/lib/sessionMcpPrompt.mjs.map +1 -0
  629. package/dist/web/lib/sessionModel.cjs +970 -0
  630. package/dist/web/lib/sessionModel.cjs.map +1 -0
  631. package/dist/web/lib/sessionModel.d.mts +254 -0
  632. package/dist/web/lib/sessionModel.d.mts.map +1 -0
  633. package/dist/web/lib/sessionModel.mjs +958 -0
  634. package/dist/web/lib/sessionModel.mjs.map +1 -0
  635. package/dist/web/lib/sessionProtocolCommands.cjs +196 -0
  636. package/dist/web/lib/sessionProtocolCommands.cjs.map +1 -0
  637. package/dist/web/lib/sessionProtocolCommands.d.mts +15 -0
  638. package/dist/web/lib/sessionProtocolCommands.d.mts.map +1 -0
  639. package/dist/web/lib/sessionProtocolCommands.mjs +193 -0
  640. package/dist/web/lib/sessionProtocolCommands.mjs.map +1 -0
  641. package/dist/web/lib/sessionRailModel.cjs +107 -0
  642. package/dist/web/lib/sessionRailModel.cjs.map +1 -0
  643. package/dist/web/lib/sessionRailModel.d.mts +38 -0
  644. package/dist/web/lib/sessionRailModel.d.mts.map +1 -0
  645. package/dist/web/lib/sessionRailModel.mjs +104 -0
  646. package/dist/web/lib/sessionRailModel.mjs.map +1 -0
  647. package/dist/web/lib/sessionSummary.cjs +58 -0
  648. package/dist/web/lib/sessionSummary.cjs.map +1 -0
  649. package/dist/web/lib/sessionSummary.d.mts +39 -0
  650. package/dist/web/lib/sessionSummary.d.mts.map +1 -0
  651. package/dist/web/lib/sessionSummary.mjs +54 -0
  652. package/dist/web/lib/sessionSummary.mjs.map +1 -0
  653. package/dist/web/lib/sessionTranscriptRenderer.cjs +19 -0
  654. package/dist/web/lib/sessionTranscriptRenderer.cjs.map +1 -0
  655. package/dist/web/lib/sessionTranscriptRenderer.d.mts +11 -0
  656. package/dist/web/lib/sessionTranscriptRenderer.d.mts.map +1 -0
  657. package/dist/web/lib/sessionTranscriptRenderer.mjs +17 -0
  658. package/dist/web/lib/sessionTranscriptRenderer.mjs.map +1 -0
  659. package/dist/web/lib/settingsApi.cjs +237 -0
  660. package/dist/web/lib/settingsApi.cjs.map +1 -0
  661. package/dist/web/lib/settingsApi.d.mts +57 -0
  662. package/dist/web/lib/settingsApi.d.mts.map +1 -0
  663. package/dist/web/lib/settingsApi.mjs +230 -0
  664. package/dist/web/lib/settingsApi.mjs.map +1 -0
  665. package/dist/web/lib/settingsDraft.cjs +48 -0
  666. package/dist/web/lib/settingsDraft.cjs.map +1 -0
  667. package/dist/web/lib/settingsDraft.d.mts +28 -0
  668. package/dist/web/lib/settingsDraft.d.mts.map +1 -0
  669. package/dist/web/lib/settingsDraft.mjs +45 -0
  670. package/dist/web/lib/settingsDraft.mjs.map +1 -0
  671. package/dist/web/lib/settingsSections.cjs +108 -0
  672. package/dist/web/lib/settingsSections.cjs.map +1 -0
  673. package/dist/web/lib/settingsSections.d.mts +36 -0
  674. package/dist/web/lib/settingsSections.d.mts.map +1 -0
  675. package/dist/web/lib/settingsSections.mjs +105 -0
  676. package/dist/web/lib/settingsSections.mjs.map +1 -0
  677. package/dist/web/lib/statusLine.cjs +82 -0
  678. package/dist/web/lib/statusLine.cjs.map +1 -0
  679. package/dist/web/lib/statusLine.d.mts +27 -0
  680. package/dist/web/lib/statusLine.d.mts.map +1 -0
  681. package/dist/web/lib/statusLine.mjs +79 -0
  682. package/dist/web/lib/statusLine.mjs.map +1 -0
  683. package/dist/web/lib/stepUp.cjs +41 -0
  684. package/dist/web/lib/stepUp.cjs.map +1 -0
  685. package/dist/web/lib/stepUp.d.mts +18 -0
  686. package/dist/web/lib/stepUp.d.mts.map +1 -0
  687. package/dist/web/lib/stepUp.mjs +41 -0
  688. package/dist/web/lib/stepUp.mjs.map +1 -0
  689. package/dist/web/lib/templateCatalog.cjs +123 -0
  690. package/dist/web/lib/templateCatalog.cjs.map +1 -0
  691. package/dist/web/lib/templateCatalog.d.mts +38 -0
  692. package/dist/web/lib/templateCatalog.d.mts.map +1 -0
  693. package/dist/web/lib/templateCatalog.mjs +118 -0
  694. package/dist/web/lib/templateCatalog.mjs.map +1 -0
  695. package/dist/web/lib/threadRenderer.cjs +25 -0
  696. package/dist/web/lib/threadRenderer.cjs.map +1 -0
  697. package/dist/web/lib/threadRenderer.d.mts +17 -0
  698. package/dist/web/lib/threadRenderer.d.mts.map +1 -0
  699. package/dist/web/lib/threadRenderer.mjs +23 -0
  700. package/dist/web/lib/threadRenderer.mjs.map +1 -0
  701. package/dist/web/lib/timelineGroups.cjs +83 -0
  702. package/dist/web/lib/timelineGroups.cjs.map +1 -0
  703. package/dist/web/lib/timelineGroups.d.mts +36 -0
  704. package/dist/web/lib/timelineGroups.d.mts.map +1 -0
  705. package/dist/web/lib/timelineGroups.mjs +81 -0
  706. package/dist/web/lib/timelineGroups.mjs.map +1 -0
  707. package/dist/web/lib/toolCompletionTabs.cjs +98 -0
  708. package/dist/web/lib/toolCompletionTabs.cjs.map +1 -0
  709. package/dist/web/lib/toolCompletionTabs.d.mts +14 -0
  710. package/dist/web/lib/toolCompletionTabs.d.mts.map +1 -0
  711. package/dist/web/lib/toolCompletionTabs.mjs +98 -0
  712. package/dist/web/lib/toolCompletionTabs.mjs.map +1 -0
  713. package/dist/web/lib/toolMessageProps.cjs +19 -0
  714. package/dist/web/lib/toolMessageProps.cjs.map +1 -0
  715. package/dist/web/lib/toolMessageProps.d.mts +7 -0
  716. package/dist/web/lib/toolMessageProps.d.mts.map +1 -0
  717. package/dist/web/lib/toolMessageProps.mjs +19 -0
  718. package/dist/web/lib/toolMessageProps.mjs.map +1 -0
  719. package/dist/web/lib/toolPrompt.cjs +44 -0
  720. package/dist/web/lib/toolPrompt.cjs.map +1 -0
  721. package/dist/web/lib/toolPrompt.d.mts +34 -0
  722. package/dist/web/lib/toolPrompt.d.mts.map +1 -0
  723. package/dist/web/lib/toolPrompt.mjs +44 -0
  724. package/dist/web/lib/toolPrompt.mjs.map +1 -0
  725. package/dist/web/lib/transport.cjs +57 -0
  726. package/dist/web/lib/transport.cjs.map +1 -0
  727. package/dist/web/lib/transport.d.mts +40 -0
  728. package/dist/web/lib/transport.d.mts.map +1 -0
  729. package/dist/web/lib/transport.mjs +50 -0
  730. package/dist/web/lib/transport.mjs.map +1 -0
  731. package/dist/web/lib/useSessionMcp.cjs +65 -0
  732. package/dist/web/lib/useSessionMcp.cjs.map +1 -0
  733. package/dist/web/lib/useSessionMcp.d.mts +15 -0
  734. package/dist/web/lib/useSessionMcp.d.mts.map +1 -0
  735. package/dist/web/lib/useSessionMcp.mjs +65 -0
  736. package/dist/web/lib/useSessionMcp.mjs.map +1 -0
  737. package/dist/web/lib/webauthnClient.cjs +110 -0
  738. package/dist/web/lib/webauthnClient.cjs.map +1 -0
  739. package/dist/web/lib/webauthnClient.d.mts +32 -0
  740. package/dist/web/lib/webauthnClient.d.mts.map +1 -0
  741. package/dist/web/lib/webauthnClient.mjs +106 -0
  742. package/dist/web/lib/webauthnClient.mjs.map +1 -0
  743. package/dist/web/lib/webmcpSimulator.cjs +105 -0
  744. package/dist/web/lib/webmcpSimulator.cjs.map +1 -0
  745. package/dist/web/lib/webmcpSimulator.mjs +105 -0
  746. package/dist/web/lib/webmcpSimulator.mjs.map +1 -0
  747. package/dist/web/stores/captureStore.cjs +137 -0
  748. package/dist/web/stores/captureStore.cjs.map +1 -0
  749. package/dist/web/stores/captureStore.d.mts +13 -0
  750. package/dist/web/stores/captureStore.d.mts.map +1 -0
  751. package/dist/web/stores/captureStore.mjs +133 -0
  752. package/dist/web/stores/captureStore.mjs.map +1 -0
  753. package/dist/web/stores/composerStore.cjs +390 -0
  754. package/dist/web/stores/composerStore.cjs.map +1 -0
  755. package/dist/web/stores/composerStore.d.mts +101 -0
  756. package/dist/web/stores/composerStore.d.mts.map +1 -0
  757. package/dist/web/stores/composerStore.mjs +370 -0
  758. package/dist/web/stores/composerStore.mjs.map +1 -0
  759. package/dist/web/stores/composerSubmissionStore.cjs +88 -0
  760. package/dist/web/stores/composerSubmissionStore.cjs.map +1 -0
  761. package/dist/web/stores/composerSubmissionStore.d.mts +11 -0
  762. package/dist/web/stores/composerSubmissionStore.d.mts.map +1 -0
  763. package/dist/web/stores/composerSubmissionStore.mjs +87 -0
  764. package/dist/web/stores/composerSubmissionStore.mjs.map +1 -0
  765. package/dist/web/stores/dashboardStateStore.cjs +35 -0
  766. package/dist/web/stores/dashboardStateStore.cjs.map +1 -0
  767. package/dist/web/stores/dashboardStateStore.d.mts +11 -0
  768. package/dist/web/stores/dashboardStateStore.d.mts.map +1 -0
  769. package/dist/web/stores/dashboardStateStore.mjs +33 -0
  770. package/dist/web/stores/dashboardStateStore.mjs.map +1 -0
  771. package/dist/web/stores/devProxyStore.cjs +76 -0
  772. package/dist/web/stores/devProxyStore.cjs.map +1 -0
  773. package/dist/web/stores/devProxyStore.d.mts +25 -0
  774. package/dist/web/stores/devProxyStore.d.mts.map +1 -0
  775. package/dist/web/stores/devProxyStore.mjs +73 -0
  776. package/dist/web/stores/devProxyStore.mjs.map +1 -0
  777. package/dist/web/stores/dialogDraftStore.cjs +38 -0
  778. package/dist/web/stores/dialogDraftStore.cjs.map +1 -0
  779. package/dist/web/stores/dialogDraftStore.d.mts +13 -0
  780. package/dist/web/stores/dialogDraftStore.d.mts.map +1 -0
  781. package/dist/web/stores/dialogDraftStore.mjs +36 -0
  782. package/dist/web/stores/dialogDraftStore.mjs.map +1 -0
  783. package/dist/web/stores/fileLinkModesStore.cjs +20 -0
  784. package/dist/web/stores/fileLinkModesStore.cjs.map +1 -0
  785. package/dist/web/stores/fileLinkModesStore.d.mts +5 -0
  786. package/dist/web/stores/fileLinkModesStore.d.mts.map +1 -0
  787. package/dist/web/stores/fileLinkModesStore.mjs +20 -0
  788. package/dist/web/stores/fileLinkModesStore.mjs.map +1 -0
  789. package/dist/web/stores/menuStore.cjs +85 -0
  790. package/dist/web/stores/menuStore.cjs.map +1 -0
  791. package/dist/web/stores/menuStore.d.mts +42 -0
  792. package/dist/web/stores/menuStore.d.mts.map +1 -0
  793. package/dist/web/stores/menuStore.mjs +79 -0
  794. package/dist/web/stores/menuStore.mjs.map +1 -0
  795. package/dist/web/stores/newSessionStore.cjs +93 -0
  796. package/dist/web/stores/newSessionStore.cjs.map +1 -0
  797. package/dist/web/stores/newSessionStore.d.mts +30 -0
  798. package/dist/web/stores/newSessionStore.d.mts.map +1 -0
  799. package/dist/web/stores/newSessionStore.mjs +86 -0
  800. package/dist/web/stores/newSessionStore.mjs.map +1 -0
  801. package/dist/web/stores/pagedTranscriptStore.cjs +235 -0
  802. package/dist/web/stores/pagedTranscriptStore.cjs.map +1 -0
  803. package/dist/web/stores/pagedTranscriptStore.d.mts +12 -0
  804. package/dist/web/stores/pagedTranscriptStore.d.mts.map +1 -0
  805. package/dist/web/stores/pagedTranscriptStore.mjs +235 -0
  806. package/dist/web/stores/pagedTranscriptStore.mjs.map +1 -0
  807. package/dist/web/stores/paletteStore.cjs +37 -0
  808. package/dist/web/stores/paletteStore.cjs.map +1 -0
  809. package/dist/web/stores/paletteStore.d.mts +14 -0
  810. package/dist/web/stores/paletteStore.d.mts.map +1 -0
  811. package/dist/web/stores/paletteStore.mjs +34 -0
  812. package/dist/web/stores/paletteStore.mjs.map +1 -0
  813. package/dist/web/stores/railDialogStore.cjs +105 -0
  814. package/dist/web/stores/railDialogStore.cjs.map +1 -0
  815. package/dist/web/stores/railDialogStore.d.mts +32 -0
  816. package/dist/web/stores/railDialogStore.d.mts.map +1 -0
  817. package/dist/web/stores/railDialogStore.mjs +97 -0
  818. package/dist/web/stores/railDialogStore.mjs.map +1 -0
  819. package/dist/web/stores/remoteAccessStore.cjs +216 -0
  820. package/dist/web/stores/remoteAccessStore.cjs.map +1 -0
  821. package/dist/web/stores/remoteAccessStore.d.mts +48 -0
  822. package/dist/web/stores/remoteAccessStore.d.mts.map +1 -0
  823. package/dist/web/stores/remoteAccessStore.mjs +202 -0
  824. package/dist/web/stores/remoteAccessStore.mjs.map +1 -0
  825. package/dist/web/stores/sessionChannelHoldsStore.cjs +43 -0
  826. package/dist/web/stores/sessionChannelHoldsStore.cjs.map +1 -0
  827. package/dist/web/stores/sessionChannelHoldsStore.d.mts +9 -0
  828. package/dist/web/stores/sessionChannelHoldsStore.d.mts.map +1 -0
  829. package/dist/web/stores/sessionChannelHoldsStore.mjs +42 -0
  830. package/dist/web/stores/sessionChannelHoldsStore.mjs.map +1 -0
  831. package/dist/web/stores/sessionStore.cjs +610 -0
  832. package/dist/web/stores/sessionStore.cjs.map +1 -0
  833. package/dist/web/stores/sessionStore.d.mts +116 -0
  834. package/dist/web/stores/sessionStore.d.mts.map +1 -0
  835. package/dist/web/stores/sessionStore.mjs +568 -0
  836. package/dist/web/stores/sessionStore.mjs.map +1 -0
  837. package/dist/web/stores/sessionsStore.cjs +272 -0
  838. package/dist/web/stores/sessionsStore.cjs.map +1 -0
  839. package/dist/web/stores/sessionsStore.d.mts +74 -0
  840. package/dist/web/stores/sessionsStore.d.mts.map +1 -0
  841. package/dist/web/stores/sessionsStore.mjs +257 -0
  842. package/dist/web/stores/sessionsStore.mjs.map +1 -0
  843. package/dist/web/stores/settingsDraftStore.cjs +138 -0
  844. package/dist/web/stores/settingsDraftStore.cjs.map +1 -0
  845. package/dist/web/stores/settingsDraftStore.d.mts +27 -0
  846. package/dist/web/stores/settingsDraftStore.d.mts.map +1 -0
  847. package/dist/web/stores/settingsDraftStore.mjs +132 -0
  848. package/dist/web/stores/settingsDraftStore.mjs.map +1 -0
  849. package/dist/web/stores/templateStore.cjs +136 -0
  850. package/dist/web/stores/templateStore.cjs.map +1 -0
  851. package/dist/web/stores/templateStore.d.mts +20 -0
  852. package/dist/web/stores/templateStore.d.mts.map +1 -0
  853. package/dist/web/stores/templateStore.mjs +131 -0
  854. package/dist/web/stores/templateStore.mjs.map +1 -0
  855. package/dist/web/stores/themeStore.cjs +42 -0
  856. package/dist/web/stores/themeStore.cjs.map +1 -0
  857. package/dist/web/stores/themeStore.d.mts +20 -0
  858. package/dist/web/stores/themeStore.d.mts.map +1 -0
  859. package/dist/web/stores/themeStore.mjs +39 -0
  860. package/dist/web/stores/themeStore.mjs.map +1 -0
  861. package/dist/web/stores/threadStore.cjs +122 -0
  862. package/dist/web/stores/threadStore.cjs.map +1 -0
  863. package/dist/web/stores/threadStore.d.mts +24 -0
  864. package/dist/web/stores/threadStore.d.mts.map +1 -0
  865. package/dist/web/stores/threadStore.mjs +114 -0
  866. package/dist/web/stores/threadStore.mjs.map +1 -0
  867. package/dist/web/stores/toolPromptStore.cjs +15 -0
  868. package/dist/web/stores/toolPromptStore.cjs.map +1 -0
  869. package/dist/web/stores/toolPromptStore.d.mts +23 -0
  870. package/dist/web/stores/toolPromptStore.d.mts.map +1 -0
  871. package/dist/web/stores/toolPromptStore.mjs +14 -0
  872. package/dist/web/stores/toolPromptStore.mjs.map +1 -0
  873. package/dist/web/stores/transientTabsStore.cjs +66 -0
  874. package/dist/web/stores/transientTabsStore.cjs.map +1 -0
  875. package/dist/web/stores/transientTabsStore.d.mts +21 -0
  876. package/dist/web/stores/transientTabsStore.d.mts.map +1 -0
  877. package/dist/web/stores/transientTabsStore.mjs +59 -0
  878. package/dist/web/stores/transientTabsStore.mjs.map +1 -0
  879. package/dist/web/stores/uiStore.cjs +47 -0
  880. package/dist/web/stores/uiStore.cjs.map +1 -0
  881. package/dist/web/stores/uiStore.d.mts +18 -0
  882. package/dist/web/stores/uiStore.d.mts.map +1 -0
  883. package/dist/web/stores/uiStore.mjs +45 -0
  884. package/dist/web/stores/uiStore.mjs.map +1 -0
  885. package/dist/web/stores/useOpenTab.cjs +31 -0
  886. package/dist/web/stores/useOpenTab.cjs.map +1 -0
  887. package/dist/web/stores/useOpenTab.d.mts +9 -0
  888. package/dist/web/stores/useOpenTab.d.mts.map +1 -0
  889. package/dist/web/stores/useOpenTab.mjs +31 -0
  890. package/dist/web/stores/useOpenTab.mjs.map +1 -0
  891. package/dist/web/stores/usePluginSlotProps.cjs +115 -0
  892. package/dist/web/stores/usePluginSlotProps.cjs.map +1 -0
  893. package/dist/web/stores/usePluginSlotProps.d.mts +6 -0
  894. package/dist/web/stores/usePluginSlotProps.d.mts.map +1 -0
  895. package/dist/web/stores/usePluginSlotProps.mjs +115 -0
  896. package/dist/web/stores/usePluginSlotProps.mjs.map +1 -0
  897. package/dist/web/stores/useToolPrompt.cjs +42 -0
  898. package/dist/web/stores/useToolPrompt.cjs.map +1 -0
  899. package/dist/web/stores/useToolPrompt.d.mts +14 -0
  900. package/dist/web/stores/useToolPrompt.d.mts.map +1 -0
  901. package/dist/web/stores/useToolPrompt.mjs +42 -0
  902. package/dist/web/stores/useToolPrompt.mjs.map +1 -0
  903. package/dist/web/stores/useWebPluginRegistry.cjs +11 -0
  904. package/dist/web/stores/useWebPluginRegistry.cjs.map +1 -0
  905. package/dist/web/stores/useWebPluginRegistry.d.mts +5 -0
  906. package/dist/web/stores/useWebPluginRegistry.d.mts.map +1 -0
  907. package/dist/web/stores/useWebPluginRegistry.mjs +11 -0
  908. package/dist/web/stores/useWebPluginRegistry.mjs.map +1 -0
  909. package/dist/web/stores/workspaceAdmissionStore.cjs +67 -0
  910. package/dist/web/stores/workspaceAdmissionStore.cjs.map +1 -0
  911. package/dist/web/stores/workspaceAdmissionStore.d.mts +24 -0
  912. package/dist/web/stores/workspaceAdmissionStore.d.mts.map +1 -0
  913. package/dist/web/stores/workspaceAdmissionStore.mjs +64 -0
  914. package/dist/web/stores/workspaceAdmissionStore.mjs.map +1 -0
  915. package/dist/web/stores/workspacesStore.cjs +83 -0
  916. package/dist/web/stores/workspacesStore.cjs.map +1 -0
  917. package/dist/web/stores/workspacesStore.d.mts +17 -0
  918. package/dist/web/stores/workspacesStore.d.mts.map +1 -0
  919. package/dist/web/stores/workspacesStore.mjs +78 -0
  920. package/dist/web/stores/workspacesStore.mjs.map +1 -0
  921. package/llms.txt +3 -0
  922. package/package.json +107 -0
  923. package/styles/dashboard.css +2 -0
  924. package/styles/preview.css +3 -0
@@ -0,0 +1,40 @@
1
+ import { requestSessionProtocolFrame } from "./sessionProtocolCommands.mjs";
2
+ //#region src/web/lib/transport.d.ts
3
+ type Frame = Record<string, unknown>;
4
+ declare let invokePlugin: ((call: {
5
+ mount: {
6
+ scope: 'global';
7
+ } | {
8
+ scope: 'workspace';
9
+ workspaceId: string;
10
+ } | {
11
+ scope: 'session';
12
+ sessionId: string;
13
+ };
14
+ service: string;
15
+ method: string;
16
+ input: unknown;
17
+ }) => Promise<unknown>) | undefined;
18
+ /**
19
+ * Holds the live socket sender.
20
+ *
21
+ * The socket is owned by the composition root but commands are issued from
22
+ * feature code, and this keeps that one indirection explicit instead of
23
+ * threading a sender through every component.
24
+ */
25
+ export declare function bindTransport(sender: (frame: object) => void, pluginInvoker?: typeof invokePlugin): void;
26
+ export declare function releaseTransport(): void;
27
+ /** Sends one command frame to a session's agent, enveloped for the hub. */
28
+ export declare function sendFrame(sessionId: string, frame: Frame): void;
29
+ /** Resolves when a session command is accepted or explicitly refused, never when a turn finishes. */
30
+ export declare function sendFrameWithAck(sessionId: string, frame: Frame): ReturnType<typeof requestSessionProtocolFrame>;
31
+ /** Sends one hub-level frame (subscribe, unsubscribe) as-is. */
32
+ export declare function sendHubFrame(frame: object): void;
33
+ /** Calls an exact-scope typed server method through the authenticated Chord binding. */
34
+ export declare function invokeServerMethod(call: Parameters<NonNullable<typeof invokePlugin>>[0]): Promise<unknown>;
35
+ /** Subscribes to fresh page socket connections. */
36
+ export declare function onHubConnected(listener: () => void): () => void;
37
+ /** Notifies page socket consumers after the hub establishes a fresh connection. */
38
+ export declare function notifyHubConnected(): void;
39
+ //#endregion
40
+ //# sourceMappingURL=transport.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.mts","names":[],"sources":["../../../src/web/lib/transport.ts"],"mappings":";;KAEK,QAAQ;YAGT,gBACE;EACA;IACM;;IACA;IAAoB;;IACpB;IAAkB;;EACxB;EACA;EACA;MACI;;;;;;;;wBAWM,cAAc,SAAS,wBAAwB,uBAAuB;wBAKtE;;wBAMA,UAAU,mBAAmB,OAAO;;wBAKpC,iBAAiB,mBAAmB,OAAO,QAAQ,kBAAkB;;wBAKrE,aAAa;;wBAKb,mBAAmB,MAAM,WAAW,mBAAmB,oBAAoB;;wBAM3E,eAAe;;wBAMf"}
@@ -0,0 +1,50 @@
1
+ import { requestSessionProtocolFrame, sendSessionProtocolFrame } from "./sessionProtocolCommands.mjs";
2
+ //#region src/web/lib/transport.ts
3
+ let send;
4
+ let invokePlugin;
5
+ const hubConnectedListeners = /* @__PURE__ */ new Set();
6
+ /**
7
+ * Holds the live socket sender.
8
+ *
9
+ * The socket is owned by the composition root but commands are issued from
10
+ * feature code, and this keeps that one indirection explicit instead of
11
+ * threading a sender through every component.
12
+ */
13
+ function bindTransport(sender, pluginInvoker) {
14
+ send = sender;
15
+ invokePlugin = pluginInvoker;
16
+ }
17
+ function releaseTransport() {
18
+ send = void 0;
19
+ invokePlugin = void 0;
20
+ }
21
+ /** Sends one command frame to a session's agent, enveloped for the hub. */
22
+ function sendFrame(sessionId, frame) {
23
+ sendSessionProtocolFrame(sessionId, frame);
24
+ }
25
+ /** Resolves when a session command is accepted or explicitly refused, never when a turn finishes. */
26
+ function sendFrameWithAck(sessionId, frame) {
27
+ return requestSessionProtocolFrame(sessionId, frame);
28
+ }
29
+ /** Sends one hub-level frame (subscribe, unsubscribe) as-is. */
30
+ function sendHubFrame(frame) {
31
+ send?.(frame);
32
+ }
33
+ /** Calls an exact-scope typed server method through the authenticated Chord binding. */
34
+ function invokeServerMethod(call) {
35
+ if (!invokePlugin) return Promise.reject(/* @__PURE__ */ new Error("The plugin protocol is not connected."));
36
+ return invokePlugin(call);
37
+ }
38
+ /** Subscribes to fresh page socket connections. */
39
+ function onHubConnected(listener) {
40
+ hubConnectedListeners.add(listener);
41
+ return () => hubConnectedListeners.delete(listener);
42
+ }
43
+ /** Notifies page socket consumers after the hub establishes a fresh connection. */
44
+ function notifyHubConnected() {
45
+ for (const listener of hubConnectedListeners) listener();
46
+ }
47
+ //#endregion
48
+ export { bindTransport, invokeServerMethod, notifyHubConnected, onHubConnected, releaseTransport, sendFrame, sendFrameWithAck, sendHubFrame };
49
+
50
+ //# sourceMappingURL=transport.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.mjs","names":[],"sources":["../../../src/web/lib/transport.ts"],"sourcesContent":["import { requestSessionProtocolFrame, sendSessionProtocolFrame } from './sessionProtocolCommands';\n\ntype Frame = Record<string, unknown>;\n\nlet send: ((frame: object) => void) | undefined;\nlet invokePlugin:\n | ((call: {\n mount:\n | { scope: 'global' }\n | { scope: 'workspace'; workspaceId: string }\n | { scope: 'session'; sessionId: string };\n service: string;\n method: string;\n input: unknown;\n }) => Promise<unknown>)\n | undefined;\nconst hubConnectedListeners = new Set<() => void>();\n\n/**\n * Holds the live socket sender.\n *\n * The socket is owned by the composition root but commands are issued from\n * feature code, and this keeps that one indirection explicit instead of\n * threading a sender through every component.\n */\nexport function bindTransport(sender: (frame: object) => void, pluginInvoker?: typeof invokePlugin): void {\n send = sender;\n invokePlugin = pluginInvoker;\n}\n\nexport function releaseTransport(): void {\n send = undefined;\n invokePlugin = undefined;\n}\n\n/** Sends one command frame to a session's agent, enveloped for the hub. */\nexport function sendFrame(sessionId: string, frame: Frame): void {\n sendSessionProtocolFrame(sessionId, frame);\n}\n\n/** Resolves when a session command is accepted or explicitly refused, never when a turn finishes. */\nexport function sendFrameWithAck(sessionId: string, frame: Frame): ReturnType<typeof requestSessionProtocolFrame> {\n return requestSessionProtocolFrame(sessionId, frame);\n}\n\n/** Sends one hub-level frame (subscribe, unsubscribe) as-is. */\nexport function sendHubFrame(frame: object): void {\n send?.(frame);\n}\n\n/** Calls an exact-scope typed server method through the authenticated Chord binding. */\nexport function invokeServerMethod(call: Parameters<NonNullable<typeof invokePlugin>>[0]): Promise<unknown> {\n if (!invokePlugin) return Promise.reject(new Error('The plugin protocol is not connected.'));\n return invokePlugin(call);\n}\n\n/** Subscribes to fresh page socket connections. */\nexport function onHubConnected(listener: () => void): () => void {\n hubConnectedListeners.add(listener);\n return () => hubConnectedListeners.delete(listener);\n}\n\n/** Notifies page socket consumers after the hub establishes a fresh connection. */\nexport function notifyHubConnected(): void {\n for (const listener of hubConnectedListeners) listener();\n}\n"],"mappings":";;AAIA,IAAI;AACJ,IAAI;AAWJ,MAAM,wCAAwB,IAAI,IAAgB;;;;;;;;AASlD,SAAgB,cAAc,QAAiC,eAA2C;CACxG,OAAO;CACP,eAAe;AACjB;AAEA,SAAgB,mBAAyB;CACvC,OAAO,KAAA;CACP,eAAe,KAAA;AACjB;;AAGA,SAAgB,UAAU,WAAmB,OAAoB;CAC/D,yBAAyB,WAAW,KAAK;AAC3C;;AAGA,SAAgB,iBAAiB,WAAmB,OAA8D;CAChH,OAAO,4BAA4B,WAAW,KAAK;AACrD;;AAGA,SAAgB,aAAa,OAAqB;CAChD,OAAO,KAAK;AACd;;AAGA,SAAgB,mBAAmB,MAAyE;CAC1G,IAAI,CAAC,cAAc,OAAO,QAAQ,uBAAO,IAAI,MAAM,uCAAuC,CAAC;CAC3F,OAAO,aAAa,IAAI;AAC1B;;AAGA,SAAgB,eAAe,UAAkC;CAC/D,sBAAsB,IAAI,QAAQ;CAClC,aAAa,sBAAsB,OAAO,QAAQ;AACpD;;AAGA,SAAgB,qBAA2B;CACzC,KAAK,MAAM,YAAY,uBAAuB,SAAS;AACzD"}
@@ -0,0 +1,65 @@
1
+ const require_sessionMcpApi = require("./sessionMcpApi.cjs");
2
+ let react = require("react");
3
+ //#region src/web/lib/useSessionMcp.ts
4
+ const REFRESH_MS = 2e3;
5
+ /** One host request stream feeds both MCP surfaces. Old session responses never cross a route change. */
6
+ function useSessionMcp(workspaceId, sessionId) {
7
+ const key = JSON.stringify([workspaceId, sessionId]);
8
+ const [page, setPage] = (0, react.useState)({ key });
9
+ const before = page.key === key ? page.before : void 0;
10
+ const [retry, setRetry] = (0, react.useState)(0);
11
+ const [result, setResult] = (0, react.useState)();
12
+ (0, react.useEffect)(() => {
13
+ if (workspaceId === void 0 || sessionId === void 0) return;
14
+ let disposed = false;
15
+ let timer;
16
+ const read = async () => {
17
+ const response = await require_sessionMcpApi.readSessionMcpActivity(workspaceId, sessionId, before);
18
+ if (disposed) return;
19
+ setResult((previous) => "activity" in response ? {
20
+ key,
21
+ before,
22
+ snapshot: response.activity
23
+ } : {
24
+ key,
25
+ before,
26
+ snapshot: previous?.key === key ? previous.snapshot : void 0,
27
+ error: response.error
28
+ });
29
+ timer = setTimeout(() => {
30
+ if (document.visibilityState === "hidden") timer = setTimeout(() => void read(), REFRESH_MS);
31
+ else read();
32
+ }, REFRESH_MS);
33
+ };
34
+ read();
35
+ return () => {
36
+ disposed = true;
37
+ clearTimeout(timer);
38
+ };
39
+ }, [
40
+ key,
41
+ workspaceId,
42
+ sessionId,
43
+ before,
44
+ retry
45
+ ]);
46
+ const current = result?.key === key ? result : void 0;
47
+ return {
48
+ snapshot: current?.snapshot,
49
+ loading: current === void 0 || current.before !== before,
50
+ error: current?.error,
51
+ before,
52
+ showLatest: () => setPage({ key }),
53
+ loadOlder: () => {
54
+ if (current?.snapshot?.nextBefore !== void 0) setPage({
55
+ key,
56
+ before: current.snapshot.nextBefore
57
+ });
58
+ },
59
+ refresh: () => setRetry((value) => value + 1)
60
+ };
61
+ }
62
+ //#endregion
63
+ exports.useSessionMcp = useSessionMcp;
64
+
65
+ //# sourceMappingURL=useSessionMcp.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionMcp.cjs","names":["useState","readSessionMcpActivity"],"sources":["../../../src/web/lib/useSessionMcp.ts"],"sourcesContent":["import type { SessionMcpActivitySnapshot } from '@agimon-ai/po-core/sessionMcp';\nimport { useEffect, useState } from 'react';\n\nimport { readSessionMcpActivity } from './sessionMcpApi';\n\nconst REFRESH_MS = 2000;\n\nexport interface SessionMcpViewState {\n snapshot?: SessionMcpActivitySnapshot;\n loading: boolean;\n error?: string;\n before?: number;\n showLatest: () => void;\n loadOlder: () => void;\n refresh: () => void;\n}\n\n/** One host request stream feeds both MCP surfaces. Old session responses never cross a route change. */\nexport function useSessionMcp(workspaceId: string | undefined, sessionId: string | undefined): SessionMcpViewState {\n const key = JSON.stringify([workspaceId, sessionId]);\n const [page, setPage] = useState<{ key: string; before?: number }>({ key });\n const before = page.key === key ? page.before : undefined;\n const [retry, setRetry] = useState(0);\n const [result, setResult] = useState<{\n key: string;\n before?: number;\n snapshot?: SessionMcpActivitySnapshot;\n error?: string;\n }>();\n useEffect(() => {\n if (workspaceId === undefined || sessionId === undefined) return;\n let disposed = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const read = async (): Promise<void> => {\n const response = await readSessionMcpActivity(workspaceId, sessionId, before);\n if (disposed) return;\n setResult((previous) =>\n 'activity' in response\n ? { key, before, snapshot: response.activity }\n : { key, before, snapshot: previous?.key === key ? previous.snapshot : undefined, error: response.error },\n );\n timer = setTimeout(() => {\n if (document.visibilityState === 'hidden') timer = setTimeout(() => void read(), REFRESH_MS);\n else void read();\n }, REFRESH_MS);\n };\n void read();\n return () => {\n disposed = true;\n clearTimeout(timer);\n };\n }, [key, workspaceId, sessionId, before, retry]);\n const current = result?.key === key ? result : undefined;\n return {\n snapshot: current?.snapshot,\n loading: current === undefined || current.before !== before,\n error: current?.error,\n before,\n showLatest: () => setPage({ key }),\n loadOlder: () => {\n if (current?.snapshot?.nextBefore !== undefined) setPage({ key, before: current.snapshot.nextBefore });\n },\n refresh: () => setRetry((value) => value + 1),\n };\n}\n"],"mappings":";;;AAKA,MAAM,aAAa;;AAanB,SAAgB,cAAc,aAAiC,WAAoD;CACjH,MAAM,MAAM,KAAK,UAAU,CAAC,aAAa,SAAS,CAAC;CACnD,MAAM,CAAC,MAAM,YAAA,GAAWA,MAAAA,SAAAA,CAA2C,EAAE,IAAI,CAAC;CAC1E,MAAM,SAAS,KAAK,QAAQ,MAAM,KAAK,SAAS,KAAA;CAChD,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,CAAS,CAAC;CACpC,MAAM,CAAC,QAAQ,cAAA,GAAaA,MAAAA,SAAAA,CAKzB;CACH,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,gBAAgB,KAAA,KAAa,cAAc,KAAA,GAAW;EAC1D,IAAI,WAAW;EACf,IAAI;EACJ,MAAM,OAAO,YAA2B;GACtC,MAAM,WAAW,MAAMC,sBAAAA,uBAAuB,aAAa,WAAW,MAAM;GAC5E,IAAI,UAAU;GACd,WAAW,aACT,cAAc,WACV;IAAE;IAAK;IAAQ,UAAU,SAAS;GAAS,IAC3C;IAAE;IAAK;IAAQ,UAAU,UAAU,QAAQ,MAAM,SAAS,WAAW,KAAA;IAAW,OAAO,SAAS;GAAM,CAC5G;GACA,QAAQ,iBAAiB;IACvB,IAAI,SAAS,oBAAoB,UAAU,QAAQ,iBAAiB,KAAK,KAAK,GAAG,UAAU;SACtF,KAAU;GACjB,GAAG,UAAU;EACf;EACA,KAAU;EACV,aAAa;GACX,WAAW;GACX,aAAa,KAAK;EACpB;CACF,GAAG;EAAC;EAAK;EAAa;EAAW;EAAQ;CAAK,CAAC;CAC/C,MAAM,UAAU,QAAQ,QAAQ,MAAM,SAAS,KAAA;CAC/C,OAAO;EACL,UAAU,SAAS;EACnB,SAAS,YAAY,KAAA,KAAa,QAAQ,WAAW;EACrD,OAAO,SAAS;EAChB;EACA,kBAAkB,QAAQ,EAAE,IAAI,CAAC;EACjC,iBAAiB;GACf,IAAI,SAAS,UAAU,eAAe,KAAA,GAAW,QAAQ;IAAE;IAAK,QAAQ,QAAQ,SAAS;GAAW,CAAC;EACvG;EACA,eAAe,UAAU,UAAU,QAAQ,CAAC;CAC9C;AACF"}
@@ -0,0 +1,15 @@
1
+ import { SessionMcpActivitySnapshot } from "@agimon-ai/po-core/sessionMcp";
2
+ //#region src/web/lib/useSessionMcp.d.ts
3
+ export interface SessionMcpViewState {
4
+ snapshot?: SessionMcpActivitySnapshot;
5
+ loading: boolean;
6
+ error?: string;
7
+ before?: number;
8
+ showLatest: () => void;
9
+ loadOlder: () => void;
10
+ refresh: () => void;
11
+ }
12
+ /** One host request stream feeds both MCP surfaces. Old session responses never cross a route change. */
13
+ export declare function useSessionMcp(workspaceId: string | undefined, sessionId: string | undefined): SessionMcpViewState;
14
+ //#endregion
15
+ //# sourceMappingURL=useSessionMcp.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionMcp.d.mts","names":[],"sources":["../../../src/web/lib/useSessionMcp.ts"],"mappings":";;iBAOiB;EACf,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;;;wBAIc,cAAc,iCAAiC,gCAAgC"}
@@ -0,0 +1,65 @@
1
+ import { readSessionMcpActivity } from "./sessionMcpApi.mjs";
2
+ import { useEffect, useState } from "react";
3
+ //#region src/web/lib/useSessionMcp.ts
4
+ const REFRESH_MS = 2e3;
5
+ /** One host request stream feeds both MCP surfaces. Old session responses never cross a route change. */
6
+ function useSessionMcp(workspaceId, sessionId) {
7
+ const key = JSON.stringify([workspaceId, sessionId]);
8
+ const [page, setPage] = useState({ key });
9
+ const before = page.key === key ? page.before : void 0;
10
+ const [retry, setRetry] = useState(0);
11
+ const [result, setResult] = useState();
12
+ useEffect(() => {
13
+ if (workspaceId === void 0 || sessionId === void 0) return;
14
+ let disposed = false;
15
+ let timer;
16
+ const read = async () => {
17
+ const response = await readSessionMcpActivity(workspaceId, sessionId, before);
18
+ if (disposed) return;
19
+ setResult((previous) => "activity" in response ? {
20
+ key,
21
+ before,
22
+ snapshot: response.activity
23
+ } : {
24
+ key,
25
+ before,
26
+ snapshot: previous?.key === key ? previous.snapshot : void 0,
27
+ error: response.error
28
+ });
29
+ timer = setTimeout(() => {
30
+ if (document.visibilityState === "hidden") timer = setTimeout(() => void read(), REFRESH_MS);
31
+ else read();
32
+ }, REFRESH_MS);
33
+ };
34
+ read();
35
+ return () => {
36
+ disposed = true;
37
+ clearTimeout(timer);
38
+ };
39
+ }, [
40
+ key,
41
+ workspaceId,
42
+ sessionId,
43
+ before,
44
+ retry
45
+ ]);
46
+ const current = result?.key === key ? result : void 0;
47
+ return {
48
+ snapshot: current?.snapshot,
49
+ loading: current === void 0 || current.before !== before,
50
+ error: current?.error,
51
+ before,
52
+ showLatest: () => setPage({ key }),
53
+ loadOlder: () => {
54
+ if (current?.snapshot?.nextBefore !== void 0) setPage({
55
+ key,
56
+ before: current.snapshot.nextBefore
57
+ });
58
+ },
59
+ refresh: () => setRetry((value) => value + 1)
60
+ };
61
+ }
62
+ //#endregion
63
+ export { useSessionMcp };
64
+
65
+ //# sourceMappingURL=useSessionMcp.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionMcp.mjs","names":[],"sources":["../../../src/web/lib/useSessionMcp.ts"],"sourcesContent":["import type { SessionMcpActivitySnapshot } from '@agimon-ai/po-core/sessionMcp';\nimport { useEffect, useState } from 'react';\n\nimport { readSessionMcpActivity } from './sessionMcpApi';\n\nconst REFRESH_MS = 2000;\n\nexport interface SessionMcpViewState {\n snapshot?: SessionMcpActivitySnapshot;\n loading: boolean;\n error?: string;\n before?: number;\n showLatest: () => void;\n loadOlder: () => void;\n refresh: () => void;\n}\n\n/** One host request stream feeds both MCP surfaces. Old session responses never cross a route change. */\nexport function useSessionMcp(workspaceId: string | undefined, sessionId: string | undefined): SessionMcpViewState {\n const key = JSON.stringify([workspaceId, sessionId]);\n const [page, setPage] = useState<{ key: string; before?: number }>({ key });\n const before = page.key === key ? page.before : undefined;\n const [retry, setRetry] = useState(0);\n const [result, setResult] = useState<{\n key: string;\n before?: number;\n snapshot?: SessionMcpActivitySnapshot;\n error?: string;\n }>();\n useEffect(() => {\n if (workspaceId === undefined || sessionId === undefined) return;\n let disposed = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const read = async (): Promise<void> => {\n const response = await readSessionMcpActivity(workspaceId, sessionId, before);\n if (disposed) return;\n setResult((previous) =>\n 'activity' in response\n ? { key, before, snapshot: response.activity }\n : { key, before, snapshot: previous?.key === key ? previous.snapshot : undefined, error: response.error },\n );\n timer = setTimeout(() => {\n if (document.visibilityState === 'hidden') timer = setTimeout(() => void read(), REFRESH_MS);\n else void read();\n }, REFRESH_MS);\n };\n void read();\n return () => {\n disposed = true;\n clearTimeout(timer);\n };\n }, [key, workspaceId, sessionId, before, retry]);\n const current = result?.key === key ? result : undefined;\n return {\n snapshot: current?.snapshot,\n loading: current === undefined || current.before !== before,\n error: current?.error,\n before,\n showLatest: () => setPage({ key }),\n loadOlder: () => {\n if (current?.snapshot?.nextBefore !== undefined) setPage({ key, before: current.snapshot.nextBefore });\n },\n refresh: () => setRetry((value) => value + 1),\n };\n}\n"],"mappings":";;;AAKA,MAAM,aAAa;;AAanB,SAAgB,cAAc,aAAiC,WAAoD;CACjH,MAAM,MAAM,KAAK,UAAU,CAAC,aAAa,SAAS,CAAC;CACnD,MAAM,CAAC,MAAM,WAAW,SAA2C,EAAE,IAAI,CAAC;CAC1E,MAAM,SAAS,KAAK,QAAQ,MAAM,KAAK,SAAS,KAAA;CAChD,MAAM,CAAC,OAAO,YAAY,SAAS,CAAC;CACpC,MAAM,CAAC,QAAQ,aAAa,SAKzB;CACH,gBAAgB;EACd,IAAI,gBAAgB,KAAA,KAAa,cAAc,KAAA,GAAW;EAC1D,IAAI,WAAW;EACf,IAAI;EACJ,MAAM,OAAO,YAA2B;GACtC,MAAM,WAAW,MAAM,uBAAuB,aAAa,WAAW,MAAM;GAC5E,IAAI,UAAU;GACd,WAAW,aACT,cAAc,WACV;IAAE;IAAK;IAAQ,UAAU,SAAS;GAAS,IAC3C;IAAE;IAAK;IAAQ,UAAU,UAAU,QAAQ,MAAM,SAAS,WAAW,KAAA;IAAW,OAAO,SAAS;GAAM,CAC5G;GACA,QAAQ,iBAAiB;IACvB,IAAI,SAAS,oBAAoB,UAAU,QAAQ,iBAAiB,KAAK,KAAK,GAAG,UAAU;SACtF,KAAU;GACjB,GAAG,UAAU;EACf;EACA,KAAU;EACV,aAAa;GACX,WAAW;GACX,aAAa,KAAK;EACpB;CACF,GAAG;EAAC;EAAK;EAAa;EAAW;EAAQ;CAAK,CAAC;CAC/C,MAAM,UAAU,QAAQ,QAAQ,MAAM,SAAS,KAAA;CAC/C,OAAO;EACL,UAAU,SAAS;EACnB,SAAS,YAAY,KAAA,KAAa,QAAQ,WAAW;EACrD,OAAO,SAAS;EAChB;EACA,kBAAkB,QAAQ,EAAE,IAAI,CAAC;EACjC,iBAAiB;GACf,IAAI,SAAS,UAAU,eAAe,KAAA,GAAW,QAAQ;IAAE;IAAK,QAAQ,QAAQ,SAAS;GAAW,CAAC;EACvG;EACA,eAAe,UAAU,UAAU,QAAQ,CAAC;CAC9C;AACF"}
@@ -0,0 +1,110 @@
1
+ const require_remoteAccess = require("../../types/remoteAccess.cjs");
2
+ const require_sealedSession = require("./sealedSession.cjs");
3
+ let _simplewebauthn_browser = require("@simplewebauthn/browser");
4
+ //#region src/web/lib/webauthnClient.ts
5
+ function describe(error) {
6
+ if (error instanceof Error) return error.name === "NotAllowedError" ? "That was cancelled." : error.message;
7
+ return String(error);
8
+ }
9
+ function passkeysAvailable() {
10
+ return (0, _simplewebauthn_browser.browserSupportsWebAuthn)();
11
+ }
12
+ async function postJson(route, body) {
13
+ const response = await require_sealedSession.sealedHttpSession.fetch(route, {
14
+ method: "POST",
15
+ headers: { "Content-Type": "application/json" },
16
+ credentials: "same-origin",
17
+ body: JSON.stringify(body ?? {})
18
+ });
19
+ if (!response.ok) return void 0;
20
+ const parsed = await response.json();
21
+ return typeof parsed === "object" && parsed !== null ? parsed : void 0;
22
+ }
23
+ /** Enrols this device's passkey. Local-only on the server, so this runs at the machine. */
24
+ async function registerPasskey() {
25
+ if (!passkeysAvailable()) return {
26
+ ok: false,
27
+ error: "This browser has no passkey support."
28
+ };
29
+ try {
30
+ const begun = await postJson(`${require_remoteAccess.REMOTE_API_ROUTE}/passkeys/register/begin`, {});
31
+ if (typeof begun?.ceremonyId !== "string" || begun.options === void 0) return {
32
+ ok: false,
33
+ error: "Passkeys are unavailable on this tunnel."
34
+ };
35
+ const response = await (0, _simplewebauthn_browser.startRegistration)({ optionsJSON: begun.options });
36
+ return await postJson(`/api/remote/passkeys/register/finish`, {
37
+ ceremonyId: begun.ceremonyId,
38
+ response
39
+ }) === void 0 ? {
40
+ ok: false,
41
+ error: "That passkey was not accepted."
42
+ } : { ok: true };
43
+ } catch (error) {
44
+ return {
45
+ ok: false,
46
+ error: describe(error)
47
+ };
48
+ }
49
+ }
50
+ /** Trades a registered passkey for a session, so a return visit needs no QR. */
51
+ async function signInWithPasskey() {
52
+ if (!passkeysAvailable()) return {
53
+ ok: false,
54
+ error: "This browser has no passkey support."
55
+ };
56
+ try {
57
+ const begun = await postJson(`${require_remoteAccess.REMOTE_API_ROUTE}/passkeys/authenticate/begin`, {});
58
+ if (typeof begun?.ceremonyId !== "string" || begun.options === void 0) return {
59
+ ok: false,
60
+ error: "Passkeys are unavailable on this tunnel."
61
+ };
62
+ const response = await (0, _simplewebauthn_browser.startAuthentication)({ optionsJSON: begun.options });
63
+ const finished = await postJson(`${require_remoteAccess.REMOTE_API_ROUTE}/passkeys/authenticate/finish`, {
64
+ ceremonyId: begun.ceremonyId,
65
+ response
66
+ });
67
+ if (typeof finished?.hostPublicKey !== "string" || finished.hostPublicKey === "") return {
68
+ ok: false,
69
+ error: "That passkey was not accepted."
70
+ };
71
+ require_sealedSession.rememberHostChannelKey(finished.hostPublicKey);
72
+ return { ok: true };
73
+ } catch (error) {
74
+ return {
75
+ ok: false,
76
+ error: describe(error)
77
+ };
78
+ }
79
+ }
80
+ /**
81
+ * Runs one gesture for one action and returns the header value that proves it.
82
+ *
83
+ * The assertion is base64url JSON because a WebAuthn response carries binary,
84
+ * and it travels in a header rather than a body so the retry can replay the
85
+ * original request untouched.
86
+ */
87
+ async function assertionFor(action) {
88
+ if (!passkeysAvailable()) return void 0;
89
+ try {
90
+ const begun = await postJson(`${require_remoteAccess.REMOTE_API_ROUTE}/challenge`, { action });
91
+ if (typeof begun?.ceremonyId !== "string" || begun.options === void 0) return void 0;
92
+ const response = await (0, _simplewebauthn_browser.startAuthentication)({ optionsJSON: begun.options });
93
+ return btoa(JSON.stringify({
94
+ ceremonyId: begun.ceremonyId,
95
+ response
96
+ })).replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
97
+ } catch {
98
+ return;
99
+ }
100
+ }
101
+ /** The header name a caller attaches an assertion under. */
102
+ const STEP_UP_HEADER_NAME = require_remoteAccess.STEP_UP_HEADER;
103
+ //#endregion
104
+ exports.STEP_UP_HEADER_NAME = STEP_UP_HEADER_NAME;
105
+ exports.assertionFor = assertionFor;
106
+ exports.passkeysAvailable = passkeysAvailable;
107
+ exports.registerPasskey = registerPasskey;
108
+ exports.signInWithPasskey = signInWithPasskey;
109
+
110
+ //# sourceMappingURL=webauthnClient.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthnClient.cjs","names":["browserSupportsWebAuthn","sealedHttpSession","REMOTE_API_ROUTE","startRegistration","startAuthentication","STEP_UP_HEADER"],"sources":["../../../src/web/lib/webauthnClient.ts"],"sourcesContent":["import { browserSupportsWebAuthn, startAuthentication, startRegistration } from '@simplewebauthn/browser';\n\nimport { REMOTE_API_ROUTE, STEP_UP_HEADER } from '../../types/remoteAccess';\nimport { rememberHostChannelKey, sealedHttpSession } from './sealedSession';\n\n/**\n * The browser half of the passkey ceremonies.\n *\n * A session cookie is a bearer token: whoever holds the bytes is you. A passkey\n * is a key in this device's secure enclave that never leaves it, so the two\n * actions that escalate out of \"drive the agent\" into \"own the machine\" can ask\n * for a gesture instead of trusting the cookie alone.\n */\n\nexport type PasskeyOutcome = { ok: true } | { ok: false; error: string };\n\nfunction describe(error: unknown): string {\n if (error instanceof Error) {\n // The user dismissing Face ID is not an error worth a stack trace.\n return error.name === 'NotAllowedError' ? 'That was cancelled.' : error.message;\n }\n return String(error);\n}\n\nexport function passkeysAvailable(): boolean {\n return browserSupportsWebAuthn();\n}\n\nasync function postJson(route: string, body: unknown): Promise<Record<string, unknown> | undefined> {\n const response = await sealedHttpSession.fetch(route, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n credentials: 'same-origin',\n body: JSON.stringify(body ?? {}),\n });\n if (!response.ok) return undefined;\n const parsed: unknown = await response.json();\n return typeof parsed === 'object' && parsed !== null ? (parsed as Record<string, unknown>) : undefined;\n}\n\n/** Enrols this device's passkey. Local-only on the server, so this runs at the machine. */\nexport async function registerPasskey(): Promise<PasskeyOutcome> {\n if (!passkeysAvailable()) return { ok: false, error: 'This browser has no passkey support.' };\n try {\n const begun = await postJson(`${REMOTE_API_ROUTE}/passkeys/register/begin`, {});\n if (typeof begun?.ceremonyId !== 'string' || begun.options === undefined) {\n return { ok: false, error: 'Passkeys are unavailable on this tunnel.' };\n }\n const response = await startRegistration({ optionsJSON: begun.options as never });\n const finished = await postJson(`${REMOTE_API_ROUTE}/passkeys/register/finish`, {\n ceremonyId: begun.ceremonyId,\n response,\n });\n return finished === undefined ? { ok: false, error: 'That passkey was not accepted.' } : { ok: true };\n } catch (error) {\n return { ok: false, error: describe(error) };\n }\n}\n\n/** Trades a registered passkey for a session, so a return visit needs no QR. */\nexport async function signInWithPasskey(): Promise<PasskeyOutcome> {\n if (!passkeysAvailable()) return { ok: false, error: 'This browser has no passkey support.' };\n try {\n const begun = await postJson(`${REMOTE_API_ROUTE}/passkeys/authenticate/begin`, {});\n if (typeof begun?.ceremonyId !== 'string' || begun.options === undefined) {\n return { ok: false, error: 'Passkeys are unavailable on this tunnel.' };\n }\n const response = await startAuthentication({ optionsJSON: begun.options as never });\n const finished = await postJson(`${REMOTE_API_ROUTE}/passkeys/authenticate/finish`, {\n ceremonyId: begun.ceremonyId,\n response,\n });\n if (typeof finished?.hostPublicKey !== 'string' || finished.hostPublicKey === '') {\n return { ok: false, error: 'That passkey was not accepted.' };\n }\n rememberHostChannelKey(finished.hostPublicKey);\n return { ok: true };\n } catch (error) {\n return { ok: false, error: describe(error) };\n }\n}\n\n/**\n * Runs one gesture for one action and returns the header value that proves it.\n *\n * The assertion is base64url JSON because a WebAuthn response carries binary,\n * and it travels in a header rather than a body so the retry can replay the\n * original request untouched.\n */\nexport async function assertionFor(action: string): Promise<string | undefined> {\n if (!passkeysAvailable()) return undefined;\n try {\n const begun = await postJson(`${REMOTE_API_ROUTE}/challenge`, { action });\n if (typeof begun?.ceremonyId !== 'string' || begun.options === undefined) return undefined;\n const response = await startAuthentication({ optionsJSON: begun.options as never });\n return btoa(JSON.stringify({ ceremonyId: begun.ceremonyId, response }))\n .replaceAll('+', '-')\n .replaceAll('/', '_')\n .replaceAll('=', '');\n } catch {\n // A dismissed or failed gesture means the action does not proceed, which\n // the caller reports; there is nothing to log here.\n return undefined;\n }\n}\n\n/** The header name a caller attaches an assertion under. */\nexport const STEP_UP_HEADER_NAME = STEP_UP_HEADER;\n"],"mappings":";;;;AAgBA,SAAS,SAAS,OAAwB;CACxC,IAAI,iBAAiB,OAEnB,OAAO,MAAM,SAAS,oBAAoB,wBAAwB,MAAM;CAE1E,OAAO,OAAO,KAAK;AACrB;AAEA,SAAgB,oBAA6B;CAC3C,QAAA,GAAOA,wBAAAA,wBAAAA,CAAwB;AACjC;AAEA,eAAe,SAAS,OAAe,MAA6D;CAClG,MAAM,WAAW,MAAMC,sBAAAA,kBAAkB,MAAM,OAAO;EACpD,QAAQ;EACR,SAAS,EAAE,gBAAgB,mBAAmB;EAC9C,aAAa;EACb,MAAM,KAAK,UAAU,QAAQ,CAAC,CAAC;CACjC,CAAC;CACD,IAAI,CAAC,SAAS,IAAI,OAAO,KAAA;CACzB,MAAM,SAAkB,MAAM,SAAS,KAAK;CAC5C,OAAO,OAAO,WAAW,YAAY,WAAW,OAAQ,SAAqC,KAAA;AAC/F;;AAGA,eAAsB,kBAA2C;CAC/D,IAAI,CAAC,kBAAkB,GAAG,OAAO;EAAE,IAAI;EAAO,OAAO;CAAuC;CAC5F,IAAI;EACF,MAAM,QAAQ,MAAM,SAAS,GAAGC,qBAAAA,iBAAiB,2BAA2B,CAAC,CAAC;EAC9E,IAAI,OAAO,OAAO,eAAe,YAAY,MAAM,YAAY,KAAA,GAC7D,OAAO;GAAE,IAAI;GAAO,OAAO;EAA2C;EAExE,MAAM,WAAW,OAAA,GAAMC,wBAAAA,kBAAAA,CAAkB,EAAE,aAAa,MAAM,QAAiB,CAAC;EAKhF,OAAO,MAJgB,SAAS,wCAAgD;GAC9E,YAAY,MAAM;GAClB;EACF,CAAC,MACmB,KAAA,IAAY;GAAE,IAAI;GAAO,OAAO;EAAiC,IAAI,EAAE,IAAI,KAAK;CACtG,SAAS,OAAO;EACd,OAAO;GAAE,IAAI;GAAO,OAAO,SAAS,KAAK;EAAE;CAC7C;AACF;;AAGA,eAAsB,oBAA6C;CACjE,IAAI,CAAC,kBAAkB,GAAG,OAAO;EAAE,IAAI;EAAO,OAAO;CAAuC;CAC5F,IAAI;EACF,MAAM,QAAQ,MAAM,SAAS,GAAGD,qBAAAA,iBAAiB,+BAA+B,CAAC,CAAC;EAClF,IAAI,OAAO,OAAO,eAAe,YAAY,MAAM,YAAY,KAAA,GAC7D,OAAO;GAAE,IAAI;GAAO,OAAO;EAA2C;EAExE,MAAM,WAAW,OAAA,GAAME,wBAAAA,oBAAAA,CAAoB,EAAE,aAAa,MAAM,QAAiB,CAAC;EAClF,MAAM,WAAW,MAAM,SAAS,GAAGF,qBAAAA,iBAAiB,gCAAgC;GAClF,YAAY,MAAM;GAClB;EACF,CAAC;EACD,IAAI,OAAO,UAAU,kBAAkB,YAAY,SAAS,kBAAkB,IAC5E,OAAO;GAAE,IAAI;GAAO,OAAO;EAAiC;EAE9D,sBAAA,uBAAuB,SAAS,aAAa;EAC7C,OAAO,EAAE,IAAI,KAAK;CACpB,SAAS,OAAO;EACd,OAAO;GAAE,IAAI;GAAO,OAAO,SAAS,KAAK;EAAE;CAC7C;AACF;;;;;;;;AASA,eAAsB,aAAa,QAA6C;CAC9E,IAAI,CAAC,kBAAkB,GAAG,OAAO,KAAA;CACjC,IAAI;EACF,MAAM,QAAQ,MAAM,SAAS,GAAGA,qBAAAA,iBAAiB,aAAa,EAAE,OAAO,CAAC;EACxE,IAAI,OAAO,OAAO,eAAe,YAAY,MAAM,YAAY,KAAA,GAAW,OAAO,KAAA;EACjF,MAAM,WAAW,OAAA,GAAME,wBAAAA,oBAAAA,CAAoB,EAAE,aAAa,MAAM,QAAiB,CAAC;EAClF,OAAO,KAAK,KAAK,UAAU;GAAE,YAAY,MAAM;GAAY;EAAS,CAAC,CAAC,CAAC,CACpE,WAAW,KAAK,GAAG,CAAC,CACpB,WAAW,KAAK,GAAG,CAAC,CACpB,WAAW,KAAK,EAAE;CACvB,QAAQ;EAGN;CACF;AACF;;AAGA,MAAa,sBAAsBC,qBAAAA"}
@@ -0,0 +1,32 @@
1
+ //#region src/web/lib/webauthnClient.d.ts
2
+ /**
3
+ * The browser half of the passkey ceremonies.
4
+ *
5
+ * A session cookie is a bearer token: whoever holds the bytes is you. A passkey
6
+ * is a key in this device's secure enclave that never leaves it, so the two
7
+ * actions that escalate out of "drive the agent" into "own the machine" can ask
8
+ * for a gesture instead of trusting the cookie alone.
9
+ */
10
+ export type PasskeyOutcome = {
11
+ ok: true;
12
+ } | {
13
+ ok: false;
14
+ error: string;
15
+ };
16
+ export declare function passkeysAvailable(): boolean;
17
+ /** Enrols this device's passkey. Local-only on the server, so this runs at the machine. */
18
+ export declare function registerPasskey(): Promise<PasskeyOutcome>;
19
+ /** Trades a registered passkey for a session, so a return visit needs no QR. */
20
+ export declare function signInWithPasskey(): Promise<PasskeyOutcome>;
21
+ /**
22
+ * Runs one gesture for one action and returns the header value that proves it.
23
+ *
24
+ * The assertion is base64url JSON because a WebAuthn response carries binary,
25
+ * and it travels in a header rather than a body so the retry can replay the
26
+ * original request untouched.
27
+ */
28
+ export declare function assertionFor(action: string): Promise<string | undefined>;
29
+ /** The header name a caller attaches an assertion under. */
30
+ export declare const STEP_UP_HEADER_NAME = "x-po-assertion";
31
+ //#endregion
32
+ //# sourceMappingURL=webauthnClient.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthnClient.d.mts","names":[],"sources":["../../../src/web/lib/webauthnClient.ts"],"mappings":";;;;;;;;;YAcY;EAAmB;;EAAe;EAAW;;wBAUzC;;wBAiBM,mBAAmB,QAAQ;;wBAmB3B,qBAAqB,QAAQ;;;;;;;;wBA6B7B,aAAa,iBAAiB;;qBAkBvC"}
@@ -0,0 +1,106 @@
1
+ import { REMOTE_API_ROUTE, STEP_UP_HEADER } from "../../types/remoteAccess.mjs";
2
+ import { rememberHostChannelKey, sealedHttpSession } from "./sealedSession.mjs";
3
+ import { browserSupportsWebAuthn, startAuthentication, startRegistration } from "@simplewebauthn/browser";
4
+ //#region src/web/lib/webauthnClient.ts
5
+ function describe(error) {
6
+ if (error instanceof Error) return error.name === "NotAllowedError" ? "That was cancelled." : error.message;
7
+ return String(error);
8
+ }
9
+ function passkeysAvailable() {
10
+ return browserSupportsWebAuthn();
11
+ }
12
+ async function postJson(route, body) {
13
+ const response = await sealedHttpSession.fetch(route, {
14
+ method: "POST",
15
+ headers: { "Content-Type": "application/json" },
16
+ credentials: "same-origin",
17
+ body: JSON.stringify(body ?? {})
18
+ });
19
+ if (!response.ok) return void 0;
20
+ const parsed = await response.json();
21
+ return typeof parsed === "object" && parsed !== null ? parsed : void 0;
22
+ }
23
+ /** Enrols this device's passkey. Local-only on the server, so this runs at the machine. */
24
+ async function registerPasskey() {
25
+ if (!passkeysAvailable()) return {
26
+ ok: false,
27
+ error: "This browser has no passkey support."
28
+ };
29
+ try {
30
+ const begun = await postJson(`${REMOTE_API_ROUTE}/passkeys/register/begin`, {});
31
+ if (typeof begun?.ceremonyId !== "string" || begun.options === void 0) return {
32
+ ok: false,
33
+ error: "Passkeys are unavailable on this tunnel."
34
+ };
35
+ const response = await startRegistration({ optionsJSON: begun.options });
36
+ return await postJson(`/api/remote/passkeys/register/finish`, {
37
+ ceremonyId: begun.ceremonyId,
38
+ response
39
+ }) === void 0 ? {
40
+ ok: false,
41
+ error: "That passkey was not accepted."
42
+ } : { ok: true };
43
+ } catch (error) {
44
+ return {
45
+ ok: false,
46
+ error: describe(error)
47
+ };
48
+ }
49
+ }
50
+ /** Trades a registered passkey for a session, so a return visit needs no QR. */
51
+ async function signInWithPasskey() {
52
+ if (!passkeysAvailable()) return {
53
+ ok: false,
54
+ error: "This browser has no passkey support."
55
+ };
56
+ try {
57
+ const begun = await postJson(`${REMOTE_API_ROUTE}/passkeys/authenticate/begin`, {});
58
+ if (typeof begun?.ceremonyId !== "string" || begun.options === void 0) return {
59
+ ok: false,
60
+ error: "Passkeys are unavailable on this tunnel."
61
+ };
62
+ const response = await startAuthentication({ optionsJSON: begun.options });
63
+ const finished = await postJson(`${REMOTE_API_ROUTE}/passkeys/authenticate/finish`, {
64
+ ceremonyId: begun.ceremonyId,
65
+ response
66
+ });
67
+ if (typeof finished?.hostPublicKey !== "string" || finished.hostPublicKey === "") return {
68
+ ok: false,
69
+ error: "That passkey was not accepted."
70
+ };
71
+ rememberHostChannelKey(finished.hostPublicKey);
72
+ return { ok: true };
73
+ } catch (error) {
74
+ return {
75
+ ok: false,
76
+ error: describe(error)
77
+ };
78
+ }
79
+ }
80
+ /**
81
+ * Runs one gesture for one action and returns the header value that proves it.
82
+ *
83
+ * The assertion is base64url JSON because a WebAuthn response carries binary,
84
+ * and it travels in a header rather than a body so the retry can replay the
85
+ * original request untouched.
86
+ */
87
+ async function assertionFor(action) {
88
+ if (!passkeysAvailable()) return void 0;
89
+ try {
90
+ const begun = await postJson(`${REMOTE_API_ROUTE}/challenge`, { action });
91
+ if (typeof begun?.ceremonyId !== "string" || begun.options === void 0) return void 0;
92
+ const response = await startAuthentication({ optionsJSON: begun.options });
93
+ return btoa(JSON.stringify({
94
+ ceremonyId: begun.ceremonyId,
95
+ response
96
+ })).replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
97
+ } catch {
98
+ return;
99
+ }
100
+ }
101
+ /** The header name a caller attaches an assertion under. */
102
+ const STEP_UP_HEADER_NAME = STEP_UP_HEADER;
103
+ //#endregion
104
+ export { STEP_UP_HEADER_NAME, assertionFor, passkeysAvailable, registerPasskey, signInWithPasskey };
105
+
106
+ //# sourceMappingURL=webauthnClient.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthnClient.mjs","names":[],"sources":["../../../src/web/lib/webauthnClient.ts"],"sourcesContent":["import { browserSupportsWebAuthn, startAuthentication, startRegistration } from '@simplewebauthn/browser';\n\nimport { REMOTE_API_ROUTE, STEP_UP_HEADER } from '../../types/remoteAccess';\nimport { rememberHostChannelKey, sealedHttpSession } from './sealedSession';\n\n/**\n * The browser half of the passkey ceremonies.\n *\n * A session cookie is a bearer token: whoever holds the bytes is you. A passkey\n * is a key in this device's secure enclave that never leaves it, so the two\n * actions that escalate out of \"drive the agent\" into \"own the machine\" can ask\n * for a gesture instead of trusting the cookie alone.\n */\n\nexport type PasskeyOutcome = { ok: true } | { ok: false; error: string };\n\nfunction describe(error: unknown): string {\n if (error instanceof Error) {\n // The user dismissing Face ID is not an error worth a stack trace.\n return error.name === 'NotAllowedError' ? 'That was cancelled.' : error.message;\n }\n return String(error);\n}\n\nexport function passkeysAvailable(): boolean {\n return browserSupportsWebAuthn();\n}\n\nasync function postJson(route: string, body: unknown): Promise<Record<string, unknown> | undefined> {\n const response = await sealedHttpSession.fetch(route, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n credentials: 'same-origin',\n body: JSON.stringify(body ?? {}),\n });\n if (!response.ok) return undefined;\n const parsed: unknown = await response.json();\n return typeof parsed === 'object' && parsed !== null ? (parsed as Record<string, unknown>) : undefined;\n}\n\n/** Enrols this device's passkey. Local-only on the server, so this runs at the machine. */\nexport async function registerPasskey(): Promise<PasskeyOutcome> {\n if (!passkeysAvailable()) return { ok: false, error: 'This browser has no passkey support.' };\n try {\n const begun = await postJson(`${REMOTE_API_ROUTE}/passkeys/register/begin`, {});\n if (typeof begun?.ceremonyId !== 'string' || begun.options === undefined) {\n return { ok: false, error: 'Passkeys are unavailable on this tunnel.' };\n }\n const response = await startRegistration({ optionsJSON: begun.options as never });\n const finished = await postJson(`${REMOTE_API_ROUTE}/passkeys/register/finish`, {\n ceremonyId: begun.ceremonyId,\n response,\n });\n return finished === undefined ? { ok: false, error: 'That passkey was not accepted.' } : { ok: true };\n } catch (error) {\n return { ok: false, error: describe(error) };\n }\n}\n\n/** Trades a registered passkey for a session, so a return visit needs no QR. */\nexport async function signInWithPasskey(): Promise<PasskeyOutcome> {\n if (!passkeysAvailable()) return { ok: false, error: 'This browser has no passkey support.' };\n try {\n const begun = await postJson(`${REMOTE_API_ROUTE}/passkeys/authenticate/begin`, {});\n if (typeof begun?.ceremonyId !== 'string' || begun.options === undefined) {\n return { ok: false, error: 'Passkeys are unavailable on this tunnel.' };\n }\n const response = await startAuthentication({ optionsJSON: begun.options as never });\n const finished = await postJson(`${REMOTE_API_ROUTE}/passkeys/authenticate/finish`, {\n ceremonyId: begun.ceremonyId,\n response,\n });\n if (typeof finished?.hostPublicKey !== 'string' || finished.hostPublicKey === '') {\n return { ok: false, error: 'That passkey was not accepted.' };\n }\n rememberHostChannelKey(finished.hostPublicKey);\n return { ok: true };\n } catch (error) {\n return { ok: false, error: describe(error) };\n }\n}\n\n/**\n * Runs one gesture for one action and returns the header value that proves it.\n *\n * The assertion is base64url JSON because a WebAuthn response carries binary,\n * and it travels in a header rather than a body so the retry can replay the\n * original request untouched.\n */\nexport async function assertionFor(action: string): Promise<string | undefined> {\n if (!passkeysAvailable()) return undefined;\n try {\n const begun = await postJson(`${REMOTE_API_ROUTE}/challenge`, { action });\n if (typeof begun?.ceremonyId !== 'string' || begun.options === undefined) return undefined;\n const response = await startAuthentication({ optionsJSON: begun.options as never });\n return btoa(JSON.stringify({ ceremonyId: begun.ceremonyId, response }))\n .replaceAll('+', '-')\n .replaceAll('/', '_')\n .replaceAll('=', '');\n } catch {\n // A dismissed or failed gesture means the action does not proceed, which\n // the caller reports; there is nothing to log here.\n return undefined;\n }\n}\n\n/** The header name a caller attaches an assertion under. */\nexport const STEP_UP_HEADER_NAME = STEP_UP_HEADER;\n"],"mappings":";;;;AAgBA,SAAS,SAAS,OAAwB;CACxC,IAAI,iBAAiB,OAEnB,OAAO,MAAM,SAAS,oBAAoB,wBAAwB,MAAM;CAE1E,OAAO,OAAO,KAAK;AACrB;AAEA,SAAgB,oBAA6B;CAC3C,OAAO,wBAAwB;AACjC;AAEA,eAAe,SAAS,OAAe,MAA6D;CAClG,MAAM,WAAW,MAAM,kBAAkB,MAAM,OAAO;EACpD,QAAQ;EACR,SAAS,EAAE,gBAAgB,mBAAmB;EAC9C,aAAa;EACb,MAAM,KAAK,UAAU,QAAQ,CAAC,CAAC;CACjC,CAAC;CACD,IAAI,CAAC,SAAS,IAAI,OAAO,KAAA;CACzB,MAAM,SAAkB,MAAM,SAAS,KAAK;CAC5C,OAAO,OAAO,WAAW,YAAY,WAAW,OAAQ,SAAqC,KAAA;AAC/F;;AAGA,eAAsB,kBAA2C;CAC/D,IAAI,CAAC,kBAAkB,GAAG,OAAO;EAAE,IAAI;EAAO,OAAO;CAAuC;CAC5F,IAAI;EACF,MAAM,QAAQ,MAAM,SAAS,GAAG,iBAAiB,2BAA2B,CAAC,CAAC;EAC9E,IAAI,OAAO,OAAO,eAAe,YAAY,MAAM,YAAY,KAAA,GAC7D,OAAO;GAAE,IAAI;GAAO,OAAO;EAA2C;EAExE,MAAM,WAAW,MAAM,kBAAkB,EAAE,aAAa,MAAM,QAAiB,CAAC;EAKhF,OAAO,MAJgB,SAAS,wCAAgD;GAC9E,YAAY,MAAM;GAClB;EACF,CAAC,MACmB,KAAA,IAAY;GAAE,IAAI;GAAO,OAAO;EAAiC,IAAI,EAAE,IAAI,KAAK;CACtG,SAAS,OAAO;EACd,OAAO;GAAE,IAAI;GAAO,OAAO,SAAS,KAAK;EAAE;CAC7C;AACF;;AAGA,eAAsB,oBAA6C;CACjE,IAAI,CAAC,kBAAkB,GAAG,OAAO;EAAE,IAAI;EAAO,OAAO;CAAuC;CAC5F,IAAI;EACF,MAAM,QAAQ,MAAM,SAAS,GAAG,iBAAiB,+BAA+B,CAAC,CAAC;EAClF,IAAI,OAAO,OAAO,eAAe,YAAY,MAAM,YAAY,KAAA,GAC7D,OAAO;GAAE,IAAI;GAAO,OAAO;EAA2C;EAExE,MAAM,WAAW,MAAM,oBAAoB,EAAE,aAAa,MAAM,QAAiB,CAAC;EAClF,MAAM,WAAW,MAAM,SAAS,GAAG,iBAAiB,gCAAgC;GAClF,YAAY,MAAM;GAClB;EACF,CAAC;EACD,IAAI,OAAO,UAAU,kBAAkB,YAAY,SAAS,kBAAkB,IAC5E,OAAO;GAAE,IAAI;GAAO,OAAO;EAAiC;EAE9D,uBAAuB,SAAS,aAAa;EAC7C,OAAO,EAAE,IAAI,KAAK;CACpB,SAAS,OAAO;EACd,OAAO;GAAE,IAAI;GAAO,OAAO,SAAS,KAAK;EAAE;CAC7C;AACF;;;;;;;;AASA,eAAsB,aAAa,QAA6C;CAC9E,IAAI,CAAC,kBAAkB,GAAG,OAAO,KAAA;CACjC,IAAI;EACF,MAAM,QAAQ,MAAM,SAAS,GAAG,iBAAiB,aAAa,EAAE,OAAO,CAAC;EACxE,IAAI,OAAO,OAAO,eAAe,YAAY,MAAM,YAAY,KAAA,GAAW,OAAO,KAAA;EACjF,MAAM,WAAW,MAAM,oBAAoB,EAAE,aAAa,MAAM,QAAiB,CAAC;EAClF,OAAO,KAAK,KAAK,UAAU;GAAE,YAAY,MAAM;GAAY;EAAS,CAAC,CAAC,CAAC,CACpE,WAAW,KAAK,GAAG,CAAC,CACpB,WAAW,KAAK,GAAG,CAAC,CACpB,WAAW,KAAK,EAAE;CACvB,QAAQ;EAGN;CACF;AACF;;AAGA,MAAa,sBAAsB"}