sliccy 6.201.0 → 6.202.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node-server/_shared/tray-sync-protocol.d.ts +12 -0
- package/dist/node-server/_shared/tray-sync-protocol.d.ts.map +1 -1
- package/dist/node-server/_shared/tray-sync-protocol.js.map +1 -1
- package/dist/node-server/hosted-bootstrap.d.ts +2 -0
- package/dist/node-server/hosted-bootstrap.js +7 -2
- package/dist/ui/.vite/manifest.json +250 -246
- package/dist/ui/assets/{account-store-BIWge689.js → account-store-BPOuwEUe.js} +1 -1
- package/dist/ui/assets/{account-store-fwzaDw-l.js → account-store-DCNh6_f3.js} +1 -1
- package/dist/ui/assets/{adobe-ClIr3I-p.js → adobe-5wPjwcn6.js} +1 -1
- package/dist/ui/assets/{adobe-Dt7h_Eeo.js → adobe-CuF_TJOS.js} +1 -1
- package/dist/ui/assets/{agent-panels-6vt0IiNY.js → agent-panels-LxO-J2qb.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-aWQGQfiU.js → almost-bash-shell-headless-yKn6anXs.js} +31 -31
- package/dist/ui/assets/{anthropic-messages-DzHtdQv6.js → anthropic-messages-DkH6AeKE.js} +1 -1
- package/dist/ui/assets/{apply-layout-CwT2Do6O.js → apply-layout-hpMxAa22.js} +1 -1
- package/dist/ui/assets/{apps-Cop3IMqB.js → apps-yBr1j6Js.js} +1 -1
- package/dist/ui/assets/{azure-openai-zbk8uXvL.js → azure-openai-DEHmL6Gd.js} +1 -1
- package/dist/ui/assets/{azure-openai-DX46kUX4.js → azure-openai-dB_5C8mf.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-DUWFmnAS.js → azure-openai-responses-BlGLmNYQ.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-Df2XNlz8.js → backend-hostfs-BMQejZwC.js} +1 -1
- package/dist/ui/assets/bedrock-camp-BQ8gVLI_.js +1 -0
- package/dist/ui/assets/bedrock-camp-ClMYvDsy.js +1 -0
- package/dist/ui/assets/{cdp-XN5cbfSn.js → cdp-CU7BSR6t.js} +1 -1
- package/dist/ui/assets/{cerebras-DiGN-Haj.js → cerebras-AA61XJ-B.js} +1 -1
- package/dist/ui/assets/{cerebras-C0GqThJV.js → cerebras-CmcFSmEV.js} +1 -1
- package/dist/ui/assets/{compat-qQM4gjF_.js → compat-Dy2zIWAW.js} +2 -2
- package/dist/ui/assets/{composer-speech-C9zLLxJI.js → composer-speech-D4AMNMyP.js} +1 -1
- package/dist/ui/assets/{connect-surface-DiTVhpil.js → connect-surface-D-m_C-GS.js} +1 -1
- package/dist/ui/assets/{core-DEHCydPY.js → core-D8SLLGdB.js} +1 -1
- package/dist/ui/assets/{directed-approval-DhuKdSBd.js → directed-approval-CMWM7on3.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-DvF0wI_4.js → emscripten-vfs-hook-_2rAJXNI.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-CaC3KtN4.js → ensure-speech-assets-CFHsmmeI.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-CZ5Gk5Jm.js → frozen-archive-writer-DGZKdSra.js} +1 -1
- package/dist/ui/assets/{fs-DnZiIMaX.js → fs-CB72Wfta.js} +2 -2
- package/dist/ui/assets/{fs-_sfsk7nR.js → fs-fMPWFoqu.js} +1 -1
- package/dist/ui/assets/{gelatiere-store-CpiC3WMb.js → gelatiere-store-DPYP6f1t.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-SfjAgxf3.js → gelatiere-unit-C44c6eoz.js} +1 -1
- package/dist/ui/assets/{github-vlErpMqL.js → github-CUWHcDRW.js} +1 -1
- package/dist/ui/assets/{github-B6Ro4Vyj.js → github-Lda4oA3H.js} +2 -2
- package/dist/ui/assets/{github-auth-CF5dasUt.js → github-auth-D__Wuyii.js} +1 -1
- package/dist/ui/assets/{github-copilot-B4eBPv32.js → github-copilot-BtS_N0PJ.js} +1 -1
- package/dist/ui/assets/{github-copilot-CY_TJo2b.js → github-copilot-GznJonKZ.js} +1 -1
- package/dist/ui/assets/{github-install-0wR_oHGJ.js → github-install-ByqrClDF.js} +1 -1
- package/dist/ui/assets/{github-zip-DsWAwpGB.js → github-zip-BJYotqf6.js} +1 -1
- package/dist/ui/assets/{google-generative-ai-mk59e_TJ.js → google-generative-ai-_Gek_V8v.js} +1 -1
- package/dist/ui/assets/{google-vertex-DJUeZm26.js → google-vertex-BF9Vjq0f.js} +1 -1
- package/dist/ui/assets/{hear-B3Htg_ED.js → hear-NNKlAYIB.js} +1 -1
- package/dist/ui/assets/{help-C8hYsF1D.js → help-Cs6_ZfIK.js} +1 -1
- package/dist/ui/assets/{installer-CgaA1tWS.js → installer-QVmLUcU6.js} +1 -1
- package/dist/ui/assets/{ipk-mamba-LOopc1Fr.js → ipk-mamba-DM5Eo23m.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-MHB9dm0v.js → js-realm-worker-azTLp9p7.js} +2 -2
- package/dist/ui/assets/{jsh-executor-mbEWF1Zm.js → jsh-executor-Dl3EAD2y.js} +2 -2
- package/dist/ui/assets/{kernel-worker-C0D-prE8.js → kernel-worker-CYrV9gTu.js} +10 -10
- package/dist/ui/assets/{legacy-api-aliases-DtQJ5I7w.js → legacy-api-aliases-DoI0tM7F.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-BMOgjdw-.js → lick-ws-bridge-BbuIwcTt.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-D-SjYzwa.js → lick-ws-bridge-ChHtb2iS.js} +1 -1
- package/dist/ui/assets/{live-session-curation-DBB0BC3B.js → live-session-curation-bHIbXHyz.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-DkrES4VI.js → live-session-snapshot-BxMGPIBe.js} +1 -1
- package/dist/ui/assets/{local-llm-B6BSSNT-.js → local-llm-BiWHfibt.js} +1 -1
- package/dist/ui/assets/{local-llm-CY6c2sXr.js → local-llm-DlKeYPSq.js} +1 -1
- package/dist/ui/assets/{main-CUMpx04_.js → main-CwH54Phg.js} +3 -3
- package/dist/ui/assets/{main-cherry-C6pVbdgb.js → main-cherry-C2EoUYp2.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-CknJYtxR.js → memory-curation-seam-CF-la7i8.js} +1 -1
- package/dist/ui/assets/{memory-health-DsnSZmSb.js → memory-health-CuFAR2LK.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-ntAccCje.js → memory-write-execute-_fs4hpqZ.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-pKLMgpaS.js → merge-folded-cost-into-frozen-B5Hpc11r.js} +1 -1
- package/dist/ui/assets/{mistral-conversations-DSJIHP5s.js → mistral-conversations-2yMfObrW.js} +1 -1
- package/dist/ui/assets/{models-BSkXF4T6.js → models-YdybRRvT.js} +1 -1
- package/dist/ui/assets/{mount-CkyzZCYy.js → mount-ClB3oCPW.js} +3 -3
- package/dist/ui/assets/{mount-DBdwrDMi.js → mount-DyPxYOeJ.js} +1 -1
- package/dist/ui/assets/{new-session-P03v_FCK.js → new-session-DbnMs-P7.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-D9xVBRhw.js → oauth-bootstrap-CkC65gIY.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-DH0uHEvH.js → onboarding-orchestrator-Co8U3c5X.js} +1 -1
- package/dist/ui/assets/{openai-codex-BBlwDBce.js → openai-codex-CcU99gw8.js} +1 -1
- package/dist/ui/assets/{openai-codex-DoyWM1Ht.js → openai-codex-DsVGiLw0.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-DK0TuYYs.js → openai-codex-responses-BM2lIIbg.js} +1 -1
- package/dist/ui/assets/{openai-completions-Vz0p13Z7.js → openai-completions-CkwaxmCT.js} +1 -1
- package/dist/ui/assets/{openai-responses-CjehV1Ys.js → openai-responses-CZLQAwyI.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-BN7PRIa9.js → openai-responses-shared-CdC6rVE7.js} +1 -1
- package/dist/ui/assets/{openrouter-CSuhnV2D.js → openrouter-DR8LwwVX.js} +1 -1
- package/dist/ui/assets/{openrouter-free-mGS0IcRu.js → openrouter-free-Chr7bG7g.js} +1 -1
- package/dist/ui/assets/{openrouter-free-BmtrgcsS.js → openrouter-free-dtgub1tZ.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BeWa_JYM.js → openrouter-oauth-Ci3YPqRM.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-LxxPcj62.js → openrouter-oauth-DQBrEEUm.js} +1 -1
- package/dist/ui/assets/{openrouter-D6arc4g-.js → openrouter-zoXrPSU-.js} +1 -1
- package/dist/ui/assets/{opfs-mount-DiGAsjln.js → opfs-mount-BRJeiBTy.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-Dn9LkDA4.js → panel-rpc-handlers-B1vamnj_.js} +2 -2
- package/dist/ui/assets/{panelize-shell-BCnZJqfR.js → panelize-shell-DjBpIdsZ.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-C8DevsMX.js → pi-edit-execution-CEZnq-ea.js} +1 -1
- package/dist/ui/assets/{provider-TW1uhiOX.js → provider-BJyMMVgQ.js} +1 -1
- package/dist/ui/assets/{provider-CoQm7QFw.js → provider-okk2DhJ-.js} +2 -2
- package/dist/ui/assets/{provider-settings-DuyZH9Vl.js → provider-settings-C_VIs5bh.js} +1 -1
- package/dist/ui/assets/provider-store-access-BLTrDV2N.js +1 -0
- package/dist/ui/assets/provider-store-access-kBtOqzc3.js +1 -0
- package/dist/ui/assets/{providers-DKsHZCA-.js → providers-Bi2j-s3f.js} +1 -1
- package/dist/ui/assets/{providers-BxT3TeA_.js → providers-Dp-BrqwV.js} +2 -2
- package/dist/ui/assets/{quick-llm-Bg2Nrvfp.js → quick-llm-CE4gvSHd.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-DzH1E2Sz.js → realm-inprocess-B0v2BPy_.js} +2 -2
- package/dist/ui/assets/{realm-unhandled-rejections-NauY91jT.js → realm-unhandled-rejections-CedH1x_P.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-QsexeLeD.js → realm-unhandled-rejections-_0x5hBig.js} +1 -1
- package/dist/ui/assets/{recovery-screen-BF0gjjXu.js → recovery-screen-DhmPrdnD.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-DA7UMUr3.js → remote-terminal-view-BAk9EFL0.js} +2 -2
- package/dist/ui/assets/{restore-BEtGf9q0.js → restore-ptciJPFI.js} +1 -1
- package/dist/ui/assets/{run-CCsrR9by.js → run-BDpXPyUz.js} +2 -2
- package/dist/ui/assets/{run-BQj4zYFq.js → run-BPItyDq9.js} +1 -1
- package/dist/ui/assets/{run-CoVp9_Ry.js → run-BWRKyXnJ.js} +1 -1
- package/dist/ui/assets/{run-DrtRMJvT.js → run-CGuUNo86.js} +2 -2
- package/dist/ui/assets/{run-C6DlavC0.js → run-Cy3RS1I5.js} +1 -1
- package/dist/ui/assets/{run-JnbiSyNj.js → run-D2hbXBmR.js} +1 -1
- package/dist/ui/assets/{session-command-memory-BpLXPvLD.js → session-command-memory-TTvqtG3i.js} +2 -2
- package/dist/ui/assets/{session-jsonl-B9EILxP9.js → session-jsonl-j5UjZtaB.js} +1 -1
- package/dist/ui/assets/{session-jsonl-DxLd1YSX.js → session-jsonl-qAVJJYKp.js} +1 -1
- package/dist/ui/assets/{session-search-index-lCF3ljFt.js → session-search-index-Dlu5p6EL.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-tTbAi367.js → setup-feature-flags-remote-C3qOiTP3.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-BSHpsEXu.js → setup-model-catalog-DgmbvBry.js} +1 -1
- package/dist/ui/assets/{signed-fetch-Ua68AiAx.js → signed-fetch-Di_V1YOi.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-BlLiATFB.js → silent-renew-backoff-CoPOXNl3.js} +1 -1
- package/dist/ui/assets/slicc-version-CMeCruya.js +1 -0
- package/dist/ui/assets/{snapshot-BhBl90YV.js → snapshot-CeeeCfMA.js} +1 -1
- package/dist/ui/assets/{snapshot-features-CBi1abGg.js → snapshot-features-Cluwssqe.js} +1 -1
- package/dist/ui/assets/{soundscape-CV__wATK.js → soundscape-Cajeb3mc.js} +1 -1
- package/dist/ui/assets/{speak-cixBBa3H.js → speak-B8zg07BA.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-CLGgMjDC.js → sprinkle-manager-C0ZLYzGv.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-Cy7BLn0s.js → sprinkle-renderer-BNfO77S4.js} +1 -1
- package/dist/ui/assets/{state-BXsN9U2z.js → state-DbJmPjaF.js} +1 -1
- package/dist/ui/assets/{store-BJyU-CYi.js → store-5aqRrovo.js} +1 -1
- package/dist/ui/assets/{store-kUYDPLXq.js → store-Bo7W8LfT.js} +1 -1
- package/dist/ui/assets/{sudo-au9s7W2X.js → sudo-BxaHOkca.js} +1 -1
- package/dist/ui/assets/{supervisor-B23ZJCMt.js → supervisor-DzeRkEEr.js} +1 -1
- package/dist/ui/assets/{sync-dialog-B7UF9HL4.js → sync-dialog-oar4K1yZ.js} +1 -1
- package/dist/ui/assets/{transformers-env-B-a9NNff.js → transformers-env-B6ny7zNo.js} +1 -1
- package/dist/ui/assets/{tray-leader-B_Vq-WZW.js → tray-leader-xp1Sv-QN.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-CJ9DB8b-.js → tray-leave-runtime-BroSLcKm.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-DGC5RaA1.js → tray-sidecar-Dc3RKSHW.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-CtG6sgvq.js → upgrade-detection-DAhbdcWM.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-CQVojEjb.js → upskill-lick-skip-BrqAaw4I.js} +1 -1
- package/dist/ui/assets/{voice-reply-BaoXYcfq.js → voice-reply-DoAZZO0s.js} +1 -1
- package/dist/ui/assets/{wc-attach-ChnevSwE.js → wc-attach-DJYPFXp_.js} +2 -2
- package/dist/ui/assets/{wc-browser-D5BkgbmD.js → wc-browser-DXl6oM7W.js} +1 -1
- package/dist/ui/assets/{wc-computers-C80pamWN.js → wc-computers-BwR_D_nd.js} +1 -1
- package/dist/ui/assets/{wc-detached-BpD5Lm2I.js → wc-detached-DIB7DtzK.js} +1 -1
- package/dist/ui/assets/{wc-extension-DFZKeSHK.js → wc-extension-ClC_LW9Q.js} +2 -2
- package/dist/ui/assets/{wc-follower-Dyfqc0rV.js → wc-follower-DV0Ntx4V.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-Czn5aUEf.js → wc-follower-oauth-BLMHOiN8.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-CbHMk8MW.js → wc-gelatiere-gchTADW7.js} +1 -1
- package/dist/ui/assets/{wc-live-C_AjU03k.js → wc-live-CNuwE1YV.js} +5 -5
- package/dist/ui/assets/{wc-nav-CFWvpLIa.js → wc-nav-BHvVkU3F.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-CIOt6HoW.js → wc-onboarding-jiSorEJK.js} +2 -2
- package/dist/ui/assets/{wc-permissions-B2Dng0gG.js → wc-permissions-BeXGw8C-.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DMOuLW-n.js → wc-placeholder-D1NmtsX1.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-4kBGCOLm.js → wc-secret-request-CCieihNp.js} +1 -1
- package/dist/ui/assets/{wc-settings-DUAWGFnD.js → wc-settings-BpnVsOZ9.js} +3 -3
- package/dist/ui/assets/{wc-shell-BoXgif1h.js → wc-shell-DVdpBOjU.js} +3 -3
- package/dist/ui/assets/{wc-shortcut-config-DcFa5MNI.js → wc-shortcut-config-BWZCSSCt.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-D-inHzhw.js → wc-sprinkles-C0Mzrh_g.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-BCgcOhv0.js → wc-transcript-export-CmDKq4Fc.js} +2 -2
- package/dist/ui/assets/wc-tray-B6Ibxhf5.js +5 -0
- package/dist/ui/assets/welcome-detection-D00XfyY7.js +1 -0
- package/dist/ui/assets/{whisper-session-Bs5HxMaY.js → whisper-session-BQAiBLbf.js} +2 -2
- package/dist/ui/assets/{xai-grok-BFuf62tf.js → xai-grok-CgnKO61-.js} +1 -1
- package/dist/ui/assets/{xai-grok-BR_Z9tbO.js → xai-grok-DcrSkBlG.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/ui/packages/webapp/index.html +6 -6
- package/package.json +1 -1
- package/dist/ui/assets/bedrock-camp-CMfZujT_.js +0 -1
- package/dist/ui/assets/bedrock-camp-Ck_nFSMy.js +0 -1
- package/dist/ui/assets/provider-store-access-BqCZs6PG.js +0 -1
- package/dist/ui/assets/provider-store-access-C_esRWyN.js +0 -1
- package/dist/ui/assets/slicc-version-DYbMRVIh.js +0 -1
- package/dist/ui/assets/wc-tray-BBorz0ro.js +0 -5
- package/dist/ui/assets/welcome-detection-CDOBtsDy.js +0 -1
package/dist/ui/assets/{mistral-conversations-DSJIHP5s.js → mistral-conversations-2yMfObrW.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./diagnostics-DN_idNHx.js";import{n as t,t as n}from"./models-
|
|
1
|
+
import{i as e}from"./diagnostics-DN_idNHx.js";import{n as t,t as n}from"./models-YdybRRvT.js";import{n as r}from"./json-parse-CgFfIg4Q.js";import{t as i}from"./headers-CbDaTl3c.js";import{i as a,o,s}from"./constrained-sampling-CNZLpVD5.js";import{t as c}from"./sanitize-unicode-DmIE6hZJ.js";import{r as l,t as u}from"./transform-messages-BsQjTIEJ.js";import{t as d}from"./hash-yQufAZII.js";var f=9,p=4e3,m=(t,n,r)=>{let i=new e;return(async()=>{let e=g(t);try{let a=r?.apiKey;if(!a)throw Error(`No API key for provider: ${t.provider}`);let o=_(),s=I(t,n,u(n.messages,t,e=>o(e)),r),c=await r?.onPayload?.(s,t);c!==void 0&&(s=c);let l=await S(t,s,a,r);if(i.push({type:`start`,partial:e}),await z(t,e,i,l),r?.signal?.aborted)throw Error(`Request was aborted`);if(e.stopReason===`pending`)throw Error(`Mistral stream ended without a finish reason`);if(e.stopReason===`aborted`||e.stopReason===`error`)throw Error(e.errorMessage||`An unknown error occurred`);i.push({type:`done`,reason:e.stopReason,message:e}),i.end()}catch(t){for(let t of e.content)delete t.partialArgs;e.stopReason=r?.signal?.aborted?`aborted`:`error`,e.errorMessage=y(t),i.push({type:`error`,reason:e.stopReason,error:e}),i.end()}})(),i},h=(e,n,r)=>{let i=r?.apiKey;if(!i)throw Error(`No API key for provider: ${e.provider}`);let a={...l(e,n,r,i),toolChoice:r?.toolChoice},o=r?.reasoning?t(e,r.reasoning):void 0,s=o===`off`?void 0:o,c=e.reasoning&&s!==void 0;return m(e,n,{...a,promptMode:c&&G(e)?`reasoning`:void 0,reasoningEffort:c&&W(e)?K(e,s):void 0})};function g(e){return{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:`pending`,timestamp:Date.now()}}function _(){let e=new Map,t=new Map;return n=>{let r=e.get(n);if(r)return r;let i=0;for(;;){let r=v(n,i),a=t.get(r);if(!a||a===n)return e.set(n,r),t.set(r,n),r;i++}}}function v(e,t){let n=e.replace(/[^a-zA-Z0-9]/g,``);if(t===0&&n.length===f)return n;let r=n||e,i=t===0?r:`${r}:${t}`;return d(i).replace(/[^a-zA-Z0-9]/g,``).slice(0,f)}function y(e){if(e instanceof Error){let t=e,n=typeof t.statusCode==`number`?t.statusCode:void 0,r=typeof t.body==`string`?t.body.trim():void 0;return n!==void 0&&r?`Mistral API error (${n}): ${b(r,p)}`:n===void 0?e.message:`Mistral API error (${n}): ${e.message}`}return x(e)}function b(e,t){return e.length<=t?e:`${e.slice(0,t)}... [truncated ${e.length-t} chars]`}function x(e){try{let t=JSON.stringify(e);return t===void 0?String(e):t}catch{return String(e)}}async function S(e,t,n,r){let a=new URL(e.baseUrl);a.pathname=`${a.pathname.replace(/\/+$/u,``)}/`;let o=new URL(`v1/chat/completions`,a),s=w(e,n,r),c=AbortSignal.timeout(r?.timeoutMs??6e4),l=r?.signal?AbortSignal.any([r.signal,c]):c,u=await(r?.fetch??globalThis.fetch)(o,{method:`POST`,headers:s,body:JSON.stringify(D(t)),signal:l});if(await r?.onResponse?.({status:u.status,headers:i(u.headers)},e),!u.ok){let e=await u.text();throw new C(u.status,e,u.statusText)}if(!u.body)throw Error(`Mistral response has no body`);return N(u.body,l)}var C=class extends Error{statusCode;body;constructor(e,t,n){super(n||`Request failed with status ${e}`),this.name=`MistralHttpError`,this.statusCode=e,this.body=t}};function w(e,t,n){let r=new Headers({"User-Agent":s(),accept:`text/event-stream`,authorization:`Bearer ${t}`,"content-type":`application/json`});T(r,e.headers),T(r,n?.headers);let i=E(e.headers,`x-affinity`)||E(n?.headers,`x-affinity`);return L(n)&&!i&&r.set(`x-affinity`,n.sessionId),r}function T(e,t){if(t)for(let[n,r]of Object.entries(t))r===null?e.delete(n):e.set(n,r)}function E(e,t){return!!e&&Object.keys(e).some(e=>e.toLowerCase()===t)}function D(e){let t={...e};for(let[e,n]of[[`topP`,`top_p`],[`maxTokens`,`max_tokens`],[`randomSeed`,`random_seed`],[`responseFormat`,`response_format`],[`toolChoice`,`tool_choice`],[`presencePenalty`,`presence_penalty`],[`frequencyPenalty`,`frequency_penalty`],[`parallelToolCalls`,`parallel_tool_calls`],[`reasoningEffort`,`reasoning_effort`],[`promptMode`,`prompt_mode`],[`promptCacheKey`,`prompt_cache_key`],[`safePrompt`,`safe_prompt`]])A(t,e,n);t.messages=e.messages.map(e=>O(e));let n=t.response_format;if(j(n)){let e={...n};A(e,`jsonSchema`,`json_schema`);let r=e.json_schema;if(j(r)){let t={...r};A(t,`schemaDefinition`,`schema`),e.json_schema=t}t.response_format=e}return t}function O(e){let t={...e};return A(t,`toolCalls`,`tool_calls`),A(t,`toolCallId`,`tool_call_id`),Array.isArray(e.content)&&(t.content=e.content.map(e=>k(e))),t}function k(e){let t={...e};for(let[e,n]of[[`imageUrl`,`image_url`],[`documentUrl`,`document_url`],[`documentName`,`document_name`],[`fileId`,`file_id`],[`referenceIds`,`reference_ids`],[`inputAudio`,`input_audio`]])A(t,e,n);return t}function A(e,t,n){t in e&&(e[n]=e[t],delete e[t])}function j(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var M=Symbol(`mistral-stream-done`);async function*N(e,t){let n=e.getReader(),r=new TextDecoder,i=``,a=()=>{n.cancel().catch(()=>{})};t.addEventListener(`abort`,a,{once:!0});try{for(;;){if(t.aborted)throw t.reason;let{done:e,value:a}=await n.read();if(t.aborted)throw t.reason;i+=e?r.decode():r.decode(a,{stream:!0});let o=P(i);for(;o;){let e=F(i.slice(0,o.index));if(i=i.slice(o.index+o.length),e===M)return;e&&(yield e),o=P(i)}if(e)break}if(i.trim()){let e=F(i);e!==M&&e&&(yield e)}}finally{t.removeEventListener(`abort`,a);try{await n.cancel()}catch{}try{n.releaseLock()}catch{}}}function P(e){let t=/\r\n\r\n|\r\n\r|\r\n\n|\r\r\n|\n\r\n|\r\r|\n\r|\n\n/u.exec(e);return t?.index===void 0?void 0:{index:t.index,length:t[0].length}}function F(e){let t=e.split(/\r\n|\r|\n/u).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
|
|
2
2
|
`).trim();if(!t)return;if(t===`[DONE]`)return M;let n=JSON.parse(t);if(!j(n)||!Array.isArray(n.choices))throw Error(`Invalid Mistral streaming event`);return{data:n}}function I(e,t,n,r){let i={model:e.id,stream:!0,messages:H(n,e.input.includes(`image`))};return t.tools?.length&&(i.tools=B(t.tools)),r?.temperature!==void 0&&(i.temperature=r.temperature),r?.maxTokens!==void 0&&(i.maxTokens=r.maxTokens),r?.toolChoice&&(i.toolChoice=q(r.toolChoice)),r?.promptMode&&(i.promptMode=r.promptMode),r?.reasoningEffort&&(i.reasoningEffort=r.reasoningEffort),L(r)&&(i.promptCacheKey=r.sessionId),t.systemPrompt&&i.messages.unshift({role:`system`,content:c(t.systemPrompt)}),i}function L(e){return e?.cacheRetention!==`none`&&!!e?.sessionId}function R(e,t){let n=e,r=n.promptTokensDetails?.cachedTokens??n.prompt_tokens_details?.cached_tokens??n.promptTokenDetails?.cachedTokens??n.prompt_token_details?.cached_tokens??n.numCachedTokens??n.num_cached_tokens??0;return Math.min(t,Math.max(0,typeof r==`number`&&Number.isFinite(r)?r:0))}async function z(e,t,i,a){let o=null,s=t.content,l=()=>s.length-1,u=new Map,d=e=>{if(e){if(e.type===`text`){i.push({type:`text_end`,contentIndex:l(),content:e.text,partial:t});return}e.type===`thinking`&&i.push({type:`thinking_end`,contentIndex:l(),content:e.thinking,partial:t})}};for await(let s of a){let a=s.data;if(t.responseId||=a.id,a.usage){let r=a.usage.prompt_tokens||0,i=R(a.usage,r);t.usage.input=Math.max(0,r-i),t.usage.output=a.usage.completion_tokens||0,t.usage.cacheRead=i,t.usage.cacheWrite=0,t.usage.totalTokens=a.usage.total_tokens||t.usage.input+t.usage.output+t.usage.cacheRead+t.usage.cacheWrite,n(e,t.usage)}let f=a.choices[0];if(!f)continue;if(f.finish_reason){t.rawStopReason=f.finish_reason;let e=J(f.finish_reason);t.stopReason=e.stopReason,e.errorMessage&&(t.errorMessage=e.errorMessage)}let p=f.delta;if(p.content!==null&&p.content!==void 0){let e=typeof p.content==`string`?[p.content]:p.content;for(let n of e){if(typeof n==`string`){let e=c(n);(!o||o.type!==`text`)&&(d(o),o={type:`text`,text:``},t.content.push(o),i.push({type:`text_start`,contentIndex:l(),partial:t})),o.text+=e,i.push({type:`text_delta`,contentIndex:l(),delta:e,partial:t});continue}if(n.type===`thinking`){let e=(n.thinking??[]).map(e=>e.text??``).filter(e=>e.length>0).join(``),r=c(e);if(!r)continue;(!o||o.type!==`thinking`)&&(d(o),o={type:`thinking`,thinking:``},t.content.push(o),i.push({type:`thinking_start`,contentIndex:l(),partial:t})),o.thinking+=r,i.push({type:`thinking_delta`,contentIndex:l(),delta:r,partial:t});continue}if(n.type===`text`){let e=c(n.text??``);(!o||o.type!==`text`)&&(d(o),o={type:`text`,text:``},t.content.push(o),i.push({type:`text_start`,contentIndex:l(),partial:t})),o.text+=e,i.push({type:`text_delta`,contentIndex:l(),delta:e,partial:t})}}}let m=p.tool_calls||[];for(let e of m){o&&=(d(o),null);let n=e.id&&e.id!==`null`?e.id:v(`toolcall:${e.index??0}`,0),a=e.index??n,s=u.get(a),c;if(s!==void 0){let e=t.content[s];e?.type===`toolCall`&&(c=e)}c||(c={type:`toolCall`,id:n,name:e.function.name,arguments:{},partialArgs:``},t.content.push(c),u.set(a,t.content.length-1),i.push({type:`toolcall_start`,contentIndex:t.content.length-1,partial:t}));let l=typeof e.function.arguments==`string`?e.function.arguments:JSON.stringify(e.function.arguments||{});c.partialArgs=(c.partialArgs||``)+l,c.arguments=r(c.partialArgs),i.push({type:`toolcall_delta`,contentIndex:u.get(a),delta:l,partial:t})}}d(o);for(let e of u.values()){let n=t.content[e];if(n.type!==`toolCall`)continue;let a=n;a.arguments=r(a.partialArgs),delete a.partialArgs,i.push({type:`toolcall_end`,contentIndex:e,toolCall:a,partial:t})}}function B(e){return e.map(e=>{let t=o(e,!0);return{type:`function`,function:{name:e.name,description:e.description,parameters:V(a(e,t)),strict:t??!1}}})}function V(e){if(Array.isArray(e))return e.map(e=>V(e));if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=V(r);return t}return e}function H(e,t){let n=[];for(let r of e){if(r.role===`user`){if(typeof r.content==`string`){n.push({role:`user`,content:c(r.content)});continue}let e=r.content.some(e=>e.type===`image`),i=r.content.filter(e=>e.type===`text`||t).map(e=>e.type===`text`?{type:`text`,text:c(e.text)}:{type:`image_url`,imageUrl:`data:${e.mimeType};base64,${e.data}`});if(i.length>0){n.push({role:`user`,content:i});continue}e&&!t&&n.push({role:`user`,content:`(image omitted: model does not support images)`});continue}if(r.role===`assistant`){let e=[],t=[];for(let n of r.content){if(n.type===`text`){n.text.trim().length>0&&e.push({type:`text`,text:c(n.text)});continue}if(n.type===`thinking`){n.thinking.trim().length>0&&e.push({type:`thinking`,thinking:[{type:`text`,text:c(n.thinking)}]});continue}t.push({id:n.id,type:`function`,function:{name:n.name,arguments:JSON.stringify(n.arguments||{})},index:0})}let i={role:`assistant`,prefix:!1};e.length>0&&(i.content=e),t.length>0&&(i.toolCalls=t),(e.length>0||t.length>0)&&n.push(i);continue}let e=[],i=U(r.content.filter(e=>e.type===`text`).map(e=>e.type===`text`?c(e.text):``).join(`
|
|
3
3
|
`),r.content.some(e=>e.type===`image`),t,r.isError);e.push({type:`text`,text:i});for(let n of r.content)t&&n.type===`image`&&e.push({type:`image_url`,imageUrl:`data:${n.mimeType};base64,${n.data}`});n.push({role:`tool`,toolCallId:r.toolCallId,name:r.toolName,content:e})}return n}function U(e,t,n,r){let i=e.trim(),a=r?`[tool error] `:``;return i.length>0?`${a}${i}${t&&!n?`
|
|
4
4
|
[tool image omitted: model does not support images]`:``}`:t?n?r?`[tool error] (see attached image)`:`(see attached image)`:r?`[tool error] (image omitted: model does not support images)`:`(image omitted: model does not support images)`:r?`[tool error] (no tool output)`:`(no tool output)`}function W(e){return e.id===`mistral-small-2603`||e.id===`mistral-small-latest`||e.id===`mistral-medium-3.5`}function G(e){return e.reasoning&&!W(e)}function K(e,t){return e.thinkingLevelMap?.[t]??`high`}function q(e){if(e)return e===`auto`||e===`none`||e===`any`||e===`required`?e:{type:`function`,function:{name:e.function.name}}}function J(e){if(e===null)return{stopReason:`stop`};switch(e){case`stop`:return{stopReason:`stop`};case`length`:case`model_length`:return{stopReason:`length`};case`tool_calls`:return{stopReason:`toolUse`};case`error`:return{stopReason:`error`,errorMessage:`Provider stopped with: error`};default:return{stopReason:`error`,errorMessage:`Provider stopped with: ${e}`}}}export{m as stream,h as streamSimple};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,r as t}from"./diagnostics-DN_idNHx.js";import{t as n}from"./preload-helper-Czpn1I53.js";function r(e,t){return{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 instanceof Error?t.message:String(t),timestamp:Date.now()}}function i(e){return typeof e.result==`function`}async function a(e,t){for await(let n of t)e.push(n);e.end(i(t)?await t.result():void 0)}function o(t,n){let i=new e;return n().then(e=>a(i,e)).catch(e=>{let n=r(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}function s(e,t){let n={stream:(t,n,r)=>o(t,async()=>(await e()).stream(t,n,r)),streamSimple:(t,n,r)=>o(t,async()=>(await e()).streamSimple(t,n,r))};return t?.fetchDeferred&&(n.fetchDeferred=(t,n,r)=>o(t,async()=>{let i=await e();if(!i.fetchDeferred)throw Error(`API does not support deferred responses`);return i.fetchDeferred(t,n,r)})),t?.cancelDeferred&&(n.cancelDeferred=async(t,n,r)=>{let i=await e();if(!i.cancelDeferred)throw Error(`API cannot cancel deferred responses`);await i.cancelDeferred(t,n,r)}),n}var c=function(e,t){return typeof e==`string`&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,i,a){return n?t?`.jsx`:`.js`:r&&(!i||!a)?e:r+i+`.`+a.toLowerCase()+`js`}):e},l=e=>n(()=>import(c(e)),[]);function u(){return globalThis.process?.env}function d(){return{async env(e){let t=u()?.[e];return typeof t==`string`&&t.trim().length>0?t:void 0},async fileExists(e){try{let t=await l(`node:fs/promises`),n=e;return n.startsWith(`~`)&&(n=(await l(`node:os`)).homedir()+n.slice(1)),await t.access(n),!0}catch{return!1}}}}function f(e){if(e.reason!==void 0)return e.reason;let t=Error(`The operation was aborted`);return t.name=`AbortError`,t}function p(e){return e??new AbortController().signal}function m(e,t){return t.aborted?(e.catch(()=>{}),Promise.reject(f(t))):new Promise((n,r)=>{let i=!1,a=()=>t.removeEventListener(`abort`,o),o=()=>{i||(i=!0,a(),r(f(t)))};t.addEventListener(`abort`,o,{once:!0}),e.then(e=>{i||(i=!0,a(),n(e))},e=>{i||(i=!0,a(),r(e))}),t.aborted&&o()})}var h=class{credentials=new Map;chains=new Map;enqueue(e,t,n){let r=p(n?.signal),i=this.chains.get(e)??Promise.resolve(),a=(async()=>(await i.catch(()=>{}),r.throwIfAborted(),t()))(),o=a.catch(()=>{});return this.chains.set(e,o),o.then(()=>{this.chains.get(e)===o&&this.chains.delete(e)}),m(a,r)}async read(e,t){return t?.signal?.throwIfAborted(),this.credentials.get(e)}async list(e){return e?.signal?.throwIfAborted(),[...this.credentials].map(([e,t])=>({providerId:e,type:t.type}))}modify(e,t,n){return this.enqueue(e,async()=>{let r=this.credentials.get(e),i=await t(r);return n?.signal?.throwIfAborted(),i!==void 0&&this.credentials.set(e,i),i??r},n)}delete(e,t){return this.enqueue(e,async()=>{this.credentials.delete(e)},t)}},g=class extends Error{code;constructor(e,t,n){super(_(t,n?.cause),n),this.name=`ModelsError`,this.code=e}};function _(e,n){if(n==null)return e;let r=t(n).trim();return!r||e.includes(r)?e:`${e}: ${r}`}function v(e,t,n,r){let i=p(r?.signal);return m(y(e,t,n,r,i),i)}async function y(e,t,n,r,i){i.throwIfAborted();let a=r?.env?b(n,r.env):n;if(r?.apiKey!==void 0&&e.auth.apiKey)return w(a,e.auth.apiKey,e.id,{type:`api_key`,key:r.apiKey,env:r.env},i);let o=await T(t,e.id,i);if(o){if(o.type===`oauth`&&e.auth.oauth)return C(t,e.id,e.auth.oauth,o,i,r?.minOAuthValidityMs);if(o.type===`api_key`&&e.auth.apiKey){let t=r?.env?{...o,env:{...o.env,...r.env}}:o;return w(a,e.auth.apiKey,e.id,t,i)}return}return e.auth.apiKey?w(a,e.auth.apiKey,e.id,void 0,i):void 0}function b(e,t){return{env:async n=>t[n]||await e.env(n),fileExists:t=>e.fileExists(t)}}var x=3e5,S=15e3;async function C(e,t,n,r,i,a){let o=Math.max(x,a??0),s=e=>Date.now()+o>=e.expires,c=r;if(s(c)){let r;try{r=await e.modify(t,async e=>{if(e?.type===`oauth`&&s(e))try{let t=AbortSignal.any([i,AbortSignal.timeout(S)]);return await n.refresh(e,t)}catch(e){throw new g(`oauth`,`OAuth refresh failed for ${t}`,{cause:e})}},{signal:i})}catch(e){throw e instanceof g?e:new g(`auth`,`Credential store modify failed for ${t}`,{cause:e})}if(r?.type!==`oauth`)return;if(c=r,a!==void 0&&s(c))throw new g(`oauth`,`OAuth refresh returned a token that expires too soon for ${t}`)}try{return{auth:await n.toAuth(c),source:`OAuth`}}catch(e){throw new g(`oauth`,`OAuth auth derivation failed for ${t}`,{cause:e})}}async function w(e,t,n,r,i){try{return await t.resolve({ctx:e,credential:r,signal:i})}catch(e){throw new g(`auth`,`API key auth failed for provider ${n}`,{cause:e})}}async function T(e,t,n){try{return await e.read(t,{signal:n})}catch(e){throw new g(`auth`,`Credential store read failed for ${t}`,{cause:e})}}var E=class{entries=new Map;async read(e,t){t?.signal?.throwIfAborted();let n=this.entries.get(e);return n?structuredClone(n):void 0}async write(e,t,n){n?.signal?.throwIfAborted(),this.entries.set(e,structuredClone(t))}async delete(e,t){t?.signal?.throwIfAborted(),this.entries.delete(e)}};function D(e,t){if(!e&&!t)return;let n={...e};for(let[e,r]of Object.entries(t??{})){let t=e.toLowerCase();for(let e of Object.keys(n))e.toLowerCase()===t&&delete n[e];n[e]=r}return n}var O=class{providers=new Map;credentials;modelsStore;authContext;refreshGenerations=new Map;refreshControllers=new Map;publicationChains=new Map;constructor(e){this.credentials=e?.credentials??new h,this.modelsStore=e?.modelsStore??new E,this.authContext=e?.authContext??d()}setProvider(e){this.supersedeProviderRefresh(e.id),this.providers.set(e.id,e)}deleteProvider(e){this.supersedeProviderRefresh(e),this.providers.delete(e)}clearProviders(){for(let e of new Set([...this.providers.keys(),...this.refreshControllers.keys()]))this.supersedeProviderRefresh(e);this.providers.clear()}getProviders(){return Array.from(this.providers.values())}getProvider(e){return this.providers.get(e)}getModels(e){if(e!==void 0){let t=this.providers.get(e);if(!t)return[];try{return t.getModels()}catch{return[]}}let t=[];for(let e of this.providers.values())try{t.push(...e.getModels())}catch{}return t}getModel(e,t){return this.getModels(e).find(e=>e.id===t)}supersedeProviderRefresh(e){let t=(this.refreshGenerations.get(e)??0)+1;this.refreshGenerations.set(e,t);let n=this.refreshControllers.get(e);return n&&(this.refreshControllers.delete(e),n.abort()),t}beginProviderRefresh(e){let t=this.supersedeProviderRefresh(e),n=new AbortController;return this.refreshControllers.set(e,n),{generation:t,controller:n}}publishProviderModels(e,t,n,r){let i=this.publicationChains.get(e)??Promise.resolve(),a=(async()=>(await i.catch(()=>{}),n.aborted||this.refreshGenerations.get(e)!==t||(r.persist===null?await this.modelsStore.delete(e,{signal:n}):r.persist!==void 0&&await this.modelsStore.write(e,structuredClone(r.persist),{signal:n}),n.aborted||this.refreshGenerations.get(e)!==t)?!1:(r.update?.(),!0)))(),o=a.catch(()=>{});return this.publicationChains.set(e,o),o.then(()=>{this.publicationChains.get(e)===o&&this.publicationChains.delete(e)}),m(a,n)}async runProviderRefreshPhase(e,t,n,r,i,a){let o=await this.modelsStore.read(e.id,{signal:a});await e.refreshModels({credential:t,stored:o?structuredClone(o):void 0,publish:t=>this.publishProviderModels(e.id,i,a,t),allowNetwork:n,force:n?r:void 0,signal:a})}async refresh(e={}){let t=e.allowNetwork??!0,n=p(e.signal),r=new Map;if(n.aborted)return{aborted:!0,errors:r};let i=e.providers?new Set(e.providers):void 0,a=Array.from(this.providers.values()).filter(e=>e.refreshModels!==void 0&&(!i||i.has(e.id))),o=Promise.all(a.map(async i=>{let{generation:a,controller:o}=this.beginProviderRefresh(i.id),s=AbortSignal.any([n,o.signal]),c=(async()=>{let n,r;try{n=await this.readCredential(i.id,s)}catch(e){r=e}if(await this.runProviderRefreshPhase(i,n,!1,void 0,a,s),r!==void 0)throw r;if(!t||s.aborted)return;let o=await this.resolveRefreshCredential(i,n,s);o&&await this.runProviderRefreshPhase(i,o,!0,e.force,a,s)})();try{await m(c,s)}catch(e){s.aborted||r.set(i.id,e instanceof Error?e:new g(`model_source`,`Model refresh failed for ${i.id}`,{cause:e}))}finally{this.refreshControllers.get(i.id)===o&&this.refreshControllers.delete(i.id)}}));try{await m(o,n)}catch(e){if(!n.aborted)throw e}return{aborted:n.aborted,errors:new Map(r)}}async resolveRefreshCredential(e,t,n){if(t?.type===`oauth`){let r=e.auth.oauth;if(!r)return;if(Date.now()<t.expires)return t;if(n.aborted)return;let i=await this.credentials.modify(e.id,async e=>{if(!(e?.type!==`oauth`||Date.now()<e.expires))return r.refresh(e,n)},{signal:n});return i?.type===`oauth`?i:void 0}let r=e.auth.apiKey;if(!r)return;let i=t?.type===`api_key`?t:void 0,a=await r.resolve({ctx:this.authContext,credential:i,signal:n});if(a)return{type:`api_key`,key:a.auth.apiKey,env:a.env}}async readCredential(e,t){try{return await this.credentials.read(e,{signal:t})}catch(t){throw new g(`auth`,`Credential store read failed for ${e}`,{cause:t})}}async checkProviderAuth(e,t,n){if(t?.type===`oauth`)return e.auth.oauth?{source:`OAuth`,type:`oauth`}:void 0;let r=e.auth.apiKey;if(!r)return;if(r.check)try{return await r.check({ctx:this.authContext,credential:t?.type===`api_key`?t:void 0,signal:n})}catch(t){throw new g(`auth`,`API key auth check failed for provider ${e.id}`,{cause:t})}let i=await v(e,this.credentials,this.authContext,{signal:n});return i?{source:i.source,type:`api_key`}:void 0}checkAuth(e,t){let n=p(t?.signal);return m((async()=>{n.throwIfAborted();let t=this.providers.get(e);if(t)return this.checkProviderAuth(t,await this.readCredential(e,n),n)})(),n)}getAvailable(e,t){let n=p(t?.signal);return m((async()=>{n.throwIfAborted();let t=e?[this.providers.get(e)].filter(e=>e!==void 0):this.getProviders();return(await Promise.all(t.map(async e=>{let t=await this.readCredential(e.id,n);return{provider:e,credential:t,auth:await this.checkProviderAuth(e,t,n)}}))).flatMap(({provider:e,credential:t,auth:n})=>{if(!n)return[];let r=e.getModels();return e.filterModels?.(r,t)??r})})(),n)}async getAuth(e,t){let n=p(t?.signal),r=typeof e==`string`?e:e.provider,i=this.providers.get(r);if(!i)return;let a=await v(i,this.credentials,this.authContext,{...t,signal:n});return!a||typeof e==`string`||!e.headers?a:{...a,auth:{...a.auth,headers:D(a.auth.headers,e.headers)}}}async login(e,t,n){let r=p(n.signal);r.throwIfAborted();let i=this.providers.get(e);if(!i)throw new g(`provider`,`Unknown provider: ${e}`);let a=t===`oauth`?i.auth.oauth:i.auth.apiKey;if(!a?.login)throw new g(`auth`,`${i.name} does not support ${t} login`);let o=await m(a.login({...n,signal:r}),r),s=!1,c,l=new Promise(e=>{c=e}),u=this.credentials.modify(e,async()=>(s=!0,c?.(),o),{signal:r});u.catch(()=>{});try{await new Promise((e,t)=>{let n=()=>{s||t(r.reason)};r.addEventListener(`abort`,n,{once:!0}),Promise.race([l,u]).then(()=>{r.removeEventListener(`abort`,n),e()},e=>{r.removeEventListener(`abort`,n),t(e)}),r.aborted&&n()}),await u}catch(t){throw r.throwIfAborted(),new g(`auth`,`Credential store modify failed for ${e}`,{cause:t})}return o}async logout(e,t){let n=p(t?.signal);n.throwIfAborted();try{await this.credentials.delete(e,{signal:n})}catch(t){throw n.throwIfAborted(),new g(`auth`,`Credential store delete failed for ${e}`,{cause:t})}}requireProvider(e){let t=this.providers.get(e.provider);if(!t)throw new g(`provider`,`Unknown provider: ${e.provider}`);return t}async applyAuth(e,t){this.requireProvider(e);let n=await this.getAuth(e,{apiKey:t?.apiKey,env:t?.env,signal:t?.signal});if(!n)throw new g(`auth`,`Provider is not configured: ${e.provider}`);let r=n.auth,i=t?.apiKey??r.apiKey,a=D(r.headers,t?.headers);t?.transformHeaders&&(a=await t.transformHeaders(a??{}));let o=n.env||t?.env?{...n.env??{},...t?.env??{}}:void 0,s=r.baseUrl?{...e,baseUrl:r.baseUrl}:e,{transformHeaders:c,...l}=t??{};return{requestModel:s,requestOptions:{...l,apiKey:i,headers:a,env:o}}}stream(e,t,n){return o(e,async()=>{let r=this.requireProvider(e),{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);return r.stream(i,t,a)})}async complete(e,t,n){return this.stream(e,t,n).result()}streamSimple(e,t,n){return o(e,async()=>{let r=this.requireProvider(e),{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);return r.streamSimple(i,t,a)})}async completeSimple(e,t,n){return this.streamSimple(e,t,n).result()}async fetchDeferred(e,t,n){return o(e,async()=>{let r=this.requireProvider(e);if(!r.fetchDeferred)throw new g(`provider`,`Provider ${e.provider} does not support deferred responses`);let{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);return r.fetchDeferred(i,t,a)}).result()}async cancelDeferred(e,t,n){let r=this.requireProvider(e);if(!r.cancelDeferred)throw new g(`provider`,`Provider ${e.provider} does not support deferred responses`);let{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);await r.cancelDeferred(i,t,a)}};function k(e){return new O(e)}function A(e){let t=e.models,n=[],r=e.fetchModels,i=()=>{let e=[...t];for(let t of n){let n=e.findIndex(e=>e.id===t.id);n>=0?e[n]=t:e.push(t)}return e},a=typeof e.api.stream==`function`?e.api:void 0,s=a?void 0:e.api,c=e=>a??s?.[e.api],l=(t,n)=>{let r=c(t);return r?n(r):o(t,async()=>{throw new g(`stream`,`Provider ${e.id} has no API implementation for "${t.api}"`)})},u={id:e.id,name:e.name??e.id,baseUrl:e.baseUrl,headers:e.headers,auth:e.auth,getModels:i,refreshModels:r?async t=>{if(t.stored){let r=t.stored.models.filter(t=>t.provider===e.id).map(e=>e);if(!await t.publish({update:()=>{n=r}}))return}if(!t.allowNetwork||t.signal.aborted)return;let i=await r(t);t.signal.aborted||await t.publish({persist:{models:i,checkedAt:Date.now()},update:()=>{n=i}})}:void 0,filterModels:e.filterModels,stream:(e,t,n)=>l(e,r=>r.stream(e,t,n)),streamSimple:(e,t,n)=>l(e,r=>r.streamSimple(e,t,n))},d=a?[a]:Object.values(s??{}).filter(e=>e!==void 0);return d.some(e=>e.fetchDeferred!==void 0)&&(u.fetchDeferred=(t,n,r)=>o(t,async()=>{let i=c(t);if(!i?.fetchDeferred)throw new g(`provider`,`Provider ${e.id} does not support deferred responses for "${t.api}"`);return i.fetchDeferred(t,n,r)})),d.some(e=>e.cancelDeferred!==void 0)&&(u.cancelDeferred=async(t,n,r)=>{let i=c(t);if(!i?.cancelDeferred)throw new g(`provider`,`Provider ${e.id} cannot cancel deferred responses for "${t.api}"`);await i.cancelDeferred(t,n,r)}),u}function j(e,t){let n=t.input+t.cacheRead+t.cacheWrite,r=e.cost,i=-1;for(let t of e.cost.tiers??[])n>t.inputTokensAbove&&t.inputTokensAbove>i&&(r=t,i=t.inputTokensAbove);let a=t.cacheWrite1h??0,o=t.cacheWrite-a;return t.cost.input=r.input/1e6*t.input,t.cost.output=r.output/1e6*t.output,t.cost.cacheRead=r.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=(r.cacheWrite*o+r.input*2*a)/1e6,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}var M=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`];function N(e){return e.reasoning?M.filter(t=>{let n=e.thinkingLevelMap?.[t];return n===null?!1:t===`xhigh`||t===`max`?n!==void 0:!0}):[`off`]}function P(e,t){let n=N(e);if(n.includes(t))return t;let r=M.indexOf(t);if(r===-1)return n[0]??`off`;for(let e=r;e<M.length;e++){let t=M[e];if(n.includes(t))return t}for(let e=r-1;e>=0;e--){let t=M[e];if(n.includes(t))return t}return n[0]??`off`}export{s as a,A as i,P as n,k as r,j as t};
|
|
1
|
+
import{i as e,r as t}from"./diagnostics-DN_idNHx.js";import{t as n}from"./preload-helper-Czpn1I53.js";function r(e,t){return{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 instanceof Error?t.message:String(t),timestamp:Date.now()}}function i(e){return typeof e.result==`function`}async function a(e,t){for await(let n of t)e.push(n);e.end(i(t)?await t.result():void 0)}function o(t,n){let i=new e;return n().then(e=>a(i,e)).catch(e=>{let n=r(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}function s(e,t){let n={stream:(t,n,r)=>o(t,async()=>(await e()).stream(t,n,r)),streamSimple:(t,n,r)=>o(t,async()=>(await e()).streamSimple(t,n,r))};return t?.fetchDeferred&&(n.fetchDeferred=(t,n,r)=>o(t,async()=>{let i=await e();if(!i.fetchDeferred)throw Error(`API does not support deferred responses`);return i.fetchDeferred(t,n,r)})),t?.cancelDeferred&&(n.cancelDeferred=async(t,n,r)=>{let i=await e();if(!i.cancelDeferred)throw Error(`API cannot cancel deferred responses`);await i.cancelDeferred(t,n,r)}),n}var c=function(e,t){return typeof e==`string`&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,i,a){return n?t?`.jsx`:`.js`:r&&(!i||!a)?e:r+i+`.`+a.toLowerCase()+`js`}):e},l=e=>n(()=>import(c(e)),[]);function u(){return globalThis.process?.env}function d(){return{async env(e){let t=u()?.[e];return typeof t==`string`&&t.trim().length>0?t:void 0},async fileExists(e){try{let t=await l(`node:fs/promises`),n=e;return n.startsWith(`~`)&&(n=(await l(`node:os`)).homedir()+n.slice(1)),await t.access(n),!0}catch{return!1}}}}function f(e){if(e.reason!==void 0)return e.reason;let t=Error(`The operation was aborted`);return t.name=`AbortError`,t}function p(e){return e??new AbortController().signal}function m(e,t){return t.aborted?(e.catch(()=>{}),Promise.reject(f(t))):new Promise((n,r)=>{let i=!1,a=()=>t.removeEventListener(`abort`,o),o=()=>{i||(i=!0,a(),r(f(t)))};t.addEventListener(`abort`,o,{once:!0}),e.then(e=>{i||(i=!0,a(),n(e))},e=>{i||(i=!0,a(),r(e))}),t.aborted&&o()})}var h=class{credentials=new Map;chains=new Map;enqueue(e,t,n){let r=p(n?.signal),i=this.chains.get(e)??Promise.resolve(),a=(async()=>(await i.catch(()=>{}),r.throwIfAborted(),t()))(),o=a.catch(()=>{});return this.chains.set(e,o),o.then(()=>{this.chains.get(e)===o&&this.chains.delete(e)}),m(a,r)}async read(e,t){return t?.signal?.throwIfAborted(),this.credentials.get(e)}async list(e){return e?.signal?.throwIfAborted(),[...this.credentials].map(([e,t])=>({providerId:e,type:t.type}))}modify(e,t,n){return this.enqueue(e,async()=>{let r=this.credentials.get(e),i=await t(r);return n?.signal?.throwIfAborted(),i!==void 0&&this.credentials.set(e,i),i??r},n)}delete(e,t){return this.enqueue(e,async()=>{this.credentials.delete(e)},t)}},g=class extends Error{code;constructor(e,t,n){super(_(t,n?.cause),n),this.name=`ModelsError`,this.code=e}};function _(e,n){if(n==null)return e;let r=t(n).trim();return!r||e.includes(r)?e:`${e}: ${r}`}function v(e,t,n,r){let i=p(r?.signal);return m(y(e,t,n,r,i),i)}async function y(e,t,n,r,i){i.throwIfAborted();let a=r?.env?b(n,r.env):n;if(r?.apiKey!==void 0&&e.auth.apiKey)return w(a,e.auth.apiKey,e.id,{type:`api_key`,key:r.apiKey,env:r.env},i);let o=await T(t,e.id,i);if(o){if(o.type===`oauth`&&e.auth.oauth)return C(t,e.id,e.auth.oauth,o,i,r?.minOAuthValidityMs);if(o.type===`api_key`&&e.auth.apiKey){let t=r?.env?{...o,env:{...o.env,...r.env}}:o;return w(a,e.auth.apiKey,e.id,t,i)}return}return e.auth.apiKey?w(a,e.auth.apiKey,e.id,void 0,i):void 0}function b(e,t){return{env:async n=>t[n]||await e.env(n),fileExists:t=>e.fileExists(t)}}var x=3e5,S=15e3;async function C(e,t,n,r,i,a){let o=Math.max(x,a??0),s=e=>Date.now()+o>=e.expires,c=r;if(s(c)){let r;try{r=await e.modify(t,async e=>{if(e?.type===`oauth`&&s(e))try{let t=AbortSignal.any([i,AbortSignal.timeout(S)]);return await n.refresh(e,t)}catch(e){throw new g(`oauth`,`OAuth refresh failed for ${t}`,{cause:e})}},{signal:i})}catch(e){throw e instanceof g?e:new g(`auth`,`Credential store modify failed for ${t}`,{cause:e})}if(r?.type!==`oauth`)return;if(c=r,a!==void 0&&s(c))throw new g(`oauth`,`OAuth refresh returned a token that expires too soon for ${t}`)}try{return{auth:await n.toAuth(c),source:`OAuth`}}catch(e){throw new g(`oauth`,`OAuth auth derivation failed for ${t}`,{cause:e})}}async function w(e,t,n,r,i){try{return await t.resolve({ctx:e,credential:r,signal:i})}catch(e){throw new g(`auth`,`API key auth failed for provider ${n}`,{cause:e})}}async function T(e,t,n){try{return await e.read(t,{signal:n})}catch(e){throw new g(`auth`,`Credential store read failed for ${t}`,{cause:e})}}var E=class{entries=new Map;async read(e,t){t?.signal?.throwIfAborted();let n=this.entries.get(e);return n?structuredClone(n):void 0}async write(e,t,n){n?.signal?.throwIfAborted(),this.entries.set(e,structuredClone(t))}async delete(e,t){t?.signal?.throwIfAborted(),this.entries.delete(e)}};function D(e,t){if(!e&&!t)return;let n={...e};for(let[e,r]of Object.entries(t??{})){let t=e.toLowerCase();for(let e of Object.keys(n))e.toLowerCase()===t&&delete n[e];n[e]=r}return n}var O=class{providers=new Map;credentials;modelsStore;authContext;refreshGenerations=new Map;refreshControllers=new Map;publicationChains=new Map;constructor(e){this.credentials=e?.credentials??new h,this.modelsStore=e?.modelsStore??new E,this.authContext=e?.authContext??d()}setProvider(e){this.supersedeProviderRefresh(e.id),this.providers.set(e.id,e)}deleteProvider(e){this.supersedeProviderRefresh(e),this.providers.delete(e)}clearProviders(){for(let e of new Set([...this.providers.keys(),...this.refreshControllers.keys()]))this.supersedeProviderRefresh(e);this.providers.clear()}getProviders(){return Array.from(this.providers.values())}getProvider(e){return this.providers.get(e)}getModels(e){if(e!==void 0){let t=this.providers.get(e);if(!t)return[];try{return t.getModels()}catch{return[]}}let t=[];for(let e of this.providers.values())try{t.push(...e.getModels())}catch{}return t}getModel(e,t){return this.getModels(e).find(e=>e.id===t)}supersedeProviderRefresh(e){let t=(this.refreshGenerations.get(e)??0)+1;this.refreshGenerations.set(e,t);let n=this.refreshControllers.get(e);return n&&(this.refreshControllers.delete(e),n.abort()),t}beginProviderRefresh(e){let t=this.supersedeProviderRefresh(e),n=new AbortController;return this.refreshControllers.set(e,n),{generation:t,controller:n}}publishProviderModels(e,t,n,r){let i=this.publicationChains.get(e)??Promise.resolve(),a=(async()=>(await i.catch(()=>{}),n.aborted||this.refreshGenerations.get(e)!==t||(r.persist===null?await this.modelsStore.delete(e,{signal:n}):r.persist!==void 0&&await this.modelsStore.write(e,structuredClone(r.persist),{signal:n}),n.aborted||this.refreshGenerations.get(e)!==t)?!1:(r.update?.(),!0)))(),o=a.catch(()=>{});return this.publicationChains.set(e,o),o.then(()=>{this.publicationChains.get(e)===o&&this.publicationChains.delete(e)}),m(a,n)}async runProviderRefreshPhase(e,t,n,r,i,a){let o=await this.modelsStore.read(e.id,{signal:a});await e.refreshModels({credential:t,stored:o?structuredClone(o):void 0,publish:t=>this.publishProviderModels(e.id,i,a,t),allowNetwork:n,force:n?r:void 0,signal:a})}async refresh(e={}){let t=e.allowNetwork??!0,n=p(e.signal),r=new Map;if(n.aborted)return{aborted:!0,errors:r};let i=e.providers?new Set(e.providers):void 0,a=Array.from(this.providers.values()).filter(e=>e.refreshModels!==void 0&&(!i||i.has(e.id))),o=Promise.all(a.map(async i=>{let{generation:a,controller:o}=this.beginProviderRefresh(i.id),s=AbortSignal.any([n,o.signal]),c=(async()=>{let n,r;try{n=await this.readCredential(i.id,s)}catch(e){r=e}if(await this.runProviderRefreshPhase(i,n,!1,void 0,a,s),r!==void 0)throw r;if(!t||s.aborted)return;let o=await this.resolveRefreshCredential(i,n,s);o&&await this.runProviderRefreshPhase(i,o,!0,e.force,a,s)})();try{await m(c,s)}catch(e){s.aborted||r.set(i.id,e instanceof Error?e:new g(`model_source`,`Model refresh failed for ${i.id}`,{cause:e}))}finally{this.refreshControllers.get(i.id)===o&&this.refreshControllers.delete(i.id)}}));try{await m(o,n)}catch(e){if(!n.aborted)throw e}return{aborted:n.aborted,errors:new Map(r)}}async resolveRefreshCredential(e,t,n){if(t?.type===`oauth`){let r=e.auth.oauth;if(!r)return;if(Date.now()<t.expires)return t;if(n.aborted)return;let i=await this.credentials.modify(e.id,async e=>{if(!(e?.type!==`oauth`||Date.now()<e.expires))return r.refresh(e,n)},{signal:n});return i?.type===`oauth`?i:void 0}let r=e.auth.apiKey;if(!r)return;let i=t?.type===`api_key`?t:void 0,a=await r.resolve({ctx:this.authContext,credential:i,signal:n});if(a)return{type:`api_key`,key:a.auth.apiKey,env:a.env}}async readCredential(e,t){try{return await this.credentials.read(e,{signal:t})}catch(t){throw new g(`auth`,`Credential store read failed for ${e}`,{cause:t})}}async checkProviderAuth(e,t,n){if(t?.type===`oauth`)return e.auth.oauth?{source:`OAuth`,type:`oauth`}:void 0;let r=e.auth.apiKey;if(!r)return;if(r.check)try{return await r.check({ctx:this.authContext,credential:t?.type===`api_key`?t:void 0,signal:n})}catch(t){throw new g(`auth`,`API key auth check failed for provider ${e.id}`,{cause:t})}let i=await v(e,this.credentials,this.authContext,{signal:n});return i?{source:i.source,type:`api_key`}:void 0}checkAuth(e,t){let n=p(t?.signal);return m((async()=>{n.throwIfAborted();let t=this.providers.get(e);if(t)return this.checkProviderAuth(t,await this.readCredential(e,n),n)})(),n)}getAvailable(e,t){let n=p(t?.signal);return m((async()=>{n.throwIfAborted();let t=e?[this.providers.get(e)].filter(e=>e!==void 0):this.getProviders();return(await Promise.all(t.map(async e=>{let t=await this.readCredential(e.id,n);return{provider:e,credential:t,auth:await this.checkProviderAuth(e,t,n)}}))).flatMap(({provider:e,credential:t,auth:n})=>{if(!n)return[];let r=e.getModels();return e.filterModels?.(r,t)??r})})(),n)}async getAuth(e,t){let n=p(t?.signal),r=typeof e==`string`?e:e.provider,i=this.providers.get(r);if(!i)return;let a=await v(i,this.credentials,this.authContext,{...t,signal:n});return!a||typeof e==`string`||!e.headers?a:{...a,auth:{...a.auth,headers:D(a.auth.headers,e.headers)}}}async login(e,t,n){let r=p(n.signal);r.throwIfAborted();let i=this.providers.get(e);if(!i)throw new g(`provider`,`Unknown provider: ${e}`);let a=t===`oauth`?i.auth.oauth:i.auth.apiKey;if(!a?.login)throw new g(`auth`,`${i.name} does not support ${t} login`);let o=await m(a.login({...n,signal:r}),r),s=!1,c,l=new Promise(e=>{c=e}),u=this.credentials.modify(e,async()=>(s=!0,c?.(),o),{signal:r});u.catch(()=>{});try{await new Promise((e,t)=>{let n=()=>{s||t(r.reason)};r.addEventListener(`abort`,n,{once:!0}),Promise.race([l,u]).then(()=>{r.removeEventListener(`abort`,n),e()},e=>{r.removeEventListener(`abort`,n),t(e)}),r.aborted&&n()}),await u}catch(t){throw r.throwIfAborted(),new g(`auth`,`Credential store modify failed for ${e}`,{cause:t})}return o}async logout(e,t){let n=p(t?.signal);n.throwIfAborted();try{await this.credentials.delete(e,{signal:n})}catch(t){throw n.throwIfAborted(),new g(`auth`,`Credential store delete failed for ${e}`,{cause:t})}}requireProvider(e){let t=this.providers.get(e.provider);if(!t)throw new g(`provider`,`Unknown provider: ${e.provider}`);return t}async applyAuth(e,t){this.requireProvider(e);let n=await this.getAuth(e,{apiKey:t?.apiKey,env:t?.env,signal:t?.signal});if(!n)throw new g(`auth`,`Provider is not configured: ${e.provider}`);let r=n.auth,i=t?.apiKey??r.apiKey,a=D(r.headers,t?.headers);t?.transformHeaders&&(a=await t.transformHeaders(a??{}));let o=n.env||t?.env?{...n.env??{},...t?.env??{}}:void 0,s=r.baseUrl?{...e,baseUrl:r.baseUrl}:e,{transformHeaders:c,...l}=t??{};return{requestModel:s,requestOptions:{...l,apiKey:i,headers:a,env:o}}}stream(e,t,n){return o(e,async()=>{let r=this.requireProvider(e),{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);return r.stream(i,t,a)})}async complete(e,t,n){return this.stream(e,t,n).result()}streamSimple(e,t,n){return o(e,async()=>{let r=this.requireProvider(e),{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);return r.streamSimple(i,t,a)})}async completeSimple(e,t,n){return this.streamSimple(e,t,n).result()}async fetchDeferred(e,t,n){return o(e,async()=>{let r=this.requireProvider(e);if(!r.fetchDeferred)throw new g(`provider`,`Provider ${e.provider} does not support deferred responses`);let{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);return r.fetchDeferred(i,t,a)}).result()}async cancelDeferred(e,t,n){let r=this.requireProvider(e);if(!r.cancelDeferred)throw new g(`provider`,`Provider ${e.provider} does not support deferred responses`);let{requestModel:i,requestOptions:a}=await this.applyAuth(e,n);await r.cancelDeferred(i,t,a)}};function k(e){return new O(e)}function A(e){let t=e.models,n=[],r=e.fetchModels,i=()=>{let e=[...t];for(let t of n){let n=e.findIndex(e=>e.id===t.id);n>=0?e[n]=t:e.push(t)}return e},a=typeof e.api.stream==`function`?e.api:void 0,s=a?void 0:e.api,c=e=>a??s?.[e.api],l=(t,n)=>{let r=c(t);return r?n(r):o(t,async()=>{throw new g(`stream`,`Provider ${e.id} has no API implementation for "${t.api}"`)})},u={id:e.id,name:e.name??e.id,baseUrl:e.baseUrl,headers:e.headers,auth:e.auth,getModels:i,refreshModels:r?async t=>{if(t.stored){let r=t.stored.models.filter(t=>t.provider===e.id).map(e=>e);if(!await t.publish({update:()=>{n=r}}))return}if(!t.allowNetwork||t.signal.aborted)return;let i=await r(t);t.signal.aborted||await t.publish({persist:{models:i,checkedAt:Date.now()},update:()=>{n=i}})}:void 0,filterModels:e.filterModels,stream:(e,t,n)=>l(e,r=>r.stream(e,t,n)),streamSimple:(e,t,n)=>l(e,r=>r.streamSimple(e,t,n))},d=a?[a]:Object.values(s??{}).filter(e=>e!==void 0);return d.some(e=>e.fetchDeferred!==void 0)&&(u.fetchDeferred=(t,n,r)=>o(t,async()=>{let i=c(t);if(!i?.fetchDeferred)throw new g(`provider`,`Provider ${e.id} does not support deferred responses for "${t.api}"`);return i.fetchDeferred(t,n,r)})),d.some(e=>e.cancelDeferred!==void 0)&&(u.cancelDeferred=async(t,n,r)=>{let i=c(t);if(!i?.cancelDeferred)throw new g(`provider`,`Provider ${e.id} cannot cancel deferred responses for "${t.api}"`);await i.cancelDeferred(t,n,r)}),u}function j(e,t){let n=t.input+t.cacheRead+t.cacheWrite,r=e.cost,i=-1;for(let t of e.cost.tiers??[])n>t.inputTokensAbove&&t.inputTokensAbove>i&&(r=t,i=t.inputTokensAbove);let a=t.cacheWrite1h??0,o=t.cacheWrite-a;return t.cost.input=r.input/1e6*t.input,t.cost.output=r.output/1e6*t.output,t.cost.cacheRead=r.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=(r.cacheWrite*o+r.input*2*a)/1e6,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}var M=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`];function N(e){return e.reasoning?M.filter(t=>{let n=e.thinkingLevelMap?.[t];return n===null?!1:t===`xhigh`||t===`max`?n!==void 0:!0}):[`off`]}function P(e,t){let n=N(e);if(n.includes(t))return t;let r=M.indexOf(t);if(r===-1)return n[0]??`off`;for(let e=r;e<M.length;e++){let t=M[e];if(n.includes(t))return t}for(let e=r-1;e>=0;e--){let t=M[e];if(n.includes(t))return t}return n[0]??`off`}export{N as a,A as i,P as n,s as o,k as r,j as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/account-store-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./mime-types-D0xZwlMO.js";import{r as n,t as r}from"./base64-ELzoYfwP.js";import{t as i}from"./types-D8gIX-W-.js";import"./mount-table-store-dY2IfQ5S.js";import"./fs-
|
|
3
|
-
`;function h(){let e=new Uint8Array(16);if(typeof crypto<`u`&&typeof crypto.getRandomValues==`function`)crypto.getRandomValues(e);else for(let t=0;t<e.length;t+=1)e[t]=Math.floor(Math.random()*256);let t=``;for(let n of e)t+=n.toString(16).padStart(2,`0`);return`----SliccFormBoundary${t}`}function g(e,t=h()){let n=new TextEncoder,r=[];for(let i of e){let e=v(_(i.name));if(`file`in i){let a=v(i.file.filename),o=y(i.file.contentType)||`application/octet-stream`;r.push(n.encode(`--${t}${m}Content-Disposition: form-data; name="${e}"; filename="${a}"${m}Content-Type: ${o}${m}${m}`)),r.push(i.file.bytes),r.push(n.encode(m))}else r.push(n.encode(`--${t}${m}Content-Disposition: form-data; name="${e}"${m}${m}${_(i.value)}${m}`))}return r.push(n.encode(`--${t}--${m}`)),{bytes:b(r),contentType:`multipart/form-data; boundary=${t}`,boundary:t}}function _(e){return e.replace(/\r\n|\r|\n/g,m)}function v(e){return e.replace(/\r/g,`%0D`).replace(/\n/g,`%0A`).replace(/"/g,`%22`)}function y(e){return(e??``).replace(/[\r\n]/g,``).trim()}function b(e){let t=0;for(let n of e)t+=n.byteLength;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.byteLength;return n}function x(e,t,n){let r=g([{name:`data`,file:{bytes:n,filename:e,contentType:t}}]);return{contentType:r.contentType,body:r.bytes}}function S(e){return e.split(`/`).pop()||`data`}function C(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var w=5242880,T=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=C(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??w,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let a=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(a.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(a.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(a.status===401||a.status===403)throw new i(`EACCES`,`da access denied`,e);if(a.status>=400)throw new i(`EIO`,`da readFile failed: ${a.status}`,e);let o=a.headers.get(`content-length`),s=o?Number(o):void 0;if(s!==void 0&&s>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=new Uint8Array(await a.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=a.headers.get(`etag`)??``,u=l.startsWith(`W/`)?l.slice(2):l;return await this.cache.putBody(t,c,u),c}async writeFile(e,n){if(this.assertOpen(e),n.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=this.toMountRelative(e),a=await this.cache.getBody(r),o=x(S(e),t(e),n),s={"content-type":o.contentType,"content-length":String(o.body.byteLength)};a?.etag?s[`if-match`]=a.etag.startsWith(`W/`)?a.etag.slice(2):a.etag:a||(s[`if-none-match`]=`*`);let c=()=>this.transport({method:`POST`,path:this.toSourcePath(r),headers:s,body:o.body}),l,u=1;try{l=await c()}catch{u=2,l=await c()}if(l.status===412){if(u===2){let t=await this.transport({method:`HEAD`,path:this.toSourcePath(r)});if(t.status>=400)throw new i(`EIO`,`da reconcile HEAD failed: ${t.status}`,e);let a=t.headers.get(`etag`)??``;await this.cache.putBody(r,n,a);let o=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o);return}await this.cache.invalidateBody(r);try{await this.readFile(e)}catch{}throw new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(l.status===401||l.status===403)throw new i(`EACCES`,`da write denied`,e);if(l.status>=400)throw new i(`EIO`,`da writeFile failed: ${l.status}`,e);let d=l.headers.get(`etag`)??``;await this.cache.putBody(r,n,d);let f=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(f)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new i(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new i(`EIO`,`da list failed: ${r.status}`,e);let a=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,a),a}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o);if(s&&!this.cache.isStale(s.cachedAt)){let t=s.entries.find(e=>e.name===a);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??s.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??s.cachedAt};if(!t)throw new i(`ENOENT`,`no such file or directory`,e)}let c=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(c.status===200){let e=Number(c.headers.get(`content-length`)??`0`),t=c.headers.get(`etag`)??``,n=c.headers.get(`last-modified`),r=n?Date.parse(n):0;if(s){let n=s.entries.map(n=>n.name===a&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(o,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(c.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new i(`ENOENT`,`no such file or directory`,e)}throw new i(`EIO`,`da stat failed: ${c.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new i(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new i(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new i(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function E(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var D=26214400,O=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=E(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??D,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let a=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(a.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(a.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(a.status===401||a.status===403)throw new i(`EACCES`,`s3 access denied`,e);if(a.status>=400)throw new i(`EIO`,`s3 readFile failed: ${a.status}`,e);let o=a.headers.get(`content-length`),s=o?Number(o):void 0;if(s!==void 0&&s>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes (${s} > ${this.maxBodyBytes})`,e);let c=new Uint8Array(await a.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=a.headers.get(`etag`)??``;return await this.cache.putBody(t,c,l),c}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),a={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?a[`if-match`]=r.etag:a[`if-none-match`]=`*`;let o=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:a,body:t}),s,c=1;try{s=await o()}catch{c=2,s=await o()}if(s.status===412){if(c===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new i(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let a=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,a);let o=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(s.status===401||s.status===403)throw new i(`EACCES`,`s3 write denied`,e);if(s.status>=400)throw new i(`EIO`,`s3 writeFile failed: ${s.status}`,e);let l=s.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new i(`EIO`,`s3 list failed: ${r.status}`,`/`);let a=await r.text(),o=this.parseListingXml(a);e.push(...o.contents),t=o.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o);if(s&&!this.cache.isStale(s.cachedAt)){let t=s.entries.find(e=>e.name===a);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??s.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??s.cachedAt};if(!t)throw new i(`ENOENT`,`no such file or directory`,e)}let c=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(c.status===200){let e=Number(c.headers.get(`content-length`)??`0`),t=c.headers.get(`etag`)??``,n=c.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(c.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new i(`ENOENT`,`no such file or directory`,e)}throw new i(`EIO`,`s3 stat failed: ${c.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new i(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new i(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new i(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},k=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function A(){let{getAccounts:t}=await e(async()=>{let{getAccounts:e}=await import(`./account-store-BIWge689.js`).then(e=>e.r);return{getAccounts:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),n=t().find(e=>e.providerId===`adobe`);if(!n?.accessToken)throw new k(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>n.accessToken}}var j=r,M=n,N=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),P=new Set([101,103,204,205,304]);function F(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new i(`EACCES`,e.error):e.errorCode===`invalid_request`?new i(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||N.has(String(e.errorCode))?new i(`EIO`,e.error):new i(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=j(e.bodyBase64)}catch(e){throw new i(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=P.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function I(e){throw new i(`EIO`,`mount transport unavailable: setMountCapabilityBroker was never called for this float (composition bug — refusing to guess a transport for a privileged sign-and-forward request)`)}function L(e){return async t=>F(await I({backend:`s3`,envelope:{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?M(t.body):void 0}}))}function R(e){let t=e?.getImsToken??(async()=>(await A()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new i(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return F(await I({backend:`da`,envelope:{imsToken:n,method:e.method,path:e.path,origin:e.origin,query:e.query,headers:e.headers,bodyBase64:e.body?M(e.body):void 0}}))}}export{p as AemMountBackend,T as DaMountBackend,a as RemoteMountCache,O as S3MountBackend,R as makeSignedFetchDa,L as makeSignedFetchS3};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/account-store-BPOuwEUe.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/core-D8SLLGdB.js","assets/compat-Dy2zIWAW.js","assets/models-YdybRRvT.js","assets/diagnostics-DN_idNHx.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-DiXk_XGs.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Dp-BrqwV.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-Bz7u6y4g.js","assets/bedrock-camp-extra-models-IBZyfEdZ.js","assets/claude-model-version-DZmbk9E2.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./mime-types-D0xZwlMO.js";import{r as n,t as r}from"./base64-ELzoYfwP.js";import{t as i}from"./types-D8gIX-W-.js";import"./mount-table-store-dY2IfQ5S.js";import"./fs-CB72Wfta.js";import{t as a}from"./remote-cache-CuIV6-dC.js";var o=`https://api.aem.live`,s=`application/folder`,c=5242880;function l(e){let t=e.match(/^aem:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid AEM source '${e}' — expected aem://org/site[/path]`);return{org:t[1],site:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}function u(e){if(!e)return``;let t=Date.parse(e);return Number.isNaN(t)?``:String(t)}function d(e){let t=Date.parse(e??``);return Number.isNaN(t)?0:t}function f(e){return e.map(e=>e[`content-type`]===s||e.name.endsWith(`/`)?{name:e.name.replace(/\/+$/,``),kind:`directory`}:{name:e.name,kind:`file`,size:e.size,etag:u(e[`last-modified`]),lastModified:d(e[`last-modified`])})}var p=class{kind=`aem`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=l(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??c,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`),r=`/${this.parsed.org}/sites/${this.parsed.site}/source`;return n?`${r}/${n}`:r}toListPath(e){return`${this.toSourcePath(e)}/`}request(e,t,n){return this.transport({method:e,path:t,origin:o,headers:n?.headers,body:n?.body})}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r=await this.request(`GET`,this.toSourcePath(t));if(r.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`aem access denied`,e);if(r.status>=400)throw new i(`EIO`,`aem readFile failed: ${r.status}`,e);let a=new Uint8Array(await r.arrayBuffer());if(a.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);return await this.cache.putBody(t,a,u(r.headers.get(`last-modified`))),a}async assertUnchanged(e,t,n){if(!n)return;let r=await this.request(`HEAD`,this.toSourcePath(t));if(r.status===404)return;if(r.status>=400)throw new i(`EIO`,`aem precondition HEAD failed: ${r.status}`,e);let a=u(r.headers.get(`last-modified`));if(a&&a!==n)throw await this.cache.invalidateBody(t),new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n);await this.assertUnchanged(e,n,r?.etag??``);let a=await this.request(`PUT`,this.toSourcePath(n),{body:t});if(a.status===401||a.status===403)throw new i(`EACCES`,`aem write denied`,e);if(a.status>=400)throw new i(`EIO`,`aem writeFile failed: ${a.status}`,e);await this.cache.invalidateBody(n);let o=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.request(`GET`,this.toListPath(t));if(r.status===404)throw new i(`ENOENT`,`no such directory`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`aem access denied`,e);if(r.status>=400)throw new i(`EIO`,`aem list failed: ${r.status}`,e);let a=f(await r.json());return await this.cache.putListing(t,a),a}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e);if(t===``)return{kind:`directory`,size:0,mtime:0};let n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o),c=(s&&!this.cache.isStale(s.cachedAt)?s.entries:await this.readDirQuietly(o))?.find(e=>e.name===a);if(!c)throw new i(`ENOENT`,`no such file or directory`,e);return c.kind===`directory`?{kind:`directory`,size:0,mtime:c.lastModified??0}:{kind:`file`,size:c.size??0,mtime:c.lastModified??0,etag:c.etag??``}}async readDirQuietly(e){try{return await this.readDir(e)}catch{return null}}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.request(`DELETE`,this.toSourcePath(t));if(n.status===404)throw new i(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new i(`EACCES`,`aem delete denied`,e);if(n.status>=400)throw new i(`EIO`,`aem delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.request(`GET`,this.toListPath(e));if(r.status===404){await this.cache.putListing(e,[]);return}if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=f(await r.json());for(let r of i){let i=e?`${e}/${r.name}`:r.name;r.kind===`directory`?n.push(i):await this.classifyFile(i,r.etag??``,t)}await this.cache.putListing(e,i)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.site}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},m=`\r
|
|
3
|
+
`;function h(){let e=new Uint8Array(16);if(typeof crypto<`u`&&typeof crypto.getRandomValues==`function`)crypto.getRandomValues(e);else for(let t=0;t<e.length;t+=1)e[t]=Math.floor(Math.random()*256);let t=``;for(let n of e)t+=n.toString(16).padStart(2,`0`);return`----SliccFormBoundary${t}`}function g(e,t=h()){let n=new TextEncoder,r=[];for(let i of e){let e=v(_(i.name));if(`file`in i){let a=v(i.file.filename),o=y(i.file.contentType)||`application/octet-stream`;r.push(n.encode(`--${t}${m}Content-Disposition: form-data; name="${e}"; filename="${a}"${m}Content-Type: ${o}${m}${m}`)),r.push(i.file.bytes),r.push(n.encode(m))}else r.push(n.encode(`--${t}${m}Content-Disposition: form-data; name="${e}"${m}${m}${_(i.value)}${m}`))}return r.push(n.encode(`--${t}--${m}`)),{bytes:b(r),contentType:`multipart/form-data; boundary=${t}`,boundary:t}}function _(e){return e.replace(/\r\n|\r|\n/g,m)}function v(e){return e.replace(/\r/g,`%0D`).replace(/\n/g,`%0A`).replace(/"/g,`%22`)}function y(e){return(e??``).replace(/[\r\n]/g,``).trim()}function b(e){let t=0;for(let n of e)t+=n.byteLength;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.byteLength;return n}function x(e,t,n){let r=g([{name:`data`,file:{bytes:n,filename:e,contentType:t}}]);return{contentType:r.contentType,body:r.bytes}}function S(e){return e.split(`/`).pop()||`data`}function C(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var w=5242880,T=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=C(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??w,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let a=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(a.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(a.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(a.status===401||a.status===403)throw new i(`EACCES`,`da access denied`,e);if(a.status>=400)throw new i(`EIO`,`da readFile failed: ${a.status}`,e);let o=a.headers.get(`content-length`),s=o?Number(o):void 0;if(s!==void 0&&s>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=new Uint8Array(await a.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=a.headers.get(`etag`)??``,u=l.startsWith(`W/`)?l.slice(2):l;return await this.cache.putBody(t,c,u),c}async writeFile(e,n){if(this.assertOpen(e),n.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=this.toMountRelative(e),a=await this.cache.getBody(r),o=x(S(e),t(e),n),s={"content-type":o.contentType,"content-length":String(o.body.byteLength)};a?.etag?s[`if-match`]=a.etag.startsWith(`W/`)?a.etag.slice(2):a.etag:a||(s[`if-none-match`]=`*`);let c=()=>this.transport({method:`POST`,path:this.toSourcePath(r),headers:s,body:o.body}),l,u=1;try{l=await c()}catch{u=2,l=await c()}if(l.status===412){if(u===2){let t=await this.transport({method:`HEAD`,path:this.toSourcePath(r)});if(t.status>=400)throw new i(`EIO`,`da reconcile HEAD failed: ${t.status}`,e);let a=t.headers.get(`etag`)??``;await this.cache.putBody(r,n,a);let o=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o);return}await this.cache.invalidateBody(r);try{await this.readFile(e)}catch{}throw new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(l.status===401||l.status===403)throw new i(`EACCES`,`da write denied`,e);if(l.status>=400)throw new i(`EIO`,`da writeFile failed: ${l.status}`,e);let d=l.headers.get(`etag`)??``;await this.cache.putBody(r,n,d);let f=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(f)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new i(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new i(`EIO`,`da list failed: ${r.status}`,e);let a=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,a),a}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o);if(s&&!this.cache.isStale(s.cachedAt)){let t=s.entries.find(e=>e.name===a);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??s.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??s.cachedAt};if(!t)throw new i(`ENOENT`,`no such file or directory`,e)}let c=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(c.status===200){let e=Number(c.headers.get(`content-length`)??`0`),t=c.headers.get(`etag`)??``,n=c.headers.get(`last-modified`),r=n?Date.parse(n):0;if(s){let n=s.entries.map(n=>n.name===a&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(o,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(c.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new i(`ENOENT`,`no such file or directory`,e)}throw new i(`EIO`,`da stat failed: ${c.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new i(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new i(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new i(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function E(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var D=26214400,O=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=E(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??D,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new i(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let a=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(a.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(a.status===404)throw await this.cache.invalidateBody(t),new i(`ENOENT`,`no such file`,e);if(a.status===401||a.status===403)throw new i(`EACCES`,`s3 access denied`,e);if(a.status>=400)throw new i(`EIO`,`s3 readFile failed: ${a.status}`,e);let o=a.headers.get(`content-length`),s=o?Number(o):void 0;if(s!==void 0&&s>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes (${s} > ${this.maxBodyBytes})`,e);let c=new Uint8Array(await a.arrayBuffer());if(c.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=a.headers.get(`etag`)??``;return await this.cache.putBody(t,c,l),c}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new i(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),a={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?a[`if-match`]=r.etag:a[`if-none-match`]=`*`;let o=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:a,body:t}),s,c=1;try{s=await o()}catch{c=2,s=await o()}if(s.status===412){if(c===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new i(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let a=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,a);let o=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(o);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new i(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(s.status===401||s.status===403)throw new i(`EACCES`,`s3 write denied`,e);if(s.status>=400)throw new i(`EIO`,`s3 writeFile failed: ${s.status}`,e);let l=s.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new i(`EIO`,`s3 list failed: ${r.status}`,`/`);let a=await r.text(),o=this.parseListingXml(a);e.push(...o.contents),t=o.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),a=r.pop()??``,o=r.join(`/`),s=await this.cache.getListing(o);if(s&&!this.cache.isStale(s.cachedAt)){let t=s.entries.find(e=>e.name===a);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??s.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??s.cachedAt};if(!t)throw new i(`ENOENT`,`no such file or directory`,e)}let c=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(c.status===200){let e=Number(c.headers.get(`content-length`)??`0`),t=c.headers.get(`etag`)??``,n=c.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(c.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new i(`ENOENT`,`no such file or directory`,e)}throw new i(`EIO`,`s3 stat failed: ${c.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new i(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new i(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new i(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new i(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},k=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function A(){let{getAccounts:t}=await e(async()=>{let{getAccounts:e}=await import(`./account-store-BPOuwEUe.js`).then(e=>e.r);return{getAccounts:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),n=t().find(e=>e.providerId===`adobe`);if(!n?.accessToken)throw new k(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>n.accessToken}}var j=r,M=n,N=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),P=new Set([101,103,204,205,304]);function F(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new i(`EACCES`,e.error):e.errorCode===`invalid_request`?new i(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||N.has(String(e.errorCode))?new i(`EIO`,e.error):new i(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=j(e.bodyBase64)}catch(e){throw new i(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=P.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function I(e){throw new i(`EIO`,`mount transport unavailable: setMountCapabilityBroker was never called for this float (composition bug — refusing to guess a transport for a privileged sign-and-forward request)`)}function L(e){return async t=>F(await I({backend:`s3`,envelope:{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?M(t.body):void 0}}))}function R(e){let t=e?.getImsToken??(async()=>(await A()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new i(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return F(await I({backend:`da`,envelope:{imsToken:n,method:e.method,path:e.path,origin:e.origin,query:e.query,headers:e.headers,bodyBase64:e.body?M(e.body):void 0}}))}}export{p as AemMountBackend,T as DaMountBackend,a as RemoteMountCache,O as S3MountBackend,R as makeSignedFetchDa,L as makeSignedFetchS3};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,i as n,n as r,s as i,t as a}from"./signed-fetch-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,i as n,n as r,s as i,t as a}from"./signed-fetch-Di_V1YOi.js";import{t as o}from"./remote-cache-UwMD8EkX.js";var s=e({AEM_SOURCE_BUS_ORIGIN:()=>AEM_SOURCE_BUS_ORIGIN,AemMountBackend:()=>i,DaMountBackend:()=>t,RemoteMountCache:()=>o,S3MountBackend:()=>n,makeSignedFetchDa:()=>a,makeSignedFetchS3:()=>r});export{s as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n}from"./feature-flags-DvsApnS-.js";import{V as r,g as i}from"./account-store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-CE4gvSHd.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/compat-Dy2zIWAW.js","assets/models-YdybRRvT.js","assets/diagnostics-DN_idNHx.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/logger-DDBAeTLF.js","assets/account-store-BPOuwEUe.js","assets/core-D8SLLGdB.js","assets/libesm-BypnjKEL.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-DiXk_XGs.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Dp-BrqwV.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-Bz7u6y4g.js","assets/bedrock-camp-extra-models-IBZyfEdZ.js","assets/claude-model-version-DZmbk9E2.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-dEBJiC8z.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n}from"./feature-flags-DvsApnS-.js";import{V as r,g as i}from"./account-store-BPOuwEUe.js";import"./main-CwH54Phg.js";import{t as a}from"./llm-session-id-bZQs6gBN.js";import{F as o,G as s,I as c,L as l,R as u,W as d,z as f}from"./wc-live-CNuwE1YV.js";var p=t(`new-session`),m=`ui-new-session`,h=2e4,g=250;async function _(e){try{let t=await e.openVfs(),n=i()??void 0;if(!n)return;let o;try{o=r()}catch{return}let s=o.provider===`adobe`?{"X-Session-Id":a(m)}:void 0;await f({vfs:t,model:o,apiKey:n,headers:s}),e.onComplete?.()}catch(e){p.warn(`Pending session catch-up failed (boot continues)`,{error:e instanceof Error?e.message:String(e)})}}function v(e){(e.schedule??y)(()=>{_(e)})}function y(e){if(typeof globalThis.requestIdleCallback==`function`){globalThis.requestIdleCallback(e,{timeout:5e3});return}setTimeout(e,0)}function b(e){if(n(`agentic-memory`)){if(!e.agenticMemorySpawn){p.info(`Agentic memory enabled but agent bridge unavailable — using legacy enrichment`);return}return e.agenticMemorySpawn}}async function x(e,t,n,r,i,a){let o=await l({sessionStore:t,vfs:e.vfs,mode:`quick`,agenticMemorySpawn:a,cone:e.cone});if(!o)return null;if(e.captureCompleteSnapshot)try{await e.captureCompleteSnapshot(o)}catch(t){let n=t?.code??`unknown`;p.warn(`captureCompleteSnapshot failed`,{code:n}),o.completeSnapshotUnavailable=!0;try{await u(e.vfs,o.filename)}catch{}}return S(e,t,n,r,i,a,o),o}async function S(t,n,r,i,a,s,l){let u=l;try{let n=await c(t.vfs,l,{model:r,apiKey:i,headers:a,skipMemory:!0,pickIcon:t=>e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-CE4gvSHd.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])).then(({pickLucideIcon:e})=>e(t))});n&&(u={...n,archive:l.archive},t.onBackgroundEnriched?.(n))}catch(e){p.warn(`Agentic title enrichment threw (draft stays pending)`,{filename:l.filename,error:e instanceof Error?e.message:String(e)})}let d=await o({sessionStore:n,vfs:t.vfs,mode:`full`,model:r,apiKey:i,headers:a,agenticMemorySpawn:s,cone:t.cone},u).catch(e=>(p.warn(`Agentic memory curator threw (entry stays pending)`,{filename:u.filename,error:e instanceof Error?e.message:String(e)}),null));p.info(`Agentic memory curator finished`,{filename:u.filename,memoryPending:!d||d.memoryPending===!0}),t.onBackgroundEnriched?.(d),t.onSessionSettled?.(d??u)}function C(e){return e?.code===`ENOENT`}function w(e,t){return e===t||t.startsWith(e.endsWith(`/`)?e:`${e}/`)}async function T(e,t,n,r){for(let i of n){let n=`${t}/${i.name}`;if(!r.has(n)){if(i.type===`directory`){let t;try{t=await e.readDir(n)}catch(e){if(C(e))continue;throw e}if(await T(e,n,t,r),[...r].some(e=>e.startsWith(`${n}/`)))continue}try{await e.rm(n)}catch(e){if(!C(e))throw e}}}}async function E(e,t){let n=(await e.listMountPoints()).map(({path:e})=>e);if(n.some(e=>w(e,t)))return;let r=new Set(n.filter(e=>e.startsWith(`${t}/`))),i;try{i=await e.readDir(t)}catch(n){if(n?.code!==`ENOENT`)throw n;await e.mkdir(t,{recursive:!0});return}await T(e,t,i,r),await e.mkdir(t,{recursive:!0})}async function D(t){let n=t.enrichmentRaceMs??h,o=i()??void 0,f;try{f=r()}catch(e){p.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let g=f?.provider===`adobe`?{"X-Session-Id":a(m)}:void 0,_=new s(new d),v=o&&f?b(t):void 0;if(v)return await x(t,_,f,o,g,v);let y=await l({sessionStore:_,vfs:t.vfs,mode:`quick`,cone:t.cone});if(!y)return null;if(t.captureCompleteSnapshot)try{await t.captureCompleteSnapshot(y)}catch(e){let n=e?.code??`unknown`;p.warn(`captureCompleteSnapshot failed`,{code:n}),y.completeSnapshotUnavailable=!0;try{await u(t.vfs,y.filename)}catch{}}if(!o||!f)return p.info(`Frozen without enrichment (no LLM credentials) — left pending`,{filename:y.filename}),t.onSessionSettled?.(y),y;let S=f,C=c(t.vfs,y,{model:S,apiKey:o,headers:g,pickIcon:t=>e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-CE4gvSHd.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])).then(({pickLucideIcon:e})=>e(t))}).catch(e=>(p.warn(`Single-click enrichment threw (entry stays pending)`,{filename:y.filename,error:e instanceof Error?e.message:String(e)}),null)),w=await O(C,n,t.onProgress);if(w.kind===`llm`){let e=w.updated?{...w.updated,archive:y.archive}:y;return t.onSessionSettled?.(e),e}return C.then(e=>{p.info(`Background enrichment resolved after race window`,{filename:y.filename,enriched:e?.filename??null}),t.onBackgroundEnriched?.(e),t.onSessionSettled?.(e??y)}),y}async function O(e,t,n){let r=Date.now(),i,a;n?.(0),n&&(i=setInterval(()=>{n(Math.min(1,(Date.now()-r)/t))},g));let o=new Promise(e=>{a=setTimeout(()=>e({kind:`timer`}),t)}),s=e.then(e=>({kind:`llm`,updated:e}));try{return await Promise.race([s,o])}finally{i&&clearInterval(i),a&&clearTimeout(a),n?.(null)}}async function k(e){return j(e,void 0)}async function A(e){return j(e,`skip`)}async function j(e,t){let n=new s(new d),r=await l({sessionStore:n,vfs:e.vfs,mode:`quick`,cone:e.cone,...t?{memory:t}:{}});if(r&&e.captureCompleteSnapshot)try{await e.captureCompleteSnapshot(r)}catch(t){let n=t?.code??`unknown`;p.warn(`captureCompleteSnapshot failed (quick-freeze)`,{code:n}),r.completeSnapshotUnavailable=!0;try{await u(e.vfs,r.filename)}catch{}}return r&&e.onSessionSettled?.(r),r}export{E as resetNewSessionTmp,A as runNewSessionArchiveOnly,D as runNewSessionFreeze,k as runNewSessionFreezeQuick,v as schedulePendingSessionCatchup};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/provider-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{K as n,f as r}from"./account-store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/provider-okk2DhJ-.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/account-store-BPOuwEUe.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/core-D8SLLGdB.js","assets/compat-Dy2zIWAW.js","assets/models-YdybRRvT.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-DiXk_XGs.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Dp-BrqwV.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-Bz7u6y4g.js","assets/bedrock-camp-extra-models-IBZyfEdZ.js","assets/claude-model-version-DZmbk9E2.js","assets/global-db-CbuLl-zx.js","assets/bridge-token-required-DMk2va9k.js","assets/pkce-hGf_TEnP.js","assets/types-D8gIX-W-.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{K as n,f as r}from"./account-store-BPOuwEUe.js";import{t as i}from"./providers-Dp-BrqwV.js";import"./main-CwH54Phg.js";import"./logger-BoSvu4mW.js";var a=t(`oauth-bootstrap`),o=6e4;function s(e){return e instanceof Error?e.message:String(e)}async function c(){try{let{ensureAllMcpProvidersRegistered:t}=await e(async()=>{let{ensureAllMcpProvidersRegistered:e}=await import(`./provider-okk2DhJ-.js`);return{ensureAllMcpProvidersRegistered:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33])),n=await t();n.length>0&&a.debug(`Pre-registered MCP providers for OAuth bootstrap`,{count:n.length})}catch(e){a.warn(`Failed to pre-register MCP providers for OAuth bootstrap`,{error:s(e)})}}function l(e){return(e.tokenExpiresAt??1/0)-Date.now()<=o}async function u(e){let t=i(e.providerId);if(!t?.onSilentRenew){a.debug(`Skipping expired account (no silent-renew hook)`,{providerId:e.providerId});return}try{if(await t.onSilentRenew()){a.info(`Silently renewed OAuth token`,{providerId:e.providerId});return}a.warn(`Silent renewal yielded no token; user must re-authenticate`,{providerId:e.providerId})}catch(t){a.warn(`Silent renewal failed`,{providerId:e.providerId,error:s(t)})}}async function d(e,t){try{await n({providerId:e.providerId,accessToken:t,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar}),a.debug(`Bootstrapped OAuth replica`,{providerId:e.providerId})}catch(t){a.error(`OAuth bootstrap failed`,{providerId:e.providerId,error:s(t)})}}async function f(e){let t=e.accessToken;if(!t){a.debug(`Skipping account without token`,{providerId:e.providerId});return}if(l(e)){await u(e);return}await d(e,t)}async function p(){await c();let e=r();a.info(`Bootstrap OAuth replicas`,{count:e.length});for(let t of e)await f(t)}export{p as bootstrapOAuthReplicas};
|
package/dist/ui/assets/{onboarding-orchestrator-DH0uHEvH.js → onboarding-orchestrator-Co8U3c5X.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./slugify-BYJ6QVAt.js";import{i as n}from"./wc-onboarding-CIOt6HoW.js";var r={openai:{url:e=>`${(e??`https://api.openai.com`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},anthropic:{url:e=>`${(e??`https://api.anthropic.com`).replace(/\/$/,``)}/v1/models`,headers:e=>({"x-api-key":e,"anthropic-version":`2023-06-01`})},groq:{url:e=>`${(e??`https://api.groq.com/openai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},cerebras:{url:e=>`${(e??`https://api.cerebras.ai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},mistral:{url:e=>`${(e??`https://api.mistral.ai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},"x-ai":{url:e=>`${(e??`https://api.x.ai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},deepseek:{url:e=>`${(e??`https://api.deepseek.com`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},openrouter:{url:e=>`${(e??`https://openrouter.ai/api`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},google:{url:e=>`${(e??`https://generativelanguage.googleapis.com`).replace(/\/$/,``)}/v1beta/models`,headers:()=>({})}};function i(e,t){if(e===401||e===403)return`Authentication failed — the key was rejected by the provider.`;if(e===404)return`Endpoint not found — check the base URL.`;if(e===429)return`Rate-limited — try again in a moment.`;if(e>=500)return`Provider returned a server error.`;let n=t.trim();return n?`${e}: ${n.slice(0,160)}`:`Provider responded with HTTP ${e}.`}async function a(e){let{provider:t,apiKey:n,baseUrl:a,signal:o}=e,s=e.fetchImpl??fetch,c=n.trim();if(!c)return{kind:`failed`,status:null,message:`API key is empty.`};let l=r[t];if(!l)return{kind:`skipped`,reason:`No live validation available for "${t}" — saving without testing.`};let u=l.url(a);if(t===`google`){let e=u.includes(`?`)?`&`:`?`;u=`${u}${e}key=${encodeURIComponent(c)}`}try{let e=await s(u,{method:`GET`,headers:l.headers(c),signal:o});if(e.ok)return{kind:`ok`};let t=``;try{t=await e.text()}catch{}return e.status===401||e.status,{kind:`failed`,status:e.status,message:i(e.status,t)}}catch(e){if(e?.name===`AbortError`)throw e;return{kind:`skipped`,reason:`Couldn't reach the provider (${e instanceof Error?e.message:String(e)}). Saving without live test — you can retry from Settings.`}}}var o=[e=>`Nice to meet you, ${e}.`,e=>`Hello ${e} — glad you stopped by.`,e=>`Hey ${e}, welcome aboard.`,e=>`${e}! Pleasure to make your acquaintance.`],s=[`Nice to meet you, mysterious stranger — I'll respect the incognito.`,`Hello, anonymous traveler. You can always tell me your name later if you change your mind.`,`An unnamed visitor — intriguing. Whenever you'd like to introduce yourself, just say the word.`,`Hey there, ghost — happy to keep things first-name-optional. The door's always open if you decide to drop the cloak.`],c={work:[`Work mode — let's make today productive.`,`On the clock? Same. Let's chip away at it.`],school:[`School business — I love a good study session.`,`Hitting the books? Glad to ride along.`],personal:[`Personal project energy is the best kind.`,`Tinkering for yourself is how the good stuff happens.`],"side-project":[`Side projects keep the lights on creatively.`,`Two-job life — respect.`],exploring:[`Just poking around? Excellent. The best discoveries start there.`,`Exploration mode — no agenda, no pressure.`]},l={developer:[`I can write code, run shell commands, drive a real browser, and ship pages.`,`Code, terminals, browsers, repos — I live in all of them.`],designer:[`I can prototype layouts, generate assets, and walk page editors with you.`,`Pixels, components, screenshots — design ops are my jam.`],"content-creator":[`I can draft copy, edit, scrape references, and stitch publish-ready pages.`,`Words, structure, SEO, polish — say the topic and I'll get moving.`],marketer:[`I can audit funnels, scrape competitors, and stand up landing pages quickly.`,`Campaigns, analytics, creatives — plug me in and I'll go.`],"product-pm":[`I can summarise research, draft specs, and crunch competitive intel.`,`Briefs, roadmaps, comparisons — I take the boring half off your plate.`],founder:[`I can prototype landing pages, automate ops, and prep investor decks.`,`Idea → MVP → repeat. I'll do the legwork between coffee refills.`],student:[`I can read papers with you, draft notes, and turn lectures into outlines.`,`Studying together makes it bearable — let me handle the busywork.`],researcher:[`I can scrape sources, summarise findings, and keep a running bibliography.`,`Lit reviews, datasets, write-ups — I'm all in.`],other:[`I'm flexible — give me a task and I'll figure out the right tools.`,`Whatever the role, I can probably help. Tell me what's on the docket.`]},u=[`I can browse the web, run commands, write code, and automate the boring parts.`,`I'm comfortable with terminals, browsers, files, and a long backlog of skills.`],d=[`But to be honest, I'm not really an AI yet — I'm an empty shell. You'll need to help me become intelligent. Pick a model and I'll wake up:`,`Confession time: I can't actually think yet. Wire me up to an LLM and I'll start earning my keep:`,`Plot twist — there's no brain in here. Choose a provider so I can do more than read this script:`,`Truthfully? I'm a very polite placeholder until you give me a model. Help me out:`];function f(e,t){return e[Math.floor(t()*e.length)%e.length]}function p(e){return e.replace(/-/g,` `)}function m(e){if(e.length===0)return``;if(e.length===1)return e[0];if(e.length===2)return`${e[0]} and ${e[1]}`;let t=e[e.length-1];return`${e.slice(0,-1).join(`, `)}, and ${t}`}function h(e,t=Math.random){let n=(e.name||``).trim(),r=e.purpose?c[e.purpose]:void 0;return n?`${f(o,t)(n)}${r?` ${f(r,t)}`:``}`:`${f(s,t)}${r?` ${f(r,t)}`:``}`}function g(e,t=Math.random){let n=e.role&&l[e.role]?e.role:``,r=f(n?l[n]:u,t),i=(e.tasks??[]).slice(0,3).map(p);return`I'm sliccy. ${r}${i.length>0?` Especially handy for ${m(i)}.`:``} I'm an AI agent.`}function _(e,t=Math.random){return f(d,t)}function v(e,t=Math.random){return[h(e,t),g(e,t),_(e,t)]}var y=e(`onboarding-orchestrator`),b=class{deps;stage=`idle`;profile={};constructor(e){this.deps=e}getStage(){return this.stage}getProfile(){return{...this.profile}}handleFirstRun(){this.stage===`idle`&&(this.stage=`collect-profile`,this.deps.postDipReference(`Welcome to SLICC — let's get you set up.`),this.deps.postDipReference(``))}async handleOnboardingComplete(e){if(this.stage!==`idle`&&this.stage!==`collect-profile`)return y.debug(`Ignoring duplicate onboarding-complete`,{stage:this.stage}),!0;this.profile=e??{},this.stage=`awaiting-connect`,n(this.deps.fs).catch(e=>y.warn(`recordWelcomed failed`,e)),this.persistProfile(this.profile).catch(e=>y.warn(`persistProfile failed`,e));let t=v(this.profile,this.deps.rand);for(let e of t)this.deps.postSystemMessage(e);return this.deps.postDipReference(``),!0}handleConnectReady(){if(this.stage===`complete`)return;let e=this.deps.getProviderCatalogue();this.deps.broadcastToDip({type:`slicc-providers`,providers:e.providers,models:e.models})}async handleConnectAttempt(e){if(this.stage===`complete`)return;this.stage=`connecting`;let{provider:t,apiKey:n,baseUrl:r,deployment:i,apiVersion:o,model:s}=e;if(!t||typeof n!=`string`||!n.trim()){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`Provider and API key are required.`}),this.stage=`awaiting-connect`;return}let c=this.validateProviderRequiredFields(t,r,i);if(c){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:c}),this.stage=`awaiting-connect`;return}let l;try{l=await a({provider:t,apiKey:n.trim(),baseUrl:r??void 0,fetchImpl:this.deps.fetchImpl})}catch(e){y.warn(`validateApiKey threw`,e),this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`Validation request was aborted.`}),this.stage=`awaiting-connect`;return}if(l.kind===`failed`){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:l.message}),this.stage=`awaiting-connect`;return}let u=s||null;if(!u)try{let e=this.deps.getProviderCatalogue().models?.[t]?.[0]?.id;e&&(u=e)}catch(e){y.warn(`Failed to resolve fallback model for provider`,{provider:t,err:e})}try{this.deps.saveAccount(t,n.trim(),r?.trim()||void 0,i?.trim()||void 0,o?.trim()||void 0),u&&this.deps.setSelectedModel(x(t,u))}catch(e){y.warn(`saveAccount failed`,e),this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`Failed to save credentials locally.`}),this.stage=`awaiting-connect`;return}try{this.deps.onAccountsChanged?.()}catch(e){y.warn(`onAccountsChanged threw`,e)}let d=l.kind===`skipped`?`Saved — ${l.reason}`:`Validated against the provider. Ready when you are.`;this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!0,kind:l.kind,note:d});let f=u&&this.deps.resolveModelLabel?.(t,u)?this.deps.resolveModelLabel?.(t,u):u||null;this.stage=`complete`,this.deps.fireFinalLick({action:`onboarding-complete-with-provider`,data:{profile:this.profile,provider:t,model:u??null,modelLabel:f,validation:l.kind}})}async handleOAuthAttempt(e){if(this.stage===`complete`)return;if(!this.deps.launchOAuth){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`OAuth login is not available in this runtime.`});return}this.stage=`connecting`;let t;try{t=await this.deps.launchOAuth(e.provider,e.baseUrl??null)}catch(e){y.warn(`launchOAuth threw`,e),this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:e instanceof Error?e.message:`Login was cancelled.`}),this.stage=`awaiting-connect`;return}if(!t.ok){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:t.message||`Login was cancelled.`}),this.stage=`awaiting-connect`;return}if(t.model)try{this.deps.setSelectedModel(x(e.provider,t.model))}catch(e){y.warn(`setSelectedModel after OAuth failed`,e)}try{this.deps.onAccountsChanged?.()}catch(e){y.warn(`onAccountsChanged threw`,e)}this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!0,kind:`ok`,note:t.message||`Logged in.`});let n=t.model&&this.deps.resolveModelLabel?.(e.provider,t.model)?this.deps.resolveModelLabel?.(e.provider,t.model):t.model??null;this.stage=`complete`,this.deps.fireFinalLick({action:`onboarding-complete-with-provider`,data:{profile:this.profile,provider:e.provider,model:t.model??null,modelLabel:n,validation:`oauth`}})}validateProviderRequiredFields(e,t,n){let r;try{r=this.deps.getProviderCatalogue().providers.find(t=>t.id===e)}catch(e){return y.warn(`getProviderCatalogue threw during required-field gate`,e),`Could not load provider requirements. Please try again.`}return r?.requiresDeployment&&!n?.trim()?`${r.name} requires a deployment name.`:r?.requiresBaseUrl&&!t?.trim()?`${r.name} requires a base URL.`:null}async persistProfile(e){let n=t(e.name||`user`,{fallback:`user`});await this.deps.fs.writeFile(`/home/${n}/.welcome.json`,JSON.stringify(e,null,2))}};function x(e,t){return t.startsWith(`${e}:`)?t:`${e}:${t}`}export{b as OnboardingOrchestrator};
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./slugify-BYJ6QVAt.js";import{i as n}from"./wc-onboarding-jiSorEJK.js";var r={openai:{url:e=>`${(e??`https://api.openai.com`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},anthropic:{url:e=>`${(e??`https://api.anthropic.com`).replace(/\/$/,``)}/v1/models`,headers:e=>({"x-api-key":e,"anthropic-version":`2023-06-01`})},groq:{url:e=>`${(e??`https://api.groq.com/openai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},cerebras:{url:e=>`${(e??`https://api.cerebras.ai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},mistral:{url:e=>`${(e??`https://api.mistral.ai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},"x-ai":{url:e=>`${(e??`https://api.x.ai`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},deepseek:{url:e=>`${(e??`https://api.deepseek.com`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},openrouter:{url:e=>`${(e??`https://openrouter.ai/api`).replace(/\/$/,``)}/v1/models`,headers:e=>({Authorization:`Bearer ${e}`})},google:{url:e=>`${(e??`https://generativelanguage.googleapis.com`).replace(/\/$/,``)}/v1beta/models`,headers:()=>({})}};function i(e,t){if(e===401||e===403)return`Authentication failed — the key was rejected by the provider.`;if(e===404)return`Endpoint not found — check the base URL.`;if(e===429)return`Rate-limited — try again in a moment.`;if(e>=500)return`Provider returned a server error.`;let n=t.trim();return n?`${e}: ${n.slice(0,160)}`:`Provider responded with HTTP ${e}.`}async function a(e){let{provider:t,apiKey:n,baseUrl:a,signal:o}=e,s=e.fetchImpl??fetch,c=n.trim();if(!c)return{kind:`failed`,status:null,message:`API key is empty.`};let l=r[t];if(!l)return{kind:`skipped`,reason:`No live validation available for "${t}" — saving without testing.`};let u=l.url(a);if(t===`google`){let e=u.includes(`?`)?`&`:`?`;u=`${u}${e}key=${encodeURIComponent(c)}`}try{let e=await s(u,{method:`GET`,headers:l.headers(c),signal:o});if(e.ok)return{kind:`ok`};let t=``;try{t=await e.text()}catch{}return e.status===401||e.status,{kind:`failed`,status:e.status,message:i(e.status,t)}}catch(e){if(e?.name===`AbortError`)throw e;return{kind:`skipped`,reason:`Couldn't reach the provider (${e instanceof Error?e.message:String(e)}). Saving without live test — you can retry from Settings.`}}}var o=[e=>`Nice to meet you, ${e}.`,e=>`Hello ${e} — glad you stopped by.`,e=>`Hey ${e}, welcome aboard.`,e=>`${e}! Pleasure to make your acquaintance.`],s=[`Nice to meet you, mysterious stranger — I'll respect the incognito.`,`Hello, anonymous traveler. You can always tell me your name later if you change your mind.`,`An unnamed visitor — intriguing. Whenever you'd like to introduce yourself, just say the word.`,`Hey there, ghost — happy to keep things first-name-optional. The door's always open if you decide to drop the cloak.`],c={work:[`Work mode — let's make today productive.`,`On the clock? Same. Let's chip away at it.`],school:[`School business — I love a good study session.`,`Hitting the books? Glad to ride along.`],personal:[`Personal project energy is the best kind.`,`Tinkering for yourself is how the good stuff happens.`],"side-project":[`Side projects keep the lights on creatively.`,`Two-job life — respect.`],exploring:[`Just poking around? Excellent. The best discoveries start there.`,`Exploration mode — no agenda, no pressure.`]},l={developer:[`I can write code, run shell commands, drive a real browser, and ship pages.`,`Code, terminals, browsers, repos — I live in all of them.`],designer:[`I can prototype layouts, generate assets, and walk page editors with you.`,`Pixels, components, screenshots — design ops are my jam.`],"content-creator":[`I can draft copy, edit, scrape references, and stitch publish-ready pages.`,`Words, structure, SEO, polish — say the topic and I'll get moving.`],marketer:[`I can audit funnels, scrape competitors, and stand up landing pages quickly.`,`Campaigns, analytics, creatives — plug me in and I'll go.`],"product-pm":[`I can summarise research, draft specs, and crunch competitive intel.`,`Briefs, roadmaps, comparisons — I take the boring half off your plate.`],founder:[`I can prototype landing pages, automate ops, and prep investor decks.`,`Idea → MVP → repeat. I'll do the legwork between coffee refills.`],student:[`I can read papers with you, draft notes, and turn lectures into outlines.`,`Studying together makes it bearable — let me handle the busywork.`],researcher:[`I can scrape sources, summarise findings, and keep a running bibliography.`,`Lit reviews, datasets, write-ups — I'm all in.`],other:[`I'm flexible — give me a task and I'll figure out the right tools.`,`Whatever the role, I can probably help. Tell me what's on the docket.`]},u=[`I can browse the web, run commands, write code, and automate the boring parts.`,`I'm comfortable with terminals, browsers, files, and a long backlog of skills.`],d=[`But to be honest, I'm not really an AI yet — I'm an empty shell. You'll need to help me become intelligent. Pick a model and I'll wake up:`,`Confession time: I can't actually think yet. Wire me up to an LLM and I'll start earning my keep:`,`Plot twist — there's no brain in here. Choose a provider so I can do more than read this script:`,`Truthfully? I'm a very polite placeholder until you give me a model. Help me out:`];function f(e,t){return e[Math.floor(t()*e.length)%e.length]}function p(e){return e.replace(/-/g,` `)}function m(e){if(e.length===0)return``;if(e.length===1)return e[0];if(e.length===2)return`${e[0]} and ${e[1]}`;let t=e[e.length-1];return`${e.slice(0,-1).join(`, `)}, and ${t}`}function h(e,t=Math.random){let n=(e.name||``).trim(),r=e.purpose?c[e.purpose]:void 0;return n?`${f(o,t)(n)}${r?` ${f(r,t)}`:``}`:`${f(s,t)}${r?` ${f(r,t)}`:``}`}function g(e,t=Math.random){let n=e.role&&l[e.role]?e.role:``,r=f(n?l[n]:u,t),i=(e.tasks??[]).slice(0,3).map(p);return`I'm sliccy. ${r}${i.length>0?` Especially handy for ${m(i)}.`:``} I'm an AI agent.`}function _(e,t=Math.random){return f(d,t)}function v(e,t=Math.random){return[h(e,t),g(e,t),_(e,t)]}var y=e(`onboarding-orchestrator`),b=class{deps;stage=`idle`;profile={};constructor(e){this.deps=e}getStage(){return this.stage}getProfile(){return{...this.profile}}handleFirstRun(){this.stage===`idle`&&(this.stage=`collect-profile`,this.deps.postDipReference(`Welcome to SLICC — let's get you set up.`),this.deps.postDipReference(``))}async handleOnboardingComplete(e){if(this.stage!==`idle`&&this.stage!==`collect-profile`)return y.debug(`Ignoring duplicate onboarding-complete`,{stage:this.stage}),!0;this.profile=e??{},this.stage=`awaiting-connect`,n(this.deps.fs).catch(e=>y.warn(`recordWelcomed failed`,e)),this.persistProfile(this.profile).catch(e=>y.warn(`persistProfile failed`,e));let t=v(this.profile,this.deps.rand);for(let e of t)this.deps.postSystemMessage(e);return this.deps.postDipReference(``),!0}handleConnectReady(){if(this.stage===`complete`)return;let e=this.deps.getProviderCatalogue();this.deps.broadcastToDip({type:`slicc-providers`,providers:e.providers,models:e.models})}async handleConnectAttempt(e){if(this.stage===`complete`)return;this.stage=`connecting`;let{provider:t,apiKey:n,baseUrl:r,deployment:i,apiVersion:o,model:s}=e;if(!t||typeof n!=`string`||!n.trim()){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`Provider and API key are required.`}),this.stage=`awaiting-connect`;return}let c=this.validateProviderRequiredFields(t,r,i);if(c){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:c}),this.stage=`awaiting-connect`;return}let l;try{l=await a({provider:t,apiKey:n.trim(),baseUrl:r??void 0,fetchImpl:this.deps.fetchImpl})}catch(e){y.warn(`validateApiKey threw`,e),this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`Validation request was aborted.`}),this.stage=`awaiting-connect`;return}if(l.kind===`failed`){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:l.message}),this.stage=`awaiting-connect`;return}let u=s||null;if(!u)try{let e=this.deps.getProviderCatalogue().models?.[t]?.[0]?.id;e&&(u=e)}catch(e){y.warn(`Failed to resolve fallback model for provider`,{provider:t,err:e})}try{this.deps.saveAccount(t,n.trim(),r?.trim()||void 0,i?.trim()||void 0,o?.trim()||void 0),u&&this.deps.setSelectedModel(x(t,u))}catch(e){y.warn(`saveAccount failed`,e),this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`Failed to save credentials locally.`}),this.stage=`awaiting-connect`;return}try{this.deps.onAccountsChanged?.()}catch(e){y.warn(`onAccountsChanged threw`,e)}let d=l.kind===`skipped`?`Saved — ${l.reason}`:`Validated against the provider. Ready when you are.`;this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!0,kind:l.kind,note:d});let f=u&&this.deps.resolveModelLabel?.(t,u)?this.deps.resolveModelLabel?.(t,u):u||null;this.stage=`complete`,this.deps.fireFinalLick({action:`onboarding-complete-with-provider`,data:{profile:this.profile,provider:t,model:u??null,modelLabel:f,validation:l.kind}})}async handleOAuthAttempt(e){if(this.stage===`complete`)return;if(!this.deps.launchOAuth){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:`OAuth login is not available in this runtime.`});return}this.stage=`connecting`;let t;try{t=await this.deps.launchOAuth(e.provider,e.baseUrl??null)}catch(e){y.warn(`launchOAuth threw`,e),this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:e instanceof Error?e.message:`Login was cancelled.`}),this.stage=`awaiting-connect`;return}if(!t.ok){this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!1,kind:`failed`,message:t.message||`Login was cancelled.`}),this.stage=`awaiting-connect`;return}if(t.model)try{this.deps.setSelectedModel(x(e.provider,t.model))}catch(e){y.warn(`setSelectedModel after OAuth failed`,e)}try{this.deps.onAccountsChanged?.()}catch(e){y.warn(`onAccountsChanged threw`,e)}this.deps.broadcastToDip({type:`slicc-connect-result`,ok:!0,kind:`ok`,note:t.message||`Logged in.`});let n=t.model&&this.deps.resolveModelLabel?.(e.provider,t.model)?this.deps.resolveModelLabel?.(e.provider,t.model):t.model??null;this.stage=`complete`,this.deps.fireFinalLick({action:`onboarding-complete-with-provider`,data:{profile:this.profile,provider:e.provider,model:t.model??null,modelLabel:n,validation:`oauth`}})}validateProviderRequiredFields(e,t,n){let r;try{r=this.deps.getProviderCatalogue().providers.find(t=>t.id===e)}catch(e){return y.warn(`getProviderCatalogue threw during required-field gate`,e),`Could not load provider requirements. Please try again.`}return r?.requiresDeployment&&!n?.trim()?`${r.name} requires a deployment name.`:r?.requiresBaseUrl&&!t?.trim()?`${r.name} requires a base URL.`:null}async persistProfile(e){let n=t(e.name||`user`,{fallback:`user`});await this.deps.fs.writeFile(`/home/${n}/.welcome.json`,JSON.stringify(e,null,2))}};function x(e,t){return t.startsWith(`${e}:`)?t:`${e}:${t}`}export{b as OnboardingOrchestrator};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,r as t}from"./account-store-
|
|
1
|
+
import{_ as e,r as t}from"./account-store-DCNh6_f3.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r}from"./compat-uEPf6-XW.js";import{n as i,o as a}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-C_VIs5bh.js";import{n as o,r as s}from"./bridge-token-required-BYgoMwr7.js";import{n as c,r as l,t as u}from"./pkce-hGf_TEnP.js";const d=`openai-codex`,f=`app_EMoamEEZ73f0CkXaXp7hrann`,p=`https://auth.openai.com/oauth/token`,m=`http://localhost:1455/auth/callback`,h=`https://chatgpt.com/backend-api`,g=`openai-codex-responses`,_=`${d}-openai`,v={xhigh:`xhigh`,minimal:`low`},y=[{id:`gpt-5.5`,name:`GPT-5.5`,input:[`text`,`image`]},{id:`gpt-5.4`,name:`GPT-5.4`,input:[`text`,`image`]},{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,input:[`text`,`image`]},{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,input:[`text`,`image`]},{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,input:[`text`]},{id:`gpt-5.2`,name:`GPT-5.2`,input:[`text`,`image`]}].map(e=>({...e,api:`openai`,reasoning:!0,context_window:272e3,max_tokens:128e3,thinkingLevelMap:v}));async function b(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,client_id:f,code:e,code_verifier:t,redirect_uri:m}),r=await fetch(p,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw Error(`OpenAI Codex token exchange failed: ${r.status} ${await r.text()}`);let i=await r.json();if(!i.access_token)throw Error(`OpenAI Codex token exchange did not return access_token.`);return i}async function x(e){if(o())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:f}),n=await fetch(p,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return s(n.status,e)||console.error(`[openai-codex] refresh failed:`,n.status,e),null}return await n.json()}catch(e){return console.error(`[openai-codex] refresh error:`,e instanceof Error?e.message:String(e)),null}}function S(e){try{let t=e.split(`.`);if(t.length!==3)return;let n=t[1].replace(/-/g,`+`).replace(/_/g,`/`);return n.length%4&&(n+=`=`.repeat(4-n.length%4)),JSON.parse(atob(n))}catch{return}}function C(e){let t=S(e)?.[`https://api.openai.com/profile`]?.email;return typeof t==`string`?t:void 0}function w(e){let t=S(e)?.[`https://api.openai.com/auth`],n=C(e),r=typeof t?.chatgpt_plan_type==`string`?t.chatgpt_plan_type:void 0,i=r?r.charAt(0).toUpperCase()+r.slice(1):void 0;if(n&&i)return`${n} (${i})`;if(n)return n;if(i)return`ChatGPT ${i}`}async function T(e){let t=C(e);if(t)try{let e=t.trim().toLowerCase(),n=new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)));return`https://www.gravatar.com/avatar/${Array.from(n).map(e=>e.toString(16).padStart(2,`0`)).join(``)}?s=128&d=404`}catch{return}}function E(){return t().find(e=>e.providerId===d)}async function D(){let t=E();if(!t?.accessToken)throw Error("Not signed in to OpenAI Codex — run `oauth-token openai-codex` or /login");let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await x(t.refreshToken);if(n?.access_token)return await e({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??3600)*1e3,baseUrl:h,userName:w(n.access_token),userAvatar:await T(n.access_token),scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}function O(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:_,provider:d,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 instanceof Error?t.message:String(t),timestamp:Date.now()}}}function k(e){console.error(`[openai-codex] Stream error:`,e instanceof Error?e.message:String(e))}async function A(e,t,n,r){try{let a=await D(),o={...t,baseUrl:h,api:g},s=i(o,n,{...r,apiKey:a,transport:`sse`});for await(let t of s)e.push(t);e.end()}catch(n){k(n),e.push(O(t,n)),e.end()}}async function j(e,t,n,r){try{let i=await D(),o={...t,baseUrl:h,api:g},s=a(o,n,{...r,apiKey:i,transport:`sse`});for await(let t of s)e.push(t);e.end()}catch(n){k(n),e.push(O(t,n)),e.end()}}const M=(e,t,r={})=>{let i=n();return A(i,e,t,r).catch(k),i},N=(e,t,r)=>{let i=n();return j(i,e,t,r).catch(k),i},P={id:d,name:`OpenAI Codex (ChatGPT Subscription)`,description:`GPT-5 Codex via your ChatGPT Plus/Pro/Business subscription — OAuth login, no API key needed. Default model is GPT-5.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`gpt-5.5`,oauthTokenDomains:[`chatgpt.com`,`*.chatgpt.com`,`auth.openai.com`,`api.openai.com`],getModelIds:()=>y,onOAuthLoginIntercepted:async(t,n,r)=>{let i=c(),a=await u(i),o=l(),s=new URL(`https://auth.openai.com/oauth/authorize`);s.searchParams.set(`response_type`,`code`),s.searchParams.set(`client_id`,f),s.searchParams.set(`redirect_uri`,m),s.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access`),s.searchParams.set(`code_challenge`,a),s.searchParams.set(`code_challenge_method`,`S256`),s.searchParams.set(`state`,o),s.searchParams.set(`id_token_add_organizations`,`true`),s.searchParams.set(`codex_cli_simplified_flow`,`true`),s.searchParams.set(`originator`,`pi`);let p=await t({authorizeUrl:s.toString(),redirectUriPattern:`http://localhost:1455/auth/callback*`,onCapture:`close`});if(!p)throw Error(`OpenAI Codex OAuth login was cancelled or timed out`);let g=new URL(p),_=g.searchParams.get(`code`),v=g.searchParams.get(`state`);if(!_)throw Error(`OpenAI Codex OAuth redirect did not include a code`);if(v!==o)throw Error(`OpenAI Codex OAuth state mismatch — possible CSRF, aborting`);let y=await b(_,i);await e({providerId:d,accessToken:y.access_token,refreshToken:y.refresh_token,tokenExpiresAt:Date.now()+(y.expires_in??3600)*1e3,baseUrl:h,userName:w(y.access_token),userAvatar:await T(y.access_token),scopes:y.scope}),n()},onOAuthLogout:async()=>{await e({providerId:d,accessToken:``})},onSilentRenew:async()=>{let t=E();if(!t?.refreshToken)return null;let n=await x(t.refreshToken);return n?.access_token?(await e({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??3600)*1e3,baseUrl:h,userName:w(n.access_token),userAvatar:await T(n.access_token),scopes:n.scope??t.scopes}),n.access_token):null}};function F(){r({api:_,stream:M,streamSimple:N})}export{P as config,F as register};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t}from"./compat-
|
|
1
|
+
import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t}from"./compat-Dy2zIWAW.js";import{n,o as r}from"./legacy-api-aliases-DoI0tM7F.js";import{K as i,f as a}from"./account-store-BPOuwEUe.js";import"./main-CwH54Phg.js";import{n as o,r as s}from"./bridge-token-required-DMk2va9k.js";import{n as c,r as l,t as u}from"./pkce-hGf_TEnP.js";var d=`openai-codex`,f=`app_EMoamEEZ73f0CkXaXp7hrann`,p=`https://auth.openai.com/oauth/authorize`,m=`https://auth.openai.com/oauth/token`,h=`openid profile email offline_access`,g=`http://localhost:1455/auth/callback`,_=`http://localhost:1455/auth/callback*`,v=`https://chatgpt.com/backend-api`,y=`openai-codex-responses`,b=`${d}-openai`,x={xhigh:`xhigh`,minimal:`low`},S=[{id:`gpt-5.5`,name:`GPT-5.5`,input:[`text`,`image`]},{id:`gpt-5.4`,name:`GPT-5.4`,input:[`text`,`image`]},{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,input:[`text`,`image`]},{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,input:[`text`,`image`]},{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,input:[`text`]},{id:`gpt-5.2`,name:`GPT-5.2`,input:[`text`,`image`]}].map(e=>({...e,api:`openai`,reasoning:!0,context_window:272e3,max_tokens:128e3,thinkingLevelMap:x}));async function C(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,client_id:f,code:e,code_verifier:t,redirect_uri:g}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw Error(`OpenAI Codex token exchange failed: ${r.status} ${await r.text()}`);let i=await r.json();if(!i.access_token)throw Error(`OpenAI Codex token exchange did not return access_token.`);return i}async function w(e){if(o())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:f}),n=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return s(n.status,e)||console.error(`[openai-codex] refresh failed:`,n.status,e),null}return await n.json()}catch(e){return console.error(`[openai-codex] refresh error:`,e instanceof Error?e.message:String(e)),null}}function T(e){try{let t=e.split(`.`);if(t.length!==3)return;let n=t[1].replace(/-/g,`+`).replace(/_/g,`/`);return n.length%4&&(n+=`=`.repeat(4-n.length%4)),JSON.parse(atob(n))}catch{return}}function E(e){let t=T(e)?.[`https://api.openai.com/profile`]?.email;return typeof t==`string`?t:void 0}function D(e){let t=T(e)?.[`https://api.openai.com/auth`],n=E(e),r=typeof t?.chatgpt_plan_type==`string`?t.chatgpt_plan_type:void 0,i=r?r.charAt(0).toUpperCase()+r.slice(1):void 0;if(n&&i)return`${n} (${i})`;if(n)return n;if(i)return`ChatGPT ${i}`}async function O(e){let t=E(e);if(t)try{let e=t.trim().toLowerCase(),n=new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)));return`https://www.gravatar.com/avatar/${Array.from(n).map(e=>e.toString(16).padStart(2,`0`)).join(``)}?s=128&d=404`}catch{return}}function k(){return a().find(e=>e.providerId===d)}async function A(){let e=k();if(!e?.accessToken)throw Error("Not signed in to OpenAI Codex — run `oauth-token openai-codex` or /login");let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await w(e.refreshToken);if(t?.access_token)return await i({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??3600)*1e3,baseUrl:v,userName:D(t.access_token),userAvatar:await O(t.access_token),scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}function j(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:b,provider:d,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 instanceof Error?t.message:String(t),timestamp:Date.now()}}}function M(e){console.error(`[openai-codex] Stream error:`,e instanceof Error?e.message:String(e))}async function N(e,t,r,i){try{let a=await A(),o={...t,baseUrl:v,api:y},s=n(o,r,{...i,apiKey:a,transport:`sse`});for await(let t of s)e.push(t);e.end()}catch(n){M(n),e.push(j(t,n)),e.end()}}async function P(e,t,n,i){try{let a=await A(),o={...t,baseUrl:v,api:y},s=r(o,n,{...i,apiKey:a,transport:`sse`});for await(let t of s)e.push(t);e.end()}catch(n){M(n),e.push(j(t,n)),e.end()}}var F=(t,n,r={})=>{let i=e();return N(i,t,n,r).catch(M),i},I=(t,n,r)=>{let i=e();return P(i,t,n,r).catch(M),i},L={id:d,name:`OpenAI Codex (ChatGPT Subscription)`,description:`GPT-5 Codex via your ChatGPT Plus/Pro/Business subscription — OAuth login, no API key needed. Default model is GPT-5.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`gpt-5.5`,oauthTokenDomains:[`chatgpt.com`,`*.chatgpt.com`,`auth.openai.com`,`api.openai.com`],getModelIds:()=>S,onOAuthLoginIntercepted:async(e,t,n)=>{let r=c(),a=await u(r),o=l(),s=new URL(p);s.searchParams.set(`response_type`,`code`),s.searchParams.set(`client_id`,f),s.searchParams.set(`redirect_uri`,g),s.searchParams.set(`scope`,n?.scopes??h),s.searchParams.set(`code_challenge`,a),s.searchParams.set(`code_challenge_method`,`S256`),s.searchParams.set(`state`,o),s.searchParams.set(`id_token_add_organizations`,`true`),s.searchParams.set(`codex_cli_simplified_flow`,`true`),s.searchParams.set(`originator`,`pi`);let m=await e({authorizeUrl:s.toString(),redirectUriPattern:_,onCapture:`close`});if(!m)throw Error(`OpenAI Codex OAuth login was cancelled or timed out`);let y=new URL(m),b=y.searchParams.get(`code`),x=y.searchParams.get(`state`);if(!b)throw Error(`OpenAI Codex OAuth redirect did not include a code`);if(x!==o)throw Error(`OpenAI Codex OAuth state mismatch — possible CSRF, aborting`);let S=await C(b,r);await i({providerId:d,accessToken:S.access_token,refreshToken:S.refresh_token,tokenExpiresAt:Date.now()+(S.expires_in??3600)*1e3,baseUrl:v,userName:D(S.access_token),userAvatar:await O(S.access_token),scopes:S.scope}),t()},onOAuthLogout:async()=>{await i({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=k();if(!e?.refreshToken)return null;let t=await w(e.refreshToken);return t?.access_token?(await i({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??3600)*1e3,baseUrl:v,userName:D(t.access_token),userAvatar:await O(t.access_token),scopes:t.scope??e.scopes}),t.access_token):null}};function R(){t({api:b,stream:F,streamSimple:I})}export{L as config,R as register};
|
package/dist/ui/assets/{openai-codex-responses-DK0TuYYs.js → openai-codex-responses-BM2lIIbg.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"./diagnostics-DN_idNHx.js";import{n as i}from"./models-BSkXF4T6.js";import{t as a}from"./provider-env-CTOcDKrQ.js";import{t as o}from"./deferred-tools-C1IEsG5C.js";import{t as s}from"./headers-CbDaTl3c.js";import{n as c,s as l}from"./constrained-sampling-CNZLpVD5.js";import{r as u}from"./transform-messages-BsQjTIEJ.js";import{n as d,t as f}from"./error-body-pkrba6pf.js";import{t as p}from"./openai-prompt-cache-DXo9f3w5.js";import{n as m,r as h,t as g}from"./openai-responses-shared-BN7PRIa9.js";var _=new Set;function v(e){return _.add(e),()=>{_.delete(e)}}var y=-1/0,b=0;function x(e){if(globalThis.crypto?.getRandomValues){globalThis.crypto.getRandomValues(e);return}for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256)}function S(){let e=new Uint8Array(16);x(e);let t=Date.now();t>y?(b=e[6]*16777216+e[7]*65536+e[8]*256+e[9],y=t):(b=b+1>>>0,b===0&&y++);let n=new Uint8Array(16);n[0]=y/1099511627776&255,n[1]=y/4294967296&255,n[2]=y/16777216&255,n[3]=y/65536&255,n[4]=y/256&255,n[5]=y&255,n[6]=112|b>>>28&15,n[7]=b>>>20&255,n[8]=128|b>>>14&63,n[9]=b>>>6&255,n[10]=(b&63)<<2|e[10]&3,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15];let r=Array.from(n,e=>e.toString(16).padStart(2,`0`));return`${r.slice(0,4).join(``)}-${r.slice(4,6).join(``)}-${r.slice(6,8).join(``)}-${r.slice(8,10).join(``)}-${r.slice(10,16).join(``)}`}function C(e){let t=e.filter(e=>e!==void 0);if(t.length===0)return{cleanup:()=>{}};if(t.length===1)return{signal:t[0],cleanup:()=>{}};let n=new AbortController,r=[],i=e=>{n.signal.aborted||n.abort(e.reason)};for(let e of t){if(e.aborted){i(e);break}let t=()=>i(e);e.addEventListener(`abort`,t,{once:!0}),r.push({signal:e,listener:t})}return{signal:n.signal,cleanup:()=>{for(let{signal:e,listener:t}of r)e.removeEventListener(`abort`,t)}}}var w={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function T(e,t){let n=e.toLowerCase(),r=e.toUpperCase();return t?.[n]||t?.[r]||a(n)||a(r)||``}function E(e){if(e instanceof URL)return e;try{return new URL(e)}catch{return}}function D(e,t,n){let r=T(`no_proxy`,n).toLowerCase();return!r||r!==`*`&&r.split(/[,\s]/).every(n=>{if(!n)return!0;let r=n.match(/^(.+):(\d+)$/),i=r?r[1]:n,a=r?Number.parseInt(r[2],10):0;return a&&a!==t?!0:/^[.*]/.test(i)?(i.startsWith(`*`)&&(i=i.slice(1)),!e.endsWith(i)):e!==i})}function O(e,t){let n=E(e);if(!n?.protocol||!n.host)return``;let r=n.protocol.split(`:`,1)[0];if(!D(n.host.replace(/:\d*$/,``),Number.parseInt(n.port,10)||w[r]||0,t))return``;let i=T(`${r}_proxy`,t)||T(`all_proxy`,t);return i&&!i.includes(`://`)&&(i=`${r}://${i}`),i}var k=`Unsupported proxy protocol. SOCKS and PAC proxy URLs are not supported; use an HTTP or HTTPS proxy URL.`;function A(e,t){let n=O(e,t);if(!n)return;let r;try{r=new URL(n)}catch(e){throw Error(`Invalid proxy URL ${JSON.stringify(n)}: ${e instanceof Error?e.message:String(e)}`)}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`${k} Got ${r.protocol}`);return r}var j=`https://chatgpt.com/backend-api`,M=`https://api.openai.com/auth`,ee=0,N=1e3,te=6e4,ne=15e3,re=3,ie=new Set([`openai`,`openai-codex`,`opencode`]),ae=1009,oe=`websocket_connection_limit_reached`,se=`previous_response_not_found`,ce=new Set([`completed`,`incomplete`,`failed`,`cancelled`,`queued`,`in_progress`]);function P(e){if(e.stopReason===`pending`)throw Error(`Codex stream ended without a stop reason`);if(e.stopReason===`error`||e.stopReason===`aborted`)throw Error(e.errorMessage||`An unknown error occurred`)}function le(e){return/GoUsageLimitError|FreeUsageLimitError|Monthly usage limit reached|available balance|insufficient_quota|out of budget|quota exceeded|billing/i.test(e)}function ue(e,t){return e===429&&le(t)?!1:e===429||e===500||e===502||e===503||e===504||/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}function de(e){let t=e.get(`retry-after-ms`);if(t!==null){let e=Number(t);if(Number.isFinite(e))return Math.max(0,e)}let n=e.get(`retry-after`);if(!n)return;let r=Number(n);if(Number.isFinite(r))return Math.max(0,r*1e3);let i=Date.parse(n);if(!Number.isNaN(i))return Math.max(0,i-Date.now())}var F=class extends Error{};function fe(e,t){let n=t?.maxRetryDelayMs??te;if(n>0&&e>n)throw new F(`Server requested ${Math.ceil(e/1e3)}s retry delay (max: ${Math.ceil(n/1e3)}s)`);return e}function I(e,t){return new Promise((n,r)=>{if(t?.aborted){r(Error(`Request was aborted`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(Error(`Request was aborted`))})})}function L(e){if(e!==void 0){if(!Number.isFinite(e)||e<0)throw Error(`Invalid timeoutMs: ${String(e)}`);return Math.floor(e)}}function pe(){return typeof process>`u`||!(process.versions?.node||process.versions?.bun)?null:process.getBuiltinModule?.(`node:zlib`)??null}function me(e){let t=pe();if(!t||typeof t.zstdCompressSync!=`function`)return null;try{let n=t.zstdCompressSync(e,{params:{[t.constants.ZSTD_c_compressionLevel]:re}});return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}catch{return null}}var R=(n,i,a)=>{let o=new e;return(async()=>{let e={role:`assistant`,content:[],api:`openai-codex-responses`,provider:n.provider,model:n.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`pending`,timestamp:Date.now()};try{let l=a?.apiKey;if(!l)throw Error(`No API key for provider: ${n.provider}`);let u=Qe(l),d=c(i.tools,n.compat?.supportsOpenAIGrammarTools??!1),f=a?.cacheRetention===`none`?void 0:a?.sessionId,m=p(f),h=ge(n,i,a,m,d),g=await a?.onPayload?.(h,n);g!==void 0&&(h=g);let _=m||S(),v=et(n.headers,a?.headers,u,l,m),y=tt(n.headers,a?.headers,u,l,_),b=JSON.stringify(h),x=L(a?.timeoutMs),w=L(a?.websocketConnectTimeoutMs),T=a?.transport||`auto`,E=!1,D=T!==`sse`&&Me(f);if(D&&Ne(f),T!==`sse`&&!D){let i=!1,s=!1,c=!1;for(;;){i=!1;try{if(await Xe(ve(n.baseUrl),h,y,e,o,n,()=>{i=!0,E||(E=!0,o.push({type:`start`,partial:e}))},x,w,f,u,d,a),a?.signal?.aborted)throw Error(`Request was aborted`);P(e),o.push({type:`done`,reason:e.stopReason,message:e}),o.end();return}catch(n){let o=a?.signal?.aborted,l=!i&&xe(n),u=Se(n);if(!o&&u&&!c){c=!0;continue}if(!o&&l&&!s){s=!0;continue}if(o||be(n)&&!l||(r(e,t(`provider_transport_failure`,n,{configuredTransport:T,fallbackTransport:i?void 0:`sse`,eventsEmitted:i,phase:i?`after_message_stream_start`:`before_message_stream_start`,requestBytes:new TextEncoder().encode(b).byteLength})),Pe(f,n),i))throw n;Ne(f);break}}}let O=me(b);O&&v.set(`content-encoding`,`zstd`);let k=O??b,A,j,M=a?.maxRetries??ee;for(let e=0;e<=M;e++){if(a?.signal?.aborted)throw Error(`Request was aborted`);try{let t=x!==void 0&&x>0?AbortSignal.timeout(x):void 0,r=C([a?.signal,t]);try{A=await(a?.fetch??globalThis.fetch)(V(n.baseUrl),{method:`POST`,headers:v,body:k,signal:r.signal})}catch(e){throw t?.aborted&&!a?.signal?.aborted?Error(`Codex SSE response headers timed out after ${x}ms`):e}finally{r.cleanup()}if(await a?.onResponse?.({status:A.status,headers:s(A.headers)},n),A.ok)break;let i=await A.text();if(e<M&&ue(A.status,i)){let t=de(A.headers);await I(t===void 0?N*2**e:fe(t,a),a?.signal);continue}let o=await Ze(new Response(i,{status:A.status,statusText:A.statusText}));throw Error(o.friendlyMessage||o.message)}catch(t){if(t instanceof Error&&(t.name===`AbortError`||t.message===`Request was aborted`))throw Error(`Request was aborted`);if(j=t instanceof Error?t:Error(String(t)),e<M&&!(j instanceof F)&&!j.message.includes(`usage limit`)){await I(N*2**e,a?.signal);continue}throw j}}if(!A?.ok)throw j??Error(`Failed after retries`);if(!A.body)throw Error(`No response body`);if(E||(E=!0,o.push({type:`start`,partial:e})),await ye(A,e,o,n,d,a),a?.signal?.aborted)throw Error(`Request was aborted`);P(e),o.push({type:`done`,reason:e.stopReason,message:e}),o.end()}catch(t){for(let t of e.content)delete t.partialJson,delete t.customInput;e.stopReason=a?.signal?.aborted?`aborted`:`error`,e.errorMessage=f(d(t)),o.push({type:`error`,reason:e.stopReason,error:e}),o.end()}})(),o},he=(e,t,n)=>{let r=n?.apiKey;if(!r)throw Error(`No API key for provider: ${e.provider}`);let a={...u(e,t,n,r),toolChoice:n?.toolChoice},o=n?.reasoning?i(e,n.reasoning):void 0,s=o===`off`?void 0:o;return R(e,t,{...a,reasoningEffort:s})};function ge(e,t,n,r,i=c(t.tools,e.compat?.supportsOpenAIGrammarTools??!1)){let a=e.compat?.supportsStrictMode??!0,s=e.compat?.supportsOpenAIGrammarTools??!1,l=e.compat?.supportsAdditionalTools?`additional-tools`:e.compat?.supportsToolSearch?`tool-search`:void 0,u=o(t,l!==void 0),d=g(e,t,ie,{includeSystemPrompt:!1,grammarToolInputProperties:i,deferredTools:u.deferred,deferredToolsMode:l,toolOptions:{strict:null,supportsStrictMode:a,supportsOpenAIGrammarTools:s}}),f={model:e.id,store:!1,stream:!0,instructions:t.systemPrompt||`You are a helpful assistant.`,input:d,text:{verbosity:n?.textVerbosity||`low`},include:[`reasoning.encrypted_content`],prompt_cache_key:r,tool_choice:n?.toolChoice??`auto`,parallel_tool_calls:!0};if(n?.temperature!==void 0&&(f.temperature=n.temperature),n?.serviceTier!==void 0&&(f.service_tier=n.serviceTier),u.immediate.length>0&&(f.tools=m(u.immediate,{strict:null,supportsStrictMode:a,supportsOpenAIGrammarTools:s})),n?.reasoningEffort!==void 0){let t=n.reasoningEffort===`none`?e.thinkingLevelMap?.off??`none`:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;t!==null&&(f.reasoning={effort:t,summary:n.reasoningSummary??`auto`})}return f}function _e(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function z(e,t,n){let r=_e(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}function B(e,t){return e==="default"&&(t===`flex`||t===`priority`)?t:e??t}function V(e){let t=(e&&e.trim().length>0?e:j).replace(/\/+$/,``);return t.endsWith(`/codex/responses`)?t:t.endsWith(`/codex`)?`${t}/responses`:`${t}/codex/responses`}function ve(e){let t=new URL(V(e));return t.protocol===`https:`&&(t.protocol=`wss:`),t.protocol===`http:`&&(t.protocol=`ws:`),t.toString()}async function ye(e,t,n,r,i,a){await h(W(Te(e,a?.signal),t),t,n,r,{serviceTier:a?.serviceTier,grammarToolInputProperties:i,resolveServiceTier:B,applyServiceTierPricing:(e,t)=>z(e,t,r)})}var H=class extends Error{code;payload;constructor(e,t){super(e),this.name=`CodexApiError`,this.code=t?.code,this.payload=t?.payload,this.cause=t?.cause}},U=class extends Error{payload;constructor(e,t){super(e),this.name=`CodexProtocolError`,this.payload=t?.payload,this.cause=t?.cause}};function be(e){return e instanceof H||e instanceof U}function xe(e){return e instanceof H&&e.code===oe}function Se(e){return e instanceof H&&e.code===se}function Ce(e){let t=e.error&&typeof e.error==`object`?e.error:void 0;return{code:typeof e.code==`string`?e.code:typeof t?.code==`string`?t.code:void 0,message:typeof e.message==`string`?e.message:typeof t?.message==`string`?t.message:void 0}}async function*W(e,t){for await(let n of e){let e=typeof n.type==`string`?n.type:void 0;if(e){if(e===`error`){let{code:e,message:t}=Ce(n);throw new H(`Codex error: ${t||e||JSON.stringify(n)}`,{code:e,payload:n})}if(e===`response.failed`){let e=n.response,t=e?.error?.code,r=e?.error?.message;throw new H(r||`Codex response failed`,{code:t,payload:n})}if(e===`response.done`||e===`response.completed`||e===`response.incomplete`){let e=n.response;typeof e?.end_turn==`boolean`&&(t.endTurn=e.end_turn);let r=e&&{...e,status:we(e.status)};yield{...n,type:`response.completed`,response:r};return}yield n}}}function we(e){if(typeof e==`string`)return ce.has(e)?e:void 0}async function*Te(e,t){if(!e.body)return;let r=e.body.getReader(),i=new TextDecoder,a=``,o=()=>{r.cancel().catch(()=>{})};t?.addEventListener(`abort`,o,{once:!0});try{for(;;){if(t?.aborted)throw Error(`Request was aborted`);let{done:e,value:o}=await r.read();if(t?.aborted)throw Error(`Request was aborted`);if(e)break;a+=i.decode(o,{stream:!0});let s=a.indexOf(`
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./diagnostics-DN_idNHx.js";import{n as i}from"./models-YdybRRvT.js";import{t as a}from"./provider-env-CTOcDKrQ.js";import{t as o}from"./deferred-tools-C1IEsG5C.js";import{t as s}from"./headers-CbDaTl3c.js";import{n as c,s as l}from"./constrained-sampling-CNZLpVD5.js";import{r as u}from"./transform-messages-BsQjTIEJ.js";import{n as d,t as f}from"./error-body-pkrba6pf.js";import{t as p}from"./openai-prompt-cache-DXo9f3w5.js";import{n as m,r as h,t as g}from"./openai-responses-shared-CdC6rVE7.js";var _=new Set;function v(e){return _.add(e),()=>{_.delete(e)}}var y=-1/0,b=0;function x(e){if(globalThis.crypto?.getRandomValues){globalThis.crypto.getRandomValues(e);return}for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256)}function S(){let e=new Uint8Array(16);x(e);let t=Date.now();t>y?(b=e[6]*16777216+e[7]*65536+e[8]*256+e[9],y=t):(b=b+1>>>0,b===0&&y++);let n=new Uint8Array(16);n[0]=y/1099511627776&255,n[1]=y/4294967296&255,n[2]=y/16777216&255,n[3]=y/65536&255,n[4]=y/256&255,n[5]=y&255,n[6]=112|b>>>28&15,n[7]=b>>>20&255,n[8]=128|b>>>14&63,n[9]=b>>>6&255,n[10]=(b&63)<<2|e[10]&3,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15];let r=Array.from(n,e=>e.toString(16).padStart(2,`0`));return`${r.slice(0,4).join(``)}-${r.slice(4,6).join(``)}-${r.slice(6,8).join(``)}-${r.slice(8,10).join(``)}-${r.slice(10,16).join(``)}`}function C(e){let t=e.filter(e=>e!==void 0);if(t.length===0)return{cleanup:()=>{}};if(t.length===1)return{signal:t[0],cleanup:()=>{}};let n=new AbortController,r=[],i=e=>{n.signal.aborted||n.abort(e.reason)};for(let e of t){if(e.aborted){i(e);break}let t=()=>i(e);e.addEventListener(`abort`,t,{once:!0}),r.push({signal:e,listener:t})}return{signal:n.signal,cleanup:()=>{for(let{signal:e,listener:t}of r)e.removeEventListener(`abort`,t)}}}var w={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function T(e,t){let n=e.toLowerCase(),r=e.toUpperCase();return t?.[n]||t?.[r]||a(n)||a(r)||``}function E(e){if(e instanceof URL)return e;try{return new URL(e)}catch{return}}function D(e,t,n){let r=T(`no_proxy`,n).toLowerCase();return!r||r!==`*`&&r.split(/[,\s]/).every(n=>{if(!n)return!0;let r=n.match(/^(.+):(\d+)$/),i=r?r[1]:n,a=r?Number.parseInt(r[2],10):0;return a&&a!==t?!0:/^[.*]/.test(i)?(i.startsWith(`*`)&&(i=i.slice(1)),!e.endsWith(i)):e!==i})}function O(e,t){let n=E(e);if(!n?.protocol||!n.host)return``;let r=n.protocol.split(`:`,1)[0];if(!D(n.host.replace(/:\d*$/,``),Number.parseInt(n.port,10)||w[r]||0,t))return``;let i=T(`${r}_proxy`,t)||T(`all_proxy`,t);return i&&!i.includes(`://`)&&(i=`${r}://${i}`),i}var k=`Unsupported proxy protocol. SOCKS and PAC proxy URLs are not supported; use an HTTP or HTTPS proxy URL.`;function A(e,t){let n=O(e,t);if(!n)return;let r;try{r=new URL(n)}catch(e){throw Error(`Invalid proxy URL ${JSON.stringify(n)}: ${e instanceof Error?e.message:String(e)}`)}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`${k} Got ${r.protocol}`);return r}var j=`https://chatgpt.com/backend-api`,M=`https://api.openai.com/auth`,ee=0,N=1e3,te=6e4,ne=15e3,re=3,ie=new Set([`openai`,`openai-codex`,`opencode`]),ae=1009,oe=`websocket_connection_limit_reached`,se=`previous_response_not_found`,ce=new Set([`completed`,`incomplete`,`failed`,`cancelled`,`queued`,`in_progress`]);function P(e){if(e.stopReason===`pending`)throw Error(`Codex stream ended without a stop reason`);if(e.stopReason===`error`||e.stopReason===`aborted`)throw Error(e.errorMessage||`An unknown error occurred`)}function le(e){return/GoUsageLimitError|FreeUsageLimitError|Monthly usage limit reached|available balance|insufficient_quota|out of budget|quota exceeded|billing/i.test(e)}function ue(e,t){return e===429&&le(t)?!1:e===429||e===500||e===502||e===503||e===504||/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}function de(e){let t=e.get(`retry-after-ms`);if(t!==null){let e=Number(t);if(Number.isFinite(e))return Math.max(0,e)}let n=e.get(`retry-after`);if(!n)return;let r=Number(n);if(Number.isFinite(r))return Math.max(0,r*1e3);let i=Date.parse(n);if(!Number.isNaN(i))return Math.max(0,i-Date.now())}var F=class extends Error{};function fe(e,t){let n=t?.maxRetryDelayMs??te;if(n>0&&e>n)throw new F(`Server requested ${Math.ceil(e/1e3)}s retry delay (max: ${Math.ceil(n/1e3)}s)`);return e}function I(e,t){return new Promise((n,r)=>{if(t?.aborted){r(Error(`Request was aborted`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(Error(`Request was aborted`))})})}function L(e){if(e!==void 0){if(!Number.isFinite(e)||e<0)throw Error(`Invalid timeoutMs: ${String(e)}`);return Math.floor(e)}}function pe(){return typeof process>`u`||!(process.versions?.node||process.versions?.bun)?null:process.getBuiltinModule?.(`node:zlib`)??null}function me(e){let t=pe();if(!t||typeof t.zstdCompressSync!=`function`)return null;try{let n=t.zstdCompressSync(e,{params:{[t.constants.ZSTD_c_compressionLevel]:re}});return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}catch{return null}}var R=(n,i,a)=>{let o=new e;return(async()=>{let e={role:`assistant`,content:[],api:`openai-codex-responses`,provider:n.provider,model:n.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`pending`,timestamp:Date.now()};try{let l=a?.apiKey;if(!l)throw Error(`No API key for provider: ${n.provider}`);let u=Qe(l),d=c(i.tools,n.compat?.supportsOpenAIGrammarTools??!1),f=a?.cacheRetention===`none`?void 0:a?.sessionId,m=p(f),h=ge(n,i,a,m,d),g=await a?.onPayload?.(h,n);g!==void 0&&(h=g);let _=m||S(),v=et(n.headers,a?.headers,u,l,m),y=tt(n.headers,a?.headers,u,l,_),b=JSON.stringify(h),x=L(a?.timeoutMs),w=L(a?.websocketConnectTimeoutMs),T=a?.transport||`auto`,E=!1,D=T!==`sse`&&Me(f);if(D&&Ne(f),T!==`sse`&&!D){let i=!1,s=!1,c=!1;for(;;){i=!1;try{if(await Xe(ve(n.baseUrl),h,y,e,o,n,()=>{i=!0,E||(E=!0,o.push({type:`start`,partial:e}))},x,w,f,u,d,a),a?.signal?.aborted)throw Error(`Request was aborted`);P(e),o.push({type:`done`,reason:e.stopReason,message:e}),o.end();return}catch(n){let o=a?.signal?.aborted,l=!i&&xe(n),u=Se(n);if(!o&&u&&!c){c=!0;continue}if(!o&&l&&!s){s=!0;continue}if(o||be(n)&&!l||(r(e,t(`provider_transport_failure`,n,{configuredTransport:T,fallbackTransport:i?void 0:`sse`,eventsEmitted:i,phase:i?`after_message_stream_start`:`before_message_stream_start`,requestBytes:new TextEncoder().encode(b).byteLength})),Pe(f,n),i))throw n;Ne(f);break}}}let O=me(b);O&&v.set(`content-encoding`,`zstd`);let k=O??b,A,j,M=a?.maxRetries??ee;for(let e=0;e<=M;e++){if(a?.signal?.aborted)throw Error(`Request was aborted`);try{let t=x!==void 0&&x>0?AbortSignal.timeout(x):void 0,r=C([a?.signal,t]);try{A=await(a?.fetch??globalThis.fetch)(V(n.baseUrl),{method:`POST`,headers:v,body:k,signal:r.signal})}catch(e){throw t?.aborted&&!a?.signal?.aborted?Error(`Codex SSE response headers timed out after ${x}ms`):e}finally{r.cleanup()}if(await a?.onResponse?.({status:A.status,headers:s(A.headers)},n),A.ok)break;let i=await A.text();if(e<M&&ue(A.status,i)){let t=de(A.headers);await I(t===void 0?N*2**e:fe(t,a),a?.signal);continue}let o=await Ze(new Response(i,{status:A.status,statusText:A.statusText}));throw Error(o.friendlyMessage||o.message)}catch(t){if(t instanceof Error&&(t.name===`AbortError`||t.message===`Request was aborted`))throw Error(`Request was aborted`);if(j=t instanceof Error?t:Error(String(t)),e<M&&!(j instanceof F)&&!j.message.includes(`usage limit`)){await I(N*2**e,a?.signal);continue}throw j}}if(!A?.ok)throw j??Error(`Failed after retries`);if(!A.body)throw Error(`No response body`);if(E||(E=!0,o.push({type:`start`,partial:e})),await ye(A,e,o,n,d,a),a?.signal?.aborted)throw Error(`Request was aborted`);P(e),o.push({type:`done`,reason:e.stopReason,message:e}),o.end()}catch(t){for(let t of e.content)delete t.partialJson,delete t.customInput;e.stopReason=a?.signal?.aborted?`aborted`:`error`,e.errorMessage=f(d(t)),o.push({type:`error`,reason:e.stopReason,error:e}),o.end()}})(),o},he=(e,t,n)=>{let r=n?.apiKey;if(!r)throw Error(`No API key for provider: ${e.provider}`);let a={...u(e,t,n,r),toolChoice:n?.toolChoice},o=n?.reasoning?i(e,n.reasoning):void 0,s=o===`off`?void 0:o;return R(e,t,{...a,reasoningEffort:s})};function ge(e,t,n,r,i=c(t.tools,e.compat?.supportsOpenAIGrammarTools??!1)){let a=e.compat?.supportsStrictMode??!0,s=e.compat?.supportsOpenAIGrammarTools??!1,l=e.compat?.supportsAdditionalTools?`additional-tools`:e.compat?.supportsToolSearch?`tool-search`:void 0,u=o(t,l!==void 0),d=g(e,t,ie,{includeSystemPrompt:!1,grammarToolInputProperties:i,deferredTools:u.deferred,deferredToolsMode:l,toolOptions:{strict:null,supportsStrictMode:a,supportsOpenAIGrammarTools:s}}),f={model:e.id,store:!1,stream:!0,instructions:t.systemPrompt||`You are a helpful assistant.`,input:d,text:{verbosity:n?.textVerbosity||`low`},include:[`reasoning.encrypted_content`],prompt_cache_key:r,tool_choice:n?.toolChoice??`auto`,parallel_tool_calls:!0};if(n?.temperature!==void 0&&(f.temperature=n.temperature),n?.serviceTier!==void 0&&(f.service_tier=n.serviceTier),u.immediate.length>0&&(f.tools=m(u.immediate,{strict:null,supportsStrictMode:a,supportsOpenAIGrammarTools:s})),n?.reasoningEffort!==void 0){let t=n.reasoningEffort===`none`?e.thinkingLevelMap?.off??`none`:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;t!==null&&(f.reasoning={effort:t,summary:n.reasoningSummary??`auto`})}return f}function _e(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function z(e,t,n){let r=_e(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}function B(e,t){return e==="default"&&(t===`flex`||t===`priority`)?t:e??t}function V(e){let t=(e&&e.trim().length>0?e:j).replace(/\/+$/,``);return t.endsWith(`/codex/responses`)?t:t.endsWith(`/codex`)?`${t}/responses`:`${t}/codex/responses`}function ve(e){let t=new URL(V(e));return t.protocol===`https:`&&(t.protocol=`wss:`),t.protocol===`http:`&&(t.protocol=`ws:`),t.toString()}async function ye(e,t,n,r,i,a){await h(W(Te(e,a?.signal),t),t,n,r,{serviceTier:a?.serviceTier,grammarToolInputProperties:i,resolveServiceTier:B,applyServiceTierPricing:(e,t)=>z(e,t,r)})}var H=class extends Error{code;payload;constructor(e,t){super(e),this.name=`CodexApiError`,this.code=t?.code,this.payload=t?.payload,this.cause=t?.cause}},U=class extends Error{payload;constructor(e,t){super(e),this.name=`CodexProtocolError`,this.payload=t?.payload,this.cause=t?.cause}};function be(e){return e instanceof H||e instanceof U}function xe(e){return e instanceof H&&e.code===oe}function Se(e){return e instanceof H&&e.code===se}function Ce(e){let t=e.error&&typeof e.error==`object`?e.error:void 0;return{code:typeof e.code==`string`?e.code:typeof t?.code==`string`?t.code:void 0,message:typeof e.message==`string`?e.message:typeof t?.message==`string`?t.message:void 0}}async function*W(e,t){for await(let n of e){let e=typeof n.type==`string`?n.type:void 0;if(e){if(e===`error`){let{code:e,message:t}=Ce(n);throw new H(`Codex error: ${t||e||JSON.stringify(n)}`,{code:e,payload:n})}if(e===`response.failed`){let e=n.response,t=e?.error?.code,r=e?.error?.message;throw new H(r||`Codex response failed`,{code:t,payload:n})}if(e===`response.done`||e===`response.completed`||e===`response.incomplete`){let e=n.response;typeof e?.end_turn==`boolean`&&(t.endTurn=e.end_turn);let r=e&&{...e,status:we(e.status)};yield{...n,type:`response.completed`,response:r};return}yield n}}}function we(e){if(typeof e==`string`)return ce.has(e)?e:void 0}async function*Te(e,t){if(!e.body)return;let r=e.body.getReader(),i=new TextDecoder,a=``,o=()=>{r.cancel().catch(()=>{})};t?.addEventListener(`abort`,o,{once:!0});try{for(;;){if(t?.aborted)throw Error(`Request was aborted`);let{done:e,value:o}=await r.read();if(t?.aborted)throw Error(`Request was aborted`);if(e)break;a+=i.decode(o,{stream:!0});let s=a.indexOf(`
|
|
2
2
|
|
|
3
3
|
`);for(;s!==-1;){let e=a.slice(0,s);a=a.slice(s+2);let t=e.split(`
|
|
4
4
|
`).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim());if(t.length>0){let e=t.join(`
|