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.
- package/README.md +2 -2
- package/dist/node-server/_shared/agent-wire-types.d.ts +54 -0
- package/dist/node-server/_shared/agent-wire-types.d.ts.map +1 -1
- package/dist/node-server/_shared/cdp-target-info.d.ts +19 -0
- package/dist/node-server/_shared/cdp-target-info.d.ts.map +1 -0
- package/dist/node-server/_shared/cdp-target-info.js +9 -0
- package/dist/node-server/_shared/cdp-target-info.js.map +1 -0
- package/dist/node-server/_shared/discovery-link.d.ts +76 -0
- package/dist/node-server/_shared/discovery-link.d.ts.map +1 -0
- package/dist/node-server/_shared/discovery-link.js +76 -0
- package/dist/node-server/_shared/discovery-link.js.map +1 -0
- package/dist/node-server/_shared/extension-bridge-protocol.d.ts +165 -0
- package/dist/node-server/_shared/extension-bridge-protocol.d.ts.map +1 -0
- package/dist/node-server/_shared/extension-bridge-protocol.js +65 -0
- package/dist/node-server/_shared/extension-bridge-protocol.js.map +1 -0
- package/dist/node-server/_shared/handoff-link.d.ts +90 -0
- package/dist/node-server/_shared/handoff-link.d.ts.map +1 -0
- package/dist/node-server/_shared/handoff-link.js +192 -0
- package/dist/node-server/_shared/handoff-link.js.map +1 -0
- package/dist/node-server/_shared/iframe-repaint.d.ts +51 -0
- package/dist/node-server/_shared/iframe-repaint.d.ts.map +1 -0
- package/dist/node-server/_shared/iframe-repaint.js +118 -0
- package/dist/node-server/_shared/iframe-repaint.js.map +1 -0
- package/dist/node-server/_shared/index.d.ts +9 -0
- package/dist/node-server/_shared/index.d.ts.map +1 -1
- package/dist/node-server/_shared/index.js +9 -0
- package/dist/node-server/_shared/index.js.map +1 -1
- package/dist/node-server/_shared/leader-ext-id.d.ts +16 -0
- package/dist/node-server/_shared/leader-ext-id.d.ts.map +1 -0
- package/dist/node-server/_shared/leader-ext-id.js +16 -0
- package/dist/node-server/_shared/leader-ext-id.js.map +1 -0
- package/dist/node-server/_shared/link-header.d.ts +98 -0
- package/dist/node-server/_shared/link-header.d.ts.map +1 -0
- package/dist/node-server/_shared/link-header.js +441 -0
- package/dist/node-server/_shared/link-header.js.map +1 -0
- package/dist/node-server/_shared/proxy-headers.d.ts +46 -0
- package/dist/node-server/_shared/proxy-headers.d.ts.map +1 -0
- package/dist/node-server/_shared/proxy-headers.js +133 -0
- package/dist/node-server/_shared/proxy-headers.js.map +1 -0
- package/dist/node-server/_shared/well-known-probe.d.ts +63 -0
- package/dist/node-server/_shared/well-known-probe.d.ts.map +1 -0
- package/dist/node-server/_shared/well-known-probe.js +104 -0
- package/dist/node-server/_shared/well-known-probe.js.map +1 -0
- package/dist/node-server/electron-controller.d.ts +51 -0
- package/dist/node-server/electron-controller.js +88 -5
- package/dist/ui/.vite/manifest.json +414 -488
- package/dist/ui/assets/CLAUDE-CWMPcWVI.js +34 -0
- package/dist/ui/assets/{CLAUDE-BG8Wfdn_.js → CLAUDE-DM1onrcU.js} +1 -1
- package/dist/ui/assets/SKILL--AFE5RE3.js +1 -0
- package/dist/ui/assets/{SKILL-DT72j81i.js → SKILL-cpVS35My.js} +1 -1
- package/dist/ui/assets/__vite-browser-external-B6A3FtA_.js +1 -0
- package/dist/ui/assets/{account-store-EaBcIxhN.js → account-store-DsMvFZgS.js} +3 -3
- package/dist/ui/assets/account-store-naVgJKHe.js +1 -0
- package/dist/ui/assets/{adobe-B0U_BLCy.js → adobe-BhZB46bT.js} +1 -1
- package/dist/ui/assets/{adobe-DSoEAq_f.js → adobe-sRIQnDEl.js} +2 -2
- package/dist/ui/assets/{agent-bridge-sbs3wiia.js → agent-bridge-DVqU5-sn.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-Cnv4uh07.js → agent-message-to-chat-Df4an5Ei.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-DW2ZZk9R.js → agent-message-to-chat-xGeYopQz.js} +1 -1
- package/dist/ui/assets/api-endpoint-DGxXvrur.js +1 -0
- package/dist/ui/assets/api-endpoint-Lx_FU5cP.js +1 -0
- package/dist/ui/assets/{apply-layout-DvwSioYn.js → apply-layout-dNkV0TEv.js} +1 -1
- package/dist/ui/assets/{apps-DFIoDcds.js → apps-tzFQ7_KO.js} +1 -1
- package/dist/ui/assets/{auto-mount-table-CEBCZFRF.js → auto-mount-table-0jMTi9rV.js} +1 -1
- package/dist/ui/assets/{azure-openai-C_J_i_Uv.js → azure-openai-B9ZeZZ0T.js} +1 -1
- package/dist/ui/assets/{azure-openai-DUJebq5R.js → azure-openai-DsmgiFlX.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-t651gkrP.js → backend-hostfs-BH8uwRZG.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-BQYf7TAS.js → backend-hostfs-BxfjZHzO.js} +1 -1
- package/dist/ui/assets/bridge-protocol-06nbmp2X.js +1 -0
- package/dist/ui/assets/bridge-protocol-DdqxTTSu.js +1 -0
- package/dist/ui/assets/{bsh-watchdog-D97yX3sQ.js → bsh-watchdog-CxyhQHy5.js} +1 -1
- package/dist/ui/assets/{capability-Btlr4Wc-.js → capability-Bxl0SE1s.js} +2 -2
- package/dist/ui/assets/{cdp-DHIp_AO9.js → cdp-CmXwwigc.js} +1 -1
- package/dist/ui/assets/{cerebras-4vCJGBUt.js → cerebras-CsdnfQnc.js} +1 -1
- package/dist/ui/assets/{cerebras-CBjabVSb.js → cerebras-Mux-1Uqj.js} +1 -1
- package/dist/ui/assets/{client-CjV_9a9h.js → client-C6Cmi9c4.js} +1 -1
- package/dist/ui/assets/composer-speech-CElQJ4q_.js +1 -0
- package/dist/ui/assets/{connect-surface-DrBGja7c.js → connect-surface-DgrjdeR5.js} +1 -1
- package/dist/ui/assets/{context-compaction-huebTevb.js → context-compaction-DRymamfD.js} +3 -3
- package/dist/ui/assets/{core-CdPvxBo3.js → core-B8y1Kyh_.js} +2 -2
- package/dist/ui/assets/{derive-C_gfjwp6.js → derive-TWFNEJkb.js} +1 -1
- package/dist/ui/assets/dip-1TiuHkUR.js +233 -0
- package/dist/ui/assets/{directed-approval-cJrhWrrr.js → directed-approval-BDO2wdC5.js} +1 -1
- package/dist/ui/assets/{discovery-preference-DFkmIHQo.js → discovery-preference-B9KlkVuR.js} +1 -1
- package/dist/ui/assets/ensure-speech-assets-DasC7jBA.js +1 -0
- package/dist/ui/assets/{esbuild-wasm-CSKOA492.js → esbuild-wasm-Ew76Vf_V.js} +2 -2
- package/dist/ui/assets/export-provider-CqI0pk50.js +1 -0
- package/dist/ui/assets/export-spool-CuNzzI8a.js +1 -0
- package/dist/ui/assets/{extension-bridge-transport-D3PItLFo.js → extension-bridge-transport-DfRNjx8c.js} +1 -1
- package/dist/ui/assets/extension-media-capture-2FcAdcuB.js +1 -0
- package/dist/ui/assets/extension-ops-owOXVncP.js +1 -0
- package/dist/ui/assets/float-topology-hfgMx1Yq.js +1 -0
- package/dist/ui/assets/{follower-navigate-watcher-B9ZostUJ.js → follower-navigate-watcher-JQ0b_cW8.js} +1 -1
- package/dist/ui/assets/{fs-C9SJY4sJ.js → fs-CBaQR8Xc.js} +2 -2
- package/dist/ui/assets/{fs-n6R6QZv0.js → fs-CDaCMxrL.js} +1 -1
- package/dist/ui/assets/github-B7uOq9Q1.js +1 -0
- package/dist/ui/assets/{github-copilot-COZvaCzG.js → github-copilot-BeWJoZwD.js} +1 -1
- package/dist/ui/assets/{github-copilot-Cai-dPyZ.js → github-copilot-DwKSI23j.js} +1 -1
- package/dist/ui/assets/{github-install-DfhMDFC9.js → github-install-DE7dF6r8.js} +1 -1
- package/dist/ui/assets/{github-D-fdkiMQ.js → github-qhOhjD2Q.js} +2 -2
- package/dist/ui/assets/{github-zip-ZEV5pLGZ.js → github-zip-CuwUOO-U.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-CG9Yw8Kq.js → guest-tool-gate-BxRAm4CU.js} +1 -1
- package/dist/ui/assets/{hear-D7MO-jTh.js → hear-CNQSuR1y.js} +1 -1
- package/dist/ui/assets/{help-CQHZfeL3.js → help-D66VHlYj.js} +8 -4
- package/dist/ui/assets/hid-picker-sFJ8vzUj.js +1 -0
- package/dist/ui/assets/host-command-29ain4NA.js +1 -0
- package/dist/ui/assets/idle-compaction-B9i1duyd.js +1 -0
- package/dist/ui/assets/idle-compaction-settings-1yyApSsQ.js +1 -0
- package/dist/ui/assets/image-markers-BFDmhPy4.js +1 -0
- package/dist/ui/assets/image-markers-DuyWsic3.js +1 -0
- package/dist/ui/assets/{installer-7BWtTgd6.js → installer-C6TqZaGO.js} +3 -3
- package/dist/ui/assets/{js-realm-worker-CXI-Ngjy.js → js-realm-worker-Bsb6rmK5.js} +4 -4
- package/dist/ui/assets/{jsh-runtime-extensions-Bf9eAUzp.js → jsh-runtime-extensions-Dkujbplu.js} +1 -1
- package/dist/ui/assets/kernel-worker-CkZd8Enf.js +4991 -0
- package/dist/ui/assets/lick-manager-ULemXDKa.js +2 -0
- package/dist/ui/assets/lick-urls-BX4Jyu_T.js +1 -0
- package/dist/ui/assets/{lick-ws-bridge-Jk_oJNDM.js → lick-ws-bridge-Bo5sH7lf.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-ct0HLNad.js → lick-ws-bridge-RFOSPq0w.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-DnNBHXrk.js → live-session-snapshot-BTnyrQCU.js} +1 -1
- package/dist/ui/assets/{loader-B90Xxi7L.js → loader-Dw-TPPKt.js} +1 -1
- package/dist/ui/assets/{local-llm-Dm5mp8ES.js → local-llm-B-qS5oNT.js} +1 -1
- package/dist/ui/assets/{local-llm-CXD-Qof4.js → local-llm-COCS88AU.js} +1 -1
- package/dist/ui/assets/{magick-wasm-BEYfJbAX.js → magick-wasm-C7OGcZrJ.js} +2 -2
- package/dist/ui/assets/main-CAXbdHY8.js +22 -0
- package/dist/ui/assets/main-cherry-DSNvH0CD.js +1 -0
- package/dist/ui/assets/{mount-DD8rKTRS.js → mount-BbUBqN71.js} +2 -2
- package/dist/ui/assets/{mount-bridge-client-CUPodVo6.js → mount-bridge-client-BejrWSrL.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-BrMqFu_x.js → mount-bridge-client-DGJyqEPG.js} +1 -1
- package/dist/ui/assets/{mount-picker-popup-CVvcLs1V.js → mount-picker-popup--ijSfN8u.js} +1 -1
- package/dist/ui/assets/{mount-recovery-D6g3iniZ.js → mount-recovery-OxgGejDC.js} +1 -1
- package/dist/ui/assets/{mount-C1nMn8bL.js → mount-ysOnJBjr.js} +3 -3
- package/dist/ui/assets/navigation-watcher-C8xRyQBd.js +1 -0
- package/dist/ui/assets/new-session-JIL4tJ1I.js +2 -0
- package/dist/ui/assets/oauth-bootstrap-DP5y5Dy8.js +2 -0
- package/dist/ui/assets/oauth-service-Bconf2Pz.js +1 -0
- package/dist/ui/assets/oauth-service-t2taQm3p.js +1 -0
- package/dist/ui/assets/{openai-codex-BveJezys.js → openai-codex-BZDYkVh6.js} +1 -1
- package/dist/ui/assets/{openai-codex-WPOtL2Mf.js → openai-codex-DlFMWNVB.js} +1 -1
- package/dist/ui/assets/{openrouter-98Q9mrw8.js → openrouter-BrS9XpJS.js} +1 -1
- package/dist/ui/assets/{openrouter-6nEYTdxI.js → openrouter-Dn_iX45f.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-C7w8rKLa.js → openrouter-oauth-CioQlp0x.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BCNSNHpM.js → openrouter-oauth-D9gZVt7e.js} +1 -1
- package/dist/ui/assets/{page-approval-service-DnWfuBVQ.js → page-approval-service-IZdlRu-_.js} +1 -1
- package/dist/ui/assets/panel-rpc-handlers-DUN0E_f8.js +2 -0
- package/dist/ui/assets/{panelize-shell-C7Ptpa69.js → panelize-shell-KNX1XTnq.js} +1 -1
- package/dist/ui/assets/picker-popup-sQtXmfAo.js +1 -0
- package/dist/ui/assets/{port-bridge-client-wFmUGeZa.js → port-bridge-client-C1tBBqwu.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-BTnhFM03.js → port-bridge-client-CN1cFP4D.js} +1 -1
- package/dist/ui/assets/preview-url-r19H6zH1.js +1 -0
- package/dist/ui/assets/{provider-1nSAXh4b.js → provider-BfGyOQHs.js} +2 -2
- package/dist/ui/assets/{provider-RrpO6cEr.js → provider-DnIZJQjl.js} +1 -1
- package/dist/ui/assets/provider-settings-C6uIHjd4.js +1 -0
- package/dist/ui/assets/provider-settings-DrWv51sQ.js +2 -0
- package/dist/ui/assets/{provider-store-access-kKnmyJjr.js → provider-store-access-BqErJhmB.js} +2 -2
- package/dist/ui/assets/provider-store-access-BuQzycZu.js +1 -0
- package/dist/ui/assets/{providers-CvD7PECK.js → providers-CF2FF0H2.js} +1 -1
- package/dist/ui/assets/providers-CqZKx9qW.js +2 -0
- package/dist/ui/assets/proxied-fetch-CiijUcSt.js +2 -0
- package/dist/ui/assets/proxied-fetch-DUC7X0GS.js +1 -0
- package/dist/ui/assets/{py-realm-worker-DGFMfg27.js → py-realm-worker-BYQkpReo.js} +2 -2
- package/dist/ui/assets/{pyodide-BDRAQKP6.js → pyodide-BwD0AtZB.js} +2 -2
- package/dist/ui/assets/{quick-llm-I3oLGgvo.js → quick-llm-B9NubAhJ.js} +1 -1
- package/dist/ui/assets/{recovery-screen-CBwlz3Qo.js → recovery-screen-cHPORxsj.js} +1 -1
- package/dist/ui/assets/{redirect-uri-DZXyVwvI.js → redirect-uri-BKkf61lT.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-Db-9V2n9.js → remote-terminal-view-BHs39pzZ.js} +1 -1
- package/dist/ui/assets/request-body-DWn6QJ_H.js +1 -0
- package/dist/ui/assets/rest-ops-CLpS_ilI.js +1 -0
- package/dist/ui/assets/rest-ops-D2ig8qfG.js +1 -0
- package/dist/ui/assets/{run-BBAgk3Ml.js → run-03JeZZol.js} +1 -1
- package/dist/ui/assets/{run-COi81T_1.js → run-B5YOTTPD.js} +1 -1
- package/dist/ui/assets/run-BOu4zIOZ.js +29 -0
- package/dist/ui/assets/{run-DZMSwK6o.js → run-CUXVFhoI.js} +1 -1
- package/dist/ui/assets/run-D5Va_gO8.js +81 -0
- package/dist/ui/assets/{run-DCeEfqcT.js → run-DZh-18uA.js} +3 -3
- package/dist/ui/assets/{secret-env-Cp2Eduxg.js → secret-env-CtpVPUh5.js} +1 -1
- package/dist/ui/assets/secret-topology-Yt0aO4Gz.js +1 -0
- package/dist/ui/assets/{secrets-bridge-client-CHMeCH4_.js → secrets-bridge-client-BVl0YuB2.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-CNOtgwnq.js → secrets-bridge-client-C3MaYf_O.js} +1 -1
- package/dist/ui/assets/serial-picker-BQF_Eitc.js +1 -0
- package/dist/ui/assets/{session-freezer-DVh0_BPO.js → session-freezer-Bltt6zUt.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-DBcwYFl-.js → setup-feature-flags-remote-BkP-HRZt.js} +1 -1
- package/dist/ui/assets/setup-standalone-prelude-C2tPUGcI.js +2 -0
- package/dist/ui/assets/setup-sudo-BSw__xoN.js +2 -0
- package/dist/ui/assets/shared-Djytys1b.js +1 -0
- package/dist/ui/assets/shared-Dq_aaG_m.js +4 -0
- package/dist/ui/assets/silent-renew-backoff-DIMz5UqB.js +1 -0
- package/dist/ui/assets/silent-renew-backoff-SSzHR-oP.js +1 -0
- package/dist/ui/assets/{skills-BEEjU5I5.js → skills-wzno5Tj5.js} +1 -1
- package/dist/ui/assets/slicc-app-url-B9OxaBDe.js +1 -0
- package/dist/ui/assets/slicc-version-HwuyIZfW.js +1 -0
- package/dist/ui/assets/{snapshot-CPjJBR4Z.js → snapshot-Bi6QabWh.js} +1 -1
- package/dist/ui/assets/{snapshot-features-BZbgnon7.js → snapshot-features-BEPdcWF6.js} +3 -3
- package/dist/ui/assets/{speak-Dx2FEQBZ.js → speak-BxNdNjKi.js} +1 -1
- package/dist/ui/assets/{sprinkle-bridge-BVfyHi8X.js → sprinkle-bridge-BNzhEsPj.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-Dxc8U2h1.js → sprinkle-manager-CflRWcbq.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-1C1DNVyK.js → sprinkle-renderer-BnSqYzuY.js} +1 -1
- package/dist/ui/assets/{src-kInvzkEg.js → src-Bex_z_yH.js} +583 -148
- package/dist/ui/assets/state-DIwkpIaB.js +42 -0
- package/dist/ui/assets/{store-BHLq6CyB.js → store-CFx1fIZL.js} +1 -1
- package/dist/ui/assets/{store-Dd0aJqlJ.js → store-i7XHN1Er.js} +1 -1
- package/dist/ui/assets/{sudo-DBeYNsAF.js → sudo-r7OrTMGT.js} +1 -1
- package/dist/ui/assets/sync-dialog-D7Wg49Up.js +1 -0
- package/dist/ui/assets/tab-teleport-PAaKnGkm.js +1 -0
- package/dist/ui/assets/transcript-export-DP-r8eDz.js +1 -0
- package/dist/ui/assets/transformers-env-BmBEKck6.js +1 -0
- package/dist/ui/assets/{tray-leader-DTpZEm3l.js → tray-leader-DabyaEs-.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-BrGJs1g5.js → tray-leave-runtime-VfTj-MHR.js} +1 -1
- package/dist/ui/assets/tray-runtime-config-BQL-GPqt.js +1 -0
- package/dist/ui/assets/tray-runtime-config-C3Ti4Pik.js +1 -0
- package/dist/ui/assets/tray-sidecar-Zx9F34-1.js +2 -0
- package/dist/ui/assets/tray-sync-protocol-jKTx-dCF.js +1 -0
- package/dist/ui/assets/tray-webrtc-uW6sTyIA.js +1 -0
- package/dist/ui/assets/{upgrade-detection-BwiYpjuO.js → upgrade-detection-Cz0eOMYf.js} +1 -1
- package/dist/ui/assets/usb-picker-Cbm0jfjl.js +1 -0
- package/dist/ui/assets/{voice-reply-BGR2cNZ_.js → voice-reply-B43Nr1Xr.js} +1 -1
- package/dist/ui/assets/{wc-attach-BLZapYO1.js → wc-attach-BbT2famN.js} +3 -3
- package/dist/ui/assets/wc-browser-Ctsf5Y23.js +1 -0
- package/dist/ui/assets/{wc-extension-B_OX4AT5.js → wc-extension-CJ6cvLnw.js} +2 -2
- package/dist/ui/assets/{wc-float-label-Ck2cAgp3.js → wc-float-label-CnFnKVLC.js} +1 -1
- package/dist/ui/assets/wc-follower-CkrdiOKN.js +17 -0
- package/dist/ui/assets/wc-follower-oauth-B6m2XpVI.js +5 -0
- package/dist/ui/assets/wc-live-CxoqWHpR.js +8 -0
- package/dist/ui/assets/wc-nav-Bnd_bEYw.js +2 -0
- package/dist/ui/assets/wc-onboarding-FeHr2fj5.js +2 -0
- package/dist/ui/assets/{wc-permissions-iZXqGvtf.js → wc-permissions-CppSymRx.js} +3 -3
- package/dist/ui/assets/wc-permissions-providers-BjqCnuQT.js +2 -0
- package/dist/ui/assets/wc-placeholder-C79lmtig.js +4 -0
- package/dist/ui/assets/wc-settings-DdAeaZhQ.js +59 -0
- package/dist/ui/assets/wc-shell-BP3biEU1.js +125 -0
- package/dist/ui/assets/{wc-shortcut-config--IseG9bJ.js → wc-shortcut-config-CjOJXjsp.js} +2 -2
- package/dist/ui/assets/wc-shortcuts-BDQiHczD.js +41 -0
- package/dist/ui/assets/wc-sprinkles-ChlcnDD2.js +2 -0
- package/dist/ui/assets/wc-transcript-export-DdEuCfi6.js +2 -0
- package/dist/ui/assets/wc-tray-BfoqEbBg.js +5 -0
- package/dist/ui/assets/whisper-session-DW7HkDu2.js +2 -0
- package/dist/ui/assets/{xai-grok-OLNPEXTT.js → xai-grok-3L0LL1R8.js} +1 -1
- package/dist/ui/assets/{xai-grok-C-iHnNxi.js → xai-grok-CKevFY8L.js} +1 -1
- package/dist/ui/index.html +15 -17
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/index.html +15 -17
- package/package.json +5 -4
- package/dist/ui/assets/CLAUDE-DhkULx_E.js +0 -1
- package/dist/ui/assets/SKILL-DJAvKejL.js +0 -1
- package/dist/ui/assets/__vite-browser-external-B19j3y2v.js +0 -1
- package/dist/ui/assets/account-store-CCqSr710.js +0 -1
- package/dist/ui/assets/api-endpoint-BB41u1PK.js +0 -1
- package/dist/ui/assets/api-endpoint-DRYP1Kfj.js +0 -1
- package/dist/ui/assets/composer-speech-C8OcijP-.js +0 -1
- package/dist/ui/assets/dip-Co-Ga2Ny.js +0 -233
- package/dist/ui/assets/ensure-speech-assets-Csum3_gw.js +0 -1
- package/dist/ui/assets/export-provider-BunpOA08.js +0 -1
- package/dist/ui/assets/export-spool-Bvpvkbul.js +0 -1
- package/dist/ui/assets/extension-media-capture-DiCJSgES.js +0 -1
- package/dist/ui/assets/extension-ops-CsNT8YjX.js +0 -1
- package/dist/ui/assets/float-topology-ey0oewfq.js +0 -1
- package/dist/ui/assets/github-BXAKydA_.js +0 -1
- package/dist/ui/assets/handoff-link-CGs8AaQW.js +0 -1
- package/dist/ui/assets/hid-picker-C4WMZ0dN.js +0 -1
- package/dist/ui/assets/host-command-PnmJLRej.js +0 -1
- package/dist/ui/assets/idle-compaction-CACtwRU_.js +0 -1
- package/dist/ui/assets/idle-compaction-settings-wK6JTbJh.js +0 -1
- package/dist/ui/assets/image-markers-DXh8szCT.js +0 -1
- package/dist/ui/assets/image-markers-Gur55AOh.js +0 -1
- package/dist/ui/assets/kernel-worker-Da1sBAJS.js +0 -4940
- package/dist/ui/assets/lick-manager-DtpJc-rA.js +0 -2
- package/dist/ui/assets/lick-urls-f41PW9LN.js +0 -1
- package/dist/ui/assets/main-BwL0siqZ.js +0 -22
- package/dist/ui/assets/main-cherry-D1l6FfCM.js +0 -1
- package/dist/ui/assets/navigation-watcher-C3S1JDXr.js +0 -1
- package/dist/ui/assets/new-session-DyvxhZfj.js +0 -2
- package/dist/ui/assets/oauth-bootstrap-KB9SK_o_.js +0 -2
- package/dist/ui/assets/oauth-service-CT-Lvflt.js +0 -1
- package/dist/ui/assets/oauth-service-nBlvta_T.js +0 -1
- package/dist/ui/assets/panel-rpc-handlers-BPA7Umeo.js +0 -2
- package/dist/ui/assets/picker-popup-BjCTzsQH.js +0 -1
- package/dist/ui/assets/picker-popup-CFr7T4TJ.js +0 -1
- package/dist/ui/assets/preview-url-BvtKejEp.js +0 -1
- package/dist/ui/assets/provider-settings-CHQp2onM.js +0 -1
- package/dist/ui/assets/provider-settings-Dp2FBrlU.js +0 -2
- package/dist/ui/assets/provider-store-access-8IJH8x4u.js +0 -1
- package/dist/ui/assets/providers-DuO7vxZy.js +0 -2
- package/dist/ui/assets/proxied-fetch-B0SF_J0b.js +0 -1
- package/dist/ui/assets/proxied-fetch-CNztWUVW.js +0 -2
- package/dist/ui/assets/remote-cdp-transport-BZuQZZe1.js +0 -1
- package/dist/ui/assets/request-body-CsruB58l.js +0 -1
- package/dist/ui/assets/rest-ops-31ZkM4IG.js +0 -1
- package/dist/ui/assets/rest-ops-D6OyHX5S.js +0 -1
- package/dist/ui/assets/run-b1PI_1dP.js +0 -81
- package/dist/ui/assets/runtime-env-BFnohVwN.js +0 -1
- package/dist/ui/assets/runtime-env-Dc36nUmg.js +0 -1
- package/dist/ui/assets/runtime-env-NCI8LQob.js +0 -1
- package/dist/ui/assets/runtime-env-a_l4ilH_.js +0 -1
- package/dist/ui/assets/secret-topology-B8MYKYm6.js +0 -1
- package/dist/ui/assets/serial-picker-fzg2DxKj.js +0 -1
- package/dist/ui/assets/setup-standalone-prelude-C2jWAIl4.js +0 -2
- package/dist/ui/assets/setup-sudo-BK3Rz-OI.js +0 -2
- package/dist/ui/assets/shared-BpOmrBY4.js +0 -1
- package/dist/ui/assets/shared-CTdWt5ZU.js +0 -4
- package/dist/ui/assets/silent-renew-backoff-B8p8Ja1t.js +0 -1
- package/dist/ui/assets/silent-renew-backoff-BjF-rXLR.js +0 -1
- package/dist/ui/assets/slicc-app-url-DnN_aesz.js +0 -1
- package/dist/ui/assets/slicc-version-CUqwa07v.js +0 -1
- package/dist/ui/assets/src-DXa5EsFV.js +0 -1
- package/dist/ui/assets/src-XLzS9HFL.js +0 -1
- package/dist/ui/assets/state-C7WiY9TK.js +0 -42
- package/dist/ui/assets/sync-dialog-BZ2j4xTg.js +0 -1
- package/dist/ui/assets/tab-teleport-D1Xeuund.js +0 -1
- package/dist/ui/assets/transformers-env-DnkszgHP.js +0 -1
- package/dist/ui/assets/tray-runtime-config-D9gR_d0I.js +0 -1
- package/dist/ui/assets/tray-runtime-config-DCaFjGSS.js +0 -1
- package/dist/ui/assets/tray-sidecar-CWqVyj-w.js +0 -2
- package/dist/ui/assets/tray-sync-protocol-BNw4_0UD.js +0 -1
- package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +0 -1
- package/dist/ui/assets/tray-webrtc-De2SkVvZ.js +0 -1
- package/dist/ui/assets/usb-picker-B8B4LJT7.js +0 -1
- package/dist/ui/assets/wc-browser-AyZY1PPl.js +0 -1
- package/dist/ui/assets/wc-follower-CYLEd4rs.js +0 -17
- package/dist/ui/assets/wc-follower-oauth-CTgC7D7W.js +0 -5
- package/dist/ui/assets/wc-live-s5MA_zAo.js +0 -8
- package/dist/ui/assets/wc-nav-DHUiLdz3.js +0 -2
- package/dist/ui/assets/wc-onboarding-CX3HBRTZ.js +0 -2
- package/dist/ui/assets/wc-permissions-providers-BzoJwkWd.js +0 -2
- package/dist/ui/assets/wc-placeholder-BPLzZhYP.js +0 -4
- package/dist/ui/assets/wc-settings-tszLzSGm.js +0 -59
- package/dist/ui/assets/wc-shell-BBDMmI8N.js +0 -122
- package/dist/ui/assets/wc-shortcuts-BWBA9QlD.js +0 -11
- package/dist/ui/assets/wc-sprinkles-Cx9Zvx6r.js +0 -2
- package/dist/ui/assets/wc-transcript-export-B6x5VMbH.js +0 -2
- package/dist/ui/assets/wc-tray-DEV2i60z.js +0 -5
- package/dist/ui/assets/whisper-session-i96-W77q.js +0 -2
|
@@ -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"}
|
|
@@ -0,0 +1,441 @@
|
|
|
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
|
+
/* ───────────────────────────── parser ───────────────────────────── */
|
|
23
|
+
function normalizeLinkHeaderInput(input) {
|
|
24
|
+
if (input == null)
|
|
25
|
+
return null;
|
|
26
|
+
// CDP joins multi-value headers with `\n`; treat it the same as separate
|
|
27
|
+
// header instances. Normalize for both shapes — array elements may also
|
|
28
|
+
// contain `\n`-joined values when callers preserve CDP's raw bag verbatim.
|
|
29
|
+
if (Array.isArray(input)) {
|
|
30
|
+
const headerString = input.join(', ').replace(/\n/g, ', ');
|
|
31
|
+
return headerString.length === 0 ? null : headerString;
|
|
32
|
+
}
|
|
33
|
+
if (typeof input === 'string') {
|
|
34
|
+
const headerString = input.replace(/\n/g, ', ');
|
|
35
|
+
return headerString.length === 0 ? null : headerString;
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function readUnquotedParamValue(headerString, i) {
|
|
40
|
+
const len = headerString.length;
|
|
41
|
+
const start = i;
|
|
42
|
+
while (i < len &&
|
|
43
|
+
headerString[i] !== ';' &&
|
|
44
|
+
headerString[i] !== ',' &&
|
|
45
|
+
!isOWSChar(headerString[i]))
|
|
46
|
+
i++;
|
|
47
|
+
return { value: headerString.slice(start, i), end: i };
|
|
48
|
+
}
|
|
49
|
+
function readParamValue(headerString, i) {
|
|
50
|
+
const len = headerString.length;
|
|
51
|
+
i = skipOWS(headerString, i);
|
|
52
|
+
if (i >= len || headerString[i] !== '=')
|
|
53
|
+
return { value: '', end: i };
|
|
54
|
+
i++;
|
|
55
|
+
i = skipOWS(headerString, i);
|
|
56
|
+
if (i < len && headerString[i] === '"')
|
|
57
|
+
return readQuotedString(headerString, i);
|
|
58
|
+
return readUnquotedParamValue(headerString, i);
|
|
59
|
+
}
|
|
60
|
+
function readParamName(headerString, i) {
|
|
61
|
+
const len = headerString.length;
|
|
62
|
+
const nameStart = i;
|
|
63
|
+
while (i < len && isTokenChar(headerString.charCodeAt(i)))
|
|
64
|
+
i++;
|
|
65
|
+
/* c8 ignore next 2 -- unreachable: `*` (0x2a) is itself a tchar (see
|
|
66
|
+
isTokenChar's `case 0x2a`), so the while loop above already consumes a
|
|
67
|
+
trailing `*` before this check can run. */
|
|
68
|
+
if (i < len && headerString[i] === '*')
|
|
69
|
+
i++;
|
|
70
|
+
if (nameStart === i)
|
|
71
|
+
return null;
|
|
72
|
+
return { name: headerString.slice(nameStart, i).toLowerCase(), end: i };
|
|
73
|
+
}
|
|
74
|
+
function parseLinkParameters(headerString, startIndex) {
|
|
75
|
+
const rawParams = [];
|
|
76
|
+
const len = headerString.length;
|
|
77
|
+
let i = startIndex;
|
|
78
|
+
while (i < len) {
|
|
79
|
+
i = skipOWS(headerString, i);
|
|
80
|
+
if (i >= len)
|
|
81
|
+
break;
|
|
82
|
+
if (headerString[i] === ',')
|
|
83
|
+
return { params: rawParams, endIndex: i + 1 };
|
|
84
|
+
if (headerString[i] !== ';') {
|
|
85
|
+
return { params: rawParams, endIndex: skipToNextValue(headerString, i) };
|
|
86
|
+
}
|
|
87
|
+
i++;
|
|
88
|
+
i = skipOWS(headerString, i);
|
|
89
|
+
const parsedName = readParamName(headerString, i);
|
|
90
|
+
if (!parsedName) {
|
|
91
|
+
return { params: rawParams, endIndex: skipToNextValue(headerString, i) };
|
|
92
|
+
}
|
|
93
|
+
const { value, end } = readParamValue(headerString, parsedName.end);
|
|
94
|
+
rawParams.push([parsedName.name, value]);
|
|
95
|
+
i = end;
|
|
96
|
+
}
|
|
97
|
+
return { params: rawParams, endIndex: i };
|
|
98
|
+
}
|
|
99
|
+
export function parseLinkHeader(input, baseUrl) {
|
|
100
|
+
const headerString = normalizeLinkHeaderInput(input);
|
|
101
|
+
if (headerString == null)
|
|
102
|
+
return [];
|
|
103
|
+
const out = [];
|
|
104
|
+
const len = headerString.length;
|
|
105
|
+
let i = 0;
|
|
106
|
+
while (i < len) {
|
|
107
|
+
i = skipOWS(headerString, i);
|
|
108
|
+
if (i >= len)
|
|
109
|
+
break;
|
|
110
|
+
if (headerString[i] !== '<') {
|
|
111
|
+
i = skipToNextValue(headerString, i);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const uriEnd = headerString.indexOf('>', i + 1);
|
|
115
|
+
if (uriEnd === -1)
|
|
116
|
+
break;
|
|
117
|
+
const rawUri = headerString.slice(i + 1, uriEnd);
|
|
118
|
+
const { params: rawParams, endIndex } = parseLinkParameters(headerString, uriEnd + 1);
|
|
119
|
+
i = endIndex;
|
|
120
|
+
const link = buildLink(rawUri, rawParams, baseUrl);
|
|
121
|
+
if (link)
|
|
122
|
+
out.push(link);
|
|
123
|
+
}
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
function skipOWS(s, i) {
|
|
127
|
+
while (i < s.length && (s[i] === ' ' || s[i] === '\t'))
|
|
128
|
+
i++;
|
|
129
|
+
return i;
|
|
130
|
+
}
|
|
131
|
+
function isOWSChar(c) {
|
|
132
|
+
return c === ' ' || c === '\t';
|
|
133
|
+
}
|
|
134
|
+
function skipToNextValue(s, i) {
|
|
135
|
+
let inQuote = false;
|
|
136
|
+
while (i < s.length) {
|
|
137
|
+
const c = s[i];
|
|
138
|
+
if (inQuote) {
|
|
139
|
+
if (c === '\\' && i + 1 < s.length) {
|
|
140
|
+
i += 2;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (c === '"')
|
|
144
|
+
inQuote = false;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
if (c === '"')
|
|
148
|
+
inQuote = true;
|
|
149
|
+
else if (c === ',')
|
|
150
|
+
return i + 1;
|
|
151
|
+
}
|
|
152
|
+
i++;
|
|
153
|
+
}
|
|
154
|
+
return i;
|
|
155
|
+
}
|
|
156
|
+
function readQuotedString(s, i) {
|
|
157
|
+
// s[i] === '"'
|
|
158
|
+
i++;
|
|
159
|
+
let result = '';
|
|
160
|
+
while (i < s.length) {
|
|
161
|
+
const c = s[i];
|
|
162
|
+
if (c === '\\') {
|
|
163
|
+
i++;
|
|
164
|
+
if (i < s.length) {
|
|
165
|
+
result += s[i];
|
|
166
|
+
i++;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else if (c === '"') {
|
|
170
|
+
return { value: result, end: i + 1 };
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
result += c;
|
|
174
|
+
i++;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return { value: result, end: i };
|
|
178
|
+
}
|
|
179
|
+
function isTokenChar(code) {
|
|
180
|
+
// RFC 7230 tchar
|
|
181
|
+
if (code >= 0x30 && code <= 0x39)
|
|
182
|
+
return true; // 0-9
|
|
183
|
+
if (code >= 0x41 && code <= 0x5a)
|
|
184
|
+
return true; // A-Z
|
|
185
|
+
if (code >= 0x61 && code <= 0x7a)
|
|
186
|
+
return true; // a-z
|
|
187
|
+
switch (code) {
|
|
188
|
+
case 0x21: // !
|
|
189
|
+
case 0x23: // #
|
|
190
|
+
case 0x24: // $
|
|
191
|
+
case 0x25: // %
|
|
192
|
+
case 0x26: // &
|
|
193
|
+
case 0x27: // '
|
|
194
|
+
case 0x2a: // *
|
|
195
|
+
case 0x2b: // +
|
|
196
|
+
case 0x2d: // -
|
|
197
|
+
case 0x2e: // .
|
|
198
|
+
case 0x5e: // ^
|
|
199
|
+
case 0x5f: // _
|
|
200
|
+
case 0x60: // `
|
|
201
|
+
case 0x7c: // |
|
|
202
|
+
case 0x7e: // ~
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
function buildLink(rawUri, rawParams, baseUrl) {
|
|
208
|
+
const params = {};
|
|
209
|
+
const extOverrides = {};
|
|
210
|
+
for (const [name, value] of rawParams) {
|
|
211
|
+
if (name.endsWith('*')) {
|
|
212
|
+
const decoded = decodeExtValue(value);
|
|
213
|
+
if (decoded != null)
|
|
214
|
+
extOverrides[name.slice(0, -1)] = decoded;
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
// RFC 8288: rel MUST NOT appear more than once; ignore later occurrences.
|
|
218
|
+
if (name === 'rel' && 'rel' in params)
|
|
219
|
+
continue;
|
|
220
|
+
params[name] = value;
|
|
221
|
+
}
|
|
222
|
+
// RFC 8187 §4.3: ext value takes precedence over the regular value.
|
|
223
|
+
for (const [name, value] of Object.entries(extOverrides)) {
|
|
224
|
+
params[name] = value;
|
|
225
|
+
}
|
|
226
|
+
const href = resolveURI(rawUri, baseUrl);
|
|
227
|
+
const anchor = params.anchor != null ? resolveURI(params.anchor, baseUrl) : undefined;
|
|
228
|
+
const relRaw = params.rel ?? '';
|
|
229
|
+
const rel = relRaw.split(/[ \t]+/).filter((s) => s.length > 0);
|
|
230
|
+
const link = { href, rel, params };
|
|
231
|
+
if (anchor != null)
|
|
232
|
+
link.anchor = anchor;
|
|
233
|
+
if (params.type != null)
|
|
234
|
+
link.type = params.type;
|
|
235
|
+
if (params.title != null)
|
|
236
|
+
link.title = params.title;
|
|
237
|
+
if (params.hreflang != null)
|
|
238
|
+
link.hreflang = params.hreflang;
|
|
239
|
+
return link;
|
|
240
|
+
}
|
|
241
|
+
function resolveURI(ref, baseUrl) {
|
|
242
|
+
if (!baseUrl)
|
|
243
|
+
return ref;
|
|
244
|
+
try {
|
|
245
|
+
return new URL(ref, baseUrl).toString();
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return ref;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Decode an RFC 8187 ext-value: `charset "'" [language] "'" value-chars`.
|
|
253
|
+
* Only UTF-8 is required by the RFC; other charsets return null (caller
|
|
254
|
+
* keeps the regular parameter, if any).
|
|
255
|
+
*/
|
|
256
|
+
export function decodeExtValue(value) {
|
|
257
|
+
const firstQuote = value.indexOf("'");
|
|
258
|
+
if (firstQuote === -1)
|
|
259
|
+
return null;
|
|
260
|
+
const secondQuote = value.indexOf("'", firstQuote + 1);
|
|
261
|
+
if (secondQuote === -1)
|
|
262
|
+
return null;
|
|
263
|
+
const charset = value.slice(0, firstQuote).toLowerCase();
|
|
264
|
+
if (charset !== 'utf-8')
|
|
265
|
+
return null;
|
|
266
|
+
try {
|
|
267
|
+
return decodeURIComponent(value.slice(secondQuote + 1));
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/* ───────────────────────────── builder ───────────────────────────── */
|
|
274
|
+
/**
|
|
275
|
+
* Format a single link as one RFC 8288 link-value. Caller joins multiple
|
|
276
|
+
* link-values with ", " (ASCII comma + SP) to form a complete header.
|
|
277
|
+
*
|
|
278
|
+
* Parameter values containing non-token characters are quoted. For
|
|
279
|
+
* non-Latin1 values (or values listed in `extEncode`), an RFC 8187
|
|
280
|
+
* `param*=UTF-8''…` form is emitted instead. CR/LF in parameter values
|
|
281
|
+
* is always percent-encoded so a malicious instruction can never break
|
|
282
|
+
* out of the header.
|
|
283
|
+
*/
|
|
284
|
+
export function formatLink(link) {
|
|
285
|
+
const rels = Array.isArray(link.rel) ? link.rel : [link.rel];
|
|
286
|
+
const relValue = rels.join(' ');
|
|
287
|
+
const ext = new Set(link.extEncode ?? []);
|
|
288
|
+
const parts = [`<${link.href}>`];
|
|
289
|
+
// rel goes first by convention (improves human readability).
|
|
290
|
+
parts.push(`rel=${formatParamValue(relValue)}`);
|
|
291
|
+
appendParam(parts, 'type', link.type, ext.has('type'));
|
|
292
|
+
appendParam(parts, 'title', link.title, ext.has('title'));
|
|
293
|
+
appendParam(parts, 'hreflang', link.hreflang, ext.has('hreflang'));
|
|
294
|
+
appendParam(parts, 'anchor', link.anchor, ext.has('anchor'));
|
|
295
|
+
if (link.params) {
|
|
296
|
+
for (const [name, value] of Object.entries(link.params)) {
|
|
297
|
+
if (name === 'rel' ||
|
|
298
|
+
name === 'type' ||
|
|
299
|
+
name === 'title' ||
|
|
300
|
+
name === 'hreflang' ||
|
|
301
|
+
name === 'anchor')
|
|
302
|
+
continue;
|
|
303
|
+
appendParam(parts, name, value, ext.has(name));
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return parts.join('; ');
|
|
307
|
+
}
|
|
308
|
+
export function formatLinkHeader(links) {
|
|
309
|
+
return links.map(formatLink).join(', ');
|
|
310
|
+
}
|
|
311
|
+
function appendParam(parts, name, value, forceExt) {
|
|
312
|
+
if (value == null)
|
|
313
|
+
return;
|
|
314
|
+
const useExt = forceExt || needsExtEncoding(value);
|
|
315
|
+
if (useExt) {
|
|
316
|
+
// RFC 8187: percent-encode non-attr-chars; UTF-8 charset only.
|
|
317
|
+
parts.push(`${name}*=UTF-8''${encodeRFC8187(value)}`);
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
parts.push(`${name}=${formatParamValue(value)}`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function needsExtEncoding(value) {
|
|
324
|
+
for (let i = 0; i < value.length; i++) {
|
|
325
|
+
const code = value.charCodeAt(i);
|
|
326
|
+
// Non-Latin1, control chars, or CR/LF — must use RFC 8187.
|
|
327
|
+
if (code > 0xff || code < 0x20 || code === 0x7f)
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
function formatParamValue(value) {
|
|
333
|
+
// Token (no quoting) if every char is a tchar, else quoted-string.
|
|
334
|
+
let needsQuote = value.length === 0;
|
|
335
|
+
if (!needsQuote) {
|
|
336
|
+
for (let i = 0; i < value.length; i++) {
|
|
337
|
+
if (!isTokenChar(value.charCodeAt(i))) {
|
|
338
|
+
needsQuote = true;
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (!needsQuote)
|
|
344
|
+
return value;
|
|
345
|
+
// Escape backslash, double-quote; encode CR/LF defensively even though
|
|
346
|
+
// they are technically allowed inside quoted-string when surrounded by
|
|
347
|
+
// OWS — many HTTP intermediaries reject them.
|
|
348
|
+
let out = '"';
|
|
349
|
+
for (let i = 0; i < value.length; i++) {
|
|
350
|
+
const c = value[i];
|
|
351
|
+
const code = value.charCodeAt(i);
|
|
352
|
+
if (c === '\\' || c === '"') {
|
|
353
|
+
out += '\\' + c;
|
|
354
|
+
}
|
|
355
|
+
else if (code === 0x0d) {
|
|
356
|
+
out += '%0D';
|
|
357
|
+
}
|
|
358
|
+
else if (code === 0x0a) {
|
|
359
|
+
out += '%0A';
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
out += c;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
out += '"';
|
|
366
|
+
return out;
|
|
367
|
+
}
|
|
368
|
+
function encodeRFC8187(value) {
|
|
369
|
+
// attr-char per RFC 8187: ALPHA / DIGIT / "!" "#" "$" "&" "+" "-" "." "^" "_" "`" "|" "~"
|
|
370
|
+
const bytes = new TextEncoder().encode(value);
|
|
371
|
+
let out = '';
|
|
372
|
+
for (const byte of bytes) {
|
|
373
|
+
if ((byte >= 0x30 && byte <= 0x39) || // 0-9
|
|
374
|
+
(byte >= 0x41 && byte <= 0x5a) || // A-Z
|
|
375
|
+
(byte >= 0x61 && byte <= 0x7a) || // a-z
|
|
376
|
+
byte === 0x21 || // !
|
|
377
|
+
byte === 0x23 || // #
|
|
378
|
+
byte === 0x24 || // $
|
|
379
|
+
byte === 0x26 || // &
|
|
380
|
+
byte === 0x2b || // +
|
|
381
|
+
byte === 0x2d || // -
|
|
382
|
+
byte === 0x2e || // .
|
|
383
|
+
byte === 0x5e || // ^
|
|
384
|
+
byte === 0x5f || // _
|
|
385
|
+
byte === 0x60 || // `
|
|
386
|
+
byte === 0x7c || // |
|
|
387
|
+
byte === 0x7e // ~
|
|
388
|
+
) {
|
|
389
|
+
out += String.fromCharCode(byte);
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
out += '%' + byte.toString(16).toUpperCase().padStart(2, '0');
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return out;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Pull every `Link` header value out of a CDP `Network.Response.headers` bag.
|
|
399
|
+
* CDP joins same-name headers with `\n`; we preserve that for the parser to
|
|
400
|
+
* split.
|
|
401
|
+
*/
|
|
402
|
+
export function getLinkHeaderValuesFromCdp(headers) {
|
|
403
|
+
if (!headers)
|
|
404
|
+
return [];
|
|
405
|
+
const out = [];
|
|
406
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
407
|
+
if (name.toLowerCase() !== 'link')
|
|
408
|
+
continue;
|
|
409
|
+
if (typeof value === 'string' && value.length > 0)
|
|
410
|
+
out.push(value);
|
|
411
|
+
}
|
|
412
|
+
return out;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Pull every `Link` header value out of a chrome.webRequest responseHeaders
|
|
416
|
+
* array.
|
|
417
|
+
*/
|
|
418
|
+
export function getLinkHeaderValuesFromWebRequest(headers) {
|
|
419
|
+
if (!headers)
|
|
420
|
+
return [];
|
|
421
|
+
const out = [];
|
|
422
|
+
for (const h of headers) {
|
|
423
|
+
if (h.name.toLowerCase() !== 'link')
|
|
424
|
+
continue;
|
|
425
|
+
if (typeof h.value === 'string' && h.value.length > 0)
|
|
426
|
+
out.push(h.value);
|
|
427
|
+
}
|
|
428
|
+
return out;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Pull every `Link` header value out of a Fetch API `Headers` object. Headers
|
|
432
|
+
* collapses same-name values to a comma-joined string per the spec; the
|
|
433
|
+
* parser handles that natively.
|
|
434
|
+
*/
|
|
435
|
+
export function getLinkHeaderValuesFromHeaders(headers) {
|
|
436
|
+
if (!headers)
|
|
437
|
+
return [];
|
|
438
|
+
const v = headers.get('link');
|
|
439
|
+
return v ? [v] : [];
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=link-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-header.js","sourceRoot":"","sources":["../src/link-header.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* proxy-headers — pure helpers for the `/api/fetch-proxy` forbidden-header
|
|
3
|
+
* transport.
|
|
4
|
+
*
|
|
5
|
+
* The browser silently strips a small set of "forbidden" request headers
|
|
6
|
+
* (Cookie, Origin, Referer, Proxy-*) when calling `fetch()` from page code.
|
|
7
|
+
* The proxy server restores them by reading `X-Proxy-*` headers we send in
|
|
8
|
+
* their place. Likewise, `Set-Cookie` is stripped from response headers,
|
|
9
|
+
* so the proxy bundles all `Set-Cookie` values into a JSON-encoded
|
|
10
|
+
* `X-Proxy-Set-Cookie` header that the browser can read.
|
|
11
|
+
*
|
|
12
|
+
* Extracted from `proxied-fetch.ts` so the LLM-proxy service worker can
|
|
13
|
+
* reuse them — the SW build is a standalone IIFE bundle and can't import
|
|
14
|
+
* the shell-side `proxied-fetch` module which pulls in a much larger graph.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Encode request headers that browsers silently strip (forbidden headers).
|
|
18
|
+
* Cookie → X-Proxy-Cookie, Origin → X-Proxy-Origin, Referer → X-Proxy-Referer, Proxy-* → X-Proxy-Proxy-*
|
|
19
|
+
*/
|
|
20
|
+
export declare function encodeForbiddenRequestHeaders(headers: Record<string, string> | undefined): Record<string, string>;
|
|
21
|
+
/**
|
|
22
|
+
* Decode request headers from the X-Proxy-* transport back to their real names.
|
|
23
|
+
* X-Proxy-Cookie → cookie, X-Proxy-Origin → origin, X-Proxy-Referer → referer,
|
|
24
|
+
* X-Proxy-Proxy-* → proxy-*. Inverse of `encodeForbiddenRequestHeaders` —
|
|
25
|
+
* used by the proxy server side (CLI Express handler, extension SW) before
|
|
26
|
+
* calling upstream `fetch()`. Match is case-insensitive on the `X-Proxy-`
|
|
27
|
+
* prefix; the decoded key is always lowercase.
|
|
28
|
+
*/
|
|
29
|
+
export declare function decodeForbiddenRequestHeaders(headers: Record<string, string>): Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Decode response headers that the proxy transported under non-forbidden names.
|
|
32
|
+
* X-Proxy-Set-Cookie (JSON array) → set-cookie (JSON array string)
|
|
33
|
+
*/
|
|
34
|
+
export declare function decodeForbiddenResponseHeaders(headers: Record<string, string>): Record<string, string>;
|
|
35
|
+
/** Convert Headers or Record<string, string> to a plain Record<string, string>. */
|
|
36
|
+
export declare function headersToRecord(headers: Record<string, string> | Headers | undefined): Record<string, string> | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Coerce any `HeadersInit` shape (Headers / record / [k,v][] array) to a
|
|
39
|
+
* plain record so it can ride on `SecureFetchOptions.headers`. Returns
|
|
40
|
+
* `undefined` when no headers are present (or the result would be empty)
|
|
41
|
+
* so callers can omit the field entirely — preserving the "no empty
|
|
42
|
+
* object leak" contract verified by the `asWebFetch` Origin-propagation
|
|
43
|
+
* tests.
|
|
44
|
+
*/
|
|
45
|
+
export declare function normalizeHeadersInit(headers: Headers | Record<string, string> | Array<[string, string]> | undefined): Record<string, string> | undefined;
|
|
46
|
+
//# sourceMappingURL=proxy-headers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-headers.d.ts","sourceRoot":"","sources":["../src/proxy-headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,GAAG,SAAS,GACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAUpC;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GAC9E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAgBpC"}
|