@ashlr/hub 3.22.0 → 3.22.1

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 (929) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +5 -5
  3. package/dist/authority-surface.json +16 -11
  4. package/dist/build-identity.json +2 -2
  5. package/dist/cli/verify-safety-sources.d.ts +4 -0
  6. package/dist/cli/verify-safety-sources.js +41 -0
  7. package/dist/cli/verify-safety-sources.js.map +1 -0
  8. package/dist/cli/verify-safety.js +16 -1
  9. package/dist/cli/verify-safety.js.map +1 -1
  10. package/dist/core/decide/needs-you.d.ts +3 -1
  11. package/dist/core/decide/needs-you.js +52 -28
  12. package/dist/core/decide/needs-you.js.map +1 -1
  13. package/dist/core/fleet/fleet-control-model.d.ts +2 -1
  14. package/dist/core/fleet/fleet-control-model.js +5 -0
  15. package/dist/core/fleet/fleet-control-model.js.map +1 -1
  16. package/dist/core/fleet/fleet-control-types.d.ts +11 -1
  17. package/dist/core/fleet/fleet-control.d.ts +4 -0
  18. package/dist/core/fleet/fleet-control.js +23 -1
  19. package/dist/core/fleet/fleet-control.js.map +1 -1
  20. package/dist/core/fleet/quota.js +1 -1
  21. package/dist/core/fleet/quota.js.map +1 -1
  22. package/dist/core/universe/builtins/preparation/manifest.json +1 -1
  23. package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +4 -2
  24. package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +3 -1
  25. package/dist/core/web/public/next/assets/ActionMenu-Z14OhnFI.js +2 -0
  26. package/dist/core/web/public/next/assets/ActionMenu-Z14OhnFI.js.map +1 -0
  27. package/dist/core/web/public/next/assets/Advanced-fUyq-fpH.js +2 -0
  28. package/dist/core/web/public/next/assets/Advanced-fUyq-fpH.js.map +1 -0
  29. package/dist/core/web/public/next/assets/AgentDetailScreen-C8h--Nah.js +2 -0
  30. package/dist/core/web/public/next/assets/AgentDetailScreen-C8h--Nah.js.map +1 -0
  31. package/dist/core/web/public/next/assets/AgentToolsSheet-BP3h-UbZ.js +2 -0
  32. package/dist/core/web/public/next/assets/AgentToolsSheet-BP3h-UbZ.js.map +1 -0
  33. package/dist/core/web/public/next/assets/AgentToolsStrip--hf18knJ.js +2 -0
  34. package/dist/core/web/public/next/assets/AgentToolsStrip--hf18knJ.js.map +1 -0
  35. package/dist/core/web/public/next/assets/AgentsScreen-BR-j0Fzd.js +2 -0
  36. package/dist/core/web/public/next/assets/AgentsScreen-BR-j0Fzd.js.map +1 -0
  37. package/dist/core/web/public/next/assets/AgentsSection-OKKOuYed.js +3 -0
  38. package/dist/core/web/public/next/assets/AgentsSection-OKKOuYed.js.map +1 -0
  39. package/dist/core/web/public/next/assets/App-ttVrZYp5.js +8 -0
  40. package/dist/core/web/public/next/assets/App-ttVrZYp5.js.map +1 -0
  41. package/dist/core/web/public/next/assets/AppsSection-sqsXqENO.js +2 -0
  42. package/dist/core/web/public/next/assets/AppsSection-sqsXqENO.js.map +1 -0
  43. package/dist/core/web/public/next/assets/AreaTrend-LVgaB49b.js +2 -0
  44. package/dist/core/web/public/next/assets/AreaTrend-LVgaB49b.js.map +1 -0
  45. package/dist/core/web/public/next/assets/AutomationsSection-BITmxjuB.js +2 -0
  46. package/dist/core/web/public/next/assets/AutomationsSection-BITmxjuB.js.map +1 -0
  47. package/dist/core/web/public/next/assets/AutonomyOffState-nO9lIcCv.js +3 -0
  48. package/dist/core/web/public/next/assets/AutonomyOffState-nO9lIcCv.js.map +1 -0
  49. package/dist/core/web/public/next/assets/AutonomySection-DWYUPDP6.js +2 -0
  50. package/dist/core/web/public/next/assets/AutonomySection-DWYUPDP6.js.map +1 -0
  51. package/dist/core/web/public/next/assets/AutonomyStatus-C4Yp1JTY.js +2 -0
  52. package/dist/core/web/public/next/assets/AutonomyStatus-C4Yp1JTY.js.map +1 -0
  53. package/dist/core/web/public/next/assets/BranchBar-CkiZSNqB.js +2 -0
  54. package/dist/core/web/public/next/assets/BranchBar-CkiZSNqB.js.map +1 -0
  55. package/dist/core/web/public/next/assets/BrowserPanel-CECVGJBS.js +7 -0
  56. package/dist/core/web/public/next/assets/BrowserPanel-CECVGJBS.js.map +1 -0
  57. package/dist/core/web/public/next/assets/BudgetControl-De1TPzvX.js +2 -0
  58. package/dist/core/web/public/next/assets/BudgetControl-De1TPzvX.js.map +1 -0
  59. package/dist/core/web/public/next/assets/Button-CstSJwha.js +2 -0
  60. package/dist/core/web/public/next/assets/Button-CstSJwha.js.map +1 -0
  61. package/dist/core/web/public/next/assets/CapacityStrip-nIJcB_lA.js +2 -0
  62. package/dist/core/web/public/next/assets/CapacityStrip-nIJcB_lA.js.map +1 -0
  63. package/dist/core/web/public/next/assets/ChangesPaneHost-Bnj_NcRa.js +16 -0
  64. package/dist/core/web/public/next/assets/ChangesPaneHost-Bnj_NcRa.js.map +1 -0
  65. package/dist/core/web/public/next/assets/ChartFrame-Dljee9y6.js +2 -0
  66. package/dist/core/web/public/next/assets/ChartFrame-Dljee9y6.js.map +1 -0
  67. package/dist/core/web/public/next/assets/ChatPanes-x_ySUIyR.js +2 -0
  68. package/dist/core/web/public/next/assets/ChatPanes-x_ySUIyR.js.map +1 -0
  69. package/dist/core/web/public/next/assets/ChatSection-CXJa8QOi.js +3 -0
  70. package/dist/core/web/public/next/assets/ChatSection-CXJa8QOi.js.map +1 -0
  71. package/dist/core/web/public/next/assets/ChecksPanel-D9r8koxq.js +5 -0
  72. package/dist/core/web/public/next/assets/ChecksPanel-D9r8koxq.js.map +1 -0
  73. package/dist/core/web/public/next/assets/CloudBudgetForm-D5ajpoMe.js +2 -0
  74. package/dist/core/web/public/next/assets/CloudBudgetForm-D5ajpoMe.js.map +1 -0
  75. package/dist/core/web/public/next/assets/CommandPalette-ONyqYZzt.js +3 -0
  76. package/dist/core/web/public/next/assets/CommandPalette-ONyqYZzt.js.map +1 -0
  77. package/dist/core/web/public/next/assets/CommandSection-DxNIibnI.js +3 -0
  78. package/dist/core/web/public/next/assets/CommandSection-DxNIibnI.js.map +1 -0
  79. package/dist/core/web/public/next/assets/CommandWorkflowForm-Bz3PuZXH.js +9 -0
  80. package/dist/core/web/public/next/assets/CommandWorkflowForm-Bz3PuZXH.js.map +1 -0
  81. package/dist/core/web/public/next/assets/CommandWorkflowPicker-COVyeer0.js +3 -0
  82. package/dist/core/web/public/next/assets/CommandWorkflowPicker-COVyeer0.js.map +1 -0
  83. package/dist/core/web/public/next/assets/CompareDialog-PVqv0Tx9.js +4 -0
  84. package/dist/core/web/public/next/assets/CompareDialog-PVqv0Tx9.js.map +1 -0
  85. package/dist/core/web/public/next/assets/ComputerControl-DkSIUrYm.js +2 -0
  86. package/dist/core/web/public/next/assets/ComputerControl-DkSIUrYm.js.map +1 -0
  87. package/dist/core/web/public/next/assets/ConfirmDialog-CdCzzk0I.js +2 -0
  88. package/dist/core/web/public/next/assets/ConfirmDialog-CdCzzk0I.js.map +1 -0
  89. package/dist/core/web/public/next/assets/DeleteChatDialog-BTzOgqho.js +2 -0
  90. package/dist/core/web/public/next/assets/DeleteChatDialog-BTzOgqho.js.map +1 -0
  91. package/dist/core/web/public/next/assets/DevinStopDialog-CGsDqfan.js +2 -0
  92. package/dist/core/web/public/next/assets/DevinStopDialog-CGsDqfan.js.map +1 -0
  93. package/dist/core/web/public/next/assets/Dialog-DDHg9cuT.js +2 -0
  94. package/dist/core/web/public/next/assets/Dialog-DDHg9cuT.js.map +1 -0
  95. package/dist/core/web/public/next/assets/DiffPane-BR3HU7pC.js +2 -0
  96. package/dist/core/web/public/next/assets/DiffPane-BR3HU7pC.js.map +1 -0
  97. package/dist/core/web/public/next/assets/DiffViewer-hJK75qko.js +2 -0
  98. package/dist/core/web/public/next/assets/DiffViewer-hJK75qko.js.map +1 -0
  99. package/dist/core/web/public/next/assets/DockHost-DhOosHbo.js +2 -0
  100. package/dist/core/web/public/next/assets/DockHost-DhOosHbo.js.map +1 -0
  101. package/dist/core/web/public/next/assets/EmptyState-CGVr0VO2.js +2 -0
  102. package/dist/core/web/public/next/assets/EmptyState-CGVr0VO2.js.map +1 -0
  103. package/dist/core/web/public/next/assets/Epistemic-tp0ZNAKZ.js +2 -0
  104. package/dist/core/web/public/next/assets/Epistemic-tp0ZNAKZ.js.map +1 -0
  105. package/dist/core/web/public/next/assets/EvidenceTimeline-YmKIoxNx.js +2 -0
  106. package/dist/core/web/public/next/assets/EvidenceTimeline-YmKIoxNx.js.map +1 -0
  107. package/dist/core/web/public/next/assets/FilesPane-CoNjfkPP.js +2 -0
  108. package/dist/core/web/public/next/assets/FilesPane-CoNjfkPP.js.map +1 -0
  109. package/dist/core/web/public/next/assets/FleetScreen-CstwycnB.js +2 -0
  110. package/dist/core/web/public/next/assets/FleetScreen-CstwycnB.js.map +1 -0
  111. package/dist/core/web/public/next/assets/FleetSection-D0xk0s5J.js +5 -0
  112. package/dist/core/web/public/next/assets/FleetSection-D0xk0s5J.js.map +1 -0
  113. package/dist/core/web/public/next/assets/Funnel-UPrk7fcy.js +2 -0
  114. package/dist/core/web/public/next/assets/Funnel-UPrk7fcy.js.map +1 -0
  115. package/dist/core/web/public/next/assets/GearTray-BSjga1J_.js +2 -0
  116. package/dist/core/web/public/next/assets/GearTray-BSjga1J_.js.map +1 -0
  117. package/dist/core/web/public/next/assets/GitDialogs-ekwzxl76.js +2 -0
  118. package/dist/core/web/public/next/assets/GitDialogs-ekwzxl76.js.map +1 -0
  119. package/dist/core/web/public/next/assets/GrowthSection-Dh-gnkgc.js +3 -0
  120. package/dist/core/web/public/next/assets/GrowthSection-Dh-gnkgc.js.map +1 -0
  121. package/dist/core/web/public/next/assets/HandoffDialog-BDiyA3u-.js +2 -0
  122. package/dist/core/web/public/next/assets/HandoffDialog-BDiyA3u-.js.map +1 -0
  123. package/dist/core/web/public/next/assets/HomeBody-Ce3HBIEb.js +3 -0
  124. package/dist/core/web/public/next/assets/HomeBody-Ce3HBIEb.js.map +1 -0
  125. package/dist/core/web/public/next/assets/HomeSeats-BFLCWCFp.js +2 -0
  126. package/dist/core/web/public/next/assets/HomeSeats-BFLCWCFp.js.map +1 -0
  127. package/dist/core/web/public/next/assets/Input-Cpn9uYj2.js +2 -0
  128. package/dist/core/web/public/next/assets/Input-Cpn9uYj2.js.map +1 -0
  129. package/dist/core/web/public/next/assets/LaunchDialog-CrPEf652.js +9 -0
  130. package/dist/core/web/public/next/assets/LaunchDialog-CrPEf652.js.map +1 -0
  131. package/dist/core/web/public/next/assets/LeaderCard-Dhq-w_Mf.js +2 -0
  132. package/dist/core/web/public/next/assets/LeaderCard-Dhq-w_Mf.js.map +1 -0
  133. package/dist/core/web/public/next/assets/LeaderConversation-CiWqhsoa.js +3 -0
  134. package/dist/core/web/public/next/assets/LeaderConversation-CiWqhsoa.js.map +1 -0
  135. package/dist/core/web/public/next/assets/LeaderScreen-Z5KPjxBV.js +2 -0
  136. package/dist/core/web/public/next/assets/LeaderScreen-Z5KPjxBV.js.map +1 -0
  137. package/dist/core/web/public/next/assets/LessonsPanel-B6XVKAPE.js +2 -0
  138. package/dist/core/web/public/next/assets/LessonsPanel-B6XVKAPE.js.map +1 -0
  139. package/dist/core/web/public/next/assets/LiveTimer-B8t2iX5h.js +2 -0
  140. package/dist/core/web/public/next/assets/LiveTimer-B8t2iX5h.js.map +1 -0
  141. package/dist/core/web/public/next/assets/LocalSeatBadge-HMxIrMiL.js +2 -0
  142. package/dist/core/web/public/next/assets/LocalSeatBadge-HMxIrMiL.js.map +1 -0
  143. package/dist/core/web/public/next/assets/MatrixHeatmap-BlFI5oao.js +2 -0
  144. package/dist/core/web/public/next/assets/MatrixHeatmap-BlFI5oao.js.map +1 -0
  145. package/dist/core/web/public/next/assets/McpSection-snZNKexW.js +2 -0
  146. package/dist/core/web/public/next/assets/McpSection-snZNKexW.js.map +1 -0
  147. package/dist/core/web/public/next/assets/MessageMarkdown-CS0mAtSs.js +3 -0
  148. package/dist/core/web/public/next/assets/MessageMarkdown-CS0mAtSs.js.map +1 -0
  149. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-D5R-zr-W.js +72 -0
  150. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-D5R-zr-W.js.map +1 -0
  151. package/dist/core/web/public/next/assets/Meter-VXI75VNe.js +2 -0
  152. package/dist/core/web/public/next/assets/Meter-VXI75VNe.js.map +1 -0
  153. package/dist/core/web/public/next/assets/MicButton-DORAXsUU.js +2 -0
  154. package/dist/core/web/public/next/assets/MicButton-DORAXsUU.js.map +1 -0
  155. package/dist/core/web/public/next/assets/MindSection-DZLHz29Q.js +3 -0
  156. package/dist/core/web/public/next/assets/MindSection-DZLHz29Q.js.map +1 -0
  157. package/dist/core/web/public/next/assets/MobileComposer-B8nWsIJO.js +2 -0
  158. package/dist/core/web/public/next/assets/MobileComposer-B8nWsIJO.js.map +1 -0
  159. package/dist/core/web/public/next/assets/MobileGuardSheet-BRwOfD9o.js +2 -0
  160. package/dist/core/web/public/next/assets/MobileGuardSheet-BRwOfD9o.js.map +1 -0
  161. package/dist/core/web/public/next/assets/MobileRuntime-kMob_MjB.js +3 -0
  162. package/dist/core/web/public/next/assets/MobileRuntime-kMob_MjB.js.map +1 -0
  163. package/dist/core/web/public/next/assets/MoreScreen-92dC6Bj7.js +2 -0
  164. package/dist/core/web/public/next/assets/MoreScreen-92dC6Bj7.js.map +1 -0
  165. package/dist/core/web/public/next/assets/MultiModelBar-BhAUUQOq.js +7 -0
  166. package/dist/core/web/public/next/assets/MultiModelBar-BhAUUQOq.js.map +1 -0
  167. package/dist/core/web/public/next/assets/MutationTokenDialog-DlY2VLVh.js +2 -0
  168. package/dist/core/web/public/next/assets/MutationTokenDialog-DlY2VLVh.js.map +1 -0
  169. package/dist/core/web/public/next/assets/NeedsYouDrawer-BH0ffbht.js +3 -0
  170. package/dist/core/web/public/next/assets/NeedsYouDrawer-BH0ffbht.js.map +1 -0
  171. package/dist/core/web/public/next/assets/NeedsYouList-CI_Dy-hi.js +2 -0
  172. package/dist/core/web/public/next/assets/NeedsYouList-CI_Dy-hi.js.map +1 -0
  173. package/dist/core/web/public/next/assets/NeedsYouScreen-CvDiEphJ.js +2 -0
  174. package/dist/core/web/public/next/assets/NeedsYouScreen-CvDiEphJ.js.map +1 -0
  175. package/dist/core/web/public/next/assets/NewAgentScreen-BpTRKp9z.js +2 -0
  176. package/dist/core/web/public/next/assets/NewAgentScreen-BpTRKp9z.js.map +1 -0
  177. package/dist/core/web/public/next/assets/NewChatDialog-O1LwwBc4.js +4 -0
  178. package/dist/core/web/public/next/assets/NewChatDialog-O1LwwBc4.js.map +1 -0
  179. package/dist/core/web/public/next/assets/OnboardingFlow-uMNBVHvK.js +3 -0
  180. package/dist/core/web/public/next/assets/OnboardingFlow-uMNBVHvK.js.map +1 -0
  181. package/dist/core/web/public/next/assets/OnboardingGate-sdzxSPZF.js +3 -0
  182. package/dist/core/web/public/next/assets/OnboardingGate-sdzxSPZF.js.map +1 -0
  183. package/dist/core/web/public/next/assets/PlaybooksSection-CnWfwZv8.js +9 -0
  184. package/dist/core/web/public/next/assets/PlaybooksSection-CnWfwZv8.js.map +1 -0
  185. package/dist/core/web/public/next/assets/PreviewPane-D1WaefIG.js +2 -0
  186. package/dist/core/web/public/next/assets/PreviewPane-D1WaefIG.js.map +1 -0
  187. package/dist/core/web/public/next/assets/ProviderLogo-g2YWCmNY.js +2 -0
  188. package/dist/core/web/public/next/assets/ProviderLogo-g2YWCmNY.js.map +1 -0
  189. package/dist/core/web/public/next/assets/RailStatus-OrvAuyzs.js +2 -0
  190. package/dist/core/web/public/next/assets/RailStatus-OrvAuyzs.js.map +1 -0
  191. package/dist/core/web/public/next/assets/ReasoningPane-BARDPl4-.js +2 -0
  192. package/dist/core/web/public/next/assets/ReasoningPane-BARDPl4-.js.map +1 -0
  193. package/dist/core/web/public/next/assets/ReasoningSheet-rPTXyt-b.js +2 -0
  194. package/dist/core/web/public/next/assets/ReasoningSheet-rPTXyt-b.js.map +1 -0
  195. package/dist/core/web/public/next/assets/RefreshIndicator-D96C9qiH.js +2 -0
  196. package/dist/core/web/public/next/assets/RefreshIndicator-D96C9qiH.js.map +1 -0
  197. package/dist/core/web/public/next/assets/RemoteMobileApp-DfDjiBTR.js +2 -0
  198. package/dist/core/web/public/next/assets/RemoteMobileApp-DfDjiBTR.js.map +1 -0
  199. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CcfULh_p.js +7 -0
  200. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CcfULh_p.js.map +1 -0
  201. package/dist/core/web/public/next/assets/ResourcesChrome-DuEa7WOo.css +1 -0
  202. package/dist/core/web/public/next/assets/ResourcesChrome-e9ifgnWf.js +3 -0
  203. package/dist/core/web/public/next/assets/ResourcesChrome-e9ifgnWf.js.map +1 -0
  204. package/dist/core/web/public/next/assets/ResourcesDrawer-DOv_mxpe.js +3 -0
  205. package/dist/core/web/public/next/assets/ResourcesDrawer-DOv_mxpe.js.map +1 -0
  206. package/dist/core/web/public/next/assets/ReviewMenu-Ba3saQlX.js +2 -0
  207. package/dist/core/web/public/next/assets/ReviewMenu-Ba3saQlX.js.map +1 -0
  208. package/dist/core/web/public/next/assets/RouteErrorBoundary-BaJ1ZePy.js +2 -0
  209. package/dist/core/web/public/next/assets/RouteErrorBoundary-BaJ1ZePy.js.map +1 -0
  210. package/dist/core/web/public/next/assets/RunInCloudAction-DRSX84Jy.js +2 -0
  211. package/dist/core/web/public/next/assets/RunInCloudAction-DRSX84Jy.js.map +1 -0
  212. package/dist/core/web/public/next/assets/RunInDevinAction-BMji-YN2.js +2 -0
  213. package/dist/core/web/public/next/assets/RunInDevinAction-BMji-YN2.js.map +1 -0
  214. package/dist/core/web/public/next/assets/SchedulingEvidence-xxjV6HF_.js +2 -0
  215. package/dist/core/web/public/next/assets/SchedulingEvidence-xxjV6HF_.js.map +1 -0
  216. package/dist/core/web/public/next/assets/ScreenHost-Dv6z76Ta.js +3 -0
  217. package/dist/core/web/public/next/assets/ScreenHost-Dv6z76Ta.js.map +1 -0
  218. package/dist/core/web/public/next/assets/SeatSelector-YRNdNpP8.js +3 -0
  219. package/dist/core/web/public/next/assets/SeatSelector-YRNdNpP8.js.map +1 -0
  220. package/dist/core/web/public/next/assets/Segmented-BA8RmKYq.js +2 -0
  221. package/dist/core/web/public/next/assets/Segmented-BA8RmKYq.js.map +1 -0
  222. package/dist/core/web/public/next/assets/Select-B8GqZOX9.js +2 -0
  223. package/dist/core/web/public/next/assets/Select-B8GqZOX9.js.map +1 -0
  224. package/dist/core/web/public/next/assets/SessionGate-CnASHl7g.js +2 -0
  225. package/dist/core/web/public/next/assets/SessionGate-CnASHl7g.js.map +1 -0
  226. package/dist/core/web/public/next/assets/SessionInsightChip-DIKfih6i.js +2 -0
  227. package/dist/core/web/public/next/assets/SessionInsightChip-DIKfih6i.js.map +1 -0
  228. package/dist/core/web/public/next/assets/SessionSearch-K6lvMlji.js +2 -0
  229. package/dist/core/web/public/next/assets/SessionSearch-K6lvMlji.js.map +1 -0
  230. package/dist/core/web/public/next/assets/SettingsSection-C-c3f_6J.js +2 -0
  231. package/dist/core/web/public/next/assets/SettingsSection-C-c3f_6J.js.map +1 -0
  232. package/dist/core/web/public/next/assets/SetupChecklist-DAbAdrX4.js +2 -0
  233. package/dist/core/web/public/next/assets/SetupChecklist-DAbAdrX4.js.map +1 -0
  234. package/dist/core/web/public/next/assets/ShadowDecisions-C41uRSw4.js +3 -0
  235. package/dist/core/web/public/next/assets/ShadowDecisions-C41uRSw4.js.map +1 -0
  236. package/dist/core/web/public/next/assets/Sheet-Bk64-Hlt.js +2 -0
  237. package/dist/core/web/public/next/assets/Sheet-Bk64-Hlt.js.map +1 -0
  238. package/dist/core/web/public/next/assets/ShortcutsOverlay-CcP96zqy.js +2 -0
  239. package/dist/core/web/public/next/assets/ShortcutsOverlay-CcP96zqy.js.map +1 -0
  240. package/dist/core/web/public/next/assets/Sidebar-sSNKd57n.js +3 -0
  241. package/dist/core/web/public/next/assets/Sidebar-sSNKd57n.js.map +1 -0
  242. package/dist/core/web/public/next/assets/SkipToContent-BynsXs9i.js +2 -0
  243. package/dist/core/web/public/next/assets/SkipToContent-BynsXs9i.js.map +1 -0
  244. package/dist/core/web/public/next/assets/Slider-DS5HrVzl.js +2 -0
  245. package/dist/core/web/public/next/assets/Slider-DS5HrVzl.js.map +1 -0
  246. package/dist/core/web/public/next/assets/SourcesPane-QffcyDfA.js +2 -0
  247. package/dist/core/web/public/next/assets/SourcesPane-QffcyDfA.js.map +1 -0
  248. package/dist/core/web/public/next/assets/SourcesPanel-DlttePk7.js +2 -0
  249. package/dist/core/web/public/next/assets/SourcesPanel-DlttePk7.js.map +1 -0
  250. package/dist/core/web/public/next/assets/StatTile-mYm1GPj7.js +2 -0
  251. package/dist/core/web/public/next/assets/StatTile-mYm1GPj7.js.map +1 -0
  252. package/dist/core/web/public/next/assets/StatusBadge-Yz7S3kZ2.js +2 -0
  253. package/dist/core/web/public/next/assets/StatusBadge-Yz7S3kZ2.js.map +1 -0
  254. package/dist/core/web/public/next/assets/StepBand-Bdkv7iGd.js +2 -0
  255. package/dist/core/web/public/next/assets/StepBand-Bdkv7iGd.js.map +1 -0
  256. package/dist/core/web/public/next/assets/Surface-DVOAKl2g.js +2 -0
  257. package/dist/core/web/public/next/assets/Surface-DVOAKl2g.js.map +1 -0
  258. package/dist/core/web/public/next/assets/Swimlane-CeMBD_FC.js +2 -0
  259. package/dist/core/web/public/next/assets/Swimlane-CeMBD_FC.js.map +1 -0
  260. package/dist/core/web/public/next/assets/Switch-Cqc_bSoh.js +2 -0
  261. package/dist/core/web/public/next/assets/Switch-Cqc_bSoh.js.map +1 -0
  262. package/dist/core/web/public/next/assets/Tag-BvOxSxYi.js +2 -0
  263. package/dist/core/web/public/next/assets/Tag-BvOxSxYi.js.map +1 -0
  264. package/dist/core/web/public/next/assets/TerminalPane-D3f02aI4.js +3 -0
  265. package/dist/core/web/public/next/assets/TerminalPane-D3f02aI4.js.map +1 -0
  266. package/dist/core/web/public/next/assets/TerminalPane-XZ5n3Pns.js +26 -0
  267. package/dist/core/web/public/next/assets/TerminalPane-XZ5n3Pns.js.map +1 -0
  268. package/dist/core/web/public/next/assets/ThinkingBlock-DZNlOGaV.js +2 -0
  269. package/dist/core/web/public/next/assets/ThinkingBlock-DZNlOGaV.js.map +1 -0
  270. package/dist/core/web/public/next/assets/UniverseConsoleApp-CzBI6Upl.js +2 -0
  271. package/dist/core/web/public/next/assets/UniverseConsoleApp-CzBI6Upl.js.map +1 -0
  272. package/dist/core/web/public/next/assets/UniverseView-Dsi3Kk8o.js +9 -0
  273. package/dist/core/web/public/next/assets/UniverseView-Dsi3Kk8o.js.map +1 -0
  274. package/dist/core/web/public/next/assets/UsageSection-rVvLat9z.js +3 -0
  275. package/dist/core/web/public/next/assets/UsageSection-rVvLat9z.js.map +1 -0
  276. package/dist/core/web/public/next/assets/UsePlaybookAction-B4XAzSeI.js +2 -0
  277. package/dist/core/web/public/next/assets/UsePlaybookAction-B4XAzSeI.js.map +1 -0
  278. package/dist/core/web/public/next/assets/VerseConsoleApp-BmckthwC.css +1 -0
  279. package/dist/core/web/public/next/assets/VerseConsoleApp-DjPpZLo1.js +3 -0
  280. package/dist/core/web/public/next/assets/VerseConsoleApp-DjPpZLo1.js.map +1 -0
  281. package/dist/core/web/public/next/assets/VerseMobileApp-ePNuVERe.js +3 -0
  282. package/dist/core/web/public/next/assets/VerseMobileApp-ePNuVERe.js.map +1 -0
  283. package/dist/core/web/public/next/assets/VerseShared-Bf-XTHCh.js +2 -0
  284. package/dist/core/web/public/next/assets/VerseShared-Bf-XTHCh.js.map +1 -0
  285. package/dist/core/web/public/next/assets/VoiceHud-BG5FV2h0.js +2 -0
  286. package/dist/core/web/public/next/assets/VoiceHud-BG5FV2h0.js.map +1 -0
  287. package/dist/core/web/public/next/assets/VoiceInput-k3vB_FxV.js +2 -0
  288. package/dist/core/web/public/next/assets/VoiceInput-k3vB_FxV.js.map +1 -0
  289. package/dist/core/web/public/next/assets/WikiSection-DeBKNqd6.js +2 -0
  290. package/dist/core/web/public/next/assets/WikiSection-DeBKNqd6.js.map +1 -0
  291. package/dist/core/web/public/next/assets/Workspace-CvwS2-RN.js +6 -0
  292. package/dist/core/web/public/next/assets/Workspace-CvwS2-RN.js.map +1 -0
  293. package/dist/core/web/public/next/assets/actions-Dg6UJTLn.js +2 -0
  294. package/dist/core/web/public/next/assets/actions-Dg6UJTLn.js.map +1 -0
  295. package/dist/core/web/public/next/assets/agent-tools-client-DmJq7zlr.js +2 -0
  296. package/dist/core/web/public/next/assets/agent-tools-client-DmJq7zlr.js.map +1 -0
  297. package/dist/core/web/public/next/assets/agents-focus-B1LKhUVg.js +2 -0
  298. package/dist/core/web/public/next/assets/agents-focus-B1LKhUVg.js.map +1 -0
  299. package/dist/core/web/public/next/assets/app-version-Cb1z8iCO.js +2 -0
  300. package/dist/core/web/public/next/assets/app-version-Cb1z8iCO.js.map +1 -0
  301. package/dist/core/web/public/next/assets/apps-model-_chbcQeN.js +2 -0
  302. package/dist/core/web/public/next/assets/apps-model-_chbcQeN.js.map +1 -0
  303. package/dist/core/web/public/next/assets/ask-seat-O60AydbV.js +2 -0
  304. package/dist/core/web/public/next/assets/ask-seat-O60AydbV.js.map +1 -0
  305. package/dist/core/web/public/next/assets/authority-model-BeDDHF22.js +2 -0
  306. package/dist/core/web/public/next/assets/authority-model-BeDDHF22.js.map +1 -0
  307. package/dist/core/web/public/next/assets/automations-focus-BXaRZ8nX.js +2 -0
  308. package/dist/core/web/public/next/assets/automations-focus-BXaRZ8nX.js.map +1 -0
  309. package/dist/core/web/public/next/assets/budget-queries-Nvx0H2XE.js +2 -0
  310. package/dist/core/web/public/next/assets/budget-queries-Nvx0H2XE.js.map +1 -0
  311. package/dist/core/web/public/next/assets/capacity-strip-model-CBMJ2U-w.js +2 -0
  312. package/dist/core/web/public/next/assets/capacity-strip-model-CBMJ2U-w.js.map +1 -0
  313. package/dist/core/web/public/next/assets/charts-DT9PYS49.js +2 -0
  314. package/dist/core/web/public/next/assets/charts-DT9PYS49.js.map +1 -0
  315. package/dist/core/web/public/next/assets/chat-pane-data-CfbpeAYX.js +2 -0
  316. package/dist/core/web/public/next/assets/chat-pane-data-CfbpeAYX.js.map +1 -0
  317. package/dist/core/web/public/next/assets/checkpoint-queries-BKD2evmX.js +2 -0
  318. package/dist/core/web/public/next/assets/checkpoint-queries-BKD2evmX.js.map +1 -0
  319. package/dist/core/web/public/next/assets/cloud-queries-CsU54eNn.js +2 -0
  320. package/dist/core/web/public/next/assets/cloud-queries-CsU54eNn.js.map +1 -0
  321. package/dist/core/web/public/next/assets/command-catalog-B0ApAGD0.js +2 -0
  322. package/dist/core/web/public/next/assets/command-catalog-B0ApAGD0.js.map +1 -0
  323. package/dist/core/web/public/next/assets/composer-queries-D1H4E0Ye.js +2 -0
  324. package/dist/core/web/public/next/assets/composer-queries-D1H4E0Ye.js.map +1 -0
  325. package/dist/core/web/public/next/assets/connectivity-xQ0Nh0j3.js +2 -0
  326. package/dist/core/web/public/next/assets/connectivity-xQ0Nh0j3.js.map +1 -0
  327. package/dist/core/web/public/next/assets/context-queries-bnI3P0Wt.js +2 -0
  328. package/dist/core/web/public/next/assets/context-queries-bnI3P0Wt.js.map +1 -0
  329. package/dist/core/web/public/next/assets/control-queries-BG53otwz.js +2 -0
  330. package/dist/core/web/public/next/assets/control-queries-BG53otwz.js.map +1 -0
  331. package/dist/core/web/public/next/assets/copy-setup-COMDnur3.js +2 -0
  332. package/dist/core/web/public/next/assets/copy-setup-COMDnur3.js.map +1 -0
  333. package/dist/core/web/public/next/assets/deep-link-CqOP-JEm.js +2 -0
  334. package/dist/core/web/public/next/assets/deep-link-CqOP-JEm.js.map +1 -0
  335. package/dist/core/web/public/next/assets/device-permissions-DpsJJcUW.js +2 -0
  336. package/dist/core/web/public/next/assets/device-permissions-DpsJJcUW.js.map +1 -0
  337. package/dist/core/web/public/next/assets/devin-queries-BSEOfLuZ.js +2 -0
  338. package/dist/core/web/public/next/assets/devin-queries-BSEOfLuZ.js.map +1 -0
  339. package/dist/core/web/public/next/assets/dock-icons-DK7QcBXJ.js +2 -0
  340. package/dist/core/web/public/next/assets/dock-icons-DK7QcBXJ.js.map +1 -0
  341. package/dist/core/web/public/next/assets/dock-panes-DvQ6t4Nl.js +2 -0
  342. package/dist/core/web/public/next/assets/dock-panes-DvQ6t4Nl.js.map +1 -0
  343. package/dist/core/web/public/next/assets/fleet-control-queries-BL-Vlf85.js +2 -0
  344. package/dist/core/web/public/next/assets/fleet-control-queries-BL-Vlf85.js.map +1 -0
  345. package/dist/core/web/public/next/assets/fleet-queries-eacERnLm.js +2 -0
  346. package/dist/core/web/public/next/assets/fleet-queries-eacERnLm.js.map +1 -0
  347. package/dist/core/web/public/next/assets/fleet-state-DfKcuo4A.js +3 -0
  348. package/dist/core/web/public/next/assets/fleet-state-DfKcuo4A.js.map +1 -0
  349. package/dist/core/web/public/next/assets/focus-trap-BZeH0rVB.js +2 -0
  350. package/dist/core/web/public/next/assets/focus-trap-BZeH0rVB.js.map +1 -0
  351. package/dist/core/web/public/next/assets/git-model-C1I4z_iQ.js +5 -0
  352. package/dist/core/web/public/next/assets/git-model-C1I4z_iQ.js.map +1 -0
  353. package/dist/core/web/public/next/assets/global-w7KDTTi0.js +3 -0
  354. package/dist/core/web/public/next/assets/global-w7KDTTi0.js.map +1 -0
  355. package/dist/core/web/public/next/assets/guarded-action-J9umcJgI.js +3 -0
  356. package/dist/core/web/public/next/assets/guarded-action-J9umcJgI.js.map +1 -0
  357. package/dist/core/web/public/next/assets/guarded-runners-Da5yA9Im.js +2 -0
  358. package/dist/core/web/public/next/assets/guarded-runners-Da5yA9Im.js.map +1 -0
  359. package/dist/core/web/public/next/assets/health-queries-D3HgrdU_.js +2 -0
  360. package/dist/core/web/public/next/assets/health-queries-D3HgrdU_.js.map +1 -0
  361. package/dist/core/web/public/next/assets/icons-C3G-y5j2.js +2 -0
  362. package/dist/core/web/public/next/assets/icons-C3G-y5j2.js.map +1 -0
  363. package/dist/core/web/public/next/assets/index-BC5Uslm5.js +11 -0
  364. package/dist/core/web/public/next/assets/index-BC5Uslm5.js.map +1 -0
  365. package/dist/core/web/public/next/assets/jev-queries-D6JNU-s6.js +2 -0
  366. package/dist/core/web/public/next/assets/jev-queries-D6JNU-s6.js.map +1 -0
  367. package/dist/core/web/public/next/assets/ladder-queries-BnYWjJoi.js +2 -0
  368. package/dist/core/web/public/next/assets/ladder-queries-BnYWjJoi.js.map +1 -0
  369. package/dist/core/web/public/next/assets/leader-focus-C6LVWgYI.js +2 -0
  370. package/dist/core/web/public/next/assets/leader-focus-C6LVWgYI.js.map +1 -0
  371. package/dist/core/web/public/next/assets/live-model-BPyZCTr1.js +2 -0
  372. package/dist/core/web/public/next/assets/live-model-BPyZCTr1.js.map +1 -0
  373. package/dist/core/web/public/next/assets/mobile-actions-avKNGddD.js +2 -0
  374. package/dist/core/web/public/next/assets/mobile-actions-avKNGddD.js.map +1 -0
  375. package/dist/core/web/public/next/assets/mobile-toast-BqSzGmw1.js +2 -0
  376. package/dist/core/web/public/next/assets/mobile-toast-BqSzGmw1.js.map +1 -0
  377. package/dist/core/web/public/next/assets/multimodel-flows-DOHsEKUG.js +7 -0
  378. package/dist/core/web/public/next/assets/multimodel-flows-DOHsEKUG.js.map +1 -0
  379. package/dist/core/web/public/next/assets/multimodel-queries-xmBBUT6n.js +2 -0
  380. package/dist/core/web/public/next/assets/multimodel-queries-xmBBUT6n.js.map +1 -0
  381. package/dist/core/web/public/next/assets/mutations-CdLi0erM.js +2 -0
  382. package/dist/core/web/public/next/assets/mutations-CdLi0erM.js.map +1 -0
  383. package/dist/core/web/public/next/assets/nav-CUXtg-Iw.js +2 -0
  384. package/dist/core/web/public/next/assets/nav-CUXtg-Iw.js.map +1 -0
  385. package/dist/core/web/public/next/assets/needs-you-actions-B2tjWO-0.js +2 -0
  386. package/dist/core/web/public/next/assets/needs-you-actions-B2tjWO-0.js.map +1 -0
  387. package/dist/core/web/public/next/assets/needs-you-model-DL9EEd2L.js +2 -0
  388. package/dist/core/web/public/next/assets/needs-you-model-DL9EEd2L.js.map +1 -0
  389. package/dist/core/web/public/next/assets/open-terminal-BfbxGoYQ.js +2 -0
  390. package/dist/core/web/public/next/assets/open-terminal-BfbxGoYQ.js.map +1 -0
  391. package/dist/core/web/public/next/assets/open-terminal-request-BT1UE0fz.js +2 -0
  392. package/dist/core/web/public/next/assets/open-terminal-request-BT1UE0fz.js.map +1 -0
  393. package/dist/core/web/public/next/assets/overnight-queries-cjjogTzn.js +2 -0
  394. package/dist/core/web/public/next/assets/overnight-queries-cjjogTzn.js.map +1 -0
  395. package/dist/core/web/public/next/assets/palette-handoff-XL2WWc9I.js +2 -0
  396. package/dist/core/web/public/next/assets/palette-handoff-XL2WWc9I.js.map +1 -0
  397. package/dist/core/web/public/next/assets/panes-5GU8cuI9.js +3 -0
  398. package/dist/core/web/public/next/assets/panes-5GU8cuI9.js.map +1 -0
  399. package/dist/core/web/public/next/assets/path-display-ZSzKoo8T.js +2 -0
  400. package/dist/core/web/public/next/assets/path-display-ZSzKoo8T.js.map +1 -0
  401. package/dist/core/web/public/next/assets/playbook-composer-D04tqOmU.js +2 -0
  402. package/dist/core/web/public/next/assets/playbook-composer-D04tqOmU.js.map +1 -0
  403. package/dist/core/web/public/next/assets/playbook-focus-DD1VIfkd.js +2 -0
  404. package/dist/core/web/public/next/assets/playbook-focus-DD1VIfkd.js.map +1 -0
  405. package/dist/core/web/public/next/assets/playbooks-queries-X7NGzpIn.js +2 -0
  406. package/dist/core/web/public/next/assets/playbooks-queries-X7NGzpIn.js.map +1 -0
  407. package/dist/core/web/public/next/assets/preloaded-6hKNGuRp.js +2 -0
  408. package/dist/core/web/public/next/assets/preloaded-6hKNGuRp.js.map +1 -0
  409. package/dist/core/web/public/next/assets/primitives-6nAFZkcg.js +1 -0
  410. package/dist/core/web/public/next/assets/pwa-BzXJXtDt.js +2 -0
  411. package/dist/core/web/public/next/assets/pwa-BzXJXtDt.js.map +1 -0
  412. package/dist/core/web/public/next/assets/queries-PgZlvFqO.js +2 -0
  413. package/dist/core/web/public/next/assets/queries-PgZlvFqO.js.map +1 -0
  414. package/dist/core/web/public/next/assets/reasoning-pref-BS0PSZ8d.js +2 -0
  415. package/dist/core/web/public/next/assets/reasoning-pref-BS0PSZ8d.js.map +1 -0
  416. package/dist/core/web/public/next/assets/remote-session-Bu-dtRcS.js +3 -0
  417. package/dist/core/web/public/next/assets/remote-session-Bu-dtRcS.js.map +1 -0
  418. package/dist/core/web/public/next/assets/resolved-store-UYN2k9My.js +2 -0
  419. package/dist/core/web/public/next/assets/resolved-store-UYN2k9My.js.map +1 -0
  420. package/dist/core/web/public/next/assets/resources-queries-XfQ8w9In.js +2 -0
  421. package/dist/core/web/public/next/assets/resources-queries-XfQ8w9In.js.map +1 -0
  422. package/dist/core/web/public/next/assets/reveal-anchor-3ZUTtB8Q.js +2 -0
  423. package/dist/core/web/public/next/assets/reveal-anchor-3ZUTtB8Q.js.map +1 -0
  424. package/dist/core/web/public/next/assets/sheet-DP8ByDWU.js +2 -0
  425. package/dist/core/web/public/next/assets/sheet-DP8ByDWU.js.map +1 -0
  426. package/dist/core/web/public/next/assets/slots-DWlj_c7i.js +3 -0
  427. package/dist/core/web/public/next/assets/slots-DWlj_c7i.js.map +1 -0
  428. package/dist/core/web/public/next/assets/sources-queries-Cjk1rpDU.js +4 -0
  429. package/dist/core/web/public/next/assets/sources-queries-Cjk1rpDU.js.map +1 -0
  430. package/dist/core/web/public/next/assets/sse-Z3U8XhDI.js +2 -0
  431. package/dist/core/web/public/next/assets/sse-Z3U8XhDI.js.map +1 -0
  432. package/dist/core/web/public/next/assets/surface-data-hufdOfpz.js +2 -0
  433. package/dist/core/web/public/next/assets/surface-data-hufdOfpz.js.map +1 -0
  434. package/dist/core/web/public/next/assets/surface-prefetch-CFtP8imB.js +2 -0
  435. package/dist/core/web/public/next/assets/surface-prefetch-CFtP8imB.js.map +1 -0
  436. package/dist/core/web/public/next/assets/terminal-client-CCSvMeEv.js +2 -0
  437. package/dist/core/web/public/next/assets/terminal-client-CCSvMeEv.js.map +1 -0
  438. package/dist/core/web/public/next/assets/terminal-icons-Dx6neM-J.js +2 -0
  439. package/dist/core/web/public/next/assets/terminal-icons-Dx6neM-J.js.map +1 -0
  440. package/dist/core/web/public/next/assets/terminal-view-BSieiQvi.js +6 -0
  441. package/dist/core/web/public/next/assets/terminal-view-BSieiQvi.js.map +1 -0
  442. package/dist/core/web/public/next/assets/thread-data-Cd2DZffn.js +2 -0
  443. package/dist/core/web/public/next/assets/thread-data-Cd2DZffn.js.map +1 -0
  444. package/dist/core/web/public/next/assets/ui-parts-wvov2ktB.js +2 -0
  445. package/dist/core/web/public/next/assets/ui-parts-wvov2ktB.js.map +1 -0
  446. package/dist/core/web/public/next/assets/usage-queries-nZjJ1aky.js +2 -0
  447. package/dist/core/web/public/next/assets/usage-queries-nZjJ1aky.js.map +1 -0
  448. package/dist/core/web/public/next/assets/use-chat-activity-_tBmEPPN.js +2 -0
  449. package/dist/core/web/public/next/assets/use-chat-activity-_tBmEPPN.js.map +1 -0
  450. package/dist/core/web/public/next/assets/use-guarded-action-DKKjhPKG.js +2 -0
  451. package/dist/core/web/public/next/assets/use-guarded-action-DKKjhPKG.js.map +1 -0
  452. package/dist/core/web/public/next/assets/use-ticker-w1c3SOqK.js +2 -0
  453. package/dist/core/web/public/next/assets/use-ticker-w1c3SOqK.js.map +1 -0
  454. package/dist/core/web/public/next/assets/use-token-gate-h5QAERLT.js +2 -0
  455. package/dist/core/web/public/next/assets/use-token-gate-h5QAERLT.js.map +1 -0
  456. package/dist/core/web/public/next/assets/useAutoSeat-Dpbn0XUv.js +2 -0
  457. package/dist/core/web/public/next/assets/useAutoSeat-Dpbn0XUv.js.map +1 -0
  458. package/dist/core/web/public/next/assets/useOnboarding-VoV1LcuJ.js +2 -0
  459. package/dist/core/web/public/next/assets/useOnboarding-VoV1LcuJ.js.map +1 -0
  460. package/dist/core/web/public/next/assets/useSeatHealth-DuSaKdIs.js +2 -0
  461. package/dist/core/web/public/next/assets/useSeatHealth-DuSaKdIs.js.map +1 -0
  462. package/dist/core/web/public/next/assets/useSeatsRefresh-DFaR1jSz.js +2 -0
  463. package/dist/core/web/public/next/assets/useSeatsRefresh-DFaR1jSz.js.map +1 -0
  464. package/dist/core/web/public/next/assets/useVerseSession-BOsgJzT5.js +2 -0
  465. package/dist/core/web/public/next/assets/useVerseSession-BOsgJzT5.js.map +1 -0
  466. package/dist/core/web/public/next/assets/useVerseTranscript-BN_fMz6x.js +2 -0
  467. package/dist/core/web/public/next/assets/useVerseTranscript-BN_fMz6x.js.map +1 -0
  468. package/dist/core/web/public/next/assets/verse-bootstrap-query-B3vFD9XK.js +2 -0
  469. package/dist/core/web/public/next/assets/verse-bootstrap-query-B3vFD9XK.js.map +1 -0
  470. package/dist/core/web/public/next/assets/verse-icons-vSkflmRB.js +2 -0
  471. package/dist/core/web/public/next/assets/verse-icons-vSkflmRB.js.map +1 -0
  472. package/dist/core/web/public/next/assets/warmup-D9MjYs5S.js +3 -0
  473. package/dist/core/web/public/next/assets/warmup-D9MjYs5S.js.map +1 -0
  474. package/dist/core/web/public/next/assets/wiki-focus-De8-E48Z.js +2 -0
  475. package/dist/core/web/public/next/assets/wiki-focus-De8-E48Z.js.map +1 -0
  476. package/dist/core/web/public/next/index.html +1 -1
  477. package/dist/release-dependency-inventory.json +1 -1
  478. package/package.json +1 -1
  479. package/dist/core/web/public/next/assets/ActionMenu-CebJFKYy.js +0 -2
  480. package/dist/core/web/public/next/assets/ActionMenu-CebJFKYy.js.map +0 -1
  481. package/dist/core/web/public/next/assets/Advanced-Dr9aVbXV.js +0 -2
  482. package/dist/core/web/public/next/assets/Advanced-Dr9aVbXV.js.map +0 -1
  483. package/dist/core/web/public/next/assets/AgentDetailScreen-DCVf81Vo.js +0 -2
  484. package/dist/core/web/public/next/assets/AgentDetailScreen-DCVf81Vo.js.map +0 -1
  485. package/dist/core/web/public/next/assets/AgentToolsSheet-C3SbvEiV.js +0 -2
  486. package/dist/core/web/public/next/assets/AgentToolsSheet-C3SbvEiV.js.map +0 -1
  487. package/dist/core/web/public/next/assets/AgentToolsStrip-CZNxj_Iv.js +0 -2
  488. package/dist/core/web/public/next/assets/AgentToolsStrip-CZNxj_Iv.js.map +0 -1
  489. package/dist/core/web/public/next/assets/AgentsScreen-zLj4gzPR.js +0 -2
  490. package/dist/core/web/public/next/assets/AgentsScreen-zLj4gzPR.js.map +0 -1
  491. package/dist/core/web/public/next/assets/AgentsSection-CIo_nRmi.js +0 -3
  492. package/dist/core/web/public/next/assets/AgentsSection-CIo_nRmi.js.map +0 -1
  493. package/dist/core/web/public/next/assets/App-CPKNuUdC.js +0 -8
  494. package/dist/core/web/public/next/assets/App-CPKNuUdC.js.map +0 -1
  495. package/dist/core/web/public/next/assets/AppsSection-D2F2CM-E.js +0 -2
  496. package/dist/core/web/public/next/assets/AppsSection-D2F2CM-E.js.map +0 -1
  497. package/dist/core/web/public/next/assets/AreaTrend-DiZu8bjc.js +0 -2
  498. package/dist/core/web/public/next/assets/AreaTrend-DiZu8bjc.js.map +0 -1
  499. package/dist/core/web/public/next/assets/AutomationsSection-B4rBNUyo.js +0 -2
  500. package/dist/core/web/public/next/assets/AutomationsSection-B4rBNUyo.js.map +0 -1
  501. package/dist/core/web/public/next/assets/AutonomyOffState-DEznxI-Q.js +0 -3
  502. package/dist/core/web/public/next/assets/AutonomyOffState-DEznxI-Q.js.map +0 -1
  503. package/dist/core/web/public/next/assets/AutonomySection-Dq5n3gs7.js +0 -2
  504. package/dist/core/web/public/next/assets/AutonomySection-Dq5n3gs7.js.map +0 -1
  505. package/dist/core/web/public/next/assets/AutonomyStatus-Uydy6-pZ.js +0 -2
  506. package/dist/core/web/public/next/assets/AutonomyStatus-Uydy6-pZ.js.map +0 -1
  507. package/dist/core/web/public/next/assets/BranchBar-BzUmUM_j.js +0 -2
  508. package/dist/core/web/public/next/assets/BranchBar-BzUmUM_j.js.map +0 -1
  509. package/dist/core/web/public/next/assets/BrowserPanel-C_VI6Awi.js +0 -7
  510. package/dist/core/web/public/next/assets/BrowserPanel-C_VI6Awi.js.map +0 -1
  511. package/dist/core/web/public/next/assets/BudgetControl-B23rNAuC.js +0 -2
  512. package/dist/core/web/public/next/assets/BudgetControl-B23rNAuC.js.map +0 -1
  513. package/dist/core/web/public/next/assets/Button-DJY_Pu5B.js +0 -2
  514. package/dist/core/web/public/next/assets/Button-DJY_Pu5B.js.map +0 -1
  515. package/dist/core/web/public/next/assets/CapacityStrip-B5Yj2PhZ.js +0 -2
  516. package/dist/core/web/public/next/assets/CapacityStrip-B5Yj2PhZ.js.map +0 -1
  517. package/dist/core/web/public/next/assets/ChangesPaneHost-LsUonc7P.js +0 -16
  518. package/dist/core/web/public/next/assets/ChangesPaneHost-LsUonc7P.js.map +0 -1
  519. package/dist/core/web/public/next/assets/ChartFrame-CakjKkPx.js +0 -2
  520. package/dist/core/web/public/next/assets/ChartFrame-CakjKkPx.js.map +0 -1
  521. package/dist/core/web/public/next/assets/ChatPanes-DgKskpXb.js +0 -2
  522. package/dist/core/web/public/next/assets/ChatPanes-DgKskpXb.js.map +0 -1
  523. package/dist/core/web/public/next/assets/ChatSection-DXpzV1NW.js +0 -3
  524. package/dist/core/web/public/next/assets/ChatSection-DXpzV1NW.js.map +0 -1
  525. package/dist/core/web/public/next/assets/ChecksPanel-BeCJVOJC.js +0 -5
  526. package/dist/core/web/public/next/assets/ChecksPanel-BeCJVOJC.js.map +0 -1
  527. package/dist/core/web/public/next/assets/CloudBudgetForm-4SWIGJLs.js +0 -2
  528. package/dist/core/web/public/next/assets/CloudBudgetForm-4SWIGJLs.js.map +0 -1
  529. package/dist/core/web/public/next/assets/CommandPalette-B4QaFGY5.js +0 -3
  530. package/dist/core/web/public/next/assets/CommandPalette-B4QaFGY5.js.map +0 -1
  531. package/dist/core/web/public/next/assets/CommandSection-8TFjYitt.js +0 -3
  532. package/dist/core/web/public/next/assets/CommandSection-8TFjYitt.js.map +0 -1
  533. package/dist/core/web/public/next/assets/CommandWorkflowForm-B2ooVjof.js +0 -9
  534. package/dist/core/web/public/next/assets/CommandWorkflowForm-B2ooVjof.js.map +0 -1
  535. package/dist/core/web/public/next/assets/CommandWorkflowPicker-C09vJiUG.js +0 -3
  536. package/dist/core/web/public/next/assets/CommandWorkflowPicker-C09vJiUG.js.map +0 -1
  537. package/dist/core/web/public/next/assets/CompareDialog-CaopnGI0.js +0 -4
  538. package/dist/core/web/public/next/assets/CompareDialog-CaopnGI0.js.map +0 -1
  539. package/dist/core/web/public/next/assets/ComputerControl-BflC6wd1.js +0 -2
  540. package/dist/core/web/public/next/assets/ComputerControl-BflC6wd1.js.map +0 -1
  541. package/dist/core/web/public/next/assets/ConfirmDialog-CTeMFavv.js +0 -2
  542. package/dist/core/web/public/next/assets/ConfirmDialog-CTeMFavv.js.map +0 -1
  543. package/dist/core/web/public/next/assets/DeleteChatDialog-B2bUTuZ9.js +0 -2
  544. package/dist/core/web/public/next/assets/DeleteChatDialog-B2bUTuZ9.js.map +0 -1
  545. package/dist/core/web/public/next/assets/DevinStopDialog-DPP34cna.js +0 -2
  546. package/dist/core/web/public/next/assets/DevinStopDialog-DPP34cna.js.map +0 -1
  547. package/dist/core/web/public/next/assets/Dialog-r4j4R4b6.js +0 -2
  548. package/dist/core/web/public/next/assets/Dialog-r4j4R4b6.js.map +0 -1
  549. package/dist/core/web/public/next/assets/DiffPane-CKnpzqaU.js +0 -2
  550. package/dist/core/web/public/next/assets/DiffPane-CKnpzqaU.js.map +0 -1
  551. package/dist/core/web/public/next/assets/DiffViewer-BzQ7245p.js +0 -2
  552. package/dist/core/web/public/next/assets/DiffViewer-BzQ7245p.js.map +0 -1
  553. package/dist/core/web/public/next/assets/DockHost-BCZtC_lm.js +0 -2
  554. package/dist/core/web/public/next/assets/DockHost-BCZtC_lm.js.map +0 -1
  555. package/dist/core/web/public/next/assets/EmptyState-Cwpga8L9.js +0 -2
  556. package/dist/core/web/public/next/assets/EmptyState-Cwpga8L9.js.map +0 -1
  557. package/dist/core/web/public/next/assets/Epistemic-BBwXv-C1.js +0 -2
  558. package/dist/core/web/public/next/assets/Epistemic-BBwXv-C1.js.map +0 -1
  559. package/dist/core/web/public/next/assets/EvidenceTimeline-hAENJQCa.js +0 -2
  560. package/dist/core/web/public/next/assets/EvidenceTimeline-hAENJQCa.js.map +0 -1
  561. package/dist/core/web/public/next/assets/FilesPane-CrPN5zlx.js +0 -2
  562. package/dist/core/web/public/next/assets/FilesPane-CrPN5zlx.js.map +0 -1
  563. package/dist/core/web/public/next/assets/FleetScreen-Cz9HQ-st.js +0 -2
  564. package/dist/core/web/public/next/assets/FleetScreen-Cz9HQ-st.js.map +0 -1
  565. package/dist/core/web/public/next/assets/FleetSection-CmZKQ1rr.js +0 -5
  566. package/dist/core/web/public/next/assets/FleetSection-CmZKQ1rr.js.map +0 -1
  567. package/dist/core/web/public/next/assets/Funnel-Cfg55EZp.js +0 -2
  568. package/dist/core/web/public/next/assets/Funnel-Cfg55EZp.js.map +0 -1
  569. package/dist/core/web/public/next/assets/GearTray-D-Mhc8TJ.js +0 -2
  570. package/dist/core/web/public/next/assets/GearTray-D-Mhc8TJ.js.map +0 -1
  571. package/dist/core/web/public/next/assets/GitDialogs-e-7RQEGv.js +0 -2
  572. package/dist/core/web/public/next/assets/GitDialogs-e-7RQEGv.js.map +0 -1
  573. package/dist/core/web/public/next/assets/GrowthSection-DsIrdTDd.js +0 -3
  574. package/dist/core/web/public/next/assets/GrowthSection-DsIrdTDd.js.map +0 -1
  575. package/dist/core/web/public/next/assets/HandoffDialog-1MB2fmT1.js +0 -2
  576. package/dist/core/web/public/next/assets/HandoffDialog-1MB2fmT1.js.map +0 -1
  577. package/dist/core/web/public/next/assets/HomeBody-n_t3A58_.js +0 -3
  578. package/dist/core/web/public/next/assets/HomeBody-n_t3A58_.js.map +0 -1
  579. package/dist/core/web/public/next/assets/HomeSeats-DA66aOWC.js +0 -2
  580. package/dist/core/web/public/next/assets/HomeSeats-DA66aOWC.js.map +0 -1
  581. package/dist/core/web/public/next/assets/Input-Bt6fp051.js +0 -2
  582. package/dist/core/web/public/next/assets/Input-Bt6fp051.js.map +0 -1
  583. package/dist/core/web/public/next/assets/LaunchDialog-BCd7XqCv.js +0 -9
  584. package/dist/core/web/public/next/assets/LaunchDialog-BCd7XqCv.js.map +0 -1
  585. package/dist/core/web/public/next/assets/LeaderCard-DFAFcyfZ.js +0 -2
  586. package/dist/core/web/public/next/assets/LeaderCard-DFAFcyfZ.js.map +0 -1
  587. package/dist/core/web/public/next/assets/LeaderConversation-LSenfZzT.js +0 -3
  588. package/dist/core/web/public/next/assets/LeaderConversation-LSenfZzT.js.map +0 -1
  589. package/dist/core/web/public/next/assets/LeaderScreen-B2UxRWUm.js +0 -2
  590. package/dist/core/web/public/next/assets/LeaderScreen-B2UxRWUm.js.map +0 -1
  591. package/dist/core/web/public/next/assets/LessonsPanel-D86ZT0we.js +0 -2
  592. package/dist/core/web/public/next/assets/LessonsPanel-D86ZT0we.js.map +0 -1
  593. package/dist/core/web/public/next/assets/LiveTimer-AtG5hPwV.js +0 -2
  594. package/dist/core/web/public/next/assets/LiveTimer-AtG5hPwV.js.map +0 -1
  595. package/dist/core/web/public/next/assets/LocalSeatBadge-XfGRZCA3.js +0 -2
  596. package/dist/core/web/public/next/assets/LocalSeatBadge-XfGRZCA3.js.map +0 -1
  597. package/dist/core/web/public/next/assets/MatrixHeatmap-PSnyMJ2h.js +0 -2
  598. package/dist/core/web/public/next/assets/MatrixHeatmap-PSnyMJ2h.js.map +0 -1
  599. package/dist/core/web/public/next/assets/McpSection-BG2FSkgH.js +0 -2
  600. package/dist/core/web/public/next/assets/McpSection-BG2FSkgH.js.map +0 -1
  601. package/dist/core/web/public/next/assets/MessageMarkdown-CQEqoMvf.js +0 -3
  602. package/dist/core/web/public/next/assets/MessageMarkdown-CQEqoMvf.js.map +0 -1
  603. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-DU-VLDhb.js +0 -72
  604. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-DU-VLDhb.js.map +0 -1
  605. package/dist/core/web/public/next/assets/Meter-BfaE-BjY.js +0 -2
  606. package/dist/core/web/public/next/assets/Meter-BfaE-BjY.js.map +0 -1
  607. package/dist/core/web/public/next/assets/MicButton-BbGB7y_9.js +0 -2
  608. package/dist/core/web/public/next/assets/MicButton-BbGB7y_9.js.map +0 -1
  609. package/dist/core/web/public/next/assets/MindSection-CX0VaHo1.js +0 -3
  610. package/dist/core/web/public/next/assets/MindSection-CX0VaHo1.js.map +0 -1
  611. package/dist/core/web/public/next/assets/MobileComposer-CFeLWUCz.js +0 -2
  612. package/dist/core/web/public/next/assets/MobileComposer-CFeLWUCz.js.map +0 -1
  613. package/dist/core/web/public/next/assets/MobileGuardSheet-cGW9RCTr.js +0 -2
  614. package/dist/core/web/public/next/assets/MobileGuardSheet-cGW9RCTr.js.map +0 -1
  615. package/dist/core/web/public/next/assets/MobileRuntime-BWTZ_QLr.js +0 -3
  616. package/dist/core/web/public/next/assets/MobileRuntime-BWTZ_QLr.js.map +0 -1
  617. package/dist/core/web/public/next/assets/MoreScreen-BcHZhVrR.js +0 -2
  618. package/dist/core/web/public/next/assets/MoreScreen-BcHZhVrR.js.map +0 -1
  619. package/dist/core/web/public/next/assets/MultiModelBar-COxIRv7m.js +0 -7
  620. package/dist/core/web/public/next/assets/MultiModelBar-COxIRv7m.js.map +0 -1
  621. package/dist/core/web/public/next/assets/MutationTokenDialog-Dnf_rcnc.js +0 -2
  622. package/dist/core/web/public/next/assets/MutationTokenDialog-Dnf_rcnc.js.map +0 -1
  623. package/dist/core/web/public/next/assets/NeedsYouDrawer-COrUlnd0.js +0 -3
  624. package/dist/core/web/public/next/assets/NeedsYouDrawer-COrUlnd0.js.map +0 -1
  625. package/dist/core/web/public/next/assets/NeedsYouList-AXzOe4EL.js +0 -2
  626. package/dist/core/web/public/next/assets/NeedsYouList-AXzOe4EL.js.map +0 -1
  627. package/dist/core/web/public/next/assets/NeedsYouScreen-HSXybHgd.js +0 -2
  628. package/dist/core/web/public/next/assets/NeedsYouScreen-HSXybHgd.js.map +0 -1
  629. package/dist/core/web/public/next/assets/NewAgentScreen-BI849ZsG.js +0 -2
  630. package/dist/core/web/public/next/assets/NewAgentScreen-BI849ZsG.js.map +0 -1
  631. package/dist/core/web/public/next/assets/NewChatDialog-BHoCnP6Q.js +0 -4
  632. package/dist/core/web/public/next/assets/NewChatDialog-BHoCnP6Q.js.map +0 -1
  633. package/dist/core/web/public/next/assets/OnboardingFlow-BVljU2uy.js +0 -3
  634. package/dist/core/web/public/next/assets/OnboardingFlow-BVljU2uy.js.map +0 -1
  635. package/dist/core/web/public/next/assets/OnboardingGate-DlI4L7Ki.js +0 -3
  636. package/dist/core/web/public/next/assets/OnboardingGate-DlI4L7Ki.js.map +0 -1
  637. package/dist/core/web/public/next/assets/PlaybooksSection-hhNpXnsR.js +0 -9
  638. package/dist/core/web/public/next/assets/PlaybooksSection-hhNpXnsR.js.map +0 -1
  639. package/dist/core/web/public/next/assets/PreviewPane-BbXr63u2.js +0 -2
  640. package/dist/core/web/public/next/assets/PreviewPane-BbXr63u2.js.map +0 -1
  641. package/dist/core/web/public/next/assets/ProviderLogo-BliSWEMw.js +0 -2
  642. package/dist/core/web/public/next/assets/ProviderLogo-BliSWEMw.js.map +0 -1
  643. package/dist/core/web/public/next/assets/RailStatus-SnrVxLnp.js +0 -2
  644. package/dist/core/web/public/next/assets/RailStatus-SnrVxLnp.js.map +0 -1
  645. package/dist/core/web/public/next/assets/ReasoningPane-C04_bOAi.js +0 -2
  646. package/dist/core/web/public/next/assets/ReasoningPane-C04_bOAi.js.map +0 -1
  647. package/dist/core/web/public/next/assets/ReasoningSheet-BvNFwtuX.js +0 -2
  648. package/dist/core/web/public/next/assets/ReasoningSheet-BvNFwtuX.js.map +0 -1
  649. package/dist/core/web/public/next/assets/RefreshIndicator-BNptNJiV.js +0 -2
  650. package/dist/core/web/public/next/assets/RefreshIndicator-BNptNJiV.js.map +0 -1
  651. package/dist/core/web/public/next/assets/RemoteMobileApp-osaSEvnm.js +0 -2
  652. package/dist/core/web/public/next/assets/RemoteMobileApp-osaSEvnm.js.map +0 -1
  653. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-LO31zjUR.js +0 -7
  654. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-LO31zjUR.js.map +0 -1
  655. package/dist/core/web/public/next/assets/ResourcesChrome-ByZE532G.js +0 -3
  656. package/dist/core/web/public/next/assets/ResourcesChrome-ByZE532G.js.map +0 -1
  657. package/dist/core/web/public/next/assets/ResourcesChrome-p_VCkMZH.css +0 -1
  658. package/dist/core/web/public/next/assets/ResourcesDrawer-BH9uwNE8.js +0 -3
  659. package/dist/core/web/public/next/assets/ResourcesDrawer-BH9uwNE8.js.map +0 -1
  660. package/dist/core/web/public/next/assets/ReviewMenu-B2A_YDPi.js +0 -2
  661. package/dist/core/web/public/next/assets/ReviewMenu-B2A_YDPi.js.map +0 -1
  662. package/dist/core/web/public/next/assets/RouteErrorBoundary-CVabFM97.js +0 -2
  663. package/dist/core/web/public/next/assets/RouteErrorBoundary-CVabFM97.js.map +0 -1
  664. package/dist/core/web/public/next/assets/RunInCloudAction-BpNHE7m8.js +0 -2
  665. package/dist/core/web/public/next/assets/RunInCloudAction-BpNHE7m8.js.map +0 -1
  666. package/dist/core/web/public/next/assets/RunInDevinAction-Bkf5Gb3a.js +0 -2
  667. package/dist/core/web/public/next/assets/RunInDevinAction-Bkf5Gb3a.js.map +0 -1
  668. package/dist/core/web/public/next/assets/SchedulingEvidence-B08-qhhm.js +0 -2
  669. package/dist/core/web/public/next/assets/SchedulingEvidence-B08-qhhm.js.map +0 -1
  670. package/dist/core/web/public/next/assets/ScreenHost-BGSxFyWK.js +0 -3
  671. package/dist/core/web/public/next/assets/ScreenHost-BGSxFyWK.js.map +0 -1
  672. package/dist/core/web/public/next/assets/SeatSelector-B4lRZl0K.js +0 -3
  673. package/dist/core/web/public/next/assets/SeatSelector-B4lRZl0K.js.map +0 -1
  674. package/dist/core/web/public/next/assets/Segmented-Dokzywy8.js +0 -2
  675. package/dist/core/web/public/next/assets/Segmented-Dokzywy8.js.map +0 -1
  676. package/dist/core/web/public/next/assets/Select-tf4lNvWD.js +0 -2
  677. package/dist/core/web/public/next/assets/Select-tf4lNvWD.js.map +0 -1
  678. package/dist/core/web/public/next/assets/SessionGate-Bab2qO29.js +0 -2
  679. package/dist/core/web/public/next/assets/SessionGate-Bab2qO29.js.map +0 -1
  680. package/dist/core/web/public/next/assets/SessionInsightChip-C-fj8h4A.js +0 -2
  681. package/dist/core/web/public/next/assets/SessionInsightChip-C-fj8h4A.js.map +0 -1
  682. package/dist/core/web/public/next/assets/SessionSearch-CqjjwOW2.js +0 -2
  683. package/dist/core/web/public/next/assets/SessionSearch-CqjjwOW2.js.map +0 -1
  684. package/dist/core/web/public/next/assets/SettingsSection-DfOsHzl6.js +0 -2
  685. package/dist/core/web/public/next/assets/SettingsSection-DfOsHzl6.js.map +0 -1
  686. package/dist/core/web/public/next/assets/SetupChecklist-BsxCTcYY.js +0 -2
  687. package/dist/core/web/public/next/assets/SetupChecklist-BsxCTcYY.js.map +0 -1
  688. package/dist/core/web/public/next/assets/ShadowDecisions-B1ZPv7K-.js +0 -3
  689. package/dist/core/web/public/next/assets/ShadowDecisions-B1ZPv7K-.js.map +0 -1
  690. package/dist/core/web/public/next/assets/Sheet-DLlZ00Lu.js +0 -2
  691. package/dist/core/web/public/next/assets/Sheet-DLlZ00Lu.js.map +0 -1
  692. package/dist/core/web/public/next/assets/ShortcutsOverlay-CDwQdpGV.js +0 -2
  693. package/dist/core/web/public/next/assets/ShortcutsOverlay-CDwQdpGV.js.map +0 -1
  694. package/dist/core/web/public/next/assets/Sidebar-H5WNri2S.js +0 -3
  695. package/dist/core/web/public/next/assets/Sidebar-H5WNri2S.js.map +0 -1
  696. package/dist/core/web/public/next/assets/SkipToContent-BjJE6yOo.js +0 -2
  697. package/dist/core/web/public/next/assets/SkipToContent-BjJE6yOo.js.map +0 -1
  698. package/dist/core/web/public/next/assets/Slider-C68TumXj.js +0 -2
  699. package/dist/core/web/public/next/assets/Slider-C68TumXj.js.map +0 -1
  700. package/dist/core/web/public/next/assets/SourcesPane-DHYs4YIg.js +0 -2
  701. package/dist/core/web/public/next/assets/SourcesPane-DHYs4YIg.js.map +0 -1
  702. package/dist/core/web/public/next/assets/SourcesPanel-DFyLfYBO.js +0 -2
  703. package/dist/core/web/public/next/assets/SourcesPanel-DFyLfYBO.js.map +0 -1
  704. package/dist/core/web/public/next/assets/StatTile-CTUuhOLS.js +0 -2
  705. package/dist/core/web/public/next/assets/StatTile-CTUuhOLS.js.map +0 -1
  706. package/dist/core/web/public/next/assets/StatusBadge-DrVbi5dF.js +0 -2
  707. package/dist/core/web/public/next/assets/StatusBadge-DrVbi5dF.js.map +0 -1
  708. package/dist/core/web/public/next/assets/StepBand-CXDpnu2R.js +0 -2
  709. package/dist/core/web/public/next/assets/StepBand-CXDpnu2R.js.map +0 -1
  710. package/dist/core/web/public/next/assets/Surface-DCL7uORg.js +0 -2
  711. package/dist/core/web/public/next/assets/Surface-DCL7uORg.js.map +0 -1
  712. package/dist/core/web/public/next/assets/Swimlane-BAEjfoVU.js +0 -2
  713. package/dist/core/web/public/next/assets/Swimlane-BAEjfoVU.js.map +0 -1
  714. package/dist/core/web/public/next/assets/Switch-Z7RmRjWE.js +0 -2
  715. package/dist/core/web/public/next/assets/Switch-Z7RmRjWE.js.map +0 -1
  716. package/dist/core/web/public/next/assets/Tag-Ciht3C94.js +0 -2
  717. package/dist/core/web/public/next/assets/Tag-Ciht3C94.js.map +0 -1
  718. package/dist/core/web/public/next/assets/TerminalPane-BdIyhtzJ.js +0 -26
  719. package/dist/core/web/public/next/assets/TerminalPane-BdIyhtzJ.js.map +0 -1
  720. package/dist/core/web/public/next/assets/TerminalPane-DJKT600N.js +0 -3
  721. package/dist/core/web/public/next/assets/TerminalPane-DJKT600N.js.map +0 -1
  722. package/dist/core/web/public/next/assets/ThinkingBlock-CHRZX_fJ.js +0 -2
  723. package/dist/core/web/public/next/assets/ThinkingBlock-CHRZX_fJ.js.map +0 -1
  724. package/dist/core/web/public/next/assets/UniverseConsoleApp-QSoaY_Fk.js +0 -2
  725. package/dist/core/web/public/next/assets/UniverseConsoleApp-QSoaY_Fk.js.map +0 -1
  726. package/dist/core/web/public/next/assets/UniverseView-ZXAOJ0Rq.js +0 -9
  727. package/dist/core/web/public/next/assets/UniverseView-ZXAOJ0Rq.js.map +0 -1
  728. package/dist/core/web/public/next/assets/UsageSection-BEAa-W_q.js +0 -3
  729. package/dist/core/web/public/next/assets/UsageSection-BEAa-W_q.js.map +0 -1
  730. package/dist/core/web/public/next/assets/UsePlaybookAction-S7Yky_M8.js +0 -2
  731. package/dist/core/web/public/next/assets/UsePlaybookAction-S7Yky_M8.js.map +0 -1
  732. package/dist/core/web/public/next/assets/VerseConsoleApp-Cj6yPJo3.js +0 -3
  733. package/dist/core/web/public/next/assets/VerseConsoleApp-Cj6yPJo3.js.map +0 -1
  734. package/dist/core/web/public/next/assets/VerseConsoleApp-n6qr3lCF.css +0 -1
  735. package/dist/core/web/public/next/assets/VerseMobileApp-BRayqF_2.js +0 -3
  736. package/dist/core/web/public/next/assets/VerseMobileApp-BRayqF_2.js.map +0 -1
  737. package/dist/core/web/public/next/assets/VerseShared-CH8mV5ew.js +0 -2
  738. package/dist/core/web/public/next/assets/VerseShared-CH8mV5ew.js.map +0 -1
  739. package/dist/core/web/public/next/assets/VoiceHud-CO4yGRlr.js +0 -2
  740. package/dist/core/web/public/next/assets/VoiceHud-CO4yGRlr.js.map +0 -1
  741. package/dist/core/web/public/next/assets/VoiceInput-fSLnbGJ4.js +0 -2
  742. package/dist/core/web/public/next/assets/VoiceInput-fSLnbGJ4.js.map +0 -1
  743. package/dist/core/web/public/next/assets/WikiSection-CN-HansV.js +0 -2
  744. package/dist/core/web/public/next/assets/WikiSection-CN-HansV.js.map +0 -1
  745. package/dist/core/web/public/next/assets/Workspace-dufi6DmW.js +0 -6
  746. package/dist/core/web/public/next/assets/Workspace-dufi6DmW.js.map +0 -1
  747. package/dist/core/web/public/next/assets/actions-gBplqbpY.js +0 -2
  748. package/dist/core/web/public/next/assets/actions-gBplqbpY.js.map +0 -1
  749. package/dist/core/web/public/next/assets/agent-tools-client-ClFut2J1.js +0 -2
  750. package/dist/core/web/public/next/assets/agent-tools-client-ClFut2J1.js.map +0 -1
  751. package/dist/core/web/public/next/assets/agents-focus-DjBz83BQ.js +0 -2
  752. package/dist/core/web/public/next/assets/agents-focus-DjBz83BQ.js.map +0 -1
  753. package/dist/core/web/public/next/assets/app-version-B0FcXqqB.js +0 -2
  754. package/dist/core/web/public/next/assets/app-version-B0FcXqqB.js.map +0 -1
  755. package/dist/core/web/public/next/assets/apps-model-C-SdWY0N.js +0 -2
  756. package/dist/core/web/public/next/assets/apps-model-C-SdWY0N.js.map +0 -1
  757. package/dist/core/web/public/next/assets/ask-seat-DhGxiGSd.js +0 -2
  758. package/dist/core/web/public/next/assets/ask-seat-DhGxiGSd.js.map +0 -1
  759. package/dist/core/web/public/next/assets/authority-model-CoXAS-Z6.js +0 -2
  760. package/dist/core/web/public/next/assets/authority-model-CoXAS-Z6.js.map +0 -1
  761. package/dist/core/web/public/next/assets/automations-focus-CeneF7lP.js +0 -2
  762. package/dist/core/web/public/next/assets/automations-focus-CeneF7lP.js.map +0 -1
  763. package/dist/core/web/public/next/assets/budget-queries-DCZevH2S.js +0 -2
  764. package/dist/core/web/public/next/assets/budget-queries-DCZevH2S.js.map +0 -1
  765. package/dist/core/web/public/next/assets/capacity-strip-model-Wna9o0dS.js +0 -2
  766. package/dist/core/web/public/next/assets/capacity-strip-model-Wna9o0dS.js.map +0 -1
  767. package/dist/core/web/public/next/assets/charts-CzqC55eL.js +0 -2
  768. package/dist/core/web/public/next/assets/charts-CzqC55eL.js.map +0 -1
  769. package/dist/core/web/public/next/assets/chat-pane-data-BBA55Pw-.js +0 -2
  770. package/dist/core/web/public/next/assets/chat-pane-data-BBA55Pw-.js.map +0 -1
  771. package/dist/core/web/public/next/assets/checkpoint-queries-gP6Vh70H.js +0 -2
  772. package/dist/core/web/public/next/assets/checkpoint-queries-gP6Vh70H.js.map +0 -1
  773. package/dist/core/web/public/next/assets/cloud-queries-Bsqo7wye.js +0 -2
  774. package/dist/core/web/public/next/assets/cloud-queries-Bsqo7wye.js.map +0 -1
  775. package/dist/core/web/public/next/assets/command-catalog-Dnx-iMLX.js +0 -2
  776. package/dist/core/web/public/next/assets/command-catalog-Dnx-iMLX.js.map +0 -1
  777. package/dist/core/web/public/next/assets/composer-queries-DHGJlnFJ.js +0 -2
  778. package/dist/core/web/public/next/assets/composer-queries-DHGJlnFJ.js.map +0 -1
  779. package/dist/core/web/public/next/assets/connectivity-BViMMNcD.js +0 -2
  780. package/dist/core/web/public/next/assets/connectivity-BViMMNcD.js.map +0 -1
  781. package/dist/core/web/public/next/assets/context-queries-Bsl-w0q-.js +0 -2
  782. package/dist/core/web/public/next/assets/context-queries-Bsl-w0q-.js.map +0 -1
  783. package/dist/core/web/public/next/assets/control-queries-CUNa6TAx.js +0 -2
  784. package/dist/core/web/public/next/assets/control-queries-CUNa6TAx.js.map +0 -1
  785. package/dist/core/web/public/next/assets/copy-setup-C2goNcTZ.js +0 -2
  786. package/dist/core/web/public/next/assets/copy-setup-C2goNcTZ.js.map +0 -1
  787. package/dist/core/web/public/next/assets/deep-link-Dg_zaqAl.js +0 -2
  788. package/dist/core/web/public/next/assets/deep-link-Dg_zaqAl.js.map +0 -1
  789. package/dist/core/web/public/next/assets/device-permissions-CEXY0Vor.js +0 -2
  790. package/dist/core/web/public/next/assets/device-permissions-CEXY0Vor.js.map +0 -1
  791. package/dist/core/web/public/next/assets/devin-queries-Cu_YYhw2.js +0 -2
  792. package/dist/core/web/public/next/assets/devin-queries-Cu_YYhw2.js.map +0 -1
  793. package/dist/core/web/public/next/assets/dock-icons-DGZoDN6N.js +0 -2
  794. package/dist/core/web/public/next/assets/dock-icons-DGZoDN6N.js.map +0 -1
  795. package/dist/core/web/public/next/assets/dock-panes-BgSO9q_f.js +0 -2
  796. package/dist/core/web/public/next/assets/dock-panes-BgSO9q_f.js.map +0 -1
  797. package/dist/core/web/public/next/assets/fleet-control-queries-clsJWanE.js +0 -2
  798. package/dist/core/web/public/next/assets/fleet-control-queries-clsJWanE.js.map +0 -1
  799. package/dist/core/web/public/next/assets/fleet-queries-DX1AwHEt.js +0 -2
  800. package/dist/core/web/public/next/assets/fleet-queries-DX1AwHEt.js.map +0 -1
  801. package/dist/core/web/public/next/assets/fleet-state-EgNiSDxu.js +0 -3
  802. package/dist/core/web/public/next/assets/fleet-state-EgNiSDxu.js.map +0 -1
  803. package/dist/core/web/public/next/assets/focus-trap-B1vuEhZX.js +0 -2
  804. package/dist/core/web/public/next/assets/focus-trap-B1vuEhZX.js.map +0 -1
  805. package/dist/core/web/public/next/assets/git-model-Bu59fz1m.js +0 -5
  806. package/dist/core/web/public/next/assets/git-model-Bu59fz1m.js.map +0 -1
  807. package/dist/core/web/public/next/assets/global-BJ_kVFpD.js +0 -3
  808. package/dist/core/web/public/next/assets/global-BJ_kVFpD.js.map +0 -1
  809. package/dist/core/web/public/next/assets/guarded-action-CzvG7Qgc.js +0 -3
  810. package/dist/core/web/public/next/assets/guarded-action-CzvG7Qgc.js.map +0 -1
  811. package/dist/core/web/public/next/assets/guarded-runners-BPM0KdoQ.js +0 -2
  812. package/dist/core/web/public/next/assets/guarded-runners-BPM0KdoQ.js.map +0 -1
  813. package/dist/core/web/public/next/assets/health-queries-CMxSsJKS.js +0 -2
  814. package/dist/core/web/public/next/assets/health-queries-CMxSsJKS.js.map +0 -1
  815. package/dist/core/web/public/next/assets/icons-MYfI6vZr.js +0 -2
  816. package/dist/core/web/public/next/assets/icons-MYfI6vZr.js.map +0 -1
  817. package/dist/core/web/public/next/assets/index-DOAOxiKl.js +0 -11
  818. package/dist/core/web/public/next/assets/index-DOAOxiKl.js.map +0 -1
  819. package/dist/core/web/public/next/assets/jev-queries-CS2A5uWe.js +0 -2
  820. package/dist/core/web/public/next/assets/jev-queries-CS2A5uWe.js.map +0 -1
  821. package/dist/core/web/public/next/assets/ladder-queries-CBoG3heV.js +0 -2
  822. package/dist/core/web/public/next/assets/ladder-queries-CBoG3heV.js.map +0 -1
  823. package/dist/core/web/public/next/assets/leader-focus-DDQlv0TB.js +0 -2
  824. package/dist/core/web/public/next/assets/leader-focus-DDQlv0TB.js.map +0 -1
  825. package/dist/core/web/public/next/assets/live-model-CCjYFk48.js +0 -2
  826. package/dist/core/web/public/next/assets/live-model-CCjYFk48.js.map +0 -1
  827. package/dist/core/web/public/next/assets/mobile-actions-XqB_h7a8.js +0 -2
  828. package/dist/core/web/public/next/assets/mobile-actions-XqB_h7a8.js.map +0 -1
  829. package/dist/core/web/public/next/assets/mobile-toast-eIrghd9o.js +0 -2
  830. package/dist/core/web/public/next/assets/mobile-toast-eIrghd9o.js.map +0 -1
  831. package/dist/core/web/public/next/assets/multimodel-flows-CzI-yHg5.js +0 -7
  832. package/dist/core/web/public/next/assets/multimodel-flows-CzI-yHg5.js.map +0 -1
  833. package/dist/core/web/public/next/assets/multimodel-queries-DxIT9AZY.js +0 -2
  834. package/dist/core/web/public/next/assets/multimodel-queries-DxIT9AZY.js.map +0 -1
  835. package/dist/core/web/public/next/assets/mutations-BlGALvmG.js +0 -2
  836. package/dist/core/web/public/next/assets/mutations-BlGALvmG.js.map +0 -1
  837. package/dist/core/web/public/next/assets/nav-ByibvQW1.js +0 -2
  838. package/dist/core/web/public/next/assets/nav-ByibvQW1.js.map +0 -1
  839. package/dist/core/web/public/next/assets/needs-you-actions-Dp5UxM3X.js +0 -2
  840. package/dist/core/web/public/next/assets/needs-you-actions-Dp5UxM3X.js.map +0 -1
  841. package/dist/core/web/public/next/assets/needs-you-model-DYsqHMqy.js +0 -2
  842. package/dist/core/web/public/next/assets/needs-you-model-DYsqHMqy.js.map +0 -1
  843. package/dist/core/web/public/next/assets/open-terminal-dOVyLFvn.js +0 -2
  844. package/dist/core/web/public/next/assets/open-terminal-dOVyLFvn.js.map +0 -1
  845. package/dist/core/web/public/next/assets/open-terminal-request-BIhvirIl.js +0 -2
  846. package/dist/core/web/public/next/assets/open-terminal-request-BIhvirIl.js.map +0 -1
  847. package/dist/core/web/public/next/assets/overnight-queries-KxqH6BRN.js +0 -2
  848. package/dist/core/web/public/next/assets/overnight-queries-KxqH6BRN.js.map +0 -1
  849. package/dist/core/web/public/next/assets/palette-handoff-69pw9oBv.js +0 -2
  850. package/dist/core/web/public/next/assets/palette-handoff-69pw9oBv.js.map +0 -1
  851. package/dist/core/web/public/next/assets/panes-CHt3427X.js +0 -3
  852. package/dist/core/web/public/next/assets/panes-CHt3427X.js.map +0 -1
  853. package/dist/core/web/public/next/assets/path-display-DuIZF5G3.js +0 -2
  854. package/dist/core/web/public/next/assets/path-display-DuIZF5G3.js.map +0 -1
  855. package/dist/core/web/public/next/assets/playbook-composer-DipWgX7t.js +0 -2
  856. package/dist/core/web/public/next/assets/playbook-composer-DipWgX7t.js.map +0 -1
  857. package/dist/core/web/public/next/assets/playbook-focus-EXJPMBBI.js +0 -2
  858. package/dist/core/web/public/next/assets/playbook-focus-EXJPMBBI.js.map +0 -1
  859. package/dist/core/web/public/next/assets/playbooks-queries-BlpGBpOV.js +0 -2
  860. package/dist/core/web/public/next/assets/playbooks-queries-BlpGBpOV.js.map +0 -1
  861. package/dist/core/web/public/next/assets/preloaded-TmpzuCEi.js +0 -2
  862. package/dist/core/web/public/next/assets/preloaded-TmpzuCEi.js.map +0 -1
  863. package/dist/core/web/public/next/assets/primitives-CDKCUR2v.js +0 -1
  864. package/dist/core/web/public/next/assets/pwa-CTGMm-wR.js +0 -2
  865. package/dist/core/web/public/next/assets/pwa-CTGMm-wR.js.map +0 -1
  866. package/dist/core/web/public/next/assets/queries--mGK10fL.js +0 -2
  867. package/dist/core/web/public/next/assets/queries--mGK10fL.js.map +0 -1
  868. package/dist/core/web/public/next/assets/reasoning-pref-CWGL9MD2.js +0 -2
  869. package/dist/core/web/public/next/assets/reasoning-pref-CWGL9MD2.js.map +0 -1
  870. package/dist/core/web/public/next/assets/remote-session-I4RXlsas.js +0 -3
  871. package/dist/core/web/public/next/assets/remote-session-I4RXlsas.js.map +0 -1
  872. package/dist/core/web/public/next/assets/resolved-store-DwGn9hb_.js +0 -2
  873. package/dist/core/web/public/next/assets/resolved-store-DwGn9hb_.js.map +0 -1
  874. package/dist/core/web/public/next/assets/resources-queries-T6ER_hPN.js +0 -2
  875. package/dist/core/web/public/next/assets/resources-queries-T6ER_hPN.js.map +0 -1
  876. package/dist/core/web/public/next/assets/reveal-anchor-CHtvhrYm.js +0 -2
  877. package/dist/core/web/public/next/assets/reveal-anchor-CHtvhrYm.js.map +0 -1
  878. package/dist/core/web/public/next/assets/sheet-BlzGO1wo.js +0 -2
  879. package/dist/core/web/public/next/assets/sheet-BlzGO1wo.js.map +0 -1
  880. package/dist/core/web/public/next/assets/slots-40edgV7X.js +0 -3
  881. package/dist/core/web/public/next/assets/slots-40edgV7X.js.map +0 -1
  882. package/dist/core/web/public/next/assets/sources-queries-BrM41X16.js +0 -4
  883. package/dist/core/web/public/next/assets/sources-queries-BrM41X16.js.map +0 -1
  884. package/dist/core/web/public/next/assets/sse-CAFwslNC.js +0 -2
  885. package/dist/core/web/public/next/assets/sse-CAFwslNC.js.map +0 -1
  886. package/dist/core/web/public/next/assets/surface-data-D_oFOgkh.js +0 -2
  887. package/dist/core/web/public/next/assets/surface-data-D_oFOgkh.js.map +0 -1
  888. package/dist/core/web/public/next/assets/surface-prefetch-wqfiATYQ.js +0 -2
  889. package/dist/core/web/public/next/assets/surface-prefetch-wqfiATYQ.js.map +0 -1
  890. package/dist/core/web/public/next/assets/terminal-client-iL4DagCN.js +0 -2
  891. package/dist/core/web/public/next/assets/terminal-client-iL4DagCN.js.map +0 -1
  892. package/dist/core/web/public/next/assets/terminal-icons-BakeOpKV.js +0 -2
  893. package/dist/core/web/public/next/assets/terminal-icons-BakeOpKV.js.map +0 -1
  894. package/dist/core/web/public/next/assets/terminal-view-D6AAh08q.js +0 -6
  895. package/dist/core/web/public/next/assets/terminal-view-D6AAh08q.js.map +0 -1
  896. package/dist/core/web/public/next/assets/thread-data-CSDZ514s.js +0 -2
  897. package/dist/core/web/public/next/assets/thread-data-CSDZ514s.js.map +0 -1
  898. package/dist/core/web/public/next/assets/ui-parts-DubQJIoq.js +0 -2
  899. package/dist/core/web/public/next/assets/ui-parts-DubQJIoq.js.map +0 -1
  900. package/dist/core/web/public/next/assets/usage-queries-BONqdout.js +0 -2
  901. package/dist/core/web/public/next/assets/usage-queries-BONqdout.js.map +0 -1
  902. package/dist/core/web/public/next/assets/use-chat-activity-BZjdPPNP.js +0 -2
  903. package/dist/core/web/public/next/assets/use-chat-activity-BZjdPPNP.js.map +0 -1
  904. package/dist/core/web/public/next/assets/use-guarded-action-xJ4rxyVo.js +0 -2
  905. package/dist/core/web/public/next/assets/use-guarded-action-xJ4rxyVo.js.map +0 -1
  906. package/dist/core/web/public/next/assets/use-ticker-Bsu0cMvl.js +0 -2
  907. package/dist/core/web/public/next/assets/use-ticker-Bsu0cMvl.js.map +0 -1
  908. package/dist/core/web/public/next/assets/use-token-gate-E-xzEAu6.js +0 -2
  909. package/dist/core/web/public/next/assets/use-token-gate-E-xzEAu6.js.map +0 -1
  910. package/dist/core/web/public/next/assets/useAutoSeat-CXC9e4vx.js +0 -2
  911. package/dist/core/web/public/next/assets/useAutoSeat-CXC9e4vx.js.map +0 -1
  912. package/dist/core/web/public/next/assets/useOnboarding-Csw_AXrj.js +0 -2
  913. package/dist/core/web/public/next/assets/useOnboarding-Csw_AXrj.js.map +0 -1
  914. package/dist/core/web/public/next/assets/useSeatHealth-B6AXxre9.js +0 -2
  915. package/dist/core/web/public/next/assets/useSeatHealth-B6AXxre9.js.map +0 -1
  916. package/dist/core/web/public/next/assets/useSeatsRefresh-BIAa7Exn.js +0 -2
  917. package/dist/core/web/public/next/assets/useSeatsRefresh-BIAa7Exn.js.map +0 -1
  918. package/dist/core/web/public/next/assets/useVerseSession-BOyvOEDi.js +0 -2
  919. package/dist/core/web/public/next/assets/useVerseSession-BOyvOEDi.js.map +0 -1
  920. package/dist/core/web/public/next/assets/useVerseTranscript-BOhcfdp7.js +0 -2
  921. package/dist/core/web/public/next/assets/useVerseTranscript-BOhcfdp7.js.map +0 -1
  922. package/dist/core/web/public/next/assets/verse-bootstrap-query-D-fU89IT.js +0 -2
  923. package/dist/core/web/public/next/assets/verse-bootstrap-query-D-fU89IT.js.map +0 -1
  924. package/dist/core/web/public/next/assets/verse-icons-UKbUG3gv.js +0 -2
  925. package/dist/core/web/public/next/assets/verse-icons-UKbUG3gv.js.map +0 -1
  926. package/dist/core/web/public/next/assets/warmup-CZ-IBU5L.js +0 -3
  927. package/dist/core/web/public/next/assets/warmup-CZ-IBU5L.js.map +0 -1
  928. package/dist/core/web/public/next/assets/wiki-focus-DhAvbMnX.js +0 -2
  929. package/dist/core/web/public/next/assets/wiki-focus-DhAvbMnX.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{s as t}from"./index-BC5Uslm5.js";import{N as n,S as r,w as i}from"./global-w7KDTTi0.js";import{C as a,d as o,l as s}from"./VerseShared-Bf-XTHCh.js";import{a as c,c as l,d as u,f as d,i as f,m as p,r as m,s as h,t as g}from"./verse-store-DAqqNIyD.js";import{a as _,r as v}from"./use-chat-activity-_tBmEPPN.js";var y=e(t(),1),b=9e4,x=250;function S(e,t){if(n()){let n=Number.isSafeInteger(t)&&t>0?`?after=${t}`:``;return`${a(e,`/events`)}${n}`}let r=Number.isSafeInteger(t)&&t>0?`after=${t}&`:``;return`${a(e,`/events`)}?${r}client=${encodeURIComponent(i())}`}function C(e){return Math.min(1e3*2**e,15e3)}function w(){return globalThis.IS_REACT_ACT_ENVIRONMENT===!0}var T=e=>{let t=!1,n=()=>{t||(t=!0,r!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(r),clearTimeout(i),e())},r=(typeof document>`u`||document.visibilityState!==`hidden`)&&typeof requestAnimationFrame==`function`?requestAnimationFrame(n):null,i=setTimeout(n,r===null?0:x);return()=>{t=!0,r!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(r),clearTimeout(i)}};function E(e){return w()?(e(),null):T(e)}var D=class{sessionId;queue=[];cancel=null;scheduled=!1;constructor(e){this.sessionId=e}push(e){if(this.queue.push(e),this.scheduled)return;this.scheduled=!0;let t=E(()=>this.flush());this.scheduled&&(this.cancel=t)}flush(){if(this.scheduled=!1,this.cancel?.(),this.cancel=null,this.queue.length===0)return;let e=this.queue;this.queue=[],g(this.sessionId,e).settled&&o()}drop(){this.scheduled=!1,this.cancel?.(),this.cancel=null,this.queue=[]}},O=!1,k=0;function A(e){let t=null,n=null,i=0,a=!1,o=!1,s=new D(e),l=()=>{if(a||typeof EventSource>`u`||r().phase!==`authenticated`)return;u(e,i===0?`connecting`:`reconnecting`);let d=O||o?0:c(e).lastSeq,f=new EventSource(S(e,d),{withCredentials:!0}),p=!1;t=f,f.onopen=()=>{p=!0,i=0,o&&=(O=!0,!1),u(e,`open`)};for(let e of v)f.addEventListener(e,e=>{if(t!==f)return;let n=_(e.data);n&&s.push(n)});f.onerror=c=>{if(!(typeof MessageEvent<`u`&&c instanceof MessageEvent)&&(s.flush(),!a)){if(typeof f.readyState==`number`&&f.readyState===k){u(e,`reconnecting`);return}if(f.close(),t===f&&(t=null),u(e,`reconnecting`),r().phase===`authenticated`){if(!p&&d>0&&!o){o=!0,l();return}o=!1,n=setTimeout(()=>{n=null,i+=1,l()},C(i))}}}},d=()=>{n&&clearTimeout(n),n=null,t?.close(),t=null};return l(),{close(){a||(a=!0,d(),s.flush(),s.drop(),u(e,`closed`))},restart(){a||(d(),s.flush(),i=0,l())}}}var j=new Map;function M(e){let t=j.get(e);t&&(j.delete(e),t.idleTimer&&clearTimeout(t.idleTimer),t.stream.close())}function N(){let e=[...j.entries()].filter(([,e])=>e.refs===0).sort((e,t)=>e[1].releasedAt-t[1].releasedAt);for(;e.length>1;)M(e.shift()[0])}function P(e){let t=j.get(e);t?(t.refs+=1,t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=null):(t={stream:A(e),refs:1,idleTimer:null,releasedAt:0},j.set(e,t));let n=t,r=!1;return()=>{r||(r=!0,j.get(e)===n&&(--n.refs,!(n.refs>0)&&(n.releasedAt=Date.now(),n.idleTimer=setTimeout(()=>{j.get(e)===n&&n.refs===0&&M(e)},b),N())))}}function F(){for(let e of[...j.keys()])M(e)}p(e=>{e.kind===`reset`?F():M(e.sessionId)});function I(e,t={}){let n=new AbortController,r=null,i=!1,a=()=>{i||r||(r=P(e))},o=c(e);return t.reload!==!0&&o.loaded&&o.loadError===null?a():(t.reload&&j.get(e)?.stream.restart(),s(e,n.signal).then(t=>{n.signal.aborted||(h(e,t.session,t.events),a())}).catch(t=>{n.signal.aborted||l(e,t instanceof Error?t.message:`Could not load this chat.`)})),()=>{i=!0,n.abort(),r?.(),r=null}}var L=()=>()=>{};function R(e){return(0,y.useCallback)(t=>e?d(e,t):L(),[e])}function z(e,t=0){let n=R(e),r=(0,y.useSyncExternalStore)(n,()=>f(e),()=>f(e)),i=(0,y.useRef)({sessionId:null,reload:t});return(0,y.useEffect)(()=>{let n=i.current;if(i.current={sessionId:e,reload:t},e)return I(e,{reload:n.sessionId===e&&n.reload!==t})},[e,t]),r}function B(e){let t=R(e);return(0,y.useSyncExternalStore)(t,()=>m(e),()=>m(e))}export{B as n,z as r,R as t};
