sliccy 6.130.0 → 6.131.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +2 -2
  2. package/dist/node-server/_shared/agent-wire-types.d.ts +54 -0
  3. package/dist/node-server/_shared/agent-wire-types.d.ts.map +1 -1
  4. package/dist/node-server/_shared/cdp-target-info.d.ts +19 -0
  5. package/dist/node-server/_shared/cdp-target-info.d.ts.map +1 -0
  6. package/dist/node-server/_shared/cdp-target-info.js +9 -0
  7. package/dist/node-server/_shared/cdp-target-info.js.map +1 -0
  8. package/dist/node-server/_shared/discovery-link.d.ts +76 -0
  9. package/dist/node-server/_shared/discovery-link.d.ts.map +1 -0
  10. package/dist/node-server/_shared/discovery-link.js +76 -0
  11. package/dist/node-server/_shared/discovery-link.js.map +1 -0
  12. package/dist/node-server/_shared/extension-bridge-protocol.d.ts +165 -0
  13. package/dist/node-server/_shared/extension-bridge-protocol.d.ts.map +1 -0
  14. package/dist/node-server/_shared/extension-bridge-protocol.js +65 -0
  15. package/dist/node-server/_shared/extension-bridge-protocol.js.map +1 -0
  16. package/dist/node-server/_shared/handoff-link.d.ts +90 -0
  17. package/dist/node-server/_shared/handoff-link.d.ts.map +1 -0
  18. package/dist/node-server/_shared/handoff-link.js +192 -0
  19. package/dist/node-server/_shared/handoff-link.js.map +1 -0
  20. package/dist/node-server/_shared/iframe-repaint.d.ts +51 -0
  21. package/dist/node-server/_shared/iframe-repaint.d.ts.map +1 -0
  22. package/dist/node-server/_shared/iframe-repaint.js +118 -0
  23. package/dist/node-server/_shared/iframe-repaint.js.map +1 -0
  24. package/dist/node-server/_shared/index.d.ts +9 -0
  25. package/dist/node-server/_shared/index.d.ts.map +1 -1
  26. package/dist/node-server/_shared/index.js +9 -0
  27. package/dist/node-server/_shared/index.js.map +1 -1
  28. package/dist/node-server/_shared/leader-ext-id.d.ts +16 -0
  29. package/dist/node-server/_shared/leader-ext-id.d.ts.map +1 -0
  30. package/dist/node-server/_shared/leader-ext-id.js +16 -0
  31. package/dist/node-server/_shared/leader-ext-id.js.map +1 -0
  32. package/dist/node-server/_shared/link-header.d.ts +98 -0
  33. package/dist/node-server/_shared/link-header.d.ts.map +1 -0
  34. package/dist/node-server/_shared/link-header.js +441 -0
  35. package/dist/node-server/_shared/link-header.js.map +1 -0
  36. package/dist/node-server/_shared/proxy-headers.d.ts +46 -0
  37. package/dist/node-server/_shared/proxy-headers.d.ts.map +1 -0
  38. package/dist/node-server/_shared/proxy-headers.js +133 -0
  39. package/dist/node-server/_shared/proxy-headers.js.map +1 -0
  40. package/dist/node-server/_shared/well-known-probe.d.ts +63 -0
  41. package/dist/node-server/_shared/well-known-probe.d.ts.map +1 -0
  42. package/dist/node-server/_shared/well-known-probe.js +104 -0
  43. package/dist/node-server/_shared/well-known-probe.js.map +1 -0
  44. package/dist/node-server/electron-controller.d.ts +51 -0
  45. package/dist/node-server/electron-controller.js +88 -5
  46. package/dist/ui/.vite/manifest.json +414 -488
  47. package/dist/ui/assets/CLAUDE-CWMPcWVI.js +34 -0
  48. package/dist/ui/assets/{CLAUDE-BG8Wfdn_.js → CLAUDE-DM1onrcU.js} +1 -1
  49. package/dist/ui/assets/SKILL--AFE5RE3.js +1 -0
  50. package/dist/ui/assets/{SKILL-DT72j81i.js → SKILL-cpVS35My.js} +1 -1
  51. package/dist/ui/assets/__vite-browser-external-B6A3FtA_.js +1 -0
  52. package/dist/ui/assets/{account-store-EaBcIxhN.js → account-store-DsMvFZgS.js} +3 -3
  53. package/dist/ui/assets/account-store-naVgJKHe.js +1 -0
  54. package/dist/ui/assets/{adobe-B0U_BLCy.js → adobe-BhZB46bT.js} +1 -1
  55. package/dist/ui/assets/{adobe-DSoEAq_f.js → adobe-sRIQnDEl.js} +2 -2
  56. package/dist/ui/assets/{agent-bridge-sbs3wiia.js → agent-bridge-DVqU5-sn.js} +1 -1
  57. package/dist/ui/assets/{agent-message-to-chat-Cnv4uh07.js → agent-message-to-chat-Df4an5Ei.js} +1 -1
  58. package/dist/ui/assets/{agent-message-to-chat-DW2ZZk9R.js → agent-message-to-chat-xGeYopQz.js} +1 -1
  59. package/dist/ui/assets/api-endpoint-DGxXvrur.js +1 -0
  60. package/dist/ui/assets/api-endpoint-Lx_FU5cP.js +1 -0
  61. package/dist/ui/assets/{apply-layout-DvwSioYn.js → apply-layout-dNkV0TEv.js} +1 -1
  62. package/dist/ui/assets/{apps-DFIoDcds.js → apps-tzFQ7_KO.js} +1 -1
  63. package/dist/ui/assets/{auto-mount-table-CEBCZFRF.js → auto-mount-table-0jMTi9rV.js} +1 -1
  64. package/dist/ui/assets/{azure-openai-C_J_i_Uv.js → azure-openai-B9ZeZZ0T.js} +1 -1
  65. package/dist/ui/assets/{azure-openai-DUJebq5R.js → azure-openai-DsmgiFlX.js} +1 -1
  66. package/dist/ui/assets/{backend-hostfs-t651gkrP.js → backend-hostfs-BH8uwRZG.js} +1 -1
  67. package/dist/ui/assets/{backend-hostfs-BQYf7TAS.js → backend-hostfs-BxfjZHzO.js} +1 -1
  68. package/dist/ui/assets/bridge-protocol-06nbmp2X.js +1 -0
  69. package/dist/ui/assets/bridge-protocol-DdqxTTSu.js +1 -0
  70. package/dist/ui/assets/{bsh-watchdog-D97yX3sQ.js → bsh-watchdog-CxyhQHy5.js} +1 -1
  71. package/dist/ui/assets/{capability-Btlr4Wc-.js → capability-Bxl0SE1s.js} +2 -2
  72. package/dist/ui/assets/{cdp-DHIp_AO9.js → cdp-CmXwwigc.js} +1 -1
  73. package/dist/ui/assets/{cerebras-4vCJGBUt.js → cerebras-CsdnfQnc.js} +1 -1
  74. package/dist/ui/assets/{cerebras-CBjabVSb.js → cerebras-Mux-1Uqj.js} +1 -1
  75. package/dist/ui/assets/{client-CjV_9a9h.js → client-C6Cmi9c4.js} +1 -1
  76. package/dist/ui/assets/composer-speech-CElQJ4q_.js +1 -0
  77. package/dist/ui/assets/{connect-surface-DrBGja7c.js → connect-surface-DgrjdeR5.js} +1 -1
  78. package/dist/ui/assets/{context-compaction-huebTevb.js → context-compaction-DRymamfD.js} +3 -3
  79. package/dist/ui/assets/{core-CdPvxBo3.js → core-B8y1Kyh_.js} +2 -2
  80. package/dist/ui/assets/{derive-C_gfjwp6.js → derive-TWFNEJkb.js} +1 -1
  81. package/dist/ui/assets/dip-1TiuHkUR.js +233 -0
  82. package/dist/ui/assets/{directed-approval-cJrhWrrr.js → directed-approval-BDO2wdC5.js} +1 -1
  83. package/dist/ui/assets/{discovery-preference-DFkmIHQo.js → discovery-preference-B9KlkVuR.js} +1 -1
  84. package/dist/ui/assets/ensure-speech-assets-DasC7jBA.js +1 -0
  85. package/dist/ui/assets/{esbuild-wasm-CSKOA492.js → esbuild-wasm-Ew76Vf_V.js} +2 -2
  86. package/dist/ui/assets/export-provider-CqI0pk50.js +1 -0
  87. package/dist/ui/assets/export-spool-CuNzzI8a.js +1 -0
  88. package/dist/ui/assets/{extension-bridge-transport-D3PItLFo.js → extension-bridge-transport-DfRNjx8c.js} +1 -1
  89. package/dist/ui/assets/extension-media-capture-2FcAdcuB.js +1 -0
  90. package/dist/ui/assets/extension-ops-owOXVncP.js +1 -0
  91. package/dist/ui/assets/float-topology-hfgMx1Yq.js +1 -0
  92. package/dist/ui/assets/{follower-navigate-watcher-B9ZostUJ.js → follower-navigate-watcher-JQ0b_cW8.js} +1 -1
  93. package/dist/ui/assets/{fs-C9SJY4sJ.js → fs-CBaQR8Xc.js} +2 -2
  94. package/dist/ui/assets/{fs-n6R6QZv0.js → fs-CDaCMxrL.js} +1 -1
  95. package/dist/ui/assets/github-B7uOq9Q1.js +1 -0
  96. package/dist/ui/assets/{github-copilot-COZvaCzG.js → github-copilot-BeWJoZwD.js} +1 -1
  97. package/dist/ui/assets/{github-copilot-Cai-dPyZ.js → github-copilot-DwKSI23j.js} +1 -1
  98. package/dist/ui/assets/{github-install-DfhMDFC9.js → github-install-DE7dF6r8.js} +1 -1
  99. package/dist/ui/assets/{github-D-fdkiMQ.js → github-qhOhjD2Q.js} +2 -2
  100. package/dist/ui/assets/{github-zip-ZEV5pLGZ.js → github-zip-CuwUOO-U.js} +1 -1
  101. package/dist/ui/assets/{guest-tool-gate-CG9Yw8Kq.js → guest-tool-gate-BxRAm4CU.js} +1 -1
  102. package/dist/ui/assets/{hear-D7MO-jTh.js → hear-CNQSuR1y.js} +1 -1
  103. package/dist/ui/assets/{help-CQHZfeL3.js → help-D66VHlYj.js} +8 -4
  104. package/dist/ui/assets/hid-picker-sFJ8vzUj.js +1 -0
  105. package/dist/ui/assets/host-command-29ain4NA.js +1 -0
  106. package/dist/ui/assets/idle-compaction-B9i1duyd.js +1 -0
  107. package/dist/ui/assets/idle-compaction-settings-1yyApSsQ.js +1 -0
  108. package/dist/ui/assets/image-markers-BFDmhPy4.js +1 -0
  109. package/dist/ui/assets/image-markers-DuyWsic3.js +1 -0
  110. package/dist/ui/assets/{installer-7BWtTgd6.js → installer-C6TqZaGO.js} +3 -3
  111. package/dist/ui/assets/{js-realm-worker-CXI-Ngjy.js → js-realm-worker-Bsb6rmK5.js} +4 -4
  112. package/dist/ui/assets/{jsh-runtime-extensions-Bf9eAUzp.js → jsh-runtime-extensions-Dkujbplu.js} +1 -1
  113. package/dist/ui/assets/kernel-worker-CkZd8Enf.js +4991 -0
  114. package/dist/ui/assets/lick-manager-ULemXDKa.js +2 -0
  115. package/dist/ui/assets/lick-urls-BX4Jyu_T.js +1 -0
  116. package/dist/ui/assets/{lick-ws-bridge-Jk_oJNDM.js → lick-ws-bridge-Bo5sH7lf.js} +1 -1
  117. package/dist/ui/assets/{lick-ws-bridge-ct0HLNad.js → lick-ws-bridge-RFOSPq0w.js} +1 -1
  118. package/dist/ui/assets/{live-session-snapshot-DnNBHXrk.js → live-session-snapshot-BTnyrQCU.js} +1 -1
  119. package/dist/ui/assets/{loader-B90Xxi7L.js → loader-Dw-TPPKt.js} +1 -1
  120. package/dist/ui/assets/{local-llm-Dm5mp8ES.js → local-llm-B-qS5oNT.js} +1 -1
  121. package/dist/ui/assets/{local-llm-CXD-Qof4.js → local-llm-COCS88AU.js} +1 -1
  122. package/dist/ui/assets/{magick-wasm-BEYfJbAX.js → magick-wasm-C7OGcZrJ.js} +2 -2
  123. package/dist/ui/assets/main-CAXbdHY8.js +22 -0
  124. package/dist/ui/assets/main-cherry-DSNvH0CD.js +1 -0
  125. package/dist/ui/assets/{mount-DD8rKTRS.js → mount-BbUBqN71.js} +2 -2
  126. package/dist/ui/assets/{mount-bridge-client-CUPodVo6.js → mount-bridge-client-BejrWSrL.js} +1 -1
  127. package/dist/ui/assets/{mount-bridge-client-BrMqFu_x.js → mount-bridge-client-DGJyqEPG.js} +1 -1
  128. package/dist/ui/assets/{mount-picker-popup-CVvcLs1V.js → mount-picker-popup--ijSfN8u.js} +1 -1
  129. package/dist/ui/assets/{mount-recovery-D6g3iniZ.js → mount-recovery-OxgGejDC.js} +1 -1
  130. package/dist/ui/assets/{mount-C1nMn8bL.js → mount-ysOnJBjr.js} +3 -3
  131. package/dist/ui/assets/navigation-watcher-C8xRyQBd.js +1 -0
  132. package/dist/ui/assets/new-session-JIL4tJ1I.js +2 -0
  133. package/dist/ui/assets/oauth-bootstrap-DP5y5Dy8.js +2 -0
  134. package/dist/ui/assets/oauth-service-Bconf2Pz.js +1 -0
  135. package/dist/ui/assets/oauth-service-t2taQm3p.js +1 -0
  136. package/dist/ui/assets/{openai-codex-BveJezys.js → openai-codex-BZDYkVh6.js} +1 -1
  137. package/dist/ui/assets/{openai-codex-WPOtL2Mf.js → openai-codex-DlFMWNVB.js} +1 -1
  138. package/dist/ui/assets/{openrouter-98Q9mrw8.js → openrouter-BrS9XpJS.js} +1 -1
  139. package/dist/ui/assets/{openrouter-6nEYTdxI.js → openrouter-Dn_iX45f.js} +1 -1
  140. package/dist/ui/assets/{openrouter-oauth-C7w8rKLa.js → openrouter-oauth-CioQlp0x.js} +1 -1
  141. package/dist/ui/assets/{openrouter-oauth-BCNSNHpM.js → openrouter-oauth-D9gZVt7e.js} +1 -1
  142. package/dist/ui/assets/{page-approval-service-DnWfuBVQ.js → page-approval-service-IZdlRu-_.js} +1 -1
  143. package/dist/ui/assets/panel-rpc-handlers-DUN0E_f8.js +2 -0
  144. package/dist/ui/assets/{panelize-shell-C7Ptpa69.js → panelize-shell-KNX1XTnq.js} +1 -1
  145. package/dist/ui/assets/picker-popup-sQtXmfAo.js +1 -0
  146. package/dist/ui/assets/{port-bridge-client-wFmUGeZa.js → port-bridge-client-C1tBBqwu.js} +1 -1
  147. package/dist/ui/assets/{port-bridge-client-BTnhFM03.js → port-bridge-client-CN1cFP4D.js} +1 -1
  148. package/dist/ui/assets/preview-url-r19H6zH1.js +1 -0
  149. package/dist/ui/assets/{provider-1nSAXh4b.js → provider-BfGyOQHs.js} +2 -2
  150. package/dist/ui/assets/{provider-RrpO6cEr.js → provider-DnIZJQjl.js} +1 -1
  151. package/dist/ui/assets/provider-settings-C6uIHjd4.js +1 -0
  152. package/dist/ui/assets/provider-settings-DrWv51sQ.js +2 -0
  153. package/dist/ui/assets/{provider-store-access-kKnmyJjr.js → provider-store-access-BqErJhmB.js} +2 -2
  154. package/dist/ui/assets/provider-store-access-BuQzycZu.js +1 -0
  155. package/dist/ui/assets/{providers-CvD7PECK.js → providers-CF2FF0H2.js} +1 -1
  156. package/dist/ui/assets/providers-CqZKx9qW.js +2 -0
  157. package/dist/ui/assets/proxied-fetch-CiijUcSt.js +2 -0
  158. package/dist/ui/assets/proxied-fetch-DUC7X0GS.js +1 -0
  159. package/dist/ui/assets/{py-realm-worker-DGFMfg27.js → py-realm-worker-BYQkpReo.js} +2 -2
  160. package/dist/ui/assets/{pyodide-BDRAQKP6.js → pyodide-BwD0AtZB.js} +2 -2
  161. package/dist/ui/assets/{quick-llm-I3oLGgvo.js → quick-llm-B9NubAhJ.js} +1 -1
  162. package/dist/ui/assets/{recovery-screen-CBwlz3Qo.js → recovery-screen-cHPORxsj.js} +1 -1
  163. package/dist/ui/assets/{redirect-uri-DZXyVwvI.js → redirect-uri-BKkf61lT.js} +1 -1
  164. package/dist/ui/assets/{remote-terminal-view-Db-9V2n9.js → remote-terminal-view-BHs39pzZ.js} +1 -1
  165. package/dist/ui/assets/request-body-DWn6QJ_H.js +1 -0
  166. package/dist/ui/assets/rest-ops-CLpS_ilI.js +1 -0
  167. package/dist/ui/assets/rest-ops-D2ig8qfG.js +1 -0
  168. package/dist/ui/assets/{run-BBAgk3Ml.js → run-03JeZZol.js} +1 -1
  169. package/dist/ui/assets/{run-COi81T_1.js → run-B5YOTTPD.js} +1 -1
  170. package/dist/ui/assets/run-BOu4zIOZ.js +29 -0
  171. package/dist/ui/assets/{run-DZMSwK6o.js → run-CUXVFhoI.js} +1 -1
  172. package/dist/ui/assets/run-D5Va_gO8.js +81 -0
  173. package/dist/ui/assets/{run-DCeEfqcT.js → run-DZh-18uA.js} +3 -3
  174. package/dist/ui/assets/{secret-env-Cp2Eduxg.js → secret-env-CtpVPUh5.js} +1 -1
  175. package/dist/ui/assets/secret-topology-Yt0aO4Gz.js +1 -0
  176. package/dist/ui/assets/{secrets-bridge-client-CHMeCH4_.js → secrets-bridge-client-BVl0YuB2.js} +1 -1
  177. package/dist/ui/assets/{secrets-bridge-client-CNOtgwnq.js → secrets-bridge-client-C3MaYf_O.js} +1 -1
  178. package/dist/ui/assets/serial-picker-BQF_Eitc.js +1 -0
  179. package/dist/ui/assets/{session-freezer-DVh0_BPO.js → session-freezer-Bltt6zUt.js} +3 -3
  180. package/dist/ui/assets/{setup-feature-flags-remote-DBcwYFl-.js → setup-feature-flags-remote-BkP-HRZt.js} +1 -1
  181. package/dist/ui/assets/setup-standalone-prelude-C2tPUGcI.js +2 -0
  182. package/dist/ui/assets/setup-sudo-BSw__xoN.js +2 -0
  183. package/dist/ui/assets/shared-Djytys1b.js +1 -0
  184. package/dist/ui/assets/shared-Dq_aaG_m.js +4 -0
  185. package/dist/ui/assets/silent-renew-backoff-DIMz5UqB.js +1 -0
  186. package/dist/ui/assets/silent-renew-backoff-SSzHR-oP.js +1 -0
  187. package/dist/ui/assets/{skills-BEEjU5I5.js → skills-wzno5Tj5.js} +1 -1
  188. package/dist/ui/assets/slicc-app-url-B9OxaBDe.js +1 -0
  189. package/dist/ui/assets/slicc-version-HwuyIZfW.js +1 -0
  190. package/dist/ui/assets/{snapshot-CPjJBR4Z.js → snapshot-Bi6QabWh.js} +1 -1
  191. package/dist/ui/assets/{snapshot-features-BZbgnon7.js → snapshot-features-BEPdcWF6.js} +3 -3
  192. package/dist/ui/assets/{speak-Dx2FEQBZ.js → speak-BxNdNjKi.js} +1 -1
  193. package/dist/ui/assets/{sprinkle-bridge-BVfyHi8X.js → sprinkle-bridge-BNzhEsPj.js} +1 -1
  194. package/dist/ui/assets/{sprinkle-manager-Dxc8U2h1.js → sprinkle-manager-CflRWcbq.js} +1 -1
  195. package/dist/ui/assets/{sprinkle-renderer-1C1DNVyK.js → sprinkle-renderer-BnSqYzuY.js} +1 -1
  196. package/dist/ui/assets/{src-kInvzkEg.js → src-Bex_z_yH.js} +583 -148
  197. package/dist/ui/assets/state-DIwkpIaB.js +42 -0
  198. package/dist/ui/assets/{store-BHLq6CyB.js → store-CFx1fIZL.js} +1 -1
  199. package/dist/ui/assets/{store-Dd0aJqlJ.js → store-i7XHN1Er.js} +1 -1
  200. package/dist/ui/assets/{sudo-DBeYNsAF.js → sudo-r7OrTMGT.js} +1 -1
  201. package/dist/ui/assets/sync-dialog-D7Wg49Up.js +1 -0
  202. package/dist/ui/assets/tab-teleport-PAaKnGkm.js +1 -0
  203. package/dist/ui/assets/transcript-export-DP-r8eDz.js +1 -0
  204. package/dist/ui/assets/transformers-env-BmBEKck6.js +1 -0
  205. package/dist/ui/assets/{tray-leader-DTpZEm3l.js → tray-leader-DabyaEs-.js} +1 -1
  206. package/dist/ui/assets/{tray-leave-runtime-BrGJs1g5.js → tray-leave-runtime-VfTj-MHR.js} +1 -1
  207. package/dist/ui/assets/tray-runtime-config-BQL-GPqt.js +1 -0
  208. package/dist/ui/assets/tray-runtime-config-C3Ti4Pik.js +1 -0
  209. package/dist/ui/assets/tray-sidecar-Zx9F34-1.js +2 -0
  210. package/dist/ui/assets/tray-sync-protocol-jKTx-dCF.js +1 -0
  211. package/dist/ui/assets/tray-webrtc-uW6sTyIA.js +1 -0
  212. package/dist/ui/assets/{upgrade-detection-BwiYpjuO.js → upgrade-detection-Cz0eOMYf.js} +1 -1
  213. package/dist/ui/assets/usb-picker-Cbm0jfjl.js +1 -0
  214. package/dist/ui/assets/{voice-reply-BGR2cNZ_.js → voice-reply-B43Nr1Xr.js} +1 -1
  215. package/dist/ui/assets/{wc-attach-BLZapYO1.js → wc-attach-BbT2famN.js} +3 -3
  216. package/dist/ui/assets/wc-browser-Ctsf5Y23.js +1 -0
  217. package/dist/ui/assets/{wc-extension-B_OX4AT5.js → wc-extension-CJ6cvLnw.js} +2 -2
  218. package/dist/ui/assets/{wc-float-label-Ck2cAgp3.js → wc-float-label-CnFnKVLC.js} +1 -1
  219. package/dist/ui/assets/wc-follower-CkrdiOKN.js +17 -0
  220. package/dist/ui/assets/wc-follower-oauth-B6m2XpVI.js +5 -0
  221. package/dist/ui/assets/wc-live-CxoqWHpR.js +8 -0
  222. package/dist/ui/assets/wc-nav-Bnd_bEYw.js +2 -0
  223. package/dist/ui/assets/wc-onboarding-FeHr2fj5.js +2 -0
  224. package/dist/ui/assets/{wc-permissions-iZXqGvtf.js → wc-permissions-CppSymRx.js} +3 -3
  225. package/dist/ui/assets/wc-permissions-providers-BjqCnuQT.js +2 -0
  226. package/dist/ui/assets/wc-placeholder-C79lmtig.js +4 -0
  227. package/dist/ui/assets/wc-settings-DdAeaZhQ.js +59 -0
  228. package/dist/ui/assets/wc-shell-BP3biEU1.js +125 -0
  229. package/dist/ui/assets/{wc-shortcut-config--IseG9bJ.js → wc-shortcut-config-CjOJXjsp.js} +2 -2
  230. package/dist/ui/assets/wc-shortcuts-BDQiHczD.js +41 -0
  231. package/dist/ui/assets/wc-sprinkles-ChlcnDD2.js +2 -0
  232. package/dist/ui/assets/wc-transcript-export-DdEuCfi6.js +2 -0
  233. package/dist/ui/assets/wc-tray-BfoqEbBg.js +5 -0
  234. package/dist/ui/assets/whisper-session-DW7HkDu2.js +2 -0
  235. package/dist/ui/assets/{xai-grok-OLNPEXTT.js → xai-grok-3L0LL1R8.js} +1 -1
  236. package/dist/ui/assets/{xai-grok-C-iHnNxi.js → xai-grok-CKevFY8L.js} +1 -1
  237. package/dist/ui/index.html +15 -17
  238. package/dist/ui/llm-proxy-sw.js +1 -1
  239. package/dist/ui/packages/webapp/index.html +15 -17
  240. package/package.json +5 -4
  241. package/dist/ui/assets/CLAUDE-DhkULx_E.js +0 -1
  242. package/dist/ui/assets/SKILL-DJAvKejL.js +0 -1
  243. package/dist/ui/assets/__vite-browser-external-B19j3y2v.js +0 -1
  244. package/dist/ui/assets/account-store-CCqSr710.js +0 -1
  245. package/dist/ui/assets/api-endpoint-BB41u1PK.js +0 -1
  246. package/dist/ui/assets/api-endpoint-DRYP1Kfj.js +0 -1
  247. package/dist/ui/assets/composer-speech-C8OcijP-.js +0 -1
  248. package/dist/ui/assets/dip-Co-Ga2Ny.js +0 -233
  249. package/dist/ui/assets/ensure-speech-assets-Csum3_gw.js +0 -1
  250. package/dist/ui/assets/export-provider-BunpOA08.js +0 -1
  251. package/dist/ui/assets/export-spool-Bvpvkbul.js +0 -1
  252. package/dist/ui/assets/extension-media-capture-DiCJSgES.js +0 -1
  253. package/dist/ui/assets/extension-ops-CsNT8YjX.js +0 -1
  254. package/dist/ui/assets/float-topology-ey0oewfq.js +0 -1
  255. package/dist/ui/assets/github-BXAKydA_.js +0 -1
  256. package/dist/ui/assets/handoff-link-CGs8AaQW.js +0 -1
  257. package/dist/ui/assets/hid-picker-C4WMZ0dN.js +0 -1
  258. package/dist/ui/assets/host-command-PnmJLRej.js +0 -1
  259. package/dist/ui/assets/idle-compaction-CACtwRU_.js +0 -1
  260. package/dist/ui/assets/idle-compaction-settings-wK6JTbJh.js +0 -1
  261. package/dist/ui/assets/image-markers-DXh8szCT.js +0 -1
  262. package/dist/ui/assets/image-markers-Gur55AOh.js +0 -1
  263. package/dist/ui/assets/kernel-worker-Da1sBAJS.js +0 -4940
  264. package/dist/ui/assets/lick-manager-DtpJc-rA.js +0 -2
  265. package/dist/ui/assets/lick-urls-f41PW9LN.js +0 -1
  266. package/dist/ui/assets/main-BwL0siqZ.js +0 -22
  267. package/dist/ui/assets/main-cherry-D1l6FfCM.js +0 -1
  268. package/dist/ui/assets/navigation-watcher-C3S1JDXr.js +0 -1
  269. package/dist/ui/assets/new-session-DyvxhZfj.js +0 -2
  270. package/dist/ui/assets/oauth-bootstrap-KB9SK_o_.js +0 -2
  271. package/dist/ui/assets/oauth-service-CT-Lvflt.js +0 -1
  272. package/dist/ui/assets/oauth-service-nBlvta_T.js +0 -1
  273. package/dist/ui/assets/panel-rpc-handlers-BPA7Umeo.js +0 -2
  274. package/dist/ui/assets/picker-popup-BjCTzsQH.js +0 -1
  275. package/dist/ui/assets/picker-popup-CFr7T4TJ.js +0 -1
  276. package/dist/ui/assets/preview-url-BvtKejEp.js +0 -1
  277. package/dist/ui/assets/provider-settings-CHQp2onM.js +0 -1
  278. package/dist/ui/assets/provider-settings-Dp2FBrlU.js +0 -2
  279. package/dist/ui/assets/provider-store-access-8IJH8x4u.js +0 -1
  280. package/dist/ui/assets/providers-DuO7vxZy.js +0 -2
  281. package/dist/ui/assets/proxied-fetch-B0SF_J0b.js +0 -1
  282. package/dist/ui/assets/proxied-fetch-CNztWUVW.js +0 -2
  283. package/dist/ui/assets/remote-cdp-transport-BZuQZZe1.js +0 -1
  284. package/dist/ui/assets/request-body-CsruB58l.js +0 -1
  285. package/dist/ui/assets/rest-ops-31ZkM4IG.js +0 -1
  286. package/dist/ui/assets/rest-ops-D6OyHX5S.js +0 -1
  287. package/dist/ui/assets/run-b1PI_1dP.js +0 -81
  288. package/dist/ui/assets/runtime-env-BFnohVwN.js +0 -1
  289. package/dist/ui/assets/runtime-env-Dc36nUmg.js +0 -1
  290. package/dist/ui/assets/runtime-env-NCI8LQob.js +0 -1
  291. package/dist/ui/assets/runtime-env-a_l4ilH_.js +0 -1
  292. package/dist/ui/assets/secret-topology-B8MYKYm6.js +0 -1
  293. package/dist/ui/assets/serial-picker-fzg2DxKj.js +0 -1
  294. package/dist/ui/assets/setup-standalone-prelude-C2jWAIl4.js +0 -2
  295. package/dist/ui/assets/setup-sudo-BK3Rz-OI.js +0 -2
  296. package/dist/ui/assets/shared-BpOmrBY4.js +0 -1
  297. package/dist/ui/assets/shared-CTdWt5ZU.js +0 -4
  298. package/dist/ui/assets/silent-renew-backoff-B8p8Ja1t.js +0 -1
  299. package/dist/ui/assets/silent-renew-backoff-BjF-rXLR.js +0 -1
  300. package/dist/ui/assets/slicc-app-url-DnN_aesz.js +0 -1
  301. package/dist/ui/assets/slicc-version-CUqwa07v.js +0 -1
  302. package/dist/ui/assets/src-DXa5EsFV.js +0 -1
  303. package/dist/ui/assets/src-XLzS9HFL.js +0 -1
  304. package/dist/ui/assets/state-C7WiY9TK.js +0 -42
  305. package/dist/ui/assets/sync-dialog-BZ2j4xTg.js +0 -1
  306. package/dist/ui/assets/tab-teleport-D1Xeuund.js +0 -1
  307. package/dist/ui/assets/transformers-env-DnkszgHP.js +0 -1
  308. package/dist/ui/assets/tray-runtime-config-D9gR_d0I.js +0 -1
  309. package/dist/ui/assets/tray-runtime-config-DCaFjGSS.js +0 -1
  310. package/dist/ui/assets/tray-sidecar-CWqVyj-w.js +0 -2
  311. package/dist/ui/assets/tray-sync-protocol-BNw4_0UD.js +0 -1
  312. package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +0 -1
  313. package/dist/ui/assets/tray-webrtc-De2SkVvZ.js +0 -1
  314. package/dist/ui/assets/usb-picker-B8B4LJT7.js +0 -1
  315. package/dist/ui/assets/wc-browser-AyZY1PPl.js +0 -1
  316. package/dist/ui/assets/wc-follower-CYLEd4rs.js +0 -17
  317. package/dist/ui/assets/wc-follower-oauth-CTgC7D7W.js +0 -5
  318. package/dist/ui/assets/wc-live-s5MA_zAo.js +0 -8
  319. package/dist/ui/assets/wc-nav-DHUiLdz3.js +0 -2
  320. package/dist/ui/assets/wc-onboarding-CX3HBRTZ.js +0 -2
  321. package/dist/ui/assets/wc-permissions-providers-BzoJwkWd.js +0 -2
  322. package/dist/ui/assets/wc-placeholder-BPLzZhYP.js +0 -4
  323. package/dist/ui/assets/wc-settings-tszLzSGm.js +0 -59
  324. package/dist/ui/assets/wc-shell-BBDMmI8N.js +0 -122
  325. package/dist/ui/assets/wc-shortcuts-BWBA9QlD.js +0 -11
  326. package/dist/ui/assets/wc-sprinkles-Cx9Zvx6r.js +0 -2
  327. package/dist/ui/assets/wc-transcript-export-B6x5VMbH.js +0 -2
  328. package/dist/ui/assets/wc-tray-DEV2i60z.js +0 -5
  329. package/dist/ui/assets/whisper-session-i96-W77q.js +0 -2
