sliccy 5.73.2 → 5.73.4

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 (154) hide show
  1. package/dist/ui/assets/account-store-DwSzwLW8.js +43 -0
  2. package/dist/ui/assets/account-store-DzwZMcTg.js +101 -0
  3. package/dist/ui/assets/{adobe-DES2cp-y.js → adobe-ChyPg00A.js} +1 -1
  4. package/dist/ui/assets/{adobe-DHUcvdyP.js → adobe-h2gWq2z2.js} +1 -1
  5. package/dist/ui/assets/anthropic-messages-BFic5zKY.js +39 -0
  6. package/dist/ui/assets/anthropic-messages-C8dDJE2X.js +39 -0
  7. package/dist/ui/assets/{apps-DJx3akpR.js → apps-C86xnKLs.js} +1 -1
  8. package/dist/ui/assets/{azure-openai-D7xJ5VET.js → azure-openai-CjkdyGG4.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-C3DSYzL8.js → azure-openai-DMNa-Eup.js} +1 -1
  10. package/dist/ui/assets/azure-openai-responses-B_twhN44.js +1 -0
  11. package/dist/ui/assets/azure-openai-responses-CzG7X9qb.js +1 -0
  12. package/dist/ui/assets/bedrock-camp-BO4bvAKs.js +1 -0
  13. package/dist/ui/assets/{bedrock-camp-PMQ4Iu6f.js → bedrock-camp-CVignIdH.js} +1 -1
  14. package/dist/ui/assets/{cerebras-CnOHiorM.js → cerebras-B0gvSD27.js} +1 -1
  15. package/dist/ui/assets/{cerebras-EsczMAGe.js → cerebras-CvSC_Q2O.js} +1 -1
  16. package/dist/ui/assets/compat-aVSWLlYQ.js +2 -0
  17. package/dist/ui/assets/{connect-surface-BTk8oHjU.js → connect-surface-3UvT0SF3.js} +1 -1
  18. package/dist/ui/assets/constrained-sampling-DafcjXU6.js +1 -0
  19. package/dist/ui/assets/{context-compaction-CW5AQ9bv.js → context-compaction-_UkD06XB.js} +1 -1
  20. package/dist/ui/assets/{fs-C_SqCSvP.js → fs-DC3MEAD4.js} +2 -2
  21. package/dist/ui/assets/{fs-PoNPHaXB.js → fs-DgMOH-Zj.js} +1 -1
  22. package/dist/ui/assets/{github-DF16zQXQ.js → github-HKW-k0Oh.js} +1 -1
  23. package/dist/ui/assets/{github-copilot-DiGxn4oA.js → github-copilot-C7lsRXxS.js} +1 -1
  24. package/dist/ui/assets/{github-copilot-DeMLYZUN.js → github-copilot-CBv0T4_S.js} +1 -1
  25. package/dist/ui/assets/{github-DjE0FC03.js → github-mH266f8L.js} +2 -2
  26. package/dist/ui/assets/google-generative-ai-4YtIu_sJ.js +1 -0
  27. package/dist/ui/assets/google-generative-ai-DzD1vsXe.js +1 -0
  28. package/dist/ui/assets/google-shared-BAKd3aSn.js +371 -0
  29. package/dist/ui/assets/google-shared-CCLlnqMF.js +11 -0
  30. package/dist/ui/assets/google-vertex-8lUayXF0.js +1 -0
  31. package/dist/ui/assets/google-vertex-oQOD3HKr.js +1 -0
  32. package/dist/ui/assets/js-realm-worker-BIrkB9d8.js +48 -0
  33. package/dist/ui/assets/{kernel-worker-C-tryBGn.js → kernel-worker-CHs5yDJo.js} +589 -591
  34. package/dist/ui/assets/{legacy-api-aliases-CRTuRAqQ.js → legacy-api-aliases-IllWZ-uu.js} +1 -1
  35. package/dist/ui/assets/{legacy-api-aliases-CdGTJw-r.js → legacy-api-aliases-sqlB2uHc.js} +1 -1
  36. package/dist/ui/assets/{lick-ws-bridge-C3foeWDS.js → lick-ws-bridge-DbbdXQSp.js} +1 -1
  37. package/dist/ui/assets/{local-llm-CWi0ZprP.js → local-llm-DcKgaorK.js} +2 -2
  38. package/dist/ui/assets/{local-llm-Dq9HBaqe.js → local-llm-DpBDM1Dm.js} +1 -1
  39. package/dist/ui/assets/{main-BMElPt_b.js → main-CBUfGcTh.js} +3 -3
  40. package/dist/ui/assets/mistral-conversations-C57IiFrP.js +8 -0
  41. package/dist/ui/assets/mistral-conversations-CzEm7KNl.js +7 -0
  42. package/dist/ui/assets/{mount-CAFjW1QS.js → mount-BHqxxbwU.js} +1 -1
  43. package/dist/ui/assets/{mount-C7OeghLh.js → mount-BRSg0FIY.js} +2 -2
  44. package/dist/ui/assets/{mount-recovery-B8VdqP8T.js → mount-recovery-Beig7gzz.js} +1 -1
  45. package/dist/ui/assets/{new-session-BwNVjrlp.js → new-session-UPnjrqyz.js} +2 -2
  46. package/dist/ui/assets/oauth-bootstrap-DUaR-il_.js +2 -0
  47. package/dist/ui/assets/{openai-codex-D9LHZUcr.js → openai-codex-CZit4W_R.js} +1 -1
  48. package/dist/ui/assets/openai-codex-D0W343kX.js +1 -0
  49. package/dist/ui/assets/openai-codex-responses-DRR6raXn.js +7 -0
  50. package/dist/ui/assets/openai-codex-responses-DU5CHdDQ.js +7 -0
  51. package/dist/ui/assets/openai-completions-B9S6450Q.js +5 -0
  52. package/dist/ui/assets/openai-completions-DhKgaAgM.js +5 -0
  53. package/dist/ui/assets/openai-responses-C4_jiYtu.js +1 -0
  54. package/dist/ui/assets/openai-responses-DmKhLxzV.js +1 -0
  55. package/dist/ui/assets/openai-responses-shared-CiIL52L-.js +10 -0
  56. package/dist/ui/assets/openai-responses-shared-IJFiSqdz.js +10 -0
  57. package/dist/ui/assets/{openrouter-BmRdV9UY.js → openrouter-D4iz9RSI.js} +1 -1
  58. package/dist/ui/assets/{openrouter-BIvugNQ1.js → openrouter-XorTuzAh.js} +1 -1
  59. package/dist/ui/assets/openrouter-images-6_MxZkJZ.js +1 -0
  60. package/dist/ui/assets/openrouter-images-BixC5B6a.js +1 -0
  61. package/dist/ui/assets/{openrouter-models-DM9v24kQ.js → openrouter-models-Bu1Cy5AD.js} +1 -1
  62. package/dist/ui/assets/{openrouter-models-B8MWxzTa.js → openrouter-models-CfnkMx5-.js} +1 -1
  63. package/dist/ui/assets/{openrouter-oauth-lGTI8QBz.js → openrouter-oauth-BGOdgzqm.js} +1 -1
  64. package/dist/ui/assets/{openrouter-oauth-QExY6Qo3.js → openrouter-oauth-BLGBWXoP.js} +1 -1
  65. package/dist/ui/assets/openrouter.models-DS1_VkCm.js +1 -0
  66. package/dist/ui/assets/openrouter.models-HnnH-abS.js +1 -0
  67. package/dist/ui/assets/{panel-rpc-handlers-SvYz4p6A.js → panel-rpc-handlers-BPMsj1iE.js} +2 -2
  68. package/dist/ui/assets/{provider-dLnW_Qmu.js → provider-DZ7x1aM4.js} +1 -1
  69. package/dist/ui/assets/{provider-CDDFVleF.js → provider-YxK-lzhm.js} +2 -2
  70. package/dist/ui/assets/provider-retry-C8PJzY_l.js +1 -0
  71. package/dist/ui/assets/{provider-settings-BonXlQHx.js → provider-settings-CmJnFmK2.js} +1 -1
  72. package/dist/ui/assets/provider-settings-D6FC6-Ws.js +2 -0
  73. package/dist/ui/assets/{provider-store-access-CDUXoK9n.js → provider-store-access-Bqa_EvEK.js} +2 -2
  74. package/dist/ui/assets/provider-store-access-Dw2dlNIf.js +1 -0
  75. package/dist/ui/assets/{providers-BE5wq_hp.js → providers-7r6dA4ra.js} +1 -1
  76. package/dist/ui/assets/{providers-B8AC4r1K.js → providers-Bklgdp4G.js} +2 -2
  77. package/dist/ui/assets/quick-llm-BHegEzYY.js +1 -0
  78. package/dist/ui/assets/{session-freezer-jCi1eAnA.js → session-freezer-oYKtZTY0.js} +3 -3
  79. package/dist/ui/assets/{setup-sudo-CglheNlM.js → setup-sudo-DGrMEyR3.js} +2 -2
  80. package/dist/ui/assets/{skills-B6K9VVT7.js → skills-DkHenAsV.js} +1 -1
  81. package/dist/ui/assets/{store-Dpqwm0j1.js → store-DICK08O4.js} +1 -1
  82. package/dist/ui/assets/{sudo-Bfbjy3cy.js → sudo-9mYhdwPD.js} +1 -1
  83. package/dist/ui/assets/{upgrade-detection-DdRKki36.js → upgrade-detection-B8LfSgMb.js} +1 -1
  84. package/dist/ui/assets/{wc-extension-K9Yoj8xX.js → wc-extension-grYSDyJN.js} +2 -2
  85. package/dist/ui/assets/{wc-follower-BmFSgVpW.js → wc-follower-B6JesvuH.js} +3 -3
  86. package/dist/ui/assets/{wc-live-FQiVeP5H.js → wc-live-OHBNpb_A.js} +3 -3
  87. package/dist/ui/assets/{wc-nav-CPTHD9Gm.js → wc-nav-DcxqwpAS.js} +2 -2
  88. package/dist/ui/assets/{wc-onboarding-Du7r32Nc.js → wc-onboarding-t5pRxVjL.js} +2 -2
  89. package/dist/ui/assets/{wc-placeholder-qw9xzwIX.js → wc-placeholder-XW-qi_GD.js} +2 -2
  90. package/dist/ui/assets/{wc-settings-Dsqf_wFN.js → wc-settings-7Jj2UM15.js} +2 -2
  91. package/dist/ui/assets/{wc-shell-LFcAIFJQ.js → wc-shell-CoYCAmK-.js} +2 -2
  92. package/dist/ui/assets/{wc-sprinkles-CYSiEKaU.js → wc-sprinkles-CFaUt2sb.js} +2 -2
  93. package/dist/ui/assets/{wc-tray-Dg2nqNkH.js → wc-tray-C_yJiqov.js} +2 -2
  94. package/dist/ui/assets/xai-grok-CrEqywR8.js +1 -0
  95. package/dist/ui/assets/{xai-grok-D-owzioC.js → xai-grok-QulUPZS-.js} +1 -1
  96. package/dist/ui/index.html +10 -10
  97. package/dist/ui/packages/webapp/index.html +10 -10
  98. package/package.json +1 -1
  99. package/dist/ui/assets/account-store-1sWsdBXV.js +0 -38
  100. package/dist/ui/assets/account-store-DWKDZbQl.js +0 -94
  101. package/dist/ui/assets/amazon-bedrock-Cg62P8pR.json +0 -1
  102. package/dist/ui/assets/anthropic-4_qTN2Mu.json +0 -1
  103. package/dist/ui/assets/anthropic-messages-6XWFkWWy.js +0 -39
  104. package/dist/ui/assets/anthropic-messages-D42B1WVl.js +0 -39
  105. package/dist/ui/assets/azure-openai-responses-BvEv9lZE.js +0 -1
  106. package/dist/ui/assets/azure-openai-responses-DE9sINqp.json +0 -1
  107. package/dist/ui/assets/azure-openai-responses-DRSA640t.js +0 -1
  108. package/dist/ui/assets/bedrock-camp-D_7EbOFH.js +0 -1
  109. package/dist/ui/assets/cloudflare-ai-gateway-DDb7hKDm.json +0 -1
  110. package/dist/ui/assets/cloudflare-workers-ai-hYVOS3es.json +0 -1
  111. package/dist/ui/assets/compat-Spvv5tCW.js +0 -2
  112. package/dist/ui/assets/fireworks-B7kEGNCU.json +0 -1
  113. package/dist/ui/assets/github-copilot-K9C_HNHm.json +0 -1
  114. package/dist/ui/assets/google-F4XgvJ1y.json +0 -1
  115. package/dist/ui/assets/google-generative-ai-BqEHWDKc.js +0 -1
  116. package/dist/ui/assets/google-generative-ai-DOAY2Bef.js +0 -1
  117. package/dist/ui/assets/google-shared-2WQG4pNx.js +0 -11
  118. package/dist/ui/assets/google-shared-CGD-JGZx.js +0 -371
  119. package/dist/ui/assets/google-vertex-C-dQj0iH.js +0 -1
  120. package/dist/ui/assets/google-vertex-CiTExP0E.js +0 -1
  121. package/dist/ui/assets/huggingface-BjNadu0v.json +0 -1
  122. package/dist/ui/assets/js-realm-worker-BCzouR_m.js +0 -48
  123. package/dist/ui/assets/mistral-CLEcIOtP.json +0 -1
  124. package/dist/ui/assets/mistral-conversations-BIHTMTfL.js +0 -7
  125. package/dist/ui/assets/mistral-conversations-CFKNSaPt.js +0 -8
  126. package/dist/ui/assets/moonshotai-8QShYhhE.json +0 -1
  127. package/dist/ui/assets/moonshotai-cn-7hHZff5z.json +0 -1
  128. package/dist/ui/assets/nvidia-dA6GzUPm.json +0 -1
  129. package/dist/ui/assets/oauth-bootstrap-Bf7Ewk3g.js +0 -2
  130. package/dist/ui/assets/openai-BehvdaXx.json +0 -1
  131. package/dist/ui/assets/openai-codex-je7irmYi.js +0 -1
  132. package/dist/ui/assets/openai-codex-responses-B7cFMjWk.js +0 -7
  133. package/dist/ui/assets/openai-codex-responses-DqxoDEwc.js +0 -7
  134. package/dist/ui/assets/openai-completions-Z1aRkqWe.js +0 -5
  135. package/dist/ui/assets/openai-completions-o78dOizF.js +0 -5
  136. package/dist/ui/assets/openai-responses-SPfzkTJm.js +0 -1
  137. package/dist/ui/assets/openai-responses-shared-BHsJFKuB.js +0 -10
  138. package/dist/ui/assets/openai-responses-shared-Dg5Ojqlw.js +0 -10
  139. package/dist/ui/assets/openai-responses-xSdsW9lw.js +0 -1
  140. package/dist/ui/assets/opencode-4chvZrBR.json +0 -1
  141. package/dist/ui/assets/opencode-go-Chp1OOUx.json +0 -1
  142. package/dist/ui/assets/openrouter-ZLTwKIjA.json +0 -1
  143. package/dist/ui/assets/openrouter-images-BrQDTa3_.js +0 -1
  144. package/dist/ui/assets/openrouter-images-DtvjLeGK.js +0 -1
  145. package/dist/ui/assets/openrouter.models-Bi9GV7Zn.js +0 -1
  146. package/dist/ui/assets/openrouter.models-D41M1z_D.js +0 -1
  147. package/dist/ui/assets/provider-settings-BQ_ViD6o.js +0 -2
  148. package/dist/ui/assets/provider-store-access-B_M384kS.js +0 -1
  149. package/dist/ui/assets/quick-llm-j8Lw8DXh.js +0 -1
  150. package/dist/ui/assets/qwen-token-plan-BpxmzamU.json +0 -1
  151. package/dist/ui/assets/qwen-token-plan-cn-CPhDR0u_.json +0 -1
  152. package/dist/ui/assets/together-CYZ-lBBF.json +0 -1
  153. package/dist/ui/assets/vercel-ai-gateway-ZtkcQH_C.json +0 -1
  154. package/dist/ui/assets/xai-grok-BvvyCW-L.js +0 -1
