sliccy 3.37.0 → 3.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +1 -1
  2. package/dist/ui/assets/adobe-6ekJOAbP.js +2 -0
  3. package/dist/ui/assets/{adobe-D0eU7otw.js → adobe-Dbtiqx38.js} +1 -1
  4. package/dist/ui/assets/agent-bridge-BpvRrGtE.js +1 -0
  5. package/dist/ui/assets/{agent-message-to-chat-CcIv-92Q.js → agent-message-to-chat-CirhIhp-.js} +1 -1
  6. package/dist/ui/assets/anthropic-Bc4wRfIs.js +39 -0
  7. package/dist/ui/assets/anthropic-DeFXFJgQ.js +39 -0
  8. package/dist/ui/assets/{apps-CazRdlWW.js → apps-DO2uOt-9.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-_invOtXk.js → azure-openai-D7WR5xIn.js} +1 -1
  10. package/dist/ui/assets/azure-openai-DTYBcMPG.js +1 -0
  11. package/dist/ui/assets/azure-openai-responses-CaON53BQ.js +1 -0
  12. package/dist/ui/assets/azure-openai-responses-DNVmx4qz.js +1 -0
  13. package/dist/ui/assets/{biome_wasm-D8VQSIIi.js → biome_wasm-CVknj_xD.js} +1 -1
  14. package/dist/ui/assets/{bsh-watchdog-s4NmjDWR.js → bsh-watchdog-X5_2cHRb.js} +1 -1
  15. package/dist/ui/assets/{cdp-BgM18pVP.js → cdp-QAh2Cy7Y.js} +3 -3
  16. package/dist/ui/assets/{cdp-ws-page-bridge-B5tXWGhg.js → cdp-ws-page-bridge-DchL-saa.js} +1 -1
  17. package/dist/ui/assets/{common-D2i3_-oc.js → common-D-zb7tFR.js} +1 -1
  18. package/dist/ui/assets/{connect-surface-DHkIIf2i.js → connect-surface-B08-lROA.js} +1 -1
  19. package/dist/ui/assets/cost-command-KII6x53b.js +1 -0
  20. package/dist/ui/assets/{dist-CVBUjlj6.js → dist-BUp5ZKTe.js} +1 -1
  21. package/dist/ui/assets/{dist-BNts4F1N.js → dist-C3aqBmpl.js} +4 -4
  22. package/dist/ui/assets/{dist-BA9OCLxC.js → dist-DPujqrCp.js} +1 -1
  23. package/dist/ui/assets/{dist-C5jJDZZZ.js → dist-X1KlMLP2.js} +4 -4
  24. package/dist/ui/assets/{es-BRyNbfCL.js → es-9XUoJ8uS.js} +4 -4
  25. package/dist/ui/assets/esp32-BGhaU4F4.js +1 -0
  26. package/dist/ui/assets/esp32-CNxr-r6b.js +1 -0
  27. package/dist/ui/assets/esp32c2-CFWOihPO.js +1 -0
  28. package/dist/ui/assets/esp32c2-Cig1fvmU.js +1 -0
  29. package/dist/ui/assets/esp32c3-BCQ4OtJ1.js +1 -0
  30. package/dist/ui/assets/esp32c3-BKiIoFJ0.js +1 -0
  31. package/dist/ui/assets/esp32c5-Bd1q0WgP.js +1 -0
  32. package/dist/ui/assets/esp32c5-BfwIJIeC.js +1 -0
  33. package/dist/ui/assets/esp32c6-CR8KvzQK.js +1 -0
  34. package/dist/ui/assets/esp32c6-DIlTUw4d.js +1 -0
  35. package/dist/ui/assets/esp32c61-BNeMp5wP.js +1 -0
  36. package/dist/ui/assets/esp32c61-ByuVKC7b.js +1 -0
  37. package/dist/ui/assets/esp32h2-D2KQ2YCv.js +1 -0
  38. package/dist/ui/assets/esp32h2-DIXUsh8G.js +1 -0
  39. package/dist/ui/assets/esp32p4-DPqFNZ5I.js +1 -0
  40. package/dist/ui/assets/esp32p4-DQAIVsCH.js +1 -0
  41. package/dist/ui/assets/esp32s2-CL7U2rWs.js +1 -0
  42. package/dist/ui/assets/esp32s2-IFH9AqZl.js +1 -0
  43. package/dist/ui/assets/esp32s3-CTm8ijuz.js +1 -0
  44. package/dist/ui/assets/esp32s3-Dx7X8tO1.js +1 -0
  45. package/dist/ui/assets/esp8266-BR4D5ppf.js +1 -0
  46. package/dist/ui/assets/esp8266-DlqfHb7M.js +1 -0
  47. package/dist/ui/assets/esptool-operations-Dh_CbFQX.js +13 -0
  48. package/dist/ui/assets/esptool-operations-DpqsEewy.js +12 -0
  49. package/dist/ui/assets/{follower-sprinkle-bridge-Dm4wCz3a.js → follower-sprinkle-bridge-9Y9xLvYP.js} +1 -1
  50. package/dist/ui/assets/{github-d7YH3T2H.js → github-B8UeFkm8.js} +1 -1
  51. package/dist/ui/assets/github-CQx2L4YC.js +2 -0
  52. package/dist/ui/assets/{github-copilot-CNCUEMSl.js → github-copilot-DsrDQ00N.js} +1 -1
  53. package/dist/ui/assets/github-copilot-_sjl5LuA.js +2 -0
  54. package/dist/ui/assets/google-C55LkvGP.js +1 -0
  55. package/dist/ui/assets/google-DfvC3eni.js +1 -0
  56. package/dist/ui/assets/{google-shared-DZAlfPPe.js → google-shared-BtXV-l3b.js} +3 -3
  57. package/dist/ui/assets/{google-shared-CYn7X0jS.js → google-shared-D7WzcGUZ.js} +3 -3
  58. package/dist/ui/assets/{google-vertex-5PWnpQrl.js → google-vertex-BuAG1U4s.js} +1 -1
  59. package/dist/ui/assets/google-vertex-hOuEM6_G.js +1 -0
  60. package/dist/ui/assets/hosted-config-apply-BwFI9A7v.js +1 -0
  61. package/dist/ui/assets/{intercepted-oauth-CdfSST0X.js → intercepted-oauth-COerdsHV.js} +1 -1
  62. package/dist/ui/assets/js-realm-worker-DFuUhqWh.js +5 -0
  63. package/dist/ui/assets/{kernel-worker-Bogg0FsV.js → kernel-worker-BN9jVURi.js} +1194 -1065
  64. package/dist/ui/assets/lick-ws-bridge-KoiVTblv.js +1 -0
  65. package/dist/ui/assets/{local-llm-BBDP3qXX.js → local-llm-vFYRcLOw.js} +2 -2
  66. package/dist/ui/assets/{magick-wasm-DP5JW3P7.js → magick-wasm-CidNK8__.js} +1 -1
  67. package/dist/ui/assets/main-D7z3x3_Y.js +1825 -0
  68. package/dist/ui/assets/main-cherry-ofRlsW4-.js +1 -0
  69. package/dist/ui/assets/{migration-run-kj6K_pt4.js → migration-run-7dEwzG6w.js} +1 -1
  70. package/dist/ui/assets/{mistral-Bq4YKpQf.js → mistral-4heSdDTJ.js} +10 -10
  71. package/dist/ui/assets/{mistral-s6fpd_QE.js → mistral-CAgia6M0.js} +10 -10
  72. package/dist/ui/assets/{nodejs--9YdGywN.js → nodejs-DfRdaKQ1.js} +1 -1
  73. package/dist/ui/assets/{nuke-command-H4BPXVny.js → nuke-command-Cc30YO9Y.js} +1 -1
  74. package/dist/ui/assets/{oauth-CYnFQHGN.js → oauth-TCqaadpJ.js} +1 -1
  75. package/dist/ui/assets/oauth-bootstrap-C1BSYDbV.js +2 -0
  76. package/dist/ui/assets/oauth-service-COeryBep.js +1 -0
  77. package/dist/ui/assets/{oauth-service-HJoLhTok.js → oauth-service-DW1e-iJS.js} +1 -1
  78. package/dist/ui/assets/offscreen-client-qrJEELC-.js +1 -0
  79. package/dist/ui/assets/onboarding-orchestrator-Cfempts7.js +1 -0
  80. package/dist/ui/assets/openai-codex-CXt4lcoL.js +1 -0
  81. package/dist/ui/assets/openai-codex-responses-D40BqWeW.js +7 -0
  82. package/dist/ui/assets/openai-codex-responses-Vw6eXh1d.js +7 -0
  83. package/dist/ui/assets/{openai-codex-DQRUGzWy.js → openai-codex-x1sc3IM7.js} +1 -1
  84. package/dist/ui/assets/openai-completions-BMW7FpCv.js +5 -0
  85. package/dist/ui/assets/openai-responses-B2Bk2mZO.js +1 -0
  86. package/dist/ui/assets/openai-responses-DkI_T0MX.js +1 -0
  87. package/dist/ui/assets/{openai-responses-shared-DiFBBpqL.js → openai-responses-shared-CE7ueMKJ.js} +3 -3
  88. package/dist/ui/assets/{openai-responses-shared-DzF78DKp.js → openai-responses-shared-D6SdNmJF.js} +1 -1
  89. package/dist/ui/assets/openrouter-Cy2dLX1Z.js +1 -0
  90. package/dist/ui/assets/openrouter-DdIDpcn5.js +1 -0
  91. package/dist/ui/assets/panel-rpc-handlers-WyKwM5GK.js +2 -0
  92. package/dist/ui/assets/provider-BD3ViaTO.js +2 -0
  93. package/dist/ui/assets/{provider-D4K2_mH-.js → provider-DKuH0A_V.js} +1 -1
  94. package/dist/ui/assets/provider-store-access-CdWFhcVY.js +1 -0
  95. package/dist/ui/assets/provider-store-access-aoSAXhF0.js +1 -0
  96. package/dist/ui/assets/proxied-fetch-CNqjEnhB.js +1 -0
  97. package/dist/ui/assets/{py-realm-worker-DhXHapes.js → py-realm-worker-DvbMqvZQ.js} +1 -1
  98. package/dist/ui/assets/{pyodide-DuRrrZJD.js → pyodide-Cmbqoy74.js} +2 -2
  99. package/dist/ui/assets/remote-terminal-view-qkCXZltb.js +6 -0
  100. package/dist/ui/assets/remote-vfs-client-BMD-xQVk.js +1 -0
  101. package/dist/ui/assets/rom-eeWiO07Z.js +1 -0
  102. package/dist/ui/assets/secret-env-BiOTElj9.js +1 -0
  103. package/dist/ui/assets/{slicc-editor-CwFr1Fs1.js → slicc-editor-B3sk1bqn.js} +1 -1
  104. package/dist/ui/assets/{spawn-BycKAdgK.js → spawn-BqzgEouB.js} +1 -1
  105. package/dist/ui/assets/{sql-wasm-DCJNFY_I.js → sql-wasm-b-bLcT97.js} +2 -2
  106. package/dist/ui/assets/{src-DiQH2ndF.js → src-CtWqiCTj.js} +2 -2
  107. package/dist/ui/assets/{store-h-tP5jnf.js → store-BwSbpSHY.js} +1 -1
  108. package/dist/ui/assets/stub_flasher_32-CjtdTvhc.js +1 -0
  109. package/dist/ui/assets/stub_flasher_32-Dh8hmUXW.js +1 -0
  110. package/dist/ui/assets/stub_flasher_32c2-CrZruPQ-.js +1 -0
  111. package/dist/ui/assets/stub_flasher_32c2-DNonOeew.js +1 -0
  112. package/dist/ui/assets/stub_flasher_32c3-B5aGaWtF.js +1 -0
  113. package/dist/ui/assets/stub_flasher_32c3-DATkZbTY.js +1 -0
  114. package/dist/ui/assets/stub_flasher_32c5-B9wT3AwM.js +1 -0
  115. package/dist/ui/assets/stub_flasher_32c5-BDhwtIo7.js +1 -0
  116. package/dist/ui/assets/stub_flasher_32c6-DeY1L1JR.js +1 -0
  117. package/dist/ui/assets/stub_flasher_32c6-SMkhzZkf.js +1 -0
  118. package/dist/ui/assets/stub_flasher_32c61-B9ViWE_2.js +1 -0
  119. package/dist/ui/assets/stub_flasher_32c61-r9i57APe.js +1 -0
  120. package/dist/ui/assets/stub_flasher_32h2-B3NG8cq-.js +1 -0
  121. package/dist/ui/assets/stub_flasher_32h2-D7VeKsp3.js +1 -0
  122. package/dist/ui/assets/stub_flasher_32p4-Bb2Wtu69.js +1 -0
  123. package/dist/ui/assets/stub_flasher_32p4-DfQO64Ur.js +1 -0
  124. package/dist/ui/assets/stub_flasher_32p4rc1-3WH0f-dF.js +1 -0
  125. package/dist/ui/assets/stub_flasher_32p4rc1-p7EPUAvY.js +1 -0
  126. package/dist/ui/assets/stub_flasher_32s2-CBM9sAmm.js +1 -0
  127. package/dist/ui/assets/stub_flasher_32s2-DJJBwldO.js +1 -0
  128. package/dist/ui/assets/stub_flasher_32s3-D2W9M8KW.js +1 -0
  129. package/dist/ui/assets/stub_flasher_32s3-tuCbt8bU.js +1 -0
  130. package/dist/ui/assets/stub_flasher_8266-C20Md_4f.js +1 -0
  131. package/dist/ui/assets/stub_flasher_8266-DjoUeugS.js +1 -0
  132. package/dist/ui/assets/tray-leave-runtime-Di5-PGTL.js +1 -0
  133. package/dist/ui/assets/{typescript-1JVPsu0C.js → typescript-DAa2uLJ3.js} +9 -9
  134. package/dist/ui/assets/upgrade-detection-Ce294jrB.js +1 -0
  135. package/dist/ui/assets/{web-BqSerjuj.js → web-C7m_nZRh.js} +1 -1
  136. package/dist/ui/assets/writable-vfs-client-CSgAEdDN.js +1 -0
  137. package/dist/ui/assets/{ws-subscribers-keoikw2x.js → ws-subscribers-JU9OidFF.js} +1 -1
  138. package/dist/ui/assets/{xai-grok--KXEnye4.js → xai-grok-B2I1NBMs.js} +1 -1
  139. package/dist/ui/assets/xai-grok-oPcvt0ZG.js +1 -0
  140. package/dist/ui/index.html +1 -1
  141. package/dist/ui/packages/webapp/index.html +1 -1
  142. package/package.json +1 -1
  143. package/dist/ui/assets/adobe-DzguSJcB.js +0 -2
  144. package/dist/ui/assets/agent-bridge-BV8pPxQ4.js +0 -1
  145. package/dist/ui/assets/anthropic-BOCAZdKT.js +0 -39
  146. package/dist/ui/assets/anthropic-C-nJktDH.js +0 -39
  147. package/dist/ui/assets/azure-openai-DtL1o6ZD.js +0 -1
  148. package/dist/ui/assets/azure-openai-responses-CX0jRX76.js +0 -1
  149. package/dist/ui/assets/azure-openai-responses-GhzNMInJ.js +0 -1
  150. package/dist/ui/assets/cost-command-DFzH4zjf.js +0 -1
  151. package/dist/ui/assets/github-copilot-CI7Dyzof.js +0 -2
  152. package/dist/ui/assets/github-mHAjC7ey.js +0 -2
  153. package/dist/ui/assets/google-DKNB41Ym.js +0 -1
  154. package/dist/ui/assets/google-HRDDLoHP.js +0 -1
  155. package/dist/ui/assets/google-vertex-DlucBiuL.js +0 -1
  156. package/dist/ui/assets/hosted-config-apply-Drta_smD.js +0 -1
  157. package/dist/ui/assets/js-realm-worker-z70bd_yW.js +0 -5
  158. package/dist/ui/assets/lick-ws-bridge-DnC03d37.js +0 -1
  159. package/dist/ui/assets/main-D7RTZNPJ.js +0 -1755
  160. package/dist/ui/assets/main-cherry-CZuEEqNJ.js +0 -1
  161. package/dist/ui/assets/oauth-bootstrap-Cm6Ey9BE.js +0 -2
  162. package/dist/ui/assets/oauth-service-DeRu3_2b.js +0 -1
  163. package/dist/ui/assets/offscreen-client-BWBoGGE9.js +0 -1
  164. package/dist/ui/assets/onboarding-orchestrator-BgoWOzZj.js +0 -1
  165. package/dist/ui/assets/openai-codex-LN-usMsc.js +0 -1
  166. package/dist/ui/assets/openai-codex-responses-Cfc781NG.js +0 -7
  167. package/dist/ui/assets/openai-codex-responses-CxdnjTbB.js +0 -7
  168. package/dist/ui/assets/openai-completions-C3xol3b4.js +0 -5
  169. package/dist/ui/assets/openai-responses--a_zzMOQ.js +0 -1
  170. package/dist/ui/assets/openai-responses-CztB_6j4.js +0 -1
  171. package/dist/ui/assets/openrouter-BMdnzqF3.js +0 -1
  172. package/dist/ui/assets/openrouter-aEehoTsE.js +0 -1
  173. package/dist/ui/assets/panel-rpc-handlers-DdqJW3No.js +0 -1
  174. package/dist/ui/assets/provider-Bgu2Uv_T.js +0 -2
  175. package/dist/ui/assets/provider-store-access-BFHCJwAC.js +0 -1
  176. package/dist/ui/assets/provider-store-access-DC3w8ZIP.js +0 -1
  177. package/dist/ui/assets/proxied-fetch-C52RkD9o.js +0 -1
  178. package/dist/ui/assets/remote-terminal-view-Cudp1ErF.js +0 -6
  179. package/dist/ui/assets/remote-vfs-client-Cu-MFwK4.js +0 -1
  180. package/dist/ui/assets/secret-env-DEspXTwg.js +0 -1
  181. package/dist/ui/assets/tray-leave-runtime-CjxaeMI3.js +0 -1
  182. package/dist/ui/assets/upgrade-detection-C2ZLSwM0.js +0 -1
  183. package/dist/ui/assets/writable-vfs-client-DzaIeN3A.js +0 -1
  184. package/dist/ui/assets/xai-grok-u9YAsnWn.js +0 -1
