@openscout/scout 0.2.98 → 0.2.102

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 (622) hide show
  1. package/NOTICE +7 -0
  2. package/bin/scoutd +0 -0
  3. package/dist/build-manifest.json +3 -3
  4. package/dist/client/assets/ActivityScreen-DCALiEXY.js +1 -0
  5. package/dist/client/assets/{AddProjectForm-fXndbzXT.js → AddProjectForm-DfbjlFfy.js} +1 -1
  6. package/dist/client/assets/AdventureEvidence-Dzz9VbuE.js +5 -0
  7. package/dist/client/assets/AdventureReader-ClMxT0e4.js +4 -0
  8. package/dist/client/assets/AdventureScenery-D548O0x4.js +1 -0
  9. package/dist/client/assets/AgentAdventures-NwTKeF0F.js +1 -0
  10. package/dist/client/assets/AgentAvatar-BIwg54Tj.js +1 -0
  11. package/dist/client/assets/AgentConfigurationScreen-B2Hw0ce1.js +1 -0
  12. package/dist/client/assets/AgentDefinitionsWorkspace-CwZJ833X.js +1 -0
  13. package/dist/client/assets/AgentDetailCard-CFDE8TLi.js +1 -0
  14. package/dist/client/assets/AgentFloorView-l2wNKFob.js +1 -0
  15. package/dist/client/assets/AgentFloorWorld-BDJmXl3C.js +1 -0
  16. package/dist/client/assets/AgentInfoScreen-ClZM1wQb.js +1 -0
  17. package/dist/client/assets/{AgentLaneCard-Cc9uyfBr.js → AgentLaneCard-C6YmwPxQ.js} +1 -1
  18. package/dist/client/assets/{AgentLaneChrome-Dv2lBFoH.js → AgentLaneChrome-D9uJ4QY7.js} +1 -1
  19. package/dist/client/assets/{AgentLaneDetailSheet-CGqtqSHQ.js → AgentLaneDetailSheet-KYckCBCX.js} +2 -2
  20. package/dist/client/assets/{AgentLaneSummaryResize-Di4u6df2.js → AgentLaneSummaryResize-BBYBS3DO.js} +1 -1
  21. package/dist/client/assets/AgentLanesEmbedScreen-DqHwqY0X.js +1 -0
  22. package/dist/client/assets/{AgentLanesPreflight-CCGBArIb.js → AgentLanesPreflight-pw2vMO3Q.js} +1 -1
  23. package/dist/client/assets/AgentLanesView-aAyC7lHf.js +2 -0
  24. package/dist/client/assets/AgentLiveActions-lYzicnNa.js +1 -0
  25. package/dist/client/assets/AgentMasterScreen-By6DN0jF.js +1 -0
  26. package/dist/client/assets/AgentSessions-Cox2zS-e.js +6 -0
  27. package/dist/client/assets/AgentsConsole-Dq0S_hRA.js +1 -0
  28. package/dist/client/assets/AgentsScreen-Bi9Lx47B.js +1 -0
  29. package/dist/client/assets/AgentsSubnav-BOobgtGE.js +1 -0
  30. package/dist/client/assets/{AstronautSuit-CwB4Dw07.js → AstronautSuit-C-4I5YKi.js} +1 -1
  31. package/dist/client/assets/AtopView-DKm-ERYC.js +1 -0
  32. package/dist/client/assets/BackToPicker-Bys9ColC.js +1 -0
  33. package/dist/client/assets/BriefingDetailScreen-sprFl4Nk.js +1 -0
  34. package/dist/client/assets/BriefingsScreen-D4Zf31Y6.js +1 -0
  35. package/dist/client/assets/{BrokerMetadataPanel-BJSwU9XZ.js → BrokerMetadataPanel-1GoSl2BV.js} +1 -1
  36. package/dist/client/assets/BrokerScreen-CejzhRsB.js +8 -0
  37. package/dist/client/assets/{CastPicker-CkgTalIt.js → CastPicker-BuwE_JQp.js} +1 -1
  38. package/dist/client/assets/CharacterFamilyPreview-BniL8sEL.css +1 -0
  39. package/dist/client/assets/CharacterFamilyPreview-CfO3j8Of.js +1 -0
  40. package/dist/client/assets/ChatCollapsedStrip-TV0j1xTB.js +1 -0
  41. package/dist/client/assets/{CodeDiffPane-DfluIWmO.js → CodeDiffPane-DB6-mqtX.js} +1 -1
  42. package/dist/client/assets/{CodeProjectPicker-By_Wz9ex.js → CodeProjectPicker-B_LNLpIK.js} +1 -1
  43. package/dist/client/assets/CodeScreen-C9H160XS.js +1 -0
  44. package/dist/client/assets/CommsCanvas-BR2YS76H.css +1 -0
  45. package/dist/client/assets/CommsCanvas-DOKw3Q8i.js +1 -0
  46. package/dist/client/assets/CommsDeck-C18JA7rK.js +1 -0
  47. package/dist/client/assets/CommsFlowGraph-Czg-KTS0.js +1 -0
  48. package/dist/client/assets/CommsFlowGraph-vQucylxF.css +1 -0
  49. package/dist/client/assets/CommsFlowMap-CzBWvSa5.js +1 -0
  50. package/dist/client/assets/CommsSelection-g1twA-Lb.js +1 -0
  51. package/dist/client/assets/{ConversationComposer-BUIjWMBi.js → ConversationComposer-B7RU6LKd.js} +1 -1
  52. package/dist/client/assets/ConversationFeedRows-DVqnZQH0.js +1 -0
  53. package/dist/client/assets/ConversationHeader-CCSU8uo_.js +1 -0
  54. package/dist/client/assets/ConversationPanels-C9yCAoJy.js +6 -0
  55. package/dist/client/assets/ConversationScreen-Brfas2y0.css +1 -0
  56. package/dist/client/assets/ConversationScreen-tTP6B_F-.js +2 -0
  57. package/dist/client/assets/ConversationStatus-CK-YfLpi.js +1 -0
  58. package/dist/client/assets/{CrewAvatar-CZ_faQ_s.js → CrewAvatar-CJhuqTsJ.js} +1 -1
  59. package/dist/client/assets/CrewSprite-DsQJdu3Z.css +1 -0
  60. package/dist/client/assets/CrewSprite-hgpA3SWB.js +1 -0
  61. package/dist/client/assets/CrewWorkspaces-4O8dgRUD.js +1 -0
  62. package/dist/client/assets/{DataTable-C6aMSilS.js → DataTable-BMOZ1-z8.js} +1 -1
  63. package/dist/client/assets/DispatchAftermath-DDlwqSCY.js +1 -0
  64. package/dist/client/assets/DocumentFocusViewer-f12RRQpV.js +1 -0
  65. package/dist/client/assets/{EmbeddableSurfacesLab-D3iZiS8o.js → EmbeddableSurfacesLab-DGl9EMRV.js} +1 -1
  66. package/dist/client/assets/{EmptyState-CKPWFSjq.js → EmptyState-uyYN5piI.js} +1 -1
  67. package/dist/client/assets/{FileViewerPane-CxNbcTYf.js → FileViewerPane-HtiDbj9N.js} +2 -2
  68. package/dist/client/assets/FlightObserveScreen-DDXfNbsw.js +1 -0
  69. package/dist/client/assets/FloorContextSheet-DV-SYA0K.js +1 -0
  70. package/dist/client/assets/FloorExchangePanel-B3TFhjLk.css +1 -0
  71. package/dist/client/assets/FloorExchangePanel-D59nvRCF.js +1 -0
  72. package/dist/client/assets/FloorMessagePasses-BCwsz9VS.js +1 -0
  73. package/dist/client/assets/FloorMessagePasses-nxwwiUom.css +1 -0
  74. package/dist/client/assets/FloorReplay-BHo79HCD.js +1 -0
  75. package/dist/client/assets/FloorResourcesSheet-Djrgd_ZU.js +1 -0
  76. package/dist/client/assets/FloorSavedWork-2tjBoy06.js +1 -0
  77. package/dist/client/assets/FloorTacticalHUD-Bngao6sn.js +1 -0
  78. package/dist/client/assets/FollowScreen-eHXOlK-u.js +1 -0
  79. package/dist/client/assets/{HarnessMark-DttReffF.js → HarnessMark-Bt47OeHy.js} +1 -1
  80. package/dist/client/assets/HarnessesScreen-M84sFjWY.js +1 -0
  81. package/dist/client/assets/{HerdrSession-DsuxCtfX.js → HerdrSession-CtJOUn7H.js} +3 -3
  82. package/dist/client/assets/{HomeHero-DXJo2QSO.js → HomeHero-Cvwx2H0w.js} +1 -1
  83. package/dist/client/assets/HostAdvisorView-CTJXIc1Q.js +1 -0
  84. package/dist/client/assets/KnowledgeSearchInspector-DwGMVmFL.js +1 -0
  85. package/dist/client/assets/KnowledgeSearchScreen-WC0WhFio.js +1 -0
  86. package/dist/client/assets/{LaneToolHoverCard-t7-XJP-h.js → LaneToolHoverCard-C6YehJqD.js} +1 -1
  87. package/dist/client/assets/LaneTraceDetailSheet-mAhj7MJi.js +1 -0
  88. package/dist/client/assets/{LaneTraceEventFocus-BB5DhFQm.js → LaneTraceEventFocus-WLNZZVi_.js} +1 -1
  89. package/dist/client/assets/MeshCanvas-FDDGE69h.js +3 -0
  90. package/dist/client/assets/MeshCanvasMinimap-CGRzQCac.js +1 -0
  91. package/dist/client/assets/MeshScreen-DlfiMlaR.js +1 -0
  92. package/dist/client/assets/{MeshTopologyView-Dc0GSrKa.js → MeshTopologyView-C2Cv_2gx.js} +2 -2
  93. package/dist/client/assets/MessagesScreen-BZ7yaGJx.js +1 -0
  94. package/dist/client/assets/MissionContextRail-CVSZJnvX.js +1 -0
  95. package/dist/client/assets/MissionControlView-DpGhxG4a.js +1 -0
  96. package/dist/client/assets/MissionFocusOverlay-B9SiuO-i.js +1 -0
  97. package/dist/client/assets/MissionLeftAgentRow-DhhRRim0.js +1 -0
  98. package/dist/client/assets/MissionLogPane-CMBiI29U.js +1 -0
  99. package/dist/client/assets/NativeAreaScreen-BQyHHRAM.js +1 -0
  100. package/dist/client/assets/NativeAreaScreen-Ditv-TYW.js +1 -0
  101. package/dist/client/assets/NativeAreaScreen-Dq3uPSEI.js +1 -0
  102. package/dist/client/assets/NewAgentModal-Cl4nsGhu.js +1 -0
  103. package/dist/client/assets/NewChatComposer-JjLbm3W2.js +19 -0
  104. package/dist/client/assets/{NewChatOrigin-DCn5cWPZ.js → NewChatOrigin-CyPPWTJP.js} +1 -1
  105. package/dist/client/assets/NodeDetailPanel-BUG8rOb-.js +1 -0
  106. package/dist/client/assets/NodeMenu-Fw8ATWQA.js +1 -0
  107. package/dist/client/assets/ObserveEmbedScreen-BPiSXXvm.js +2 -0
  108. package/dist/client/assets/{ObserveTextFlow-DCJ5EmD8.js → ObserveTextFlow-ET0dD1wO.js} +2 -2
  109. package/dist/client/assets/{ObservedTopologyPanel-CJVqIqQ2.js → ObservedTopologyPanel-DkEkQzo-.js} +1 -1
  110. package/dist/client/assets/OpenScoutAppShell-CzKbjwCA.js +22 -0
  111. package/dist/client/assets/OpsAgentsView-CZbtkcQH.js +1 -0
  112. package/dist/client/assets/OpsScreen-DJq-aBmX.js +1 -0
  113. package/dist/client/assets/OpsSubnav-9sURjajO.js +1 -0
  114. package/dist/client/assets/ProjectAgentProfile-q_1tMJIL.js +1 -0
  115. package/dist/client/assets/{ProjectAgentProfileBar-CUzZ4Rpx.js → ProjectAgentProfileBar-C1fR65Eh.js} +1 -1
  116. package/dist/client/assets/ProjectAgentProfileHero-DyEFyTFs.js +1 -0
  117. package/dist/client/assets/ProjectsInbox-Bs8I__my.js +2 -0
  118. package/dist/client/assets/ProjectsRail-Deb38OJ1.js +1 -0
  119. package/dist/client/assets/ProjectsScreen-CgLiYiss.js +1 -0
  120. package/dist/client/assets/ProjectsThreadAside-C0Yw3yIL.js +1 -0
  121. package/dist/client/assets/Provider-5Hotn7NQ.js +5 -0
  122. package/dist/client/assets/{RailRow-B0sRaJc6.css → RailRow-B25zKEub.css} +1 -1
  123. package/dist/client/assets/RailRow-BYguXNm4.js +1 -0
  124. package/dist/client/assets/RawSessionsTable-DIhmlvk-.js +1 -0
  125. package/dist/client/assets/RealtimeVoiceScreen-3oU7b7V5.js +1 -0
  126. package/dist/client/assets/RenderedWorkerSprite-CvdWO32C.js +1 -0
  127. package/dist/client/assets/RenderedWorkerSprite-qnTfkd_4.css +1 -0
  128. package/dist/client/assets/ReplayClock-B7JLTp8A.js +1 -0
  129. package/dist/client/assets/ReplayLog-DZTpf2CW.js +1 -0
  130. package/dist/client/assets/ReplayOutpost-CvWQa30T.js +1 -0
  131. package/dist/client/assets/ReplayOutpost-Y1DvZgeu.css +1 -0
  132. package/dist/client/assets/{RepoDiffEmbedScreen-mexrJPhW.js → RepoDiffEmbedScreen-Cbu0_PJW.js} +1 -1
  133. package/dist/client/assets/{RepoDiffPageScreen-DbqX4L3q.js → RepoDiffPageScreen-Chwm6GXL.js} +1 -1
  134. package/dist/client/assets/RepoDiffViewer-C2mb0Wj-.js +7 -0
  135. package/dist/client/assets/RepoDiffViewerLazy-BQ6ZCrsq.js +2 -0
  136. package/dist/client/assets/{ReposScreen-CzbO1Fuy.js → ReposScreen-C7JZQmyh.js} +2 -2
  137. package/dist/client/assets/RiggedWorkerCharacter-BpYECnyK.css +1 -0
  138. package/dist/client/assets/RiggedWorkerCharacter-DNe731GE.js +1 -0
  139. package/dist/client/assets/SageModelStudio-768dRQr4.css +1 -0
  140. package/dist/client/assets/SageModelStudio-BR1J2D4R.js +4108 -0
  141. package/dist/client/assets/ScoutDeckSurface-flRamdvE.js +1 -0
  142. package/dist/client/assets/{ScoutSurface-NlhDsPzg.js → ScoutSurface-BpklGmDL.js} +1 -1
  143. package/dist/client/assets/{ScoutbotFxLab-l2WAahCg.js → ScoutbotFxLab-DeK7ySWZ.js} +1 -1
  144. package/dist/client/assets/{SecondaryNav-Cs0_FQdj.js → SecondaryNav-BkTn5tkq.js} +1 -1
  145. package/dist/client/assets/SessionEmbedScreen-CcQN6xlo.js +1 -0
  146. package/dist/client/assets/{SessionObserve-CLrHfAKZ.css → SessionObserve-BOBJSfs0.css} +1 -1
  147. package/dist/client/assets/SessionObserve-DaqDhqDI.js +12 -0
  148. package/dist/client/assets/SessionObserveEvidence-Drv-D8Oh.js +1 -0
  149. package/dist/client/assets/SessionRefScreen-BOQ1_ydg.js +1 -0
  150. package/dist/client/assets/SessionsScreen-R8QKvoey.js +1 -0
  151. package/dist/client/assets/SettingsDrawer-BDapR4E9.js +3 -0
  152. package/dist/client/assets/SettingsScreen-DirtO7Z0.js +1 -0
  153. package/dist/client/assets/SharedFloorCharacter-Bi5_md4R.css +1 -0
  154. package/dist/client/assets/SharedFloorCharacter-CSYG_t9t.js +1 -0
  155. package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +1 -0
  156. package/dist/client/assets/SharedWorkFloor-yPWFLZwX.js +2 -0
  157. package/dist/client/assets/{ShikiPane-C0TuCATU.js → ShikiPane-BudrOxNK.js} +1 -1
  158. package/dist/client/assets/{SlidePanel-CETQ5NTx.js → SlidePanel-Datu7XG4.js} +1 -1
  159. package/dist/client/assets/SpriteAvatar-BW1JzkDt.js +1 -0
  160. package/dist/client/assets/SproutActionSprite-DveCzg6l.js +1 -0
  161. package/dist/client/assets/{StatusPill-BllrY-eg.js → StatusPill-MxYClPG5.js} +1 -1
  162. package/dist/client/assets/{TailView-_gKWfaQM.js → TailView-Dn7uWmPz.js} +2 -2
  163. package/dist/client/assets/Terminal-D-DsQlmV.js +4 -0
  164. package/dist/client/assets/TerminalEmbedScreen-9Gmln759.js +1 -0
  165. package/dist/client/assets/TerminalHeaderMount-DCGstkZ4.js +1 -0
  166. package/dist/client/assets/{TextDocumentSurface-2X1Gw4eA.js → TextDocumentSurface-BhYvAB0o.js} +1 -1
  167. package/dist/client/assets/{TmuxPeek-CqTJRhkI.js → TmuxPeek-BhK0V9Qt.js} +1 -1
  168. package/dist/client/assets/{VoicePermissionsPanel-C4vkU-sU.js → VoicePermissionsPanel-CecFWzva.js} +1 -1
  169. package/dist/client/assets/{WorkDetailScreen-DqGnuK0e.js → WorkDetailScreen-CwtRCm_-.js} +4 -4
  170. package/dist/client/assets/WorkFilesViewer-DJHftsH9.js +1 -0
  171. package/dist/client/assets/WorkRunView-CxwAZ2QQ.css +1 -0
  172. package/dist/client/assets/WorkRunView-x5PH1byG.js +1 -0
  173. package/dist/client/assets/WorldActorTalk-uIH2jGqA.js +1 -0
  174. package/dist/client/assets/WorldCharacter-Dn4sIXNP.js +1 -0
  175. package/dist/client/assets/WorldMinimap-Blqg0d5r.js +1 -0
  176. package/dist/client/assets/WorldSky-DV9bpvXj.js +1 -0
  177. package/dist/client/assets/{activity-CzTJ-YMX.js → activity-CSUhvjD0.js} +1 -1
  178. package/dist/client/assets/{addon-fit-Zx3A7pGS.js → addon-fit-MR98IWES.js} +1 -1
  179. package/dist/client/assets/{addon-webgl-DitJj-N0.js → addon-webgl-CIIKXrvK.js} +1 -1
  180. package/dist/client/assets/adventure-evidence-DgQbBmfa.css +1 -0
  181. package/dist/client/assets/adventure-habitats-v1-CVMbdB_Z.png +0 -0
  182. package/dist/client/assets/adventure-habitats-v1-M1lcpTJh.js +1 -0
  183. package/dist/client/assets/adventure-playback-DTfkhIc0.js +3 -0
  184. package/dist/client/assets/adventure-reader-DM5UDDm9.css +1 -0
  185. package/dist/client/assets/agent-adventures-DZtWpj6k.css +1 -0
  186. package/dist/client/assets/agent-autocomplete-CeHQpuG9.js +10 -0
  187. package/dist/client/assets/{agent-essentials-K9B6kbTS.js → agent-essentials-8t2il7PV.js} +1 -1
  188. package/dist/client/assets/{agent-floor-CuJr1iK1.css → agent-floor-Dmr9hZHL.css} +1 -1
  189. package/dist/client/assets/agent-floor-actor-3v9drnxh.js +1 -0
  190. package/dist/client/assets/agent-floor-world-Bnd1AtwK.css +1 -0
  191. package/dist/client/assets/agent-floor-world-layout-hfMjuoui.js +1 -0
  192. package/dist/client/assets/agent-lane-card-model-l0stnU9N.js +1 -0
  193. package/dist/client/assets/{agent-lane-detail-ppJId6Jc.js → agent-lane-detail-Db7KyAlf.js} +1 -1
  194. package/dist/client/assets/{agent-lane-preview-BhplDYGf.js → agent-lane-preview-B8lsQJOQ.js} +1 -1
  195. package/dist/client/assets/{agent-lanes-DlqcEf0l.css → agent-lanes-DmgipV9D.css} +1 -1
  196. package/dist/client/assets/agent-lanes-model-CX0wTcnF.js +4 -0
  197. package/dist/client/assets/agent-master-THmq-1k8.css +1 -0
  198. package/dist/client/assets/agent-master-model-C-KdOFDK.js +1 -0
  199. package/dist/client/assets/{agent-specialization-CtF_jI34.js → agent-specialization-CiVxQsFT.js} +1 -1
  200. package/dist/client/assets/agent-state-DDhnFEEP.js +1 -0
  201. package/dist/client/assets/{api-HFH8wFyb.js → api-B9_IqFKY.js} +1 -1
  202. package/dist/client/assets/api-CaROe5_H.js +1 -0
  203. package/dist/client/assets/{arc.es-BNXJqSw7.js → arc.es-BzhWalCl.js} +1 -1
  204. package/dist/client/assets/{arrow-down-BAGkhHA6.js → arrow-down-WoVlkUmg.js} +1 -1
  205. package/dist/client/assets/{arrow-left-eToA6GxC.js → arrow-left-PuKdO3NM.js} +1 -1
  206. package/dist/client/assets/{arrow-right-DTX42clh.js → arrow-right-ldbfp4SZ.js} +1 -1
  207. package/dist/client/assets/{arrow-up-right-B09GPwFl.js → arrow-up-right-Hn754ybA.js} +1 -1
  208. package/dist/client/assets/book-open-BlJnpf2U.js +1 -0
  209. package/dist/client/assets/{bot-WxKXYtEX.js → bot-CfN9PSBF.js} +1 -1
  210. package/dist/client/assets/broker-display-BkBzyvbR.js +2 -0
  211. package/dist/client/assets/{cache-CeWH_KzJ.js → cache-DEy9E34b.js} +1 -1
  212. package/dist/client/assets/{check-Dz2SRHft.js → check-B8dMv3Is.js} +1 -1
  213. package/dist/client/assets/{chevron-down-D120PY4g.js → chevron-down-B5eMsn5c.js} +1 -1
  214. package/dist/client/assets/{chevron-right-CowuvuE6.js → chevron-right-C7UGFpkl.js} +1 -1
  215. package/dist/client/assets/chevron-up-BHOEgHcn.js +1 -0
  216. package/dist/client/assets/{chunk-HRAB3GC3-KjjrTLCU.js → chunk-HRAB3GC3-C5X-kFhb.js} +1 -1
  217. package/dist/client/assets/chunk-JTPDIGGW-ZC-98AHT.js +46 -0
  218. package/dist/client/assets/{chunk-T65CQEWV-H2QEKfr1.js → chunk-T65CQEWV-CSVUz2rY.js} +1 -1
  219. package/dist/client/assets/chunk-YOZR3KYS-B59jqwO0.js +2 -0
  220. package/dist/client/assets/{clock-_9FDplIT.js → clock-DFcRbtrl.js} +1 -1
  221. package/dist/client/assets/{code-xml-CkkNdRmu.js → code-xml-BmyLM0I2.js} +1 -1
  222. package/dist/client/assets/coffee-C_D9zooM.js +1 -0
  223. package/dist/client/assets/colors-CFlbwC25.js +1 -0
  224. package/dist/client/assets/comms-deck-C8nVeMBh.css +1 -0
  225. package/dist/client/assets/comms-deck-CBhsXnY-.js +2 -0
  226. package/dist/client/assets/comms-gesture-_aGFo6g3.js +2 -0
  227. package/dist/client/assets/{compass-BdpImt_W.js → compass-DTZdCpv9.js} +1 -1
  228. package/dist/client/assets/content-B5Q4pb9R.js +1 -0
  229. package/dist/client/assets/content-BK1IfOZs.js +1 -0
  230. package/dist/client/assets/content-BeEsWLEm.js +1 -0
  231. package/dist/client/assets/content-BkOwEknW.js +1 -0
  232. package/dist/client/assets/content-C32W5kAG.js +1 -0
  233. package/dist/client/assets/content-CoqyLs9v.js +1 -0
  234. package/dist/client/assets/content-CwpdIS5b.js +1 -0
  235. package/dist/client/assets/content-DS2OkJ3Q.js +1 -0
  236. package/dist/client/assets/content-DXKaPDfn.js +1 -0
  237. package/dist/client/assets/content-DZt5-dkI.js +1 -0
  238. package/dist/client/assets/content-DbQJH8L1.js +1 -0
  239. package/dist/client/assets/content-DetoiaHq.js +1 -0
  240. package/dist/client/assets/content-Dhu3wL7J.js +1 -0
  241. package/dist/client/assets/content-Dpv34iZu.js +1 -0
  242. package/dist/client/assets/content-TtQJb61D.js +1 -0
  243. package/dist/client/assets/content-ymNb2R7g.js +1 -0
  244. package/dist/client/assets/{context-budget-DqxWzalx.js → context-budget-DemtXu7E.js} +1 -1
  245. package/dist/client/assets/{conversation-icons-DHGc9wbT.js → conversation-icons-BQ4OeOmr.js} +1 -1
  246. package/dist/client/assets/conversation-model-BGFHoxQ0.js +1 -0
  247. package/dist/client/assets/conversation-motion-features-9x8uZpwh.js +1 -0
  248. package/dist/client/assets/conversations-Cbg9h_Af.js +1 -0
  249. package/dist/client/assets/{copy-BzdzWsQd.js → copy-D9WUpQRf.js} +1 -1
  250. package/dist/client/assets/{cpu-CHFIGw87.js → cpu-Ck_4tB_-.js} +1 -1
  251. package/dist/client/assets/{createLucideIcon-Dv8H8m7J.js → createLucideIcon-DkjnzvcJ.js} +1 -1
  252. package/dist/client/assets/{credentials-BTce3VP1.js → credentials-C4VXz2hr.js} +1 -1
  253. package/dist/client/assets/discover-C8IOY7_K.js +2 -0
  254. package/dist/client/assets/embed-entry-CG3CfCbm.js +2 -0
  255. package/dist/client/assets/embed-navigation-DayfkQau.js +1 -0
  256. package/dist/client/assets/{external-link-BvX5PfLh.js → external-link-RT4Ph-6-.js} +1 -1
  257. package/dist/client/assets/{eye-C9cGk5z6.js → eye-CtqSV8BS.js} +1 -1
  258. package/dist/client/assets/{file-code-corner-jlGFdr8d.js → file-code-corner-D_Aptal2.js} +1 -1
  259. package/dist/client/assets/{file-text-BHro8MkG.js → file-text-ChtICwub.js} +1 -1
  260. package/dist/client/assets/flag-CqdOxVkI.js +1 -0
  261. package/dist/client/assets/floor-character-name-CqJPOlXb.js +1 -0
  262. package/dist/client/assets/floor-context-model-DZBpo_oD.js +1 -0
  263. package/dist/client/assets/floor-context-sheet-BFnkFiY3.css +1 -0
  264. package/dist/client/assets/floor-memory-YMM8AlLY.js +1 -0
  265. package/dist/client/assets/floor-message-passes-CJh9f8Jp.js +1 -0
  266. package/dist/client/assets/floor-preview-text-HrORUJ7D.js +1 -0
  267. package/dist/client/assets/floor-replay-CccYqE-f.css +1 -0
  268. package/dist/client/assets/floor-tactical-hud-HL5Vja5Y.css +1 -0
  269. package/dist/client/assets/folder-0fWevPvQ.js +1 -0
  270. package/dist/client/assets/{gauge-DSflSery.js → gauge-Dgtfxf_o.js} +1 -1
  271. package/dist/client/assets/{gestures-YA5IIwp-.js → gestures-BDCZ1FRG.js} +1 -1
  272. package/dist/client/assets/{git-branch-Bc_eDIpG.js → git-branch-CA3cHKCI.js} +1 -1
  273. package/dist/client/assets/go-shortcuts-DKtw4qYx.js +1 -0
  274. package/dist/client/assets/home-moving-signal-B7m-ngb2.js +1 -0
  275. package/dist/client/assets/home-now-card-DduXkHRR.js +1 -0
  276. package/dist/client/assets/{home-now-card-nano-Jmy7eJ6H.js → home-now-card-nano-D1ScGrgv.js} +1 -1
  277. package/dist/client/assets/hooks-C6VyQTQe.js +2 -0
  278. package/dist/client/assets/{hooks-D6NI15f6.css → hooks-D787lBmm.css} +1 -1
  279. package/dist/client/assets/index-C5cX8dkl.js +1 -0
  280. package/dist/client/assets/{index-C1VaWNuD.js → index-C8uS5szO.js} +5 -5
  281. package/dist/client/assets/index-Ck1__1yL.css +1 -0
  282. package/dist/client/assets/index-ClOOrVG1.js +1 -0
  283. package/dist/client/assets/index-Crtgfc9I.js +1 -0
  284. package/dist/client/assets/index-CvsM3jm8.js +1 -0
  285. package/dist/client/assets/{inspector-panel-CwrHjRaQ.js → inspector-panel-BLhDODb3.js} +2 -2
  286. package/dist/client/assets/{keyboard-nav-B8sQ_8IF.js → keyboard-nav-CXfav14z.js} +1 -1
  287. package/dist/client/assets/knowledge-search-BNdQweGz.css +1 -0
  288. package/dist/client/assets/{lane-edit-display-C_Aujldz.js → lane-edit-display-BjdT9oZl.js} +1 -1
  289. package/dist/client/assets/{lane-observe-vfyACHi0.js → lane-observe-BD21P8BB.js} +2 -2
  290. package/dist/client/assets/lane-roster-store-DzNHP392.js +1 -0
  291. package/dist/client/assets/{lane-tool-detail-0WhMf4Vj.js → lane-tool-detail-Czggx8oM.js} +1 -1
  292. package/dist/client/assets/{layers-CW2-qHsG.js → layers-Bolb8ejU.js} +1 -1
  293. package/dist/client/assets/{layout-grid-BoVnPOk-.js → layout-grid-DI9tVJ2E.js} +1 -1
  294. package/dist/client/assets/left-B-_z_nqj.js +2 -0
  295. package/dist/client/assets/left-B1LY7rJc.js +1 -0
  296. package/dist/client/assets/{left-DH44V4I_.css → left-BV9yMiTL.css} +1 -1
  297. package/dist/client/assets/left-C6bdjWcG.js +2 -0
  298. package/dist/client/assets/left-CF4iuqlz.js +1 -0
  299. package/dist/client/assets/left-DLtNyZl1.js +1 -0
  300. package/dist/client/assets/left-Fpxoq-VY.js +1 -0
  301. package/dist/client/assets/left-N2wXfTlp.js +1 -0
  302. package/dist/client/assets/left-advisor-CeIjCKbd.js +1 -0
  303. package/dist/client/assets/left-agents-upjHVlOj.js +1 -0
  304. package/dist/client/assets/left-default-08gmdCtb.js +1 -0
  305. package/dist/client/assets/left-lanes-Cvsp73Hw.js +1 -0
  306. package/dist/client/assets/left-mission-DENnfshd.css +1 -0
  307. package/dist/client/assets/left-mission-W1LLaz74.js +1 -0
  308. package/dist/client/assets/library-DLKBVUJ6.js +1 -0
  309. package/dist/client/assets/{loader-circle-DmUG_YC7.js → loader-circle-DurUYl7E.js} +1 -1
  310. package/dist/client/assets/{local-agents-VP1-ZlPw.js → local-agents-D9fYYRyj.js} +1 -1
  311. package/dist/client/assets/machine-children-RGS4Q0r6.js +1 -0
  312. package/dist/client/assets/machine-scope-DJt9RZ2w.js +1 -0
  313. package/dist/client/assets/mentions-Ctw1ECUC.js +1 -0
  314. package/dist/client/assets/{mesh-ops-CKSWgax2.js → mesh-ops-CGpRk4ik.js} +1 -1
  315. package/dist/client/assets/{mesh-screen-D1Yvo8fU.css → mesh-screen-DjA4mOaN.css} +1 -1
  316. package/dist/client/assets/mesh-view-store-CliSYsmt.js +1 -0
  317. package/dist/client/assets/{message-circle-joGFxfj1.js → message-circle-CSiJj6yo.js} +1 -1
  318. package/dist/client/assets/{message-markup-DC0QFEZn.js → message-markup-DgFSyb3f.js} +1 -1
  319. package/dist/client/assets/{message-square-BLiFqpe_.js → message-square-NmXWtWLR.js} +1 -1
  320. package/dist/client/assets/{message-visibility-CGOmSSKs.js → message-visibility-DwxgcgYK.js} +1 -1
  321. package/dist/client/assets/mission-control-CsX3Yc58.css +1 -0
  322. package/dist/client/assets/mission-control-model-C30vU1Fe.js +1 -0
  323. package/dist/client/assets/mission-control-store-DZ29Mlj1.js +1 -0
  324. package/dist/client/assets/{mission-wall-CocIM1cF.js → mission-wall-DOuGOxQy.js} +1 -1
  325. package/dist/client/assets/nav-destinations-CyXnw9kh.js +1 -0
  326. package/dist/client/assets/observe-CkfOxYx_.js +1 -0
  327. package/dist/client/assets/{operator-attention-RqieiSY8.js → operator-attention-DGR4kOog.js} +1 -1
  328. package/dist/client/assets/ops-screen-CxYM0VOW.css +1 -0
  329. package/dist/client/assets/page-status-CkS3SZu-.js +1 -0
  330. package/dist/client/assets/panel-right-BNTJhy8M.js +1 -0
  331. package/dist/client/assets/pause-DWS7YGQ3.js +1 -0
  332. package/dist/client/assets/{persistent-state-BubPQ7tT.js → persistent-state-xsuk6Kc-.js} +1 -1
  333. package/dist/client/assets/pin-DWlD1BOF.js +1 -0
  334. package/dist/client/assets/pip-idle-v1-Tt-CZsRG.png +0 -0
  335. package/dist/client/assets/pip-thinking-v1-BoHWSEye.png +0 -0
  336. package/dist/client/assets/pip-waiting-v1-DkuvJ-dN.png +0 -0
  337. package/dist/client/assets/pip-working-v1-wWQLRS1z.png +0 -0
  338. package/dist/client/assets/play-D_Pggug4.js +1 -0
  339. package/dist/client/assets/{plus-BWKhylds.js → plus-D_wLGJGT.js} +1 -1
  340. package/dist/client/assets/profile-C3KgiZvc.js +1 -0
  341. package/dist/client/assets/{projects-inbox-DFbgVlXL.js → projects-inbox-DvbqJO3q.js} +1 -1
  342. package/dist/client/assets/{proxy-DVDRhSRR.js → proxy-DOG46ja4.js} +1 -1
  343. package/dist/client/assets/{radio-CxIXS1nU.js → radio-C_jtwbFP.js} +1 -1
  344. package/dist/client/assets/{refresh-cw-Bkh7Cvnd.js → refresh-cw-Da9DDLk2.js} +1 -1
  345. package/dist/client/assets/resolve-panes-DuowGRTk.js +1 -0
  346. package/dist/client/assets/resolve-sidebar-context-BkTbqteq.js +1 -0
  347. package/dist/client/assets/right-B9OUA6Ho.js +1 -0
  348. package/dist/client/assets/right-BDQnjetX.js +1 -0
  349. package/dist/client/assets/{right-DVUq5374.js → right-BLJsc2-p.js} +2 -2
  350. package/dist/client/assets/right-BUbKHmRH.js +1 -0
  351. package/dist/client/assets/right-Ci2IcD4s.js +1 -0
  352. package/dist/client/assets/right-CmCce3e5.js +1 -0
  353. package/dist/client/assets/right-D7w0zM5a.js +1 -0
  354. package/dist/client/assets/right-DIoON_bv.js +1 -0
  355. package/dist/client/assets/right-E0Jr3VN5.js +1 -0
  356. package/dist/client/assets/right-lCdAk9dW.js +1 -0
  357. package/dist/client/assets/{rocket-CnxqjX_K.js → rocket-DyrYDo8V.js} +1 -1
  358. package/dist/client/assets/router-BKiMcYa7.js +1 -0
  359. package/dist/client/assets/{runtime-picker-BYAFNLNq.css → runtime-picker-C3JwrDKP.css} +1 -1
  360. package/dist/client/assets/runtime-picker-DdsttHHc.js +1 -0
  361. package/dist/client/assets/{scope-views-KPY85UUx.js → scope-views-B7PZGlhY.js} +1 -1
  362. package/dist/client/assets/scout-voice-DOQ_B77g.js +1 -0
  363. package/dist/client/assets/{scoutbot-D7kGGyK_.js → scoutbot-Bk3nyrkj.js} +2 -2
  364. package/dist/client/assets/{scoutbot-markdown-yb87JlSE.js → scoutbot-markdown-Bz0Vbto2.js} +1 -1
  365. package/dist/client/assets/{scroll-text-DFcBYy5J.js → scroll-text-DwC8r2g6.js} +1 -1
  366. package/dist/client/assets/{search-FB2vVxCp.js → search-C4VlW_0l.js} +1 -1
  367. package/dist/client/assets/secondaryNavConfig-DAXIFtVd.js +1 -0
  368. package/dist/client/assets/{selection-bridge-qBGFCJv8.js → selection-bridge-B5jqyMR9.js} +1 -1
  369. package/dist/client/assets/{send-horizontal-CS7mxVhX.js → send-horizontal-pOtGI7FM.js} +1 -1
  370. package/dist/client/assets/send-to-agent-session-BZGq_ycy.js +1 -0
  371. package/dist/client/assets/{server-WY6gsbZz.js → server-ms1yxUYJ.js} +1 -1
  372. package/dist/client/assets/{session-catalog-CG4oL_yN.js → session-catalog-s-T_w41t.js} +1 -1
  373. package/dist/client/assets/{session-table-uJh3v-ly.js → session-table-CDx_16xf.js} +1 -1
  374. package/dist/client/assets/sessions-view-DzYGsKWS.js +1 -0
  375. package/dist/client/assets/{settings-DQEtqkM9.js → settings-TJIkkZ0P.js} +1 -1
  376. package/dist/client/assets/shared-work-artifacts-4IIQXQfc.js +1 -0
  377. package/dist/client/assets/{sliders-horizontal-57e99_qO.js → sliders-horizontal-CHf3ntw0.js} +1 -1
  378. package/dist/client/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png +0 -0
  379. package/dist/client/assets/{sparkles-D0vWLTyC.js → sparkles-BbOFw3d0.js} +1 -1
  380. package/dist/client/assets/sprout-action-sprite-DZ8C0fTl.css +1 -0
  381. package/dist/client/assets/sprout-actions-proof-v1-BzUdc812.png +0 -0
  382. package/dist/client/assets/{sse-B29iGBnw.js → sse-v5QLsOHV.js} +1 -1
  383. package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +1 -0
  384. package/dist/client/assets/{tail-display-DcliDVkW.js → tail-display-DHSNmvor.js} +2 -2
  385. package/dist/client/assets/{tail-events-LK29oCKm.js → tail-events-DQ46QBW1.js} +1 -1
  386. package/dist/client/assets/{terminal-UDy4lzV1.js → terminal-96JWDYDL.js} +1 -1
  387. package/dist/client/assets/{terminal-relay-CXHMdain.js → terminal-relay-Bfx8pg80.js} +1 -1
  388. package/dist/client/assets/terminal-screen-Bpb2SZrn.css +1 -0
  389. package/dist/client/assets/{terminal-sessions-Bdt2W3Y4.js → terminal-sessions-Ch9aYlgi.js} +1 -1
  390. package/dist/client/assets/{terminal-takeover-BMeBjBB2.js → terminal-takeover-BlpxpvSp.js} +1 -1
  391. package/dist/client/assets/use-beside-Df-F2Uvg.js +1 -0
  392. package/dist/client/assets/use-conversation-list-A_YUf8lo.js +1 -0
  393. package/dist/client/assets/{use-fleet-active-asks-CCGrll5q.js → use-fleet-active-asks-DFs_u-vM.js} +1 -1
  394. package/dist/client/assets/use-mesh-node-state-Ck9CYplv.js +1 -0
  395. package/dist/client/assets/{use-mesh-ops-items-BjyeFJTz.js → use-mesh-ops-items-Be1WmwCg.js} +1 -1
  396. package/dist/client/assets/{use-reduced-motion-CPoX8iV2.js → use-reduced-motion-D7n3vK8t.js} +1 -1
  397. package/dist/client/assets/use-scout-dev-flags-0TXfQcG0.js +1 -0
  398. package/dist/client/assets/{useAgentHoverCard-BgTLNcF-.js → useAgentHoverCard-Dr-OjNFF.js} +1 -1
  399. package/dist/client/assets/useContentSecondaryNav-CGvMOVGY.js +1 -0
  400. package/dist/client/assets/{useEmbedHeadline-DuUnwTB7.js → useEmbedHeadline-BL8wQawZ.js} +1 -1
  401. package/dist/client/assets/{usePierreRuntime-35AHf9RQ.js → usePierreRuntime-DJkRHMoe.js} +1 -1
  402. package/dist/client/assets/worker-rendered-v1-DmGVMlVi.png +0 -0
  403. package/dist/client/assets/worker-thinking-v1-ujakpzrK.png +0 -0
  404. package/dist/client/assets/worker-waiting-v1-DbTSsfJJ.png +0 -0
  405. package/dist/client/assets/worker-working-v1-BROAvJ_z.png +0 -0
  406. package/dist/client/assets/world-outposts-v1-DOt0i98W.png +0 -0
  407. package/dist/client/assets/{wrench-BfVeded5.js → wrench-BsMTSeji.js} +1 -1
  408. package/dist/client/assets/{x-DgmmnPKt.js → x-DI1ktCYb.js} +1 -1
  409. package/dist/client/assets/{xterm-DnJJmrCA.js → xterm-B1YBE4Gq.js} +1 -1
  410. package/dist/client/assets/{zap-Bcja1lHG.js → zap-sKPkh4sQ.js} +1 -1
  411. package/dist/client/characters/sage/sage.glb +0 -0
  412. package/dist/client/crew/brik-bust.webp +0 -0
  413. package/dist/client/crew/brik-chip-id.webp +0 -0
  414. package/dist/client/crew/fenn-bust.webp +0 -0
  415. package/dist/client/crew/fenn-chip-id.webp +0 -0
  416. package/dist/client/crew/lulu-bust.webp +0 -0
  417. package/dist/client/crew/milo-bust.webp +0 -0
  418. package/dist/client/crew/milo-chip-id.webp +0 -0
  419. package/dist/client/crew/nori-bust.webp +0 -0
  420. package/dist/client/crew/pip-bust.webp +0 -0
  421. package/dist/client/crew/pip-chip-id.webp +0 -0
  422. package/dist/client/crew/sheets/eye-plate-v1/blink-half.webp +0 -0
  423. package/dist/client/crew/sheets/eye-plate-v1/blink-shut.webp +0 -0
  424. package/dist/client/crew/sheets/eye-plate-v1/look-left.webp +0 -0
  425. package/dist/client/crew/sheets/eye-plate-v1/look-right.webp +0 -0
  426. package/dist/client/crew/sheets/eye-plate-v1/look-up.webp +0 -0
  427. package/dist/client/crew/sheets/eye-plate-v1/rest.webp +0 -0
  428. package/dist/client/crew/sheets/sprout/blink-half.webp +0 -0
  429. package/dist/client/crew/sheets/sprout/blink-shut.webp +0 -0
  430. package/dist/client/crew/sheets/sprout/look-left.webp +0 -0
  431. package/dist/client/crew/sheets/sprout/look-right.webp +0 -0
  432. package/dist/client/crew/sheets/sprout/look-up.webp +0 -0
  433. package/dist/client/crew/sprout-bust.webp +0 -0
  434. package/dist/client/crew/sprout-chip-id.webp +0 -0
  435. package/dist/client/crew/tuck-bust.webp +0 -0
  436. package/dist/client/crew/tuck-chip-id.webp +0 -0
  437. package/dist/client/crew/vex-bust.webp +0 -0
  438. package/dist/client/crew/vex-chip-id.webp +0 -0
  439. package/dist/client/crew/wrench-bust.webp +0 -0
  440. package/dist/client/crew/wrench-chip-id.webp +0 -0
  441. package/dist/client/index.html +2 -2
  442. package/dist/drizzle/0017_wise_silver_sable.sql +26 -0
  443. package/dist/drizzle/0018_message_epoch_order.sql +1 -0
  444. package/dist/drizzle/meta/0017_snapshot.json +6785 -0
  445. package/dist/drizzle/meta/0018_snapshot.json +6804 -0
  446. package/dist/drizzle/meta/_journal.json +14 -0
  447. package/dist/main.mjs +26906 -24284
  448. package/dist/node/main.mjs +7077 -6284
  449. package/dist/openscout-terminal-relay.mjs +391 -9
  450. package/dist/pairing-runtime-controller.mjs +35541 -34446
  451. package/dist/runtime/base-daemon.mjs +31 -8
  452. package/dist/runtime/broker-daemon.mjs +7864 -2578
  453. package/dist/runtime/broker-process-manager.mjs +15 -3
  454. package/dist/runtime/mesh-discover.mjs +14 -3
  455. package/dist/scout-control-plane-web.mjs +37053 -33186
  456. package/dist/statusline.mjs +1021 -35
  457. package/dist/update-helper.mjs +32169 -0
  458. package/package.json +2 -2
  459. package/dist/client/assets/ActivityScreen-sfonf5SR.js +0 -1
  460. package/dist/client/assets/AgentAvatar-Dz79iTxB.js +0 -1
  461. package/dist/client/assets/AgentConfigurationScreen-DDc3udYM.js +0 -1
  462. package/dist/client/assets/AgentDefinitionsWorkspace-DHDS9Pgd.js +0 -1
  463. package/dist/client/assets/AgentDetailCard-8viaEY8b.js +0 -1
  464. package/dist/client/assets/AgentFloorView-DuyvyMMj.js +0 -1
  465. package/dist/client/assets/AgentInfoScreen-qntgg2q2.js +0 -1
  466. package/dist/client/assets/AgentLanesEmbedScreen-BA6fRwkD.js +0 -1
  467. package/dist/client/assets/AgentLanesView-96lHsoX7.js +0 -2
  468. package/dist/client/assets/AgentLiveActions-DlSKL60c.js +0 -1
  469. package/dist/client/assets/AgentMasterScreen-DHrMuQ6_.js +0 -1
  470. package/dist/client/assets/AgentSessions-DV9v34aq.js +0 -6
  471. package/dist/client/assets/AgentsConsole-DTpVhS67.js +0 -1
  472. package/dist/client/assets/AgentsScreen-hZ4o2I-e.js +0 -1
  473. package/dist/client/assets/AgentsSubnav-Ci7uWM7P.js +0 -1
  474. package/dist/client/assets/AtopView-D7vyQDtE.js +0 -1
  475. package/dist/client/assets/BackToPicker-BHicJyfc.js +0 -1
  476. package/dist/client/assets/BriefingDetailScreen-B-wD_Bot.js +0 -1
  477. package/dist/client/assets/BriefingsScreen-Cn4Mbam9.js +0 -1
  478. package/dist/client/assets/BrokerScreen-C8FQ5rlg.js +0 -5
  479. package/dist/client/assets/ChatCollapsedStrip-7Wrg8Ge0.js +0 -1
  480. package/dist/client/assets/CodeScreen-cLC0tJ4S.js +0 -1
  481. package/dist/client/assets/ConversationFeedRows-Bx0gFyG_.js +0 -1
  482. package/dist/client/assets/ConversationHeader-Bt2RBj93.js +0 -1
  483. package/dist/client/assets/ConversationPanels-o6W-cOoU.js +0 -6
  484. package/dist/client/assets/ConversationScreen-CkWnKXt6.css +0 -1
  485. package/dist/client/assets/ConversationScreen-DIU7m_aC.js +0 -2
  486. package/dist/client/assets/ConversationStatus-CTYOywFh.js +0 -1
  487. package/dist/client/assets/CrewWorkspaces-DNX-QQ1h.js +0 -1
  488. package/dist/client/assets/DispatchAftermath-ZCEB75hh.js +0 -1
  489. package/dist/client/assets/DocumentFocusViewer-D8iB6SMt.js +0 -1
  490. package/dist/client/assets/FlightObserveScreen-BTe1YRPr.js +0 -1
  491. package/dist/client/assets/FollowScreen-CkR-okdL.js +0 -1
  492. package/dist/client/assets/HarnessesScreen-COO_Q8VY.js +0 -1
  493. package/dist/client/assets/HostAdvisorView-DeJ-8RZV.js +0 -1
  494. package/dist/client/assets/KnowledgeSearchInspector-W_zNIBRV.js +0 -1
  495. package/dist/client/assets/KnowledgeSearchScreen-_rxJNUUh.js +0 -1
  496. package/dist/client/assets/LaneTraceDetailSheet-DNIECgEl.js +0 -1
  497. package/dist/client/assets/MeshCanvas-DZv2ipsy.js +0 -3
  498. package/dist/client/assets/MeshCanvasMinimap-BXHRNb7l.js +0 -1
  499. package/dist/client/assets/MeshScreen-DuNvpDC5.js +0 -1
  500. package/dist/client/assets/MessagesScreen-dNNPFwAc.js +0 -1
  501. package/dist/client/assets/MissionContextRail-DnCWPzAM.js +0 -1
  502. package/dist/client/assets/MissionControlView-DmaThhNR.js +0 -1
  503. package/dist/client/assets/MissionFocusOverlay-K21ssTxv.js +0 -1
  504. package/dist/client/assets/MissionLeftAgentRow-CbQm4BLv.js +0 -1
  505. package/dist/client/assets/MissionLogPane-BLvSSIdT.js +0 -1
  506. package/dist/client/assets/NewAgentModal-B7qxjZlW.js +0 -1
  507. package/dist/client/assets/NewChatComposer-D2Ah4T-W.js +0 -19
  508. package/dist/client/assets/ObserveEmbedScreen-DvKGsaLv.js +0 -2
  509. package/dist/client/assets/OpenScoutAppShell-C9TOLB7u.js +0 -79
  510. package/dist/client/assets/OpsAgentsView-vIoY-AW1.js +0 -1
  511. package/dist/client/assets/OpsScreen-CJBwshEp.js +0 -1
  512. package/dist/client/assets/OpsSubnav-CjDTnp64.js +0 -1
  513. package/dist/client/assets/ProjectAgentProfile-Br1eTD7G.js +0 -1
  514. package/dist/client/assets/ProjectAgentProfileHero-mjxNcRvw.js +0 -1
  515. package/dist/client/assets/ProjectsInbox-Bq29DE_o.js +0 -2
  516. package/dist/client/assets/ProjectsRail-kMDA0yn4.js +0 -1
  517. package/dist/client/assets/ProjectsScreen-BDaJYhc0.js +0 -1
  518. package/dist/client/assets/ProjectsThreadAside-B940p3vW.js +0 -1
  519. package/dist/client/assets/Provider-D0bB7q6y.js +0 -1
  520. package/dist/client/assets/RailRow-B88JVr62.js +0 -1
  521. package/dist/client/assets/RawSessionsTable-CzGhEdiZ.js +0 -1
  522. package/dist/client/assets/RealtimeVoiceScreen-CyP1CWsX.js +0 -1
  523. package/dist/client/assets/RepoDiffViewer-Bw5yMC4A.js +0 -7
  524. package/dist/client/assets/RepoDiffViewerLazy-DzfoFhbl.js +0 -2
  525. package/dist/client/assets/ScoutDeckSurface-DQoZofzH.js +0 -1
  526. package/dist/client/assets/SessionEmbedScreen-CpduQ0O9.js +0 -1
  527. package/dist/client/assets/SessionObserve-BVeTkcIl.js +0 -12
  528. package/dist/client/assets/SessionObserveEvidence-BkOezTGV.js +0 -1
  529. package/dist/client/assets/SessionRefScreen-DetLMkTT.js +0 -1
  530. package/dist/client/assets/SessionsScreen-B-McKw6d.js +0 -1
  531. package/dist/client/assets/SettingsDrawer-CPB32w0n.js +0 -3
  532. package/dist/client/assets/SettingsScreen-BEzYFdjz.js +0 -1
  533. package/dist/client/assets/SpriteAvatar-DFO4Kb4Z.js +0 -1
  534. package/dist/client/assets/Terminal-DWyZTZdY.js +0 -1
  535. package/dist/client/assets/TerminalEmbedScreen-_SSzwhWa.js +0 -1
  536. package/dist/client/assets/TerminalHeaderMount-CY7uIWBg.js +0 -1
  537. package/dist/client/assets/WorkFilesViewer-D8-4vF5l.js +0 -1
  538. package/dist/client/assets/agent-autocomplete-BlK8wY06.js +0 -10
  539. package/dist/client/assets/agent-lane-card-model-CY3OE1Xu.js +0 -1
  540. package/dist/client/assets/agent-lanes-model-tc-1hE6q.js +0 -2
  541. package/dist/client/assets/agent-master-I1W-5d-x.css +0 -1
  542. package/dist/client/assets/agent-master-model-DMcHeNq3.js +0 -1
  543. package/dist/client/assets/api-Co9aQ2Jw.js +0 -1
  544. package/dist/client/assets/broker-display-Q75fupqG.js +0 -2
  545. package/dist/client/assets/chunk-JTPDIGGW-COJ00z94.js +0 -46
  546. package/dist/client/assets/chunk-YOZR3KYS-CrCgXw9l.js +0 -2
  547. package/dist/client/assets/colors-BtO5_zlx.js +0 -1
  548. package/dist/client/assets/content-0RBfbCIJ.js +0 -1
  549. package/dist/client/assets/content-BTmnk2bl.js +0 -1
  550. package/dist/client/assets/content-Bk5DKhyP.js +0 -1
  551. package/dist/client/assets/content-Bw_8GE_S.js +0 -1
  552. package/dist/client/assets/content-CI4gLEWi.js +0 -1
  553. package/dist/client/assets/content-CLCtp9Rb.js +0 -1
  554. package/dist/client/assets/content-C_FAGTNk.js +0 -1
  555. package/dist/client/assets/content-CnnzWOE3.js +0 -1
  556. package/dist/client/assets/content-DKlY98pO.js +0 -1
  557. package/dist/client/assets/content-Df7ndXTG.js +0 -1
  558. package/dist/client/assets/content-DkZDzzx3.js +0 -1
  559. package/dist/client/assets/content-DnGmb2L0.js +0 -1
  560. package/dist/client/assets/content-Ds-zs-Ss.js +0 -1
  561. package/dist/client/assets/content-JIWSyC0f.js +0 -1
  562. package/dist/client/assets/content-Q3TIYC8q.js +0 -1
  563. package/dist/client/assets/content-evaBfvxD.js +0 -1
  564. package/dist/client/assets/conversation-model-C2KuZUXc.js +0 -1
  565. package/dist/client/assets/conversation-motion-features-BJnHs3Ul.js +0 -1
  566. package/dist/client/assets/discover-DutlV0ZU.js +0 -2
  567. package/dist/client/assets/embed-entry-CJG7WEVw.js +0 -2
  568. package/dist/client/assets/home-moving-signal-PHSqSBu_.js +0 -1
  569. package/dist/client/assets/home-now-card-C_qsI6C6.js +0 -1
  570. package/dist/client/assets/hooks-ME7rmhpE.js +0 -2
  571. package/dist/client/assets/index-C8UCRm2W.js +0 -1
  572. package/dist/client/assets/index-Cn0I2Hgi.js +0 -1
  573. package/dist/client/assets/index-Cx6Gbr6n.js +0 -1
  574. package/dist/client/assets/index-i7TMxlwW.css +0 -1
  575. package/dist/client/assets/knowledge-search-D_bLoYtC.css +0 -1
  576. package/dist/client/assets/lane-roster-store-DN2jxXF-.js +0 -1
  577. package/dist/client/assets/left-BRu9pnqx.js +0 -2
  578. package/dist/client/assets/left-BjS1dKNV.js +0 -2
  579. package/dist/client/assets/left-CL-TVLJ7.js +0 -1
  580. package/dist/client/assets/left-DLpsDi55.js +0 -1
  581. package/dist/client/assets/left-DPcM9o8Y.js +0 -1
  582. package/dist/client/assets/left-MmTJf1tK.js +0 -1
  583. package/dist/client/assets/left-P80i5V8L.js +0 -1
  584. package/dist/client/assets/left-advisor-CbXVzAqS.js +0 -1
  585. package/dist/client/assets/left-agents-7mJsiNyr.js +0 -1
  586. package/dist/client/assets/left-default-COK26l3H.js +0 -1
  587. package/dist/client/assets/left-lanes-Dbdm9Veu.js +0 -1
  588. package/dist/client/assets/left-mission-DSenPIyb.css +0 -1
  589. package/dist/client/assets/left-mission-DqGR5jby.js +0 -1
  590. package/dist/client/assets/library-COnWzUWv.js +0 -1
  591. package/dist/client/assets/mentions-BZ5SBMtc.js +0 -1
  592. package/dist/client/assets/mesh-buckets-CLYS8Jx8.js +0 -1
  593. package/dist/client/assets/mesh-view-store-CBM1za_N.js +0 -1
  594. package/dist/client/assets/mission-control-CnU7dNt1.css +0 -1
  595. package/dist/client/assets/mission-control-model-C0fByIjm.js +0 -1
  596. package/dist/client/assets/mission-control-store-CM8mQGg8.js +0 -1
  597. package/dist/client/assets/observe-BLmy4quB.js +0 -1
  598. package/dist/client/assets/ops-screen-giu3If_N.css +0 -1
  599. package/dist/client/assets/page-status-BE0-J1xY.js +0 -1
  600. package/dist/client/assets/paperclip-Br7wUDFl.js +0 -1
  601. package/dist/client/assets/perf-PX8Rx0EP.js +0 -1
  602. package/dist/client/assets/profile-BCvk8jOQ.js +0 -1
  603. package/dist/client/assets/resolve-panes-DhD5qmQO.js +0 -1
  604. package/dist/client/assets/resolve-sidebar-context-GqhZNRPY.js +0 -1
  605. package/dist/client/assets/right-B_08ilv6.js +0 -1
  606. package/dist/client/assets/right-Brm67HOL.js +0 -1
  607. package/dist/client/assets/right-BveAPKBW.js +0 -1
  608. package/dist/client/assets/right-CpTB_-Ya.js +0 -1
  609. package/dist/client/assets/right-CqC4Qdot.js +0 -1
  610. package/dist/client/assets/right-D91j9d5Y.js +0 -1
  611. package/dist/client/assets/right-DaLRhYl3.js +0 -1
  612. package/dist/client/assets/right-Dt1wOwA5.js +0 -1
  613. package/dist/client/assets/right-DtzqIZQF.js +0 -1
  614. package/dist/client/assets/router-kfcaYqZr.js +0 -1
  615. package/dist/client/assets/runtime-picker-C20lTGhV.js +0 -1
  616. package/dist/client/assets/scout-voice-Cg1qfepC.js +0 -1
  617. package/dist/client/assets/secondaryNavConfig-C0Srrmy8.js +0 -1
  618. package/dist/client/assets/system-surfaces-redesign-kuf3wuE_.css +0 -1
  619. package/dist/client/assets/terminal-screen-vMICbBJh.css +0 -1
  620. package/dist/client/assets/use-conversation-list-UG-tMN67.js +0 -1
  621. package/dist/client/assets/use-scout-dev-flags-DTseRrFi.js +0 -1
  622. package/dist/client/assets/useContentSecondaryNav-CoIoz7JU.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as d,j as t}from"./index-C8uS5szO.js";import{b as zt,f as xs,g as vs,h as ks,j as bs,p as js,k as Ss,i as ys}from"./scout-voice-DOQ_B77g.js";import"./fx-z37u1o2z.js";const Ee=1,it="scout:surface-push";class _s{constructor(n,s,a=ms()){this.surface=n,this.currentScope=s,this.handler=a}surface;currentScope;handler;bootstrap(){return this.request("bootstrap",{})}agents={list:n=>this.request("agents.list",{},n),observe:(n,s)=>this.request("agents.observe",{agentIds:s},n)};tail={recent:(n,s)=>this.request("tail.recent",{...s?{cursor:s}:{}},n),subscribe:(n,s)=>{const a=Xt("tail.delta",s);return this.request("tail.subscribe",{},n).catch(()=>a()),a}};codex={startSession:n=>this.request("codex.session.start",{route:n}),snapshot:n=>this.request("codex.thread.snapshot",{route:n}),connect:n=>this.request("codex.thread.connect",{route:n}),start:(n,s)=>this.request("codex.turn.start",{route:n,text:s}),steer:(n,s)=>this.request("codex.turn.steer",{route:n,text:s}),interrupt:n=>this.request("codex.turn.interrupt",{route:n})};dispatch={diagnostics:(n,s)=>this.request("dispatch.diagnostics",{...s?{cursor:s}:{}},n),ask:n=>this.request("dispatch.ask",n),review:n=>this.request("dispatch.review",n),subscribe:(n,s)=>{const a=Xt("dispatch.delta",s);return this.request("dispatch.subscribe",{},n).catch(()=>a()),a}};native={setLaneSelection:async n=>{await this.request("native.setLaneSelection",{selection:n})},openExternalURL:async n=>{await this.request("native.openExternalURL",{url:n})},getPreferences:n=>this.request("native.getPreferences",{keys:n}),setPreferences:async n=>{await this.request("native.setPreferences",n)},cancel:async n=>{await this.request("native.cancel",{requestId:n})},voice:{snapshot:()=>this.request("native.voice.snapshot",{}),toggleInput:()=>this.request("native.voice.toggleInput",{}),speak:n=>this.request("native.voice.speak",{text:n}),stopOutput:()=>this.request("native.voice.stopOutput",{})}};selectedScope(){return this.currentScope()}async request(n,s,a){const r=ws(),o={v:Ee,id:r,surface:this.surface,method:n,params:s,...a?{hostIds:a.hostIds}:{}},u=await this.handler.postMessage(o);if(u.v!==Ee||u.id!==r||u.method!==n)throw new Error("Scout native surface returned a mismatched reply");if("error"in u)throw new Error(`${u.error.code}: ${u.error.message}`);return u.result}}function ms(){const e=window.webkit?.messageHandlers?.scoutSurface;if(!e)throw new Error("Scout native surface bridge is unavailable");return e}function ws(){return globalThis.crypto?.randomUUID?.()??`surface-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Xt(e,n){const s=a=>{const r=a.detail;r?.stream!==e||!("payload"in r)||n({hostId:r.hostId,cursor:{epoch:r.epoch,sequence:r.sequence,connectionRevision:r.connectionRevision},...e==="tail.delta"?{events:r.payload.events}:{records:r.payload.records}})};return window.addEventListener(it,s),()=>window.removeEventListener(it,s)}function Ns(){window.__scoutSurface={onPush(e){window.dispatchEvent(new CustomEvent(it,{detail:e}))}}}const Is="/api/surfaces/deck",ln="scout.surface.preferences.v1";function Cs(e,n){return window.webkit?.messageHandlers?.scoutSurface?new _s(e,n):new Ts(e,n)}class Ts{constructor(n,s,a=Is){this.surface=n,this.currentScope=s,this.endpoint=a}surface;currentScope;endpoint;pending=new Map;voice=new Es;async bootstrap(){const n=await this.request("bootstrap",{});if(!this.voice.inputAvailable)return n;const s=new Set(n.capabilities);return s.add("native.voice.snapshot"),s.add("native.voice.toggleInput"),this.voice.outputAvailable&&(s.add("native.voice.speak"),s.add("native.voice.stopOutput")),{...n,capabilities:[...s],device:{platform:"web",formFactor:As()}}}agents={list:n=>this.request("agents.list",{},n),observe:(n,s)=>this.request("agents.observe",{agentIds:s},n)};tail={recent:(n,s)=>this.request("tail.recent",{...s?{cursor:s}:{}},n),subscribe:(n,s)=>{let a=new Set;const r=async()=>{try{const u=await this.tail.recent(n);for(const p of u.hosts){if(!p.ready)continue;const v=p.value.events.filter(S=>!a.has(S.id));a=new Set(p.value.events.map(S=>S.id)),v.length>0&&s({hostId:p.hostId,cursor:p.value.cursor,events:v})}}catch{}};r();const o=window.setInterval(()=>{r()},2e3);return()=>{window.clearInterval(o)}}};codex={startSession:n=>this.request("codex.session.start",{route:n}),snapshot:n=>this.request("codex.thread.snapshot",{route:n}),connect:n=>this.request("codex.thread.connect",{route:n}),start:(n,s)=>this.request("codex.turn.start",{route:n,text:s}),steer:(n,s)=>this.request("codex.turn.steer",{route:n,text:s}),interrupt:n=>this.request("codex.turn.interrupt",{route:n})};dispatch={diagnostics:()=>Promise.reject(new Error("Dispatch is unavailable on the Deck surface.")),ask:n=>Promise.reject(new Error("Dispatch is unavailable on the Deck surface.")),review:n=>Promise.reject(new Error("Dispatch is unavailable on the Deck surface.")),subscribe:(n,s)=>()=>{}};native={setLaneSelection:async n=>{await this.request("native.setLaneSelection",{selection:n})},openExternalURL:async n=>{const s=new URL(n);if(s.protocol!=="https:")throw new Error("Only https URLs can be opened from the Deck.");window.open(s,"_blank","noopener,noreferrer")},getPreferences:async n=>({entries:Jt().filter(a=>n.includes(a.key))}),setPreferences:async n=>{const s=new Map(Jt().map(a=>[a.key,a]));for(const a of n.entries)s.set(a.key,a);localStorage.setItem(ln,JSON.stringify([...s.values()]))},cancel:async n=>{this.pending.get(n)?.abort(),this.pending.delete(n)},voice:{snapshot:()=>Promise.resolve(this.voice.snapshot()),toggleInput:()=>this.voice.toggleInput(),speak:n=>this.voice.speak(n),stopOutput:()=>this.voice.stopOutput()}};selectedScope(){return this.currentScope()}async request(n,s,a){if(this.surface!=="deck")throw new Error("The web surface transport currently supports Scout Deck only.");const r=Os(),o=new AbortController;this.pending.set(r,o);const u={v:Ee,id:r,surface:this.surface,method:n,params:s,...a?{hostIds:a.hostIds}:{}};try{const p=await fetch(this.endpoint,{method:"POST",credentials:"same-origin",cache:"no-store",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify(u),signal:o.signal});if(!p.ok){const S=await p.json().catch(()=>null);throw new Error(S?.error||`Scout Deck web bridge returned HTTP ${p.status}.`)}const v=await p.json();if(v.v!==Ee||v.id!==r||v.method!==n)throw new Error("Scout Deck web bridge returned a mismatched reply.");if("error"in v)throw new Error(`${v.error.code}: ${v.error.message}`);return v.result}finally{this.pending.delete(r)}}}class Es{live=null;inputRun=0;state={input:{state:"idle",partialText:"",finalText:"",finalCount:0,engine:"parakeet",modelReady:!0,unavailableReason:null},output:{speaking:!1}};get inputAvailable(){return typeof fetch=="function"}get outputAvailable(){return"speechSynthesis"in window&&"SpeechSynthesisUtterance"in window}snapshot(){return{input:{...this.state.input},output:{...this.state.output}}}async toggleInput(){if(this.state.input.state==="listening"){const n=this.live;if(this.state={...this.state,input:{...this.state.input,state:"transcribing"}},n)try{await n.stop()}catch(s){this.failInput(s,this.inputRun)}return this.snapshot()}if(this.state.input.state==="preparing"||this.state.input.state==="transcribing"){const n=this.live;return this.inputRun+=1,this.live=null,await n?.cancel().catch(()=>{}),this.state={...this.state,input:{...this.state.input,state:"idle",partialText:"",unavailableReason:null}},this.snapshot()}return this.stopOutput(),this.startInput(),this.snapshot()}async speak(n){const s=n.trim();if(!s||!this.outputAvailable)return this.snapshot();window.speechSynthesis.cancel();const a=new SpeechSynthesisUtterance(s);return a.onstart=()=>{this.state={...this.state,output:{speaking:!0}}},a.onend=a.onerror=()=>{this.state={...this.state,output:{speaking:!1}}},window.speechSynthesis.speak(a),this.state={...this.state,output:{speaking:!0}},this.snapshot()}async stopOutput(){return this.outputAvailable&&window.speechSynthesis.cancel(),this.state={...this.state,output:{speaking:!1}},this.snapshot()}async startInput(){const n=++this.inputRun;this.state={...this.state,input:{...this.state.input,state:"preparing",partialText:"",unavailableReason:null}};try{let s=await zt({surface:"scout-deck",requestPermissions:!0});if(n!==this.inputRun)return;if(!s.ready&&s.issue?.code==="microphone_not_requested"){if(await Rs(1800),n!==this.inputRun)return;s=await zt({surface:"scout-deck"})}if(!(s.ready||s.issue?.code==="microphone_not_requested")){this.state={...this.state,input:{...this.state.input,state:"unavailable",engine:s.settings.preference==="apple"?"apple":"parakeet",modelReady:!!s.settings.modelReady,unavailableReason:xs(s.issue)}};return}const r=vs();if(await r.probe({force:!0}).catch(()=>!1),n!==this.inputRun)return;const o=await r.startLive({onState:u=>this.applyInputState(u,n),onPartial:u=>{n===this.inputRun&&(this.state={...this.state,input:{...this.state.input,partialText:u}})}},{surface:"scout-deck"});if(n!==this.inputRun){await o.cancel().catch(()=>{});return}this.live=o,this.state={...this.state,input:{...this.state.input,state:"listening",engine:s.settings.preference==="apple"?"apple":"parakeet",modelReady:!!s.settings.modelReady,unavailableReason:null}},o.result.then(u=>this.finishInput(u.text,n)).catch(u=>this.failInput(u,n))}catch(s){this.failInput(s,n)}}applyInputState(n,s){if(s!==this.inputRun)return;const a=n==="recording"?"listening":n==="processing"||n==="done"?"transcribing":n==="cancelled"?"idle":n==="error"?"unavailable":"preparing";this.state={...this.state,input:{...this.state.input,state:a}}}finishInput(n,s){if(s!==this.inputRun)return;this.live=null;const a=n.trim();this.state={...this.state,input:{...this.state.input,state:a?"idle":"unavailable",partialText:"",finalText:a||this.state.input.finalText,finalCount:a?this.state.input.finalCount+1:this.state.input.finalCount,unavailableReason:a?null:"No speech was detected. Tap to try again."}}}failInput(n,s){if(s!==this.inputRun)return;this.live=null;const a=n instanceof Error?n.message:String(n),r=n instanceof Error&&n.name==="AbortError";this.state={...this.state,input:{...this.state.input,state:r?"idle":"unavailable",partialText:"",unavailableReason:r?null:a}}}}function Jt(){try{const e=JSON.parse(localStorage.getItem(ln)??"[]");return Array.isArray(e)?e:[]}catch{return[]}}function As(){const e=Math.min(window.screen.width,window.screen.height);return/iPad/i.test(navigator.userAgent)?"ipad":/Mobi|iPhone|Android/i.test(navigator.userAgent)&&e<700?"phone":e<1100?"tablet":"desktop"}function Rs(e){return new Promise(n=>window.setTimeout(n,e))}function Os(){return globalThis.crypto?.randomUUID?.()??`surface-${Date.now()}-${Math.random().toString(16).slice(2)}`}function nt(e,n){const s=e.find(a=>a.key===n);return s?[s,...e.filter(a=>a.key!==n)]:[...e]}async function Ls(e,n){const s=e.filter(o=>o.transport==="codex_app_server"),r=(await Promise.allSettled(s.map(async o=>({lane:o,snapshot:await n({hostId:o.hostId,agentId:o.id})})))).flatMap(o=>o.status==="fulfilled"?[o.value]:[]);return r.find(({snapshot:o})=>o.state==="running")?.lane.key??r.find(({snapshot:o})=>o.state==="idle")?.lane.key??null}const dn=["ops","yoke","console","brief"],rt={ops:{label:"Ops",tagline:"Agent operations · routed control"},yoke:{label:"Yoke",tagline:"Two-grip cockpit · thumb-anchored"},console:{label:"Console",tagline:"Fleet board · one command bar"},brief:{label:"Brief",tagline:"Single column · command palette"}},Ds=9e3,Qt="scout.deck.hostScope",re="scout.deck.lane.v1",un="scout.deck.treatment.v2",Zt="scout.deck.autoSend",en="scout.deck.voiceOut",tn="scout.deck.voiceModel",Ce="scout.deck.voiceId",nn="scout.deck.voiceSpeed",ee="gpt-4o-mini-tts",pn="alloy",Ms=1,sn=44,$s=160,Ps=[{id:"air",name:"MacBook Air",state:"connected"},{id:"studio",name:"Studio",state:"connected"}],te=Date.now(),Se=[Te("air","MacBook Air","01","OpenScout","codex","gpt-5.6","active","~/dev/openscout",[["tool","Verifying the native surface bundle","bun run build:native-surfaces"],["think","Mapping Deck to Scout's Codex session","Session state stays binary-native and host-scoped."],["message","Controller contract is live.","Start, steer, and interrupt map directly to the selected thread."]]),Te("studio","Studio","02","SpeakEasy","claude","opus-5","active","~/dev/SpeakEasy",[["message","Control deck reference review","Channel bank, focused stage, and restrained signal color."],["tool","Captured iPad landscape states","Connected, partial, and offline."],["think","Keep harness semantics explicit","A future Claude adapter can earn its own control vocabulary."]]),Te("air","MacBook Air","03","Hudson","claude","sonnet-5","waiting","~/dev/hudson",[["message","Waiting for operator review","One navigation decision needs attention."],["note","Candidate build is ready","No active tool call."]]),Te("studio","Studio","04","Release","codex","gpt-5.4","idle","~/dev/openscout",[["system","Last run completed","Checks passed 18 minutes ago."]])],ne={adapter:"codex_app_server",agentId:"01",threadId:"019fa45a-scout-deck",turnId:"turn_8d17",state:"running",capabilities:{connect:!0,start:!0,steer:!0,interrupt:!0,queue:!1,approvals:!1},capabilityNotes:{queue:"A Scout-managed Codex session runs one active turn at a time; Deck does not invent a client-side queue.",approvals:"Approval prompts remain runtime-owned and are not actionable from Deck yet."},snapshot:{session:{id:"019fa45a-scout-deck",name:"Rework the Deck turn flow",adapterType:"codex",status:"active",cwd:"/Users/arach/dev/openscout",model:"gpt-5.6",providerMeta:{threadId:"019fa45a-scout-deck"}},currentTurnId:"turn_8d17",turns:[{id:"turn_8d11",status:"completed",startedAt:te-214e3,endedAt:te-176e3,isUserTurn:!0,blocks:[{status:"completed",block:{id:"input_8d11",turnId:"turn_8d11",type:"text",status:"completed",index:0,text:"Make Deck operate on the selected Scout-managed Codex session directly."}}]},{id:"turn_8d15",status:"completed",startedAt:te-164e3,endedAt:te-71e3,isUserTurn:!1,blocks:[{status:"completed",block:{id:"reason_8d15",turnId:"turn_8d15",type:"reasoning",status:"completed",index:0,text:"Tracing the trusted bridge to Scout's broker-managed Codex session."}},{status:"completed",block:{id:"tool_8d15",turnId:"turn_8d15",type:"action",status:"completed",index:1,action:{kind:"command",status:"completed",command:"bun run build:native-surfaces",output:"native surfaces validated"}}},{status:"completed",block:{id:"text_8d15",turnId:"turn_8d15",type:"text",status:"completed",index:2,text:"The control path is separated from Scout messaging and keeps Codex semantics visible."}}]},{id:"turn_8d17",status:"streaming",startedAt:te-43e3,isUserTurn:!1,blocks:[{status:"streaming",block:{id:"reason_8d17",turnId:"turn_8d17",type:"reasoning",status:"streaming",index:0,text:"Refining the controller hierarchy for iPad landscape."}},{status:"streaming",block:{id:"tool_8d17",turnId:"turn_8d17",type:"action",status:"streaming",index:1,action:{kind:"command",status:"running",command:"bun test scout-surface-contract",output:"running focused contract checks…"}}}]}]}},st={input:{state:"idle",partialText:"",finalText:"",finalCount:0,engine:"parakeet",modelReady:!0,unavailableReason:null},output:{speaking:!1}},at={defaultModelId:ee,defaultVoiceId:pn,source:"fallback",models:[{id:ee,name:"GPT-4o mini TTS",provider:"openai",available:!0},{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2",provider:"elevenlabs",available:!0},{id:"magpie-tts-multilingual",name:"Magpie TTS Multilingual",provider:"nvidia",available:!0}],voices:[{id:"alloy",name:"Alloy",provider:"openai",modelId:ee,available:!0,isDefault:!0},{id:"coral",name:"Coral",provider:"openai",modelId:ee,available:!0,isDefault:!1},{id:"fable",name:"Fable",provider:"openai",modelId:ee,available:!0,isDefault:!1},{id:"nova",name:"Nova",provider:"openai",modelId:ee,available:!0,isDefault:!1},{id:"9BWtsMINqrJLrRacOk9x",name:"Aria",provider:"elevenlabs",modelId:"eleven_multilingual_v2",available:!0,isDefault:!0},{id:"Magpie-Multilingual.EN-US.Aria",name:"Aria",language:"en-US",provider:"nvidia",modelId:"magpie-tts-multilingual",available:!0,isDefault:!0}]};function Vs(e){const n=e.get("treatment");if(an(n))return n;const s=localStorage.getItem(un);return an(s)?s:"ops"}function an(e){return e!=null&&dn.includes(e)}function Bs(e){const n=Number(e.get("lane"));return Number.isInteger(n)?Math.min(Math.max(n-1,0),Se.length-1):0}function qs(){const e=new URLSearchParams(window.location.search),n=e.get("preview")==="1",s=e.get("agent")?.trim()||null,a=n&&e.get("voice")==="listening"?{...st,input:{...st.input,state:"listening",partialText:"Make voice the fastest path into this active turn."}}:st,[r,o]=d.useState(()=>window.__scoutSurfaceBootstrap??null),[u,p]=d.useState(()=>Vs(e)),[v,S]=d.useState(n?Se:[]),[_,U]=d.useState("all"),[T,f]=d.useState(n?Se[Bs(e)]?.key??Se[0]?.key??null:localStorage.getItem(re)),[c,g]=d.useState(n?"ready":"waiting"),[X,qe]=d.useState(null),[m,R]=d.useState(n?ne:null),[H,K]=d.useState(!1),[St,E]=d.useState(null),[pe,wn]=d.useState(null),[he,fe]=d.useState(""),[Nn,O]=d.useState(null),[J,V]=d.useState(null),[yt,Ue]=d.useState(()=>Date.now()),[In,He]=d.useState("thread"),[j,A]=d.useState(a),[_t,Cn]=d.useState(n),[_e,Tn]=d.useState(()=>localStorage.getItem(en)!=="off"),[En,mt]=d.useState(n?at:null),[se,An]=d.useState(()=>localStorage.getItem(tn)||ee),[ge,Ke]=d.useState(()=>localStorage.getItem(Ce)||pn),[Fe,Rn]=d.useState(()=>{const i=Number(localStorage.getItem(nn));return Number.isFinite(i)&&i>=.5&&i<=2?i:Ms}),[wt,Q]=d.useState("idle"),[On,Ln]=d.useState(null),[We,Dn]=d.useState(()=>localStorage.getItem(Zt)!=="off"),[Mn,M]=d.useState(null),[$n,Nt]=d.useState(n&&e.get("audio")==="open"),[Pn,It]=d.useState(()=>Array.from({length:sn},()=>0)),y=d.useRef(null),Ct=d.useRef(s),F=d.useRef(T),Ge=d.useRef(!1),Tt=d.useRef(!1),me=d.useRef(n?0:null),ae=d.useRef(null),N=d.useRef(null),B=d.useRef(null),Et=d.useRef(null),ie=d.useRef(!1),Ye=d.useRef(null),At=d.useRef(async()=>{}),ze=d.useRef(j);ze.current=j,F.current=T;const xe=i=>{Et.current=i,wn(i)};d.useEffect(()=>{if(Ns(),n)return;const i=Cs("deck",()=>({hostIds:window.__scoutSurfaceBootstrap?.selectedHostIds??[]}));y.current=i;let l=!1,h=null,b=!1;return i.bootstrap().then(async k=>{if(l)return;window.__scoutSurfaceBootstrap=k,o(k);const C=k.selectedHostIds;if(C.length===0){g("offline"),S([]);return}const Kt=new Set(k.hosts.filter(P=>P.state==="connected").map(P=>P.id)),Ie=localStorage.getItem(Qt),hs=Ie==="all"||Ie&&Kt.has(Ie)?Ie:k.focusedHostId&&Kt.has(k.focusedHostId)?k.focusedHostId:C[0]??"all";U(hs);const Ft={hostIds:C},Wt=async()=>{if(!b){b=!0;try{const[P,Gt]=await Promise.all([i.agents.list(Ft),i.tail.recent(Ft)]);if(l)return;const W=Us(k.hosts,P,Gt),tt=Et.current,ke=tt?.receipt?W.find(D=>D.hostId===tt.receipt?.hostId&&D.id===tt.receipt?.agentId):null;if(ke){const D=nt(W,ke.key);S(D),f(ke.key),F.current=ke.key,Ge.current=!0,localStorage.setItem(re,ke.key),He("thread"),xe(null)}else{const D=Ct.current;Ct.current=null;const Yt=(D?W.find(q=>q.id===D):null)?.key??F.current??localStorage.getItem(re),be=Yt?W.find(q=>q.key===Yt):null;if(be){const q=nt(W,be.key);S(q),f(be.key),F.current=be.key,localStorage.setItem(re,be.key)}else S(W),f(null),F.current=null,Tt.current||(Tt.current=!0,Ls(W,q=>i.codex.connect(q)).then(q=>{if(l||Ge.current)return;const je=q??W[0]?.key??null;je&&(S(gs=>nt(gs,je)),f(je),F.current=je,localStorage.setItem(re,je))}))}const fs=P.hosts.filter(D=>!D.ready).length+Gt.hosts.filter(D=>!D.ready).length;qe(null),g(fs>0?"partial":"ready")}catch(P){if(l)return;qe(P instanceof Error?P.message:String(P)),g("partial")}finally{b=!1}}};await Wt(),l||(h=setInterval(()=>{Wt()},3e3))}).catch(k=>{l||(qe(k instanceof Error?k.message:String(k)),g("error"))}),()=>{l=!0,h&&clearInterval(h),y.current=null}},[n]);const Vn=n?Ps:r?.hosts??[],$=_==="all"?v:v.filter(i=>i.hostId===_),x=$.find(i=>i.key===T)??null,Xe=x?$.indexOf(x):-1,I=x?{hostId:x.hostId,agentId:x.id}:null,L=!!(x?.transport==="codex_app_server"&&(n||r?.capabilities?.includes("codex.thread.snapshot"))),ve=n||!!r?.capabilities?.includes("native.voice.snapshot"),Z=n||r?.device?.platform==="web",Bn=Z||!!r?.capabilities?.includes("native.voice.speak");d.useEffect(()=>{if(!Z||n)return;let i=!1;return ks(se).then(l=>{if(i)return;mt(l);const h=bs(l,se,ge);h.voiceId!==ge&&(Ke(h.voiceId),localStorage.setItem(Ce,h.voiceId))}).catch(l=>{i||M(l instanceof Error?l.message:String(l))}),()=>{i=!0}},[Z,n,se]),d.useEffect(()=>{if(!x){R(null);return}if(fe(""),E(null),O(null),V(null),ie.current=!1,He(x.transport==="codex_app_server"?"thread":"signal"),ae.current=null,n){R(rn(x));return}const i=y.current;if(!i)return;R(null);let l=!1,h=null;return(async()=>{if(await i.native.setLaneSelection({hostId:x.hostId,agentId:x.id,...x.conversationId?{conversationId:x.conversationId}:{},...x.sessionId?{sessionId:x.sessionId}:{}}),l)return;if(!L){R(null);return}const b=async(k=!1)=>{try{let C=await i.codex.snapshot({hostId:x.hostId,agentId:x.id});if(k&&C.state==="disconnected"&&(V({kind:"connecting",at:Date.now()}),C=await i.codex.connect({hostId:x.hostId,agentId:x.id})),l)return;R(C),E(null)}catch(C){if(l)return;E(C instanceof Error?C.message:String(C))}};await b(!0),l||(h=setInterval(()=>{b()},2e3))})().catch(b=>{l||E(b instanceof Error?b.message:String(b))}),()=>{l=!0,h&&clearInterval(h)}},[x?.key,L,n]),d.useEffect(()=>{if(n||!ve)return;const i=y.current;if(!i)return;let l=!1;const h=async()=>{try{const k=await i.native.voice.snapshot();l||(A(k),Cn(!0),M(null))}catch(k){l||M(k instanceof Error?k.message:String(k))}};h();const b=setInterval(()=>{h()},320);return()=>{l=!0,clearInterval(b)}},[n,ve]),d.useEffect(()=>{if(!_t)return;const i=j.input.finalCount;if(me.current==null){me.current=i;return}if(i<=me.current)return;me.current=i;const l=j.input.finalText.trim(),h=ie.current;if(ie.current=!1,!l){h&&O("Nothing was transcribed — the turn was not sent.");return}const b=Qs(he,l);fe(b),h&&At.current(b)},[j.input.finalCount,j.input.finalText,_t,he]),d.useEffect(()=>{const i=Zs(m);if(i){if(ae.current==null){ae.current=i.id;return}if(ae.current!==i.id){if(!_e){ae.current=i.id;return}if(!(j.input.state==="listening"||j.input.state==="transcribing")){if(ae.current=i.id,n){A(l=>({...l,output:{speaking:!0}})),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{A(l=>({...l,output:{speaking:!1}}))},1600);return}if(Z){Ut(i.text);return}y.current?.native.voice.speak(i.text).then(A).catch(l=>M(l instanceof Error?l.message:String(l)))}}}},[m,j.input.state,_e,n,Z,se,ge,Fe]),d.useEffect(()=>()=>{N.current&&clearTimeout(N.current),B.current?.abort()},[]);const qn=d.useMemo(()=>$.filter(i=>i.state==="waiting"||i.state==="blocked"||i.state==="error"),[$]),Un=$.filter(i=>pt(i.state)).length,Hn=sa(x?.events??[]),Rt=j.input.state==="listening"||j.input.state==="transcribing";d.useEffect(()=>{if(j.input.state!=="listening"){It(Array.from({length:sn},()=>0));return}let i=ze.current.input.partialText.length,l=.45;const h=setInterval(()=>{let b;if(n)l=Math.min(1,Math.max(.08,l+(Math.random()-.48)*.42)),b=l;else{const k=ze.current.input.partialText.length;b=Math.min(1,Math.max(0,k-i)/5),i=k}It(k=>[...k.slice(1),b])},$s);return()=>clearInterval(h)},[j.input.state,n]);const Ot=J&&yt-J.at<Ds?J:null,we=pe?.sourceKey===x?.key?pe:null,Je=!!(we&&!we.error),Kn=we?.error??null,Lt=!!we?.receipt,w=Fs({adapterAvailable:L,startingSession:Je,thread:m,threadError:St,pending:Ot}),Fn=Ws(w),Wn=zs(m),Gn=!!(ve&&!H&&(w==="ready"||w==="running")),Yn=!!(L&&m&&m.state!=="disconnected"&&!H),zn=!!(L&&(w==="running"||w==="stopping")),Xn=!!(L&&(w==="cold"||w==="failed")),Jn=!!(L&&!H),Dt=!!(pe&&!pe.error),Mt=L||!x?null:Je?Lt?"Codex started; Scout is locating its lane.":"Scout is starting Codex for this workspace.":Dt?`Scout is finishing the Codex launch for ${pe?.sourceName??"another workspace"}.`:x.projectRoot?c!=="ready"&&c!=="partial"?"Reconnect the Scout host to start Codex.":!n&&!r?.capabilities?.includes("codex.session.start")?"This Scout host cannot start Codex from Deck.":null:"Scout does not know this lane's workspace.",$t=!!(!L&&x&&!Mt);d.useEffect(()=>{if(!J)return;(J.kind==="sending"?m?.state==="running":J.kind==="stopping"?m?.state==="idle":m?.state==="idle"||m?.state==="running")&&V(null)},[J,m?.state]);const Pt=w==="running"||w==="sending"||w==="stopping"||w==="linking"||w==="starting"||Rt;d.useEffect(()=>{if(!Pt)return;const i=setInterval(()=>Ue(Date.now()),1e3);return Ue(Date.now()),()=>clearInterval(i)},[Pt]);const Qn=i=>{p(i),Nt(!1),localStorage.setItem(un,i)},Qe=i=>{Ge.current=!0,F.current=i.key,f(i.key),localStorage.setItem(re,i.key)},Zn=i=>{if($.length===0)return;const h=((Xe<0?0:Xe)+i+$.length)%$.length,b=$[h];b&&Qe(b)},es=i=>{U(i),f(null),localStorage.setItem(Qt,i)},Ze=async()=>{n||!I||!y.current||R(await y.current.codex.snapshot(I))},ts=async()=>{if(!(!I||H)){if(O(null),n){R(x?rn(x):null);return}K(!0);try{await Ze(),E(null)}catch(i){E(i instanceof Error?i.message:String(i))}finally{K(!1)}}},Vt=async()=>{if(!(!I||H)){K(!0),E(null),O(null),V({kind:"connecting",at:Date.now()});try{n?R({...ne,agentId:I.agentId,state:"idle",turnId:null}):y.current&&R(await y.current.codex.connect(I))}catch(i){V(null),E(i instanceof Error?i.message:String(i))}finally{K(!1)}}},Bt=async()=>{if(!I||!x||Dt||!$t)return;const i={sourceKey:x.key,sourceName:x.name,receipt:null,error:null};xe(i),O(null);try{if(n){const k=Se.find(C=>C.transport==="codex_app_server");k&&Qe(k),xe(null);return}const l=y.current,h=r?.selectedHostIds;if(!l||!h?.length)throw new Error("No connected Scout host can start Codex.");const b=await l.codex.startSession(I);xe({...i,receipt:b})}catch(l){const h=l instanceof Error?l.message:String(l);xe({...i,error:h}),F.current===i.sourceKey&&O(h)}},Ne=async i=>{const l=i.trim();if(l){if(!I||!m){O("No Codex session is connected — the transcript is still in the composer.");return}if(H){O("A turn is already being sent — the transcript is still in the composer.");return}K(!0),E(null),O(null),V({kind:"sending",at:Date.now()});try{const h=m.state==="running"?"steer":"start";n?R(Hs(m,l,h)):y.current&&(h==="steer"?await y.current.codex.steer(I,l):await y.current.codex.start(I,l),await new Promise(b=>setTimeout(b,180)),await Ze()),fe("")}catch(h){V(null),fe(l),E(h instanceof Error?h.message:String(h))}finally{K(!1)}}};At.current=Ne;const ns=i=>{i?.preventDefault(),Ne(he)},ss=async()=>{if(!(!I||!m||H)){K(!0),E(null),O(null),V({kind:"stopping",at:Date.now()});try{n?R(Ks(m)):y.current&&(await y.current.codex.interrupt(I),await new Promise(i=>setTimeout(i,180)),await Ze())}catch(i){V(null),E(i instanceof Error?i.message:String(i))}finally{K(!1)}}},qt=async()=>{if(ve){if(M(null),O(null),j.input.state!=="listening"&&j.input.state!=="transcribing"&&(B.current?.abort(),B.current=null,Q("idle")),j.input.state==="listening"?(ie.current=We,Ye.current=null):j.input.state==="transcribing"?ie.current=!1:(ie.current=!1,Ye.current=Date.now(),Ue(Date.now())),n){if(N.current&&clearTimeout(N.current),j.input.state==="listening"){const i=j.input.partialText||"Make the voice loop feel immediate and obvious.";A(l=>({...l,input:{...l.input,state:"transcribing",partialText:""},output:{speaking:!1}})),N.current=setTimeout(()=>{A(l=>({...l,input:{...l.input,state:"idle",finalText:i,finalCount:l.input.finalCount+1}}))},520)}else j.input.state==="transcribing"?A(i=>({...i,input:{...i.input,state:"idle",partialText:""}})):A(i=>({...i,input:{...i.input,state:"listening",partialText:"Make the voice loop feel immediate and obvious.",unavailableReason:null},output:{speaking:!1}}));return}try{const i=await y.current?.native.voice.toggleInput();i&&A(i)}catch(i){M(i instanceof Error?i.message:String(i))}}};async function Ut(i){B.current?.abort();const l=new AbortController;B.current=l,Q("preparing"),M(null);try{const h=await js(i,{modelId:se,voiceId:ge,speed:Fe,originAppId:"openscout-deck",utteranceId:`deck-${Date.now()}`,signal:l.signal});if(l.signal.aborted)return;Ln({modelId:h.modelId,voiceId:h.voiceId}),Q("speaking"),await Ss(h,{signal:l.signal})}catch(h){ys(h)||M(h instanceof Error?h.message:String(h))}finally{B.current===l&&(B.current=null,Q("idle"))}}const Ht=async()=>{if(N.current&&clearTimeout(N.current),B.current?.abort(),B.current=null,Q("idle"),A(i=>({...i,output:{speaking:!1}})),!n)try{const i=await y.current?.native.voice.stopOutput();i&&A(i)}catch(i){M(i instanceof Error?i.message:String(i))}},as=async()=>{const i=!_e;Tn(i),localStorage.setItem(en,i?"on":"off"),i||await Ht()},is=i=>{if(An(i),mt(l=>n||l?.defaultModelId===i?l:null),n){const l=at.voices.find(h=>h.modelId===i&&h.isDefault)??at.voices.find(h=>h.modelId===i);l&&(Ke(l.id),localStorage.setItem(Ce,l.id))}localStorage.setItem(tn,i)},rs=i=>{Ke(i),localStorage.setItem(Ce,i)},cs=i=>{const l=Math.min(2,Math.max(.5,i));Rn(l),localStorage.setItem(nn,String(l))},os=()=>{if(n){Q("speaking"),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>Q("idle"),1400);return}if(Z){Ut("Scout voice out is ready on this Deck.");return}y.current?.native.voice.speak("Scout voice out is ready on this Deck.").then(A).catch(i=>M(i instanceof Error?i.message:String(i)))},ls=()=>{const i=!We;Dn(i),localStorage.setItem(Zt,i?"on":"off")},ds=i=>{i.key==="Enter"&&(i.metaKey||i.ctrlKey)&&(i.preventDefault(),Ne(he))},et=L?w==="cold"||w==="failed"?"connect":"talk":"start_codex",us=()=>{if(et==="start_codex")return void Bt();if(et==="connect")return void Vt();qt()},ps=wt==="idle"?j:{...j,output:{speaking:!0}};return{preview:n,treatment:u,setTreatment:Qn,hosts:Vn,hostScope:_,selectHostScope:es,connection:c,error:X,lanes:v,scopedLanes:$,selected:x,selectedIndex:Xe,selectLane:Qe,stepLane:Zn,attention:qn,activeCount:Un,laneActivity:Hn,thread:m,threadBusy:H,threadError:St,sessionBusy:Je,sessionError:Kn,sessionLaunchAccepted:Lt,sessionStartUnavailableReason:Mt,notice:Nn,adapterAvailable:L,voiceAvailable:ve,phase:w,phaseTone:Fn,turnStartedAt:Wn,clock:yt,livePending:Ot,listeningSince:Ye.current,canTalk:Gn,canCompose:Yn,canInterrupt:zn,canRebind:Xn,canRefresh:Jn,canStartCodexSession:$t,primaryAction:et,onPrimary:us,command:he,setCommand:fe,submitTurn:Ne,onComposerSubmit:ns,onComposerKeyDown:ds,connectThread:Vt,startCodexSession:Bt,refreshSnapshot:ts,interruptThread:ss,voice:ps,voiceError:Mn,voiceOutEnabled:_e,voiceOutputAvailable:Bn,cloudSpeechAvailable:Z,speechCatalog:En,speechModelId:se,speechVoiceId:ge,speechSpeed:Fe,speechOutputPhase:wt,speechRoute:On,selectSpeechModel:is,selectSpeechVoice:rs,selectSpeechSpeed:cs,previewSpeechVoice:os,toggleVoiceInput:qt,toggleVoiceOutput:as,stopSpeaking:Ht,autoSendOnStop:We,toggleAutoSend:ls,inputTrace:Pn,voiceInputActive:Rt,settingsOpen:$n,setSettingsOpen:Nt,view:In,setView:He}}function Us(e,n,s){const a=new Map(e.map(o=>[o.id,o.name])),r=new Map;for(const o of s.hosts)if(o.ready)for(const u of o.value.events){if(!u.agentId)continue;const p=`${o.hostId}:${u.agentId}`;r.set(p,[...r.get(p)??[],u])}return n.hosts.flatMap(o=>o.ready?o.value.agents.map(u=>({...u,key:`${o.hostId}:${u.id}`,hostId:o.hostId,hostName:a.get(o.hostId)??o.hostId,events:(r.get(`${o.hostId}:${u.id}`)??[]).sort((p,v)=>v.at-p.at)})):[])}function Te(e,n,s,a,r,o,u,p,v){return{key:`${e}:${s}`,hostId:e,hostName:n,id:s,name:a,handle:a.toLowerCase(),harness:r,transport:r==="codex"?"codex_app_server":"claude_stream_json",model:o,state:u,projectRoot:p,conversationId:`conversation-${s}`,sessionId:`session-${s}`,updatedAt:te-Number(s)*43e3,events:v.map(([S,_,U],T)=>({id:`${s}-${T}`,at:te-T*68e3-Number(s)*12e3,agentId:s,sessionId:`session-${s}`,kind:S,text:_,detail:U}))}}function rn(e){return e.transport!=="codex_app_server"?null:e.id==="04"?{...ne,agentId:e.id,threadId:"019fa45a-release",turnId:null,state:"idle",snapshot:ne.snapshot?{...ne.snapshot,currentTurnId:null,turns:ne.snapshot.turns.slice(0,2)}:null}:ne}function Hs(e,n,s){const a=s==="steer"?e.turnId??`turn_${Date.now()}`:`turn_${Date.now()}`,r=e.snapshot;if(!r)return e;const o={id:`${s}_${Date.now()}`,turnId:a,type:s==="steer"?"reasoning":"text",status:"streaming",index:99,text:s==="steer"?`Steer received: ${n}`:n},u=s==="steer"?r.turns.map(p=>p.id===a?{...p,blocks:[...p.blocks,{status:"streaming",block:o}]}:p):[...r.turns,{id:a,status:"streaming",blocks:[{status:"streaming",block:o}],startedAt:Date.now(),isUserTurn:!0}];return{...e,state:"running",turnId:a,snapshot:{...r,currentTurnId:a,turns:u}}}function Ks(e){if(!e.snapshot||!e.turnId)return{...e,state:"idle",turnId:null};const n=e.snapshot.turns.map(s=>s.id===e.turnId?{...s,status:"interrupted",endedAt:Date.now(),blocks:s.blocks.map(a=>({...a,status:"completed",block:{...a.block,status:a.block.status==="streaming"?"completed":a.block.status}}))}:s);return{...e,state:"idle",turnId:null,snapshot:{...e.snapshot,currentTurnId:null,turns:n}}}function Fs({adapterAvailable:e,startingSession:n,thread:s,threadError:a,pending:r}){return!e&&n?"starting":e?a?"failed":r?.kind==="sending"?"sending":r?.kind==="stopping"?"stopping":r?.kind==="connecting"||!s?"linking":s.state==="disconnected"?"cold":s.state==="running"?"running":"ready":"unavailable"}function Ws(e){return e==="running"||e==="sending"||e==="starting"?"live":e==="ready"?"ready":e==="cold"||e==="failed"?"attention":"quiet"}function dt(e,n){return e==="unavailable"?Y(n):e==="starting"?"Starting Codex":e==="cold"?"Session offline":e==="linking"?"Linking":e==="failed"?"Connection failed":e==="sending"?"Sending":e==="stopping"?"Stopping":e==="running"?"Turn running":"Ready"}function Gs(e,n,s,a,r,o=null){if(a)return a;if(e==="unavailable")return o??"Scout sees this lane · Codex not started";if(e==="starting")return o??"Scout is starting a Codex session for this workspace…";if(e==="failed")return s??"The host did not answer.";if(e==="cold")return"Connect restores Scout's managed Codex session.";if(e==="linking")return"Connecting to Scout's managed Codex session…";if(e==="sending")return"Waiting for Codex to accept the turn…";if(e==="stopping")return"Interrupt sent; waiting for the turn to end…";if(e==="running")return Ys(n);const u=Xs(n);return u?`Idle · last turn ended ${le(u)} ago`:"Idle · no turns yet in this session"}function Ys(e){const n=hn(e);if(!n)return"Streaming…";for(let s=n.blocks.length-1;s>=0;s-=1){const a=n.blocks[s];if(!(!a||a.status!=="streaming")){if(a.block.type==="action"){const r=a.block.action?.command??a.block.action?.toolName??a.block.action?.path;return r?`Running ${r}`:"Running an action"}if(a.block.type==="reasoning")return"Thinking";if(a.block.type==="text")return"Writing a reply"}}return"Streaming…"}function hn(e){return(e?.snapshot?.turns??[]).find(s=>s.id===e?.turnId)??null}function zs(e){return hn(e)?.startedAt??null}function Xs(e){const n=e?.snapshot?.turns??[];for(let s=n.length-1;s>=0;s-=1){const a=n[s]?.endedAt;if(a)return a}return null}function Js(e){const{phase:n,turnStartedAt:s,livePending:a,clock:r}=e;return n==="sending"&&a?ct(r-a.at):(n==="running"||n==="stopping")&&s?ct(r-s):""}function ct(e){const n=Math.max(0,Math.floor(e/1e3));return`${Math.floor(n/60)}:${String(n%60).padStart(2,"0")}`}function Qs(e,n){const s=n.trim();return s?e.trim()?`${e}${/\s$/.test(e)?"":" "}${s}`:s:e}function Zs(e){const n=e?.snapshot?.turns??[];for(let s=n.length-1;s>=0;s-=1){const a=n[s];if(!(!a||a.isUserTurn||a.status!=="completed"))for(let r=a.blocks.length-1;r>=0;r-=1){const o=a.blocks[r],u=o?.block.type==="text"?Re(o.block):"";if(o?.status==="completed"&&u)return{id:o.block.id,text:u}}}return null}function fn(e,n=9){return(e.snapshot?.turns??[]).flatMap(s=>s.blocks.map(a=>({role:s.isUserTurn?"operator":"codex",at:s.startedAt,status:a.status,block:a.block}))).filter(s=>!!Re(s.block)).slice(-n)}function Re(e){return e.type==="action"?e.action?.command??e.action?.toolName??e.action?.path??e.action?.agentName??"Codex action":e.text?.trim()||e.message?.trim()||""}function ot(e){return e.type!=="action"?"":e.action?.output?.trim()||(e.action?.kind?`${e.action.kind.replaceAll("_"," ")} · ${e.action.status}`:"")}function ea(e){return e==="ready"?"Host connected":e==="partial"?"Host degraded":e==="error"?"Host unavailable":e==="offline"?"Host disconnected":"Connecting to host"}function ue(e){return e?e==="codex_app_server"?"Scout app-server":e:"transport unreported"}function ta(e){return e?e==="codex_app_server"?"App server":e:"unreported"}function ut(e){const n=e?.snapshot?.session?.name?.trim();return n||null}function na(e){return e==="ready"?"online":e==="partial"?"degraded":e==="error"?"error":e==="offline"?"offline":"connecting"}function oe(e){return e.state==="waiting"||e.state==="blocked"||e.state==="error"?"attention":pt(e.state)?"live":"quiet"}function Y(e){return pt(e)?"Agent active":e==="waiting"||e==="blocked"?"Needs attention":e==="error"?"Agent error":e==="idle"||e==="available"?"Idle":e?e.replaceAll("_"," "):"Standing by"}function pt(e){return e==="live"||e==="working"||e==="active"||e==="running"||e==="in_flight"}function le(e){if(!e)return"—";const n=Math.max(0,Math.floor((Date.now()-e)/1e3));if(n<60)return`${n}s`;const s=Math.floor(n/60);return s<60?`${s}m`:`${Math.floor(s/60)}h`}function z(e){return e.length<=12?e:`${e.slice(0,5)}…${e.slice(-5)}`}function sa(e,n=28,s=5*6e4){const a=Date.now(),r=a-s,o=Array.from({length:n},()=>0);for(const u of e){if(u.at<r||u.at>a)continue;const p=Math.min(n-1,Math.floor((u.at-r)/s*n));o[p]+=u.kind==="message"||u.kind==="ask"?2:1}return o.map(u=>Math.min(6,u))}function aa(e,n,s){return e==="start_codex"?n==="starting"?"starting":"start codex":e==="connect"?n==="failed"?"retry":"connect":s==="listening"?"send":s==="transcribing"?"…":s==="preparing"?"warming":s==="unavailable"?"voice off":n==="linking"?"linking":n==="sending"?"sending":n==="stopping"?"stopping":n==="running"?"steer":"talk"}function gn(e,n,s,a=null){return e==="start_codex"?n==="starting"?a??"Scout is starting a Codex session for this workspace":a??"Start a Scout-managed Codex session for this workspace":e==="connect"?"Reconnect Scout's managed Codex session":s==="listening"?"Stop dictation and send the turn":s==="transcribing"?"Transcribing dictation":n==="running"?"Speak to steer the active turn":"Speak to start a turn"}function ia(e){const{voice:n,voiceAvailable:s,phase:a,listeningSince:r,clock:o,sessionError:u}=e;if(!s)return"Native voice becomes available inside the Scout iPad app.";if(n.input.state==="listening"){const p=r?` · ${ct(o-r)}`:"";return`${n.input.partialText||"Listening — speak naturally."}${p}`}return n.input.state==="transcribing"?"Transcribing on device, then sending…":n.input.state==="preparing"?"Warming Parakeet; Apple Speech remains available as fallback.":n.input.state==="unavailable"?n.input.unavailableReason||"Microphone access is unavailable.":u||(a==="starting"?e.sessionLaunchAccepted?"Codex started; waiting for its Scout lane.":"Scout is starting Codex.":a==="unavailable"?e.canStartCodexSession?"Voice becomes available with the Codex session.":e.sessionStartUnavailableReason??"Codex launch is unavailable for this lane.":a==="cold"||a==="failed"?"Reconnect the Codex session before talking to it.":a==="running"?"Tap to talk, tap again to steer the running turn.":"Tap to talk, tap again to send.")}function ht(e){return e==="listening"?"listening":e==="transcribing"?"processing":e==="preparing"?"warming":e==="unavailable"?"blocked":"ready"}function xn(e,n){return e==="starting"?"Composer unlocks when the Codex lane appears.":e==="unavailable"?"Composer unlocks with a Codex session.":e==="cold"||e==="failed"?"Reconnect the Codex session to enable typing.":n==="listening"?"Speaking… the transcript sends when you tap send.":n==="transcribing"?"Finishing your transcript…":e==="running"?"Or type a redirect for this active turn…":"Or type what this session should do next…"}function vn(){return t.jsxs("svg",{className:"deck-glyph deck-glyph--mic",viewBox:"0 0 32 32","aria-hidden":"true",children:[t.jsx("rect",{x:"11",y:"4",width:"10",height:"16",rx:"5"}),t.jsx("path",{d:"M7.5 15.5v.8a8.5 8.5 0 0 0 17 0v-.8M16 24.8V29M11.5 29h9"})]})}function de(){return t.jsx("svg",{className:"deck-glyph deck-glyph--mic",viewBox:"0 0 32 32","aria-hidden":"true",children:t.jsx("path",{d:"M13 19l6-6M11.5 14.5 9 17a4.6 4.6 0 0 0 6.5 6.5l2.5-2.5M20.5 17.5 23 15a4.6 4.6 0 0 0-6.5-6.5L14 11"})})}function ft(){return t.jsx("svg",{className:"deck-glyph",viewBox:"0 0 20 20","aria-hidden":"true",children:t.jsx("path",{d:"M3.5 8h3l4-3.2v10.4L6.5 12h-3zM13.3 7.2a4 4 0 0 1 0 5.6M15.6 5a7 7 0 0 1 0 10"})})}function Oe(){return t.jsx("svg",{className:"deck-glyph",viewBox:"0 0 20 20","aria-hidden":"true",children:t.jsx("rect",{x:"5.5",y:"5.5",width:"9",height:"9",rx:"1.6"})})}function kn(){return t.jsxs("svg",{className:"deck-glyph",viewBox:"0 0 20 20","aria-hidden":"true",children:[t.jsx("path",{d:"M3 6h6M13 6h4M3 14h4M11 14h6"}),t.jsx("circle",{cx:"11",cy:"6",r:"2.1"}),t.jsx("circle",{cx:"9",cy:"14",r:"2.1"})]})}function lt(){return t.jsxs("svg",{className:"deck-glyph",viewBox:"0 0 20 20","aria-hidden":"true",children:[t.jsx("path",{d:"M16.5 8.2A6.6 6.6 0 0 0 4.6 6.4M3.5 11.8a6.6 6.6 0 0 0 11.9 1.8"}),t.jsx("path",{d:"M16.8 4.2v4h-4M3.2 15.8v-4h4"})]})}function Ae({dir:e}){const n={up:180,down:0,left:90,right:-90}[e];return t.jsx("svg",{className:"deck-glyph",viewBox:"0 0 20 20","aria-hidden":"true",style:{transform:`rotate(${n}deg)`},children:t.jsx("path",{d:"M5 8l5 5 5-5"})})}function ra({model:e}){return t.jsx("div",{className:"deck-switch",role:"group","aria-label":"Controller treatment",children:dn.map(n=>t.jsxs("button",{type:"button",className:"deck-switch__key","data-active":e.treatment===n||void 0,onClick:()=>e.setTreatment(n),"aria-pressed":e.treatment===n,title:rt[n].tagline,children:[rt[n].label,n==="ops"?t.jsx("em",{children:"default"}):null]},n))})}function bn({model:e,size:n="md"}){const s=ut(e.thread),a=!!e.thread?.threadId;return e.adapterAvailable?t.jsxs("div",{className:"deck-binding","data-size":n,"data-bound":a||void 0,children:[t.jsx("span",{className:"deck-binding__label",children:"Scout Codex session"}),t.jsx("strong",{title:s??void 0,children:a?s??"Untitled session":"No session connected"}),t.jsxs("span",{className:"deck-binding__id",children:[e.thread?.threadId?`id ${z(e.thread.threadId)}`:"id —",e.thread?.turnId?` · turn ${z(e.thread.turnId)}`:""]})]}):t.jsxs("div",{className:"deck-binding","data-size":n,children:[t.jsx("span",{className:"deck-binding__label",children:"Selected workspace"}),t.jsx("strong",{children:e.selected?.name??"No lane selected"}),t.jsx("span",{className:"deck-binding__id",children:e.selected?.projectRoot??e.sessionStartUnavailableReason??`${ue(e.selected?.transport)} · view only`})]})}function Le({model:e,compact:n=!1}){const s=e.selected;if(!s)return null;const a=Js(e);return t.jsxs("div",{className:"deck-phase","data-tone":e.phaseTone,"data-phase":e.phase,"data-compact":n||void 0,"aria-live":"polite","aria-atomic":"true",children:[t.jsxs("span",{className:"deck-phase__state",children:[t.jsx("i",{className:"deck-lamp"}),dt(e.phase,s.state)]}),t.jsx("span",{className:"deck-phase__detail",children:Gs(e.phase,e.thread,e.threadError,e.notice,s,e.sessionStartUnavailableReason)}),a?t.jsx("span",{className:"deck-phase__clock","data-live":e.phase==="running"||void 0,children:a}):null]})}function De({model:e,size:n="lg"}){const s=e.primaryAction==="start_codex"?e.sessionBusy?"starting":"start":e.primaryAction==="connect"?"connect":e.voice.input.state,a=gn(e.primaryAction,e.phase,e.voice.input.state,e.sessionStartUnavailableReason),r=e.primaryAction==="start_codex"?!e.canStartCodexSession:e.primaryAction==="connect"?e.threadBusy:!e.canTalk;return t.jsxs("button",{type:"button",className:"deck-primary","data-size":n,"data-action":e.primaryAction,"data-state":s,onClick:e.onPrimary,disabled:r,"aria-label":a,"aria-pressed":e.primaryAction==="talk"?e.voice.input.state==="listening":void 0,"aria-busy":e.primaryAction==="start_codex"&&e.sessionBusy?!0:void 0,title:a,children:[e.primaryAction==="talk"?t.jsx(vn,{}):t.jsx(de,{}),t.jsx("small",{children:aa(e.primaryAction,e.phase,e.voice.input.state)})]})}function jn({model:e,block:n=!1}){return e.canInterrupt?t.jsxs("button",{type:"button",className:"deck-stop","data-block":n||void 0,onClick:e.interruptThread,disabled:e.threadBusy||e.phase==="stopping",children:[t.jsx(Oe,{}),t.jsx("span",{children:e.phase==="stopping"?"Stopping":"Stop turn"})]}):null}function Me({model:e}){const n=e.voice.input.state==="listening";return t.jsxs("div",{className:"deck-trace-wrap","data-live":n||void 0,children:[t.jsx("span",{className:"deck-trace__label",title:"The surface contract reports no microphone level, so the Deck plots transcript cadence instead.",children:n?"Listening · cadence":"Input cadence"}),t.jsx("div",{className:"deck-trace","data-live":n||void 0,"aria-hidden":"true",children:e.inputTrace.map((s,a)=>t.jsx("i",{style:{"--level":s}},a))})]})}function ca({model:e}){return t.jsxs("div",{className:"deck-activity","aria-label":"Lane activity over the last five minutes",children:[t.jsx("small",{children:"5m"}),t.jsx("div",{"aria-hidden":"true",children:e.laneActivity.map((n,s)=>t.jsx("i",{style:{"--level":n}},s))}),t.jsx("small",{children:"now"})]})}function $e({model:e}){return t.jsxs("p",{className:"deck-caption","data-active":e.voiceInputActive||void 0,"data-error":!!e.voiceError||void 0,"aria-live":"polite",children:[t.jsx("i",{"aria-hidden":"true"}),t.jsx("span",{children:e.voiceError??ia(e)})]})}function gt({model:e,rows:n=2}){return t.jsxs("form",{className:"deck-composer",onSubmit:e.onComposerSubmit,"aria-busy":e.threadBusy||void 0,children:[t.jsx("textarea",{value:e.command,onChange:s=>e.setCommand(s.target.value),onKeyDown:e.onComposerKeyDown,placeholder:xn(e.phase,e.voice.input.state),disabled:!e.canCompose,rows:n,"aria-label":e.phase==="running"?"Steer the active Codex turn":"Start a Codex turn"}),t.jsxs("button",{type:"submit",className:"deck-send",disabled:!e.canCompose||!e.command.trim(),children:[e.phase==="running"?"Steer":"Send",t.jsx("em",{children:"⌘↵"})]})]})}function ye(e,n){return`${e} — ${n}`}function xt({model:e,label:n=!0}){const s=e.voice.output.speaking?"Speaking":e.voiceOutEnabled?"Voice out":"Muted",a=e.voiceOutputAvailable?e.voice.output.speaking?"spoken replies are on and playing now":e.voiceOutEnabled?"spoken replies are on":"spoken replies are off":"spoken replies unavailable on this host";return t.jsxs("button",{type:"button",className:Pe("deck-chip deck-chip--voice",n),"data-active":e.voiceOutEnabled||void 0,"data-speaking":e.voice.output.speaking||void 0,onClick:e.toggleVoiceOutput,disabled:!e.voiceOutputAvailable,"aria-pressed":e.voiceOutEnabled,"aria-label":ye(s,a),title:ye(s,a),children:[t.jsx(ft,{}),n?t.jsx("span",{children:s}):null]})}function Sn({model:e,label:n=!0}){const s=ye("Audio",e.settingsOpen?"dictation and playback settings, open":"dictation and playback settings");return t.jsxs("button",{type:"button",className:Pe("deck-chip",n),"data-active":e.settingsOpen||void 0,onClick:()=>e.setSettingsOpen(!e.settingsOpen),"aria-expanded":e.settingsOpen,"aria-label":s,title:s,children:[t.jsx(kn,{}),n?t.jsx("span",{children:"Audio"}):null]})}function yn({model:e,label:n=!0}){const s=ye("Re-read",e.canRefresh?"pull the connected session snapshot from the host again":"unavailable until a session is connected");return t.jsxs("button",{type:"button",className:Pe("deck-chip",n),onClick:e.refreshSnapshot,disabled:!e.canRefresh,"aria-label":s,title:s,children:[t.jsx(lt,{}),n?t.jsx("span",{children:"Re-read"}):null]})}function _n({model:e,label:n=!0}){if(!e.canRebind)return null;const s=e.phase==="failed"?"Retry link":"Reconnect",a=ye(s,e.phase==="failed"?"the last connection failed; reconnect Scout's managed Codex session":"connect Scout's managed Codex session");return t.jsxs("button",{type:"button",className:Pe("deck-chip deck-chip--warn",n),onClick:e.connectThread,disabled:e.threadBusy,"aria-label":a,title:a,children:[t.jsx(de,{}),n?t.jsx("span",{children:s}):null]})}function Pe(e,n){return n?e:`${e} deck-chip--icon`}function Ve({model:e}){if(!e.settingsOpen)return null;const n=e.speechCatalog?.models.find(r=>r.id===e.speechModelId),s=e.speechCatalog?.voices.find(r=>r.id===e.speechVoiceId&&r.modelId===e.speechModelId),a=e.speechOutputPhase==="preparing"?"Synthesizing through Scout…":e.voice.output.speaking?"A reply is being spoken now.":"Ready for the next completed reply.";return t.jsxs("div",{className:"deck-sheet",role:"dialog","aria-label":"Audio and dictation settings",children:[t.jsxs("header",{children:[t.jsx("strong",{children:"Audio & dictation"}),t.jsx("button",{type:"button",className:"deck-chip",onClick:()=>e.setSettingsOpen(!1),children:"Close"})]}),t.jsxs("div",{className:"deck-sheet__row",children:[t.jsxs("div",{children:[t.jsx("strong",{children:"Spoken replies"}),t.jsx("small",{children:"Speak each completed Codex reply aloud."})]}),t.jsxs("button",{type:"button",className:"deck-toggle","data-on":e.voiceOutEnabled||void 0,onClick:e.toggleVoiceOutput,disabled:!e.voiceOutputAvailable,"aria-pressed":e.voiceOutEnabled,children:[t.jsx("i",{}),e.voiceOutEnabled?"On":"Off"]})]}),t.jsxs("div",{className:"deck-sheet__voice-grid","aria-label":"Scout speech provider and voice",children:[t.jsxs("label",{children:[t.jsx("span",{children:"Provider & model"}),t.jsx("select",{className:"deck-sheet__select",value:e.speechModelId,onChange:r=>e.selectSpeechModel(r.currentTarget.value),disabled:!e.cloudSpeechAvailable||!e.speechCatalog,children:e.speechCatalog?.models.filter(r=>oa(r.provider)).map(r=>t.jsxs("option",{value:r.id,disabled:r.available===!1,children:[cn(r.provider)," · ",r.name,on(r.available)]},r.id))??t.jsx("option",{children:e.speechCatalog?"No API models":"Loading Scout voices…"})})]}),t.jsxs("label",{children:[t.jsx("span",{children:"Voice"}),t.jsx("select",{className:"deck-sheet__select",value:e.speechVoiceId,onChange:r=>e.selectSpeechVoice(r.currentTarget.value),disabled:!e.cloudSpeechAvailable||!e.speechCatalog||!e.speechCatalog.voices.some(r=>r.modelId===e.speechModelId),children:e.speechCatalog?.voices.filter(r=>r.modelId===e.speechModelId).map(r=>t.jsxs("option",{value:r.id,disabled:r.available===!1,children:[r.name,r.language?` · ${r.language}`:"",on(r.available)]},r.id))??t.jsx("option",{children:"Loading…"})})]})]}),t.jsxs("div",{className:"deck-sheet__pace",children:[t.jsxs("div",{children:[t.jsx("strong",{children:"Speaking pace"}),t.jsx("small",{children:"Applied by the selected Scout TTS provider."})]}),t.jsx("div",{className:"deck-segment",role:"group","aria-label":"Speaking pace",children:[[.85,"Calm"],[1,"Natural"],[1.15,"Brisk"]].map(([r,o])=>t.jsx("button",{type:"button","data-active":e.speechSpeed===r||void 0,"aria-pressed":e.speechSpeed===r,onClick:()=>e.selectSpeechSpeed(r),disabled:!e.cloudSpeechAvailable,children:o},o))})]}),t.jsxs("div",{className:"deck-sheet__row",children:[t.jsxs("div",{children:[t.jsx("strong",{children:"Stopping dictation sends"}),t.jsx("small",{children:"Off keeps the transcript in the composer for editing."})]}),t.jsxs("button",{type:"button",className:"deck-toggle","data-on":e.autoSendOnStop||void 0,onClick:e.toggleAutoSend,"aria-pressed":e.autoSendOnStop,children:[t.jsx("i",{}),e.autoSendOnStop?"On":"Off"]})]}),t.jsxs("div",{className:"deck-sheet__row",children:[t.jsxs("div",{children:[t.jsx("strong",{children:"Playback"}),t.jsx("small",{children:a})]}),t.jsxs("div",{className:"deck-sheet__playback",children:[t.jsxs("button",{type:"button",className:"deck-chip",onClick:e.previewSpeechVoice,disabled:!e.voiceOutputAvailable||e.speechOutputPhase!=="idle",children:[t.jsx(ft,{}),t.jsx("span",{children:"Hear voice"})]}),t.jsxs("button",{type:"button",className:"deck-chip deck-chip--warn",onClick:e.stopSpeaking,disabled:!e.voice.output.speaking,children:[t.jsx(Oe,{}),t.jsx("span",{children:"Stop"})]})]})]}),t.jsxs("dl",{className:"deck-sheet__facts",children:[t.jsxs("div",{children:[t.jsx("dt",{children:"Voice in"}),t.jsx("dd",{children:e.voiceAvailable?e.voice.input.engine:"—"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Input"}),t.jsx("dd",{children:e.voiceAvailable?ht(e.voice.input.state):"—"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Voice out"}),t.jsx("dd",{children:n?cn(n.provider):"Scout API"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Route"}),t.jsx("dd",{children:e.speechRoute?.voiceId??s?.name??e.speechVoiceId})]})]}),t.jsx("p",{className:"deck-sheet__note",children:"Scout owns both directions: Scout dictation in; OpenAI, ElevenLabs, or NVIDIA synthesis out through the paired host API."})]})}function cn(e){return e.toLowerCase()==="openai"?"OpenAI":e.toLowerCase()==="elevenlabs"?"ElevenLabs":e.toLowerCase()==="nvidia"?"NVIDIA":e.replace(/(^|[-_])([a-z])/g,(n,s,a)=>`${s?" ":""}${a.toUpperCase()}`)}function oa(e){const n=e.toLowerCase();return n==="openai"||n==="elevenlabs"||n==="nvidia"}function on(e){return e===!1?" · unavailable":e===null?" · availability not checked":""}function la({lane:e,index:n,model:s,onSelect:a}){const r=e.key===s.selected?.key;return t.jsxs("button",{type:"button",className:"deck-lane","data-active":r||void 0,"data-tone":r&&s.phaseTone!=="quiet"?s.phaseTone:oe(e),onClick:()=>{s.selectLane(e),a?.()},"aria-pressed":r,children:[t.jsx("span",{className:"deck-lane__index",children:String(n+1).padStart(2,"0")}),t.jsxs("span",{className:"deck-lane__body",children:[t.jsx("strong",{children:e.name}),t.jsxs("small",{children:[e.hostName," · ",e.harness??"agent"," · ",Y(e.state).toLowerCase()]})]}),t.jsx("i",{className:"deck-lane__signal","aria-hidden":"true"})]})}function vt({model:e}){const{hosts:n}=e;return n.length===0?null:t.jsxs("div",{className:"deck-scope",role:"group","aria-label":"Agent lane scope",children:[n.length>1?t.jsxs("button",{type:"button",className:"deck-scope__key","data-active":e.hostScope==="all"||void 0,onClick:()=>e.selectHostScope("all"),"aria-pressed":e.hostScope==="all",children:[t.jsx("i",{"data-all":"true"}),"All hosts"]}):null,n.map(s=>t.jsxs("button",{type:"button",className:"deck-scope__key","data-state":s.state,"data-active":e.hostScope===s.id||void 0,onClick:()=>e.selectHostScope(s.id),disabled:s.state!=="connected","aria-pressed":e.hostScope===s.id,children:[t.jsx("i",{}),s.name]},s.id))]})}function mn({model:e,onPick:n}){return e.attention.length===0?t.jsx("p",{className:"deck-empty-note",children:"No lanes need intervention."}):t.jsx("div",{className:"deck-attention",children:e.attention.map(s=>t.jsxs("button",{type:"button",className:"deck-attention__row",onClick:()=>{e.selectLane(s),n?.()},children:[t.jsx("i",{"aria-hidden":"true"}),t.jsxs("span",{children:[t.jsx("strong",{children:s.name}),t.jsx("small",{children:s.events[0]?.text??"Needs review"})]})]},s.key))})}function da({model:e,limit:n=9}){const{thread:s,adapterAvailable:a,threadBusy:r,threadError:o}=e;if(!a)return t.jsx(ce,{glyph:e.sessionBusy?"···":"CX",title:e.sessionError?"Codex did not start":e.sessionBusy?"Starting Codex":"Workspace is view-only",tone:e.sessionError?"error":void 0,children:e.sessionError??(e.sessionBusy?e.sessionLaunchAccepted?"Codex accepted the launch. Scout will switch Deck when its lane appears.":"Scout is launching a broker-managed Codex session.":e.canStartCodexSession?"This lane remains intact when Scout opens its controllable Codex session.":e.sessionStartUnavailableReason??"This workspace remains view-only.")});if(o)return t.jsxs(ce,{glyph:"!",title:"Session connection failed",tone:"error",children:[o,t.jsxs("button",{type:"button",className:"deck-chip deck-chip--warn",onClick:e.connectThread,disabled:r,children:[t.jsx(de,{}),t.jsx("span",{children:"Retry controller"})]})]});if(!s)return t.jsx(ce,{glyph:"···",title:"Reading the Codex session",children:"Nothing is shown until the host returns a snapshot."});if(s.state==="disconnected")return t.jsxs(ce,{glyph:"CX",title:"Session is disconnected",children:["No turns are readable until Deck reconnects Scout's managed Codex session on the host.",t.jsxs("button",{type:"button",className:"deck-chip deck-chip--warn",onClick:e.connectThread,disabled:r,children:[t.jsx(de,{}),t.jsx("span",{children:"Reconnect"})]})]});const u=fn(s,n);return u.length===0?t.jsx(ce,{glyph:"●",title:"Codex ready",tone:"connected",children:s.threadId?`Session ${z(s.threadId)} is ready. Start its first turn from the console.`:"The session is connected. Start its first turn from the console."}):t.jsx("div",{className:"deck-stream",children:u.map(p=>t.jsxs("article",{className:"deck-stream__row","data-role":p.role,"data-type":p.block.type,children:[t.jsxs("div",{className:"deck-stream__meta",children:[t.jsx("span",{children:p.role==="operator"?"YOU":p.block.type==="action"?"RUN":p.block.type==="reasoning"?"THINK":"CX"}),t.jsx("time",{children:le(p.at)})]}),t.jsxs("div",{className:"deck-stream__content",children:[t.jsx("strong",{children:Re(p.block)}),ot(p.block)?t.jsx("p",{children:ot(p.block)}):null]}),t.jsx("span",{className:"deck-stream__status","data-live":p.status==="streaming"||void 0,children:p.status==="streaming"?"live":p.status})]},p.block.id))})}function ua({lane:e}){return e.events.length===0?t.jsx(ce,{glyph:"·",title:"No recent activity",children:"Nothing has been observed on this lane recently."}):t.jsx("div",{className:"deck-stream",children:e.events.slice(0,8).map(n=>t.jsxs("article",{className:"deck-stream__row","data-kind":n.kind,children:[t.jsxs("div",{className:"deck-stream__meta",children:[t.jsx("span",{children:n.kind.toUpperCase()}),t.jsx("time",{children:le(n.at)})]}),t.jsxs("div",{className:"deck-stream__content",children:[t.jsx("strong",{children:n.text}),n.detail?t.jsx("p",{children:n.detail}):null]})]},n.id))})}function ce({glyph:e,title:n,tone:s,children:a}){return t.jsxs("div",{className:"deck-stream-empty","data-tone":s,children:[t.jsx("span",{className:"deck-stream-empty__glyph",children:e}),t.jsx("strong",{children:n}),t.jsx("p",{children:a})]})}function kt({model:e}){return t.jsxs("div",{className:"deck-tabs",role:"tablist","aria-label":"Lane view",children:[t.jsx("button",{type:"button",role:"tab","aria-selected":e.view==="thread",onClick:()=>e.setView("thread"),disabled:!e.adapterAvailable,children:"Session turns"}),t.jsx("button",{type:"button",role:"tab","aria-selected":e.view==="signal",onClick:()=>e.setView("signal"),children:"Lane signal"})]})}function bt({model:e,limit:n}){return e.view==="signal"&&e.selected?t.jsx(ua,{lane:e.selected}):t.jsx(da,{model:e,limit:n})}function Be({model:e}){return t.jsxs("span",{className:"deck-connection","data-connection":e.connection,children:[t.jsx("i",{className:"deck-lamp"}),ea(e.connection)]})}function pa({model:e}){const n=e.selected;return n?t.jsxs("div",{className:"deck-identity",children:[t.jsx("h2",{children:n.name}),t.jsxs("p",{children:[t.jsx("span",{children:n.projectRoot??"Project unavailable"}),t.jsxs("em",{children:[n.hostName," · ",n.model??"default model"," · ",ue(n.transport)]})]})]}):null}function jt({model:e}){return t.jsxs("div",{className:"deck-standby",children:[t.jsx("i",{className:"deck-lamp"}),t.jsx("span",{className:"deck-kicker",children:"Deck standing by"}),t.jsx("h2",{children:e.connection==="error"?"Host unavailable":"Waiting for a connected host"}),t.jsx("p",{children:e.error??"Connect a trusted Scout host to populate live lanes and enable controls."}),t.jsx(vt,{model:e})]})}function ha({model:e}){const[n,s]=d.useState(()=>e.preview&&new URLSearchParams(window.location.search).get("palette")==="open"),[a,r]=d.useState(""),[o,u]=d.useState(0),p=d.useRef(null),v=e.selected,S=d.useMemo(()=>{const f=[{id:"start-codex",group:"Session",label:e.sessionBusy?"Starting Codex for this workspace":"Start Codex for this workspace",disabled:!e.canStartCodexSession,run:()=>{e.startCodexSession()}},{id:"talk",group:"Turn",label:e.voice.input.state==="listening"?"Stop dictation and send":"Talk to this session",hint:e.phase==="running"?"steers the running turn":"starts a turn",disabled:!e.canTalk,run:()=>{e.toggleVoiceInput()}},{id:"send",group:"Turn",label:e.phase==="running"?"Steer with composer text":"Send composer text",hint:"⌘↵",disabled:!e.canCompose||!e.command.trim(),run:()=>{e.submitTurn(e.command)}},{id:"stop",group:"Turn",label:"Interrupt the running turn",disabled:!e.canInterrupt||e.threadBusy,run:()=>{e.interruptThread()}},{id:"bind",group:"Session",label:e.phase==="failed"?"Retry the Codex connection":"Reconnect the Codex session",disabled:!e.canRebind||e.threadBusy,run:()=>{e.connectThread()}},{id:"refresh",group:"Session",label:"Re-read the session snapshot",disabled:!e.canRefresh,run:()=>{e.refreshSnapshot()}},{id:"view",group:"Session",label:e.view==="thread"?"Show lane signal":"Show session turns",run:()=>e.setView(e.view==="thread"?"signal":"thread")},{id:"voice-out",group:"Audio",label:e.voiceOutEnabled?"Mute spoken replies":"Speak replies aloud",disabled:!e.voiceOutputAvailable,run:()=>{e.toggleVoiceOutput()}},{id:"stop-speaking",group:"Audio",label:"Stop speaking now",disabled:!e.voice.output.speaking,run:()=>{e.stopSpeaking()}},{id:"auto-send",group:"Audio",label:e.autoSendOnStop?"Keep transcript in composer instead of sending":"Send when dictation stops",run:e.toggleAutoSend},{id:"audio",group:"Audio",label:"Open audio and dictation settings",run:()=>e.setSettingsOpen(!0)},{id:"ops",group:"Layout",label:"Switch to Ops (routed agent controller)",run:()=>e.setTreatment("ops")},{id:"yoke",group:"Layout",label:"Switch to Yoke (two-grip cockpit)",run:()=>e.setTreatment("yoke")},{id:"console",group:"Layout",label:"Switch to Console (fleet board)",run:()=>e.setTreatment("console")}];for(const[c,g]of e.scopedLanes.entries())f.push({id:`lane-${g.key}`,group:"Lanes",label:`${String(c+1).padStart(2,"0")} · ${g.name}`,hint:`${g.hostName} · ${Y(g.state).toLowerCase()}`,run:()=>e.selectLane(g)});for(const c of e.hosts)f.push({id:`scope-${c.id}`,group:"Lanes",label:`Scope to ${c.name}`,hint:c.state,disabled:c.state!=="connected",run:()=>e.selectHostScope(c.id)});return e.hosts.length>1&&f.push({id:"scope-all",group:"Lanes",label:"Scope to all hosts",run:()=>e.selectHostScope("all")}),f},[e]),_=d.useMemo(()=>{const f=a.trim().toLowerCase(),c=S.filter(g=>!g.disabled);return f?c.filter(g=>`${g.group} ${g.label} ${g.hint??""}`.toLowerCase().includes(f)):c},[S,a]);if(d.useEffect(()=>{u(0)},[a,n]),d.useEffect(()=>{n&&p.current?.focus()},[n]),d.useEffect(()=>{const f=c=>{if((c.metaKey||c.ctrlKey)&&c.key.toLowerCase()==="k"){c.preventDefault(),r(""),s(g=>!g);return}if(n){if(c.key==="Escape"){c.preventDefault(),s(!1);return}if(c.key==="ArrowDown"||c.key==="ArrowUp"){c.preventDefault(),u(g=>_.length===0?0:(g+(c.key==="ArrowDown"?1:-1)+_.length)%_.length);return}if(c.key==="Enter"){c.preventDefault();const g=_[o];if(!g)return;g.run(),s(!1)}}};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[n,_,o]),!v)return t.jsx("div",{className:"brief brief--standby",children:t.jsx(jt,{model:e})});const U=ut(e.thread),T=!!e.thread?.threadId;return t.jsxs("div",{className:"brief",children:[t.jsxs("div",{className:"brief__column",children:[t.jsxs("header",{className:"brief__head",children:[t.jsxs("div",{className:"brief__head-top",children:[t.jsx(Be,{model:e}),t.jsxs("div",{className:"brief__head-keys",children:[t.jsx(xt,{model:e}),t.jsxs("button",{type:"button",className:"brief__jump",onClick:()=>{r(""),s(!0)},children:[t.jsxs("span",{children:[String(e.selectedIndex+1).padStart(2,"0")," / ",String(e.scopedLanes.length).padStart(2,"0")," lanes"]}),t.jsx(Ae,{dir:"down"})]})]})]}),t.jsxs("span",{className:"deck-kicker brief__kicker","data-bound":T||void 0,children:[e.adapterAvailable?T?"Scout Codex session":"No session connected":e.sessionBusy?"Starting Codex":"Codex session not started"," · ",v.name," · ",v.hostName]}),t.jsx("h2",{children:T?U??"Untitled session":v.name}),t.jsxs("p",{className:"brief__meta",children:[e.thread?.threadId?`id ${z(e.thread.threadId)}`:"id —",e.thread?.turnId?` · turn ${z(e.thread.turnId)}`:""," · ",v.projectRoot??"project unavailable"," · ",v.model??"default model"," · ",ue(v.transport)]}),t.jsx(Le,{model:e})]}),t.jsxs("div",{className:"brief__viewport",children:[t.jsxs("div",{className:"brief__viewport-head",children:[t.jsx(kt,{model:e}),e.canInterrupt?t.jsxs("button",{type:"button",className:"deck-stop",onClick:e.interruptThread,disabled:e.threadBusy||e.phase==="stopping",children:[t.jsx(Oe,{}),t.jsx("span",{children:e.phase==="stopping"?"Stopping":"Stop turn"})]}):null]}),t.jsx("div",{className:"brief__viewport-body",children:t.jsx(bt,{model:e,limit:14})})]}),t.jsxs("div",{className:"brief__dock",children:[t.jsxs("div",{className:"brief__dock-voice",children:[t.jsx(De,{model:e,size:"lg"}),t.jsxs("div",{className:"brief__dock-trace",children:[t.jsx(Me,{model:e}),t.jsx($e,{model:e})]}),t.jsxs("button",{type:"button",className:"brief__commands",onClick:()=>{r(""),s(!0)},"aria-haspopup":"dialog",children:["Commands",t.jsx("em",{children:"⌘K"})]})]}),t.jsx(gt,{model:e,rows:2})]})]}),n?t.jsx("div",{className:"brief__palette-scrim",onClick:()=>s(!1),children:t.jsxs("div",{className:"brief__palette",role:"dialog","aria-label":"Deck commands",onClick:f=>f.stopPropagation(),children:[t.jsx("input",{ref:p,value:a,onChange:f=>r(f.target.value),placeholder:"Run a command or jump to a lane…","aria-label":"Filter commands"}),t.jsxs("div",{className:"brief__palette-list",children:[_.length===0?t.jsx("p",{className:"deck-empty-note",children:"Nothing matches, and nothing was run."}):null,_.map((f,c)=>t.jsxs("button",{type:"button","data-active":c===o||void 0,onMouseEnter:()=>u(c),onClick:()=>{f.run(),s(!1)},children:[t.jsx("span",{className:"brief__palette-group","data-tone":f.group==="Lanes"?fa(e,f.id):void 0,children:f.group}),t.jsx("strong",{children:f.label}),f.hint?t.jsx("em",{children:f.hint}):null]},f.id))]}),t.jsx("footer",{children:"↑↓ move · ↵ run · esc close"})]})}):null,t.jsx(Ve,{model:e})]})}function fa(e,n){const s=n.replace(/^lane-/,""),a=e.scopedLanes.find(r=>r.key===s);return a?oe(a):void 0}function ga({model:e}){const n=e.selected;return t.jsxs("div",{className:"console",children:[t.jsxs("header",{className:"console__bar",children:[t.jsxs("div",{className:"console__bar-status",children:[t.jsx(Be,{model:e}),t.jsx(bn,{model:e,size:"md"})]}),t.jsx(Le,{model:e,compact:!0}),t.jsxs("div",{className:"console__bar-controls",children:[t.jsx(jn,{model:e}),t.jsx(_n,{model:e}),t.jsx(yn,{model:e}),t.jsx(xt,{model:e}),t.jsx(Sn,{model:e}),t.jsx(De,{model:e,size:"md"})]})]}),t.jsxs("div",{className:"console__body",children:[t.jsxs("aside",{className:"console__bank","aria-label":"Agent lanes",children:[t.jsxs("div",{className:"console__panel-head",children:[t.jsx("span",{className:"deck-kicker",children:"Lanes"}),t.jsxs("span",{className:"deck-kicker",children:[e.activeCount," live / ",e.scopedLanes.length]})]}),t.jsxs("div",{className:"console__lanes",children:[e.scopedLanes.map((s,a)=>t.jsx(la,{lane:s,index:a,model:e},s.key)),e.scopedLanes.length===0?t.jsx("p",{className:"deck-empty-note",children:"No lanes in this scope."}):null]}),t.jsx(vt,{model:e})]}),t.jsx("section",{className:"console__stage",children:n?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"console__stage-head",children:[t.jsx(pa,{model:e}),t.jsxs("div",{className:"console__meter","aria-label":"Lane activity over the last five minutes",children:[t.jsx("small",{children:"5m"}),t.jsx("div",{"aria-hidden":"true",children:e.laneActivity.map((s,a)=>t.jsx("i",{style:{"--level":s}},a))}),t.jsx("small",{children:"now"})]})]}),t.jsxs("div",{className:"console__viewport",children:[t.jsxs("div",{className:"console__panel-head",children:[t.jsx(kt,{model:e}),t.jsxs("span",{className:"deck-kicker",children:[n.hostName," / ",n.id]})]}),t.jsx("div",{className:"console__viewport-body",children:t.jsx(bt,{model:e,limit:12})})]}),t.jsxs("div",{className:"console__dock",children:[t.jsx(Me,{model:e}),t.jsx($e,{model:e}),t.jsx(gt,{model:e,rows:2})]})]}):t.jsx(jt,{model:e})}),t.jsxs("aside",{className:"console__rail","aria-label":"Session readout",children:[t.jsxs("div",{className:"console__panel-head",children:[t.jsx("span",{className:"deck-kicker",children:"Readout"}),t.jsx("span",{className:"deck-kicker",children:e.preview?"Sample":e.adapterAvailable?"Native":"—"})]}),t.jsxs("dl",{className:"console__readout",children:[t.jsxs("div",{children:[t.jsx("dt",{children:"Source"}),t.jsx("dd",{children:e.preview?"sample data":"paired host"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Bridge"}),t.jsx("dd",{children:na(e.connection)})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Session"}),t.jsx("dd",{children:e.thread?.threadId?z(e.thread.threadId):e.sessionBusy?"starting":e.adapterAvailable?"disconnected":"—"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Turn"}),t.jsx("dd",{children:e.thread?.turnId?z(e.thread.turnId):"none"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Voice in"}),t.jsx("dd",{children:e.voiceAvailable?ht(e.voice.input.state):"—"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Voice out"}),t.jsx("dd",{children:e.voiceOutputAvailable?e.voice.output.speaking?"speaking":e.voiceOutEnabled?"armed":"off":"—"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Queue"}),t.jsx("dd",{title:e.thread?.capabilityNotes.queue,children:e.adapterAvailable?"off":"—"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Approval"}),t.jsx("dd",{title:e.thread?.capabilityNotes.approvals,children:e.adapterAvailable?"off":"—"})]})]}),t.jsxs("div",{className:"console__panel-head",children:[t.jsx("span",{className:"deck-kicker",children:"Attention"}),t.jsx("span",{className:"deck-kicker",children:String(e.attention.length).padStart(2,"0")})]}),t.jsx(mn,{model:e}),t.jsxs("div",{className:"console__panel-head",children:[t.jsx("span",{className:"deck-kicker",children:"Fleet"}),t.jsx("span",{className:"deck-kicker",children:String(e.hosts.length).padStart(2,"0")})]}),t.jsx("div",{className:"console__fleet",children:e.hosts.map(s=>t.jsxs("div",{className:"console__fleet-row",children:[t.jsx("i",{"data-state":s.state}),t.jsxs("span",{children:[t.jsx("strong",{children:s.name}),t.jsxs("small",{children:[e.lanes.filter(a=>a.hostId===s.id).length," lanes"]})]}),t.jsx("em",{children:s.state})]},s.id))})]})]}),t.jsx(Ve,{model:e})]})}function xa({model:e}){const n=e.selected,s=n?e.scopedLanes.findIndex(c=>c.key===n.key)+1:0,a=d.useMemo(()=>e.scopedLanes.flatMap((c,g)=>c.events.map(X=>({id:`${c.key}:${X.id}`,at:X.at,channel:g+1,lane:c,text:X.text,detail:X.detail??""}))).sort((c,g)=>g.at-c.at).slice(0,16),[e.scopedLanes]),r=d.useMemo(()=>n?e.view==="signal"||!e.thread?n.events.slice(0,5).reverse().map(c=>({id:c.id,label:c.kind.toUpperCase(),text:c.text,detail:c.detail??"",at:c.at,live:oe(n)==="live"&&c.id===n.events[0]?.id})):fn(e.thread,5).map(c=>({id:c.block.id,label:c.role==="operator"?"YOU":c.block.type==="action"?"RUN":c.block.type==="reasoning"?"THINK":"CX",text:Re(c.block),detail:ot(c.block),at:c.at,live:c.status==="streaming"})):[],[n,e.thread,e.view]),u=["all",...e.hosts.filter(c=>c.state==="connected").map(c=>c.id)],p=Math.max(0,u.indexOf(e.hostScope)),v=u[(p+1)%Math.max(1,u.length)]??"all",S=e.hostScope==="all"?"All hosts":e.hosts.find(c=>c.id===e.hostScope)?.name??e.hostScope;if(!n)return t.jsx("div",{className:"ops ops--standby",children:t.jsxs("div",{className:"ops__standby",children:[t.jsx(Be,{model:e}),t.jsx("strong",{children:"No agent channels are available"}),t.jsx("p",{children:e.error??"Waiting for a connected host to publish its Scout lanes."})]})});const _=ut(e.thread),U=e.connection==="ready"?"ONLINE":e.connection==="partial"?"DEGRADED":e.connection.toUpperCase(),T=e.preview?"SIMULATED":e.sessionBusy?"STARTING CODEX":e.adapterAvailable?e.thread?.threadId&&(e.connection==="ready"||e.connection==="partial")?"LIVE":e.connection==="ready"||e.connection==="partial"?"SESSION OFFLINE":"OFFLINE":e.canStartCodexSession?"READY TO START":"VIEW ONLY",f=e.preview?"8 SIMULATED CONTROLS":e.connection==="ready"||e.connection==="partial"?"8 HOST CONTROLS":"CONTROLS OFFLINE";return t.jsxs("div",{className:"ops",children:[t.jsx("section",{className:"ops__channels","aria-label":"Agent channels",children:e.scopedLanes.map((c,g)=>t.jsx(va,{lane:c,index:g,active:c.key===n.key,model:e},c.key))}),t.jsxs("section",{className:"ops__voice","aria-label":"Routed voice control",children:[t.jsx(De,{model:e,size:"md"}),t.jsx(Me,{model:e}),t.jsxs("div",{className:"ops__voice-copy",children:[t.jsx("strong",{children:gn(e.primaryAction,e.phase,e.voice.input.state,e.sessionStartUnavailableReason).toUpperCase()}),t.jsx($e,{model:e})]}),t.jsxs("div",{className:"ops__routes",role:"group","aria-label":"Route dictation to agent channel",children:[t.jsx("span",{children:"ROUTE TO"}),t.jsx("div",{children:e.scopedLanes.map((c,g)=>t.jsxs("button",{type:"button","data-active":c.key===n.key||void 0,onClick:()=>e.selectLane(c),"aria-pressed":c.key===n.key,children:["CH ",g+1]},c.key))})]})]}),t.jsxs("section",{className:"ops__enclosure",children:[t.jsxs("header",{className:"ops__enclosure-head",children:[t.jsxs("span",{className:"ops__host",children:[t.jsx("i",{"data-tone":e.phaseTone}),n.hostName]}),t.jsxs("span",{className:"ops__binding",children:[e.adapterAvailable?"SCOUT APP-SERVER":ue(n.transport).toUpperCase(),t.jsx("i",{children:"·"}),_??n.projectRoot??"NO SESSION"]})]}),t.jsxs("div",{className:"ops__workspace",children:[t.jsxs("article",{className:"ops__console",children:[t.jsxs("header",{children:[t.jsx("span",{children:"agent console"}),t.jsx("strong",{"data-tone":e.phaseTone,children:dt(e.phase,n.state)})]}),t.jsxs("div",{className:"ops__agent-line",children:[t.jsx("h2",{children:n.name}),t.jsxs("span",{children:["CH ",String(s).padStart(2,"0")," · ",n.hostName.toUpperCase()]})]}),t.jsx("p",{className:"ops__task",title:_??void 0,children:_??(e.adapterAvailable?"No Codex session connected":e.sessionBusy?"Starting Codex for this workspace…":"Start Codex to control this workspace")}),t.jsx(Le,{model:e,compact:!0}),t.jsx("div",{className:"ops__console-rows","data-view":e.view,children:r.length>0?r.map(c=>t.jsxs("div",{className:"ops__console-row","data-live":c.live||void 0,children:[t.jsx("i",{}),t.jsx("span",{children:c.label}),t.jsxs("p",{children:[t.jsx("strong",{children:c.text}),c.detail?t.jsx("small",{children:c.detail}):null]}),t.jsx("time",{children:le(c.at)})]},c.id)):t.jsxs("p",{className:"ops__empty",children:["No ",e.view==="thread"?"session turns":"lane signal"," reported yet."]})}),t.jsxs("form",{className:"ops__composer",onSubmit:e.onComposerSubmit,children:[t.jsx("span",{"aria-hidden":"true",children:"›"}),t.jsx("input",{value:e.command,onChange:c=>e.setCommand(c.target.value),placeholder:xn(e.phase,e.voice.input.state),disabled:!e.canCompose,"aria-label":e.phase==="running"?"Steer the active Codex turn":"Start a Codex turn"}),t.jsx("button",{type:"submit",disabled:!e.canCompose||!e.command.trim(),children:e.phase==="running"?"Steer":"Send"})]}),t.jsxs("div",{className:"ops__console-actions",children:[e.canRebind?t.jsxs("button",{type:"button",onClick:e.connectThread,disabled:e.threadBusy,children:[t.jsx(de,{}),e.phase==="failed"?"Retry link":"Reconnect"]}):null,t.jsxs("button",{type:"button",onClick:e.refreshSnapshot,disabled:!e.canRefresh,children:[t.jsx(lt,{}),"Re-read"]}),e.canInterrupt?t.jsxs("button",{type:"button",className:"ops__danger",onClick:e.interruptThread,disabled:e.threadBusy,children:[t.jsx(Oe,{}),e.phase==="stopping"?"Stopping":"Stop turn"]}):null]}),t.jsxs("footer",{children:[t.jsxs("span",{children:["MODEL ",t.jsx("strong",{children:n.model??"DEFAULT"})]}),t.jsxs("span",{children:["CONTROL ",t.jsx("strong",{children:T})]}),t.jsxs("span",{title:e.thread?.threadId??void 0,children:["SESSION ",t.jsx("strong",{children:e.thread?.threadId?z(e.thread.threadId):"—"})]})]})]}),t.jsxs("aside",{className:"ops__feed",children:[t.jsxs("header",{children:[t.jsx("span",{children:"fleet feed"}),t.jsxs("strong",{children:[e.hostScope==="all"?"ALL HOSTS":S.toUpperCase()," · ",a.length," EVENTS"]})]}),t.jsx("div",{className:"ops__feed-rows",children:a.length>0?a.map(c=>t.jsxs("button",{type:"button","data-active":c.lane.key===n.key||void 0,"data-tone":oe(c.lane),onClick:()=>e.selectLane(c.lane),"aria-label":`Channel ${c.channel}, ${c.lane.name}: ${c.text}`,children:[t.jsx("time",{children:le(c.at)}),t.jsxs("span",{children:["CH ",c.channel]}),t.jsx("strong",{children:c.lane.name.toUpperCase()}),t.jsxs("p",{children:[c.text,c.detail?t.jsx("small",{children:c.detail}):null]})]},c.id)):t.jsx("p",{className:"ops__empty",children:"No fleet activity reported yet."})})]})]})]}),t.jsxs("section",{className:"ops__commands","aria-label":"Deck commands",children:[t.jsxs("header",{children:[t.jsx("span",{children:"COMMANDS"}),t.jsx("strong",{children:f})]}),t.jsxs("div",{className:"ops__command-grid",children:[t.jsx(G,{ordinal:"01",label:e.primaryAction==="start_codex"?"Start Codex":"Voice",meta:e.primaryAction==="start_codex"?e.sessionBusy?"Starting":"Workspace":ht(e.voice.input.state),icon:e.primaryAction==="start_codex"?t.jsx(de,{}):t.jsx(vn,{}),active:e.voiceInputActive,disabled:e.primaryAction==="start_codex"?!e.canStartCodexSession:e.primaryAction==="connect"?e.threadBusy:!e.canTalk,onClick:e.onPrimary}),t.jsx(G,{ordinal:"02",label:"Session turns",meta:"Codex session",glyph:"◎",active:e.view==="thread",disabled:!e.adapterAvailable,onClick:()=>e.setView("thread")}),t.jsx(G,{ordinal:"03",label:"Lane signal",meta:"Scout tail",glyph:"≋",active:e.view==="signal",onClick:()=>e.setView("signal")}),t.jsx(G,{ordinal:"04",label:"Re-read",meta:"Session snapshot",icon:t.jsx(lt,{}),disabled:!e.canRefresh,onClick:()=>{e.refreshSnapshot()}}),t.jsx(G,{ordinal:"05",label:e.voiceOutEnabled?"Voice out":"Muted",meta:e.voice.output.speaking?"Speaking":e.voiceOutEnabled?"Armed":"Off",icon:t.jsx(ft,{}),active:e.voiceOutEnabled,disabled:!e.voiceOutputAvailable,onClick:()=>{e.toggleVoiceOutput()}}),t.jsx(G,{ordinal:"06",label:"Audio",meta:"Dictation",icon:t.jsx(kn,{}),active:e.settingsOpen,onClick:()=>e.setSettingsOpen(!e.settingsOpen)}),t.jsx(G,{ordinal:"07",label:"Host scope",meta:S,glyph:"⌾",disabled:u.length<2,onClick:()=>e.selectHostScope(v)}),t.jsx(G,{ordinal:"08",label:"Next lane",meta:`${s} / ${e.scopedLanes.length}`,icon:t.jsx(Ae,{dir:"right"}),disabled:e.scopedLanes.length<2,onClick:()=>e.stepLane(1)})]})]}),t.jsxs("footer",{className:"ops__status",children:[t.jsxs("span",{className:"ops__status-online","data-connection":e.connection,children:[t.jsx("i",{}),U]}),t.jsx("span",{children:n.hostName}),t.jsxs("span",{children:["ROUTE ",t.jsxs("strong",{children:["CH ",s]})]}),e.attention.length>0?t.jsxs("span",{className:"ops__status-attn",children:["ATTN ",e.attention.length]}):null,t.jsxs("span",{children:["HOSTS ",t.jsx("strong",{children:e.hosts.length})]}),t.jsxs("span",{children:["LIVE ",t.jsx("strong",{children:e.activeCount})]}),t.jsxs("span",{children:["VIEW · ",t.jsx("strong",{children:"OPS"})]})]}),t.jsx(Ve,{model:e})]})}function va({lane:e,index:n,active:s,model:a}){const r=e.events[0],o=s&&a.phaseTone!=="quiet"?a.phaseTone:oe(e);return t.jsxs("button",{type:"button",className:"ops-channel","data-active":s||void 0,"data-tone":o,onClick:()=>a.selectLane(e),"aria-pressed":s,"aria-label":`Channel ${n+1}, ${e.name}, ${Y(e.state)}`,children:[t.jsxs("span",{className:"ops-channel__head",children:[t.jsxs("small",{children:["CH ",String(n+1).padStart(2,"0")]}),t.jsx("em",{"aria-hidden":"true",children:"▰"}),t.jsx("strong",{children:e.hostName}),t.jsx("i",{}),t.jsx("small",{children:s?dt(a.phase,e.state):Y(e.state)})]}),t.jsx("span",{className:"ops-channel__rule"}),t.jsxs("span",{className:"ops-channel__identity",children:[t.jsx("strong",{children:e.name}),t.jsxs("small",{children:[e.harness??"agent"," · ",e.model??"default"]})]}),t.jsx("span",{className:"ops-channel__task",children:r?.text??e.projectRoot??"No recent activity"}),t.jsxs("span",{className:"ops-channel__signal",children:[t.jsx("i",{}),t.jsx("small",{children:r?.detail||(s?"controller selected":"tap to put on deck")}),t.jsx("time",{children:le(r?.at??e.updatedAt)})]}),t.jsxs("span",{className:"ops-channel__foot",children:[t.jsxs("strong",{children:[t.jsx("i",{}),s?"ON DECK":"TAP TO SWITCH"]}),t.jsx("small",{children:ue(e.transport).toUpperCase()})]})]})}function G({ordinal:e,label:n,meta:s,glyph:a,icon:r,active:o,disabled:u=!1,onClick:p}){return t.jsxs("button",{type:"button",className:"ops-command","data-active":o||void 0,disabled:u,onClick:p,"aria-pressed":o??void 0,title:`${n} · ${s}`,children:[t.jsx("span",{className:"ops-command__icon",children:r??a}),t.jsxs("span",{children:[t.jsx("strong",{children:n}),t.jsxs("small",{children:[e," · ",s.toUpperCase()]})]})]})}function ka({model:e}){const n=e.selected;if(!n)return t.jsx("div",{className:"yoke yoke--standby",children:t.jsx(jt,{model:e})});const s=e.scopedLanes.length,a=Math.max(1,e.selectedIndex+1);return t.jsxs("div",{className:"yoke",children:[t.jsxs("div",{className:"yoke__grip yoke__grip--left",children:[t.jsx(De,{model:e,size:"xl"}),t.jsx(Me,{model:e}),t.jsx(jn,{model:e,block:!0}),t.jsxs("div",{className:"yoke__stepper",role:"group","aria-label":"Lane navigation",children:[t.jsx("button",{type:"button",onClick:()=>e.stepLane(-1),disabled:s<2,"aria-label":"Previous lane",children:t.jsx(Ae,{dir:"left"})}),t.jsxs("span",{children:[t.jsx("strong",{children:String(a).padStart(2,"0")}),t.jsxs("small",{children:["of ",String(s).padStart(2,"0")]})]}),t.jsx("button",{type:"button",onClick:()=>e.stepLane(1),disabled:s<2,"aria-label":"Next lane",children:t.jsx(Ae,{dir:"right"})})]}),t.jsx("div",{className:"yoke__ladder",role:"group","aria-label":"Lane ladder",children:e.scopedLanes.map((r,o)=>t.jsxs("button",{type:"button","data-active":r.key===n.key||void 0,"data-tone":oe(r),onClick:()=>e.selectLane(r),"aria-pressed":r.key===n.key,"aria-label":`${r.name} on ${r.hostName} — ${Y(r.state)}`,title:`${r.name} · ${r.hostName} · ${Y(r.state)}`,children:[t.jsx("span",{children:String(o+1).padStart(2,"0")}),t.jsx("i",{"aria-hidden":"true"})]},r.key))}),t.jsxs("div",{className:"yoke__grip-keys",children:[t.jsx(xt,{model:e}),t.jsx(Sn,{model:e})]}),t.jsxs("div",{className:"yoke__grip-foot",children:[t.jsx("span",{className:"deck-kicker",children:"Lane traffic"}),t.jsx(ca,{model:e})]})]}),t.jsxs("section",{className:"yoke__stage",children:[t.jsxs("header",{className:"yoke__head",children:[t.jsx("div",{className:"yoke__head-task",children:t.jsx(bn,{model:e,size:"lg"})}),t.jsxs("div",{className:"yoke__head-lane",children:[t.jsx("h2",{children:n.name}),t.jsx("p",{children:n.projectRoot??"Project unavailable"})]})]}),t.jsx(Le,{model:e}),t.jsxs("div",{className:"yoke__viewport",children:[t.jsxs("div",{className:"yoke__viewport-head",children:[t.jsx(kt,{model:e}),t.jsxs("span",{className:"deck-kicker",children:[n.hostName," / ",n.id]})]}),t.jsx("div",{className:"yoke__viewport-body",children:t.jsx(bt,{model:e,limit:10})})]}),t.jsxs("div",{className:"yoke__dock",children:[t.jsx($e,{model:e}),t.jsx(gt,{model:e,rows:2})]})]}),t.jsxs("aside",{className:"yoke__grip yoke__grip--right","aria-label":"Session status",children:[t.jsxs("div",{className:"yoke__status",children:[t.jsx(Be,{model:e}),t.jsxs("dl",{children:[t.jsxs("div",{children:[t.jsx("dt",{children:"Lane state"}),t.jsx("dd",{children:Y(n.state)})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Harness"}),t.jsx("dd",{children:n.harness??"unknown"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Model"}),t.jsx("dd",{children:n.model??"default"})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Transport"}),t.jsx("dd",{title:ue(n.transport),children:ta(n.transport)})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Live lanes"}),t.jsxs("dd",{children:[e.activeCount," of ",s]})]})]})]}),t.jsxs("div",{className:"yoke__grip-keys",children:[t.jsx(yn,{model:e}),t.jsx(_n,{model:e})]}),t.jsxs("div",{className:"yoke__attention",children:[t.jsxs("span",{className:"deck-kicker",children:["Needs you · ",String(e.attention.length).padStart(2,"0")]}),t.jsx(mn,{model:e})]}),t.jsxs("div",{className:"yoke__scope",children:[t.jsx("span",{className:"deck-kicker",children:"Host scope"}),t.jsx(vt,{model:e})]})]}),t.jsx(Ve,{model:e})]})}function _a(){const e=qs(),n=e.hosts.find(a=>a.state==="connected"),s=e.preview?{state:"preview",label:"PREVIEW",detail:"sample lanes · controls simulate locally"}:e.connection==="ready"||e.connection==="partial"?{state:e.connection==="ready"?"live":"partial",label:e.connection==="ready"?"LIVE":"DEGRADED",detail:`${n?.name??"host"} · Scout-managed Codex control`}:{state:"offline",label:"OFFLINE",detail:"no host connected"};return t.jsxs("main",{className:"scout-deck","data-connection":e.connection,"data-treatment":e.treatment,"data-preview":e.preview||void 0,children:[t.jsxs("header",{className:"scout-deck__strip",children:[t.jsxs("div",{className:"scout-deck__brand",children:[e.treatment==="ops"?t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"scout-deck__ops-brand",children:[t.jsx("strong",{children:"SCOUT"}),t.jsx("i",{children:"·"}),t.jsx("small",{children:"OPS"})]}),t.jsxs("span",{className:"scout-deck__ops-mode",children:[t.jsx("i",{}),"AGENT DECK"]})]}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"scout-deck__mark","aria-hidden":"true",children:"S"}),t.jsxs("span",{className:"scout-deck__wordmark",children:[t.jsx("strong",{children:"Deck"}),t.jsx("small",{children:rt[e.treatment].tagline})]})]}),t.jsxs("span",{className:"scout-deck__source","data-state":s.state,title:e.preview?"Every lane, thread, and turn on screen is local sample data. No host is attached.":s.detail,children:[t.jsx("strong",{children:s.label}),t.jsx("small",{children:s.detail})]})]}),e.treatment==="ops"?t.jsxs("span",{className:"scout-deck__ops-count",children:[e.hosts.length," HOST",e.hosts.length===1?"":"S"," · ",e.scopedLanes.length," AGENT",e.scopedLanes.length===1?"":"S"]}):null,t.jsx(ra,{model:e})]}),e.treatment==="ops"?t.jsx(xa,{model:e}):e.treatment==="console"?t.jsx(ga,{model:e}):e.treatment==="brief"?t.jsx(ha,{model:e}):t.jsx(ka,{model:e})]})}export{_a as ScoutDeckSurface,Us as buildDeckLanes};
@@ -1 +1 @@
1
- import{j as r}from"./index-C1VaWNuD.js";function o({children:e}){return r.jsx("div",{style:{background:"var(--bg)",color:"var(--ink)",minHeight:"100%",height:"100%",display:"flex",flexDirection:"column"},children:r.jsx("div",{className:"scout-surface-body",children:e})})}export{o as S};
1
+ import{j as r}from"./index-C8uS5szO.js";function o({children:e}){return r.jsx("div",{style:{background:"var(--bg)",color:"var(--ink)",minHeight:"100%",height:"100%",display:"flex",flexDirection:"column"},children:r.jsx("div",{className:"scout-surface-body",children:e})})}export{o as S};
@@ -1,4 +1,4 @@
1
- import{r as l,j as t}from"./index-C1VaWNuD.js";import{D as O,d as le,V as G,p as ne,a as ae}from"./fx-z37u1o2z.js";const re=[{title:"Tone (band-pass)",sliders:[{key:"lowCutHz",label:"Low cut",min:80,max:1200,step:10,format:s=>`${s.toFixed(0)} Hz`},{key:"highCutHz",label:"High cut",min:1500,max:6e3,step:50,format:s=>`${s.toFixed(0)} Hz`},{key:"bandQ",label:"Filter Q",min:.2,max:2,step:.05,format:s=>s.toFixed(2)}]},{title:"Grit (saturation + bit-crush)",sliders:[{key:"saturationAmount",label:"Saturation",min:0,max:1,step:.01,format:s=>s.toFixed(2)},{key:"bitcrushAmount",label:"Bit-crush",min:0,max:1,step:.01,format:s=>s.toFixed(2)}]},{title:"Carrier hiss",sliders:[{key:"hissGain",label:"Hiss level",min:0,max:.25,step:.005,format:s=>s.toFixed(3)},{key:"hissCutoffHz",label:"Hiss high-pass",min:300,max:4e3,step:50,format:s=>`${s.toFixed(0)} Hz`}]},{title:"Presence (mid-band peak — comm intelligibility)",sliders:[{key:"presencePeakDb",label:"Boost",min:0,max:12,step:.5,format:s=>`${s.toFixed(1)} dB`},{key:"presenceCenterHz",label:"Center",min:600,max:3e3,step:50,format:s=>`${s.toFixed(0)} Hz`},{key:"presenceQ",label:"Q (narrowness)",min:.3,max:3,step:.1,format:s=>s.toFixed(1)}]},{title:"Squelch tail (channel-drop noise)",sliders:[{key:"squelchTailGain",label:"Tail gain",min:0,max:.3,step:.005,format:s=>s.toFixed(3)},{key:"squelchTailDurationMs",label:"Tail length",min:40,max:500,step:10,format:s=>`${s.toFixed(0)} ms`}]},{title:"Compressor",sliders:[{key:"compressorThresholdDb",label:"Threshold",min:-60,max:0,step:1,format:s=>`${s.toFixed(0)} dB`},{key:"compressorRatio",label:"Ratio",min:1,max:12,step:.5,format:s=>`${s.toFixed(1)} : 1`}]},{title:"Delivery",sliders:[{key:"playbackRate",label:"Speed (pitch-shifts)",min:.75,max:1.35,step:.01,format:s=>`${s.toFixed(2)}×`}]},{title:"Kerchunk / output",sliders:[{key:"clickGain",label:"Click gain",min:0,max:1,step:.01,format:s=>s.toFixed(2)},{key:"clickDurationMs",label:"Click length",min:20,max:200,step:5,format:s=>`${s.toFixed(0)} ms`},{key:"outputGain",label:"Output gain",min:0,max:2,step:.05,format:s=>s.toFixed(2)},{key:"wetMix",label:"Wet mix",min:0,max:1,step:.01,format:s=>s.toFixed(2)}]}],B=.12,ie=s=>Math.max(.7,Math.min(1.45,s)),ce=220,w={...O,lowCutHz:160,highCutHz:5200,bandQ:.35,saturationAmount:.035,bitcrushAmount:0,hissGain:0,hissCutoffHz:1800,presencePeakDb:1.5,presenceCenterHz:1500,presenceQ:.65,compressorThresholdDb:-15,compressorRatio:2.2,clickEnabled:!0,clickGain:.24,clickDurationMs:45,squelchTailEnabled:!0,squelchTailGain:.018,squelchTailDurationMs:95,playbackRate:1,outputGain:1,wetMix:.38},de={...w,lowCutHz:190,highCutHz:5e3,saturationAmount:.055,bitcrushAmount:.01,hissGain:.006,presencePeakDb:2.5,compressorThresholdDb:-17,compressorRatio:2.8,clickGain:.28,squelchTailGain:.024,squelchTailDurationMs:105,wetMix:.44};function ue(s){return`const SCOUTBOT_VOICE_FX: Partial<VoiceFxParams> = {
1
+ import{r as l,j as t}from"./index-C8uS5szO.js";import{D as O,d as le,V as G,p as ne,a as ae}from"./fx-z37u1o2z.js";const re=[{title:"Tone (band-pass)",sliders:[{key:"lowCutHz",label:"Low cut",min:80,max:1200,step:10,format:s=>`${s.toFixed(0)} Hz`},{key:"highCutHz",label:"High cut",min:1500,max:6e3,step:50,format:s=>`${s.toFixed(0)} Hz`},{key:"bandQ",label:"Filter Q",min:.2,max:2,step:.05,format:s=>s.toFixed(2)}]},{title:"Grit (saturation + bit-crush)",sliders:[{key:"saturationAmount",label:"Saturation",min:0,max:1,step:.01,format:s=>s.toFixed(2)},{key:"bitcrushAmount",label:"Bit-crush",min:0,max:1,step:.01,format:s=>s.toFixed(2)}]},{title:"Carrier hiss",sliders:[{key:"hissGain",label:"Hiss level",min:0,max:.25,step:.005,format:s=>s.toFixed(3)},{key:"hissCutoffHz",label:"Hiss high-pass",min:300,max:4e3,step:50,format:s=>`${s.toFixed(0)} Hz`}]},{title:"Presence (mid-band peak — comm intelligibility)",sliders:[{key:"presencePeakDb",label:"Boost",min:0,max:12,step:.5,format:s=>`${s.toFixed(1)} dB`},{key:"presenceCenterHz",label:"Center",min:600,max:3e3,step:50,format:s=>`${s.toFixed(0)} Hz`},{key:"presenceQ",label:"Q (narrowness)",min:.3,max:3,step:.1,format:s=>s.toFixed(1)}]},{title:"Squelch tail (channel-drop noise)",sliders:[{key:"squelchTailGain",label:"Tail gain",min:0,max:.3,step:.005,format:s=>s.toFixed(3)},{key:"squelchTailDurationMs",label:"Tail length",min:40,max:500,step:10,format:s=>`${s.toFixed(0)} ms`}]},{title:"Compressor",sliders:[{key:"compressorThresholdDb",label:"Threshold",min:-60,max:0,step:1,format:s=>`${s.toFixed(0)} dB`},{key:"compressorRatio",label:"Ratio",min:1,max:12,step:.5,format:s=>`${s.toFixed(1)} : 1`}]},{title:"Delivery",sliders:[{key:"playbackRate",label:"Speed (pitch-shifts)",min:.75,max:1.35,step:.01,format:s=>`${s.toFixed(2)}×`}]},{title:"Kerchunk / output",sliders:[{key:"clickGain",label:"Click gain",min:0,max:1,step:.01,format:s=>s.toFixed(2)},{key:"clickDurationMs",label:"Click length",min:20,max:200,step:5,format:s=>`${s.toFixed(0)} ms`},{key:"outputGain",label:"Output gain",min:0,max:2,step:.05,format:s=>s.toFixed(2)},{key:"wetMix",label:"Wet mix",min:0,max:1,step:.01,format:s=>s.toFixed(2)}]}],B=.12,ie=s=>Math.max(.7,Math.min(1.45,s)),ce=220,w={...O,lowCutHz:160,highCutHz:5200,bandQ:.35,saturationAmount:.035,bitcrushAmount:0,hissGain:0,hissCutoffHz:1800,presencePeakDb:1.5,presenceCenterHz:1500,presenceQ:.65,compressorThresholdDb:-15,compressorRatio:2.2,clickEnabled:!0,clickGain:.24,clickDurationMs:45,squelchTailEnabled:!0,squelchTailGain:.018,squelchTailDurationMs:95,playbackRate:1,outputGain:1,wetMix:.38},de={...w,lowCutHz:190,highCutHz:5e3,saturationAmount:.055,bitcrushAmount:.01,hissGain:.006,presencePeakDb:2.5,compressorThresholdDb:-17,compressorRatio:2.8,clickGain:.28,squelchTailGain:.024,squelchTailDurationMs:105,wetMix:.44};function ue(s){return`const SCOUTBOT_VOICE_FX: Partial<VoiceFxParams> = {
2
2
  ${Object.entries(s).map(([x,u])=>` ${x}: ${typeof u=="number"?Number(u.toFixed(3)):String(u)},`).join(`
3
3
  `)}
4
4
  };`}function Xe(){const[s,D]=l.useState(null),[x,u]=l.useState(null),[j,X]=l.useState({}),[a,i]=l.useState(w),[U,c]=l.useState(null),[E,C]=l.useState(null),[N,F]=l.useState(null),[p,Q]=l.useState(!1),[f,K]=l.useState(!1),b=l.useRef(null),d=l.useRef(null),m=l.useRef(a),P=l.useRef(p),A=l.useRef(f);l.useEffect(()=>{m.current=a},[a]),l.useEffect(()=>{P.current=p},[p]),l.useEffect(()=>{A.current=f},[f]),l.useEffect(()=>{let e=!1;return(async()=>{try{const o=await fetch("/api/dev/scoutbot-fx/fixtures");if(!o.ok)throw new Error(`HTTP ${o.status}`);const n=await o.json();e||D(n)}catch(o){e||u(o instanceof Error?o.message:String(o))}})(),()=>{e=!0}},[]);const H=l.useCallback(async e=>{if(j[e.slug])return j[e.slug].buffer;const o=await le(`/api/dev/scoutbot-fx/audio/${encodeURIComponent(e.file)}`);return X(n=>({...n,[e.slug]:{fixture:e,buffer:o}})),o},[j]),h=l.useCallback(()=>{d.current=null,b.current?.stop(),b.current=null,C(null)},[]),Y=l.useCallback(e=>{const o=G.find(n=>n.id===e);o&&(i(o.params),c(e))},[]),J=l.useCallback(async()=>{try{await navigator.clipboard.writeText(ue(a)),F("Copied"),window.setTimeout(()=>F(null),1600)}catch(e){F(e instanceof Error?e.message:"Copy failed")}},[a]),g=l.useCallback(async(e,o)=>{h();const n=Symbol(`${o}:${e.slug}`);d.current=n;const S=`${o}:${e.slug}`;try{const r=await H(e);for(;d.current===n;){const v=A.current?{...m.current,playbackRate:ie(m.current.playbackRate+(Math.random()*2-1)*B)}:m.current,I=o==="fx"?ne(r,{params:v}):ae(r);if(b.current=I,C(S),await I.promise,d.current!==n||!P.current)break;await new Promise(M=>{const se=setTimeout(M,ce),oe=setInterval(()=>{d.current!==n&&(clearTimeout(se),clearInterval(oe),M())},40)})}}catch(r){console.error(`[scoutbot-fx] ${o} playback failed`,r)}finally{d.current===n&&(d.current=null),b.current=null,C(r=>r===S?null:r)}},[H,h]),Z=l.useCallback(e=>g(e,"fx"),[g]),ee=l.useCallback(e=>g(e,"dry"),[g]),te=l.useMemo(()=>re.map(e=>({title:e.title,rows:e.sliders.map(o=>({spec:o,value:a[o.key]}))})),[a]),$=s?.fixtures??[];return t.jsxs("div",{style:pe,children:[t.jsxs("header",{style:ye,children:[t.jsxs("div",{children:[t.jsx("h1",{style:xe,children:"Scoutbot FX Lab"}),t.jsxs("p",{style:fe,children:["Dispatcher-radio FX prototyping. Generate fixtures with"," ",t.jsx("code",{style:L,children:"node packages/web/scripts/generate-scoutbot-fx-fixtures.mjs"}),"."]})]}),t.jsxs("div",{style:be,children:[s?.generatedAt?t.jsxs("span",{children:["Fixtures generated ",new Date(s.generatedAt).toLocaleString()]}):null,s?.note?t.jsx("span",{style:me,children:s.note}):null,x?t.jsxs("span",{style:he,children:["Could not load fixtures: ",x]}):null]})]}),t.jsxs("section",{style:ge,children:[t.jsxs("div",{style:T,children:[t.jsx("h2",{style:R,children:"Presets"}),t.jsx("div",{style:Se,children:"Click to load. Tweaking any slider clears the active preset."})]}),t.jsx("div",{style:ke,children:G.map(e=>{const o=U===e.id;return t.jsxs("button",{type:"button",style:o?je:q,onClick:n=>{Y(e.id),n.currentTarget.blur()},title:e.description,children:[t.jsxs("div",{style:o?Ce:V,children:[e.label,t.jsx("span",{style:ve,children:e.family})]}),t.jsx("div",{style:o?Fe:W,children:e.description})]},e.id)})})]}),t.jsxs("section",{style:Te,children:[t.jsxs("div",{style:T,children:[t.jsx("h2",{style:R,children:"FX chain"}),t.jsxs("div",{style:{display:"flex",gap:8},children:[t.jsxs("label",{style:k,children:[t.jsx("input",{type:"checkbox",checked:a.clickEnabled,onChange:e=>{const o=e.target.checked;c(null),i(n=>({...n,clickEnabled:o}))}}),"Kerchunk click"]}),t.jsxs("label",{style:k,children:[t.jsx("input",{type:"checkbox",checked:a.squelchTailEnabled,onChange:e=>{const o=e.target.checked;c(null),i(n=>({...n,squelchTailEnabled:o}))}}),"Squelch tail"]}),t.jsx("button",{type:"button",style:y,onClick:()=>{c("scoutbot-clean-dispatch"),i(w)},children:"Scoutbot default"}),t.jsx("button",{type:"button",style:y,onClick:()=>{c("codex-clean-dispatch"),i(de)},children:"Codex take"}),t.jsx("button",{type:"button",style:y,onClick:()=>{c(null),i(O)},children:"Raw default"}),t.jsx("button",{type:"button",style:z,onClick:()=>{J()},children:N??"Copy params"})]})]}),t.jsx("div",{style:Re,children:te.map(e=>t.jsxs("div",{style:we,children:[t.jsx("div",{style:ze,children:e.title}),t.jsx("div",{style:De,children:e.rows.map(({spec:o,value:n})=>t.jsxs("label",{style:Ee,children:[t.jsxs("div",{style:Pe,children:[t.jsx("span",{children:o.label}),t.jsx("span",{style:Ae,children:o.format(n)})]}),t.jsx("input",{type:"range",min:o.min,max:o.max,step:o.step,value:n,onChange:S=>{const r=Number(S.target.value);c(null),i(v=>({...v,[o.key]:r}))}})]},o.key))})]},e.title))})]}),t.jsxs("section",{style:He,children:[t.jsxs("div",{style:T,children:[t.jsx("h2",{style:R,children:"Fixtures"}),t.jsxs("div",{style:{display:"flex",gap:16},children:[t.jsxs("label",{style:k,children:[t.jsx("input",{type:"checkbox",checked:p,onChange:e=>Q(e.target.checked)}),"Loop playback",p?" (tweaks apply next iteration)":""]}),t.jsxs("label",{style:k,children:[t.jsx("input",{type:"checkbox",checked:f,onChange:e=>K(e.target.checked)}),"Vary speed ±",Math.round(B*100),"%"]})]})]}),s?$.length===0?t.jsxs("p",{style:_,children:["No fixtures yet. Run"," ",t.jsx("code",{style:L,children:"node packages/web/scripts/generate-scoutbot-fx-fixtures.mjs"})," ","(Vox must be running) and reload."]}):t.jsx("ul",{style:$e,children:$.map(e=>{const o=E===`dry:${e.slug}`,n=E===`fx:${e.slug}`;return t.jsxs("li",{style:Ie,children:[t.jsxs("div",{style:Me,children:[t.jsx("div",{style:Ge,children:e.slug}),t.jsx("div",{style:Be,children:e.text}),t.jsxs("div",{style:Le,children:[e.voiceId?`voice ${e.voiceId}`:null,e.voiceId&&e.bytes?" · ":null,e.bytes?`${Math.round(e.bytes/1024)} KB`:null]})]}),t.jsxs("div",{style:_e,children:[t.jsx("button",{type:"button",style:o?Oe:y,onClick:()=>o?h():ee(e),children:o?"Stop":"Play dry"}),t.jsx("button",{type:"button",style:n?qe:z,onClick:()=>n?h():Z(e),children:n?"Stop":"Play with FX"})]})]},e.slug)})}):t.jsx("p",{style:_,children:"Loading…"})]})]})}const pe={minHeight:"100vh",background:"#0b0d10",color:"#e6e8eb",padding:"32px 40px 64px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"},ye={display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:24,marginBottom:28},xe={fontSize:22,fontWeight:600,margin:0},fe={color:"#9aa1ab",fontSize:13,marginTop:6,marginBottom:0},be={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"#9aa1ab",alignItems:"flex-end"},me={color:"#f5b342"},he={color:"#ef6b6b"},L={fontFamily:"ui-monospace, SFMono-Regular, monospace",background:"#181b20",padding:"1px 6px",borderRadius:4,fontSize:12},ge={background:"#121519",border:"1px solid #1f242b",borderRadius:10,padding:20,marginBottom:18},Se={fontSize:11,color:"#6b727d"},ke={display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:10,marginTop:12},q={textAlign:"left",background:"#0f1216",borderWidth:1,borderStyle:"solid",borderColor:"#1f242b",borderRadius:8,padding:"12px 14px",color:"#c5cad2",cursor:"pointer",display:"flex",flexDirection:"column",gap:6,fontFamily:"inherit",outline:"none",WebkitAppearance:"none",appearance:"none",transition:"border-color 80ms ease, background 80ms ease, color 80ms ease"},je={...q,background:"#1a1f26",borderColor:"#f1f3f5",color:"#ffffff",boxShadow:"0 0 0 1px rgba(241,243,245,0.18)"},V={fontSize:13,fontWeight:600,display:"flex",alignItems:"center",gap:8},Ce={...V,color:"#ffffff"},W={fontSize:11,color:"#9aa1ab",lineHeight:1.4},Fe={...W,color:"#c5cad2"},ve={fontSize:9,fontWeight:500,letterSpacing:.6,textTransform:"uppercase",padding:"2px 6px",borderRadius:4,background:"rgba(255,255,255,0.06)",color:"#9aa1ab"},Te={background:"#121519",border:"1px solid #1f242b",borderRadius:10,padding:20,marginBottom:28},T={display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:16},R={fontSize:14,textTransform:"uppercase",letterSpacing:.6,color:"#9aa1ab",margin:0},Re={display:"flex",flexDirection:"column",gap:18},we={display:"flex",flexDirection:"column",gap:10},ze={fontSize:11,textTransform:"uppercase",letterSpacing:.8,color:"#6b727d",fontWeight:600},De={display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:16},Ee={display:"flex",flexDirection:"column",gap:6,fontSize:12},Pe={display:"flex",justifyContent:"space-between",color:"#c5cad2"},Ae={color:"#7f8693",fontFamily:"ui-monospace, SFMono-Regular, monospace"},He={background:"#121519",border:"1px solid #1f242b",borderRadius:10,padding:20},$e={listStyle:"none",padding:0,margin:"16px 0 0",display:"flex",flexDirection:"column",gap:12},Ie={display:"flex",alignItems:"center",gap:16,background:"#0f1216",border:"1px solid #1f242b",borderRadius:8,padding:"14px 16px"},Me={flex:1,display:"flex",flexDirection:"column",gap:4},Ge={fontFamily:"ui-monospace, SFMono-Regular, monospace",color:"#9aa1ab",fontSize:12},Be={color:"#e6e8eb",fontSize:14},Le={color:"#6b727d",fontSize:11},_e={display:"flex",gap:8},y={background:"#1c2128",color:"#e6e8eb",borderWidth:1,borderStyle:"solid",borderColor:"#2a3038",padding:"6px 12px",borderRadius:6,fontSize:12,cursor:"pointer"},Oe={...y,background:"#2a3038",borderColor:"#3c4350"},z={background:"#2e6cdf",color:"#fff",borderWidth:1,borderStyle:"solid",borderColor:"#2e6cdf",padding:"6px 12px",borderRadius:6,fontSize:12,cursor:"pointer"},qe={...z,background:"#1f57bf",borderColor:"#1f57bf"},k={display:"flex",alignItems:"center",gap:6,fontSize:12,color:"#c5cad2",cursor:"pointer"},_={color:"#9aa1ab",fontSize:13,margin:"12px 0 0"};export{Xe as ScoutbotFxLab};
@@ -1 +1 @@
1
- import{j as a}from"./index-C1VaWNuD.js";import"./secondaryNavConfig-C0Srrmy8.js";function b({ariaLabel:r,activeRoute:l,groups:t,navigate:o,className:n=""}){return a.jsx("nav",{className:`s-secondary-nav${n?` ${n}`:""}`,"aria-label":r,children:t.map((s,i)=>a.jsxs("div",{className:"s-secondary-nav-group",children:[s.label&&a.jsx("span",{className:"s-secondary-nav-label",children:s.label}),a.jsx("div",{className:"s-secondary-nav-switch",children:s.items.map(e=>{const c=e.active(l);return a.jsx("button",{type:"button","aria-pressed":c,className:`s-secondary-nav-button${c?" s-secondary-nav-button--active":""}`,onClick:()=>o(e.route),children:e.label},e.id)})})]},s.label??i))})}export{b as S};
1
+ import{j as a}from"./index-C8uS5szO.js";import"./secondaryNavConfig-DAXIFtVd.js";function b({ariaLabel:r,activeRoute:l,groups:t,navigate:o,className:n=""}){return a.jsx("nav",{className:`s-secondary-nav${n?` ${n}`:""}`,"aria-label":r,children:t.map((s,i)=>a.jsxs("div",{className:"s-secondary-nav-group",children:[s.label&&a.jsx("span",{className:"s-secondary-nav-label",children:s.label}),a.jsx("div",{className:"s-secondary-nav-switch",children:s.items.map(e=>{const c=e.active(l);return a.jsx("button",{type:"button","aria-pressed":c,className:`s-secondary-nav-button${c?" s-secondary-nav-button--active":""}`,onClick:()=>o(e.route),children:e.label},e.id)})})]},s.label??i))})}export{b as S};
@@ -0,0 +1 @@
1
+ import{r as o,j as r}from"./index-C8uS5szO.js";import{a as _}from"./api-CaROe5_H.js";import{d as y,S as j}from"./SessionObserve-DaqDhqDI.js";import{u as x}from"./sse-v5QLsOHV.js";import{u as g}from"./tail-events-DQ46QBW1.js";import{ConversationScreen as M}from"./ConversationScreen-tTP6B_F-.js";import{SessionObserveEmbedStatus as N,NATIVE_SESSION_ORIGIN_LABEL as S}from"./SessionObserveEvidence-Drv-D8Oh.js";import{d as w,b as T,s as p}from"./session-ref-lookup-state-SATH_jAP.js";const O=6e4,L=1e3,A=1e4;function u({children:e}){return r.jsx("div",{className:"s-observe-embed-page",children:e})}function d({title:e,detail:s}){return r.jsx(u,{children:r.jsxs("div",{className:"s-observe-embed-empty",children:[r.jsx("div",{className:"s-observe-embed-empty-title",children:e}),s&&r.jsx("div",{className:"s-observe-embed-empty-detail",children:s})]})})}function I({lookup:e}){const s=y({source:e.observe.source,fidelity:e.observe.fidelity,live:e.observe.data.live,eventCount:e.observe.data.events.length});return r.jsxs(u,{children:[r.jsx(N,{source:e.observe.source,fidelity:e.observe.fidelity,sessionId:e.observe.sessionId??e.observe.refId,evidence:s,originLabel:S}),r.jsx(j,{data:e.observe.data,agentId:e.observe.agentId??e.session?.agentId??void 0,sessionId:e.observe.sessionId??e.observe.refId,showRail:!1,observeSource:e.observe.source,observeFidelity:e.observe.fidelity,originLabel:S,defaultPresentation:"conversation"})]})}function f(){const e=typeof window>"u"?"":new URLSearchParams(window.location.search).get("ref")?.trim()??"",[s,v]=o.useState(null),[h,l]=o.useState(!0),[b,m]=o.useState(null),i=o.useRef(null),c=o.useRef(null),a=o.useCallback(async(n=!1)=>{if(!e){l(!1);return}c.current=Date.now(),n||l(!0),m(null);try{const t=await _(`/api/session-ref/${encodeURIComponent(e)}`);v(t)}catch(t){n||v(null),m(t instanceof Error?t.message:String(t))}finally{l(!1)}},[e]);o.useEffect(()=>{c.current=null,a();const n=window.setInterval(()=>{a(!0)},O);return()=>{window.clearInterval(n),i.current&&(clearTimeout(i.current),i.current=null)}},[a]);const E=o.useCallback(()=>{if(i.current)return;const n=w({nowMs:Date.now(),lastRefreshAtMs:c.current,debounceMs:L,minimumIntervalMs:A});i.current=setTimeout(()=>{i.current=null,a(!0)},n)},[a]);return x(n=>{const t=[e,s?.refId,s?.kind==="conversation"?s.conversationId:null,s?.session?.agentId,s?.kind==="observe"?s.observe.agentId:null,s?.kind==="observe"?s.observe.sessionId:null];T(n,t)&&E()}),g(n=>{[e,s?.refId,s?.kind==="observe"?s.observe.sessionId:null,s?.kind==="observe"?s.observe.data.metadata?.session?.externalSessionId:null].some(R=>p(n.sessionId,R))&&E()}),e?b&&!s?r.jsx(d,{title:"Session unavailable",detail:b}):h&&!s?r.jsx(d,{title:"Resolving session",detail:e}):s?s.kind==="conversation"?r.jsx(u,{children:r.jsx(M,{conversationId:s.conversationId,navigate:()=>{},embedded:!0,showBackNav:!1})}):r.jsx(I,{lookup:s}):r.jsx(d,{title:"Session not found",detail:"This session may have ended or its archive is not on this machine."}):r.jsx(d,{title:"No session reference",detail:"This embed needs a ?ref=<sessionId> query parameter."})}const $=Object.freeze(Object.defineProperty({__proto__:null,SessionEmbedObserveContent:I,SessionEmbedScreen:f,default:f},Symbol.toStringTag,{value:"Module"})),z=Object.freeze(Object.defineProperty({__proto__:null,SessionEmbedScreen:f},Symbol.toStringTag,{value:"Module"}));export{$ as S,z as a};