2
+ //# sourceMappingURL=useVerseSession-BOsgJzT5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVerseSession-BOsgJzT5.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/session-stream.ts","../../../../../../src/web-ui/routes/verse/useVerseSession.ts"],"sourcesContent":["/**\n * routes/verse/session-stream.ts — the client data path for ONE open chat\n * (V3.10): load it once, resume its live stream from where the store left\n * off, batch what streams in to one store update per animation frame, and\n * keep the connection across section switches.\n *\n * WHY THIS EXISTS (measured before 3.10, scratchpad perf/):\n * - opening a chat raced a full detail fetch against an EventSource that\n * replayed the whole log from seq 0, and every replayed frame was applied\n * and rendered on its own — 2.45 s for a 5k-event chat, 17 s for 10k;\n * - every reconnect (at least one per 15-minute read session) replayed the\n * whole log again, because a hand-made EventSource sends no Last-Event-ID;\n * - every replayed `turn-done` refetched the session list and bootstrap;\n * - leaving the Chat section closed the stream, so coming back replayed.\n *\n * THE PATH NOW\n * 1. `openVerseSession(id)` fetches the detail ONCE when the store has not\n * loaded the chat, seeds the store, and only then attaches the stream —\n * so the two never race.\n * 2. The stream URL carries `?after=<lastSeq>` (the highest PERSISTED seq\n * the store holds). The server replays only what is newer; a server that\n * predates `after` replays everything and the store's seq dedupe drops\n * it. A server whose auth boundary REFUSES the extra parameter is\n * detected once and served without it (afterRefused). A dropped\n * connection is left to the browser's own reconnect, which resumes by\n * Last-Event-ID.\n * 3. Frames are queued and applied with ONE `applyVerseEvents` call per\n * animation frame (a timer backs rAF up, since a hidden tab gets none).\n * Transient frames (reasoning deltas, progress) ride the same queue in\n * arrival order.\n * 4. The session list is invalidated only when a batch really settled a\n * turn — never for a replayed duplicate.\n * 5. Streams are ref-counted. When the last user lets go (section switch,\n * another chat selected) the connection lingers for IDLE_CLOSE_MS so\n * switching back is instant and costs no replay; at most MAX_IDLE\n * lingering connections are kept, because they share the server's SSE\n * connection cap with /api/events.\n *\n * Auth: every URL carries the per-tab client proof as `?client=` (EventSource\n * cannot send it as a header — see server.ts readSessionClientProof), and a\n * stream never reconnects once the read session is gone.\n */\nimport type { VerseEvent } from '../../data/api-types.js';\nimport { getAuthSnapshot, getReadClientProof } from '../../data/auth-store.js';\nimport { isRemoteMobileMode } from '../../data/remote-mode.js';\nimport { parseVerseEventFrame, VERSE_EVENT_TYPES } from './verse-events.js';\nimport { fetchVerseSessionDetail, invalidateVerseLists, verseSessionPath } from './verse-queries.js';\nimport {\n applyVerseEvents,\n getVerseSessionState,\n seedVerseSession,\n setVerseLoadError,\n setVerseStreamState,\n subscribeVerseStoreLifecycle,\n} from './verse-store.js';\n\n/** How long a released stream stays connected before it is closed. */\nexport const IDLE_CLOSE_MS = 90_000;\n/** Released-but-lingering streams kept at once (they count against the server's SSE cap). */\nexport const MAX_IDLE_STREAMS = 1;\n/** Fallback flush when requestAnimationFrame does not fire (hidden tab, occluded window). */\nconst FRAME_FALLBACK_MS = 250;\n\n/**\n * Per-session stream URL: `?after=<cursor>&client=<proof>`. `after` is\n * omitted for cursor 0 — seqs start at 1, so \"after 0\" and \"from the start\"\n * are the same request, and the bare form is what a server without `after`\n * support has always seen.\n */\nexport function verseSessionStreamUrl(sessionId: string, after: number): string {\n if (isRemoteMobileMode()) {\n const cursor = Number.isSafeInteger(after) && after > 0 ? `?after=${after}` : '';\n return `${verseSessionPath(sessionId, '/events')}${cursor}`;\n }\n const cursor = Number.isSafeInteger(after) && after > 0 ? `after=${after}&` : '';\n return `${verseSessionPath(sessionId, '/events')}?${cursor}client=${encodeURIComponent(getReadClientProof())}`;\n}\n\nfunction backoffMs(attempt: number): number {\n return Math.min(1000 * 2 ** attempt, 15_000);\n}\n\n// ---------------------------------------------------------------------------\n// Frame scheduling\n// ---------------------------------------------------------------------------\n\ntype FrameScheduler = (flush: () => void) => () => void;\n\n/**\n * True inside a React `act()` test environment. There, `act()` is the test\n * declaring \"everything this block causes must be visible after it\", and a\n * frame-deferred flush would land after the assertions — so frames are\n * applied as they arrive, exactly as React applies its own scheduled work\n * inside act. Production never sets the flag.\n */\nfunction inActEnvironment(): boolean {\n return (globalThis as { IS_REACT_ACT_ENVIRONMENT?: unknown }).IS_REACT_ACT_ENVIRONMENT === true;\n}\n\nconst animationFrameScheduler: FrameScheduler = (flush) => {\n let done = false;\n const run = () => {\n if (done) return;\n done = true;\n if (raf !== null && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(raf);\n clearTimeout(timer);\n flush();\n };\n const hidden = typeof document !== 'undefined' && document.visibilityState === 'hidden';\n const raf = !hidden && typeof requestAnimationFrame === 'function' ? requestAnimationFrame(run) : null;\n const timer = setTimeout(run, raf === null ? 0 : FRAME_FALLBACK_MS);\n return () => {\n done = true;\n if (raf !== null && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(raf);\n clearTimeout(timer);\n };\n};\n\nlet customScheduler: FrameScheduler | null = null;\n\n/**\n * Tests: replace the frame scheduler (null restores the default). A scheduler\n * that never calls `flush` lets a test assert what is queued; calling it\n * later simulates the frame.\n */\nexport function setVerseFrameScheduler(scheduler: FrameScheduler | null): void {\n customScheduler = scheduler;\n}\n\nfunction scheduleFrame(flush: () => void): (() => void) | null {\n if (customScheduler) return customScheduler(flush);\n if (inActEnvironment()) {\n flush();\n return null;\n }\n return animationFrameScheduler(flush);\n}\n\n/**\n * Collects frames for one session and applies them once per frame. Returns\n * whether the flushed batch settled a turn, for the list invalidation.\n */\nclass FrameQueue {\n private queue: VerseEvent[] = [];\n private cancel: (() => void) | null = null;\n private scheduled = false;\n\n constructor(private readonly sessionId: string) {}\n\n push(event: VerseEvent): void {\n this.queue.push(event);\n if (this.scheduled) return;\n this.scheduled = true;\n const cancel = scheduleFrame(() => this.flush());\n // A synchronous scheduler (act environment) has already flushed.\n if (this.scheduled) this.cancel = cancel;\n }\n\n /** Apply everything queued now. Safe to call with nothing queued. */\n flush(): void {\n this.scheduled = false;\n this.cancel?.();\n this.cancel = null;\n if (this.queue.length === 0) return;\n const batch = this.queue;\n this.queue = [];\n const result = applyVerseEvents(this.sessionId, batch);\n if (result.settled) invalidateVerseLists();\n }\n\n drop(): void {\n this.scheduled = false;\n this.cancel?.();\n this.cancel = null;\n this.queue = [];\n }\n}\n\n// ---------------------------------------------------------------------------\n// One resumable stream\n// ---------------------------------------------------------------------------\n\ninterface LiveStream {\n close(): void;\n /** Tear down and reconnect from the current cursor (Retry). */\n restart(): void;\n}\n\n/**\n * Set once this page has PROVEN that the server refuses `?after=`: a\n * connection with the cursor closed before it opened, and the same stream\n * without it then opened. A read-session boundary that accepts only the\n * `?client=` proof on SSE paths answers 401 to any extra parameter, and a\n * chat that cannot connect at all is far worse than one that replays (the\n * store drops what it already holds). Page-lifetime only: a server that gains\n * support is used again after a reload.\n */\nlet afterRefused = false;\n\n/** Tests: forget a proven refusal. */\nexport function resetVerseStreamCapabilities(): void {\n afterRefused = false;\n}\n\n/** `EventSource.CONNECTING` — the browser is reconnecting by itself. */\nconst ES_CONNECTING = 0;\n\nfunction openResumableStream(sessionId: string): LiveStream {\n let source: EventSource | null = null;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let attempt = 0;\n let disposed = false;\n /** This connection is the no-`after` retry that tests whether the cursor was refused. */\n let probing = false;\n const queue = new FrameQueue(sessionId);\n\n const connect = () => {\n if (disposed || typeof EventSource === 'undefined') return;\n if (getAuthSnapshot().phase !== 'authenticated') return;\n setVerseStreamState(sessionId, attempt === 0 ? 'connecting' : 'reconnecting');\n // The cursor is read at CONNECT time, after everything already received\n // was applied, so a reconnect asks only for what it has not seen.\n const cursor = afterRefused || probing ? 0 : getVerseSessionState(sessionId).lastSeq;\n const es = new EventSource(verseSessionStreamUrl(sessionId, cursor), { withCredentials: true });\n let opened = false;\n source = es;\n es.onopen = () => {\n opened = true;\n attempt = 0;\n if (probing) {\n afterRefused = true;\n probing = false;\n }\n setVerseStreamState(sessionId, 'open');\n };\n for (const type of VERSE_EVENT_TYPES) {\n es.addEventListener(type, (evt) => {\n if (source !== es) return;\n const event = parseVerseEventFrame((evt as MessageEvent<string>).data);\n if (event) queue.push(event);\n });\n }\n es.onerror = (evt) => {\n // A server-sent event NAMED `error` (a VerseEvent.type) also dispatches\n // through onerror because onerror is the handler for event type \"error\".\n // It arrives as a MessageEvent with data; a real transport failure does\n // not. Without this guard every vendor error replayed on reconnect would\n // tear the stream down again, forever.\n if (typeof MessageEvent !== 'undefined' && evt instanceof MessageEvent) return;\n // Everything received before the drop moves the cursor first.\n queue.flush();\n if (disposed) return;\n // A dropped connection (network blip, server restart, the server\n // closing a congested stream) is retried by the BROWSER, which sends\n // Last-Event-ID — the last persisted seq, since transient frames carry\n // no id — so it resumes without a replay. Only a refused one (an HTTP\n // error) ends up CLOSED and is ours to retry.\n if (typeof es.readyState === 'number' && es.readyState === ES_CONNECTING) {\n setVerseStreamState(sessionId, 'reconnecting');\n return;\n }\n es.close();\n if (source === es) source = null;\n setVerseStreamState(sessionId, 'reconnecting');\n if (getAuthSnapshot().phase !== 'authenticated') return;\n if (!opened && cursor > 0 && !probing) {\n // Refused before it opened, with a cursor: find out at once whether\n // the cursor is what was refused (see afterRefused).\n probing = true;\n connect();\n return;\n }\n probing = false;\n timer = setTimeout(() => {\n timer = null;\n attempt += 1;\n connect();\n }, backoffMs(attempt));\n };\n };\n\n const teardown = () => {\n if (timer) clearTimeout(timer);\n timer = null;\n source?.close();\n source = null;\n };\n\n connect();\n\n return {\n close() {\n if (disposed) return;\n disposed = true;\n teardown();\n // Frames already received still belong in the store (a lingering stream\n // closing mid-turn must not lose its last tokens).\n queue.flush();\n queue.drop();\n setVerseStreamState(sessionId, 'closed');\n },\n restart() {\n if (disposed) return;\n teardown();\n queue.flush();\n attempt = 0;\n connect();\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Ref-counted registry\n// ---------------------------------------------------------------------------\n\ninterface RegistryEntry {\n stream: LiveStream;\n refs: number;\n idleTimer: ReturnType<typeof setTimeout> | null;\n /** When the last reference was released (for evicting the oldest lingering stream). */\n releasedAt: number;\n}\n\nconst registry = new Map<string, RegistryEntry>();\n\nfunction closeEntry(sessionId: string): void {\n const entry = registry.get(sessionId);\n if (!entry) return;\n registry.delete(sessionId);\n if (entry.idleTimer) clearTimeout(entry.idleTimer);\n entry.stream.close();\n}\n\nfunction evictIdle(): void {\n const idle = [...registry.entries()].filter(([, e]) => e.refs === 0).sort((a, b) => a[1].releasedAt - b[1].releasedAt);\n while (idle.length > MAX_IDLE_STREAMS) closeEntry(idle.shift()![0]);\n}\n\n/**\n * Hold the live stream for `sessionId` open. Returns the release. The first\n * acquire connects (resuming after the store's cursor); later ones share it.\n */\nexport function acquireVerseSessionStream(sessionId: string): () => void {\n let entry = registry.get(sessionId);\n if (entry) {\n entry.refs += 1;\n if (entry.idleTimer) clearTimeout(entry.idleTimer);\n entry.idleTimer = null;\n } else {\n entry = { stream: openResumableStream(sessionId), refs: 1, idleTimer: null, releasedAt: 0 };\n registry.set(sessionId, entry);\n }\n const held = entry;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n if (registry.get(sessionId) !== held) return;\n held.refs -= 1;\n if (held.refs > 0) return;\n held.releasedAt = Date.now();\n held.idleTimer = setTimeout(() => {\n if (registry.get(sessionId) === held && held.refs === 0) closeEntry(sessionId);\n }, IDLE_CLOSE_MS);\n evictIdle();\n };\n}\n\n/** Close every live stream (logout; tests). */\nexport function closeAllVerseSessionStreams(): void {\n for (const id of [...registry.keys()]) closeEntry(id);\n}\n\n/** Diagnostics/tests: the sessions with a stream held open, and their reference counts. */\nexport function verseStreamRegistrySnapshot(): Array<{ sessionId: string; refs: number }> {\n return [...registry.entries()].map(([sessionId, e]) => ({ sessionId, refs: e.refs }));\n}\n\n// A deleted chat has no stream to keep; a cleared store (logout, test reset)\n// has no chats at all.\nsubscribeVerseStoreLifecycle((event) => {\n if (event.kind === 'reset') closeAllVerseSessionStreams();\n else closeEntry(event.sessionId);\n});\n\n// ---------------------------------------------------------------------------\n// Opening a chat\n// ---------------------------------------------------------------------------\n\nexport interface OpenVerseSessionOptions {\n /** Re-fetch the detail and reconnect even when the store already holds the chat (the transcript's Retry). */\n reload?: boolean;\n}\n\n/**\n * Show one chat: load it (once) and keep its live stream attached until the\n * returned disposer runs.\n *\n * - Not loaded yet → fetch the detail, seed the store, THEN attach the\n * stream from the seeded cursor. No race, no full replay.\n * - Already loaded (switching back) → attach at once from the cursor; a\n * stream still lingering from the last visit has nothing to catch up.\n * - `reload` → refetch the detail and restart the connection.\n */\nexport function openVerseSession(sessionId: string, options: OpenVerseSessionOptions = {}): () => void {\n const controller = new AbortController();\n let release: (() => void) | null = null;\n let disposed = false;\n\n const attach = () => {\n if (disposed || release) return;\n release = acquireVerseSessionStream(sessionId);\n };\n\n const state = getVerseSessionState(sessionId);\n const needsLoad = options.reload === true || !state.loaded || state.loadError !== null;\n\n if (!needsLoad) {\n attach();\n } else {\n if (options.reload) registry.get(sessionId)?.stream.restart();\n void fetchVerseSessionDetail(sessionId, controller.signal)\n .then((detail) => {\n if (controller.signal.aborted) return;\n seedVerseSession(sessionId, detail.session, detail.events);\n attach();\n })\n .catch((err: unknown) => {\n if (controller.signal.aborted) return;\n setVerseLoadError(sessionId, err instanceof Error ? err.message : 'Could not load this chat.');\n });\n }\n\n return () => {\n disposed = true;\n controller.abort();\n release?.();\n release = null;\n };\n}\n","/**\n * routes/verse/useVerseSession.ts — the only React glue over verse-store /\n * session-stream (same split as data/hooks.ts over cache.ts + sse.ts).\n *\n * Three hooks, three snapshots, three render frequencies (V3.10):\n *\n * useVerseSession(id) the HEAD: session record, load/stream state and\n * the event log as of the last structural event.\n * Owns opening the chat. Does NOT change per\n * streamed token, so the Chat section, sidebar,\n * header and resources panel stop re-rendering at\n * token rate.\n * useVerseTranscript(id) the derived transcript — changes at most once per\n * animation frame while text streams. Lives in\n * useVerseTranscript.ts: the derivation it reads is\n * kept off the chat first-paint path.\n * useVerseLive(id) transient signals of the running turn\n * (reasoning, progress, retry/watchdog notices).\n *\n * Each subscribes to its own session only, so a stream feeding a lingering\n * chat in the background re-renders nothing that shows another one.\n */\nimport { useCallback, useEffect, useRef, useSyncExternalStore } from 'react';\nimport { openVerseSession } from './session-stream.js';\nimport {\n getVerseLive,\n getVerseSessionHead,\n subscribeVerseSession,\n type Transcript,\n type VerseLiveState,\n type VerseSessionHead,\n} from './verse-store.js';\n\nexport interface VerseSessionView extends VerseSessionHead {\n /**\n * A transcript supplied WITH the view — only a hand-built view (a test, a\n * preview) carries one. The live app leaves it unset and the workspace\n * subscribes to the transcript itself (useVerseTranscript), which is what\n * keeps a streamed token from re-rendering everything that holds the view.\n */\n transcript?: Transcript;\n}\n\nconst noop = () => () => {};\n\nexport function useSessionSubscription(sessionId: string | null) {\n return useCallback(\n (listener: () => void) => (sessionId ? subscribeVerseSession(sessionId, listener) : noop()),\n [sessionId],\n );\n}\n\n/**\n * @param reload bump to re-fetch the detail + reconnect for the same id\n * (the transcript's Retry button).\n */\nexport function useVerseSession(sessionId: string | null, reload = 0): VerseSessionView {\n const subscribe = useSessionSubscription(sessionId);\n const head = useSyncExternalStore(\n subscribe,\n () => getVerseSessionHead(sessionId),\n () => getVerseSessionHead(sessionId),\n );\n\n // Only a BUMP of `reload` for the chat already open means Retry; the\n // counter itself is never reset by the host, so \"reload > 0\" would turn\n // every later selection into a full refetch.\n const lastOpened = useRef<{ sessionId: string | null; reload: number }>({ sessionId: null, reload });\n useEffect(() => {\n const previous = lastOpened.current;\n lastOpened.current = { sessionId, reload };\n if (!sessionId) return undefined;\n return openVerseSession(sessionId, { reload: previous.sessionId === sessionId && previous.reload !== reload });\n }, [sessionId, reload]);\n\n return head;\n}\n\n/** Live (never persisted) signals of the chat's running turn. */\nexport function useVerseLive(sessionId: string | null): VerseLiveState {\n const subscribe = useSessionSubscription(sessionId);\n return useSyncExternalStore(\n subscribe,\n () => getVerseLive(sessionId),\n () => getVerseLive(sessionId),\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{s as t}from"./index-BC5Uslm5.js";import{t as n}from"./verse-transcript-Dc-bk9l2.js";import{t as r}from"./useVerseSession-BOsgJzT5.js";var i=e(t(),1);function a(e){let t=r(e);return(0,i.useSyncExternalStore)(t,()=>n(e),()=>n(e))}export{a as t};
2
+ //# sourceMappingURL=useVerseTranscript-BN_fMz6x.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVerseTranscript-BN_fMz6x.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/useVerseTranscript.ts"],"sourcesContent":["/**\n * routes/verse/useVerseTranscript.ts — the React glue over the derived\n * transcript (verse-transcript.ts).\n *\n * Not in useVerseSession.ts because that module is on the chat first-paint\n * path (the Chat section opens the chat through it) while the transcript is\n * rendered only by lazy chunks (the workspace, the dock). Importing the\n * derivation from there would put it back in the first-paint critical JS.\n */\nimport { useSyncExternalStore } from 'react';\nimport { useSessionSubscription } from './useVerseSession.js';\nimport { getVerseTranscript, type Transcript } from './verse-transcript.js';\n\n/** The transcript of one chat, rebuilt only for the turn that changed. */\nexport function useVerseTranscript(sessionId: string | null): Transcript {\n const subscribe = useSessionSubscription(sessionId);\n return useSyncExternalStore(\n subscribe,\n () => getVerseTranscript(sessionId),\n () => getVerseTranscript(sessionId),\n );\n}\n"],"mappings":"+MAcA,SAAgB,EAAmB,EAAsC,CACvE,IAAM,EAAY,EAAuB,CAAS,EAClD,OAAA,EAAO,EAAA,qBAAA,CACL,MACM,EAAmB,CAAS,MAC5B,EAAmB,CAAS,CACpC,CACF"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./index-BC5Uslm5.js";import{i as t}from"./global-w7KDTTi0.js";var n=e();function r({size:e=16,title:t,children:r,...i}){return(0,n.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`,focusable:`false`,...t?{role:`img`}:{"aria-hidden":!0},...i,children:[t?(0,n.jsx)(`title`,{children:t}):null,r]})}var i=e=>(0,n.jsx)(r,{...e,children:(0,n.jsx)(`path`,{d:`M2.5 11.5V4.25A1.75 1.75 0 0 1 4.25 2.5h7.5a1.75 1.75 0 0 1 1.75 1.75v4.5a1.75 1.75 0 0 1-1.75 1.75H5.5L2.5 13.5v-2Z`})}),a=e=>(0,n.jsxs)(r,{...e,children:[(0,n.jsx)(`path`,{d:`M2 9.5 3.6 3.4A1.5 1.5 0 0 1 5.05 2.3h5.9a1.5 1.5 0 0 1 1.45 1.1L14 9.5`}),(0,n.jsx)(`path`,{d:`M2 9.5h3l.8 1.6h4.4l.8-1.6h3v2.6A1.9 1.9 0 0 1 12.1 14H3.9A1.9 1.9 0 0 1 2 12.1V9.5Z`})]}),o=`verse-bootstrap`,s={key:o,fetch:e=>t(`/api/verse/bootstrap`,e)};export{a,i,s as n,r,o as t};
2
+ //# sourceMappingURL=verse-bootstrap-query-B3vFD9XK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verse-bootstrap-query-B3vFD9XK.js","names":[],"sources":["../../../../../../src/web-ui/components/primitives/icon-base.tsx","../../../../../../src/web-ui/routes/verse/verse-bootstrap-query.ts"],"sourcesContent":["/**\n * components/primitives/icon-base.tsx — the icon geometry (16px box, 1.5px\n * stroke, round caps/joins, currentColor) and the few glyphs the Verse rail\n * draws at first paint. Everything here is re-exported by icons.tsx, which\n * remains the console's icon set and the import site for everyone else.\n *\n * WHY SPLIT: icons.tsx holds every glyph any surface uses, and the rail is on\n * the chat first-paint path; importing it there put the whole set (~4 KB) in\n * the chat first-paint critical JS (SPEC-310A §1). Add a glyph here only when\n * a first-paint module draws it.\n *\n * Every icon is decorative by default (`aria-hidden`); pass `title` only when\n * the icon is the sole carrier of meaning (it then becomes `role=\"img\"`).\n */\nimport type { ReactNode, SVGProps } from 'react';\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'children' | 'viewBox'> {\n /** Edge length in px. Defaults to 16 — the design language's icon size. */\n size?: number;\n /** Accessible name. Omit for decorative icons (the default). */\n title?: string;\n}\n\nexport function Icon({ size = 16, title, children, ...rest }: IconProps & { children: ReactNode }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n focusable=\"false\"\n {...(title ? { role: 'img' } : { 'aria-hidden': true })}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n {children}\n </svg>\n );\n}\n\n/** Chat — the transcript section. */\nexport const IconChat = (p: IconProps) => (\n <Icon {...p}>\n <path d=\"M2.5 11.5V4.25A1.75 1.75 0 0 1 4.25 2.5h7.5a1.75 1.75 0 0 1 1.75 1.75v4.5a1.75 1.75 0 0 1-1.75 1.75H5.5L2.5 13.5v-2Z\" />\n </Icon>\n);\n\n/** Inbox — approvals. */\nexport const IconInbox = (p: IconProps) => (\n <Icon {...p}>\n <path d=\"M2 9.5 3.6 3.4A1.5 1.5 0 0 1 5.05 2.3h5.9a1.5 1.5 0 0 1 1.45 1.1L14 9.5\" />\n <path d=\"M2 9.5h3l.8 1.6h4.4l.8-1.6h3v2.6A1.9 1.9 0 0 1 12.1 14H3.9A1.9 1.9 0 0 1 2 12.1V9.5Z\" />\n </Icon>\n);\n","/**\n * routes/verse/verse-bootstrap-query.ts — the one read every Verse surface\n * starts from (seats, projects, sessions, dispatchEnabled), on its own.\n *\n * verse-queries.ts re-exports it unchanged. It lives apart so the phone app\n * (routes/verse/mobile/) can probe its session and read `dispatchEnabled` at\n * first paint without downloading every other /api/verse/* helper — its\n * first-paint budget (scripts/check-first-paint-budget.mjs) is 250 KB, and\n * React alone is ~220 KB of that.\n */\nimport type { VerseBootstrap } from '../../data/api-types.js';\nimport { apiGet } from '../../data/client.js';\nimport type { QueryDef } from '../../data/queries.js';\n\nexport const VERSE_BOOTSTRAP_KEY = 'verse-bootstrap';\n\nexport const verseBootstrapQuery: QueryDef<VerseBootstrap> = {\n key: VERSE_BOOTSTRAP_KEY,\n fetch: (signal) => apiGet<VerseBootstrap>('/api/verse/bootstrap', signal),\n};\n"],"mappings":"2FAuBA,SAAgB,EAAK,CAAE,OAAO,GAAI,QAAO,WAAU,GAAG,GAA6C,CACjG,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,MAAO,EACP,OAAQ,EACR,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAa,IACb,cAAc,QACd,eAAe,QACf,UAAU,QACV,GAAK,EAAQ,CAAE,KAAM,KAAM,EAAI,CAAE,cAAe,EAAK,EACrD,GAAI,EAXN,SAAA,CAaG,GAAQ,EAAA,EAAA,IAAA,CAAC,QAAD,CAAA,SAAQ,CAAa,CAAA,EAAI,KACjC,CACE,GAET,CAGA,IAAa,EAAY,IACvB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,GAAI,EACR,UAAA,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,EAAE,sHAAwH,CAAA,CAC5H,CAAA,EAIK,EAAa,IACxB,EAAA,EAAA,KAAA,CAAC,EAAD,CAAM,GAAI,EAAV,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,EAAE,yEAA2E,CAAA,GACnF,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,EAAE,sFAAwF,CAAA,CAC5F,IC1CK,EAAsB,kBAEtB,EAAgD,CAC3D,IAAK,EACL,MAAQ,GAAW,EAAuB,uBAAwB,CAAM,CAC1E"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./index-BC5Uslm5.js";import{i as t,r as n}from"./VerseConsoleApp-DjPpZLo1.js";import{S as r,a as i,b as a,i as o,u as s,v as c}from"./icons-C3G-y5j2.js";var l=e(),u=s,d=r;function f(e){return(0,l.jsxs)(n,{...e,children:[(0,l.jsx)(`rect`,{x:`2.5`,y:`2.5`,width:`4.5`,height:`4.5`,rx:`1`}),(0,l.jsx)(`rect`,{x:`9`,y:`2.5`,width:`4.5`,height:`4.5`,rx:`1`}),(0,l.jsx)(`rect`,{x:`2.5`,y:`9`,width:`4.5`,height:`4.5`,rx:`1`}),(0,l.jsx)(`rect`,{x:`9`,y:`9`,width:`4.5`,height:`4.5`,rx:`1`})]})}function p(e){return(0,l.jsxs)(n,{...e,children:[(0,l.jsx)(`path`,{d:`M8 4.5C6.6 3.4 4.6 3 2.5 3.2v9c2.1-.2 4.1.2 5.5 1.3`}),(0,l.jsx)(`path`,{d:`M8 4.5c1.4-1.1 3.4-1.5 5.5-1.3v9c-2.1-.2-4.1.2-5.5 1.3`}),(0,l.jsx)(`path`,{d:`M8 4.5v9`})]})}function m(e){return(0,l.jsxs)(n,{...e,children:[(0,l.jsx)(`rect`,{x:`3`,y:`2.5`,width:`10`,height:`11`,rx:`1.5`}),(0,l.jsx)(`path`,{d:`M5.5 6l1 1 1.75-2`}),(0,l.jsx)(`path`,{d:`M5.5 10l1 1 1.75-2`}),(0,l.jsx)(`path`,{d:`M10 6h1`}),(0,l.jsx)(`path`,{d:`M10 10h1`})]})}function h(e){return(0,l.jsx)(n,{...e,children:(0,l.jsx)(`path`,{d:`M9 1.8 3.5 9h4l-1 5.2L12.5 7h-4z`})})}var g={command:t.command,fleet:t.fleet,growth:t.growth,mind:t.mind,chat:t.chat,agents:t.agents,settings:d,apps:f,usage:u,wiki:p,playbooks:m,automations:h},_=a,v=c,y=o,b=i;function x(e){return(0,l.jsxs)(n,{...e,children:[(0,l.jsx)(`rect`,{x:`2.5`,y:`3`,width:`11`,height:`10`,rx:`1.5`}),(0,l.jsx)(`path`,{d:`M10 3v10`})]})}function S(e){return(0,l.jsxs)(n,{...e,children:[(0,l.jsx)(`rect`,{x:`2.5`,y:`3`,width:`11`,height:`10`,rx:`1.5`}),(0,l.jsx)(`path`,{d:`M6 3v10`})]})}function C(e){return(0,l.jsxs)(n,{width:`1em`,height:`1em`,style:{display:`inline-block`,verticalAlign:`-0.125em`},...e,children:[(0,l.jsx)(`path`,{d:`M13 3.5v5a2 2 0 0 1-2 2H3.5`}),(0,l.jsx)(`path`,{d:`M6 8 3.5 10.5 6 13`})]})}export{x as a,C as c,d,S as f,b as i,g as l,p as m,y as n,m as o,u as p,h as r,v as s,f as t,_ as u};
2
+ //# sourceMappingURL=verse-icons-vSkflmRB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verse-icons-vSkflmRB.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/verse-icons.tsx"],"sourcesContent":["/**\n * routes/verse/verse-icons.tsx — the icons the shell rail and the chat chrome\n * use, under the names the Verse surfaces already import.\n *\n * Owner A's `components/primitives/icons.tsx` is now the drawing authority:\n * one geometry (16px box, 1.5px stroke, round caps/joins, currentColor), one\n * stroke weight, one accessibility convention. Everything below that has an\n * equivalent there is an ALIAS of it, so the rail and the inbox cannot drift\n * to two different chat glyphs.\n *\n * 3.10 adds the workbench surfaces (Command, Fleet, Growth, Mind), the gear\n * tray and Apps. They are drawn here, not in the shared set, because they\n * name Verse surfaces — a console page borrowing \"Fleet\" would be a lie.\n *\n * Five icons stay drawn here because the shared set has no equivalent and\n * they are Verse-specific chrome, not general console vocabulary:\n * `PanelIcon` / `SidebarIcon` (the two pane toggles, which must read as\n * mirror images of each other), `RailToggleIcon` (the rail's own expand /\n * collapse control, which has to read as the same family as those two),\n * `VerseMark` (the brand mark in the rail head, which is 32px and never takes\n * a color state; drawn in rail-icons.tsx with the other rail glyphs) and `McpIcon` (a plug — the shared set has no connector\n * glyph, and every candidate in it already means another rail section).\n */\nimport {\n IconChevronDown,\n IconChevronRight,\n IconCpu,\n IconGauge,\n IconInbox,\n IconMoon,\n IconPlus,\n IconSearch,\n IconSliders,\n IconTrash,\n type IconProps,\n} from '../../components/primitives/icons.js';\nimport { Icon, RAIL_ICON } from './rail-icons.js';\nimport type { ComponentType } from 'react';\nimport type { VerseSectionId } from './verse-ui-store.js';\n\nexport type { IconProps };\n// The rail's icons (the section glyphs, the gear, the mark) live in\n// rail-icons.tsx so the shell's first paint does not pull this module and the\n// shared icon set in with them; re-exported so the names stay importable here.\nexport {\n ChatIcon,\n CommandIcon,\n FleetIcon,\n GearIcon,\n GrowthIcon,\n MindIcon,\n NeedsYouIcon,\n RAIL_ICON,\n VerseMark,\n} from './rail-icons.js';\n\n// The gear tray's pages: drawn when the tray (or onboarding's tour) opens,\n// never by the rail itself, so not in rail-icons.tsx.\nexport const UsageIcon = IconGauge;\nexport const SettingsIcon = IconSliders;\n\n/** Apps & Accounts — a grid of tiles. */\nexport function AppsIcon(props: IconProps) {\n return (\n <Icon {...props}>\n <rect x=\"2.5\" y=\"2.5\" width=\"4.5\" height=\"4.5\" rx=\"1\" />\n <rect x=\"9\" y=\"2.5\" width=\"4.5\" height=\"4.5\" rx=\"1\" />\n <rect x=\"2.5\" y=\"9\" width=\"4.5\" height=\"4.5\" rx=\"1\" />\n <rect x=\"9\" y=\"9\" width=\"4.5\" height=\"4.5\" rx=\"1\" />\n </Icon>\n );\n}\n\n/** Repo wiki — an open book. */\nexport function WikiIcon(props: IconProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 4.5C6.6 3.4 4.6 3 2.5 3.2v9c2.1-.2 4.1.2 5.5 1.3\" />\n <path d=\"M8 4.5c1.4-1.1 3.4-1.5 5.5-1.3v9c-2.1-.2-4.1.2-5.5 1.3\" />\n <path d=\"M8 4.5v9\" />\n </Icon>\n );\n}\n\n/** Playbooks — a checklist on a page. */\nexport function PlaybooksIcon(props: IconProps) {\n return (\n <Icon {...props}>\n <rect x=\"3\" y=\"2.5\" width=\"10\" height=\"11\" rx=\"1.5\" />\n <path d=\"M5.5 6l1 1 1.75-2\" />\n <path d=\"M5.5 10l1 1 1.75-2\" />\n <path d=\"M10 6h1\" />\n <path d=\"M10 10h1\" />\n </Icon>\n );\n}\n\n/** Automations — a lightning bolt: work that arrives on its own. */\nexport function AutomationsIcon(props: IconProps) {\n return (\n <Icon {...props}>\n <path d=\"M9 1.8 3.5 9h4l-1 5.2L12.5 7h-4z\" />\n </Icon>\n );\n}\n\n/** Every section's glyph: the rail's, plus the tray's. */\nexport const SECTION_ICON: Readonly<Record<VerseSectionId, ComponentType<IconProps>>> = {\n command: RAIL_ICON.command!,\n fleet: RAIL_ICON.fleet!,\n growth: RAIL_ICON.growth!,\n mind: RAIL_ICON.mind!,\n chat: RAIL_ICON.chat!,\n agents: RAIL_ICON.agents!,\n settings: SettingsIcon,\n apps: AppsIcon,\n usage: UsageIcon,\n wiki: WikiIcon,\n playbooks: PlaybooksIcon,\n automations: AutomationsIcon,\n};\n\n/**\n * Aliases onto the shared set. The names are the ones the Verse rail, sidebar\n * and composer already import — keeping them means this reconciliation\n * touched no call site.\n */\nexport const AutonomyIcon = IconCpu;\nexport const ApprovalsIcon = IconInbox;\nexport const SearchIcon = IconSearch;\nexport const PlusIcon = IconPlus;\nexport const TrashIcon = IconTrash;\nexport const ArrowDownIcon = IconChevronDown;\nexport const ChevronIcon = IconChevronRight;\n/** The rail's theme quick-toggle. One glyph for the control, not per-theme. */\nexport const ThemeIcon = IconMoon;\n\nexport function PanelIcon(props: IconProps) {\n return <Icon {...props}><rect x=\"2.5\" y=\"3\" width=\"11\" height=\"10\" rx=\"1.5\" /><path d=\"M10 3v10\" /></Icon>;\n}\n\nexport function SidebarIcon(props: IconProps) {\n return <Icon {...props}><rect x=\"2.5\" y=\"3\" width=\"11\" height=\"10\" rx=\"1.5\" /><path d=\"M6 3v10\" /></Icon>;\n}\n\n/**\n * The Return key (↩) as a key-legend glyph, 1em and inline so it sits in a\n * <kbd> like the letters around it. WHY drawn: of the fonts the console\n * serves, only the 230 KB full Plex face has U+21A9, so typing it into the\n * palette's or the drawer's key legend fetched that face each time one opened\n * (3.10 first-paint review; global.css scopes the full faces).\n */\nexport function ReturnKeyIcon(props: IconProps) {\n return (\n <Icon width=\"1em\" height=\"1em\" style={{ display: 'inline-block', verticalAlign: '-0.125em' }} {...props}>\n <path d=\"M13 3.5v5a2 2 0 0 1-2 2H3.5\" /><path d=\"M6 8 3.5 10.5 6 13\" />\n </Icon>\n );\n}\n\n/**\n * The rail's own expand/collapse control: the same framed panel as the two\n * pane toggles above, plus a chevron saying which way it is about to move.\n * ONE glyph that rotates rather than two drawings, so the control reads as a\n * single thing in two states — and so the state is carried by direction, the\n * one property a user can read without having memorised the other icon.\n */\nexport function RailToggleIcon({ expanded = false, ...props }: IconProps & { expanded?: boolean }) {\n return (\n <Icon {...props}>\n <rect x=\"2.5\" y=\"3\" width=\"11\" height=\"10\" rx=\"1.5\" />\n <path d=\"M6 3v10\" />\n {expanded ? <path d=\"M11.2 6.4 9.6 8l1.6 1.6\" /> : <path d=\"M9.4 6.4 11 8l-1.6 1.6\" />}\n </Icon>\n );\n}\n\n/**\n * MCP — a plug in a socket. Drawn here rather than aliased: the shared set's\n * nearest candidates (`IconCpu`, `IconSliders`, `IconKey`) are already the\n * Autonomy, Settings and credential glyphs, and two rail items that read as\n * the same picture is worse than one more 16px drawing.\n */\nexport function McpIcon(props: IconProps) {\n return (\n <Icon {...props}>\n <path d=\"M6 1.8v3.2M10 1.8v3.2\" />\n <path d=\"M3.8 5h8.4v2.6a4.2 4.2 0 0 1-4.2 4.2 4.2 4.2 0 0 1-4.2-4.2V5Z\" />\n <path d=\"M8 11.8v2.4\" />\n </Icon>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/surface-prefetch-CFtP8imB.js","assets/queries-PgZlvFqO.js","assets/budget-queries-Nvx0H2XE.js","assets/cloud-queries-CsU54eNn.js","assets/types-IYKrYLku.js","assets/surface-data-hufdOfpz.js","assets/control-queries-BG53otwz.js","assets/mutations-CdLi0erM.js","assets/overnight-queries-cjjogTzn.js","assets/format-V6IiIMAL.js","assets/format-D7nBg2bn.js","assets/verse-model-DAOz9LrY.js","assets/compaction-point-VL9oegWS.js","assets/seat-readiness-a5B9iqP-.js","assets/thread-data-Cd2DZffn.js","assets/leader-thread-types-CDb-VPPO.js","assets/fleet-control-queries-BL-Vlf85.js","assets/global-1SED_aTT.css"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./index-BC5Uslm5.js";import{E as t,x as n}from"./VerseConsoleApp-DjPpZLo1.js";var r=[`pointerdown`,`keydown`,`wheel`,`touchstart`],i={capture:!0,passive:!0};function a(e={}){let t=e.win??window,n=e.doc??document,a=e.now??(()=>Date.now()),o=e.quietMs??2e3,s=Math.max(1,e.pollMs??250),c=e.busy??(()=>!1),l=e.timeoutMs??3e3,u=!1,d=a(),f=new Set,p=()=>{d=a()};for(let e of r)n.addEventListener(e,p,i);let m=()=>d+o-a(),h=()=>n.visibilityState!==`hidden`&&m()<=0&&!c();function g(){return u?Promise.resolve(!1):new Promise(e=>{let r=()=>void 0,i=()=>{r(),e(!1)},o=()=>{f.delete(i),e(!0)};f.add(i);let u=()=>{if(r=()=>void 0,n.visibilityState===`hidden`){let e=()=>{n.visibilityState!==`hidden`&&(n.removeEventListener(`visibilitychange`,e),d=a(),u())};n.addEventListener(`visibilitychange`,e),r=()=>n.removeEventListener(`visibilitychange`,e);return}let e=m();if(e>0||c()){let n=t.setTimeout(u,e>0?e:s);r=()=>t.clearTimeout(n);return}if(typeof t.requestIdleCallback==`function`){let e=t.requestIdleCallback(()=>h()?o():u(),{timeout:l});r=()=>t.cancelIdleCallback?.(e);return}o()};u()})}function _(e){return u?Promise.resolve(!1):new Promise(n=>{let r=0,i=()=>{t.clearTimeout(r),n(!1)};r=t.setTimeout(()=>{f.delete(i),n(!0)},e),f.add(i)})}function v(){if(!u){u=!0;for(let e of r)n.removeEventListener(e,p,i);for(let e of[...f])e();f.clear()}}return{wait:g,pause:_,cancel:v}}function o(e,t={}){let n=a(t),r=t.gapMs??400;return(async()=>{for(let[t,i]of e.entries()){if(t>0&&r>0&&!await n.pause(r)||!await n.wait())return;try{await i(n)}catch{}}n.cancel()})(),n.cancel}var s=()=>e(()=>import(`./surface-prefetch-CFtP8imB.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]));function c(e,r={}){let i=e=>async()=>{await e()},a=n=>async r=>{if(t().mounted.includes(n))return;await e.loadSection(n);let{prefetchSurfaceData:i}=await s();await i(n,{beforeEach:()=>r.wait()})};return o([...e.overlays.map(i),...n.map(e=>a(e.id))],{busy:e.readsInFlight,...r})}export{c as warmUpAfterFirstPaint};
3
+ //# sourceMappingURL=warmup-D9MjYs5S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../../../src/web-ui/routes/verse/shell/idle-prefetch.ts","../../../../../../src/web-ui/routes/verse/shell/warmup.ts"],"sourcesContent":["/**\n * routes/verse/shell/idle-prefetch.ts — run warm-up work in the gaps the\n * operator leaves, never in front of them (unit C1; review 3.10.1).\n *\n * createIdleGate() \"is the operator idle?\" as a promise: the window\n * is shown, no input for `quietMs`, none of the\n * operator's reads in flight (`busy`), and — where\n * the browser can tell — an idle callback;\n * runIdleSteps(steps) the steps one at a time: each waits for the gate,\n * and the next starts only after the previous one\n * has FINISHED (its promise settled) plus `gapMs`.\n *\n * WHY A GATE AND NOT A TIMER. WebKit — so the desktop app's WKWebView — has\n * no requestIdleCallback. 3.10.1 first fell back to fixed timers there (1.5 s,\n * then a step every 400 ms counted from each step's kickoff, not its end), so\n * the warm-up started ~9 reads in about a second whatever the operator was\n * doing, and a chat opened two seconds after launch queued behind the 90-day\n * history and the reasoning digest. The gate instead measures the two things\n * that matter: the operator's hands (pointer, keys, wheel, touch — observed\n * in the capture phase, passively, never delayed) and the operator's reads\n * (the caller's `busy`, which the shell wires to the query cache's gate).\n * Every wait re-checks both, so warm-up work yields the moment the operator\n * does something and resumes only after a fresh quiet period.\n *\n * A HIDDEN document runs nothing: a wait parks on `visibilitychange`, and\n * coming back counts as input (a fresh quiet period — the operator is about\n * to act). Cancel stops everything still pending — timers, idle callbacks,\n * the visibility and input listeners — and resolves every open wait `false`;\n * a step already running finishes on its own. The runner cancels its gate\n * when the last step is done, so a finished warm-up listens to nothing.\n *\n * LAZY ONLY. Framework- and dependency-free, and never imported statically by\n * VerseApp: shell/warmup.ts (itself loaded with import()) is its only user,\n * so none of this costs chat first-paint bytes (VerseApp.first-paint.test.ts).\n */\n\ntype IdleWindow = Pick<Window, 'setTimeout' | 'clearTimeout'> & {\n requestIdleCallback?: (cb: () => void, options?: { timeout: number }) => number;\n cancelIdleCallback?: (id: number) => void;\n};\n\ntype GateDocument = Pick<Document, 'visibilityState' | 'addEventListener' | 'removeEventListener'>;\n\nexport interface IdleGateOptions {\n /** No operator input for this long before anything runs. */\n quietMs?: number;\n /** How often a wait re-checks `busy` once the quiet period is met. */\n pollMs?: number;\n /** True while the operator's own work is in flight (the shell: the query cache's gate). */\n busy?: () => boolean;\n /** requestIdleCallback's deadline, where it exists. */\n timeoutMs?: number;\n /** Test seams. */\n win?: IdleWindow;\n doc?: GateDocument;\n now?: () => number;\n}\n\nexport interface IdleGate {\n /** Resolves true once the operator is idle; false if the gate is (or gets) cancelled first. */\n wait(): Promise<boolean>;\n /** A plain pause that cancel also ends (false). */\n pause(ms: number): Promise<boolean>;\n cancel(): void;\n}\n\nexport const IDLE_QUIET_MS = 2_000;\nexport const IDLE_POLL_MS = 250;\nexport const IDLE_TIMEOUT_MS = 3_000;\nexport const IDLE_STEP_GAP_MS = 400;\n\n/** What counts as the operator doing something. */\nexport const IDLE_INPUT_EVENTS = ['pointerdown', 'keydown', 'wheel', 'touchstart'] as const;\n\nconst LISTEN = { capture: true, passive: true } as const;\n\nexport function createIdleGate(options: IdleGateOptions = {}): IdleGate {\n const win = options.win ?? (window as IdleWindow);\n const doc = options.doc ?? document;\n const now = options.now ?? (() => Date.now());\n const quietMs = options.quietMs ?? IDLE_QUIET_MS;\n const pollMs = Math.max(1, options.pollMs ?? IDLE_POLL_MS);\n const busy = options.busy ?? (() => false);\n const timeoutMs = options.timeoutMs ?? IDLE_TIMEOUT_MS;\n\n let cancelled = false;\n // The gate is created at first paint: the quiet period counts from there.\n let lastInput = now();\n /** One abort per open wait / pause: disarms what it armed and settles it `false`. */\n const open = new Set<() => void>();\n\n const onInput = (): void => {\n lastInput = now();\n };\n for (const type of IDLE_INPUT_EVENTS) doc.addEventListener(type, onInput, LISTEN);\n\n const quietLeft = (): number => lastInput + quietMs - now();\n const idleNow = (): boolean => doc.visibilityState !== 'hidden' && quietLeft() <= 0 && !busy();\n\n function wait(): Promise<boolean> {\n if (cancelled) return Promise.resolve(false);\n return new Promise<boolean>((resolve) => {\n let disarm = (): void => undefined;\n const abort = (): void => {\n disarm();\n resolve(false);\n };\n const done = (): void => {\n open.delete(abort);\n resolve(true);\n };\n open.add(abort);\n\n const check = (): void => {\n disarm = () => undefined;\n if (doc.visibilityState === 'hidden') {\n const onShown = (): void => {\n if (doc.visibilityState === 'hidden') return;\n doc.removeEventListener('visibilitychange', onShown);\n lastInput = now();\n check();\n };\n doc.addEventListener('visibilitychange', onShown);\n disarm = () => doc.removeEventListener('visibilitychange', onShown);\n return;\n }\n const left = quietLeft();\n if (left > 0 || busy()) {\n const id = win.setTimeout(check, left > 0 ? left : pollMs);\n disarm = () => win.clearTimeout(id);\n return;\n }\n if (typeof win.requestIdleCallback === 'function') {\n // Input or a read may have started while the browser was busy: re-check on the way out.\n const id = win.requestIdleCallback(() => (idleNow() ? done() : check()), { timeout: timeoutMs });\n disarm = () => win.cancelIdleCallback?.(id);\n return;\n }\n done();\n };\n check();\n });\n }\n\n function pause(ms: number): Promise<boolean> {\n if (cancelled) return Promise.resolve(false);\n return new Promise<boolean>((resolve) => {\n let id = 0;\n const abort = (): void => {\n win.clearTimeout(id);\n resolve(false);\n };\n id = win.setTimeout(() => {\n open.delete(abort);\n resolve(true);\n }, ms);\n open.add(abort);\n });\n }\n\n function cancel(): void {\n if (cancelled) return;\n cancelled = true;\n for (const type of IDLE_INPUT_EVENTS) doc.removeEventListener(type, onInput, LISTEN);\n for (const abort of [...open]) abort();\n open.clear();\n }\n\n return { wait, pause, cancel };\n}\n\nexport type IdleStep = (gate: IdleGate) => void | Promise<void>;\n\nexport interface IdleStepsOptions extends IdleGateOptions {\n /** Pause after one step has finished before the next waits for the gate. */\n gapMs?: number;\n}\n\n/**\n * Run `steps` in order, each once the operator is idle and only after the\n * previous one has settled (plus `gapMs`). A step receives the gate so it can\n * wait again between its own pieces of work. A step that throws or rejects is\n * skipped, never fatal. Returns a cancel that stops every step not yet started\n * and every wait a running step is parked on.\n */\nexport function runIdleSteps(steps: readonly IdleStep[], options: IdleStepsOptions = {}): () => void {\n const gate = createIdleGate(options);\n const gapMs = options.gapMs ?? IDLE_STEP_GAP_MS;\n void (async () => {\n for (const [index, step] of steps.entries()) {\n if (index > 0 && gapMs > 0 && !(await gate.pause(gapMs))) return;\n if (!(await gate.wait())) return;\n try {\n await step(gate);\n } catch {\n // Warm-up only: a step that fails costs the operator a skeleton later, nothing more.\n }\n }\n gate.cancel();\n })();\n return gate.cancel;\n}\n","/**\n * routes/verse/shell/warmup.ts — what the shell warms after first paint, in\n * what order, and when (unit C1; review 3.10.1).\n *\n * 1. the overlay chunks, one at a time, so the first ⌘K / ⌘J / ⌘/ never\n * waits on the network;\n * 2. each rail surface not yet open, in rail order — its chunk (VerseApp's\n * one-per-tab load, so the first visit mounts it directly) and then the\n * reads it opens with (shell/surface-prefetch.ts, one read at a time).\n * A first visit then paints from cache instead of a skeleton.\n *\n * WHEN: every chunk and every read waits for the idle gate\n * (shell/idle-prefetch.ts): window shown, no operator input for a quiet\n * period, and NOTHING in the query cache's gate — no read of the operator's\n * running or queued. The warm-up therefore holds at most one of the gate's\n * four slots, never while the operator's own reads wait, and never in front\n * of the chat's first actions: a click or ⌘N restarts the quiet period, and\n * the reads it causes are waited out before the next warm-up read starts.\n *\n * LAZY ONLY. VerseApp loads this module with import() from a mount effect,\n * so neither the scheduler nor the surface table costs chat first-paint\n * bytes; the surface table is a further import() from here, at the first\n * surface step (VerseApp.first-paint.test.ts pins both).\n */\nimport { getVerseUiState, RAIL_SECTIONS, type VerseSectionId } from '../verse-ui-store.js';\nimport { runIdleSteps, type IdleGate, type IdleStep, type IdleStepsOptions } from './idle-prefetch.js';\n\nexport type WarmupOptions = IdleStepsOptions;\n\nexport interface WarmupDeps {\n /** VerseApp's one load per section (its lazy component shares it). */\n loadSection: (id: VerseSectionId) => Promise<unknown>;\n /** The overlay chunks, in the order they are worth having. */\n overlays: ReadonlyArray<() => Promise<unknown>>;\n /**\n * True while any read is running or queued in the query cache's gate\n * (VerseApp reads `queryGateStats`). Injected rather than imported: a\n * static data/cache.ts import from this chunk made the bundler split the\n * cache out of its shared first-paint chunk (+1.2 KB of chat critical JS,\n * more than moving the scheduler out saved).\n */\n readsInFlight: () => boolean;\n}\n\nconst importSurfacePrefetch = () => import('./surface-prefetch.js');\n\n/** Start the warm-up. Returns a cancel (VerseApp calls it on unmount). */\nexport function warmUpAfterFirstPaint(deps: WarmupDeps, options: WarmupOptions = {}): () => void {\n const overlay = (load: () => Promise<unknown>): IdleStep => async () => {\n await load();\n };\n const surface = (id: VerseSectionId): IdleStep => async (gate: IdleGate) => {\n // Already open: its reads are live, and its chunk is in.\n if (getVerseUiState().mounted.includes(id)) return;\n await deps.loadSection(id);\n const { prefetchSurfaceData } = await importSurfacePrefetch();\n await prefetchSurfaceData(id, { beforeEach: () => gate.wait() });\n };\n return runIdleSteps([...deps.overlays.map(overlay), ...RAIL_SECTIONS.map((s) => surface(s.id))], {\n busy: deps.readsInFlight,\n ...options,\n });\n}\n"],"file":"warmup-D9MjYs5S.js"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-hePW80VL.js";import{R as t}from"./VerseConsoleApp-DjPpZLo1.js";var n=e({REQUEST_TTL_MS:()=>r,getWikiFocus:()=>l,isWikiFocusLive:()=>u,requestWikiFocus:()=>c,subscribeWikiFocus:()=>f,takeWikiFocus:()=>d}),r=2e4,i=null,a=0,o=new Set;function s(){for(let e of[...o])e()}function c(e){a+=1,i={...e,seq:a,at:Date.now()},t(`wiki`),s()}function l(){return i}function u(e,t=Date.now()){return t-e.at<=r}function d(e){i?.seq===e&&(i=null,s())}function f(e){return o.add(e),()=>o.delete(e)}export{n as a,d as i,u as n,f as r,l as t};
2
+ //# sourceMappingURL=wiki-focus-De8-E48Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-focus-De8-E48Z.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/wiki/wiki-focus.ts"],"sourcesContent":["/**\n * routes/verse/wiki/wiki-focus.ts — \"take me to the repo wiki\": the hand-off\n * from ⌘K (\"Open repo wiki…\", \"Ask the codebase…\") to the lazily mounted Wiki\n * section, the same shape as leader/leader-focus.ts.\n *\n * requestWikiFocus({ kind: 'repo', projectPath }) Wiki, that repo selected\n * requestWikiFocus({ kind: 'ask', projectPath }) Wiki, Ask box focused\n *\n * A store, not a parked command: the section is its own chunk; a request\n * here waits (up to REQUEST_TTL_MS) until it mounts and takes it. Tiny and\n * framework-free: the shell's palette handler imports it on demand.\n */\nimport { setVerseSection } from '../verse-ui-store.js';\n\nexport type WikiFocusTarget = { kind: 'repo' | 'ask'; projectPath: string | null };\nexport type WikiFocusRequest = WikiFocusTarget & { seq: number; at: number };\n\nexport const REQUEST_TTL_MS = 20_000;\n\nlet current: WikiFocusRequest | null = null;\nlet seq = 0;\nconst listeners = new Set<() => void>();\n\nfunction emit(): void {\n for (const l of [...listeners]) l();\n}\n\nexport function requestWikiFocus(target: WikiFocusTarget): void {\n seq += 1;\n current = { ...target, seq, at: Date.now() };\n setVerseSection('wiki');\n emit();\n}\n\nexport function getWikiFocus(): WikiFocusRequest | null {\n return current;\n}\n\nexport function isWikiFocusLive(request: WikiFocusRequest, now: number = Date.now()): boolean {\n return now - request.at <= REQUEST_TTL_MS;\n}\n\n/** Clear request `requestSeq` (only that one — a newer ask survives). */\nexport function takeWikiFocus(requestSeq: number): void {\n if (current?.seq !== requestSeq) return;\n current = null;\n emit();\n}\n\nexport function subscribeWikiFocus(listener: () => void): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\n/** Test hygiene. */\nexport function resetWikiFocus(): void {\n current = null;\n emit();\n}\n"],"mappings":"kPAiBa,EAAiB,IAE1B,EAAmC,KACnC,EAAM,EACJ,EAAY,IAAI,IAEtB,SAAS,GAAa,CACpB,IAAK,IAAM,IAAK,CAAC,GAAG,CAAS,EAAG,EAAE,CACpC,CAEA,SAAgB,EAAiB,EAA+B,CAC9D,GAAO,EACP,EAAU,CAAE,GAAG,EAAQ,MAAK,GAAI,KAAK,IAAI,CAAE,EAC3C,EAAgB,MAAM,EACtB,EAAK,CACP,CAEA,SAAgB,GAAwC,CACtD,OAAO,CACT,CAEA,SAAgB,EAAgB,EAA2B,EAAc,KAAK,IAAI,EAAY,CAC5F,OAAO,EAAM,EAAQ,IAAM,CAC7B,CAGA,SAAgB,EAAc,EAA0B,CAClD,GAAS,MAAQ,IACrB,EAAU,KACV,EAAK,EACP,CAEA,SAAgB,EAAmB,EAAkC,CAEnE,OADA,EAAU,IAAI,CAAQ,MACT,EAAU,OAAO,CAAQ,CACxC"}
@@ -6,7 +6,7 @@
6
6
  <meta name="color-scheme" content="light dark" />