@@ -1 +1 @@
1
- import{c as e,d as t,f as n,l as r,o as i,p as a,s as o,u as s}from"./compat-Spvv5tCW.js";var c=a(),l=n(),u=t(),d=s(),f=r(),p=e(),m=o(),h=i(),g=c.stream,_=c.streamSimple;l.stream,l.streamSimple,u.stream,u.streamSimple,d.stream,d.streamSimple,f.stream,f.streamSimple;var v=p.stream,y=p.streamSimple,b=m.stream,x=m.streamSimple,S=h.stream,C=h.streamSimple;export{_ as a,C as c,S as i,v as n,y as o,b as r,x as s,g as t};
1
+ import{c as e,d as t,f as n,l as r,o as i,p as a,s as o,u as s}from"./compat-aVSWLlYQ.js";var c=a(),l=n(),u=t(),d=s(),f=r(),p=e(),m=o(),h=i(),g=c.stream,_=c.streamSimple;l.stream,l.streamSimple,u.stream,u.streamSimple,d.stream,d.streamSimple,f.stream,f.streamSimple;var v=p.stream,y=p.streamSimple,b=m.stream,x=m.streamSimple,S=h.stream,C=h.streamSimple;export{_ as a,C as c,S as i,v as n,y as o,b as r,x as s,g as t};
@@ -1 +1 @@
1
- import{S as e,_ as t,b as n,g as r,h as i,v as a,x as o,y as s}from"./bedrock-camp-D_7EbOFH.js";const c=e(),l=o(),u=n(),d=s(),f=a(),p=t(),m=r(),h=i(),g=c.stream,_=c.streamSimple;l.stream,l.streamSimple,u.stream,u.streamSimple,d.stream,d.streamSimple,f.stream,f.streamSimple;const v=p.stream,y=p.streamSimple,b=m.stream,x=m.streamSimple,S=h.stream,C=h.streamSimple;export{_ as a,C as c,S as i,v as n,y as o,b as r,x as s,g as t};
1
+ import{S as e,_ as t,b as n,g as r,h as i,v as a,x as o,y as s}from"./bedrock-camp-BO4bvAKs.js";const c=e(),l=o(),u=n(),d=s(),f=a(),p=t(),m=r(),h=i(),g=c.stream,_=c.streamSimple;l.stream,l.streamSimple,u.stream,u.streamSimple,d.stream,d.streamSimple,f.stream,f.streamSimple;const v=p.stream,y=p.streamSimple,b=m.stream,x=m.streamSimple,S=h.stream,C=h.streamSimple;export{_ as a,C as c,S as i,v as n,y as o,b as r,x as s,g as t};
@@ -1 +1 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import"./main-BMElPt_b.js";import"./tray-leader-DicSB8Dn.js";e(`lick-ws-bridge`);function t(e){let t=typeof e.verb==`string`?e.verb:null,n=typeof e.target==`string`?e.target:null,r=typeof e.url==`string`&&e.url.length>0?e.url:null;if(t!==`handoff`&&t!==`upskill`||!n||!r)return null;let i={url:r,verb:t,target:n};return typeof e.instruction==`string`&&(i.instruction=e.instruction),typeof e.branch==`string`&&(i.branch=e.branch),typeof e.path==`string`&&(i.path=e.path),typeof e.title==`string`&&(i.title=e.title),{type:`navigate`,navigateUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:i}}function n(e){let t=typeof e.discoveryOrigin==`string`?e.discoveryOrigin:null,n=e.discoveryKind===`ai-catalog`||e.discoveryKind===`llms-txt`?e.discoveryKind:null,r=typeof e.discoveryUrl==`string`&&e.discoveryUrl.length>0?e.discoveryUrl:null;if(!t||!n||!r)return null;let i=typeof e.url==`string`?e.url:void 0;return{type:`discovery`,discoveryOrigin:t,discoveryKind:n,discoveryUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:{origin:t,kind:n,url:r,...i?{pageUrl:i}:{}}}}export{n as mapDiscoveryPayloadToLickEvent,t as mapNavigatePayloadToLickEvent};
1
+ import{t as e}from"./logger-DDBAeTLF.js";import"./main-CBUfGcTh.js";import"./tray-leader-DicSB8Dn.js";e(`lick-ws-bridge`);function t(e){let t=typeof e.verb==`string`?e.verb:null,n=typeof e.target==`string`?e.target:null,r=typeof e.url==`string`&&e.url.length>0?e.url:null;if(t!==`handoff`&&t!==`upskill`||!n||!r)return null;let i={url:r,verb:t,target:n};return typeof e.instruction==`string`&&(i.instruction=e.instruction),typeof e.branch==`string`&&(i.branch=e.branch),typeof e.path==`string`&&(i.path=e.path),typeof e.title==`string`&&(i.title=e.title),{type:`navigate`,navigateUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:i}}function n(e){let t=typeof e.discoveryOrigin==`string`?e.discoveryOrigin:null,n=e.discoveryKind===`ai-catalog`||e.discoveryKind===`llms-txt`?e.discoveryKind:null,r=typeof e.discoveryUrl==`string`&&e.discoveryUrl.length>0?e.discoveryUrl:null;if(!t||!n||!r)return null;let i=typeof e.url==`string`?e.url:void 0;return{type:`discovery`,discoveryOrigin:t,discoveryKind:n,discoveryUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:{origin:t,kind:n,url:r,...i?{pageUrl:i}:{}}}}export{n as mapDiscoveryPayloadToLickEvent,t as mapNavigatePayloadToLickEvent};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./event-stream-qbAZIAKV.js";import{a as t}from"./compat-Spvv5tCW.js";import{b as n}from"./account-store-1sWsdBXV.js";import{r,s as i}from"./legacy-api-aliases-CRTuRAqQ.js";import{t as a}from"./logger-DDBAeTLF.js";var o=a(`local-llm`),s=`local-llm`,c=`local`,l=`${s}-unconfigured`,u={id:s,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
- `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let e=d(n(s));return e.length===0?[{id:l,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:e.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function d(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}var f=`openai-completions`,p=`${s}-openai`;function m(e){return{...e,api:f}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:c}:t}var g=(e,t,n={})=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?r(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?i(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(t,n){let r=e(),i={role:`assistant`,content:[],api:t.api,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:n,timestamp:Date.now()};return queueMicrotask(()=>{r.push({type:`error`,reason:`error`,error:i}),r.end()}),r}function y(){t({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return o.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{u as config,C as detectRuntime,S as discoverModels,b as originOf,y as register,E as verifyConnection};
1
+ import{b as e}from"./account-store-DwSzwLW8.js";import{n as t}from"./event-stream-qbAZIAKV.js";import{a as n}from"./compat-aVSWLlYQ.js";import{r,s as i}from"./legacy-api-aliases-IllWZ-uu.js";import{t as a}from"./logger-DDBAeTLF.js";var o=a(`local-llm`),s=`local-llm`,c=`local`,l=`${s}-unconfigured`,u={id:s,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
+ `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let t=d(e(s));return t.length===0?[{id:l,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:t.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function d(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}var f=`openai-completions`,p=`${s}-openai`;function m(e){return{...e,api:f}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:c}:t}var g=(e,t,n={})=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?r(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?i(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(e,n){let r=t(),i={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:n,timestamp:Date.now()};return queueMicrotask(()=>{r.push({type:`error`,reason:`error`,error:i}),r.end()}),r}function y(){n({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return o.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{u as config,C as detectRuntime,S as discoverModels,b as originOf,y as register,E as verifyConnection};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./logger-LESFN7Hj.js";import{b as n}from"./account-store-DWKDZbQl.js";import{n as r}from"./event-stream-qbAZIAKV.js";import{p as i}from"./bedrock-camp-D_7EbOFH.js";import{r as a,s as o}from"./legacy-api-aliases-CdGTJw-r.js";var s=e({config:()=>d,detectRuntime:()=>C,discoverModels:()=>S,originOf:()=>b,register:()=>y,verifyConnection:()=>E});const c=t(`local-llm`),l=`local-llm`,u=`${l}-unconfigured`,d={id:l,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
1
+ import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./logger-LESFN7Hj.js";import{b as n}from"./account-store-DzwZMcTg.js";import{n as r}from"./event-stream-qbAZIAKV.js";import{p as i}from"./bedrock-camp-BO4bvAKs.js";import{r as a,s as o}from"./legacy-api-aliases-sqlB2uHc.js";var s=e({config:()=>d,detectRuntime:()=>C,discoverModels:()=>S,originOf:()=>b,register:()=>y,verifyConnection:()=>E});const c=t(`local-llm`),l=`local-llm`,u=`${l}-unconfigured`,d={id:l,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
2
  `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let e=f(n(l));return e.length===0?[{id:u,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:e.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function f(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}const p=`${l}-openai`;function m(e){return{...e,api:`openai-completions`}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:`local`}:t}const g=(e,t,n={})=>e.id===u?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?a(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===u?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?o(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(e,t){let n=r(),i={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t,timestamp:Date.now()};return queueMicrotask(()=>{n.push({type:`error`,reason:`error`,error:i}),n.end()}),n}function y(){i({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return c.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{s as n,d as t};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/extension-bridge-transport-Dq1Od_T7.js","assets/logger-DDBAeTLF.js","assets/lick-ws-bridge-C3foeWDS.js","assets/tray-leader-DicSB8Dn.js","assets/rolldown-runtime-aKtaBQYM.js","assets/proxied-fetch-D5h5REZy.js","assets/preload-helper-Czpn1I53.js","assets/base64-DpPqYZJF.js","assets/src-CS5gSDhT.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/tray-runtime-config-DquE2Rx9.js","assets/messages-BD4p8GuF.js","assets/db-ysOO0kLr.js","assets/cdp-7evcrxxP.js","assets/navigation-watcher-BoJS9hdc.js","assets/handoff-link-CfgH86mb.js","assets/remote-cdp-transport-DOoXIxy3.js","assets/tray-sync-protocol-CVdiCvfU.js","assets/main-cherry-9qp2ecC4.js","assets/synthetic-cdp-transport-DLIt5SkY.js","assets/wc-shell-LFcAIFJQ.js","assets/telemetry-C8rZr13D.js","assets/icons-C5g936Qd.js","assets/dictation-priming-DGpw1lUV.js","assets/timestamp-preference-DgrTvVNx.js","assets/src-6TqoULh8.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/wc-follower-BmFSgVpW.js","assets/theme-engine-jfuTMXZM.js","assets/dip-D3QakWLH.js","assets/wc-permissions-registry-Blyunq37.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/sprinkle-renderer-qv3mGpBG.js","assets/theme-C8b_iQ_9.js","assets/sprinkle-bridge-DziYRsuS.js","assets/shared-BYVJAPbn.js","assets/mime-types-ugOWOUZ9.js","assets/wc-attach-DU0svqb7.js","assets/wc-live-FQiVeP5H.js","assets/account-store-1sWsdBXV.js","assets/compat-Spvv5tCW.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-D41M1z_D.js","assets/context-compaction-CW5AQ9bv.js","assets/secret-topology-CptRwAX3.js","assets/secrets-bridge-client-D6nwnBvr.js","assets/port-bridge-client-CoFZLSYm.js","assets/tool-ui-DfXu6quJ.js","assets/providers-B8AC4r1K.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-PMQ4Iu6f.js","assets/transform-messages-wECJwtH0.js","assets/tray-follower-status-CyJIKXH4.js","assets/session-freezer-jCi1eAnA.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/leader-session-events-m7I5BMZy.js","assets/page-follower-tray-Cm9cuA-m.js","assets/wc-sprinkles-CYSiEKaU.js","assets/oauth-bootstrap-Bf7Ewk3g.js","assets/provider-settings-BQ_ViD6o.js","assets/clipboard-DuHpK59o.js","assets/tray-join-url-BIvzbiFR.js","assets/legacy-styles-DcRu2WCJ.js","assets/connect-surface-BTk8oHjU.js","assets/wc-extension-K9Yoj8xX.js","assets/wc-detached-B3WCbbZT.js"])))=>i.map(i=>d[i]);
2
- import"./modulepreload-polyfill-Dezn_h7o.js";import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t}from"./account-store-1sWsdBXV.js";import{t as n}from"./logger-DDBAeTLF.js";import"./src-CS5gSDhT.js";import"./electron-overlay-route-CjT6k9Df.js";import{c as r,l as i,s as a}from"./proxied-fetch-D5h5REZy.js";import{n as o,t as s}from"./runtime-env-DH4NDw4t.js";import{a as c}from"./providers-B8AC4r1K.js";import{t as l}from"./bridge-launch-params-jegYRGJ6.js";import"./messages-BD4p8GuF.js";import{c as u,l as d,o as f,t as p}from"./tray-runtime-config-DquE2Rx9.js";import{t as m}from"./setup-sudo-CglheNlM.js";import{t as h}from"./telemetry-C8rZr13D.js";import"./provider-settings-BQ_ViD6o.js";var g=`slicc-nuke-control`,_=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function v(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(g),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}async function y(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}function b(e,t,n={}){let r=n.wipe??y,i=n.reload??(()=>location.reload()),a=t instanceof Error?t.message:String(t),o=document.createElement(`div`);o.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let s=document.createElement(`h1`);s.style.color=`var(--s2-negative, #e34850)`,s.textContent=`Failed to start`;let c=document.createElement(`p`);c.style.color=`var(--s2-content-tertiary, #717171)`,c.textContent=a;let l=document.createElement(`div`);l.style.cssText=`display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;margin-top:1.5rem;`;let u=document.createElement(`button`);u.type=`button`,u.textContent=`Reset local data & reload`,u.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-negative, #e34850);background:var(--s2-negative, #e34850);color:#fff;border-radius:4px;`;let d=document.createElement(`button`);for(d.type=`button`,d.textContent=`Reload`,d.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-content-tertiary, #717171);background:transparent;color:inherit;border-radius:4px;`,u.addEventListener(`click`,()=>{u.disabled=!0,d.disabled=!0,u.textContent=`Resetting…`,(async()=>{try{await r()}catch{}for(let e of _)try{localStorage.removeItem(e)}catch{}i()})()}),d.addEventListener(`click`,()=>{i()}),l.append(u,d),o.append(s,c,l);e.firstChild;)e.removeChild(e.firstChild);e.appendChild(o)}var x=`slicc:bridge-config`,S=`slicc:extension-delegate-config`;function C(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`slicc:ext-fetch`&&typeof t.extensionId==`string`&&!!t.request&&typeof t.request==`object`}var w=n(`boot/ext-fetch-delegate`);function T(){let e=globalThis.chrome?.runtime;return e&&typeof e.connect==`function`?e:null}function E(e,t,n){let r=T();if(!r){try{t.postMessage({type:`response-error`,error:`extension-delegate: chrome.runtime.connect unavailable`})}catch{}t.close();return}let i=e.extensionId||n,a;try{a=r.connect(i,{name:`fetch-proxy.fetch`})}catch(e){try{t.postMessage({type:`response-error`,error:`extension-delegate: connect failed — ${e instanceof Error?e.message:String(e)}`})}catch{}t.close();return}let o=!1,s=()=>{o=!0;try{a.disconnect()}catch{}try{t.close()}catch{}};a.onMessage.addListener(e=>{if(o)return;let n=e;try{t.postMessage(n)}catch{}(n.type===`response-end`||n.type===`response-error`)&&s()}),a.onDisconnect.addListener(()=>{if(!o){try{t.postMessage({type:`response-error`,error:`extension-delegate: fetch-proxy port disconnected`})}catch{}s()}}),a.postMessage({type:`request`,...e.request})}function D(e){typeof navigator>`u`||!navigator.serviceWorker||navigator.serviceWorker.addEventListener(`message`,t=>{if(!C(t.data))return;let n=t.ports?.[0];if(!n){w.warn(`delegated fetch envelope arrived without a response port`);return}E(t.data,n,e)})}function O(){if(o())return;let e=new Blob([`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/extension-bridge-transport-Dq1Od_T7.js","assets/logger-DDBAeTLF.js","assets/lick-ws-bridge-DbbdXQSp.js","assets/tray-leader-DicSB8Dn.js","assets/rolldown-runtime-aKtaBQYM.js","assets/proxied-fetch-D5h5REZy.js","assets/preload-helper-Czpn1I53.js","assets/base64-DpPqYZJF.js","assets/src-CS5gSDhT.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/tray-runtime-config-DquE2Rx9.js","assets/messages-BD4p8GuF.js","assets/db-ysOO0kLr.js","assets/cdp-7evcrxxP.js","assets/navigation-watcher-BoJS9hdc.js","assets/handoff-link-CfgH86mb.js","assets/remote-cdp-transport-DOoXIxy3.js","assets/tray-sync-protocol-CVdiCvfU.js","assets/main-cherry-9qp2ecC4.js","assets/synthetic-cdp-transport-DLIt5SkY.js","assets/wc-shell-CoYCAmK-.js","assets/telemetry-C8rZr13D.js","assets/icons-C5g936Qd.js","assets/dictation-priming-DGpw1lUV.js","assets/timestamp-preference-DgrTvVNx.js","assets/src-6TqoULh8.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/wc-follower-B6JesvuH.js","assets/theme-engine-jfuTMXZM.js","assets/dip-D3QakWLH.js","assets/wc-permissions-registry-Blyunq37.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/sprinkle-renderer-qv3mGpBG.js","assets/theme-C8b_iQ_9.js","assets/sprinkle-bridge-DziYRsuS.js","assets/shared-BYVJAPbn.js","assets/mime-types-ugOWOUZ9.js","assets/wc-attach-DU0svqb7.js","assets/wc-live-OHBNpb_A.js","assets/account-store-DwSzwLW8.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/secret-topology-CptRwAX3.js","assets/secrets-bridge-client-D6nwnBvr.js","assets/port-bridge-client-CoFZLSYm.js","assets/tool-ui-DfXu6quJ.js","assets/providers-Bklgdp4G.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/tray-follower-status-CyJIKXH4.js","assets/session-freezer-oYKtZTY0.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/leader-session-events-m7I5BMZy.js","assets/page-follower-tray-Cm9cuA-m.js","assets/wc-sprinkles-CFaUt2sb.js","assets/oauth-bootstrap-DUaR-il_.js","assets/provider-settings-D6FC6-Ws.js","assets/clipboard-DuHpK59o.js","assets/tray-join-url-BIvzbiFR.js","assets/legacy-styles-DcRu2WCJ.js","assets/connect-surface-3UvT0SF3.js","assets/wc-extension-grYSDyJN.js","assets/wc-detached-B3WCbbZT.js"])))=>i.map(i=>d[i]);
2
+ import"./modulepreload-polyfill-Dezn_h7o.js";import{a as e}from"./account-store-DwSzwLW8.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import"./src-CS5gSDhT.js";import"./electron-overlay-route-CjT6k9Df.js";import{c as r,l as i,s as a}from"./proxied-fetch-D5h5REZy.js";import{n as o,t as s}from"./runtime-env-DH4NDw4t.js";import{a as c}from"./providers-Bklgdp4G.js";import{t as l}from"./bridge-launch-params-jegYRGJ6.js";import"./messages-BD4p8GuF.js";import{c as u,l as d,o as f,t as p}from"./tray-runtime-config-DquE2Rx9.js";import{t as m}from"./setup-sudo-DGrMEyR3.js";import{t as h}from"./telemetry-C8rZr13D.js";import"./provider-settings-D6FC6-Ws.js";var g=`slicc-nuke-control`,_=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function v(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(g),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}async function y(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}function b(e,t,n={}){let r=n.wipe??y,i=n.reload??(()=>location.reload()),a=t instanceof Error?t.message:String(t),o=document.createElement(`div`);o.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let s=document.createElement(`h1`);s.style.color=`var(--s2-negative, #e34850)`,s.textContent=`Failed to start`;let c=document.createElement(`p`);c.style.color=`var(--s2-content-tertiary, #717171)`,c.textContent=a;let l=document.createElement(`div`);l.style.cssText=`display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;margin-top:1.5rem;`;let u=document.createElement(`button`);u.type=`button`,u.textContent=`Reset local data & reload`,u.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-negative, #e34850);background:var(--s2-negative, #e34850);color:#fff;border-radius:4px;`;let d=document.createElement(`button`);for(d.type=`button`,d.textContent=`Reload`,d.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-content-tertiary, #717171);background:transparent;color:inherit;border-radius:4px;`,u.addEventListener(`click`,()=>{u.disabled=!0,d.disabled=!0,u.textContent=`Resetting…`,(async()=>{try{await r()}catch{}for(let e of _)try{localStorage.removeItem(e)}catch{}i()})()}),d.addEventListener(`click`,()=>{i()}),l.append(u,d),o.append(s,c,l);e.firstChild;)e.removeChild(e.firstChild);e.appendChild(o)}var x=`slicc:bridge-config`,S=`slicc:extension-delegate-config`;function C(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`slicc:ext-fetch`&&typeof t.extensionId==`string`&&!!t.request&&typeof t.request==`object`}var w=n(`boot/ext-fetch-delegate`);function T(){let e=globalThis.chrome?.runtime;return e&&typeof e.connect==`function`?e:null}function E(e,t,n){let r=T();if(!r){try{t.postMessage({type:`response-error`,error:`extension-delegate: chrome.runtime.connect unavailable`})}catch{}t.close();return}let i=e.extensionId||n,a;try{a=r.connect(i,{name:`fetch-proxy.fetch`})}catch(e){try{t.postMessage({type:`response-error`,error:`extension-delegate: connect failed — ${e instanceof Error?e.message:String(e)}`})}catch{}t.close();return}let o=!1,s=()=>{o=!0;try{a.disconnect()}catch{}try{t.close()}catch{}};a.onMessage.addListener(e=>{if(o)return;let n=e;try{t.postMessage(n)}catch{}(n.type===`response-end`||n.type===`response-error`)&&s()}),a.onDisconnect.addListener(()=>{if(!o){try{t.postMessage({type:`response-error`,error:`extension-delegate: fetch-proxy port disconnected`})}catch{}s()}}),a.postMessage({type:`request`,...e.request})}function D(e){typeof navigator>`u`||!navigator.serviceWorker||navigator.serviceWorker.addEventListener(`message`,t=>{if(!C(t.data))return;let n=t.ports?.[0];if(!n){w.warn(`delegated fetch envelope arrived without a response port`);return}E(t.data,n,e)})}function O(){if(o())return;let e=new Blob([`
3
3
  let lastPong = Date.now();
4
4
  let frozen = false;
5
5
  setInterval(() => {
@@ -19,4 +19,4 @@ import"./modulepreload-polyfill-Dezn_h7o.js";import{t as e}from"./preload-helper
19
19
  }
20
20
  }
21
21
  };
22
- `],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var k=null;function A(){return k||(k=v(),k)}n(`stale-asset`);var ee=`slicc-stale-asset-reload`;function te(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(ee),r=n=>{let r=n.data;r?.type!==`stale-asset-reload`||r.instanceId!==e||t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var ne=`slicc:stale-asset-reloaded-at`,re=6e4,j=`slicc:stale-asset-replay`;function M(e=window.sessionStorage){try{e.setItem(j,`1`)}catch{}}function N(e=window.sessionStorage){try{return e.getItem(j)===`1`?(e.removeItem(j),!0):!1}catch{return!1}}function P(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:re,storageKey:ne}}function ie(e,t,n){return e===null||t-e>=n}function F(e=P()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!ie(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var I=null,L=null;function ae(e){I||(L={...P(),...e},I=e=>{F(L)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,I))}var R=null;function z(e){return R||(R=te(e,e=>{e&&M(),F(L??void 0)}),R)}var B=`slicc-cdp-superseded-banner`;function V(e){if(e.getElementById(B))return;let t=e.createElement(`div`);t.id=B,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}function H(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:u(e,n===void 0?typeof window<`u`?window.localStorage:null:n)?`follower`:W(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function U(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function W(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function G(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function K(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var q=[100,200,400,800,1600];async function J(e,t,n,r=q,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function oe(t,n,r){let{ExtensionBridgeTransport:i}=await e(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-Dq1Od_T7.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([0,1])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await e(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-C3foeWDS.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([2,1,3,4,5,6,7,8,9,10,11,12,13])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new t(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await J(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function se(t){let{runtimeMode:n,envBaseUrl:o,window:c,log:u}=t,h=n===`electron-overlay`;u.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:g}=await e(async()=>{let{BrowserAPI:e}=await import(`./cdp-7evcrxxP.js`);return{BrowserAPI:e}},__vite__mapDeps([14,1,15,16,8,17,18,4]));await m({log:u});let _,v,y,b=null,x=null,S=null,C=null,w,T=n===`cherry`?null:K(c.location.search),E=!!T&&s(),D=n===`cherry`||E?null:l(c.location.search);D?.apiBaseUrl&&(b=D.apiBaseUrl,i(D.apiBaseUrl),x=D.token,a(D.token)),D?.lickWsUrl&&(S=D.lickWsUrl);let O=await f(),k=U(n,O!==null)?p:null;if(await d({locationHref:c.location.href,storage:c.localStorage,envBaseUrl:o,defaultWorkerBaseUrl:k,runtimeConfigFetcher:async()=>O}),n===`cherry`){let{setupCherryFollower:t}=await e(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-9qp2ecC4.js`);return{setupCherryFollower:e}},__vite__mapDeps([19,1,14,15,16,8,17,18,4,20])),n=await t();_=n.browser,v=n.joinUrl,y=n.transport}else if(T&&s()){u.info(`Routing CDP through the extension bridge (leader tab)`);let e=await oe(g,T.extensionId,u);_=e.browser,w=e.attachLickForwardingClient,C=T.extensionId,r(T.extensionId)}else{_=new g,D&&u.info(`Routing CDP through local standalone bridge`,{url:D.url,role:D.role??`(unset)`});let e=D?{url:D.url,protocols:D.subprotocol}:void 0;D?.role===`follower`?(u.info(`Skipping CDP connect for follower overlay tab`),_.primeConnectOptions(e)):(await J(_,e,u),_.setCdpSupersededHandler(()=>V(c.document)))}let A=_.getTransport();return globalThis.__slicc_browser=_,{browser:_,realCdpTransport:A,cherryJoinUrl:v,cherryTransport:y,instanceId:G(),isElectronOverlay:h,localApiBaseUrl:b,bridgeToken:x,localLickWsUrl:S,extensionDelegateId:C,attachLickForwardingClient:w}}var Y=n(`boot/sw-registration`);async function ce(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await le())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),Y.info(`Preview SW registered`),!o())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),Y.info(`LLM-proxy SW registered`)}catch(e){Y.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),Y.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(X(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{X(e)})),t&&(Z(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{Z(t)}))}catch(e){Y.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function X(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:x,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function Z(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:S,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function le(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),Y.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){Y.error(`connect-mode SW cleanup failed`,e)}return!1}var Q=n(`main`);function $(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}async function ue(){ae();let n=document.getElementById(`app`);if(!n)throw Error(`#app element not found`);let r=o(),i=H(window.location.href,r);if($(window.location.href)){let{mountWcUiPreview:t}=await e(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-LFcAIFJQ.js`).then(e=>e.a);return{mountWcUiPreview:e}},__vite__mapDeps([21,4,6,8,22,9,23,24,25,26,27,28,29,30]));t(n);return}O(),A(),i!==`connect`&&h().catch(()=>{});let a=l(window.location.search),u=i===`cherry`?null:K(window.location.search),d=!!u&&s();if(await ce(a?{apiBaseUrl:a.apiBaseUrl,token:a.token}:null,d&&u?{extensionId:u.extensionId}:null)===`reload-pending`)return;if(!r&&(i===`follower`||i===`cherry`)){let{mountWcUiFollower:t}=await e(async()=>{let{mountWcUiFollower:e}=await import(`./wc-follower-BmFSgVpW.js`);return{mountWcUiFollower:e}},__vite__mapDeps([31,6,1,18,4,8,11,5,7,9,10,12,32,33,34,35,36,37,38,39,40,41,42,43,44,21,22,23,24,25,26,27,28,29,30,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,3,13,63,64,65,66,67,17,68]));return t(n,Q,i)}await c(),t();let{bootstrapOAuthReplicas:f}=await e(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-Bf7Ewk3g.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([69,6,46,4,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,70,11,12,62,71,22,72]));if(await Promise.race([f().catch(e=>{Q.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),i===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:t}=await e(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadLegacyStyles:e}},__vite__mapDeps([73,6]));await t();let{mountConnectSurface:r}=await e(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-BTk8oHjU.js`);return{mountConnectSurface:e}},__vite__mapDeps([74,46,4,6,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,70,11,12,62,71,22,72]));await r(n);return}if(r){let{mountWcUiExtension:t}=await e(async()=>{let{mountWcUiExtension:e}=await import(`./wc-extension-K9Yoj8xX.js`);return{mountWcUiExtension:e}},__vite__mapDeps([75,6,76,12,45,46,4,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,11,62,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,63,64,65,23,21,25,26,27,28,29,30,66]));return t(n,Q,i===`extension-detached`)}d&&u&&D(u.extensionId);let{mountWcUiLive:p}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-FQiVeP5H.js`);return{mountWcUiLive:e}},__vite__mapDeps([45,6,46,4,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,11,12,62,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,63,64,65,23,21,25,26,27,28,29,30,66]));return p(n,Q,i)}ue().catch(e=>{Q.error(`Fatal error`,e);let t=document.getElementById(`app`);t&&b(t,e)});export{z as i,N as n,F as r,se as t};
22
+ `],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var k=null;function A(){return k||(k=v(),k)}n(`stale-asset`);var ee=`slicc-stale-asset-reload`;function te(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(ee),r=n=>{let r=n.data;r?.type!==`stale-asset-reload`||r.instanceId!==e||t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var ne=`slicc:stale-asset-reloaded-at`,re=6e4,j=`slicc:stale-asset-replay`;function M(e=window.sessionStorage){try{e.setItem(j,`1`)}catch{}}function N(e=window.sessionStorage){try{return e.getItem(j)===`1`?(e.removeItem(j),!0):!1}catch{return!1}}function P(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:re,storageKey:ne}}function ie(e,t,n){return e===null||t-e>=n}function F(e=P()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!ie(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var I=null,L=null;function ae(e){I||(L={...P(),...e},I=e=>{F(L)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,I))}var R=null;function z(e){return R||(R=te(e,e=>{e&&M(),F(L??void 0)}),R)}var B=`slicc-cdp-superseded-banner`;function V(e){if(e.getElementById(B))return;let t=e.createElement(`div`);t.id=B,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}function H(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:u(e,n===void 0?typeof window<`u`?window.localStorage:null:n)?`follower`:W(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function U(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function W(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function G(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function K(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var q=[100,200,400,800,1600];async function J(e,t,n,r=q,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function oe(e,n,r){let{ExtensionBridgeTransport:i}=await t(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-Dq1Od_T7.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([0,1])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await t(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-DbbdXQSp.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([2,1,3,4,5,6,7,8,9,10,11,12,13])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new e(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await J(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function se(e){let{runtimeMode:n,envBaseUrl:o,window:c,log:u}=e,h=n===`electron-overlay`;u.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:g}=await t(async()=>{let{BrowserAPI:e}=await import(`./cdp-7evcrxxP.js`);return{BrowserAPI:e}},__vite__mapDeps([14,1,15,16,8,17,18,4]));await m({log:u});let _,v,y,b=null,x=null,S=null,C=null,w,T=n===`cherry`?null:K(c.location.search),E=!!T&&s(),D=n===`cherry`||E?null:l(c.location.search);D?.apiBaseUrl&&(b=D.apiBaseUrl,i(D.apiBaseUrl),x=D.token,a(D.token)),D?.lickWsUrl&&(S=D.lickWsUrl);let O=await f(),k=U(n,O!==null)?p:null;if(await d({locationHref:c.location.href,storage:c.localStorage,envBaseUrl:o,defaultWorkerBaseUrl:k,runtimeConfigFetcher:async()=>O}),n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-9qp2ecC4.js`);return{setupCherryFollower:e}},__vite__mapDeps([19,1,14,15,16,8,17,18,4,20])),n=await e();_=n.browser,v=n.joinUrl,y=n.transport}else if(T&&s()){u.info(`Routing CDP through the extension bridge (leader tab)`);let e=await oe(g,T.extensionId,u);_=e.browser,w=e.attachLickForwardingClient,C=T.extensionId,r(T.extensionId)}else{_=new g,D&&u.info(`Routing CDP through local standalone bridge`,{url:D.url,role:D.role??`(unset)`});let e=D?{url:D.url,protocols:D.subprotocol}:void 0;D?.role===`follower`?(u.info(`Skipping CDP connect for follower overlay tab`),_.primeConnectOptions(e)):(await J(_,e,u),_.setCdpSupersededHandler(()=>V(c.document)))}let A=_.getTransport();return globalThis.__slicc_browser=_,{browser:_,realCdpTransport:A,cherryJoinUrl:v,cherryTransport:y,instanceId:G(),isElectronOverlay:h,localApiBaseUrl:b,bridgeToken:x,localLickWsUrl:S,extensionDelegateId:C,attachLickForwardingClient:w}}var Y=n(`boot/sw-registration`);async function ce(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await le())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),Y.info(`Preview SW registered`),!o())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),Y.info(`LLM-proxy SW registered`)}catch(e){Y.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),Y.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(X(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{X(e)})),t&&(Z(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{Z(t)}))}catch(e){Y.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function X(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:x,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function Z(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:S,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function le(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),Y.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){Y.error(`connect-mode SW cleanup failed`,e)}return!1}var Q=n(`main`);function $(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}async function ue(){ae();let n=document.getElementById(`app`);if(!n)throw Error(`#app element not found`);let r=o(),i=H(window.location.href,r);if($(window.location.href)){let{mountWcUiPreview:e}=await t(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-CoYCAmK-.js`).then(e=>e.a);return{mountWcUiPreview:e}},__vite__mapDeps([21,4,6,8,22,9,23,24,25,26,27,28,29,30]));e(n);return}O(),A(),i!==`connect`&&h().catch(()=>{});let a=l(window.location.search),u=i===`cherry`?null:K(window.location.search),d=!!u&&s();if(await ce(a?{apiBaseUrl:a.apiBaseUrl,token:a.token}:null,d&&u?{extensionId:u.extensionId}:null)===`reload-pending`)return;if(!r&&(i===`follower`||i===`cherry`)){let{mountWcUiFollower:e}=await t(async()=>{let{mountWcUiFollower:e}=await import(`./wc-follower-B6JesvuH.js`);return{mountWcUiFollower:e}},__vite__mapDeps([31,6,1,18,4,8,11,5,7,9,10,12,32,33,34,35,36,37,38,39,40,41,42,43,44,21,22,23,24,25,26,27,28,29,30,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,3,13,63,64,65,66,67,17,68]));return e(n,Q,i)}await c(),e();let{bootstrapOAuthReplicas:f}=await t(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-DUaR-il_.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([69,46,4,6,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,70,11,12,62,71,22,72]));if(await Promise.race([f().catch(e=>{Q.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),i===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:e}=await t(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadLegacyStyles:e}},__vite__mapDeps([73,6]));await e();let{mountConnectSurface:r}=await t(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-3UvT0SF3.js`);return{mountConnectSurface:e}},__vite__mapDeps([74,46,4,6,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,70,11,12,62,71,22,72]));await r(n);return}if(r){let{mountWcUiExtension:e}=await t(async()=>{let{mountWcUiExtension:e}=await import(`./wc-extension-grYSDyJN.js`);return{mountWcUiExtension:e}},__vite__mapDeps([75,6,76,12,45,46,4,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,11,62,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,63,64,65,23,21,25,26,27,28,29,30,66]));return e(n,Q,i===`extension-detached`)}d&&u&&D(u.extensionId);let{mountWcUiLive:p}=await t(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-OHBNpb_A.js`);return{mountWcUiLive:e}},__vite__mapDeps([45,46,4,6,47,48,49,50,51,52,53,1,8,5,7,9,10,54,55,56,57,58,59,60,61,11,12,62,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,63,64,65,23,21,25,26,27,28,29,30,66]));return p(n,Q,i)}ue().catch(e=>{Q.error(`Fatal error`,e);let t=document.getElementById(`app`);t&&b(t,e)});export{z as i,N as n,F as r,se as t};