sliccy 6.130.1 → 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 (328) hide show
  1. package/README.md +1 -1
  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-XKjChfD5.js → account-store-DsMvFZgS.js} +3 -3
  53. package/dist/ui/assets/account-store-naVgJKHe.js +1 -0
  54. package/dist/ui/assets/{adobe-DWv_nW7C.js → adobe-BhZB46bT.js} +1 -1
  55. package/dist/ui/assets/{adobe-B7sd2ey1.js → adobe-sRIQnDEl.js} +2 -2
  56. package/dist/ui/assets/{agent-bridge-CmEtyUJl.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-D-QW1Bgf.js → apply-layout-dNkV0TEv.js} +1 -1
  62. package/dist/ui/assets/{apps-Dl5abdz0.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-CZHEfw9U.js → azure-openai-B9ZeZZ0T.js} +1 -1
  65. package/dist/ui/assets/{azure-openai-rq6LQC_C.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-CjhIAx1j.js → cerebras-CsdnfQnc.js} +1 -1
  74. package/dist/ui/assets/{cerebras-UuG-yCJ_.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-AitKSc2i.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-Ca0RuudO.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-0AC_1kYN.js → fs-CBaQR8Xc.js} +2 -2
  94. package/dist/ui/assets/{fs-ClRFZsKp.js → fs-CDaCMxrL.js} +1 -1
  95. package/dist/ui/assets/github-B7uOq9Q1.js +1 -0
  96. package/dist/ui/assets/{github-copilot-hBCBR7n3.js → github-copilot-BeWJoZwD.js} +1 -1
  97. package/dist/ui/assets/{github-copilot-BlR9rGzE.js → github-copilot-DwKSI23j.js} +1 -1
  98. package/dist/ui/assets/{github-install-c-7WlKF0.js → github-install-DE7dF6r8.js} +1 -1
  99. package/dist/ui/assets/{github-DA1dJZHt.js → github-qhOhjD2Q.js} +2 -2
  100. package/dist/ui/assets/{github-zip-BAPGRyWK.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-LDG2J6R7.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-CLGBN8Zo.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-V_qJr_00.js → kernel-worker-CkZd8Enf.js} +679 -628
  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-Z6hqEJOJ.js → local-llm-B-qS5oNT.js} +1 -1
  121. package/dist/ui/assets/{local-llm-Ko45nuy7.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-BrmPOs2_.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-lKw_Vyz_.js → mount-recovery-OxgGejDC.js} +1 -1
  130. package/dist/ui/assets/{mount-O6L8YW8P.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-39sNBZa4.js → openai-codex-BZDYkVh6.js} +1 -1
  137. package/dist/ui/assets/{openai-codex-DUyhVHOH.js → openai-codex-DlFMWNVB.js} +1 -1
  138. package/dist/ui/assets/{openrouter-Dt0-tju5.js → openrouter-BrS9XpJS.js} +1 -1
  139. package/dist/ui/assets/{openrouter-Dpc-slj8.js → openrouter-Dn_iX45f.js} +1 -1
  140. package/dist/ui/assets/{openrouter-oauth-Bw9klnns.js → openrouter-oauth-CioQlp0x.js} +1 -1
  141. package/dist/ui/assets/{openrouter-oauth-WcOnlgk3.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-BKNTonMh.js → provider-BfGyOQHs.js} +2 -2
  150. package/dist/ui/assets/{provider-Bc9U8jIG.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-CvRhpMjO.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-Chea6cTR.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-Dg39s0LK.js → quick-llm-B9NubAhJ.js} +1 -1
  162. package/dist/ui/assets/{recovery-screen-B5CPvW63.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-BMFAdS2O.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-DcYjRdMg.js → session-freezer-Bltt6zUt.js} +3 -3
  180. package/dist/ui/assets/{setup-feature-flags-remote-w6i7-xsn.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-DHmzZdlX.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-CB063Z3h.js → snapshot-Bi6QabWh.js} +1 -1
  191. package/dist/ui/assets/{snapshot-features-CpPq39XU.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-IAZCSKrZ.js → store-CFx1fIZL.js} +1 -1
  199. package/dist/ui/assets/{store-BiIJ0_As.js → store-i7XHN1Er.js} +1 -1
  200. package/dist/ui/assets/{sudo-llO15-hr.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-D4-saTZd.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-BKv2ap0T.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-0dg6iolO.js → xai-grok-3L0LL1R8.js} +1 -1
  236. package/dist/ui/assets/{xai-grok-pGpFfbjv.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-Bt3zihHK.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-Bo32za86.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/lick-manager-DtpJc-rA.js +0 -2
  264. package/dist/ui/assets/lick-urls-f41PW9LN.js +0 -1
  265. package/dist/ui/assets/main-DG-TOKaI.js +0 -22
  266. package/dist/ui/assets/main-cherry-D1l6FfCM.js +0 -1
  267. package/dist/ui/assets/navigation-watcher-C3S1JDXr.js +0 -1
  268. package/dist/ui/assets/new-session-Bl4ZsQ9b.js +0 -2
  269. package/dist/ui/assets/oauth-bootstrap-Ch6w-P0O.js +0 -2
  270. package/dist/ui/assets/oauth-service-CT-Lvflt.js +0 -1
  271. package/dist/ui/assets/oauth-service-nBlvta_T.js +0 -1
  272. package/dist/ui/assets/panel-rpc-handlers-CRIaZYfR.js +0 -2
  273. package/dist/ui/assets/picker-popup-BjCTzsQH.js +0 -1
  274. package/dist/ui/assets/picker-popup-CFr7T4TJ.js +0 -1
  275. package/dist/ui/assets/preview-url-BvtKejEp.js +0 -1
  276. package/dist/ui/assets/provider-settings-9D34aQwf.js +0 -1
  277. package/dist/ui/assets/provider-settings-BdsyHTuR.js +0 -2
  278. package/dist/ui/assets/provider-store-access-Dk0cF7LZ.js +0 -1
  279. package/dist/ui/assets/providers-gHHjy3ja.js +0 -2
  280. package/dist/ui/assets/proxied-fetch-B0SF_J0b.js +0 -1
  281. package/dist/ui/assets/proxied-fetch-CNztWUVW.js +0 -2
  282. package/dist/ui/assets/remote-cdp-transport-BZuQZZe1.js +0 -1
  283. package/dist/ui/assets/request-body-CsruB58l.js +0 -1
  284. package/dist/ui/assets/rest-ops-31ZkM4IG.js +0 -1
  285. package/dist/ui/assets/rest-ops-D6OyHX5S.js +0 -1
  286. package/dist/ui/assets/run-C31PlCiF.js +0 -81
  287. package/dist/ui/assets/runtime-env-BFnohVwN.js +0 -1
  288. package/dist/ui/assets/runtime-env-Dc36nUmg.js +0 -1
  289. package/dist/ui/assets/runtime-env-NCI8LQob.js +0 -1
  290. package/dist/ui/assets/runtime-env-a_l4ilH_.js +0 -1
  291. package/dist/ui/assets/secret-topology-B8MYKYm6.js +0 -1
  292. package/dist/ui/assets/serial-picker-fzg2DxKj.js +0 -1
  293. package/dist/ui/assets/setup-standalone-prelude-DFrkjkWu.js +0 -2
  294. package/dist/ui/assets/setup-sudo-C0g6ApHD.js +0 -2
  295. package/dist/ui/assets/shared-BpOmrBY4.js +0 -1
  296. package/dist/ui/assets/shared-CTdWt5ZU.js +0 -4
  297. package/dist/ui/assets/silent-renew-backoff-B8p8Ja1t.js +0 -1
  298. package/dist/ui/assets/silent-renew-backoff-BjF-rXLR.js +0 -1
  299. package/dist/ui/assets/slicc-app-url-DnN_aesz.js +0 -1
  300. package/dist/ui/assets/slicc-version-CVpFSZ60.js +0 -1
  301. package/dist/ui/assets/src-DXa5EsFV.js +0 -1
  302. package/dist/ui/assets/src-XLzS9HFL.js +0 -1
  303. package/dist/ui/assets/state-Ct1GOwP8.js +0 -42
  304. package/dist/ui/assets/sync-dialog-BZ2j4xTg.js +0 -1
  305. package/dist/ui/assets/tab-teleport-D1Xeuund.js +0 -1
  306. package/dist/ui/assets/transformers-env-DnkszgHP.js +0 -1
  307. package/dist/ui/assets/tray-runtime-config-D9gR_d0I.js +0 -1
  308. package/dist/ui/assets/tray-runtime-config-DCaFjGSS.js +0 -1
  309. package/dist/ui/assets/tray-sidecar-CWqVyj-w.js +0 -2
  310. package/dist/ui/assets/tray-sync-protocol-BNw4_0UD.js +0 -1
  311. package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +0 -1
  312. package/dist/ui/assets/tray-webrtc-De2SkVvZ.js +0 -1
  313. package/dist/ui/assets/usb-picker-B8B4LJT7.js +0 -1
  314. package/dist/ui/assets/wc-browser-AyZY1PPl.js +0 -1
  315. package/dist/ui/assets/wc-follower-DEUkZTu_.js +0 -17
  316. package/dist/ui/assets/wc-follower-oauth-CTgC7D7W.js +0 -5
  317. package/dist/ui/assets/wc-live-DkTXA2Bw.js +0 -8
  318. package/dist/ui/assets/wc-nav-2fZPqw9y.js +0 -2
  319. package/dist/ui/assets/wc-onboarding-C8kBkCKD.js +0 -2
  320. package/dist/ui/assets/wc-permissions-providers-BzoJwkWd.js +0 -2
  321. package/dist/ui/assets/wc-placeholder-CzEI-8XA.js +0 -4
  322. package/dist/ui/assets/wc-settings--cPEMbHv.js +0 -59
  323. package/dist/ui/assets/wc-shell-58xXdR-i.js +0 -122
  324. package/dist/ui/assets/wc-shortcuts-BWBA9QlD.js +0 -11
  325. package/dist/ui/assets/wc-sprinkles-CN5LWTpu.js +0 -2
  326. package/dist/ui/assets/wc-transcript-export-B6x5VMbH.js +0 -2
  327. package/dist/ui/assets/wc-tray-D--vd5uV.js +0 -5
  328. package/dist/ui/assets/whisper-session-i96-W77q.js +0 -2
@@ -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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * RFC 8288 Web Linking — `Link` header parser and builder.
3
+ *
4
+ * Pure module, no I/O. Used by:
5
+ * - the CDP navigation watcher (CLI/Electron) to extract handoff/upskill links
6
+ * from main-frame document responses
7
+ * - the chrome.webRequest observer (extension) to do the same
8
+ * - the playwright-cli / curl wrappers for generic discovery
9
+ *
10
+ * The parser handles:
11
+ * - comma-separated link-values, with commas inside quoted-strings preserved
12
+ * - multiple `Link:` header instances merged per RFC 7230
13
+ * - `param=token`, `param="quoted"` (with backslash escapes), and
14
+ * `param*=ext-value` forms (RFC 8187, UTF-8 charset only)
15
+ * - the "rel" parameter as a space-separated list of relation types
16
+ * - anchor and target URI resolution against an optional base URL
17
+ *
18
+ * The builder produces a single header value from a list of links and is the
19
+ * inverse of the parser for the subset of inputs SLICC produces (no exotic
20
+ * parameter names, RFC 8187 used only when a value contains non-ASCII).
21
+ */
22
+ export interface ParsedLink {
23
+ /** Resolved absolute URL of the link target (or the raw URI-reference if no base). */
24
+ href: string;
25
+ /** Relation type tokens parsed from the `rel` parameter. */
26
+ rel: string[];
27
+ /** Resolved absolute URL of the context (`anchor` parameter), if present. */
28
+ anchor?: string;
29
+ /** Media type of the target representation, if declared. */
30
+ type?: string;
31
+ /** Title of the target, RFC 8187-decoded if it was provided as `title*`. */
32
+ title?: string;
33
+ /** Language of the target, if declared. */
34
+ hreflang?: string;
35
+ /** All parameters seen on this link-value, lowercased keys. RFC 8187 ext-values are decoded. */
36
+ params: Record<string, string>;
37
+ }
38
+ export interface LinkInput {
39
+ /** Target URI-reference. Will be wrapped in `<>`. */
40
+ href: string;
41
+ /** One or more relation types. URI rels are quoted as a single token-list value. */
42
+ rel: string[] | string;
43
+ type?: string;
44
+ title?: string;
45
+ hreflang?: string;
46
+ anchor?: string;
47
+ /** Additional parameters; values are quoted if they contain non-token chars. */
48
+ params?: Record<string, string>;
49
+ /** Force `param*=UTF-8''…` encoding for the named parameters (e.g. `['title']`). */
50
+ extEncode?: string[];
51
+ }
52
+ export declare function parseLinkHeader(input: string | string[] | null | undefined, baseUrl?: string): ParsedLink[];
53
+ /**
54
+ * Decode an RFC 8187 ext-value: `charset "'" [language] "'" value-chars`.
55
+ * Only UTF-8 is required by the RFC; other charsets return null (caller
56
+ * keeps the regular parameter, if any).
57
+ */
58
+ export declare function decodeExtValue(value: string): string | null;
59
+ /**
60
+ * Format a single link as one RFC 8288 link-value. Caller joins multiple
61
+ * link-values with ", " (ASCII comma + SP) to form a complete header.
62
+ *
63
+ * Parameter values containing non-token characters are quoted. For
64
+ * non-Latin1 values (or values listed in `extEncode`), an RFC 8187
65
+ * `param*=UTF-8''…` form is emitted instead. CR/LF in parameter values
66
+ * is always percent-encoded so a malicious instruction can never break
67
+ * out of the header.
68
+ */
69
+ export declare function formatLink(link: LinkInput): string;
70
+ export declare function formatLinkHeader(links: LinkInput[]): string;
71
+ /**
72
+ * CDP `Network.Response.headers` bag. Values are strings at runtime (same-name
73
+ * headers joined with `\n`); non-string values are ignored when read.
74
+ */
75
+ export interface CdpNetworkResponseHeaders {
76
+ readonly [headerName: string]: unknown;
77
+ }
78
+ /**
79
+ * Pull every `Link` header value out of a CDP `Network.Response.headers` bag.
80
+ * CDP joins same-name headers with `\n`; we preserve that for the parser to
81
+ * split.
82
+ */
83
+ export declare function getLinkHeaderValuesFromCdp(headers: CdpNetworkResponseHeaders | undefined): string[];
84
+ /**
85
+ * Pull every `Link` header value out of a chrome.webRequest responseHeaders
86
+ * array.
87
+ */
88
+ export declare function getLinkHeaderValuesFromWebRequest(headers: Array<{
89
+ name: string;
90
+ value?: string;
91
+ }> | undefined): string[];
92
+ /**
93
+ * Pull every `Link` header value out of a Fetch API `Headers` object. Headers
94
+ * collapses same-name values to a comma-joined string per the spec; the
95
+ * parser handles that natively.
96
+ */
97
+ export declare function getLinkHeaderValuesFromHeaders(headers: Headers | undefined): string[];
98
+ //# sourceMappingURL=link-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-header.d.ts","sourceRoot":"","sources":["../src/link-header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,UAAU;IACzB,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAqFD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE,MAAM,GACf,UAAU,EAAE,CA6Bd;AAwHD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3D;AAID;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA+BlD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAE3D;AA4FD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,yBAAyB,GAAG,SAAS,GAC7C,MAAM,EAAE,CAQV;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,GAC3D,MAAM,EAAE,CAQV;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,CAIrF"}