7
7
  <title>Ashlrverse — operator console</title>
8
8
  <meta name="referrer" content="no-referrer" />
9
- <script type="module" crossorigin src="/next/assets/index-DOAOxiKl.js"></script>
9
+ <script type="module" crossorigin src="/next/assets/index-BC5Uslm5.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="/next/assets/rolldown-runtime-hePW80VL.js">
11
11
  </head>
12
12
  <body>
@@ -1 +1 @@
1
- {"algorithm":"sha256","assurance":"packaged-build-byte-observation","inventoryDigest":"2ea41e0bef2c847e93acd3b81409ceed8547c3f617d4c6cf4b0e409d0ff7579b","package":{"manifestSha256":"74a0ae369aef0f0ed5bf5ebc24c2ed53ae4b2a21927c47acb61689e5429bb711","name":"@ashlr/hub","version":"3.22.0"},"packages":[{"archiveModeSha256":"3989ca11ade2862dbbb56f43f317f44b4a4d4e6871e5b4959ca278f7329bf54a","contentSha256":"bf9092cb79a9132842bfc4b7e78e450aec1ce2be4b63ddfbf1596d69575b29dc","fileCount":13,"name":"@hexagon/base64","path":"@hexagon/base64","size":31309,"version":"1.1.28"},{"archiveModeSha256":"e593537ea027a53342e9c95325f3823e507298732511cd61c314537000cb008c","contentSha256":"39703185cd013059db3eb5ac351625fa9dfd1eef0509fb47ff04fcc0a4cec6f5","fileCount":25,"name":"@hono/node-server","path":"@hono/node-server","size":120353,"version":"2.0.12"},{"archiveModeSha256":"f331e808f8ff6d9d2e9cbf1ad1bc05f35c36b7ac1489084d24460c345a354819","contentSha256":"ef4367c4587f87b13b688ecafe7010c2764623bfbf1f386a1943d7392f545551","fileCount":13,"name":"@isaacs/fs-minipass","path":"@isaacs/fs-minipass","size":100617,"version":"4.0.1"},{"archiveModeSha256":"564250e59c25ad9aba73c52baadea6ef8ae64b73a57a7f3de5641b82c2d9f361","contentSha256":"633e4c0a4dcd51b47b65aa3929821db0ac293bf82e363081eb31aef72c368554","fileCount":17,"name":"@levischuck/tiny-cbor","path":"@levischuck/tiny-cbor","size":51268,"version":"0.2.11"},{"archiveModeSha256":"212ef6ab48b10cfc61481fdb4d517d5aefa8a9e78f321c9483e13f8f0854aade","contentSha256":"54ecfe6624026e35139d2f943de8626043145c82c1d6580882a4adf4ee6b3c90","fileCount":693,"name":"@modelcontextprotocol/sdk","path":"@modelcontextprotocol/sdk","size":4322438,"version":"1.30.0"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"@modelcontextprotocol/sdk/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"@modelcontextprotocol/sdk/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"ccff57d2f44a23de1e5695a3fad11b6949fee5afeb1b0f62b02cdbfc3ac3cc58","contentSha256":"f242261f21aeca45aecc8b7784eecaa345241c00e807e2806e3d6bfc548e24d7","fileCount":15,"name":"@peculiar/asn1-android","path":"@peculiar/asn1-android","size":66394,"version":"2.10.0"},{"archiveModeSha256":"77b6b63e5cff5358c5a70e15f7e7466ee136d0399e0200ebb077ae089bd1fcab","contentSha256":"28e13c3855ac738d55b6224267fce7403b05929bfe96eea7b1e772b4ff1d9a9f","fileCount":6,"name":"@peculiar/asn1-asym-key","path":"@peculiar/asn1-asym-key","size":14474,"version":"2.10.0"},{"archiveModeSha256":"5ae7fcc7ee1b80bbcb81c82588194892c4c520fa311d6263377837c7b17b8d08","contentSha256":"a1800470a234089b8f0f568f4b155eb7d05ee46d98048ee0cce18c7f0d350ec6","fileCount":81,"name":"@peculiar/asn1-cms","path":"@peculiar/asn1-cms","size":101373,"version":"2.10.0"},{"archiveModeSha256":"64f9bfab3297979b94cf2901a6739cde3c6cbcd570d8e127ef7365a27f6f6be5","contentSha256":"9c56eed464e0729099451fd0f697d2dbfca102c8fa59d7029e41f5e4036f1585","fileCount":15,"name":"@peculiar/asn1-csr","path":"@peculiar/asn1-csr","size":12426,"version":"2.10.0"},{"archiveModeSha256":"2dd278ef63f134a2964518ed7a16b57632605507ca42debb9c62d63973aecde4","contentSha256":"5ad68e01f18d35b31487aef2d613d9856f2c72d9540d4f430cc7218de330bc71","fileCount":24,"name":"@peculiar/asn1-ecc","path":"@peculiar/asn1-ecc","size":28037,"version":"2.10.0"},{"archiveModeSha256":"d94cade125627b69c85ceb0cf024888f479f0b2a5ce74317ebca8b54906d74b4","contentSha256":"c99a67a8cf4db7689c9f5de564f5c7d8c5d675f2add6dfd61a55351916068982","fileCount":45,"name":"@peculiar/asn1-pfx","path":"@peculiar/asn1-pfx","size":31533,"version":"2.10.0"},{"archiveModeSha256":"8891822730cfdb4d1bf68b32d57efde01eca8cc2adfaf572ebe9151b700bb13e","contentSha256":"af357c9c23109f31f92dd604bf1e1fc4dd9d60303cd6a5100ddb1e2979f1032e","fileCount":12,"name":"@peculiar/asn1-pkcs8","path":"@peculiar/asn1-pkcs8","size":10556,"version":"2.10.0"},{"archiveModeSha256":"77b6b63e5cff5358c5a70e15f7e7466ee136d0399e0200ebb077ae089bd1fcab","contentSha256":"16a07af47b05b9ef9d8bd98aebc51f6ed6fbf3a989d50c46a9818646f188299a","fileCount":6,"name":"@peculiar/asn1-pkcs9","path":"@peculiar/asn1-pkcs9","size":48447,"version":"2.10.0"},{"archiveModeSha256":"f947d5cdc4be429ae2da7b7e67122d73d46401739fe2f9cd02df2e381303cbd7","contentSha256":"f1a266455e54849253866c6b58470037beeb35de2d40dcbfcb06f96bdcb84a52","fileCount":33,"name":"@peculiar/asn1-rsa","path":"@peculiar/asn1-rsa","size":40069,"version":"2.10.0"},{"archiveModeSha256":"95b93df411504654194c9072a8fe7f1c772b03b3b2d5c0f8d0fce23d0a4d8ecb","contentSha256":"b80eac1247f1c62f0636de547bb7250875a5198f38e2bb729884d10d55523179","fileCount":54,"name":"@peculiar/asn1-schema","path":"@peculiar/asn1-schema","size":110103,"version":"2.10.0"},{"archiveModeSha256":"1652f07d60133db7942541f6b9a23cb385b28e95f8bb074a8190044eefbb12e4","contentSha256":"81286ee1e26b93c1c5cfffb3ddad18a3dbc2978f48edc7c65df565c38d1f09b3","fileCount":132,"name":"@peculiar/asn1-x509","path":"@peculiar/asn1-x509","size":171517,"version":"2.10.0"},{"archiveModeSha256":"95a249ca922df7d7423f4812b52bb25486c1e341370c0fb125068dd1148f89ba","contentSha256":"512ed3cd01e02c213b12cf98a01779a785e8ade73141117a8a22f871e7396d84","fileCount":66,"name":"@peculiar/asn1-x509-attr","path":"@peculiar/asn1-x509-attr","size":61132,"version":"2.10.0"},{"archiveModeSha256":"bd35fff6e7b459fded02ff7b016c32d689fb79a169248fccea6e694e38ef9b8a","contentSha256":"54411ebe036e4c57988f045e443d51f2676403325f48a0b940603ce2af5905b9","fileCount":15,"name":"@peculiar/asn1-x509-post-quantum","path":"@peculiar/asn1-x509-post-quantum","size":19447,"version":"2.10.0"},{"archiveModeSha256":"30cbdfa79878072c6b89ee043732c4ea229dba085e472294a73a77a1d15b2a43","contentSha256":"b709387fad289874086122dfa41cb562080a9d1130b0f09c3cb469b426c6970b","fileCount":82,"name":"@peculiar/utils","path":"@peculiar/utils","size":146759,"version":"2.0.3"},{"archiveModeSha256":"85b3c4dec56c6d10d3e5e069fef60ddc98cabf6eddd2e591cf3245296b6f616c","contentSha256":"5499b1f2a0e6f785e84e8bdbd13d864864d5d2d0dd19d4a8947ce55077c303b5","fileCount":7,"name":"@peculiar/x509","path":"@peculiar/x509","size":589994,"version":"2.1.0"},{"archiveModeSha256":"03b45a1916466b990e8b8770b9cebca200aeddf9ee7cef1a70bd24ba788f83d6","contentSha256":"a4771178bb49c8aaae336aed7b66072cb1e51359efc2c9a377c576a58dca0f06","fileCount":133,"name":"@simplewebauthn/browser","path":"@simplewebauthn/browser","size":295234,"version":"14.0.0"},{"archiveModeSha256":"4f40dee16b9b84b329362695c38a2a688dfab3efafbbbc9c4c9c61efa65c7acc","contentSha256":"2bcce3874edfede49245b18a1bfe57a140abd36cb1504f070481ca40e62701f1","fileCount":449,"name":"@simplewebauthn/server","path":"@simplewebauthn/server","size":779310,"version":"14.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"93bc4d919570486c9dac1184c65d89802a5d7e5e51d2ad2c9c79e9229b0d2bfd","fileCount":5,"name":"accepts","path":"accepts","size":16917,"version":"2.0.0"},{"archiveModeSha256":"59731ad36f82822637c7da5fa7658d92982025dbc9421d168d3bac4b1c07ceca","contentSha256":"3f3c3c546609fdbb82cce00b944cdd6e72087f5d0047e9a477662babb5da2827","fileCount":11,"name":"agent-base","path":"agent-base","size":23962,"version":"7.1.4"},{"archiveModeSha256":"338fe03444b2468ffb84fa0a62e4ad26985fbe9063f5b6500fc00baab52687a7","contentSha256":"a570e5cd740441f9e2ad9e20aab09d6ff5f01c54b5ca63889fb9cc65aa22ed38","fileCount":15,"name":"ajv-formats","path":"ajv-formats","size":56763,"version":"3.0.1"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"ajv-formats/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"ajv-formats/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"1d49823e6f1c98750741be70748b0d239c14608939bdf28b0891165833819c98","contentSha256":"f5f5d61a0e801f085236bd6f04a42d00b9072b07bd7bcaf15eb9ba5f0365a518","fileCount":18,"name":"asn1.js","path":"asn1.js","size":49847,"version":"5.4.1"},{"archiveModeSha256":"4b5245122a4b28c41d7b89f626cf63f7144b2c2f904b5172c310d349cc118f3d","contentSha256":"107b880fe0efe617228e574d1f11eefc14a9049ef6eb11f48bef13e952cffaee","fileCount":6,"name":"asn1js","path":"asn1js","size":288975,"version":"3.0.10"},{"archiveModeSha256":"7efdb100fd711ae8eff00a8dd0b433b4a02cb2d3a1a7c9bf3db892b568f0370c","contentSha256":"92048873c2cdae45b41e636e982e70b1d21241496e667db51dd652150b9b59a0","fileCount":6,"name":"bn.js","path":"bn.js","size":100218,"version":"4.12.5"},{"archiveModeSha256":"99258e0ccfd899459bc7f95949a5bec9039234f80f0a96cfbf7de4cfd9deaad9","contentSha256":"e6f71097d1bf22309cc2010ba116320dbe0b37b53af324631969ccef03817448","fileCount":10,"name":"body-parser","path":"body-parser","size":42536,"version":"2.3.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"body-parser/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"cecd2d34869c1d2a0985573575c404d29decb6568aff83c8ecdf529eeb363394","contentSha256":"6f3200d042a69fc931c79e82c4347de8968faf7f678090921dc51a9e16a19de0","fileCount":7,"name":"buffer-equal-constant-time","path":"buffer-equal-constant-time","size":5232,"version":"1.0.1"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"048d4140095d01f76e5d5a576d5a10de4e1cebcc64cab6ea49f14afc54939be6","fileCount":5,"name":"bytes","path":"bytes","size":12270,"version":"3.1.2"},{"archiveModeSha256":"df415aae8a21af7234f013c4d934c5074b07e617f6189084a43c78a49bafcb78","contentSha256":"870b383c07315fef9619399c2450297d079b1398583984a5ccb9cd2b1005cb59","fileCount":21,"name":"call-bind-apply-helpers","path":"call-bind-apply-helpers","size":15952,"version":"1.0.2"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"01be39d7156b173ffe2869dcd589e2080dcf2f1bcbcfa2f20409582ccb21cfaf","fileCount":11,"name":"call-bound","path":"call-bound","size":17106,"version":"1.0.4"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"e1ec1eb1cc0367f01e1e8a9a8366d040942612a277ba4034707a130d6d70a0ce","fileCount":13,"name":"chownr","path":"chownr","size":22048,"version":"3.0.0"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"4f967d79760cd06bcfdbf918d30b3a77752d03e6e76582aeac4b3a81dcd6a6a9","fileCount":4,"name":"content-disposition","path":"content-disposition","size":19928,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ad93015c6082464b41e63397fc9ee739d6bb7cb93755c9fbef749cff39b8675","fileCount":5,"name":"content-type","path":"content-type","size":10471,"version":"1.0.5"},{"archiveModeSha256":"2048aee59eb971a928e2fcac3881a222b2c9140ec980dfd14756de04a3885902","contentSha256":"ca8dd7ddd6a3970df6e3efff74247cd6f985dfdcc596ac0f58cd50c5b88555e8","fileCount":5,"name":"cookie","path":"cookie","size":23382,"version":"0.7.2"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"360601ff3d56cfdb8de7d836940caa5d74a437474129017697aab4696fc84e03","fileCount":5,"name":"cookie-signature","path":"cookie-signature","size":4993,"version":"1.2.2"},{"archiveModeSha256":"3bf3b01496f9ce98ec5c58c595c317975f470de6da6599d5d405c60c294f12c6","contentSha256":"9a628bd867c40f8bd4753d84f5f364a5ce92fcdd73fb164977d566275580786e","fileCount":4,"name":"cors","path":"cors","size":19956,"version":"2.8.6"},{"archiveModeSha256":"0c4b2570bd695c455ca6e9f67aaabdf88b1d486e39e9e52f4b8cc0c595e08f33","contentSha256":"9666a5f3074e7ff71dab89ccc0fecd79699b6c68e85087cc3416e9b220e9369e","fileCount":9,"name":"cross-spawn","path":"cross-spawn","size":16094,"version":"7.0.6"},{"archiveModeSha256":"fd7ec5fdf7ea41f349416d375406faf41b35702e2e23f02d2c015acb72adc8f2","contentSha256":"e9f41fdd4e55dc936295270bdb7c994d9ad85dd2bd6f2fb3d46767a16ee1a03e","fileCount":7,"name":"debug","path":"debug","size":42793,"version":"4.4.3"},{"archiveModeSha256":"bb32a6d3c5b9088943cd629938024c4c8d207814db8194313063fe3844cbbc8c","contentSha256":"cfc74892a99b215bdc61d9817f90b235318267ddbf8a29ef52b2906d8b26e980","fileCount":6,"name":"depd","path":"depd","size":27117,"version":"2.0.0"},{"archiveModeSha256":"305af32d2ba2d5fe89c9acaa17537f1a06e7e131bf81112cb11d623fdbb9c6f1","contentSha256":"5c4728d83554a1fc2fd51c01cf2d30bb89adbe1c6469a52201eed72b68af0f91","fileCount":15,"name":"dunder-proto","path":"dunder-proto","size":13003,"version":"1.0.1"},{"archiveModeSha256":"26b84899ae55cef52403949f89ade897a671322fa1a2bcab8218098a89f3b2cd","contentSha256":"693630b35d4652f68db4f943ea27c327fba22a6a2fa477189e36070c9538cd67","fileCount":7,"name":"ecdsa-sig-formatter","path":"ecdsa-sig-formatter","size":20588,"version":"1.0.11"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"bae9f4988b2d279e16b4bb3e5527647300137f2978aef97f40acd1b453a8d5a7","fileCount":4,"name":"ee-first","path":"ee-first","size":6259,"version":"1.1.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1c50e3d3cd38c66e1e462f0004781f789e59959aec798aef31f9a2f049d216e5","fileCount":4,"name":"encodeurl","path":"encodeurl","size":6980,"version":"2.0.0"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"a2dd73d6e2d58eda48469112f2eacae1fec583f84f72643b3593c6092bd3e877","fileCount":11,"name":"es-define-property","path":"es-define-property","size":10217,"version":"1.0.1"},{"archiveModeSha256":"23a440c46333c31a4ae0a1ffdc2ec6db818da1c36a039abc189b118e1bcdc625","contentSha256":"fd08a46013bf09d90a2240c6a8a97f12ff7106507456c73e7db53f608b41214e","fileCount":22,"name":"es-errors","path":"es-errors","size":12324,"version":"1.3.0"},{"archiveModeSha256":"b6b95f08bcc5f254eddbff61393e6efa09637b9fe2996a163d3c2c71c28bb681","contentSha256":"893e26d760872fd0c233391eff242a717320d6b2d6ab004ad827d1dd6c517ea5","fileCount":16,"name":"es-object-atoms","path":"es-object-atoms","size":11967,"version":"1.1.2"},{"archiveModeSha256":"764d64b5de2e2faa2387d92a5ed5dcbc1822797787a67ee46e827d4d353a2cb5","contentSha256":"27b564cee7701979ecc9ba3ad9b57c4eb185ddfe14f6fbef7961b9d95fc51789","fileCount":4,"name":"escape-html","path":"escape-html","size":3660,"version":"1.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"53b09a946276069cc9e202851404809b0b27f9616f6398ba1ba053cf27a9b61f","fileCount":5,"name":"etag","path":"etag","size":10809,"version":"1.8.1"},{"archiveModeSha256":"15cc21147f13500c581198be8a82187d7d2cd38a2c23b9459c89f22990a5b971","contentSha256":"fda71ef638beebe2ebae12fe705f63cb2276d6b35564064714ad352727e6f0a9","fileCount":13,"name":"eventsource","path":"eventsource","size":147304,"version":"3.0.7"},{"archiveModeSha256":"57e54f8cb946a2072d2c928cce29ff71a0383916edbb50e97042f859f043677f","contentSha256":"57456c2bbbfd8965c4466cf8a120581c6de9c67c1e04bf815189370f5f76ec3f","fileCount":21,"name":"eventsource-parser","path":"eventsource-parser","size":123218,"version":"3.1.0"},{"archiveModeSha256":"e882878862f5bfd4ff0cb5120df0b9e29758544fabad522563cc91a5102513a0","contentSha256":"c4cccb2f6077128bc31e51f7f772663988796261352298821eea234de1f42281","fileCount":10,"name":"express","path":"express","size":75429,"version":"5.2.1"},{"archiveModeSha256":"0f783761dfb7c14c80535b5a3d2f282398f8621985ed04be794ef3144740784e","contentSha256":"332479fcc3eaa25713fa7df0d4e3a953b7a008fde6413d4278aa667d7e4473e1","fileCount":9,"name":"express-rate-limit","path":"express-rate-limit","size":146332,"version":"8.5.2"},{"archiveModeSha256":"78e09d25ac30efc25d5604344654f3158820dbd9d45a1900b9f44e0e500839cf","contentSha256":"5ca43c0737026213eee30eb17e40859c918af2ae30f16d3882fdfbd8bcb03afd","fileCount":11,"name":"fast-deep-equal","path":"fast-deep-equal","size":12966,"version":"3.1.3"},{"archiveModeSha256":"f75ddef45cc69b6bfbcad49bde00345a7e27f27d03cd67d1083d2a334122fc1a","contentSha256":"1707fce0cba6bb69967de7e86cbb4a5dd1e3fa40ab2528323fb727eae96da2e8","fileCount":44,"name":"fast-uri","path":"fast-uri","size":220886,"version":"3.1.8"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"a184198d4d20e0177fd4f9e5d82bc40d34143c3a8279e7200511905b08e91d1a","fileCount":5,"name":"finalhandler","path":"finalhandler","size":18111,"version":"2.1.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"5a3882ea4acfd16ac4851f43587d6ab87fd08de45665981db6e8ee5944486118","fileCount":5,"name":"forwarded","path":"forwarded","size":5876,"version":"0.2.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"c3d3cc5e56026a726c20ed1d516509608bddb667d5cc999f01cd3971a92e4406","fileCount":5,"name":"fresh","path":"fresh","size":10289,"version":"2.0.0"},{"archiveModeSha256":"6f10ab8235c8a46f648cd17681016bf68595208a48d01f1351bd0b19bcb4301c","contentSha256":"8afcdc5f094efcac14509859ce70157ec7daff89642bc5d604b235f6917dd5b0","fileCount":12,"name":"function-bind","path":"function-bind","size":31427,"version":"1.1.2"},{"archiveModeSha256":"2d4c82c10091157e0f33c6a4a049ef4b2609c8f2a6d70882fa538122b54c1ce3","contentSha256":"1b862b6fe457cd272bb8bce8407ac7f972c857ac317189afe7a29ba378f0f6ac","fileCount":9,"name":"get-intrinsic","path":"get-intrinsic","size":46542,"version":"1.3.0"},{"archiveModeSha256":"995b5a61ce2e3cb963405de061067b699b48e90eb6ce2ac0d88e88bd9c38549a","contentSha256":"3dc759afa7e26cd60cc642b39bffcbd22dd574469e4ac2174cc9b57b97599f82","fileCount":15,"name":"get-proto","path":"get-proto","size":10840,"version":"1.0.1"},{"archiveModeSha256":"169ecf4d0c444e719e5bcd4e912e3ceb193138b5ab7eef8f727798759a4331d3","contentSha256":"6f2eeeb1483b34581df01b15d1b80b2b45be2c7ce06496c72a90351194858738","fileCount":12,"name":"gopd","path":"gopd","size":9869,"version":"1.2.0"},{"archiveModeSha256":"2f2262ae382d511cef7d373ff151a1a662ae623e50cb17d3a920d9e87593011d","contentSha256":"617f42cde01c4ca5a0bdab28f544a70e5f52c8707daad05016cb789193ba0554","fileCount":16,"name":"has-symbols","path":"has-symbols","size":23409,"version":"1.1.0"},{"archiveModeSha256":"35386dc8ee83de6dc1f61324623e1d9907205a1bd2fa66b02bc7c0429bdf85cc","contentSha256":"e6b281a2b3f6100d9b44f0916c797da53c254e8a38cb357134e80eddf5181a48","fileCount":10,"name":"hasown","path":"hasown","size":10332,"version":"2.0.4"},{"archiveModeSha256":"6c607d433127ab8aa7eae155e5777360167dc436457ed7fbfe66ff391f0988fa","contentSha256":"80a388a8ac69816c8a197451662ccee34e630f835b87f54569ce15251d13dde9","fileCount":568,"name":"hono","path":"hono","size":1391192,"version":"4.13.7"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"b34d2d8fdbf41450767591b746eb2adaa4a22b59aa55c94ef0ce65ff1ba6fe6d","fileCount":5,"name":"http-errors","path":"http-errors","size":19064,"version":"2.0.1"},{"archiveModeSha256":"ebbf4afe2f354dca608d722b77a5b78a4796321b5b3f545634e28e8226b8bf31","contentSha256":"1bef61a4f31d491e5d0a67bbf7b065c43c73fd1c5b724746e9d82c17614d7cb5","fileCount":3,"name":"http_ece","path":"http_ece","size":17206,"version":"1.2.0"},{"archiveModeSha256":"9dd4779bf72d539a68a82b576ad17b2baefadcc508c93ff8b30e42055c411133","contentSha256":"6a8a33d8040c50ec629d17e5f702d4a77fa436ee512eb83e29ca89378686fe40","fileCount":11,"name":"https-proxy-agent","path":"https-proxy-agent","size":27706,"version":"7.0.6"},{"archiveModeSha256":"086f9d977a09c672ced4c2d703944875d8db454fe8fdd7fe8882f0888ed7c20f","contentSha256":"762b205b641d142557d0b3fb5d376d571e7823473661004f6cb319b7c0603976","fileCount":27,"name":"iconv-lite","path":"iconv-lite","size":343635,"version":"0.7.2"},{"archiveModeSha256":"7b3e1bd04c00f38ad3e4f4fb20e65a4eeb707527b4fd7c84ea7764cef9cebdff","contentSha256":"7c50865fdccbf6c6b44600a997d13c0c5c215ded131f0a4c98acd8d15694e632","fileCount":5,"name":"inherits","path":"inherits","size":3958,"version":"2.0.4"},{"archiveModeSha256":"3ef444401f83c959cfda73e7e9fd50d0796f6f141f36f458a3f132b362e6c375","contentSha256":"7d389753e911944e1f77fe63a7c9ee4fc4cff3ba80855e0619f37b1265535459","fileCount":30,"name":"ip-address","path":"ip-address","size":366191,"version":"10.7.2"},{"archiveModeSha256":"a710aacb72996fbfa6d514e678b50cfe4d17619a71648b516a3a09a96479c2c8","contentSha256":"272599141de35d28a1e92b1aec64154c866998a44310163040e6499b6ec1d9c3","fileCount":6,"name":"ipaddr.js","path":"ipaddr.js","size":42145,"version":"1.9.1"},{"archiveModeSha256":"969b492deb1f22a61f85cf9f98cc0f7c1984c3c0fd162d3ba5a600f0f6181ed8","contentSha256":"31aa30a6fbd5f134714c0ae7bc1e4c7a00b1c5bfabd2931e92618a4121bd6fa8","fileCount":6,"name":"is-promise","path":"is-promise","size":2958,"version":"4.0.0"},{"archiveModeSha256":"8f22f331a576ff070646bb75a80918007ff2b93be80520594930dd04865a6e44","contentSha256":"a560d4935c162172bd5feede21bc62536cec616c166de516cd5c367a7ca23f98","fileCount":8,"name":"isexe","path":"isexe","size":10956,"version":"2.0.0"},{"archiveModeSha256":"459debf7e19f725462d4a1f362387fe99734fb32532d103365cd2b07f1e0b2e7","contentSha256":"7769bc6bbdef27f35b50f6b9f40373abc15682cd2a74021a32ba7dc0477b57d9","fileCount":80,"name":"jose","path":"jose","size":210660,"version":"6.2.12"},{"archiveModeSha256":"bdba5b2b7f19b131522a9af3d6cd30db94ee97690d535e5c3c84d1bce068c2a9","contentSha256":"efcb8d289875749e930bf8f745c132edf832c0f9a25768fcd97e129851288174","fileCount":9,"name":"json-schema-typed","path":"json-schema-typed","size":197188,"version":"8.0.2"},{"archiveModeSha256":"ff10e6cc4aff6255784b9c205f1371c4438bab9599745c3908759ced1b05674d","contentSha256":"7bf16a967f01efd4a8eb67b5141b9b40dcd97246c9a7ae16eddeeffa668ee746","fileCount":5,"name":"jwa","path":"jwa","size":14052,"version":"2.0.1"},{"archiveModeSha256":"be8ea0444e41ac59bdae532bcbf2c9b4536a026140bff9691cca783c78df8ddf","contentSha256":"b3de1a21990bafbbb96c32a0d3d100cffd2f962471d80126575d7b544141c476","fileCount":10,"name":"jws","path":"jws","size":18822,"version":"4.0.1"},{"archiveModeSha256":"3353a1cbd727174e11aa6b1a8b1163caeb467c3ac3cad2ddb7d4c230da64bdd8","contentSha256":"251a6d99cfc3364a8732128487bbd422d3964f990fe1755b0b78046b65328731","fileCount":12,"name":"marked","path":"marked","size":469664,"version":"18.0.10"},{"archiveModeSha256":"74a40513091b687e690f49f4110e314302d0b8b3c9f196cf587c9d702c4cd7e9","contentSha256":"a4884adbf4399adaff50d30983c4afa402a1d15b56a371824ea5c7c7cab385fa","fileCount":38,"name":"math-intrinsics","path":"math-intrinsics","size":17323,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ec2d844bc07543d41a6ab6d78008dd2998877609cc16ba532204995fb4339c5","fileCount":5,"name":"media-typer","path":"media-typer","size":9256,"version":"1.1.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"983f0d7028b74df8828007fabcab26e7f36e42fc7db74e321a110f6f40aa3fa7","fileCount":5,"name":"merge-descriptors","path":"merge-descriptors","size":4373,"version":"2.0.0"},{"archiveModeSha256":"2cb256014f7e1eda905b4809694ab3b06e8c1f1c5b78cb4de5da514e4e57659a","contentSha256":"c979d86230ca6688633d5ef7c89397f312c6d556a1964cb8dfe33596b8b548b9","fileCount":6,"name":"mime-db","path":"mime-db","size":225566,"version":"1.54.0"},{"archiveModeSha256":"20c4497e7b68189571962123cabb12dc852bb2346c45deed91c081c899659249","contentSha256":"28ee29177b736969ce0a555c11ae5275280510007a2670dcdd7ea6b1868f46c3","fileCount":6,"name":"mime-types","path":"mime-types","size":22871,"version":"3.0.2"},{"archiveModeSha256":"5c62e885ad756e5562d71f3654e9cefe4925b296222e7ea54305bcacc92cadcc","contentSha256":"4f6e35f9ad255b4cdc78d7591e31e9849d2558f2dab3b747dada5b4d9ae7b2ce","fileCount":4,"name":"minimalistic-assert","path":"minimalistic-assert","size":1547,"version":"1.0.1"},{"archiveModeSha256":"8ab60579c166458c934cd3c7883cb688b1efc82a28da6969bbb9f6a67e200871","contentSha256":"9fb569694d9233686e1c375812fade8799bfc79c493af4b3165db7359697a432","fileCount":24,"name":"minimist","path":"minimist","size":54477,"version":"1.2.8"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"46d898fe1f0594d49333d4bc32bce63349d6f124c78dfc3eda96c9f9b2f796fe","fileCount":13,"name":"minipass","path":"minipass","size":366791,"version":"7.1.3"},{"archiveModeSha256":"78b1977130401dbbba561837630370f3061275bb5a1963454b5f092e3cf208fe","contentSha256":"19c7cff62b036e6f0aad440e776cc94134bb6434c0c96939de864df88e2b0f21","fileCount":21,"name":"minizlib","path":"minizlib","size":117811,"version":"3.1.0"},{"archiveModeSha256":"20014b85b0431588ccd9c0e6c6afeffc10e21d0ee7de53e2ba2296fd52bb1a7c","contentSha256":"667f3d7d170cb303a69e67dc3a69a08255a3e5cfb8703f4904417b0362bc0d28","fileCount":4,"name":"ms","path":"ms","size":6721,"version":"2.1.3"},{"archiveModeSha256":"5602cdc50f925bdc25002fe3756f55c3e1117229d22c2b2c600e8ffca90295f6","contentSha256":"84851509ca06e7b5b721720762592fa23f696ba1d72172dbc1e692c1dfa7b567","fileCount":9,"name":"negotiator","path":"negotiator","size":28710,"version":"1.0.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"501ecc61ad148476eb5316bad6418e95bb6ed9bfc794c23fcec15bc2c592ccf1","fileCount":4,"name":"object-assign","path":"object-assign","size":5493,"version":"4.1.1"},{"archiveModeSha256":"e3c2f2fe74f79d600564d5d6af9a6bd278aee46db5e0ec18493cdc9d895e0bbf","contentSha256":"7d76d46a138318bcabde842b6a8b994da11a2e3d2e8ecbc0f8780f50e17f2ca8","fileCount":34,"name":"object-inspect","path":"object-inspect","size":102920,"version":"1.13.4"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ffb31d328870b95d8218c54f26f73d6e122847c7289052f57bf1569b0027593b","fileCount":5,"name":"on-finished","path":"on-finished","size":13679,"version":"2.4.1"},{"archiveModeSha256":"71f44c60c38bc2c3e17382504bf0dae39045eeec535cf6f4e1283e0514e8c2f4","contentSha256":"dc238bfc47820f9fb5bb56f1f3aae901657074482f52f91545784f041efb0210","fileCount":4,"name":"once","path":"once","size":4046,"version":"1.4.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ca67e36d858cdb2f3a4eefd00d0bf7284143c1241b9ad06feec17799fc587638","fileCount":5,"name":"parseurl","path":"parseurl","size":10299,"version":"1.3.3"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a3945cbf1aaf19b6dba601c948b6522566517f9b9f4181c964d5a0d8ee34270e","fileCount":5,"name":"path-key","path":"path-key","size":4553,"version":"3.1.1"},{"archiveModeSha256":"1514e7595cbbb9d1902c24ce60454e544df780b8fc73b7967218c3491dd3cefb","contentSha256":"17d110a00db54cd903aba2283f1d027f5acfbf7ce0003590c3abeb6059b5d221","fileCount":6,"name":"path-to-regexp","path":"path-to-regexp","size":59680,"version":"8.4.2"},{"archiveModeSha256":"f0a8527de334749bd26e70302ee03517ec50ff590e93cb3ea9a45ce4124a3829","contentSha256":"d5a9fd4846acac4b5ce086c88eca29de645c535aeee06df4a99a69cf4317e397","fileCount":10,"name":"pkce-challenge","path":"pkce-challenge","size":18211,"version":"5.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d05e2db9e9d803ea440dd46461d51f482ed09978f2688eeda51a5711f1f41320","fileCount":5,"name":"proxy-addr","path":"proxy-addr","size":15399,"version":"2.0.7"},{"archiveModeSha256":"4b5245122a4b28c41d7b89f626cf63f7144b2c2f904b5172c310d349cc118f3d","contentSha256":"b315803097e91d2d87a27e889076319f94fa39d4c467ed13cdd952872f72f369","fileCount":6,"name":"pvtsutils","path":"pvtsutils","size":40763,"version":"1.3.6"},{"archiveModeSha256":"ac6fe9f4a4ddae2bada0a343c529d6b272f0817b60373a992b7fb4498de5a981","contentSha256":"49a8a5de665cc819654ea0f5209ba05d06c03e05cfd79018fa22182b308166c6","fileCount":6,"name":"pvutils","path":"pvutils","size":31508,"version":"1.2.0"},{"archiveModeSha256":"5ab250cd90dfced7c9429dd43d78846951b7b961947594e9f5175faee4c88a56","contentSha256":"fc8bdb9e912132fa5d83b22283d4f7f816f2e24a36761387e13cd942024186c1","fileCount":20,"name":"qs","path":"qs","size":374851,"version":"6.16.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d12cb812790fa7b85393df185775b6c9ad8d05fd313f2b31cfb817d6296b1888","fileCount":5,"name":"range-parser","path":"range-parser","size":8457,"version":"1.2.1"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8f8dedbaf8d48e5de26e87910168aa505b7403e4c7739edc953cf5b25240839c","fileCount":5,"name":"raw-body","path":"raw-body","size":18495,"version":"3.0.2"},{"archiveModeSha256":"cf88bfb021eb4086d1a77f928d8d9f49df4c87e24501c407ac4c7efc3afdd5c0","contentSha256":"ef2d0d4262deb91eb943df5c01f589465f2f76f478dfe10dadea1fdb56cc0122","fileCount":11,"name":"reflect-metadata","path":"reflect-metadata","size":241158,"version":"0.2.2"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"4d281fcce32339c1f532a6e128db448b5d4c02ff371243a5c5696b40c86d3680","fileCount":4,"name":"require-from-string","path":"require-from-string","size":3422,"version":"2.0.2"},{"archiveModeSha256":"e09f32c46d1a5885aae361e487ce603fd60a9fbff1d5dcaab0f6236f971a9837","contentSha256":"99b97f87c5ffc0951428a30eea4a95cbe83f9a70122dbcc8a4b2e7634f8e8dcd","fileCount":7,"name":"router","path":"router","size":46851,"version":"2.2.0"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8a77266368534090e5247da215d5f5237ac354e775e050287d324009c039fdef","fileCount":5,"name":"safe-buffer","path":"safe-buffer","size":32101,"version":"5.2.1"},{"archiveModeSha256":"a462b8a4b54a0e6b8dcfc3d87612450f34478e7dc5845d4b16f239a578821a2c","contentSha256":"e075173c0c6569f0b806c5802462e19b25ed330b11040151ca5e0d8ea9e276d1","fileCount":7,"name":"safer-buffer","path":"safer-buffer","size":42299,"version":"2.1.2"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"3a396c8597fbbc013b13e4cf5dd7f05f798ee9809ad21d3966616d4f50964f02","fileCount":4,"name":"send","path":"send","size":32200,"version":"1.2.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1724d9fc1a50078597419e4a1014f0d179522a46ed0e2a3a94b71f2f78575513","fileCount":4,"name":"serve-static","path":"serve-static","size":14335,"version":"2.2.1"},{"archiveModeSha256":"e1fd687bea7843794dae9ff84fa5a22ca00f6bea6583da85ed3e27d3d8444230","contentSha256":"db27148aba2fa1340dc867179dbccee745a7311c870a68bee4cea1e3fe2f3f8a","fileCount":6,"name":"setprototypeof","path":"setprototypeof","size":4025,"version":"1.2.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"6754ac701a5f6a41aface06678b945984b2c4088d9c81a9beae10d2f236ebbad","fileCount":4,"name":"shebang-command","path":"shebang-command","size":2556,"version":"2.0.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a793c341e7bf38ef241be3075c0420da5b2c2df9c71b3aa64f16e8d80751acac","fileCount":5,"name":"shebang-regex","path":"shebang-regex","size":2828,"version":"3.0.0"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"28e3e44b391a232fea118591ef73556f7f3bd207d35a4fa6c2d8b04bf11be322","fileCount":12,"name":"side-channel","path":"side-channel","size":22864,"version":"1.1.1"},{"archiveModeSha256":"d7170194465bf2624edfb7844fea886827d0f714bb09d49567d5c7a1c3ce78c0","contentSha256":"6959587507edce3ca38987daa64c966a2f802e6ef85b8c9f96e36b51b7d63752","fileCount":13,"name":"side-channel-list","path":"side-channel-list","size":16973,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"c69ec67d49924576f5b78d598fe950d7a9464c1c61ad256cbebcda7641e1630a","fileCount":12,"name":"side-channel-map","path":"side-channel-map","size":13348,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"3f830eae8141c06d7395d4c9ae072ae767e98aace4720762ebded0ae32fca96c","fileCount":12,"name":"side-channel-weakmap","path":"side-channel-weakmap","size":14667,"version":"1.0.2"},{"archiveModeSha256":"c0228c165b333628d8971a1ebdeb334786829db2fa1c9cb6ba374a9214cd4d11","contentSha256":"0b9e6a3e2e50328afbb9254550c688707172bd481eb1084c02af1456aa803249","fileCount":6,"name":"statuses","path":"statuses","size":12505,"version":"2.0.2"},{"archiveModeSha256":"fbfe9587c1875404cd616f4b49a10531431b12aed0b44210e21f3459beb3eacd","contentSha256":"6d854be5694f54f83a7cec190bcd141318a1c8a78df8b42ab64fbae2c5dc4518","fileCount":249,"name":"tar","path":"tar","size":2298662,"version":"7.5.22"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"7db31cac4d54315057535dd080e4423ab16e09e9161e8b83191c58e2a90f7ea5","fileCount":13,"name":"yallist","path":"tar/node_modules/yallist","size":80297,"version":"5.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"0c7b3b8db791f787793c0968ec6f6b9dc48d14783c4c34ada0e0475eb3c011d4","fileCount":5,"name":"toidentifier","path":"toidentifier","size":4685,"version":"1.0.1"},{"archiveModeSha256":"4bec7726bcb940cc7a600d0ebe750612cc5069cab66f9b6551d4a84409539779","contentSha256":"f9e5c3507d15bde5ae921f4eae73e5214613707027c461cd003f2e09c246358b","fileCount":14,"name":"tslib","path":"tslib","size":90359,"version":"2.8.1"},{"archiveModeSha256":"e730b7023b139a3b6ce90591b165e4293232d46c7a788e06d9f430f41ddc558b","contentSha256":"e90807028edaed25777c7232b6e0230401d41f2344339045226b6bf4c33c5dac","fileCount":168,"name":"tsyringe","path":"tsyringe","size":148573,"version":"4.10.0"},{"archiveModeSha256":"5e66de11ef59789cfb14af7010e423d1c8fd600f065cea607c3acdf241deac75","contentSha256":"3222071ca73f1a4c054e1077d0f6743f310384e31c4618702b5de1bb629e172e","fileCount":13,"name":"tslib","path":"tsyringe/node_modules/tslib","size":33965,"version":"1.14.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"79ce0363e01b714db55735699052b2534d0f6ef84d785b137323647cf779657a","fileCount":5,"name":"type-is","path":"type-is","size":21269,"version":"2.1.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"type-is/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"99534b97972283845db4ef41d39156d6720030a2307f2f0649a7f1c8fabf68c6","fileCount":5,"name":"unpipe","path":"unpipe","size":4311,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"880e12feeb6220ce4cdb0bd7f19ddb9d693666a77059502e9d667e06b3e04ce8","fileCount":5,"name":"vary","path":"vary","size":8747,"version":"1.1.2"},{"archiveModeSha256":"b16ad4f43f64c0fd957663c6500efa74920507fe7741cf9f6ec06b005074af00","contentSha256":"3fb43edf3b937e44a701cbe4c04959282028dbe08a3a2b99f880815ea07f6392","fileCount":11,"name":"web-push","path":"web-push","size":48243,"version":"3.6.7"},{"archiveModeSha256":"8fc892f4d8b9a44a1bfc252b556ebb01d424366ec71fb56f8b0fc2b81bbb5897","contentSha256":"dbe8a52a4c488ed54e7b60f93f89947ff828f9786a804b40a049152c35a47132","fileCount":5,"name":"which","path":"which","size":7308,"version":"2.0.2"},{"archiveModeSha256":"4b84777e08ccbe4ad45474b4248dc37be2c73b6467d369958cc06ca38507a13f","contentSha256":"4f5c30f228b020aca343e88dc0b15af855173a168663e687afd72c58cf586b99","fileCount":4,"name":"wrappy","path":"wrappy","size":2961,"version":"1.0.2"},{"archiveModeSha256":"d06a853b8839d4e73614533e2e780f5b1c821f7f1690bfb0ab185285e9ed54e8","contentSha256":"20d843b3c459de1853239c8e5dd0db463c5e5e18920e93638f0f39f3d5d4c894","fileCount":233,"name":"yaml","path":"yaml","size":686297,"version":"2.9.1"},{"archiveModeSha256":"b98a45815677c477e01457344c56184f50841e90f1f78c98f47d4f631140c4f3","contentSha256":"eaed4b517e605755ecde1e008133c5418c238657a3236735a1053f00b4a7e58b","fileCount":718,"name":"zod","path":"zod","size":4558122,"version":"4.4.3"},{"archiveModeSha256":"224107ce4653d3b406ca40837a05712425b14ff999773673d516eb31d8e9a34d","contentSha256":"d45857bb67c09b95d65c081b1afc095fcfd8d3e8d8bc3b57f645a1f369b1ea04","fileCount":130,"name":"zod-to-json-schema","path":"zod-to-json-schema","size":219264,"version":"3.25.2"}],"portability":"platform-independent-no-native-or-install-variance","rootDependencies":[{"name":"@modelcontextprotocol/sdk","requested":"^1.30.0"},{"name":"@simplewebauthn/browser","requested":"^14.0.0"},{"name":"@simplewebauthn/server","requested":"^14.0.3"},{"name":"jose","requested":"^6.2.12"},{"name":"marked","requested":"18.0.10"},{"name":"reflect-metadata","requested":"0.2.2"},{"name":"tar","requested":"7.5.22"},{"name":"web-push","requested":"3.6.7"},{"name":"yaml","requested":"^2.8.1"}],"schemaVersion":2}
1
+ {"algorithm":"sha256","assurance":"packaged-build-byte-observation","inventoryDigest":"46431e1193022b4ab8e64955c5794612278cd40977e3533362f8cc57a8baba8f","package":{"manifestSha256":"fa25ac4e585abbb3884ba9a70c20fabfff5f9676ccb2a4366beb384a2c16f31c","name":"@ashlr/hub","version":"3.22.1"},"packages":[{"archiveModeSha256":"3989ca11ade2862dbbb56f43f317f44b4a4d4e6871e5b4959ca278f7329bf54a","contentSha256":"bf9092cb79a9132842bfc4b7e78e450aec1ce2be4b63ddfbf1596d69575b29dc","fileCount":13,"name":"@hexagon/base64","path":"@hexagon/base64","size":31309,"version":"1.1.28"},{"archiveModeSha256":"e593537ea027a53342e9c95325f3823e507298732511cd61c314537000cb008c","contentSha256":"39703185cd013059db3eb5ac351625fa9dfd1eef0509fb47ff04fcc0a4cec6f5","fileCount":25,"name":"@hono/node-server","path":"@hono/node-server","size":120353,"version":"2.0.12"},{"archiveModeSha256":"f331e808f8ff6d9d2e9cbf1ad1bc05f35c36b7ac1489084d24460c345a354819","contentSha256":"ef4367c4587f87b13b688ecafe7010c2764623bfbf1f386a1943d7392f545551","fileCount":13,"name":"@isaacs/fs-minipass","path":"@isaacs/fs-minipass","size":100617,"version":"4.0.1"},{"archiveModeSha256":"564250e59c25ad9aba73c52baadea6ef8ae64b73a57a7f3de5641b82c2d9f361","contentSha256":"633e4c0a4dcd51b47b65aa3929821db0ac293bf82e363081eb31aef72c368554","fileCount":17,"name":"@levischuck/tiny-cbor","path":"@levischuck/tiny-cbor","size":51268,"version":"0.2.11"},{"archiveModeSha256":"212ef6ab48b10cfc61481fdb4d517d5aefa8a9e78f321c9483e13f8f0854aade","contentSha256":"54ecfe6624026e35139d2f943de8626043145c82c1d6580882a4adf4ee6b3c90","fileCount":693,"name":"@modelcontextprotocol/sdk","path":"@modelcontextprotocol/sdk","size":4322438,"version":"1.30.0"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"@modelcontextprotocol/sdk/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"@modelcontextprotocol/sdk/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"ccff57d2f44a23de1e5695a3fad11b6949fee5afeb1b0f62b02cdbfc3ac3cc58","contentSha256":"f242261f21aeca45aecc8b7784eecaa345241c00e807e2806e3d6bfc548e24d7","fileCount":15,"name":"@peculiar/asn1-android","path":"@peculiar/asn1-android","size":66394,"version":"2.10.0"},{"archiveModeSha256":"77b6b63e5cff5358c5a70e15f7e7466ee136d0399e0200ebb077ae089bd1fcab","contentSha256":"28e13c3855ac738d55b6224267fce7403b05929bfe96eea7b1e772b4ff1d9a9f","fileCount":6,"name":"@peculiar/asn1-asym-key","path":"@peculiar/asn1-asym-key","size":14474,"version":"2.10.0"},{"archiveModeSha256":"5ae7fcc7ee1b80bbcb81c82588194892c4c520fa311d6263377837c7b17b8d08","contentSha256":"a1800470a234089b8f0f568f4b155eb7d05ee46d98048ee0cce18c7f0d350ec6","fileCount":81,"name":"@peculiar/asn1-cms","path":"@peculiar/asn1-cms","size":101373,"version":"2.10.0"},{"archiveModeSha256":"64f9bfab3297979b94cf2901a6739cde3c6cbcd570d8e127ef7365a27f6f6be5","contentSha256":"9c56eed464e0729099451fd0f697d2dbfca102c8fa59d7029e41f5e4036f1585","fileCount":15,"name":"@peculiar/asn1-csr","path":"@peculiar/asn1-csr","size":12426,"version":"2.10.0"},{"archiveModeSha256":"2dd278ef63f134a2964518ed7a16b57632605507ca42debb9c62d63973aecde4","contentSha256":"5ad68e01f18d35b31487aef2d613d9856f2c72d9540d4f430cc7218de330bc71","fileCount":24,"name":"@peculiar/asn1-ecc","path":"@peculiar/asn1-ecc","size":28037,"version":"2.10.0"},{"archiveModeSha256":"d94cade125627b69c85ceb0cf024888f479f0b2a5ce74317ebca8b54906d74b4","contentSha256":"c99a67a8cf4db7689c9f5de564f5c7d8c5d675f2add6dfd61a55351916068982","fileCount":45,"name":"@peculiar/asn1-pfx","path":"@peculiar/asn1-pfx","size":31533,"version":"2.10.0"},{"archiveModeSha256":"8891822730cfdb4d1bf68b32d57efde01eca8cc2adfaf572ebe9151b700bb13e","contentSha256":"af357c9c23109f31f92dd604bf1e1fc4dd9d60303cd6a5100ddb1e2979f1032e","fileCount":12,"name":"@peculiar/asn1-pkcs8","path":"@peculiar/asn1-pkcs8","size":10556,"version":"2.10.0"},{"archiveModeSha256":"77b6b63e5cff5358c5a70e15f7e7466ee136d0399e0200ebb077ae089bd1fcab","contentSha256":"16a07af47b05b9ef9d8bd98aebc51f6ed6fbf3a989d50c46a9818646f188299a","fileCount":6,"name":"@peculiar/asn1-pkcs9","path":"@peculiar/asn1-pkcs9","size":48447,"version":"2.10.0"},{"archiveModeSha256":"f947d5cdc4be429ae2da7b7e67122d73d46401739fe2f9cd02df2e381303cbd7","contentSha256":"f1a266455e54849253866c6b58470037beeb35de2d40dcbfcb06f96bdcb84a52","fileCount":33,"name":"@peculiar/asn1-rsa","path":"@peculiar/asn1-rsa","size":40069,"version":"2.10.0"},{"archiveModeSha256":"95b93df411504654194c9072a8fe7f1c772b03b3b2d5c0f8d0fce23d0a4d8ecb","contentSha256":"b80eac1247f1c62f0636de547bb7250875a5198f38e2bb729884d10d55523179","fileCount":54,"name":"@peculiar/asn1-schema","path":"@peculiar/asn1-schema","size":110103,"version":"2.10.0"},{"archiveModeSha256":"1652f07d60133db7942541f6b9a23cb385b28e95f8bb074a8190044eefbb12e4","contentSha256":"81286ee1e26b93c1c5cfffb3ddad18a3dbc2978f48edc7c65df565c38d1f09b3","fileCount":132,"name":"@peculiar/asn1-x509","path":"@peculiar/asn1-x509","size":171517,"version":"2.10.0"},{"archiveModeSha256":"95a249ca922df7d7423f4812b52bb25486c1e341370c0fb125068dd1148f89ba","contentSha256":"512ed3cd01e02c213b12cf98a01779a785e8ade73141117a8a22f871e7396d84","fileCount":66,"name":"@peculiar/asn1-x509-attr","path":"@peculiar/asn1-x509-attr","size":61132,"version":"2.10.0"},{"archiveModeSha256":"bd35fff6e7b459fded02ff7b016c32d689fb79a169248fccea6e694e38ef9b8a","contentSha256":"54411ebe036e4c57988f045e443d51f2676403325f48a0b940603ce2af5905b9","fileCount":15,"name":"@peculiar/asn1-x509-post-quantum","path":"@peculiar/asn1-x509-post-quantum","size":19447,"version":"2.10.0"},{"archiveModeSha256":"30cbdfa79878072c6b89ee043732c4ea229dba085e472294a73a77a1d15b2a43","contentSha256":"b709387fad289874086122dfa41cb562080a9d1130b0f09c3cb469b426c6970b","fileCount":82,"name":"@peculiar/utils","path":"@peculiar/utils","size":146759,"version":"2.0.3"},{"archiveModeSha256":"85b3c4dec56c6d10d3e5e069fef60ddc98cabf6eddd2e591cf3245296b6f616c","contentSha256":"5499b1f2a0e6f785e84e8bdbd13d864864d5d2d0dd19d4a8947ce55077c303b5","fileCount":7,"name":"@peculiar/x509","path":"@peculiar/x509","size":589994,"version":"2.1.0"},{"archiveModeSha256":"03b45a1916466b990e8b8770b9cebca200aeddf9ee7cef1a70bd24ba788f83d6","contentSha256":"a4771178bb49c8aaae336aed7b66072cb1e51359efc2c9a377c576a58dca0f06","fileCount":133,"name":"@simplewebauthn/browser","path":"@simplewebauthn/browser","size":295234,"version":"14.0.0"},{"archiveModeSha256":"4f40dee16b9b84b329362695c38a2a688dfab3efafbbbc9c4c9c61efa65c7acc","contentSha256":"2bcce3874edfede49245b18a1bfe57a140abd36cb1504f070481ca40e62701f1","fileCount":449,"name":"@simplewebauthn/server","path":"@simplewebauthn/server","size":779310,"version":"14.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"93bc4d919570486c9dac1184c65d89802a5d7e5e51d2ad2c9c79e9229b0d2bfd","fileCount":5,"name":"accepts","path":"accepts","size":16917,"version":"2.0.0"},{"archiveModeSha256":"59731ad36f82822637c7da5fa7658d92982025dbc9421d168d3bac4b1c07ceca","contentSha256":"3f3c3c546609fdbb82cce00b944cdd6e72087f5d0047e9a477662babb5da2827","fileCount":11,"name":"agent-base","path":"agent-base","size":23962,"version":"7.1.4"},{"archiveModeSha256":"338fe03444b2468ffb84fa0a62e4ad26985fbe9063f5b6500fc00baab52687a7","contentSha256":"a570e5cd740441f9e2ad9e20aab09d6ff5f01c54b5ca63889fb9cc65aa22ed38","fileCount":15,"name":"ajv-formats","path":"ajv-formats","size":56763,"version":"3.0.1"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"ajv-formats/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"ajv-formats/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"1d49823e6f1c98750741be70748b0d239c14608939bdf28b0891165833819c98","contentSha256":"f5f5d61a0e801f085236bd6f04a42d00b9072b07bd7bcaf15eb9ba5f0365a518","fileCount":18,"name":"asn1.js","path":"asn1.js","size":49847,"version":"5.4.1"},{"archiveModeSha256":"4b5245122a4b28c41d7b89f626cf63f7144b2c2f904b5172c310d349cc118f3d","contentSha256":"107b880fe0efe617228e574d1f11eefc14a9049ef6eb11f48bef13e952cffaee","fileCount":6,"name":"asn1js","path":"asn1js","size":288975,"version":"3.0.10"},{"archiveModeSha256":"7efdb100fd711ae8eff00a8dd0b433b4a02cb2d3a1a7c9bf3db892b568f0370c","contentSha256":"92048873c2cdae45b41e636e982e70b1d21241496e667db51dd652150b9b59a0","fileCount":6,"name":"bn.js","path":"bn.js","size":100218,"version":"4.12.5"},{"archiveModeSha256":"99258e0ccfd899459bc7f95949a5bec9039234f80f0a96cfbf7de4cfd9deaad9","contentSha256":"e6f71097d1bf22309cc2010ba116320dbe0b37b53af324631969ccef03817448","fileCount":10,"name":"body-parser","path":"body-parser","size":42536,"version":"2.3.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"body-parser/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"cecd2d34869c1d2a0985573575c404d29decb6568aff83c8ecdf529eeb363394","contentSha256":"6f3200d042a69fc931c79e82c4347de8968faf7f678090921dc51a9e16a19de0","fileCount":7,"name":"buffer-equal-constant-time","path":"buffer-equal-constant-time","size":5232,"version":"1.0.1"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"048d4140095d01f76e5d5a576d5a10de4e1cebcc64cab6ea49f14afc54939be6","fileCount":5,"name":"bytes","path":"bytes","size":12270,"version":"3.1.2"},{"archiveModeSha256":"df415aae8a21af7234f013c4d934c5074b07e617f6189084a43c78a49bafcb78","contentSha256":"870b383c07315fef9619399c2450297d079b1398583984a5ccb9cd2b1005cb59","fileCount":21,"name":"call-bind-apply-helpers","path":"call-bind-apply-helpers","size":15952,"version":"1.0.2"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"01be39d7156b173ffe2869dcd589e2080dcf2f1bcbcfa2f20409582ccb21cfaf","fileCount":11,"name":"call-bound","path":"call-bound","size":17106,"version":"1.0.4"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"e1ec1eb1cc0367f01e1e8a9a8366d040942612a277ba4034707a130d6d70a0ce","fileCount":13,"name":"chownr","path":"chownr","size":22048,"version":"3.0.0"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"4f967d79760cd06bcfdbf918d30b3a77752d03e6e76582aeac4b3a81dcd6a6a9","fileCount":4,"name":"content-disposition","path":"content-disposition","size":19928,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ad93015c6082464b41e63397fc9ee739d6bb7cb93755c9fbef749cff39b8675","fileCount":5,"name":"content-type","path":"content-type","size":10471,"version":"1.0.5"},{"archiveModeSha256":"2048aee59eb971a928e2fcac3881a222b2c9140ec980dfd14756de04a3885902","contentSha256":"ca8dd7ddd6a3970df6e3efff74247cd6f985dfdcc596ac0f58cd50c5b88555e8","fileCount":5,"name":"cookie","path":"cookie","size":23382,"version":"0.7.2"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"360601ff3d56cfdb8de7d836940caa5d74a437474129017697aab4696fc84e03","fileCount":5,"name":"cookie-signature","path":"cookie-signature","size":4993,"version":"1.2.2"},{"archiveModeSha256":"3bf3b01496f9ce98ec5c58c595c317975f470de6da6599d5d405c60c294f12c6","contentSha256":"9a628bd867c40f8bd4753d84f5f364a5ce92fcdd73fb164977d566275580786e","fileCount":4,"name":"cors","path":"cors","size":19956,"version":"2.8.6"},{"archiveModeSha256":"0c4b2570bd695c455ca6e9f67aaabdf88b1d486e39e9e52f4b8cc0c595e08f33","contentSha256":"9666a5f3074e7ff71dab89ccc0fecd79699b6c68e85087cc3416e9b220e9369e","fileCount":9,"name":"cross-spawn","path":"cross-spawn","size":16094,"version":"7.0.6"},{"archiveModeSha256":"fd7ec5fdf7ea41f349416d375406faf41b35702e2e23f02d2c015acb72adc8f2","contentSha256":"e9f41fdd4e55dc936295270bdb7c994d9ad85dd2bd6f2fb3d46767a16ee1a03e","fileCount":7,"name":"debug","path":"debug","size":42793,"version":"4.4.3"},{"archiveModeSha256":"bb32a6d3c5b9088943cd629938024c4c8d207814db8194313063fe3844cbbc8c","contentSha256":"cfc74892a99b215bdc61d9817f90b235318267ddbf8a29ef52b2906d8b26e980","fileCount":6,"name":"depd","path":"depd","size":27117,"version":"2.0.0"},{"archiveModeSha256":"305af32d2ba2d5fe89c9acaa17537f1a06e7e131bf81112cb11d623fdbb9c6f1","contentSha256":"5c4728d83554a1fc2fd51c01cf2d30bb89adbe1c6469a52201eed72b68af0f91","fileCount":15,"name":"dunder-proto","path":"dunder-proto","size":13003,"version":"1.0.1"},{"archiveModeSha256":"26b84899ae55cef52403949f89ade897a671322fa1a2bcab8218098a89f3b2cd","contentSha256":"693630b35d4652f68db4f943ea27c327fba22a6a2fa477189e36070c9538cd67","fileCount":7,"name":"ecdsa-sig-formatter","path":"ecdsa-sig-formatter","size":20588,"version":"1.0.11"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"bae9f4988b2d279e16b4bb3e5527647300137f2978aef97f40acd1b453a8d5a7","fileCount":4,"name":"ee-first","path":"ee-first","size":6259,"version":"1.1.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1c50e3d3cd38c66e1e462f0004781f789e59959aec798aef31f9a2f049d216e5","fileCount":4,"name":"encodeurl","path":"encodeurl","size":6980,"version":"2.0.0"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"a2dd73d6e2d58eda48469112f2eacae1fec583f84f72643b3593c6092bd3e877","fileCount":11,"name":"es-define-property","path":"es-define-property","size":10217,"version":"1.0.1"},{"archiveModeSha256":"23a440c46333c31a4ae0a1ffdc2ec6db818da1c36a039abc189b118e1bcdc625","contentSha256":"fd08a46013bf09d90a2240c6a8a97f12ff7106507456c73e7db53f608b41214e","fileCount":22,"name":"es-errors","path":"es-errors","size":12324,"version":"1.3.0"},{"archiveModeSha256":"b6b95f08bcc5f254eddbff61393e6efa09637b9fe2996a163d3c2c71c28bb681","contentSha256":"893e26d760872fd0c233391eff242a717320d6b2d6ab004ad827d1dd6c517ea5","fileCount":16,"name":"es-object-atoms","path":"es-object-atoms","size":11967,"version":"1.1.2"},{"archiveModeSha256":"764d64b5de2e2faa2387d92a5ed5dcbc1822797787a67ee46e827d4d353a2cb5","contentSha256":"27b564cee7701979ecc9ba3ad9b57c4eb185ddfe14f6fbef7961b9d95fc51789","fileCount":4,"name":"escape-html","path":"escape-html","size":3660,"version":"1.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"53b09a946276069cc9e202851404809b0b27f9616f6398ba1ba053cf27a9b61f","fileCount":5,"name":"etag","path":"etag","size":10809,"version":"1.8.1"},{"archiveModeSha256":"15cc21147f13500c581198be8a82187d7d2cd38a2c23b9459c89f22990a5b971","contentSha256":"fda71ef638beebe2ebae12fe705f63cb2276d6b35564064714ad352727e6f0a9","fileCount":13,"name":"eventsource","path":"eventsource","size":147304,"version":"3.0.7"},{"archiveModeSha256":"57e54f8cb946a2072d2c928cce29ff71a0383916edbb50e97042f859f043677f","contentSha256":"57456c2bbbfd8965c4466cf8a120581c6de9c67c1e04bf815189370f5f76ec3f","fileCount":21,"name":"eventsource-parser","path":"eventsource-parser","size":123218,"version":"3.1.0"},{"archiveModeSha256":"e882878862f5bfd4ff0cb5120df0b9e29758544fabad522563cc91a5102513a0","contentSha256":"c4cccb2f6077128bc31e51f7f772663988796261352298821eea234de1f42281","fileCount":10,"name":"express","path":"express","size":75429,"version":"5.2.1"},{"archiveModeSha256":"0f783761dfb7c14c80535b5a3d2f282398f8621985ed04be794ef3144740784e","contentSha256":"332479fcc3eaa25713fa7df0d4e3a953b7a008fde6413d4278aa667d7e4473e1","fileCount":9,"name":"express-rate-limit","path":"express-rate-limit","size":146332,"version":"8.5.2"},{"archiveModeSha256":"78e09d25ac30efc25d5604344654f3158820dbd9d45a1900b9f44e0e500839cf","contentSha256":"5ca43c0737026213eee30eb17e40859c918af2ae30f16d3882fdfbd8bcb03afd","fileCount":11,"name":"fast-deep-equal","path":"fast-deep-equal","size":12966,"version":"3.1.3"},{"archiveModeSha256":"f75ddef45cc69b6bfbcad49bde00345a7e27f27d03cd67d1083d2a334122fc1a","contentSha256":"1707fce0cba6bb69967de7e86cbb4a5dd1e3fa40ab2528323fb727eae96da2e8","fileCount":44,"name":"fast-uri","path":"fast-uri","size":220886,"version":"3.1.8"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"a184198d4d20e0177fd4f9e5d82bc40d34143c3a8279e7200511905b08e91d1a","fileCount":5,"name":"finalhandler","path":"finalhandler","size":18111,"version":"2.1.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"5a3882ea4acfd16ac4851f43587d6ab87fd08de45665981db6e8ee5944486118","fileCount":5,"name":"forwarded","path":"forwarded","size":5876,"version":"0.2.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"c3d3cc5e56026a726c20ed1d516509608bddb667d5cc999f01cd3971a92e4406","fileCount":5,"name":"fresh","path":"fresh","size":10289,"version":"2.0.0"},{"archiveModeSha256":"6f10ab8235c8a46f648cd17681016bf68595208a48d01f1351bd0b19bcb4301c","contentSha256":"8afcdc5f094efcac14509859ce70157ec7daff89642bc5d604b235f6917dd5b0","fileCount":12,"name":"function-bind","path":"function-bind","size":31427,"version":"1.1.2"},{"archiveModeSha256":"2d4c82c10091157e0f33c6a4a049ef4b2609c8f2a6d70882fa538122b54c1ce3","contentSha256":"1b862b6fe457cd272bb8bce8407ac7f972c857ac317189afe7a29ba378f0f6ac","fileCount":9,"name":"get-intrinsic","path":"get-intrinsic","size":46542,"version":"1.3.0"},{"archiveModeSha256":"995b5a61ce2e3cb963405de061067b699b48e90eb6ce2ac0d88e88bd9c38549a","contentSha256":"3dc759afa7e26cd60cc642b39bffcbd22dd574469e4ac2174cc9b57b97599f82","fileCount":15,"name":"get-proto","path":"get-proto","size":10840,"version":"1.0.1"},{"archiveModeSha256":"169ecf4d0c444e719e5bcd4e912e3ceb193138b5ab7eef8f727798759a4331d3","contentSha256":"6f2eeeb1483b34581df01b15d1b80b2b45be2c7ce06496c72a90351194858738","fileCount":12,"name":"gopd","path":"gopd","size":9869,"version":"1.2.0"},{"archiveModeSha256":"2f2262ae382d511cef7d373ff151a1a662ae623e50cb17d3a920d9e87593011d","contentSha256":"617f42cde01c4ca5a0bdab28f544a70e5f52c8707daad05016cb789193ba0554","fileCount":16,"name":"has-symbols","path":"has-symbols","size":23409,"version":"1.1.0"},{"archiveModeSha256":"35386dc8ee83de6dc1f61324623e1d9907205a1bd2fa66b02bc7c0429bdf85cc","contentSha256":"e6b281a2b3f6100d9b44f0916c797da53c254e8a38cb357134e80eddf5181a48","fileCount":10,"name":"hasown","path":"hasown","size":10332,"version":"2.0.4"},{"archiveModeSha256":"6c607d433127ab8aa7eae155e5777360167dc436457ed7fbfe66ff391f0988fa","contentSha256":"80a388a8ac69816c8a197451662ccee34e630f835b87f54569ce15251d13dde9","fileCount":568,"name":"hono","path":"hono","size":1391192,"version":"4.13.7"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"b34d2d8fdbf41450767591b746eb2adaa4a22b59aa55c94ef0ce65ff1ba6fe6d","fileCount":5,"name":"http-errors","path":"http-errors","size":19064,"version":"2.0.1"},{"archiveModeSha256":"ebbf4afe2f354dca608d722b77a5b78a4796321b5b3f545634e28e8226b8bf31","contentSha256":"1bef61a4f31d491e5d0a67bbf7b065c43c73fd1c5b724746e9d82c17614d7cb5","fileCount":3,"name":"http_ece","path":"http_ece","size":17206,"version":"1.2.0"},{"archiveModeSha256":"9dd4779bf72d539a68a82b576ad17b2baefadcc508c93ff8b30e42055c411133","contentSha256":"6a8a33d8040c50ec629d17e5f702d4a77fa436ee512eb83e29ca89378686fe40","fileCount":11,"name":"https-proxy-agent","path":"https-proxy-agent","size":27706,"version":"7.0.6"},{"archiveModeSha256":"086f9d977a09c672ced4c2d703944875d8db454fe8fdd7fe8882f0888ed7c20f","contentSha256":"762b205b641d142557d0b3fb5d376d571e7823473661004f6cb319b7c0603976","fileCount":27,"name":"iconv-lite","path":"iconv-lite","size":343635,"version":"0.7.2"},{"archiveModeSha256":"7b3e1bd04c00f38ad3e4f4fb20e65a4eeb707527b4fd7c84ea7764cef9cebdff","contentSha256":"7c50865fdccbf6c6b44600a997d13c0c5c215ded131f0a4c98acd8d15694e632","fileCount":5,"name":"inherits","path":"inherits","size":3958,"version":"2.0.4"},{"archiveModeSha256":"3ef444401f83c959cfda73e7e9fd50d0796f6f141f36f458a3f132b362e6c375","contentSha256":"7d389753e911944e1f77fe63a7c9ee4fc4cff3ba80855e0619f37b1265535459","fileCount":30,"name":"ip-address","path":"ip-address","size":366191,"version":"10.7.2"},{"archiveModeSha256":"a710aacb72996fbfa6d514e678b50cfe4d17619a71648b516a3a09a96479c2c8","contentSha256":"272599141de35d28a1e92b1aec64154c866998a44310163040e6499b6ec1d9c3","fileCount":6,"name":"ipaddr.js","path":"ipaddr.js","size":42145,"version":"1.9.1"},{"archiveModeSha256":"969b492deb1f22a61f85cf9f98cc0f7c1984c3c0fd162d3ba5a600f0f6181ed8","contentSha256":"31aa30a6fbd5f134714c0ae7bc1e4c7a00b1c5bfabd2931e92618a4121bd6fa8","fileCount":6,"name":"is-promise","path":"is-promise","size":2958,"version":"4.0.0"},{"archiveModeSha256":"8f22f331a576ff070646bb75a80918007ff2b93be80520594930dd04865a6e44","contentSha256":"a560d4935c162172bd5feede21bc62536cec616c166de516cd5c367a7ca23f98","fileCount":8,"name":"isexe","path":"isexe","size":10956,"version":"2.0.0"},{"archiveModeSha256":"459debf7e19f725462d4a1f362387fe99734fb32532d103365cd2b07f1e0b2e7","contentSha256":"7769bc6bbdef27f35b50f6b9f40373abc15682cd2a74021a32ba7dc0477b57d9","fileCount":80,"name":"jose","path":"jose","size":210660,"version":"6.2.12"},{"archiveModeSha256":"bdba5b2b7f19b131522a9af3d6cd30db94ee97690d535e5c3c84d1bce068c2a9","contentSha256":"efcb8d289875749e930bf8f745c132edf832c0f9a25768fcd97e129851288174","fileCount":9,"name":"json-schema-typed","path":"json-schema-typed","size":197188,"version":"8.0.2"},{"archiveModeSha256":"ff10e6cc4aff6255784b9c205f1371c4438bab9599745c3908759ced1b05674d","contentSha256":"7bf16a967f01efd4a8eb67b5141b9b40dcd97246c9a7ae16eddeeffa668ee746","fileCount":5,"name":"jwa","path":"jwa","size":14052,"version":"2.0.1"},{"archiveModeSha256":"be8ea0444e41ac59bdae532bcbf2c9b4536a026140bff9691cca783c78df8ddf","contentSha256":"b3de1a21990bafbbb96c32a0d3d100cffd2f962471d80126575d7b544141c476","fileCount":10,"name":"jws","path":"jws","size":18822,"version":"4.0.1"},{"archiveModeSha256":"3353a1cbd727174e11aa6b1a8b1163caeb467c3ac3cad2ddb7d4c230da64bdd8","contentSha256":"251a6d99cfc3364a8732128487bbd422d3964f990fe1755b0b78046b65328731","fileCount":12,"name":"marked","path":"marked","size":469664,"version":"18.0.10"},{"archiveModeSha256":"74a40513091b687e690f49f4110e314302d0b8b3c9f196cf587c9d702c4cd7e9","contentSha256":"a4884adbf4399adaff50d30983c4afa402a1d15b56a371824ea5c7c7cab385fa","fileCount":38,"name":"math-intrinsics","path":"math-intrinsics","size":17323,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ec2d844bc07543d41a6ab6d78008dd2998877609cc16ba532204995fb4339c5","fileCount":5,"name":"media-typer","path":"media-typer","size":9256,"version":"1.1.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"983f0d7028b74df8828007fabcab26e7f36e42fc7db74e321a110f6f40aa3fa7","fileCount":5,"name":"merge-descriptors","path":"merge-descriptors","size":4373,"version":"2.0.0"},{"archiveModeSha256":"2cb256014f7e1eda905b4809694ab3b06e8c1f1c5b78cb4de5da514e4e57659a","contentSha256":"c979d86230ca6688633d5ef7c89397f312c6d556a1964cb8dfe33596b8b548b9","fileCount":6,"name":"mime-db","path":"mime-db","size":225566,"version":"1.54.0"},{"archiveModeSha256":"20c4497e7b68189571962123cabb12dc852bb2346c45deed91c081c899659249","contentSha256":"28ee29177b736969ce0a555c11ae5275280510007a2670dcdd7ea6b1868f46c3","fileCount":6,"name":"mime-types","path":"mime-types","size":22871,"version":"3.0.2"},{"archiveModeSha256":"5c62e885ad756e5562d71f3654e9cefe4925b296222e7ea54305bcacc92cadcc","contentSha256":"4f6e35f9ad255b4cdc78d7591e31e9849d2558f2dab3b747dada5b4d9ae7b2ce","fileCount":4,"name":"minimalistic-assert","path":"minimalistic-assert","size":1547,"version":"1.0.1"},{"archiveModeSha256":"8ab60579c166458c934cd3c7883cb688b1efc82a28da6969bbb9f6a67e200871","contentSha256":"9fb569694d9233686e1c375812fade8799bfc79c493af4b3165db7359697a432","fileCount":24,"name":"minimist","path":"minimist","size":54477,"version":"1.2.8"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"46d898fe1f0594d49333d4bc32bce63349d6f124c78dfc3eda96c9f9b2f796fe","fileCount":13,"name":"minipass","path":"minipass","size":366791,"version":"7.1.3"},{"archiveModeSha256":"78b1977130401dbbba561837630370f3061275bb5a1963454b5f092e3cf208fe","contentSha256":"19c7cff62b036e6f0aad440e776cc94134bb6434c0c96939de864df88e2b0f21","fileCount":21,"name":"minizlib","path":"minizlib","size":117811,"version":"3.1.0"},{"archiveModeSha256":"20014b85b0431588ccd9c0e6c6afeffc10e21d0ee7de53e2ba2296fd52bb1a7c","contentSha256":"667f3d7d170cb303a69e67dc3a69a08255a3e5cfb8703f4904417b0362bc0d28","fileCount":4,"name":"ms","path":"ms","size":6721,"version":"2.1.3"},{"archiveModeSha256":"5602cdc50f925bdc25002fe3756f55c3e1117229d22c2b2c600e8ffca90295f6","contentSha256":"84851509ca06e7b5b721720762592fa23f696ba1d72172dbc1e692c1dfa7b567","fileCount":9,"name":"negotiator","path":"negotiator","size":28710,"version":"1.0.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"501ecc61ad148476eb5316bad6418e95bb6ed9bfc794c23fcec15bc2c592ccf1","fileCount":4,"name":"object-assign","path":"object-assign","size":5493,"version":"4.1.1"},{"archiveModeSha256":"e3c2f2fe74f79d600564d5d6af9a6bd278aee46db5e0ec18493cdc9d895e0bbf","contentSha256":"7d76d46a138318bcabde842b6a8b994da11a2e3d2e8ecbc0f8780f50e17f2ca8","fileCount":34,"name":"object-inspect","path":"object-inspect","size":102920,"version":"1.13.4"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ffb31d328870b95d8218c54f26f73d6e122847c7289052f57bf1569b0027593b","fileCount":5,"name":"on-finished","path":"on-finished","size":13679,"version":"2.4.1"},{"archiveModeSha256":"71f44c60c38bc2c3e17382504bf0dae39045eeec535cf6f4e1283e0514e8c2f4","contentSha256":"dc238bfc47820f9fb5bb56f1f3aae901657074482f52f91545784f041efb0210","fileCount":4,"name":"once","path":"once","size":4046,"version":"1.4.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ca67e36d858cdb2f3a4eefd00d0bf7284143c1241b9ad06feec17799fc587638","fileCount":5,"name":"parseurl","path":"parseurl","size":10299,"version":"1.3.3"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a3945cbf1aaf19b6dba601c948b6522566517f9b9f4181c964d5a0d8ee34270e","fileCount":5,"name":"path-key","path":"path-key","size":4553,"version":"3.1.1"},{"archiveModeSha256":"1514e7595cbbb9d1902c24ce60454e544df780b8fc73b7967218c3491dd3cefb","contentSha256":"17d110a00db54cd903aba2283f1d027f5acfbf7ce0003590c3abeb6059b5d221","fileCount":6,"name":"path-to-regexp","path":"path-to-regexp","size":59680,"version":"8.4.2"},{"archiveModeSha256":"f0a8527de334749bd26e70302ee03517ec50ff590e93cb3ea9a45ce4124a3829","contentSha256":"d5a9fd4846acac4b5ce086c88eca29de645c535aeee06df4a99a69cf4317e397","fileCount":10,"name":"pkce-challenge","path":"pkce-challenge","size":18211,"version":"5.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d05e2db9e9d803ea440dd46461d51f482ed09978f2688eeda51a5711f1f41320","fileCount":5,"name":"proxy-addr","path":"proxy-addr","size":15399,"version":"2.0.7"},{"archiveModeSha256":"4b5245122a4b28c41d7b89f626cf63f7144b2c2f904b5172c310d349cc118f3d","contentSha256":"b315803097e91d2d87a27e889076319f94fa39d4c467ed13cdd952872f72f369","fileCount":6,"name":"pvtsutils","path":"pvtsutils","size":40763,"version":"1.3.6"},{"archiveModeSha256":"ac6fe9f4a4ddae2bada0a343c529d6b272f0817b60373a992b7fb4498de5a981","contentSha256":"49a8a5de665cc819654ea0f5209ba05d06c03e05cfd79018fa22182b308166c6","fileCount":6,"name":"pvutils","path":"pvutils","size":31508,"version":"1.2.0"},{"archiveModeSha256":"5ab250cd90dfced7c9429dd43d78846951b7b961947594e9f5175faee4c88a56","contentSha256":"fc8bdb9e912132fa5d83b22283d4f7f816f2e24a36761387e13cd942024186c1","fileCount":20,"name":"qs","path":"qs","size":374851,"version":"6.16.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d12cb812790fa7b85393df185775b6c9ad8d05fd313f2b31cfb817d6296b1888","fileCount":5,"name":"range-parser","path":"range-parser","size":8457,"version":"1.2.1"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8f8dedbaf8d48e5de26e87910168aa505b7403e4c7739edc953cf5b25240839c","fileCount":5,"name":"raw-body","path":"raw-body","size":18495,"version":"3.0.2"},{"archiveModeSha256":"cf88bfb021eb4086d1a77f928d8d9f49df4c87e24501c407ac4c7efc3afdd5c0","contentSha256":"ef2d0d4262deb91eb943df5c01f589465f2f76f478dfe10dadea1fdb56cc0122","fileCount":11,"name":"reflect-metadata","path":"reflect-metadata","size":241158,"version":"0.2.2"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"4d281fcce32339c1f532a6e128db448b5d4c02ff371243a5c5696b40c86d3680","fileCount":4,"name":"require-from-string","path":"require-from-string","size":3422,"version":"2.0.2"},{"archiveModeSha256":"e09f32c46d1a5885aae361e487ce603fd60a9fbff1d5dcaab0f6236f971a9837","contentSha256":"99b97f87c5ffc0951428a30eea4a95cbe83f9a70122dbcc8a4b2e7634f8e8dcd","fileCount":7,"name":"router","path":"router","size":46851,"version":"2.2.0"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8a77266368534090e5247da215d5f5237ac354e775e050287d324009c039fdef","fileCount":5,"name":"safe-buffer","path":"safe-buffer","size":32101,"version":"5.2.1"},{"archiveModeSha256":"a462b8a4b54a0e6b8dcfc3d87612450f34478e7dc5845d4b16f239a578821a2c","contentSha256":"e075173c0c6569f0b806c5802462e19b25ed330b11040151ca5e0d8ea9e276d1","fileCount":7,"name":"safer-buffer","path":"safer-buffer","size":42299,"version":"2.1.2"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"3a396c8597fbbc013b13e4cf5dd7f05f798ee9809ad21d3966616d4f50964f02","fileCount":4,"name":"send","path":"send","size":32200,"version":"1.2.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1724d9fc1a50078597419e4a1014f0d179522a46ed0e2a3a94b71f2f78575513","fileCount":4,"name":"serve-static","path":"serve-static","size":14335,"version":"2.2.1"},{"archiveModeSha256":"e1fd687bea7843794dae9ff84fa5a22ca00f6bea6583da85ed3e27d3d8444230","contentSha256":"db27148aba2fa1340dc867179dbccee745a7311c870a68bee4cea1e3fe2f3f8a","fileCount":6,"name":"setprototypeof","path":"setprototypeof","size":4025,"version":"1.2.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"6754ac701a5f6a41aface06678b945984b2c4088d9c81a9beae10d2f236ebbad","fileCount":4,"name":"shebang-command","path":"shebang-command","size":2556,"version":"2.0.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a793c341e7bf38ef241be3075c0420da5b2c2df9c71b3aa64f16e8d80751acac","fileCount":5,"name":"shebang-regex","path":"shebang-regex","size":2828,"version":"3.0.0"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"28e3e44b391a232fea118591ef73556f7f3bd207d35a4fa6c2d8b04bf11be322","fileCount":12,"name":"side-channel","path":"side-channel","size":22864,"version":"1.1.1"},{"archiveModeSha256":"d7170194465bf2624edfb7844fea886827d0f714bb09d49567d5c7a1c3ce78c0","contentSha256":"6959587507edce3ca38987daa64c966a2f802e6ef85b8c9f96e36b51b7d63752","fileCount":13,"name":"side-channel-list","path":"side-channel-list","size":16973,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"c69ec67d49924576f5b78d598fe950d7a9464c1c61ad256cbebcda7641e1630a","fileCount":12,"name":"side-channel-map","path":"side-channel-map","size":13348,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"3f830eae8141c06d7395d4c9ae072ae767e98aace4720762ebded0ae32fca96c","fileCount":12,"name":"side-channel-weakmap","path":"side-channel-weakmap","size":14667,"version":"1.0.2"},{"archiveModeSha256":"c0228c165b333628d8971a1ebdeb334786829db2fa1c9cb6ba374a9214cd4d11","contentSha256":"0b9e6a3e2e50328afbb9254550c688707172bd481eb1084c02af1456aa803249","fileCount":6,"name":"statuses","path":"statuses","size":12505,"version":"2.0.2"},{"archiveModeSha256":"fbfe9587c1875404cd616f4b49a10531431b12aed0b44210e21f3459beb3eacd","contentSha256":"6d854be5694f54f83a7cec190bcd141318a1c8a78df8b42ab64fbae2c5dc4518","fileCount":249,"name":"tar","path":"tar","size":2298662,"version":"7.5.22"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"7db31cac4d54315057535dd080e4423ab16e09e9161e8b83191c58e2a90f7ea5","fileCount":13,"name":"yallist","path":"tar/node_modules/yallist","size":80297,"version":"5.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"0c7b3b8db791f787793c0968ec6f6b9dc48d14783c4c34ada0e0475eb3c011d4","fileCount":5,"name":"toidentifier","path":"toidentifier","size":4685,"version":"1.0.1"},{"archiveModeSha256":"4bec7726bcb940cc7a600d0ebe750612cc5069cab66f9b6551d4a84409539779","contentSha256":"f9e5c3507d15bde5ae921f4eae73e5214613707027c461cd003f2e09c246358b","fileCount":14,"name":"tslib","path":"tslib","size":90359,"version":"2.8.1"},{"archiveModeSha256":"e730b7023b139a3b6ce90591b165e4293232d46c7a788e06d9f430f41ddc558b","contentSha256":"e90807028edaed25777c7232b6e0230401d41f2344339045226b6bf4c33c5dac","fileCount":168,"name":"tsyringe","path":"tsyringe","size":148573,"version":"4.10.0"},{"archiveModeSha256":"5e66de11ef59789cfb14af7010e423d1c8fd600f065cea607c3acdf241deac75","contentSha256":"3222071ca73f1a4c054e1077d0f6743f310384e31c4618702b5de1bb629e172e","fileCount":13,"name":"tslib","path":"tsyringe/node_modules/tslib","size":33965,"version":"1.14.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"79ce0363e01b714db55735699052b2534d0f6ef84d785b137323647cf779657a","fileCount":5,"name":"type-is","path":"type-is","size":21269,"version":"2.1.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"type-is/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"99534b97972283845db4ef41d39156d6720030a2307f2f0649a7f1c8fabf68c6","fileCount":5,"name":"unpipe","path":"unpipe","size":4311,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"880e12feeb6220ce4cdb0bd7f19ddb9d693666a77059502e9d667e06b3e04ce8","fileCount":5,"name":"vary","path":"vary","size":8747,"version":"1.1.2"},{"archiveModeSha256":"b16ad4f43f64c0fd957663c6500efa74920507fe7741cf9f6ec06b005074af00","contentSha256":"3fb43edf3b937e44a701cbe4c04959282028dbe08a3a2b99f880815ea07f6392","fileCount":11,"name":"web-push","path":"web-push","size":48243,"version":"3.6.7"},{"archiveModeSha256":"8fc892f4d8b9a44a1bfc252b556ebb01d424366ec71fb56f8b0fc2b81bbb5897","contentSha256":"dbe8a52a4c488ed54e7b60f93f89947ff828f9786a804b40a049152c35a47132","fileCount":5,"name":"which","path":"which","size":7308,"version":"2.0.2"},{"archiveModeSha256":"4b84777e08ccbe4ad45474b4248dc37be2c73b6467d369958cc06ca38507a13f","contentSha256":"4f5c30f228b020aca343e88dc0b15af855173a168663e687afd72c58cf586b99","fileCount":4,"name":"wrappy","path":"wrappy","size":2961,"version":"1.0.2"},{"archiveModeSha256":"d06a853b8839d4e73614533e2e780f5b1c821f7f1690bfb0ab185285e9ed54e8","contentSha256":"20d843b3c459de1853239c8e5dd0db463c5e5e18920e93638f0f39f3d5d4c894","fileCount":233,"name":"yaml","path":"yaml","size":686297,"version":"2.9.1"},{"archiveModeSha256":"b98a45815677c477e01457344c56184f50841e90f1f78c98f47d4f631140c4f3","contentSha256":"eaed4b517e605755ecde1e008133c5418c238657a3236735a1053f00b4a7e58b","fileCount":718,"name":"zod","path":"zod","size":4558122,"version":"4.4.3"},{"archiveModeSha256":"224107ce4653d3b406ca40837a05712425b14ff999773673d516eb31d8e9a34d","contentSha256":"d45857bb67c09b95d65c081b1afc095fcfd8d3e8d8bc3b57f645a1f369b1ea04","fileCount":130,"name":"zod-to-json-schema","path":"zod-to-json-schema","size":219264,"version":"3.25.2"}],"portability":"platform-independent-no-native-or-install-variance","rootDependencies":[{"name":"@modelcontextprotocol/sdk","requested":"^1.30.0"},{"name":"@simplewebauthn/browser","requested":"^14.0.0"},{"name":"@simplewebauthn/server","requested":"^14.0.3"},{"name":"jose","requested":"^6.2.12"},{"name":"marked","requested":"18.0.10"},{"name":"reflect-metadata","requested":"0.2.2"},{"name":"tar","requested":"7.5.22"},{"name":"web-push","requested":"3.6.7"},{"name":"yaml","requested":"^2.8.1"}],"schemaVersion":2}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashlr/hub",
3
- "version": "3.22.0",
3
+ "version": "3.22.1",
4
4
  "description": "Local-first command center for agentic engineers.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,2 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,o as n,s as r}from"./index-DOAOxiKl.js";var i=e(r(),1),a=e(n(),1),o={menu:`_menu_130xc_5`,"menu-in":`_menu-in_130xc_1`,row:`_row_130xc_21`,item:`_item_130xc_27`,icon:`_icon_130xc_53`,label:`_label_130xc_60`,reason:`_reason_130xc_65`},s=t(),c=8;function l({label:e,items:t,anchor:n,onClose:r,returnFocus:l=null}){let u=(0,i.useRef)(null),d=(0,i.useRef)([]),[f,p]=(0,i.useState)({left:n.x,top:n.y}),m=(0,i.useRef)(r);m.current=r;let h=(0,i.useRef)(l);h.current=l;let g=t.map((e,t)=>e.disabled?-1:t).filter(e=>e>=0);(0,i.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=e.getBoundingClientRect(),r=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,a=n.x,o=n.y;t.width>0&&a+t.width>r-c&&(a=Math.max(c,r-c-t.width)),t.height>0&&o+t.height>i-c&&(o=Math.max(c,n.y-t.height)),p({left:a,top:o})},[n.x,n.y]),(0,i.useEffect)(()=>{let e=g[0];e===void 0?u.current?.focus():d.current[e]?.focus()},[]),(0,i.useEffect)(()=>{let e=e=>{u.current&&e.target instanceof Node&&u.current.contains(e.target)||m.current(`dismiss`)},t=e=>{u.current&&e.target instanceof Node&&u.current.contains(e.target)||m.current(`dismiss`)};document.addEventListener(`pointerdown`,e,!0),window.addEventListener(`resize`,t),document.addEventListener(`scroll`,t,!0);let n=u.current;return()=>{document.removeEventListener(`pointerdown`,e,!0),window.removeEventListener(`resize`,t),document.removeEventListener(`scroll`,t,!0);let r=document.activeElement,i=r===null||r===document.body||n!==null&&n.contains(r),a=h.current;i&&a&&document.contains(a)&&a.focus({preventScroll:!0})}},[]);function _(e,t){if(g.length===0)return;let n=g.indexOf(e),r=n<0?t>0?0:g.length-1:(n+t+g.length)%g.length;d.current[g[r]]?.focus()}function v(e){let n=d.current.findIndex(e=>e===document.activeElement);switch(e.key){case`ArrowDown`:e.preventDefault(),_(n,1);return;case`ArrowUp`:e.preventDefault(),_(n,-1);return;case`Home`:e.preventDefault(),d.current[g[0]??0]?.focus();return;case`End`:e.preventDefault(),d.current[g[g.length-1]??0]?.focus();return;case`Escape`:e.preventDefault(),e.stopPropagation(),r(`dismiss`);return;case`Tab`:r(`dismiss`);return;default:if(e.key.length===1&&/\S/.test(e.key)&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let r=e.key.toLowerCase(),i=[...g.filter(e=>e>n),...g.filter(e=>e<=n)].find(e=>t[e].label.toLowerCase().startsWith(r));i!==void 0&&(e.preventDefault(),d.current[i]?.focus())}}}return(0,a.createPortal)((0,s.jsx)(`div`,{ref:u,className:o.menu,role:`menu`,"aria-label":e,tabIndex:-1,style:{left:f.left,top:f.top},onKeyDown:v,onContextMenu:e=>e.preventDefault(),children:t.map((e,t)=>(0,s.jsx)(`div`,{className:o.row,"data-separated":e.separated||void 0,role:`none`,children:(0,s.jsxs)(`button`,{ref:e=>{d.current[t]=e},type:`button`,role:`menuitem`,className:o.item,"data-danger":e.danger||void 0,"aria-disabled":e.disabled||void 0,tabIndex:-1,onClick:()=>{e.disabled||(r(`select`),e.onSelect())},children:[e.icon?(0,s.jsx)(`span`,{className:o.icon,"aria-hidden":`true`,children:e.icon}):null,(0,s.jsxs)(`span`,{className:o.label,children:[e.label,e.description?(0,s.jsx)(`span`,{className:o.reason,children:e.description}):null,e.disabled&&e.reason?(0,s.jsx)(`span`,{className:o.reason,children:e.reason}):null]})]})},e.id))}),document.body)}function u(e,t=`end`,n=220){let r=e.getBoundingClientRect();return{x:t===`end`?r.right-n:r.left,y:r.bottom+4}}export{u as n,l as t};
2
- //# sourceMappingURL=ActionMenu-CebJFKYy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenu-CebJFKYy.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/chat/ActionMenu.module.css","../../../../../../src/web-ui/routes/verse/chat/ActionMenu.tsx"],"sourcesContent":["/**\n * chat/ActionMenu.module.css — the chat surface's action menu. Raised\n * surface, hairline border, the menu shadow; rows are density-sm.\n */\n.menu {\n position: fixed;\n z-index: var(--z-dropdown);\n display: flex;\n flex-direction: column;\n min-width: 200px;\n max-width: min(320px, calc(100vw - 16px));\n padding: var(--space-1);\n border: 1px solid var(--border-default);\n border-radius: var(--radius-md);\n background: var(--bg-surface-raised);\n box-shadow: var(--shadow-menu);\n animation: menu-in var(--duration-fast) var(--ease-decelerate);\n}\n.menu:focus { outline: none; }\n\n.row[data-separated] {\n margin-top: var(--space-1);\n padding-top: var(--space-1);\n border-top: 1px solid var(--border-subtle);\n}\n\n.item {\n display: flex;\n align-items: flex-start;\n gap: var(--space-2);\n width: 100%;\n min-height: var(--density-row-sm);\n padding: var(--space-1) var(--space-2);\n border: 0;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--text-primary);\n font: inherit;\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n text-align: left;\n cursor: pointer;\n}\n.item:hover,\n.item:focus { outline: none; background: var(--bg-hover); }\n.item:focus-visible { box-shadow: inset 0 0 0 1px var(--border-focus); }\n.item[data-danger] { color: var(--status-danger-fg); }\n.item[data-danger]:hover,\n.item[data-danger]:focus { background: var(--status-danger-bg); }\n.item[aria-disabled='true'] { color: var(--text-disabled); cursor: not-allowed; }\n.item[aria-disabled='true']:hover { background: transparent; }\n\n.icon {\n flex: none;\n display: inline-flex;\n width: 16px;\n margin-top: 2px;\n color: var(--text-tertiary);\n}\n.label {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.reason {\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-tertiary);\n}\n\n@keyframes menu-in {\n from { opacity: 0; transform: translateY(-2px); }\n to { opacity: 1; transform: none; }\n}\n@media (prefers-reduced-motion: reduce) {\n :root:not([data-motion='full']) .menu { animation: none; }\n}\n:root[data-motion='reduce'] .menu { animation: none; }\n","/**\n * routes/verse/chat/ActionMenu.tsx — the chat surface's small action menu\n * (unit C2): the header's ⋯ and a sidebar row's hover / right-click menu.\n *\n * The primitives have no menu, and the ones scattered through the console\n * are each hand-rolled for one place; this one is written once for both of\n * C2's uses and follows the WAI-ARIA menu pattern properly:\n * - `role=\"menu\"` of `menuitem`s, focus moves INTO the menu on open;\n * - ↑/↓ wrap, Home/End jump, a letter jumps to the next item starting\n * with it, Enter/Space choose;\n * - Esc, Tab, a click outside or choosing an item close it and hand focus\n * back to whatever opened it (the ⋯ button, or the row that was\n * right-clicked);\n * - a disabled item stays in the list with its reason as a description, so\n * the operator learns WHY instead of wondering where it went.\n *\n * Portalled and position:fixed so the sidebar's own overflow cannot clip it,\n * and clamped to the viewport (a right-click near the bottom opens upward).\n */\nimport { useEffect, useLayoutEffect, useRef, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport styles from './ActionMenu.module.css';\n\nexport interface ActionMenuItem {\n id: string;\n label: string;\n onSelect: () => void;\n /** Painted as destructive (Delete). */\n danger?: boolean;\n disabled?: boolean;\n /** Shown under a disabled item. */\n reason?: string | null;\n /** A second line under the label, always shown (a cost, a consequence). */\n description?: string | null;\n /** A leading glyph. */\n icon?: ReactNode;\n /** A separator above this item. */\n separated?: boolean;\n}\n\nexport interface MenuAnchor {\n /** Viewport coordinates of the menu's preferred top-left. */\n x: number;\n y: number;\n}\n\nexport interface ActionMenuProps {\n label: string;\n items: readonly ActionMenuItem[];\n anchor: MenuAnchor;\n onClose: (reason: 'select' | 'dismiss') => void;\n /** Focus returns here on close. */\n returnFocus?: HTMLElement | null;\n}\n\nconst EDGE = 8;\n\nexport function ActionMenu({ label, items, anchor, onClose, returnFocus = null }: ActionMenuProps) {\n const ref = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const [position, setPosition] = useState<{ left: number; top: number }>({ left: anchor.x, top: anchor.y });\n // Read through refs: the listeners below are installed ONCE per open, and a\n // parent passing an inline onClose must not tear them down (and bounce\n // focus back to the trigger) on every render.\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const returnFocusRef = useRef(returnFocus);\n returnFocusRef.current = returnFocus;\n const enabled = items.map((item, i) => (item.disabled ? -1 : i)).filter((i) => i >= 0);\n\n // Clamp into the viewport once the menu has a size.\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) return;\n const rect = node.getBoundingClientRect();\n const vw = window.innerWidth || document.documentElement.clientWidth;\n const vh = window.innerHeight || document.documentElement.clientHeight;\n let left = anchor.x;\n let top = anchor.y;\n if (rect.width > 0 && left + rect.width > vw - EDGE) left = Math.max(EDGE, vw - EDGE - rect.width);\n if (rect.height > 0 && top + rect.height > vh - EDGE) top = Math.max(EDGE, anchor.y - rect.height);\n setPosition({ left, top });\n }, [anchor.x, anchor.y]);\n\n useEffect(() => {\n const first = enabled[0];\n if (first !== undefined) itemRefs.current[first]?.focus();\n else ref.current?.focus();\n // Focus moves in once, on open.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const onPointer = (event: PointerEvent) => {\n if (ref.current && event.target instanceof Node && ref.current.contains(event.target)) return;\n onCloseRef.current('dismiss');\n };\n const onScroll = (event: Event) => {\n if (ref.current && event.target instanceof Node && ref.current.contains(event.target)) return;\n onCloseRef.current('dismiss');\n };\n document.addEventListener('pointerdown', onPointer, true);\n window.addEventListener('resize', onScroll);\n document.addEventListener('scroll', onScroll, true);\n const menu = ref.current;\n return () => {\n document.removeEventListener('pointerdown', onPointer, true);\n window.removeEventListener('resize', onScroll);\n document.removeEventListener('scroll', onScroll, true);\n // Hand focus back only if it is still ours (in the menu, or dropped to\n // <body> by the unmount) — never yank it from a field the chosen action\n // just focused.\n const active = document.activeElement;\n const ours = active === null || active === document.body || (menu !== null && menu.contains(active));\n const back = returnFocusRef.current;\n if (ours && back && document.contains(back)) back.focus({ preventScroll: true });\n };\n }, []);\n\n function move(from: number, delta: number) {\n if (enabled.length === 0) return;\n const at = enabled.indexOf(from);\n const next = at < 0 ? (delta > 0 ? 0 : enabled.length - 1) : (at + delta + enabled.length) % enabled.length;\n itemRefs.current[enabled[next]!]?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const index = itemRefs.current.findIndex((node) => node === document.activeElement);\n switch (event.key) {\n case 'ArrowDown': event.preventDefault(); move(index, 1); return;\n case 'ArrowUp': event.preventDefault(); move(index, -1); return;\n case 'Home': event.preventDefault(); itemRefs.current[enabled[0] ?? 0]?.focus(); return;\n case 'End': event.preventDefault(); itemRefs.current[enabled[enabled.length - 1] ?? 0]?.focus(); return;\n case 'Escape': event.preventDefault(); event.stopPropagation(); onClose('dismiss'); return;\n case 'Tab': onClose('dismiss'); return;\n default:\n if (event.key.length === 1 && /\\S/.test(event.key) && !event.metaKey && !event.ctrlKey && !event.altKey) {\n const letter = event.key.toLowerCase();\n const order = [...enabled.filter((i) => i > index), ...enabled.filter((i) => i <= index)];\n const hit = order.find((i) => items[i]!.label.toLowerCase().startsWith(letter));\n if (hit !== undefined) {\n event.preventDefault();\n itemRefs.current[hit]?.focus();\n }\n }\n }\n }\n\n return createPortal(\n <div ref={ref} className={styles.menu} role=\"menu\" aria-label={label} tabIndex={-1}\n style={{ left: position.left, top: position.top }} onKeyDown={onKeyDown}\n onContextMenu={(event) => event.preventDefault()}>\n {items.map((item, i) => (\n <div key={item.id} className={styles.row} data-separated={item.separated || undefined} role=\"none\">\n <button\n ref={(node) => { itemRefs.current[i] = node; }}\n type=\"button\"\n role=\"menuitem\"\n className={styles.item}\n data-danger={item.danger || undefined}\n aria-disabled={item.disabled || undefined}\n tabIndex={-1}\n onClick={() => {\n if (item.disabled) return;\n onClose('select');\n item.onSelect();\n }}\n >\n {item.icon ? <span className={styles.icon} aria-hidden=\"true\">{item.icon}</span> : null}\n <span className={styles.label}>\n {item.label}\n {item.description ? <span className={styles.reason}>{item.description}</span> : null}\n {item.disabled && item.reason ? <span className={styles.reason}>{item.reason}</span> : null}\n </span>\n </button>\n </div>\n ))}\n </div>,\n document.body,\n );\n}\n\n/** Anchor a menu under (and right-aligned to) a button. */\nexport function anchorBelow(node: HTMLElement, align: 'start' | 'end' = 'end', menuWidth = 220): MenuAnchor {\n const rect = node.getBoundingClientRect();\n return { x: align === 'end' ? rect.right - menuWidth : rect.left, y: rect.bottom + 4 };\n}\n"],"mappings":"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"}