@@ -0,0 +1,90 @@
1
+ /**
2
+ * SLICC handoff link extractor.
3
+ *
4
+ * Replaces the legacy `x-slicc` response header with two custom rels carried
5
+ * in a standard RFC 8288 `Link` header:
6
+ *
7
+ * Link: <https://github.com/owner/repo>; rel="https://www.sliccy.ai/rel/upskill"
8
+ * Link: <>; rel="https://www.sliccy.ai/rel/handoff";
9
+ * title*=UTF-8''Continue%20the%20signup%20flow
10
+ *
11
+ * SLICC dispatches by rel — the rel IS the verb. New verbs add new rels under
12
+ * the `https://www.sliccy.ai/rel/` namespace.
13
+ */
14
+ import type { ParsedLink } from './link-header.js';
15
+ export declare const HANDOFF_REL = "https://www.sliccy.ai/rel/handoff";
16
+ export declare const UPSKILL_REL = "https://www.sliccy.ai/rel/upskill";
17
+ /**
18
+ * CDP `Network.Response.headers` bag. Values are strings at runtime (same-name
19
+ * headers joined with `\n`); the protocol envelope leaves them untyped until
20
+ * `getLinkHeaderValuesFromCdp` narrows.
21
+ */
22
+ export type CdpHeaderBag = Record<string, unknown>;
23
+ export type HandoffVerb = 'handoff' | 'upskill';
24
+ export interface HandoffMatch {
25
+ verb: HandoffVerb;
26
+ /**
27
+ * Absolute URL when the verb's payload is a URL (e.g. upskill points at a
28
+ * GitHub repo). For prose-only verbs (handoff), this resolves to the page
29
+ * itself via the empty `<>` anchor convention.
30
+ */
31
+ target: string;
32
+ /** Free-form prose instruction from the link's `title` parameter, if any. */
33
+ instruction?: string;
34
+ /**
35
+ * Optional branch name carried by the upskill rel's `branch` Link param.
36
+ * Only populated for the upskill verb; the handoff verb ignores both
37
+ * `branch` and `path` because its target is the page itself, not a repo.
38
+ */
39
+ branch?: string;
40
+ /**
41
+ * Optional sub-path under the upskill rel's repo carried by the `path`
42
+ * Link param. Canonical directory form: a trailing `/SKILL.md` (which
43
+ * some emitters include to point at the manifest itself) is stripped so
44
+ * downstream consumers always see the skill's containing directory.
45
+ * Only populated for the upskill verb.
46
+ */
47
+ path?: string;
48
+ }
49
+ export declare function isSafeUpskillBranch(value: string): boolean;
50
+ export declare function isSafeUpskillPath(value: string): boolean;
51
+ export declare function extractHandoff(links: ParsedLink[]): HandoffMatch | null;
52
+ /**
53
+ * Stable identity for a handoff/upskill payload, independent of the page URL
54
+ * that advertised it.
55
+ *
56
+ * A site can emit the same SLICC `Link` rel on every page response (e.g. a
57
+ * site-wide upskill pointing at one repo). Keying dedup on the page URL would
58
+ * never collapse those because the path changes on every navigation, while the
59
+ * payload (`verb` + `target` repo + `branch` + `path`, or for the prose
60
+ * `handoff` verb the page `target` + `instruction`) stays constant. Keying on
61
+ * this fingerprint lets callers process a given handoff once and silently drop
62
+ * repeat sightings of the same payload within a session.
63
+ *
64
+ * The NUL separator can't appear in any of the parts (URLs, git refs, paths,
65
+ * and the RFC 8187-decoded title are all NUL-free), so concatenation is
66
+ * collision-free without hashing.
67
+ */
68
+ export declare function handoffFingerprint(input: {
69
+ verb: string;
70
+ target: string;
71
+ branch?: string;
72
+ path?: string;
73
+ instruction?: string;
74
+ }): string;
75
+ export declare function extractHandoffFromCdpHeaders(headers: CdpHeaderBag | undefined, baseUrl?: string): {
76
+ match: HandoffMatch | null;
77
+ links: ParsedLink[];
78
+ };
79
+ export declare function extractHandoffFromWebRequest(headers: Array<{
80
+ name: string;
81
+ value?: string;
82
+ }> | undefined, baseUrl?: string): {
83
+ match: HandoffMatch | null;
84
+ links: ParsedLink[];
85
+ };
86
+ export declare function extractHandoffFromFetchHeaders(headers: Headers | undefined, baseUrl?: string): {
87
+ match: HandoffMatch | null;
88
+ links: ParsedLink[];
89
+ };
90
+ //# sourceMappingURL=handoff-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-link.d.ts","sourceRoot":"","sources":["../src/handoff-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,eAAO,MAAM,WAAW,sCAAuC,CAAC;AAChE,eAAO,MAAM,WAAW,sCAAuC,CAAC;AAEhE;;;;GAIG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiDD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMxD;AAuCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY,GAAG,IAAI,CAevE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAQT;AAID,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAKrD;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC5D,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAKrD;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAKrD"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * SLICC handoff link extractor.
3
+ *
4
+ * Replaces the legacy `x-slicc` response header with two custom rels carried
5
+ * in a standard RFC 8288 `Link` header:
6
+ *
7
+ * Link: <https://github.com/owner/repo>; rel="https://www.sliccy.ai/rel/upskill"
8
+ * Link: <>; rel="https://www.sliccy.ai/rel/handoff";
9
+ * title*=UTF-8''Continue%20the%20signup%20flow
10
+ *
11
+ * SLICC dispatches by rel — the rel IS the verb. New verbs add new rels under
12
+ * the `https://www.sliccy.ai/rel/` namespace.
13
+ */
14
+ import { SLICC_HOSTED_ORIGIN } from './bridge-protocol.js';
15
+ import { getLinkHeaderValuesFromCdp, getLinkHeaderValuesFromHeaders, getLinkHeaderValuesFromWebRequest, parseLinkHeader, } from './link-header.js';
16
+ export const HANDOFF_REL = `${SLICC_HOSTED_ORIGIN}/rel/handoff`;
17
+ export const UPSKILL_REL = `${SLICC_HOSTED_ORIGIN}/rel/upskill`;
18
+ /** Strip a trailing `/SKILL.md` (case-insensitive) so callers see a directory. */
19
+ function canonicaliseUpskillPath(raw) {
20
+ const trimmed = raw.replace(/\/+$/, '');
21
+ const lower = trimmed.toLowerCase();
22
+ if (lower.endsWith('/skill.md'))
23
+ return trimmed.slice(0, -'/skill.md'.length);
24
+ if (lower === 'skill.md')
25
+ return '';
26
+ return trimmed;
27
+ }
28
+ /**
29
+ * Shell-metacharacter allowlists for `branch` and `path` Link params.
30
+ *
31
+ * The `Link` header is attacker-controlled (any page the user opens can
32
+ * emit one). The cone consumes the navigate-lick body verbatim and
33
+ * follows the `handoff` SKILL instruction to render `upskill --branch
34
+ * <b> --path <p> <target>` as a `bash` tool call — a string the WASM
35
+ * shell tokenizes. If `b` or `p` carry `;`, backticks, dollar-paren,
36
+ * or a trailing newline, an unquoted/mis-quoted splice could smuggle
37
+ * a second command past the approval card's visible code rows.
38
+ *
39
+ * Defense-in-depth: drop unsafe values here so they never enter the
40
+ * lick body the cone reads. The `upskill` command also re-validates
41
+ * (`upskill-command.ts` imports `isSafeUpskillBranch` /
42
+ * `isSafeUpskillPath`) as a second gate in case a future dispatch
43
+ * path bypasses this extractor.
44
+ *
45
+ * The allowlists are intentionally narrow:
46
+ *
47
+ * - Branch: `git check-ref-format` characters (alphanumerics, `.`,
48
+ * `_`, `/`, `-`). `..` segments, a leading `-`/`/`, a trailing `/`,
49
+ * and a `.lock` suffix are rejected to match git's own rules. Max
50
+ * length 250 (git's `MAX_REF_NAMELEN`).
51
+ * - Path: same character set as branches; no `..` traversal, no
52
+ * leading `-` (avoids being parsed as a flag) or leading `/` (the
53
+ * wire format is repo-relative). Max length 1024.
54
+ *
55
+ * Anything beyond ASCII is rejected on purpose: a homoglyph branch
56
+ * name would render identical to a real one in the approval card but
57
+ * resolve to a different ref. Real git branches in the wild are
58
+ * ASCII; the cost of rejecting unicode here is low and the
59
+ * homoglyph-spoofing surface this closes is meaningful.
60
+ */
61
+ const SAFE_BRANCH_RE = /^[A-Za-z0-9._/-]+$/;
62
+ const SAFE_PATH_RE = /^[A-Za-z0-9._/-]+$/;
63
+ const MAX_BRANCH_LEN = 250;
64
+ const MAX_PATH_LEN = 1024;
65
+ export function isSafeUpskillBranch(value) {
66
+ if (value.length === 0 || value.length > MAX_BRANCH_LEN)
67
+ return false;
68
+ if (!SAFE_BRANCH_RE.test(value))
69
+ return false;
70
+ if (value.startsWith('-') || value.startsWith('/') || value.endsWith('/'))
71
+ return false;
72
+ if (value.includes('..'))
73
+ return false;
74
+ if (value.endsWith('.lock'))
75
+ return false;
76
+ return true;
77
+ }
78
+ export function isSafeUpskillPath(value) {
79
+ if (value.length === 0 || value.length > MAX_PATH_LEN)
80
+ return false;
81
+ if (!SAFE_PATH_RE.test(value))
82
+ return false;
83
+ if (value.startsWith('-') || value.startsWith('/'))
84
+ return false;
85
+ if (value.includes('..'))
86
+ return false;
87
+ return true;
88
+ }
89
+ /**
90
+ * Find the first SLICC-recognised handoff link in a parsed Link header set.
91
+ *
92
+ * Rel comparison is case-sensitive: RFC 8288 §2.1.1 mandates URI rels, and
93
+ * generic URI comparison is case-sensitive in path/query. Scheme and host
94
+ * are case-insensitive, but our canonical form uses lowercase already.
95
+ *
96
+ * For the upskill verb, optional `branch` and `path` Link params are
97
+ * surfaced on the match so the dispatch path can pass them through to the
98
+ * `upskill` command's `--branch` / `--path` flags. These params are
99
+ * upskill-only — they are ignored on the handoff verb (whose target is the
100
+ * page itself, not a git tree).
101
+ */
102
+ /**
103
+ * Populate optional upskill params (branch, path) on a match.
104
+ *
105
+ * `parseLinkHeader` lowercases param names and applies RFC 8187 ext-value
106
+ * decoding, so `branch`, `branch*=UTF-8''…`, `BRANCH=…` all land under
107
+ * the same `branch` key.
108
+ *
109
+ * Shell-injection defense: drop branch/path values that contain anything
110
+ * outside the allowlist (see `isSafeUpskillBranch` / `isSafeUpskillPath`).
111
+ * The values ride to the cone inside a navigate-lick body, then back out as
112
+ * flag arguments to the `upskill` bash command — every character has to be
113
+ * safe both as JSON content and as an argv token. Silent drop matches the
114
+ * existing "empty value -> field omitted" contract.
115
+ */
116
+ function applyUpskillParams(result, params) {
117
+ const branch = params.branch;
118
+ if (typeof branch === 'string' && isSafeUpskillBranch(branch))
119
+ result.branch = branch;
120
+ const pathParam = params.path;
121
+ if (typeof pathParam === 'string' && pathParam.length > 0) {
122
+ const canon = canonicaliseUpskillPath(pathParam);
123
+ if (canon.length > 0 && isSafeUpskillPath(canon))
124
+ result.path = canon;
125
+ }
126
+ }
127
+ export function extractHandoff(links) {
128
+ for (const link of links) {
129
+ if (link.rel.includes(HANDOFF_REL)) {
130
+ const result = { verb: 'handoff', target: link.href };
131
+ if (link.title != null && link.title.length > 0)
132
+ result.instruction = link.title;
133
+ return result;
134
+ }
135
+ if (link.rel.includes(UPSKILL_REL)) {
136
+ const result = { verb: 'upskill', target: link.href };
137
+ if (link.title != null && link.title.length > 0)
138
+ result.instruction = link.title;
139
+ applyUpskillParams(result, link.params);
140
+ return result;
141
+ }
142
+ }
143
+ return null;
144
+ }
145
+ /**
146
+ * Stable identity for a handoff/upskill payload, independent of the page URL
147
+ * that advertised it.
148
+ *
149
+ * A site can emit the same SLICC `Link` rel on every page response (e.g. a
150
+ * site-wide upskill pointing at one repo). Keying dedup on the page URL would
151
+ * never collapse those because the path changes on every navigation, while the
152
+ * payload (`verb` + `target` repo + `branch` + `path`, or for the prose
153
+ * `handoff` verb the page `target` + `instruction`) stays constant. Keying on
154
+ * this fingerprint lets callers process a given handoff once and silently drop
155
+ * repeat sightings of the same payload within a session.
156
+ *
157
+ * The NUL separator can't appear in any of the parts (URLs, git refs, paths,
158
+ * and the RFC 8187-decoded title are all NUL-free), so concatenation is
159
+ * collision-free without hashing.
160
+ */
161
+ export function handoffFingerprint(input) {
162
+ return [
163
+ input.verb,
164
+ input.target,
165
+ input.branch ?? '',
166
+ input.path ?? '',
167
+ input.instruction ?? '',
168
+ ].join('\u0000');
169
+ }
170
+ /* ────────── header-shape adapters that go straight to a verb match ────────── */
171
+ export function extractHandoffFromCdpHeaders(headers, baseUrl) {
172
+ const values = getLinkHeaderValuesFromCdp(headers);
173
+ if (values.length === 0)
174
+ return { match: null, links: [] };
175
+ const links = parseLinkHeader(values, baseUrl);
176
+ return { match: extractHandoff(links), links };
177
+ }
178
+ export function extractHandoffFromWebRequest(headers, baseUrl) {
179
+ const values = getLinkHeaderValuesFromWebRequest(headers);
180
+ if (values.length === 0)
181
+ return { match: null, links: [] };
182
+ const links = parseLinkHeader(values, baseUrl);
183
+ return { match: extractHandoff(links), links };
184
+ }
185
+ export function extractHandoffFromFetchHeaders(headers, baseUrl) {
186
+ const values = getLinkHeaderValuesFromHeaders(headers);
187
+ if (values.length === 0)
188
+ return { match: null, links: [] };
189
+ const links = parseLinkHeader(values, baseUrl);
190
+ return { match: extractHandoff(links), links };
191
+ }
192
+ //# sourceMappingURL=handoff-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-link.js","sourceRoot":"","sources":["../src/handoff-link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Whether this page itself is running inside another frame (e.g. a cherry
3
+ * follower embedded in a third-party host page's iframe). A sprinkle's or
4
+ * dip's own render iframe is then nested two levels deep instead of one,
5
+ * which hits a Chromium first-paint bug: the innermost iframe's content
6
+ * loads and executes correctly but the compositor never rasterizes it,
7
+ * leaving the panel blank until something forces a full frame-tree repaint
8
+ * (DevTools attaching, or a page reload). `nudgeIframeRepaint` works around
9
+ * it without either of those.
10
+ *
11
+ * DOM globals (`window`, `HTMLIFrameElement`, `requestAnimationFrame`) are
12
+ * read through `globalThis` with local structural types rather than the
13
+ * ambient `lib.dom` identifiers: this module is only ever RUN in a browser,
14
+ * but it is also type-checked by non-browser tsconfig projects that compile
15
+ * `@slicc/shared-ts` source without the `DOM` lib (the worker/CLI/node-server
16
+ * projects) — see this package's Conventions in CLAUDE.md.
17
+ */
18
+ export declare function isNestedInAnotherFrame(): boolean;
19
+ /** Structural subset of `HTMLIFrameElement` this module needs. */
20
+ interface RepaintableIframe {
21
+ style: {
22
+ display: string;
23
+ };
24
+ isConnected: boolean;
25
+ }
26
+ /**
27
+ * Force the browser to redo the render/compositing pass for `iframe` by
28
+ * toggling `display` off and back on across two animation frames. A resize
29
+ * event or explicit layout read (`getBoundingClientRect`) does NOT trigger
30
+ * the missing repaint for this bug — only a `display` toggle (or an
31
+ * out-of-band event like DevTools attaching) does.
32
+ *
33
+ * In nested cross-origin frames (cherry follower inside a host page), the
34
+ * single nudge on load can race with the compositor's frame-tree commit.
35
+ * A safety-net retry fires after 500ms, but ONLY when the first nudge was
36
+ * restored by the setTimeout fallback (indicating rAF was throttled and the
37
+ * compositor likely didn't commit). When rAF fires normally the retry is
38
+ * skipped — the compositor was responsive and the nudge almost certainly
39
+ * took effect.
40
+ *
41
+ * Re-entrancy-safe: the dip mount fires this from BOTH the iframe `load`
42
+ * handler AND an IntersectionObserver, which can overlap. A second call that
43
+ * landed mid-nudge would read the transient `display:'none'` as
44
+ * `previousDisplay` and "restore" the iframe to hidden — leaving dips
45
+ * permanently invisible in nested followers (the extension side panel). When a
46
+ * nudge is already pending we skip: the in-flight one will restore the correct
47
+ * display, so we just run the callback.
48
+ */
49
+ export declare function nudgeIframeRepaint(iframe: RepaintableIframe, onDone?: () => void): void;
50
+ export {};
51
+ //# sourceMappingURL=iframe-repaint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframe-repaint.d.ts","sourceRoot":"","sources":["../src/iframe-repaint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,wBAAgB,sBAAsB,IAAI,OAAO,CAchD;AAED,kEAAkE;AAClE,UAAU,iBAAiB;IACzB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;CACtB;AASD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAoBvF"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Whether this page itself is running inside another frame (e.g. a cherry
3
+ * follower embedded in a third-party host page's iframe). A sprinkle's or
4
+ * dip's own render iframe is then nested two levels deep instead of one,
5
+ * which hits a Chromium first-paint bug: the innermost iframe's content
6
+ * loads and executes correctly but the compositor never rasterizes it,
7
+ * leaving the panel blank until something forces a full frame-tree repaint
8
+ * (DevTools attaching, or a page reload). `nudgeIframeRepaint` works around
9
+ * it without either of those.
10
+ *
11
+ * DOM globals (`window`, `HTMLIFrameElement`, `requestAnimationFrame`) are
12
+ * read through `globalThis` with local structural types rather than the
13
+ * ambient `lib.dom` identifiers: this module is only ever RUN in a browser,
14
+ * but it is also type-checked by non-browser tsconfig projects that compile
15
+ * `@slicc/shared-ts` source without the `DOM` lib (the worker/CLI/node-server
16
+ * projects) — see this package's Conventions in CLAUDE.md.
17
+ */
18
+ export function isNestedInAnotherFrame() {
19
+ try {
20
+ // Read through `globalThis.window`, not `globalThis` itself: in a real
21
+ // browser `window === globalThis`, so the two are equivalent, but a test
22
+ // harness that stubs a separate `window` object (assigning only
23
+ // `globalThis.window`, not replacing `globalThis`) needs this to resolve
24
+ // the SAME way a bare `window.self`/`window.top` reference would.
25
+ const win = globalThis.window ?? globalThis;
26
+ return win.self !== win.top;
27
+ }
28
+ catch {
29
+ // Cross-origin access to `window.top` throws — that itself means we're
30
+ // framed by a different origin, which is the case this guards against.
31
+ return true;
32
+ }
33
+ }
34
+ /** Iframes with a repaint nudge currently in flight (display toggled off,
35
+ * restore pending). Guards against overlapping nudges corrupting the restore
36
+ * value — see {@link nudgeIframeRepaint}. */
37
+ const nudgeInFlight = new WeakSet();
38
+ /**
39
+ * Force the browser to redo the render/compositing pass for `iframe` by
40
+ * toggling `display` off and back on across two animation frames. A resize
41
+ * event or explicit layout read (`getBoundingClientRect`) does NOT trigger
42
+ * the missing repaint for this bug — only a `display` toggle (or an
43
+ * out-of-band event like DevTools attaching) does.
44
+ *
45
+ * In nested cross-origin frames (cherry follower inside a host page), the
46
+ * single nudge on load can race with the compositor's frame-tree commit.
47
+ * A safety-net retry fires after 500ms, but ONLY when the first nudge was
48
+ * restored by the setTimeout fallback (indicating rAF was throttled and the
49
+ * compositor likely didn't commit). When rAF fires normally the retry is
50
+ * skipped — the compositor was responsive and the nudge almost certainly
51
+ * took effect.
52
+ *
53
+ * Re-entrancy-safe: the dip mount fires this from BOTH the iframe `load`
54
+ * handler AND an IntersectionObserver, which can overlap. A second call that
55
+ * landed mid-nudge would read the transient `display:'none'` as
56
+ * `previousDisplay` and "restore" the iframe to hidden — leaving dips
57
+ * permanently invisible in nested followers (the extension side panel). When a
58
+ * nudge is already pending we skip: the in-flight one will restore the correct
59
+ * display, so we just run the callback.
60
+ */
61
+ export function nudgeIframeRepaint(iframe, onDone) {
62
+ if (nudgeInFlight.has(iframe)) {
63
+ onDone?.();
64
+ return;
65
+ }
66
+ // Track whether rAF restored (compositor responsive) vs setTimeout fallback.
67
+ let rafRestored = false;
68
+ performNudge(iframe, onDone, () => {
69
+ rafRestored = true;
70
+ });
71
+ // Safety-net retry: fires only when the first nudge fell back to setTimeout
72
+ // (rAF was throttled), meaning the compositor likely didn't commit the frame
73
+ // tree in time for the first toggle to take effect.
74
+ setTimeout(() => {
75
+ if (rafRestored)
76
+ return;
77
+ if (!iframe.isConnected)
78
+ return;
79
+ performNudge(iframe);
80
+ }, 500);
81
+ }
82
+ function performNudge(iframe, onDone, onRafRestore) {
83
+ if (nudgeInFlight.has(iframe)) {
84
+ onDone?.();
85
+ return;
86
+ }
87
+ nudgeInFlight.add(iframe);
88
+ const previousDisplay = iframe.style.display;
89
+ iframe.style.display = 'none';
90
+ // In cross-origin iframes, rAF can be throttled. Use setTimeout as a
91
+ // fallback ceiling so the restore always fires within a bounded time.
92
+ let restored = false;
93
+ const restore = (viaRaf) => {
94
+ if (restored)
95
+ return;
96
+ restored = true;
97
+ iframe.style.display = previousDisplay;
98
+ nudgeInFlight.delete(iframe);
99
+ if (viaRaf)
100
+ onRafRestore?.();
101
+ onDone?.();
102
+ };
103
+ // rAF may be absent — a non-browser context, or (the common case) a test
104
+ // whose 500ms safety-net setTimeout fires AFTER the test tore down its jsdom
105
+ // global. Guard it so a missing rAF just falls through to the setTimeout
106
+ // ceiling below rather than throwing an unhandled `requestAnimationFrame is
107
+ // not a function` (which fails the whole vitest run — see #1603's merge-queue
108
+ // flake). In a real browser rAF is always present, so behavior is unchanged.
109
+ const raf = globalThis
110
+ .requestAnimationFrame;
111
+ if (typeof raf === 'function') {
112
+ raf(() => {
113
+ raf(() => restore(true));
114
+ });
115
+ }
116
+ setTimeout(() => restore(false), 100);
117
+ }
118
+ //# sourceMappingURL=iframe-repaint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframe-repaint.js","sourceRoot":"","sources":["../src/iframe-repaint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC;QACH,uEAAuE;QACvE,yEAAyE;QACzE,gEAAgE;QAChE,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,GAAG,GAAI,UAAuC,CAAC,MAAM,IAAK,UAA0B,CAAC;QAC3F,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,uEAAuE;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAQD;;8CAE8C;AAC9C,MAAM,aAAa,GAAG,IAAI,OAAO,EAAqB,CAAC;AAIvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAyB,EAAE,MAAmB;IAC/E,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;QAChC,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,6EAA6E;IAC7E,oDAAoD;IACpD,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,WAAW;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO;QAChC,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC;AAED,SAAS,YAAY,CACnB,MAAyB,EACzB,MAAmB,EACnB,YAAyB;IAEzB,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IACD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAE9B,qEAAqE;IACrE,sEAAsE;IACtE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,EAAE;QAClC,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;QACvC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,MAAM;YAAE,YAAY,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,yEAAyE;IACzE,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,GAAG,GAAI,UAAkE;SAC5E,qBAAqB,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,EAAE;YACP,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC"}
@@ -2,13 +2,21 @@ export * from './agent-wire-types.js';
2
2
  export * from './base64.js';
