@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,122 @@
1
+ import { DEV_PROXY_PREFIX } from "../../../types/devProxy.mjs";
2
+ import { createDevProxyTarget, deleteDevProxyTarget, devProxyStore, refreshDevProxyTargets } from "../../stores/devProxyStore.mjs";
3
+ import { useDashboardState } from "../../stores/dashboardStateStore.mjs";
4
+ import { useEffect } from "react";
5
+ import { useStore } from "@tanstack/react-store";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Button, Input, SectionLabel } from "@agimon-ai/po-web-components";
8
+ //#region src/web/features/remote/DevProxyTargets.tsx
9
+ /**
10
+ * Local dev servers reachable through the cockpit's own address.
11
+ *
12
+ * The `base` line is shown rather than described. A sub-path proxy needs the
13
+ * application to know its base path, exactly as it would behind nginx, and a
14
+ * developer who has to work that out from prose will conclude the feature is
15
+ * broken when their assets 404.
16
+ *
17
+ * Adding a target is host-only, so on a phone the form is replaced by the
18
+ * reason rather than rendered as a button that would be refused.
19
+ */
20
+ function DevProxyTargets() {
21
+ const state = useStore(devProxyStore);
22
+ const [name, setName] = useDashboardState("dev-proxy/name", "");
23
+ const [port, setPort] = useDashboardState("dev-proxy/port", "");
24
+ useEffect(() => {
25
+ refreshDevProxyTargets();
26
+ }, []);
27
+ const submit = async () => {
28
+ if (await createDevProxyTarget(name.trim(), Number(port))) {
29
+ setName((current) => current === name ? "" : current);
30
+ setPort((current) => current === port ? "" : current);
31
+ }
32
+ };
33
+ return /* @__PURE__ */ jsxs("div", {
34
+ className: "flex w-full flex-col gap-1.5",
35
+ children: [
36
+ /* @__PURE__ */ jsx(SectionLabel, { children: "dev sites" }),
37
+ /* @__PURE__ */ jsx("span", {
38
+ className: "text-sm text-doom-dim",
39
+ children: "Reach a local dev server from a paired device, on this same address."
40
+ }),
41
+ state.targets.map((target) => /* @__PURE__ */ jsxs("div", {
42
+ "data-testid": `dev-proxy-target-${target.name}`,
43
+ className: "flex items-center justify-between gap-3 rounded border border-doom-border px-2.5 py-1.5",
44
+ children: [/* @__PURE__ */ jsxs("span", {
45
+ className: "flex min-w-0 flex-col",
46
+ children: [/* @__PURE__ */ jsxs("a", {
47
+ href: state.canRegister ? `http://localhost:${String(target.port)}${DEV_PROXY_PREFIX}${target.name}/` : `${DEV_PROXY_PREFIX}${target.name}/`,
48
+ target: "_blank",
49
+ rel: "noreferrer",
50
+ className: "truncate text-sm text-doom-hi underline",
51
+ "data-testid": `dev-proxy-open-${target.name}`,
52
+ children: [
53
+ DEV_PROXY_PREFIX,
54
+ target.name,
55
+ "/"
56
+ ]
57
+ }), /* @__PURE__ */ jsxs("span", {
58
+ className: "truncate text-sm text-doom-dim",
59
+ children: [
60
+ "port ",
61
+ target.port,
62
+ " · set base: '",
63
+ DEV_PROXY_PREFIX,
64
+ target.name,
65
+ "/' in the dev server"
66
+ ]
67
+ })]
68
+ }), state.canRegister ? /* @__PURE__ */ jsx(Button, {
69
+ variant: "ghost",
70
+ size: "sm",
71
+ "data-testid": `dev-proxy-remove-${target.name}`,
72
+ onClick: () => void deleteDevProxyTarget(target.name),
73
+ children: "remove"
74
+ }) : null]
75
+ }, target.name)),
76
+ state.canRegister ? /* @__PURE__ */ jsxs("div", {
77
+ className: "flex items-center gap-2",
78
+ children: [
79
+ /* @__PURE__ */ jsx(Input, {
80
+ "aria-label": "dev site name",
81
+ "data-testid": "dev-proxy-name",
82
+ placeholder: "storefront",
83
+ className: "min-w-0 flex-1",
84
+ value: name,
85
+ onChange: (event) => setName(event.target.value)
86
+ }),
87
+ /* @__PURE__ */ jsx(Input, {
88
+ "aria-label": "dev site port",
89
+ "data-testid": "dev-proxy-port",
90
+ type: "number",
91
+ min: 1,
92
+ max: 65535,
93
+ placeholder: "3000",
94
+ className: "w-24",
95
+ value: port,
96
+ onChange: (event) => setPort(event.target.value)
97
+ }),
98
+ /* @__PURE__ */ jsx(Button, {
99
+ variant: "outline",
100
+ size: "sm",
101
+ "data-testid": "dev-proxy-add",
102
+ disabled: state.busy || name.trim() === "" || port === "",
103
+ onClick: () => void submit(),
104
+ children: "add"
105
+ })
106
+ ]
107
+ }) : /* @__PURE__ */ jsx("span", {
108
+ className: "text-sm text-doom-dim",
109
+ children: "Add a dev site on the host. A paired device can open the ones already listed, but not name new ones."
110
+ }),
111
+ state.error === void 0 ? null : /* @__PURE__ */ jsx("span", {
112
+ "data-testid": "dev-proxy-error",
113
+ className: "text-sm text-doom-yellow",
114
+ children: state.error
115
+ })
116
+ ]
117
+ });
118
+ }
119
+ //#endregion
120
+ export { DevProxyTargets };
121
+
122
+ //# sourceMappingURL=DevProxyTargets.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevProxyTargets.mjs","names":[],"sources":["../../../../src/web/features/remote/DevProxyTargets.tsx"],"sourcesContent":["import { Button, Input, SectionLabel } from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\nimport { useEffect } from 'react';\n\nimport { DEV_PROXY_PREFIX } from '../../../types/devProxy';\nimport { useDashboardState } from '../../stores/dashboardStateStore';\nimport {\n createDevProxyTarget,\n deleteDevProxyTarget,\n devProxyStore,\n refreshDevProxyTargets,\n} from '../../stores/devProxyStore';\n\n/**\n * Local dev servers reachable through the cockpit's own address.\n *\n * The `base` line is shown rather than described. A sub-path proxy needs the\n * application to know its base path, exactly as it would behind nginx, and a\n * developer who has to work that out from prose will conclude the feature is\n * broken when their assets 404.\n *\n * Adding a target is host-only, so on a phone the form is replaced by the\n * reason rather than rendered as a button that would be refused.\n */\nexport function DevProxyTargets() {\n const state = useStore(devProxyStore);\n const [name, setName] = useDashboardState('dev-proxy/name', '');\n const [port, setPort] = useDashboardState('dev-proxy/port', '');\n\n useEffect(() => {\n void refreshDevProxyTargets();\n }, []);\n\n const submit = async (): Promise<void> => {\n if (await createDevProxyTarget(name.trim(), Number(port))) {\n setName((current) => (current === name ? '' : current));\n setPort((current) => (current === port ? '' : current));\n }\n };\n\n return (\n <div className=\"flex w-full flex-col gap-1.5\">\n <SectionLabel>dev sites</SectionLabel>\n <span className=\"text-sm text-doom-dim\">\n Reach a local dev server from a paired device, on this same address.\n </span>\n\n {state.targets.map((target) => (\n <div\n key={target.name}\n data-testid={`dev-proxy-target-${target.name}`}\n className=\"flex items-center justify-between gap-3 rounded border border-doom-border px-2.5 py-1.5\"\n >\n <span className=\"flex min-w-0 flex-col\">\n <a\n // The proxy serves paired devices through the tunnel. At the host, the dev server\n // already answers on its own port under the same base path.\n href={\n state.canRegister\n ? `http://localhost:${String(target.port)}${DEV_PROXY_PREFIX}${target.name}/`\n : `${DEV_PROXY_PREFIX}${target.name}/`\n }\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"truncate text-sm text-doom-hi underline\"\n data-testid={`dev-proxy-open-${target.name}`}\n >\n {DEV_PROXY_PREFIX}\n {target.name}/\n </a>\n <span className=\"truncate text-sm text-doom-dim\">\n port {target.port} &middot; set base: &apos;{DEV_PROXY_PREFIX}\n {target.name}/&apos; in the dev server\n </span>\n </span>\n {state.canRegister ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n data-testid={`dev-proxy-remove-${target.name}`}\n onClick={() => void deleteDevProxyTarget(target.name)}\n >\n remove\n </Button>\n ) : null}\n </div>\n ))}\n\n {state.canRegister ? (\n <div className=\"flex items-center gap-2\">\n <Input\n aria-label=\"dev site name\"\n data-testid=\"dev-proxy-name\"\n placeholder=\"storefront\"\n className=\"min-w-0 flex-1\"\n value={name}\n onChange={(event) => setName(event.target.value)}\n />\n <Input\n aria-label=\"dev site port\"\n data-testid=\"dev-proxy-port\"\n type=\"number\"\n min={1}\n max={65_535}\n placeholder=\"3000\"\n className=\"w-24\"\n value={port}\n onChange={(event) => setPort(event.target.value)}\n />\n <Button\n variant=\"outline\"\n size=\"sm\"\n data-testid=\"dev-proxy-add\"\n disabled={state.busy || name.trim() === '' || port === ''}\n onClick={() => void submit()}\n >\n add\n </Button>\n </div>\n ) : (\n <span className=\"text-sm text-doom-dim\">\n Add a dev site on the host. A paired device can open the ones already listed, but not name new ones.\n </span>\n )}\n\n {state.error === undefined ? null : (\n <span data-testid=\"dev-proxy-error\" className=\"text-sm text-doom-yellow\">\n {state.error}\n </span>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,kBAAkB;CAChC,MAAM,QAAQ,SAAS,aAAa;CACpC,MAAM,CAAC,MAAM,WAAW,kBAAkB,kBAAkB,EAAE;CAC9D,MAAM,CAAC,MAAM,WAAW,kBAAkB,kBAAkB,EAAE;CAE9D,gBAAgB;EACd,uBAA4B;CAC9B,GAAG,CAAC,CAAC;CAEL,MAAM,SAAS,YAA2B;EACxC,IAAI,MAAM,qBAAqB,KAAK,KAAK,GAAG,OAAO,IAAI,CAAC,GAAG;GACzD,SAAS,YAAa,YAAY,OAAO,KAAK,OAAQ;GACtD,SAAS,YAAa,YAAY,OAAO,KAAK,OAAQ;EACxD;CACF;CAEA,OACE,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,oBAAC,cAAD,EAAA,UAAc,YAAuB,CAAA;GACrC,oBAAC,QAAD;IAAM,WAAU;IAAwB,UAAA;GAElC,CAAA;GAEL,MAAM,QAAQ,KAAK,WAClB,qBAAC,OAAD;IAEE,eAAa,oBAAoB,OAAO;IACxC,WAAU;IAHZ,UAAA,CAKE,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACE,qBAAC,KAAD;MAGE,MACE,MAAM,cACF,oBAAoB,OAAO,OAAO,IAAI,IAAI,mBAAmB,OAAO,KAAK,KACzE,GAAG,mBAAmB,OAAO,KAAK;MAExC,QAAO;MACP,KAAI;MACJ,WAAU;MACV,eAAa,kBAAkB,OAAO;MAXxC,UAAA;OAaG;OACA,OAAO;OAAK;MACZ;KACH,CAAA,GAAA,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OAAiD;OACzC,OAAO;OAAK;OAA2B;OAC5C,OAAO;OAAK;MACT;KACF,CAAA,CAAA;IACL,CAAA,GAAA,MAAM,cACL,oBAAC,QAAD;KACE,SAAQ;KACR,MAAK;KACL,eAAa,oBAAoB,OAAO;KACxC,eAAe,KAAK,qBAAqB,OAAO,IAAI;KACrD,UAAA;IAEO,CAAA,IACN,IACD;GApCE,GAAA,OAAO,IAoCT,CACN;GAEA,MAAM,cACL,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,oBAAC,OAAD;MACE,cAAW;MACX,eAAY;MACZ,aAAY;MACZ,WAAU;MACV,OAAO;MACP,WAAW,UAAU,QAAQ,MAAM,OAAO,KAAK;KAChD,CAAA;KACD,oBAAC,OAAD;MACE,cAAW;MACX,eAAY;MACZ,MAAK;MACL,KAAK;MACL,KAAK;MACL,aAAY;MACZ,WAAU;MACV,OAAO;MACP,WAAW,UAAU,QAAQ,MAAM,OAAO,KAAK;KAChD,CAAA;KACD,oBAAC,QAAD;MACE,SAAQ;MACR,MAAK;MACL,eAAY;MACZ,UAAU,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS;MACvD,eAAe,KAAK,OAAO;MAC5B,UAAA;KAEO,CAAA;IACL;GAEL,CAAA,IAAA,oBAAC,QAAD;IAAM,WAAU;IAAwB,UAAA;GAElC,CAAA;GAGP,MAAM,UAAU,KAAA,IAAY,OAC3B,oBAAC,QAAD;IAAM,eAAY;IAAkB,WAAU;IAC3C,UAAA,MAAM;GACH,CAAA;EAEL;;AAET"}
@@ -0,0 +1,28 @@
1
+ let react_jsx_runtime = require("react/jsx-runtime");
2
+ let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
3
+ //#region src/web/features/remote/HandoverProgress.tsx
4
+ /**
5
+ * What the page shows while its own hub is being replaced.
6
+ *
7
+ * There is nothing to ask the server during a handover, because the server is
8
+ * the thing moving. The socket reconnects on its own once the container is
9
+ * serving, and that reconnection is what ends this panel, so the copy says to
10
+ * wait rather than offering a button that would fail.
11
+ */
12
+ function HandoverProgress() {
13
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
14
+ className: "flex flex-col gap-3",
15
+ "data-testid": "remote-handover",
16
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
17
+ className: "flex items-center gap-2 text-base text-doom-text",
18
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Spinner, {}), "Moving the cockpit into a container."]
19
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
20
+ className: "text-sm leading-relaxed text-doom-dim",
21
+ children: "This page reconnects on its own when the container is serving, and the code to scan appears then. The first run for a new version builds the image, which can take several minutes. Progress is printed in the terminal that started the cockpit."
22
+ })]
23
+ });
24
+ }
25
+ //#endregion
26
+ exports.HandoverProgress = HandoverProgress;
27
+
28
+ //# sourceMappingURL=HandoverProgress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandoverProgress.cjs","names":["Spinner"],"sources":["../../../../src/web/features/remote/HandoverProgress.tsx"],"sourcesContent":["import { Spinner } from '@agimon-ai/po-web-components';\n\n/**\n * What the page shows while its own hub is being replaced.\n *\n * There is nothing to ask the server during a handover, because the server is\n * the thing moving. The socket reconnects on its own once the container is\n * serving, and that reconnection is what ends this panel, so the copy says to\n * wait rather than offering a button that would fail.\n */\nexport function HandoverProgress() {\n return (\n <div className=\"flex flex-col gap-3\" data-testid=\"remote-handover\">\n <div className=\"flex items-center gap-2 text-base text-doom-text\">\n <Spinner />\n Moving the cockpit into a container.\n </div>\n <p className=\"text-sm leading-relaxed text-doom-dim\">\n This page reconnects on its own when the container is serving, and the code to scan appears then. The first run\n for a new version builds the image, which can take several minutes. Progress is printed in the terminal that\n started the cockpit.\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,mBAAmB;CACjC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAsB,eAAY;EAAjD,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,6BAAAA,SAAD,CAAU,CAAA,GAAC,sCAER;EACL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;GAAG,WAAU;GAAwC,UAAA;EAIlD,CAAA,CACA;;AAET"}
@@ -0,0 +1,12 @@
1
+ //#region src/web/features/remote/HandoverProgress.d.ts
2
+ /**
3
+ * What the page shows while its own hub is being replaced.
4
+ *
5
+ * There is nothing to ask the server during a handover, because the server is
6
+ * the thing moving. The socket reconnects on its own once the container is
7
+ * serving, and that reconnection is what ends this panel, so the copy says to
8
+ * wait rather than offering a button that would fail.
9
+ */
10
+ export declare function HandoverProgress(): import("react").JSX.Element;
11
+ //#endregion
12
+ //# sourceMappingURL=HandoverProgress.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandoverProgress.d.mts","names":[],"sources":["../../../../src/web/features/remote/HandoverProgress.tsx"],"mappings":";;;;;;;;;wBAUgB,oCAAgB,IAAA"}
@@ -0,0 +1,28 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Spinner } from "@agimon-ai/po-web-components";
3
+ //#region src/web/features/remote/HandoverProgress.tsx
4
+ /**
5
+ * What the page shows while its own hub is being replaced.
6
+ *
7
+ * There is nothing to ask the server during a handover, because the server is
8
+ * the thing moving. The socket reconnects on its own once the container is
9
+ * serving, and that reconnection is what ends this panel, so the copy says to
10
+ * wait rather than offering a button that would fail.
11
+ */
12
+ function HandoverProgress() {
13
+ return /* @__PURE__ */ jsxs("div", {
14
+ className: "flex flex-col gap-3",
15
+ "data-testid": "remote-handover",
16
+ children: [/* @__PURE__ */ jsxs("div", {
17
+ className: "flex items-center gap-2 text-base text-doom-text",
18
+ children: [/* @__PURE__ */ jsx(Spinner, {}), "Moving the cockpit into a container."]
19
+ }), /* @__PURE__ */ jsx("p", {
20
+ className: "text-sm leading-relaxed text-doom-dim",
21
+ children: "This page reconnects on its own when the container is serving, and the code to scan appears then. The first run for a new version builds the image, which can take several minutes. Progress is printed in the terminal that started the cockpit."
22
+ })]
23
+ });
24
+ }
25
+ //#endregion
26
+ export { HandoverProgress };
27
+
28
+ //# sourceMappingURL=HandoverProgress.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandoverProgress.mjs","names":[],"sources":["../../../../src/web/features/remote/HandoverProgress.tsx"],"sourcesContent":["import { Spinner } from '@agimon-ai/po-web-components';\n\n/**\n * What the page shows while its own hub is being replaced.\n *\n * There is nothing to ask the server during a handover, because the server is\n * the thing moving. The socket reconnects on its own once the container is\n * serving, and that reconnection is what ends this panel, so the copy says to\n * wait rather than offering a button that would fail.\n */\nexport function HandoverProgress() {\n return (\n <div className=\"flex flex-col gap-3\" data-testid=\"remote-handover\">\n <div className=\"flex items-center gap-2 text-base text-doom-text\">\n <Spinner />\n Moving the cockpit into a container.\n </div>\n <p className=\"text-sm leading-relaxed text-doom-dim\">\n This page reconnects on its own when the container is serving, and the code to scan appears then. The first run\n for a new version builds the image, which can take several minutes. Progress is printed in the terminal that\n started the cockpit.\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,mBAAmB;CACjC,OACE,qBAAC,OAAD;EAAK,WAAU;EAAsB,eAAY;EAAjD,UAAA,CACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,oBAAC,SAAD,CAAU,CAAA,GAAC,sCAER;EACL,CAAA,GAAA,oBAAC,KAAD;GAAG,WAAU;GAAwC,UAAA;EAIlD,CAAA,CACA;;AAET"}
@@ -0,0 +1,37 @@
1
+ const require_remoteAccessStore = require("../../stores/remoteAccessStore.cjs");
2
+ let _tanstack_react_store = require("@tanstack/react-store");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
5
+ //#region src/web/features/remote/PairedDeviceList.tsx
6
+ /** Every device currently holding a session, with the one way to take it back. */
7
+ function PairedDeviceList() {
8
+ const devices = (0, _tanstack_react_store.useStore)(require_remoteAccessStore.remoteAccessStore).view?.devices ?? [];
9
+ if (devices.length === 0) return null;
10
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11
+ className: "flex w-full flex-col gap-1.5",
12
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.SectionLabel, { children: "paired devices" }), devices.map((device) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
13
+ "data-testid": `remote-device-${device.id}`,
14
+ className: "flex items-center justify-between gap-3 rounded border border-doom-border px-2.5 py-1.5",
15
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
16
+ className: "flex min-w-0 flex-col",
17
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
18
+ className: "truncate text-base font-semibold text-doom-hi",
19
+ children: [device.label, device.self ? " · this device" : ""]
20
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
21
+ className: "truncate text-sm text-doom-dim",
22
+ children: device.userAgent
23
+ })]
24
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
25
+ variant: "ghost",
26
+ size: "sm",
27
+ "data-testid": `remote-revoke-${device.id}`,
28
+ onClick: () => void require_remoteAccessStore.revokePairedDevice(device.id),
29
+ children: "revoke"
30
+ })]
31
+ }, device.id))]
32
+ });
33
+ }
34
+ //#endregion
35
+ exports.PairedDeviceList = PairedDeviceList;
36
+
37
+ //# sourceMappingURL=PairedDeviceList.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PairedDeviceList.cjs","names":["useStore","remoteAccessStore","SectionLabel","Button","revokePairedDevice"],"sources":["../../../../src/web/features/remote/PairedDeviceList.tsx"],"sourcesContent":["import { Button, SectionLabel } from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport { remoteAccessStore, revokePairedDevice } from '../../stores/remoteAccessStore';\n\n/** Every device currently holding a session, with the one way to take it back. */\nexport function PairedDeviceList() {\n const state = useStore(remoteAccessStore);\n const devices = state.view?.devices ?? [];\n if (devices.length === 0) return null;\n\n return (\n <div className=\"flex w-full flex-col gap-1.5\">\n <SectionLabel>paired devices</SectionLabel>\n {devices.map((device) => (\n <div\n key={device.id}\n data-testid={`remote-device-${device.id}`}\n className=\"flex items-center justify-between gap-3 rounded border border-doom-border px-2.5 py-1.5\"\n >\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"truncate text-base font-semibold text-doom-hi\">\n {device.label}\n {device.self ? ' \\u00b7 this device' : ''}\n </span>\n <span className=\"truncate text-sm text-doom-dim\">{device.userAgent}</span>\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n data-testid={`remote-revoke-${device.id}`}\n onClick={() => void revokePairedDevice(device.id)}\n >\n revoke\n </Button>\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,mBAAmB;CAEjC,MAAM,WAAA,GADQA,sBAAAA,SAAAA,CAASC,0BAAAA,iBACH,CAAC,CAAC,MAAM,WAAW,CAAC;CACxC,IAAI,QAAQ,WAAW,GAAG,OAAO;CAEjC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,cAAD,EAAA,UAAc,iBAA4B,CAAA,GACzC,QAAQ,KAAK,WACZ,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAEE,eAAa,iBAAiB,OAAO;GACrC,WAAU;GAHZ,UAAA,CAKE,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACG,OAAO,OACP,OAAO,OAAO,mBAAwB,EACnC;IACN,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,WAAU;KAAkC,UAAA,OAAO;IAAgB,CAAA,CACrE;GACN,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;IACE,SAAQ;IACR,MAAK;IACL,eAAa,iBAAiB,OAAO;IACrC,eAAe,KAAKC,0BAAAA,mBAAmB,OAAO,EAAE;IACjD,UAAA;GAEO,CAAA,CACL;EAnBE,GAAA,OAAO,EAmBT,CACN,CACE;;AAET"}
@@ -0,0 +1,5 @@
1
+ //#region src/web/features/remote/PairedDeviceList.d.ts
2
+ /** Every device currently holding a session, with the one way to take it back. */
3
+ export declare function PairedDeviceList(): import("react").JSX.Element | null;
4
+ //#endregion
5
+ //# sourceMappingURL=PairedDeviceList.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PairedDeviceList.d.mts","names":[],"sources":["../../../../src/web/features/remote/PairedDeviceList.tsx"],"mappings":";;wBAMgB,oCAAgB,IAAA"}
@@ -0,0 +1,37 @@
1
+ import { remoteAccessStore, revokePairedDevice } from "../../stores/remoteAccessStore.mjs";
2
+ import { useStore } from "@tanstack/react-store";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Button, SectionLabel } from "@agimon-ai/po-web-components";
5
+ //#region src/web/features/remote/PairedDeviceList.tsx
6
+ /** Every device currently holding a session, with the one way to take it back. */
7
+ function PairedDeviceList() {
8
+ const devices = useStore(remoteAccessStore).view?.devices ?? [];
9
+ if (devices.length === 0) return null;
10
+ return /* @__PURE__ */ jsxs("div", {
11
+ className: "flex w-full flex-col gap-1.5",
12
+ children: [/* @__PURE__ */ jsx(SectionLabel, { children: "paired devices" }), devices.map((device) => /* @__PURE__ */ jsxs("div", {
13
+ "data-testid": `remote-device-${device.id}`,
14
+ className: "flex items-center justify-between gap-3 rounded border border-doom-border px-2.5 py-1.5",
15
+ children: [/* @__PURE__ */ jsxs("span", {
16
+ className: "flex min-w-0 flex-col",
17
+ children: [/* @__PURE__ */ jsxs("span", {
18
+ className: "truncate text-base font-semibold text-doom-hi",
19
+ children: [device.label, device.self ? " · this device" : ""]
20
+ }), /* @__PURE__ */ jsx("span", {
21
+ className: "truncate text-sm text-doom-dim",
22
+ children: device.userAgent
23
+ })]
24
+ }), /* @__PURE__ */ jsx(Button, {
25
+ variant: "ghost",
26
+ size: "sm",
27
+ "data-testid": `remote-revoke-${device.id}`,
28
+ onClick: () => void revokePairedDevice(device.id),
29
+ children: "revoke"
30
+ })]
31
+ }, device.id))]
32
+ });
33
+ }
34
+ //#endregion
35
+ export { PairedDeviceList };
36
+
37
+ //# sourceMappingURL=PairedDeviceList.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PairedDeviceList.mjs","names":[],"sources":["../../../../src/web/features/remote/PairedDeviceList.tsx"],"sourcesContent":["import { Button, SectionLabel } from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport { remoteAccessStore, revokePairedDevice } from '../../stores/remoteAccessStore';\n\n/** Every device currently holding a session, with the one way to take it back. */\nexport function PairedDeviceList() {\n const state = useStore(remoteAccessStore);\n const devices = state.view?.devices ?? [];\n if (devices.length === 0) return null;\n\n return (\n <div className=\"flex w-full flex-col gap-1.5\">\n <SectionLabel>paired devices</SectionLabel>\n {devices.map((device) => (\n <div\n key={device.id}\n data-testid={`remote-device-${device.id}`}\n className=\"flex items-center justify-between gap-3 rounded border border-doom-border px-2.5 py-1.5\"\n >\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"truncate text-base font-semibold text-doom-hi\">\n {device.label}\n {device.self ? ' \\u00b7 this device' : ''}\n </span>\n <span className=\"truncate text-sm text-doom-dim\">{device.userAgent}</span>\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n data-testid={`remote-revoke-${device.id}`}\n onClick={() => void revokePairedDevice(device.id)}\n >\n revoke\n </Button>\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,mBAAmB;CAEjC,MAAM,UADQ,SAAS,iBACH,CAAC,CAAC,MAAM,WAAW,CAAC;CACxC,IAAI,QAAQ,WAAW,GAAG,OAAO;CAEjC,OACE,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,oBAAC,cAAD,EAAA,UAAc,iBAA4B,CAAA,GACzC,QAAQ,KAAK,WACZ,qBAAC,OAAD;GAEE,eAAa,iBAAiB,OAAO;GACrC,WAAU;GAHZ,UAAA,CAKE,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACG,OAAO,OACP,OAAO,OAAO,mBAAwB,EACnC;IACN,CAAA,GAAA,oBAAC,QAAD;KAAM,WAAU;KAAkC,UAAA,OAAO;IAAgB,CAAA,CACrE;GACN,CAAA,GAAA,oBAAC,QAAD;IACE,SAAQ;IACR,MAAK;IACL,eAAa,iBAAiB,OAAO;IACrC,eAAe,KAAK,mBAAmB,OAAO,EAAE;IACjD,UAAA;GAEO,CAAA,CACL;EAnBE,GAAA,OAAO,EAmBT,CACN,CACE;;AAET"}
@@ -0,0 +1,65 @@
1
+ const require_remoteAccessStore = require("../../stores/remoteAccessStore.cjs");
2
+ let _tanstack_react_store = require("@tanstack/react-store");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
5
+ //#region src/web/features/remote/PairingApprovalDialog.tsx
6
+ /**
7
+ * The second factor, and the reason a photographed QR is not enough.
8
+ *
9
+ * Only ever rendered on the host: the hub sends pairing frames to local pages
10
+ * alone, so a paired phone cannot approve the next device and make its own
11
+ * access permanent.
12
+ */
13
+ function PairingApprovalDialog() {
14
+ const request = (0, _tanstack_react_store.useStore)(require_remoteAccessStore.remoteAccessStore).view?.pending?.[0];
15
+ if (request === void 0) return null;
16
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Dialog, {
17
+ open: true,
18
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogContent, {
19
+ "data-testid": "pairing-approval",
20
+ className: "max-w-md",
21
+ children: [
22
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogHeader, {
23
+ className: "flex-col items-start",
24
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogTitle, { children: "Pair this device?" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogDescription, { children: "Something scanned your code. Approve it only if it is the device in your hand." })]
25
+ }),
26
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogBody, {
27
+ className: "flex flex-col gap-2",
28
+ children: [
29
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
30
+ "data-testid": "pairing-approval-agent",
31
+ className: "break-words text-base text-doom-text",
32
+ children: request.userAgent
33
+ }),
34
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
35
+ className: "text-sm text-doom-dim",
36
+ children: ["address reported by the edge: ", request.edgeIp]
37
+ }),
38
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
39
+ className: "text-sm text-doom-dim",
40
+ children: "Approving grants the same access you have here, including running shell commands."
41
+ })
42
+ ]
43
+ }),
44
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogFooter, {
45
+ className: "px-3 pb-3 sm:px-4 sm:pb-4",
46
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
47
+ variant: "outline",
48
+ "data-testid": "pairing-deny",
49
+ onClick: () => void require_remoteAccessStore.denyDevice(request.id),
50
+ children: "deny"
51
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
52
+ variant: "primary",
53
+ "data-testid": "pairing-approve",
54
+ onClick: () => void require_remoteAccessStore.approveDevice(request.id),
55
+ children: "approve"
56
+ })]
57
+ })
58
+ ]
59
+ })
60
+ });
61
+ }
62
+ //#endregion
63
+ exports.PairingApprovalDialog = PairingApprovalDialog;
64
+
65
+ //# sourceMappingURL=PairingApprovalDialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PairingApprovalDialog.cjs","names":["useStore","remoteAccessStore","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","DialogFooter","Button","denyDevice","approveDevice"],"sources":["../../../../src/web/features/remote/PairingApprovalDialog.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport { approveDevice, denyDevice, remoteAccessStore } from '../../stores/remoteAccessStore';\n\n/**\n * The second factor, and the reason a photographed QR is not enough.\n *\n * Only ever rendered on the host: the hub sends pairing frames to local pages\n * alone, so a paired phone cannot approve the next device and make its own\n * access permanent.\n */\nexport function PairingApprovalDialog() {\n const state = useStore(remoteAccessStore);\n const request = state.view?.pending?.[0];\n if (request === undefined) return null;\n\n return (\n <Dialog open>\n <DialogContent data-testid=\"pairing-approval\" className=\"max-w-md\">\n <DialogHeader className=\"flex-col items-start\">\n <DialogTitle>Pair this device?</DialogTitle>\n <DialogDescription>\n Something scanned your code. Approve it only if it is the device in your hand.\n </DialogDescription>\n </DialogHeader>\n <DialogBody className=\"flex flex-col gap-2\">\n <p data-testid=\"pairing-approval-agent\" className=\"break-words text-base text-doom-text\">\n {request.userAgent}\n </p>\n {/* Labelled as reported rather than stated as fact: anything that can\n reach the tunnel listener can set this header to whatever it likes,\n so it is a clue for the human and never a security decision. */}\n <p className=\"text-sm text-doom-dim\">address reported by the edge: {request.edgeIp}</p>\n <p className=\"text-sm text-doom-dim\">\n Approving grants the same access you have here, including running shell commands.\n </p>\n </DialogBody>\n <DialogFooter className=\"px-3 pb-3 sm:px-4 sm:pb-4\">\n <Button variant=\"outline\" data-testid=\"pairing-deny\" onClick={() => void denyDevice(request.id)}>\n deny\n </Button>\n <Button variant=\"primary\" data-testid=\"pairing-approve\" onClick={() => void approveDevice(request.id)}>\n approve\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,SAAgB,wBAAwB;CAEtC,MAAM,WAAA,GADQA,sBAAAA,SAAAA,CAASC,0BAAAA,iBACH,CAAC,CAAC,MAAM,UAAU;CACtC,IAAI,YAAY,KAAA,GAAW,OAAO;CAElC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;EAAQ,MAAA;EACN,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,eAAD;GAAe,eAAY;GAAmB,WAAU;GAAxD,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD;KAAc,WAAU;KAAxB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD,EAAA,UAAa,oBAA8B,CAAA,GAC3C,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,mBAAD,EAAA,UAAmB,iFAEA,CAAA,CACP;;IACd,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,YAAD;KAAY,WAAU;KAAtB,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,eAAY;OAAyB,WAAU;OAC/C,UAAA,QAAQ;MACR,CAAA;MAIH,iBAAA,GAAA,kBAAA,KAAA,CAAC,KAAD;OAAG,WAAU;OAAb,UAAA,CAAqC,kCAA+B,QAAQ,MAAU;;MACtF,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,WAAU;OAAwB,UAAA;MAElC,CAAA;KACO;;IACZ,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD;KAAc,WAAU;KAAxB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;MAAQ,SAAQ;MAAU,eAAY;MAAe,eAAe,KAAKC,0BAAAA,WAAW,QAAQ,EAAE;MAAG,UAAA;KAEzF,CAAA,GACR,iBAAA,GAAA,kBAAA,IAAA,CAACD,6BAAAA,QAAD;MAAQ,SAAQ;MAAU,eAAY;MAAkB,eAAe,KAAKE,0BAAAA,cAAc,QAAQ,EAAE;MAAG,UAAA;KAE/F,CAAA,CACI;;GACD;;CACT,CAAA;AAEZ"}
@@ -0,0 +1,11 @@
1
+ //#region src/web/features/remote/PairingApprovalDialog.d.ts
2
+ /**
3
+ * The second factor, and the reason a photographed QR is not enough.
4
+ *
5
+ * Only ever rendered on the host: the hub sends pairing frames to local pages
6
+ * alone, so a paired phone cannot approve the next device and make its own
7
+ * access permanent.
8
+ */
9
+ export declare function PairingApprovalDialog(): import("react").JSX.Element | null;
10
+ //#endregion
11
+ //# sourceMappingURL=PairingApprovalDialog.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PairingApprovalDialog.d.mts","names":[],"sources":["../../../../src/web/features/remote/PairingApprovalDialog.tsx"],"mappings":";;;;;;;;wBAqBgB,yCAAqB,IAAA"}
@@ -0,0 +1,65 @@
1
+ import { approveDevice, denyDevice, remoteAccessStore } from "../../stores/remoteAccessStore.mjs";
2
+ import { useStore } from "@tanstack/react-store";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Button, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@agimon-ai/po-web-components";
5
+ //#region src/web/features/remote/PairingApprovalDialog.tsx
6
+ /**
7
+ * The second factor, and the reason a photographed QR is not enough.
8
+ *
9
+ * Only ever rendered on the host: the hub sends pairing frames to local pages
10
+ * alone, so a paired phone cannot approve the next device and make its own
11
+ * access permanent.
12
+ */
13
+ function PairingApprovalDialog() {
14
+ const request = useStore(remoteAccessStore).view?.pending?.[0];
15
+ if (request === void 0) return null;
16
+ return /* @__PURE__ */ jsx(Dialog, {
17
+ open: true,
18
+ children: /* @__PURE__ */ jsxs(DialogContent, {
19
+ "data-testid": "pairing-approval",
20
+ className: "max-w-md",
21
+ children: [
22
+ /* @__PURE__ */ jsxs(DialogHeader, {
23
+ className: "flex-col items-start",
24
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Pair this device?" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Something scanned your code. Approve it only if it is the device in your hand." })]
25
+ }),
26
+ /* @__PURE__ */ jsxs(DialogBody, {
27
+ className: "flex flex-col gap-2",
28
+ children: [
29
+ /* @__PURE__ */ jsx("p", {
30
+ "data-testid": "pairing-approval-agent",
31
+ className: "break-words text-base text-doom-text",
32
+ children: request.userAgent
33
+ }),
34
+ /* @__PURE__ */ jsxs("p", {
35
+ className: "text-sm text-doom-dim",
36
+ children: ["address reported by the edge: ", request.edgeIp]
37
+ }),
38
+ /* @__PURE__ */ jsx("p", {
39
+ className: "text-sm text-doom-dim",
40
+ children: "Approving grants the same access you have here, including running shell commands."
41
+ })
42
+ ]
43
+ }),
44
+ /* @__PURE__ */ jsxs(DialogFooter, {
45
+ className: "px-3 pb-3 sm:px-4 sm:pb-4",
46
+ children: [/* @__PURE__ */ jsx(Button, {
47
+ variant: "outline",
48
+ "data-testid": "pairing-deny",
49
+ onClick: () => void denyDevice(request.id),
50
+ children: "deny"
51
+ }), /* @__PURE__ */ jsx(Button, {
52
+ variant: "primary",
53
+ "data-testid": "pairing-approve",
54
+ onClick: () => void approveDevice(request.id),
55
+ children: "approve"
56
+ })]
57
+ })
58
+ ]
59
+ })
60
+ });
61
+ }
62
+ //#endregion
63
+ export { PairingApprovalDialog };
64
+
65
+ //# sourceMappingURL=PairingApprovalDialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PairingApprovalDialog.mjs","names":[],"sources":["../../../../src/web/features/remote/PairingApprovalDialog.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport { approveDevice, denyDevice, remoteAccessStore } from '../../stores/remoteAccessStore';\n\n/**\n * The second factor, and the reason a photographed QR is not enough.\n *\n * Only ever rendered on the host: the hub sends pairing frames to local pages\n * alone, so a paired phone cannot approve the next device and make its own\n * access permanent.\n */\nexport function PairingApprovalDialog() {\n const state = useStore(remoteAccessStore);\n const request = state.view?.pending?.[0];\n if (request === undefined) return null;\n\n return (\n <Dialog open>\n <DialogContent data-testid=\"pairing-approval\" className=\"max-w-md\">\n <DialogHeader className=\"flex-col items-start\">\n <DialogTitle>Pair this device?</DialogTitle>\n <DialogDescription>\n Something scanned your code. Approve it only if it is the device in your hand.\n </DialogDescription>\n </DialogHeader>\n <DialogBody className=\"flex flex-col gap-2\">\n <p data-testid=\"pairing-approval-agent\" className=\"break-words text-base text-doom-text\">\n {request.userAgent}\n </p>\n {/* Labelled as reported rather than stated as fact: anything that can\n reach the tunnel listener can set this header to whatever it likes,\n so it is a clue for the human and never a security decision. */}\n <p className=\"text-sm text-doom-dim\">address reported by the edge: {request.edgeIp}</p>\n <p className=\"text-sm text-doom-dim\">\n Approving grants the same access you have here, including running shell commands.\n </p>\n </DialogBody>\n <DialogFooter className=\"px-3 pb-3 sm:px-4 sm:pb-4\">\n <Button variant=\"outline\" data-testid=\"pairing-deny\" onClick={() => void denyDevice(request.id)}>\n deny\n </Button>\n <Button variant=\"primary\" data-testid=\"pairing-approve\" onClick={() => void approveDevice(request.id)}>\n approve\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,SAAgB,wBAAwB;CAEtC,MAAM,UADQ,SAAS,iBACH,CAAC,CAAC,MAAM,UAAU;CACtC,IAAI,YAAY,KAAA,GAAW,OAAO;CAElC,OACE,oBAAC,QAAD;EAAQ,MAAA;EACN,UAAA,qBAAC,eAAD;GAAe,eAAY;GAAmB,WAAU;GAAxD,UAAA;IACE,qBAAC,cAAD;KAAc,WAAU;KAAxB,UAAA,CACE,oBAAC,aAAD,EAAA,UAAa,oBAA8B,CAAA,GAC3C,oBAAC,mBAAD,EAAA,UAAmB,iFAEA,CAAA,CACP;;IACd,qBAAC,YAAD;KAAY,WAAU;KAAtB,UAAA;MACE,oBAAC,KAAD;OAAG,eAAY;OAAyB,WAAU;OAC/C,UAAA,QAAQ;MACR,CAAA;MAIH,qBAAC,KAAD;OAAG,WAAU;OAAb,UAAA,CAAqC,kCAA+B,QAAQ,MAAU;;MACtF,oBAAC,KAAD;OAAG,WAAU;OAAwB,UAAA;MAElC,CAAA;KACO;;IACZ,qBAAC,cAAD;KAAc,WAAU;KAAxB,UAAA,CACE,oBAAC,QAAD;MAAQ,SAAQ;MAAU,eAAY;MAAe,eAAe,KAAK,WAAW,QAAQ,EAAE;MAAG,UAAA;KAEzF,CAAA,GACR,oBAAC,QAAD;MAAQ,SAAQ;MAAU,eAAY;MAAkB,eAAe,KAAK,cAAc,QAAQ,EAAE;MAAG,UAAA;KAE/F,CAAA,CACI;;GACD;;CACT,CAAA;AAEZ"}
@@ -0,0 +1,83 @@
1
+ const require_remoteAccessStore = require("../../stores/remoteAccessStore.cjs");
2
+ const require_HandoverProgress = require("./HandoverProgress.cjs");
3
+ const require_RemoteAccessOptions = require("./RemoteAccessOptions.cjs");
4
+ const require_RemoteAccessPairing = require("./RemoteAccessPairing.cjs");
5
+ let _tanstack_react_store = require("@tanstack/react-store");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
8
+ //#region src/web/features/remote/RemoteAccessDialog.tsx
9
+ /**
10
+ * Two panels rather than one.
11
+ *
12
+ * Turning this on puts a shell on this machine within reach of the internet, so
13
+ * the settings that bound it come first and the code to scan comes second, once
14
+ * those are answered.
15
+ */
16
+ function RemoteAccessDialog() {
17
+ const state = (0, _tanstack_react_store.useStore)(require_remoteAccessStore.remoteAccessStore);
18
+ const view = state.view;
19
+ const pairing = state.step === "pairing";
20
+ const moving = state.step === "handover";
21
+ const starting = state.busy || view?.status === "starting";
22
+ if (view?.pending?.length) return null;
23
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Dialog, {
24
+ open: state.step !== "closed",
25
+ onOpenChange: (next) => next ? void 0 : require_remoteAccessStore.closeRemoteDialog(),
26
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogContent, {
27
+ width: "lg",
28
+ "data-testid": "remote-access-dialog",
29
+ "aria-describedby": void 0,
30
+ children: [
31
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogTitle, { children: pairing ? "Pair a device" : "Remote access" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogDescription, { children: pairing ? "Scan this with the device you want to use. You will be asked to approve it here." : "Reach this cockpit from your phone over a public tunnel." })] }),
32
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.DialogBody, {
33
+ className: "flex flex-col gap-5",
34
+ children: [
35
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
36
+ className: "text-sm leading-relaxed text-doom-dim",
37
+ children: "A paired device can prompt the agent, approve its tool calls, and run shell commands as you. Pair only devices you hold, and only when you mean to."
38
+ }),
39
+ moving ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_HandoverProgress.HandoverProgress, {}) : null,
40
+ pairing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RemoteAccessPairing.RemoteAccessPairing, {}) : null,
41
+ pairing || moving ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RemoteAccessOptions.RemoteAccessOptions, {}),
42
+ state.error === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
43
+ "data-testid": "remote-access-error",
44
+ className: "text-sm text-doom-red",
45
+ children: state.error
46
+ })
47
+ ]
48
+ }),
49
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogFooter, {
50
+ className: moving ? "hidden" : void 0,
51
+ children: view?.status === "on" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
52
+ variant: "danger-outline",
53
+ "data-testid": "remote-access-off",
54
+ disabled: state.busy,
55
+ onClick: () => void require_remoteAccessStore.turnRemoteAccessOff(),
56
+ children: "turn off"
57
+ }), pairing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
58
+ variant: "ghost",
59
+ "data-testid": "remote-access-back",
60
+ onClick: require_remoteAccessStore.showRemoteOptions,
61
+ children: "options"
62
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
63
+ variant: "primary",
64
+ "data-testid": "remote-access-pair",
65
+ disabled: state.busy,
66
+ onClick: () => void require_remoteAccessStore.newPairingCode(),
67
+ children: "pair a device"
68
+ })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_agimon_ai_po_web_components.Button, {
69
+ variant: "primary",
70
+ "data-testid": "remote-access-on",
71
+ disabled: starting,
72
+ onClick: () => void require_remoteAccessStore.turnRemoteAccessOn(),
73
+ children: [starting ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Spinner, {}) : null, "turn on and show the code"]
74
+ })
75
+ })
76
+ ]
77
+ })
78
+ });
79
+ }
80
+ //#endregion
81
+ exports.RemoteAccessDialog = RemoteAccessDialog;
82
+
83
+ //# sourceMappingURL=RemoteAccessDialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteAccessDialog.cjs","names":["useStore","remoteAccessStore","Dialog","closeRemoteDialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","HandoverProgress","RemoteAccessPairing","RemoteAccessOptions","DialogFooter","Button","turnRemoteAccessOff","showRemoteOptions","newPairingCode","turnRemoteAccessOn","Spinner"],"sources":["../../../../src/web/features/remote/RemoteAccessDialog.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n Spinner,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport {\n closeRemoteDialog,\n newPairingCode,\n remoteAccessStore,\n showRemoteOptions,\n turnRemoteAccessOff,\n turnRemoteAccessOn,\n} from '../../stores/remoteAccessStore';\nimport { HandoverProgress } from './HandoverProgress';\nimport { RemoteAccessOptions } from './RemoteAccessOptions';\nimport { RemoteAccessPairing } from './RemoteAccessPairing';\n\n/**\n * Two panels rather than one.\n *\n * Turning this on puts a shell on this machine within reach of the internet, so\n * the settings that bound it come first and the code to scan comes second, once\n * those are answered.\n */\nexport function RemoteAccessDialog() {\n const state = useStore(remoteAccessStore);\n const view = state.view;\n const pairing = state.step === 'pairing';\n const moving = state.step === 'handover';\n const starting = state.busy || view?.status === 'starting';\n\n // The approval prompt is the only action that matters while a device waits.\n // Two modal roots compete for focus and backdrop ordering when both stay open.\n if (view?.pending?.length) return null;\n\n return (\n <Dialog open={state.step !== 'closed'} onOpenChange={(next) => (next ? undefined : closeRemoteDialog())}>\n <DialogContent width=\"lg\" data-testid=\"remote-access-dialog\" aria-describedby={undefined}>\n <DialogHeader>\n <DialogTitle>{pairing ? 'Pair a device' : 'Remote access'}</DialogTitle>\n <DialogDescription>\n {pairing\n ? 'Scan this with the device you want to use. You will be asked to approve it here.'\n : 'Reach this cockpit from your phone over a public tunnel.'}\n </DialogDescription>\n </DialogHeader>\n\n <DialogBody className=\"flex flex-col gap-5\">\n {/* Said before the switch, not after: a paired device can do\n everything the person at this keyboard can do. */}\n <p className=\"text-sm leading-relaxed text-doom-dim\">\n A paired device can prompt the agent, approve its tool calls, and run shell commands as you. Pair only\n devices you hold, and only when you mean to.\n </p>\n\n {moving ? <HandoverProgress /> : null}\n {pairing ? <RemoteAccessPairing /> : null}\n {pairing || moving ? null : <RemoteAccessOptions />}\n\n {state.error === undefined ? null : (\n <p data-testid=\"remote-access-error\" className=\"text-sm text-doom-red\">\n {state.error}\n </p>\n )}\n </DialogBody>\n\n {/* Nothing to offer during a handover: every control here would call a\n server that is in the middle of being replaced. */}\n <DialogFooter className={moving ? 'hidden' : undefined}>\n {view?.status === 'on' ? (\n <>\n <Button\n variant=\"danger-outline\"\n data-testid=\"remote-access-off\"\n disabled={state.busy}\n onClick={() => void turnRemoteAccessOff()}\n >\n turn off\n </Button>\n {pairing ? (\n <Button variant=\"ghost\" data-testid=\"remote-access-back\" onClick={showRemoteOptions}>\n options\n </Button>\n ) : (\n <Button\n variant=\"primary\"\n data-testid=\"remote-access-pair\"\n disabled={state.busy}\n onClick={() => void newPairingCode()}\n >\n pair a device\n </Button>\n )}\n </>\n ) : (\n <Button\n variant=\"primary\"\n data-testid=\"remote-access-on\"\n disabled={starting}\n onClick={() => void turnRemoteAccessOn()}\n >\n {starting ? <Spinner /> : null}\n turn on and show the code\n </Button>\n )}\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgCA,SAAgB,qBAAqB;CACnC,MAAM,SAAA,GAAQA,sBAAAA,SAAAA,CAASC,0BAAAA,iBAAiB;CACxC,MAAM,OAAO,MAAM;CACnB,MAAM,UAAU,MAAM,SAAS;CAC/B,MAAM,SAAS,MAAM,SAAS;CAC9B,MAAM,WAAW,MAAM,QAAQ,MAAM,WAAW;CAIhD,IAAI,MAAM,SAAS,QAAQ,OAAO;CAElC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;EAAQ,MAAM,MAAM,SAAS;EAAU,eAAe,SAAU,OAAO,KAAA,IAAYC,0BAAAA,kBAAkB;EACnG,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,eAAD;GAAe,OAAM;GAAK,eAAY;GAAuB,oBAAkB,KAAA;GAA/E,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD,EAAA,UAAc,UAAU,kBAAkB,gBAA6B,CAAA,GACvE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,mBAAD,EAAA,UACG,UACG,qFACA,2DACa,CAAA,CACP,EAAA,CAAA;IAEd,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,YAAD;KAAY,WAAU;KAAtB,UAAA;MAGE,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,WAAU;OAAwC,UAAA;MAGlD,CAAA;MAEF,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,kBAAD,CAAmB,CAAA,IAAI;MAChC,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD,CAAsB,CAAA,IAAI;MACpC,WAAW,SAAS,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD,CAAsB,CAAA;MAEjD,MAAM,UAAU,KAAA,IAAY,OAC3B,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,eAAY;OAAsB,WAAU;OAC5C,UAAA,MAAM;MACN,CAAA;KAEK;;IAIZ,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,cAAD;KAAc,WAAW,SAAS,WAAW,KAAA;KAC1C,UAAA,MAAM,WAAW,OAChB,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;MACE,SAAQ;MACR,eAAY;MACZ,UAAU,MAAM;MAChB,eAAe,KAAKC,0BAAAA,oBAAoB;MACzC,UAAA;KAEO,CAAA,GACP,UACC,iBAAA,GAAA,kBAAA,IAAA,CAACD,6BAAAA,QAAD;MAAQ,SAAQ;MAAQ,eAAY;MAAqB,SAASE,0BAAAA;MAAmB,UAAA;KAE7E,CAAA,IAER,iBAAA,GAAA,kBAAA,IAAA,CAACF,6BAAAA,QAAD;MACE,SAAQ;MACR,eAAY;MACZ,UAAU,MAAM;MAChB,eAAe,KAAKG,0BAAAA,eAAe;MACpC,UAAA;KAEO,CAAA,CAEV,EAAA,CAAA,IAEF,iBAAA,GAAA,kBAAA,KAAA,CAACH,6BAAAA,QAAD;MACE,SAAQ;MACR,eAAY;MACZ,UAAU;MACV,eAAe,KAAKI,0BAAAA,mBAAmB;MAJzC,UAAA,CAMG,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,SAAD,CAAU,CAAA,IAAI,MAAK,2BAEzB;;IAEE,CAAA;GACD;;CACT,CAAA;AAEZ"}
@@ -0,0 +1,11 @@
1
+ //#region src/web/features/remote/RemoteAccessDialog.d.ts
2
+ /**
3
+ * Two panels rather than one.
4
+ *
5
+ * Turning this on puts a shell on this machine within reach of the internet, so
6
+ * the settings that bound it come first and the code to scan comes second, once
7
+ * those are answered.
8
+ */
9
+ export declare function RemoteAccessDialog(): import("react").JSX.Element | null;
10
+ //#endregion
11
+ //# sourceMappingURL=RemoteAccessDialog.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteAccessDialog.d.mts","names":[],"sources":["../../../../src/web/features/remote/RemoteAccessDialog.tsx"],"mappings":";;;;;;;;wBAgCgB,sCAAkB,IAAA"}