@vellumai/web 0.10.1-staging.3 → 0.10.1
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/assets/{about-page-CW4mH7w7.js → about-page-B-yNJBih.js} +1 -1
- package/dist/assets/{account-page-va3jsKG3.js → account-page-CHiDb1yX.js} +1 -1
- package/dist/assets/{add-credits-modal-BJQfpHmv.js → add-credits-modal-GSsxaybq.js} +1 -1
- package/dist/assets/{advanced-page-BQEEMqUJ.js → advanced-page-9dJbjOiT.js} +1 -1
- package/dist/assets/ai-page-Du6k7XV_.js +1 -0
- package/dist/assets/api-CjVG_nMi.js +1 -0
- package/dist/assets/{api-key-screen-D3pD0rPG.js → api-key-screen-BBajxzG8.js} +1 -1
- package/dist/assets/{archive-D-fnxeQf.js → archive-BFILUl9x.js} +1 -1
- package/dist/assets/{archive-page-CDaGKTY2.js → archive-page-DDar_tND.js} +1 -1
- package/dist/assets/arrow-left-CP-EhDNF.js +1 -0
- package/dist/assets/arrow-up-nBfZxfhi.js +1 -0
- package/dist/assets/assistant-api-BX_B1xSC.js +1 -0
- package/dist/assets/{assistant-status-panel-Byd6c2GD.js → assistant-status-panel-CFhkAfJY.js} +1 -1
- package/dist/assets/auth-store-CbVvQiBR.js +7 -0
- package/dist/assets/ban-BpBuRCKI.js +1 -0
- package/dist/assets/{bell-tEVVOFRL.js → bell-DB1SrBre.js} +1 -1
- package/dist/assets/{billing-page-GeeUd8nR.js → billing-page-BByuYpJa.js} +1 -1
- package/dist/assets/{bookmark-Bw04OiC7.js → bookmark-C8arQ3wm.js} +1 -1
- package/dist/assets/{bookmarks-page-vJb4HXNp.js → bookmarks-page-DyjSZPPW.js} +1 -1
- package/dist/assets/{bug-Dyqld0Aa.js → bug-BuL3O3_2.js} +1 -1
- package/dist/assets/build-state-CMpEWWjf.js +1 -0
- package/dist/assets/{cable-CYB4K1nY.js → cable-C0pEWbc5.js} +1 -1
- package/dist/assets/{calendar-DUv7hzHD.js → calendar-BCNBN7PC.js} +1 -1
- package/dist/assets/{capture-error-CN7ObyIk.js → capture-error-AoUURkgi.js} +1 -1
- package/dist/assets/chevron-left-o_oJAd6A.js +1 -0
- package/dist/assets/chevron-right-BNHlGCTg.js +1 -0
- package/dist/assets/{chevron-up-BT6xIbCo.js → chevron-up-BnW-hcOL.js} +1 -1
- package/dist/assets/{circle-alert-D58pfVBz.js → circle-alert-bz1ccYRI.js} +1 -1
- package/dist/assets/circle-check-DBzb54Kz.js +1 -0
- package/dist/assets/{cloud-off-DfVAWu4D.js → cloud-off-BWmMU3G-.js} +1 -1
- package/dist/assets/code-Bju_p7d-.js +1 -0
- package/dist/assets/{command-palette-K6nK6F7f.js → command-palette-DJgHXop1.js} +1 -1
- package/dist/assets/command-palette-window-page-CSaRzD87.js +1 -0
- package/dist/assets/{community-page-UxhAQFV9.js → community-page-BuuYKT7i.js} +1 -1
- package/dist/assets/{connect-page-BgPgIb-F.js → connect-page-B0Pym3dJ.js} +1 -1
- package/dist/assets/{consent-controls-Bk8etO5C.js → consent-controls-o06cSwWt.js} +1 -1
- package/dist/assets/{contacts-gateway-CZMULd7Z.js → contacts-gateway-11r4y5pQ.js} +1 -1
- package/dist/assets/{contacts-page-route-CM06poQB.js → contacts-page-route-YQf7Dxxo.js} +1 -1
- package/dist/assets/{conversation-queries-Bm61s1He.js → conversation-queries-DF1Lujnm.js} +1 -1
- package/dist/assets/{cpu-fIfNq834.js → cpu-DpzMm9_m.js} +1 -1
- package/dist/assets/{credit-card-CcU-1-nT.js → credit-card-CN7yFHhB.js} +1 -1
- package/dist/assets/{danger-zone-redirect-page-BsyYvQrZ.js → danger-zone-redirect-page-iCmRnyei.js} +1 -1
- package/dist/assets/debug-page-CXi6rNhS.js +2 -0
- package/dist/assets/{deploy-dialogs-BJI2X201.js → deploy-dialogs-DygUf1og.js} +1 -1
- package/dist/assets/{developer-page-9X_iqAuN.js → developer-page-C5desNav.js} +1 -1
- package/dist/assets/{devices-page-Byr7kUNa.js → devices-page-mF5RECdQ.js} +1 -1
- package/dist/assets/{dictation-overlay-page-CN6yGveG.js → dictation-overlay-page-DL5K7HYW.js} +1 -1
- package/dist/assets/{document-viewer-page-CRnBN1cE.js → document-viewer-page-C2oFS1wI.js} +1 -1
- package/dist/assets/{dollar-sign-Bi1OUcqU.js → dollar-sign-D_XmiHA-.js} +1 -1
- package/dist/assets/{domain-field-BqCbfaBb.js → domain-field-ChoXVdlk.js} +1 -1
- package/dist/assets/{earn-credits-modal-DevPS5jN.js → earn-credits-modal-DsuqrJTY.js} +1 -1
- package/dist/assets/{emails-page-B0dZDuR-.js → emails-page-Duy9jhr6.js} +1 -1
- package/dist/assets/{external-link-CyRCaWBE.js → external-link-DAovIsxF.js} +1 -1
- package/dist/assets/{file-editor-DqNMJEa4.js → file-editor-n2sYGdD-.js} +1 -1
- package/dist/assets/{general-page-B83wb3Tj.js → general-page-BSdbq26O.js} +1 -1
- package/dist/assets/{globe-CiNEZj-J.js → globe-CfKniRIP.js} +1 -1
- package/dist/assets/{hard-drive-BbaHN7Gp.js → hard-drive-DggmyfjR.js} +1 -1
- package/dist/assets/{hatching-screen-Cok0yK9s.js → hatching-screen-BRgjqSLd.js} +1 -1
- package/dist/assets/{home-page-route-C_dx1nVl.js → home-page-route-CV_mh2wJ.js} +1 -1
- package/dist/assets/{hosting-screen-CsavWom3.js → hosting-screen--kBc2JgZ.js} +1 -1
- package/dist/assets/identity-page-route-CDcFNfWw.js +1 -0
- package/dist/assets/index-Cx6vyW7T.js +155 -0
- package/dist/assets/{info-CUuJWmsF.js → info-DXbzDupm.js} +1 -1
- package/dist/assets/{inspect-page-C_hXwcho.js → inspect-page-D03CXXMs.js} +3 -3
- package/dist/assets/{install-Gyq-nEic.js → install-JGbHHiCV.js} +1 -1
- package/dist/assets/{integrations-page-Dz67PdC8.js → integrations-page-BFPmyQdR.js} +1 -1
- package/dist/assets/{intelligence-layout-CgcnfjDK.js → intelligence-layout-DgkmPrJl.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-page-BhTucwGW.js → keyboard-shortcuts-page-waVolRQN.js} +1 -1
- package/dist/assets/{library-detail-page-DK89d-u4.js → library-detail-page-eMzOqx_B.js} +1 -1
- package/dist/assets/{library-page-vrFk-Rt1.js → library-page-BwoQ9K34.js} +1 -1
- package/dist/assets/{link-2-C6BJ3RH_.js → link-2-Dmka5LJV.js} +1 -1
- package/dist/assets/loader-circle-Cw1KvvLK.js +1 -0
- package/dist/assets/{local-mode-Bg6wpc5q.js → local-mode-BD2zqd9I.js} +3 -3
- package/dist/assets/{log-in-BPJxI98d.js → log-in-CUDpYpYW.js} +1 -1
- package/dist/assets/{login-flow-CzPVmpoB.js → login-flow-DVsR7fEC.js} +1 -1
- package/dist/assets/{login-page-Csy9gwOa.js → login-page-DYLjbG5w.js} +1 -1
- package/dist/assets/{logout-page-Dz800OIa.js → logout-page-DRRS14hP.js} +1 -1
- package/dist/assets/{logs-layout-BwgQ_S4K.js → logs-layout-CSvew4_d.js} +1 -1
- package/dist/assets/{mcp-page-5PXJCl5X.js → mcp-page-CUehr_wQ.js} +1 -1
- package/dist/assets/{memory-router-playground-page-BVhLOinh.js → memory-router-playground-page-A2zlGskJ.js} +1 -1
- package/dist/assets/{metric-card-DxrlxUKS.js → metric-card-CgO1F06f.js} +1 -1
- package/dist/assets/{minimize-2-BFkjQhB_.js → minimize-2-CPmn1RIm.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-rYD2VIdb.js → mobile-sidebar-drawer-R6nyuXZ1.js} +1 -1
- package/dist/assets/{moon-D-eeNLvA.js → moon-Be4Pgk5X.js} +1 -1
- package/dist/assets/{notifications-page-CVB7NSmc.js → notifications-page-DcIQm_jh.js} +1 -1
- package/dist/assets/{oauth-complete-page-CzvAQxVm.js → oauth-complete-page-BJudfLeY.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-e67O6LPS.js → oauth-popup-complete-page-HRhzTWe_.js} +1 -1
- package/dist/assets/{pairing-page-B6gfw_Dk.js → pairing-page-DS3k_UyF.js} +1 -1
- package/dist/assets/{password-reset-page-BD2oysNq.js → password-reset-page-CDvLTa8S.js} +1 -1
- package/dist/assets/{pencil-Cyrr5VNX.js → pencil-Dm2eFMe3.js} +1 -1
- package/dist/assets/{platform-loopback-page-BtfoD3mE.js → platform-loopback-page-CKI-92-q.js} +1 -1
- package/dist/assets/plugin-detail-page-THfWbuJx.js +1 -0
- package/dist/assets/{plugins-page-CVnC0QSh.js → plugins-page-BxfKs2Np.js} +1 -1
- package/dist/assets/{prechat-route-y6KNH7Qp.js → prechat-route-uavNUOzg.js} +1 -1
- package/dist/assets/{prefs-BQY2Hl9H.js → prefs-DP4g-Qgi.js} +1 -1
- package/dist/assets/{privacy-page-Bbc8BtbS.js → privacy-page-Vq50i0Wv.js} +1 -1
- package/dist/assets/{privacy-screen-CEH2JNQv.js → privacy-screen-1ITDKJ6D.js} +1 -1
- package/dist/assets/{provider-callback-page-C7misZDP.js → provider-callback-page-tWLMyImI.js} +1 -1
- package/dist/assets/{provider-key-CK_U6Kex.js → provider-key-g87caUSW.js} +1 -1
- package/dist/assets/{provider-signup-page-PWsQh0Yg.js → provider-signup-page-CBPV-1Ih.js} +1 -1
- package/dist/assets/{quick-input-page-B8bRJhco.js → quick-input-page-CEPPTVs7.js} +1 -1
- package/dist/assets/{react-query.gen-DfnbKPpc.js → react-query.gen-4ZMhZ-fj.js} +1 -1
- package/dist/assets/{refresh-cw-C7wug6Q3.js → refresh-cw-YXbpNg95.js} +1 -1
- package/dist/assets/{research-mock-page-C9A3-fDP.js → research-mock-page-Dln6TeKV.js} +1 -1
- package/dist/assets/{research-onboarding-route-efpyR7DJ.js → research-onboarding-route-HWXEnr-H.js} +1 -1
- package/dist/assets/{resize-errors-D0YsLvoI.js → resize-errors-CXz-pd2h.js} +1 -1
- package/dist/assets/{resolved-assistants-store-lkSgU__i.js → resolved-assistants-store-DLNFVaZL.js} +1 -1
- package/dist/assets/{return-to-BcgKmS7W.js → return-to-DxTXKF-C.js} +1 -1
- package/dist/assets/{review-terms-screen-CDfWU0ZO.js → review-terms-screen-DuORfqOE.js} +1 -1
- package/dist/assets/{routes-BLyehs4B.js → routes-B9xcBuuC.js} +1 -1
- package/dist/assets/{save-DdguSDQ1.js → save-CQ2-kSlv.js} +1 -1
- package/dist/assets/{schedules-Dbclu3k6.js → schedules-MF0cMAPX.js} +1 -1
- package/dist/assets/{sdk.gen-W0KlW-sG.js → sdk.gen-DtKkd6hs.js} +1 -1
- package/dist/assets/{select-assistant-screen-ZJ9IYyUk.js → select-assistant-screen-C2pCQCeh.js} +1 -1
- package/dist/assets/{settings-layout-Cp1jKtid.js → settings-layout-Co57Zw8f.js} +1 -1
- package/dist/assets/{share-feedback-modal-pEDXaPEK.js → share-feedback-modal-C4yo471J.js} +1 -1
- package/dist/assets/{sidebar-tree-B24zaatU.js → sidebar-tree-D0lNnpA6.js} +1 -1
- package/dist/assets/{signup-page-Bf1Etxe9.js → signup-page-P4juei29.js} +1 -1
- package/dist/assets/{skills-page-A9JPglEX.js → skills-page-KI_k-igb.js} +1 -1
- package/dist/assets/{sound-manager-BJ26N0gf.js → sound-manager-RQj5g2kL.js} +1 -1
- package/dist/assets/{sounds-page-D9PLU10T.js → sounds-page-DFXhvf_o.js} +1 -1
- package/dist/assets/{sparkles-BoIJjAXt.js → sparkles-C8hCShdb.js} +1 -1
- package/dist/assets/{step-indicator-dots-CE4dEV3k.js → step-indicator-dots-Bx_0xTIr.js} +1 -1
- package/dist/assets/{subagent-detail-panel-DdynnGgr.js → subagent-detail-panel-eXMmoVu4.js} +2 -2
- package/dist/assets/{system-events-page-CapsfcLj.js → system-events-page-BJJteZri.js} +1 -1
- package/dist/assets/{system-events-redirect-page-DygqxqRr.js → system-events-redirect-page-CheSz42h.js} +1 -1
- package/dist/assets/{tiptap-document-editor-Bmxs-PZ9.js → tiptap-document-editor-C8FlNAsc.js} +1 -1
- package/dist/assets/{tool-detail-panel-BqCxmSox.js → tool-detail-panel-DgVn-kKw.js} +2 -2
- package/dist/assets/{trace-page-CniuHbEK.js → trace-page-CZICq31J.js} +1 -1
- package/dist/assets/{triangle-alert-CoIDviBm.js → triangle-alert-AqQQTwUZ.js} +1 -1
- package/dist/assets/{upgrade-cancel-page-DBjzADY1.js → upgrade-cancel-page-BQJOrigy.js} +1 -1
- package/dist/assets/{upgrade-success-page-VewnS1PS.js → upgrade-success-page-BPRZMLDu.js} +1 -1
- package/dist/assets/{usage-page-XZramSoz.js → usage-page-DU36h2RZ.js} +1 -1
- package/dist/assets/{use-active-assistant-id-DTsVl8b7.js → use-active-assistant-id-BlwRimQH.js} +1 -1
- package/dist/assets/use-is-org-ready-CRkh60tU.js +1 -0
- package/dist/assets/{use-onboarding-login-vAFdm7Pu.js → use-onboarding-login-BZ4ismb6.js} +1 -1
- package/dist/assets/{use-plugin-drift-B5uLDuHi.js → use-plugin-drift-C3gz_rng.js} +1 -1
- package/dist/assets/{viewer-store-CTNS5BCs.js → viewer-store-9Ag85lFC.js} +1 -1
- package/dist/assets/{voice-page-DiP4QkZU.js → voice-page-DB2h9uqJ.js} +1 -1
- package/dist/assets/{weather-forecast-display-3wTH0LJ0.js → weather-forecast-display-DoCG5fqI.js} +1 -1
- package/dist/assets/{welcome-screen-DVEKTxnJ.js → welcome-screen-z3RULgvo.js} +1 -1
- package/dist/assets/{workflow-detail-panel-Djzb5VDE.js → workflow-detail-panel-uiydoHie.js} +1 -1
- package/dist/assets/{workspace-page-DvdkgVub.js → workspace-page-9B98Z90n.js} +1 -1
- package/dist/assets/x-BeVbiDS2.js +1 -0
- package/dist/index.html +54 -54
- package/package.json +1 -1
- package/dist/assets/ai-page-C2gOM0fO.js +0 -1
- package/dist/assets/api-kMnfZUPa.js +0 -1
- package/dist/assets/arrow-left-CEu7Dsda.js +0 -1
- package/dist/assets/arrow-up-BHPaHiHe.js +0 -1
- package/dist/assets/assistant-api-c0d65GPi.js +0 -1
- package/dist/assets/auth-store-Cc0c0sQk.js +0 -7
- package/dist/assets/ban-DOB4wT-M.js +0 -1
- package/dist/assets/build-state-WKs9Ht8_.js +0 -1
- package/dist/assets/chevron-left-BFX62ERI.js +0 -1
- package/dist/assets/chevron-right-Cc3NZhAF.js +0 -1
- package/dist/assets/circle-check-BKkxjdE1.js +0 -1
- package/dist/assets/code-CfKv4BKJ.js +0 -1
- package/dist/assets/command-palette-window-page-BTGDdcg4.js +0 -1
- package/dist/assets/debug-page-BVMoMpUg.js +0 -2
- package/dist/assets/identity-page-route-Bly29wqM.js +0 -1
- package/dist/assets/index-DhxGhfwI.js +0 -155
- package/dist/assets/loader-circle-YAV9sMh_.js +0 -1
- package/dist/assets/plugin-detail-page-CTQIvdhJ.js +0 -1
- package/dist/assets/use-is-org-ready-BL-GcZZw.js +0 -1
- package/dist/assets/x-b3o2p6YU.js +0 -1
- /package/dist/assets/{api-errors-C3sAdlZQ.js → api-errors-D3EsNrwn.js} +0 -0
- /package/dist/assets/{client.gen-Bx3pJMXa.js → client.gen-0CkwJ2Ya.js} +0 -0
- /package/dist/assets/{createLucideIcon-KBgJOpms.js → createLucideIcon-BlMXrA59.js} +0 -0
- /package/dist/assets/{is-electron-CcgCla1v.js → is-electron-C_ZTVhv8.js} +0 -0
package/dist/assets/{weather-forecast-display-3wTH0LJ0.js → weather-forecast-display-DoCG5fqI.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{t as r}from"./moon-D-eeNLvA.js";import{Dr as i,Fr as a,Gi as o,Hi as s,I as c,Ii as l,Ki as u,L as d,R as f,Rr as p,Ui as m,Vi as h,Wi as g,z as _}from"./index-DhxGhfwI.js";var v=e(t(),1),y={"sun.max.fill":{icon:a,className:`text-orange-500`},"cloud.sun.fill":{icon:s,className:`text-amber-400`},"moon.fill":{icon:r,className:`text-blue-400`},"cloud.moon.fill":{icon:g,className:`text-blue-400`},"cloud.fill":{icon:h,className:`text-stone-400`},"cloud.rain.fill":{icon:m,className:`text-blue-400`},snowflake:{icon:p,className:`text-blue-300`},"cloud.bolt.fill":{icon:o,className:`text-orange-500`},"cloud.fog.fill":{icon:u,className:`text-stone-400`}},b={sunny:{icon:a,className:`text-orange-500`},clear:{icon:a,className:`text-orange-500`},"partly cloudy":{icon:s,className:`text-amber-400`},"mostly sunny":{icon:s,className:`text-amber-400`},cloudy:{icon:h,className:`text-stone-400`},overcast:{icon:h,className:`text-stone-400`},rainy:{icon:m,className:`text-blue-400`},rain:{icon:m,className:`text-blue-400`},drizzle:{icon:m,className:`text-blue-400`},snow:{icon:p,className:`text-blue-300`},snowy:{icon:p,className:`text-blue-300`},thunderstorm:{icon:o,className:`text-orange-500`},thunder:{icon:o,className:`text-orange-500`},foggy:{icon:u,className:`text-stone-400`},fog:{icon:u,className:`text-stone-400`},mist:{icon:u,className:`text-stone-400`},hazy:{icon:u,className:`text-stone-400`},night:{icon:r,className:`text-blue-400`},"mainly clear":{icon:a,className:`text-orange-500`},"mostly cloudy":{icon:h,className:`text-stone-400`},breezy:{icon:i,className:`text-stone-400`},windy:{icon:i,className:`text-stone-400`},cool:{icon:h,className:`text-stone-400`},warm:{icon:a,className:`text-orange-500`},hot:{icon:a,className:`text-orange-500`},cold:{icon:p,className:`text-blue-300`},"cold snap":{icon:p,className:`text-blue-300`},"warm, mostly sunny":{icon:s,className:`text-amber-400`},"cooler, breezy":{icon:i,className:`text-stone-400`}},x={icon:h,className:`text-stone-400`};function S(e){let t=y[e];if(t)return t;let n=e.toLowerCase(),r=b[n];if(r)return r;for(let[e,t]of Object.entries(b))if(n.includes(e))return t;return x}function C(e){if(typeof e==`string`){let t=e.match(/^(\d+)\s*mph\s*(.*)/i);if(t)return{speed:Number(t[1]),direction:t[2]?.trim()||void 0}}return{}}function w(e){let t;if(typeof e.location==`string`)t=e.location;else{let n=f(e.location);n&&typeof n.name==`string`&&(t=n.name)}if(!t)return null;let n=f(e.current),r=d(n?.temp)??d(e.currentTemp)??d(e.temperature)??d(e.temp),i=d(n?.feelsLike)??d(n?.feels_like)??d(n?.apparentTemperature)??d(e.feelsLike)??d(e.feels_like)??d(e.apparentTemperature),a=_(n?.condition)??_(e.condition),o=d(n?.humidity)??d(e.humidity),s=C(n?.wind??e.wind),l=d(n?.windSpeed)??d(n?.wind_speed)??d(e.windSpeed)??d(e.wind_speed)??s.speed,u=_(n?.windDirection)??_(n?.wind_direction)??_(e.windDirection)??_(e.wind_direction)??s.direction,p=f(e.units),m=_(p?.temperature)??_(n?.unit)??_(e.unit)??`F`,h=_(p?.speed)??_(e.windUnit)??_(e.wind_unit),g=c(e.hourly).map((e,t)=>({id:_(e.id)??String(t),time:_(e.time)??``,icon:_(e.icon)??_(e.condition)??`cloud.fill`,temp:d(e.tempC)??d(e.temp)??d(e.temperature),tempC:d(e.tempC)})),v=c([e.forecast,e.daily,e.days].find(Array.isArray)).map((e,t)=>({id:_(e.id)??String(t),day:_(e.day)??_(e.date),dayLabel:_(e.dayLabel)??_(e.date),icon:_(e.icon)??_(e.condition)??`cloud.fill`,low:d(e.low),high:d(e.high),lowC:d(e.lowC),highC:d(e.highC),precip:d(e.precip)??d(e.precipitation)??d(e.precipitationProbability),condition:_(e.condition)}));return{location:t,currentTemp:r,feelsLike:i,condition:a,humidity:o,windSpeed:l,windDirection:u,windUnit:h,unit:m,hourly:g.length>0?g:void 0,forecast:v.length>0?v:void 0}}function T(e){return e*9/5+32}function E(e){return(e-32)*5/9}function D(e,t,n){if(e===void 0)return null;let r=e;return t&&!n&&(r=E(e)),!t&&n&&(r=T(e)),`${Math.round(r)}`}function O(e,t,n){return e.tempC===void 0?e.temp===void 0?null:D(e.temp,t,n):D(e.tempC,!1,n)}function k(e,t,n){return e.lowC===void 0?D(e.low,t,n):D(e.lowC,!1,n)}function A(e,t,n){return e.highC===void 0?D(e.high,t,n):D(e.highC,!1,n)}var j=n();function M({icon:e,size:t=20}){let{icon:n,className:r}=S(e);return(0,j.jsx)(n,{width:t,height:t,className:r})}function N({useFahrenheit:e,onToggle:t}){return(0,j.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border border-[var(--border-element)]`,children:[(0,j.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:`px-2 py-0.5 text-body-small-default transition-colors ${e?`bg-[var(--primary-base)] text-[var(--content-inset)]`:`bg-transparent text-[var(--content-quiet)]`}`,children:`°F`}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:`px-2 py-0.5 text-body-small-default transition-colors ${e?`bg-transparent text-[var(--content-quiet)]`:`bg-[var(--primary-base)] text-[var(--content-inset)]`}`,children:`°C`})]})}function P({data:e,sourceIsFahrenheit:t,useFahrenheit:n,onToggle:r}){let a=e.location,o=D(e.currentTemp,t,n),s=D(e.feelsLike,t,n),c=n?`F`:`C`,u=e.forecast?.[0],d=u?A(u,t,n):null,f=u?k(u,t,n):null,p=null;return e.windSpeed!==void 0&&(p=`${Math.round(e.windSpeed)} ${e.windUnit??`mph`}`,e.windDirection&&(p=`${e.windDirection} ${p}`)),(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:a}),o!==null&&(0,j.jsxs)(`div`,{className:`mt-1 text-4xl font-light text-[var(--content-default)]`,children:[o,`°`,c]}),e.condition&&(0,j.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-quiet)]`,children:e.condition})]}),(0,j.jsx)(N,{useFahrenheit:n,onToggle:r})]}),(0,j.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3`,children:[s!==null&&(0,j.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`Feels like `,s,`°`]}),d!==null&&f!==null&&(0,j.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`H:`,d,`° L:`,f,`°`]}),p&&(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,j.jsx)(i,{width:12,height:12}),p]}),e.humidity!==void 0&&(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,j.jsx)(l,{width:12,height:12}),e.humidity,`%`]})]})]})}function F({hourly:e,sourceIsFahrenheit:t,useFahrenheit:n}){return(0,j.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,j.jsx)(`div`,{className:`flex gap-3 overflow-x-auto`,children:e.map((e,r)=>{let i=e.time.toLowerCase()===`now`,a=O(e,t,n);return(0,j.jsxs)(`div`,{className:`flex min-w-[3rem] shrink-0 flex-col items-center gap-1`,children:[(0,j.jsx)(`span`,{className:i?`text-body-small-emphasised text-[var(--content-default)]`:`text-label-medium-default text-[var(--content-quiet)]`,children:i?`Now`:e.time}),(0,j.jsx)(M,{icon:e.icon,size:18}),a!==null&&(0,j.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-default)]`,children:[a,`°`]})]},e.id??r)})})})}function I({forecast:e,currentTemp:t,sourceIsFahrenheit:n,useFahrenheit:r}){let{globalMin:i,globalMax:a}=(0,v.useMemo)(()=>{let t=1/0,n=-1/0;for(let r of e){let e=r.lowC??r.low,i=r.highC??r.high;e!==void 0&&e<t&&(t=e),i!==void 0&&i>n&&(n=i)}return{globalMin:t===1/0?0:t,globalMax:n===-1/0?100:n}},[e]),o=a-i||1;return(0,j.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,j.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,s)=>{let c=e.dayLabel??e.day??`Day ${s+1}`,l=c.toLowerCase()===`today`,u=k(e,n,r),d=A(e,n,r),f=e.precip,p=e.lowC??e.low??i,m=e.highC??e.high??a,h=(p-i)/o*100,g=(m-i)/o*100,_=Math.max(g-h,2),v=null;if(l&&t!==void 0){let r=(e.lowC!==void 0||e.highC!==void 0)&&n?(t-32)*5/9:t;v=m===p?50:(Math.max(p,Math.min(m,r))-p)/(m-p)*100}return(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsx)(`span`,{className:`w-12 shrink-0 truncate text-body-small-default ${l?`text-[var(--content-default)]`:`text-[var(--content-quiet)]`}`,children:c}),(0,j.jsxs)(`div`,{className:`flex w-10 shrink-0 items-center justify-center gap-0.5`,children:[(0,j.jsx)(M,{icon:e.icon,size:16}),f!==void 0&&f>0&&(0,j.jsxs)(`span`,{className:`text-label-small-default text-blue-400`,children:[Math.round(f),`%`]})]}),(0,j.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-faint)]`,children:u===null?`--`:`${u}°`}),(0,j.jsxs)(`div`,{className:`relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--border-subtle)]`,children:[(0,j.jsx)(`div`,{className:`absolute top-0 h-full rounded-full bg-[var(--primary-base)]`,style:{left:`${h}%`,width:`${_}%`}}),v!==null&&(0,j.jsx)(`div`,{className:`absolute top-1/2 h-2.5 w-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-[var(--aux-white)] bg-[var(--aux-white)] shadow-sm`,style:{left:`${h+v/100*_}%`}})]}),(0,j.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-default)]`,children:d===null?`--`:`${d}°`})]},e.id??s)})})})}function L({templateData:e,fallback:t}){let n=(0,v.useMemo)(()=>w(e),[e]),r=n?.unit?.toUpperCase()===`F`||n?.unit?.toLowerCase()===`fahrenheit`,[i,a]=(0,v.useState)(null),o=i??r;return!n||n.currentTemp===void 0&&!n.forecast?.length?t??null:(0,j.jsxs)(`div`,{className:`mt-3`,children:[(0,j.jsx)(P,{data:n,sourceIsFahrenheit:r,useFahrenheit:o,onToggle:a}),n.hourly&&n.hourly.length>0&&(0,j.jsx)(F,{hourly:n.hourly,sourceIsFahrenheit:r,useFahrenheit:o}),n.forecast&&n.forecast.length>0&&(0,j.jsx)(I,{forecast:n.forecast,currentTemp:n.currentTemp,sourceIsFahrenheit:r,useFahrenheit:o})]})}export{L as WeatherForecastDisplay};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{t as r}from"./moon-Be4Pgk5X.js";import{B as i,Dr as a,Fr as o,Gi as s,Hi as c,Ii as l,Ki as u,L as d,R as f,Rr as p,Ui as m,Vi as h,Wi as g,z as _}from"./index-Cx6vyW7T.js";var v=e(t(),1),y={"sun.max.fill":{icon:o,className:`text-orange-500`},"cloud.sun.fill":{icon:c,className:`text-amber-400`},"moon.fill":{icon:r,className:`text-blue-400`},"cloud.moon.fill":{icon:g,className:`text-blue-400`},"cloud.fill":{icon:h,className:`text-stone-400`},"cloud.rain.fill":{icon:m,className:`text-blue-400`},snowflake:{icon:p,className:`text-blue-300`},"cloud.bolt.fill":{icon:s,className:`text-orange-500`},"cloud.fog.fill":{icon:u,className:`text-stone-400`}},b={sunny:{icon:o,className:`text-orange-500`},clear:{icon:o,className:`text-orange-500`},"partly cloudy":{icon:c,className:`text-amber-400`},"mostly sunny":{icon:c,className:`text-amber-400`},cloudy:{icon:h,className:`text-stone-400`},overcast:{icon:h,className:`text-stone-400`},rainy:{icon:m,className:`text-blue-400`},rain:{icon:m,className:`text-blue-400`},drizzle:{icon:m,className:`text-blue-400`},snow:{icon:p,className:`text-blue-300`},snowy:{icon:p,className:`text-blue-300`},thunderstorm:{icon:s,className:`text-orange-500`},thunder:{icon:s,className:`text-orange-500`},foggy:{icon:u,className:`text-stone-400`},fog:{icon:u,className:`text-stone-400`},mist:{icon:u,className:`text-stone-400`},hazy:{icon:u,className:`text-stone-400`},night:{icon:r,className:`text-blue-400`},"mainly clear":{icon:o,className:`text-orange-500`},"mostly cloudy":{icon:h,className:`text-stone-400`},breezy:{icon:a,className:`text-stone-400`},windy:{icon:a,className:`text-stone-400`},cool:{icon:h,className:`text-stone-400`},warm:{icon:o,className:`text-orange-500`},hot:{icon:o,className:`text-orange-500`},cold:{icon:p,className:`text-blue-300`},"cold snap":{icon:p,className:`text-blue-300`},"warm, mostly sunny":{icon:c,className:`text-amber-400`},"cooler, breezy":{icon:a,className:`text-stone-400`}},x={icon:h,className:`text-stone-400`};function S(e){let t=y[e];if(t)return t;let n=e.toLowerCase(),r=b[n];if(r)return r;for(let[e,t]of Object.entries(b))if(n.includes(e))return t;return x}function C(e){if(typeof e==`string`){let t=e.match(/^(\d+)\s*mph\s*(.*)/i);if(t)return{speed:Number(t[1]),direction:t[2]?.trim()||void 0}}return{}}function w(e){let t;if(typeof e.location==`string`)t=e.location;else{let n=_(e.location);n&&typeof n.name==`string`&&(t=n.name)}if(!t)return null;let n=_(e.current),r=f(n?.temp)??f(e.currentTemp)??f(e.temperature)??f(e.temp),a=f(n?.feelsLike)??f(n?.feels_like)??f(n?.apparentTemperature)??f(e.feelsLike)??f(e.feels_like)??f(e.apparentTemperature),o=i(n?.condition)??i(e.condition),s=f(n?.humidity)??f(e.humidity),c=C(n?.wind??e.wind),l=f(n?.windSpeed)??f(n?.wind_speed)??f(e.windSpeed)??f(e.wind_speed)??c.speed,u=i(n?.windDirection)??i(n?.wind_direction)??i(e.windDirection)??i(e.wind_direction)??c.direction,p=_(e.units),m=i(p?.temperature)??i(n?.unit)??i(e.unit)??`F`,h=i(p?.speed)??i(e.windUnit)??i(e.wind_unit),g=d(e.hourly).map((e,t)=>({id:i(e.id)??String(t),time:i(e.time)??``,icon:i(e.icon)??i(e.condition)??`cloud.fill`,temp:f(e.tempC)??f(e.temp)??f(e.temperature),tempC:f(e.tempC)})),v=d([e.forecast,e.daily,e.days].find(Array.isArray)).map((e,t)=>({id:i(e.id)??String(t),day:i(e.day)??i(e.date),dayLabel:i(e.dayLabel)??i(e.date),icon:i(e.icon)??i(e.condition)??`cloud.fill`,low:f(e.low),high:f(e.high),lowC:f(e.lowC),highC:f(e.highC),precip:f(e.precip)??f(e.precipitation)??f(e.precipitationProbability),condition:i(e.condition)}));return{location:t,currentTemp:r,feelsLike:a,condition:o,humidity:s,windSpeed:l,windDirection:u,windUnit:h,unit:m,hourly:g.length>0?g:void 0,forecast:v.length>0?v:void 0}}function T(e){return e*9/5+32}function E(e){return(e-32)*5/9}function D(e,t,n){if(e===void 0)return null;let r=e;return t&&!n&&(r=E(e)),!t&&n&&(r=T(e)),`${Math.round(r)}`}function O(e,t,n){return e.tempC===void 0?e.temp===void 0?null:D(e.temp,t,n):D(e.tempC,!1,n)}function k(e,t,n){return e.lowC===void 0?D(e.low,t,n):D(e.lowC,!1,n)}function A(e,t,n){return e.highC===void 0?D(e.high,t,n):D(e.highC,!1,n)}var j=n();function M({icon:e,size:t=20}){let{icon:n,className:r}=S(e);return(0,j.jsx)(n,{width:t,height:t,className:r})}function N({useFahrenheit:e,onToggle:t}){return(0,j.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border border-[var(--border-element)]`,children:[(0,j.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:`px-2 py-0.5 text-body-small-default transition-colors ${e?`bg-[var(--primary-base)] text-[var(--content-inset)]`:`bg-transparent text-[var(--content-quiet)]`}`,children:`°F`}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:`px-2 py-0.5 text-body-small-default transition-colors ${e?`bg-transparent text-[var(--content-quiet)]`:`bg-[var(--primary-base)] text-[var(--content-inset)]`}`,children:`°C`})]})}function P({data:e,sourceIsFahrenheit:t,useFahrenheit:n,onToggle:r}){let i=e.location,o=D(e.currentTemp,t,n),s=D(e.feelsLike,t,n),c=n?`F`:`C`,u=e.forecast?.[0],d=u?A(u,t,n):null,f=u?k(u,t,n):null,p=null;return e.windSpeed!==void 0&&(p=`${Math.round(e.windSpeed)} ${e.windUnit??`mph`}`,e.windDirection&&(p=`${e.windDirection} ${p}`)),(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:i}),o!==null&&(0,j.jsxs)(`div`,{className:`mt-1 text-4xl font-light text-[var(--content-default)]`,children:[o,`°`,c]}),e.condition&&(0,j.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-quiet)]`,children:e.condition})]}),(0,j.jsx)(N,{useFahrenheit:n,onToggle:r})]}),(0,j.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3`,children:[s!==null&&(0,j.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`Feels like `,s,`°`]}),d!==null&&f!==null&&(0,j.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`H:`,d,`° L:`,f,`°`]}),p&&(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,j.jsx)(a,{width:12,height:12}),p]}),e.humidity!==void 0&&(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,j.jsx)(l,{width:12,height:12}),e.humidity,`%`]})]})]})}function F({hourly:e,sourceIsFahrenheit:t,useFahrenheit:n}){return(0,j.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,j.jsx)(`div`,{className:`flex gap-3 overflow-x-auto`,children:e.map((e,r)=>{let i=e.time.toLowerCase()===`now`,a=O(e,t,n);return(0,j.jsxs)(`div`,{className:`flex min-w-[3rem] shrink-0 flex-col items-center gap-1`,children:[(0,j.jsx)(`span`,{className:i?`text-body-small-emphasised text-[var(--content-default)]`:`text-label-medium-default text-[var(--content-quiet)]`,children:i?`Now`:e.time}),(0,j.jsx)(M,{icon:e.icon,size:18}),a!==null&&(0,j.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-default)]`,children:[a,`°`]})]},e.id??r)})})})}function I({forecast:e,currentTemp:t,sourceIsFahrenheit:n,useFahrenheit:r}){let{globalMin:i,globalMax:a}=(0,v.useMemo)(()=>{let t=1/0,n=-1/0;for(let r of e){let e=r.lowC??r.low,i=r.highC??r.high;e!==void 0&&e<t&&(t=e),i!==void 0&&i>n&&(n=i)}return{globalMin:t===1/0?0:t,globalMax:n===-1/0?100:n}},[e]),o=a-i||1;return(0,j.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,j.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,s)=>{let c=e.dayLabel??e.day??`Day ${s+1}`,l=c.toLowerCase()===`today`,u=k(e,n,r),d=A(e,n,r),f=e.precip,p=e.lowC??e.low??i,m=e.highC??e.high??a,h=(p-i)/o*100,g=(m-i)/o*100,_=Math.max(g-h,2),v=null;if(l&&t!==void 0){let r=(e.lowC!==void 0||e.highC!==void 0)&&n?(t-32)*5/9:t;v=m===p?50:(Math.max(p,Math.min(m,r))-p)/(m-p)*100}return(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsx)(`span`,{className:`w-12 shrink-0 truncate text-body-small-default ${l?`text-[var(--content-default)]`:`text-[var(--content-quiet)]`}`,children:c}),(0,j.jsxs)(`div`,{className:`flex w-10 shrink-0 items-center justify-center gap-0.5`,children:[(0,j.jsx)(M,{icon:e.icon,size:16}),f!==void 0&&f>0&&(0,j.jsxs)(`span`,{className:`text-label-small-default text-blue-400`,children:[Math.round(f),`%`]})]}),(0,j.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-faint)]`,children:u===null?`--`:`${u}°`}),(0,j.jsxs)(`div`,{className:`relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--border-subtle)]`,children:[(0,j.jsx)(`div`,{className:`absolute top-0 h-full rounded-full bg-[var(--primary-base)]`,style:{left:`${h}%`,width:`${_}%`}}),v!==null&&(0,j.jsx)(`div`,{className:`absolute top-1/2 h-2.5 w-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-[var(--aux-white)] bg-[var(--aux-white)] shadow-sm`,style:{left:`${h+v/100*_}%`}})]}),(0,j.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-default)]`,children:d===null?`--`:`${d}°`})]},e.id??s)})})})}function L({templateData:e,fallback:t}){let n=(0,v.useMemo)(()=>w(e),[e]),r=n?.unit?.toUpperCase()===`F`||n?.unit?.toLowerCase()===`fahrenheit`,[i,a]=(0,v.useState)(null),o=i??r;return!n||n.currentTemp===void 0&&!n.forecast?.length?t??null:(0,j.jsxs)(`div`,{className:`mt-3`,children:[(0,j.jsx)(P,{data:n,sourceIsFahrenheit:r,useFahrenheit:o,onToggle:a}),n.hourly&&n.hourly.length>0&&(0,j.jsx)(F,{hourly:n.hourly,sourceIsFahrenheit:r,useFahrenheit:o}),n.forecast&&n.forecast.length>0&&(0,j.jsx)(I,{forecast:n.forecast,currentTemp:n.currentTemp,sourceIsFahrenheit:r,useFahrenheit:o})]})}export{L as WeatherForecastDisplay};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./button-D7s2Q_uG.js";import{d as t}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{l as r}from"./local-mode-
|
|
1
|
+
import{t as e}from"./button-D7s2Q_uG.js";import{d as t}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{l as r}from"./local-mode-BD2zqd9I.js";import{a as i}from"./routes-B9xcBuuC.js";import{t as a}from"./use-onboarding-login-BZ4ismb6.js";import{_t as o}from"./index-Cx6vyW7T.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-10 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./cn-DvW5mxZR.js";import{t as a}from"./typography-BscuIPxA.js";import"./src-BJj2O5XB.js";import{n as o,r as s,t as c}from"./metric-card-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./cn-DvW5mxZR.js";import{t as a}from"./typography-BscuIPxA.js";import"./src-BJj2O5XB.js";import{n as o,r as s,t as c}from"./metric-card-CgO1F06f.js";import{t as l}from"./ban-BpBuRCKI.js";import{t as u}from"./circle-check-DBzb54Kz.js";import{t as d}from"./loader-circle-Cw1KvvLK.js";import{t as f}from"./triangle-alert-AqQQTwUZ.js";import{t as p}from"./x-BeVbiDS2.js";import{Er as m,Ft as h,Nt as g,Pt as _,ca as v,kr as y}from"./index-Cx6vyW7T.js";var b=e(t(),1),x=r();function S({status:e}){let t=_(e);return(0,x.jsx)(`span`,{className:`inline-flex shrink-0 items-center gap-1 rounded-md px-2 py-0.5 text-label-small-default`,style:{color:t,backgroundColor:`color-mix(in srgb, ${t} 15%, transparent)`},children:h(e)})}function C({status:e}){let t=`h-3.5 w-3.5 shrink-0`;switch(e){case`completed`:return(0,x.jsx)(u,{className:t,style:{color:`var(--system-positive-strong)`}});case`failed`:return(0,x.jsx)(f,{className:t,style:{color:`var(--system-negative-strong)`}});case`cancelled`:return(0,x.jsx)(l,{className:t,style:{color:`var(--content-secondary)`},role:`img`,"aria-label":`Cancelled`});default:return(0,x.jsx)(d,{className:`${t} animate-spin`,style:{color:`var(--primary-base)`}})}}function w({leaf:e}){let[t,n]=(0,b.useState)(!1),r=!!e.resultSummary,i=e.label??`Leaf ${e.seq}`;return(0,x.jsxs)(`div`,{className:`rounded-lg bg-[var(--surface-overlay)] px-4 py-3`,children:[(0,x.jsxs)(`button`,{type:`button`,disabled:!r,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 text-left disabled:cursor-default`,children:[(0,x.jsx)(C,{status:e.status}),(0,x.jsx)(a,{variant:`body-medium-default`,className:`min-w-0 flex-1 truncate text-[var(--content-default)]`,children:i}),r&&(0,x.jsx)(a,{variant:`body-small-default`,className:`shrink-0 text-[var(--content-tertiary)]`,children:t?`Hide`:`Details`})]}),e.promptSummary&&(0,x.jsx)(a,{variant:`body-medium-lighter`,as:`p`,className:`mt-1 whitespace-pre-wrap break-words text-[var(--content-secondary)]`,children:e.promptSummary}),r&&t&&(0,x.jsx)(a,{variant:`body-medium-lighter`,as:`p`,className:`mt-2 whitespace-pre-wrap break-words text-[var(--content-secondary)]`,children:e.resultSummary})]})}function T({leaves:e}){let t=[...e.values()].sort((e,t)=>e.seq-t.seq);return t.length===0?(0,x.jsx)(a,{variant:`body-small-default`,className:`py-4 text-center text-[var(--content-tertiary)]`,children:`No agents yet`}):(0,x.jsx)(`div`,{className:`flex flex-col gap-2`,children:t.map(e=>(0,x.jsx)(w,{leaf:e},e.seq))})}function E({entry:e,onClose:t,onStop:r,onRequestJournal:l}){let u=g(e.status),d=e.label??e.runId,f=e.agentsSpawned||e.leaves.size,h=u?`live`:`final`;return(0,b.useEffect)(()=>{l?.(e.runId)},[e.runId,h,l]),(0,x.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden rounded-xl bg-[var(--surface-lift)]`,children:[(0,x.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-base)] px-5 py-4`,children:[(0,x.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--surface-overlay)]`,children:(0,x.jsx)(m,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,x.jsx)(a,{variant:`title-medium`,title:d,className:`min-w-0 shrink truncate text-[var(--content-default)]`,children:d}),(0,x.jsx)(S,{status:e.status}),(0,x.jsx)(`span`,{className:`flex-1`}),u&&r&&(0,x.jsx)(`button`,{type:`button`,"aria-label":`Stop workflow`,onClick:()=>r(e.runId),className:`flex shrink-0 cursor-pointer items-center gap-1.5 rounded-lg bg-[var(--system-negative-strong)] px-3 py-1.5 text-white transition-colors hover:bg-[color-mix(in_srgb,var(--system-negative-strong)_85%,black)]`,children:(0,x.jsx)(a,{variant:`label-small-default`,className:`text-white`,children:`Stop`})}),(0,x.jsx)(n,{variant:`ghost`,iconOnly:(0,x.jsx)(p,{}),onClick:t,"aria-label":`Close workflow detail`,tooltip:`Close`,className:`shrink-0`})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-5 py-5`,children:[(0,x.jsxs)(`div`,{className:`mb-5 grid grid-cols-3 gap-3`,children:[(0,x.jsx)(c,{icon:(0,x.jsx)(v,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens,format:e=>o(Math.round(e)),label:`Input`}),(0,x.jsx)(c,{icon:(0,x.jsx)(s,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens,format:e=>o(Math.round(e)),label:`Output`}),(0,x.jsx)(c,{icon:(0,x.jsx)(y,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:f,format:e=>o(Math.round(e)),label:`Agents`})]}),(e.phase||e.message)&&(0,x.jsxs)(`div`,{className:`mb-5 rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] px-4 py-3`,children:[e.phase&&(0,x.jsx)(a,{variant:`body-medium-default`,className:`text-[var(--content-default)]`,children:e.phase}),e.message&&(0,x.jsx)(a,{variant:`body-small-default`,as:`p`,className:i(`whitespace-pre-wrap break-words text-[var(--content-secondary)]`,e.phase&&`mt-1`),children:e.message})]}),e.summary&&(0,x.jsxs)(`div`,{className:`mb-5 rounded-lg border border-[var(--border-base)] bg-[var(--surface-overlay)] px-4 py-3`,children:[(0,x.jsx)(a,{variant:`body-medium-default`,as:`h3`,className:`mb-2 text-[var(--content-emphasised)]`,children:`Summary`}),(0,x.jsx)(a,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:e.summary})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(a,{variant:`title-medium`,as:`h3`,className:`mb-4 text-[var(--content-emphasised)]`,children:`Agents`}),(0,x.jsx)(T,{leaves:e.leaves})]})]})]})}export{E as WorkflowDetailPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{h as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./queryOptions-BtNi-_9H.js";import{t as l}from"./menu-CdoNX1qx.js";import{a as u}from"./src-BJj2O5XB.js";import{t as d}from"./confirm-dialog-SpCsmAdG.js";import{t as f}from"./input-Ch7OC6ME.js";import{t as p}from"./modal-CHuPOsJJ.js";import{n as m,t as h}from"./panel-item-BLQE_l-g.js";import{t as g}from"./createLucideIcon-KBgJOpms.js";import{t as _}from"./chevron-right-Cc3NZhAF.js";import{t as v}from"./loader-circle-YAV9sMh_.js";import{t as y}from"./pencil-Cyrr5VNX.js";import{t as b}from"./x-b3o2p6YU.js";import{cr as x,dr as S,fr as C,lr as w,pr as T,sr as E,ur as D}from"./sdk.gen-W0KlW-sG.js";import{n as O}from"./use-is-mobile-D_0cze0t.js";import{$r as k,A,Ai as j,Kr as M,Ni as ee,Nr as N,Oi as P,Or as F,Pi as te,j as I,ji as L,ki as R,ta as z,wi as B}from"./index-DhxGhfwI.js";import{t as V}from"./use-active-assistant-id-DTsVl8b7.js";import{n as ne,t as H}from"./mobile-sidebar-drawer-rYD2VIdb.js";import{i as U,n as W,r as G,t as K}from"./file-editor-DqNMJEa4.js";import{t as q}from"./format-file-size-Br1LCKQi.js";var re=g(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ie=g(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),ae=g(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),J=g(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),Y=e(t(),1);function oe(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function se(e,t){return oe(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function ce(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function X(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function le(e){return c({queryFn:async()=>{let{data:t,error:n}=await w({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function ue({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=j;return n.startsWith(`image/`)?r=B:n.startsWith(`video/`)?r=F:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=R),(0,Z.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function de({viewMode:e,onChange:t}){return(0,Z.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(ue,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:q(n)})]}),r]})}function fe({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await x({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,Y.useState)(null);return(0,Y.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(v,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function pe({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...le({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,Y.useState)(null),[_,y]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),y(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,Y.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),y(e=>e!=null&&t(e.path)?null:e)},[d]);let b=h!=null&&h===t,x=p?.content??``,S=_?.path===t?_.content:x,C=()=>{g(null),y(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await T({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),y(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),E=S!==x,D=(0,Y.useCallback)(()=>{t&&E&&!w.isPending&&w.mutate({path:t,content:S})},[t,E,w,S]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(ae,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(v,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,j=I(k,O),M=se(k,O),ee=p.content!=null&&!j&&!M,N=t?X(t):!0,P=b&&(0,Z.jsx)(W,{isDirty:E,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:D,onDiscard:C});if(j&&p.content!=null){let e=b?S:p.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(de,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(K,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():g(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(A,{content:e})}):b?(0,Z.jsx)(G,{value:S,onChange:e=>y({path:t,content:e}),onSave:D}):(0,Z.jsx)(U,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(M&&p.content!=null){let e=b?S:p.content,n=ce(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(de,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(K,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():g(t)}),s===`preview`?(0,Z.jsx)(U,{content:n,readOnly:!0,whiteSpace:`pre`}):b?(0,Z.jsx)(G,{value:S,onChange:e=>y({path:t,content:e}),onSave:D}):(0,Z.jsx)(U,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return ee?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(K,{content:b?S:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:b,onToggleEdit:()=>b?C():g(t)}),b?(0,Z.jsx)(G,{value:S,onChange:e=>y({path:t,content:e}),onSave:D}):(0,Z.jsx)(U,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(fe,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Z.jsx)(R,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:k}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:O}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:q(p.size,`Unknown size`)}),p.modifiedAt&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(p.modifiedAt).toLocaleString()]})]})]})})]})}function me(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}function he(e){return c({queryFn:async()=>{let t={};e.query?.path&&(t.path=e.query.path),e.query?.showHidden&&(t.showHidden=`true`),e.query?.includeDirSizes&&(t.includeDirSizes=`true`);let{data:n,error:r}=await C({path:e.path,query:t});if(r)throw r;if(!n)throw Error(`Failed to load workspace tree`);return n},queryKey:[`assistantsWorkspaceTreeRetrieve`,e]})}async function $(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await C({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function ge({entry:e}){return e.type===`directory`?(0,Z.jsx)(P,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(B,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(F,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(j,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function _e({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:d,onRequestRename:f,onRequestCreate:p,depth:m}){let h=e.path??``,g=e.name??``,v=e.type===`directory`,b=n.has(h),x=r===h,S=g.startsWith(`.`),C=!X(h),w=v&&(b||s.length>0),{data:T}=a({...he({path:{assistant_id:t},query:{path:h,showHidden:i,includeDirSizes:o===`size`}}),enabled:v&&w}),E=(0,Y.useMemo)(()=>me(T?.entries??[],o),[T?.entries,o]),D=s===``||g.toLowerCase().includes(s);if(s!==``&&!v&&!D)return null;let O=(0,Z.jsxs)(`button`,{onClick:()=>{v?c(h):l(h)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${m*14+8}px`,paddingRight:`8px`,color:x?`var(--content-default)`:S?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:x?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:S&&!x?.7:1},children:[v?w?(0,Z.jsx)(z,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(_,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(ge,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:g}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:q(e.size)})]});return(0,Z.jsxs)(`div`,{children:[C?(0,Z.jsxs)(u.Root,{children:[(0,Z.jsx)(u.Trigger,{children:O}),(0,Z.jsxs)(u.Content,{children:[v&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(L,{className:`h-3.5 w-3.5`}),onSelect:()=>p({kind:`file`,parentPath:h}),children:`New File`}),(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(J,{className:`h-3.5 w-3.5`}),onSelect:()=>p({kind:`folder`,parentPath:h}),children:`New Folder`}),(0,Z.jsx)(u.Separator,{})]}),(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(N,{className:`h-3.5 w-3.5`}),onSelect:()=>d({path:h,name:g,isDirectory:v}),children:`Delete`}),(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(y,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:h,name:g,isDirectory:v}),children:`Rename`})]})]}):O,v&&w&&E.length>0&&(0,Z.jsx)(`div`,{children:E.map(e=>(0,Z.jsx)(_e,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:d,onRequestRename:f,onRequestCreate:p,depth:m+1},e.path))})]})}function ve({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,Y.useRef)(null),[d,m]=(0,Y.useState)(a??``),h=d.trim(),g=h.length>0&&(/[/\\]/.test(h)||h===`.`||h===`..`),_=h.length>0&&!g&&!c;return(0,Z.jsx)(p.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(p.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),_&&s(h)},children:[(0,Z.jsx)(p.Header,{children:(0,Z.jsx)(p.Title,{children:e})}),(0,Z.jsx)(p.Body,{children:(0,Z.jsx)(f,{ref:u,label:`Name`,value:d,onChange:e=>m(e.target.value),placeholder:t,errorText:l??(g?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(p.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!_,children:c?i:r})]})]})})})}function ye({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:p,onToggleShowHidden:m,onChangeSortMode:h,onPathDeleted:g,onPathRenamed:_}){let v=i(),[y,x]=(0,Y.useState)(``),C=y.trim().toLowerCase(),[w,O]=(0,Y.useState)(!1),[k,A]=(0,Y.useState)(null),[j,N]=(0,Y.useState)(null),P=(0,Y.useCallback)(()=>{A(null),N(null)},[]),{data:F,isLoading:I}=a(he({path:{assistant_id:e},query:{showHidden:s,includeDirSizes:c===`size`}})),L=(0,Y.useMemo)(()=>me(F?.entries??[],c),[F?.entries,c]),R=(0,Y.useCallback)(()=>{for(let e of[`assistantsWorkspaceTreeRetrieve`,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])v.invalidateQueries({queryKey:[e]})},[v]),z=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await $(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await T({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await D({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{P(),R(),e.parentPath&&u(e.parentPath),e.kind===`file`?p(e.path):u(e.path)},onError:e=>{N(e instanceof Error?e.message:`Failed to create.`)}}),B=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await $(e,r,t.newName,i);let{error:o,response:s}=await S({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{P(),R(),_(e,t)},onError:e=>{N(e instanceof Error?e.message:`Failed to rename.`)}}),V=(0,Y.useCallback)(e=>{N(null),A({type:`create`,...e})},[]),ne=(0,Y.useCallback)(e=>{N(null),A({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,Y.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await E({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),R(),g(e.path)}}),G=(0,Y.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(ie,{"aria-hidden":!0}):(0,Z.jsx)(re,{"aria-hidden":!0}),onClick:()=>h(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(ee,{"aria-hidden":!0}):(0,Z.jsx)(te,{"aria-hidden":!0}),onClick:m,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(be,{open:w,onOpenChange:O,onSelectKind:e=>{O(!1),V({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(f,{type:`text`,value:y,onChange:e=>x(e.target.value),placeholder:`Search files`,leftIcon:(0,Z.jsx)(M,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),y&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(b,{"aria-hidden":!0}),onClick:()=>x(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:I?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):L.length?L.map(n=>(0,Z.jsx)(_e,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:C,onToggleExpand:l,onSelectPath:p,onRequestDelete:G,onRequestRename:ne,onRequestCreate:V,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),k?.type===`create`&&(0,Z.jsx)(ve,{title:k.kind===`file`?`New File`:`New Folder`,placeholder:k.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:P,onConfirm:e=>{N(null),z.mutate({kind:k.kind,parentPath:k.parentPath,name:e})},pending:z.isPending,error:j},`create-${k.kind}-${k.parentPath}`),k?.type===`rename`&&(0,Z.jsx)(ve,{title:`Rename`,placeholder:k.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:k.name,onCancel:P,onConfirm:e=>{if(e===k.name){P();return}N(null),B.mutate({oldPath:k.path,newName:e})},pending:B.isPending,error:j},`rename-${k.path}`),(0,Z.jsx)(d,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Z.jsxs)(Z.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function be({open:e,onOpenChange:t,onSelectKind:r}){return O()?(0,Z.jsxs)(m.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(m.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(m.Content,{children:[(0,Z.jsx)(m.Header,{className:`sr-only`,children:(0,Z.jsx)(m.Title,{children:`Create new`})}),(0,Z.jsxs)(m.Body,{className:`pt-0`,children:[(0,Z.jsx)(h,{icon:L,label:`New File`,onSelect:()=>r(`file`)}),(0,Z.jsx)(h,{icon:J,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(l.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(l.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(l.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(l.Item,{leftIcon:(0,Z.jsx)(L,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Z.jsx)(l.Item,{leftIcon:(0,Z.jsx)(J,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function xe(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function Se({assistantId:e}){let[t,n]=r(),[i,a]=(0,Y.useState)(()=>{let e=t.get(`file`);return e?xe(e):new Set}),[o,s]=(0,Y.useState)(()=>t.get(`file`)),[c,l]=(0,Y.useState)(!1),[u,d]=(0,Y.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,Y.useState)(`preview`);(0,Y.useEffect)(()=>{t.get(`file`)&&n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0})},[]);let m=(0,Y.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,Y.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,Y.useState)(!1),v=(0,Y.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,Y.useState)(null),x=(0,Y.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,Y.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,Y.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Z.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Z.jsx)(ne,{onClick:()=>_(!0)})}),(0,Z.jsx)(H,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Z.jsx)(ye,{...w})}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Z.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(ye,{...w})}),(0,Z.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(pe,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function Ce(){return(0,Z.jsx)(Se,{assistantId:V()})}export{Ce as WorkspacePage};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-D7s2Q_uG.js";import{h as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./queryOptions-BtNi-_9H.js";import{t as l}from"./menu-CdoNX1qx.js";import{a as u}from"./src-BJj2O5XB.js";import{t as d}from"./confirm-dialog-SpCsmAdG.js";import{t as f}from"./input-Ch7OC6ME.js";import{t as p}from"./modal-CHuPOsJJ.js";import{n as m,t as h}from"./panel-item-BLQE_l-g.js";import{t as g}from"./createLucideIcon-BlMXrA59.js";import{t as _}from"./chevron-right-BNHlGCTg.js";import{t as v}from"./loader-circle-Cw1KvvLK.js";import{t as y}from"./pencil-Dm2eFMe3.js";import{t as b}from"./x-BeVbiDS2.js";import{cr as x,dr as S,fr as C,lr as w,pr as T,sr as E,ur as D}from"./sdk.gen-DtKkd6hs.js";import{n as O}from"./use-is-mobile-D_0cze0t.js";import{$r as k,Ai as A,Kr as j,M,Ni as ee,Nr as N,Oi as P,Or as F,Pi as te,j as I,ji as L,ki as R,ta as z,wi as B}from"./index-Cx6vyW7T.js";import{t as V}from"./use-active-assistant-id-BlwRimQH.js";import{n as ne,t as H}from"./mobile-sidebar-drawer-R6nyuXZ1.js";import{i as U,n as W,r as G,t as K}from"./file-editor-n2sYGdD-.js";import{t as q}from"./format-file-size-Br1LCKQi.js";var re=g(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ie=g(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),ae=g(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),J=g(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),Y=e(t(),1);function oe(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function se(e,t){return oe(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function ce(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function X(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function le(e){return c({queryFn:async()=>{let{data:t,error:n}=await w({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function ue({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=A;return n.startsWith(`image/`)?r=B:n.startsWith(`video/`)?r=F:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=R),(0,Z.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function de({viewMode:e,onChange:t}){return(0,Z.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(ue,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:q(n)})]}),r]})}function fe({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await x({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,Y.useState)(null);return(0,Y.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(v,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function pe({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...le({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,g]=(0,Y.useState)(null),[_,y]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;g(e=>e==null?e:n(e)),y(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,Y.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);g(e=>e!=null&&t(e)?null:e),y(e=>e!=null&&t(e.path)?null:e)},[d]);let b=h!=null&&h===t,x=p?.content??``,S=_?.path===t?_.content:x,C=()=>{g(null),y(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await T({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{g(e=>e===t.path?null:e),y(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),E=S!==x,D=(0,Y.useCallback)(()=>{t&&E&&!w.isPending&&w.mutate({path:t,content:S})},[t,E,w,S]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(ae,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(v,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let O=p.mimeType??`application/octet-stream`,k=p.name??t.split(`/`).pop()??t,A=M(k,O),j=se(k,O),ee=p.content!=null&&!A&&!j,N=t?X(t):!0,P=b&&(0,Z.jsx)(W,{isDirty:E,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:D,onDiscard:C});if(A&&p.content!=null){let e=b?S:p.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(de,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(K,{content:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():g(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(I,{content:e})}):b?(0,Z.jsx)(G,{value:S,onChange:e=>y({path:t,content:e}),onSave:D}):(0,Z.jsx)(U,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}if(j&&p.content!=null){let e=b?S:p.content,n=ce(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,rightContent:(0,Z.jsx)(de,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(K,{content:s===`preview`?n:e,downloadContent:e,fileName:k,mimeType:O,showEdit:!N&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():g(t)}),s===`preview`?(0,Z.jsx)(U,{content:n,readOnly:!0,whiteSpace:`pre`}):b?(0,Z.jsx)(G,{value:S,onChange:e=>y({path:t,content:e}),onSave:D}):(0,Z.jsx)(U,{content:p.content,readOnly:N,onStartEdit:()=>g(t)})]}),P]})}return ee?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(K,{content:b?S:p.content??``,fileName:k,mimeType:O,showEdit:!N,isEditing:b,onToggleEdit:()=>b?C():g(t)}),b?(0,Z.jsx)(G,{value:S,onChange:e=>y({path:t,content:e}),onSave:D}):(0,Z.jsx)(U,{content:p.content??``,readOnly:N,onStartEdit:()=>g(t)})]}),P]}):O.startsWith(`image/`)||O.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(fe,{assistantId:e,path:t,mimeType:O,showHidden:r})})]}):(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:k,mimeType:O,size:p.size}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Z.jsx)(R,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:k}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:O}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:q(p.size,`Unknown size`)}),p.modifiedAt&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(p.modifiedAt).toLocaleString()]})]})]})})]})}function me(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}function he(e){return c({queryFn:async()=>{let t={};e.query?.path&&(t.path=e.query.path),e.query?.showHidden&&(t.showHidden=`true`),e.query?.includeDirSizes&&(t.includeDirSizes=`true`);let{data:n,error:r}=await C({path:e.path,query:t});if(r)throw r;if(!n)throw Error(`Failed to load workspace tree`);return n},queryKey:[`assistantsWorkspaceTreeRetrieve`,e]})}async function $(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await C({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function ge({entry:e}){return e.type===`directory`?(0,Z.jsx)(P,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(B,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(F,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(A,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function _e({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:d,onRequestRename:f,onRequestCreate:p,depth:m}){let h=e.path??``,g=e.name??``,v=e.type===`directory`,b=n.has(h),x=r===h,S=g.startsWith(`.`),C=!X(h),w=v&&(b||s.length>0),{data:T}=a({...he({path:{assistant_id:t},query:{path:h,showHidden:i,includeDirSizes:o===`size`}}),enabled:v&&w}),E=(0,Y.useMemo)(()=>me(T?.entries??[],o),[T?.entries,o]),D=s===``||g.toLowerCase().includes(s);if(s!==``&&!v&&!D)return null;let O=(0,Z.jsxs)(`button`,{onClick:()=>{v?c(h):l(h)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${m*14+8}px`,paddingRight:`8px`,color:x?`var(--content-default)`:S?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:x?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:S&&!x?.7:1},children:[v?w?(0,Z.jsx)(z,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(_,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(ge,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:g}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:q(e.size)})]});return(0,Z.jsxs)(`div`,{children:[C?(0,Z.jsxs)(u.Root,{children:[(0,Z.jsx)(u.Trigger,{children:O}),(0,Z.jsxs)(u.Content,{children:[v&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(L,{className:`h-3.5 w-3.5`}),onSelect:()=>p({kind:`file`,parentPath:h}),children:`New File`}),(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(J,{className:`h-3.5 w-3.5`}),onSelect:()=>p({kind:`folder`,parentPath:h}),children:`New Folder`}),(0,Z.jsx)(u.Separator,{})]}),(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(N,{className:`h-3.5 w-3.5`}),onSelect:()=>d({path:h,name:g,isDirectory:v}),children:`Delete`}),(0,Z.jsx)(u.Item,{leftIcon:(0,Z.jsx)(y,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:h,name:g,isDirectory:v}),children:`Rename`})]})]}):O,v&&w&&E.length>0&&(0,Z.jsx)(`div`,{children:E.map(e=>(0,Z.jsx)(_e,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:d,onRequestRename:f,onRequestCreate:p,depth:m+1},e.path))})]})}function ve({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,Y.useRef)(null),[d,m]=(0,Y.useState)(a??``),h=d.trim(),g=h.length>0&&(/[/\\]/.test(h)||h===`.`||h===`..`),_=h.length>0&&!g&&!c;return(0,Z.jsx)(p.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(p.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),_&&s(h)},children:[(0,Z.jsx)(p.Header,{children:(0,Z.jsx)(p.Title,{children:e})}),(0,Z.jsx)(p.Body,{children:(0,Z.jsx)(f,{ref:u,label:`Name`,value:d,onChange:e=>m(e.target.value),placeholder:t,errorText:l??(g?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(p.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!_,children:c?i:r})]})]})})})}function ye({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:p,onToggleShowHidden:m,onChangeSortMode:h,onPathDeleted:g,onPathRenamed:_}){let v=i(),[y,x]=(0,Y.useState)(``),C=y.trim().toLowerCase(),[w,O]=(0,Y.useState)(!1),[k,A]=(0,Y.useState)(null),[M,N]=(0,Y.useState)(null),P=(0,Y.useCallback)(()=>{A(null),N(null)},[]),{data:F,isLoading:I}=a(he({path:{assistant_id:e},query:{showHidden:s,includeDirSizes:c===`size`}})),L=(0,Y.useMemo)(()=>me(F?.entries??[],c),[F?.entries,c]),R=(0,Y.useCallback)(()=>{for(let e of[`assistantsWorkspaceTreeRetrieve`,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])v.invalidateQueries({queryKey:[e]})},[v]),z=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await $(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await T({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await D({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{P(),R(),e.parentPath&&u(e.parentPath),e.kind===`file`?p(e.path):u(e.path)},onError:e=>{N(e instanceof Error?e.message:`Failed to create.`)}}),B=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await $(e,r,t.newName,i);let{error:o,response:s}=await S({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{P(),R(),_(e,t)},onError:e=>{N(e instanceof Error?e.message:`Failed to rename.`)}}),V=(0,Y.useCallback)(e=>{N(null),A({type:`create`,...e})},[]),ne=(0,Y.useCallback)(e=>{N(null),A({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,Y.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await E({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),R(),g(e.path)}}),G=(0,Y.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(ie,{"aria-hidden":!0}):(0,Z.jsx)(re,{"aria-hidden":!0}),onClick:()=>h(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(ee,{"aria-hidden":!0}):(0,Z.jsx)(te,{"aria-hidden":!0}),onClick:m,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(be,{open:w,onOpenChange:O,onSelectKind:e=>{O(!1),V({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(f,{type:`text`,value:y,onChange:e=>x(e.target.value),placeholder:`Search files`,leftIcon:(0,Z.jsx)(j,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),y&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(b,{"aria-hidden":!0}),onClick:()=>x(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:I?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):L.length?L.map(n=>(0,Z.jsx)(_e,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:C,onToggleExpand:l,onSelectPath:p,onRequestDelete:G,onRequestRename:ne,onRequestCreate:V,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),k?.type===`create`&&(0,Z.jsx)(ve,{title:k.kind===`file`?`New File`:`New Folder`,placeholder:k.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:P,onConfirm:e=>{N(null),z.mutate({kind:k.kind,parentPath:k.parentPath,name:e})},pending:z.isPending,error:M},`create-${k.kind}-${k.parentPath}`),k?.type===`rename`&&(0,Z.jsx)(ve,{title:`Rename`,placeholder:k.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:k.name,onCancel:P,onConfirm:e=>{if(e===k.name){P();return}N(null),B.mutate({oldPath:k.path,newName:e})},pending:B.isPending,error:M},`rename-${k.path}`),(0,Z.jsx)(d,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Z.jsxs)(Z.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function be({open:e,onOpenChange:t,onSelectKind:r}){return O()?(0,Z.jsxs)(m.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(m.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(m.Content,{children:[(0,Z.jsx)(m.Header,{className:`sr-only`,children:(0,Z.jsx)(m.Title,{children:`Create new`})}),(0,Z.jsxs)(m.Body,{className:`pt-0`,children:[(0,Z.jsx)(h,{icon:L,label:`New File`,onSelect:()=>r(`file`)}),(0,Z.jsx)(h,{icon:J,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(l.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(l.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(k,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(l.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(l.Item,{leftIcon:(0,Z.jsx)(L,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Z.jsx)(l.Item,{leftIcon:(0,Z.jsx)(J,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function xe(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function Se({assistantId:e}){let[t,n]=r(),[i,a]=(0,Y.useState)(()=>{let e=t.get(`file`);return e?xe(e):new Set}),[o,s]=(0,Y.useState)(()=>t.get(`file`)),[c,l]=(0,Y.useState)(!1),[u,d]=(0,Y.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,Y.useState)(`preview`);(0,Y.useEffect)(()=>{t.get(`file`)&&n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0})},[]);let m=(0,Y.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,Y.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,Y.useState)(!1),v=(0,Y.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,Y.useState)(null),x=(0,Y.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,Y.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,Y.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Z.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Z.jsx)(ne,{onClick:()=>_(!0)})}),(0,Z.jsx)(H,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Z.jsx)(ye,{...w})}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Z.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(ye,{...w})}),(0,Z.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(pe,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function Ce(){return(0,Z.jsx)(Se,{assistantId:V()})}export{Ce as WorkspacePage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-BlMXrA59.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
|
package/dist/index.html
CHANGED
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
<link rel="apple-touch-icon" href="/assistant/favicon.svg" />
|
|
11
11
|
<title>Vellum Assistant</title>
|
|
12
12
|
<script src="/assistant/theme-init.js"></script>
|
|
13
|
-
<script type="module" crossorigin src="/assistant/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assistant/assets/index-Cx6vyW7T.js"></script>
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assistant/assets/chunk-jRWAZmH_.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assistant/assets/preload-helper-BewR0kVT.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assistant/assets/dist-3i_EPbLt.js">
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/api-errors-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/capture-error-
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/api-errors-D3EsNrwn.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/capture-error-AoUURkgi.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/assistant/assets/jsx-runtime-CVSDxk6A.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assistant/assets/react-DJZBPgpf.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assistant/assets/QueryClientProvider-DKhXIxGb.js">
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assistant/assets/queryOptions-BtNi-_9H.js">
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/assistant/assets/lib-BVvJNDCQ.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assistant/assets/create-selectors-BE0_e_Ed.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/is-electron-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/is-electron-C_ZTVhv8.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assistant/assets/local-settings-lVNyIOJ_.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/local-mode-
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/assistant-api-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/local-mode-BD2zqd9I.js">
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/assistant-api-BX_B1xSC.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assistant/assets/cn-DvW5mxZR.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assistant/assets/button-D7s2Q_uG.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assistant/assets/dist-BQHdyjQ3.js">
|
|
@@ -61,77 +61,77 @@
|
|
|
61
61
|
<link rel="modulepreload" crossorigin href="/assistant/assets/reduced-motion-8QnGN6lg.js">
|
|
62
62
|
<link rel="modulepreload" crossorigin href="/assistant/assets/proxy-l3iqYpig.js">
|
|
63
63
|
<link rel="modulepreload" crossorigin href="/assistant/assets/use-reduced-motion-DgX4o6QR.js">
|
|
64
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/createLucideIcon-
|
|
65
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/archive-
|
|
66
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/arrow-left-
|
|
67
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/arrow-up-
|
|
68
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/ban-
|
|
69
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/bell-
|
|
70
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/bookmark-
|
|
71
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/bug-
|
|
72
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/cable-
|
|
73
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/calendar-
|
|
74
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-left-
|
|
75
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-right-
|
|
76
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-up-
|
|
77
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/circle-alert-
|
|
78
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/circle-check-
|
|
79
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/cloud-off-
|
|
80
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/code-
|
|
81
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/cpu-
|
|
82
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/credit-card-
|
|
83
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/external-link-
|
|
84
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/globe-
|
|
85
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/hard-drive-
|
|
86
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/info-
|
|
87
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/loader-circle-
|
|
88
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/log-in-
|
|
89
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/minimize-2-
|
|
90
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/moon-
|
|
91
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/pencil-
|
|
92
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/refresh-cw-
|
|
93
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/sparkles-
|
|
94
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/triangle-alert-
|
|
95
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/x-
|
|
64
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/createLucideIcon-BlMXrA59.js">
|
|
65
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/archive-BFILUl9x.js">
|
|
66
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/arrow-left-CP-EhDNF.js">
|
|
67
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/arrow-up-nBfZxfhi.js">
|
|
68
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/ban-BpBuRCKI.js">
|
|
69
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/bell-DB1SrBre.js">
|
|
70
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/bookmark-C8arQ3wm.js">
|
|
71
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/bug-BuL3O3_2.js">
|
|
72
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/cable-C0pEWbc5.js">
|
|
73
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/calendar-BCNBN7PC.js">
|
|
74
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-left-o_oJAd6A.js">
|
|
75
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-right-BNHlGCTg.js">
|
|
76
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-up-BnW-hcOL.js">
|
|
77
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/circle-alert-bz1ccYRI.js">
|
|
78
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/circle-check-DBzb54Kz.js">
|
|
79
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/cloud-off-BWmMU3G-.js">
|
|
80
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/code-Bju_p7d-.js">
|
|
81
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/cpu-DpzMm9_m.js">
|
|
82
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/credit-card-CN7yFHhB.js">
|
|
83
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/external-link-DAovIsxF.js">
|
|
84
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/globe-CfKniRIP.js">
|
|
85
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/hard-drive-DggmyfjR.js">
|
|
86
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/info-DXbzDupm.js">
|
|
87
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/loader-circle-Cw1KvvLK.js">
|
|
88
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/log-in-CUDpYpYW.js">
|
|
89
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/minimize-2-CPmn1RIm.js">
|
|
90
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/moon-Be4Pgk5X.js">
|
|
91
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/pencil-Dm2eFMe3.js">
|
|
92
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/refresh-cw-YXbpNg95.js">
|
|
93
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/sparkles-C8hCShdb.js">
|
|
94
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/triangle-alert-AqQQTwUZ.js">
|
|
95
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/x-BeVbiDS2.js">
|
|
96
96
|
<link rel="modulepreload" crossorigin href="/assistant/assets/chunk-5KNZJZUH-DdS6bb-3.js">
|
|
97
97
|
<link rel="modulepreload" crossorigin href="/assistant/assets/client.gen-DzaL5PKF.js">
|
|
98
98
|
<link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-0RzHFsEa.js">
|
|
99
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/client.gen-
|
|
100
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-
|
|
101
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/api-
|
|
102
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/return-to-
|
|
99
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/client.gen-0CkwJ2Ya.js">
|
|
100
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-DtKkd6hs.js">
|
|
101
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/api-CjVG_nMi.js">
|
|
102
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/return-to-DxTXKF-C.js">
|
|
103
103
|
<link rel="modulepreload" crossorigin href="/assistant/assets/event-bus-CFhOgvB8.js">
|
|
104
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/resolved-assistants-store-
|
|
104
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/resolved-assistants-store-DLNFVaZL.js">
|
|
105
105
|
<link rel="modulepreload" crossorigin href="/assistant/assets/device-settings-BBwtGKJb.js">
|
|
106
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/routes-
|
|
106
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/routes-B9xcBuuC.js">
|
|
107
107
|
<link rel="modulepreload" crossorigin href="/assistant/assets/typed-storage-qVehRaS3.js">
|
|
108
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-
|
|
108
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-CbVvQiBR.js">
|
|
109
109
|
<link rel="modulepreload" crossorigin href="/assistant/assets/google-logo-DNkI-jCf.js">
|
|
110
110
|
<link rel="modulepreload" crossorigin href="/assistant/assets/composer-focus-D-P0cGAF.js">
|
|
111
111
|
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-selection-CrdMTnwx.js">
|
|
112
112
|
<link rel="modulepreload" crossorigin href="/assistant/assets/infiniteQueryOptions-C6p49ZmI.js">
|
|
113
113
|
<link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-CRARj4mG.js">
|
|
114
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-
|
|
114
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-4ZMhZ-fj.js">
|
|
115
115
|
<link rel="modulepreload" crossorigin href="/assistant/assets/feature-flag-catalog-RZLmDa1F.js">
|
|
116
116
|
<link rel="modulepreload" crossorigin href="/assistant/assets/assistant-feature-flag-store-BD9zTDcP.js">
|
|
117
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-
|
|
118
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-queries-
|
|
117
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-CRkh60tU.js">
|
|
118
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-queries-DF1Lujnm.js">
|
|
119
119
|
<link rel="modulepreload" crossorigin href="/assistant/assets/use-bus-subscription-D-1qIPnj.js">
|
|
120
120
|
<link rel="modulepreload" crossorigin href="/assistant/assets/use-is-mobile-D_0cze0t.js">
|
|
121
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/prefs-
|
|
122
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/build-state-
|
|
123
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-
|
|
124
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-
|
|
121
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/prefs-DP4g-Qgi.js">
|
|
122
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/build-state-CMpEWWjf.js">
|
|
123
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-DVsR7fEC.js">
|
|
124
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-BZ4ismb6.js">
|
|
125
125
|
<link rel="modulepreload" crossorigin href="/assistant/assets/impersonate-version-flag-BksY65Mo.js">
|
|
126
126
|
<link rel="modulepreload" crossorigin href="/assistant/assets/assistant-identity-store-DaDnhbxy.js">
|
|
127
127
|
<link rel="modulepreload" crossorigin href="/assistant/assets/semver-aan9RUyA.js">
|
|
128
128
|
<link rel="modulepreload" crossorigin href="/assistant/assets/utils-DugRzWBW.js">
|
|
129
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/sound-manager-
|
|
129
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/sound-manager-RQj5g2kL.js">
|
|
130
130
|
<link rel="modulepreload" crossorigin href="/assistant/assets/native-deep-link-CYaeyOfj.js">
|
|
131
131
|
<link rel="modulepreload" crossorigin href="/assistant/assets/native-file-LJQTmnKy.js">
|
|
132
132
|
<link rel="modulepreload" crossorigin href="/assistant/assets/client-feature-flag-store-DjN8fxHA.js">
|
|
133
133
|
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-store-I2d3A6Tv.js">
|
|
134
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-
|
|
134
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-9Ag85lFC.js">
|
|
135
135
|
<link rel="modulepreload" crossorigin href="/assistant/assets/avatar-svg-compositor-DMT4wmUm.js">
|
|
136
136
|
<link rel="modulepreload" crossorigin href="/assistant/assets/effective-timezone-DBaPUyaX.js">
|
|
137
137
|
<link rel="modulepreload" crossorigin href="/assistant/assets/edit-chat-session-DXSCprPw.js">
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,r as n,s as r}from"./local-settings-lVNyIOJ_.js";import{r as i,t as a}from"./capture-error-CN7ObyIk.js";import{t as o}from"./react-DJZBPgpf.js";import{t as s}from"./button-D7s2Q_uG.js";import{d as c,h as l}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as u}from"./QueryClientProvider-DKhXIxGb.js";import{t as d}from"./useQuery-B45lW1Kk.js";import{t as f}from"./useMutation-Lj4VunQV.js";import{t as p}from"./jsx-runtime-CVSDxk6A.js";import{t as m}from"./typography-BscuIPxA.js";import{t as h}from"./dropdown-yOV5eJnU.js";import{t as g}from"./confirm-dialog-SpCsmAdG.js";import{t as _}from"./notice-CynJKEow.js";import{t as v}from"./tag-CE_o2aao.js";import{t as y}from"./input-Ch7OC6ME.js";import{t as b}from"./toggle-95p73HGd.js";import{n as x}from"./stat-square-CraPxMcl.js";import{t as S}from"./modal-CHuPOsJJ.js";import{n as C}from"./toast-CxaZ5f1d.js";import{t as w}from"./createLucideIcon-KBgJOpms.js";import{t as T}from"./circle-alert-D58pfVBz.js";import{t as E}from"./circle-check-BKkxjdE1.js";import{n as D,t as O}from"./domain-field-BqCbfaBb.js";import{t as k}from"./external-link-CyRCaWBE.js";import{t as A}from"./info-CUuJWmsF.js";import{t as j}from"./loader-circle-YAV9sMh_.js";import{t as M}from"./triangle-alert-CoIDviBm.js";import{Fn as N,Mt as P,in as F,jt as I,nt as L}from"./sdk.gen-W0KlW-sG.js";import{R,c as z,d as B,ft as ee,kt as V,l as H,u as U,wt as W,z as G}from"./react-query.gen-DfnbKPpc.js";import{r as K}from"./api-errors-C3sAdlZQ.js";import{a as te}from"./routes-BLyehs4B.js";import{t as q}from"./use-is-org-ready-BL-GcZZw.js";import{t as J}from"./assistant-identity-store-DaDnhbxy.js";import{t as ne}from"./assistant-feature-flag-store-BD9zTDcP.js";import{c as re,d as ie,et as ae,f as oe,g as se,h as ce,l as le,m as ue,o as de,p as fe,s as pe,u as me,v as he,y as ge}from"./react-query.gen-CRARj4mG.js";import{$n as _e,Gn as ve,Jn as Y,Jt as ye,Kn as be,Kr as xe,Nr as Se,Qn as Ce,Xn as we,Yn as Te,Zn as Ee,_ as De,_r as Oe,ar as ke,b as Ae,bn as je,br as Me,cr as Ne,dr as Pe,er as Fe,fr as Ie,gr as Le,hr as Re,ir as ze,lr as Be,mr as Ve,na as He,nr as Ue,or as We,pr as Ge,qi as Ke,qn as qe,rr as Je,sr as Ye,tr as Xe,ur as Ze,v as Qe,vr as $e,x as et,xr as tt,y as nt,yr as rt}from"./index-DhxGhfwI.js";import{t as X}from"./use-active-assistant-id-DTsVl8b7.js";import{t as it}from"./detail-card-QPVpO5cj.js";import{t as at}from"./environment-store-DoO5ZqXZ.js";var ot=w(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Z=e(o(),1),Q=p();function st({mode:e,onChange:t}){return(0,Q.jsx)(`div`,{className:`max-w-[280px]`,children:(0,Q.jsx)(x,{ariaLabel:`Service mode`,value:e,onChange:t,items:[{value:`managed`,label:`Managed`},{value:`your-own`,label:`Your Own`}]})})}function ct({id:e,title:t,subtitle:n,mode:r,onModeChange:i,children:a}){return(0,Q.jsxs)(it,{id:e,title:t,subtitle:n,accessory:(0,Q.jsx)(st,{mode:r,onChange:i}),children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:a})]})}function $({onClick:e,disabled:t}){return(0,Q.jsx)(s,{onClick:e,disabled:t,children:`Save`})}function lt({onClick:e,filled:t=!1}){return(0,Q.jsx)(s,{variant:t?`danger`:`dangerGhost`,onClick:e,children:`Reset`})}function ut({id:e,title:t,subtitle:n,children:r}){return(0,Q.jsxs)(it,{id:e,title:t,subtitle:n,children:[(0,Q.jsx)(`div`,{className:`h-px bg-[var(--surface-active)]`}),(0,Q.jsx)(`div`,{className:`mt-4`,children:r})]})}function dt({guide:e}){return(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(A,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`span`,{children:e.description}),(0,Q.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[e.linkLabel,(0,Q.jsx)(k,{className:`h-3 w-3`})]})]})]})}function ft({status:e,message:t,isLoading:n}){return n?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,children:[(0,Q.jsx)(j,{className:`h-3 w-3 animate-spin`}),`Checking domain…`]}):e?e===`verified`?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-positive-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-positive-strong)]`,title:`DNS records have been verified. Your domain is ready to send and receive email.`,children:[(0,Q.jsx)(He,{className:`h-3 w-3`}),`Domain verified`]}):e===`pending`||e===`not_started`?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-mid-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-mid-strong)]`,title:`DNS records have been provisioned. Waiting for the email provider to verify them — this usually takes a few minutes.`,children:[(0,Q.jsx)(Ke,{className:`h-3 w-3`}),`Verifying domain…`]}):(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--system-negative-weak)] px-2.5 py-0.5 text-body-small-default text-[var(--system-negative-strong)]`,title:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,children:[(0,Q.jsx)(T,{className:`h-3 w-3`}),`Verification failed`]}):(0,Q.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2.5 py-0.5 text-body-small-default text-[var(--content-quiet)]`,title:`Unable to retrieve domain verification status.`,children:`Unknown status`})}var pt=`__custom__`;function mt(e){return e?!!(e.profile||e.provider||e.model):!1}function ht(e,t){let n=mt(e);return n===mt(t)?n?(e?.profile??null)===(t?.profile??null)&&(e?.provider??null)===(t?.provider??null)&&(e?.model??null)===(t?.model??null):!0:!1}function gt({id:e,displayName:t,description:n,defaultProfileLabel:r,draft:i,profileOptions:a,onDraftChange:o,onToggle:s}){let c=mt(i),l=!i||!c?``:i.provider||i.model?pt:i.profile??``,u=l===pt,d=Oe.find(e=>e===i?.provider)??Oe[0],f=Me(d).map(e=>({value:e.id,label:e.displayName})),p=!!i?.provider&&!i?.model;function m(t){if(t===`__custom__`){let t=Oe[0];o(e,{profile:null,provider:t,model:rt(t)??``})}else t===``?o(e,null):o(e,{profile:t,provider:null,model:null})}function g(t){let n=rt(t)??``;o(e,{...i??{},profile:null,provider:t,model:n})}function _(t){o(e,{...i??{},model:t})}return(0,Q.jsxs)(`div`,{className:`rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] p-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-default font-medium text-[var(--content-default)]`,children:t}),n&&(0,Q.jsxs)(`p`,{className:`mt-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[n,r&&(0,Q.jsxs)(`span`,{className:`ml-1.5 text-body-small-default text-[var(--content-tertiary)] opacity-60`,children:[`· Default: `,r]})]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[c&&(0,Q.jsx)(h,{value:l,onChange:m,options:a,className:`w-44`,menuMinWidth:280,menuAlign:`end`}),(0,Q.jsx)(b,{checked:c,onChange:t=>s(e,t),"aria-label":`Override ${t}`})]})]}),c&&u&&(0,Q.jsxs)(`div`,{className:`mt-3 space-y-2 border-t border-[var(--border-base)] pt-3`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:d??``,onChange:g,options:Oe.map(e=>({value:e,label:$e[e]??e}))})]}),(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-body-small-default text-[var(--content-tertiary)]`,children:`Model`}),(0,Q.jsx)(h,{value:i?.model??``,onChange:_,options:f})]})]}),p&&(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:`Pick a model`})]})]})}function _t({isOpen:e,onClose:t,assistantId:n}){let r=(0,Z.useRef)(!1);return(0,Q.jsx)(S.Root,{open:e,onOpenChange:e=>{!e&&!r.current&&t()},children:e?(0,Q.jsx)(vt,{assistantId:n,onClose:t,onSavingChange:e=>{r.current=e}}):null})}function vt({assistantId:e,onClose:t,onSavingChange:n}){let r=u(),{data:i}=d({...z({path:{assistant_id:e}}),staleTime:3e4}),o=(0,Z.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),c=(0,Z.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),l=(0,Z.useMemo)(()=>i?.llm?.callSites??{},[i?.llm?.callSites]),f=(0,Z.useMemo)(()=>ke(o,c),[o,c]),p=V({onSuccess:t=>{U(r,{path:{assistant_id:e}},t)}}),[m,h]=(0,Z.useState)(``),[_,v]=(0,Z.useState)({}),[b,x]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),E=ne.use.analyzeConversation(),{data:D,isLoading:O,isError:k,refetch:A}=d({...B({path:{assistant_id:e}}),enabled:!!e,staleTime:6e4,refetchOnWindowFocus:!1}),M=(0,Z.useMemo)(()=>{let e=(D?.callSites??[]).filter(e=>e.id!==`mainAgent`);return E||(e=e.filter(e=>e.id!==`analyzeConversation`)),e},[D,E]),N=!O&&!k&&!!D&&!!i,P=(0,Z.useMemo)(()=>M.map(e=>e.id),[M]),F=(0,Z.useMemo)(()=>{if(!N)return{};let e={};for(let t of P)if(t in _)e[t]=_[t];else{let n=l[t];e[t]=n?{...n}:{}}return e},[N,P,l,_]),I=(0,Z.useMemo)(()=>new Set(P),[P]),L=(0,Z.useMemo)(()=>Object.entries(l).some(([e,t])=>I.has(e)&&(t?.profile!=null||t?.provider!=null||t?.model!=null)),[l,I]),R=(0,Z.useMemo)(()=>{if(!N)return!1;for(let e of Object.keys(F))if(!ht(F[e],l[e]))return!0;return!1},[N,F,l]),ee=(0,Z.useMemo)(()=>Object.values(F).some(e=>mt(e)&&!!e?.provider&&!e?.model),[F]),H=(0,Z.useCallback)(e=>[...Ae(f,[e]).map(e=>({value:e.name,label:Qe(e)})),{value:pt,label:`Custom`}],[f]),W=(0,Z.useMemo)(()=>{if(!m.trim())return M;let e=m.toLowerCase();return M.filter(t=>(t.displayName??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||(t.domain??``).toLowerCase().includes(e))},[M,m]),G=(0,Z.useMemo)(()=>{if(!D)return[];let e=D.domains.map(e=>e.id),t=new Map(D.domains.map(e=>[e.id,e])),n=[];for(let r of e){let e=W.filter(e=>e.domain===r);e.length>0&&n.push({domain:t.get(r),sites:e})}let r=new Set(e),i=W.filter(e=>!r.has(e.domain));return i.length>0&&n.push({domain:{id:`other`,displayName:`Other`},sites:i}),n},[D,W]),K=(0,Z.useCallback)((e,t)=>{v(n=>({...n,[e]:t}))},[]),te=(0,Z.useCallback)((e,t)=>{if(!t){v(t=>({...t,[e]:null}));return}let n=nt(f,M.find(t=>t.id===e)?.defaultProfile);if(n)v(t=>({...t,[e]:{profile:n}}));else{let t=Oe[0],n=rt(t)??``;v(r=>({...r,[e]:{provider:t,model:n}}))}},[M,f]),q=(0,Z.useCallback)(async()=>{x(!0),n?.(!0);try{let n={};for(let e of Object.keys(F)){let t=F[e]??null;n[e]=mt(t)?{profile:t?.profile??null,provider:t?.provider??null,model:t?.model??null}:null}await p.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),C.success(`Overrides saved.`)}catch(e){C.error(`Failed to save overrides. Please try again.`),a(e,{context:`call_site_overrides_save`})}finally{x(!1),n?.(!1)}},[F,t,p,n,e]),J=(0,Z.useCallback)(async()=>{x(!0),n?.(!0);try{let n={};for(let e of Object.keys(F))n[e]=null;await p.mutateAsync({path:{assistant_id:e},body:{llm:{callSites:n}}}),t(),C.success(`Overrides reset.`)}catch(e){C.error(`Failed to reset overrides. Please try again.`),a(e,{context:`call_site_overrides_reset`})}finally{x(!1),n?.(!1)}},[F,t,p,n,e]);return(0,Q.jsxs)(S.Content,{size:`lg`,hideCloseButton:!0,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Action Overrides`}),(0,Q.jsx)(S.Description,{children:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`})]}),(0,Q.jsxs)(S.Body,{children:[(0,Q.jsx)(`div`,{className:`mb-4`,children:(0,Q.jsx)(y,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:`Search actions…`,leftIcon:(0,Q.jsx)(xe,{className:`h-4 w-4`}),fullWidth:!0})}),O&&(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Q.jsx)(j,{className:`h-6 w-6 animate-spin text-[var(--content-tertiary)]`})}),k&&(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-12 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-default text-[var(--content-default)]`,children:`Couldn't load actions`}),(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Make sure your assistant is running`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>void A(),children:`Retry`})]}),!O&&!k&&D&&(0,Q.jsx)(`div`,{className:`space-y-4`,children:G.length===0?(0,Q.jsx)(`p`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-tertiary)]`,children:`No actions match your search.`}):G.map(({domain:e,sites:t})=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`mb-2 text-body-small-default font-semibold uppercase tracking-wider text-[var(--content-tertiary)]`,children:e.displayName}),(0,Q.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>{let t=(()=>{let t=F[e.id]??null;return!t||!mt(t)?``:t.provider||t.model?`__custom__`:t.profile??``})(),n=e.defaultProfile?f.find(t=>t.name===e.defaultProfile)?.label??e.defaultProfile:null;return(0,Q.jsx)(gt,{id:e.id,displayName:e.displayName,description:e.description,defaultProfileLabel:n,draft:F[e.id]??null,profileOptions:H(t===``||t===`__custom__`?null:t),onDraftChange:K,onToggle:te},e.id)})})]},e.id))})]}),(0,Q.jsxs)(S.Footer,{children:[L&&(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>T(!0),disabled:b||!N,tintColor:`var(--system-negative-strong)`,className:`mr-auto`,children:`Reset to Defaults`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:t,disabled:b,children:`Cancel`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,onClick:()=>void q(),disabled:!R||ee||b,children:b?(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin`}):`Save`})]}),(0,Q.jsx)(g,{open:w,title:`Reset to Defaults`,message:`Every task override will be reset and will follow your active profile. This cannot be undone.`,confirmLabel:`Reset to Defaults`,destructive:!0,onConfirm:()=>{T(!1),J()},onCancel:()=>T(!1)})]})}function yt({blocked:e,availableReplacements:t,replacement:n,onReplacementChange:r,error:i,saving:a,onClose:o,onConfirm:c}){let l=``;if(e){let t=e.label||e.name;l=e.isActive&&e.callSiteIds.length>0?`"${t}" is the active profile and is used by ${e.callSiteIds.length} call site(s). Pick a replacement profile.`:e.isActive?`"${t}" is the active profile. Pick a different active profile before deleting, or select a replacement below.`:`"${t}" is used by ${e.callSiteIds.length} call site(s). Select a replacement profile to reassign them before deleting.`}return(0,Q.jsx)(S.Root,{open:e!==null,onOpenChange:e=>{e||o()},children:(0,Q.jsxs)(S.Content,{size:`sm`,children:[(0,Q.jsx)(S.Header,{children:(0,Q.jsx)(S.Title,{children:`Can't Delete Profile`})}),(0,Q.jsxs)(S.Body,{className:`space-y-4`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`p`,children:l}),e&&e.callSiteIds.length>0&&(0,Q.jsx)(`ul`,{className:`space-y-1 pl-1`,children:e.callSiteIds.map(e=>(0,Q.jsxs)(`li`,{className:`text-body-small-default text-(--content-secondary)`,children:[`• `,(0,Q.jsx)(`code`,{children:e})]},e))}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Replacement profile`}),(0,Q.jsx)(h,{"aria-label":`Replacement profile`,value:n,onChange:r,options:[{value:``,label:`Select a replacement…`},...t.map(e=>({value:e.name,label:e.label??e.name}))]})]}),i&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:i})]}),(0,Q.jsxs)(S.Footer,{children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:o,children:`Cancel`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,disabled:!n||a,onClick:c,children:a?`Saving…`:`Reassign and Delete`})]})]})})}function bt({profile:e,isDragging:t,dropTarget:n,isDeleting:r,deleteError:i,isToggling:a,onDragStart:o,onDragEnd:c,onDragOver:l,onDragLeave:u,onDrop:d,onEditClick:f,onDeleteClick:p,onStatusToggle:h}){let g=e.source===`managed`,_=e.status!==`disabled`;return(0,Q.jsxs)(`div`,{className:`relative`,children:[n?.name===e.name&&!n.after&&(0,Q.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg pr-2 py-2${t?` opacity-50`:``}`,draggable:!g,onDragStart:o,onDragEnd:c,onDragOver:l,onDragLeave:u,onDrop:d,children:[(0,Q.jsx)(ot,{className:`h-4 w-4 shrink-0 ${g?`invisible`:`cursor-grab text-[var(--content-tertiary)]`}`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1${_?``:` opacity-55`}`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),g&&(0,Q.jsx)(v,{tone:`positive`,title:`Managed by Platform — auth is locked, but you can rename or disable this profile.`,children:`Platform`})]}),e.description?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:e.description}):null,e.model??e.provider?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:e.model??e.provider}):null]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center`,title:_?`Active — toggle to hide from pickers`:`Disabled — toggle to show in pickers`,children:(0,Q.jsx)(b,{checked:_,onChange:e=>h(e),disabled:a,"aria-label":`${_?`Disable`:`Enable`} ${e.label??e.name}`})}),(0,Q.jsxs)(`div`,{className:`flex w-[92px] items-center justify-end gap-2`,children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:f,children:g?`View`:`Edit`}),(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(Se,{}),"aria-label":`Delete ${e.label??e.name}`,disabled:g||r,title:g?`Managed profiles cannot be deleted`:void 0,onClick:p,tintColor:`var(--system-negative-strong)`})]})]})]}),n?.name===e.name&&n.after&&(0,Q.jsx)(`div`,{className:`mx-0 h-0.5 rounded-full bg-[var(--border-active)]`}),i?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:i}):null]})}function xt({isOpen:e,assistantId:t,onClose:n}){let r=u(),{data:i}=d({...z({path:{assistant_id:t}}),staleTime:3e4}),o=(0,Z.useMemo)(()=>i?.llm?.profiles??{},[i?.llm?.profiles]),s=(0,Z.useMemo)(()=>i?.llm?.profileOrder??[],[i?.llm?.profileOrder]),c=i?.llm?.activeProfile??null,l=i?.llm?.callSites??{},f=(0,Z.useMemo)(()=>ke(o,s),[o,s]),p=V({onSuccess:e=>{U(r,{path:{assistant_id:t}},e)}}),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),{data:v}=d({...R({path:{assistant_id:t}}),enabled:e}),y=v?.connections,b=Object.keys(o);async function x(e,n,r){let i=r?.mode??`replace`,c=!(e in o);if(i===`merge`&&!c){await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:n}}}}),h(!1),_(null);return}let l={profiles:{[e]:n}};if(c&&(l.profileOrder=s.includes(e)?s:[...s,e]),c)await p.mutateAsync({path:{assistant_id:t},body:{llm:l}});else{let n=o[e];await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:null}}}});try{await p.mutateAsync({path:{assistant_id:t},body:{llm:l}})}catch(r){throw a(r,{context:`settings-ai-profile-edit-recreate`}),n!=null&&await p.mutateAsync({path:{assistant_id:t},body:{llm:{profiles:{[e]:n}}}}).catch(()=>{}),r}}c&&C.success(`Profile "${n.label??e}" created`),h(!1),_(null)}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(S.Root,{open:e,onOpenChange:e=>{e||n()},children:e?(0,Q.jsx)(St,{assistantId:t,profiles:o,profileOrder:s,orderedProfiles:f,activeProfile:c,callSiteOverrides:l,onClose:n,onEditClick:e=>{_(e),h(!0)},onNewClick:()=>{_(null),h(!0)}}):null}),(0,Q.jsx)(ve,{isOpen:m,mode:g?g.source===`managed`?`view`:`edit`:`create`,profileName:g?.name,initialValues:g??void 0,existingNames:b,connections:y,assistantId:t,onSave:x,onCancel:()=>{h(!1),_(null)}})]})}function St({assistantId:e,profiles:t,profileOrder:n,orderedProfiles:r,activeProfile:i,callSiteOverrides:o,onClose:c,onEditClick:l,onNewClick:d}){let f=u(),p=V({onSuccess:t=>{U(f,{path:{assistant_id:e}},t)}}),[h,g]=(0,Z.useState)({}),[_,v]=(0,Z.useState)({}),[y,b]=(0,Z.useState)(new Set),[x,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(null),A=(0,Z.useRef)(null),j=(0,Z.useRef)(null),[M,N]=(0,Z.useState)(null),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)(``),[R,z]=(0,Z.useState)(!1),B=(0,Z.useMemo)(()=>r,[r]);async function ee(n,r){if(y.has(n.name))return!1;b(e=>new Set(e).add(n.name)),C(null);let i=r?`active`:`disabled`;if(!t[n.name])return b(e=>{let t=new Set(e);return t.delete(n.name),t}),!1;try{return await p.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[n.name]:{status:i}}}}}),!0}catch(e){return a(e,{context:`settings-ai-profile-toggle`}),C(`Couldn't update "${n.label??n.name}". Please try again.`),!1}finally{b(e=>{let t=new Set(e);return t.delete(n.name),t})}}async function H(t){v(e=>({...e,[t]:!0})),g(e=>{let n={...e};return delete n[t],n});try{let r=n.filter(e=>e!==t);await p.mutateAsync({path:{assistant_id:e},body:{llm:{profiles:{[t]:null},profileOrder:r}}})}catch(e){a(e,{context:`settings-ai-profile-delete`}),g(e=>({...e,[t]:`Failed to delete profile. Please try again.`}))}finally{v(e=>{let n={...e};return delete n[t],n})}}function W(e){let t=B.find(t=>t.name===e)?.label??e,n=e===i,r=Object.entries(o).filter(([t,n])=>t!==`mainAgent`&&n?.profile===e).map(([e])=>e);if(n||r.length>0){N({name:e,label:t,isActive:n,callSiteIds:r}),L(``),F(null);return}H(e)}async function G(){if(!M||!I)return;z(!0),F(null);let t={};if(M.isActive&&(t.activeProfile=I),M.callSiteIds.length>0){let e={};for(let t of M.callSiteIds)e[t]={profile:I};t.callSites=e}if(Object.keys(t).length>0)try{await p.mutateAsync({path:{assistant_id:e},body:{llm:t}})}catch(e){a(e,{context:`settings-ai-profile-reassign-delete`}),F(`Failed to reassign references. Please try again.`),z(!1);return}let n=M.name;N(null),z(!1),H(n)}async function K(t,r){if(t===r.name)return;k(null);let i=n.filter(e=>e!==t),o=i.indexOf(r.name);if(o===-1)return;r.after&&(o+=1);let s=[...i.slice(0,o),t,...i.slice(o)];try{await p.mutateAsync({path:{assistant_id:e},body:{llm:{profileOrder:s}}})}catch(e){a(e,{context:`settings-ai-profile-reorder`}),k(`Failed to reorder profiles. Please try again.`)}}let te=B.filter(e=>e.name!==M?.name&&e.source!==`managed`),q=te.length>0?te:B.filter(e=>e.name!==M?.name);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(S.Content,{size:`md`,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Model Profiles`}),(0,Q.jsx)(S.Description,{children:`Bundle a provider and model into a named profile. Assign profiles to specific actions or swap between them when chatting.`})]}),(0,Q.jsxs)(S.Body,{children:[B.length===0?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No profiles yet. Create one to get started.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:B.map(e=>(0,Q.jsx)(bt,{profile:e,isDragging:w===e.name,dropTarget:E,isDeleting:_[e.name]??!1,deleteError:h[e.name],isToggling:y.has(e.name),onDragStart:t=>{A.current=e.name,T(e.name),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},onDragEnd:()=>{A.current=null,j.current=null,T(null),D(null)},onDragOver:t=>{t.preventDefault();let n=t.currentTarget.getBoundingClientRect(),r=t.clientY>n.top+n.height/2,i={name:e.name,after:r};j.current=i,D(i)},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||(j.current=null,D(t=>t?.name===e.name?null:t))},onDrop:e=>{e.preventDefault();let t=A.current,n=j.current;A.current=null,j.current=null,T(null),D(null),t&&n&&K(t,n)},onEditClick:()=>l(e),onDeleteClick:()=>W(e.name),onStatusToggle:t=>void ee(e,t)},e.name))}),O&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:O}),x&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-2 text-(--system-negative-strong)`,children:x})]}),(0,Q.jsxs)(S.Footer,{className:`justify-between`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:d,children:`+ New Profile`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:c,children:`Done`})]})]}),(0,Q.jsx)(yt,{blocked:M,availableReplacements:q,replacement:I,onReplacementChange:L,error:P,saving:R,onClose:()=>{N(null),F(null)},onConfirm:()=>void G()})]})}function Ct({mode:e,connection:t,assistantId:n,existingNames:r,onSave:i,onCancel:a}){let[o,c]=(0,Z.useState)(e),[l,d]=(0,Z.useState)(void 0),f=o===`managed-edit`,[p,g]=(0,Z.useState)(t?.label??``),[_,v]=(0,Z.useState)(t?.name??``),[b,x]=(0,Z.useState)(t?.provider??`anthropic`),[C,w]=(0,Z.useState)(()=>t?t.auth.type:`platform`),[T,E]=(0,Z.useState)(()=>t?.auth.type===`api_key`?t.auth.credential:t?``:`credential/anthropic/api_key`),[D,O]=(0,Z.useState)(t?.baseUrl??``),[k,A]=(0,Z.useState)(()=>t?.models?t.models.map(e=>e.id).join(`, `):``),[j,M]=(0,Z.useState)(!1),[F,I]=(0,Z.useState)(null),L=b===`openai-compatible`,R=(0,Z.useMemo)(()=>b&&!Ee.includes(b)?[...Ee,b]:Ee,[b]),{handleLabelChange:z,resetDirty:B}=Y(o,g,v),[V,H]=(0,Z.useState)(``),[U,W]=(0,Z.useState)(!1),G=u(),K=(0,Z.useMemo)(()=>_e(T),[T]),te=C===`api_key`&&K!==null,{hasStoredCredential:q,isLoading:J}=Je({assistantId:n,credentialKind:`credential`,credentialName:K?`${K.service}:${K.field}`:``,enabled:te}),{credentials:ne}=qe({assistantId:n,enabled:C===`api_key`});(0,Z.useEffect)(()=>{let e=t?.provider??`anthropic`;g(t?.label??``),v(t?.name??``),x(e),w(t?t.auth.type:`platform`),t?.auth.type===`api_key`?E(t.auth.credential):E(t?``:`credential/${e}/api_key`),B(),I(null),O(t?.baseUrl??``),A(t?.models?t.models.map(e=>e.id).join(`, `):``),H(``),W(!1)},[t,B]);function re(){c(`create`),d(b===`ollama`?`none`:`api_key`)}let ie=_.trim().length>0;async function ae(){if(ie){M(!0),I(null);try{let e;if(C===`api_key`){let t=T.trim()||`credential/${b}/api_key`,r=V.trim();if(r){W(!0);try{let e=_e(t);await N({path:{assistant_id:n},body:e?{type:`credential`,name:`${e.service}:${e.field}`,value:r}:{type:`api_key`,name:b,value:r},throwOnError:!0});let i=Ue(n,`credential`,e?`${e.service}:${e.field}`:``);G.setQueryData(i,!0),G.invalidateQueries({queryKey:ee({path:{assistant_id:n}})})}catch{I(`Failed to save API key. Please try again.`);return}finally{W(!1)}}e={type:`api_key`,credential:t}}else if(C===`oauth_subscription`)if(t?.auth.type===`oauth_subscription`)e=t.auth;else{I(`Use the "Sign in with ChatGPT" button to connect your subscription.`);return}else if(C===`service_account`)if(t?.auth.type===`service_account`)e=t.auth;else{I(`Service account connections cannot be created through this form.`);return}else e=C===`none`?{type:`none`}:{type:`platform`};let r=p.trim()||null,a={auth:e,label:r,...L&&{base_url:D.trim()||null,models:k.trim()?k.split(`,`).map(e=>({id:e.trim()})).filter(e=>e.id):null}},{data:o,response:s}=await P({path:{assistant_id:n,name:t?.name??_.trim()},body:a});if(!s?.ok){I(Ce(s?.status,_.trim()));return}if(!o){I(`Server returned an empty response. Please try again.`);return}i(o)}catch{I(`Failed to save connection. Please try again.`)}finally{M(!1)}}}let oe=ne.filter(e=>e.service===b),se=o!==`create`&&t?.auth.type===`api_key`,ce=oe.length>0||se,le=Te(`Enter your API key`,q);return o===`create`?(0,Q.jsx)(be,{variant:`modal`,assistantId:n,existingNames:r,defaultProviderType:b,defaultAuthType:l,onCreated:i,onCancel:a},b):(0,Q.jsxs)(S.Content,{size:`md`,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Edit Connection`}),(0,Q.jsx)(S.Description,{children:f?`Managed by Vellum — auth is locked, but you can rename "${t?.name}".`:`Editing "${t?.name}".`})]}),(0,Q.jsxs)(S.Body,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsxs)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:[`Display Name`,` `,(0,Q.jsx)(`span`,{className:`text-[var(--content-disabled)]`,children:`(optional)`})]}),(0,Q.jsx)(y,{value:p,onChange:e=>z(e.target.value),placeholder:`e.g. My Anthropic Key`,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Key`}),(0,Q.jsx)(y,{value:_,placeholder:`e.g. anthropic-personal`,disabled:!0,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{"aria-label":`Provider`,value:b,onChange:x,disabled:!0,options:R.map(e=>({value:e,label:$e[e]}))})]}),L&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Base URL`}),(0,Q.jsx)(y,{value:D,onChange:e=>O(e.target.value),placeholder:`https://api.example.com/v1`,disabled:f,fullWidth:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Models`}),(0,Q.jsx)(y,{value:k,onChange:e=>A(e.target.value),placeholder:`model-1, model-2`,disabled:f,fullWidth:!0}),(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-[var(--content-tertiary)]`,children:`Comma-separated model identifiers exposed by your endpoint.`})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Auth Type`}),(0,Q.jsx)(h,{"aria-label":`Auth type`,value:C,onChange:e=>{w(e),I(null)},disabled:f||b===`ollama`,options:(()=>{let e;return e=b===`ollama`?[`none`]:tt(b)?[`api_key`,`platform`]:[`api_key`],C&&!e.includes(C)&&e.push(C),e.map(e=>({value:e,label:we[e]}))})()})]}),C===`api_key`&&(0,Q.jsx)(Fe,{apiKeyValue:V,onApiKeyChange:H,credential:T,onCredentialChange:E,isAuthLocked:f,isLoadingCredential:J,apiKeyPlaceholder:le,provider:b,providerCredentials:oe,showAdvancedSection:ce,onError:I}),C===`oauth_subscription`&&(0,Q.jsx)(Xe,{assistantId:n,onConnected:i}),F&&(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`text-(--system-negative-strong)`,children:F})]}),(0,Q.jsxs)(S.Footer,{children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:a,children:`Cancel`}),o===`managed-edit`&&(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:re,disabled:j||U,children:`Save as New`}),(0,Q.jsx)(s,{variant:`primary`,size:`compact`,disabled:!ie||j||U,onClick:()=>void ae(),children:j?`Saving…`:`Save`})]})]})}function wt(e){switch(e.type){case`api_key`:return`API key · ${e.credential}`;case`oauth_subscription`:return`ChatGPT Subscription`;case`platform`:return`Managed proxy`;case`none`:return`None (local)`;default:return e.type}}function Tt({isOpen:e,assistantId:t,onClose:n}){let[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(null),s=u(),{data:c,isLoading:l,isError:f}=d({...R({path:{assistant_id:t}}),enabled:e}),p=(0,Z.useMemo)(()=>c?.connections??[],[c]);function m(e){s.invalidateQueries({queryKey:G({path:{assistant_id:t}})}),i(!1),o(null)}let h=p.map(e=>e.name),g=()=>{i(!1),o(null)};return(0,Q.jsx)(S.Root,{open:e,onOpenChange:e=>{e||(r?g():n())},children:e?r?(0,Q.jsx)(Ct,{mode:a?a.isManaged?`managed-edit`:`edit`:`create`,connection:a??void 0,assistantId:t,existingNames:h,onSave:m,onCancel:g}):(0,Q.jsx)(Et,{connections:p,loading:l,isError:f,assistantId:t,onClose:n,onEditClick:e=>{o(e),i(!0)},onNewClick:()=>{o(null),i(!0)},onConnectionDeleted:()=>{s.invalidateQueries({queryKey:G({path:{assistant_id:t}})})}}):null})}function Et({connections:e,loading:t,isError:n,assistantId:r,onClose:i,onEditClick:a,onNewClick:o,onConnectionDeleted:c}){let[l,u]=(0,Z.useState)({}),[d,f]=(0,Z.useState)({});async function p(e){f(t=>({...t,[e]:!0})),u(t=>{let n={...t};return delete n[e],n});try{let{response:t}=await I({path:{assistant_id:r,name:e}});t?.ok||t?.status===404?c(e):t?.status===409?u(t=>({...t,[e]:`Connection is in use by one or more profiles. Remove those references first.`})):u(t=>({...t,[e]:`Failed to delete connection. Please try again.`}))}catch{u(t=>({...t,[e]:`Failed to delete connection. Please try again.`}))}finally{f(t=>{let n={...t};return delete n[e],n})}}return(0,Q.jsxs)(S.Content,{size:`md`,children:[(0,Q.jsxs)(S.Header,{children:[(0,Q.jsx)(S.Title,{children:`Provider Connections`}),(0,Q.jsx)(S.Description,{children:`Manage inference provider connections. Each connection binds a name to a provider and auth configuration.`})]}),(0,Q.jsx)(S.Body,{children:t?(0,Q.jsx)(`div`,{className:`space-y-2 py-2`,children:[1,2,3].map(e=>(0,Q.jsx)(`div`,{className:`h-10 animate-pulse rounded-lg bg-[var(--surface-active)]`},e))}):n?(0,Q.jsx)(m,{variant:`body-medium-default`,as:`p`,className:`py-4 text-center text-(--system-negative-strong)`,children:`Failed to load connections. Please try again.`}):e.length===0?(0,Q.jsx)(m,{variant:`body-medium-lighter`,as:`p`,className:`py-4 text-center text-(--content-tertiary)`,children:`No connections yet. Create one to get started.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>{let t=d[e.name]??!1,n=l[e.name],r=e.isManaged??!1;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-2 py-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(m,{variant:`body-medium-default`,as:`span`,className:`text-(--content-default)`,children:e.label??e.name}),r&&(0,Q.jsx)(v,{tone:`positive`,title:`Managed by Platform — auth is locked, but you can rename this connection.`,children:`Platform`})]}),(0,Q.jsxs)(m,{variant:`body-medium-lighter`,as:`p`,className:`mt-0.5 text-(--content-tertiary)`,children:[e.label?`${e.name} · `:``,$e[e.provider]??e.provider,` · `,wt(e.auth)]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,onClick:()=>a(e),children:`Edit`}),(0,Q.jsx)(s,{variant:`ghost`,size:`compact`,iconOnly:(0,Q.jsx)(Se,{}),"aria-label":`Delete ${e.name}`,disabled:r||t,title:r?`Managed connections cannot be deleted`:void 0,onClick:()=>void p(e.name),tintColor:`var(--system-negative-strong)`})]})]}),n?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`px-2 pb-1 text-(--system-negative-strong)`,children:n}):null]},e.name)})})}),(0,Q.jsxs)(S.Footer,{className:`justify-between`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:o,children:`+ New Connection`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:i,children:`Done`})]})]})}function Dt(e){let[t,n]=(0,Z.useState)(void 0);return(0,Z.useEffect)(()=>{t!==void 0&&e===t.value&&n(void 0)},[e,t]),[t===void 0?e:t.value,(0,Z.useCallback)(e=>n(e===void 0?void 0:{value:e}),[])]}function Ot(){let e=X(),t=u(),{data:n}=d({...z({path:{assistant_id:e}}),staleTime:3e4}),r=n?.llm?.activeProfile??null,i=n?.llm?.advisorProfile??null,o=n?.llm?.callSites??{},{profiles:c,profileOrder:l}=De(n?.llm,e),f=(0,Z.useMemo)(()=>ke(c,l),[c,l]),p=V({onSuccess:n=>{U(t,{path:{assistant_id:e}},n)}}),[g,_]=Dt(r),[v,y]=Dt(i),[b,x]=(0,Z.useState)(!1),[S,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(!1),D=(0,Z.useMemo)(()=>Ae(f,[g]),[f,g]),O=(0,Z.useMemo)(()=>Ae(f,[v]),[f,v]),k=Object.entries(o).filter(([e,t])=>e!==`mainAgent`&&(t?.profile!=null||t?.provider!=null||t?.model!=null)).length,A=k===1?`1 Override`:k>0?`${k} Overrides`:`Overrides`,M=g!==r,N=v!==i,P=(0,Z.useCallback)(async()=>{try{let t={};M&&(t.activeProfile=g),N&&(t.advisorProfile=v),await p.mutateAsync({path:{assistant_id:e},body:{llm:t}}),C.success(`Saved.`)}catch(e){C.error(`Failed to save. Please try again.`),a(e,{context:`settings-ai-language-model-save`})}},[M,N,g,v,p,e]);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ut,{title:`Language Model`,subtitle:`Configure the LLMs that power your assistant`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Default Profile`}),(0,Q.jsx)(h,{value:g??``,onChange:e=>{_(e===``?null:e)},placeholder:`Select a default profile…`,options:D.map(e=>({value:e.name,label:Qe(e)}))}),D.length===0?(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-1 text-(--content-tertiary)`,children:`No profiles yet. Click Profiles below to create one.`}):null]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Advisor Profile`}),(0,Q.jsx)(h,{value:v??``,onChange:e=>{y(e===``?null:e)},placeholder:`Select an advisor profile…`,options:O.map(e=>({value:e.name,label:Qe(e)}))}),(0,Q.jsx)(m,{variant:`body-small-default`,as:`p`,className:`mt-1 text-(--content-tertiary)`,children:`Which model your assistant consults for a second opinion`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>E(!0),children:`Providers`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>x(!0),children:`Profiles`}),(0,Q.jsx)(s,{variant:`outlined`,size:`compact`,onClick:()=>w(!0),children:A})]}),(M||N)&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:P,disabled:p.isPending}),p.isPending&&(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]})}),e&&(0,Q.jsx)(xt,{isOpen:b,assistantId:e,onClose:()=>x(!1)}),e&&(0,Q.jsx)(_t,{isOpen:S,onClose:()=>w(!1),assistantId:e}),e&&(0,Q.jsx)(Tt,{isOpen:T,assistantId:e,onClose:()=>E(!1)})]})}var kt=`vellum:ai:imageGenMode`,At=`vellum:ai:imageGenModel`,jt=`vellum:ai:webSearchMode`,Mt=`vellum:ai:webSearchProvider`,Nt=`vellum:ai:webFetchProvider`,Pt=`vellum:ai:emailMode`,Ft=`vellum:ai:emailByoProvider`,It=`vellum:voice:ttsProvider`,Lt=`vellum:voice:ttsApiKey:`,Rt=`vellum:voice:ttsVoiceId:`,zt=`vellum:voice:sttProvider`,Bt=`vellum:voice:sttApiKey:`;function Vt(){let e=X();return(0,Z.useCallback)(async(t,n)=>{try{let{data:r}=await N({path:{assistant_id:e},body:{value:n,type:`api_key`,name:t},throwOnError:!0});ze(r)}catch(e){throw e instanceof Error&&e.message===`No assistant found`?C.error(`Assistant not ready. Please try again.`):C.error(`Failed to save ${t} API key. Please try again.`),a(e,{context:`provision_provider_key`}),e}},[e])}function Ht(){let e=X(),i=u(),{data:o}=d({...z({path:{assistant_id:e}}),staleTime:3e4}),s=V({onSuccess:t=>{U(i,{path:{assistant_id:e}},t)}}),c=Vt(),{serverWebSearchMode:l,serverWebSearchProvider:f}=(0,Z.useMemo)(()=>{if(!o)return{serverWebSearchMode:Ne(n(jt,`your-own`),`your-own`),serverWebSearchProvider:n(Mt,`inference-provider-native`)};let e=o.services?.[`web-search`];return{serverWebSearchMode:Ne(e?.mode??n(`vellum:ai:webSearchMode`,`your-own`),`your-own`),serverWebSearchProvider:e?.provider||n(`vellum:ai:webSearchProvider`,`inference-provider-native`)}},[o]),[p,m]=(0,Z.useState)(!1),[g,_]=Dt(l),[v,b]=Dt(f),[x,S]=(0,Z.useState)(``),w=Be.has(v),{hasStoredCredential:T}=Je({assistantId:e,credentialKind:`api_key`,credentialName:v,enabled:w}),E=x.trim().length>0,D=p||g===`your-own`&&w&&!T&&!E||!(g!==l||(g===`managed`?`inference-provider-native`:v)!==f)&&!E,O=Te(Ie[v]??`Enter your API key`,T),k=(0,Z.useCallback)(async()=>{m(!0);let t=x.trim(),n=g===`managed`?`inference-provider-native`:v,o=Ye(n),l=g===`your-own`&&w&&t.length>0;try{l&&await c(n,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-search":{mode:g,provider:n}}}}).catch(e=>{throw C.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{m(!1);return}m(!1);try{if(r(jt,g),r(Mt,n),l){o&&r(o,t);let n=Ue(e,`api_key`,v);i.setQueryData(n,!0),i.invalidateQueries({queryKey:n}),S(``)}C.success(`Web search settings saved.`)}catch(e){a(e,{context:`settings-ai-web-search-persist-local`}),C.error(`Saved, but local preferences could not be written.`)}},[w,s,c,i,e,x,g,v]),A=(0,Z.useCallback)(()=>{let e=Ye(v);e&&t(e),S(``),b(`inference-provider-native`),r(Mt,`inference-provider-native`)},[v,b]);return(0,Q.jsx)(ct,{title:`Web Search`,subtitle:`Configure how your assistant should search the web`,mode:g,onModeChange:e=>_(e),children:g===`managed`?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`p`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Web search is included with managed inference.`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:k,disabled:D}),p&&(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:v,onChange:b,options:Pe.map(e=>({value:e,label:Ze[e]??e}))})]}),w&&(0,Q.jsx)(y,{label:`API Key`,type:`password`,value:x,onChange:e=>S(e.target.value),placeholder:O,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:k,disabled:D}),p&&(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),w&&(0,Q.jsx)(lt,{onClick:A,filled:!0})]})]})})}var Ut=`default`;function Wt(){let e=X(),i=u(),{data:o}=d({...z({path:{assistant_id:e}}),staleTime:3e4}),s=V({onSuccess:t=>{U(i,{path:{assistant_id:e}},t)}}),c=Vt(),l=(0,Z.useMemo)(()=>o?o.services?.[`web-fetch`]?.provider||n(`vellum:ai:webFetchProvider`,Ut):n(Nt,Ut),[o]),[f,p]=(0,Z.useState)(!1),[m,g]=Dt(l),[_,v]=(0,Z.useState)(``),b=Ge.has(m),{hasStoredCredential:x}=Je({assistantId:e,credentialKind:`api_key`,credentialName:m,enabled:b}),S=_.trim().length>0,w=f||b&&!x&&!S||m===l&&!S,T=Te(Le[m]??`Enter your API key`,x),E=(0,Z.useCallback)(async()=>{p(!0);let t=_.trim(),n=b&&t.length>0;try{n&&await c(m,t),await s.mutateAsync({path:{assistant_id:e},body:{services:{"web-fetch":{provider:m}}}}).catch(e=>{throw C.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e})}catch{p(!1);return}p(!1);try{if(r(Nt,m),n){let n=We(m);n&&r(n,t);let a=Ue(e,`api_key`,m);i.setQueryData(a,!0),i.invalidateQueries({queryKey:a}),v(``)}C.success(`Web fetch settings saved.`)}catch(e){a(e,{context:`settings-ai-web-fetch-persist-local`}),C.error(`Saved, but local preferences could not be written.`)}},[b,s,c,i,e,_,m]),D=(0,Z.useCallback)(()=>{let e=We(m);e&&t(e),v(``),g(Ut),r(Nt,Ut)},[m,g]);return(0,Q.jsx)(ut,{id:`web-fetch`,title:`Web Fetch`,subtitle:`Configure how your assistant reads individual web pages`,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:m,onChange:g,options:Re.map(e=>({value:e,label:Ve[e]??e}))})]}),b&&(0,Q.jsx)(y,{label:`API Key`,type:`password`,value:_,onChange:e=>v(e.target.value),placeholder:T,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:E,disabled:w}),f&&(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),b&&(0,Q.jsx)(lt,{onClick:D,filled:!0})]})]})})}var Gt=[{id:`elevenlabs`,displayName:`ElevenLabs`,subtitle:`High-quality voice synthesis for conversations and read-aloud. Requires an ElevenLabs API key.`,supportsVoiceSelection:!0,apiKeyPlaceholder:`sk_…`,credentialsGuide:{description:`Sign in to ElevenLabs, go to your Profile, and copy your API key.`,url:`https://elevenlabs.io/app/settings/api-keys`,linkLabel:`Open ElevenLabs API Keys`}},{id:`fish-audio`,displayName:`Fish Audio`,subtitle:`Natural-sounding voice synthesis with custom voice cloning. Requires a Fish Audio API key and voice reference ID.`,supportsVoiceSelection:!0,apiKeyPlaceholder:`Enter your Fish Audio API key`,credentialsGuide:{description:`Sign in to Fish Audio, navigate to API Keys in your dashboard, and create a new key.`,url:`https://fish.audio/app/api-keys/`,linkLabel:`Open Fish Audio API Keys`}},{id:`deepgram`,displayName:`Deepgram`,subtitle:`Fast, accurate text-to-speech synthesis. Uses the same API key as Deepgram speech-to-text.`,supportsVoiceSelection:!1,apiKeyPlaceholder:`Enter your Deepgram API key`,credentialsGuide:{description:`Sign in to Deepgram, navigate to your API Keys page, and create or copy an existing key. This is the same key used for speech-to-text.`,url:`https://console.deepgram.com/`,linkLabel:`Open Deepgram Console`}},{id:`xai`,displayName:`xAI`,subtitle:`Text-to-speech from xAI with expressive voices (eve, ara, rex, sal, leo). Requires an xAI API key.`,supportsVoiceSelection:!1,apiKeyPlaceholder:`Enter your xAI API key`,credentialsGuide:{description:`Sign in to the xAI console, navigate to API Keys, and create a new key.`,url:`https://console.x.ai/`,linkLabel:`Open xAI Console`}}],Kt=[{id:`deepgram`,displayName:`Deepgram`,subtitle:`Fast, accurate speech-to-text transcription. Uses the same API key as Deepgram text-to-speech.`,apiKeyPlaceholder:`Enter your Deepgram API key`,credentialsGuide:{description:`Sign in to Deepgram, navigate to your API Keys page, and create or copy an existing key. This is the same key used for text-to-speech.`,url:`https://console.deepgram.com/`,linkLabel:`Open Deepgram Console`}},{id:`openai`,displayName:`OpenAI`,subtitle:`OpenAI Whisper transcription. Requires an OpenAI API key.`,apiKeyPlaceholder:`sk-…`,credentialsGuide:{description:`Sign in to the OpenAI platform, navigate to API Keys, and create a new secret key.`,url:`https://platform.openai.com/api-keys`,linkLabel:`Open OpenAI API Keys`}},{id:`macos-native`,displayName:`macOS Native Dictation`,subtitle:`Apple's on-device speech recognition, running locally through the macOS helper. Works offline and needs no API key.`,requiresNativeDictation:!0,setupWarning:`Requires macOS Dictation to be turned on: open System Settings → Keyboard, then enable Dictation. macOS downloads the on-device speech model the first time Dictation is enabled — without it, voice input produces no transcript.`}],qt=[{id:`mailgun`,displayName:`Mailgun`,setupSkill:`mailgun-setup`,docsUrl:`https://www.mailgun.com/`},{id:`resend`,displayName:`Resend`,setupSkill:`resend-setup`,docsUrl:`https://resend.com/`}],Jt=[`gemini-3.1-flash-image-preview`,`gemini-3-pro-image-preview`],Yt={"gemini-3.1-flash-image-preview":`Nano Banana 2`,"gemini-3-pro-image-preview":`Nano Banana Pro`};function Xt({assistantId:e,assistantHandle:t,emailRootDomain:n}){let r=u(),i=c(),[o,p]=l(),[m,h]=(0,Z.useState)(``),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(null),[S,w]=(0,Z.useState)(``),[T,E]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(!1),[P,F]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{v||!t||m||(h(t),y(!0))},[t,v,m]);let I=d({...ae(),enabled:!0}),L=I.data,R=L?.entitlements,z=R?.managed_email===!0,B=!!R&&!z,ee=!L&&I.isError&&!I.isFetching,V=d({...re({path:{assistant_id:e}}),enabled:!B}),H=d({...fe({path:{assistant_id:e}}),enabled:!B}),U=V.data?.results?.[0],W=H.data?.results?.[0],G=U?`${U.subdomain}.${n}`:null,q=d({...ce({path:{assistant_id:e,id:W?.id??``}}),enabled:!!W?.id,refetchOnWindowFocus:!1}),J=d({...me({path:{assistant_id:e,id:U?.id??``}}),enabled:!!U?.id,refetchInterval:e=>{let t=e.state.data?.status;return t===`verified`||t===`failed`?!1:1e4},refetchOnWindowFocus:!0});(0,Z.useEffect)(()=>{o.get(`release`)!==`1`||!U||W||(N(!0),p(e=>{let t=new URLSearchParams(e);return t.delete(`release`),t},{replace:!0}))},[W,U,o,p]);let ne=f(de()),he=f(pe()),_e=f(ie()),ve=f(oe()),Y=(0,Z.useCallback)(()=>{let t={assistant_id:e};r.invalidateQueries({queryKey:le({path:t})}),r.invalidateQueries({queryKey:ue({path:t})}),W?.id&&r.invalidateQueries({queryKey:se({path:{...t,id:W.id}})}),r.invalidateQueries({queryKey:ge()})},[W?.id,e,r]),ye=(0,Z.useCallback)(async()=>{let t=m.trim().toLowerCase();if(!t){x(`Enter a subdomain.`);return}A(!1);try{await ne.mutateAsync({path:{assistant_id:e},body:{subdomain:t}}),h(``),x(null),Y(),C.success(`Domain ${t}.${n} registered.`)}catch(e){x(K(e,void 0,`Failed to register domain.`))}},[e,n,Y,ne,m]),be=(0,Z.useCallback)(async()=>{let t=S.trim().toLowerCase();if(!t){E(`Enter an email username.`);return}try{await _e.mutateAsync({path:{assistant_id:e},body:{username:t}}),w(``),E(null),Y(),C.success(`Email address created.`)}catch(e){E(K(e,void 0,`Failed to create email address.`))}},[e,Y,_e,S]),xe=(0,Z.useCallback)(async()=>{if(W?.id){F(!1);try{await ve.mutateAsync({path:{assistant_id:e,id:W.id}}),Y(),C.success(`Email address removed.`)}catch(e){a(e,{context:`email_address_delete`}),C.error(`Failed to remove email address.`)}}},[W?.id,e,ve,Y]),Ce=(0,Z.useCallback)(async()=>{if(!U?.id)return;if(W){C.error(`Remove the email address first.`);return}N(!1);let t=U.subdomain;try{await he.mutateAsync({path:{assistant_id:e,id:U.id}}),h(t),Y(),C.success(`Domain released.`)}catch(e){a(e,{context:`email_domain_release`}),C.error(`Failed to release domain.`)}},[W,e,he,U?.id,U?.subdomain,Y]);if(I.isLoading)return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin`}),`Checking subscription…`]});if(B)return(0,Q.jsxs)(_,{tone:`info`,icon:(0,Q.jsx)(D,{className:`h-4 w-4`,"aria-hidden":!0}),title:`Get a dedicated email address for your assistant`,actions:(0,Q.jsx)(s,{size:`compact`,onClick:()=>i(`${te.settings.billing}?adjust_plan`),children:`Upgrade to Pro`}),children:[`Pro plans include a managed`,` `,`<your-subdomain>.${n}`,` inbox — no provider setup required. Or switch to `,(0,Q.jsx)(`strong`,{children:`Your Own`}),` to bring an existing provider.`]});let we=ee?(0,Q.jsx)(_,{tone:`warning`,title:`Couldn't verify subscription status`,actions:(0,Q.jsx)(s,{size:`compact`,variant:`outlined`,onClick:()=>I.refetch(),children:`Retry`}),children:`We couldn't reach the billing service. The form below assumes managed email is enabled for your org — if it isn't, registering a domain will fail.`}):null;return U?W?(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[we,(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Address`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:W.address}),(0,Q.jsx)(ft,{status:J.data?.status,message:J.data?.message,isLoading:J.isLoading}),(0,Q.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(Se,{}),onClick:()=>F(!0),disabled:ve.isPending,"aria-label":`Remove email address`})]}),(0,Q.jsx)(g,{open:P,title:`Remove Email Address`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to remove `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:W.address}),`? Your assistant will no longer be able to send or receive email at this address.`]}),confirmLabel:`Remove`,destructive:!0,onConfirm:xe,onCancel:()=>F(!1)})]}),q.data?.usage&&(0,Q.jsxs)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:[q.data.usage.sent_today,` /`,` `,q.data.usage.daily_limit,` sent today ·`,` `,q.data.usage.received_today,` received`]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[we,(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Domain`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`font-mono text-body-small-default text-[var(--content-default)]`,children:[U.subdomain,`.`,n]}),(0,Q.jsx)(ft,{status:J.data?.status,message:J.data?.message,isLoading:J.isLoading}),(0,Q.jsx)(s,{variant:`dangerGhost`,size:`compact`,iconOnly:(0,Q.jsx)(Se,{}),onClick:()=>N(!0),disabled:he.isPending,"aria-label":`Release domain`})]}),(0,Q.jsx)(g,{open:M,title:`Release Domain`,message:(0,Q.jsxs)(Q.Fragment,{children:[`Are you sure you want to release `,(0,Q.jsxs)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:[U.subdomain,`.`,n]}),`? The subdomain will become available for others to claim.`]}),confirmLabel:`Release`,destructive:!0,onConfirm:Ce,onCancel:()=>N(!1)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Email address`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex h-9 min-w-0 flex-1 items-center rounded-md border bg-[var(--field-bg)] text-body-medium-lighter transition-[border-color] duration-150 ${T?`border-[var(--system-negative-strong)]`:`border-[var(--field-border)] focus-within:border-[var(--border-active)]`}`,children:[(0,Q.jsx)(`input`,{value:S,onChange:e=>{w(e.target.value.toLowerCase()),T&&E(null)},placeholder:`hi`,"aria-label":`Email username`,"aria-invalid":!!T,className:`h-full min-w-0 flex-1 bg-transparent pl-3 pr-1 text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`}),(0,Q.jsxs)(`span`,{className:`shrink-0 pr-3 font-mono text-[var(--content-secondary)]`,children:[`@`,G]})]}),(0,Q.jsx)(s,{onClick:be,disabled:_e.isPending||!S.trim(),children:_e.isPending?`Creating…`:`Create`})]}),T&&(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--system-negative-strong)]`,children:T})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[we,(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Subdomain`}),(0,Q.jsx)(O,{subdomain:m,onSubdomainChange:e=>{h(e),b&&x(null)},domainSuffix:n,subdomainPlaceholder:`my-assistant`,error:b}),(0,Q.jsx)(`p`,{className:`text-body-small-default text-[var(--content-tertiary)]`,children:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`}),(0,Q.jsx)(s,{onClick:()=>A(!0),disabled:ne.isPending||!m.trim(),children:ne.isPending?`Registering…`:`Register`}),(0,Q.jsx)(g,{open:k,title:`Set Subdomain`,message:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 font-mono text-[0.9em]`,children:m.trim().toLowerCase()||`subdomain`}),` will also become your assistant's public handle. You won't be able to change it once set.`]}),confirmLabel:`Confirm`,onConfirm:ye,onCancel:()=>A(!1)})]})}function Zt(){let e=X(),t=q(),{data:o}=d({...he(),enabled:t}),s=o?.results?.[0]?.handle,c=at.use.emailRootDomain(),l=ye(),[u,f]=(0,Z.useState)(()=>l===`gated`?`your-own`:Ne(n(Pt,`managed`),`managed`)),[p,m]=(0,Z.useState)(()=>{let e=n(Ft,`resend`);return e===`mailgun`||e===`resend`?e:`resend`}),g=d({queryKey:[`byoEmailCredential`,e,p],queryFn:async()=>{let{data:t}=await L({path:{assistant_id:e},body:{service:p,field:`api_key`},throwOnError:!0});return t},enabled:u===`your-own`||l===`gated`,staleTime:6e4,retry:i,meta:{errorContext:`byo_email_credential_check`}});(0,Z.useEffect)(()=>{g.error&&a(g.error,{context:`byo_email_credential_check`,bestEffort:!0})},[g.error]);let _=g.data?.hasSecret===!0,v=(0,Z.useCallback)(e=>{f(e),r(Pt,e)},[]),y=(0,Z.useCallback)(()=>{r(Ft,p),C.success(`Email settings saved.`)},[p]),b=(0,Z.useMemo)(()=>qt.find(e=>e.id===p)??qt[0],[p]),x=(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(A,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsxs)(`span`,{children:[`Configure `,b.displayName,` via the assistant CLI: ask the assistant to run the`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:b.setupSkill}),` `,`skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`]}),(0,Q.jsxs)(`a`,{href:b.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,b.displayName,(0,Q.jsx)(k,{className:`h-3 w-3`})]})]})]}),S=(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:p,onChange:e=>{(e===`mailgun`||e===`resend`)&&m(e)},options:qt.map(e=>({value:e.id,label:e.displayName}))})]}),_?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--system-positive-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-default)]`,children:[(0,Q.jsx)(E,{className:`h-4 w-4 shrink-0 text-[var(--system-positive-strong)]`}),(0,Q.jsxs)(`span`,{children:[b.displayName,` API key configured. To reconfigure, run the`,` `,(0,Q.jsx)(`code`,{className:`rounded bg-[var(--surface-active)] px-1 py-0.5 text-[12px]`,children:b.setupSkill}),` `,`skill.`]})]}),(0,Q.jsxs)(`a`,{href:b.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-body-small-default text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Open `,b.displayName,(0,Q.jsx)(k,{className:`h-3 w-3`})]})]}):x,(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Q.jsx)($,{onClick:y,disabled:!1})})]});return l===`gated`?(0,Q.jsx)(ut,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,children:S}):(0,Q.jsx)(ct,{id:`email`,title:`Email`,subtitle:`Configure how your assistant sends and receives email`,mode:u,onModeChange:v,children:u===`managed`?(0,Q.jsx)(`div`,{className:`space-y-4`,children:l===`disabled`?(0,Q.jsx)(et,{children:`Log in to the Vellum platform to manage email settings.`}):(0,Q.jsx)(Xt,{assistantId:e,assistantHandle:s,emailRootDomain:c})}):S})}function Qt(){let e=X(),t=u(),{data:i}=d({...z({path:{assistant_id:e}}),staleTime:3e4}),o=V({onSuccess:n=>{U(t,{path:{assistant_id:e}},n)}}),s=Vt(),[c,l]=Dt((0,Z.useMemo)(()=>Ne(i?i.services?.[`image-generation`]?.mode??n(`vellum:ai:imageGenMode`,`your-own`):n(kt,`your-own`),`your-own`),[i])),[f,p]=(0,Z.useState)(()=>n(At,`gemini-3.1-flash-image-preview`)),[m,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(!1),b=(0,Z.useCallback)(async()=>{v(!0);let n=m.trim(),i=c===`your-own`&&n.length>0;try{i&&await s(`gemini`,n),await o.mutateAsync({path:{assistant_id:e},body:{services:{"image-generation":{mode:c}}}}).catch(e=>{throw C.error(`Failed to update assistant configuration. Please try again.`),a(e,{context:`patch_daemon_config`}),e});try{await F({path:{assistant_id:e},body:{modelId:f},throwOnError:!0})}catch(e){throw C.error(`Failed to update image generation model. Please try again.`),a(e,{context:`set_image_gen_model`}),e}finally{t.invalidateQueries({queryKey:H({path:{assistant_id:e}})})}}catch{v(!1);return}v(!1);try{r(kt,c),r(At,f),i&&g(``),C.success(`Image generation settings saved.`)}catch(e){a(e,{context:`settings-ai-image-gen-persist-local`}),C.error(`Saved, but local preferences could not be written.`)}},[m,c,f,e,o,s,t]),x=(0,Z.useCallback)(()=>{g(``),p(`gemini-3.1-flash-image-preview`),r(At,`gemini-3.1-flash-image-preview`)},[]);return(0,Q.jsx)(ct,{title:`Image Generation`,subtitle:`Configure which model your assistant uses to generate images`,mode:c,onModeChange:e=>l(e),children:c===`managed`?(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,Q.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,Q.jsx)(h,{className:`flex-1`,value:f,onChange:p,options:Jt.map(e=>({value:e,label:Yt[e]??e}))}),(0,Q.jsx)($,{onClick:b,disabled:_}),_&&(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(y,{label:`API Key`,type:`password`,value:m,onChange:e=>g(e.target.value),placeholder:`Enter your Gemini API key`,fullWidth:!0}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Active Model`}),(0,Q.jsx)(h,{value:f,onChange:p,options:Jt.map(e=>({value:e,label:Yt[e]??e}))})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:b,disabled:_}),_&&(0,Q.jsx)(j,{className:`h-4 w-4 animate-spin text-[var(--content-disabled)]`}),(0,Q.jsx)(lt,{onClick:x})]})]})})}async function $t(e){let{provider:t,apiKey:n,voiceId:r,text:i}=e;if(n.trim().length===0)return{kind:`error`,message:`Save an API key for this provider first.`};try{return t===`elevenlabs`?await en(n,r,i):t===`deepgram`?await tn(n,i):t===`fish-audio`?{kind:`unsupported`,message:`Fish Audio TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:t===`xai`?{kind:`unsupported`,message:`xAI TTS is only supported in the desktop app today. Use ElevenLabs or Deepgram to test from the browser.`}:{kind:`unsupported`,message:`TTS testing for "${t}" is not supported from the browser yet.`}}catch(e){return{kind:`error`,message:e instanceof Error?e.message:`Failed to reach the TTS provider.`}}}async function en(e,t,n){let r=t.trim();if(r.length===0)return{kind:`error`,message:`Enter and save a Voice ID before testing ElevenLabs.`};let i=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(r)}?output_format=mp3_44100_128`,{method:`POST`,headers:{"xi-api-key":e,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:n,model_id:`eleven_turbo_v2_5`})});return i.ok?{kind:`audio`,blob:await i.blob()}:{kind:`error`,message:await nn(i,`ElevenLabs rejected the request.`)}}async function tn(e,t){let n=await fetch(`https://api.deepgram.com/v1/speak?model=aura-2-thalia-en`,{method:`POST`,headers:{Authorization:`Token ${e}`,"Content-Type":`application/json`,Accept:`audio/mpeg`},body:JSON.stringify({text:t})});return n.ok?{kind:`audio`,blob:await n.blob()}:{kind:`error`,message:await nn(n,`Deepgram rejected the request.`)}}async function nn(e,t){try{let n=await e.text();if(n.length===0)return`${t} (HTTP ${e.status})`;try{let e=JSON.parse(n);if(e&&typeof e==`object`&&`detail`in e&&typeof e.detail==`string`)return e.detail;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message}catch{}return n.slice(0,200)}catch{return`${t} (HTTP ${e.status})`}}function rn(){let e=X(),t=J.use.name()??`your assistant`,i=q(),{data:a}=d({...W({path:{assistant_id:e}}),enabled:i,staleTime:1/0}),o=a?.providers??Gt,c=o[0]?.id??`elevenlabs`,[l,u]=(0,Z.useState)(()=>n(It,c)),[f,p]=(0,Z.useState)(l),[m,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(``),[b,x]=(0,Z.useState)(``),[S,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(!1),D=(0,Z.useMemo)(()=>o.find(e=>e.id===l)??o[0],[l,o]),O=(0,Z.useCallback)(e=>{let t=n(Lt+e,``),r=n(Rt+e,``);w(t.length>0),v(r),x(r),g(``)},[]);(0,Z.useEffect)(()=>{O(l)},[l,O]);let k=(0,Z.useMemo)(()=>{let e=l!==f,t=m.trim().length>0,n=_.trim()!==b;return e||t||n},[l,f,m,_,b]),A=(0,Z.useCallback)(()=>{r(It,l);let e=m.trim();e.length>0&&(r(Lt+l,e),w(!0));let t=_.trim();r(Rt+l,t),p(l),x(t),g(``)},[l,m,_]),j=(0,Z.useCallback)(()=>{r(Lt+l,``),w(!1),g(``)},[l]),M=(0,Z.useCallback)(async()=>{E(!0);try{let e=n(Lt+l,``),r=m.trim(),i=r.length>0?r:e;if(i.length===0){C.error(`Save an API key for this provider before testing.`);return}let a=n(Rt+l,``),o=_.trim(),s=await $t({provider:l,apiKey:i,voiceId:o.length>0?o:a,text:`Hey! It's ${t}. How does this sound?`});if(s.kind!==`audio`){C.error(s.message);return}let c=URL.createObjectURL(s.blob);try{let e=new Audio(c);await e.play(),await new Promise(t=>{e.onended=()=>t(),e.onerror=()=>t()})}finally{URL.revokeObjectURL(c)}}finally{E(!1)}},[t,m,l,_]),N=S?`•••••••• (Enter a new key to replace)`:D.apiKeyPlaceholder;return(0,Q.jsx)(ut,{title:`Text-to-Speech`,subtitle:D.subtitle,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:l,onChange:u,options:o.map(e=>({value:e.id,label:e.displayName})),"aria-label":`TTS provider`})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,Q.jsx)(y,{type:`password`,value:m,onChange:e=>g(e.target.value),placeholder:N,fullWidth:!0})]}),D.supportsVoiceSelection&&(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Voice ID`}),(0,Q.jsx)(y,{type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Enter a voice ID`,fullWidth:!0})]}),(0,Q.jsx)(dt,{guide:D.credentialsGuide}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{variant:`outlined`,onClick:M,disabled:T,children:T?`Testing…`:`Test`}),(0,Q.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,Q.jsx)($,{onClick:A,disabled:!k}),S&&(0,Q.jsx)(lt,{onClick:j})]})]})]})})}function an(){let[e]=(0,Z.useState)(()=>Kt.filter(e=>!e.requiresNativeDictation||je())),t=e[0]?.id??`deepgram`,[i,a]=(0,Z.useState)(()=>{let r=n(zt,t);return e.some(e=>e.id===r)?r:t}),[o,s]=(0,Z.useState)(i),[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{let i=n(zt,t);i===`macos-native`&&!e.some(e=>e.id===i)&&r(zt,t)},[e,t]);let f=(0,Z.useMemo)(()=>e.find(e=>e.id===i)??e[0],[e,i]),p=f.apiKeyPlaceholder!==void 0;(0,Z.useEffect)(()=>{d(n(Bt+i,``).length>0),l(``)},[i]);let m=(0,Z.useMemo)(()=>{let e=i!==o,t=c.trim().length>0;return e||t},[i,o,c]),g=(0,Z.useCallback)(()=>{r(zt,i);let e=c.trim();e.length>0&&(r(Bt+i,e),d(!0)),s(i),l(``)},[i,c]),_=(0,Z.useCallback)(()=>{r(Bt+i,``),d(!1),l(``)},[i]),v=u?`•••••••• (Enter a new key to replace)`:f.apiKeyPlaceholder;return(0,Q.jsx)(ut,{title:`Speech-to-Text`,subtitle:f.subtitle,children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`Provider`}),(0,Q.jsx)(h,{value:i,onChange:a,options:e.map(e=>({value:e.id,label:e.displayName})),"aria-label":`STT provider`})]}),p&&(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`block text-body-small-default text-[var(--content-tertiary)]`,children:`API Key`}),(0,Q.jsx)(y,{type:`password`,value:c,onChange:e=>l(e.target.value),placeholder:v,fullWidth:!0})]}),f.setupWarning&&(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-sunken)] p-3 text-body-small-default text-[var(--content-tertiary)]`,children:[(0,Q.jsx)(M,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--system-mid-strong)]`}),(0,Q.jsx)(`span`,{children:f.setupWarning})]}),f.credentialsGuide&&(0,Q.jsx)(dt,{guide:f.credentialsGuide}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,Q.jsx)($,{onClick:g,disabled:!m}),u&&(0,Q.jsx)(lt,{onClick:_})]})]})})}function on(){return(0,Z.useEffect)(()=>{let e=window.location.hash.slice(1);e&&requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({block:`start`})})},[]),(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-[var(--border-base)] bg-[var(--surface-base)] px-4 py-2.5`,children:[(0,Q.jsx)(A,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--content-tertiary)]`}),(0,Q.jsxs)(`p`,{className:`text-body-medium-lighter text-[var(--content-secondary)]`,children:[`Managed services are metered and deducted from your Vellum account balance.`,` `,(0,Q.jsxs)(`a`,{href:`https://www.vellum.ai/docs/pricing`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[var(--primary-base)] hover:underline`,children:[`View pricing`,(0,Q.jsx)(k,{className:`h-3.5 w-3.5`})]})]})]}),(0,Q.jsx)(Ot,{}),(0,Q.jsx)(Ht,{}),(0,Q.jsx)(Wt,{}),(0,Q.jsx)(Zt,{}),(0,Q.jsx)(Qt,{}),(0,Q.jsx)(rn,{}),(0,Q.jsx)(an,{})]})}export{on as AiPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,K as t,c as n}from"./local-mode-Bg6wpc5q.js";import{_ as r,at as i,g as a,h as o,it as s,yt as c}from"./sdk.gen-W0KlW-sG.js";import{i as l,n as u}from"./api-errors-C3sAdlZQ.js";import{o as d}from"./assistant-api-c0d65GPi.js";import{B as f,C as p,R as m,a as h,i as g,o as _,w as v,z as y}from"./sdk.gen-0RzHFsEa.js";async function b(e,t){let{data:n,error:r,response:i}=await p({body:e??{},query:t?{mode:t}:void 0,throwOnError:!1});return u(i,r,`Failed to hatch assistant.`),i.ok?{ok:!0,status:i.status,data:n}:{ok:!1,status:i.status,error:l(r,i)}}async function x(t){if(e()){let e=n();if(e)return{ok:!0,status:200,data:{id:e.assistantId,name:e.name??e.assistantId,status:`active`,is_local:!0,created:e.hatchedAt??``}}}if(t){let{data:e,error:n,response:r}=await f({path:{id:t},throwOnError:!1});return u(r,n,`Failed to get assistant.`),r.ok?{ok:!0,status:r.status,data:e}:{ok:!1,status:r.status,error:l(n,r)}}let r=await v({query:{hosting:`platform`},throwOnError:!1});if(u(r.response,r.error,`Failed to get assistant.`),!r.response.ok)return{ok:!1,status:r.response.status,error:l(r.error,r.response)};let i=r.data?.results??[];if(i.length>0)return{ok:!0,status:r.response.status,data:i[0]};let a=await v({query:{hosting:`local`},throwOnError:!1});if(u(a.response,a.error,`Failed to get assistant.`),a.response.ok){let e=a.data?.results??[];if(e.length>0)return{ok:!0,status:a.response.status,data:e[0]}}return a.response.ok?{ok:!1,status:404,error:{detail:`No assistants found`}}:{ok:!1,status:a.response.status,error:l(a.error,a.response)}}async function S(e){let{data:t,error:n,response:r}=await c({path:{assistant_id:e},throwOnError:!1});return u(r,n,`Failed to get assistant healthz.`),r.ok&&t?{ok:!0,status:r.status,data:t}:{ok:!1,status:r.status,error:l(n,r)}}async function C(e){let{data:t,error:n,response:r}=await i({path:{assistant_id:e},throwOnError:!1});if(u(r,n,`Failed to get assistant disk pressure status.`),r.ok){let e=d.safeParse(t);return e.success?{ok:!0,status:r.status,data:e.data}:{ok:!1,status:r.status,error:l(e.error.message,r)}}return{ok:!1,status:r.status,error:l(n,r)}}async function w(e){let{data:t,error:n,response:r}=await s({path:{assistant_id:e},throwOnError:!1});if(u(r,n,`Failed to acknowledge assistant disk pressure.`),r.ok){let e=d.safeParse(t);return e.success?{ok:!0,status:r.status,data:e.data}:{ok:!1,status:r.status,error:l(e.error.message,r)}}return{ok:!1,status:r.status,error:l(n,r)}}function T(e){let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};if(Array.isArray(t.backups))return t.backups;let n=t,r=[],i=n.local?.snapshots;if(Array.isArray(i))for(let e of i)r.push({snapshot_name:e.filename,pvc:``,created_at:e.created_at,ready_to_use:!0,backup_type:`scheduled`,path:e.path});if(Array.isArray(n.offsite)){for(let e of n.offsite)if(Array.isArray(e.snapshots))for(let t of e.snapshots)r.push({snapshot_name:t.filename,pvc:``,created_at:t.created_at,ready_to_use:!t.encrypted,backup_type:`scheduled`,path:t.path})}return r}function E(e){let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return Array.isArray(t.backups)?t.backups:[]}async function D(e){let n=!t(),[r,i]=await Promise.all([a({path:{assistant_id:e},throwOnError:!1}),n?_({path:{assistant_id:e},throwOnError:!1}):null]);if(u(r.response,r.error,`Failed to list assistant backups.`),!r.response.ok)return{ok:!1,status:r.response.status,error:l(r.error,r.response)};let o=T(r.data);if(i){if(i.response?.ok){let e=E(i.data);return{ok:!0,status:r.response.status,data:[...e,...o]}}if(o.length===0&&i.response)return{ok:!1,status:i.response.status,error:l(i.error,i.response)}}return{ok:!0,status:r.response.status,data:o}}async function O(e){let{data:n,error:r,response:i}=t()?await o({path:{assistant_id:e},throwOnError:!1}):await g({path:{assistant_id:e},throwOnError:!1});if(u(i,r,`Failed to create assistant backup.`),i.ok){let e=n&&typeof n==`object`&&!Array.isArray(n)?n:{};return{ok:!0,status:i.status,data:e}}return{ok:!1,status:i.status,error:l(r,i)}}async function k(e,n){let{data:i,error:a,response:o}=t()?await r({path:{assistant_id:e},body:{path:n.path??n.snapshot_name},throwOnError:!1}):await h({path:{assistant_id:e,snapshot_name:n.snapshot_name},throwOnError:!1});if(u(o,a,`Failed to restore assistant backup.`),o.ok){let e=i&&typeof i==`object`&&!Array.isArray(i)?i:{};return{ok:!0,status:o.status,data:e}}return{ok:!1,status:o.status,error:l(a,o)}}async function A(e){let{data:t,error:n,response:r}=await m({path:{id:e},throwOnError:!1});return u(r,n,`Failed to restart assistant.`),r.ok?{ok:!0,data:t&&typeof t==`object`&&!Array.isArray(t)?t:{}}:{ok:!1,status:r.status,error:l(n,r)}}async function j(e){let{error:t,response:n}=await y({path:{id:e},throwOnError:!1});return u(n,t,`Failed to retire assistant.`),n.ok?{ok:!0}:{ok:!1,status:n.status,error:l(t,n)}}async function M(){let{data:e,error:t,response:n}=await v({query:{hosting:`all`},throwOnError:!1});return u(n,t,`Failed to list assistants.`),n.ok?{ok:!0,status:n.status,data:e?.results??[]}:{ok:!1,status:n.status,error:l(t,n)}}export{S as a,M as c,j as d,C as i,A as l,O as n,b as o,x as r,D as s,w as t,k as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-KBgJOpms.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);export{t};
|