3
3
  export * from './bridge-protocol.js';
4
4
  export * from './cdp-frame-unmask.js';
5
+ export * from './cdp-target-info.js';
5
6
  export * from './content-type.js';
7
+ export * from './discovery-link.js';
6
8
  export * from './electron-overlay-route.js';
9
+ export * from './extension-bridge-protocol.js';
7
10
  export * from './fetch-proxy-protocol.js';
8
11
  export * from './form-body-unmask.js';
12
+ export * from './handoff-link.js';
13
+ export * from './iframe-repaint.js';
14
+ export * from './leader-ext-id.js';
15
+ export * from './link-header.js';
9
16
  export * from './loopback.js';
10
17
  export * from './oauth-extra-domains-storage.js';
11
18
  export * from './preview-url.js';
19
+ export * from './proxy-headers.js';
12
20
  export * from './runtime-env.js';
13
21
  export * from './secret-env-schema.js';
14
22
  export * from './secret-masking.js';
@@ -22,4 +30,5 @@ export * from './transcript-redaction.js';
22
30
  export * from './tray-signaling.js';
23
31
  export * from './tray-sync-protocol.js';
24
32
  export * from './tray-url-shared.js';
33
+ export * from './well-known-probe.js';
25
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -3,13 +3,21 @@ export * from './agent-wire-types.js';
3
3
  export * from './base64.js';
