@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,75 @@
1
+ let _agimon_ai_po_core_web = require("@agimon-ai/po-core/web");
2
+ //#region src/types/media.ts
3
+ /** Keyed by lower-case extension without the dot. */
4
+ const MEDIA_TYPES = {
5
+ avif: {
6
+ kind: "image",
7
+ contentType: "image/avif"
8
+ },
9
+ bmp: {
10
+ kind: "image",
11
+ contentType: "image/bmp"
12
+ },
13
+ gif: {
14
+ kind: "image",
15
+ contentType: "image/gif"
16
+ },
17
+ jpeg: {
18
+ kind: "image",
19
+ contentType: "image/jpeg"
20
+ },
21
+ jpg: {
22
+ kind: "image",
23
+ contentType: "image/jpeg"
24
+ },
25
+ png: {
26
+ kind: "image",
27
+ contentType: "image/png"
28
+ },
29
+ svg: {
30
+ kind: "image",
31
+ contentType: "image/svg+xml"
32
+ },
33
+ webp: {
34
+ kind: "image",
35
+ contentType: "image/webp"
36
+ },
37
+ m4v: {
38
+ kind: "video",
39
+ contentType: "video/mp4"
40
+ },
41
+ mov: {
42
+ kind: "video",
43
+ contentType: "video/quicktime"
44
+ },
45
+ mp4: {
46
+ kind: "video",
47
+ contentType: "video/mp4"
48
+ },
49
+ webm: {
50
+ kind: "video",
51
+ contentType: "video/webm"
52
+ },
53
+ pdf: {
54
+ kind: "pdf",
55
+ contentType: "application/pdf"
56
+ }
57
+ };
58
+ /** The hub refuses to serve a mentioned file past this size. */
59
+ const MAX_SESSION_FILE_BYTES = 26214400;
60
+ /** Session file bytes; paths may be cwd-relative or absolute inside the working directory. */
61
+ const SESSION_FILE_ROUTE = "/api/workspaces/:workspaceId/sessions/:sessionId/file";
62
+ const SESSION_FILE_SHA256_HEADER = "X-File-SHA256";
63
+ const SESSION_FILE_EXPECTED_SHA256_HEADER = "X-Expected-SHA256";
64
+ function sessionFileUrl(sessionId, relativePath) {
65
+ return `${(0, _agimon_ai_po_core_web.sessionApiPath)(sessionId)}/file?path=${encodeURIComponent(relativePath)}`;
66
+ }
67
+ //#endregion
68
+ exports.MAX_SESSION_FILE_BYTES = MAX_SESSION_FILE_BYTES;
69
+ exports.MEDIA_TYPES = MEDIA_TYPES;
70
+ exports.SESSION_FILE_EXPECTED_SHA256_HEADER = SESSION_FILE_EXPECTED_SHA256_HEADER;
71
+ exports.SESSION_FILE_ROUTE = SESSION_FILE_ROUTE;
72
+ exports.SESSION_FILE_SHA256_HEADER = SESSION_FILE_SHA256_HEADER;
73
+ exports.sessionFileUrl = sessionFileUrl;
74
+
75
+ //# sourceMappingURL=media.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.cjs","names":["sessionApiPath"],"sources":["../../src/types/media.ts"],"sourcesContent":["import { sessionApiPath } from '@agimon-ai/po-core/web';\n/**\n * How the cockpit previews a file a message mentions: the hub serves it from\n * the session's working directory and the timeline picks the element by\n * kind. Anything not listed here is offered as a plain file link.\n */\nexport type MediaKind = 'image' | 'video' | 'pdf';\n\nexport interface MediaType {\n kind: MediaKind;\n contentType: string;\n}\n\n/** Keyed by lower-case extension without the dot. */\nexport const MEDIA_TYPES: Readonly<Record<string, MediaType>> = {\n avif: { kind: 'image', contentType: 'image/avif' },\n bmp: { kind: 'image', contentType: 'image/bmp' },\n gif: { kind: 'image', contentType: 'image/gif' },\n jpeg: { kind: 'image', contentType: 'image/jpeg' },\n jpg: { kind: 'image', contentType: 'image/jpeg' },\n png: { kind: 'image', contentType: 'image/png' },\n svg: { kind: 'image', contentType: 'image/svg+xml' },\n webp: { kind: 'image', contentType: 'image/webp' },\n m4v: { kind: 'video', contentType: 'video/mp4' },\n mov: { kind: 'video', contentType: 'video/quicktime' },\n mp4: { kind: 'video', contentType: 'video/mp4' },\n webm: { kind: 'video', contentType: 'video/webm' },\n pdf: { kind: 'pdf', contentType: 'application/pdf' },\n};\n\n/** The hub refuses to serve a mentioned file past this size. */\nexport const MAX_SESSION_FILE_BYTES = 25 * 1024 * 1024;\n\n/** Session file bytes; paths may be cwd-relative or absolute inside the working directory. */\nexport const SESSION_FILE_ROUTE = '/api/workspaces/:workspaceId/sessions/:sessionId/file';\nexport const SESSION_FILE_SHA256_HEADER = 'X-File-SHA256';\nexport const SESSION_FILE_EXPECTED_SHA256_HEADER = 'X-Expected-SHA256';\n\nexport function sessionFileUrl(sessionId: string, relativePath: string): string {\n return `${sessionApiPath(sessionId)}/file?path=${encodeURIComponent(relativePath)}`;\n}\n"],"mappings":";;;AAcA,MAAa,cAAmD;CAC9D,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAa;CAChD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,KAAK;EAAE,MAAM;EAAS,aAAa;CAAgB;CACnD,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,KAAK;EAAE,MAAM;EAAS,aAAa;CAAkB;CACrD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAO,aAAa;CAAkB;AACrD;;AAGA,MAAa,yBAAyB;;AAGtC,MAAa,qBAAqB;AAClC,MAAa,6BAA6B;AAC1C,MAAa,sCAAsC;AAEnD,SAAgB,eAAe,WAAmB,cAA8B;CAC9E,OAAO,IAAA,GAAGA,uBAAAA,eAAAA,CAAe,SAAS,EAAE,aAAa,mBAAmB,YAAY;AAClF"}
@@ -0,0 +1,22 @@
1
+ //#region src/types/media.d.ts
2
+ /**
3
+ * How the cockpit previews a file a message mentions: the hub serves it from
4
+ * the session's working directory and the timeline picks the element by
5
+ * kind. Anything not listed here is offered as a plain file link.
6
+ */
7
+ export type MediaKind = 'image' | 'video' | 'pdf';
8
+ export interface MediaType {
9
+ kind: MediaKind;
10
+ contentType: string;
11
+ }
12
+ /** Keyed by lower-case extension without the dot. */
13
+ export declare const MEDIA_TYPES: Readonly<Record<string, MediaType>>;
14
+ /** The hub refuses to serve a mentioned file past this size. */
15
+ export declare const MAX_SESSION_FILE_BYTES: number;
16
+ /** Session file bytes; paths may be cwd-relative or absolute inside the working directory. */
17
+ export declare const SESSION_FILE_ROUTE = "/api/workspaces/:workspaceId/sessions/:sessionId/file";
18
+ export declare const SESSION_FILE_SHA256_HEADER = "X-File-SHA256";
19
+ export declare const SESSION_FILE_EXPECTED_SHA256_HEADER = "X-Expected-SHA256";
20
+ export declare function sessionFileUrl(sessionId: string, relativePath: string): string;
21
+ //#endregion
22
+ //# sourceMappingURL=media.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.mts","names":[],"sources":["../../src/types/media.ts"],"mappings":";;;;;;YAMY;iBAEK;EACf,MAAM;EACN;;;qBAIW,aAAa,SAAS,eAAe;;qBAiBrC;;qBAGA;qBACA;qBACA;wBAEG,eAAe,mBAAmB"}
@@ -0,0 +1,70 @@
1
+ import { sessionApiPath } from "@agimon-ai/po-core/web";
2
+ //#region src/types/media.ts
3
+ /** Keyed by lower-case extension without the dot. */
4
+ const MEDIA_TYPES = {
5
+ avif: {
6
+ kind: "image",
7
+ contentType: "image/avif"
8
+ },
9
+ bmp: {
10
+ kind: "image",
11
+ contentType: "image/bmp"
12
+ },
13
+ gif: {
14
+ kind: "image",
15
+ contentType: "image/gif"
16
+ },
17
+ jpeg: {
18
+ kind: "image",
19
+ contentType: "image/jpeg"
20
+ },
21
+ jpg: {
22
+ kind: "image",
23
+ contentType: "image/jpeg"
24
+ },
25
+ png: {
26
+ kind: "image",
27
+ contentType: "image/png"
28
+ },
29
+ svg: {
30
+ kind: "image",
31
+ contentType: "image/svg+xml"
32
+ },
33
+ webp: {
34
+ kind: "image",
35
+ contentType: "image/webp"
36
+ },
37
+ m4v: {
38
+ kind: "video",
39
+ contentType: "video/mp4"
40
+ },
41
+ mov: {
42
+ kind: "video",
43
+ contentType: "video/quicktime"
44
+ },
45
+ mp4: {
46
+ kind: "video",
47
+ contentType: "video/mp4"
48
+ },
49
+ webm: {
50
+ kind: "video",
51
+ contentType: "video/webm"
52
+ },
53
+ pdf: {
54
+ kind: "pdf",
55
+ contentType: "application/pdf"
56
+ }
57
+ };
58
+ /** The hub refuses to serve a mentioned file past this size. */
59
+ const MAX_SESSION_FILE_BYTES = 26214400;
60
+ /** Session file bytes; paths may be cwd-relative or absolute inside the working directory. */
61
+ const SESSION_FILE_ROUTE = "/api/workspaces/:workspaceId/sessions/:sessionId/file";
62
+ const SESSION_FILE_SHA256_HEADER = "X-File-SHA256";
63
+ const SESSION_FILE_EXPECTED_SHA256_HEADER = "X-Expected-SHA256";
64
+ function sessionFileUrl(sessionId, relativePath) {
65
+ return `${sessionApiPath(sessionId)}/file?path=${encodeURIComponent(relativePath)}`;
66
+ }
67
+ //#endregion
68
+ export { MAX_SESSION_FILE_BYTES, MEDIA_TYPES, SESSION_FILE_EXPECTED_SHA256_HEADER, SESSION_FILE_ROUTE, SESSION_FILE_SHA256_HEADER, sessionFileUrl };
69
+
70
+ //# sourceMappingURL=media.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.mjs","names":[],"sources":["../../src/types/media.ts"],"sourcesContent":["import { sessionApiPath } from '@agimon-ai/po-core/web';\n/**\n * How the cockpit previews a file a message mentions: the hub serves it from\n * the session's working directory and the timeline picks the element by\n * kind. Anything not listed here is offered as a plain file link.\n */\nexport type MediaKind = 'image' | 'video' | 'pdf';\n\nexport interface MediaType {\n kind: MediaKind;\n contentType: string;\n}\n\n/** Keyed by lower-case extension without the dot. */\nexport const MEDIA_TYPES: Readonly<Record<string, MediaType>> = {\n avif: { kind: 'image', contentType: 'image/avif' },\n bmp: { kind: 'image', contentType: 'image/bmp' },\n gif: { kind: 'image', contentType: 'image/gif' },\n jpeg: { kind: 'image', contentType: 'image/jpeg' },\n jpg: { kind: 'image', contentType: 'image/jpeg' },\n png: { kind: 'image', contentType: 'image/png' },\n svg: { kind: 'image', contentType: 'image/svg+xml' },\n webp: { kind: 'image', contentType: 'image/webp' },\n m4v: { kind: 'video', contentType: 'video/mp4' },\n mov: { kind: 'video', contentType: 'video/quicktime' },\n mp4: { kind: 'video', contentType: 'video/mp4' },\n webm: { kind: 'video', contentType: 'video/webm' },\n pdf: { kind: 'pdf', contentType: 'application/pdf' },\n};\n\n/** The hub refuses to serve a mentioned file past this size. */\nexport const MAX_SESSION_FILE_BYTES = 25 * 1024 * 1024;\n\n/** Session file bytes; paths may be cwd-relative or absolute inside the working directory. */\nexport const SESSION_FILE_ROUTE = '/api/workspaces/:workspaceId/sessions/:sessionId/file';\nexport const SESSION_FILE_SHA256_HEADER = 'X-File-SHA256';\nexport const SESSION_FILE_EXPECTED_SHA256_HEADER = 'X-Expected-SHA256';\n\nexport function sessionFileUrl(sessionId: string, relativePath: string): string {\n return `${sessionApiPath(sessionId)}/file?path=${encodeURIComponent(relativePath)}`;\n}\n"],"mappings":";;;AAcA,MAAa,cAAmD;CAC9D,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAa;CAChD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,KAAK;EAAE,MAAM;EAAS,aAAa;CAAgB;CACnD,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,KAAK;EAAE,MAAM;EAAS,aAAa;CAAkB;CACrD,KAAK;EAAE,MAAM;EAAS,aAAa;CAAY;CAC/C,MAAM;EAAE,MAAM;EAAS,aAAa;CAAa;CACjD,KAAK;EAAE,MAAM;EAAO,aAAa;CAAkB;AACrD;;AAGA,MAAa,yBAAyB;;AAGtC,MAAa,qBAAqB;AAClC,MAAa,6BAA6B;AAC1C,MAAa,sCAAsC;AAEnD,SAAgB,eAAe,WAAmB,cAA8B;CAC9E,OAAO,GAAG,eAAe,SAAS,EAAE,aAAa,mBAAmB,YAAY;AAClF"}
@@ -0,0 +1,19 @@
1
+ let _agimon_ai_po_core_notification = require("@agimon-ai/po-core/notification");
2
+ //#region src/types/notification.ts
3
+ function isRecord(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ /** Reads only a direct, validated Doom notification custom-entry frame. */
7
+ function parseDoomNotificationEntry(frame) {
8
+ if (!isRecord(frame) || frame.type !== "entry_appended" || !isRecord(frame.entry)) return void 0;
9
+ const entry = frame.entry;
10
+ if (entry.type !== "custom" || entry.customType !== _agimon_ai_po_core_notification.DOOM_NOTIFICATION_ENTRY_TYPE || typeof entry.id !== "string" || entry.id.trim().length === 0 || !(0, _agimon_ai_po_core_notification.isDoomNotificationEntryData)(entry.data)) return;
11
+ return {
12
+ entryId: entry.id,
13
+ data: entry.data
14
+ };
15
+ }
16
+ //#endregion
17
+ exports.parseDoomNotificationEntry = parseDoomNotificationEntry;
18
+
19
+ //# sourceMappingURL=notification.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.cjs","names":["DOOM_NOTIFICATION_ENTRY_TYPE","isDoomNotificationEntryData"],"sources":["../../src/types/notification.ts"],"sourcesContent":["import {\n DOOM_NOTIFICATION_ENTRY_TYPE,\n type DoomNotificationEntryData,\n isDoomNotificationEntryData,\n} from '@agimon-ai/po-core/notification';\n\nexport interface DoomNotificationEntry {\n entryId: string;\n data: DoomNotificationEntryData;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** Reads only a direct, validated Doom notification custom-entry frame. */\nexport function parseDoomNotificationEntry(frame: unknown): DoomNotificationEntry | undefined {\n if (!isRecord(frame) || frame.type !== 'entry_appended' || !isRecord(frame.entry)) return undefined;\n const entry = frame.entry;\n if (\n entry.type !== 'custom' ||\n entry.customType !== DOOM_NOTIFICATION_ENTRY_TYPE ||\n typeof entry.id !== 'string' ||\n entry.id.trim().length === 0 ||\n !isDoomNotificationEntryData(entry.data)\n ) {\n return undefined;\n }\n return { entryId: entry.id, data: entry.data };\n}\n"],"mappings":";;AAWA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;AAGA,SAAgB,2BAA2B,OAAmD;CAC5F,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,SAAS,oBAAoB,CAAC,SAAS,MAAM,KAAK,GAAG,OAAO,KAAA;CAC1F,MAAM,QAAQ,MAAM;CACpB,IACE,MAAM,SAAS,YACf,MAAM,eAAeA,gCAAAA,gCACrB,OAAO,MAAM,OAAO,YACpB,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,KAC3B,EAAA,GAACC,gCAAAA,4BAAAA,CAA4B,MAAM,IAAI,GAEvC;CAEF,OAAO;EAAE,SAAS,MAAM;EAAI,MAAM,MAAM;CAAK;AAC/C"}
@@ -0,0 +1,10 @@
1
+ import { DoomNotificationEntryData } from "@agimon-ai/po-core/notification";
2
+ //#region src/types/notification.d.ts
3
+ export interface DoomNotificationEntry {
4
+ entryId: string;
5
+ data: DoomNotificationEntryData;
6
+ }
7
+ /** Reads only a direct, validated Doom notification custom-entry frame. */
8
+ export declare function parseDoomNotificationEntry(frame: unknown): DoomNotificationEntry | undefined;
9
+ //#endregion
10
+ //# sourceMappingURL=notification.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.mts","names":[],"sources":["../../src/types/notification.ts"],"mappings":";;iBAMiB;EACf;EACA,MAAM;;;wBAQQ,2BAA2B,iBAAiB"}
@@ -0,0 +1,19 @@
1
+ import { DOOM_NOTIFICATION_ENTRY_TYPE, isDoomNotificationEntryData } from "@agimon-ai/po-core/notification";
2
+ //#region src/types/notification.ts
3
+ function isRecord(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ /** Reads only a direct, validated Doom notification custom-entry frame. */
7
+ function parseDoomNotificationEntry(frame) {
8
+ if (!isRecord(frame) || frame.type !== "entry_appended" || !isRecord(frame.entry)) return void 0;
9
+ const entry = frame.entry;
10
+ if (entry.type !== "custom" || entry.customType !== DOOM_NOTIFICATION_ENTRY_TYPE || typeof entry.id !== "string" || entry.id.trim().length === 0 || !isDoomNotificationEntryData(entry.data)) return;
11
+ return {
12
+ entryId: entry.id,
13
+ data: entry.data
14
+ };
15
+ }
16
+ //#endregion
17
+ export { parseDoomNotificationEntry };
18
+
19
+ //# sourceMappingURL=notification.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.mjs","names":[],"sources":["../../src/types/notification.ts"],"sourcesContent":["import {\n DOOM_NOTIFICATION_ENTRY_TYPE,\n type DoomNotificationEntryData,\n isDoomNotificationEntryData,\n} from '@agimon-ai/po-core/notification';\n\nexport interface DoomNotificationEntry {\n entryId: string;\n data: DoomNotificationEntryData;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** Reads only a direct, validated Doom notification custom-entry frame. */\nexport function parseDoomNotificationEntry(frame: unknown): DoomNotificationEntry | undefined {\n if (!isRecord(frame) || frame.type !== 'entry_appended' || !isRecord(frame.entry)) return undefined;\n const entry = frame.entry;\n if (\n entry.type !== 'custom' ||\n entry.customType !== DOOM_NOTIFICATION_ENTRY_TYPE ||\n typeof entry.id !== 'string' ||\n entry.id.trim().length === 0 ||\n !isDoomNotificationEntryData(entry.data)\n ) {\n return undefined;\n }\n return { entryId: entry.id, data: entry.data };\n}\n"],"mappings":";;AAWA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;AAGA,SAAgB,2BAA2B,OAAmD;CAC5F,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,SAAS,oBAAoB,CAAC,SAAS,MAAM,KAAK,GAAG,OAAO,KAAA;CAC1F,MAAM,QAAQ,MAAM;CACpB,IACE,MAAM,SAAS,YACf,MAAM,eAAe,gCACrB,OAAO,MAAM,OAAO,YACpB,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,KAC3B,CAAC,4BAA4B,MAAM,IAAI,GAEvC;CAEF,OAAO;EAAE,SAAS,MAAM;EAAI,MAAM,MAAM;CAAK;AAC/C"}
@@ -0,0 +1,92 @@
1
+ //#region src/types/remoteAccess.ts
2
+ /**
3
+ * Wire vocabulary for remote access, shared by the hub routes and the cockpit.
4
+ *
5
+ * Remote access binds a second loopback listener that a tunnel points at, and
6
+ * everything arriving there must prove it holds a paired session. The
7
+ * discriminator is the listening socket, not a header: a tunnel connects from
8
+ * 127.0.0.1 like every local client, and there is no header a remote caller
9
+ * cannot forge.
10
+ */
11
+ /** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */
12
+ const REMOTE_API_ROUTE = "/api/remote";
13
+ /** Direct endpoint that establishes one scoped end-to-end channel. */
14
+ const REMOTE_CHANNEL_ROUTE = `${REMOTE_API_ROUTE}/channel`;
15
+ /** The only authenticated HTTP gateway exposed on the tunnel listener. */
16
+ const REMOTE_HTTP_ROUTE = `${REMOTE_API_ROUTE}/request`;
17
+ /** Device-bound, sealed routes for ephemeral live Web Push registration. */
18
+ /** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */
19
+ const TRUSTED_DEVICES_ROUTE = `${REMOTE_API_ROUTE}/trusted-devices`;
20
+ const REMOTE_PUSH_ROUTE = `${REMOTE_API_ROUTE}/push`;
21
+ const REMOTE_PUSH_KEY_ROUTE = `${REMOTE_PUSH_ROUTE}/key`;
22
+ const PROTOCOL_SOCKET_ROUTE = "/api/ws";
23
+ /** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */
24
+ const PAIRING_PAGE_ROUTE = "/pair";
25
+ /** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */
26
+ const PAIRING_CLAIM_ROUTE = "/api/remote/pair";
27
+ /** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */
28
+ const PAIRING_STATUS_ROUTE = "/api/remote/pair/status";
29
+ /** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */
30
+ const PAIRING_STATUS_QUERY = "request";
31
+ /** URL-fragment fields authenticated by seeing the host's physical QR. */
32
+ const BUNDLE_SIGNING_KEY_PARAM = "s";
33
+ const BUNDLE_MINIMUM_REVISION_PARAM = "r";
34
+ /**
35
+ * Session cookie base name. Rendered `__Host-po_device` by hono's `host`
36
+ * prefix, which refuses the cookie unless it is Secure, Path=/, and
37
+ * Domain-less, so a sibling subdomain can neither read nor overwrite it.
38
+ */
39
+ const DEVICE_COOKIE = "po_device";
40
+ /**
41
+ * Passkey ceremonies exposed directly on the pairing surface.
42
+ *
43
+ * Sign-in is unauthenticated because it creates a session. Registration requires
44
+ * the paired device cookie issued after host approval, but remains direct so the
45
+ * self-contained pairing page can offer enrolment before loading the cockpit.
46
+ */
47
+ const PASSKEY_AUTH_BEGIN_ROUTE = "/api/remote/passkeys/authenticate/begin";
48
+ const PASSKEY_AUTH_FINISH_ROUTE = "/api/remote/passkeys/authenticate/finish";
49
+ const PASSKEY_REGISTER_BEGIN_ROUTE = "/api/remote/passkeys/register/begin";
50
+ const PASSKEY_REGISTER_FINISH_ROUTE = "/api/remote/passkeys/register/finish";
51
+ /** Header carrying a step-up assertion for an action that needs more than a live session. */
52
+ const STEP_UP_HEADER = "x-po-assertion";
53
+ /** The vite dev server port; the origin allowlist and vite.config.ts share this. */
54
+ const WEB_DEV_SERVER_PORT = 7534;
55
+ /** How long a scanned pairing code stays claimable. */
56
+ const PAIRING_CODE_TTL_MS = 12e4;
57
+ /** How long the host has to approve or deny a claimed request. */
58
+ const PAIRING_REQUEST_TTL_MS = 18e4;
59
+ /** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */
60
+ const COOKIE_CEILING_SECONDS = 2592e3;
61
+ /** Hub frame announcing remote-access state; sent to local and remote pages. */
62
+ const REMOTE_STATE_TYPE = "remote_state";
63
+ /** Hub frame announcing a device waiting for approval; sent to local pages only. */
64
+ const REMOTE_PAIRING_REQUEST_TYPE = "remote_pairing_request";
65
+ //#endregion
66
+ exports.BUNDLE_MINIMUM_REVISION_PARAM = BUNDLE_MINIMUM_REVISION_PARAM;
67
+ exports.BUNDLE_SIGNING_KEY_PARAM = BUNDLE_SIGNING_KEY_PARAM;
68
+ exports.COOKIE_CEILING_SECONDS = COOKIE_CEILING_SECONDS;
69
+ exports.DEVICE_COOKIE = DEVICE_COOKIE;
70
+ exports.PAIRING_CLAIM_ROUTE = PAIRING_CLAIM_ROUTE;
71
+ exports.PAIRING_CODE_TTL_MS = PAIRING_CODE_TTL_MS;
72
+ exports.PAIRING_PAGE_ROUTE = PAIRING_PAGE_ROUTE;
73
+ exports.PAIRING_REQUEST_TTL_MS = PAIRING_REQUEST_TTL_MS;
74
+ exports.PAIRING_STATUS_QUERY = PAIRING_STATUS_QUERY;
75
+ exports.PAIRING_STATUS_ROUTE = PAIRING_STATUS_ROUTE;
76
+ exports.PASSKEY_AUTH_BEGIN_ROUTE = PASSKEY_AUTH_BEGIN_ROUTE;
77
+ exports.PASSKEY_AUTH_FINISH_ROUTE = PASSKEY_AUTH_FINISH_ROUTE;
78
+ exports.PASSKEY_REGISTER_BEGIN_ROUTE = PASSKEY_REGISTER_BEGIN_ROUTE;
79
+ exports.PASSKEY_REGISTER_FINISH_ROUTE = PASSKEY_REGISTER_FINISH_ROUTE;
80
+ exports.PROTOCOL_SOCKET_ROUTE = PROTOCOL_SOCKET_ROUTE;
81
+ exports.REMOTE_API_ROUTE = REMOTE_API_ROUTE;
82
+ exports.REMOTE_CHANNEL_ROUTE = REMOTE_CHANNEL_ROUTE;
83
+ exports.REMOTE_HTTP_ROUTE = REMOTE_HTTP_ROUTE;
84
+ exports.REMOTE_PAIRING_REQUEST_TYPE = REMOTE_PAIRING_REQUEST_TYPE;
85
+ exports.REMOTE_PUSH_KEY_ROUTE = REMOTE_PUSH_KEY_ROUTE;
86
+ exports.REMOTE_PUSH_ROUTE = REMOTE_PUSH_ROUTE;
87
+ exports.REMOTE_STATE_TYPE = REMOTE_STATE_TYPE;
88
+ exports.STEP_UP_HEADER = STEP_UP_HEADER;
89
+ exports.TRUSTED_DEVICES_ROUTE = TRUSTED_DEVICES_ROUTE;
90
+ exports.WEB_DEV_SERVER_PORT = WEB_DEV_SERVER_PORT;
91
+
92
+ //# sourceMappingURL=remoteAccess.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteAccess.cjs","names":[],"sources":["../../src/types/remoteAccess.ts"],"sourcesContent":["/**\n * Wire vocabulary for remote access, shared by the hub routes and the cockpit.\n *\n * Remote access binds a second loopback listener that a tunnel points at, and\n * everything arriving there must prove it holds a paired session. The\n * discriminator is the listening socket, not a header: a tunnel connects from\n * 127.0.0.1 like every local client, and there is no header a remote caller\n * cannot forge.\n */\n\n/** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */\nexport const REMOTE_API_ROUTE = '/api/remote';\n/** Direct endpoint that establishes one scoped end-to-end channel. */\nexport const REMOTE_CHANNEL_ROUTE = `${REMOTE_API_ROUTE}/channel`;\n/** The only authenticated HTTP gateway exposed on the tunnel listener. */\nexport const REMOTE_HTTP_ROUTE = `${REMOTE_API_ROUTE}/request`;\n/** Device-bound, sealed routes for ephemeral live Web Push registration. */\n/** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */\nexport const TRUSTED_DEVICES_ROUTE = `${REMOTE_API_ROUTE}/trusted-devices`;\nexport const REMOTE_PUSH_ROUTE = `${REMOTE_API_ROUTE}/push`;\nexport const REMOTE_PUSH_KEY_ROUTE = `${REMOTE_PUSH_ROUTE}/key`;\nexport const PROTOCOL_SOCKET_ROUTE = '/api/ws';\n/** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */\nexport const PAIRING_PAGE_ROUTE = '/pair';\n/** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */\nexport const PAIRING_CLAIM_ROUTE = '/api/remote/pair';\n/** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */\nexport const PAIRING_STATUS_ROUTE = '/api/remote/pair/status';\n/** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */\nexport const PAIRING_STATUS_QUERY = 'request';\n/** URL-fragment fields authenticated by seeing the host's physical QR. */\nexport const BUNDLE_SIGNING_KEY_PARAM = 's';\nexport const BUNDLE_MINIMUM_REVISION_PARAM = 'r';\n\n/**\n * Session cookie base name. Rendered `__Host-po_device` by hono's `host`\n * prefix, which refuses the cookie unless it is Secure, Path=/, and\n * Domain-less, so a sibling subdomain can neither read nor overwrite it.\n */\nexport const DEVICE_COOKIE = 'po_device';\n\n/**\n * Passkey ceremonies exposed directly on the pairing surface.\n *\n * Sign-in is unauthenticated because it creates a session. Registration requires\n * the paired device cookie issued after host approval, but remains direct so the\n * self-contained pairing page can offer enrolment before loading the cockpit.\n */\nexport const PASSKEY_AUTH_BEGIN_ROUTE = '/api/remote/passkeys/authenticate/begin';\nexport const PASSKEY_AUTH_FINISH_ROUTE = '/api/remote/passkeys/authenticate/finish';\nexport const PASSKEY_REGISTER_BEGIN_ROUTE = '/api/remote/passkeys/register/begin';\nexport const PASSKEY_REGISTER_FINISH_ROUTE = '/api/remote/passkeys/register/finish';\n\n/** Header carrying a step-up assertion for an action that needs more than a live session. */\nexport const STEP_UP_HEADER = 'x-po-assertion';\n\n/** The vite dev server port; the origin allowlist and vite.config.ts share this. */\nexport const WEB_DEV_SERVER_PORT = 7534;\n\n/** How long a scanned pairing code stays claimable. */\nexport const PAIRING_CODE_TTL_MS = 120_000;\n/** How long the host has to approve or deny a claimed request. */\nexport const PAIRING_REQUEST_TTL_MS = 180_000;\n/** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */\nexport const COOKIE_CEILING_SECONDS = 30 * 24 * 60 * 60;\n\nexport type TunnelKind = 'quick' | 'named';\nexport type RemoteChannelScope = 'session' | 'protocol' | 'http';\n\n/**\n * How the tunnel is established.\n *\n * `named` carries a hostname rather than discovering one, which is why it is\n * the mode that supports passkeys, a service worker, and durable pairing: all\n * three are bound to the origin, and a quick tunnel's hostname rotates on every\n * start. The token is referenced by path, never stored inline, because it is a\n * Cloudflare account credential and an inlined one ends up in a bug report.\n */\nexport type TunnelConfig =\n | { kind: 'quick' }\n | { kind: 'named'; hostname: string; name?: string; tokenFile?: string; configFile?: string };\n\n/**\n * Running the cockpit in a container.\n *\n * Tied to remote access rather than offered separately: the reason to contain\n * the cockpit is that a paired device drives an agent holding a shell, and the\n * containment only means anything if it is in place before the tunnel is.\n *\n * The workspace list is the boundary. A hub inside the container cannot create\n * a session in a path that is not mounted, so arbitrary-directory spawning is\n * closed by construction rather than by a check.\n */\nexport interface SandboxSettings {\n enabled: boolean;\n /** Absolute host directories the contained cockpit may work in. */\n workspaces: string[];\n}\n\n/**\n * A session the handover has to account for.\n *\n * Only what recreating it needs: the container hub spawns a fresh server, so\n * nothing about the host process survives the move.\n */\nexport interface MigratingSession {\n id: string;\n cwd: string;\n name?: string;\n}\n\n/** Nullable numbers are not used: a disabled toggle keeps its value so flipping it back restores it. */\nexport interface RemoteAccessSettings {\n /** Close the tunnel on a timer. */\n autoCloseEnabled: boolean;\n autoCloseMinutes: number;\n /** Expire paired sessions on idle and on total age. */\n sessionExpiryEnabled: boolean;\n idleMinutes: number;\n absoluteHours: number;\n tunnel: TunnelConfig;\n sandbox: SandboxSettings;\n}\n\nexport interface BundlePairingTrust {\n publicKey: string;\n fingerprint: string;\n revision: number;\n}\n\nexport type RemoteAccessStatus = 'off' | 'starting' | 'on' | 'failed';\n\nexport interface PairedDeviceView {\n id: string;\n label: string;\n userAgent: string;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n lastSeenAt: string;\n /** True for the device making the request, so the UI can say \"this device\". */\n self: boolean;\n}\n\nexport type TrustedDevicePlatform = 'ios' | 'android';\n\n/** What local and remote callers see of a trusted native device: no keys. Mirrors po-core's view. */\nexport interface TrustedDeviceView {\n id: string;\n label: string;\n platform: TrustedDevicePlatform;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n lastSeenAt: string;\n /** True when the calling session signed in with this device's key. */\n self: boolean;\n}\n\nexport interface PairingRequestView {\n id: string;\n userAgent: string;\n /**\n * The address Cloudflare's edge reported. Display only: any local process can\n * reach the tunnel listener directly and set this header to anything, so it\n * never gates a decision. The UI labels it \"reported by the edge\".\n */\n edgeIp: string;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n expiresAt: string;\n}\n\nexport interface RemoteAccessStateView {\n status: RemoteAccessStatus;\n /** Present once the tunnel reports its hostname. */\n publicUrl?: string;\n /** ISO 8601, present while the tunnel is up. */\n startedAt?: string;\n /** ISO 8601, absent when auto-close is switched off. */\n closesAt?: string;\n /** Why the tunnel failed, once it has. */\n error?: string;\n devices: PairedDeviceView[];\n /** Populated for local callers only; a paired phone must not see approval prompts. */\n pending: PairingRequestView[];\n /** Shown to local and remote callers, so a paired device can revoke a lost one. */\n trustedDevices: TrustedDeviceView[];\n settings: RemoteAccessSettings;\n}\n\nexport type PairingStatus = 'pending' | 'approved' | 'denied' | 'expired' | 'consumed';\n\nexport type TunnelFailure = 'not_installed' | 'spawn_failed' | 'timeout' | 'self_test_failed' | 'exited';\n\nexport interface TunnelStartInput {\n /** The loopback port the tunnel should publish. */\n port: number;\n config: TunnelConfig;\n /** Arms the exact public origin before the launcher probes through it. */\n acceptOrigin?: (origin: string) => void;\n /** Cancels startup and asks the launcher to stop any process it has spawned. */\n signal?: AbortSignal;\n}\n\nexport type TunnelStartResult =\n | { ok: true; publicOrigin: string; stop: () => Promise<void> }\n | { ok: false; failure: TunnelFailure; message: string };\n\n/**\n * Starting a tunnel, as a port rather than a concrete process.\n *\n * Declared here so a test can inject a fake without pulling in the cloudflared\n * adapter, and so `WebServerOptions` can name the seam without reaching across\n * a layer to do it.\n */\nexport type TunnelLauncher = (input: TunnelStartInput) => Promise<TunnelStartResult>;\n\n/** Hub frame announcing remote-access state; sent to local and remote pages. */\nexport const REMOTE_STATE_TYPE = 'remote_state';\n/** Hub frame announcing a device waiting for approval; sent to local pages only. */\nexport const REMOTE_PAIRING_REQUEST_TYPE = 'remote_pairing_request';\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,mBAAmB;;AAEhC,MAAa,uBAAuB,GAAG,iBAAiB;;AAExD,MAAa,oBAAoB,GAAG,iBAAiB;;;AAGrD,MAAa,wBAAwB,GAAG,iBAAiB;AACzD,MAAa,oBAAoB,GAAG,iBAAiB;AACrD,MAAa,wBAAwB,GAAG,kBAAkB;AAC1D,MAAa,wBAAwB;;AAErC,MAAa,qBAAqB;;AAElC,MAAa,sBAAsB;;AAEnC,MAAa,uBAAuB;;AAEpC,MAAa,uBAAuB;;AAEpC,MAAa,2BAA2B;AACxC,MAAa,gCAAgC;;;;;;AAO7C,MAAa,gBAAgB;;;;;;;;AAS7B,MAAa,2BAA2B;AACxC,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,gCAAgC;;AAG7C,MAAa,iBAAiB;;AAG9B,MAAa,sBAAsB;;AAGnC,MAAa,sBAAsB;;AAEnC,MAAa,yBAAyB;;AAEtC,MAAa,yBAAyB;;AA4JtC,MAAa,oBAAoB;;AAEjC,MAAa,8BAA8B"}
@@ -0,0 +1,214 @@
1
+ //#region src/types/remoteAccess.d.ts
2
+ /**
3
+ * Wire vocabulary for remote access, shared by the hub routes and the cockpit.
4
+ *
5
+ * Remote access binds a second loopback listener that a tunnel points at, and
6
+ * everything arriving there must prove it holds a paired session. The
7
+ * discriminator is the listening socket, not a header: a tunnel connects from
8
+ * 127.0.0.1 like every local client, and there is no header a remote caller
9
+ * cannot forge.
10
+ */
11
+ /** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */
12
+ export declare const REMOTE_API_ROUTE = "/api/remote";
13
+ /** Direct endpoint that establishes one scoped end-to-end channel. */
14
+ export declare const REMOTE_CHANNEL_ROUTE = "/api/remote/channel";
15
+ /** The only authenticated HTTP gateway exposed on the tunnel listener. */
16
+ export declare const REMOTE_HTTP_ROUTE = "/api/remote/request";
17
+ /** Device-bound, sealed routes for ephemeral live Web Push registration. */
18
+ /** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */
19
+ export declare const TRUSTED_DEVICES_ROUTE = "/api/remote/trusted-devices";
20
+ export declare const REMOTE_PUSH_ROUTE = "/api/remote/push";
21
+ export declare const REMOTE_PUSH_KEY_ROUTE = "/api/remote/push/key";
22
+ export declare const PROTOCOL_SOCKET_ROUTE = "/api/ws";
23
+ /** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */
24
+ export declare const PAIRING_PAGE_ROUTE = "/pair";
25
+ /** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */
26
+ export declare const PAIRING_CLAIM_ROUTE = "/api/remote/pair";
27
+ /** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */
28
+ export declare const PAIRING_STATUS_ROUTE = "/api/remote/pair/status";
29
+ /** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */
30
+ export declare const PAIRING_STATUS_QUERY = "request";
31
+ /** URL-fragment fields authenticated by seeing the host's physical QR. */
32
+ export declare const BUNDLE_SIGNING_KEY_PARAM = "s";
33
+ export declare const BUNDLE_MINIMUM_REVISION_PARAM = "r";
34
+ /**
35
+ * Session cookie base name. Rendered `__Host-po_device` by hono's `host`
36
+ * prefix, which refuses the cookie unless it is Secure, Path=/, and
37
+ * Domain-less, so a sibling subdomain can neither read nor overwrite it.
38
+ */
39
+ export declare const DEVICE_COOKIE = "po_device";
40
+ /**
41
+ * Passkey ceremonies exposed directly on the pairing surface.
42
+ *
43
+ * Sign-in is unauthenticated because it creates a session. Registration requires
44
+ * the paired device cookie issued after host approval, but remains direct so the
45
+ * self-contained pairing page can offer enrolment before loading the cockpit.
46
+ */
47
+ export declare const PASSKEY_AUTH_BEGIN_ROUTE = "/api/remote/passkeys/authenticate/begin";
48
+ export declare const PASSKEY_AUTH_FINISH_ROUTE = "/api/remote/passkeys/authenticate/finish";
49
+ export declare const PASSKEY_REGISTER_BEGIN_ROUTE = "/api/remote/passkeys/register/begin";
50
+ export declare const PASSKEY_REGISTER_FINISH_ROUTE = "/api/remote/passkeys/register/finish";
51
+ /** Header carrying a step-up assertion for an action that needs more than a live session. */
52
+ export declare const STEP_UP_HEADER = "x-po-assertion";
53
+ /** The vite dev server port; the origin allowlist and vite.config.ts share this. */
54
+ export declare const WEB_DEV_SERVER_PORT = 7534;
55
+ /** How long a scanned pairing code stays claimable. */
56
+ export declare const PAIRING_CODE_TTL_MS = 120000;
57
+ /** How long the host has to approve or deny a claimed request. */
58
+ export declare const PAIRING_REQUEST_TTL_MS = 180000;
59
+ /** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */
60
+ export declare const COOKIE_CEILING_SECONDS: number;
61
+ export type TunnelKind = 'quick' | 'named';
62
+ export type RemoteChannelScope = 'session' | 'protocol' | 'http';
63
+ /**
64
+ * How the tunnel is established.
65
+ *
66
+ * `named` carries a hostname rather than discovering one, which is why it is
67
+ * the mode that supports passkeys, a service worker, and durable pairing: all
68
+ * three are bound to the origin, and a quick tunnel's hostname rotates on every
69
+ * start. The token is referenced by path, never stored inline, because it is a
70
+ * Cloudflare account credential and an inlined one ends up in a bug report.
71
+ */
72
+ export type TunnelConfig = {
73
+ kind: 'quick';
74
+ } | {
75
+ kind: 'named';
76
+ hostname: string;
77
+ name?: string;
78
+ tokenFile?: string;
79
+ configFile?: string;
80
+ };
81
+ /**
82
+ * Running the cockpit in a container.
83
+ *
84
+ * Tied to remote access rather than offered separately: the reason to contain
85
+ * the cockpit is that a paired device drives an agent holding a shell, and the
86
+ * containment only means anything if it is in place before the tunnel is.
87
+ *
88
+ * The workspace list is the boundary. A hub inside the container cannot create
89
+ * a session in a path that is not mounted, so arbitrary-directory spawning is
90
+ * closed by construction rather than by a check.
91
+ */
92
+ export interface SandboxSettings {
93
+ enabled: boolean;
94
+ /** Absolute host directories the contained cockpit may work in. */
95
+ workspaces: string[];
96
+ }
97
+ /**
98
+ * A session the handover has to account for.
99
+ *
100
+ * Only what recreating it needs: the container hub spawns a fresh server, so
101
+ * nothing about the host process survives the move.
102
+ */
103
+ export interface MigratingSession {
104
+ id: string;
105
+ cwd: string;
106
+ name?: string;
107
+ }
108
+ /** Nullable numbers are not used: a disabled toggle keeps its value so flipping it back restores it. */
109
+ export interface RemoteAccessSettings {
110
+ /** Close the tunnel on a timer. */
111
+ autoCloseEnabled: boolean;
112
+ autoCloseMinutes: number;
113
+ /** Expire paired sessions on idle and on total age. */
114
+ sessionExpiryEnabled: boolean;
115
+ idleMinutes: number;
116
+ absoluteHours: number;
117
+ tunnel: TunnelConfig;
118
+ sandbox: SandboxSettings;
119
+ }
120
+ export interface BundlePairingTrust {
121
+ publicKey: string;
122
+ fingerprint: string;
123
+ revision: number;
124
+ }
125
+ export type RemoteAccessStatus = 'off' | 'starting' | 'on' | 'failed';
126
+ export interface PairedDeviceView {
127
+ id: string;
128
+ label: string;
129
+ userAgent: string;
130
+ /** ISO 8601. */
131
+ createdAt: string;
132
+ /** ISO 8601. */
133
+ lastSeenAt: string;
134
+ /** True for the device making the request, so the UI can say "this device". */
135
+ self: boolean;
136
+ }
137
+ export type TrustedDevicePlatform = 'ios' | 'android';
138
+ /** What local and remote callers see of a trusted native device: no keys. Mirrors po-core's view. */
139
+ export interface TrustedDeviceView {
140
+ id: string;
141
+ label: string;
142
+ platform: TrustedDevicePlatform;
143
+ /** ISO 8601. */
144
+ createdAt: string;
145
+ /** ISO 8601. */
146
+ lastSeenAt: string;
147
+ /** True when the calling session signed in with this device's key. */
148
+ self: boolean;
149
+ }
150
+ export interface PairingRequestView {
151
+ id: string;
152
+ userAgent: string;
153
+ /**
154
+ * The address Cloudflare's edge reported. Display only: any local process can
155
+ * reach the tunnel listener directly and set this header to anything, so it
156
+ * never gates a decision. The UI labels it "reported by the edge".
157
+ */
158
+ edgeIp: string;
159
+ /** ISO 8601. */
160
+ createdAt: string;
161
+ /** ISO 8601. */
162
+ expiresAt: string;
163
+ }
164
+ export interface RemoteAccessStateView {
165
+ status: RemoteAccessStatus;
166
+ /** Present once the tunnel reports its hostname. */
167
+ publicUrl?: string;
168
+ /** ISO 8601, present while the tunnel is up. */
169
+ startedAt?: string;
170
+ /** ISO 8601, absent when auto-close is switched off. */
171
+ closesAt?: string;
172
+ /** Why the tunnel failed, once it has. */
173
+ error?: string;
174
+ devices: PairedDeviceView[];
175
+ /** Populated for local callers only; a paired phone must not see approval prompts. */
176
+ pending: PairingRequestView[];
177
+ /** Shown to local and remote callers, so a paired device can revoke a lost one. */
178
+ trustedDevices: TrustedDeviceView[];
179
+ settings: RemoteAccessSettings;
180
+ }
181
+ export type PairingStatus = 'pending' | 'approved' | 'denied' | 'expired' | 'consumed';
182
+ export type TunnelFailure = 'not_installed' | 'spawn_failed' | 'timeout' | 'self_test_failed' | 'exited';
183
+ export interface TunnelStartInput {
184
+ /** The loopback port the tunnel should publish. */
185
+ port: number;
186
+ config: TunnelConfig;
187
+ /** Arms the exact public origin before the launcher probes through it. */
188
+ acceptOrigin?: (origin: string) => void;
189
+ /** Cancels startup and asks the launcher to stop any process it has spawned. */
190
+ signal?: AbortSignal;
191
+ }
192
+ export type TunnelStartResult = {
193
+ ok: true;
194
+ publicOrigin: string;
195
+ stop: () => Promise<void>;
196
+ } | {
197
+ ok: false;
198
+ failure: TunnelFailure;
199
+ message: string;
200
+ };
201
+ /**
202
+ * Starting a tunnel, as a port rather than a concrete process.
203
+ *
204
+ * Declared here so a test can inject a fake without pulling in the cloudflared
205
+ * adapter, and so `WebServerOptions` can name the seam without reaching across
206
+ * a layer to do it.
207
+ */
208
+ export type TunnelLauncher = (input: TunnelStartInput) => Promise<TunnelStartResult>;
209
+ /** Hub frame announcing remote-access state; sent to local and remote pages. */
210
+ export declare const REMOTE_STATE_TYPE = "remote_state";
211
+ /** Hub frame announcing a device waiting for approval; sent to local pages only. */
212
+ export declare const REMOTE_PAIRING_REQUEST_TYPE = "remote_pairing_request";
213
+ //#endregion
214
+ //# sourceMappingURL=remoteAccess.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteAccess.d.mts","names":[],"sources":["../../src/types/remoteAccess.ts"],"mappings":";;;;;;;;;;;qBAWa;;qBAEA;;qBAEA;;;qBAGA;qBACA;qBACA;qBACA;;qBAEA;;qBAEA;;qBAEA;;qBAEA;;qBAEA;qBACA;;;;;;qBAOA;;;;;;;;qBASA;qBACA;qBACA;qBACA;;qBAGA;;qBAGA;;qBAGA;;qBAEA;;qBAEA;YAED;YACA;;;;;;;;;;YAWA;EACN;;EACA;EAAe;EAAkB;EAAe;EAAoB;;;;;;;;;;;;;iBAazD;EACf;;EAEA;;;;;;;;iBASe;EACf;EACA;EACA;;;iBAIe;;EAEf;EACA;;EAEA;EACA;EACA;EACA,QAAQ;EACR,SAAS;;iBAGM;EACf;EACA;EACA;;YAGU;iBAEK;EACf;EACA;EACA;;EAEA;;EAEA;;EAEA;;YAGU;;iBAGK;EACf;EACA;EACA,UAAU;;EAEV;;EAEA;;EAEA;;iBAGe;EACf;EACA;;;;;;EAMA;;EAEA;;EAEA;;iBAGe;EACf,QAAQ;;EAER;;EAEA;;EAEA;;EAEA;EACA,SAAS;;EAET,SAAS;;EAET,gBAAgB;EAChB,UAAU;;YAGA;YAEA;iBAEK;;EAEf;EACA,QAAQ;;EAER,gBAAgB;;EAEhB,SAAS;;YAGC;EACN;EAAU;EAAsB,YAAY;;EAC5C;EAAW,SAAS;EAAe;;;;;;;;;YAS7B,kBAAkB,OAAO,qBAAqB,QAAQ;;qBAGrD;;qBAEA"}