@@ -0,0 +1 @@
1
+ import{St as e}from"./main-D7z3x3_Y.js";import{BrowserAPI as t}from"./cdp-QAh2Cy7Y.js";var n=new Set([`handshake.hello`,`handshake.welcome`,`cdp.request`,`cdp.response`,`cdp.event`,`permission.request`,`permission.response`,`host.event`,`slicc.event`]);function r(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.cherry===1&&typeof t.channelId==`string`&&typeof t.kind==`string`&&n.has(t.kind)}function i(e,t){return!(!t.allowOrigins.includes(e.origin)||t.expectedSource!==null&&e.source!==t.expectedSource||!r(e.data)||t.channelId!==null&&e.data.channelId!==t.channelId)}var a=e(`cherry-transport`),o=`cherry-session`,s=`cherry-target`,c=`cherry-frame`,l=3e4,u=class{opts;channelId=null;nextId=1;_state=`disconnected`;pending=new Map;listeners=new Map;connectResolve=null;connectTimer=null;_joinUrl=null;boundHandler=e=>this.handleMessage(e);onHostEvent=null;constructor(e){this.opts=e}get state(){return this._state}get joinUrl(){return this._joinUrl}async connect(e){if(this._state!==`disconnected`)throw Error(`Cannot connect: state is ${this._state}`);this._state=`connecting`,this.channelId=`cherry-${crypto.randomUUID()}`,typeof window<`u`&&window.addEventListener(`message`,this.boundHandler);let t=e?.timeout??l;return new Promise((e,n)=>{this.connectResolve=e,this.connectTimer=setTimeout(()=>{this.connectTimer=null,typeof window<`u`&&window.removeEventListener(`message`,this.boundHandler),this._state=`disconnected`,this.channelId=null,this.connectResolve=null,n(Error(`Cherry handshake timed out after ${t}ms`))},t),this.post({cherry:1,channelId:this.channelId,kind:`handshake.hello`,capabilities:this.opts.capabilities??{navigate:!0,screenshot:!0,openUrl:!0}})})}disconnect(){this.connectTimer!==null&&(clearTimeout(this.connectTimer),this.connectTimer=null),typeof window<`u`&&window.removeEventListener(`message`,this.boundHandler);for(let[,e]of this.pending)e.reject(Error(`Cherry transport disconnected`));this.pending.clear(),this._state=`disconnected`,this.channelId=null}async send(e,t,n,r=3e4){if(this._state!==`connected`)throw Error(`Cherry transport is not connected`);let i=this.handleSynthetic(e,t);if(i)return i;let a=this.nextId++,o=await new Promise((n,i)=>{let o=setTimeout(()=>{this.pending.delete(a),i(Error(`Cherry CDP timed out after ${r}ms: ${e}`))},r);this.pending.set(a,{resolve:e=>{clearTimeout(o),n(e)},reject:e=>{clearTimeout(o),i(e)}}),this.post({cherry:1,channelId:this.channelId,kind:`cdp.request`,id:a,method:e,params:t})});return e===`Page.navigate`&&this.synthesizeNavigationLifecycle(o,t?.url),o}on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n)),n.add(t)}off(e,t){let n=this.listeners.get(e);n&&(n.delete(t),n.size===0&&this.listeners.delete(e))}once(e,t=3e4){return new Promise((n,r)=>{let i=setTimeout(()=>{this.off(e,a),r(Error(`Timed out waiting for event: ${e}`))},t),a=t=>{clearTimeout(i),this.off(e,a),n(t)};this.on(e,a)})}__test_receive(e){this.handleMessage(e)}emitSliccEventToHost(e,t){if(!this.channelId){a.warn(`Dropping slicc.event before handshake (no channelId yet)`,{name:e});return}this.post({cherry:1,channelId:this.channelId,kind:`slicc.event`,name:e,detail:t})}post(e){this.opts.counterpart.postMessage(e,this.opts.targetOrigin)}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)try{e(t)}catch{}}handleSynthetic(e,t){switch(e){case`Target.getTargets`:return Promise.resolve({targetInfos:[{targetId:s,type:`page`,title:`Cherry Host Page`,url:typeof location<`u`?location.href:`about:blank`,attached:!0}]});case`Target.attachToTarget`:return Promise.resolve({sessionId:o});case`Target.detachFromTarget`:case`Target.closeTarget`:return Promise.resolve({success:!0});case`Page.enable`:case`Runtime.enable`:case`DOM.enable`:case`Page.bringToFront`:return Promise.resolve({});case`Page.getFrameTree`:return Promise.resolve({frameTree:{frame:{id:c,loaderId:`cherry-loader`,url:typeof location<`u`?location.href:`about:blank`,securityOrigin:this.opts.targetOrigin,mimeType:`text/html`},childFrames:[]}});case`Runtime.createIsolatedWorld`:return Promise.resolve({executionContextId:1});default:return null}}synthesizeNavigationLifecycle(e,t){let n=e.frameId??c,r=t??(typeof location<`u`?location.href:`about:blank`);this.emit(`Page.frameNavigated`,{frame:{id:n,loaderId:`cherry-loader`,url:r,securityOrigin:this.opts.targetOrigin,mimeType:`text/html`},sessionId:o}),this.emit(`Page.loadEventFired`,{timestamp:Date.now()/1e3,sessionId:o})}handleMessage(e){if(!i(e,{allowOrigins:this.opts.allowOrigins,expectedSource:this.opts.counterpart,channelId:this.channelId})){r(e.data)&&a.warn(`Rejected a cherry envelope (origin/source/channel mismatch)`,{origin:e.origin,allowOrigins:this.opts.allowOrigins});return}let t=e.data;switch(t.kind){case`handshake.welcome`:this.connectTimer!==null&&(clearTimeout(this.connectTimer),this.connectTimer=null),this._state=`connected`,this._joinUrl=t.joinUrl??null,a.info(`Cherry handshake complete`,{channelId:this.channelId}),this.connectResolve?.(),this.connectResolve=null;return;case`cdp.response`:{let e=this.pending.get(t.id);if(!e)return;this.pending.delete(t.id),t.error?e.reject(Error(`Cherry CDP error: ${t.error.message} (${t.error.code})`)):e.resolve(t.result??{});return}case`cdp.event`:this.emit(t.method,{...t.params??{},sessionId:t.sessionId??o});return;case`host.event`:this.onHostEvent?.(t.name,t.detail);return;default:return}}},d=e(`cherry-boot`);async function f(){let e=[document.referrer?new URL(document.referrer).origin:location.origin],n=e[0],r=new u({counterpart:window.parent,allowOrigins:e,targetOrigin:n});await r.connect(),d.info(`Cherry transport connected`);let i=r.joinUrl;if(!i)throw Error(`cherry boot: no joinUrl from handshake`);return{transport:r,browser:new t(r),joinUrl:i}}export{f as setupCherryFollower};
@@ -1 +1 @@
1
- import{Ct as e,_t as t,h as n,m as r}from"./kernel-worker-Bogg0FsV.js";const i=`/.slicc-migrated`;async function a(e){let{manifest:t,source:n,target:r,logger:i}=e,a={fileCount:t.fileCount,totalBytes:t.totalBytes},c=t.entries.filter(e=>e.type===`dir`).sort((e,t)=>o(e.path)-o(t.path)),l=t.entries.filter(e=>e.type===`file`),u=t.entries.filter(e=>e.type===`symlink`);for(let e of c)try{await r.mkdir(e.path)}catch(e){return i?.warn?.(`[migration] mkdir failed during C2 copy`,{copiedFiles:0,stage:`mkdir`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:0,stage:`mkdir`}}let d=0;try{e.onProgress?.({copied:0,total:a.fileCount})}catch{}for(let t of l){if(t.type!==`file`)continue;let o;try{o=await n.readFile(t.path)}catch(e){return i?.warn?.(`[migration] legacy read failed during C2 copy`,{copiedFiles:d,stage:`read`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`read`}}try{await r.writeFile(t.path,o)}catch(e){return i?.warn?.(`[migration] OPFS write failed during C2 copy`,{copiedFiles:d,stage:`writeFile`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`writeFile`}}d++;try{e.onProgress?.({copied:d,total:a.fileCount})}catch{}}let f=0;for(let e of u)if(e.type===`symlink`)try{await r.symlink(e.target,e.path)}catch(e){if(s(e)===`EEXIST`){f++;continue}return i?.warn?.(`[migration] symlink failed during C2 copy`,{copiedFiles:d,stage:`symlink`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`symlink`}}if(f>0&&i?.info?.(`[migration] tolerated pre-existing symlinks during C2 re-run`,{skipped:f,symlinks:t.symlinkCount}),e.flushBeforeSentinel)try{await e.flushBeforeSentinel()}catch(e){return i?.warn?.(`[migration] sidecar flush failed before parity`,{code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`writeFile`}}let p=await e.countOpfsFiles(),m=p.totalBytes-a.totalBytes;return p.fileCount===a.fileCount?(m!==0&&i?.info?.(`[migration] byte drift tolerated (count parity matched)`,{expectedBytes:a.totalBytes,actualBytes:p.totalBytes,byteDelta:m}),await e.writeSentinel(),i?.info?.(`[migration] C2 copy complete, sentinel written`,{files:p.fileCount,totalBytes:p.totalBytes,expectedBytes:a.totalBytes,byteDelta:m,symlinks:t.symlinkCount,dirs:t.dirCount}),{kind:`success`,fileCount:p.fileCount,totalBytes:p.totalBytes}):(i?.warn?.(`[migration] parity mismatch — sentinel NOT written`,{expectedFiles:a.fileCount,actualFiles:p.fileCount,expectedBytes:a.totalBytes,actualBytes:p.totalBytes,byteDelta:m}),{kind:`parity-mismatch`,expected:a,actual:p})}function o(e){if(e===`/`)return 0;let t=0;for(let n=0;n<e.length;n++)e.charCodeAt(n)===47&&t++;return t}function s(e){let t=e?.code;return typeof t==`string`?t:void 0}const c=t(`migration-guard`);function l(){let e=globalThis;return{hasExtensionRuntime:typeof e.chrome?.runtime?.id==`string`,hasDocument:e.document!==void 0,pathname:e.window?.location?.pathname??``}}function u(e){return!e.hasExtensionRuntime||!e.hasDocument?!1:!/offscreen\.html$/.test(e.pathname)}var d=class extends Error{constructor(e){super(`runLegacyMigrationFromVfs invoked from the chrome extension side panel (pathname='${e.pathname}'). Migration must run only in the offscreen document; the panel should wait on the kernel-ready RPC (OffscreenClient.onReady).`),this.name=`MigrationFromSidePanelError`}};function f(e=l()){if(u(e)){let t=new d(e);throw c.error(t.message),t}}async function p(e,t={}){f(t.callerEnv);let r=t.logger,o=await n({sentinelExists:async()=>{try{return await e.stat(i),!0}catch{return!1}},probeLegacyDbExists:t.probeLegacyDbExists??y,lfsFactory:t.legacyLfsFactory??v,logger:r});if(o.kind===`sentinel-present`)return{kind:`sentinel-present`};if(o.kind===`legacy-absent`)return{kind:`legacy-absent`};let s=await(t.legacyReaderFactory??_)(),c=m(e);return{kind:`copied`,result:await a({manifest:o.manifest,source:s,target:c,countOpfsFiles:()=>g(e,o.manifest),flushBeforeSentinel:()=>e.flush().catch(()=>{}),writeSentinel:async()=>{await e.writeFile(i,``),await e.flush().catch(()=>{})},onProgress:t.onProgress,logger:r})}}function m(e){return{mkdir:async t=>{await e.mkdir(t,{recursive:!0})},writeFile:async(t,n)=>{await e.writeFile(t,n)},symlink:async(t,n)=>{try{await e.symlink(t,n);return}catch(e){if(h(e)!==`EEXIST`)throw e}let r;try{r=await e.readlink(n)}catch{}r!==t&&(await e.rm(n,{recursive:!0}),await e.symlink(t,n))}}}function h(e){let t=e?.code;return typeof t==`string`?t:void 0}async function g(e,t){let n=0,r=0;for(let i of t.entries){if(i.type!==`file`)continue;let t;try{t=await e.lstat(i.path)}catch{continue}t.type===`file`&&(n++,r+=t.size??0)}return{fileCount:n,totalBytes:r}}async function _(){let t=(await import(`./src-DiQH2ndF.js`).then(t=>e(t.default,1))).default,n=new t(r).promises;return{readFile:async e=>{let t=await n.readFile(e);return t instanceof Uint8Array?t:new TextEncoder().encode(String(t))}}}async function v(){let t=(await import(`./src-DiQH2ndF.js`).then(t=>e(t.default,1))).default;return new t(r).promises}async function y(){try{let e=globalThis.indexedDB;if(!e)return!1;let t=e.databases;return typeof t==`function`?(await t.call(e)).some(e=>e.name===r):!0}catch{return!0}}export{p as runLegacyMigrationFromVfs};
1
+ import{St as e,gt as t,h as n,m as r}from"./kernel-worker-BN9jVURi.js";const i=`/.slicc-migrated`;async function a(e){let{manifest:t,source:n,target:r,logger:i}=e,a={fileCount:t.fileCount,totalBytes:t.totalBytes},c=t.entries.filter(e=>e.type===`dir`).sort((e,t)=>o(e.path)-o(t.path)),l=t.entries.filter(e=>e.type===`file`),u=t.entries.filter(e=>e.type===`symlink`);for(let e of c)try{await r.mkdir(e.path)}catch(e){return i?.warn?.(`[migration] mkdir failed during C2 copy`,{copiedFiles:0,stage:`mkdir`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:0,stage:`mkdir`}}let d=0;try{e.onProgress?.({copied:0,total:a.fileCount})}catch{}for(let t of l){if(t.type!==`file`)continue;let o;try{o=await n.readFile(t.path)}catch(e){return i?.warn?.(`[migration] legacy read failed during C2 copy`,{copiedFiles:d,stage:`read`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`read`}}try{await r.writeFile(t.path,o)}catch(e){return i?.warn?.(`[migration] OPFS write failed during C2 copy`,{copiedFiles:d,stage:`writeFile`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`writeFile`}}d++;try{e.onProgress?.({copied:d,total:a.fileCount})}catch{}}let f=0;for(let e of u)if(e.type===`symlink`)try{await r.symlink(e.target,e.path)}catch(e){if(s(e)===`EEXIST`){f++;continue}return i?.warn?.(`[migration] symlink failed during C2 copy`,{copiedFiles:d,stage:`symlink`,code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`symlink`}}if(f>0&&i?.info?.(`[migration] tolerated pre-existing symlinks during C2 re-run`,{skipped:f,symlinks:t.symlinkCount}),e.flushBeforeSentinel)try{await e.flushBeforeSentinel()}catch(e){return i?.warn?.(`[migration] sidecar flush failed before parity`,{code:s(e)}),{kind:`copy-error`,expected:a,copiedFiles:d,stage:`writeFile`}}let p=await e.countOpfsFiles(),m=p.totalBytes-a.totalBytes;return p.fileCount===a.fileCount?(m!==0&&i?.info?.(`[migration] byte drift tolerated (count parity matched)`,{expectedBytes:a.totalBytes,actualBytes:p.totalBytes,byteDelta:m}),await e.writeSentinel(),i?.info?.(`[migration] C2 copy complete, sentinel written`,{files:p.fileCount,totalBytes:p.totalBytes,expectedBytes:a.totalBytes,byteDelta:m,symlinks:t.symlinkCount,dirs:t.dirCount}),{kind:`success`,fileCount:p.fileCount,totalBytes:p.totalBytes}):(i?.warn?.(`[migration] parity mismatch — sentinel NOT written`,{expectedFiles:a.fileCount,actualFiles:p.fileCount,expectedBytes:a.totalBytes,actualBytes:p.totalBytes,byteDelta:m}),{kind:`parity-mismatch`,expected:a,actual:p})}function o(e){if(e===`/`)return 0;let t=0;for(let n=0;n<e.length;n++)e.charCodeAt(n)===47&&t++;return t}function s(e){let t=e?.code;return typeof t==`string`?t:void 0}const c=t(`migration-guard`);function l(){let e=globalThis;return{hasExtensionRuntime:typeof e.chrome?.runtime?.id==`string`,hasDocument:e.document!==void 0,pathname:e.window?.location?.pathname??``}}function u(e){return!e.hasExtensionRuntime||!e.hasDocument?!1:!/offscreen\.html$/.test(e.pathname)}var d=class extends Error{constructor(e){super(`runLegacyMigrationFromVfs invoked from the chrome extension side panel (pathname='${e.pathname}'). Migration must run only in the offscreen document; the panel should wait on the kernel-ready RPC (OffscreenClient.onReady).`),this.name=`MigrationFromSidePanelError`}};function f(e=l()){if(u(e)){let t=new d(e);throw c.error(t.message),t}}async function p(e,t={}){f(t.callerEnv);let r=t.logger,o=await n({sentinelExists:async()=>{try{return await e.stat(i),!0}catch{return!1}},probeLegacyDbExists:t.probeLegacyDbExists??y,lfsFactory:t.legacyLfsFactory??v,logger:r});if(o.kind===`sentinel-present`)return{kind:`sentinel-present`};if(o.kind===`legacy-absent`)return{kind:`legacy-absent`};let s=await(t.legacyReaderFactory??_)(),c=m(e);return{kind:`copied`,result:await a({manifest:o.manifest,source:s,target:c,countOpfsFiles:()=>g(e,o.manifest),flushBeforeSentinel:()=>e.flush().catch(()=>{}),writeSentinel:async()=>{await e.writeFile(i,``),await e.flush().catch(()=>{})},onProgress:t.onProgress,logger:r})}}function m(e){return{mkdir:async t=>{await e.mkdir(t,{recursive:!0})},writeFile:async(t,n)=>{await e.writeFile(t,n)},symlink:async(t,n)=>{try{await e.symlink(t,n);return}catch(e){if(h(e)!==`EEXIST`)throw e}let r;try{r=await e.readlink(n)}catch{}r!==t&&(await e.rm(n,{recursive:!0}),await e.symlink(t,n))}}}function h(e){let t=e?.code;return typeof t==`string`?t:void 0}async function g(e,t){let n=0,r=0;for(let i of t.entries){if(i.type!==`file`)continue;let t;try{t=await e.lstat(i.path)}catch{continue}t.type===`file`&&(n++,r+=t.size??0)}return{fileCount:n,totalBytes:r}}async function _(){let t=(await import(`./src-CtWqiCTj.js`).then(t=>e(t.default,1))).default,n=new t(r).promises;return{readFile:async e=>{let t=await n.readFile(e);return t instanceof Uint8Array?t:new TextEncoder().encode(String(t))}}}async function v(){let t=(await import(`./src-CtWqiCTj.js`).then(t=>e(t.default,1))).default;return new t(r).promises}async function y(){try{let e=globalThis.indexedDB;if(!e)return!1;let t=e.databases;return typeof t==`function`?(await t.call(e)).some(e=>e.name===r):!0}catch{return!0}}export{p as runLegacyMigrationFromVfs};