@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 @@
1
+ {"version":3,"file":"templateStore.mjs","names":[],"sources":["../../../src/web/stores/templateStore.ts"],"sourcesContent":["import { useStore } from '@tanstack/react-store';\nimport { Store } from '@tanstack/store';\nimport { useEffect } from 'react';\n\nimport type { SettingsConfigView } from '../../types/settings';\nimport { webTemplateCatalog } from '../lib/pluginRegistry';\nimport { readSettingsConfig, writeSettingsValue } from '../lib/settingsApi';\nimport { onHubConnected } from '../lib/transport';\n\nexport interface TemplateConfiguration {\n config?: SettingsConfigView;\n error?: string;\n loading: boolean;\n saving: boolean;\n}\n\nconst EMPTY: TemplateConfiguration = { loading: true, saving: false };\nconst GLOBAL = 'global';\nconst KEY = 'web.template';\nconst requests = new Map<string, number>();\nconst pendingRequests = new Map<string, Promise<void>>();\n\n/** Preferences belong to Doom config; this store caches only scoped API responses. */\nexport const templateStore = new Store<Record<string, TemplateConfiguration>>({});\n\nfunction scopeKey(workspaceId?: string): string {\n return workspaceId === undefined ? GLOBAL : `workspace:${workspaceId}`;\n}\n\nfunction patch(key: string, update: Partial<TemplateConfiguration>): void {\n templateStore.setState((state) => ({ ...state, [key]: { ...(state[key] ?? EMPTY), ...update } }));\n}\n\nexport function refreshTemplateConfiguration(workspaceId?: string): Promise<void> {\n const key = scopeKey(workspaceId);\n const request = (requests.get(key) ?? 0) + 1;\n requests.set(key, request);\n patch(key, { loading: true, error: undefined });\n const pending = (async () => {\n try {\n const result = await readSettingsConfig('', [KEY], workspaceId);\n if (requests.get(key) !== request) return;\n if (result.ok) patch(key, { config: result.config, loading: false, error: undefined });\n else patch(key, { loading: false, error: result.error });\n } catch (error) {\n if (requests.get(key) === request)\n patch(key, { loading: false, error: error instanceof Error ? error.message : String(error) });\n } finally {\n if (requests.get(key) === request) pendingRequests.delete(key);\n }\n })();\n pendingRequests.set(key, pending);\n return pending;\n}\n\n/** Initial consumers share a read and reuse resolved config; explicit refreshes can supersede it. */\nexport function ensureTemplateConfiguration(workspaceId?: string): Promise<void> {\n const key = scopeKey(workspaceId);\n return (\n pendingRequests.get(key) ??\n (templateStore.state[key]?.config === undefined ? refreshTemplateConfiguration(workspaceId) : Promise.resolve())\n );\n}\n\nexport function useTemplateConfiguration(workspaceId?: string): TemplateConfiguration {\n const key = scopeKey(workspaceId);\n const entry = useStore(templateStore, (state) => state[key] ?? EMPTY);\n useEffect(() => {\n void ensureTemplateConfiguration(workspaceId);\n return onHubConnected(() => {\n void (pendingRequests.get(key) ?? refreshTemplateConfiguration(workspaceId));\n });\n }, [key, workspaceId]);\n return entry;\n}\n\n/** Refuse unavailable choices before attempting the existing authorized, hash-checked write. */\nexport async function saveTemplateDefault(id: string | null, workspaceId?: string): Promise<boolean> {\n const key = scopeKey(workspaceId);\n const entry = templateStore.state[key];\n if (entry?.saving) return false;\n if (entry?.config === undefined) {\n patch(key, { error: 'Load the configuration before saving a template default.' });\n return false;\n }\n const mount = workspaceId === undefined ? { scope: 'global' as const } : { scope: 'workspace' as const, workspaceId };\n if (id !== null && !webTemplateCatalog(mount).templates.some((template) => template.id === id)) {\n patch(key, { error: 'That template is no longer available in this composition.' });\n return false;\n }\n const scope = workspaceId === undefined ? 'global' : 'repository';\n patch(key, { saving: true, error: undefined });\n const result = await writeSettingsValue(\n {\n repoRoot: entry.config.repoRoot,\n scope,\n keyPath: ['web', 'template'],\n value: id,\n expectedHash: entry.config.hashes[scope],\n },\n workspaceId,\n );\n if (!result.ok) {\n // Keep the conflict visible. A reload is explicit, never an automatic overwrite.\n patch(key, { saving: false, error: result.error });\n return false;\n }\n requests.set(key, (requests.get(key) ?? 0) + 1);\n pendingRequests.delete(key);\n patch(key, { config: result.config, saving: false, loading: false, error: undefined });\n // Workspace views may inherit a newly saved global value.\n if (workspaceId === undefined) {\n await Promise.all(\n Object.keys(templateStore.state)\n .filter((cached) => cached.startsWith('workspace:'))\n .map((cached) => refreshTemplateConfiguration(cached.slice('workspace:'.length))),\n );\n }\n return true;\n}\n\nexport function configuredTemplate(entry: TemplateConfiguration): string | undefined {\n return entry.config?.values[KEY]?.value;\n}\n"],"mappings":";;;;;;;AAgBA,MAAM,QAA+B;CAAE,SAAS;CAAM,QAAQ;AAAM;AACpE,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,2BAAW,IAAI,IAAoB;AACzC,MAAM,kCAAkB,IAAI,IAA2B;;AAGvD,MAAa,gBAAgB,IAAI,MAA6C,CAAC,CAAC;AAEhF,SAAS,SAAS,aAA8B;CAC9C,OAAO,gBAAgB,KAAA,IAAY,SAAS,aAAa;AAC3D;AAEA,SAAS,MAAM,KAAa,QAA8C;CACxE,cAAc,UAAU,WAAW;EAAE,GAAG;GAAQ,MAAM;GAAE,GAAI,MAAM,QAAQ;GAAQ,GAAG;EAAO;CAAE,EAAE;AAClG;AAEA,SAAgB,6BAA6B,aAAqC;CAChF,MAAM,MAAM,SAAS,WAAW;CAChC,MAAM,WAAW,SAAS,IAAI,GAAG,KAAK,KAAK;CAC3C,SAAS,IAAI,KAAK,OAAO;CACzB,MAAM,KAAK;EAAE,SAAS;EAAM,OAAO,KAAA;CAAU,CAAC;CAC9C,MAAM,WAAW,YAAY;EAC3B,IAAI;GACF,MAAM,SAAS,MAAM,mBAAmB,IAAI,CAAC,GAAG,GAAG,WAAW;GAC9D,IAAI,SAAS,IAAI,GAAG,MAAM,SAAS;GACnC,IAAI,OAAO,IAAI,MAAM,KAAK;IAAE,QAAQ,OAAO;IAAQ,SAAS;IAAO,OAAO,KAAA;GAAU,CAAC;QAChF,MAAM,KAAK;IAAE,SAAS;IAAO,OAAO,OAAO;GAAM,CAAC;EACzD,SAAS,OAAO;GACd,IAAI,SAAS,IAAI,GAAG,MAAM,SACxB,MAAM,KAAK;IAAE,SAAS;IAAO,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAAE,CAAC;EAChG,UAAU;GACR,IAAI,SAAS,IAAI,GAAG,MAAM,SAAS,gBAAgB,OAAO,GAAG;EAC/D;CACF,EAAA,CAAG;CACH,gBAAgB,IAAI,KAAK,OAAO;CAChC,OAAO;AACT;;AAGA,SAAgB,4BAA4B,aAAqC;CAC/E,MAAM,MAAM,SAAS,WAAW;CAChC,OACE,gBAAgB,IAAI,GAAG,MACtB,cAAc,MAAM,IAAI,EAAE,WAAW,KAAA,IAAY,6BAA6B,WAAW,IAAI,QAAQ,QAAQ;AAElH;AAEA,SAAgB,yBAAyB,aAA6C;CACpF,MAAM,MAAM,SAAS,WAAW;CAChC,MAAM,QAAQ,SAAS,gBAAgB,UAAU,MAAM,QAAQ,KAAK;CACpE,gBAAgB;EACd,4BAAiC,WAAW;EAC5C,OAAO,qBAAqB;GAC1B,gBAAsB,IAAI,GAAG,KAAK,6BAA6B,WAAW;EAC5E,CAAC;CACH,GAAG,CAAC,KAAK,WAAW,CAAC;CACrB,OAAO;AACT;;AAGA,eAAsB,oBAAoB,IAAmB,aAAwC;CACnG,MAAM,MAAM,SAAS,WAAW;CAChC,MAAM,QAAQ,cAAc,MAAM;CAClC,IAAI,OAAO,QAAQ,OAAO;CAC1B,IAAI,OAAO,WAAW,KAAA,GAAW;EAC/B,MAAM,KAAK,EAAE,OAAO,2DAA2D,CAAC;EAChF,OAAO;CACT;CAEA,IAAI,OAAO,QAAQ,CAAC,mBADN,gBAAgB,KAAA,IAAY,EAAE,OAAO,SAAkB,IAAI;EAAE,OAAO;EAAsB;CAAY,CACxE,CAAC,CAAC,UAAU,MAAM,aAAa,SAAS,OAAO,EAAE,GAAG;EAC9F,MAAM,KAAK,EAAE,OAAO,4DAA4D,CAAC;EACjF,OAAO;CACT;CACA,MAAM,QAAQ,gBAAgB,KAAA,IAAY,WAAW;CACrD,MAAM,KAAK;EAAE,QAAQ;EAAM,OAAO,KAAA;CAAU,CAAC;CAC7C,MAAM,SAAS,MAAM,mBACnB;EACE,UAAU,MAAM,OAAO;EACvB;EACA,SAAS,CAAC,OAAO,UAAU;EAC3B,OAAO;EACP,cAAc,MAAM,OAAO,OAAO;CACpC,GACA,WACF;CACA,IAAI,CAAC,OAAO,IAAI;EAEd,MAAM,KAAK;GAAE,QAAQ;GAAO,OAAO,OAAO;EAAM,CAAC;EACjD,OAAO;CACT;CACA,SAAS,IAAI,MAAM,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC;CAC9C,gBAAgB,OAAO,GAAG;CAC1B,MAAM,KAAK;EAAE,QAAQ,OAAO;EAAQ,QAAQ;EAAO,SAAS;EAAO,OAAO,KAAA;CAAU,CAAC;CAErF,IAAI,gBAAgB,KAAA,GAClB,MAAM,QAAQ,IACZ,OAAO,KAAK,cAAc,KAAK,CAAC,CAC7B,QAAQ,WAAW,OAAO,WAAW,YAAY,CAAC,CAAC,CACnD,KAAK,WAAW,6BAA6B,OAAO,MAAM,EAAmB,CAAC,CAAC,CACpF;CAEF,OAAO;AACT;AAEA,SAAgB,mBAAmB,OAAkD;CACnF,OAAO,MAAM,QAAQ,OAAO,IAAI,EAAE;AACpC"}
@@ -0,0 +1,42 @@
1
+ let _tanstack_store = require("@tanstack/store");
2
+ let _agimon_ai_po_web_components_theme = require("@agimon-ai/po-web-components/theme");
3
+ //#region src/web/stores/themeStore.ts
4
+ const themeStore = new _tanstack_store.Store({ name: _agimon_ai_po_web_components_theme.DEFAULT_THEME.name });
5
+ /** The themes the appearance page offers. */
6
+ function availableThemes() {
7
+ return _agimon_ai_po_web_components_theme.BUILTIN_THEMES;
8
+ }
9
+ function storage() {
10
+ try {
11
+ return window.localStorage;
12
+ } catch {
13
+ return;
14
+ }
15
+ }
16
+ /**
17
+ * Puts the remembered theme on the page. Called before the first render so
18
+ * the cockpit never flashes the default; a stored name nothing ships under
19
+ * falls back to the default and is forgotten.
20
+ */
21
+ function applyStoredTheme() {
22
+ const stored = (0, _agimon_ai_po_web_components_theme.readThemePreference)(storage());
23
+ const theme = (stored === null ? void 0 : (0, _agimon_ai_po_web_components_theme.builtinTheme)(stored)) ?? _agimon_ai_po_web_components_theme.DEFAULT_THEME;
24
+ if (stored !== null && theme.name !== stored) (0, _agimon_ai_po_web_components_theme.writeThemePreference)(storage(), null);
25
+ (0, _agimon_ai_po_web_components_theme.applyTheme)(theme, document.documentElement);
26
+ themeStore.setState(() => ({ name: theme.name }));
27
+ }
28
+ /** Switches the page to a shipped theme and remembers it. */
29
+ function selectTheme(name) {
30
+ const theme = (0, _agimon_ai_po_web_components_theme.builtinTheme)(name);
31
+ if (theme === void 0) return;
32
+ (0, _agimon_ai_po_web_components_theme.applyTheme)(theme, document.documentElement);
33
+ (0, _agimon_ai_po_web_components_theme.writeThemePreference)(storage(), name);
34
+ themeStore.setState(() => ({ name }));
35
+ }
36
+ //#endregion
37
+ exports.applyStoredTheme = applyStoredTheme;
38
+ exports.availableThemes = availableThemes;
39
+ exports.selectTheme = selectTheme;
40
+ exports.themeStore = themeStore;
41
+
42
+ //# sourceMappingURL=themeStore.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeStore.cjs","names":["Store","DEFAULT_THEME","BUILTIN_THEMES","readThemePreference","builtinTheme"],"sources":["../../../src/web/stores/themeStore.ts"],"sourcesContent":["import {\n applyTheme,\n BUILTIN_THEMES,\n builtinTheme,\n DEFAULT_THEME,\n readThemePreference,\n type ThemeConfig,\n writeThemePreference,\n} from '@agimon-ai/po-web-components/theme';\nimport { Store } from '@tanstack/store';\n\nexport interface ThemeState {\n /** The name of the theme on the page. */\n name: string;\n}\n\nexport const themeStore = new Store<ThemeState>({ name: DEFAULT_THEME.name });\n\n/** The themes the appearance page offers. */\nexport function availableThemes(): readonly ThemeConfig[] {\n return BUILTIN_THEMES;\n}\n\nfunction storage(): Storage | undefined {\n try {\n return window.localStorage;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Puts the remembered theme on the page. Called before the first render so\n * the cockpit never flashes the default; a stored name nothing ships under\n * falls back to the default and is forgotten.\n */\nexport function applyStoredTheme(): void {\n const stored = readThemePreference(storage());\n const theme = (stored === null ? undefined : builtinTheme(stored)) ?? DEFAULT_THEME;\n if (stored !== null && theme.name !== stored) writeThemePreference(storage(), null);\n applyTheme(theme, document.documentElement);\n themeStore.setState(() => ({ name: theme.name }));\n}\n\n/** Switches the page to a shipped theme and remembers it. */\nexport function selectTheme(name: string): void {\n const theme = builtinTheme(name);\n if (theme === undefined) return;\n applyTheme(theme, document.documentElement);\n writeThemePreference(storage(), name);\n themeStore.setState(() => ({ name }));\n}\n"],"mappings":";;;AAgBA,MAAa,aAAa,IAAIA,gBAAAA,MAAkB,EAAE,MAAMC,mCAAAA,cAAc,KAAK,CAAC;;AAG5E,SAAgB,kBAA0C;CACxD,OAAOC,mCAAAA;AACT;AAEA,SAAS,UAA+B;CACtC,IAAI;EACF,OAAO,OAAO;CAChB,QAAQ;EACN;CACF;AACF;;;;;;AAOA,SAAgB,mBAAyB;CACvC,MAAM,UAAA,GAASC,mCAAAA,oBAAAA,CAAoB,QAAQ,CAAC;CAC5C,MAAM,SAAS,WAAW,OAAO,KAAA,KAAA,GAAYC,mCAAAA,aAAAA,CAAa,MAAM,MAAMH,mCAAAA;CACtE,IAAI,WAAW,QAAQ,MAAM,SAAS,QAAQ,CAAA,GAAA,mCAAA,qBAAA,CAAqB,QAAQ,GAAG,IAAI;CAClF,CAAA,GAAA,mCAAA,WAAA,CAAW,OAAO,SAAS,eAAe;CAC1C,WAAW,gBAAgB,EAAE,MAAM,MAAM,KAAK,EAAE;AAClD;;AAGA,SAAgB,YAAY,MAAoB;CAC9C,MAAM,SAAA,GAAQG,mCAAAA,aAAAA,CAAa,IAAI;CAC/B,IAAI,UAAU,KAAA,GAAW;CACzB,CAAA,GAAA,mCAAA,WAAA,CAAW,OAAO,SAAS,eAAe;CAC1C,CAAA,GAAA,mCAAA,qBAAA,CAAqB,QAAQ,GAAG,IAAI;CACpC,WAAW,gBAAgB,EAAE,KAAK,EAAE;AACtC"}
@@ -0,0 +1,20 @@
1
+ import { Store } from "@tanstack/store";
2
+ import { ThemeConfig } from "@agimon-ai/po-web-components/theme";
3
+ //#region src/web/stores/themeStore.d.ts
4
+ export interface ThemeState {
5
+ /** The name of the theme on the page. */
6
+ name: string;
7
+ }
8
+ export declare const themeStore: Store<ThemeState, never>;
9
+ /** The themes the appearance page offers. */
10
+ export declare function availableThemes(): readonly ThemeConfig[];
11
+ /**
12
+ * Puts the remembered theme on the page. Called before the first render so
13
+ * the cockpit never flashes the default; a stored name nothing ships under
14
+ * falls back to the default and is forgotten.
15
+ */
16
+ export declare function applyStoredTheme(): void;
17
+ /** Switches the page to a shipped theme and remembers it. */
18
+ export declare function selectTheme(name: string): void;
19
+ //#endregion
20
+ //# sourceMappingURL=themeStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeStore.d.mts","names":[],"sources":["../../../src/web/stores/themeStore.ts"],"mappings":";;;iBAWiB;;EAEf;;qBAGW,YAAU,MAAA;;wBAGP,4BAA4B;;;;;;wBAiB5B;;wBASA,YAAY"}
@@ -0,0 +1,39 @@
1
+ import { Store } from "@tanstack/store";
2
+ import { BUILTIN_THEMES, DEFAULT_THEME, applyTheme, builtinTheme, readThemePreference, writeThemePreference } from "@agimon-ai/po-web-components/theme";
3
+ //#region src/web/stores/themeStore.ts
4
+ const themeStore = new Store({ name: DEFAULT_THEME.name });
5
+ /** The themes the appearance page offers. */
6
+ function availableThemes() {
7
+ return BUILTIN_THEMES;
8
+ }
9
+ function storage() {
10
+ try {
11
+ return window.localStorage;
12
+ } catch {
13
+ return;
14
+ }
15
+ }
16
+ /**
17
+ * Puts the remembered theme on the page. Called before the first render so
18
+ * the cockpit never flashes the default; a stored name nothing ships under
19
+ * falls back to the default and is forgotten.
20
+ */
21
+ function applyStoredTheme() {
22
+ const stored = readThemePreference(storage());
23
+ const theme = (stored === null ? void 0 : builtinTheme(stored)) ?? DEFAULT_THEME;
24
+ if (stored !== null && theme.name !== stored) writeThemePreference(storage(), null);
25
+ applyTheme(theme, document.documentElement);
26
+ themeStore.setState(() => ({ name: theme.name }));
27
+ }
28
+ /** Switches the page to a shipped theme and remembers it. */
29
+ function selectTheme(name) {
30
+ const theme = builtinTheme(name);
31
+ if (theme === void 0) return;
32
+ applyTheme(theme, document.documentElement);
33
+ writeThemePreference(storage(), name);
34
+ themeStore.setState(() => ({ name }));
35
+ }
36
+ //#endregion
37
+ export { applyStoredTheme, availableThemes, selectTheme, themeStore };
38
+
39
+ //# sourceMappingURL=themeStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeStore.mjs","names":[],"sources":["../../../src/web/stores/themeStore.ts"],"sourcesContent":["import {\n applyTheme,\n BUILTIN_THEMES,\n builtinTheme,\n DEFAULT_THEME,\n readThemePreference,\n type ThemeConfig,\n writeThemePreference,\n} from '@agimon-ai/po-web-components/theme';\nimport { Store } from '@tanstack/store';\n\nexport interface ThemeState {\n /** The name of the theme on the page. */\n name: string;\n}\n\nexport const themeStore = new Store<ThemeState>({ name: DEFAULT_THEME.name });\n\n/** The themes the appearance page offers. */\nexport function availableThemes(): readonly ThemeConfig[] {\n return BUILTIN_THEMES;\n}\n\nfunction storage(): Storage | undefined {\n try {\n return window.localStorage;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Puts the remembered theme on the page. Called before the first render so\n * the cockpit never flashes the default; a stored name nothing ships under\n * falls back to the default and is forgotten.\n */\nexport function applyStoredTheme(): void {\n const stored = readThemePreference(storage());\n const theme = (stored === null ? undefined : builtinTheme(stored)) ?? DEFAULT_THEME;\n if (stored !== null && theme.name !== stored) writeThemePreference(storage(), null);\n applyTheme(theme, document.documentElement);\n themeStore.setState(() => ({ name: theme.name }));\n}\n\n/** Switches the page to a shipped theme and remembers it. */\nexport function selectTheme(name: string): void {\n const theme = builtinTheme(name);\n if (theme === undefined) return;\n applyTheme(theme, document.documentElement);\n writeThemePreference(storage(), name);\n themeStore.setState(() => ({ name }));\n}\n"],"mappings":";;;AAgBA,MAAa,aAAa,IAAI,MAAkB,EAAE,MAAM,cAAc,KAAK,CAAC;;AAG5E,SAAgB,kBAA0C;CACxD,OAAO;AACT;AAEA,SAAS,UAA+B;CACtC,IAAI;EACF,OAAO,OAAO;CAChB,QAAQ;EACN;CACF;AACF;;;;;;AAOA,SAAgB,mBAAyB;CACvC,MAAM,SAAS,oBAAoB,QAAQ,CAAC;CAC5C,MAAM,SAAS,WAAW,OAAO,KAAA,IAAY,aAAa,MAAM,MAAM;CACtE,IAAI,WAAW,QAAQ,MAAM,SAAS,QAAQ,qBAAqB,QAAQ,GAAG,IAAI;CAClF,WAAW,OAAO,SAAS,eAAe;CAC1C,WAAW,gBAAgB,EAAE,MAAM,MAAM,KAAK,EAAE;AAClD;;AAGA,SAAgB,YAAY,MAAoB;CAC9C,MAAM,QAAQ,aAAa,IAAI;CAC/B,IAAI,UAAU,KAAA,GAAW;CACzB,WAAW,OAAO,SAAS,eAAe;CAC1C,qBAAqB,QAAQ,GAAG,IAAI;CACpC,WAAW,gBAAgB,EAAE,KAAK,EAAE;AACtC"}
@@ -0,0 +1,122 @@
1
+ const require_hub = require("../../types/hub.cjs");
2
+ const require_transport = require("../lib/transport.cjs");
3
+ const require_sessionStore = require("./sessionStore.cjs");
4
+ const require_pagedTranscriptStore = require("./pagedTranscriptStore.cjs");
5
+ //#region src/web/stores/threadStore.ts
6
+ /** A session id is a registry id and never starts with this, so a thread's fold cannot shadow a session's. */
7
+ const THREAD_KEY_PREFIX = "thread:";
8
+ /**
9
+ * The page's holds on threads, counted per thread so two views of one thread
10
+ * share a subscription. The hub-side subscription dies with the socket, so
11
+ * this is also what a reconnect replays.
12
+ */
13
+ const holds = /* @__PURE__ */ new Map();
14
+ const readers = /* @__PURE__ */ new Map();
15
+ function startTranscript(held) {
16
+ if (held.transcript || !held.ready) return;
17
+ const reader = readers.get(held.sessionId);
18
+ if (!reader) return;
19
+ const key = threadStoreKey(held.sessionId, held.threadId);
20
+ const transcript = require_pagedTranscriptStore.createPagedTranscript(key, { readTranscriptPage: (request, context) => reader.service.readTranscriptPage({
21
+ ...request,
22
+ threadId: held.threadId
23
+ }, context) }, (id, frame, replay) => require_sessionStore.applySessionFrame(id, frame, { replay }), reader.context, reader.record);
24
+ held.transcript = transcript;
25
+ if (held.pendingState) transcript.publish(held.pendingState);
26
+ transcript.initialize().catch((error) => {
27
+ if (held.transcript === transcript) require_sessionStore.applySessionFrame(key, {
28
+ type: "error",
29
+ message: String(error)
30
+ });
31
+ });
32
+ }
33
+ function bindThreadReader(sessionId, service, context, record = () => {}) {
34
+ const reader = {
35
+ service,
36
+ context,
37
+ record
38
+ };
39
+ readers.set(sessionId, reader);
40
+ for (const held of holds.values()) if (held.sessionId === sessionId) startTranscript(held);
41
+ return () => {
42
+ if (readers.get(sessionId) !== reader) return;
43
+ readers.delete(sessionId);
44
+ for (const held of holds.values()) if (held.sessionId === sessionId) {
45
+ held.transcript?.dispose();
46
+ held.transcript = void 0;
47
+ }
48
+ };
49
+ }
50
+ /** SQLite children use the same cursor window and delta reducer as their parent. */
51
+ function applyThreadTranscriptFrame(sessionId, threadId, frame) {
52
+ if (frame.type !== "transcript_state" && frame.type !== "transcript_ready") return false;
53
+ const held = holds.get(threadStoreKey(sessionId, threadId));
54
+ if (!held) return true;
55
+ held.ready = true;
56
+ if (frame.type === "transcript_state") held.pendingState = frame.state;
57
+ startTranscript(held);
58
+ if (held.pendingState) held.transcript?.publish(held.pendingState);
59
+ return true;
60
+ }
61
+ /** Where a thread's fold lives in the session store map. */
62
+ function threadStoreKey(sessionId, threadId) {
63
+ return `${THREAD_KEY_PREFIX}${sessionId}:${threadId}`;
64
+ }
65
+ function subscribeThread(sessionId, threadId) {
66
+ const key = threadStoreKey(sessionId, threadId);
67
+ const held = holds.get(key);
68
+ if (held !== void 0) {
69
+ held.refs += 1;
70
+ return;
71
+ }
72
+ holds.set(key, {
73
+ sessionId,
74
+ threadId,
75
+ refs: 1
76
+ });
77
+ require_transport.sendHubFrame(require_hub.subscribeThreadFrame(sessionId, threadId));
78
+ }
79
+ function unsubscribeThread(sessionId, threadId) {
80
+ const key = threadStoreKey(sessionId, threadId);
81
+ const held = holds.get(key);
82
+ if (held === void 0) return;
83
+ held.refs -= 1;
84
+ if (held.refs > 0) return;
85
+ holds.delete(key);
86
+ held.transcript?.dispose();
87
+ require_transport.sendHubFrame(require_hub.unsubscribeThreadFrame(sessionId, threadId));
88
+ }
89
+ /** A fresh socket knows nothing; every held thread is asked for again. */
90
+ function resubscribeThreads() {
91
+ for (const held of holds.values()) require_transport.sendHubFrame(require_hub.subscribeThreadFrame(held.sessionId, held.threadId));
92
+ }
93
+ /** A session that left takes its threads' folds and holds with it. */
94
+ function dropThreads(sessionId) {
95
+ for (const [key, held] of holds) {
96
+ if (held.sessionId !== sessionId) continue;
97
+ holds.delete(key);
98
+ held.transcript?.dispose();
99
+ require_sessionStore.dropSessionStore(key);
100
+ }
101
+ }
102
+ /** The threads currently held, for tests and diagnostics. */
103
+ function heldThreads() {
104
+ return [...holds.values()].map((held) => ({ ...held }));
105
+ }
106
+ function resetThreads() {
107
+ for (const held of holds.values()) held.transcript?.dispose();
108
+ holds.clear();
109
+ readers.clear();
110
+ }
111
+ //#endregion
112
+ exports.applyThreadTranscriptFrame = applyThreadTranscriptFrame;
113
+ exports.bindThreadReader = bindThreadReader;
114
+ exports.dropThreads = dropThreads;
115
+ exports.heldThreads = heldThreads;
116
+ exports.resetThreads = resetThreads;
117
+ exports.resubscribeThreads = resubscribeThreads;
118
+ exports.subscribeThread = subscribeThread;
119
+ exports.threadStoreKey = threadStoreKey;
120
+ exports.unsubscribeThread = unsubscribeThread;
121
+
122
+ //# sourceMappingURL=threadStore.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadStore.cjs","names":["createPagedTranscript","applySessionFrame","subscribeThreadFrame","unsubscribeThreadFrame"],"sources":["../../../src/web/stores/threadStore.ts"],"sourcesContent":["import type { SessionService, SessionServiceState } from '@agimon-ai/po-core/sessionProtocol';\nimport type { Context } from '@earendil-works/chord';\n\nimport { subscribeThreadFrame, unsubscribeThreadFrame } from '../../types/hub';\nimport type { BrowserPerformanceEvent } from '../lib/browserTelemetry';\nimport { sendHubFrame } from '../lib/transport';\nimport { createPagedTranscript } from './pagedTranscriptStore';\nimport { applySessionFrame, dropSessionStore } from './sessionStore';\n\n/** A session id is a registry id and never starts with this, so a thread's fold cannot shadow a session's. */\nconst THREAD_KEY_PREFIX = 'thread:';\n\ninterface ThreadHold {\n sessionId: string;\n threadId: string;\n refs: number;\n transcript?: ReturnType<typeof createPagedTranscript>;\n pendingState?: SessionServiceState;\n ready?: boolean;\n}\n\n/**\n * The page's holds on threads, counted per thread so two views of one thread\n * share a subscription. The hub-side subscription dies with the socket, so\n * this is also what a reconnect replays.\n */\nconst holds = new Map<string, ThreadHold>();\nconst readers = new Map<\n string,\n { service: SessionService; context: Context; record: (event: BrowserPerformanceEvent) => void }\n>();\n\nfunction startTranscript(held: ThreadHold): void {\n if (held.transcript || !held.ready) return;\n const reader = readers.get(held.sessionId);\n if (!reader) return;\n const key = threadStoreKey(held.sessionId, held.threadId);\n const transcript = createPagedTranscript(\n key,\n {\n readTranscriptPage: (request, context) =>\n reader.service.readTranscriptPage({ ...request, threadId: held.threadId }, context),\n },\n (id, frame, replay) => applySessionFrame(id, frame, { replay }),\n reader.context,\n reader.record,\n );\n held.transcript = transcript;\n if (held.pendingState) transcript.publish(held.pendingState);\n void transcript.initialize().catch((error: unknown) => {\n if (held.transcript === transcript) applySessionFrame(key, { type: 'error', message: String(error) });\n });\n}\n\nexport function bindThreadReader(\n sessionId: string,\n service: SessionService,\n context: Context,\n record: (event: BrowserPerformanceEvent) => void = () => {},\n): () => void {\n const reader = { service, context, record };\n readers.set(sessionId, reader);\n for (const held of holds.values()) if (held.sessionId === sessionId) startTranscript(held);\n return () => {\n if (readers.get(sessionId) !== reader) return;\n readers.delete(sessionId);\n for (const held of holds.values())\n if (held.sessionId === sessionId) {\n held.transcript?.dispose();\n held.transcript = undefined;\n }\n };\n}\n\n/** SQLite children use the same cursor window and delta reducer as their parent. */\nexport function applyThreadTranscriptFrame(\n sessionId: string,\n threadId: string,\n frame: Record<string, unknown>,\n): boolean {\n if (frame.type !== 'transcript_state' && frame.type !== 'transcript_ready') return false;\n const held = holds.get(threadStoreKey(sessionId, threadId));\n if (!held) return true;\n held.ready = true;\n if (frame.type === 'transcript_state') held.pendingState = frame.state as SessionServiceState;\n startTranscript(held);\n if (held.pendingState) held.transcript?.publish(held.pendingState);\n return true;\n}\n\n/** Where a thread's fold lives in the session store map. */\nexport function threadStoreKey(sessionId: string, threadId: string): string {\n return `${THREAD_KEY_PREFIX}${sessionId}:${threadId}`;\n}\n\nexport function subscribeThread(sessionId: string, threadId: string): void {\n const key = threadStoreKey(sessionId, threadId);\n const held = holds.get(key);\n if (held !== undefined) {\n held.refs += 1;\n return;\n }\n holds.set(key, { sessionId, threadId, refs: 1 });\n sendHubFrame(subscribeThreadFrame(sessionId, threadId));\n}\n\nexport function unsubscribeThread(sessionId: string, threadId: string): void {\n const key = threadStoreKey(sessionId, threadId);\n const held = holds.get(key);\n if (held === undefined) return;\n held.refs -= 1;\n if (held.refs > 0) return;\n holds.delete(key);\n held.transcript?.dispose();\n sendHubFrame(unsubscribeThreadFrame(sessionId, threadId));\n}\n\n/** A fresh socket knows nothing; every held thread is asked for again. */\nexport function resubscribeThreads(): void {\n for (const held of holds.values()) sendHubFrame(subscribeThreadFrame(held.sessionId, held.threadId));\n}\n\n/** A session that left takes its threads' folds and holds with it. */\nexport function dropThreads(sessionId: string): void {\n for (const [key, held] of holds) {\n if (held.sessionId !== sessionId) continue;\n holds.delete(key);\n held.transcript?.dispose();\n dropSessionStore(key);\n }\n}\n\n/** The threads currently held, for tests and diagnostics. */\nexport function heldThreads(): Array<{ sessionId: string; threadId: string; refs: number }> {\n return [...holds.values()].map((held) => ({ ...held }));\n}\n\nexport function resetThreads(): void {\n for (const held of holds.values()) held.transcript?.dispose();\n holds.clear();\n readers.clear();\n}\n"],"mappings":";;;;;;AAUA,MAAM,oBAAoB;;;;;;AAgB1B,MAAM,wBAAQ,IAAI,IAAwB;AAC1C,MAAM,0BAAU,IAAI,IAGlB;AAEF,SAAS,gBAAgB,MAAwB;CAC/C,IAAI,KAAK,cAAc,CAAC,KAAK,OAAO;CACpC,MAAM,SAAS,QAAQ,IAAI,KAAK,SAAS;CACzC,IAAI,CAAC,QAAQ;CACb,MAAM,MAAM,eAAe,KAAK,WAAW,KAAK,QAAQ;CACxD,MAAM,aAAaA,6BAAAA,sBACjB,KACA,EACE,qBAAqB,SAAS,YAC5B,OAAO,QAAQ,mBAAmB;EAAE,GAAG;EAAS,UAAU,KAAK;CAAS,GAAG,OAAO,EACtF,IACC,IAAI,OAAO,WAAWC,qBAAAA,kBAAkB,IAAI,OAAO,EAAE,OAAO,CAAC,GAC9D,OAAO,SACP,OAAO,MACT;CACA,KAAK,aAAa;CAClB,IAAI,KAAK,cAAc,WAAW,QAAQ,KAAK,YAAY;CAC3D,WAAgB,WAAW,CAAC,CAAC,OAAO,UAAmB;EACrD,IAAI,KAAK,eAAe,YAAY,qBAAA,kBAAkB,KAAK;GAAE,MAAM;GAAS,SAAS,OAAO,KAAK;EAAE,CAAC;CACtG,CAAC;AACH;AAEA,SAAgB,iBACd,WACA,SACA,SACA,eAAyD,CAAC,GAC9C;CACZ,MAAM,SAAS;EAAE;EAAS;EAAS;CAAO;CAC1C,QAAQ,IAAI,WAAW,MAAM;CAC7B,KAAK,MAAM,QAAQ,MAAM,OAAO,GAAG,IAAI,KAAK,cAAc,WAAW,gBAAgB,IAAI;CACzF,aAAa;EACX,IAAI,QAAQ,IAAI,SAAS,MAAM,QAAQ;EACvC,QAAQ,OAAO,SAAS;EACxB,KAAK,MAAM,QAAQ,MAAM,OAAO,GAC9B,IAAI,KAAK,cAAc,WAAW;GAChC,KAAK,YAAY,QAAQ;GACzB,KAAK,aAAa,KAAA;EACpB;CACJ;AACF;;AAGA,SAAgB,2BACd,WACA,UACA,OACS;CACT,IAAI,MAAM,SAAS,sBAAsB,MAAM,SAAS,oBAAoB,OAAO;CACnF,MAAM,OAAO,MAAM,IAAI,eAAe,WAAW,QAAQ,CAAC;CAC1D,IAAI,CAAC,MAAM,OAAO;CAClB,KAAK,QAAQ;CACb,IAAI,MAAM,SAAS,oBAAoB,KAAK,eAAe,MAAM;CACjE,gBAAgB,IAAI;CACpB,IAAI,KAAK,cAAc,KAAK,YAAY,QAAQ,KAAK,YAAY;CACjE,OAAO;AACT;;AAGA,SAAgB,eAAe,WAAmB,UAA0B;CAC1E,OAAO,GAAG,oBAAoB,UAAU,GAAG;AAC7C;AAEA,SAAgB,gBAAgB,WAAmB,UAAwB;CACzE,MAAM,MAAM,eAAe,WAAW,QAAQ;CAC9C,MAAM,OAAO,MAAM,IAAI,GAAG;CAC1B,IAAI,SAAS,KAAA,GAAW;EACtB,KAAK,QAAQ;EACb;CACF;CACA,MAAM,IAAI,KAAK;EAAE;EAAW;EAAU,MAAM;CAAE,CAAC;CAC/C,kBAAA,aAAaC,YAAAA,qBAAqB,WAAW,QAAQ,CAAC;AACxD;AAEA,SAAgB,kBAAkB,WAAmB,UAAwB;CAC3E,MAAM,MAAM,eAAe,WAAW,QAAQ;CAC9C,MAAM,OAAO,MAAM,IAAI,GAAG;CAC1B,IAAI,SAAS,KAAA,GAAW;CACxB,KAAK,QAAQ;CACb,IAAI,KAAK,OAAO,GAAG;CACnB,MAAM,OAAO,GAAG;CAChB,KAAK,YAAY,QAAQ;CACzB,kBAAA,aAAaC,YAAAA,uBAAuB,WAAW,QAAQ,CAAC;AAC1D;;AAGA,SAAgB,qBAA2B;CACzC,KAAK,MAAM,QAAQ,MAAM,OAAO,GAAG,kBAAA,aAAaD,YAAAA,qBAAqB,KAAK,WAAW,KAAK,QAAQ,CAAC;AACrG;;AAGA,SAAgB,YAAY,WAAyB;CACnD,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO;EAC/B,IAAI,KAAK,cAAc,WAAW;EAClC,MAAM,OAAO,GAAG;EAChB,KAAK,YAAY,QAAQ;EACzB,qBAAA,iBAAiB,GAAG;CACtB;AACF;;AAGA,SAAgB,cAA4E;CAC1F,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;AACxD;AAEA,SAAgB,eAAqB;CACnC,KAAK,MAAM,QAAQ,MAAM,OAAO,GAAG,KAAK,YAAY,QAAQ;CAC5D,MAAM,MAAM;CACZ,QAAQ,MAAM;AAChB"}
@@ -0,0 +1,24 @@
1
+ import { BrowserPerformanceEvent } from "../lib/browserTelemetry.mjs";
2
+ import { SessionService } from "@agimon-ai/po-core/sessionProtocol";
3
+ import { Context } from "@earendil-works/chord";
4
+ //#region src/web/stores/threadStore.d.ts
5
+ export declare function bindThreadReader(sessionId: string, service: SessionService, context: Context, record?: (event: BrowserPerformanceEvent) => void): () => void;
6
+ /** SQLite children use the same cursor window and delta reducer as their parent. */
7
+ export declare function applyThreadTranscriptFrame(sessionId: string, threadId: string, frame: Record<string, unknown>): boolean;
8
+ /** Where a thread's fold lives in the session store map. */
9
+ export declare function threadStoreKey(sessionId: string, threadId: string): string;
10
+ export declare function subscribeThread(sessionId: string, threadId: string): void;
11
+ export declare function unsubscribeThread(sessionId: string, threadId: string): void;
12
+ /** A fresh socket knows nothing; every held thread is asked for again. */
13
+ export declare function resubscribeThreads(): void;
14
+ /** A session that left takes its threads' folds and holds with it. */
15
+ export declare function dropThreads(sessionId: string): void;
16
+ /** The threads currently held, for tests and diagnostics. */
17
+ export declare function heldThreads(): Array<{
18
+ sessionId: string;
19
+ threadId: string;
20
+ refs: number;
21
+ }>;
22
+ export declare function resetThreads(): void;
23
+ //#endregion
24
+ //# sourceMappingURL=threadStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadStore.d.mts","names":[],"sources":["../../../src/web/stores/threadStore.ts"],"mappings":";;;;wBAsDgB,iBACd,mBACA,SAAS,gBACT,SAAS,SACT,UAAS,OAAO;;wBAiBF,2BACd,mBACA,kBACA,OAAO;;wBAaO,eAAe,mBAAmB;wBAIlC,gBAAgB,mBAAmB;wBAWnC,kBAAkB,mBAAmB;;wBAYrC;;wBAKA,YAAY;;wBAUZ,eAAe;EAAQ;EAAmB;EAAkB;;wBAI5D"}
@@ -0,0 +1,114 @@
1
+ import { subscribeThreadFrame, unsubscribeThreadFrame } from "../../types/hub.mjs";
2
+ import { sendHubFrame } from "../lib/transport.mjs";
3
+ import { applySessionFrame, dropSessionStore } from "./sessionStore.mjs";
4
+ import { createPagedTranscript } from "./pagedTranscriptStore.mjs";
5
+ //#region src/web/stores/threadStore.ts
6
+ /** A session id is a registry id and never starts with this, so a thread's fold cannot shadow a session's. */
7
+ const THREAD_KEY_PREFIX = "thread:";
8
+ /**
9
+ * The page's holds on threads, counted per thread so two views of one thread
10
+ * share a subscription. The hub-side subscription dies with the socket, so
11
+ * this is also what a reconnect replays.
12
+ */
13
+ const holds = /* @__PURE__ */ new Map();
14
+ const readers = /* @__PURE__ */ new Map();
15
+ function startTranscript(held) {
16
+ if (held.transcript || !held.ready) return;
17
+ const reader = readers.get(held.sessionId);
18
+ if (!reader) return;
19
+ const key = threadStoreKey(held.sessionId, held.threadId);
20
+ const transcript = createPagedTranscript(key, { readTranscriptPage: (request, context) => reader.service.readTranscriptPage({
21
+ ...request,
22
+ threadId: held.threadId
23
+ }, context) }, (id, frame, replay) => applySessionFrame(id, frame, { replay }), reader.context, reader.record);
24
+ held.transcript = transcript;
25
+ if (held.pendingState) transcript.publish(held.pendingState);
26
+ transcript.initialize().catch((error) => {
27
+ if (held.transcript === transcript) applySessionFrame(key, {
28
+ type: "error",
29
+ message: String(error)
30
+ });
31
+ });
32
+ }
33
+ function bindThreadReader(sessionId, service, context, record = () => {}) {
34
+ const reader = {
35
+ service,
36
+ context,
37
+ record
38
+ };
39
+ readers.set(sessionId, reader);
40
+ for (const held of holds.values()) if (held.sessionId === sessionId) startTranscript(held);
41
+ return () => {
42
+ if (readers.get(sessionId) !== reader) return;
43
+ readers.delete(sessionId);
44
+ for (const held of holds.values()) if (held.sessionId === sessionId) {
45
+ held.transcript?.dispose();
46
+ held.transcript = void 0;
47
+ }
48
+ };
49
+ }
50
+ /** SQLite children use the same cursor window and delta reducer as their parent. */
51
+ function applyThreadTranscriptFrame(sessionId, threadId, frame) {
52
+ if (frame.type !== "transcript_state" && frame.type !== "transcript_ready") return false;
53
+ const held = holds.get(threadStoreKey(sessionId, threadId));
54
+ if (!held) return true;
55
+ held.ready = true;
56
+ if (frame.type === "transcript_state") held.pendingState = frame.state;
57
+ startTranscript(held);
58
+ if (held.pendingState) held.transcript?.publish(held.pendingState);
59
+ return true;
60
+ }
61
+ /** Where a thread's fold lives in the session store map. */
62
+ function threadStoreKey(sessionId, threadId) {
63
+ return `${THREAD_KEY_PREFIX}${sessionId}:${threadId}`;
64
+ }
65
+ function subscribeThread(sessionId, threadId) {
66
+ const key = threadStoreKey(sessionId, threadId);
67
+ const held = holds.get(key);
68
+ if (held !== void 0) {
69
+ held.refs += 1;
70
+ return;
71
+ }
72
+ holds.set(key, {
73
+ sessionId,
74
+ threadId,
75
+ refs: 1
76
+ });
77
+ sendHubFrame(subscribeThreadFrame(sessionId, threadId));
78
+ }
79
+ function unsubscribeThread(sessionId, threadId) {
80
+ const key = threadStoreKey(sessionId, threadId);
81
+ const held = holds.get(key);
82
+ if (held === void 0) return;
83
+ held.refs -= 1;
84
+ if (held.refs > 0) return;
85
+ holds.delete(key);
86
+ held.transcript?.dispose();
87
+ sendHubFrame(unsubscribeThreadFrame(sessionId, threadId));
88
+ }
89
+ /** A fresh socket knows nothing; every held thread is asked for again. */
90
+ function resubscribeThreads() {
91
+ for (const held of holds.values()) sendHubFrame(subscribeThreadFrame(held.sessionId, held.threadId));
92
+ }
93
+ /** A session that left takes its threads' folds and holds with it. */
94
+ function dropThreads(sessionId) {
95
+ for (const [key, held] of holds) {
96
+ if (held.sessionId !== sessionId) continue;
97
+ holds.delete(key);
98
+ held.transcript?.dispose();
99
+ dropSessionStore(key);
100
+ }
101
+ }
102
+ /** The threads currently held, for tests and diagnostics. */
103
+ function heldThreads() {
104
+ return [...holds.values()].map((held) => ({ ...held }));
105
+ }
106
+ function resetThreads() {
107
+ for (const held of holds.values()) held.transcript?.dispose();
108
+ holds.clear();
109
+ readers.clear();
110
+ }
111
+ //#endregion
112
+ export { applyThreadTranscriptFrame, bindThreadReader, dropThreads, heldThreads, resetThreads, resubscribeThreads, subscribeThread, threadStoreKey, unsubscribeThread };
113
+
114
+ //# sourceMappingURL=threadStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadStore.mjs","names":[],"sources":["../../../src/web/stores/threadStore.ts"],"sourcesContent":["import type { SessionService, SessionServiceState } from '@agimon-ai/po-core/sessionProtocol';\nimport type { Context } from '@earendil-works/chord';\n\nimport { subscribeThreadFrame, unsubscribeThreadFrame } from '../../types/hub';\nimport type { BrowserPerformanceEvent } from '../lib/browserTelemetry';\nimport { sendHubFrame } from '../lib/transport';\nimport { createPagedTranscript } from './pagedTranscriptStore';\nimport { applySessionFrame, dropSessionStore } from './sessionStore';\n\n/** A session id is a registry id and never starts with this, so a thread's fold cannot shadow a session's. */\nconst THREAD_KEY_PREFIX = 'thread:';\n\ninterface ThreadHold {\n sessionId: string;\n threadId: string;\n refs: number;\n transcript?: ReturnType<typeof createPagedTranscript>;\n pendingState?: SessionServiceState;\n ready?: boolean;\n}\n\n/**\n * The page's holds on threads, counted per thread so two views of one thread\n * share a subscription. The hub-side subscription dies with the socket, so\n * this is also what a reconnect replays.\n */\nconst holds = new Map<string, ThreadHold>();\nconst readers = new Map<\n string,\n { service: SessionService; context: Context; record: (event: BrowserPerformanceEvent) => void }\n>();\n\nfunction startTranscript(held: ThreadHold): void {\n if (held.transcript || !held.ready) return;\n const reader = readers.get(held.sessionId);\n if (!reader) return;\n const key = threadStoreKey(held.sessionId, held.threadId);\n const transcript = createPagedTranscript(\n key,\n {\n readTranscriptPage: (request, context) =>\n reader.service.readTranscriptPage({ ...request, threadId: held.threadId }, context),\n },\n (id, frame, replay) => applySessionFrame(id, frame, { replay }),\n reader.context,\n reader.record,\n );\n held.transcript = transcript;\n if (held.pendingState) transcript.publish(held.pendingState);\n void transcript.initialize().catch((error: unknown) => {\n if (held.transcript === transcript) applySessionFrame(key, { type: 'error', message: String(error) });\n });\n}\n\nexport function bindThreadReader(\n sessionId: string,\n service: SessionService,\n context: Context,\n record: (event: BrowserPerformanceEvent) => void = () => {},\n): () => void {\n const reader = { service, context, record };\n readers.set(sessionId, reader);\n for (const held of holds.values()) if (held.sessionId === sessionId) startTranscript(held);\n return () => {\n if (readers.get(sessionId) !== reader) return;\n readers.delete(sessionId);\n for (const held of holds.values())\n if (held.sessionId === sessionId) {\n held.transcript?.dispose();\n held.transcript = undefined;\n }\n };\n}\n\n/** SQLite children use the same cursor window and delta reducer as their parent. */\nexport function applyThreadTranscriptFrame(\n sessionId: string,\n threadId: string,\n frame: Record<string, unknown>,\n): boolean {\n if (frame.type !== 'transcript_state' && frame.type !== 'transcript_ready') return false;\n const held = holds.get(threadStoreKey(sessionId, threadId));\n if (!held) return true;\n held.ready = true;\n if (frame.type === 'transcript_state') held.pendingState = frame.state as SessionServiceState;\n startTranscript(held);\n if (held.pendingState) held.transcript?.publish(held.pendingState);\n return true;\n}\n\n/** Where a thread's fold lives in the session store map. */\nexport function threadStoreKey(sessionId: string, threadId: string): string {\n return `${THREAD_KEY_PREFIX}${sessionId}:${threadId}`;\n}\n\nexport function subscribeThread(sessionId: string, threadId: string): void {\n const key = threadStoreKey(sessionId, threadId);\n const held = holds.get(key);\n if (held !== undefined) {\n held.refs += 1;\n return;\n }\n holds.set(key, { sessionId, threadId, refs: 1 });\n sendHubFrame(subscribeThreadFrame(sessionId, threadId));\n}\n\nexport function unsubscribeThread(sessionId: string, threadId: string): void {\n const key = threadStoreKey(sessionId, threadId);\n const held = holds.get(key);\n if (held === undefined) return;\n held.refs -= 1;\n if (held.refs > 0) return;\n holds.delete(key);\n held.transcript?.dispose();\n sendHubFrame(unsubscribeThreadFrame(sessionId, threadId));\n}\n\n/** A fresh socket knows nothing; every held thread is asked for again. */\nexport function resubscribeThreads(): void {\n for (const held of holds.values()) sendHubFrame(subscribeThreadFrame(held.sessionId, held.threadId));\n}\n\n/** A session that left takes its threads' folds and holds with it. */\nexport function dropThreads(sessionId: string): void {\n for (const [key, held] of holds) {\n if (held.sessionId !== sessionId) continue;\n holds.delete(key);\n held.transcript?.dispose();\n dropSessionStore(key);\n }\n}\n\n/** The threads currently held, for tests and diagnostics. */\nexport function heldThreads(): Array<{ sessionId: string; threadId: string; refs: number }> {\n return [...holds.values()].map((held) => ({ ...held }));\n}\n\nexport function resetThreads(): void {\n for (const held of holds.values()) held.transcript?.dispose();\n holds.clear();\n readers.clear();\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ //#region src/web/stores/toolPromptStore.ts
2
+ const toolPromptStore = new (require("@tanstack/store")).Store({ failedDialogId: null });
3
+ function markToolPromptFailed(dialogId) {
4
+ toolPromptStore.setState((state) => state.failedDialogId === dialogId ? state : { failedDialogId: dialogId });
5
+ }
6
+ /** Test seam. */
7
+ function resetToolPromptStore() {
8
+ toolPromptStore.setState(() => ({ failedDialogId: null }));
9
+ }
10
+ //#endregion
11
+ exports.markToolPromptFailed = markToolPromptFailed;
12
+ exports.resetToolPromptStore = resetToolPromptStore;
13
+ exports.toolPromptStore = toolPromptStore;
14
+
15
+ //# sourceMappingURL=toolPromptStore.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolPromptStore.cjs","names":["Store"],"sources":["../../../src/web/stores/toolPromptStore.ts"],"sourcesContent":["import { Store } from '@tanstack/store';\n\n/**\n * The one request a tool's composer prompt failed to render.\n *\n * A tool prompt standing in for the composer is the only surface offering the\n * agent an answer, so a plugin component that throws would otherwise strand\n * the run with nothing to click. Recording the request it threw on hands it\n * back: the claim declines it, and the host's own dialog opens instead.\n *\n * One id is enough because one request is open at a time, and a later request\n * gets its own id, so a plugin fixed between turns is tried again rather than\n * written off for the rest of the session.\n */\nexport interface ToolPromptState {\n failedDialogId: string | null;\n}\n\nexport const toolPromptStore = new Store<ToolPromptState>({ failedDialogId: null });\n\nexport function markToolPromptFailed(dialogId: string): void {\n toolPromptStore.setState((state) => (state.failedDialogId === dialogId ? state : { failedDialogId: dialogId }));\n}\n\n/** Test seam. */\nexport function resetToolPromptStore(): void {\n toolPromptStore.setState(() => ({ failedDialogId: null }));\n}\n"],"mappings":";AAkBA,MAAa,kBAAkB,8BAAIA,EAAAA,CAAAA,MAAuB,EAAE,gBAAgB,KAAK,CAAC;AAElF,SAAgB,qBAAqB,UAAwB;CAC3D,gBAAgB,UAAU,UAAW,MAAM,mBAAmB,WAAW,QAAQ,EAAE,gBAAgB,SAAS,CAAE;AAChH;;AAGA,SAAgB,uBAA6B;CAC3C,gBAAgB,gBAAgB,EAAE,gBAAgB,KAAK,EAAE;AAC3D"}
@@ -0,0 +1,23 @@
1
+ import { Store } from "@tanstack/store";
2
+ //#region src/web/stores/toolPromptStore.d.ts
3
+ /**
4
+ * The one request a tool's composer prompt failed to render.
5
+ *
6
+ * A tool prompt standing in for the composer is the only surface offering the
7
+ * agent an answer, so a plugin component that throws would otherwise strand
8
+ * the run with nothing to click. Recording the request it threw on hands it
9
+ * back: the claim declines it, and the host's own dialog opens instead.
10
+ *
11
+ * One id is enough because one request is open at a time, and a later request
12
+ * gets its own id, so a plugin fixed between turns is tried again rather than
13
+ * written off for the rest of the session.
14
+ */
15
+ export interface ToolPromptState {
16
+ failedDialogId: string | null;
17
+ }
18
+ export declare const toolPromptStore: Store<ToolPromptState, never>;
19
+ export declare function markToolPromptFailed(dialogId: string): void;
20
+ /** Test seam. */
21
+ export declare function resetToolPromptStore(): void;
22
+ //#endregion
23
+ //# sourceMappingURL=toolPromptStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolPromptStore.d.mts","names":[],"sources":["../../../src/web/stores/toolPromptStore.ts"],"mappings":";;;;;;;;;;;;;;iBAciB;EACf;;qBAGW,iBAAe,MAAA;wBAEZ,qBAAqB;;wBAKrB"}
@@ -0,0 +1,14 @@
1
+ import { Store } from "@tanstack/store";
2
+ //#region src/web/stores/toolPromptStore.ts
3
+ const toolPromptStore = new Store({ failedDialogId: null });
4
+ function markToolPromptFailed(dialogId) {
5
+ toolPromptStore.setState((state) => state.failedDialogId === dialogId ? state : { failedDialogId: dialogId });
6
+ }
7
+ /** Test seam. */
8
+ function resetToolPromptStore() {
9
+ toolPromptStore.setState(() => ({ failedDialogId: null }));
10
+ }
11
+ //#endregion
12
+ export { markToolPromptFailed, resetToolPromptStore, toolPromptStore };
13
+
14
+ //# sourceMappingURL=toolPromptStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolPromptStore.mjs","names":[],"sources":["../../../src/web/stores/toolPromptStore.ts"],"sourcesContent":["import { Store } from '@tanstack/store';\n\n/**\n * The one request a tool's composer prompt failed to render.\n *\n * A tool prompt standing in for the composer is the only surface offering the\n * agent an answer, so a plugin component that throws would otherwise strand\n * the run with nothing to click. Recording the request it threw on hands it\n * back: the claim declines it, and the host's own dialog opens instead.\n *\n * One id is enough because one request is open at a time, and a later request\n * gets its own id, so a plugin fixed between turns is tried again rather than\n * written off for the rest of the session.\n */\nexport interface ToolPromptState {\n failedDialogId: string | null;\n}\n\nexport const toolPromptStore = new Store<ToolPromptState>({ failedDialogId: null });\n\nexport function markToolPromptFailed(dialogId: string): void {\n toolPromptStore.setState((state) => (state.failedDialogId === dialogId ? state : { failedDialogId: dialogId }));\n}\n\n/** Test seam. */\nexport function resetToolPromptStore(): void {\n toolPromptStore.setState(() => ({ failedDialogId: null }));\n}\n"],"mappings":";;AAkBA,MAAa,kBAAkB,IAAI,MAAuB,EAAE,gBAAgB,KAAK,CAAC;AAElF,SAAgB,qBAAqB,UAAwB;CAC3D,gBAAgB,UAAU,UAAW,MAAM,mBAAmB,WAAW,QAAQ,EAAE,gBAAgB,SAAS,CAAE;AAChH;;AAGA,SAAgB,uBAA6B;CAC3C,gBAAgB,gBAAgB,EAAE,gBAAgB,KAAK,EAAE;AAC3D"}
@@ -0,0 +1,66 @@
1
+ let _tanstack_store = require("@tanstack/store");
2
+ let _tanstack_react_store = require("@tanstack/react-store");
3
+ //#region src/web/stores/transientTabsStore.ts
4
+ /** One stable empty list, so a selector for a session with no tabs never re-renders its reader. */
5
+ const NO_TABS = [];
6
+ /**
7
+ * The tabs plugins opened at runtime, per session. A tab keeps the panel it
8
+ * was opened with: opening the same id again focuses it rather than swapping
9
+ * the component out from under React. Nothing here survives a reload, which
10
+ * is what makes the tabs temporary.
11
+ */
12
+ const transientTabsStore = new _tanstack_store.Store({});
13
+ function transientTabsOf(state, sessionId) {
14
+ return (sessionId === null ? void 0 : state[sessionId]) ?? NO_TABS;
15
+ }
16
+ function findTransientTab(state, sessionId, tabId) {
17
+ if (sessionId === void 0 || tabId === void 0) return void 0;
18
+ return transientTabsOf(state, sessionId).find((tab) => tab.id === tabId);
19
+ }
20
+ function openTransientTab(sessionId, tab) {
21
+ if (findTransientTab(transientTabsStore.state, sessionId, tab.id) !== void 0) return;
22
+ transientTabsStore.setState((state) => ({
23
+ ...state,
24
+ [sessionId]: [...state[sessionId] ?? [], tab]
25
+ }));
26
+ tab.onOpen?.(sessionId);
27
+ }
28
+ function closeTransientTab(sessionId, tabId) {
29
+ const tab = findTransientTab(transientTabsStore.state, sessionId, tabId);
30
+ if (tab === void 0) return;
31
+ transientTabsStore.setState((state) => ({
32
+ ...state,
33
+ [sessionId]: (state[sessionId] ?? []).filter((candidate) => candidate.id !== tabId)
34
+ }));
35
+ tab.onClose?.(sessionId);
36
+ }
37
+ /** A session that left takes its tabs with it. */
38
+ function dropTransientTabs(sessionId) {
39
+ const tabs = transientTabsStore.state[sessionId];
40
+ if (tabs === void 0) return;
41
+ transientTabsStore.setState((state) => {
42
+ const next = { ...state };
43
+ delete next[sessionId];
44
+ return next;
45
+ });
46
+ for (const tab of tabs) tab.onClose?.(sessionId);
47
+ }
48
+ function resetTransientTabs() {
49
+ const previous = transientTabsStore.state;
50
+ transientTabsStore.setState(() => ({}));
51
+ for (const [sessionId, tabs] of Object.entries(previous)) for (const tab of tabs ?? []) tab.onClose?.(sessionId);
52
+ }
53
+ function useTransientTabs(sessionId) {
54
+ return (0, _tanstack_react_store.useStore)(transientTabsStore, (state) => transientTabsOf(state, sessionId));
55
+ }
56
+ //#endregion
57
+ exports.closeTransientTab = closeTransientTab;
58
+ exports.dropTransientTabs = dropTransientTabs;
59
+ exports.findTransientTab = findTransientTab;
60
+ exports.openTransientTab = openTransientTab;
61
+ exports.resetTransientTabs = resetTransientTabs;
62
+ exports.transientTabsOf = transientTabsOf;
63
+ exports.transientTabsStore = transientTabsStore;
64
+ exports.useTransientTabs = useTransientTabs;
65
+
66
+ //# sourceMappingURL=transientTabsStore.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transientTabsStore.cjs","names":["Store","useStore"],"sources":["../../../src/web/stores/transientTabsStore.ts"],"sourcesContent":["import type { TransientTab } from '@agimon-ai/po-core/web';\nimport { useStore } from '@tanstack/react-store';\nimport { Store } from '@tanstack/store';\n\ntype TransientTabsState = Partial<Record<string, TransientTab[]>>;\n\n/** One stable empty list, so a selector for a session with no tabs never re-renders its reader. */\nconst NO_TABS: readonly TransientTab[] = [];\n\n/**\n * The tabs plugins opened at runtime, per session. A tab keeps the panel it\n * was opened with: opening the same id again focuses it rather than swapping\n * the component out from under React. Nothing here survives a reload, which\n * is what makes the tabs temporary.\n */\nexport const transientTabsStore = new Store<TransientTabsState>({});\n\nexport function transientTabsOf(state: TransientTabsState, sessionId: string | null): readonly TransientTab[] {\n return (sessionId === null ? undefined : state[sessionId]) ?? NO_TABS;\n}\n\nexport function findTransientTab(\n state: TransientTabsState,\n sessionId: string | undefined,\n tabId: string | undefined,\n): TransientTab | undefined {\n if (sessionId === undefined || tabId === undefined) return undefined;\n return transientTabsOf(state, sessionId).find((tab) => tab.id === tabId);\n}\n\nexport function openTransientTab(sessionId: string, tab: TransientTab): void {\n if (findTransientTab(transientTabsStore.state, sessionId, tab.id) !== undefined) return;\n transientTabsStore.setState((state) => ({ ...state, [sessionId]: [...(state[sessionId] ?? []), tab] }));\n tab.onOpen?.(sessionId);\n}\n\nexport function closeTransientTab(sessionId: string, tabId: string): void {\n const tab = findTransientTab(transientTabsStore.state, sessionId, tabId);\n if (tab === undefined) return;\n transientTabsStore.setState((state) => ({\n ...state,\n [sessionId]: (state[sessionId] ?? []).filter((candidate) => candidate.id !== tabId),\n }));\n tab.onClose?.(sessionId);\n}\n\n/** A session that left takes its tabs with it. */\nexport function dropTransientTabs(sessionId: string): void {\n const tabs = transientTabsStore.state[sessionId];\n if (tabs === undefined) return;\n transientTabsStore.setState((state) => {\n const next = { ...state };\n delete next[sessionId];\n return next;\n });\n for (const tab of tabs) tab.onClose?.(sessionId);\n}\n\nexport function resetTransientTabs(): void {\n const previous = transientTabsStore.state;\n transientTabsStore.setState(() => ({}));\n for (const [sessionId, tabs] of Object.entries(previous)) {\n for (const tab of tabs ?? []) tab.onClose?.(sessionId);\n }\n}\n\nexport function useTransientTabs(sessionId: string | null): readonly TransientTab[] {\n return useStore(transientTabsStore, (state) => transientTabsOf(state, sessionId));\n}\n"],"mappings":";;;;AAOA,MAAM,UAAmC,CAAC;;;;;;;AAQ1C,MAAa,qBAAqB,IAAIA,gBAAAA,MAA0B,CAAC,CAAC;AAElE,SAAgB,gBAAgB,OAA2B,WAAmD;CAC5G,QAAQ,cAAc,OAAO,KAAA,IAAY,MAAM,eAAe;AAChE;AAEA,SAAgB,iBACd,OACA,WACA,OAC0B;CAC1B,IAAI,cAAc,KAAA,KAAa,UAAU,KAAA,GAAW,OAAO,KAAA;CAC3D,OAAO,gBAAgB,OAAO,SAAS,CAAC,CAAC,MAAM,QAAQ,IAAI,OAAO,KAAK;AACzE;AAEA,SAAgB,iBAAiB,WAAmB,KAAyB;CAC3E,IAAI,iBAAiB,mBAAmB,OAAO,WAAW,IAAI,EAAE,MAAM,KAAA,GAAW;CACjF,mBAAmB,UAAU,WAAW;EAAE,GAAG;GAAQ,YAAY,CAAC,GAAI,MAAM,cAAc,CAAC,GAAI,GAAG;CAAE,EAAE;CACtG,IAAI,SAAS,SAAS;AACxB;AAEA,SAAgB,kBAAkB,WAAmB,OAAqB;CACxE,MAAM,MAAM,iBAAiB,mBAAmB,OAAO,WAAW,KAAK;CACvE,IAAI,QAAQ,KAAA,GAAW;CACvB,mBAAmB,UAAU,WAAW;EACtC,GAAG;GACF,aAAa,MAAM,cAAc,CAAC,EAAA,CAAG,QAAQ,cAAc,UAAU,OAAO,KAAK;CACpF,EAAE;CACF,IAAI,UAAU,SAAS;AACzB;;AAGA,SAAgB,kBAAkB,WAAyB;CACzD,MAAM,OAAO,mBAAmB,MAAM;CACtC,IAAI,SAAS,KAAA,GAAW;CACxB,mBAAmB,UAAU,UAAU;EACrC,MAAM,OAAO,EAAE,GAAG,MAAM;EACxB,OAAO,KAAK;EACZ,OAAO;CACT,CAAC;CACD,KAAK,MAAM,OAAO,MAAM,IAAI,UAAU,SAAS;AACjD;AAEA,SAAgB,qBAA2B;CACzC,MAAM,WAAW,mBAAmB;CACpC,mBAAmB,gBAAgB,CAAC,EAAE;CACtC,KAAK,MAAM,CAAC,WAAW,SAAS,OAAO,QAAQ,QAAQ,GACrD,KAAK,MAAM,OAAO,QAAQ,CAAC,GAAG,IAAI,UAAU,SAAS;AAEzD;AAEA,SAAgB,iBAAiB,WAAmD;CAClF,QAAA,GAAOC,sBAAAA,SAAAA,CAAS,qBAAqB,UAAU,gBAAgB,OAAO,SAAS,CAAC;AAClF"}
@@ -0,0 +1,21 @@
1
+ import { TransientTab } from "@agimon-ai/po-core/web";
2
+ import { Store } from "@tanstack/store";
3
+ //#region src/web/stores/transientTabsStore.d.ts
4
+ type TransientTabsState = Partial<Record<string, TransientTab[]>>;
5
+ /**
6
+ * The tabs plugins opened at runtime, per session. A tab keeps the panel it
7
+ * was opened with: opening the same id again focuses it rather than swapping
8
+ * the component out from under React. Nothing here survives a reload, which
9
+ * is what makes the tabs temporary.
10
+ */
11
+ export declare const transientTabsStore: Store<Partial<Record<string, TransientTab[]>>, never>;
12
+ export declare function transientTabsOf(state: TransientTabsState, sessionId: string | null): readonly TransientTab[];
13
+ export declare function findTransientTab(state: TransientTabsState, sessionId: string | undefined, tabId: string | undefined): TransientTab | undefined;
14
+ export declare function openTransientTab(sessionId: string, tab: TransientTab): void;
15
+ export declare function closeTransientTab(sessionId: string, tabId: string): void;
16
+ /** A session that left takes its tabs with it. */
17
+ export declare function dropTransientTabs(sessionId: string): void;
18
+ export declare function resetTransientTabs(): void;
19
+ export declare function useTransientTabs(sessionId: string | null): readonly TransientTab[];
20
+ //#endregion
21
+ //# sourceMappingURL=transientTabsStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transientTabsStore.d.mts","names":[],"sources":["../../../src/web/stores/transientTabsStore.ts"],"mappings":";;;KAIK,qBAAqB,QAAQ,eAAe;;;;;;;qBAWpC,oBAAkB,MAAA,QAAA,eAAA;wBAEf,gBAAgB,OAAO,oBAAoB,oCAAoC;wBAI/E,iBACd,OAAO,oBACP,+BACA,4BACC;wBAKa,iBAAiB,mBAAmB,KAAK;wBAMzC,kBAAkB,mBAAmB;;wBAWrC,kBAAkB;wBAWlB;wBAQA,iBAAiB,oCAAoC"}