@vellumai/web 0.8.12-staging.1 → 0.8.12-staging.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/assets/{BundleConfirmPage-jkqaLCJa.js → BundleConfirmPage-YJRCo0Hn.js} +1 -1
  2. package/dist/assets/{account-page-CnPPGmfm.js → account-page-Dj92GjiR.js} +1 -1
  3. package/dist/assets/{add-credits-modal-BxO-aOIt.js → add-credits-modal-CsP4udDc.js} +1 -1
  4. package/dist/assets/{advanced-page-B-9YunGO.js → advanced-page-BCnHb6oY.js} +1 -1
  5. package/dist/assets/{ai-page-Ccq4dwgh.js → ai-page-DcBsmsTv.js} +1 -1
  6. package/dist/assets/ai-utils-NK8I8SN2.js +1 -0
  7. package/dist/assets/{api-OKSSIP8W.js → api-DiLLlhgt.js} +1 -1
  8. package/dist/assets/{api-key-screen-BdonZw0y.js → api-key-screen-Nxq7EclW.js} +1 -1
  9. package/dist/assets/{app-html-cache-D7jkI5-i.js → app-html-cache-DuUq2_RD.js} +1 -1
  10. package/dist/assets/{archive-page-D-lt2ew2.js → archive-page-DGVZ9qUU.js} +1 -1
  11. package/dist/assets/{assistant-status-panel-DXNBZech.js → assistant-status-panel-B-yM7DE5.js} +1 -1
  12. package/dist/assets/{auth-store-BDBEYGBC.js → auth-store-C4gcHOWH.js} +1 -1
  13. package/dist/assets/{avatar-api-DbhDkml8.js → avatar-api-CLSAZR4o.js} +1 -1
  14. package/dist/assets/billing-page-C_pAWHkv.js +3 -0
  15. package/dist/assets/{command-palette-oEhmGGJ_.js → command-palette-CmihDJi0.js} +1 -1
  16. package/dist/assets/{command-palette-window-page-CDLfRYDZ.js → command-palette-window-page-CHxcr6A6.js} +1 -1
  17. package/dist/assets/{community-page-BwBAzLWc.js → community-page-BgwEi2WM.js} +1 -1
  18. package/dist/assets/{connect-page-BmHjyuVm.js → connect-page-DKR1ECD0.js} +1 -1
  19. package/dist/assets/contacts-page-route-ALOLGdXW.js +1 -0
  20. package/dist/assets/{debug-page-DIjs01B3.js → debug-page-DwWy2v03.js} +1 -1
  21. package/dist/assets/{deploy-dialogs-K3jkgI2T.js → deploy-dialogs-DrOvG0Ma.js} +1 -1
  22. package/dist/assets/{developer-page-DFhuZ_hl.js → developer-page-CNY0EBWx.js} +1 -1
  23. package/dist/assets/{devices-page-DdDILkUC.js → devices-page-DyJCd4s2.js} +1 -1
  24. package/dist/assets/{dictation-overlay-page-CxBuw-hP.js → dictation-overlay-page-bAy1yMeW.js} +1 -1
  25. package/dist/assets/{document-viewer-page-Y69T82fT.js → document-viewer-page-B1YXPDXM.js} +1 -1
  26. package/dist/assets/{earn-credits-modal-CYjyqSQ0.js → earn-credits-modal-BVhrVwKQ.js} +1 -1
  27. package/dist/assets/{emails-page-DBN4Tl5W.js → emails-page-xMdxei56.js} +1 -1
  28. package/dist/assets/{general-page-Bp5ucjKX.js → general-page-CzxX_ytO.js} +1 -1
  29. package/dist/assets/{hatching-screen-CzrL6chE.js → hatching-screen-BvaGi8x7.js} +1 -1
  30. package/dist/assets/{home-page-route-CaqhLSrL.js → home-page-route-Bxgs4dcd.js} +1 -1
  31. package/dist/assets/{hosting-screen-WK7sHIGI.js → hosting-screen-Jp346VHw.js} +1 -1
  32. package/dist/assets/{identity-page-route-B3RBccXw.js → identity-page-route-DHz3LOu0.js} +1 -1
  33. package/dist/assets/{index-Ue-r3LET.js → index-87hTkD_v.js} +20 -20
  34. package/dist/assets/inspect-page-B9wa3RHM.js +3 -0
  35. package/dist/assets/{install-DKeB-cXi.js → install-BlwjvAKk.js} +1 -1
  36. package/dist/assets/integrations-page-2soaHaLH.js +1 -0
  37. package/dist/assets/{intelligence-layout-CmazwWMA.js → intelligence-layout-DRGbJocy.js} +1 -1
  38. package/dist/assets/{keyboard-shortcuts-page-jZLFffHe.js → keyboard-shortcuts-page-DqPqhIaF.js} +1 -1
  39. package/dist/assets/{library-detail-page-arp0ms3i.js → library-detail-page-DLekVuPD.js} +1 -1
  40. package/dist/assets/{library-page-B_Um_0PB.js → library-page-DFBGqpq4.js} +1 -1
  41. package/dist/assets/{login-flow-BbNFfr7k.js → login-flow-DmfVD3r_.js} +1 -1
  42. package/dist/assets/{login-page-C1onXPvg.js → login-page-CaI9s3W4.js} +1 -1
  43. package/dist/assets/{logout-page-CZh6Uq_T.js → logout-page-DMO7Ro8q.js} +1 -1
  44. package/dist/assets/{logs-layout-DH3tK8BL.js → logs-layout-XvmAJO6n.js} +1 -1
  45. package/dist/assets/{memory-router-playground-page-BWcZZNFJ.js → memory-router-playground-page-DbSrBXJN.js} +1 -1
  46. package/dist/assets/{mobile-sidebar-drawer-BRnz4Jvz.js → mobile-sidebar-drawer-CBYUCY4b.js} +1 -1
  47. package/dist/assets/{notifications-page-BdpIL_Je.js → notifications-page-BWn1NfeD.js} +1 -1
  48. package/dist/assets/{oauth-complete-page-CYJsWX1G.js → oauth-complete-page-qd6rU5o-.js} +1 -1
  49. package/dist/assets/{oauth-popup-complete-page-B4P5UDKV.js → oauth-popup-complete-page-EU9BzQqV.js} +1 -1
  50. package/dist/assets/{platform-loopback-page-C1Kd436W.js → platform-loopback-page-ZNZz8YUX.js} +1 -1
  51. package/dist/assets/plugin-detail-page-D7tzIKVl.js +1 -0
  52. package/dist/assets/plugins-page-D-kijwJP.js +1 -0
  53. package/dist/assets/{pre-chat-flow-CpevOsrA.js → pre-chat-flow-BSXfD6S0.js} +1 -1
  54. package/dist/assets/{privacy-page-DbFKqGg4.js → privacy-page-BiyTmDHN.js} +1 -1
  55. package/dist/assets/{privacy-screen-CpDWfUis.js → privacy-screen-mhJ5CnV4.js} +1 -1
  56. package/dist/assets/{provider-callback-page-CQuLD5No.js → provider-callback-page-BuPFhW7i.js} +1 -1
  57. package/dist/assets/{provider-key-BYLNbH9o.js → provider-key-Clqsm-h7.js} +1 -1
  58. package/dist/assets/{provider-signup-page-C6xTOqI6.js → provider-signup-page-DhOuxnxY.js} +1 -1
  59. package/dist/assets/{query-tags-D58uls0S.js → query-tags-DPKpdc1_.js} +1 -1
  60. package/dist/assets/react-query.gen-B_oGDSP8.js +1 -0
  61. package/dist/assets/{review-terms-screen-itzeD0QH.js → review-terms-screen-BgLGEzR9.js} +1 -1
  62. package/dist/assets/{schedules-CULDXQU7.js → schedules-Cxb9otxN.js} +1 -1
  63. package/dist/assets/schedules-page-SwCpd9Y6.js +1 -0
  64. package/dist/assets/{sdk.gen-18Tp6Ee_.js → sdk.gen-DgqwY_WN.js} +1 -1
  65. package/dist/assets/{select-assistant-screen-DXbNAlGe.js → select-assistant-screen-CIVt4gg2.js} +1 -1
  66. package/dist/assets/{settings-layout-N_A_6E3u.js → settings-layout-L6c6Zaje.js} +1 -1
  67. package/dist/assets/{share-feedback-modal-B9w8RmIj.js → share-feedback-modal-BlMDGejV.js} +1 -1
  68. package/dist/assets/{sidebar-tree-CivI4sXe.js → sidebar-tree-KVdXcht-.js} +1 -1
  69. package/dist/assets/{signup-page-COvQK9fm.js → signup-page-FdYQKUli.js} +1 -1
  70. package/dist/assets/{skills-page-BoipXRsU.js → skills-page-Cs1mTTpA.js} +1 -1
  71. package/dist/assets/{sounds-page-2GDbwQsL.js → sounds-page-BtPyTbtD.js} +1 -1
  72. package/dist/assets/{step-indicator-dots-BusA89ya.js → step-indicator-dots-C_x0ZHGS.js} +1 -1
  73. package/dist/assets/{subagent-detail-panel-CN_sN89F.js → subagent-detail-panel-C6FfdUDE.js} +1 -1
  74. package/dist/assets/{system-events-page-DJIYOd5W.js → system-events-page-D9gAK-2s.js} +1 -1
  75. package/dist/assets/{tiptap-document-editor-B5IBRg7q.js → tiptap-document-editor-Cl8KJbb0.js} +1 -1
  76. package/dist/assets/{tool-detail-panel-CAZdGcvz.js → tool-detail-panel-DP9ZUGgW.js} +1 -1
  77. package/dist/assets/{trace-page-Db3S2Hsr.js → trace-page-ClDbcKcm.js} +1 -1
  78. package/dist/assets/{upgrade-cancel-page-mjlsJGp8.js → upgrade-cancel-page-BXZOicV3.js} +1 -1
  79. package/dist/assets/{upgrade-success-page-BHISIP3f.js → upgrade-success-page-CeM_gFIj.js} +1 -1
  80. package/dist/assets/{usage-page-BlvccKgv.js → usage-page-DHofU58j.js} +1 -1
  81. package/dist/assets/{use-daemon-config-DBKbFpqu.js → use-daemon-config-BLCgqB8a.js} +1 -1
  82. package/dist/assets/use-is-org-ready-BgB6QXom.js +1 -0
  83. package/dist/assets/{use-oauth-complete-deep-link-listener-Bteh0USx.js → use-oauth-complete-deep-link-listener-DnDBZsXG.js} +1 -1
  84. package/dist/assets/{use-onboarding-login-ByZGkreO.js → use-onboarding-login-CYb9P9G7.js} +1 -1
  85. package/dist/assets/use-plugin-drift-uJRE3xTx.js +1 -0
  86. package/dist/assets/{viewer-store-cX7oqdcL.js → viewer-store-o5byTOZU.js} +1 -1
  87. package/dist/assets/{voice-page-DOpV3VSS.js → voice-page-sB7S0uAp.js} +1 -1
  88. package/dist/assets/{weather-forecast-display-ByPBvVhv.js → weather-forecast-display-C5PORkTk.js} +1 -1
  89. package/dist/assets/{welcome-screen-3d2lXMb8.js → welcome-screen-Rm6Zm5dD.js} +1 -1
  90. package/dist/assets/{workspace-page-JSb7VYXM.js → workspace-page-zV0pbQfl.js} +1 -1
  91. package/dist/index.html +11 -11
  92. package/package.json +1 -1
  93. package/dist/assets/ai-utils-C-JayVoL.js +0 -1
  94. package/dist/assets/billing-page-BJ__Ep9o.js +0 -3
  95. package/dist/assets/contacts-page-route-CcDLyEf6.js +0 -1
  96. package/dist/assets/inspect-page-B3_pcn__.js +0 -3
  97. package/dist/assets/integrations-page-BaDzdFWK.js +0 -1
  98. package/dist/assets/plugin-detail-page-BEjyf-Ux.js +0 -1
  99. package/dist/assets/plugins-page-B6qln-fF.js +0 -1
  100. package/dist/assets/react-query.gen-Bp_whSkG.js +0 -1
  101. package/dist/assets/schedules-page-LaB58sYQ.js +0 -1
  102. package/dist/assets/use-is-org-ready-7bL7PowO.js +0 -1
  103. /package/dist/assets/{avatar-bundled-components-CL39cwfR.js → avatar-bundled-components-D1Q_IPFc.js} +0 -0
  104. /package/dist/assets/{danger-zone-redirect-page-KLttOmNm.js → danger-zone-redirect-page-B7We5zLz.js} +0 -0
  105. /package/dist/assets/{environment-store-BFK2MIjF.js → environment-store-D3R6E-cP.js} +0 -0
  106. /package/dist/assets/{format-CCVadvyp.js → format-Bx7lme44.js} +0 -0
  107. /package/dist/assets/{format-date-Pw0m-fQ8.js → format-date-6MJxjyy6.js} +0 -0
  108. /package/dist/assets/{format-file-size-DRikIrHj.js → format-file-size-DkWrZmJq.js} +0 -0
  109. /package/dist/assets/{llm-dimension-CN3sxcTZ.js → llm-dimension-v8X-KTEz.js} +0 -0
  110. /package/dist/assets/{onboarding-layout-40CHAFT0.js → onboarding-layout-BAx3atHc.js} +0 -0
  111. /package/dist/assets/{system-events-redirect-page-BAb2LAAA.js → system-events-redirect-page-De2HLo0x.js} +0 -0
  112. /package/dist/assets/{usage-window-BZdZL5mo.js → usage-window-DIaL-FoL.js} +0 -0