4
4
  export * from './bridge-protocol.js';
5
5
  export * from './cdp-frame-unmask.js';
6
+ export * from './cdp-target-info.js';
6
7
  export * from './content-type.js';
8
+ export * from './discovery-link.js';
7
9
  export * from './electron-overlay-route.js';
10
+ export * from './extension-bridge-protocol.js';
8
11
  export * from './fetch-proxy-protocol.js';
9
12
  export * from './form-body-unmask.js';
13
+ export * from './handoff-link.js';
14
+ export * from './iframe-repaint.js';
15
+ export * from './leader-ext-id.js';
16
+ export * from './link-header.js';
10
17
  export * from './loopback.js';
11
18
  export * from './oauth-extra-domains-storage.js';
12
19
  export * from './preview-url.js';
20
+ export * from './proxy-headers.js';
13
21
  export * from './runtime-env.js';
14
22
  export * from './secret-env-schema.js';
15
23
  export * from './secret-masking.js';
@@ -23,4 +31,5 @@ export * from './transcript-redaction.js';
23
31
  export * from './tray-signaling.js';
24
32
  export * from './tray-sync-protocol.js';
25
33
  export * from './tray-url-shared.js';
34
+ export * from './well-known-probe.js';
26
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * URL query parameter the service worker appends to the pinned leader-tab
3
+ * URL carrying the extension id. The leader page reads it to open the
4
+ * `chrome.runtime.connect(<id>, { name: EXTENSION_BRIDGE_PORT_NAME })` Port
5
+ * (see `extension-bridge-protocol.ts`) — `chrome.runtime.id` is undefined on
6
+ * an externally_connectable page, so the id must be passed in out of band.
7
+ *
8
+ * Deliberately its own one-export module (#2276 slice E round-1 review)
9
+ * rather than living inside `extension-bridge-protocol.ts`: two first-load
10
+ * page files (`ui/boot/setup-standalone-prelude.ts`,
11
+ * `ui/llm-proxy-sw-config.ts`) import only this constant, and pulling in the
12
+ * whole 240-line envelope-type module for one string constant unnecessarily
13
+ * widens whatever a bundler decides is reachable from the eager page graph.
14
+ */
15
+ export declare const LEADER_EXT_ID_QUERY_NAME = "ext";
16
+ //# sourceMappingURL=leader-ext-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leader-ext-id.d.ts","sourceRoot":"","sources":["../src/leader-ext-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * URL query parameter the service worker appends to the pinned leader-tab
3
+ * URL carrying the extension id. The leader page reads it to open the
4
+ * `chrome.runtime.connect(<id>, { name: EXTENSION_BRIDGE_PORT_NAME })` Port
5
+ * (see `extension-bridge-protocol.ts`) — `chrome.runtime.id` is undefined on
6
+ * an externally_connectable page, so the id must be passed in out of band.
7
+ *
8
+ * Deliberately its own one-export module (#2276 slice E round-1 review)
9
+ * rather than living inside `extension-bridge-protocol.ts`: two first-load
10
+ * page files (`ui/boot/setup-standalone-prelude.ts`,
11
+ * `ui/llm-proxy-sw-config.ts`) import only this constant, and pulling in the
12
+ * whole 240-line envelope-type module for one string constant unnecessarily
13
+ * widens whatever a bundler decides is reachable from the eager page graph.
14
+ */
15
+ export const LEADER_EXT_ID_QUERY_NAME = 'ext';
16
+ //# sourceMappingURL=leader-ext-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leader-ext-id.js","sourceRoot":"","sources":["../src/leader-ext-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC"}