@@ -1 +1 @@
1
- import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dze4ISSQ.js";import{t as n}from"./react-DJZBPgpf.js";import{T as r}from"./portal-container-DIXEBWUe.js";import{d as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as a}from"./QueryClientProvider-DKhXIxGb.js";import{t as o}from"./useQuery-B45lW1Kk.js";import{t as s}from"./useMutation-Lj4VunQV.js";import{t as c}from"./jsx-runtime-CVSDxk6A.js";import{t as l}from"./button-C68o-wep.js";import{t as u}from"./card-CL5iEMJO.js";import"./src-Bnn6algv.js";import{t as d}from"./confirm-dialog-94QFOD8a.js";import{n as f,s as p,t as m}from"./install-DKeB-cXi.js";import{t as h}from"./chevron-left-IaM5LZKa.js";import{t as g}from"./chevron-right-C1TiR5qP.js";import{n as _,t as v}from"./minimize-2-BsiUUDFc.js";import{t as y}from"./pencil-72cxzUyZ.js";import{t as b}from"./save-DfZ7IoMI.js";import{t as x}from"./x-D1JFrRas.js";import{H as S,K as C,q as w}from"./react-query.gen-Bp_whSkG.js";import{r as T}from"./api-OKSSIP8W.js";import{i as E}from"./routes-VcLWbBmh.js";import{t as D}from"./viewer-store-cX7oqdcL.js";import{t as O}from"./conversation-store-CvL-Qvj6.js";import{a as k,o as A,r as j}from"./avatar-api-DbhDkml8.js";import{t as M}from"./misc-Dml34IDG.js";import{n as N}from"./use-reduced-motion-BWKBBkXa.js";import{Hn as P,K as F,Ma as ee,Oi as te,di as ne,fi as I,ga as L,gr as R,hr as re,li as ie,q as ae,ui as oe,wa as z,y as B,zi as V}from"./index-Ue-r3LET.js";import{t as H}from"./use-active-assistant-id-B2Zd0B4I.js";var se=e(r(),1),U=e(n(),1),W=c();function G(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function K({assistantId:e,initialTraits:t,onSave:n,onCancel:r}){let[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!0),[c,l]=(0,U.useState)(!1),u=(0,U.useRef)(null),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(0),[h,g]=(0,U.useState)(0);(0,U.useEffect)(()=>{if(u.current===e)return;let n=!1;return j(e).then(r=>{if(!n&&(u.current=e,a(r),s(!1),r&&t)){let e=r.bodyShapes.findIndex(e=>e.id===t.bodyShape),n=r.eyeStyles.findIndex(e=>e.id===t.eyeStyle),i=r.colors.findIndex(e=>e.id===t.color);e>=0&&f(e),n>=0&&m(n),i>=0&&g(i)}}),()=>{n=!0}},[e,t]);let _=(0,U.useCallback)(()=>{i&&(f(Math.floor(Math.random()*i.bodyShapes.length)),m(Math.floor(Math.random()*i.eyeStyles.length)),g(Math.floor(Math.random()*i.colors.length)))},[i]),v=(0,U.useCallback)(async()=>{if(!i)return;let t={bodyShape:i.bodyShapes[d].id,eyeStyle:i.eyeStyles[p].id,color:i.colors[h].id};l(!0);try{await k(e,t),n?.(t)}finally{l(!1)}},[i,d,p,h,e,n]);if(o)return(0,W.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,W.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})});if(!i)return(0,W.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`});let y=i.bodyShapes[d],S=i.eyeStyles[p],C=i.colors[h];return(0,W.jsxs)(`div`,{className:`space-y-6`,children:[(0,W.jsx)(`div`,{className:`flex justify-center`,children:(0,W.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,W.jsx)(B,{components:i,bodyShapeId:y.id,eyeStyleId:S.id,colorId:C.id,size:160})})}),(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(q,{label:`Body`,value:y.id,onPrev:()=>f(G(d,i.bodyShapes.length,`backward`)),onNext:()=>f(G(d,i.bodyShapes.length,`forward`))}),(0,W.jsx)(q,{label:`Eyes`,value:S.id,onPrev:()=>m(G(p,i.eyeStyles.length,`backward`)),onNext:()=>m(G(p,i.eyeStyles.length,`forward`))}),(0,W.jsx)(q,{label:`Color`,value:C.id,colorHex:C.hex,onPrev:()=>g(G(h,i.colors.length,`backward`)),onNext:()=>g(G(h,i.colors.length,`forward`))})]}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:_,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,W.jsx)(ee,{className:`h-4 w-4`}),`Randomize`]}),(0,W.jsxs)(`button`,{type:`button`,onClick:v,disabled:c,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--system-positive-strong)] bg-[var(--system-positive-weak)] px-3 py-2 text-body-medium-default text-[var(--system-positive-strong)] transition-colors hover:opacity-90 disabled:opacity-50`,children:[(0,W.jsx)(b,{className:`h-4 w-4`}),c?`Saving...`:`Save Avatar`]}),r&&(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`flex cursor-pointer items-center justify-center rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:(0,W.jsx)(x,{className:`h-4 w-4`})})]})]})}function q({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,W.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,W.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}),(0,W.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,W.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,W.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,W.jsx)(g,{className:`h-4 w-4`})})]})]})}function ce({open:e,onClose:t,assistantId:n,components:r,traits:i,customImageUrl:a,onSaveCharacter:o,onUploadImage:s,onGenerateWithAI:c}){let l=(0,U.useId)(),u=(0,U.useRef)(null),d=(0,U.useRef)(null),f=(0,U.useRef)(null),[p,m]=(0,U.useState)(`actions`),[_,v]=(0,U.useState)(!1);(0,U.useEffect)(()=>{e&&d.current?.focus()},[e]),(0,U.useEffect)(()=>{if(e){let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}},[e]);let y=(0,U.useCallback)(()=>{m(`actions`),t()},[t]),b=(0,U.useCallback)(e=>{e.key===`Escape`&&(p===`character-builder`?m(`actions`):y())},[y,p]),S=(0,U.useCallback)(e=>{e.target===u.current&&y()},[y]),C=(0,U.useCallback)(()=>{m(`actions`)},[]),w=(0,U.useCallback)(()=>{m(`character-builder`)},[]),T=(0,U.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;v(!0);let r=await A(n,t);v(!1),r&&(s(),y()),f.current&&(f.current.value=``)},[n,s,y]),E=(0,U.useCallback)(()=>{f.current?.click()},[]),D=(0,U.useCallback)(()=>{y(),c?.()},[y,c]),O=(0,U.useCallback)(e=>{o(e),y()},[o,y]);return e?(0,se.createPortal)((0,W.jsxs)(`div`,{ref:u,role:`dialog`,"aria-modal":`true`,"aria-labelledby":l,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:b,onClick:S,children:[(0,W.jsxs)(`div`,{className:`mx-4 flex w-full max-w-md flex-col rounded-xl border shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`85vh`},children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-b px-6 py-4`,style:{borderColor:`var(--border-base)`},children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`character-builder`&&(0,W.jsx)(`button`,{type:`button`,onClick:C,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Back`,children:(0,W.jsx)(h,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsx)(`h2`,{id:l,className:`text-title-small`,style:{color:`var(--content-default)`},children:p===`character-builder`?`Build a Character`:`Update Avatar`})]}),(0,W.jsx)(`button`,{ref:d,type:`button`,onClick:y,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Close`,children:(0,W.jsx)(x,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]}),(0,W.jsx)(`div`,{className:`overflow-y-auto p-6`,children:p===`actions`?(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,W.jsx)(F,{components:r,traits:i,customImageUrl:a,size:120,interactive:!0}),(0,W.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:w,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,W.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,W.jsx)(I,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Build a Character`}),(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Build your own character`})]}),(0,W.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:E,disabled:_,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,W.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,W.jsx)(L,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:_?`Uploading...`:`Upload Image`}),(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Choose an image from your computer`})]}),(0,W.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),c&&(0,W.jsxs)(`button`,{type:`button`,onClick:D,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,W.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,W.jsx)(te,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Generate with AI`}),(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Create an avatar through chat`})]}),(0,W.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]})]})]}):(0,W.jsx)(K,{assistantId:n,initialTraits:i,onSave:O,onCancel:C})})]}),(0,W.jsx)(`input`,{ref:f,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:T})]}),document.body):null}var le={displayName:`Other`,color:`#888`,emoji:`?`},ue={email:{displayName:`Email`,color:`#A665C9`,emoji:`📧`},calendar:{displayName:`Calendar`,color:`#0E9B8B`,emoji:`📅`},messaging:{displayName:`Messaging`,color:`#6B8AE0`,emoji:`💬`},browsing:{displayName:`Browsing`,color:`#E9642F`,emoji:`🌐`},productivity:{displayName:`Productivity`,color:`#0E9B8B`,emoji:`📋`},development:{displayName:`Development`,color:`#EF4400`,emoji:`🔨`},voice:{displayName:`Voice`,color:`#DB4B77`,emoji:`🎤`},commerce:{displayName:`Commerce`,color:`#E9C91A`,emoji:`🛒`},content:{displayName:`Content`,color:`#DB4B77`,emoji:`🎨`},health:{displayName:`Health`,color:`#4C9B50`,emoji:`❤️`},system:{displayName:`System`,color:`#8D99A5`,emoji:`⚙️`},integrations:{displayName:`Integrations`,color:`#8D99A5`,emoji:`🔗`}};function J(e){return ue[e]??le}var Y=[`email`,`calendar`,`messaging`,`browsing`,`productivity`,`development`,`voice`,`commerce`,`content`,`health`,`system`,`integrations`],de={email:[{label:`Sending`,emoji:`📨`,skillIds:new Set([`agentmail`,`email-setup`])},{label:`Reading`,emoji:`📬`,skillIds:new Set([`email-channel`,`gmail`])}],messaging:[{label:`Chat`,emoji:`💬`,skillIds:new Set([`messaging`,`slack`,`telegram`])},{label:`Notifications`,emoji:`🔔`,skillIds:new Set([`notifications`])},{label:`People`,emoji:`👥`,skillIds:new Set([`contacts`,`followups`])}],development:[{label:`Coding`,emoji:`💻`,skillIds:new Set([`typescript-eval`,`frontend-design`])},{label:`Dev Tools`,emoji:`🔧`,skillIds:new Set([`api-mapping`,`cli-discover`,`subagent`,`app-builder`])}],browsing:[{label:`Control`,emoji:`🎮`,skillIds:new Set([`computer-use`,`macos-automation`,`browser`])},{label:`Triggers`,emoji:`⏰`,skillIds:new Set([`watcher`,`time-based-actions`])}],commerce:[{label:`Shopping`,emoji:`🛒`,skillIds:new Set([`amazon`,`doordash`,`restaurant-reservation`])}],system:[{label:`Core`,emoji:`🧠`,skillIds:new Set([`knowledge-graph`,`skills-catalog`,`self-upgrade`])},{label:`Daily`,emoji:`☀️`,skillIds:new Set([`start-the-day`,`weather`])}]},fe=14,pe=10,me=6;function he(e){switch(e.kind.type){case`center`:return{shape:`circle`,size:90,cornerRadius:0};case`category`:return{shape:`roundedRect`,size:80,cornerRadius:fe};case`subCategory`:return{shape:`roundedRect`,size:56,cornerRadius:pe};case`skill`:return{shape:`diamond`,size:64,cornerRadius:me}}}function ge(e,t,n,r){let i=Math.min(Math.max(0,t),e),a=Math.abs(n),o=Math.abs(r);if(a<1e-6&&o<1e-6)return e;let s=e/Math.max(a,o),c=s*n,l=s*r;if(!(Math.abs(c)>e-i&&Math.abs(l)>e-i))return s;let u=Math.sign(c)*(e-i),d=Math.sign(l)*(e-i),f=n*u+r*d,p=u*u+d*d-i*i,m=f*f-p;return m<0?s:f+Math.sqrt(m)}function _e(e,t,n){switch(e.shape){case`circle`:return e.size/2;case`roundedRect`:return ge(e.size/2,e.cornerRadius,t,n);case`diamond`:{let r=(t+n)*Math.SQRT1_2,i=(-t+n)*Math.SQRT1_2;return ge(e.size/2,e.cornerRadius,r,i)}}}function ve(e,t){let n=t.x-e.x,r=t.y-e.y,i=Math.sqrt(n*n+r*r);if(i<1e-6)return{x1:e.x,y1:e.y,x2:t.x,y2:t.y};let a=n/i,o=r/i,s=Math.max(0,_e(he(e),a,o)-3),c=Math.max(0,_e(he(t),-a,-o)-3);if(s+c>=i){let n=(e.x+t.x)/2,r=(e.y+t.y)/2;return{x1:n,y1:r,x2:n,y2:r}}return{x1:e.x+a*s,y1:e.y+o*s,x2:t.x-a*c,y2:t.y-o*c}}var ye=10,be=200,xe=160,X=160;function Se(e,t,n,r){let i={x:e.x,y:e.y};for(let e=0;e<30;e++){let e=0,a=0,o=0;for(let s of n){let n=i.x-s.x,c=i.y-s.y,l=Math.sqrt(n*n+c*c),u=t+s.radius+r-l;u>e&&(e=u,l<.1?(a=u+1,o=0):(a=n/l*(u+1),o=c/l*(u+1)))}if(e<=0)break;i={x:i.x+a,y:i.y+o}}return i}function Ce(e,t,n,r,i,a,o,s,c,l,u,d){if(e.length===0)return;let f=a+o,p=Math.cos(r),m=Math.sin(r),h=-m,g=p,_=f*.88,v=J(c).color;e.forEach((r,c)=>{let y=Math.floor(c/3),b=c%3,x=Math.min(3,e.length-y*3),S=(b-(x-1)/2)*f,C=y%2==1&&x<3?f*.5:0,w=i+y*_,T=Se({x:n.x+w*p+(S+C)*h,y:n.y+w*m+(S+C)*g},a/2,u,o);u.push({id:r.id,kind:{type:`skill`,item:r},parentId:t,depth:s,x:T.x,y:T.y,radius:a/2}),d.push({id:`edge-${l}-skill-${c}`,fromId:t,toId:r.id,color:v})})}function we(e,t,n=90){let r=[],i=[],a=ye;if(r.push({id:`__center__`,kind:{type:`center`},parentId:null,depth:0,x:e.x,y:e.y,radius:n/2}),t.length===0)return{nodes:r,edges:i};let o=t.length,s=2*Math.PI/o;return t.forEach((t,n)=>{let o=-Math.PI/2+n*s,c=`cat-${t.category}`,l=J(t.category).color,u=Se({x:e.x+be*Math.cos(o),y:e.y+be*Math.sin(o)},80/2,r,a);r.push({id:c,kind:{type:`category`,category:t.category},parentId:`__center__`,depth:1,x:u.x,y:u.y,radius:80/2}),i.push({id:`edge-center-${t.category}`,fromId:`__center__`,toId:c,color:l});let d=de[t.category];if(d&&d.length>0){let e=[],n=new Set;for(let r of d){let i=t.items.filter(e=>r.skillIds.has(e.id));i.length>0&&(e.push({def:r,items:i}),i.forEach(e=>n.add(e.id)))}let f=t.items.filter(e=>!n.has(e.id));if(f.length>0){if(e.length===0){Ce(t.items,c,u,o,X,64,a,2,t.category,t.category,r,i);return}let n=e[e.length-1];n&&n.items.push(...f)}let p=e.length,m=s*.55,h=p<=1?0:Math.min(m,(p-1)*.35);e.forEach((e,n)=>{let s;s=p===1?o:o+(n/(p-1)-.5)*h*2;let d=`subcat-${t.category}-${n}`,f=Se({x:u.x+xe*Math.cos(s),y:u.y+xe*Math.sin(s)},56/2,r,a);r.push({id:d,kind:{type:`subCategory`,label:e.def.label,emoji:e.def.emoji,category:t.category},parentId:c,depth:2,x:f.x,y:f.y,radius:56/2}),i.push({id:`edge-${t.category}-sub-${n}`,fromId:c,toId:d,color:l}),Ce(e.items,d,f,s,X,64,a,3,t.category,d,r,i)})}else Ce(t.items,c,u,o,X,64,a,2,t.category,t.category,r,i)}),{nodes:r,edges:i}}function Te(e){let t=new Map;for(let n of e){let e=t.get(n.category);e?e.push(n):t.set(n.category,[n])}let n=[];for(let e of Y){let r=t.get(e);r&&r.length>0&&n.push({category:e,items:r})}for(let[e,r]of t)!Y.includes(e)&&r.length>0&&n.push({category:e,items:r});return n}function Ee(e,t,n,r,i=120,a=.4,o=3){if(e.length===0)return{zoom:1,panX:0,panY:0};let s=1/0,c=-1/0,l=1/0,u=-1/0;for(let t of e)s=Math.min(s,t.x),c=Math.max(c,t.x),l=Math.min(l,t.y),u=Math.max(u,t.y);let d=c-s+i*2,f=u-l+i*2;if(d<=0||f<=0||n<=0||r<=0)return{zoom:1,panX:0,panY:0};let p=Math.min(n/d,r/f),m=Math.max(a,Math.min(o,p)),h=(s+c)/2-t.x,g=(l+u)/2-t.y;return{zoom:m,panX:-h*m,panY:-g*m}}var De=.4,Oe=.25,Z={x:600,y:450},ke={type:`spring`,stiffness:180,damping:20},Ae={category:{size:80,cornerRadius:14,dashed:!1,fillPct:14,fillHoverPct:25,strokePct:55,strokeHoverPct:85,strokeWidth:2,strokeHoverWidth:2.5},subcategory:{size:56,cornerRadius:10,dashed:!0,fillPct:10,fillHoverPct:20,strokePct:40,strokeHoverPct:70,strokeWidth:1.5,strokeHoverWidth:2}},je={category:`rounded-[3px]`,subcategory:`rounded-[3px] border-dashed`,skill:`rotate-45`,workspace:`rounded-full`};function Me({edges:e,nodeById:t,visible:n}){return(0,W.jsx)(`svg`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 h-full w-full overflow-visible`,children:e.map(e=>{let r=t.get(e.fromId),i=t.get(e.toId);if(!r||!i)return null;let{x1:a,y1:o,x2:s,y2:c}=ve(r,i);return(0,W.jsx)(`line`,{x1:a,y1:o,x2:s,y2:c,stroke:e.color,strokeWidth:1.5,opacity:n?.45:0,style:{transition:`opacity 0.4s ease`}},e.id)})})}function Q({shape:e,label:t}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:(0,W.jsx)(`span`,{className:M(`inline-block h-3 w-3 border-[1.5px] border-[var(--content-tertiary)]`,je[e])})}),(0,W.jsx)(`span`,{children:t})]})}function Ne({visible:e}){return(0,W.jsx)(`div`,{"data-constellation-control":!0,className:`pointer-events-none absolute bottom-4 left-4 rounded-md px-3 py-2 text-body-small-default`,style:{backgroundColor:`color-mix(in srgb, var(--surface-overlay) 80%, transparent)`,border:`1px solid color-mix(in srgb, var(--content-tertiary) 20%, transparent)`,color:`var(--content-secondary)`,opacity:+!!e,transition:`opacity 0.35s ease`},children:(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Q,{shape:`category`,label:`Category`}),(0,W.jsx)(Q,{shape:`subcategory`,label:`Subcategory`}),(0,W.jsx)(Q,{shape:`skill`,label:`Skill`}),(0,W.jsx)(Q,{shape:`workspace`,label:`Workspace`})]})})}function Pe({item:e,color:t,onViewDetails:n}){let r=e.kind===`skill`?`Skill`:`Workspace`,i=e.kind===`skill`?ne:z;return(0,W.jsxs)(u,{padding:`sm`,elevated:!0,className:`w-[260px] shadow-[var(--shadow-popover)]`,role:`dialog`,"aria-label":`${e.label} details`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-body-small-emphasised text-[var(--content-default)]`,style:{backgroundColor:`${t}33`},children:[(0,W.jsx)(i,{className:`h-3 w-3`,style:{color:t}}),r]}),n?(0,W.jsx)(l,{type:`button`,variant:`ghost`,size:`compact`,onClick:n,children:`View Details`}):null]}),(0,W.jsxs)(`div`,{className:`mt-2 flex items-start gap-2`,children:[e.icon||e.emoji?(0,W.jsx)(p,{skill:e,className:`h-5 w-5 shrink-0 text-[20px] leading-none`}):null,(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.description?(0,W.jsx)(`div`,{className:`mt-1 line-clamp-3 text-body-small-default text-[var(--content-secondary)]`,children:e.description}):null]})]})]})}function Fe({onSingleClick:e,onDoubleClick:t,latency:n=200}){let r=(0,U.useRef)(null);return(0,U.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,U.useCallback)(i=>{r.current&&=(clearTimeout(r.current),null),e&&i.detail===1&&(r.current=setTimeout(()=>{r.current=null,e()},n)),t&&i.detail>=2&&i.detail%2==0&&t()},[e,t,n])}function Ie(e,t,n){let[r,i]=(0,U.useState)(!1),a=r||n===!0,o=Fe({onSingleClick:e,onDoubleClick:t});return{active:a,onClick:(0,U.useCallback)(n=>{!e&&!t||(n.stopPropagation(),o(n))},[e,t,o]),onPointerDown:(0,U.useCallback)(n=>{!e&&!t||n.stopPropagation()},[e,t]),onMouseEnter:(0,U.useCallback)(()=>i(!0),[]),onMouseLeave:(0,U.useCallback)(()=>i(!1),[])}}function $(e,t){return`color-mix(in oklab, ${e} ${Math.max(0,Math.min(100,t))}%, var(--surface-base))`}function Le(e,t){switch(e.kind.type){case`center`:return{visible:t>=1};case`category`:return{visible:t>=2};case`subCategory`:return{visible:t>=3};case`skill`:return{visible:t>=4}}}function Re(e,t){switch(e.kind.type){case`center`:return .05;case`category`:return t*.04;case`subCategory`:return t*.03;case`skill`:return .08+t*.02}}function ze(e){switch(e.kind.type){case`skill`:return e.kind.item;case`category`:{let t=J(e.kind.category);return{id:e.id,label:t.displayName,emoji:t.emoji,category:e.kind.category,kind:`workspaceFile`}}case`subCategory`:return{id:e.id,label:e.kind.label,emoji:e.kind.emoji,category:e.kind.category,kind:`workspaceFile`};default:return}}function Be({variant:e,x:t,y:n,color:r,tooltip:i,visibility:a,delay:o,children:s,isSelected:c,onSingleClick:l,onDoubleClick:u}){let d=Ae[e],{active:f,...p}=Ie(l,u,c),m={left:t-d.size/2,top:n-d.size/2,width:d.size,height:d.size,borderRadius:d.cornerRadius,backgroundColor:$(r,f?d.fillHoverPct:d.fillPct),borderStyle:d.dashed?`dashed`:`solid`,borderColor:$(r,f?d.strokeHoverPct:d.strokePct),borderWidth:f?d.strokeHoverWidth:d.strokeWidth,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`,cursor:l||u?`pointer`:`default`};return(0,W.jsx)(N.div,{className:`pointer-events-auto absolute flex flex-col items-center justify-center`,"data-constellation-node":!0,style:m,initial:{opacity:0,scale:.3},animate:{opacity:+!!a.visible,scale:a.visible?1:.3},transition:{...ke,delay:o},onMouseEnter:p.onMouseEnter,onMouseLeave:p.onMouseLeave,onPointerDown:p.onPointerDown,onClick:p.onClick,title:i,children:s})}function Ve({x:e,y:t,item:n,color:r,fallbackEmoji:i,visibility:a,delay:o,isSelected:s,onSingleClick:c,onDoubleClick:l}){let{active:u,...d}=Ie(c,l,s);return(0,W.jsxs)(N.div,{className:`pointer-events-auto absolute`,"data-constellation-node":!0,style:{left:e-64/2,top:t-64/2,width:64,height:64,cursor:c||l?`pointer`:`default`},initial:{opacity:0,scale:.4},animate:{opacity:+!!a.visible,scale:a.visible?1:.4},transition:{...ke,delay:o},onMouseEnter:d.onMouseEnter,onMouseLeave:d.onMouseLeave,onPointerDown:d.onPointerDown,onClick:d.onClick,title:n.label,children:[(0,W.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 rounded-md`,style:{transform:`rotate(45deg)`,backgroundColor:$(r,u?20:10),border:`${u?2:1.5}px solid ${$(r,u?70:40)}`,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`}}),(0,W.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[(0,W.jsx)(p,{skill:n,className:`h-4 w-4 text-[16px] leading-none`,fallback:i}),(0,W.jsx)(`span`,{className:`mt-0.5 max-w-[42px] truncate text-[9px] font-medium leading-tight text-[var(--content-default)]`,title:n.label,children:n.label})]})]})}function He({node:e,index:t,phase:n,components:r,traits:i,customImageUrl:a,isSelected:o,onSingleClick:s,onDoubleClick:c}){let l=Le(e,n),u=Re(e,t);if(e.kind.type===`center`)return(0,W.jsx)(N.div,{className:`pointer-events-none absolute`,style:{left:e.x-90/2,top:e.y-90/2,width:90,height:90},initial:{opacity:0,scale:.6},animate:{opacity:+!!l.visible,scale:l.visible?1:.6},transition:{...ke,delay:u},children:(0,W.jsx)(F,{components:r,traits:i,customImageUrl:a,size:90})});if(e.kind.type===`category`||e.kind.type===`subCategory`){let t=J(e.kind.category),n=e.kind.type===`category`?`category`:`subcategory`,r=e.kind.type===`category`?t.emoji:e.kind.emoji,i=e.kind.type===`category`?t.displayName:e.kind.label,a=n===`category`?`text-[20px]`:`text-[14px]`,d=n===`category`?`mt-1 max-w-[85%] truncate text-label-medium-default leading-tight text-[var(--content-default)]`:`mt-0.5 max-w-[85%] truncate text-[9.5px] font-medium leading-tight text-[var(--content-default)]`;return(0,W.jsxs)(Be,{variant:n,x:e.x,y:e.y,color:t.color,tooltip:i,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c,children:[(0,W.jsx)(`span`,{className:`${a} leading-none`,"aria-hidden":!0,children:r}),(0,W.jsx)(`span`,{className:d,title:i,children:i})]})}if(e.kind.type===`skill`){let t=e.kind.item,n=J(t.category);return(0,W.jsx)(Ve,{x:e.x,y:e.y,item:t,color:n.color,fallbackEmoji:n.emoji,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c})}return null}function Ue(e,t,n,r){let[i,a]=(0,U.useState)({width:0,height:0}),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(!1),g=(0,U.useRef)(null),_=(0,U.useRef)(null);(0,U.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e){let{width:e,height:n}=t.contentRect;a({width:e,height:n})}});n.observe(t);let r=t.getBoundingClientRect();return a({width:r.width,height:r.height}),()=>n.disconnect()},[e]);let v=(0,U.useMemo)(()=>Ee(t,Z,i.width,i.height),[t,i.width,i.height]),y=o??v.zoom,b=c??{x:v.panX,y:v.panY},x=(0,U.useCallback)(()=>{h(!0),g.current!=null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},500)},[]);(0,U.useEffect)(()=>()=>{g.current!=null&&window.clearTimeout(g.current)},[]);let S=(0,U.useCallback)(()=>{s(null),l(null),p(null),x()},[x]),C=(0,U.useCallback)((e,t)=>{let n=Math.max(De,Math.min(3,e));if(n===y)return;let r=n/y;l({x:b.x*r,y:b.y*r}),s(n),p(null),t?.animate&&x()},[b.x,b.y,x,y]),w=(0,U.useCallback)(()=>{C(y+Oe,{animate:!0})},[C,y]),T=(0,U.useCallback)(()=>{C(y-Oe,{animate:!0})},[C,y]),E=(0,U.useCallback)(e=>{if(f===e){S();return}let t=n.get(e);if(!t)return;let r=1.8;s(r),l({x:(Z.x-t.x)*r,y:(Z.y-t.y)*r}),p(e),x()},[S,n,x,f]);return(0,U.useEffect)(()=>{let t=e.current;if(!t)return;let n=e=>{e.preventDefault();let t=e.ctrlKey||e.metaKey?150:400;C(y*(1+-e.deltaY/t))};return t.addEventListener(`wheel`,n,{passive:!1}),()=>t.removeEventListener(`wheel`,n)},[C,e,y]),{zoom:y,pan:b,isDragging:u,isAnimating:m,viewSize:i,zoomedNodeId:f,zoomIn:w,zoomOut:T,fitAll:S,zoomToNode:E,handlePointerDown:(0,U.useCallback)(e=>{if(e.button!==0)return;let t=e.target;t.closest(`[data-constellation-control]`)||(t.closest(`[data-constellation-node]`)||r?.(),_.current={startX:e.clientX,startY:e.clientY,panStartX:b.x,panStartY:b.y,pointerId:e.pointerId,moved:!1},d(!0),g.current!=null&&(window.clearTimeout(g.current),g.current=null),h(!1),e.currentTarget.setPointerCapture(e.pointerId))},[r,b.x,b.y]),handlePointerMove:(0,U.useCallback)(e=>{let t=_.current;if(!t||t.pointerId!==e.pointerId)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;!t.moved&&(Math.abs(n)>3||Math.abs(r)>3)&&(t.moved=!0,p(null)),l({x:t.panStartX+n,y:t.panStartY+r})},[]),handlePointerUp:(0,U.useCallback)(e=>{let t=_.current;if(!(!t||t.pointerId!==e.pointerId)){_.current=null,d(!1);try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}}},[])}}function We({skills:e,components:t,traits:n,customImageUrl:r,className:i,isFullscreen:a,onToggleFullscreen:o,onSelectSkill:s}){let c=(0,U.useRef)(null),u=(0,U.useRef)(null),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)({width:240,height:120}),{nodes:y,edges:b}=(0,U.useMemo)(()=>we(Z,Te(e.map(e=>({id:e.id,label:e.name,icon:e.icon,emoji:e.emoji,category:e.category??`system`,description:e.description,kind:`skill`}))),90),[e]),x=(0,U.useMemo)(()=>{let e=new Map;for(let t of y)e.set(t.id,t);return e},[y]),S=(0,U.useMemo)(()=>{if(p==null)return null;let e=x.get(p);return e?ze(e)??null:null},[p,x]),C=(0,U.useCallback)(()=>{m(null)},[]),w=Ue(c,y,x,C),T=e.length;(0,U.useEffect)(()=>{let e=!1,t=t=>{e||f(t)};t(0);let n=[setTimeout(()=>t(1),100),setTimeout(()=>t(2),300),setTimeout(()=>t(3),500),setTimeout(()=>t(4),700)];return()=>{e=!0,n.forEach(clearTimeout)}},[T]);let E=(0,U.useCallback)(e=>{m(t=>t===e?null:e)},[]),D=(0,U.useCallback)(()=>{!S||S.kind!==`skill`||(C(),s?.(S.id))},[C,s,S]);(0,U.useEffect)(()=>{if(p==null)return;let e=e=>{e.key===`Escape`&&C()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,p]),(0,U.useLayoutEffect)(()=>{if(S==null)return;let e=u.current;if(!e)return;let t=e.getBoundingClientRect();g({width:t.width,height:t.height})},[S]);let O={x:w.viewSize.width/2,y:w.viewSize.height/2},k=O.x-Z.x*w.zoom+w.pan.x,A=O.y-Z.y*w.zoom+w.pan.y,j=p==null?void 0:x.get(p),M=0,P=0;if(S!=null&&j){let e=k+j.x*w.zoom,t=A+j.y*w.zoom,n=e,r=t-60,i=h.width/2,a=h.height/2,o=i+8,s=Math.max(o,w.viewSize.width-i-8),c=a+8,l=Math.max(c,w.viewSize.height-a-8);M=Math.min(Math.max(n,o),s),P=Math.min(Math.max(r,c),l)}let F=(0,U.useCallback)(e=>{C(),w.zoomToNode(e)},[C,w]);return(0,W.jsxs)(`div`,{ref:c,className:`relative select-none overflow-hidden rounded-xl ${i??``}`,style:{backgroundColor:`var(--surface-base)`,backgroundImage:`radial-gradient(circle, color-mix(in srgb, var(--content-tertiary) 20%, transparent) 1px, transparent 1px)`,backgroundSize:`24px 24px`,backgroundPosition:`12px 12px`,touchAction:`none`,cursor:w.isDragging?`grabbing`:`grab`,userSelect:`none`,WebkitUserSelect:`none`},onPointerDown:w.handlePointerDown,onPointerMove:w.handlePointerMove,onPointerUp:w.handlePointerUp,onPointerCancel:w.handlePointerUp,children:[(0,W.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 6%, transparent), transparent 60%)`}}),(0,W.jsxs)(`div`,{className:`absolute inset-0`,style:{transform:`translate(${k}px, ${A}px) scale(${w.zoom})`,transformOrigin:`0 0`,transition:w.isAnimating?`transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)`:`none`},children:[(0,W.jsx)(Me,{edges:b,nodeById:x,visible:d>=2}),y.map((e,i)=>(0,W.jsx)(He,{node:e,index:i,phase:d,components:t,traits:n,customImageUrl:r,isSelected:p===e.id||w.zoomedNodeId===e.id,onSingleClick:()=>E(e.id),onDoubleClick:()=>F(e.id)},e.id))]}),o&&(0,W.jsx)(`div`,{className:`absolute left-4 top-4`,"data-constellation-control":!0,children:(0,W.jsx)(l,{variant:`ghost`,iconOnly:a?(0,W.jsx)(v,{}):(0,W.jsx)(_,{}),onClick:o,"aria-label":a?`Exit fullscreen`:`Enter fullscreen`,tooltip:a?`Exit fullscreen`:`Enter fullscreen`})}),(0,W.jsx)(Ne,{visible:d>=4}),(0,W.jsx)(ae,{children:S==null?null:(0,W.jsx)(N.div,{ref:u,className:`pointer-events-auto absolute z-20`,"data-constellation-popover":!0,style:{left:M,top:P,transform:`translate(-50%, -50%)`},initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15,ease:`easeOut`},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,W.jsx)(Pe,{item:S,color:J(S.category).color,onViewDetails:s&&S.kind===`skill`?D:void 0})},`constellation-popover`)}),(0,W.jsxs)(`div`,{"data-constellation-control":!0,className:`absolute bottom-4 right-4 flex items-center gap-1`,children:[(0,W.jsx)(l,{variant:`ghost`,iconOnly:(0,W.jsx)(ie,{}),onClick:w.zoomIn,"aria-label":`Zoom in`,tooltip:`Zoom in`}),(0,W.jsx)(l,{variant:`ghost`,iconOnly:(0,W.jsx)(oe,{}),onClick:w.zoomOut,"aria-label":`Zoom out`,tooltip:`Zoom out`}),(0,W.jsx)(l,{variant:`ghost`,iconOnly:(0,W.jsx)(V,{}),onClick:w.fitAll,"aria-label":`Fit all`,tooltip:`Fit all`})]})]})}function Ge({assistantName:e,assistantPersonality:t,assistantRole:n,hatchedDate:r,components:i,traits:a,customImageUrl:o,onOpenThread:s,onOpenModal:c}){return(0,W.jsxs)(`div`,{className:`w-full overflow-hidden rounded-xl`,style:{backgroundColor:`var(--surface-lift)`},children:[(0,W.jsxs)(`div`,{className:`relative p-6 pb-0`,children:[(0,W.jsx)(`div`,{className:`pr-8 text-center`,children:(0,W.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e})}),(0,W.jsx)(l,{type:`button`,variant:`ghost`,iconOnly:(0,W.jsx)(y,{"aria-hidden":!0}),onClick:()=>s?.(`I would like to change your name`),disabled:!s,"aria-label":`Edit identity`,title:`Edit Name`,className:`absolute right-6 top-6`,tintColor:`var(--content-tertiary)`})]}),(0,W.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,W.jsx)(F,{components:i,traits:a,customImageUrl:o,size:200,interactive:!0})}),(0,W.jsx)(`div`,{className:`flex justify-center pb-6`,children:(0,W.jsx)(l,{type:`button`,variant:`outlined`,size:`regular`,onClick:c,className:`!rounded-full`,children:`Update Avatar`})}),(0,W.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Role`}),(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:n})]}),(0,W.jsx)(l,{type:`button`,variant:`ghost`,iconOnly:(0,W.jsx)(y,{"aria-hidden":!0}),onClick:()=>s?.(`I would like to change your role description`),disabled:!s,"aria-label":`Edit role`,title:`Edit Role`,tintColor:`var(--content-tertiary)`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Personality`}),(0,W.jsx)(`p`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},title:t||`Not set`,children:t||`Not set`})]}),(0,W.jsx)(l,{type:`button`,variant:`ghost`,iconOnly:(0,W.jsx)(y,{"aria-hidden":!0}),onClick:()=>s?.(`I would like to change your personality`),disabled:!s,"aria-label":`Edit personality`,title:`Edit Personality`,tintColor:`var(--content-tertiary)`})]}),(0,W.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Hatched`}),(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:r})]})]})}function Ke({assistantId:e,onOpenThread:n}){let r=a(),{components:i,traits:c,customImageUrl:l,isLoading:u,invalidate:p}=re(e),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)(null),[y,b]=(0,U.useState)(null),[x,E]=(0,U.useState)(!1),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(null),[j,M]=(0,U.useState)(null),[N,F]=(0,U.useState)(null);(0,U.useEffect)(()=>{let n=!1;return Promise.all([P(e),T(e).catch(()=>({ok:!1,status:0,error:{}}))]).then(([t,r])=>{n||(g(t),r.ok?v(r.data.created):v(null),b(e))}).catch(e=>{n||t(e,{context:`identity_tab_load`})}),()=>{n=!0}},[e]);let ee=y!==e||u,[te,ne]=(0,U.useState)(!1),I=o({...C({path:{assistant_id:e},query:{kind:`installed`}}),select:e=>e.skills,enabled:!!e}),L=(0,U.useMemo)(()=>I.data??[],[I.data]),R=(0,U.useCallback)(()=>{p()},[p]),ie=(0,U.useCallback)(()=>{E(!0)},[]),ae=(0,U.useCallback)(()=>{E(!1)},[]),oe=(0,U.useCallback)(()=>{n?.(`I'd like to create a custom AI-generated avatar.`)},[n]),z=(0,U.useCallback)(()=>{r.invalidateQueries({queryKey:w({path:{assistant_id:e}})})},[e,r]),B=s({mutationFn:t=>m(e,t),onMutate:e=>A(e),onSettled:()=>{A(null),z()}}),V=s({...S(),onMutate:e=>M(e.path.id),onSettled:()=>{M(null),z()}}),H=(0,U.useCallback)(e=>{B.mutate(e.slug??e.id)},[B]),se=(0,U.useCallback)(e=>{F(e)},[]),G=(0,U.useCallback)(()=>{N&&(V.mutate({path:{assistant_id:e,id:N.id}}),F(null))},[e,N,V]),K=(0,U.useMemo)(()=>D?L.find(e=>e.id===D)??null:null,[L,D]),q=(0,W.jsx)(d,{open:N!==null,title:`Remove skill`,message:N?`Remove "${N.name}" from this assistant?`:``,confirmLabel:`Remove`,destructive:!0,onConfirm:G,onCancel:()=>F(null)});if(K)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(f,{assistantId:e,skill:K,onBack:()=>O(null),onInstall:()=>H(K),onRemove:()=>se(K),isInstalling:k===(K.slug??K.id),isRemoving:j===K.id}),q]});if(ee)return(0,W.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,W.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})});let le=h?.name||`Assistant`,ue=h?.personality||``,J=h?.role||`Not set`,Y=_?new Date(_).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):`Unknown`;return(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-6 lg:flex-row lg:items-stretch`,children:[(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-md lg:mx-0 lg:h-full lg:shrink-0 lg:overflow-y-auto ${te?`hidden`:`flex`}`,children:(0,W.jsx)(Ge,{assistantName:le,assistantPersonality:ue,assistantRole:J,hatchedDate:Y,components:i,traits:c,customImageUrl:l,onOpenThread:n,onOpenModal:ie})}),(0,W.jsx)(`div`,{className:`min-h-[480px] min-w-0 flex-1 lg:min-h-0`,children:(0,W.jsx)(We,{skills:L,components:i,traits:c,customImageUrl:l,className:`h-full w-full`,isFullscreen:te,onToggleFullscreen:()=>ne(e=>!e),onSelectSkill:O})}),(0,W.jsx)(ce,{open:x,onClose:ae,assistantId:e,components:i,traits:c,customImageUrl:l,onSaveCharacter:R,onUploadImage:R,onGenerateWithAI:n?oe:void 0}),q]})}function qe({onOpenThread:e}){return(0,W.jsx)(Ke,{assistantId:H(),onOpenThread:e})}function Je(){let e=i();return(0,W.jsx)(qe,{onOpenThread:t=>{D.getState().setMainView(`chat`);let n=R();O.getState().setActiveConversationId(n),e(`${E.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},H())}export{Je as IdentityPageRoute};
1
+ import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dze4ISSQ.js";import{t as n}from"./react-DJZBPgpf.js";import{T as r}from"./portal-container-DIXEBWUe.js";import{d as i}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as a}from"./QueryClientProvider-DKhXIxGb.js";import{t as o}from"./useQuery-B45lW1Kk.js";import{t as s}from"./useMutation-Lj4VunQV.js";import{t as c}from"./jsx-runtime-CVSDxk6A.js";import{t as l}from"./button-C68o-wep.js";import{t as u}from"./card-CL5iEMJO.js";import"./src-Bnn6algv.js";import{t as d}from"./confirm-dialog-94QFOD8a.js";import{n as f,s as p,t as m}from"./install-BlwjvAKk.js";import{t as h}from"./chevron-left-IaM5LZKa.js";import{t as g}from"./chevron-right-C1TiR5qP.js";import{n as _,t as v}from"./minimize-2-BsiUUDFc.js";import{t as y}from"./pencil-72cxzUyZ.js";import{t as b}from"./save-DfZ7IoMI.js";import{t as x}from"./x-D1JFrRas.js";import{G as S,X as C,Y as w}from"./react-query.gen-B_oGDSP8.js";import{r as T}from"./api-DiLLlhgt.js";import{i as E}from"./routes-VcLWbBmh.js";import{t as D}from"./viewer-store-o5byTOZU.js";import{t as O}from"./conversation-store-CvL-Qvj6.js";import{a as k,o as A,r as j}from"./avatar-api-CLSAZR4o.js";import{t as M}from"./misc-Dml34IDG.js";import{n as N}from"./use-reduced-motion-BWKBBkXa.js";import{Hn as P,K as F,Ma as ee,Oi as te,di as ne,fi as I,ga as L,gr as R,hr as re,li as ie,q as ae,ui as oe,wa as z,y as B,zi as V}from"./index-87hTkD_v.js";import{t as H}from"./use-active-assistant-id-B2Zd0B4I.js";var se=e(r(),1),U=e(n(),1),W=c();function G(e,t,n){return n===`forward`?(e+1)%t:(e-1+t)%t}function K({assistantId:e,initialTraits:t,onSave:n,onCancel:r}){let[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!0),[c,l]=(0,U.useState)(!1),u=(0,U.useRef)(null),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(0),[h,g]=(0,U.useState)(0);(0,U.useEffect)(()=>{if(u.current===e)return;let n=!1;return j(e).then(r=>{if(!n&&(u.current=e,a(r),s(!1),r&&t)){let e=r.bodyShapes.findIndex(e=>e.id===t.bodyShape),n=r.eyeStyles.findIndex(e=>e.id===t.eyeStyle),i=r.colors.findIndex(e=>e.id===t.color);e>=0&&f(e),n>=0&&m(n),i>=0&&g(i)}}),()=>{n=!0}},[e,t]);let _=(0,U.useCallback)(()=>{i&&(f(Math.floor(Math.random()*i.bodyShapes.length)),m(Math.floor(Math.random()*i.eyeStyles.length)),g(Math.floor(Math.random()*i.colors.length)))},[i]),v=(0,U.useCallback)(async()=>{if(!i)return;let t={bodyShape:i.bodyShapes[d].id,eyeStyle:i.eyeStyles[p].id,color:i.colors[h].id};l(!0);try{await k(e,t),n?.(t)}finally{l(!1)}},[i,d,p,h,e,n]);if(o)return(0,W.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,W.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-[var(--border-element)] border-t-[var(--content-tertiary)]`})});if(!i)return(0,W.jsx)(`div`,{className:`py-8 text-center text-body-medium-lighter text-[var(--content-quiet)]`,children:`Unable to load avatar components. Make sure your assistant is running.`});let y=i.bodyShapes[d],S=i.eyeStyles[p],C=i.colors[h];return(0,W.jsxs)(`div`,{className:`space-y-6`,children:[(0,W.jsx)(`div`,{className:`flex justify-center`,children:(0,W.jsx)(`div`,{className:`rounded-2xl bg-[var(--surface-sunken)] p-6`,children:(0,W.jsx)(B,{components:i,bodyShapeId:y.id,eyeStyleId:S.id,colorId:C.id,size:160})})}),(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(q,{label:`Body`,value:y.id,onPrev:()=>f(G(d,i.bodyShapes.length,`backward`)),onNext:()=>f(G(d,i.bodyShapes.length,`forward`))}),(0,W.jsx)(q,{label:`Eyes`,value:S.id,onPrev:()=>m(G(p,i.eyeStyles.length,`backward`)),onNext:()=>m(G(p,i.eyeStyles.length,`forward`))}),(0,W.jsx)(q,{label:`Color`,value:C.id,colorHex:C.hex,onPrev:()=>g(G(h,i.colors.length,`backward`)),onNext:()=>g(G(h,i.colors.length,`forward`))})]}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:_,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:[(0,W.jsx)(ee,{className:`h-4 w-4`}),`Randomize`]}),(0,W.jsxs)(`button`,{type:`button`,onClick:v,disabled:c,className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--system-positive-strong)] bg-[var(--system-positive-weak)] px-3 py-2 text-body-medium-default text-[var(--system-positive-strong)] transition-colors hover:opacity-90 disabled:opacity-50`,children:[(0,W.jsx)(b,{className:`h-4 w-4`}),c?`Saving...`:`Save Avatar`]}),r&&(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`flex cursor-pointer items-center justify-center rounded-lg border border-[var(--border-element)] bg-[var(--surface-lift)] px-3 py-2 text-body-medium-default text-[var(--content-strong)] transition-colors hover:bg-[var(--surface-hover)]`,children:(0,W.jsx)(x,{className:`h-4 w-4`})})]})]})}function q({label:e,value:t,colorHex:n,onPrev:r,onNext:i}){return(0,W.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-[var(--border-subtle)] bg-[var(--surface-lift)] px-3 py-2`,children:[(0,W.jsx)(`span`,{className:`text-body-small-default uppercase tracking-wider text-[var(--content-quiet)]`,children:e}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,W.jsx)(h,{className:`h-4 w-4`})}),(0,W.jsxs)(`div`,{className:`flex min-w-[80px] items-center justify-center gap-2`,children:[n&&(0,W.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-[var(--border-element)]`,style:{backgroundColor:n}}),(0,W.jsx)(`span`,{className:`text-body-medium-default capitalize text-[var(--content-strong)]`,children:t})]}),(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md text-[var(--content-quiet)] transition-colors hover:bg-[var(--surface-active)]`,children:(0,W.jsx)(g,{className:`h-4 w-4`})})]})]})}function ce({open:e,onClose:t,assistantId:n,components:r,traits:i,customImageUrl:a,onSaveCharacter:o,onUploadImage:s,onGenerateWithAI:c}){let l=(0,U.useId)(),u=(0,U.useRef)(null),d=(0,U.useRef)(null),f=(0,U.useRef)(null),[p,m]=(0,U.useState)(`actions`),[_,v]=(0,U.useState)(!1);(0,U.useEffect)(()=>{e&&d.current?.focus()},[e]),(0,U.useEffect)(()=>{if(e){let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}},[e]);let y=(0,U.useCallback)(()=>{m(`actions`),t()},[t]),b=(0,U.useCallback)(e=>{e.key===`Escape`&&(p===`character-builder`?m(`actions`):y())},[y,p]),S=(0,U.useCallback)(e=>{e.target===u.current&&y()},[y]),C=(0,U.useCallback)(()=>{m(`actions`)},[]),w=(0,U.useCallback)(()=>{m(`character-builder`)},[]),T=(0,U.useCallback)(async e=>{let t=e.target.files?.[0];if(!t)return;v(!0);let r=await A(n,t);v(!1),r&&(s(),y()),f.current&&(f.current.value=``)},[n,s,y]),E=(0,U.useCallback)(()=>{f.current?.click()},[]),D=(0,U.useCallback)(()=>{y(),c?.()},[y,c]),O=(0,U.useCallback)(e=>{o(e),y()},[o,y]);return e?(0,se.createPortal)((0,W.jsxs)(`div`,{ref:u,role:`dialog`,"aria-modal":`true`,"aria-labelledby":l,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50`,onKeyDown:b,onClick:S,children:[(0,W.jsxs)(`div`,{className:`mx-4 flex w-full max-w-md flex-col rounded-xl border shadow-xl`,style:{backgroundColor:`var(--surface-lift)`,borderColor:`var(--border-base)`,maxHeight:`85vh`},children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-b px-6 py-4`,style:{borderColor:`var(--border-base)`},children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`character-builder`&&(0,W.jsx)(`button`,{type:`button`,onClick:C,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Back`,children:(0,W.jsx)(h,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsx)(`h2`,{id:l,className:`text-title-small`,style:{color:`var(--content-default)`},children:p===`character-builder`?`Build a Character`:`Update Avatar`})]}),(0,W.jsx)(`button`,{ref:d,type:`button`,onClick:y,className:`flex h-8 w-8 items-center justify-center rounded-lg transition-colors hover:bg-black/5 dark:hover:bg-white/10`,"aria-label":`Close`,children:(0,W.jsx)(x,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})})]}),(0,W.jsx)(`div`,{className:`overflow-y-auto p-6`,children:p===`actions`?(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,W.jsx)(F,{components:r,traits:i,customImageUrl:a,size:120,interactive:!0}),(0,W.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:w,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,W.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,W.jsx)(I,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Build a Character`}),(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Build your own character`})]}),(0,W.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:E,disabled:_,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,W.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,W.jsx)(L,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:_?`Uploading...`:`Upload Image`}),(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Choose an image from your computer`})]}),(0,W.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]}),c&&(0,W.jsxs)(`button`,{type:`button`,onClick:D,className:`flex w-full cursor-pointer items-center gap-3 rounded-lg border px-4 py-3 transition-colors hover:opacity-80`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,W.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg`,style:{backgroundColor:`color-mix(in oklab, var(--content-tertiary) 16%, transparent)`},children:(0,W.jsx)(te,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,W.jsxs)(`div`,{className:`flex-1 text-left`,children:[(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:`Generate with AI`}),(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Create an avatar through chat`})]}),(0,W.jsx)(g,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})]})]})]}):(0,W.jsx)(K,{assistantId:n,initialTraits:i,onSave:O,onCancel:C})})]}),(0,W.jsx)(`input`,{ref:f,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif`,className:`hidden`,onChange:T})]}),document.body):null}var le={displayName:`Other`,color:`#888`,emoji:`?`},ue={email:{displayName:`Email`,color:`#A665C9`,emoji:`📧`},calendar:{displayName:`Calendar`,color:`#0E9B8B`,emoji:`📅`},messaging:{displayName:`Messaging`,color:`#6B8AE0`,emoji:`💬`},browsing:{displayName:`Browsing`,color:`#E9642F`,emoji:`🌐`},productivity:{displayName:`Productivity`,color:`#0E9B8B`,emoji:`📋`},development:{displayName:`Development`,color:`#EF4400`,emoji:`🔨`},voice:{displayName:`Voice`,color:`#DB4B77`,emoji:`🎤`},commerce:{displayName:`Commerce`,color:`#E9C91A`,emoji:`🛒`},content:{displayName:`Content`,color:`#DB4B77`,emoji:`🎨`},health:{displayName:`Health`,color:`#4C9B50`,emoji:`❤️`},system:{displayName:`System`,color:`#8D99A5`,emoji:`⚙️`},integrations:{displayName:`Integrations`,color:`#8D99A5`,emoji:`🔗`}};function J(e){return ue[e]??le}var Y=[`email`,`calendar`,`messaging`,`browsing`,`productivity`,`development`,`voice`,`commerce`,`content`,`health`,`system`,`integrations`],de={email:[{label:`Sending`,emoji:`📨`,skillIds:new Set([`agentmail`,`email-setup`])},{label:`Reading`,emoji:`📬`,skillIds:new Set([`email-channel`,`gmail`])}],messaging:[{label:`Chat`,emoji:`💬`,skillIds:new Set([`messaging`,`slack`,`telegram`])},{label:`Notifications`,emoji:`🔔`,skillIds:new Set([`notifications`])},{label:`People`,emoji:`👥`,skillIds:new Set([`contacts`,`followups`])}],development:[{label:`Coding`,emoji:`💻`,skillIds:new Set([`typescript-eval`,`frontend-design`])},{label:`Dev Tools`,emoji:`🔧`,skillIds:new Set([`api-mapping`,`cli-discover`,`subagent`,`app-builder`])}],browsing:[{label:`Control`,emoji:`🎮`,skillIds:new Set([`computer-use`,`macos-automation`,`browser`])},{label:`Triggers`,emoji:`⏰`,skillIds:new Set([`watcher`,`time-based-actions`])}],commerce:[{label:`Shopping`,emoji:`🛒`,skillIds:new Set([`amazon`,`doordash`,`restaurant-reservation`])}],system:[{label:`Core`,emoji:`🧠`,skillIds:new Set([`knowledge-graph`,`skills-catalog`,`self-upgrade`])},{label:`Daily`,emoji:`☀️`,skillIds:new Set([`start-the-day`,`weather`])}]},fe=14,pe=10,me=6;function he(e){switch(e.kind.type){case`center`:return{shape:`circle`,size:90,cornerRadius:0};case`category`:return{shape:`roundedRect`,size:80,cornerRadius:fe};case`subCategory`:return{shape:`roundedRect`,size:56,cornerRadius:pe};case`skill`:return{shape:`diamond`,size:64,cornerRadius:me}}}function ge(e,t,n,r){let i=Math.min(Math.max(0,t),e),a=Math.abs(n),o=Math.abs(r);if(a<1e-6&&o<1e-6)return e;let s=e/Math.max(a,o),c=s*n,l=s*r;if(!(Math.abs(c)>e-i&&Math.abs(l)>e-i))return s;let u=Math.sign(c)*(e-i),d=Math.sign(l)*(e-i),f=n*u+r*d,p=u*u+d*d-i*i,m=f*f-p;return m<0?s:f+Math.sqrt(m)}function _e(e,t,n){switch(e.shape){case`circle`:return e.size/2;case`roundedRect`:return ge(e.size/2,e.cornerRadius,t,n);case`diamond`:{let r=(t+n)*Math.SQRT1_2,i=(-t+n)*Math.SQRT1_2;return ge(e.size/2,e.cornerRadius,r,i)}}}function ve(e,t){let n=t.x-e.x,r=t.y-e.y,i=Math.sqrt(n*n+r*r);if(i<1e-6)return{x1:e.x,y1:e.y,x2:t.x,y2:t.y};let a=n/i,o=r/i,s=Math.max(0,_e(he(e),a,o)-3),c=Math.max(0,_e(he(t),-a,-o)-3);if(s+c>=i){let n=(e.x+t.x)/2,r=(e.y+t.y)/2;return{x1:n,y1:r,x2:n,y2:r}}return{x1:e.x+a*s,y1:e.y+o*s,x2:t.x-a*c,y2:t.y-o*c}}var ye=10,be=200,xe=160,X=160;function Se(e,t,n,r){let i={x:e.x,y:e.y};for(let e=0;e<30;e++){let e=0,a=0,o=0;for(let s of n){let n=i.x-s.x,c=i.y-s.y,l=Math.sqrt(n*n+c*c),u=t+s.radius+r-l;u>e&&(e=u,l<.1?(a=u+1,o=0):(a=n/l*(u+1),o=c/l*(u+1)))}if(e<=0)break;i={x:i.x+a,y:i.y+o}}return i}function Ce(e,t,n,r,i,a,o,s,c,l,u,d){if(e.length===0)return;let f=a+o,p=Math.cos(r),m=Math.sin(r),h=-m,g=p,_=f*.88,v=J(c).color;e.forEach((r,c)=>{let y=Math.floor(c/3),b=c%3,x=Math.min(3,e.length-y*3),S=(b-(x-1)/2)*f,C=y%2==1&&x<3?f*.5:0,w=i+y*_,T=Se({x:n.x+w*p+(S+C)*h,y:n.y+w*m+(S+C)*g},a/2,u,o);u.push({id:r.id,kind:{type:`skill`,item:r},parentId:t,depth:s,x:T.x,y:T.y,radius:a/2}),d.push({id:`edge-${l}-skill-${c}`,fromId:t,toId:r.id,color:v})})}function we(e,t,n=90){let r=[],i=[],a=ye;if(r.push({id:`__center__`,kind:{type:`center`},parentId:null,depth:0,x:e.x,y:e.y,radius:n/2}),t.length===0)return{nodes:r,edges:i};let o=t.length,s=2*Math.PI/o;return t.forEach((t,n)=>{let o=-Math.PI/2+n*s,c=`cat-${t.category}`,l=J(t.category).color,u=Se({x:e.x+be*Math.cos(o),y:e.y+be*Math.sin(o)},80/2,r,a);r.push({id:c,kind:{type:`category`,category:t.category},parentId:`__center__`,depth:1,x:u.x,y:u.y,radius:80/2}),i.push({id:`edge-center-${t.category}`,fromId:`__center__`,toId:c,color:l});let d=de[t.category];if(d&&d.length>0){let e=[],n=new Set;for(let r of d){let i=t.items.filter(e=>r.skillIds.has(e.id));i.length>0&&(e.push({def:r,items:i}),i.forEach(e=>n.add(e.id)))}let f=t.items.filter(e=>!n.has(e.id));if(f.length>0){if(e.length===0){Ce(t.items,c,u,o,X,64,a,2,t.category,t.category,r,i);return}let n=e[e.length-1];n&&n.items.push(...f)}let p=e.length,m=s*.55,h=p<=1?0:Math.min(m,(p-1)*.35);e.forEach((e,n)=>{let s;s=p===1?o:o+(n/(p-1)-.5)*h*2;let d=`subcat-${t.category}-${n}`,f=Se({x:u.x+xe*Math.cos(s),y:u.y+xe*Math.sin(s)},56/2,r,a);r.push({id:d,kind:{type:`subCategory`,label:e.def.label,emoji:e.def.emoji,category:t.category},parentId:c,depth:2,x:f.x,y:f.y,radius:56/2}),i.push({id:`edge-${t.category}-sub-${n}`,fromId:c,toId:d,color:l}),Ce(e.items,d,f,s,X,64,a,3,t.category,d,r,i)})}else Ce(t.items,c,u,o,X,64,a,2,t.category,t.category,r,i)}),{nodes:r,edges:i}}function Te(e){let t=new Map;for(let n of e){let e=t.get(n.category);e?e.push(n):t.set(n.category,[n])}let n=[];for(let e of Y){let r=t.get(e);r&&r.length>0&&n.push({category:e,items:r})}for(let[e,r]of t)!Y.includes(e)&&r.length>0&&n.push({category:e,items:r});return n}function Ee(e,t,n,r,i=120,a=.4,o=3){if(e.length===0)return{zoom:1,panX:0,panY:0};let s=1/0,c=-1/0,l=1/0,u=-1/0;for(let t of e)s=Math.min(s,t.x),c=Math.max(c,t.x),l=Math.min(l,t.y),u=Math.max(u,t.y);let d=c-s+i*2,f=u-l+i*2;if(d<=0||f<=0||n<=0||r<=0)return{zoom:1,panX:0,panY:0};let p=Math.min(n/d,r/f),m=Math.max(a,Math.min(o,p)),h=(s+c)/2-t.x,g=(l+u)/2-t.y;return{zoom:m,panX:-h*m,panY:-g*m}}var De=.4,Oe=.25,Z={x:600,y:450},ke={type:`spring`,stiffness:180,damping:20},Ae={category:{size:80,cornerRadius:14,dashed:!1,fillPct:14,fillHoverPct:25,strokePct:55,strokeHoverPct:85,strokeWidth:2,strokeHoverWidth:2.5},subcategory:{size:56,cornerRadius:10,dashed:!0,fillPct:10,fillHoverPct:20,strokePct:40,strokeHoverPct:70,strokeWidth:1.5,strokeHoverWidth:2}},je={category:`rounded-[3px]`,subcategory:`rounded-[3px] border-dashed`,skill:`rotate-45`,workspace:`rounded-full`};function Me({edges:e,nodeById:t,visible:n}){return(0,W.jsx)(`svg`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 h-full w-full overflow-visible`,children:e.map(e=>{let r=t.get(e.fromId),i=t.get(e.toId);if(!r||!i)return null;let{x1:a,y1:o,x2:s,y2:c}=ve(r,i);return(0,W.jsx)(`line`,{x1:a,y1:o,x2:s,y2:c,stroke:e.color,strokeWidth:1.5,opacity:n?.45:0,style:{transition:`opacity 0.4s ease`}},e.id)})})}function Q({shape:e,label:t}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:(0,W.jsx)(`span`,{className:M(`inline-block h-3 w-3 border-[1.5px] border-[var(--content-tertiary)]`,je[e])})}),(0,W.jsx)(`span`,{children:t})]})}function Ne({visible:e}){return(0,W.jsx)(`div`,{"data-constellation-control":!0,className:`pointer-events-none absolute bottom-4 left-4 rounded-md px-3 py-2 text-body-small-default`,style:{backgroundColor:`color-mix(in srgb, var(--surface-overlay) 80%, transparent)`,border:`1px solid color-mix(in srgb, var(--content-tertiary) 20%, transparent)`,color:`var(--content-secondary)`,opacity:+!!e,transition:`opacity 0.35s ease`},children:(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Q,{shape:`category`,label:`Category`}),(0,W.jsx)(Q,{shape:`subcategory`,label:`Subcategory`}),(0,W.jsx)(Q,{shape:`skill`,label:`Skill`}),(0,W.jsx)(Q,{shape:`workspace`,label:`Workspace`})]})})}function Pe({item:e,color:t,onViewDetails:n}){let r=e.kind===`skill`?`Skill`:`Workspace`,i=e.kind===`skill`?ne:z;return(0,W.jsxs)(u,{padding:`sm`,elevated:!0,className:`w-[260px] shadow-[var(--shadow-popover)]`,role:`dialog`,"aria-label":`${e.label} details`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-body-small-emphasised text-[var(--content-default)]`,style:{backgroundColor:`${t}33`},children:[(0,W.jsx)(i,{className:`h-3 w-3`,style:{color:t}}),r]}),n?(0,W.jsx)(l,{type:`button`,variant:`ghost`,size:`compact`,onClick:n,children:`View Details`}):null]}),(0,W.jsxs)(`div`,{className:`mt-2 flex items-start gap-2`,children:[e.icon||e.emoji?(0,W.jsx)(p,{skill:e,className:`h-5 w-5 shrink-0 text-[20px] leading-none`}):null,(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`truncate text-body-medium-default text-[var(--content-default)]`,children:e.label}),e.description?(0,W.jsx)(`div`,{className:`mt-1 line-clamp-3 text-body-small-default text-[var(--content-secondary)]`,children:e.description}):null]})]})]})}function Fe({onSingleClick:e,onDoubleClick:t,latency:n=200}){let r=(0,U.useRef)(null);return(0,U.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),(0,U.useCallback)(i=>{r.current&&=(clearTimeout(r.current),null),e&&i.detail===1&&(r.current=setTimeout(()=>{r.current=null,e()},n)),t&&i.detail>=2&&i.detail%2==0&&t()},[e,t,n])}function Ie(e,t,n){let[r,i]=(0,U.useState)(!1),a=r||n===!0,o=Fe({onSingleClick:e,onDoubleClick:t});return{active:a,onClick:(0,U.useCallback)(n=>{!e&&!t||(n.stopPropagation(),o(n))},[e,t,o]),onPointerDown:(0,U.useCallback)(n=>{!e&&!t||n.stopPropagation()},[e,t]),onMouseEnter:(0,U.useCallback)(()=>i(!0),[]),onMouseLeave:(0,U.useCallback)(()=>i(!1),[])}}function $(e,t){return`color-mix(in oklab, ${e} ${Math.max(0,Math.min(100,t))}%, var(--surface-base))`}function Le(e,t){switch(e.kind.type){case`center`:return{visible:t>=1};case`category`:return{visible:t>=2};case`subCategory`:return{visible:t>=3};case`skill`:return{visible:t>=4}}}function Re(e,t){switch(e.kind.type){case`center`:return .05;case`category`:return t*.04;case`subCategory`:return t*.03;case`skill`:return .08+t*.02}}function ze(e){switch(e.kind.type){case`skill`:return e.kind.item;case`category`:{let t=J(e.kind.category);return{id:e.id,label:t.displayName,emoji:t.emoji,category:e.kind.category,kind:`workspaceFile`}}case`subCategory`:return{id:e.id,label:e.kind.label,emoji:e.kind.emoji,category:e.kind.category,kind:`workspaceFile`};default:return}}function Be({variant:e,x:t,y:n,color:r,tooltip:i,visibility:a,delay:o,children:s,isSelected:c,onSingleClick:l,onDoubleClick:u}){let d=Ae[e],{active:f,...p}=Ie(l,u,c),m={left:t-d.size/2,top:n-d.size/2,width:d.size,height:d.size,borderRadius:d.cornerRadius,backgroundColor:$(r,f?d.fillHoverPct:d.fillPct),borderStyle:d.dashed?`dashed`:`solid`,borderColor:$(r,f?d.strokeHoverPct:d.strokePct),borderWidth:f?d.strokeHoverWidth:d.strokeWidth,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`,cursor:l||u?`pointer`:`default`};return(0,W.jsx)(N.div,{className:`pointer-events-auto absolute flex flex-col items-center justify-center`,"data-constellation-node":!0,style:m,initial:{opacity:0,scale:.3},animate:{opacity:+!!a.visible,scale:a.visible?1:.3},transition:{...ke,delay:o},onMouseEnter:p.onMouseEnter,onMouseLeave:p.onMouseLeave,onPointerDown:p.onPointerDown,onClick:p.onClick,title:i,children:s})}function Ve({x:e,y:t,item:n,color:r,fallbackEmoji:i,visibility:a,delay:o,isSelected:s,onSingleClick:c,onDoubleClick:l}){let{active:u,...d}=Ie(c,l,s);return(0,W.jsxs)(N.div,{className:`pointer-events-auto absolute`,"data-constellation-node":!0,style:{left:e-64/2,top:t-64/2,width:64,height:64,cursor:c||l?`pointer`:`default`},initial:{opacity:0,scale:.4},animate:{opacity:+!!a.visible,scale:a.visible?1:.4},transition:{...ke,delay:o},onMouseEnter:d.onMouseEnter,onMouseLeave:d.onMouseLeave,onPointerDown:d.onPointerDown,onClick:d.onClick,title:n.label,children:[(0,W.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 rounded-md`,style:{transform:`rotate(45deg)`,backgroundColor:$(r,u?20:10),border:`${u?2:1.5}px solid ${$(r,u?70:40)}`,transition:`background-color 0.15s ease, border-color 0.15s ease, border-width 0.15s ease`}}),(0,W.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center`,children:[(0,W.jsx)(p,{skill:n,className:`h-4 w-4 text-[16px] leading-none`,fallback:i}),(0,W.jsx)(`span`,{className:`mt-0.5 max-w-[42px] truncate text-[9px] font-medium leading-tight text-[var(--content-default)]`,title:n.label,children:n.label})]})]})}function He({node:e,index:t,phase:n,components:r,traits:i,customImageUrl:a,isSelected:o,onSingleClick:s,onDoubleClick:c}){let l=Le(e,n),u=Re(e,t);if(e.kind.type===`center`)return(0,W.jsx)(N.div,{className:`pointer-events-none absolute`,style:{left:e.x-90/2,top:e.y-90/2,width:90,height:90},initial:{opacity:0,scale:.6},animate:{opacity:+!!l.visible,scale:l.visible?1:.6},transition:{...ke,delay:u},children:(0,W.jsx)(F,{components:r,traits:i,customImageUrl:a,size:90})});if(e.kind.type===`category`||e.kind.type===`subCategory`){let t=J(e.kind.category),n=e.kind.type===`category`?`category`:`subcategory`,r=e.kind.type===`category`?t.emoji:e.kind.emoji,i=e.kind.type===`category`?t.displayName:e.kind.label,a=n===`category`?`text-[20px]`:`text-[14px]`,d=n===`category`?`mt-1 max-w-[85%] truncate text-label-medium-default leading-tight text-[var(--content-default)]`:`mt-0.5 max-w-[85%] truncate text-[9.5px] font-medium leading-tight text-[var(--content-default)]`;return(0,W.jsxs)(Be,{variant:n,x:e.x,y:e.y,color:t.color,tooltip:i,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c,children:[(0,W.jsx)(`span`,{className:`${a} leading-none`,"aria-hidden":!0,children:r}),(0,W.jsx)(`span`,{className:d,title:i,children:i})]})}if(e.kind.type===`skill`){let t=e.kind.item,n=J(t.category);return(0,W.jsx)(Ve,{x:e.x,y:e.y,item:t,color:n.color,fallbackEmoji:n.emoji,visibility:l,delay:u,isSelected:o,onSingleClick:s,onDoubleClick:c})}return null}function Ue(e,t,n,r){let[i,a]=(0,U.useState)({width:0,height:0}),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(!1),g=(0,U.useRef)(null),_=(0,U.useRef)(null);(0,U.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e){let{width:e,height:n}=t.contentRect;a({width:e,height:n})}});n.observe(t);let r=t.getBoundingClientRect();return a({width:r.width,height:r.height}),()=>n.disconnect()},[e]);let v=(0,U.useMemo)(()=>Ee(t,Z,i.width,i.height),[t,i.width,i.height]),y=o??v.zoom,b=c??{x:v.panX,y:v.panY},x=(0,U.useCallback)(()=>{h(!0),g.current!=null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{h(!1),g.current=null},500)},[]);(0,U.useEffect)(()=>()=>{g.current!=null&&window.clearTimeout(g.current)},[]);let S=(0,U.useCallback)(()=>{s(null),l(null),p(null),x()},[x]),C=(0,U.useCallback)((e,t)=>{let n=Math.max(De,Math.min(3,e));if(n===y)return;let r=n/y;l({x:b.x*r,y:b.y*r}),s(n),p(null),t?.animate&&x()},[b.x,b.y,x,y]),w=(0,U.useCallback)(()=>{C(y+Oe,{animate:!0})},[C,y]),T=(0,U.useCallback)(()=>{C(y-Oe,{animate:!0})},[C,y]),E=(0,U.useCallback)(e=>{if(f===e){S();return}let t=n.get(e);if(!t)return;let r=1.8;s(r),l({x:(Z.x-t.x)*r,y:(Z.y-t.y)*r}),p(e),x()},[S,n,x,f]);return(0,U.useEffect)(()=>{let t=e.current;if(!t)return;let n=e=>{e.preventDefault();let t=e.ctrlKey||e.metaKey?150:400;C(y*(1+-e.deltaY/t))};return t.addEventListener(`wheel`,n,{passive:!1}),()=>t.removeEventListener(`wheel`,n)},[C,e,y]),{zoom:y,pan:b,isDragging:u,isAnimating:m,viewSize:i,zoomedNodeId:f,zoomIn:w,zoomOut:T,fitAll:S,zoomToNode:E,handlePointerDown:(0,U.useCallback)(e=>{if(e.button!==0)return;let t=e.target;t.closest(`[data-constellation-control]`)||(t.closest(`[data-constellation-node]`)||r?.(),_.current={startX:e.clientX,startY:e.clientY,panStartX:b.x,panStartY:b.y,pointerId:e.pointerId,moved:!1},d(!0),g.current!=null&&(window.clearTimeout(g.current),g.current=null),h(!1),e.currentTarget.setPointerCapture(e.pointerId))},[r,b.x,b.y]),handlePointerMove:(0,U.useCallback)(e=>{let t=_.current;if(!t||t.pointerId!==e.pointerId)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;!t.moved&&(Math.abs(n)>3||Math.abs(r)>3)&&(t.moved=!0,p(null)),l({x:t.panStartX+n,y:t.panStartY+r})},[]),handlePointerUp:(0,U.useCallback)(e=>{let t=_.current;if(!(!t||t.pointerId!==e.pointerId)){_.current=null,d(!1);try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}}},[])}}function We({skills:e,components:t,traits:n,customImageUrl:r,className:i,isFullscreen:a,onToggleFullscreen:o,onSelectSkill:s}){let c=(0,U.useRef)(null),u=(0,U.useRef)(null),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)({width:240,height:120}),{nodes:y,edges:b}=(0,U.useMemo)(()=>we(Z,Te(e.map(e=>({id:e.id,label:e.name,icon:e.icon,emoji:e.emoji,category:e.category??`system`,description:e.description,kind:`skill`}))),90),[e]),x=(0,U.useMemo)(()=>{let e=new Map;for(let t of y)e.set(t.id,t);return e},[y]),S=(0,U.useMemo)(()=>{if(p==null)return null;let e=x.get(p);return e?ze(e)??null:null},[p,x]),C=(0,U.useCallback)(()=>{m(null)},[]),w=Ue(c,y,x,C),T=e.length;(0,U.useEffect)(()=>{let e=!1,t=t=>{e||f(t)};t(0);let n=[setTimeout(()=>t(1),100),setTimeout(()=>t(2),300),setTimeout(()=>t(3),500),setTimeout(()=>t(4),700)];return()=>{e=!0,n.forEach(clearTimeout)}},[T]);let E=(0,U.useCallback)(e=>{m(t=>t===e?null:e)},[]),D=(0,U.useCallback)(()=>{!S||S.kind!==`skill`||(C(),s?.(S.id))},[C,s,S]);(0,U.useEffect)(()=>{if(p==null)return;let e=e=>{e.key===`Escape`&&C()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,p]),(0,U.useLayoutEffect)(()=>{if(S==null)return;let e=u.current;if(!e)return;let t=e.getBoundingClientRect();g({width:t.width,height:t.height})},[S]);let O={x:w.viewSize.width/2,y:w.viewSize.height/2},k=O.x-Z.x*w.zoom+w.pan.x,A=O.y-Z.y*w.zoom+w.pan.y,j=p==null?void 0:x.get(p),M=0,P=0;if(S!=null&&j){let e=k+j.x*w.zoom,t=A+j.y*w.zoom,n=e,r=t-60,i=h.width/2,a=h.height/2,o=i+8,s=Math.max(o,w.viewSize.width-i-8),c=a+8,l=Math.max(c,w.viewSize.height-a-8);M=Math.min(Math.max(n,o),s),P=Math.min(Math.max(r,c),l)}let F=(0,U.useCallback)(e=>{C(),w.zoomToNode(e)},[C,w]);return(0,W.jsxs)(`div`,{ref:c,className:`relative select-none overflow-hidden rounded-xl ${i??``}`,style:{backgroundColor:`var(--surface-base)`,backgroundImage:`radial-gradient(circle, color-mix(in srgb, var(--content-tertiary) 20%, transparent) 1px, transparent 1px)`,backgroundSize:`24px 24px`,backgroundPosition:`12px 12px`,touchAction:`none`,cursor:w.isDragging?`grabbing`:`grab`,userSelect:`none`,WebkitUserSelect:`none`},onPointerDown:w.handlePointerDown,onPointerMove:w.handlePointerMove,onPointerUp:w.handlePointerUp,onPointerCancel:w.handlePointerUp,children:[(0,W.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at center, color-mix(in srgb, var(--content-tertiary) 6%, transparent), transparent 60%)`}}),(0,W.jsxs)(`div`,{className:`absolute inset-0`,style:{transform:`translate(${k}px, ${A}px) scale(${w.zoom})`,transformOrigin:`0 0`,transition:w.isAnimating?`transform 0.4s cubic-bezier(0.22, 1, 0.36, 1)`:`none`},children:[(0,W.jsx)(Me,{edges:b,nodeById:x,visible:d>=2}),y.map((e,i)=>(0,W.jsx)(He,{node:e,index:i,phase:d,components:t,traits:n,customImageUrl:r,isSelected:p===e.id||w.zoomedNodeId===e.id,onSingleClick:()=>E(e.id),onDoubleClick:()=>F(e.id)},e.id))]}),o&&(0,W.jsx)(`div`,{className:`absolute left-4 top-4`,"data-constellation-control":!0,children:(0,W.jsx)(l,{variant:`ghost`,iconOnly:a?(0,W.jsx)(v,{}):(0,W.jsx)(_,{}),onClick:o,"aria-label":a?`Exit fullscreen`:`Enter fullscreen`,tooltip:a?`Exit fullscreen`:`Enter fullscreen`})}),(0,W.jsx)(Ne,{visible:d>=4}),(0,W.jsx)(ae,{children:S==null?null:(0,W.jsx)(N.div,{ref:u,className:`pointer-events-auto absolute z-20`,"data-constellation-popover":!0,style:{left:M,top:P,transform:`translate(-50%, -50%)`},initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15,ease:`easeOut`},onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,W.jsx)(Pe,{item:S,color:J(S.category).color,onViewDetails:s&&S.kind===`skill`?D:void 0})},`constellation-popover`)}),(0,W.jsxs)(`div`,{"data-constellation-control":!0,className:`absolute bottom-4 right-4 flex items-center gap-1`,children:[(0,W.jsx)(l,{variant:`ghost`,iconOnly:(0,W.jsx)(ie,{}),onClick:w.zoomIn,"aria-label":`Zoom in`,tooltip:`Zoom in`}),(0,W.jsx)(l,{variant:`ghost`,iconOnly:(0,W.jsx)(oe,{}),onClick:w.zoomOut,"aria-label":`Zoom out`,tooltip:`Zoom out`}),(0,W.jsx)(l,{variant:`ghost`,iconOnly:(0,W.jsx)(V,{}),onClick:w.fitAll,"aria-label":`Fit all`,tooltip:`Fit all`})]})]})}function Ge({assistantName:e,assistantPersonality:t,assistantRole:n,hatchedDate:r,components:i,traits:a,customImageUrl:o,onOpenThread:s,onOpenModal:c}){return(0,W.jsxs)(`div`,{className:`w-full overflow-hidden rounded-xl`,style:{backgroundColor:`var(--surface-lift)`},children:[(0,W.jsxs)(`div`,{className:`relative p-6 pb-0`,children:[(0,W.jsx)(`div`,{className:`pr-8 text-center`,children:(0,W.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:e})}),(0,W.jsx)(l,{type:`button`,variant:`ghost`,iconOnly:(0,W.jsx)(y,{"aria-hidden":!0}),onClick:()=>s?.(`I would like to change your name`),disabled:!s,"aria-label":`Edit identity`,title:`Edit Name`,className:`absolute right-6 top-6`,tintColor:`var(--content-tertiary)`})]}),(0,W.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,W.jsx)(F,{components:i,traits:a,customImageUrl:o,size:200,interactive:!0})}),(0,W.jsx)(`div`,{className:`flex justify-center pb-6`,children:(0,W.jsx)(l,{type:`button`,variant:`outlined`,size:`regular`,onClick:c,className:`!rounded-full`,children:`Update Avatar`})}),(0,W.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Role`}),(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:n})]}),(0,W.jsx)(l,{type:`button`,variant:`ghost`,iconOnly:(0,W.jsx)(y,{"aria-hidden":!0}),onClick:()=>s?.(`I would like to change your role description`),disabled:!s,"aria-label":`Edit role`,title:`Edit Role`,tintColor:`var(--content-tertiary)`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-b px-4 py-3`,style:{borderColor:`var(--border-base)`},children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Personality`}),(0,W.jsx)(`p`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},title:t||`Not set`,children:t||`Not set`})]}),(0,W.jsx)(l,{type:`button`,variant:`ghost`,iconOnly:(0,W.jsx)(y,{"aria-hidden":!0}),onClick:()=>s?.(`I would like to change your personality`),disabled:!s,"aria-label":`Edit personality`,title:`Edit Personality`,tintColor:`var(--content-tertiary)`})]}),(0,W.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,W.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`Hatched`}),(0,W.jsx)(`p`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:r})]})]})}function Ke({assistantId:e,onOpenThread:n}){let r=a(),{components:i,traits:c,customImageUrl:l,isLoading:u,invalidate:p}=re(e),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)(null),[y,b]=(0,U.useState)(null),[x,E]=(0,U.useState)(!1),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(null),[j,M]=(0,U.useState)(null),[N,F]=(0,U.useState)(null);(0,U.useEffect)(()=>{let n=!1;return Promise.all([P(e),T(e).catch(()=>({ok:!1,status:0,error:{}}))]).then(([t,r])=>{n||(g(t),r.ok?v(r.data.created):v(null),b(e))}).catch(e=>{n||t(e,{context:`identity_tab_load`})}),()=>{n=!0}},[e]);let ee=y!==e||u,[te,ne]=(0,U.useState)(!1),I=o({...w({path:{assistant_id:e},query:{kind:`installed`}}),select:e=>e.skills,enabled:!!e}),L=(0,U.useMemo)(()=>I.data??[],[I.data]),R=(0,U.useCallback)(()=>{p()},[p]),ie=(0,U.useCallback)(()=>{E(!0)},[]),ae=(0,U.useCallback)(()=>{E(!1)},[]),oe=(0,U.useCallback)(()=>{n?.(`I'd like to create a custom AI-generated avatar.`)},[n]),z=(0,U.useCallback)(()=>{r.invalidateQueries({queryKey:C({path:{assistant_id:e}})})},[e,r]),B=s({mutationFn:t=>m(e,t),onMutate:e=>A(e),onSettled:()=>{A(null),z()}}),V=s({...S(),onMutate:e=>M(e.path.id),onSettled:()=>{M(null),z()}}),H=(0,U.useCallback)(e=>{B.mutate(e.slug??e.id)},[B]),se=(0,U.useCallback)(e=>{F(e)},[]),G=(0,U.useCallback)(()=>{N&&(V.mutate({path:{assistant_id:e,id:N.id}}),F(null))},[e,N,V]),K=(0,U.useMemo)(()=>D?L.find(e=>e.id===D)??null:null,[L,D]),q=(0,W.jsx)(d,{open:N!==null,title:`Remove skill`,message:N?`Remove "${N.name}" from this assistant?`:``,confirmLabel:`Remove`,destructive:!0,onConfirm:G,onCancel:()=>F(null)});if(K)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(f,{assistantId:e,skill:K,onBack:()=>O(null),onInstall:()=>H(K),onRemove:()=>se(K),isInstalling:k===(K.slug??K.id),isRemoving:j===K.id}),q]});if(ee)return(0,W.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,W.jsx)(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2`,style:{borderColor:`var(--border-base)`,borderTopColor:`var(--content-tertiary)`}})});let le=h?.name||`Assistant`,ue=h?.personality||``,J=h?.role||`Not set`,Y=_?new Date(_).toLocaleDateString(`en-GB`,{day:`numeric`,month:`short`,year:`numeric`}):`Unknown`;return(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-6 lg:flex-row lg:items-stretch`,children:[(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-md lg:mx-0 lg:h-full lg:shrink-0 lg:overflow-y-auto ${te?`hidden`:`flex`}`,children:(0,W.jsx)(Ge,{assistantName:le,assistantPersonality:ue,assistantRole:J,hatchedDate:Y,components:i,traits:c,customImageUrl:l,onOpenThread:n,onOpenModal:ie})}),(0,W.jsx)(`div`,{className:`min-h-[480px] min-w-0 flex-1 lg:min-h-0`,children:(0,W.jsx)(We,{skills:L,components:i,traits:c,customImageUrl:l,className:`h-full w-full`,isFullscreen:te,onToggleFullscreen:()=>ne(e=>!e),onSelectSkill:O})}),(0,W.jsx)(ce,{open:x,onClose:ae,assistantId:e,components:i,traits:c,customImageUrl:l,onSaveCharacter:R,onUploadImage:R,onGenerateWithAI:n?oe:void 0}),q]})}function qe({onOpenThread:e}){return(0,W.jsx)(Ke,{assistantId:H(),onOpenThread:e})}function Je(){let e=i();return(0,W.jsx)(qe,{onOpenThread:t=>{D.getState().setMainView(`chat`);let n=R();O.getState().setActiveConversationId(n),e(`${E.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},H())}export{Je as IdentityPageRoute};