limixbot 0.3.4 → 0.3.12
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/{ActivityPanel-BG18nJiz.js → ActivityPanel-CJM61CWQ.js} +1 -1
- package/dist/assets/{App-8heymKKb.js → App-DRnqqiJP.js} +125 -125
- package/dist/assets/{AppEventEditor-D5dGKlRO.js → AppEventEditor-1hupO_kL.js} +1 -1
- package/dist/assets/{BotSettingsDialog-Ct_Yktk8.js → BotSettingsDialog-B56-kmya.js} +4 -4
- package/dist/assets/{BrowserPanel-Cyws1YTJ.js → BrowserPanel-BXBygd1y.js} +1 -1
- package/dist/assets/{BrowserProfilesManager-BEUgS3Me.js → BrowserProfilesManager-CzzGhZGz.js} +1 -1
- package/dist/assets/CloudAddDialog-MMhMrVK3.js +1 -0
- package/dist/assets/{ComputerFilesPane-BGywdHPB.js → ComputerFilesPane-Hpxjnk2e.js} +1 -1
- package/dist/assets/ComputerPanel-CMce64RT.js +2 -0
- package/dist/assets/{DataPanel-CIvvbY5b.js → DataPanel-BQ7Ua1Oq.js} +1 -1
- package/dist/assets/{DesktopViewer-BNIgo9Nm.js → DesktopViewer-BRzNtGEm.js} +1 -1
- package/dist/assets/{FilesView-Cd5kwljm.js → FilesView-DQYXl0zm.js} +1 -1
- package/dist/assets/{GrokMoveDialog-B2Vgd-vB.js → GrokMoveDialog-Dk-pwczv.js} +1 -1
- package/dist/assets/{InspectorPanel-Bxm2bVHy.js → InspectorPanel-CvnM0TFW.js} +1 -1
- package/dist/assets/{KeyboardShortcutsModal-Dfcfy-EA.js → KeyboardShortcutsModal-BQ8aAw16.js} +1 -1
- package/dist/assets/{LiveDesktop-fbnBEFRL.js → LiveDesktop-Cr7uAFoQ.js} +1 -1
- package/dist/assets/LocalVmWorkspace-BJ-i68MR.js +1 -0
- package/dist/assets/MacLocalControl-DE8MVZkU.js +1 -0
- package/dist/assets/{MarkdownFilePreview--PNcCEvm.js → MarkdownFilePreview-B_6azXNT.js} +1 -1
- package/dist/assets/{MenuMotion-IQitGKH4.js → MenuMotion-BDYr4RxL.js} +1 -1
- package/dist/assets/{NewBotDialog-CZbVbamH.js → NewBotDialog-D9fUysLU.js} +1 -1
- package/dist/assets/PhoneAppDialog-DUv4Qx8n.js +1 -0
- package/dist/assets/{PlacesRail-v1XIqiBG.js → PlacesRail-yZdo57pP.js} +2 -2
- package/dist/assets/{PluginsPanel-Bj3Pn0Iw.js → PluginsPanel-DYuWdWZd.js} +1 -1
- package/dist/assets/{ProIntroduction-qFeFSzyk.js → ProIntroduction-DapZkP7I.js} +1 -1
- package/dist/assets/{RemoteAgentSettingsPanel-CcbUTgTg.js → RemoteAgentSettingsPanel-sNv3TbBd.js} +1 -1
- package/dist/assets/{RoomPanel-k0hQwspJ.js → RoomPanel-DrlyOJKZ.js} +1 -1
- package/dist/assets/{RoutinesPage-aANJQ--g.js → RoutinesPage-CIo30TVq.js} +2 -2
- package/dist/assets/SettingsModal-BpJhi2nc.js +11 -0
- package/dist/assets/{ShareTeamDialog-DeRaL6zM.js → ShareTeamDialog-CH1ts7Uj.js} +1 -1
- package/dist/assets/{SignedInSites-CfhTex9p.js → SignedInSites-CisTAQW0.js} +1 -1
- package/dist/assets/{TeamLibraryPanel-C7LZ7Onp.js → TeamLibraryPanel-DvnKye05.js} +1 -1
- package/dist/assets/TeamMapPage-JOiilgs0.js +1 -0
- package/dist/assets/TriggersPage-DQ3HQ6_i.js +1 -0
- package/dist/assets/{VisibilitySection-CCwpvTlJ.js → VisibilitySection-DXfPp0Ql.js} +6 -6
- package/dist/assets/{WebhookTrigger-wqj5vki5.js → WebhookTrigger-BYeOyOpX.js} +1 -1
- package/dist/assets/{WorksOnGrid-CenOXsZe.js → WorksOnGrid-8fCnUzpQ.js} +1 -1
- package/dist/assets/{abnfDiagram-YUKMZFIV-CBzJU2O6.js → abnfDiagram-YUKMZFIV-Boj-Bkbs.js} +1 -1
- package/dist/assets/{activity-bd7MWK8m.js → activity-MpAxS_kw.js} +1 -1
- package/dist/assets/{architectureDiagram-47P4ROYG-DVR1DP3v.js → architectureDiagram-47P4ROYG-Cl-ocqce.js} +1 -1
- package/dist/assets/{blockDiagram-E7TT5TSB-BYqUHhoh.js → blockDiagram-E7TT5TSB-0nSQiv6g.js} +1 -1
- package/dist/assets/{c4Diagram-CRA5TL53-BtQERHwr.js → c4Diagram-CRA5TL53-Cx9iymkb.js} +1 -1
- package/dist/assets/{calendar-days-YMHxUvlg.js → calendar-days-DXHDRm_4.js} +1 -1
- package/dist/assets/channel-BStWWrSt.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-Cwf_xeHP.js → chunk-2Q5K7J3B-0rIrumUG.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-Doo-zxI4.js → chunk-5VM5RSS4-w9e6iKvs.js} +1 -1
- package/dist/assets/{chunk-7TKQ45FW-CD2AgrRj.js → chunk-7TKQ45FW-c4KxVKkf.js} +1 -1
- package/dist/assets/{chunk-AW2ZBBNX-e5OuWeq_.js → chunk-AW2ZBBNX-DmaBcuOP.js} +1 -1
- package/dist/assets/{chunk-FVRAUYC3-C8jo43it.js → chunk-FVRAUYC3-BLzfqLHR.js} +2 -2
- package/dist/assets/{chunk-HTAEGDNF-DLsD4agj.js → chunk-HTAEGDNF-BN48XtBm.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-UZDUbeTy.js → chunk-JWPE2WC7-D2NACa6i.js} +1 -1
- package/dist/assets/{chunk-KQW6MTUR-DR9SuVX3.js → chunk-KQW6MTUR-CbAfnxxG.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-DwEl4815.js → chunk-XXDRQBXY-Bwg-DPP_.js} +1 -1
- package/dist/assets/{classDiagram-v2-K4WV4PDN-CQZho8e0.js → classDiagram-v2-K4WV4PDN-Dh3ohoZp.js} +1 -1
- package/dist/assets/{coins-DpzGN3sd.js → coins-Bv8-qll4.js} +1 -1
- package/dist/assets/{core-C_G-J8y-.js → core-DeJAGBXR.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-DUZ9OWzu.js → cose-bilkent-JH36ORCC-DCHadn0L.js} +1 -1
- package/dist/assets/{cynefin-EF2NZ3EQ-DVHnJdjN.js → cynefin-EF2NZ3EQ-ClpPPxUg.js} +1 -1
- package/dist/assets/{cynefinDiagram-3GCD6N5R-dYhbIkRt.js → cynefinDiagram-3GCD6N5R-DZ5l7nkL.js} +1 -1
- package/dist/assets/{dagre-W4DXFKR2-DqJNpw5w.js → dagre-W4DXFKR2-BagTvT62.js} +1 -1
- package/dist/assets/{diagram-2UJZ2QOL-DKNDqAnE.js → diagram-2UJZ2QOL-DuByootb.js} +1 -1
- package/dist/assets/{diagram-OVF4WLC6-DENMVM-d.js → diagram-OVF4WLC6-BQ8Cvr0D.js} +1 -1
- package/dist/assets/{diagram-PFPMY2P6-CrRFeR5V.js → diagram-PFPMY2P6-D_pklaf9.js} +1 -1
- package/dist/assets/{diagram-UMYRVEAY-B5w-desO.js → diagram-UMYRVEAY-1BuHq7tR.js} +1 -1
- package/dist/assets/{diagram-YEKJPTXX-C7AVX3MB.js → diagram-YEKJPTXX-CK0cPx8n.js} +1 -1
- package/dist/assets/{diagram-ZIFT7M5P-BgkTRwwr.js → diagram-ZIFT7M5P-DVzPho45.js} +1 -1
- package/dist/assets/{ebnfDiagram-VR2GEFS7-yY_2KNsK.js → ebnfDiagram-VR2GEFS7-D8UO_5sE.js} +1 -1
- package/dist/assets/{elk-IJKZMXRS-xWtfkoqT.js → elk-IJKZMXRS-BRigfR5V.js} +1 -1
- package/dist/assets/{erDiagram-O2IAPWRE-BMM4saPI.js → erDiagram-O2IAPWRE-CXHPobWj.js} +1 -1
- package/dist/assets/{file-up-Bl7ViNTL.js → file-up-CQezfdJk.js} +1 -1
- package/dist/assets/{flowDiagram-OXPTDLAJ-BCRe8i6T.js → flowDiagram-OXPTDLAJ-CqKD6jh8.js} +1 -1
- package/dist/assets/{ganttDiagram-R7TSEDQI-COBrcDi7.js → ganttDiagram-R7TSEDQI-C9FV3gsA.js} +1 -1
- package/dist/assets/{gitGraphDiagram-XJZIOB7I-Dc4RKydD.js → gitGraphDiagram-XJZIOB7I-CRu4dnr_.js} +1 -1
- package/dist/assets/{import-name-CKE76uoY.js → import-name-dEG0japD.js} +1 -1
- package/dist/assets/{index-jlMtdqfJ.js → index-B4HW_T-k.js} +1 -1
- package/dist/assets/{index-BBsdMDZV.js → index-COnd2OMZ.js} +2 -2
- package/dist/assets/{infoDiagram-5W2HQ5XZ-BV8RRI_4.js → infoDiagram-5W2HQ5XZ-CCRjb2CQ.js} +1 -1
- package/dist/assets/{ishikawaDiagram-K3B6WC7H-H-XILdGm.js → ishikawaDiagram-K3B6WC7H-TaNPsGZS.js} +1 -1
- package/dist/assets/{journeyDiagram-COXZFDF6-ChLduKEj.js → journeyDiagram-COXZFDF6-Dz7YIIc2.js} +1 -1
- package/dist/assets/{kanban-definition-P3RFRI5V-FSZ9F3JH.js → kanban-definition-P3RFRI5V-Cg69Fpp8.js} +1 -1
- package/dist/assets/{mcp-servers-DGQioE-C.js → mcp-servers-Ih6dI7Ga.js} +1 -1
- package/dist/assets/{mermaid.core-BRsJ02Pz.js → mermaid.core-DiG3LoLz.js} +4 -4
- package/dist/assets/{mindmap-definition-LZFPQGKD-TWHzZjNT.js → mindmap-definition-LZFPQGKD-nxP4f0fq.js} +1 -1
- package/dist/assets/{minimize-BYscOtPM.js → minimize-B_k_fmmo.js} +1 -1
- package/dist/assets/{monitor-DFEzCfQk.js → monitor-BfmnPU-I.js} +1 -1
- package/dist/assets/{new-bot-7IqfI7S4.js → new-bot-CQm0FPc5.js} +2 -2
- package/dist/assets/{org-library-BW4CqVd6.js → org-library-C2li0IRL.js} +1 -1
- package/dist/assets/{package-format-BOH5_nvi.js → package-format-B3whu9DW.js} +1 -1
- package/dist/assets/{pegDiagram-BGZESJAR-LQWOF7IE.js → pegDiagram-BGZESJAR-gPjpGcNH.js} +1 -1
- package/dist/assets/{pieDiagram-CAPJLFHJ-BRXp4qFw.js → pieDiagram-CAPJLFHJ-Cgh25Z4_.js} +1 -1
- package/dist/assets/{quadrantDiagram-GDMTTRAM-DyIdGBZo.js → quadrantDiagram-GDMTTRAM-DD9luyqA.js} +1 -1
- package/dist/assets/{rail-Du7tlPwj.js → rail-B1mj4zlo.js} +1 -1
- package/dist/assets/{railroadDiagram-SM67HX2B-BrL1MhW1.js → railroadDiagram-SM67HX2B-CS_TYko7.js} +1 -1
- package/dist/assets/{remote-desktop-panel-B9rqQRMc.js → remote-desktop-panel-DIllbP7i.js} +1 -1
- package/dist/assets/{requirementDiagram-X7JNWC4A-DTYjaC8j.js → requirementDiagram-X7JNWC4A-BePHia6E.js} +1 -1
- package/dist/assets/{sankeyDiagram-UM26HJRW-BR9dASO5.js → sankeyDiagram-UM26HJRW-24ExCXGS.js} +1 -1
- package/dist/assets/{sequenceDiagram-ZO4K6R2Y-BR1k8h2_.js → sequenceDiagram-ZO4K6R2Y-Dtmx27I5.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-u8zOvZVi.js → sizeCapture-INFHLROL-2LvmoT1T.js} +1 -1
- package/dist/assets/{stateDiagram-v2-TBUQTH76-mQ64BAFv.js → stateDiagram-v2-TBUQTH76-moL2SIo9.js} +1 -1
- package/dist/assets/{styles-BlayaJti.js → styles-6RbfQIY7.js} +3 -3
- package/dist/assets/{swimlanes-N4OXWK64-CmzC3Mu0.js → swimlanes-N4OXWK64-D95Pk8qh.js} +1 -1
- package/dist/assets/swimlanesDiagram-K3J5GTZL-DByi9G3i.js +8 -0
- package/dist/assets/{team-share-C3w1L3WL.js → team-share-0GXKeixY.js} +1 -1
- package/dist/assets/{timeline-definition-YOQAKGHF-9aPCRsK2.js → timeline-definition-YOQAKGHF-HM-J25k2.js} +1 -1
- package/dist/assets/{usecaseDiagram-VIAY4XPW--ngAouwr.js → usecaseDiagram-VIAY4XPW-C6q6bCzJ.js} +1 -1
- package/dist/assets/{vennDiagram-BLWOH2XV-C3zKxuAB.js → vennDiagram-BLWOH2XV-hf0dh2yT.js} +1 -1
- package/dist/assets/{vi-uLErku_e.js → vi-CVDyZGky.js} +3 -3
- package/dist/assets/{wardleyDiagram-YMQ3BMBF-CZWsQPSF.js → wardleyDiagram-YMQ3BMBF-CpT_eRn9.js} +1 -1
- package/dist/assets/{xychartDiagram-TAQBALBS-BTcsDP6v.js → xychartDiagram-TAQBALBS-D6g1V9DG.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/rail.html +4 -4
- package/dist-server/index.js +2456 -2424
- package/dist-server/package.json +1 -1
- package/dist-server/server/boat-create-idempotency.js +1 -1
- package/dist-server/server/boat-delete-journal.js +1 -1
- package/dist-server/server/boat.js +10 -3
- package/dist-server/server/bot-api-host.js +9 -5
- package/dist-server/server/index.js +2 -1
- package/dist-server/server/limix-instabox.js +382 -0
- package/dist-server/server/limix-owner-lane.js +51 -0
- package/dist-server/shared/first-reply-rescue.js +3 -3
- package/package.json +1 -1
- package/dist/assets/CloudAddDialog-UEPtzvka.js +0 -1
- package/dist/assets/ComputerPanel-DLV2INTM.js +0 -2
- package/dist/assets/LocalVmWorkspace-CBe48xft.js +0 -1
- package/dist/assets/MacLocalControl-CpVqwJts.js +0 -1
- package/dist/assets/PhoneAppDialog-B9oozUp0.js +0 -1
- package/dist/assets/SettingsModal-t10M3Ahi.js +0 -11
- package/dist/assets/TeamMapPage-BSvk8tOC.js +0 -1
- package/dist/assets/TriggersPage-BdePfInC.js +0 -1
- package/dist/assets/channel-D6e78p3W.js +0 -1
- package/dist/assets/index-BXLNny-w.js +0 -1
- package/dist/assets/swimlanesDiagram-K3J5GTZL-Coei7rJr.js +0 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{c as ze,j as e,t as n,a as R,r as x,X as Ne,i as U,b as Me,f as je,am as $e,aa as Ue,au as qe}from"./styles-BlayaJti.js";import{fA as Ye,fv as Ze,fw as _e,fy as Qe,fz as Xe,I as ea,T as Be,b8 as aa,fx as na,bx as ne,gu as H,u as G,B as Y,gr as ia,gm as ra,gI as ta,gJ as la,bf as sa,be as oa,bP as da,bX as ca,D as _,S as W,n as T,A as ma,b7 as he,gK as ua,gL as ya,gM as ha,gN as pa,dQ as xa,e3 as we,e4 as Le,gd as ba,bN as ga,dN as fa,dP as va,dO as Aa,dY as pe,dX as ka,ag as xe,F as Ca,gO as Sa,gP as Na,e7 as Ma,gQ as ja,gR as Ba,fW as wa,gS as La,gT as Da,cj as Ra,bO as De,bv as Ea,gU as Ta,gV as Ja,co as Ga,V as Ka,gt as Ha,gF as Fa}from"./App-8heymKKb.js";import{af as Pa,B as Re,L as Ee,ag as Oa,ad as Ia,N as Te,ah as be,a9 as Wa,a8 as Va,a7 as za,a6 as $a,a5 as ge,aa as Ua,ab as qa,ac as Ya,j as Za,r as _a,O as Qa,C as Xa,K as en,d as me,P as Je}from"./PlacesRail-v1XIqiBG.js";import{p as an}from"./org-library-BW4CqVd6.js";import{a as nn,b as rn,m as tn,c as ln}from"./mcp-servers-DGQioE-C.js";import{w as sn,p as on,a as dn,W as cn,C as mn}from"./WorksOnGrid-CenOXsZe.js";import{u as un}from"./ProIntroduction-qFeFSzyk.js";import{C as yn}from"./MenuMotion-IQitGKH4.js";const hn=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}]],pn=ze("square-slash",hn);function xn({bot:a,disabled:i,onPatch:t}){return e.jsxs("div",{className:"mt-3",children:[e.jsxs("div",{className:"mb-1.5 flex items-baseline justify-between gap-2 text-[12px] text-ink-secondary",children:[e.jsx("span",{children:n("botIdentity.faceColor")}),!a.mascotFaceColor&&e.jsx("span",{className:"text-ink-tertiary",children:n("botIdentity.faceColor.default")})]}),e.jsx(Ye,{attr:"data-avatar-face-color",label:n("botIdentity.faceColor"),value:a.mascotFaceColor,onChange:r=>t({mascotFaceColor:r}),options:Pa.map(r=>({value:r,label:n(`botIdentity.faceColor.${r}`),disabled:i}))})]})}function bn({bot:a,activeState:i,mascotMotion:t,onPatch:r}){const{fileRef:l,crop:s,uploading:d,generating:h,busy:u,error:c,upload:g,removeImage:y,generate:m}=Ze(a,r);return e.jsxs("div",{className:"overflow-hidden rounded-xl border border-hairline/40 bg-card",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-hairline/40 px-3 py-2.5",children:[e.jsx("span",{className:"rounded-lg bg-control px-3 py-1.5 text-[14px] font-medium text-ink",children:n("botIdentity.avatar")}),e.jsx("button",{disabled:u,onClick:()=>r(_e),className:"rounded-md px-2 py-1.5 text-[13px] text-ink-secondary hover:bg-control hover:text-ink disabled:opacity-50",children:n("botIdentity.resetMascot")})]}),e.jsxs("div",{className:"p-3",children:[e.jsx(Qe,{busy:u,onUpload:o=>{g(o)}}),s!=="mascot"&&a.avatarUrl?e.jsx(Xe,{bot:a,disabled:u,onPatch:r}):e.jsx("div",{className:"flex justify-center py-3",children:e.jsx(Re,{bot:a,state:i,size:112,motion:t?.kind??"none",motionKey:t?.nonce??0})}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[e.jsx("input",{ref:l,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",className:"sr-only",onChange:o=>{g(o.target.files?.[0])}}),e.jsxs("button",{type:"button",onClick:()=>l.current?.click(),disabled:u,className:"flex flex-1 items-center justify-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d?e.jsx(Ee,{size:14,className:"animate-spin"}):e.jsx(ea,{size:14}),n("botIdentity.uploadImage")]}),a.avatarUrl&&e.jsx("button",{type:"button",onClick:y,disabled:u,"aria-label":n("botIdentity.removeAvatar"),title:n("botIdentity.removeImage"),className:"flex size-10 items-center justify-center rounded-lg text-ink-secondary hover:bg-control hover:text-danger disabled:opacity-50",children:e.jsx(Be,{size:14})})]}),e.jsx("div",{className:"mt-1.5 text-[12px] text-ink-secondary",children:n("botIdentity.imageTypes")}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.shape")}),e.jsx("div",{className:"grid grid-cols-4 overflow-hidden rounded-lg border border-hairline/40",children:Oa.map((o,b)=>e.jsx("button",{type:"button",disabled:u,"aria-pressed":s===o,onClick:()=>r({avatarCrop:o}),className:R("py-1.5 text-[13px] disabled:opacity-50",b>0&&"border-l border-hairline/40",s===o?"bg-control text-ink":"text-ink-secondary hover:bg-control/60 hover:text-ink"),children:n(`botIdentity.crop.${o}`)},o))}),s==="mascot"&&e.jsxs(e.Fragment,{children:[e.jsx(xn,{bot:a,disabled:u,onPatch:r}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.expression")}),e.jsx("div",{className:"grid grid-cols-5 gap-2",children:Ia.map(o=>e.jsx("button",{type:"button",disabled:u,"aria-pressed":i===o,onClick:()=>r({mascotExpression:o}),className:R("flex h-[58px] items-center justify-center rounded-xl bg-inset transition-colors hover:bg-control disabled:opacity-50",i===o&&"ring-2 ring-accent-border"),title:be(o),"aria-label":n("mascot.useExpression",{expression:be(o)}),children:e.jsx(Te,{color:a.color,faceColor:a.mascotFaceColor,bodyId:a.mascotBody??void 0,state:o,size:42,animated:!1})},o))}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.color")}),e.jsx("div",{className:"flex flex-wrap gap-2.5",children:aa.map(o=>e.jsx("button",{type:"button",disabled:u,"aria-pressed":a.color===o,onClick:()=>r({color:o}),className:R("size-10 rounded-full border-2 border-transparent transition-transform hover:scale-110 disabled:opacity-50",a.color===o&&"ring-2 ring-accent-border ring-offset-2 ring-offset-card"),style:{background:za(o)},title:n(Va[o]),"aria-label":n("mascot.useColor",{color:Wa(o)})},o))}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.body")}),e.jsx("div",{className:"grid grid-cols-5 gap-1.5",children:$a.map(o=>e.jsx(fe,{id:o,name:ge(o),bot:a,busy:u,onPatch:r},o))}),Ua.map(o=>e.jsxs("div",{children:[e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:qa(o)}),e.jsx("div",{className:"grid grid-cols-5 gap-1.5","data-festival-bodies":o,children:Ya[o].bodies.map(b=>e.jsx(fe,{id:b,name:ge(b),bot:a,busy:u,onPatch:r},b))})]},o))]}),e.jsx(na,{botLabel:a.title||a.name,disabled:d,generating:h,onGenerate:m}),c&&e.jsx("div",{role:"alert",className:"mt-3 text-[12px] text-danger",children:c})]})]})}function fe({id:a,name:i,bot:t,busy:r,onPatch:l}){const s=(t.mascotBody??"cursor")===a;return e.jsx("button",{type:"button",disabled:r,"aria-pressed":s,"aria-label":n("mascot.useBody",{name:i}),onClick:()=>l({mascotBody:a}),className:R("flex items-center justify-center rounded-lg py-1.5 disabled:opacity-50",s?"bg-control text-ink":"text-ink-secondary hover:bg-control/60"),children:e.jsx(Te,{color:t.color,faceColor:t.mascotFaceColor,bodyId:a,size:34,animated:!1,trackPointer:!1})})}function gn({bot:a,onClose:i,inline:t=!1}){const r=x.useRef(null),l=x.useRef(i);l.current=i;const s=x.useCallback(()=>l.current(),[]);x.useEffect(()=>{const h=document.activeElement instanceof HTMLElement?document.activeElement:null;r.current?.focus();const u=c=>{if(c.key==="Escape"){c.preventDefault(),s();return}if(c.key!=="Tab")return;const g=[...r.current?.querySelectorAll('button:not([disabled]), [href], [tabindex]:not([tabindex="-1"])')??[]];if(g.length===0){c.preventDefault(),r.current?.focus();return}const y=g[0],m=g[g.length-1];c.shiftKey&&document.activeElement===y?(c.preventDefault(),m.focus()):!c.shiftKey&&document.activeElement===m&&(c.preventDefault(),y.focus())};return window.addEventListener("keydown",u),()=>{window.removeEventListener("keydown",u),h?.focus()}},[s]);const d=e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/55 p-4 backdrop-blur-[2px] sm:p-6",onMouseDown:h=>h.target===h.currentTarget&&s(),children:e.jsxs("div",{ref:r,role:"dialog","aria-modal":"true","aria-labelledby":"bot-instructions-title",tabIndex:-1,className:"animate-pop-in flex max-h-[min(760px,calc(100dvh-2rem))] w-full max-w-[760px] flex-col overflow-hidden rounded-2xl border border-hairline/50 bg-panel shadow-2xl shadow-black/50 outline-none",children:[e.jsxs("header",{className:"flex items-start justify-between gap-4 border-b border-hairline/40 px-6 pb-4 pt-6 sm:px-8 sm:pt-7",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(Re,{bot:a,state:Za(a.mascotExpression)??"idle",size:38,motion:"none",motionKey:0,animated:!1}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 text-accent-text",children:[e.jsx(ne,{size:15}),e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[0.08em]",children:n("botIdentity.dialog.title")})]}),e.jsx("h2",{id:"bot-instructions-title",className:"mt-0.5 truncate text-[20px] font-semibold tracking-[-0.01em] text-ink",children:a.name}),a.title&&e.jsx("p",{className:"mt-0.5 truncate text-[13px] text-ink-secondary",children:a.title})]})]}),e.jsx("button",{type:"button",onClick:s,"aria-label":n("botIdentity.dialog.close"),className:"flex size-9 shrink-0 items-center justify-center rounded-lg text-ink-secondary hover:bg-raised hover:text-ink",children:e.jsx(Ne,{size:19})})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5 sm:px-8 sm:py-6",children:a.description.trim()?e.jsx("div",{className:"whitespace-pre-wrap break-words rounded-xl border border-hairline/50 bg-inset px-4 py-4 text-[14px] leading-6 text-ink",children:a.description}):e.jsxs("div",{className:"rounded-xl border border-dashed border-hairline bg-inset px-5 py-12 text-center",children:[e.jsx(ne,{size:22,className:"mx-auto text-ink-tertiary"}),e.jsx("p",{className:"mt-3 text-[13px] font-medium text-ink",children:n("botIdentity.dialog.empty")}),e.jsx("p",{className:"mt-1 text-[12px] text-ink-secondary",children:n("botIdentity.dialog.emptyHelp")})]})}),e.jsxs("footer",{className:"flex items-center justify-between gap-4 border-t border-hairline/40 px-6 py-4 text-[12px] text-ink-secondary sm:px-8",children:[e.jsx("span",{children:n("botIdentity.dialog.contextHelp")}),e.jsx("button",{type:"button",onClick:s,className:"rounded-lg bg-control px-3.5 py-2 text-[13px] font-medium text-ink hover:bg-raised-hover",children:n("common.done")})]})]})});return t?d:_a.createPortal(d,document.body)}const O="w-full rounded-lg border border-hairline/40 bg-inset px-3 py-2.5 text-[15px] text-ink placeholder:text-ink-secondary focus:outline-none";function fn({label:a,children:i}){return x.createElement("label",{className:"block"},x.createElement("div",{className:"mb-1.5 text-[13px] text-ink-secondary"},a),i)}function vn({bot:a}){const{request:i,draft:t}=H(),[r,l]=x.useState([]),s=a.installedPackage?.source==="org";x.useEffect(()=>{if(!s||t)return;let h=!1;return i("/api/org-library").then(u=>{h||l(u.installs??[])}).catch(()=>{}),()=>{h=!0}},[a.id,s,t]);const d=an(a.installedPackage,r);return d?e.jsxs("div",{className:"rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:[e.jsx("div",{className:"truncate",children:d.line}),d.withdrawn&&e.jsx("div",{className:"mt-0.5 text-warning",children:d.withdrawn})]}):null}const oe=a=>(a??"").trim();function An(a,i){const t=oe(a.section);return i.some(r=>r.id!==a.id&&!!r.chiefOfStaff&&(oe(r.section)===t||Array.isArray(r.managedSections)&&r.managedSections.some(l=>typeof l=="string"&&oe(l)===t)))}function K({bot:a,kind:i}){const{draft:t}=H(),{state:r}=G();return t||!An(a,r.bots)?null:e.jsx("div",{className:"mt-1 text-[12px] leading-snug text-ink-secondary",children:n(i==="chief"?"botSettings.proposal.chief":"botSettings.proposal.owner")})}const kn=JSON.parse('["Aaren","Aarika","Abagael","Abagail","Abbe","Abbey","Abbi","Abbie","Abby","Abbye","Abigael","Abigail","Abigale","Abra","Ada","Adah","Adaline","Adan","Adara","Adda","Addi","Addia","Addie","Addy","Adel","Adela","Adelaida","Adelaide","Adele","Adelheid","Adelice","Adelina","Adelind","Adeline","Adella","Adelle","Adena","Adey","Adi","Adiana","Adina","Adora","Adore","Adoree","Adorne","Adrea","Adria","Adriaens","Adrian","Adriana","Adriane","Adrianna","Adrianne","Adriena","Adrienne","Aeriel","Aeriela","Aeriell","Afton","Ag","Agace","Agata","Agatha","Agathe","Aggi","Aggie","Aggy","Agna","Agnella","Agnes","Agnese","Agnesse","Agneta","Agnola","Agretha","Aida","Aidan","Aigneis","Aila","Aile","Ailee","Aileen","Ailene","Ailey","Aili","Ailina","Ailis","Ailsun","Ailyn","Aime","Aimee","Aimil","Aindrea","Ainslee","Ainsley","Ainslie","Ajay","Alaine","Alameda","Alana","Alanah","Alane","Alanna","Alayne","Alberta","Albertina","Albertine","Albina","Alecia","Aleda","Aleece","Aleen","Alejandra","Alejandrina","Alena","Alene","Alessandra","Aleta","Alethea","Alex","Alexa","Alexandra","Alexandrina","Alexi","Alexia","Alexina","Alexine","Alexis","Alfi","Alfie","Alfreda","Alfy","Ali","Alia","Alica","Alice","Alicea","Alicia","Alida","Alidia","Alie","Alika","Alikee","Alina","Aline","Alis","Alisa","Alisha","Alison","Alissa","Alisun","Alix","Aliza","Alla","Alleen","Allegra","Allene","Alli","Allianora","Allie","Allina","Allis","Allison","Allissa","Allix","Allsun","Allx","Ally","Allyce","Allyn","Allys","Allyson","Alma","Almeda","Almeria","Almeta","Almira","Almire","Aloise","Aloisia","Aloysia","Alta","Althea","Alvera","Alverta","Alvina","Alvinia","Alvira","Alyce","Alyda","Alys","Alysa","Alyse","Alysia","Alyson","Alyss","Alyssa","Amabel","Amabelle","Amalea","Amalee","Amaleta","Amalia","Amalie","Amalita","Amalle","Amanda","Amandi","Amandie","Amandy","Amara","Amargo","Amata","Amber","Amberly","Ambur","Ame","Amelia","Amelie","Amelina","Ameline","Amelita","Ami","Amie","Amii","Amil","Amitie","Amity","Ammamaria","Amy","Amye","Ana","Anabal","Anabel","Anabella","Anabelle","Analiese","Analise","Anallese","Anallise","Anastasia","Anastasie","Anastassia","Anatola","Andee","Andeee","Anderea","Andi","Andie","Andra","Andrea","Andreana","Andree","Andrei","Andria","Andriana","Andriette","Andromache","Andy","Anestassia","Anet","Anett","Anetta","Anette","Ange","Angel","Angela","Angele","Angelia","Angelica","Angelika","Angelina","Angeline","Angelique","Angelita","Angelle","Angie","Angil","Angy","Ania","Anica","Anissa","Anita","Anitra","Anjanette","Anjela","Ann","Ann-Marie","Anna","Anna-Diana","Anna-Diane","Anna-Maria","Annabal","Annabel","Annabela","Annabell","Annabella","Annabelle","Annadiana","Annadiane","Annalee","Annaliese","Annalise","Annamaria","Annamarie","Anne","Anne-Corinne","Anne-Marie","Annecorinne","Anneliese","Annelise","Annemarie","Annetta","Annette","Anni","Annice","Annie","Annis","Annissa","Annmaria","Annmarie","Annnora","Annora","Anny","Anselma","Ansley","Anstice","Anthe","Anthea","Anthia","Anthiathia","Antoinette","Antonella","Antonetta","Antonia","Antonie","Antonietta","Antonina","Anya","Appolonia","April","Aprilette","Ara","Arabel","Arabela","Arabele","Arabella","Arabelle","Arda","Ardath","Ardeen","Ardelia","Ardelis","Ardella","Ardelle","Arden","Ardene","Ardenia","Ardine","Ardis","Ardisj","Ardith","Ardra","Ardyce","Ardys","Ardyth","Aretha","Ariadne","Ariana","Aridatha","Ariel","Ariela","Ariella","Arielle","Arlana","Arlee","Arleen","Arlen","Arlena","Arlene","Arleta","Arlette","Arleyne","Arlie","Arliene","Arlina","Arlinda","Arline","Arluene","Arly","Arlyn","Arlyne","Aryn","Ashely","Ashia","Ashien","Ashil","Ashla","Ashlan","Ashlee","Ashleigh","Ashlen","Ashley","Ashli","Ashlie","Ashly","Asia","Astra","Astrid","Astrix","Atalanta","Athena","Athene","Atlanta","Atlante","Auberta","Aubine","Aubree","Aubrette","Aubrey","Aubrie","Aubry","Audi","Audie","Audra","Audre","Audrey","Audrie","Audry","Audrye","Audy","Augusta","Auguste","Augustina","Augustine","Aundrea","Aura","Aurea","Aurel","Aurelea","Aurelia","Aurelie","Auria","Aurie","Aurilia","Aurlie","Auroora","Aurora","Aurore","Austin","Austina","Austine","Ava","Aveline","Averil","Averyl","Avie","Avis","Aviva","Avivah","Avril","Avrit","Ayn","Bab","Babara","Babb","Babbette","Babbie","Babette","Babita","Babs","Bambi","Bambie","Bamby","Barb","Barbabra","Barbara","Barbara-Anne","Barbaraanne","Barbe","Barbee","Barbette","Barbey","Barbi","Barbie","Barbra","Barby","Bari","Barrie","Barry","Basia","Bathsheba","Batsheva","Bea","Beatrice","Beatrisa","Beatrix","Beatriz","Bebe","Becca","Becka","Becki","Beckie","Becky","Bee","Beilul","Beitris","Bekki","Bel","Belia","Belicia","Belinda","Belita","Bell","Bella","Bellanca","Belle","Bellina","Belva","Belvia","Bendite","Benedetta","Benedicta","Benedikta","Benetta","Benita","Benni","Bennie","Benny","Benoite","Berenice","Beret","Berget","Berna","Bernadene","Bernadette","Bernadina","Bernadine","Bernardina","Bernardine","Bernelle","Bernete","Bernetta","Bernette","Berni","Bernice","Bernie","Bernita","Berny","Berri","Berrie","Berry","Bert","Berta","Berte","Bertha","Berthe","Berti","Bertie","Bertina","Bertine","Berty","Beryl","Beryle","Bess","Bessie","Bessy","Beth","Bethanne","Bethany","Bethena","Bethina","Betsey","Betsy","Betta","Bette","Bette-Ann","Betteann","Betteanne","Betti","Bettina","Bettine","Betty","Bettye","Beulah","Bev","Beverie","Beverlee","Beverley","Beverlie","Beverly","Bevvy","Bianca","Bianka","Bibbie","Bibby","Bibbye","Bibi","Biddie","Biddy","Bidget","Bili","Bill","Billi","Billie","Billy","Billye","Binni","Binnie","Binny","Bird","Birdie","Birgit","Birgitta","Blair","Blaire","Blake","Blakelee","Blakeley","Blanca","Blanch","Blancha","Blanche","Blinni","Blinnie","Blinny","Bliss","Blisse","Blithe","Blondell","Blondelle","Blondie","Blondy","Blythe","Bobbe","Bobbee","Bobbette","Bobbi","Bobbie","Bobby","Bobbye","Bobette","Bobina","Bobine","Bobinette","Bonita","Bonnee","Bonni","Bonnibelle","Bonnie","Bonny","Brana","Brandais","Brande","Brandea","Brandi","Brandice","Brandie","Brandise","Brandy","Breanne","Brear","Bree","Breena","Bren","Brena","Brenda","Brenn","Brenna","Brett","Bria","Briana","Brianna","Brianne","Bride","Bridget","Bridgette","Bridie","Brier","Brietta","Brigid","Brigida","Brigit","Brigitta","Brigitte","Brina","Briney","Brinn","Brinna","Briny","Brit","Brita","Britney","Britni","Britt","Britta","Brittan","Brittaney","Brittani","Brittany","Britte","Britteny","Brittne","Brittney","Brittni","Brook","Brooke","Brooks","Brunhilda","Brunhilde","Bryana","Bryn","Bryna","Brynn","Brynna","Brynne","Buffy","Bunni","Bunnie","Bunny","Cacilia","Cacilie","Cahra","Cairistiona","Caitlin","Caitrin","Cal","Calida","Calla","Calley","Calli","Callida","Callie","Cally","Calypso","Cam","Camala","Camel","Camella","Camellia","Cami","Camila","Camile","Camilla","Camille","Cammi","Cammie","Cammy","Candace","Candi","Candice","Candida","Candide","Candie","Candis","Candra","Candy","Caprice","Cara","Caralie","Caren","Carena","Caresa","Caressa","Caresse","Carey","Cari","Caria","Carie","Caril","Carilyn","Carin","Carina","Carine","Cariotta","Carissa","Carita","Caritta","Carla","Carlee","Carleen","Carlen","Carlene","Carley","Carlie","Carlin","Carlina","Carline","Carlita","Carlota","Carlotta","Carly","Carlye","Carlyn","Carlynn","Carlynne","Carma","Carmel","Carmela","Carmelia","Carmelina","Carmelita","Carmella","Carmelle","Carmen","Carmencita","Carmina","Carmine","Carmita","Carmon","Caro","Carol","Carol-Jean","Carola","Carolan","Carolann","Carole","Carolee","Carolin","Carolina","Caroline","Caroljean","Carolyn","Carolyne","Carolynn","Caron","Carree","Carri","Carrie","Carrissa","Carroll","Carry","Cary","Caryl","Caryn","Casandra","Casey","Casi","Casie","Cass","Cassandra","Cassandre","Cassandry","Cassaundra","Cassey","Cassi","Cassie","Cassondra","Cassy","Catarina","Cate","Caterina","Catha","Catharina","Catharine","Cathe","Cathee","Catherin","Catherina","Catherine","Cathi","Cathie","Cathleen","Cathlene","Cathrin","Cathrine","Cathryn","Cathy","Cathyleen","Cati","Catie","Catina","Catlaina","Catlee","Catlin","Catrina","Catriona","Caty","Caye","Cayla","Cecelia","Cecil","Cecile","Ceciley","Cecilia","Cecilla","Cecily","Ceil","Cele","Celene","Celesta","Celeste","Celestia","Celestina","Celestine","Celestyn","Celestyna","Celia","Celie","Celina","Celinda","Celine","Celinka","Celisse","Celka","Celle","Cesya","Chad","Chanda","Chandal","Chandra","Channa","Chantal","Chantalle","Charil","Charin","Charis","Charissa","Charisse","Charita","Charity","Charla","Charlean","Charleen","Charlena","Charlene","Charline","Charlot","Charlotta","Charlotte","Charmain","Charmaine","Charmane","Charmian","Charmine","Charmion","Charo","Charyl","Chastity","Chelsae","Chelsea","Chelsey","Chelsie","Chelsy","Cher","Chere","Cherey","Cheri","Cherianne","Cherice","Cherida","Cherie","Cherilyn","Cherilynn","Cherin","Cherise","Cherish","Cherlyn","Cherri","Cherrita","Cherry","Chery","Cherye","Cheryl","Cheslie","Chiarra","Chickie","Chicky","Chiquia","Chiquita","Chlo","Chloe","Chloette","Chloris","Chris","Chrissie","Chrissy","Christa","Christabel","Christabella","Christal","Christalle","Christan","Christean","Christel","Christen","Christi","Christian","Christiana","Christiane","Christie","Christin","Christina","Christine","Christy","Christye","Christyna","Chrysa","Chrysler","Chrystal","Chryste","Chrystel","Cicely","Cicily","Ciel","Cilka","Cinda","Cindee","Cindelyn","Cinderella","Cindi","Cindie","Cindra","Cindy","Cinnamon","Cissiee","Cissy","Clair","Claire","Clara","Clarabelle","Clare","Claresta","Clareta","Claretta","Clarette","Clarey","Clari","Claribel","Clarice","Clarie","Clarinda","Clarine","Clarissa","Clarisse","Clarita","Clary","Claude","Claudelle","Claudetta","Claudette","Claudia","Claudie","Claudina","Claudine","Clea","Clem","Clemence","Clementia","Clementina","Clementine","Clemmie","Clemmy","Cleo","Cleopatra","Clerissa","Clio","Clo","Cloe","Cloris","Clotilda","Clovis","Codee","Codi","Codie","Cody","Coleen","Colene","Coletta","Colette","Colleen","Collen","Collete","Collette","Collie","Colline","Colly","Con","Concettina","Conchita","Concordia","Conni","Connie","Conny","Consolata","Constance","Constancia","Constancy","Constanta","Constantia","Constantina","Constantine","Consuela","Consuelo","Cookie","Cora","Corabel","Corabella","Corabelle","Coral","Coralie","Coraline","Coralyn","Cordelia","Cordelie","Cordey","Cordi","Cordie","Cordula","Cordy","Coreen","Corella","Corenda","Corene","Coretta","Corette","Corey","Cori","Corie","Corilla","Corina","Corine","Corinna","Corinne","Coriss","Corissa","Corliss","Corly","Cornela","Cornelia","Cornelle","Cornie","Corny","Correna","Correy","Corri","Corrianne","Corrie","Corrina","Corrine","Corrinne","Corry","Cortney","Cory","Cosetta","Cosette","Costanza","Courtenay","Courtnay","Courtney","Crin","Cris","Crissie","Crissy","Crista","Cristabel","Cristal","Cristen","Cristi","Cristie","Cristin","Cristina","Cristine","Cristionna","Cristy","Crysta","Crystal","Crystie","Cthrine","Cyb","Cybil","Cybill","Cymbre","Cynde","Cyndi","Cyndia","Cyndie","Cyndy","Cynthea","Cynthia","Cynthie","Cynthy","Dacey","Dacia","Dacie","Dacy","Dael","Daffi","Daffie","Daffy","Dagmar","Dahlia","Daile","Daisey","Daisi","Daisie","Daisy","Dale","Dalenna","Dalia","Dalila","Dallas","Daloris","Damara","Damaris","Damita","Dana","Danell","Danella","Danette","Dani","Dania","Danica","Danice","Daniela","Daniele","Daniella","Danielle","Danika","Danila","Danit","Danita","Danna","Danni","Dannie","Danny","Dannye","Danya","Danyelle","Danyette","Daphene","Daphna","Daphne","Dara","Darb","Darbie","Darby","Darcee","Darcey","Darci","Darcie","Darcy","Darda","Dareen","Darell","Darelle","Dari","Daria","Darice","Darla","Darleen","Darlene","Darline","Darlleen","Daron","Darrelle","Darryl","Darsey","Darsie","Darya","Daryl","Daryn","Dasha","Dasi","Dasie","Dasya","Datha","Daune","Daveen","Daveta","Davida","Davina","Davine","Davita","Dawn","Dawna","Dayle","Dayna","Ddene","De","Deana","Deane","Deanna","Deanne","Deb","Debbi","Debbie","Debby","Debee","Debera","Debi","Debor","Debora","Deborah","Debra","Dede","Dedie","Dedra","Dee","Dee","Dee","Deeann","Deeanne","Deedee","Deena","Deerdre","Deeyn","Dehlia","Deidre","Deina","Deirdre","Del","Dela","Delcina","Delcine","Delia","Delila","Delilah","Delinda","Dell","Della","Delly","Delora","Delores","Deloria","Deloris","Delphine","Delphinia","Demeter","Demetra","Demetria","Demetris","Dena","Deni","Denice","Denise","Denna","Denni","Dennie","Denny","Deny","Denys","Denyse","Deonne","Desdemona","Desirae","Desiree","Desiri","Deva","Devan","Devi","Devin","Devina","Devinne","Devon","Devondra","Devonna","Devonne","Devora","Di","Diahann","Dian","Diana","Diandra","Diane","Diane-Marie","Dianemarie","Diann","Dianna","Dianne","Diannne","Didi","Dido","Diena","Dierdre","Dina","Dinah","Dinnie","Dinny","Dion","Dione","Dionis","Dionne","Dita","Dix","Dixie","Dniren","Dode","Dodi","Dodie","Dody","Doe","Doll","Dolley","Dolli","Dollie","Dolly","Dolores","Dolorita","Doloritas","Domeniga","Dominga","Domini","Dominica","Dominique","Dona","Donella","Donelle","Donetta","Donia","Donica","Donielle","Donna","Donnamarie","Donni","Donnie","Donny","Dora","Doralia","Doralin","Doralyn","Doralynn","Doralynne","Dore","Doreen","Dorelia","Dorella","Dorelle","Dorena","Dorene","Doretta","Dorette","Dorey","Dori","Doria","Dorian","Dorice","Dorie","Dorine","Doris","Dorisa","Dorise","Dorita","Doro","Dorolice","Dorolisa","Dorotea","Doroteya","Dorothea","Dorothee","Dorothy","Dorree","Dorri","Dorrie","Dorris","Dorry","Dorthea","Dorthy","Dory","Dosi","Dot","Doti","Dotti","Dottie","Dotty","Dre","Dreddy","Dredi","Drona","Dru","Druci","Drucie","Drucill","Drucy","Drusi","Drusie","Drusilla","Drusy","Dulce","Dulcea","Dulci","Dulcia","Dulciana","Dulcie","Dulcine","Dulcinea","Dulcy","Dulsea","Dusty","Dyan","Dyana","Dyane","Dyann","Dyanna","Dyanne","Dyna","Dynah","Eachelle","Eada","Eadie","Eadith","Ealasaid","Eartha","Easter","Eba","Ebba","Ebonee","Ebony","Eda","Eddi","Eddie","Eddy","Ede","Edee","Edeline","Eden","Edi","Edie","Edin","Edita","Edith","Editha","Edithe","Ediva","Edna","Edwina","Edy","Edyth","Edythe","Effie","Eileen","Eilis","Eimile","Eirena","Ekaterina","Elaina","Elaine","Elana","Elane","Elayne","Elberta","Elbertina","Elbertine","Eleanor","Eleanora","Eleanore","Electra","Eleen","Elena","Elene","Eleni","Elenore","Eleonora","Eleonore","Elfie","Elfreda","Elfrida","Elfrieda","Elga","Elianora","Elianore","Elicia","Elie","Elinor","Elinore","Elisa","Elisabet","Elisabeth","Elisabetta","Elise","Elisha","Elissa","Elita","Eliza","Elizabet","Elizabeth","Elka","Elke","Ella","Elladine","Elle","Ellen","Ellene","Ellette","Elli","Ellie","Ellissa","Elly","Ellyn","Ellynn","Elmira","Elna","Elnora","Elnore","Eloisa","Eloise","Elonore","Elora","Elsa","Elsbeth","Else","Elset","Elsey","Elsi","Elsie","Elsinore","Elspeth","Elsy","Elva","Elvera","Elvina","Elvira","Elwira","Elyn","Elyse","Elysee","Elysha","Elysia","Elyssa","Em","Ema","Emalee","Emalia","Emelda","Emelia","Emelina","Emeline","Emelita","Emelyne","Emera","Emilee","Emili","Emilia","Emilie","Emiline","Emily","Emlyn","Emlynn","Emlynne","Emma","Emmalee","Emmaline","Emmalyn","Emmalynn","Emmalynne","Emmeline","Emmey","Emmi","Emmie","Emmy","Emmye","Emogene","Emyle","Emylee","Engracia","Enid","Enrica","Enrichetta","Enrika","Enriqueta","Eolanda","Eolande","Eran","Erda","Erena","Erica","Ericha","Ericka","Erika","Erin","Erina","Erinn","Erinna","Erma","Ermengarde","Ermentrude","Ermina","Erminia","Erminie","Erna","Ernaline","Ernesta","Ernestine","Ertha","Eryn","Esma","Esmaria","Esme","Esmeralda","Essa","Essie","Essy","Esta","Estel","Estele","Estell","Estella","Estelle","Ester","Esther","Estrella","Estrellita","Ethel","Ethelda","Ethelin","Ethelind","Etheline","Ethelyn","Ethyl","Etta","Etti","Ettie","Etty","Eudora","Eugenia","Eugenie","Eugine","Eula","Eulalie","Eunice","Euphemia","Eustacia","Eva","Evaleen","Evangelia","Evangelin","Evangelina","Evangeline","Evania","Evanne","Eve","Eveleen","Evelina","Eveline","Evelyn","Evey","Evie","Evita","Evonne","Evvie","Evvy","Evy","Eyde","Eydie","Ezmeralda","Fae","Faina","Faith","Fallon","Fan","Fanchette","Fanchon","Fancie","Fancy","Fanechka","Fania","Fanni","Fannie","Fanny","Fanya","Fara","Farah","Farand","Farica","Farra","Farrah","Farrand","Faun","Faunie","Faustina","Faustine","Fawn","Fawne","Fawnia","Fay","Faydra","Faye","Fayette","Fayina","Fayre","Fayth","Faythe","Federica","Fedora","Felecia","Felicdad","Felice","Felicia","Felicity","Felicle","Felipa","Felisha","Felita","Feliza","Fenelia","Feodora","Ferdinanda","Ferdinande","Fern","Fernanda","Fernande","Fernandina","Ferne","Fey","Fiann","Fianna","Fidela","Fidelia","Fidelity","Fifi","Fifine","Filia","Filide","Filippa","Fina","Fiona","Fionna","Fionnula","Fiorenze","Fleur","Fleurette","Flo","Flor","Flora","Florance","Flore","Florella","Florence","Florencia","Florentia","Florenza","Florette","Flori","Floria","Florida","Florie","Florina","Florinda","Floris","Florri","Florrie","Florry","Flory","Flossi","Flossie","Flossy","Flss","Fran","Francene","Frances","Francesca","Francine","Francisca","Franciska","Francoise","Francyne","Frank","Frankie","Franky","Franni","Frannie","Franny","Frayda","Fred","Freda","Freddi","Freddie","Freddy","Fredelia","Frederica","Fredericka","Frederique","Fredi","Fredia","Fredra","Fredrika","Freida","Frieda","Friederike","Fulvia","Gabbey","Gabbi","Gabbie","Gabey","Gabi","Gabie","Gabriel","Gabriela","Gabriell","Gabriella","Gabrielle","Gabriellia","Gabrila","Gaby","Gae","Gael","Gail","Gale","Gale","Galina","Garland","Garnet","Garnette","Gates","Gavra","Gavrielle","Gay","Gaye","Gayel","Gayla","Gayle","Gayleen","Gaylene","Gaynor","Gelya","Gena","Gene","Geneva","Genevieve","Genevra","Genia","Genna","Genni","Gennie","Gennifer","Genny","Genovera","Genvieve","George","Georgeanna","Georgeanne","Georgena","Georgeta","Georgetta","Georgette","Georgia","Georgiana","Georgianna","Georgianne","Georgie","Georgina","Georgine","Geralda","Geraldine","Gerda","Gerhardine","Geri","Gerianna","Gerianne","Gerladina","Germain","Germaine","Germana","Gerri","Gerrie","Gerrilee","Gerry","Gert","Gerta","Gerti","Gertie","Gertrud","Gertruda","Gertrude","Gertrudis","Gerty","Giacinta","Giana","Gianina","Gianna","Gigi","Gilberta","Gilberte","Gilbertina","Gilbertine","Gilda","Gilemette","Gill","Gillan","Gilli","Gillian","Gillie","Gilligan","Gilly","Gina","Ginelle","Ginevra","Ginger","Ginni","Ginnie","Ginnifer","Ginny","Giorgia","Giovanna","Gipsy","Giralda","Gisela","Gisele","Gisella","Giselle","Giuditta","Giulia","Giulietta","Giustina","Gizela","Glad","Gladi","Gladys","Gleda","Glen","Glenda","Glenine","Glenn","Glenna","Glennie","Glennis","Glori","Gloria","Gloriana","Gloriane","Glory","Glyn","Glynda","Glynis","Glynnis","Gnni","Godiva","Golda","Goldarina","Goldi","Goldia","Goldie","Goldina","Goldy","Grace","Gracia","Gracie","Grata","Gratia","Gratiana","Gray","Grayce","Grazia","Greer","Greta","Gretal","Gretchen","Grete","Gretel","Grethel","Gretna","Gretta","Grier","Griselda","Grissel","Guendolen","Guenevere","Guenna","Guglielma","Gui","Guillema","Guillemette","Guinevere","Guinna","Gunilla","Gus","Gusella","Gussi","Gussie","Gussy","Gusta","Gusti","Gustie","Gusty","Gwen","Gwendolen","Gwendolin","Gwendolyn","Gweneth","Gwenette","Gwenneth","Gwenni","Gwennie","Gwenny","Gwenora","Gwenore","Gwyn","Gwyneth","Gwynne","Gypsy","Hadria","Hailee","Haily","Haleigh","Halette","Haley","Hali","Halie","Halimeda","Halley","Halli","Hallie","Hally","Hana","Hanna","Hannah","Hanni","Hannie","Hannis","Hanny","Happy","Harlene","Harley","Harli","Harlie","Harmonia","Harmonie","Harmony","Harri","Harrie","Harriet","Harriett","Harrietta","Harriette","Harriot","Harriott","Hatti","Hattie","Hatty","Hayley","Hazel","Heath","Heather","Heda","Hedda","Heddi","Heddie","Hedi","Hedvig","Hedvige","Hedwig","Hedwiga","Hedy","Heida","Heidi","Heidie","Helaina","Helaine","Helen","Helen-Elizabeth","Helena","Helene","Helenka","Helga","Helge","Helli","Heloise","Helsa","Helyn","Hendrika","Henka","Henrie","Henrieta","Henrietta","Henriette","Henryetta","Hephzibah","Hermia","Hermina","Hermine","Herminia","Hermione","Herta","Hertha","Hester","Hesther","Hestia","Hetti","Hettie","Hetty","Hilary","Hilda","Hildagard","Hildagarde","Hilde","Hildegaard","Hildegarde","Hildy","Hillary","Hilliary","Hinda","Holli","Hollie","Holly","Holly-Anne","Hollyanne","Honey","Honor","Honoria","Hope","Horatia","Hortense","Hortensia","Hulda","Hyacinth","Hyacintha","Hyacinthe","Hyacinthia","Hyacinthie","Hynda","Ianthe","Ibbie","Ibby","Ida","Idalia","Idalina","Idaline","Idell","Idelle","Idette","Ileana","Ileane","Ilene","Ilise","Ilka","Illa","Ilsa","Ilse","Ilysa","Ilyse","Ilyssa","Imelda","Imogen","Imogene","Imojean","Ina","Indira","Ines","Inesita","Inessa","Inez","Inga","Ingaberg","Ingaborg","Inge","Ingeberg","Ingeborg","Inger","Ingrid","Ingunna","Inna","Iolande","Iolanthe","Iona","Iormina","Ira","Irena","Irene","Irina","Iris","Irita","Irma","Isa","Isabel","Isabelita","Isabella","Isabelle","Isadora","Isahella","Iseabal","Isidora","Isis","Isobel","Issi","Issie","Issy","Ivett","Ivette","Ivie","Ivonne","Ivory","Ivy","Izabel","Jacenta","Jacinda","Jacinta","Jacintha","Jacinthe","Jackelyn","Jacki","Jackie","Jacklin","Jacklyn","Jackquelin","Jackqueline","Jacky","Jaclin","Jaclyn","Jacquelin","Jacqueline","Jacquelyn","Jacquelynn","Jacquenetta","Jacquenette","Jacquetta","Jacquette","Jacqui","Jacquie","Jacynth","Jada","Jade","Jaime","Jaimie","Jaine","Jami","Jamie","Jamima","Jammie","Jan","Jana","Janaya","Janaye","Jandy","Jane","Janean","Janeczka","Janeen","Janel","Janela","Janella","Janelle","Janene","Janenna","Janessa","Janet","Janeta","Janetta","Janette","Janeva","Janey","Jania","Janice","Janie","Janifer","Janina","Janine","Janis","Janith","Janka","Janna","Jannel","Jannelle","Janot","Jany","Jaquelin","Jaquelyn","Jaquenetta","Jaquenette","Jaquith","Jasmin","Jasmina","Jasmine","Jayme","Jaymee","Jayne","Jaynell","Jazmin","Jean","Jeana","Jeane","Jeanelle","Jeanette","Jeanie","Jeanine","Jeanna","Jeanne","Jeannette","Jeannie","Jeannine","Jehanna","Jelene","Jemie","Jemima","Jemimah","Jemmie","Jemmy","Jen","Jena","Jenda","Jenelle","Jeni","Jenica","Jeniece","Jenifer","Jeniffer","Jenilee","Jenine","Jenn","Jenna","Jennee","Jennette","Jenni","Jennica","Jennie","Jennifer","Jennilee","Jennine","Jenny","Jeralee","Jere","Jeri","Jermaine","Jerrie","Jerrilee","Jerrilyn","Jerrine","Jerry","Jerrylee","Jess","Jessa","Jessalin","Jessalyn","Jessamine","Jessamyn","Jesse","Jesselyn","Jessi","Jessica","Jessie","Jessika","Jessy","Jewel","Jewell","Jewelle","Jill","Jillana","Jillane","Jillayne","Jilleen","Jillene","Jilli","Jillian","Jillie","Jilly","Jinny","Jo","Jo","Ann","Jo-Ann","Jo-Anne","Joan","Joana","Joane","Joanie","Joann","Joanna","Joanne","Joannes","Jobey","Jobi","Jobie","Jobina","Joby","Jobye","Jobyna","Jocelin","Joceline","Jocelyn","Jocelyne","Jodee","Jodi","Jodie","Jody","Joeann","Joela","Joelie","Joell","Joella","Joelle","Joellen","Joelly","Joellyn","Joelynn","Joete","Joey","Johanna","Johannah","Johna","Johnath","Johnette","Johnna","Joice","Jojo","Jolee","Joleen","Jolene","Joletta","Joli","Jolie","Joline","Joly","Jolyn","Jolynn","Jonell","Joni","Jonie","Jonis","Jordain","Jordan","Jordana","Jordanna","Jorey","Jori","Jorie","Jorrie","Jorry","Joscelin","Josee","Josefa","Josefina","Josepha","Josephina","Josephine","Josey","Josi","Josie","Josselyn","Josy","Jourdan","Joy","Joya","Joyan","Joyann","Joyce","Joycelin","Joye","Jsandye","Juana","Juanita","Judi","Judie","Judith","Juditha","Judy","Judye","Juieta","Julee","Juli","Julia","Juliana","Juliane","Juliann","Julianna","Julianne","Julie","Julienne","Juliet","Julieta","Julietta","Juliette","Julina","Juline","Julissa","Julita","June","Junette","Junia","Junie","Junina","Justina","Justine","Justinn","Jyoti","Kacey","Kacie","Kacy","Kaela","Kai","Kaia","Kaila","Kaile","Kailey","Kaitlin","Kaitlyn","Kaitlynn","Kaja","Kakalina","Kala","Kaleena","Kali","Kalie","Kalila","Kalina","Kalinda","Kalindi","Kalli","Kally","Kameko","Kamila","Kamilah","Kamillah","Kandace","Kandy","Kania","Kanya","Kara","Kara-Lynn","Karalee","Karalynn","Kare","Karee","Karel","Karen","Karena","Kari","Karia","Karie","Karil","Karilynn","Karin","Karina","Karine","Kariotta","Karisa","Karissa","Karita","Karla","Karlee","Karleen","Karlen","Karlene","Karlie","Karlotta","Karlotte","Karly","Karlyn","Karmen","Karna","Karol","Karola","Karole","Karolina","Karoline","Karoly","Karon","Karrah","Karrie","Karry","Kary","Karyl","Karylin","Karyn","Kasey","Kass","Kassandra","Kassey","Kassi","Kassia","Kassie","Kat","Kata","Katalin","Kate","Katee","Katerina","Katerine","Katey","Kath","Katha","Katharina","Katharine","Katharyn","Kathe","Katherina","Katherine","Katheryn","Kathi","Kathie","Kathleen","Kathlin","Kathrine","Kathryn","Kathryne","Kathy","Kathye","Kati","Katie","Katina","Katine","Katinka","Katleen","Katlin","Katrina","Katrine","Katrinka","Katti","Kattie","Katuscha","Katusha","Katy","Katya","Kay","Kaycee","Kaye","Kayla","Kayle","Kaylee","Kayley","Kaylil","Kaylyn","Keeley","Keelia","Keely","Kelcey","Kelci","Kelcie","Kelcy","Kelila","Kellen","Kelley","Kelli","Kellia","Kellie","Kellina","Kellsie","Kelly","Kellyann","Kelsey","Kelsi","Kelsy","Kendra","Kendre","Kenna","Keri","Keriann","Kerianne","Kerri","Kerrie","Kerrill","Kerrin","Kerry","Kerstin","Kesley","Keslie","Kessia","Kessiah","Ketti","Kettie","Ketty","Kevina","Kevyn","Ki","Kiah","Kial","Kiele","Kiersten","Kikelia","Kiley","Kim","Kimberlee","Kimberley","Kimberli","Kimberly","Kimberlyn","Kimbra","Kimmi","Kimmie","Kimmy","Kinna","Kip","Kipp","Kippie","Kippy","Kira","Kirbee","Kirbie","Kirby","Kiri","Kirsten","Kirsteni","Kirsti","Kirstin","Kirstyn","Kissee","Kissiah","Kissie","Kit","Kitti","Kittie","Kitty","Kizzee","Kizzie","Klara","Klarika","Klarrisa","Konstance","Konstanze","Koo","Kora","Koral","Koralle","Kordula","Kore","Korella","Koren","Koressa","Kori","Korie","Korney","Korrie","Korry","Kris","Krissie","Krissy","Krista","Kristal","Kristan","Kriste","Kristel","Kristen","Kristi","Kristien","Kristin","Kristina","Kristine","Kristy","Kristyn","Krysta","Krystal","Krystalle","Krystle","Krystyna","Kyla","Kyle","Kylen","Kylie","Kylila","Kylynn","Kym","Kynthia","Kyrstin","La","Verne","Lacee","Lacey","Lacie","Lacy","Ladonna","Laetitia","Laina","Lainey","Lana","Lanae","Lane","Lanette","Laney","Lani","Lanie","Lanita","Lanna","Lanni","Lanny","Lara","Laraine","Lari","Larina","Larine","Larisa","Larissa","Lark","Laryssa","Latashia","Latia","Latisha","Latrena","Latrina","Laura","Lauraine","Laural","Lauralee","Laure","Lauree","Laureen","Laurel","Laurella","Lauren","Laurena","Laurene","Lauretta","Laurette","Lauri","Laurianne","Laurice","Laurie","Lauryn","Lavena","Laverna","Laverne","Lavina","Lavinia","Lavinie","Layla","Layne","Layney","Lea","Leah","Leandra","Leann","Leanna","Leanor","Leanora","Lebbie","Leda","Lee","Leeann","Leeanne","Leela","Leelah","Leena","Leesa","Leese","Legra","Leia","Leigh","Leigha","Leila","Leilah","Leisha","Lela","Lelah","Leland","Lelia","Lena","Lenee","Lenette","Lenka","Lenna","Lenora","Lenore","Leodora","Leoine","Leola","Leoline","Leona","Leonanie","Leone","Leonelle","Leonie","Leonora","Leonore","Leontine","Leontyne","Leora","Leshia","Lesley","Lesli","Leslie","Lesly","Lesya","Leta","Lethia","Leticia","Letisha","Letitia","Letizia","Letta","Letti","Lettie","Letty","Lexi","Lexie","Lexine","Lexis","Lexy","Leyla","Lezlie","Lia","Lian","Liana","Liane","Lianna","Lianne","Lib","Libbey","Libbi","Libbie","Libby","Licha","Lida","Lidia","Liesa","Lil","Lila","Lilah","Lilas","Lilia","Lilian","Liliane","Lilias","Lilith","Lilla","Lilli","Lillian","Lillis","Lilllie","Lilly","Lily","Lilyan","Lin","Lina","Lind","Linda","Lindi","Lindie","Lindsay","Lindsey","Lindsy","Lindy","Linea","Linell","Linet","Linette","Linn","Linnea","Linnell","Linnet","Linnie","Linzy","Lira","Lisa","Lisabeth","Lisbeth","Lise","Lisetta","Lisette","Lisha","Lishe","Lissa","Lissi","Lissie","Lissy","Lita","Liuka","Liv","Liva","Livia","Livvie","Livvy","Livvyy","Livy","Liz","Liza","Lizabeth","Lizbeth","Lizette","Lizzie","Lizzy","Loella","Lois","Loise","Lola","Loleta","Lolita","Lolly","Lona","Lonee","Loni","Lonna","Lonni","Lonnie","Lora","Lorain","Loraine","Loralee","Loralie","Loralyn","Loree","Loreen","Lorelei","Lorelle","Loren","Lorena","Lorene","Lorenza","Loretta","Lorette","Lori","Loria","Lorianna","Lorianne","Lorie","Lorilee","Lorilyn","Lorinda","Lorine","Lorita","Lorna","Lorne","Lorraine","Lorrayne","Lorri","Lorrie","Lorrin","Lorry","Lory","Lotta","Lotte","Lotti","Lottie","Lotty","Lou","Louella","Louisa","Louise","Louisette","Loutitia","Lu","Luce","Luci","Lucia","Luciana","Lucie","Lucienne","Lucila","Lucilia","Lucille","Lucina","Lucinda","Lucine","Lucita","Lucky","Lucretia","Lucy","Ludovika","Luella","Luelle","Luisa","Luise","Lula","Lulita","Lulu","Lura","Lurette","Lurleen","Lurlene","Lurline","Lusa","Luz","Lyda","Lydia","Lydie","Lyn","Lynda","Lynde","Lyndel","Lyndell","Lyndsay","Lyndsey","Lyndsie","Lyndy","Lynea","Lynelle","Lynett","Lynette","Lynn","Lynna","Lynne","Lynnea","Lynnell","Lynnelle","Lynnet","Lynnett","Lynnette","Lynsey","Lyssa","Mab","Mabel","Mabelle","Mable","Mada","Madalena","Madalyn","Maddalena","Maddi","Maddie","Maddy","Madel","Madelaine","Madeleine","Madelena","Madelene","Madelin","Madelina","Madeline","Madella","Madelle","Madelon","Madelyn","Madge","Madlen","Madlin","Madonna","Mady","Mae","Maegan","Mag","Magda","Magdaia","Magdalen","Magdalena","Magdalene","Maggee","Maggi","Maggie","Maggy","Mahala","Mahalia","Maia","Maible","Maiga","Maighdiln","Mair","Maire","Maisey","Maisie","Maitilde","Mala","Malanie","Malena","Malia","Malina","Malinda","Malinde","Malissa","Malissia","Mallissa","Mallorie","Mallory","Malorie","Malory","Malva","Malvina","Malynda","Mame","Mamie","Manda","Mandi","Mandie","Mandy","Manon","Manya","Mara","Marabel","Marcela","Marcelia","Marcella","Marcelle","Marcellina","Marcelline","Marchelle","Marci","Marcia","Marcie","Marcile","Marcille","Marcy","Mareah","Maren","Marena","Maressa","Marga","Margalit","Margalo","Margaret","Margareta","Margarete","Margaretha","Margarethe","Margaretta","Margarette","Margarita","Margaux","Marge","Margeaux","Margery","Marget","Margette","Margi","Margie","Margit","Margo","Margot","Margret","Marguerite","Margy","Mari","Maria","Mariam","Marian","Mariana","Mariann","Marianna","Marianne","Maribel","Maribelle","Maribeth","Marice","Maridel","Marie","Marie-Ann","Marie-Jeanne","Marieann","Mariejeanne","Mariel","Mariele","Marielle","Mariellen","Marietta","Mariette","Marigold","Marijo","Marika","Marilee","Marilin","Marillin","Marilyn","Marin","Marina","Marinna","Marion","Mariquilla","Maris","Marisa","Mariska","Marissa","Marita","Maritsa","Mariya","Marj","Marja","Marje","Marji","Marjie","Marjorie","Marjory","Marjy","Marketa","Marla","Marlane","Marleah","Marlee","Marleen","Marlena","Marlene","Marley","Marlie","Marline","Marlo","Marlyn","Marna","Marne","Marney","Marni","Marnia","Marnie","Marquita","Marrilee","Marris","Marrissa","Marsha","Marsiella","Marta","Martelle","Martguerita","Martha","Marthe","Marthena","Marti","Martica","Martie","Martina","Martita","Marty","Martynne","Mary","Marya","Maryann","Maryanna","Maryanne","Marybelle","Marybeth","Maryellen","Maryjane","Maryjo","Maryl","Marylee","Marylin","Marylinda","Marylou","Marylynne","Maryrose","Marys","Marysa","Masha","Matelda","Mathilda","Mathilde","Matilda","Matilde","Matti","Mattie","Matty","Maud","Maude","Maudie","Maura","Maure","Maureen","Maureene","Maurene","Maurine","Maurise","Maurita","Maurizia","Mavis","Mavra","Max","Maxi","Maxie","Maxine","Maxy","May","Maybelle","Maye","Mead","Meade","Meagan","Meaghan","Meara","Mechelle","Meg","Megan","Megen","Meggi","Meggie","Meggy","Meghan","Meghann","Mehetabel","Mei","Mel","Mela","Melamie","Melania","Melanie","Melantha","Melany","Melba","Melesa","Melessa","Melicent","Melina","Melinda","Melinde","Melisa","Melisande","Melisandra","Melisenda","Melisent","Melissa","Melisse","Melita","Melitta","Mella","Melli","Mellicent","Mellie","Mellisa","Mellisent","Melloney","Melly","Melodee","Melodie","Melody","Melonie","Melony","Melosa","Melva","Mercedes","Merci","Mercie","Mercy","Meredith","Meredithe","Meridel","Meridith","Meriel","Merilee","Merilyn","Meris","Merissa","Merl","Merla","Merle","Merlina","Merline","Merna","Merola","Merralee","Merridie","Merrie","Merrielle","Merrile","Merrilee","Merrili","Merrill","Merrily","Merry","Mersey","Meryl","Meta","Mia","Micaela","Michaela","Michaelina","Michaeline","Michaella","Michal","Michel","Michele","Michelina","Micheline","Michell","Michelle","Micki","Mickie","Micky","Midge","Mignon","Mignonne","Miguela","Miguelita","Mikaela","Mil","Mildred","Mildrid","Milena","Milicent","Milissent","Milka","Milli","Millicent","Millie","Millisent","Milly","Milzie","Mimi","Min","Mina","Minda","Mindy","Minerva","Minetta","Minette","Minna","Minnaminnie","Minne","Minni","Minnie","Minnnie","Minny","Minta","Miof","Mela","Miquela","Mira","Mirabel","Mirabella","Mirabelle","Miran","Miranda","Mireielle","Mireille","Mirella","Mirelle","Miriam","Mirilla","Mirna","Misha","Missie","Missy","Misti","Misty","Mitzi","Modesta","Modestia","Modestine","Modesty","Moina","Moira","Moll","Mollee","Molli","Mollie","Molly","Mommy","Mona","Monah","Monica","Monika","Monique","Mora","Moreen","Morena","Morgan","Morgana","Morganica","Morganne","Morgen","Moria","Morissa","Morna","Moselle","Moyna","Moyra","Mozelle","Muffin","Mufi","Mufinella","Muire","Mureil","Murial","Muriel","Murielle","Myra","Myrah","Myranda","Myriam","Myrilla","Myrle","Myrlene","Myrna","Myrta","Myrtia","Myrtice","Myrtie","Myrtle","Nada","Nadean","Nadeen","Nadia","Nadine","Nadiya","Nady","Nadya","Nalani","Nan","Nana","Nananne","Nance","Nancee","Nancey","Nanci","Nancie","Nancy","Nanete","Nanette","Nani","Nanice","Nanine","Nannette","Nanni","Nannie","Nanny","Nanon","Naoma","Naomi","Nara","Nari","Nariko","Nat","Nata","Natala","Natalee","Natalie","Natalina","Nataline","Natalya","Natasha","Natassia","Nathalia","Nathalie","Natividad","Natka","Natty","Neala","Neda","Nedda","Nedi","Neely","Neila","Neile","Neilla","Neille","Nelia","Nelie","Nell","Nelle","Nelli","Nellie","Nelly","Nerissa","Nerita","Nert","Nerta","Nerte","Nerti","Nertie","Nerty","Nessa","Nessi","Nessie","Nessy","Nesta","Netta","Netti","Nettie","Nettle","Netty","Nevsa","Neysa","Nichol","Nichole","Nicholle","Nicki","Nickie","Nicky","Nicol","Nicola","Nicole","Nicolea","Nicolette","Nicoli","Nicolina","Nicoline","Nicolle","Nikaniki","Nike","Niki","Nikki","Nikkie","Nikoletta","Nikolia","Nina","Ninetta","Ninette","Ninnetta","Ninnette","Ninon","Nissa","Nisse","Nissie","Nissy","Nita","Nixie","Noami","Noel","Noelani","Noell","Noella","Noelle","Noellyn","Noelyn","Noemi","Nola","Nolana","Nolie","Nollie","Nomi","Nona","Nonah","Noni","Nonie","Nonna","Nonnah","Nora","Norah","Norean","Noreen","Norene","Norina","Norine","Norma","Norri","Norrie","Norry","Novelia","Nydia","Nyssa","Octavia","Odele","Odelia","Odelinda","Odella","Odelle","Odessa","Odetta","Odette","Odilia","Odille","Ofelia","Ofella","Ofilia","Ola","Olenka","Olga","Olia","Olimpia","Olive","Olivette","Olivia","Olivie","Oliy","Ollie","Olly","Olva","Olwen","Olympe","Olympia","Olympie","Ondrea","Oneida","Onida","Oona","Opal","Opalina","Opaline","Ophelia","Ophelie","Ora","Oralee","Oralia","Oralie","Oralla","Oralle","Orel","Orelee","Orelia","Orelie","Orella","Orelle","Oriana","Orly","Orsa","Orsola","Ortensia","Otha","Othelia","Othella","Othilia","Othilie","Ottilie","Page","Paige","Paloma","Pam","Pamela","Pamelina","Pamella","Pammi","Pammie","Pammy","Pandora","Pansie","Pansy","Paola","Paolina","Papagena","Pat","Patience","Patrica","Patrice","Patricia","Patrizia","Patsy","Patti","Pattie","Patty","Paula","Paule","Pauletta","Paulette","Pauli","Paulie","Paulina","Pauline","Paulita","Pauly","Pavia","Pavla","Pearl","Pearla","Pearle","Pearline","Peg","Pegeen","Peggi","Peggie","Peggy","Pen","Penelopa","Penelope","Penni","Pennie","Penny","Pepi","Pepita","Peri","Peria","Perl","Perla","Perle","Perri","Perrine","Perry","Persis","Pet","Peta","Petra","Petrina","Petronella","Petronia","Petronilla","Petronille","Petunia","Phaedra","Phaidra","Phebe","Phedra","Phelia","Phil","Philipa","Philippa","Philippe","Philippine","Philis","Phillida","Phillie","Phillis","Philly","Philomena","Phoebe","Phylis","Phyllida","Phyllis","Phyllys","Phylys","Pia","Pier","Pierette","Pierrette","Pietra","Piper","Pippa","Pippy","Polly","Pollyanna","Pooh","Poppy","Portia","Pris","Prisca","Priscella","Priscilla","Prissie","Pru","Prudence","Prudi","Prudy","Prue","Queenie","Quentin","Querida","Quinn","Quinta","Quintana","Quintilla","Quintina","Rachael","Rachel","Rachele","Rachelle","Rae","Raeann","Raf","Rafa","Rafaela","Rafaelia","Rafaelita","Rahal","Rahel","Raina","Raine","Rakel","Ralina","Ramona","Ramonda","Rana","Randa","Randee","Randene","Randi","Randie","Randy","Ranee","Rani","Rania","Ranice","Ranique","Ranna","Raphaela","Raquel","Raquela","Rasia","Rasla","Raven","Ray","Raychel","Raye","Rayna","Raynell","Rayshell","Rea","Reba","Rebbecca","Rebe","Rebeca","Rebecca","Rebecka","Rebeka","Rebekah","Rebekkah","Ree","Reeba","Reena","Reeta","Reeva","Regan","Reggi","Reggie","Regina","Regine","Reiko","Reina","Reine","Remy","Rena","Renae","Renata","Renate","Rene","Renee","Renell","Renelle","Renie","Rennie","Reta","Retha","Revkah","Rey","Reyna","Rhea","Rheba","Rheta","Rhetta","Rhiamon","Rhianna","Rhianon","Rhoda","Rhodia","Rhodie","Rhody","Rhona","Rhonda","Riane","Riannon","Rianon","Rica","Ricca","Rici","Ricki","Rickie","Ricky","Riki","Rikki","Rina","Risa","Rita","Riva","Rivalee","Rivi","Rivkah","Rivy","Roana","Roanna","Roanne","Robbi","Robbie","Robbin","Robby","Robbyn","Robena","Robenia","Roberta","Robin","Robina","Robinet","Robinett","Robinetta","Robinette","Robinia","Roby","Robyn","Roch","Rochell","Rochella","Rochelle","Rochette","Roda","Rodi","Rodie","Rodina","Rois","Romola","Romona","Romonda","Romy","Rona","Ronalda","Ronda","Ronica","Ronna","Ronni","Ronnica","Ronnie","Ronny","Roobbie","Rora","Rori","Rorie","Rory","Ros","Rosa","Rosabel","Rosabella","Rosabelle","Rosaleen","Rosalia","Rosalie","Rosalind","Rosalinda","Rosalinde","Rosaline","Rosalyn","Rosalynd","Rosamond","Rosamund","Rosana","Rosanna","Rosanne","Rose","Roseann","Roseanna","Roseanne","Roselia","Roselin","Roseline","Rosella","Roselle","Rosemaria","Rosemarie","Rosemary","Rosemonde","Rosene","Rosetta","Rosette","Roshelle","Rosie","Rosina","Rosita","Roslyn","Rosmunda","Rosy","Row","Rowe","Rowena","Roxana","Roxane","Roxanna","Roxanne","Roxi","Roxie","Roxine","Roxy","Roz","Rozalie","Rozalin","Rozamond","Rozanna","Rozanne","Roze","Rozele","Rozella","Rozelle","Rozina","Rubetta","Rubi","Rubia","Rubie","Rubina","Ruby","Ruperta","Ruth","Ruthann","Ruthanne","Ruthe","Ruthi","Ruthie","Ruthy","Ryann","Rycca","Saba","Sabina","Sabine","Sabra","Sabrina","Sacha","Sada","Sadella","Sadie","Sadye","Saidee","Sal","Salaidh","Sallee","Salli","Sallie","Sally","Sallyann","Sallyanne","Saloma","Salome","Salomi","Sam","Samantha","Samara","Samaria","Sammy","Sande","Sandi","Sandie","Sandra","Sandy","Sandye","Sapphira","Sapphire","Sara","Sara-Ann","Saraann","Sarah","Sarajane","Saree","Sarena","Sarene","Sarette","Sari","Sarina","Sarine","Sarita","Sascha","Sasha","Sashenka","Saudra","Saundra","Savina","Sayre","Scarlet","Scarlett","Sean","Seana","Seka","Sela","Selena","Selene","Selestina","Selia","Selie","Selina","Selinda","Seline","Sella","Selle","Selma","Sena","Sephira","Serena","Serene","Shae","Shaina","Shaine","Shalna","Shalne","Shana","Shanda","Shandee","Shandeigh","Shandie","Shandra","Shandy","Shane","Shani","Shanie","Shanna","Shannah","Shannen","Shannon","Shanon","Shanta","Shantee","Shara","Sharai","Shari","Sharia","Sharity","Sharl","Sharla","Sharleen","Sharlene","Sharline","Sharon","Sharona","Sharron","Sharyl","Shaun","Shauna","Shawn","Shawna","Shawnee","Shay","Shayla","Shaylah","Shaylyn","Shaylynn","Shayna","Shayne","Shea","Sheba","Sheela","Sheelagh","Sheelah","Sheena","Sheeree","Sheila","Sheila-Kathryn","Sheilah","Shel","Shela","Shelagh","Shelba","Shelbi","Shelby","Shelia","Shell","Shelley","Shelli","Shellie","Shelly","Shena","Sher","Sheree","Sheri","Sherie","Sherill","Sherilyn","Sherline","Sherri","Sherrie","Sherry","Sherye","Sheryl","Shina","Shir","Shirl","Shirlee","Shirleen","Shirlene","Shirley","Shirline","Shoshana","Shoshanna","Siana","Sianna","Sib","Sibbie","Sibby","Sibeal","Sibel","Sibella","Sibelle","Sibilla","Sibley","Sibyl","Sibylla","Sibylle","Sidoney","Sidonia","Sidonnie","Sigrid","Sile","Sileas","Silva","Silvana","Silvia","Silvie","Simona","Simone","Simonette","Simonne","Sindee","Siobhan","Sioux","Siouxie","Sisely","Sisile","Sissie","Sissy","Siusan","Sofia","Sofie","Sondra","Sonia","Sonja","Sonni","Sonnie","Sonnnie","Sonny","Sonya","Sophey","Sophi","Sophia","Sophie","Sophronia","Sorcha","Sosanna","Stace","Stacee","Stacey","Staci","Stacia","Stacie","Stacy","Stafani","Star","Starla","Starlene","Starlin","Starr","Stefa","Stefania","Stefanie","Steffane","Steffi","Steffie","Stella","Stepha","Stephana","Stephani","Stephanie","Stephannie","Stephenie","Stephi","Stephie","Stephine","Stesha","Stevana","Stevena","Stoddard","Storm","Stormi","Stormie","Stormy","Sue","Suellen","Sukey","Suki","Sula","Sunny","Sunshine","Susan","Susana","Susanetta","Susann","Susanna","Susannah","Susanne","Susette","Susi","Susie","Susy","Suzann","Suzanna","Suzanne","Suzette","Suzi","Suzie","Suzy","Sybil","Sybila","Sybilla","Sybille","Sybyl","Sydel","Sydelle","Sydney","Sylvia","Tabatha","Tabbatha","Tabbi","Tabbie","Tabbitha","Tabby","Tabina","Tabitha","Taffy","Talia","Tallia","Tallie","Tallou","Tallulah","Tally","Talya","Talyah","Tamar","Tamara","Tamarah","Tamarra","Tamera","Tami","Tamiko","Tamma","Tammara","Tammi","Tammie","Tammy","Tamqrah","Tamra","Tana","Tandi","Tandie","Tandy","Tanhya","Tani","Tania","Tanitansy","Tansy","Tanya","Tara","Tarah","Tarra","Tarrah","Taryn","Tasha","Tasia","Tate","Tatiana","Tatiania","Tatum","Tawnya","Tawsha","Ted","Tedda","Teddi","Teddie","Teddy","Tedi","Tedra","Teena","TEirtza","Teodora","Tera","Teresa","Terese","Teresina","Teresita","Teressa","Teri","Teriann","Terra","Terri","Terrie","Terrijo","Terry","Terrye","Tersina","Terza","Tess","Tessa","Tessi","Tessie","Tessy","Thalia","Thea","Theadora","Theda","Thekla","Thelma","Theo","Theodora","Theodosia","Theresa","Therese","Theresina","Theresita","Theressa","Therine","Thia","Thomasa","Thomasin","Thomasina","Thomasine","Tiena","Tierney","Tiertza","Tiff","Tiffani","Tiffanie","Tiffany","Tiffi","Tiffie","Tiffy","Tilda","Tildi","Tildie","Tildy","Tillie","Tilly","Tim","Timi","Timmi","Timmie","Timmy","Timothea","Tina","Tine","Tiphani","Tiphanie","Tiphany","Tish","Tisha","Tobe","Tobey","Tobi","Toby","Tobye","Toinette","Toma","Tomasina","Tomasine","Tomi","Tommi","Tommie","Tommy","Toni","Tonia","Tonie","Tony","Tonya","Tonye","Tootsie","Torey","Tori","Torie","Torrie","Tory","Tova","Tove","Tracee","Tracey","Traci","Tracie","Tracy","Trenna","Tresa","Trescha","Tressa","Tricia","Trina","Trish","Trisha","Trista","Trix","Trixi","Trixie","Trixy","Truda","Trude","Trudey","Trudi","Trudie","Trudy","Trula","Tuesday","Twila","Twyla","Tybi","Tybie","Tyne","Ula","Ulla","Ulrica","Ulrika","Ulrikaumeko","Ulrike","Umeko","Una","Ursa","Ursala","Ursola","Ursula","Ursulina","Ursuline","Uta","Val","Valaree","Valaria","Vale","Valeda","Valencia","Valene","Valenka","Valentia","Valentina","Valentine","Valera","Valeria","Valerie","Valery","Valerye","Valida","Valina","Valli","Vallie","Vally","Valma","Valry","Van","Vanda","Vanessa","Vania","Vanna","Vanni","Vannie","Vanny","Vanya","Veda","Velma","Velvet","Venita","Venus","Vera","Veradis","Vere","Verena","Verene","Veriee","Verile","Verina","Verine","Verla","Verna","Vernice","Veronica","Veronika","Veronike","Veronique","Vevay","Vi","Vicki","Vickie","Vicky","Victoria","Vida","Viki","Vikki","Vikky","Vilhelmina","Vilma","Vin","Vina","Vinita","Vinni","Vinnie","Vinny","Viola","Violante","Viole","Violet","Violetta","Violette","Virgie","Virgina","Virginia","Virginie","Vita","Vitia","Vitoria","Vittoria","Viv","Viva","Vivi","Vivia","Vivian","Viviana","Vivianna","Vivianne","Vivie","Vivien","Viviene","Vivienne","Viviyan","Vivyan","Vivyanne","Vonni","Vonnie","Vonny","Vyky","Wallie","Wallis","Walliw","Wally","Waly","Wanda","Wandie","Wandis","Waneta","Wanids","Wenda","Wendeline","Wendi","Wendie","Wendy","Wendye","Wenona","Wenonah","Whitney","Wileen","Wilhelmina","Wilhelmine","Wilie","Willa","Willabella","Willamina","Willetta","Willette","Willi","Willie","Willow","Willy","Willyt","Wilma","Wilmette","Wilona","Wilone","Wilow","Windy","Wini","Winifred","Winna","Winnah","Winne","Winni","Winnie","Winnifred","Winny","Winona","Winonah","Wren","Wrennie","Wylma","Wynn","Wynne","Wynnie","Wynny","Xaviera","Xena","Xenia","Xylia","Xylina","Yalonda","Yasmeen","Yasmin","Yelena","Yetta","Yettie","Yetty","Yevette","Ynes","Ynez","Yoko","Yolanda","Yolande","Yolane","Yolanthe","Yoshi","Yoshiko","Yovonnda","Ysabel","Yvette","Yvonne","Zabrina","Zahara","Zandra","Zaneta","Zara","Zarah","Zaria","Zarla","Zea","Zelda","Zelma","Zena","Zenia","Zia","Zilvia","Zita","Zitella","Zoe","Zola","Zonda","Zondra","Zonnya","Zora","Zorah","Zorana","Zorina","Zorine","Zsa","Zsa","Zsazsa","Zulema","Zuzana"]'),Cn=JSON.parse('["Aaron","Ab","Abba","Abbe","Abbey","Abbie","Abbot","Abbott","Abby","Abdel","Abdul","Abe","Abel","Abelard","Abeu","Abey","Abie","Abner","Abraham","Abrahan","Abram","Abramo","Abran","Ad","Adair","Adam","Adamo","Adams","Adan","Addie","Addison","Addy","Ade","Adelbert","Adham","Adlai","Adler","Ado","Adolf","Adolph","Adolphe","Adolpho","Adolphus","Adrian","Adriano","Adrien","Agosto","Aguie","Aguistin","Aguste","Agustin","Aharon","Ahmad","Ahmed","Ailbert","Akim","Aksel","Al","Alain","Alair","Alan","Aland","Alano","Alanson","Alard","Alaric","Alasdair","Alastair","Alasteir","Alaster","Alberik","Albert","Alberto","Albie","Albrecht","Alden","Aldin","Aldis","Aldo","Aldon","Aldous","Aldric","Aldrich","Aldridge","Aldus","Aldwin","Alec","Alejandro","Alejoa","Aleksandr","Alessandro","Alex","Alexander","Alexandr","Alexandre","Alexandro","Alexandros","Alexei","Alexio","Alexis","Alf","Alfie","Alfons","Alfonse","Alfonso","Alford","Alfred","Alfredo","Alfy","Algernon","Ali","Alic","Alick","Alisander","Alistair","Alister","Alix","Allan","Allard","Allayne","Allen","Alley","Alleyn","Allie","Allin","Allister","Allistir","Allyn","Aloin","Alon","Alonso","Alonzo","Aloysius","Alphard","Alphonse","Alphonso","Alric","Aluin","Aluino","Alva","Alvan","Alvie","Alvin","Alvis","Alvy","Alwin","Alwyn","Alyosha","Amble","Ambros","Ambrose","Ambrosi","Ambrosio","Ambrosius","Amby","Amerigo","Amery","Amory","Amos","Anatol","Anatole","Anatollo","Ancell","Anders","Anderson","Andie","Andonis","Andras","Andre","Andrea","Andreas","Andrej","Andres","Andrew","Andrey","Andris","Andros","Andrus","Andy","Ange","Angel","Angeli","Angelico","Angelo","Angie","Angus","Ansel","Ansell","Anselm","Anson","Anthony","Antin","Antoine","Anton","Antone","Antoni","Antonin","Antonino","Antonio","Antonius","Antons","Antony","Any","Ara","Araldo","Arch","Archaimbaud","Archambault","Archer","Archibald","Archibaldo","Archibold","Archie","Archy","Arel","Ari","Arie","Ariel","Arin","Ario","Aristotle","Arlan","Arlen","Arley","Arlin","Arman","Armand","Armando","Armin","Armstrong","Arnaldo","Arne","Arney","Arni","Arnie","Arnold","Arnoldo","Arnuad","Arny","Aron","Arri","Arron","Art","Artair","Arte","Artemas","Artemis","Artemus","Arther","Arthur","Artie","Artur","Arturo","Artus","Arty","Arv","Arvie","Arvin","Arvy","Asa","Ase","Ash","Ashbey","Ashby","Asher","Ashley","Ashlin","Ashton","Aube","Auberon","Aubert","Aubrey","Augie","August","Augustin","Augustine","Augusto","Augustus","Augy","Aurthur","Austen","Austin","Ave","Averell","Averil","Averill","Avery","Avictor","Avigdor","Avram","Avrom","Ax","Axe","Axel","Aylmar","Aylmer","Aymer","Bail","Bailey","Bailie","Baillie","Baily","Baird","Bald","Balduin","Baldwin","Bale","Ban","Bancroft","Bank","Banky","Bar","Barbabas","Barclay","Bard","Barde","Barn","Barnabas","Barnabe","Barnaby","Barnard","Barnebas","Barnett","Barney","Barnie","Barny","Baron","Barr","Barret","Barrett","Barri","Barrie","Barris","Barron","Barry","Bart","Bartel","Barth","Barthel","Bartholemy","Bartholomeo","Bartholomeus","Bartholomew","Bartie","Bartlet","Bartlett","Bartolemo","Bartolomeo","Barton","Bartram","Barty","Bary","Baryram","Base","Basil","Basile","Basilio","Basilius","Bastian","Bastien","Bat","Batholomew","Baudoin","Bax","Baxie","Baxter","Baxy","Bay","Bayard","Beale","Bealle","Bear","Bearnard","Beau","Beaufort","Beauregard","Beck","Beltran","Ben","Bendick","Bendicty","Bendix","Benedetto","Benedick","Benedict","Benedicto","Benedikt","Bengt","Beniamino","Benito","Benjamen","Benjamin","Benji","Benjie","Benjy","Benn","Bennett","Bennie","Benny","Benoit","Benson","Bent","Bentlee","Bentley","Benton","Benyamin","Ber","Berk","Berke","Berkeley","Berkie","Berkley","Berkly","Berky","Bern","Bernard","Bernardo","Bernarr","Berne","Bernhard","Bernie","Berny","Bert","Berti","Bertie","Berton","Bertram","Bertrand","Bertrando","Berty","Bev","Bevan","Bevin","Bevon","Bil","Bill","Billie","Billy","Bing","Bink","Binky","Birch","Birk","Biron","Bjorn","Blaine","Blair","Blake","Blane","Blayne","Bo","Bob","Bobbie","Bobby","Bogart","Bogey","Boigie","Bond","Bondie","Bondon","Bondy","Bone","Boniface","Boone","Boonie","Boony","Boot","Boote","Booth","Boothe","Bord","Borden","Bordie","Bordy","Borg","Boris","Bourke","Bowie","Boy","Boyce","Boycey","Boycie","Boyd","Brad","Bradan","Brade","Braden","Bradford","Bradley","Bradly","Bradney","Brady","Bram","Bran","Brand","Branden","Brander","Brandon","Brandtr","Brandy","Brandyn","Brannon","Brant","Brantley","Bren","Brendan","Brenden","Brendin","Brendis","Brendon","Brennan","Brennen","Brent","Bret","Brett","Brew","Brewer","Brewster","Brian","Briano","Briant","Brice","Brien","Brig","Brigg","Briggs","Brigham","Brion","Brit","Britt","Brnaba","Brnaby","Brock","Brockie","Brocky","Brod","Broddie","Broddy","Broderic","Broderick","Brodie","Brody","Brok","Bron","Bronnie","Bronny","Bronson","Brook","Brooke","Brooks","Brose","Bruce","Brucie","Bruis","Bruno","Bryan","Bryant","Bryanty","Bryce","Bryn","Bryon","Buck","Buckie","Bucky","Bud","Budd","Buddie","Buddy","Buiron","Burch","Burg","Burgess","Burk","Burke","Burl","Burlie","Burnaby","Burnard","Burr","Burt","Burtie","Burton","Burty","Butch","Byram","Byran","Byrann","Byrle","Byrom","Byron","Cad","Caddric","Caesar","Cal","Caldwell","Cale","Caleb","Calhoun","Callean","Calv","Calvin","Cam","Cameron","Camey","Cammy","Car","Carce","Care","Carey","Carl","Carleton","Carlie","Carlin","Carling","Carlo","Carlos","Carly","Carlyle","Carmine","Carney","Carny","Carolus","Carr","Carrol","Carroll","Carson","Cart","Carter","Carver","Cary","Caryl","Casar","Case","Casey","Cash","Caspar","Casper","Cass","Cassie","Cassius","Caz","Cazzie","Cchaddie","Cece","Cecil","Cecilio","Cecilius","Ced","Cedric","Cello","Cesar","Cesare","Cesaro","Chad","Chadd","Chaddie","Chaddy","Chadwick","Chaim","Chalmers","Chan","Chance","Chancey","Chandler","Chane","Chariot","Charles","Charley","Charlie","Charlton","Chas","Chase","Chaunce","Chauncey","Che","Chen","Ches","Chester","Cheston","Chet","Chev","Chevalier","Chevy","Chic","Chick","Chickie","Chicky","Chico","Chilton","Chip","Chris","Chrisse","Chrissie","Chrissy","Christian","Christiano","Christie","Christoffer","Christoforo","Christoper","Christoph","Christophe","Christopher","Christophorus","Christos","Christy","Chrisy","Chrotoem","Chucho","Chuck","Cirillo","Cirilo","Ciro","Claiborn","Claiborne","Clair","Claire","Clarance","Clare","Clarence","Clark","Clarke","Claudell","Claudian","Claudianus","Claudio","Claudius","Claus","Clay","Clayborn","Clayborne","Claybourne","Clayson","Clayton","Cleavland","Clem","Clemens","Clement","Clemente","Clementius","Clemmie","Clemmy","Cleon","Clerc","Cletis","Cletus","Cleve","Cleveland","Clevey","Clevie","Cliff","Clifford","Clim","Clint","Clive","Cly","Clyde","Clyve","Clywd","Cob","Cobb","Cobbie","Cobby","Codi","Codie","Cody","Cointon","Colan","Colas","Colby","Cole","Coleman","Colet","Colin","Collin","Colman","Colver","Con","Conan","Conant","Conn","Conney","Connie","Connor","Conny","Conrad","Conrade","Conrado","Conroy","Consalve","Constantin","Constantine","Constantino","Conway","Coop","Cooper","Corbet","Corbett","Corbie","Corbin","Corby","Cord","Cordell","Cordie","Cordy","Corey","Cori","Cornall","Cornelius","Cornell","Corney","Cornie","Corny","Correy","Corrie","Cort","Cortie","Corty","Cory","Cos","Cosimo","Cosme","Cosmo","Costa","Court","Courtnay","Courtney","Cozmo","Craggie","Craggy","Craig","Crawford","Creigh","Creight","Creighton","Crichton","Cris","Cristian","Cristiano","Cristobal","Crosby","Cross","Cull","Cullan","Cullen","Culley","Cullie","Cullin","Cully","Culver","Curcio","Curr","Curran","Currey","Currie","Curry","Curt","Curtice","Curtis","Cy","Cyril","Cyrill","Cyrille","Cyrillus","Cyrus","Darcy","Dael","Dag","Dagny","Dal","Dale","Dalis","Dall","Dallas","Dalli","Dallis","Dallon","Dalston","Dalt","Dalton","Dame","Damian","Damiano","Damien","Damon","Dan","Dana","Dane","Dani","Danie","Daniel","Dannel","Dannie","Danny","Dante","Danya","Dar","Darb","Darbee","Darby","Darcy","Dare","Daren","Darill","Darin","Dario","Darius","Darn","Darnall","Darnell","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darryl","Darwin","Daryl","Daryle","Dav","Dave","Daven","Davey","David","Davidde","Davide","Davidson","Davie","Davin","Davis","Davon","Davy","De","Witt","Dean","Deane","Decca","Deck","Del","Delainey","Delaney","Delano","Delbert","Dell","Delmar","Delmer","Delmor","Delmore","Demetre","Demetri","Demetris","Demetrius","Demott","Den","Dene","Denis","Dennet","Denney","Dennie","Dennis","Dennison","Denny","Denver","Denys","Der","Derby","Derek","Derick","Derk","Dermot","Derrek","Derrick","Derrik","Derril","Derron","Derry","Derward","Derwin","Des","Desi","Desmond","Desmund","Dev","Devin","Devland","Devlen","Devlin","Devy","Dew","Dewain","Dewey","Dewie","Dewitt","Dex","Dexter","Diarmid","Dick","Dickie","Dicky","Diego","Dieter","Dietrich","Dilan","Dill","Dillie","Dillon","Dilly","Dimitri","Dimitry","Dino","Dion","Dionisio","Dionysus","Dirk","Dmitri","Dolf","Dolph","Dom","Domenic","Domenico","Domingo","Dominic","Dominick","Dominik","Dominique","Don","Donal","Donall","Donalt","Donaugh","Donavon","Donn","Donnell","Donnie","Donny","Donovan","Dore","Dorey","Dorian","Dorie","Dory","Doug","Dougie","Douglas","Douglass","Dougy","Dov","Doy","Doyle","Drake","Drew","Dru","Drud","Drugi","Duane","Dud","Dudley","Duff","Duffie","Duffy","Dugald","Duke","Dukey","Dukie","Duky","Dun","Dunc","Duncan","Dunn","Dunstan","Dur","Durand","Durant","Durante","Durward","Dwain","Dwayne","Dwight","Dylan","Eadmund","Eal","Eamon","Earl","Earle","Earlie","Early","Earvin","Eb","Eben","Ebeneser","Ebenezer","Eberhard","Eberto","Ed","Edan","Edd","Eddie","Eddy","Edgar","Edgard","Edgardo","Edik","Edlin","Edmon","Edmund","Edouard","Edsel","Eduard","Eduardo","Eduino","Edvard","Edward","Edwin","Efrem","Efren","Egan","Egbert","Egon","Egor","El","Elbert","Elden","Eldin","Eldon","Eldredge","Eldridge","Eli","Elia","Elias","Elihu","Elijah","Eliot","Elisha","Ellary","Ellerey","Ellery","Elliot","Elliott","Ellis","Ellswerth","Ellsworth","Ellwood","Elmer","Elmo","Elmore","Elnar","Elroy","Elston","Elsworth","Elton","Elvin","Elvis","Elvyn","Elwin","Elwood","Elwyn","Ely","Em","Emanuel","Emanuele","Emelen","Emerson","Emery","Emile","Emilio","Emlen","Emlyn","Emmanuel","Emmerich","Emmery","Emmet","Emmett","Emmit","Emmott","Emmy","Emory","Engelbert","Englebert","Ennis","Enoch","Enos","Enrico","Enrique","Ephraim","Ephrayim","Ephrem","Erasmus","Erastus","Erek","Erhard","Erhart","Eric","Erich","Erick","Erie","Erik","Erin","Erl","Ermanno","Ermin","Ernest","Ernesto","Ernestus","Ernie","Ernst","Erny","Errick","Errol","Erroll","Erskine","Erv","ErvIn","Erwin","Esdras","Esme","Esra","Esteban","Estevan","Etan","Ethan","Ethe","Ethelbert","Ethelred","Etienne","Ettore","Euell","Eugen","Eugene","Eugenio","Eugenius","Eustace","Ev","Evan","Evelin","Evelyn","Even","Everard","Evered","Everett","Evin","Evyn","Ewan","Eward","Ewart","Ewell","Ewen","Ezechiel","Ezekiel","Ezequiel","Eziechiele","Ezra","Ezri","Fabe","Faber","Fabian","Fabiano","Fabien","Fabio","Fair","Fairfax","Fairleigh","Fairlie","Falito","Falkner","Far","Farlay","Farlee","Farleigh","Farley","Farlie","Farly","Farr","Farrel","Farrell","Farris","Faulkner","Fax","Federico","Fee","Felic","Felice","Felicio","Felike","Feliks","Felipe","Felix","Felizio","Feodor","Ferd","Ferdie","Ferdinand","Ferdy","Fergus","Ferguson","Fernando","Ferrel","Ferrell","Ferris","Fidel","Fidelio","Fidole","Field","Fielding","Fields","Filbert","Filberte","Filberto","Filip","Filippo","Filmer","Filmore","Fin","Findlay","Findley","Finlay","Finley","Finn","Fitz","Fitzgerald","Flem","Fleming","Flemming","Fletch","Fletcher","Flin","Flinn","Flint","Florian","Flory","Floyd","Flynn","Fons","Fonsie","Fonz","Fonzie","Forbes","Ford","Forest","Forester","Forrest","Forrester","Forster","Foss","Foster","Fowler","Fran","Francesco","Franchot","Francis","Francisco","Franciskus","Francklin","Francklyn","Francois","Frank","Frankie","Franklin","Franklyn","Franky","Frannie","Franny","Frans","Fransisco","Frants","Franz","Franzen","Frasco","Fraser","Frasier","Frasquito","Fraze","Frazer","Frazier","Fred","Freddie","Freddy","Fredek","Frederic","Frederich","Frederick","Frederico","Frederigo","Frederik","Fredric","Fredrick","Free","Freedman","Freeland","Freeman","Freemon","Fremont","Friedrich","Friedrick","Fritz","Fulton","Gabbie","Gabby","Gabe","Gabi","Gabie","Gabriel","Gabriele","Gabriello","Gaby","Gael","Gaelan","Gage","Gail","Gaile","Gal","Gale","Galen","Gallagher","Gallard","Galvan","Galven","Galvin","Gamaliel","Gan","Gannie","Gannon","Ganny","Gar","Garald","Gard","Gardener","Gardie","Gardiner","Gardner","Gardy","Gare","Garek","Gareth","Garey","Garfield","Garik","Garner","Garold","Garrard","Garrek","Garret","Garreth","Garrett","Garrick","Garrik","Garrot","Garrott","Garry","Garth","Garv","Garvey","Garvin","Garvy","Garwin","Garwood","Gary","Gaspar","Gaspard","Gasparo","Gasper","Gaston","Gaultiero","Gauthier","Gav","Gavan","Gaven","Gavin","Gawain","Gawen","Gay","Gayelord","Gayle","Gayler","Gaylor","Gaylord","Gearalt","Gearard","Gene","Geno","Geoff","Geoffrey","Geoffry","Georas","Geordie","Georg","George","Georges","Georgi","Georgie","Georgy","Gerald","Gerard","Gerardo","Gerek","Gerhard","Gerhardt","Geri","Gerick","Gerik","Germain","Germaine","Germayne","Gerome","Gerrard","Gerri","Gerrie","Gerry","Gery","Gherardo","Giacobo","Giacomo","Giacopo","Gian","Gianni","Giavani","Gib","Gibb","Gibbie","Gibby","Gideon","Giff","Giffard","Giffer","Giffie","Gifford","Giffy","Gil","Gilbert","Gilberto","Gilburt","Giles","Gill","Gilles","Ginger","Gino","Giordano","Giorgi","Giorgio","Giovanni","Giraldo","Giraud","Giselbert","Giulio","Giuseppe","Giustino","Giusto","Glen","Glenden","Glendon","Glenn","Glyn","Glynn","Godard","Godart","Goddard","Goddart","Godfree","Godfrey","Godfry","Godwin","Gonzales","Gonzalo","Goober","Goran","Goraud","Gordan","Gorden","Gordie","Gordon","Gordy","Gothart","Gottfried","Grace","Gradeigh","Gradey","Grady","Graehme","Graeme","Graham","Graig","Gram","Gran","Grange","Granger","Grannie","Granny","Grant","Grantham","Granthem","Grantley","Granville","Gray","Greg","Gregg","Greggory","Gregoire","Gregoor","Gregor","Gregorio","Gregorius","Gregory","Grenville","Griff","Griffie","Griffin","Griffith","Griffy","Gris","Griswold","Griz","Grove","Grover","Gualterio","Guglielmo","Guido","Guilbert","Guillaume","Guillermo","Gun","Gunar","Gunner","Guntar","Gunter","Gunther","Gus","Guss","Gustaf","Gustav","Gustave","Gustavo","Gustavus","Guthrey","Guthrie","Guthry","Guy","Had","Hadlee","Hadleigh","Hadley","Hadrian","Hagan","Hagen","Hailey","Haily","Hakeem","Hakim","Hal","Hale","Haleigh","Haley","Hall","Hallsy","Halsey","Halsy","Ham","Hamel","Hamid","Hamil","Hamilton","Hamish","Hamlen","Hamlin","Hammad","Hamnet","Hanan","Hank","Hans","Hansiain","Hanson","Harald","Harbert","Harcourt","Hardy","Harlan","Harland","Harlen","Harley","Harlin","Harman","Harmon","Harold","Haroun","Harp","Harper","Harris","Harrison","Harry","Hart","Hartley","Hartwell","Harv","Harvey","Harwell","Harwilll","Hasheem","Hashim","Haskel","Haskell","Haslett","Hastie","Hastings","Hasty","Haven","Hayden","Haydon","Hayes","Hayward","Haywood","Hayyim","Haze","Hazel","Hazlett","Heall","Heath","Hebert","Hector","Heindrick","Heinrick","Heinrik","Henderson","Hendrick","Hendrik","Henri","Henrik","Henry","Herb","Herbert","Herbie","Herby","Herc","Hercule","Hercules","Herculie","Heriberto","Herman","Hermann","Hermie","Hermon","Hermy","Hernando","Herold","Herrick","Hersch","Herschel","Hersh","Hershel","Herve","Hervey","Hew","Hewe","Hewet","Hewett","Hewie","Hewitt","Heywood","Hi","Hieronymus","Hilario","Hilarius","Hilary","Hill","Hillard","Hillary","Hillel","Hillery","Hilliard","Hillie","Hillier","Hilly","Hillyer","Hilton","Hinze","Hiram","Hirsch","Hobard","Hobart","Hobey","Hobie","Hodge","Hoebart","Hogan","Holden","Hollis","Holly","Holmes","Holt","Homer","Homere","Homerus","Horace","Horacio","Horatio","Horatius","Horst","Hort","Horten","Horton","Howard","Howey","Howie","Hoyt","Hube","Hubert","Huberto","Hubey","Hubie","Huey","Hugh","Hughie","Hugibert","Hugo","Hugues","Humbert","Humberto","Humfrey","Humfrid","Humfried","Humphrey","Hunfredo","Hunt","Hunter","Huntington","Huntlee","Huntley","Hurlee","Hurleigh","Hurley","Husain","Husein","Hussein","Hy","Hyatt","Hyman","Hymie","Iago","Iain","Ian","Ibrahim","Ichabod","Iggie","Iggy","Ignace","Ignacio","Ignacius","Ignatius","Ignaz","Ignazio","Igor","Ike","Ikey","Ilaire","Ilario","Immanuel","Ingamar","Ingar","Ingelbert","Ingemar","Inger","Inglebert","Inglis","Ingmar","Ingra","Ingram","Ingrim","Inigo","Inness","Innis","Iorgo","Iorgos","Iosep","Ira","Irv","Irvin","Irvine","Irving","Irwin","Irwinn","Isa","Isaac","Isaak","Isac","Isacco","Isador","Isadore","Isaiah","Isak","Isiahi","Isidor","Isidore","Isidoro","Isidro","Israel","Issiah","Itch","Ivan","Ivar","Ive","Iver","Ives","Ivor","Izaak","Izak","Izzy","Jabez","Jack","Jackie","Jackson","Jacky","Jacob","Jacobo","Jacques","Jae","Jaime","Jaimie","Jake","Jakie","Jakob","Jamaal","Jamal","James","Jameson","Jamesy","Jamey","Jamie","Jamil","Jamill","Jamison","Jammal","Jan","Janek","Janos","Jarad","Jard","Jareb","Jared","Jarib","Jarid","Jarrad","Jarred","Jarret","Jarrett","Jarrid","Jarrod","Jarvis","Jase","Jasen","Jason","Jasper","Jasun","Javier","Jay","Jaye","Jayme","Jaymie","Jayson","Jdavie","Jean","Jecho","Jed","Jedd","Jeddy","Jedediah","Jedidiah","Jeff","Jefferey","Jefferson","Jeffie","Jeffrey","Jeffry","Jeffy","Jehu","Jeno","Jens","Jephthah","Jerad","Jerald","Jeramey","Jeramie","Jere","Jereme","Jeremiah","Jeremias","Jeremie","Jeremy","Jermain","Jermaine","Jermayne","Jerome","Jeromy","Jerri","Jerrie","Jerrold","Jerrome","Jerry","Jervis","Jess","Jesse","Jessee","Jessey","Jessie","Jesus","Jeth","Jethro","Jim","Jimmie","Jimmy","Jo","Joachim","Joaquin","Job","Jock","Jocko","Jodi","Jodie","Jody","Joe","Joel","Joey","Johan","Johann","Johannes","John","Johnathan","Johnathon","Johnnie","Johnny","Johny","Jon","Jonah","Jonas","Jonathan","Jonathon","Jone","Jordan","Jordon","Jorgan","Jorge","Jory","Jose","Joseito","Joseph","Josh","Joshia","Joshua","Joshuah","Josiah","Josias","Jourdain","Jozef","Juan","Jud","Judah","Judas","Judd","Jude","Judon","Jule","Jules","Julian","Julie","Julio","Julius","Justen","Justin","Justinian","Justino","Justis","Justus","Kahaleel","Kahlil","Kain","Kaine","Kaiser","Kale","Kaleb","Kalil","Kalle","Kalvin","Kane","Kareem","Karel","Karim","Karl","Karlan","Karlens","Karlik","Karlis","Karney","Karoly","Kaspar","Kasper","Kayne","Kean","Keane","Kearney","Keary","Keefe","Keefer","Keelby","Keen","Keenan","Keene","Keir","Keith","Kelbee","Kelby","Kele","Kellby","Kellen","Kelley","Kelly","Kelsey","Kelvin","Kelwin","Ken","Kendal","Kendall","Kendell","Kendrick","Kendricks","Kenn","Kennan","Kennedy","Kenneth","Kennett","Kennie","Kennith","Kenny","Kenon","Kent","Kenton","Kenyon","Ker","Kerby","Kerk","Kermie","Kermit","Kermy","Kerr","Kerry","Kerwin","Kerwinn","Kev","Kevan","Keven","Kevin","Kevon","Khalil","Kiel","Kienan","Kile","Kiley","Kilian","Killian","Killie","Killy","Kim","Kimball","Kimbell","Kimble","Kin","Kincaid","King","Kingsley","Kingsly","Kingston","Kinnie","Kinny","Kinsley","Kip","Kipp","Kippar","Kipper","Kippie","Kippy","Kirby","Kirk","Kit","Klaus","Klemens","Klement","Kleon","Kliment","Knox","Koenraad","Konrad","Konstantin","Konstantine","Korey","Kort","Kory","Kris","Krisha","Krishna","Krishnah","Krispin","Kristian","Kristo","Kristofer","Kristoffer","Kristofor","Kristoforo","Kristopher","Kristos","Kurt","Kurtis","Ky","Kyle","Kylie","Laird","Lalo","Lamar","Lambert","Lammond","Lamond","Lamont","Lance","Lancelot","Land","Lane","Laney","Langsdon","Langston","Lanie","Lannie","Lanny","Larry","Lars","Laughton","Launce","Lauren","Laurence","Laurens","Laurent","Laurie","Lauritz","Law","Lawrence","Lawry","Lawton","Lay","Layton","Lazar","Lazare","Lazaro","Lazarus","Lee","Leeland","Lefty","Leicester","Leif","Leigh","Leighton","Lek","Leland","Lem","Lemar","Lemmie","Lemmy","Lemuel","Lenard","Lenci","Lennard","Lennie","Leo","Leon","Leonard","Leonardo","Leonerd","Leonhard","Leonid","Leonidas","Leopold","Leroi","Leroy","Les","Lesley","Leslie","Lester","Leupold","Lev","Levey","Levi","Levin","Levon","Levy","Lew","Lewes","Lewie","Lewiss","Lezley","Liam","Lief","Lin","Linc","Lincoln","Lind","Lindon","Lindsay","Lindsey","Lindy","Link","Linn","Linoel","Linus","Lion","Lionel","Lionello","Lisle","Llewellyn","Lloyd","Llywellyn","Lock","Locke","Lockwood","Lodovico","Logan","Lombard","Lon","Lonnard","Lonnie","Lonny","Lorant","Loren","Lorens","Lorenzo","Lorin","Lorne","Lorrie","Lorry","Lothaire","Lothario","Lou","Louie","Louis","Lovell","Lowe","Lowell","Lowrance","Loy","Loydie","Luca","Lucais","Lucas","Luce","Lucho","Lucian","Luciano","Lucias","Lucien","Lucio","Lucius","Ludovico","Ludvig","Ludwig","Luigi","Luis","Lukas","Luke","Lutero","Luther","Ly","Lydon","Lyell","Lyle","Lyman","Lyn","Lynn","Lyon","Mac","Mace","Mack","Mackenzie","Maddie","Maddy","Madison","Magnum","Mahmoud","Mahmud","Maison","Maje","Major","Mal","Malachi","Malchy","Malcolm","Mallory","Malvin","Man","Mandel","Manfred","Mannie","Manny","Mano","Manolo","Manuel","Mar","Marc","Marcel","Marcello","Marcellus","Marcelo","Marchall","Marco","Marcos","Marcus","Marijn","Mario","Marion","Marius","Mark","Markos","Markus","Marlin","Marlo","Marlon","Marlow","Marlowe","Marmaduke","Marsh","Marshal","Marshall","Mart","Martainn","Marten","Martie","Martin","Martino","Marty","Martyn","Marv","Marve","Marven","Marvin","Marwin","Mason","Massimiliano","Massimo","Mata","Mateo","Mathe","Mathew","Mathian","Mathias","Matias","Matt","Matteo","Matthaeus","Mattheus","Matthew","Matthias","Matthieu","Matthiew","Matthus","Mattias","Mattie","Matty","Maurice","Mauricio","Maurie","Maurise","Maurits","Maurizio","Maury","Max","Maxie","Maxim","Maximilian","Maximilianus","Maximilien","Maximo","Maxwell","Maxy","Mayer","Maynard","Mayne","Maynord","Mayor","Mead","Meade","Meier","Meir","Mel","Melvin","Melvyn","Menard","Mendel","Mendie","Mendy","Meredeth","Meredith","Merell","Merill","Merle","Merrel","Merrick","Merrill","Merry","Merv","Mervin","Merwin","Merwyn","Meryl","Meyer","Mic","Micah","Michael","Michail","Michal","Michale","Micheal","Micheil","Michel","Michele","Mick","Mickey","Mickie","Micky","Miguel","Mikael","Mike","Mikel","Mikey","Mikkel","Mikol","Mile","Miles","Mill","Millard","Miller","Milo","Milt","Miltie","Milton","Milty","Miner","Minor","Mischa","Mitch","Mitchael","Mitchel","Mitchell","Moe","Mohammed","Mohandas","Mohandis","Moise","Moises","Moishe","Monro","Monroe","Montague","Monte","Montgomery","Monti","Monty","Moore","Mord","Mordecai","Mordy","Morey","Morgan","Morgen","Morgun","Morie","Moritz","Morlee","Morley","Morly","Morrie","Morris","Morry","Morse","Mort","Morten","Mortie","Mortimer","Morton","Morty","Mose","Moses","Moshe","Moss","Mozes","Muffin","Muhammad","Munmro","Munroe","Murdoch","Murdock","Murray","Murry","Murvyn","My","Myca","Mycah","Mychal","Myer","Myles","Mylo","Myron","Myrvyn","Myrwyn","Nahum","Nap","Napoleon","Nappie","Nappy","Nat","Natal","Natale","Nataniel","Nate","Nathan","Nathanael","Nathanial","Nathaniel","Nathanil","Natty","Neal","Neale","Neall","Nealon","Nealson","Nealy","Ned","Neddie","Neddy","Neel","Nefen","Nehemiah","Neil","Neill","Neils","Nels","Nelson","Nero","Neron","Nester","Nestor","Nev","Nevil","Nevile","Neville","Nevin","Nevins","Newton","Nial","Niall","Niccolo","Nicholas","Nichole","Nichols","Nick","Nickey","Nickie","Nicko","Nickola","Nickolai","Nickolas","Nickolaus","Nicky","Nico","Nicol","Nicola","Nicolai","Nicolais","Nicolas","Nicolis","Niel","Niels","Nigel","Niki","Nikita","Nikki","Niko","Nikola","Nikolai","Nikolaos","Nikolas","Nikolaus","Nikolos","Nikos","Nil","Niles","Nils","Nilson","Niven","Noach","Noah","Noak","Noam","Nobe","Nobie","Noble","Noby","Noe","Noel","Nolan","Noland","Noll","Nollie","Nolly","Norbert","Norbie","Norby","Norman","Normand","Normie","Normy","Norrie","Norris","Norry","North","Northrop","Northrup","Norton","Nowell","Nye","Oates","Obadiah","Obadias","Obed","Obediah","Oberon","Obidiah","Obie","Oby","Octavius","Ode","Odell","Odey","Odie","Odo","Ody","Ogdan","Ogden","Ogdon","Olag","Olav","Ole","Olenolin","Olin","Oliver","Olivero","Olivier","Oliviero","Ollie","Olly","Olvan","Omar","Omero","Onfre","Onfroi","Onofredo","Oran","Orazio","Orbadiah","Oren","Orin","Orion","Orlan","Orland","Orlando","Orran","Orren","Orrin","Orson","Orton","Orv","Orville","Osbert","Osborn","Osborne","Osbourn","Osbourne","Osgood","Osmond","Osmund","Ossie","Oswald","Oswell","Otes","Othello","Otho","Otis","Otto","Owen","Ozzie","Ozzy","Pablo","Pace","Packston","Paco","Pacorro","Paddie","Paddy","Padget","Padgett","Padraic","Padraig","Padriac","Page","Paige","Pail","Pall","Palm","Palmer","Panchito","Pancho","Paolo","Papageno","Paquito","Park","Parke","Parker","Parnell","Parrnell","Parry","Parsifal","Pascal","Pascale","Pasquale","Pat","Pate","Paten","Patin","Paton","Patric","Patrice","Patricio","Patrick","Patrizio","Patrizius","Patsy","Patten","Pattie","Pattin","Patton","Patty","Paul","Paulie","Paulo","Pauly","Pavel","Pavlov","Paxon","Paxton","Payton","Peadar","Pearce","Pebrook","Peder","Pedro","Peirce","Pembroke","Pen","Penn","Pennie","Penny","Penrod","Pepe","Pepillo","Pepito","Perceval","Percival","Percy","Perice","Perkin","Pernell","Perren","Perry","Pete","Peter","Peterus","Petey","Petr","Peyter","Peyton","Phil","Philbert","Philip","Phillip","Phillipe","Phillipp","Phineas","Phip","Pierce","Pierre","Pierson","Pieter","Pietrek","Pietro","Piggy","Pincas","Pinchas","Pincus","Piotr","Pip","Pippo","Pooh","Port","Porter","Portie","Porty","Poul","Powell","Pren","Prent","Prentice","Prentiss","Prescott","Preston","Price","Prince","Prinz","Pryce","Puff","Purcell","Putnam","Putnem","Pyotr","Quent","Quentin","Quill","Quillan","Quincey","Quincy","Quinlan","Quinn","Quint","Quintin","Quinton","Quintus","Rab","Rabbi","Rabi","Rad","Radcliffe","Raddie","Raddy","Rafael","Rafaellle","Rafaello","Rafe","Raff","Raffaello","Raffarty","Rafferty","Rafi","Ragnar","Raimondo","Raimund","Raimundo","Rainer","Raleigh","Ralf","Ralph","Ram","Ramon","Ramsay","Ramsey","Rance","Rancell","Rand","Randal","Randall","Randell","Randi","Randie","Randolf","Randolph","Randy","Ransell","Ransom","Raoul","Raphael","Raul","Ravi","Ravid","Raviv","Rawley","Ray","Raymond","Raymund","Raynard","Rayner","Raynor","Read","Reade","Reagan","Reagen","Reamonn","Red","Redd","Redford","Reece","Reed","Rees","Reese","Reg","Regan","Regen","Reggie","Reggis","Reggy","Reginald","Reginauld","Reid","Reidar","Reider","Reilly","Reinald","Reinaldo","Reinaldos","Reinhard","Reinhold","Reinold","Reinwald","Rem","Remington","Remus","Renado","Renaldo","Renard","Renato","Renaud","Renault","Rene","Reube","Reuben","Reuven","Rex","Rey","Reynard","Reynold","Reynolds","Rhett","Rhys","Ric","Ricard","Ricardo","Riccardo","Rice","Rich","Richard","Richardo","Richart","Richie","Richmond","Richmound","Richy","Rick","Rickard","Rickert","Rickey","Ricki","Rickie","Ricky","Ricoriki","Rik","Rikki","Riley","Rinaldo","Ring","Ringo","Riobard","Riordan","Rip","Ripley","Ritchie","Roarke","Rob","Robb","Robbert","Robbie","Robby","Robers","Robert","Roberto","Robin","Robinet","Robinson","Rochester","Rock","Rockey","Rockie","Rockwell","Rocky","Rod","Rodd","Roddie","Roddy","Roderic","Roderich","Roderick","Roderigo","Rodge","Rodger","Rodney","Rodolfo","Rodolph","Rodolphe","Rodrick","Rodrigo","Rodrique","Rog","Roger","Rogerio","Rogers","Roi","Roland","Rolando","Roldan","Roley","Rolf","Rolfe","Rolland","Rollie","Rollin","Rollins","Rollo","Rolph","Roma","Romain","Roman","Romeo","Ron","Ronald","Ronnie","Ronny","Rooney","Roosevelt","Rorke","Rory","Rosco","Roscoe","Ross","Rossie","Rossy","Roth","Rourke","Rouvin","Rowan","Rowen","Rowland","Rowney","Roy","Royal","Royall","Royce","Rriocard","Rube","Ruben","Rubin","Ruby","Rudd","Ruddie","Ruddy","Rudie","Rudiger","Rudolf","Rudolfo","Rudolph","Rudy","Rudyard","Rufe","Rufus","Ruggiero","Rupert","Ruperto","Ruprecht","Rurik","Russ","Russell","Rustie","Rustin","Rusty","Rutger","Rutherford","Rutledge","Rutter","Ruttger","Ruy","Ryan","Ryley","Ryon","Ryun","Sal","Saleem","Salem","Salim","Salmon","Salomo","Salomon","Salomone","Salvador","Salvatore","Salvidor","Sam","Sammie","Sammy","Sampson","Samson","Samuel","Samuele","Sancho","Sander","Sanders","Sanderson","Sandor","Sandro","Sandy","Sanford","Sanson","Sansone","Sarge","Sargent","Sascha","Sasha","Saul","Sauncho","Saunder","Saunders","Saunderson","Saundra","Sauveur","Saw","Sawyer","Sawyere","Sax","Saxe","Saxon","Say","Sayer","Sayers","Sayre","Sayres","Scarface","Schuyler","Scot","Scott","Scotti","Scottie","Scotty","Seamus","Sean","Sebastian","Sebastiano","Sebastien","See","Selby","Selig","Serge","Sergeant","Sergei","Sergent","Sergio","Seth","Seumas","Seward","Seymour","Shadow","Shae","Shaine","Shalom","Shamus","Shanan","Shane","Shannan","Shannon","Shaughn","Shaun","Shaw","Shawn","Shay","Shayne","Shea","Sheff","Sheffie","Sheffield","Sheffy","Shelby","Shelden","Shell","Shelley","Shelton","Shem","Shep","Shepard","Shepherd","Sheppard","Shepperd","Sheridan","Sherlock","Sherlocke","Sherm","Sherman","Shermie","Shermy","Sherwin","Sherwood","Sherwynd","Sholom","Shurlock","Shurlocke","Shurwood","Si","Sibyl","Sid","Sidnee","Sidney","Siegfried","Siffre","Sig","Sigfrid","Sigfried","Sigismond","Sigismondo","Sigismund","Sigismundo","Sigmund","Sigvard","Silas","Silvain","Silvan","Silvano","Silvanus","Silvester","Silvio","Sim","Simeon","Simmonds","Simon","Simone","Sinclair","Sinclare","Siward","Skell","Skelly","Skip","Skipp","Skipper","Skippie","Skippy","Skipton","Sky","Skye","Skylar","Skyler","Slade","Sloan","Sloane","Sly","Smith","Smitty","Sol","Sollie","Solly","Solomon","Somerset","Son","Sonnie","Sonny","Spence","Spencer","Spense","Spenser","Spike","Stacee","Stacy","Staffard","Stafford","Staford","Stan","Standford","Stanfield","Stanford","Stanislas","Stanislaus","Stanislaw","Stanleigh","Stanley","Stanly","Stanton","Stanwood","Stavro","Stavros","Stearn","Stearne","Stefan","Stefano","Steffen","Stephan","Stephanus","Stephen","Sterling","Stern","Sterne","Steve","Steven","Stevie","Stevy","Steward","Stewart","Stillman","Stillmann","Stinky","Stirling","Stu","Stuart","Sullivan","Sully","Sumner","Sunny","Sutherlan","Sutherland","Sutton","Sven","Svend","Swen","Syd","Sydney","Sylas","Sylvan","Sylvester","Syman","Symon","Tab","Tabb","Tabbie","Tabby","Taber","Tabor","Tad","Tadd","Taddeo","Taddeusz","Tadeas","Tadeo","Tades","Tadio","Tailor","Tait","Taite","Talbert","Talbot","Tallie","Tally","Tam","Tamas","Tammie","Tammy","Tan","Tann","Tanner","Tanney","Tannie","Tanny","Tarrance","Tate","Taylor","Teador","Ted","Tedd","Teddie","Teddy","Tedie","Tedman","Tedmund","Temp","Temple","Templeton","Teodoor","Teodor","Teodorico","Teodoro","Terence","Terencio","Terrance","Terrel","Terrell","Terrence","Terri","Terrill","Terry","Thacher","Thaddeus","Thaddus","Thadeus","Thain","Thaine","Thane","Thatch","Thatcher","Thaxter","Thayne","Thebault","Thedric","Thedrick","Theo","Theobald","Theodor","Theodore","Theodoric","Thibaud","Thibaut","Thom","Thoma","Thomas","Thor","Thorin","Thorn","Thorndike","Thornie","Thornton","Thorny","Thorpe","Thorstein","Thorsten","Thorvald","Thurstan","Thurston","Tibold","Tiebold","Tiebout","Tiler","Tim","Timmie","Timmy","Timofei","Timoteo","Timothee","Timotheus","Timothy","Tirrell","Tito","Titos","Titus","Tobe","Tobiah","Tobias","Tobie","Tobin","Tobit","Toby","Tod","Todd","Toddie","Toddy","Toiboid","Tom","Tomas","Tomaso","Tome","Tomkin","Tomlin","Tommie","Tommy","Tonnie","Tony","Tore","Torey","Torin","Torr","Torrance","Torre","Torrence","Torrey","Torrin","Torry","Town","Towney","Townie","Townsend","Towny","Trace","Tracey","Tracie","Tracy","Traver","Travers","Travis","Travus","Trefor","Tremain","Tremaine","Tremayne","Trent","Trenton","Trev","Trevar","Trever","Trevor","Trey","Trip","Tripp","Tris","Tristam","Tristan","Troy","Trstram","Trueman","Trumaine","Truman","Trumann","Tuck","Tucker","Tuckie","Tucky","Tudor","Tull","Tulley","Tully","Turner","Ty","Tybalt","Tye","Tyler","Tymon","Tymothy","Tynan","Tyrone","Tyrus","Tyson","Udale","Udall","Udell","Ugo","Ulberto","Ulick","Ulises","Ulric","Ulrich","Ulrick","Ulysses","Umberto","Upton","Urbain","Urban","Urbano","Urbanus","Uri","Uriah","Uriel","Urson","Vachel","Vaclav","Vail","Val","Valdemar","Vale","Valentijn","Valentin","Valentine","Valentino","Valle","Van","Vance","Vanya","Vasili","Vasilis","Vasily","Vassili","Vassily","Vaughan","Vaughn","Verge","Vergil","Vern","Verne","Vernen","Verney","Vernon","Vernor","Vic","Vick","Victoir","Victor","Vidovic","Vidovik","Vin","Vince","Vincent","Vincents","Vincenty","Vincenz","Vinnie","Vinny","Vinson","Virge","Virgie","Virgil","Virgilio","Vite","Vito","Vittorio","Vlad","Vladamir","Vladimir","Von","Wade","Wadsworth","Wain","Wainwright","Wait","Waite","Waiter","Wake","Wakefield","Wald","Waldemar","Walden","Waldo","Waldon","Walker","Wallace","Wallache","Wallas","Wallie","Wallis","Wally","Walsh","Walt","Walther","Walton","Wang","Ward","Warde","Warden","Ware","Waring","Warner","Warren","Wash","Washington","Wat","Waverley","Waverly","Way","Waylan","Wayland","Waylen","Waylin","Waylon","Wayne","Web","Webb","Weber","Webster","Weidar","Weider","Welbie","Welby","Welch","Wells","Welsh","Wendall","Wendel","Wendell","Werner","Wernher","Wes","Wesley","West","Westbrook","Westbrooke","Westleigh","Westley","Weston","Weylin","Wheeler","Whit","Whitaker","Whitby","Whitman","Whitney","Whittaker","Wiatt","Wilbert","Wilbur","Wilburt","Wilden","Wildon","Wilek","Wiley","Wilfred","Wilfrid","Wilhelm","Will","Willard","Willdon","Willem","Willey","Willi","William","Willie","Willis","Willy","Wilmar","Wilmer","Wilt","Wilton","Win","Windham","Winfield","Winfred","Winifield","Winn","Winnie","Winny","Winslow","Winston","Winthrop","Wit","Wittie","Witty","Wolf","Wolfgang","Wolfie","Wolfy","Wood","Woodie","Woodman","Woodrow","Woody","Worden","Worth","Worthington","Worthy","Wright","Wyatan","Wyatt","Wye","Wylie","Wyn","Wyndham","Wynn","Xavier","Xenos","Xerxes","Xever","Ximenes","Ximenez","Xymenes","Yale","Yanaton","Yance","Yancey","Yancy","Yank","Yankee","Yard","Yardley","Yehudi","Yehudit","Yorgo","Yorgos","York","Yorke","Yorker","Yul","Yule","Yulma","Yuma","Yuri","Yurik","Yves","Yvon","Yvor","Zaccaria","Zach","Zacharia","Zachariah","Zacharias","Zacharie","Zachary","Zacherie","Zachery","Zack","Zackariah","Zak","Zane","Zared","Zeb","Zebadiah","Zebedee","Zebulen","Zebulon","Zechariah","Zed","Zedekiah","Zeke","Zelig","Zerk","Zollie","Zolly"]'),$=a=>a.trim().toLowerCase(),ve=a=>[...new Map(a.map(i=>[$(i),i.trim()])).values()],Ae={female:ve(kn),male:ve(Cn)};function Sn(a,i,t){const r=new Set(t.map($));r.add($(i));let l=Ae[a].filter(s=>!r.has($(s)));return l.length||(l=Ae[a].filter(s=>$(s)!==$(i))),l[Math.floor(Math.random()*l.length)]}function Ki({bot:a,patch:i,activeState:t,mascotMotion:r,namePlaceholder:l,parts:s}){const[d,h]=x.useState(!1),{draft:u}=H(),{state:c}=G(),g=y=>!s||s.includes(y);return e.jsxs("div",{className:"flex flex-col gap-4",children:[g("avatar")&&e.jsx(bn,{bot:a,activeState:t,mascotMotion:r,onPatch:i}),g("provenance")&&e.jsx(vn,{bot:a}),g("name")&&e.jsxs("div",{children:[e.jsxs("div",{className:"mb-1.5 flex flex-wrap items-center justify-between gap-x-3 gap-y-1",children:[e.jsx("label",{htmlFor:`bot-name-${a.id}`,className:"text-[13px] text-ink-secondary",children:n("botSettings.identity.name")}),u&&e.jsx("div",{className:"flex flex-wrap gap-1",children:["female","male"].map(y=>e.jsx("button",{type:"button",className:"rounded-md px-2 py-1 text-xs text-ink-secondary hover:bg-control hover:text-ink",onClick:()=>i({name:Sn(y,a.name,c.bots.map(m=>m.name))}),children:n(y==="female"?"newBot.randomFemaleName":"newBot.randomMaleName")},y))})]}),e.jsx(K,{bot:a,kind:"chief"}),e.jsx("input",{id:`bot-name-${a.id}`,className:O,maxLength:Y.name,value:a.name,placeholder:l,onChange:y=>i({name:y.target.value})})]}),g("title")&&e.jsxs(fn,{label:n("botSettings.identity.title"),children:[e.jsx(K,{bot:a,kind:"chief"}),e.jsx("input",{className:O,maxLength:Y.title,placeholder:n("botSettings.identity.titlePlaceholder"),value:a.title,onChange:y=>i({title:y.target.value})})]}),g("blurb")&&e.jsxs("div",{className:"block",children:[e.jsxs("div",{className:"mb-1.5 flex items-center justify-between gap-3",children:[e.jsx("label",{htmlFor:`bot-instructions-${a.id}`,className:"text-[13px] text-ink-secondary",children:n("botSettings.identity.blurb")}),e.jsxs("button",{type:"button",onClick:()=>h(!0),className:"flex items-center gap-1.5 rounded-md px-1.5 py-1 text-[12px] font-medium text-accent-text hover:bg-accent/10",children:[e.jsx(ne,{size:12})," ",n("botSettings.identity.viewFull")]})]}),e.jsx(K,{bot:a,kind:"chief"}),e.jsx("textarea",{id:`bot-instructions-${a.id}`,className:R(O,"min-h-[72px] resize-y leading-relaxed"),maxLength:Y.description,placeholder:n("botSettings.identity.blurbPlaceholder"),"aria-label":n("botSettings.identity.blurb"),value:a.description,onChange:y=>i({description:y.target.value})}),e.jsxs("div",{className:"mt-1.5 flex items-start justify-between gap-3 text-[11px] text-ink-secondary",children:[e.jsx("span",{children:n("botSettings.identity.blurbHelp")}),a.description.length>3e3&&e.jsxs("span",{className:"shrink-0 tabular-nums",children:[a.description.length.toLocaleString(U())," / ",Y.description.toLocaleString(U())]})]})]}),e.jsx(ia,{bot:a}),d&&e.jsx(gn,{bot:a,inline:u,onClose:()=>h(!1)})]})}function Ge(a){return new TextEncoder().encode(a).length}function Nn(a,i=200){const t=a.trim().split(`
|
|
2
|
-
`)[0]??"",r=t.match(/^.*?(?:[。!?]|[.!?](?=\s|$))/u);return(r?r[0]:t).trim().slice(0,i).replace(/[\uD800-\uDBFF]$/u,"")}function Mn(a,i){return
|
|
1
|
+
import{c as ze,j as e,t as n,a as R,r as x,X as Se,i as U,b as Ne,f as Me,al as $e,a9 as Ue,au as qe}from"./styles-6RbfQIY7.js";import{fB as Ye,fw as Ze,fx as _e,fz as Qe,fA as Xe,I as ea,T as je,b9 as aa,fy as na,by as ne,gv as H,u as G,B as Y,gs as ia,gn as ra,gJ as ta,gK as la,bg as sa,bf as oa,bQ as da,bY as ca,D as _,S as W,n as T,A as ma,b8 as ye,gL as ua,gM as ya,gN as ha,gO as pa,dR as xa,e4 as Be,e5 as we,ge as ba,bO as ga,dO as fa,dQ as va,dP as Aa,dZ as he,dY as ka,ah as pe,F as Ca,gP as Sa,gQ as Na,e8 as Ma,gR as ja,gS as Ba,fX as wa,gT as La,gU as Da,ck as Ra,bP as Le,bw as Ea,gV as Ta,gW as Ja,cp as Ga,V as Ka,gu as Ha,gG as Fa}from"./App-DRnqqiJP.js";import{af as Pa,B as De,L as Re,ag as Oa,ad as Ia,N as Ee,ah as xe,a9 as Wa,a8 as Va,a7 as za,a6 as $a,a5 as be,aa as Ua,ab as qa,ac as Ya,j as Za,r as _a,O as Qa,C as Xa,K as en,d as me,P as Te}from"./PlacesRail-yZdo57pP.js";import{p as an}from"./org-library-C2li0IRL.js";import{a as nn,b as rn,m as tn,c as ln}from"./mcp-servers-Ih6dI7Ga.js";import{w as sn,p as on,a as dn,W as cn,C as mn}from"./WorksOnGrid-8fCnUzpQ.js";import{u as un}from"./ProIntroduction-DapZkP7I.js";import{C as yn}from"./MenuMotion-BDYr4RxL.js";const hn=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}]],pn=ze("square-slash",hn);function xn({bot:a,disabled:i,onPatch:t}){return e.jsxs("div",{className:"mt-3",children:[e.jsxs("div",{className:"mb-1.5 flex items-baseline justify-between gap-2 text-[12px] text-ink-secondary",children:[e.jsx("span",{children:n("botIdentity.faceColor")}),!a.mascotFaceColor&&e.jsx("span",{className:"text-ink-tertiary",children:n("botIdentity.faceColor.default")})]}),e.jsx(Ye,{attr:"data-avatar-face-color",label:n("botIdentity.faceColor"),value:a.mascotFaceColor,onChange:r=>t({mascotFaceColor:r}),options:Pa.map(r=>({value:r,label:n(`botIdentity.faceColor.${r}`),disabled:i}))})]})}function bn({bot:a,activeState:i,mascotMotion:t,onPatch:r}){const{fileRef:l,crop:s,uploading:d,generating:h,busy:u,error:c,upload:g,removeImage:y,generate:m}=Ze(a,r);return e.jsxs("div",{className:"overflow-hidden rounded-xl border border-hairline/40 bg-card",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-hairline/40 px-3 py-2.5",children:[e.jsx("span",{className:"rounded-lg bg-control px-3 py-1.5 text-[14px] font-medium text-ink",children:n("botIdentity.avatar")}),e.jsx("button",{disabled:u,onClick:()=>r(_e),className:"rounded-md px-2 py-1.5 text-[13px] text-ink-secondary hover:bg-control hover:text-ink disabled:opacity-50",children:n("botIdentity.resetMascot")})]}),e.jsxs("div",{className:"p-3",children:[e.jsx(Qe,{busy:u,onUpload:o=>{g(o)}}),s!=="mascot"&&a.avatarUrl?e.jsx(Xe,{bot:a,disabled:u,onPatch:r}):e.jsx("div",{className:"flex justify-center py-3",children:e.jsx(De,{bot:a,state:i,size:112,motion:t?.kind??"none",motionKey:t?.nonce??0})}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[e.jsx("input",{ref:l,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",className:"sr-only",onChange:o=>{g(o.target.files?.[0])}}),e.jsxs("button",{type:"button",onClick:()=>l.current?.click(),disabled:u,className:"flex flex-1 items-center justify-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d?e.jsx(Re,{size:14,className:"animate-spin"}):e.jsx(ea,{size:14}),n("botIdentity.uploadImage")]}),a.avatarUrl&&e.jsx("button",{type:"button",onClick:y,disabled:u,"aria-label":n("botIdentity.removeAvatar"),title:n("botIdentity.removeImage"),className:"flex size-10 items-center justify-center rounded-lg text-ink-secondary hover:bg-control hover:text-danger disabled:opacity-50",children:e.jsx(je,{size:14})})]}),e.jsx("div",{className:"mt-1.5 text-[12px] text-ink-secondary",children:n("botIdentity.imageTypes")}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.shape")}),e.jsx("div",{className:"grid grid-cols-4 overflow-hidden rounded-lg border border-hairline/40",children:Oa.map((o,b)=>e.jsx("button",{type:"button",disabled:u,"aria-pressed":s===o,onClick:()=>r({avatarCrop:o}),className:R("py-1.5 text-[13px] disabled:opacity-50",b>0&&"border-l border-hairline/40",s===o?"bg-control text-ink":"text-ink-secondary hover:bg-control/60 hover:text-ink"),children:n(`botIdentity.crop.${o}`)},o))}),s==="mascot"&&e.jsxs(e.Fragment,{children:[e.jsx(xn,{bot:a,disabled:u,onPatch:r}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.expression")}),e.jsx("div",{className:"grid grid-cols-5 gap-2",children:Ia.map(o=>e.jsx("button",{type:"button",disabled:u,"aria-pressed":i===o,onClick:()=>r({mascotExpression:o}),className:R("flex h-[58px] items-center justify-center rounded-xl bg-inset transition-colors hover:bg-control disabled:opacity-50",i===o&&"ring-2 ring-accent-border"),title:xe(o),"aria-label":n("mascot.useExpression",{expression:xe(o)}),children:e.jsx(Ee,{color:a.color,faceColor:a.mascotFaceColor,bodyId:a.mascotBody??void 0,state:o,size:42,animated:!1})},o))}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.color")}),e.jsx("div",{className:"flex flex-wrap gap-2.5",children:aa.map(o=>e.jsx("button",{type:"button",disabled:u,"aria-pressed":a.color===o,onClick:()=>r({color:o}),className:R("size-10 rounded-full border-2 border-transparent transition-transform hover:scale-110 disabled:opacity-50",a.color===o&&"ring-2 ring-accent-border ring-offset-2 ring-offset-card"),style:{background:za(o)},title:n(Va[o]),"aria-label":n("mascot.useColor",{color:Wa(o)})},o))}),e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:n("botIdentity.body")}),e.jsx("div",{className:"grid grid-cols-5 gap-1.5",children:$a.map(o=>e.jsx(ge,{id:o,name:be(o),bot:a,busy:u,onPatch:r},o))}),Ua.map(o=>e.jsxs("div",{children:[e.jsx("div",{className:"mb-2 mt-4 text-[12px] font-medium uppercase tracking-[0.08em] text-ink-secondary",children:qa(o)}),e.jsx("div",{className:"grid grid-cols-5 gap-1.5","data-festival-bodies":o,children:Ya[o].bodies.map(b=>e.jsx(ge,{id:b,name:be(b),bot:a,busy:u,onPatch:r},b))})]},o))]}),e.jsx(na,{botLabel:a.title||a.name,disabled:d,generating:h,onGenerate:m}),c&&e.jsx("div",{role:"alert",className:"mt-3 text-[12px] text-danger",children:c})]})]})}function ge({id:a,name:i,bot:t,busy:r,onPatch:l}){const s=(t.mascotBody??"cursor")===a;return e.jsx("button",{type:"button",disabled:r,"aria-pressed":s,"aria-label":n("mascot.useBody",{name:i}),onClick:()=>l({mascotBody:a}),className:R("flex items-center justify-center rounded-lg py-1.5 disabled:opacity-50",s?"bg-control text-ink":"text-ink-secondary hover:bg-control/60"),children:e.jsx(Ee,{color:t.color,faceColor:t.mascotFaceColor,bodyId:a,size:34,animated:!1,trackPointer:!1})})}function gn({bot:a,onClose:i,inline:t=!1}){const r=x.useRef(null),l=x.useRef(i);l.current=i;const s=x.useCallback(()=>l.current(),[]);x.useEffect(()=>{const h=document.activeElement instanceof HTMLElement?document.activeElement:null;r.current?.focus();const u=c=>{if(c.key==="Escape"){c.preventDefault(),s();return}if(c.key!=="Tab")return;const g=[...r.current?.querySelectorAll('button:not([disabled]), [href], [tabindex]:not([tabindex="-1"])')??[]];if(g.length===0){c.preventDefault(),r.current?.focus();return}const y=g[0],m=g[g.length-1];c.shiftKey&&document.activeElement===y?(c.preventDefault(),m.focus()):!c.shiftKey&&document.activeElement===m&&(c.preventDefault(),y.focus())};return window.addEventListener("keydown",u),()=>{window.removeEventListener("keydown",u),h?.focus()}},[s]);const d=e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/55 p-4 backdrop-blur-[2px] sm:p-6",onMouseDown:h=>h.target===h.currentTarget&&s(),children:e.jsxs("div",{ref:r,role:"dialog","aria-modal":"true","aria-labelledby":"bot-instructions-title",tabIndex:-1,className:"animate-pop-in flex max-h-[min(760px,calc(100dvh-2rem))] w-full max-w-[760px] flex-col overflow-hidden rounded-2xl border border-hairline/50 bg-panel shadow-2xl shadow-black/50 outline-none",children:[e.jsxs("header",{className:"flex items-start justify-between gap-4 border-b border-hairline/40 px-6 pb-4 pt-6 sm:px-8 sm:pt-7",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx(De,{bot:a,state:Za(a.mascotExpression)??"idle",size:38,motion:"none",motionKey:0,animated:!1}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 text-accent-text",children:[e.jsx(ne,{size:15}),e.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[0.08em]",children:n("botIdentity.dialog.title")})]}),e.jsx("h2",{id:"bot-instructions-title",className:"mt-0.5 truncate text-[20px] font-semibold tracking-[-0.01em] text-ink",children:a.name}),a.title&&e.jsx("p",{className:"mt-0.5 truncate text-[13px] text-ink-secondary",children:a.title})]})]}),e.jsx("button",{type:"button",onClick:s,"aria-label":n("botIdentity.dialog.close"),className:"flex size-9 shrink-0 items-center justify-center rounded-lg text-ink-secondary hover:bg-raised hover:text-ink",children:e.jsx(Se,{size:19})})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5 sm:px-8 sm:py-6",children:a.description.trim()?e.jsx("div",{className:"whitespace-pre-wrap break-words rounded-xl border border-hairline/50 bg-inset px-4 py-4 text-[14px] leading-6 text-ink",children:a.description}):e.jsxs("div",{className:"rounded-xl border border-dashed border-hairline bg-inset px-5 py-12 text-center",children:[e.jsx(ne,{size:22,className:"mx-auto text-ink-tertiary"}),e.jsx("p",{className:"mt-3 text-[13px] font-medium text-ink",children:n("botIdentity.dialog.empty")}),e.jsx("p",{className:"mt-1 text-[12px] text-ink-secondary",children:n("botIdentity.dialog.emptyHelp")})]})}),e.jsxs("footer",{className:"flex items-center justify-between gap-4 border-t border-hairline/40 px-6 py-4 text-[12px] text-ink-secondary sm:px-8",children:[e.jsx("span",{children:n("botIdentity.dialog.contextHelp")}),e.jsx("button",{type:"button",onClick:s,className:"rounded-lg bg-control px-3.5 py-2 text-[13px] font-medium text-ink hover:bg-raised-hover",children:n("common.done")})]})]})});return t?d:_a.createPortal(d,document.body)}const O="w-full rounded-lg border border-hairline/40 bg-inset px-3 py-2.5 text-[15px] text-ink placeholder:text-ink-secondary focus:outline-none";function fn({label:a,children:i}){return x.createElement("label",{className:"block"},x.createElement("div",{className:"mb-1.5 text-[13px] text-ink-secondary"},a),i)}function vn({bot:a}){const{request:i,draft:t}=H(),[r,l]=x.useState([]),s=a.installedPackage?.source==="org";x.useEffect(()=>{if(!s||t)return;let h=!1;return i("/api/org-library").then(u=>{h||l(u.installs??[])}).catch(()=>{}),()=>{h=!0}},[a.id,s,t]);const d=an(a.installedPackage,r);return d?e.jsxs("div",{className:"rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:[e.jsx("div",{className:"truncate",children:d.line}),d.withdrawn&&e.jsx("div",{className:"mt-0.5 text-warning",children:d.withdrawn})]}):null}const oe=a=>(a??"").trim();function An(a,i){const t=oe(a.section);return i.some(r=>r.id!==a.id&&!!r.chiefOfStaff&&(oe(r.section)===t||Array.isArray(r.managedSections)&&r.managedSections.some(l=>typeof l=="string"&&oe(l)===t)))}function K({bot:a,kind:i}){const{draft:t}=H(),{state:r}=G();return t||!An(a,r.bots)?null:e.jsx("div",{className:"mt-1 text-[12px] leading-snug text-ink-secondary",children:n(i==="chief"?"botSettings.proposal.chief":"botSettings.proposal.owner")})}const kn=JSON.parse('["Aaren","Aarika","Abagael","Abagail","Abbe","Abbey","Abbi","Abbie","Abby","Abbye","Abigael","Abigail","Abigale","Abra","Ada","Adah","Adaline","Adan","Adara","Adda","Addi","Addia","Addie","Addy","Adel","Adela","Adelaida","Adelaide","Adele","Adelheid","Adelice","Adelina","Adelind","Adeline","Adella","Adelle","Adena","Adey","Adi","Adiana","Adina","Adora","Adore","Adoree","Adorne","Adrea","Adria","Adriaens","Adrian","Adriana","Adriane","Adrianna","Adrianne","Adriena","Adrienne","Aeriel","Aeriela","Aeriell","Afton","Ag","Agace","Agata","Agatha","Agathe","Aggi","Aggie","Aggy","Agna","Agnella","Agnes","Agnese","Agnesse","Agneta","Agnola","Agretha","Aida","Aidan","Aigneis","Aila","Aile","Ailee","Aileen","Ailene","Ailey","Aili","Ailina","Ailis","Ailsun","Ailyn","Aime","Aimee","Aimil","Aindrea","Ainslee","Ainsley","Ainslie","Ajay","Alaine","Alameda","Alana","Alanah","Alane","Alanna","Alayne","Alberta","Albertina","Albertine","Albina","Alecia","Aleda","Aleece","Aleen","Alejandra","Alejandrina","Alena","Alene","Alessandra","Aleta","Alethea","Alex","Alexa","Alexandra","Alexandrina","Alexi","Alexia","Alexina","Alexine","Alexis","Alfi","Alfie","Alfreda","Alfy","Ali","Alia","Alica","Alice","Alicea","Alicia","Alida","Alidia","Alie","Alika","Alikee","Alina","Aline","Alis","Alisa","Alisha","Alison","Alissa","Alisun","Alix","Aliza","Alla","Alleen","Allegra","Allene","Alli","Allianora","Allie","Allina","Allis","Allison","Allissa","Allix","Allsun","Allx","Ally","Allyce","Allyn","Allys","Allyson","Alma","Almeda","Almeria","Almeta","Almira","Almire","Aloise","Aloisia","Aloysia","Alta","Althea","Alvera","Alverta","Alvina","Alvinia","Alvira","Alyce","Alyda","Alys","Alysa","Alyse","Alysia","Alyson","Alyss","Alyssa","Amabel","Amabelle","Amalea","Amalee","Amaleta","Amalia","Amalie","Amalita","Amalle","Amanda","Amandi","Amandie","Amandy","Amara","Amargo","Amata","Amber","Amberly","Ambur","Ame","Amelia","Amelie","Amelina","Ameline","Amelita","Ami","Amie","Amii","Amil","Amitie","Amity","Ammamaria","Amy","Amye","Ana","Anabal","Anabel","Anabella","Anabelle","Analiese","Analise","Anallese","Anallise","Anastasia","Anastasie","Anastassia","Anatola","Andee","Andeee","Anderea","Andi","Andie","Andra","Andrea","Andreana","Andree","Andrei","Andria","Andriana","Andriette","Andromache","Andy","Anestassia","Anet","Anett","Anetta","Anette","Ange","Angel","Angela","Angele","Angelia","Angelica","Angelika","Angelina","Angeline","Angelique","Angelita","Angelle","Angie","Angil","Angy","Ania","Anica","Anissa","Anita","Anitra","Anjanette","Anjela","Ann","Ann-Marie","Anna","Anna-Diana","Anna-Diane","Anna-Maria","Annabal","Annabel","Annabela","Annabell","Annabella","Annabelle","Annadiana","Annadiane","Annalee","Annaliese","Annalise","Annamaria","Annamarie","Anne","Anne-Corinne","Anne-Marie","Annecorinne","Anneliese","Annelise","Annemarie","Annetta","Annette","Anni","Annice","Annie","Annis","Annissa","Annmaria","Annmarie","Annnora","Annora","Anny","Anselma","Ansley","Anstice","Anthe","Anthea","Anthia","Anthiathia","Antoinette","Antonella","Antonetta","Antonia","Antonie","Antonietta","Antonina","Anya","Appolonia","April","Aprilette","Ara","Arabel","Arabela","Arabele","Arabella","Arabelle","Arda","Ardath","Ardeen","Ardelia","Ardelis","Ardella","Ardelle","Arden","Ardene","Ardenia","Ardine","Ardis","Ardisj","Ardith","Ardra","Ardyce","Ardys","Ardyth","Aretha","Ariadne","Ariana","Aridatha","Ariel","Ariela","Ariella","Arielle","Arlana","Arlee","Arleen","Arlen","Arlena","Arlene","Arleta","Arlette","Arleyne","Arlie","Arliene","Arlina","Arlinda","Arline","Arluene","Arly","Arlyn","Arlyne","Aryn","Ashely","Ashia","Ashien","Ashil","Ashla","Ashlan","Ashlee","Ashleigh","Ashlen","Ashley","Ashli","Ashlie","Ashly","Asia","Astra","Astrid","Astrix","Atalanta","Athena","Athene","Atlanta","Atlante","Auberta","Aubine","Aubree","Aubrette","Aubrey","Aubrie","Aubry","Audi","Audie","Audra","Audre","Audrey","Audrie","Audry","Audrye","Audy","Augusta","Auguste","Augustina","Augustine","Aundrea","Aura","Aurea","Aurel","Aurelea","Aurelia","Aurelie","Auria","Aurie","Aurilia","Aurlie","Auroora","Aurora","Aurore","Austin","Austina","Austine","Ava","Aveline","Averil","Averyl","Avie","Avis","Aviva","Avivah","Avril","Avrit","Ayn","Bab","Babara","Babb","Babbette","Babbie","Babette","Babita","Babs","Bambi","Bambie","Bamby","Barb","Barbabra","Barbara","Barbara-Anne","Barbaraanne","Barbe","Barbee","Barbette","Barbey","Barbi","Barbie","Barbra","Barby","Bari","Barrie","Barry","Basia","Bathsheba","Batsheva","Bea","Beatrice","Beatrisa","Beatrix","Beatriz","Bebe","Becca","Becka","Becki","Beckie","Becky","Bee","Beilul","Beitris","Bekki","Bel","Belia","Belicia","Belinda","Belita","Bell","Bella","Bellanca","Belle","Bellina","Belva","Belvia","Bendite","Benedetta","Benedicta","Benedikta","Benetta","Benita","Benni","Bennie","Benny","Benoite","Berenice","Beret","Berget","Berna","Bernadene","Bernadette","Bernadina","Bernadine","Bernardina","Bernardine","Bernelle","Bernete","Bernetta","Bernette","Berni","Bernice","Bernie","Bernita","Berny","Berri","Berrie","Berry","Bert","Berta","Berte","Bertha","Berthe","Berti","Bertie","Bertina","Bertine","Berty","Beryl","Beryle","Bess","Bessie","Bessy","Beth","Bethanne","Bethany","Bethena","Bethina","Betsey","Betsy","Betta","Bette","Bette-Ann","Betteann","Betteanne","Betti","Bettina","Bettine","Betty","Bettye","Beulah","Bev","Beverie","Beverlee","Beverley","Beverlie","Beverly","Bevvy","Bianca","Bianka","Bibbie","Bibby","Bibbye","Bibi","Biddie","Biddy","Bidget","Bili","Bill","Billi","Billie","Billy","Billye","Binni","Binnie","Binny","Bird","Birdie","Birgit","Birgitta","Blair","Blaire","Blake","Blakelee","Blakeley","Blanca","Blanch","Blancha","Blanche","Blinni","Blinnie","Blinny","Bliss","Blisse","Blithe","Blondell","Blondelle","Blondie","Blondy","Blythe","Bobbe","Bobbee","Bobbette","Bobbi","Bobbie","Bobby","Bobbye","Bobette","Bobina","Bobine","Bobinette","Bonita","Bonnee","Bonni","Bonnibelle","Bonnie","Bonny","Brana","Brandais","Brande","Brandea","Brandi","Brandice","Brandie","Brandise","Brandy","Breanne","Brear","Bree","Breena","Bren","Brena","Brenda","Brenn","Brenna","Brett","Bria","Briana","Brianna","Brianne","Bride","Bridget","Bridgette","Bridie","Brier","Brietta","Brigid","Brigida","Brigit","Brigitta","Brigitte","Brina","Briney","Brinn","Brinna","Briny","Brit","Brita","Britney","Britni","Britt","Britta","Brittan","Brittaney","Brittani","Brittany","Britte","Britteny","Brittne","Brittney","Brittni","Brook","Brooke","Brooks","Brunhilda","Brunhilde","Bryana","Bryn","Bryna","Brynn","Brynna","Brynne","Buffy","Bunni","Bunnie","Bunny","Cacilia","Cacilie","Cahra","Cairistiona","Caitlin","Caitrin","Cal","Calida","Calla","Calley","Calli","Callida","Callie","Cally","Calypso","Cam","Camala","Camel","Camella","Camellia","Cami","Camila","Camile","Camilla","Camille","Cammi","Cammie","Cammy","Candace","Candi","Candice","Candida","Candide","Candie","Candis","Candra","Candy","Caprice","Cara","Caralie","Caren","Carena","Caresa","Caressa","Caresse","Carey","Cari","Caria","Carie","Caril","Carilyn","Carin","Carina","Carine","Cariotta","Carissa","Carita","Caritta","Carla","Carlee","Carleen","Carlen","Carlene","Carley","Carlie","Carlin","Carlina","Carline","Carlita","Carlota","Carlotta","Carly","Carlye","Carlyn","Carlynn","Carlynne","Carma","Carmel","Carmela","Carmelia","Carmelina","Carmelita","Carmella","Carmelle","Carmen","Carmencita","Carmina","Carmine","Carmita","Carmon","Caro","Carol","Carol-Jean","Carola","Carolan","Carolann","Carole","Carolee","Carolin","Carolina","Caroline","Caroljean","Carolyn","Carolyne","Carolynn","Caron","Carree","Carri","Carrie","Carrissa","Carroll","Carry","Cary","Caryl","Caryn","Casandra","Casey","Casi","Casie","Cass","Cassandra","Cassandre","Cassandry","Cassaundra","Cassey","Cassi","Cassie","Cassondra","Cassy","Catarina","Cate","Caterina","Catha","Catharina","Catharine","Cathe","Cathee","Catherin","Catherina","Catherine","Cathi","Cathie","Cathleen","Cathlene","Cathrin","Cathrine","Cathryn","Cathy","Cathyleen","Cati","Catie","Catina","Catlaina","Catlee","Catlin","Catrina","Catriona","Caty","Caye","Cayla","Cecelia","Cecil","Cecile","Ceciley","Cecilia","Cecilla","Cecily","Ceil","Cele","Celene","Celesta","Celeste","Celestia","Celestina","Celestine","Celestyn","Celestyna","Celia","Celie","Celina","Celinda","Celine","Celinka","Celisse","Celka","Celle","Cesya","Chad","Chanda","Chandal","Chandra","Channa","Chantal","Chantalle","Charil","Charin","Charis","Charissa","Charisse","Charita","Charity","Charla","Charlean","Charleen","Charlena","Charlene","Charline","Charlot","Charlotta","Charlotte","Charmain","Charmaine","Charmane","Charmian","Charmine","Charmion","Charo","Charyl","Chastity","Chelsae","Chelsea","Chelsey","Chelsie","Chelsy","Cher","Chere","Cherey","Cheri","Cherianne","Cherice","Cherida","Cherie","Cherilyn","Cherilynn","Cherin","Cherise","Cherish","Cherlyn","Cherri","Cherrita","Cherry","Chery","Cherye","Cheryl","Cheslie","Chiarra","Chickie","Chicky","Chiquia","Chiquita","Chlo","Chloe","Chloette","Chloris","Chris","Chrissie","Chrissy","Christa","Christabel","Christabella","Christal","Christalle","Christan","Christean","Christel","Christen","Christi","Christian","Christiana","Christiane","Christie","Christin","Christina","Christine","Christy","Christye","Christyna","Chrysa","Chrysler","Chrystal","Chryste","Chrystel","Cicely","Cicily","Ciel","Cilka","Cinda","Cindee","Cindelyn","Cinderella","Cindi","Cindie","Cindra","Cindy","Cinnamon","Cissiee","Cissy","Clair","Claire","Clara","Clarabelle","Clare","Claresta","Clareta","Claretta","Clarette","Clarey","Clari","Claribel","Clarice","Clarie","Clarinda","Clarine","Clarissa","Clarisse","Clarita","Clary","Claude","Claudelle","Claudetta","Claudette","Claudia","Claudie","Claudina","Claudine","Clea","Clem","Clemence","Clementia","Clementina","Clementine","Clemmie","Clemmy","Cleo","Cleopatra","Clerissa","Clio","Clo","Cloe","Cloris","Clotilda","Clovis","Codee","Codi","Codie","Cody","Coleen","Colene","Coletta","Colette","Colleen","Collen","Collete","Collette","Collie","Colline","Colly","Con","Concettina","Conchita","Concordia","Conni","Connie","Conny","Consolata","Constance","Constancia","Constancy","Constanta","Constantia","Constantina","Constantine","Consuela","Consuelo","Cookie","Cora","Corabel","Corabella","Corabelle","Coral","Coralie","Coraline","Coralyn","Cordelia","Cordelie","Cordey","Cordi","Cordie","Cordula","Cordy","Coreen","Corella","Corenda","Corene","Coretta","Corette","Corey","Cori","Corie","Corilla","Corina","Corine","Corinna","Corinne","Coriss","Corissa","Corliss","Corly","Cornela","Cornelia","Cornelle","Cornie","Corny","Correna","Correy","Corri","Corrianne","Corrie","Corrina","Corrine","Corrinne","Corry","Cortney","Cory","Cosetta","Cosette","Costanza","Courtenay","Courtnay","Courtney","Crin","Cris","Crissie","Crissy","Crista","Cristabel","Cristal","Cristen","Cristi","Cristie","Cristin","Cristina","Cristine","Cristionna","Cristy","Crysta","Crystal","Crystie","Cthrine","Cyb","Cybil","Cybill","Cymbre","Cynde","Cyndi","Cyndia","Cyndie","Cyndy","Cynthea","Cynthia","Cynthie","Cynthy","Dacey","Dacia","Dacie","Dacy","Dael","Daffi","Daffie","Daffy","Dagmar","Dahlia","Daile","Daisey","Daisi","Daisie","Daisy","Dale","Dalenna","Dalia","Dalila","Dallas","Daloris","Damara","Damaris","Damita","Dana","Danell","Danella","Danette","Dani","Dania","Danica","Danice","Daniela","Daniele","Daniella","Danielle","Danika","Danila","Danit","Danita","Danna","Danni","Dannie","Danny","Dannye","Danya","Danyelle","Danyette","Daphene","Daphna","Daphne","Dara","Darb","Darbie","Darby","Darcee","Darcey","Darci","Darcie","Darcy","Darda","Dareen","Darell","Darelle","Dari","Daria","Darice","Darla","Darleen","Darlene","Darline","Darlleen","Daron","Darrelle","Darryl","Darsey","Darsie","Darya","Daryl","Daryn","Dasha","Dasi","Dasie","Dasya","Datha","Daune","Daveen","Daveta","Davida","Davina","Davine","Davita","Dawn","Dawna","Dayle","Dayna","Ddene","De","Deana","Deane","Deanna","Deanne","Deb","Debbi","Debbie","Debby","Debee","Debera","Debi","Debor","Debora","Deborah","Debra","Dede","Dedie","Dedra","Dee","Dee","Dee","Deeann","Deeanne","Deedee","Deena","Deerdre","Deeyn","Dehlia","Deidre","Deina","Deirdre","Del","Dela","Delcina","Delcine","Delia","Delila","Delilah","Delinda","Dell","Della","Delly","Delora","Delores","Deloria","Deloris","Delphine","Delphinia","Demeter","Demetra","Demetria","Demetris","Dena","Deni","Denice","Denise","Denna","Denni","Dennie","Denny","Deny","Denys","Denyse","Deonne","Desdemona","Desirae","Desiree","Desiri","Deva","Devan","Devi","Devin","Devina","Devinne","Devon","Devondra","Devonna","Devonne","Devora","Di","Diahann","Dian","Diana","Diandra","Diane","Diane-Marie","Dianemarie","Diann","Dianna","Dianne","Diannne","Didi","Dido","Diena","Dierdre","Dina","Dinah","Dinnie","Dinny","Dion","Dione","Dionis","Dionne","Dita","Dix","Dixie","Dniren","Dode","Dodi","Dodie","Dody","Doe","Doll","Dolley","Dolli","Dollie","Dolly","Dolores","Dolorita","Doloritas","Domeniga","Dominga","Domini","Dominica","Dominique","Dona","Donella","Donelle","Donetta","Donia","Donica","Donielle","Donna","Donnamarie","Donni","Donnie","Donny","Dora","Doralia","Doralin","Doralyn","Doralynn","Doralynne","Dore","Doreen","Dorelia","Dorella","Dorelle","Dorena","Dorene","Doretta","Dorette","Dorey","Dori","Doria","Dorian","Dorice","Dorie","Dorine","Doris","Dorisa","Dorise","Dorita","Doro","Dorolice","Dorolisa","Dorotea","Doroteya","Dorothea","Dorothee","Dorothy","Dorree","Dorri","Dorrie","Dorris","Dorry","Dorthea","Dorthy","Dory","Dosi","Dot","Doti","Dotti","Dottie","Dotty","Dre","Dreddy","Dredi","Drona","Dru","Druci","Drucie","Drucill","Drucy","Drusi","Drusie","Drusilla","Drusy","Dulce","Dulcea","Dulci","Dulcia","Dulciana","Dulcie","Dulcine","Dulcinea","Dulcy","Dulsea","Dusty","Dyan","Dyana","Dyane","Dyann","Dyanna","Dyanne","Dyna","Dynah","Eachelle","Eada","Eadie","Eadith","Ealasaid","Eartha","Easter","Eba","Ebba","Ebonee","Ebony","Eda","Eddi","Eddie","Eddy","Ede","Edee","Edeline","Eden","Edi","Edie","Edin","Edita","Edith","Editha","Edithe","Ediva","Edna","Edwina","Edy","Edyth","Edythe","Effie","Eileen","Eilis","Eimile","Eirena","Ekaterina","Elaina","Elaine","Elana","Elane","Elayne","Elberta","Elbertina","Elbertine","Eleanor","Eleanora","Eleanore","Electra","Eleen","Elena","Elene","Eleni","Elenore","Eleonora","Eleonore","Elfie","Elfreda","Elfrida","Elfrieda","Elga","Elianora","Elianore","Elicia","Elie","Elinor","Elinore","Elisa","Elisabet","Elisabeth","Elisabetta","Elise","Elisha","Elissa","Elita","Eliza","Elizabet","Elizabeth","Elka","Elke","Ella","Elladine","Elle","Ellen","Ellene","Ellette","Elli","Ellie","Ellissa","Elly","Ellyn","Ellynn","Elmira","Elna","Elnora","Elnore","Eloisa","Eloise","Elonore","Elora","Elsa","Elsbeth","Else","Elset","Elsey","Elsi","Elsie","Elsinore","Elspeth","Elsy","Elva","Elvera","Elvina","Elvira","Elwira","Elyn","Elyse","Elysee","Elysha","Elysia","Elyssa","Em","Ema","Emalee","Emalia","Emelda","Emelia","Emelina","Emeline","Emelita","Emelyne","Emera","Emilee","Emili","Emilia","Emilie","Emiline","Emily","Emlyn","Emlynn","Emlynne","Emma","Emmalee","Emmaline","Emmalyn","Emmalynn","Emmalynne","Emmeline","Emmey","Emmi","Emmie","Emmy","Emmye","Emogene","Emyle","Emylee","Engracia","Enid","Enrica","Enrichetta","Enrika","Enriqueta","Eolanda","Eolande","Eran","Erda","Erena","Erica","Ericha","Ericka","Erika","Erin","Erina","Erinn","Erinna","Erma","Ermengarde","Ermentrude","Ermina","Erminia","Erminie","Erna","Ernaline","Ernesta","Ernestine","Ertha","Eryn","Esma","Esmaria","Esme","Esmeralda","Essa","Essie","Essy","Esta","Estel","Estele","Estell","Estella","Estelle","Ester","Esther","Estrella","Estrellita","Ethel","Ethelda","Ethelin","Ethelind","Etheline","Ethelyn","Ethyl","Etta","Etti","Ettie","Etty","Eudora","Eugenia","Eugenie","Eugine","Eula","Eulalie","Eunice","Euphemia","Eustacia","Eva","Evaleen","Evangelia","Evangelin","Evangelina","Evangeline","Evania","Evanne","Eve","Eveleen","Evelina","Eveline","Evelyn","Evey","Evie","Evita","Evonne","Evvie","Evvy","Evy","Eyde","Eydie","Ezmeralda","Fae","Faina","Faith","Fallon","Fan","Fanchette","Fanchon","Fancie","Fancy","Fanechka","Fania","Fanni","Fannie","Fanny","Fanya","Fara","Farah","Farand","Farica","Farra","Farrah","Farrand","Faun","Faunie","Faustina","Faustine","Fawn","Fawne","Fawnia","Fay","Faydra","Faye","Fayette","Fayina","Fayre","Fayth","Faythe","Federica","Fedora","Felecia","Felicdad","Felice","Felicia","Felicity","Felicle","Felipa","Felisha","Felita","Feliza","Fenelia","Feodora","Ferdinanda","Ferdinande","Fern","Fernanda","Fernande","Fernandina","Ferne","Fey","Fiann","Fianna","Fidela","Fidelia","Fidelity","Fifi","Fifine","Filia","Filide","Filippa","Fina","Fiona","Fionna","Fionnula","Fiorenze","Fleur","Fleurette","Flo","Flor","Flora","Florance","Flore","Florella","Florence","Florencia","Florentia","Florenza","Florette","Flori","Floria","Florida","Florie","Florina","Florinda","Floris","Florri","Florrie","Florry","Flory","Flossi","Flossie","Flossy","Flss","Fran","Francene","Frances","Francesca","Francine","Francisca","Franciska","Francoise","Francyne","Frank","Frankie","Franky","Franni","Frannie","Franny","Frayda","Fred","Freda","Freddi","Freddie","Freddy","Fredelia","Frederica","Fredericka","Frederique","Fredi","Fredia","Fredra","Fredrika","Freida","Frieda","Friederike","Fulvia","Gabbey","Gabbi","Gabbie","Gabey","Gabi","Gabie","Gabriel","Gabriela","Gabriell","Gabriella","Gabrielle","Gabriellia","Gabrila","Gaby","Gae","Gael","Gail","Gale","Gale","Galina","Garland","Garnet","Garnette","Gates","Gavra","Gavrielle","Gay","Gaye","Gayel","Gayla","Gayle","Gayleen","Gaylene","Gaynor","Gelya","Gena","Gene","Geneva","Genevieve","Genevra","Genia","Genna","Genni","Gennie","Gennifer","Genny","Genovera","Genvieve","George","Georgeanna","Georgeanne","Georgena","Georgeta","Georgetta","Georgette","Georgia","Georgiana","Georgianna","Georgianne","Georgie","Georgina","Georgine","Geralda","Geraldine","Gerda","Gerhardine","Geri","Gerianna","Gerianne","Gerladina","Germain","Germaine","Germana","Gerri","Gerrie","Gerrilee","Gerry","Gert","Gerta","Gerti","Gertie","Gertrud","Gertruda","Gertrude","Gertrudis","Gerty","Giacinta","Giana","Gianina","Gianna","Gigi","Gilberta","Gilberte","Gilbertina","Gilbertine","Gilda","Gilemette","Gill","Gillan","Gilli","Gillian","Gillie","Gilligan","Gilly","Gina","Ginelle","Ginevra","Ginger","Ginni","Ginnie","Ginnifer","Ginny","Giorgia","Giovanna","Gipsy","Giralda","Gisela","Gisele","Gisella","Giselle","Giuditta","Giulia","Giulietta","Giustina","Gizela","Glad","Gladi","Gladys","Gleda","Glen","Glenda","Glenine","Glenn","Glenna","Glennie","Glennis","Glori","Gloria","Gloriana","Gloriane","Glory","Glyn","Glynda","Glynis","Glynnis","Gnni","Godiva","Golda","Goldarina","Goldi","Goldia","Goldie","Goldina","Goldy","Grace","Gracia","Gracie","Grata","Gratia","Gratiana","Gray","Grayce","Grazia","Greer","Greta","Gretal","Gretchen","Grete","Gretel","Grethel","Gretna","Gretta","Grier","Griselda","Grissel","Guendolen","Guenevere","Guenna","Guglielma","Gui","Guillema","Guillemette","Guinevere","Guinna","Gunilla","Gus","Gusella","Gussi","Gussie","Gussy","Gusta","Gusti","Gustie","Gusty","Gwen","Gwendolen","Gwendolin","Gwendolyn","Gweneth","Gwenette","Gwenneth","Gwenni","Gwennie","Gwenny","Gwenora","Gwenore","Gwyn","Gwyneth","Gwynne","Gypsy","Hadria","Hailee","Haily","Haleigh","Halette","Haley","Hali","Halie","Halimeda","Halley","Halli","Hallie","Hally","Hana","Hanna","Hannah","Hanni","Hannie","Hannis","Hanny","Happy","Harlene","Harley","Harli","Harlie","Harmonia","Harmonie","Harmony","Harri","Harrie","Harriet","Harriett","Harrietta","Harriette","Harriot","Harriott","Hatti","Hattie","Hatty","Hayley","Hazel","Heath","Heather","Heda","Hedda","Heddi","Heddie","Hedi","Hedvig","Hedvige","Hedwig","Hedwiga","Hedy","Heida","Heidi","Heidie","Helaina","Helaine","Helen","Helen-Elizabeth","Helena","Helene","Helenka","Helga","Helge","Helli","Heloise","Helsa","Helyn","Hendrika","Henka","Henrie","Henrieta","Henrietta","Henriette","Henryetta","Hephzibah","Hermia","Hermina","Hermine","Herminia","Hermione","Herta","Hertha","Hester","Hesther","Hestia","Hetti","Hettie","Hetty","Hilary","Hilda","Hildagard","Hildagarde","Hilde","Hildegaard","Hildegarde","Hildy","Hillary","Hilliary","Hinda","Holli","Hollie","Holly","Holly-Anne","Hollyanne","Honey","Honor","Honoria","Hope","Horatia","Hortense","Hortensia","Hulda","Hyacinth","Hyacintha","Hyacinthe","Hyacinthia","Hyacinthie","Hynda","Ianthe","Ibbie","Ibby","Ida","Idalia","Idalina","Idaline","Idell","Idelle","Idette","Ileana","Ileane","Ilene","Ilise","Ilka","Illa","Ilsa","Ilse","Ilysa","Ilyse","Ilyssa","Imelda","Imogen","Imogene","Imojean","Ina","Indira","Ines","Inesita","Inessa","Inez","Inga","Ingaberg","Ingaborg","Inge","Ingeberg","Ingeborg","Inger","Ingrid","Ingunna","Inna","Iolande","Iolanthe","Iona","Iormina","Ira","Irena","Irene","Irina","Iris","Irita","Irma","Isa","Isabel","Isabelita","Isabella","Isabelle","Isadora","Isahella","Iseabal","Isidora","Isis","Isobel","Issi","Issie","Issy","Ivett","Ivette","Ivie","Ivonne","Ivory","Ivy","Izabel","Jacenta","Jacinda","Jacinta","Jacintha","Jacinthe","Jackelyn","Jacki","Jackie","Jacklin","Jacklyn","Jackquelin","Jackqueline","Jacky","Jaclin","Jaclyn","Jacquelin","Jacqueline","Jacquelyn","Jacquelynn","Jacquenetta","Jacquenette","Jacquetta","Jacquette","Jacqui","Jacquie","Jacynth","Jada","Jade","Jaime","Jaimie","Jaine","Jami","Jamie","Jamima","Jammie","Jan","Jana","Janaya","Janaye","Jandy","Jane","Janean","Janeczka","Janeen","Janel","Janela","Janella","Janelle","Janene","Janenna","Janessa","Janet","Janeta","Janetta","Janette","Janeva","Janey","Jania","Janice","Janie","Janifer","Janina","Janine","Janis","Janith","Janka","Janna","Jannel","Jannelle","Janot","Jany","Jaquelin","Jaquelyn","Jaquenetta","Jaquenette","Jaquith","Jasmin","Jasmina","Jasmine","Jayme","Jaymee","Jayne","Jaynell","Jazmin","Jean","Jeana","Jeane","Jeanelle","Jeanette","Jeanie","Jeanine","Jeanna","Jeanne","Jeannette","Jeannie","Jeannine","Jehanna","Jelene","Jemie","Jemima","Jemimah","Jemmie","Jemmy","Jen","Jena","Jenda","Jenelle","Jeni","Jenica","Jeniece","Jenifer","Jeniffer","Jenilee","Jenine","Jenn","Jenna","Jennee","Jennette","Jenni","Jennica","Jennie","Jennifer","Jennilee","Jennine","Jenny","Jeralee","Jere","Jeri","Jermaine","Jerrie","Jerrilee","Jerrilyn","Jerrine","Jerry","Jerrylee","Jess","Jessa","Jessalin","Jessalyn","Jessamine","Jessamyn","Jesse","Jesselyn","Jessi","Jessica","Jessie","Jessika","Jessy","Jewel","Jewell","Jewelle","Jill","Jillana","Jillane","Jillayne","Jilleen","Jillene","Jilli","Jillian","Jillie","Jilly","Jinny","Jo","Jo","Ann","Jo-Ann","Jo-Anne","Joan","Joana","Joane","Joanie","Joann","Joanna","Joanne","Joannes","Jobey","Jobi","Jobie","Jobina","Joby","Jobye","Jobyna","Jocelin","Joceline","Jocelyn","Jocelyne","Jodee","Jodi","Jodie","Jody","Joeann","Joela","Joelie","Joell","Joella","Joelle","Joellen","Joelly","Joellyn","Joelynn","Joete","Joey","Johanna","Johannah","Johna","Johnath","Johnette","Johnna","Joice","Jojo","Jolee","Joleen","Jolene","Joletta","Joli","Jolie","Joline","Joly","Jolyn","Jolynn","Jonell","Joni","Jonie","Jonis","Jordain","Jordan","Jordana","Jordanna","Jorey","Jori","Jorie","Jorrie","Jorry","Joscelin","Josee","Josefa","Josefina","Josepha","Josephina","Josephine","Josey","Josi","Josie","Josselyn","Josy","Jourdan","Joy","Joya","Joyan","Joyann","Joyce","Joycelin","Joye","Jsandye","Juana","Juanita","Judi","Judie","Judith","Juditha","Judy","Judye","Juieta","Julee","Juli","Julia","Juliana","Juliane","Juliann","Julianna","Julianne","Julie","Julienne","Juliet","Julieta","Julietta","Juliette","Julina","Juline","Julissa","Julita","June","Junette","Junia","Junie","Junina","Justina","Justine","Justinn","Jyoti","Kacey","Kacie","Kacy","Kaela","Kai","Kaia","Kaila","Kaile","Kailey","Kaitlin","Kaitlyn","Kaitlynn","Kaja","Kakalina","Kala","Kaleena","Kali","Kalie","Kalila","Kalina","Kalinda","Kalindi","Kalli","Kally","Kameko","Kamila","Kamilah","Kamillah","Kandace","Kandy","Kania","Kanya","Kara","Kara-Lynn","Karalee","Karalynn","Kare","Karee","Karel","Karen","Karena","Kari","Karia","Karie","Karil","Karilynn","Karin","Karina","Karine","Kariotta","Karisa","Karissa","Karita","Karla","Karlee","Karleen","Karlen","Karlene","Karlie","Karlotta","Karlotte","Karly","Karlyn","Karmen","Karna","Karol","Karola","Karole","Karolina","Karoline","Karoly","Karon","Karrah","Karrie","Karry","Kary","Karyl","Karylin","Karyn","Kasey","Kass","Kassandra","Kassey","Kassi","Kassia","Kassie","Kat","Kata","Katalin","Kate","Katee","Katerina","Katerine","Katey","Kath","Katha","Katharina","Katharine","Katharyn","Kathe","Katherina","Katherine","Katheryn","Kathi","Kathie","Kathleen","Kathlin","Kathrine","Kathryn","Kathryne","Kathy","Kathye","Kati","Katie","Katina","Katine","Katinka","Katleen","Katlin","Katrina","Katrine","Katrinka","Katti","Kattie","Katuscha","Katusha","Katy","Katya","Kay","Kaycee","Kaye","Kayla","Kayle","Kaylee","Kayley","Kaylil","Kaylyn","Keeley","Keelia","Keely","Kelcey","Kelci","Kelcie","Kelcy","Kelila","Kellen","Kelley","Kelli","Kellia","Kellie","Kellina","Kellsie","Kelly","Kellyann","Kelsey","Kelsi","Kelsy","Kendra","Kendre","Kenna","Keri","Keriann","Kerianne","Kerri","Kerrie","Kerrill","Kerrin","Kerry","Kerstin","Kesley","Keslie","Kessia","Kessiah","Ketti","Kettie","Ketty","Kevina","Kevyn","Ki","Kiah","Kial","Kiele","Kiersten","Kikelia","Kiley","Kim","Kimberlee","Kimberley","Kimberli","Kimberly","Kimberlyn","Kimbra","Kimmi","Kimmie","Kimmy","Kinna","Kip","Kipp","Kippie","Kippy","Kira","Kirbee","Kirbie","Kirby","Kiri","Kirsten","Kirsteni","Kirsti","Kirstin","Kirstyn","Kissee","Kissiah","Kissie","Kit","Kitti","Kittie","Kitty","Kizzee","Kizzie","Klara","Klarika","Klarrisa","Konstance","Konstanze","Koo","Kora","Koral","Koralle","Kordula","Kore","Korella","Koren","Koressa","Kori","Korie","Korney","Korrie","Korry","Kris","Krissie","Krissy","Krista","Kristal","Kristan","Kriste","Kristel","Kristen","Kristi","Kristien","Kristin","Kristina","Kristine","Kristy","Kristyn","Krysta","Krystal","Krystalle","Krystle","Krystyna","Kyla","Kyle","Kylen","Kylie","Kylila","Kylynn","Kym","Kynthia","Kyrstin","La","Verne","Lacee","Lacey","Lacie","Lacy","Ladonna","Laetitia","Laina","Lainey","Lana","Lanae","Lane","Lanette","Laney","Lani","Lanie","Lanita","Lanna","Lanni","Lanny","Lara","Laraine","Lari","Larina","Larine","Larisa","Larissa","Lark","Laryssa","Latashia","Latia","Latisha","Latrena","Latrina","Laura","Lauraine","Laural","Lauralee","Laure","Lauree","Laureen","Laurel","Laurella","Lauren","Laurena","Laurene","Lauretta","Laurette","Lauri","Laurianne","Laurice","Laurie","Lauryn","Lavena","Laverna","Laverne","Lavina","Lavinia","Lavinie","Layla","Layne","Layney","Lea","Leah","Leandra","Leann","Leanna","Leanor","Leanora","Lebbie","Leda","Lee","Leeann","Leeanne","Leela","Leelah","Leena","Leesa","Leese","Legra","Leia","Leigh","Leigha","Leila","Leilah","Leisha","Lela","Lelah","Leland","Lelia","Lena","Lenee","Lenette","Lenka","Lenna","Lenora","Lenore","Leodora","Leoine","Leola","Leoline","Leona","Leonanie","Leone","Leonelle","Leonie","Leonora","Leonore","Leontine","Leontyne","Leora","Leshia","Lesley","Lesli","Leslie","Lesly","Lesya","Leta","Lethia","Leticia","Letisha","Letitia","Letizia","Letta","Letti","Lettie","Letty","Lexi","Lexie","Lexine","Lexis","Lexy","Leyla","Lezlie","Lia","Lian","Liana","Liane","Lianna","Lianne","Lib","Libbey","Libbi","Libbie","Libby","Licha","Lida","Lidia","Liesa","Lil","Lila","Lilah","Lilas","Lilia","Lilian","Liliane","Lilias","Lilith","Lilla","Lilli","Lillian","Lillis","Lilllie","Lilly","Lily","Lilyan","Lin","Lina","Lind","Linda","Lindi","Lindie","Lindsay","Lindsey","Lindsy","Lindy","Linea","Linell","Linet","Linette","Linn","Linnea","Linnell","Linnet","Linnie","Linzy","Lira","Lisa","Lisabeth","Lisbeth","Lise","Lisetta","Lisette","Lisha","Lishe","Lissa","Lissi","Lissie","Lissy","Lita","Liuka","Liv","Liva","Livia","Livvie","Livvy","Livvyy","Livy","Liz","Liza","Lizabeth","Lizbeth","Lizette","Lizzie","Lizzy","Loella","Lois","Loise","Lola","Loleta","Lolita","Lolly","Lona","Lonee","Loni","Lonna","Lonni","Lonnie","Lora","Lorain","Loraine","Loralee","Loralie","Loralyn","Loree","Loreen","Lorelei","Lorelle","Loren","Lorena","Lorene","Lorenza","Loretta","Lorette","Lori","Loria","Lorianna","Lorianne","Lorie","Lorilee","Lorilyn","Lorinda","Lorine","Lorita","Lorna","Lorne","Lorraine","Lorrayne","Lorri","Lorrie","Lorrin","Lorry","Lory","Lotta","Lotte","Lotti","Lottie","Lotty","Lou","Louella","Louisa","Louise","Louisette","Loutitia","Lu","Luce","Luci","Lucia","Luciana","Lucie","Lucienne","Lucila","Lucilia","Lucille","Lucina","Lucinda","Lucine","Lucita","Lucky","Lucretia","Lucy","Ludovika","Luella","Luelle","Luisa","Luise","Lula","Lulita","Lulu","Lura","Lurette","Lurleen","Lurlene","Lurline","Lusa","Luz","Lyda","Lydia","Lydie","Lyn","Lynda","Lynde","Lyndel","Lyndell","Lyndsay","Lyndsey","Lyndsie","Lyndy","Lynea","Lynelle","Lynett","Lynette","Lynn","Lynna","Lynne","Lynnea","Lynnell","Lynnelle","Lynnet","Lynnett","Lynnette","Lynsey","Lyssa","Mab","Mabel","Mabelle","Mable","Mada","Madalena","Madalyn","Maddalena","Maddi","Maddie","Maddy","Madel","Madelaine","Madeleine","Madelena","Madelene","Madelin","Madelina","Madeline","Madella","Madelle","Madelon","Madelyn","Madge","Madlen","Madlin","Madonna","Mady","Mae","Maegan","Mag","Magda","Magdaia","Magdalen","Magdalena","Magdalene","Maggee","Maggi","Maggie","Maggy","Mahala","Mahalia","Maia","Maible","Maiga","Maighdiln","Mair","Maire","Maisey","Maisie","Maitilde","Mala","Malanie","Malena","Malia","Malina","Malinda","Malinde","Malissa","Malissia","Mallissa","Mallorie","Mallory","Malorie","Malory","Malva","Malvina","Malynda","Mame","Mamie","Manda","Mandi","Mandie","Mandy","Manon","Manya","Mara","Marabel","Marcela","Marcelia","Marcella","Marcelle","Marcellina","Marcelline","Marchelle","Marci","Marcia","Marcie","Marcile","Marcille","Marcy","Mareah","Maren","Marena","Maressa","Marga","Margalit","Margalo","Margaret","Margareta","Margarete","Margaretha","Margarethe","Margaretta","Margarette","Margarita","Margaux","Marge","Margeaux","Margery","Marget","Margette","Margi","Margie","Margit","Margo","Margot","Margret","Marguerite","Margy","Mari","Maria","Mariam","Marian","Mariana","Mariann","Marianna","Marianne","Maribel","Maribelle","Maribeth","Marice","Maridel","Marie","Marie-Ann","Marie-Jeanne","Marieann","Mariejeanne","Mariel","Mariele","Marielle","Mariellen","Marietta","Mariette","Marigold","Marijo","Marika","Marilee","Marilin","Marillin","Marilyn","Marin","Marina","Marinna","Marion","Mariquilla","Maris","Marisa","Mariska","Marissa","Marita","Maritsa","Mariya","Marj","Marja","Marje","Marji","Marjie","Marjorie","Marjory","Marjy","Marketa","Marla","Marlane","Marleah","Marlee","Marleen","Marlena","Marlene","Marley","Marlie","Marline","Marlo","Marlyn","Marna","Marne","Marney","Marni","Marnia","Marnie","Marquita","Marrilee","Marris","Marrissa","Marsha","Marsiella","Marta","Martelle","Martguerita","Martha","Marthe","Marthena","Marti","Martica","Martie","Martina","Martita","Marty","Martynne","Mary","Marya","Maryann","Maryanna","Maryanne","Marybelle","Marybeth","Maryellen","Maryjane","Maryjo","Maryl","Marylee","Marylin","Marylinda","Marylou","Marylynne","Maryrose","Marys","Marysa","Masha","Matelda","Mathilda","Mathilde","Matilda","Matilde","Matti","Mattie","Matty","Maud","Maude","Maudie","Maura","Maure","Maureen","Maureene","Maurene","Maurine","Maurise","Maurita","Maurizia","Mavis","Mavra","Max","Maxi","Maxie","Maxine","Maxy","May","Maybelle","Maye","Mead","Meade","Meagan","Meaghan","Meara","Mechelle","Meg","Megan","Megen","Meggi","Meggie","Meggy","Meghan","Meghann","Mehetabel","Mei","Mel","Mela","Melamie","Melania","Melanie","Melantha","Melany","Melba","Melesa","Melessa","Melicent","Melina","Melinda","Melinde","Melisa","Melisande","Melisandra","Melisenda","Melisent","Melissa","Melisse","Melita","Melitta","Mella","Melli","Mellicent","Mellie","Mellisa","Mellisent","Melloney","Melly","Melodee","Melodie","Melody","Melonie","Melony","Melosa","Melva","Mercedes","Merci","Mercie","Mercy","Meredith","Meredithe","Meridel","Meridith","Meriel","Merilee","Merilyn","Meris","Merissa","Merl","Merla","Merle","Merlina","Merline","Merna","Merola","Merralee","Merridie","Merrie","Merrielle","Merrile","Merrilee","Merrili","Merrill","Merrily","Merry","Mersey","Meryl","Meta","Mia","Micaela","Michaela","Michaelina","Michaeline","Michaella","Michal","Michel","Michele","Michelina","Micheline","Michell","Michelle","Micki","Mickie","Micky","Midge","Mignon","Mignonne","Miguela","Miguelita","Mikaela","Mil","Mildred","Mildrid","Milena","Milicent","Milissent","Milka","Milli","Millicent","Millie","Millisent","Milly","Milzie","Mimi","Min","Mina","Minda","Mindy","Minerva","Minetta","Minette","Minna","Minnaminnie","Minne","Minni","Minnie","Minnnie","Minny","Minta","Miof","Mela","Miquela","Mira","Mirabel","Mirabella","Mirabelle","Miran","Miranda","Mireielle","Mireille","Mirella","Mirelle","Miriam","Mirilla","Mirna","Misha","Missie","Missy","Misti","Misty","Mitzi","Modesta","Modestia","Modestine","Modesty","Moina","Moira","Moll","Mollee","Molli","Mollie","Molly","Mommy","Mona","Monah","Monica","Monika","Monique","Mora","Moreen","Morena","Morgan","Morgana","Morganica","Morganne","Morgen","Moria","Morissa","Morna","Moselle","Moyna","Moyra","Mozelle","Muffin","Mufi","Mufinella","Muire","Mureil","Murial","Muriel","Murielle","Myra","Myrah","Myranda","Myriam","Myrilla","Myrle","Myrlene","Myrna","Myrta","Myrtia","Myrtice","Myrtie","Myrtle","Nada","Nadean","Nadeen","Nadia","Nadine","Nadiya","Nady","Nadya","Nalani","Nan","Nana","Nananne","Nance","Nancee","Nancey","Nanci","Nancie","Nancy","Nanete","Nanette","Nani","Nanice","Nanine","Nannette","Nanni","Nannie","Nanny","Nanon","Naoma","Naomi","Nara","Nari","Nariko","Nat","Nata","Natala","Natalee","Natalie","Natalina","Nataline","Natalya","Natasha","Natassia","Nathalia","Nathalie","Natividad","Natka","Natty","Neala","Neda","Nedda","Nedi","Neely","Neila","Neile","Neilla","Neille","Nelia","Nelie","Nell","Nelle","Nelli","Nellie","Nelly","Nerissa","Nerita","Nert","Nerta","Nerte","Nerti","Nertie","Nerty","Nessa","Nessi","Nessie","Nessy","Nesta","Netta","Netti","Nettie","Nettle","Netty","Nevsa","Neysa","Nichol","Nichole","Nicholle","Nicki","Nickie","Nicky","Nicol","Nicola","Nicole","Nicolea","Nicolette","Nicoli","Nicolina","Nicoline","Nicolle","Nikaniki","Nike","Niki","Nikki","Nikkie","Nikoletta","Nikolia","Nina","Ninetta","Ninette","Ninnetta","Ninnette","Ninon","Nissa","Nisse","Nissie","Nissy","Nita","Nixie","Noami","Noel","Noelani","Noell","Noella","Noelle","Noellyn","Noelyn","Noemi","Nola","Nolana","Nolie","Nollie","Nomi","Nona","Nonah","Noni","Nonie","Nonna","Nonnah","Nora","Norah","Norean","Noreen","Norene","Norina","Norine","Norma","Norri","Norrie","Norry","Novelia","Nydia","Nyssa","Octavia","Odele","Odelia","Odelinda","Odella","Odelle","Odessa","Odetta","Odette","Odilia","Odille","Ofelia","Ofella","Ofilia","Ola","Olenka","Olga","Olia","Olimpia","Olive","Olivette","Olivia","Olivie","Oliy","Ollie","Olly","Olva","Olwen","Olympe","Olympia","Olympie","Ondrea","Oneida","Onida","Oona","Opal","Opalina","Opaline","Ophelia","Ophelie","Ora","Oralee","Oralia","Oralie","Oralla","Oralle","Orel","Orelee","Orelia","Orelie","Orella","Orelle","Oriana","Orly","Orsa","Orsola","Ortensia","Otha","Othelia","Othella","Othilia","Othilie","Ottilie","Page","Paige","Paloma","Pam","Pamela","Pamelina","Pamella","Pammi","Pammie","Pammy","Pandora","Pansie","Pansy","Paola","Paolina","Papagena","Pat","Patience","Patrica","Patrice","Patricia","Patrizia","Patsy","Patti","Pattie","Patty","Paula","Paule","Pauletta","Paulette","Pauli","Paulie","Paulina","Pauline","Paulita","Pauly","Pavia","Pavla","Pearl","Pearla","Pearle","Pearline","Peg","Pegeen","Peggi","Peggie","Peggy","Pen","Penelopa","Penelope","Penni","Pennie","Penny","Pepi","Pepita","Peri","Peria","Perl","Perla","Perle","Perri","Perrine","Perry","Persis","Pet","Peta","Petra","Petrina","Petronella","Petronia","Petronilla","Petronille","Petunia","Phaedra","Phaidra","Phebe","Phedra","Phelia","Phil","Philipa","Philippa","Philippe","Philippine","Philis","Phillida","Phillie","Phillis","Philly","Philomena","Phoebe","Phylis","Phyllida","Phyllis","Phyllys","Phylys","Pia","Pier","Pierette","Pierrette","Pietra","Piper","Pippa","Pippy","Polly","Pollyanna","Pooh","Poppy","Portia","Pris","Prisca","Priscella","Priscilla","Prissie","Pru","Prudence","Prudi","Prudy","Prue","Queenie","Quentin","Querida","Quinn","Quinta","Quintana","Quintilla","Quintina","Rachael","Rachel","Rachele","Rachelle","Rae","Raeann","Raf","Rafa","Rafaela","Rafaelia","Rafaelita","Rahal","Rahel","Raina","Raine","Rakel","Ralina","Ramona","Ramonda","Rana","Randa","Randee","Randene","Randi","Randie","Randy","Ranee","Rani","Rania","Ranice","Ranique","Ranna","Raphaela","Raquel","Raquela","Rasia","Rasla","Raven","Ray","Raychel","Raye","Rayna","Raynell","Rayshell","Rea","Reba","Rebbecca","Rebe","Rebeca","Rebecca","Rebecka","Rebeka","Rebekah","Rebekkah","Ree","Reeba","Reena","Reeta","Reeva","Regan","Reggi","Reggie","Regina","Regine","Reiko","Reina","Reine","Remy","Rena","Renae","Renata","Renate","Rene","Renee","Renell","Renelle","Renie","Rennie","Reta","Retha","Revkah","Rey","Reyna","Rhea","Rheba","Rheta","Rhetta","Rhiamon","Rhianna","Rhianon","Rhoda","Rhodia","Rhodie","Rhody","Rhona","Rhonda","Riane","Riannon","Rianon","Rica","Ricca","Rici","Ricki","Rickie","Ricky","Riki","Rikki","Rina","Risa","Rita","Riva","Rivalee","Rivi","Rivkah","Rivy","Roana","Roanna","Roanne","Robbi","Robbie","Robbin","Robby","Robbyn","Robena","Robenia","Roberta","Robin","Robina","Robinet","Robinett","Robinetta","Robinette","Robinia","Roby","Robyn","Roch","Rochell","Rochella","Rochelle","Rochette","Roda","Rodi","Rodie","Rodina","Rois","Romola","Romona","Romonda","Romy","Rona","Ronalda","Ronda","Ronica","Ronna","Ronni","Ronnica","Ronnie","Ronny","Roobbie","Rora","Rori","Rorie","Rory","Ros","Rosa","Rosabel","Rosabella","Rosabelle","Rosaleen","Rosalia","Rosalie","Rosalind","Rosalinda","Rosalinde","Rosaline","Rosalyn","Rosalynd","Rosamond","Rosamund","Rosana","Rosanna","Rosanne","Rose","Roseann","Roseanna","Roseanne","Roselia","Roselin","Roseline","Rosella","Roselle","Rosemaria","Rosemarie","Rosemary","Rosemonde","Rosene","Rosetta","Rosette","Roshelle","Rosie","Rosina","Rosita","Roslyn","Rosmunda","Rosy","Row","Rowe","Rowena","Roxana","Roxane","Roxanna","Roxanne","Roxi","Roxie","Roxine","Roxy","Roz","Rozalie","Rozalin","Rozamond","Rozanna","Rozanne","Roze","Rozele","Rozella","Rozelle","Rozina","Rubetta","Rubi","Rubia","Rubie","Rubina","Ruby","Ruperta","Ruth","Ruthann","Ruthanne","Ruthe","Ruthi","Ruthie","Ruthy","Ryann","Rycca","Saba","Sabina","Sabine","Sabra","Sabrina","Sacha","Sada","Sadella","Sadie","Sadye","Saidee","Sal","Salaidh","Sallee","Salli","Sallie","Sally","Sallyann","Sallyanne","Saloma","Salome","Salomi","Sam","Samantha","Samara","Samaria","Sammy","Sande","Sandi","Sandie","Sandra","Sandy","Sandye","Sapphira","Sapphire","Sara","Sara-Ann","Saraann","Sarah","Sarajane","Saree","Sarena","Sarene","Sarette","Sari","Sarina","Sarine","Sarita","Sascha","Sasha","Sashenka","Saudra","Saundra","Savina","Sayre","Scarlet","Scarlett","Sean","Seana","Seka","Sela","Selena","Selene","Selestina","Selia","Selie","Selina","Selinda","Seline","Sella","Selle","Selma","Sena","Sephira","Serena","Serene","Shae","Shaina","Shaine","Shalna","Shalne","Shana","Shanda","Shandee","Shandeigh","Shandie","Shandra","Shandy","Shane","Shani","Shanie","Shanna","Shannah","Shannen","Shannon","Shanon","Shanta","Shantee","Shara","Sharai","Shari","Sharia","Sharity","Sharl","Sharla","Sharleen","Sharlene","Sharline","Sharon","Sharona","Sharron","Sharyl","Shaun","Shauna","Shawn","Shawna","Shawnee","Shay","Shayla","Shaylah","Shaylyn","Shaylynn","Shayna","Shayne","Shea","Sheba","Sheela","Sheelagh","Sheelah","Sheena","Sheeree","Sheila","Sheila-Kathryn","Sheilah","Shel","Shela","Shelagh","Shelba","Shelbi","Shelby","Shelia","Shell","Shelley","Shelli","Shellie","Shelly","Shena","Sher","Sheree","Sheri","Sherie","Sherill","Sherilyn","Sherline","Sherri","Sherrie","Sherry","Sherye","Sheryl","Shina","Shir","Shirl","Shirlee","Shirleen","Shirlene","Shirley","Shirline","Shoshana","Shoshanna","Siana","Sianna","Sib","Sibbie","Sibby","Sibeal","Sibel","Sibella","Sibelle","Sibilla","Sibley","Sibyl","Sibylla","Sibylle","Sidoney","Sidonia","Sidonnie","Sigrid","Sile","Sileas","Silva","Silvana","Silvia","Silvie","Simona","Simone","Simonette","Simonne","Sindee","Siobhan","Sioux","Siouxie","Sisely","Sisile","Sissie","Sissy","Siusan","Sofia","Sofie","Sondra","Sonia","Sonja","Sonni","Sonnie","Sonnnie","Sonny","Sonya","Sophey","Sophi","Sophia","Sophie","Sophronia","Sorcha","Sosanna","Stace","Stacee","Stacey","Staci","Stacia","Stacie","Stacy","Stafani","Star","Starla","Starlene","Starlin","Starr","Stefa","Stefania","Stefanie","Steffane","Steffi","Steffie","Stella","Stepha","Stephana","Stephani","Stephanie","Stephannie","Stephenie","Stephi","Stephie","Stephine","Stesha","Stevana","Stevena","Stoddard","Storm","Stormi","Stormie","Stormy","Sue","Suellen","Sukey","Suki","Sula","Sunny","Sunshine","Susan","Susana","Susanetta","Susann","Susanna","Susannah","Susanne","Susette","Susi","Susie","Susy","Suzann","Suzanna","Suzanne","Suzette","Suzi","Suzie","Suzy","Sybil","Sybila","Sybilla","Sybille","Sybyl","Sydel","Sydelle","Sydney","Sylvia","Tabatha","Tabbatha","Tabbi","Tabbie","Tabbitha","Tabby","Tabina","Tabitha","Taffy","Talia","Tallia","Tallie","Tallou","Tallulah","Tally","Talya","Talyah","Tamar","Tamara","Tamarah","Tamarra","Tamera","Tami","Tamiko","Tamma","Tammara","Tammi","Tammie","Tammy","Tamqrah","Tamra","Tana","Tandi","Tandie","Tandy","Tanhya","Tani","Tania","Tanitansy","Tansy","Tanya","Tara","Tarah","Tarra","Tarrah","Taryn","Tasha","Tasia","Tate","Tatiana","Tatiania","Tatum","Tawnya","Tawsha","Ted","Tedda","Teddi","Teddie","Teddy","Tedi","Tedra","Teena","TEirtza","Teodora","Tera","Teresa","Terese","Teresina","Teresita","Teressa","Teri","Teriann","Terra","Terri","Terrie","Terrijo","Terry","Terrye","Tersina","Terza","Tess","Tessa","Tessi","Tessie","Tessy","Thalia","Thea","Theadora","Theda","Thekla","Thelma","Theo","Theodora","Theodosia","Theresa","Therese","Theresina","Theresita","Theressa","Therine","Thia","Thomasa","Thomasin","Thomasina","Thomasine","Tiena","Tierney","Tiertza","Tiff","Tiffani","Tiffanie","Tiffany","Tiffi","Tiffie","Tiffy","Tilda","Tildi","Tildie","Tildy","Tillie","Tilly","Tim","Timi","Timmi","Timmie","Timmy","Timothea","Tina","Tine","Tiphani","Tiphanie","Tiphany","Tish","Tisha","Tobe","Tobey","Tobi","Toby","Tobye","Toinette","Toma","Tomasina","Tomasine","Tomi","Tommi","Tommie","Tommy","Toni","Tonia","Tonie","Tony","Tonya","Tonye","Tootsie","Torey","Tori","Torie","Torrie","Tory","Tova","Tove","Tracee","Tracey","Traci","Tracie","Tracy","Trenna","Tresa","Trescha","Tressa","Tricia","Trina","Trish","Trisha","Trista","Trix","Trixi","Trixie","Trixy","Truda","Trude","Trudey","Trudi","Trudie","Trudy","Trula","Tuesday","Twila","Twyla","Tybi","Tybie","Tyne","Ula","Ulla","Ulrica","Ulrika","Ulrikaumeko","Ulrike","Umeko","Una","Ursa","Ursala","Ursola","Ursula","Ursulina","Ursuline","Uta","Val","Valaree","Valaria","Vale","Valeda","Valencia","Valene","Valenka","Valentia","Valentina","Valentine","Valera","Valeria","Valerie","Valery","Valerye","Valida","Valina","Valli","Vallie","Vally","Valma","Valry","Van","Vanda","Vanessa","Vania","Vanna","Vanni","Vannie","Vanny","Vanya","Veda","Velma","Velvet","Venita","Venus","Vera","Veradis","Vere","Verena","Verene","Veriee","Verile","Verina","Verine","Verla","Verna","Vernice","Veronica","Veronika","Veronike","Veronique","Vevay","Vi","Vicki","Vickie","Vicky","Victoria","Vida","Viki","Vikki","Vikky","Vilhelmina","Vilma","Vin","Vina","Vinita","Vinni","Vinnie","Vinny","Viola","Violante","Viole","Violet","Violetta","Violette","Virgie","Virgina","Virginia","Virginie","Vita","Vitia","Vitoria","Vittoria","Viv","Viva","Vivi","Vivia","Vivian","Viviana","Vivianna","Vivianne","Vivie","Vivien","Viviene","Vivienne","Viviyan","Vivyan","Vivyanne","Vonni","Vonnie","Vonny","Vyky","Wallie","Wallis","Walliw","Wally","Waly","Wanda","Wandie","Wandis","Waneta","Wanids","Wenda","Wendeline","Wendi","Wendie","Wendy","Wendye","Wenona","Wenonah","Whitney","Wileen","Wilhelmina","Wilhelmine","Wilie","Willa","Willabella","Willamina","Willetta","Willette","Willi","Willie","Willow","Willy","Willyt","Wilma","Wilmette","Wilona","Wilone","Wilow","Windy","Wini","Winifred","Winna","Winnah","Winne","Winni","Winnie","Winnifred","Winny","Winona","Winonah","Wren","Wrennie","Wylma","Wynn","Wynne","Wynnie","Wynny","Xaviera","Xena","Xenia","Xylia","Xylina","Yalonda","Yasmeen","Yasmin","Yelena","Yetta","Yettie","Yetty","Yevette","Ynes","Ynez","Yoko","Yolanda","Yolande","Yolane","Yolanthe","Yoshi","Yoshiko","Yovonnda","Ysabel","Yvette","Yvonne","Zabrina","Zahara","Zandra","Zaneta","Zara","Zarah","Zaria","Zarla","Zea","Zelda","Zelma","Zena","Zenia","Zia","Zilvia","Zita","Zitella","Zoe","Zola","Zonda","Zondra","Zonnya","Zora","Zorah","Zorana","Zorina","Zorine","Zsa","Zsa","Zsazsa","Zulema","Zuzana"]'),Cn=JSON.parse('["Aaron","Ab","Abba","Abbe","Abbey","Abbie","Abbot","Abbott","Abby","Abdel","Abdul","Abe","Abel","Abelard","Abeu","Abey","Abie","Abner","Abraham","Abrahan","Abram","Abramo","Abran","Ad","Adair","Adam","Adamo","Adams","Adan","Addie","Addison","Addy","Ade","Adelbert","Adham","Adlai","Adler","Ado","Adolf","Adolph","Adolphe","Adolpho","Adolphus","Adrian","Adriano","Adrien","Agosto","Aguie","Aguistin","Aguste","Agustin","Aharon","Ahmad","Ahmed","Ailbert","Akim","Aksel","Al","Alain","Alair","Alan","Aland","Alano","Alanson","Alard","Alaric","Alasdair","Alastair","Alasteir","Alaster","Alberik","Albert","Alberto","Albie","Albrecht","Alden","Aldin","Aldis","Aldo","Aldon","Aldous","Aldric","Aldrich","Aldridge","Aldus","Aldwin","Alec","Alejandro","Alejoa","Aleksandr","Alessandro","Alex","Alexander","Alexandr","Alexandre","Alexandro","Alexandros","Alexei","Alexio","Alexis","Alf","Alfie","Alfons","Alfonse","Alfonso","Alford","Alfred","Alfredo","Alfy","Algernon","Ali","Alic","Alick","Alisander","Alistair","Alister","Alix","Allan","Allard","Allayne","Allen","Alley","Alleyn","Allie","Allin","Allister","Allistir","Allyn","Aloin","Alon","Alonso","Alonzo","Aloysius","Alphard","Alphonse","Alphonso","Alric","Aluin","Aluino","Alva","Alvan","Alvie","Alvin","Alvis","Alvy","Alwin","Alwyn","Alyosha","Amble","Ambros","Ambrose","Ambrosi","Ambrosio","Ambrosius","Amby","Amerigo","Amery","Amory","Amos","Anatol","Anatole","Anatollo","Ancell","Anders","Anderson","Andie","Andonis","Andras","Andre","Andrea","Andreas","Andrej","Andres","Andrew","Andrey","Andris","Andros","Andrus","Andy","Ange","Angel","Angeli","Angelico","Angelo","Angie","Angus","Ansel","Ansell","Anselm","Anson","Anthony","Antin","Antoine","Anton","Antone","Antoni","Antonin","Antonino","Antonio","Antonius","Antons","Antony","Any","Ara","Araldo","Arch","Archaimbaud","Archambault","Archer","Archibald","Archibaldo","Archibold","Archie","Archy","Arel","Ari","Arie","Ariel","Arin","Ario","Aristotle","Arlan","Arlen","Arley","Arlin","Arman","Armand","Armando","Armin","Armstrong","Arnaldo","Arne","Arney","Arni","Arnie","Arnold","Arnoldo","Arnuad","Arny","Aron","Arri","Arron","Art","Artair","Arte","Artemas","Artemis","Artemus","Arther","Arthur","Artie","Artur","Arturo","Artus","Arty","Arv","Arvie","Arvin","Arvy","Asa","Ase","Ash","Ashbey","Ashby","Asher","Ashley","Ashlin","Ashton","Aube","Auberon","Aubert","Aubrey","Augie","August","Augustin","Augustine","Augusto","Augustus","Augy","Aurthur","Austen","Austin","Ave","Averell","Averil","Averill","Avery","Avictor","Avigdor","Avram","Avrom","Ax","Axe","Axel","Aylmar","Aylmer","Aymer","Bail","Bailey","Bailie","Baillie","Baily","Baird","Bald","Balduin","Baldwin","Bale","Ban","Bancroft","Bank","Banky","Bar","Barbabas","Barclay","Bard","Barde","Barn","Barnabas","Barnabe","Barnaby","Barnard","Barnebas","Barnett","Barney","Barnie","Barny","Baron","Barr","Barret","Barrett","Barri","Barrie","Barris","Barron","Barry","Bart","Bartel","Barth","Barthel","Bartholemy","Bartholomeo","Bartholomeus","Bartholomew","Bartie","Bartlet","Bartlett","Bartolemo","Bartolomeo","Barton","Bartram","Barty","Bary","Baryram","Base","Basil","Basile","Basilio","Basilius","Bastian","Bastien","Bat","Batholomew","Baudoin","Bax","Baxie","Baxter","Baxy","Bay","Bayard","Beale","Bealle","Bear","Bearnard","Beau","Beaufort","Beauregard","Beck","Beltran","Ben","Bendick","Bendicty","Bendix","Benedetto","Benedick","Benedict","Benedicto","Benedikt","Bengt","Beniamino","Benito","Benjamen","Benjamin","Benji","Benjie","Benjy","Benn","Bennett","Bennie","Benny","Benoit","Benson","Bent","Bentlee","Bentley","Benton","Benyamin","Ber","Berk","Berke","Berkeley","Berkie","Berkley","Berkly","Berky","Bern","Bernard","Bernardo","Bernarr","Berne","Bernhard","Bernie","Berny","Bert","Berti","Bertie","Berton","Bertram","Bertrand","Bertrando","Berty","Bev","Bevan","Bevin","Bevon","Bil","Bill","Billie","Billy","Bing","Bink","Binky","Birch","Birk","Biron","Bjorn","Blaine","Blair","Blake","Blane","Blayne","Bo","Bob","Bobbie","Bobby","Bogart","Bogey","Boigie","Bond","Bondie","Bondon","Bondy","Bone","Boniface","Boone","Boonie","Boony","Boot","Boote","Booth","Boothe","Bord","Borden","Bordie","Bordy","Borg","Boris","Bourke","Bowie","Boy","Boyce","Boycey","Boycie","Boyd","Brad","Bradan","Brade","Braden","Bradford","Bradley","Bradly","Bradney","Brady","Bram","Bran","Brand","Branden","Brander","Brandon","Brandtr","Brandy","Brandyn","Brannon","Brant","Brantley","Bren","Brendan","Brenden","Brendin","Brendis","Brendon","Brennan","Brennen","Brent","Bret","Brett","Brew","Brewer","Brewster","Brian","Briano","Briant","Brice","Brien","Brig","Brigg","Briggs","Brigham","Brion","Brit","Britt","Brnaba","Brnaby","Brock","Brockie","Brocky","Brod","Broddie","Broddy","Broderic","Broderick","Brodie","Brody","Brok","Bron","Bronnie","Bronny","Bronson","Brook","Brooke","Brooks","Brose","Bruce","Brucie","Bruis","Bruno","Bryan","Bryant","Bryanty","Bryce","Bryn","Bryon","Buck","Buckie","Bucky","Bud","Budd","Buddie","Buddy","Buiron","Burch","Burg","Burgess","Burk","Burke","Burl","Burlie","Burnaby","Burnard","Burr","Burt","Burtie","Burton","Burty","Butch","Byram","Byran","Byrann","Byrle","Byrom","Byron","Cad","Caddric","Caesar","Cal","Caldwell","Cale","Caleb","Calhoun","Callean","Calv","Calvin","Cam","Cameron","Camey","Cammy","Car","Carce","Care","Carey","Carl","Carleton","Carlie","Carlin","Carling","Carlo","Carlos","Carly","Carlyle","Carmine","Carney","Carny","Carolus","Carr","Carrol","Carroll","Carson","Cart","Carter","Carver","Cary","Caryl","Casar","Case","Casey","Cash","Caspar","Casper","Cass","Cassie","Cassius","Caz","Cazzie","Cchaddie","Cece","Cecil","Cecilio","Cecilius","Ced","Cedric","Cello","Cesar","Cesare","Cesaro","Chad","Chadd","Chaddie","Chaddy","Chadwick","Chaim","Chalmers","Chan","Chance","Chancey","Chandler","Chane","Chariot","Charles","Charley","Charlie","Charlton","Chas","Chase","Chaunce","Chauncey","Che","Chen","Ches","Chester","Cheston","Chet","Chev","Chevalier","Chevy","Chic","Chick","Chickie","Chicky","Chico","Chilton","Chip","Chris","Chrisse","Chrissie","Chrissy","Christian","Christiano","Christie","Christoffer","Christoforo","Christoper","Christoph","Christophe","Christopher","Christophorus","Christos","Christy","Chrisy","Chrotoem","Chucho","Chuck","Cirillo","Cirilo","Ciro","Claiborn","Claiborne","Clair","Claire","Clarance","Clare","Clarence","Clark","Clarke","Claudell","Claudian","Claudianus","Claudio","Claudius","Claus","Clay","Clayborn","Clayborne","Claybourne","Clayson","Clayton","Cleavland","Clem","Clemens","Clement","Clemente","Clementius","Clemmie","Clemmy","Cleon","Clerc","Cletis","Cletus","Cleve","Cleveland","Clevey","Clevie","Cliff","Clifford","Clim","Clint","Clive","Cly","Clyde","Clyve","Clywd","Cob","Cobb","Cobbie","Cobby","Codi","Codie","Cody","Cointon","Colan","Colas","Colby","Cole","Coleman","Colet","Colin","Collin","Colman","Colver","Con","Conan","Conant","Conn","Conney","Connie","Connor","Conny","Conrad","Conrade","Conrado","Conroy","Consalve","Constantin","Constantine","Constantino","Conway","Coop","Cooper","Corbet","Corbett","Corbie","Corbin","Corby","Cord","Cordell","Cordie","Cordy","Corey","Cori","Cornall","Cornelius","Cornell","Corney","Cornie","Corny","Correy","Corrie","Cort","Cortie","Corty","Cory","Cos","Cosimo","Cosme","Cosmo","Costa","Court","Courtnay","Courtney","Cozmo","Craggie","Craggy","Craig","Crawford","Creigh","Creight","Creighton","Crichton","Cris","Cristian","Cristiano","Cristobal","Crosby","Cross","Cull","Cullan","Cullen","Culley","Cullie","Cullin","Cully","Culver","Curcio","Curr","Curran","Currey","Currie","Curry","Curt","Curtice","Curtis","Cy","Cyril","Cyrill","Cyrille","Cyrillus","Cyrus","Darcy","Dael","Dag","Dagny","Dal","Dale","Dalis","Dall","Dallas","Dalli","Dallis","Dallon","Dalston","Dalt","Dalton","Dame","Damian","Damiano","Damien","Damon","Dan","Dana","Dane","Dani","Danie","Daniel","Dannel","Dannie","Danny","Dante","Danya","Dar","Darb","Darbee","Darby","Darcy","Dare","Daren","Darill","Darin","Dario","Darius","Darn","Darnall","Darnell","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darryl","Darwin","Daryl","Daryle","Dav","Dave","Daven","Davey","David","Davidde","Davide","Davidson","Davie","Davin","Davis","Davon","Davy","De","Witt","Dean","Deane","Decca","Deck","Del","Delainey","Delaney","Delano","Delbert","Dell","Delmar","Delmer","Delmor","Delmore","Demetre","Demetri","Demetris","Demetrius","Demott","Den","Dene","Denis","Dennet","Denney","Dennie","Dennis","Dennison","Denny","Denver","Denys","Der","Derby","Derek","Derick","Derk","Dermot","Derrek","Derrick","Derrik","Derril","Derron","Derry","Derward","Derwin","Des","Desi","Desmond","Desmund","Dev","Devin","Devland","Devlen","Devlin","Devy","Dew","Dewain","Dewey","Dewie","Dewitt","Dex","Dexter","Diarmid","Dick","Dickie","Dicky","Diego","Dieter","Dietrich","Dilan","Dill","Dillie","Dillon","Dilly","Dimitri","Dimitry","Dino","Dion","Dionisio","Dionysus","Dirk","Dmitri","Dolf","Dolph","Dom","Domenic","Domenico","Domingo","Dominic","Dominick","Dominik","Dominique","Don","Donal","Donall","Donalt","Donaugh","Donavon","Donn","Donnell","Donnie","Donny","Donovan","Dore","Dorey","Dorian","Dorie","Dory","Doug","Dougie","Douglas","Douglass","Dougy","Dov","Doy","Doyle","Drake","Drew","Dru","Drud","Drugi","Duane","Dud","Dudley","Duff","Duffie","Duffy","Dugald","Duke","Dukey","Dukie","Duky","Dun","Dunc","Duncan","Dunn","Dunstan","Dur","Durand","Durant","Durante","Durward","Dwain","Dwayne","Dwight","Dylan","Eadmund","Eal","Eamon","Earl","Earle","Earlie","Early","Earvin","Eb","Eben","Ebeneser","Ebenezer","Eberhard","Eberto","Ed","Edan","Edd","Eddie","Eddy","Edgar","Edgard","Edgardo","Edik","Edlin","Edmon","Edmund","Edouard","Edsel","Eduard","Eduardo","Eduino","Edvard","Edward","Edwin","Efrem","Efren","Egan","Egbert","Egon","Egor","El","Elbert","Elden","Eldin","Eldon","Eldredge","Eldridge","Eli","Elia","Elias","Elihu","Elijah","Eliot","Elisha","Ellary","Ellerey","Ellery","Elliot","Elliott","Ellis","Ellswerth","Ellsworth","Ellwood","Elmer","Elmo","Elmore","Elnar","Elroy","Elston","Elsworth","Elton","Elvin","Elvis","Elvyn","Elwin","Elwood","Elwyn","Ely","Em","Emanuel","Emanuele","Emelen","Emerson","Emery","Emile","Emilio","Emlen","Emlyn","Emmanuel","Emmerich","Emmery","Emmet","Emmett","Emmit","Emmott","Emmy","Emory","Engelbert","Englebert","Ennis","Enoch","Enos","Enrico","Enrique","Ephraim","Ephrayim","Ephrem","Erasmus","Erastus","Erek","Erhard","Erhart","Eric","Erich","Erick","Erie","Erik","Erin","Erl","Ermanno","Ermin","Ernest","Ernesto","Ernestus","Ernie","Ernst","Erny","Errick","Errol","Erroll","Erskine","Erv","ErvIn","Erwin","Esdras","Esme","Esra","Esteban","Estevan","Etan","Ethan","Ethe","Ethelbert","Ethelred","Etienne","Ettore","Euell","Eugen","Eugene","Eugenio","Eugenius","Eustace","Ev","Evan","Evelin","Evelyn","Even","Everard","Evered","Everett","Evin","Evyn","Ewan","Eward","Ewart","Ewell","Ewen","Ezechiel","Ezekiel","Ezequiel","Eziechiele","Ezra","Ezri","Fabe","Faber","Fabian","Fabiano","Fabien","Fabio","Fair","Fairfax","Fairleigh","Fairlie","Falito","Falkner","Far","Farlay","Farlee","Farleigh","Farley","Farlie","Farly","Farr","Farrel","Farrell","Farris","Faulkner","Fax","Federico","Fee","Felic","Felice","Felicio","Felike","Feliks","Felipe","Felix","Felizio","Feodor","Ferd","Ferdie","Ferdinand","Ferdy","Fergus","Ferguson","Fernando","Ferrel","Ferrell","Ferris","Fidel","Fidelio","Fidole","Field","Fielding","Fields","Filbert","Filberte","Filberto","Filip","Filippo","Filmer","Filmore","Fin","Findlay","Findley","Finlay","Finley","Finn","Fitz","Fitzgerald","Flem","Fleming","Flemming","Fletch","Fletcher","Flin","Flinn","Flint","Florian","Flory","Floyd","Flynn","Fons","Fonsie","Fonz","Fonzie","Forbes","Ford","Forest","Forester","Forrest","Forrester","Forster","Foss","Foster","Fowler","Fran","Francesco","Franchot","Francis","Francisco","Franciskus","Francklin","Francklyn","Francois","Frank","Frankie","Franklin","Franklyn","Franky","Frannie","Franny","Frans","Fransisco","Frants","Franz","Franzen","Frasco","Fraser","Frasier","Frasquito","Fraze","Frazer","Frazier","Fred","Freddie","Freddy","Fredek","Frederic","Frederich","Frederick","Frederico","Frederigo","Frederik","Fredric","Fredrick","Free","Freedman","Freeland","Freeman","Freemon","Fremont","Friedrich","Friedrick","Fritz","Fulton","Gabbie","Gabby","Gabe","Gabi","Gabie","Gabriel","Gabriele","Gabriello","Gaby","Gael","Gaelan","Gage","Gail","Gaile","Gal","Gale","Galen","Gallagher","Gallard","Galvan","Galven","Galvin","Gamaliel","Gan","Gannie","Gannon","Ganny","Gar","Garald","Gard","Gardener","Gardie","Gardiner","Gardner","Gardy","Gare","Garek","Gareth","Garey","Garfield","Garik","Garner","Garold","Garrard","Garrek","Garret","Garreth","Garrett","Garrick","Garrik","Garrot","Garrott","Garry","Garth","Garv","Garvey","Garvin","Garvy","Garwin","Garwood","Gary","Gaspar","Gaspard","Gasparo","Gasper","Gaston","Gaultiero","Gauthier","Gav","Gavan","Gaven","Gavin","Gawain","Gawen","Gay","Gayelord","Gayle","Gayler","Gaylor","Gaylord","Gearalt","Gearard","Gene","Geno","Geoff","Geoffrey","Geoffry","Georas","Geordie","Georg","George","Georges","Georgi","Georgie","Georgy","Gerald","Gerard","Gerardo","Gerek","Gerhard","Gerhardt","Geri","Gerick","Gerik","Germain","Germaine","Germayne","Gerome","Gerrard","Gerri","Gerrie","Gerry","Gery","Gherardo","Giacobo","Giacomo","Giacopo","Gian","Gianni","Giavani","Gib","Gibb","Gibbie","Gibby","Gideon","Giff","Giffard","Giffer","Giffie","Gifford","Giffy","Gil","Gilbert","Gilberto","Gilburt","Giles","Gill","Gilles","Ginger","Gino","Giordano","Giorgi","Giorgio","Giovanni","Giraldo","Giraud","Giselbert","Giulio","Giuseppe","Giustino","Giusto","Glen","Glenden","Glendon","Glenn","Glyn","Glynn","Godard","Godart","Goddard","Goddart","Godfree","Godfrey","Godfry","Godwin","Gonzales","Gonzalo","Goober","Goran","Goraud","Gordan","Gorden","Gordie","Gordon","Gordy","Gothart","Gottfried","Grace","Gradeigh","Gradey","Grady","Graehme","Graeme","Graham","Graig","Gram","Gran","Grange","Granger","Grannie","Granny","Grant","Grantham","Granthem","Grantley","Granville","Gray","Greg","Gregg","Greggory","Gregoire","Gregoor","Gregor","Gregorio","Gregorius","Gregory","Grenville","Griff","Griffie","Griffin","Griffith","Griffy","Gris","Griswold","Griz","Grove","Grover","Gualterio","Guglielmo","Guido","Guilbert","Guillaume","Guillermo","Gun","Gunar","Gunner","Guntar","Gunter","Gunther","Gus","Guss","Gustaf","Gustav","Gustave","Gustavo","Gustavus","Guthrey","Guthrie","Guthry","Guy","Had","Hadlee","Hadleigh","Hadley","Hadrian","Hagan","Hagen","Hailey","Haily","Hakeem","Hakim","Hal","Hale","Haleigh","Haley","Hall","Hallsy","Halsey","Halsy","Ham","Hamel","Hamid","Hamil","Hamilton","Hamish","Hamlen","Hamlin","Hammad","Hamnet","Hanan","Hank","Hans","Hansiain","Hanson","Harald","Harbert","Harcourt","Hardy","Harlan","Harland","Harlen","Harley","Harlin","Harman","Harmon","Harold","Haroun","Harp","Harper","Harris","Harrison","Harry","Hart","Hartley","Hartwell","Harv","Harvey","Harwell","Harwilll","Hasheem","Hashim","Haskel","Haskell","Haslett","Hastie","Hastings","Hasty","Haven","Hayden","Haydon","Hayes","Hayward","Haywood","Hayyim","Haze","Hazel","Hazlett","Heall","Heath","Hebert","Hector","Heindrick","Heinrick","Heinrik","Henderson","Hendrick","Hendrik","Henri","Henrik","Henry","Herb","Herbert","Herbie","Herby","Herc","Hercule","Hercules","Herculie","Heriberto","Herman","Hermann","Hermie","Hermon","Hermy","Hernando","Herold","Herrick","Hersch","Herschel","Hersh","Hershel","Herve","Hervey","Hew","Hewe","Hewet","Hewett","Hewie","Hewitt","Heywood","Hi","Hieronymus","Hilario","Hilarius","Hilary","Hill","Hillard","Hillary","Hillel","Hillery","Hilliard","Hillie","Hillier","Hilly","Hillyer","Hilton","Hinze","Hiram","Hirsch","Hobard","Hobart","Hobey","Hobie","Hodge","Hoebart","Hogan","Holden","Hollis","Holly","Holmes","Holt","Homer","Homere","Homerus","Horace","Horacio","Horatio","Horatius","Horst","Hort","Horten","Horton","Howard","Howey","Howie","Hoyt","Hube","Hubert","Huberto","Hubey","Hubie","Huey","Hugh","Hughie","Hugibert","Hugo","Hugues","Humbert","Humberto","Humfrey","Humfrid","Humfried","Humphrey","Hunfredo","Hunt","Hunter","Huntington","Huntlee","Huntley","Hurlee","Hurleigh","Hurley","Husain","Husein","Hussein","Hy","Hyatt","Hyman","Hymie","Iago","Iain","Ian","Ibrahim","Ichabod","Iggie","Iggy","Ignace","Ignacio","Ignacius","Ignatius","Ignaz","Ignazio","Igor","Ike","Ikey","Ilaire","Ilario","Immanuel","Ingamar","Ingar","Ingelbert","Ingemar","Inger","Inglebert","Inglis","Ingmar","Ingra","Ingram","Ingrim","Inigo","Inness","Innis","Iorgo","Iorgos","Iosep","Ira","Irv","Irvin","Irvine","Irving","Irwin","Irwinn","Isa","Isaac","Isaak","Isac","Isacco","Isador","Isadore","Isaiah","Isak","Isiahi","Isidor","Isidore","Isidoro","Isidro","Israel","Issiah","Itch","Ivan","Ivar","Ive","Iver","Ives","Ivor","Izaak","Izak","Izzy","Jabez","Jack","Jackie","Jackson","Jacky","Jacob","Jacobo","Jacques","Jae","Jaime","Jaimie","Jake","Jakie","Jakob","Jamaal","Jamal","James","Jameson","Jamesy","Jamey","Jamie","Jamil","Jamill","Jamison","Jammal","Jan","Janek","Janos","Jarad","Jard","Jareb","Jared","Jarib","Jarid","Jarrad","Jarred","Jarret","Jarrett","Jarrid","Jarrod","Jarvis","Jase","Jasen","Jason","Jasper","Jasun","Javier","Jay","Jaye","Jayme","Jaymie","Jayson","Jdavie","Jean","Jecho","Jed","Jedd","Jeddy","Jedediah","Jedidiah","Jeff","Jefferey","Jefferson","Jeffie","Jeffrey","Jeffry","Jeffy","Jehu","Jeno","Jens","Jephthah","Jerad","Jerald","Jeramey","Jeramie","Jere","Jereme","Jeremiah","Jeremias","Jeremie","Jeremy","Jermain","Jermaine","Jermayne","Jerome","Jeromy","Jerri","Jerrie","Jerrold","Jerrome","Jerry","Jervis","Jess","Jesse","Jessee","Jessey","Jessie","Jesus","Jeth","Jethro","Jim","Jimmie","Jimmy","Jo","Joachim","Joaquin","Job","Jock","Jocko","Jodi","Jodie","Jody","Joe","Joel","Joey","Johan","Johann","Johannes","John","Johnathan","Johnathon","Johnnie","Johnny","Johny","Jon","Jonah","Jonas","Jonathan","Jonathon","Jone","Jordan","Jordon","Jorgan","Jorge","Jory","Jose","Joseito","Joseph","Josh","Joshia","Joshua","Joshuah","Josiah","Josias","Jourdain","Jozef","Juan","Jud","Judah","Judas","Judd","Jude","Judon","Jule","Jules","Julian","Julie","Julio","Julius","Justen","Justin","Justinian","Justino","Justis","Justus","Kahaleel","Kahlil","Kain","Kaine","Kaiser","Kale","Kaleb","Kalil","Kalle","Kalvin","Kane","Kareem","Karel","Karim","Karl","Karlan","Karlens","Karlik","Karlis","Karney","Karoly","Kaspar","Kasper","Kayne","Kean","Keane","Kearney","Keary","Keefe","Keefer","Keelby","Keen","Keenan","Keene","Keir","Keith","Kelbee","Kelby","Kele","Kellby","Kellen","Kelley","Kelly","Kelsey","Kelvin","Kelwin","Ken","Kendal","Kendall","Kendell","Kendrick","Kendricks","Kenn","Kennan","Kennedy","Kenneth","Kennett","Kennie","Kennith","Kenny","Kenon","Kent","Kenton","Kenyon","Ker","Kerby","Kerk","Kermie","Kermit","Kermy","Kerr","Kerry","Kerwin","Kerwinn","Kev","Kevan","Keven","Kevin","Kevon","Khalil","Kiel","Kienan","Kile","Kiley","Kilian","Killian","Killie","Killy","Kim","Kimball","Kimbell","Kimble","Kin","Kincaid","King","Kingsley","Kingsly","Kingston","Kinnie","Kinny","Kinsley","Kip","Kipp","Kippar","Kipper","Kippie","Kippy","Kirby","Kirk","Kit","Klaus","Klemens","Klement","Kleon","Kliment","Knox","Koenraad","Konrad","Konstantin","Konstantine","Korey","Kort","Kory","Kris","Krisha","Krishna","Krishnah","Krispin","Kristian","Kristo","Kristofer","Kristoffer","Kristofor","Kristoforo","Kristopher","Kristos","Kurt","Kurtis","Ky","Kyle","Kylie","Laird","Lalo","Lamar","Lambert","Lammond","Lamond","Lamont","Lance","Lancelot","Land","Lane","Laney","Langsdon","Langston","Lanie","Lannie","Lanny","Larry","Lars","Laughton","Launce","Lauren","Laurence","Laurens","Laurent","Laurie","Lauritz","Law","Lawrence","Lawry","Lawton","Lay","Layton","Lazar","Lazare","Lazaro","Lazarus","Lee","Leeland","Lefty","Leicester","Leif","Leigh","Leighton","Lek","Leland","Lem","Lemar","Lemmie","Lemmy","Lemuel","Lenard","Lenci","Lennard","Lennie","Leo","Leon","Leonard","Leonardo","Leonerd","Leonhard","Leonid","Leonidas","Leopold","Leroi","Leroy","Les","Lesley","Leslie","Lester","Leupold","Lev","Levey","Levi","Levin","Levon","Levy","Lew","Lewes","Lewie","Lewiss","Lezley","Liam","Lief","Lin","Linc","Lincoln","Lind","Lindon","Lindsay","Lindsey","Lindy","Link","Linn","Linoel","Linus","Lion","Lionel","Lionello","Lisle","Llewellyn","Lloyd","Llywellyn","Lock","Locke","Lockwood","Lodovico","Logan","Lombard","Lon","Lonnard","Lonnie","Lonny","Lorant","Loren","Lorens","Lorenzo","Lorin","Lorne","Lorrie","Lorry","Lothaire","Lothario","Lou","Louie","Louis","Lovell","Lowe","Lowell","Lowrance","Loy","Loydie","Luca","Lucais","Lucas","Luce","Lucho","Lucian","Luciano","Lucias","Lucien","Lucio","Lucius","Ludovico","Ludvig","Ludwig","Luigi","Luis","Lukas","Luke","Lutero","Luther","Ly","Lydon","Lyell","Lyle","Lyman","Lyn","Lynn","Lyon","Mac","Mace","Mack","Mackenzie","Maddie","Maddy","Madison","Magnum","Mahmoud","Mahmud","Maison","Maje","Major","Mal","Malachi","Malchy","Malcolm","Mallory","Malvin","Man","Mandel","Manfred","Mannie","Manny","Mano","Manolo","Manuel","Mar","Marc","Marcel","Marcello","Marcellus","Marcelo","Marchall","Marco","Marcos","Marcus","Marijn","Mario","Marion","Marius","Mark","Markos","Markus","Marlin","Marlo","Marlon","Marlow","Marlowe","Marmaduke","Marsh","Marshal","Marshall","Mart","Martainn","Marten","Martie","Martin","Martino","Marty","Martyn","Marv","Marve","Marven","Marvin","Marwin","Mason","Massimiliano","Massimo","Mata","Mateo","Mathe","Mathew","Mathian","Mathias","Matias","Matt","Matteo","Matthaeus","Mattheus","Matthew","Matthias","Matthieu","Matthiew","Matthus","Mattias","Mattie","Matty","Maurice","Mauricio","Maurie","Maurise","Maurits","Maurizio","Maury","Max","Maxie","Maxim","Maximilian","Maximilianus","Maximilien","Maximo","Maxwell","Maxy","Mayer","Maynard","Mayne","Maynord","Mayor","Mead","Meade","Meier","Meir","Mel","Melvin","Melvyn","Menard","Mendel","Mendie","Mendy","Meredeth","Meredith","Merell","Merill","Merle","Merrel","Merrick","Merrill","Merry","Merv","Mervin","Merwin","Merwyn","Meryl","Meyer","Mic","Micah","Michael","Michail","Michal","Michale","Micheal","Micheil","Michel","Michele","Mick","Mickey","Mickie","Micky","Miguel","Mikael","Mike","Mikel","Mikey","Mikkel","Mikol","Mile","Miles","Mill","Millard","Miller","Milo","Milt","Miltie","Milton","Milty","Miner","Minor","Mischa","Mitch","Mitchael","Mitchel","Mitchell","Moe","Mohammed","Mohandas","Mohandis","Moise","Moises","Moishe","Monro","Monroe","Montague","Monte","Montgomery","Monti","Monty","Moore","Mord","Mordecai","Mordy","Morey","Morgan","Morgen","Morgun","Morie","Moritz","Morlee","Morley","Morly","Morrie","Morris","Morry","Morse","Mort","Morten","Mortie","Mortimer","Morton","Morty","Mose","Moses","Moshe","Moss","Mozes","Muffin","Muhammad","Munmro","Munroe","Murdoch","Murdock","Murray","Murry","Murvyn","My","Myca","Mycah","Mychal","Myer","Myles","Mylo","Myron","Myrvyn","Myrwyn","Nahum","Nap","Napoleon","Nappie","Nappy","Nat","Natal","Natale","Nataniel","Nate","Nathan","Nathanael","Nathanial","Nathaniel","Nathanil","Natty","Neal","Neale","Neall","Nealon","Nealson","Nealy","Ned","Neddie","Neddy","Neel","Nefen","Nehemiah","Neil","Neill","Neils","Nels","Nelson","Nero","Neron","Nester","Nestor","Nev","Nevil","Nevile","Neville","Nevin","Nevins","Newton","Nial","Niall","Niccolo","Nicholas","Nichole","Nichols","Nick","Nickey","Nickie","Nicko","Nickola","Nickolai","Nickolas","Nickolaus","Nicky","Nico","Nicol","Nicola","Nicolai","Nicolais","Nicolas","Nicolis","Niel","Niels","Nigel","Niki","Nikita","Nikki","Niko","Nikola","Nikolai","Nikolaos","Nikolas","Nikolaus","Nikolos","Nikos","Nil","Niles","Nils","Nilson","Niven","Noach","Noah","Noak","Noam","Nobe","Nobie","Noble","Noby","Noe","Noel","Nolan","Noland","Noll","Nollie","Nolly","Norbert","Norbie","Norby","Norman","Normand","Normie","Normy","Norrie","Norris","Norry","North","Northrop","Northrup","Norton","Nowell","Nye","Oates","Obadiah","Obadias","Obed","Obediah","Oberon","Obidiah","Obie","Oby","Octavius","Ode","Odell","Odey","Odie","Odo","Ody","Ogdan","Ogden","Ogdon","Olag","Olav","Ole","Olenolin","Olin","Oliver","Olivero","Olivier","Oliviero","Ollie","Olly","Olvan","Omar","Omero","Onfre","Onfroi","Onofredo","Oran","Orazio","Orbadiah","Oren","Orin","Orion","Orlan","Orland","Orlando","Orran","Orren","Orrin","Orson","Orton","Orv","Orville","Osbert","Osborn","Osborne","Osbourn","Osbourne","Osgood","Osmond","Osmund","Ossie","Oswald","Oswell","Otes","Othello","Otho","Otis","Otto","Owen","Ozzie","Ozzy","Pablo","Pace","Packston","Paco","Pacorro","Paddie","Paddy","Padget","Padgett","Padraic","Padraig","Padriac","Page","Paige","Pail","Pall","Palm","Palmer","Panchito","Pancho","Paolo","Papageno","Paquito","Park","Parke","Parker","Parnell","Parrnell","Parry","Parsifal","Pascal","Pascale","Pasquale","Pat","Pate","Paten","Patin","Paton","Patric","Patrice","Patricio","Patrick","Patrizio","Patrizius","Patsy","Patten","Pattie","Pattin","Patton","Patty","Paul","Paulie","Paulo","Pauly","Pavel","Pavlov","Paxon","Paxton","Payton","Peadar","Pearce","Pebrook","Peder","Pedro","Peirce","Pembroke","Pen","Penn","Pennie","Penny","Penrod","Pepe","Pepillo","Pepito","Perceval","Percival","Percy","Perice","Perkin","Pernell","Perren","Perry","Pete","Peter","Peterus","Petey","Petr","Peyter","Peyton","Phil","Philbert","Philip","Phillip","Phillipe","Phillipp","Phineas","Phip","Pierce","Pierre","Pierson","Pieter","Pietrek","Pietro","Piggy","Pincas","Pinchas","Pincus","Piotr","Pip","Pippo","Pooh","Port","Porter","Portie","Porty","Poul","Powell","Pren","Prent","Prentice","Prentiss","Prescott","Preston","Price","Prince","Prinz","Pryce","Puff","Purcell","Putnam","Putnem","Pyotr","Quent","Quentin","Quill","Quillan","Quincey","Quincy","Quinlan","Quinn","Quint","Quintin","Quinton","Quintus","Rab","Rabbi","Rabi","Rad","Radcliffe","Raddie","Raddy","Rafael","Rafaellle","Rafaello","Rafe","Raff","Raffaello","Raffarty","Rafferty","Rafi","Ragnar","Raimondo","Raimund","Raimundo","Rainer","Raleigh","Ralf","Ralph","Ram","Ramon","Ramsay","Ramsey","Rance","Rancell","Rand","Randal","Randall","Randell","Randi","Randie","Randolf","Randolph","Randy","Ransell","Ransom","Raoul","Raphael","Raul","Ravi","Ravid","Raviv","Rawley","Ray","Raymond","Raymund","Raynard","Rayner","Raynor","Read","Reade","Reagan","Reagen","Reamonn","Red","Redd","Redford","Reece","Reed","Rees","Reese","Reg","Regan","Regen","Reggie","Reggis","Reggy","Reginald","Reginauld","Reid","Reidar","Reider","Reilly","Reinald","Reinaldo","Reinaldos","Reinhard","Reinhold","Reinold","Reinwald","Rem","Remington","Remus","Renado","Renaldo","Renard","Renato","Renaud","Renault","Rene","Reube","Reuben","Reuven","Rex","Rey","Reynard","Reynold","Reynolds","Rhett","Rhys","Ric","Ricard","Ricardo","Riccardo","Rice","Rich","Richard","Richardo","Richart","Richie","Richmond","Richmound","Richy","Rick","Rickard","Rickert","Rickey","Ricki","Rickie","Ricky","Ricoriki","Rik","Rikki","Riley","Rinaldo","Ring","Ringo","Riobard","Riordan","Rip","Ripley","Ritchie","Roarke","Rob","Robb","Robbert","Robbie","Robby","Robers","Robert","Roberto","Robin","Robinet","Robinson","Rochester","Rock","Rockey","Rockie","Rockwell","Rocky","Rod","Rodd","Roddie","Roddy","Roderic","Roderich","Roderick","Roderigo","Rodge","Rodger","Rodney","Rodolfo","Rodolph","Rodolphe","Rodrick","Rodrigo","Rodrique","Rog","Roger","Rogerio","Rogers","Roi","Roland","Rolando","Roldan","Roley","Rolf","Rolfe","Rolland","Rollie","Rollin","Rollins","Rollo","Rolph","Roma","Romain","Roman","Romeo","Ron","Ronald","Ronnie","Ronny","Rooney","Roosevelt","Rorke","Rory","Rosco","Roscoe","Ross","Rossie","Rossy","Roth","Rourke","Rouvin","Rowan","Rowen","Rowland","Rowney","Roy","Royal","Royall","Royce","Rriocard","Rube","Ruben","Rubin","Ruby","Rudd","Ruddie","Ruddy","Rudie","Rudiger","Rudolf","Rudolfo","Rudolph","Rudy","Rudyard","Rufe","Rufus","Ruggiero","Rupert","Ruperto","Ruprecht","Rurik","Russ","Russell","Rustie","Rustin","Rusty","Rutger","Rutherford","Rutledge","Rutter","Ruttger","Ruy","Ryan","Ryley","Ryon","Ryun","Sal","Saleem","Salem","Salim","Salmon","Salomo","Salomon","Salomone","Salvador","Salvatore","Salvidor","Sam","Sammie","Sammy","Sampson","Samson","Samuel","Samuele","Sancho","Sander","Sanders","Sanderson","Sandor","Sandro","Sandy","Sanford","Sanson","Sansone","Sarge","Sargent","Sascha","Sasha","Saul","Sauncho","Saunder","Saunders","Saunderson","Saundra","Sauveur","Saw","Sawyer","Sawyere","Sax","Saxe","Saxon","Say","Sayer","Sayers","Sayre","Sayres","Scarface","Schuyler","Scot","Scott","Scotti","Scottie","Scotty","Seamus","Sean","Sebastian","Sebastiano","Sebastien","See","Selby","Selig","Serge","Sergeant","Sergei","Sergent","Sergio","Seth","Seumas","Seward","Seymour","Shadow","Shae","Shaine","Shalom","Shamus","Shanan","Shane","Shannan","Shannon","Shaughn","Shaun","Shaw","Shawn","Shay","Shayne","Shea","Sheff","Sheffie","Sheffield","Sheffy","Shelby","Shelden","Shell","Shelley","Shelton","Shem","Shep","Shepard","Shepherd","Sheppard","Shepperd","Sheridan","Sherlock","Sherlocke","Sherm","Sherman","Shermie","Shermy","Sherwin","Sherwood","Sherwynd","Sholom","Shurlock","Shurlocke","Shurwood","Si","Sibyl","Sid","Sidnee","Sidney","Siegfried","Siffre","Sig","Sigfrid","Sigfried","Sigismond","Sigismondo","Sigismund","Sigismundo","Sigmund","Sigvard","Silas","Silvain","Silvan","Silvano","Silvanus","Silvester","Silvio","Sim","Simeon","Simmonds","Simon","Simone","Sinclair","Sinclare","Siward","Skell","Skelly","Skip","Skipp","Skipper","Skippie","Skippy","Skipton","Sky","Skye","Skylar","Skyler","Slade","Sloan","Sloane","Sly","Smith","Smitty","Sol","Sollie","Solly","Solomon","Somerset","Son","Sonnie","Sonny","Spence","Spencer","Spense","Spenser","Spike","Stacee","Stacy","Staffard","Stafford","Staford","Stan","Standford","Stanfield","Stanford","Stanislas","Stanislaus","Stanislaw","Stanleigh","Stanley","Stanly","Stanton","Stanwood","Stavro","Stavros","Stearn","Stearne","Stefan","Stefano","Steffen","Stephan","Stephanus","Stephen","Sterling","Stern","Sterne","Steve","Steven","Stevie","Stevy","Steward","Stewart","Stillman","Stillmann","Stinky","Stirling","Stu","Stuart","Sullivan","Sully","Sumner","Sunny","Sutherlan","Sutherland","Sutton","Sven","Svend","Swen","Syd","Sydney","Sylas","Sylvan","Sylvester","Syman","Symon","Tab","Tabb","Tabbie","Tabby","Taber","Tabor","Tad","Tadd","Taddeo","Taddeusz","Tadeas","Tadeo","Tades","Tadio","Tailor","Tait","Taite","Talbert","Talbot","Tallie","Tally","Tam","Tamas","Tammie","Tammy","Tan","Tann","Tanner","Tanney","Tannie","Tanny","Tarrance","Tate","Taylor","Teador","Ted","Tedd","Teddie","Teddy","Tedie","Tedman","Tedmund","Temp","Temple","Templeton","Teodoor","Teodor","Teodorico","Teodoro","Terence","Terencio","Terrance","Terrel","Terrell","Terrence","Terri","Terrill","Terry","Thacher","Thaddeus","Thaddus","Thadeus","Thain","Thaine","Thane","Thatch","Thatcher","Thaxter","Thayne","Thebault","Thedric","Thedrick","Theo","Theobald","Theodor","Theodore","Theodoric","Thibaud","Thibaut","Thom","Thoma","Thomas","Thor","Thorin","Thorn","Thorndike","Thornie","Thornton","Thorny","Thorpe","Thorstein","Thorsten","Thorvald","Thurstan","Thurston","Tibold","Tiebold","Tiebout","Tiler","Tim","Timmie","Timmy","Timofei","Timoteo","Timothee","Timotheus","Timothy","Tirrell","Tito","Titos","Titus","Tobe","Tobiah","Tobias","Tobie","Tobin","Tobit","Toby","Tod","Todd","Toddie","Toddy","Toiboid","Tom","Tomas","Tomaso","Tome","Tomkin","Tomlin","Tommie","Tommy","Tonnie","Tony","Tore","Torey","Torin","Torr","Torrance","Torre","Torrence","Torrey","Torrin","Torry","Town","Towney","Townie","Townsend","Towny","Trace","Tracey","Tracie","Tracy","Traver","Travers","Travis","Travus","Trefor","Tremain","Tremaine","Tremayne","Trent","Trenton","Trev","Trevar","Trever","Trevor","Trey","Trip","Tripp","Tris","Tristam","Tristan","Troy","Trstram","Trueman","Trumaine","Truman","Trumann","Tuck","Tucker","Tuckie","Tucky","Tudor","Tull","Tulley","Tully","Turner","Ty","Tybalt","Tye","Tyler","Tymon","Tymothy","Tynan","Tyrone","Tyrus","Tyson","Udale","Udall","Udell","Ugo","Ulberto","Ulick","Ulises","Ulric","Ulrich","Ulrick","Ulysses","Umberto","Upton","Urbain","Urban","Urbano","Urbanus","Uri","Uriah","Uriel","Urson","Vachel","Vaclav","Vail","Val","Valdemar","Vale","Valentijn","Valentin","Valentine","Valentino","Valle","Van","Vance","Vanya","Vasili","Vasilis","Vasily","Vassili","Vassily","Vaughan","Vaughn","Verge","Vergil","Vern","Verne","Vernen","Verney","Vernon","Vernor","Vic","Vick","Victoir","Victor","Vidovic","Vidovik","Vin","Vince","Vincent","Vincents","Vincenty","Vincenz","Vinnie","Vinny","Vinson","Virge","Virgie","Virgil","Virgilio","Vite","Vito","Vittorio","Vlad","Vladamir","Vladimir","Von","Wade","Wadsworth","Wain","Wainwright","Wait","Waite","Waiter","Wake","Wakefield","Wald","Waldemar","Walden","Waldo","Waldon","Walker","Wallace","Wallache","Wallas","Wallie","Wallis","Wally","Walsh","Walt","Walther","Walton","Wang","Ward","Warde","Warden","Ware","Waring","Warner","Warren","Wash","Washington","Wat","Waverley","Waverly","Way","Waylan","Wayland","Waylen","Waylin","Waylon","Wayne","Web","Webb","Weber","Webster","Weidar","Weider","Welbie","Welby","Welch","Wells","Welsh","Wendall","Wendel","Wendell","Werner","Wernher","Wes","Wesley","West","Westbrook","Westbrooke","Westleigh","Westley","Weston","Weylin","Wheeler","Whit","Whitaker","Whitby","Whitman","Whitney","Whittaker","Wiatt","Wilbert","Wilbur","Wilburt","Wilden","Wildon","Wilek","Wiley","Wilfred","Wilfrid","Wilhelm","Will","Willard","Willdon","Willem","Willey","Willi","William","Willie","Willis","Willy","Wilmar","Wilmer","Wilt","Wilton","Win","Windham","Winfield","Winfred","Winifield","Winn","Winnie","Winny","Winslow","Winston","Winthrop","Wit","Wittie","Witty","Wolf","Wolfgang","Wolfie","Wolfy","Wood","Woodie","Woodman","Woodrow","Woody","Worden","Worth","Worthington","Worthy","Wright","Wyatan","Wyatt","Wye","Wylie","Wyn","Wyndham","Wynn","Xavier","Xenos","Xerxes","Xever","Ximenes","Ximenez","Xymenes","Yale","Yanaton","Yance","Yancey","Yancy","Yank","Yankee","Yard","Yardley","Yehudi","Yehudit","Yorgo","Yorgos","York","Yorke","Yorker","Yul","Yule","Yulma","Yuma","Yuri","Yurik","Yves","Yvon","Yvor","Zaccaria","Zach","Zacharia","Zachariah","Zacharias","Zacharie","Zachary","Zacherie","Zachery","Zack","Zackariah","Zak","Zane","Zared","Zeb","Zebadiah","Zebedee","Zebulen","Zebulon","Zechariah","Zed","Zedekiah","Zeke","Zelig","Zerk","Zollie","Zolly"]'),$=a=>a.trim().toLowerCase(),fe=a=>[...new Map(a.map(i=>[$(i),i.trim()])).values()],ve={female:fe(kn),male:fe(Cn)};function Sn(a,i,t){const r=new Set(t.map($));r.add($(i));let l=ve[a].filter(s=>!r.has($(s)));return l.length||(l=ve[a].filter(s=>$(s)!==$(i))),l[Math.floor(Math.random()*l.length)]}function Ki({bot:a,patch:i,activeState:t,mascotMotion:r,namePlaceholder:l,parts:s}){const[d,h]=x.useState(!1),{draft:u}=H(),{state:c}=G(),g=y=>!s||s.includes(y);return e.jsxs("div",{className:"flex flex-col gap-4",children:[g("avatar")&&e.jsx(bn,{bot:a,activeState:t,mascotMotion:r,onPatch:i}),g("provenance")&&e.jsx(vn,{bot:a}),g("name")&&e.jsxs("div",{children:[e.jsxs("div",{className:"mb-1.5 flex flex-wrap items-center justify-between gap-x-3 gap-y-1",children:[e.jsx("label",{htmlFor:`bot-name-${a.id}`,className:"text-[13px] text-ink-secondary",children:n("botSettings.identity.name")}),u&&e.jsx("div",{className:"flex flex-wrap gap-1",children:["female","male"].map(y=>e.jsx("button",{type:"button",className:"rounded-md px-2 py-1 text-xs text-ink-secondary hover:bg-control hover:text-ink",onClick:()=>i({name:Sn(y,a.name,c.bots.map(m=>m.name))}),children:n(y==="female"?"newBot.randomFemaleName":"newBot.randomMaleName")},y))})]}),e.jsx(K,{bot:a,kind:"chief"}),e.jsx("input",{id:`bot-name-${a.id}`,className:O,maxLength:Y.name,value:a.name,placeholder:l,onChange:y=>i({name:y.target.value})})]}),g("title")&&e.jsxs(fn,{label:n("botSettings.identity.title"),children:[e.jsx(K,{bot:a,kind:"chief"}),e.jsx("input",{className:O,maxLength:Y.title,placeholder:n("botSettings.identity.titlePlaceholder"),value:a.title,onChange:y=>i({title:y.target.value})})]}),g("blurb")&&e.jsxs("div",{className:"block",children:[e.jsxs("div",{className:"mb-1.5 flex items-center justify-between gap-3",children:[e.jsx("label",{htmlFor:`bot-instructions-${a.id}`,className:"text-[13px] text-ink-secondary",children:n("botSettings.identity.blurb")}),e.jsxs("button",{type:"button",onClick:()=>h(!0),className:"flex items-center gap-1.5 rounded-md px-1.5 py-1 text-[12px] font-medium text-accent-text hover:bg-accent/10",children:[e.jsx(ne,{size:12})," ",n("botSettings.identity.viewFull")]})]}),e.jsx(K,{bot:a,kind:"chief"}),e.jsx("textarea",{id:`bot-instructions-${a.id}`,className:R(O,"min-h-[72px] resize-y leading-relaxed"),maxLength:Y.description,placeholder:n("botSettings.identity.blurbPlaceholder"),"aria-label":n("botSettings.identity.blurb"),value:a.description,onChange:y=>i({description:y.target.value})}),e.jsxs("div",{className:"mt-1.5 flex items-start justify-between gap-3 text-[11px] text-ink-secondary",children:[e.jsx("span",{children:n("botSettings.identity.blurbHelp")}),a.description.length>3e3&&e.jsxs("span",{className:"shrink-0 tabular-nums",children:[a.description.length.toLocaleString(U())," / ",Y.description.toLocaleString(U())]})]})]}),e.jsx(ia,{bot:a}),d&&e.jsx(gn,{bot:a,inline:u,onClose:()=>h(!1)})]})}function Je(a){return new TextEncoder().encode(a).length}function Nn(a,i=200){const t=a.trim().split(`
|
|
2
|
+
`)[0]??"",r=t.match(/^.*?(?:[。!?]|[.!?](?=\s|$))/u);return(r?r[0]:t).trim().slice(0,i).replace(/[\uD800-\uDBFF]$/u,"")}function Mn(a,i){return Je(a)>i?null:{soul:a}}function jn({bot:a,onPatch:i,simple:t}){const{dispatch:r,flushBotPatches:l}=G(),{request:s}=H(),d=Y.soul,[h,u]=x.useState(a.soul??""),[c,g]=x.useState(null),[y,m]=x.useState(!1);x.useEffect(()=>{u(a.soul??"")},[a.id,a.soul]);const o=()=>l(a.id).then(()=>s(`/api/bots/${a.id}/soul`)).then(j=>g(j)).catch(()=>g(null));x.useEffect(()=>{o()},[a.id,a.soulDrift,l]);const b=Je(h),p=b>d,S=j=>{u(j);const f=Mn(j,d);f&&i(f)},B=async j=>{if(!(y||!c?.revision||typeof c.fileText!="string")){m(!0);try{await l(a.id),await s(`/api/bots/${a.id}/soul/${j}`,{method:"POST",body:JSON.stringify({fileText:c.fileText,expectedRevision:c.revision})})}catch(f){r({type:"error",message:f instanceof Error?f.message:String(f)})}finally{await o(),m(!1)}}},N=a.description.length>400&&!(a.soul??"").trim();return e.jsxs("div",{className:"block",children:[e.jsxs("div",{className:"mb-1.5 flex items-center justify-between gap-3",children:[e.jsx("label",{htmlFor:`bot-soul-${a.id}`,className:t?"text-[12px] text-ink-secondary":"text-[13px] text-ink-secondary",children:t?t.label:n("botIdentity.soul.label")}),!t&&N&&e.jsx("button",{type:"button",disabled:y,onClick:()=>i({soul:a.description,description:Nn(a.description)}),className:"rounded-md px-1.5 py-1 text-[12px] font-medium text-accent-text hover:bg-accent/10",children:n("botIdentity.soul.moveToFile")})]}),c?.drift&&e.jsxs("div",{className:"mb-2 rounded-lg border border-amber-500/40 bg-amber-500/10 p-3 text-[12px] text-ink",children:[e.jsx("div",{className:"font-medium",children:n("botIdentity.soul.externalEdit")}),e.jsxs("div",{className:"mt-1 text-ink-secondary",children:[n("botIdentity.soul.externalEditHelp")," ",n("botIdentity.soul.fileLabel")," ",e.jsx("span",{className:"break-all",children:c.file})]}),e.jsx("pre",{className:"mt-2 max-h-40 overflow-auto whitespace-pre-wrap rounded bg-control p-2 text-[12px]",children:c.fileText}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[e.jsx("button",{type:"button",disabled:y,onClick:()=>{B("apply-file")},className:"rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:n("botIdentity.soul.useFile")}),e.jsx("button",{type:"button",disabled:y,onClick:()=>{B("discard-file")},className:"rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("botIdentity.soul.keepSaved")})]})]}),e.jsx("textarea",{id:`bot-soul-${a.id}`,className:R(O,t?"min-h-[140px] resize-y rounded-xl text-[14px] leading-relaxed":"min-h-[220px] resize-y font-mono leading-relaxed",p&&"ring-2 ring-red-500/60"),placeholder:t?t.placeholder:n("bot.soul.placeholder"),"aria-invalid":p||void 0,disabled:y,value:h,onChange:j=>S(j.target.value)}),(!t||p)&&e.jsxs("div",{className:"mt-1.5 flex items-start justify-between gap-3 text-[11px] text-ink-secondary",children:[e.jsx("span",{children:!t&&e.jsxs(e.Fragment,{children:[n("botIdentity.soul.contextHelp"),c?.file?e.jsxs(e.Fragment,{children:[" ",n("botIdentity.soul.mirroredTo")," ",e.jsx("span",{className:"break-all",children:c.file}),"."]}):null]})}),e.jsx("span",{className:R("shrink-0 tabular-nums",p&&"font-medium text-red-500"),children:n(p?"botIdentity.soul.bytesOver":"botIdentity.soul.bytes",{bytes:b.toLocaleString(U()),limit:d.toLocaleString(U())})})]})]})}const Ae={default:["botSettings.replyStyle.default","botSettings.replyStyle.defaultHint"],conversational:["botSettings.replyStyle.conversational","botSettings.replyStyle.conversationalHint"]};function Bn({bot:a,patch:i}){const t=a.replyStyle??"default";return e.jsxs("div",{className:"flex flex-col gap-3 rounded-xl bg-card p-4","data-reply-style":!0,children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botSettings.replyStyle.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botSettings.replyStyle.subtitle")})]}),e.jsx("div",{role:"radiogroup","aria-label":n("botSettings.replyStyle.title"),className:"flex flex-col gap-2",children:ra.map(r=>e.jsxs("label",{className:"flex cursor-pointer items-start gap-2 text-[13px] text-ink",children:[e.jsx("input",{type:"radio",className:"mt-1",name:`reply-style-${a.id}`,value:r,checked:t===r,onChange:()=>i({replyStyle:r})}),e.jsxs("span",{children:[n(Ae[r][0]),e.jsx("span",{className:"block text-[12px] text-ink-secondary",children:n(Ae[r][1])})]})]},r))})]})}function Hi({bot:a,patch:i}){return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("p",{className:"text-[13px] leading-relaxed text-ink-secondary",children:n("botSettings.soul.description")}),e.jsx(K,{bot:a,kind:"chief"}),e.jsx(jn,{bot:a,onPatch:i}),e.jsx(Bn,{bot:a,patch:i})]})}const ke={link:"skills.import.reason.link",submodule:"skills.import.reason.submodule",hidden:"skills.import.reason.hidden",generated:"skills.import.reason.generated",name:"skills.import.reason.name",duplicate:"skills.import.reason.duplicate",deep:"skills.import.reason.deep",large:"skills.import.reason.large",full:"skills.import.reason.full",lfs:"skills.import.reason.lfs",unlisted:"skills.import.reason.unlisted"},wn=3;function Ln(a){const i=t=>new Intl.ListFormat(Ne(),{style:"long",type:"conjunction"}).format(t);return a.map(t=>{const r=[n(t.files===1?"skills.import.files.one":"skills.import.files.other",{count:t.files})];t.scripts&&r.push(n(t.scripts===1?"skills.import.scripts.one":"skills.import.scripts.other",{count:t.scripts}));const l=n("skills.import.arrived",{name:t.name,what:i(r)});if(!t.skippedCount)return l;const s=t.skipped.slice(0,wn).map(d=>d.path?n("skills.import.leftOutItem",{path:d.path,reason:n(ke[d.reason])}):n(ke[d.reason]));return t.skippedCount>s.length&&s.push(n("skills.import.leftOutMore",{count:t.skippedCount-s.length})),`${l} ${n("skills.import.leftOut",{list:i(s)})}`})}function Dn({bot:a,onAdded:i}){const{request:t,draft:r}=H(),l=x.useRef(t);l.current=t;const[s,d]=x.useState(null),[h,u]=x.useState([]),[c,g]=x.useState(""),[y,m]=x.useState(""),o=x.useCallback(async p=>{try{const S=await l.current(`/api/org-library/skills?botId=${encodeURIComponent(a.id)}`);if(p?.())return;d(S.organization?.name??null),u(S.skills??[])}catch{p?.()||d(null)}},[a.id]);if(x.useEffect(()=>{if(r)return;let p=!1;return o(()=>p),()=>{p=!0}},[r,o]),r||!s||h.length===0)return null;const b=async p=>{g(`${p.installId}:${p.name}`),m("");try{await l.current("/api/org-library/skills",{method:"POST",body:JSON.stringify({botId:a.id,installId:p.installId,name:p.name})}),await o(),i()}catch(S){m(S instanceof Error?S.message:String(S))}finally{g("")}};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Qa,{size:16,className:"text-ink-secondary"}),e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("orgLibrary.tab",{name:s})})]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:n("orgLibrary.skillsHint")}),e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:h.map(p=>e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate font-mono text-[13px] text-ink",children:p.name}),e.jsx("div",{className:"mt-0.5 line-clamp-2 text-[12px] text-ink-secondary",children:p.description}),e.jsx("div",{className:"mt-0.5 truncate text-[11px] text-ink-secondary",children:n("orgLibrary.skillFrom",{package:p.packageName,release:p.release,publisher:p.publisher})})]}),p.added?e.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-[12px] text-ink-secondary",children:[e.jsx(Me,{size:13,className:"text-success"}),n("orgLibrary.added")]}):e.jsx("button",{type:"button",disabled:c!=="",onClick:()=>{b(p)},"aria-label":n("orgLibrary.skillAddAria",{name:p.name}),className:"shrink-0 rounded-lg bg-control px-3 py-1.5 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:c===`${p.installId}:${p.name}`?n("orgLibrary.adding"):n("orgLibrary.add")})]},`${p.installId}:${p.name}`))}),y&&e.jsx("div",{role:"alert",className:"mt-2 text-[12px] text-danger",children:y})]})}const Rn="written:bot settings",En=16e3,Tn=["goal","learn","setup"];function Ge(a){return a.replace(/\s+/g," ").trim().replace(/^["']+|["']+$/g,"").trim()}function Ke(a,i=[]){const t=a.name.trim();if(!ta(t))return"name";if(Tn.includes(t))return"reserved";if(i.includes(t))return"taken";const r=Ge(a.description);if(!r||r.length>la)return"description";const l=a.instructions.trim();return!l||l.length>En?"instructions":null}function Jn(a){const i=Ke(a);if(i)throw new Error(`written skill: invalid ${i}`);const t=a.name.trim(),r=Ge(a.description),l=`---
|
|
3
3
|
name: ${t}
|
|
4
4
|
description: ${sa(r)}
|
|
5
5
|
---
|
|
@@ -9,14 +9,14 @@ description: ${sa(r)}
|
|
|
9
9
|
A command the user wrote. When they run /${t}, follow these instructions. Where they say {input}, use what the user typed after the command.
|
|
10
10
|
|
|
11
11
|
${a.instructions.trim()}
|
|
12
|
-
`,s=oa(l);if("error"in s||s.name!==t||s.description!==r)throw new Error("written skill: did not round-trip");return l}const Gn={name:"skills.write.problem.name",reserved:"skills.write.problem.reserved",taken:"skills.write.problem.taken",description:"skills.write.problem.description",instructions:"skills.write.problem.instructions"};function Kn({bot:a,taken:i,onSaved:t}){const{request:r}=H(),[l,s]=x.useState(""),[d,h]=x.useState(""),[u,c]=x.useState(""),[g,y]=x.useState(!1),[m,o]=x.useState(""),[b,p]=x.useState(""),S={name:l.trim(),description:d,instructions:u},B=He(S,i),N=!!(l.trim()||d.trim()||u.trim()),j=async()=>{if(!(B||g)){y(!0),p(""),o("");try{await r(`/api/bots/${a.id}/skill-template`,{method:"POST",body:JSON.stringify({name:S.name,description:"",warnings:[],source:Rn,text:Jn(S),enabled:!0})}),o(n("skills.write.saved",{name:S.name})),s(""),h(""),c(""),t()}catch(f){p(f instanceof Error?f.message:n("skills.write.failed"))}finally{y(!1)}}};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(pn,{size:16,className:"text-ink-secondary"}),e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("skills.write.title")})]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:n("skills.write.hint")}),e.jsxs("form",{className:"mt-3 flex flex-col gap-2",onSubmit:f=>{f.preventDefault(),j()},children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative w-44 shrink-0",children:[e.jsx("span",{className:"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 font-mono text-[15px] text-ink-secondary",children:"/"}),e.jsx("input",{className:O+" pl-6 font-mono",placeholder:n("skills.write.namePlaceholder"),"aria-label":n("skills.write.name"),value:l,maxLength:64,onChange:f=>s(f.target.value.toLowerCase().replace(/\s+/g,"-"))})]}),e.jsx("input",{className:O,placeholder:n("skills.write.descriptionPlaceholder"),"aria-label":n("skills.write.description"),value:d,maxLength:1024,onChange:f=>h(f.target.value)})]}),e.jsx("textarea",{className:O+" min-h-24 resize-y leading-relaxed",placeholder:n("skills.write.instructionsPlaceholder"),"aria-label":n("skills.write.instructions"),value:u,onChange:f=>c(f.target.value)}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{className:"min-w-0 text-[12px] text-ink-secondary",children:N&&B?n(Gn[B]):m}),e.jsx("button",{type:"submit",disabled:g||!!B,className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:g?n("skills.write.saving"):n("skills.write.save")})]}),b&&e.jsx("div",{role:"alert",className:"text-[12px] text-danger",children:b})]})]})}const ae=a=>a.enabled&&a.listed!==!1;function Hn(a){const{request:i}=H(),[t,r]=x.useState([]),[l,s]=x.useState([]),[d,h]=x.useState([]),[u,c]=x.useState(""),[g,y]=x.useState([]),[m,o]=x.useState(!0),[b,p]=x.useState(""),[S,B]=x.useState(""),[N,j]=x.useState(null),f=x.useRef(!1),k=async v=>{try{const C=await i(`/api/bots/${a.id}/skills`);if(v?.())return;r(C.skills??[]),y(C.staged??[]),h(C.library??[]),s(C.assignedSkills??[]),c(""),B("")}catch(C){v?.()||B(C instanceof Error?C.message:n("skills.error.loadLearned"))}finally{v?.()||o(!1)}};x.useEffect(()=>{let v=!1;return o(!0),j(null),k(()=>v),()=>{v=!0}},[a.id]);const M=async(v,C=!1)=>{const I=(await i(`/api/bots/${a.id}/skills`)).assignedSkills??l,D=C?I.filter(P=>P!==v):[...new Set([...I,v])];await i(`/api/bots/${a.id}/skills-library`,{method:"PUT",body:JSON.stringify({skills:D})}),await k()};return{skills:t,staged:g,loading:m,working:b,setWorking:p,error:S,setError:B,reviewing:N,setReviewing:j,refresh:k,toggle:async v=>{p(v.name),B("");try{if(v.origin==="native"){await i(`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!v.enabled})}),await k();return}if(v.origin==="library"&&v.enabled){await i(`/api/skills-library/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!v.enabled})}),await k();return}if(!v.enabled||!ae(v)){if(v.enabled){await i(`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!0})}),await k();return}const C=await i(v.origin==="library"?`/api/skills-library/${encodeURIComponent(v.name)}`:`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`);if(!C.text)throw new Error(n("skills.error.contentsRelearn"));j({skill:v,text:C.text});return}await i(`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!1})}),await k()}catch(C){B(C instanceof Error?C.message:n("skills.error.update"))}finally{p("")}},enableReviewed:async()=>{if(!N)return;const{skill:v}=N;p(v.name),B("");try{await i(v.origin==="library"?`/api/skills-library/${encodeURIComponent(v.name)}`:`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!0})}),j(null),await k()}catch(C){B(C instanceof Error?C.message:n("skills.error.enable"))}finally{p("")}},libraryPool:d,addFromLibrary:u,setAddFromLibrary:c,assignmentBusy:f,putAssignments:M,addToBot:async()=>{const v=u.trim();if(!(!v||f.current)){f.current=!0,p(v),B("");try{await M(v)}catch(C){B(C instanceof Error?C.message:n("skills.error.assign"))}finally{f.current=!1,p("")}}}}}function Fn({skill:a,text:i,error:t,working:r,onCancel:l,onEnable:s}){const d=x.useRef(null),h=x.useRef(l);return h.current=l,x.useEffect(()=>{const u=document.activeElement instanceof HTMLElement?document.activeElement:null,c=d.current,g=c?.parentElement?.closest('[role="dialog"]');c?.focus();const y=m=>{if(m.key==="Escape"&&(m.preventDefault(),r||h.current()),m.key!=="Tab"||!c)return;const o=c.querySelectorAll('button:not([disabled]), [tabindex="0"]'),b=o[0],p=o[o.length-1];!b||!p||(m.shiftKey&&(document.activeElement===b||document.activeElement===c)?(m.preventDefault(),p.focus()):!m.shiftKey&&document.activeElement===p&&(m.preventDefault(),b.focus()))};return window.addEventListener("keydown",y),()=>{window.removeEventListener("keydown",y),u&&u!==document.body&&u.isConnected?u.focus():g?.focus()}},[r]),e.jsx("div",{ref:d,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"skill-review-title",className:"fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-6",children:e.jsxs("div",{className:"flex max-h-[min(760px,90vh)] w-full max-w-2xl flex-col rounded-2xl bg-card p-5 shadow-2xl",children:[e.jsx("div",{id:"skill-review-title",className:"text-[16px] font-semibold text-ink",children:n("skills.reviewTitle",{name:a.name})}),e.jsx("div",{className:"mt-1 break-all text-[12px] text-ink-secondary",children:n("skills.source",{source:a.source})}),a.warnings.length>0&&e.jsx("div",{className:"mt-2 rounded-lg bg-warning/10 px-3 py-2 text-[12px] text-warning",children:a.warnings.join(" · ")}),e.jsx("pre",{tabIndex:0,"aria-label":n("skills.fullSkill",{name:a.name}),className:"mt-3 min-h-0 flex-1 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-inset p-3 font-mono text-[12px] leading-relaxed text-ink",children:i}),t&&e.jsx("div",{role:"alert",className:"mt-2 text-[12px] text-danger",children:t}),e.jsxs("div",{className:"mt-4 flex justify-end gap-2",children:[e.jsx("button",{type:"button",disabled:r,onClick:l,className:"rounded-lg px-4 py-2 text-[13px] font-medium text-ink-secondary hover:bg-raised disabled:opacity-40",children:n("common.cancel")}),e.jsx("button",{type:"button",disabled:r,onClick:s,className:"rounded-lg bg-accent px-4 py-2 text-[13px] font-semibold text-white disabled:opacity-40",children:n("skills.enableReviewed")})]})]})})}function Fi({bot:a}){const{request:i}=H(),{state:t}=G(),r=da(t.config),l=ca(t.config),{skills:s,staged:d,loading:h,working:u,setWorking:c,error:g,setError:y,reviewing:m,setReviewing:o,refresh:b,toggle:p,enableReviewed:S,libraryPool:B,addFromLibrary:N,setAddFromLibrary:j,assignmentBusy:f,addToBot:k}=Hn(a),[M,L]=x.useState(null),[J,F]=x.useState(""),[v,C]=x.useState(!1),[w,I]=x.useState(""),D=x.useRef(null),P=!!M;x.useEffect(()=>{if(!P)return;const A=document.activeElement instanceof HTMLElement?document.activeElement:null,E=D.current,Ve=E?.parentElement?.closest('[role="dialog"]');E?.focus();const ye=z=>{if(z.key==="Escape"&&(z.preventDefault(),u||L(null)),z.key!=="Tab"||!E)return;const te=E.querySelectorAll('button:not([disabled]), [tabindex="0"]'),le=te[0],se=te[te.length-1];!le||!se||(z.shiftKey&&(document.activeElement===le||document.activeElement===E)?(z.preventDefault(),se.focus()):!z.shiftKey&&document.activeElement===se&&(z.preventDefault(),le.focus()))};return window.addEventListener("keydown",ye),()=>{window.removeEventListener("keydown",ye),A&&A!==document.body&&A.isConnected?A.focus():Ve?.focus()}},[P,u]),x.useEffect(()=>{L(null)},[a.id]);const V=async A=>{if(A.origin==="library"){if(f.current||!window.confirm(n("skills.unassignConfirm",{name:A.name})))return;f.current=!0,c(A.name),y("");try{await i(`/api/bots/${a.id}/skills/${encodeURIComponent(A.name)}`,{method:"DELETE"}),await b()}catch(E){y(E instanceof Error?E.message:n("skills.error.unassign"))}finally{f.current=!1,c("")}return}if(window.confirm(n("skills.removeLearnedConfirm",{name:A.name}))){c(A.name),y("");try{await i(`/api/bots/${a.id}/skills/${encodeURIComponent(A.name)}`,{method:"DELETE"}),await b()}catch(E){y(E instanceof Error?E.message:n("skills.error.remove"))}finally{c("")}}},re=async A=>{y("");try{const E=A.origin==="library"?await i(`/api/skills-library/${encodeURIComponent(A.name)}`):await i(`/api/bots/${a.id}/skills/${encodeURIComponent(A.name)}`);L({name:A.name,text:E.text??""})}catch(E){y(E instanceof Error?E.message:n("skills.error.load"))}},We=async()=>{const A=J.trim();if(A){C(!0),y(""),I("");try{const E=await i(`/api/bots/${a.id}/skills`,{method:"POST",body:JSON.stringify({source:A})});I([...Ln(E.imported??[]),n("skills.import.reviewBelow")].join(" ")),F(""),await b()}catch(E){y(E instanceof Error?E.message:n("skills.error.import"))}finally{C(!1)}}};return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ne,{size:16,className:"text-ink-secondary"}),e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("skills.learned.title")})]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:r?n("skills.learned.hintOn"):n("skills.learned.hintOff")}),l?e.jsxs("div",{className:"mt-3 flex flex-col gap-1.5",children:[B.length>0?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(_,{size:"lg",className:"flex-1","aria-label":n("skills.library.addLabel"),value:N,disabled:!!u,onChange:A=>j(A.target.value),children:[e.jsx("option",{value:"",children:n("skills.library.addPlaceholder")}),B.map(A=>e.jsx("option",{value:A.name,children:A.name},A.name))]}),e.jsx("button",{type:"button",disabled:!N||!!u,onClick:()=>{k()},className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("common.add")})]}):e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("skills.library.allAssigned")}),e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("skills.library.manageHint")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("form",{className:"mt-3 flex items-center gap-2",onSubmit:A=>{A.preventDefault(),We()},children:[e.jsx("input",{className:O,placeholder:n("skills.import.placeholder"),"aria-label":n("skills.import.label"),value:J,onChange:A=>F(A.target.value)}),e.jsx("button",{type:"submit",disabled:v||!J.trim(),className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:v?n("skills.import.importing"):n("skills.import.button")})]}),w&&e.jsx("div",{className:"mt-1 text-[12px] text-ink-secondary",children:w})]}),h?e.jsx("div",{className:"mt-3 text-[12px] text-ink-secondary",children:n("skills.loading")}):s.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("skills.empty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:s.map(A=>e.jsxs("div",{className:"px-3 py-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>{re(A)},className:"min-w-0 flex-1 text-left",children:[e.jsx("div",{className:"truncate font-mono text-[13px] text-ink",children:A.name}),(l||A.origin==="imported"||A.origin==="native")&&e.jsx("span",{className:"ml-1.5 rounded bg-control px-1 py-px font-mono text-[10px] uppercase tracking-wide text-ink-secondary",title:A.origin==="imported"?n("skills.origin.importedHint"):A.origin==="native"?n("skills.origin.nativeHint"):void 0,children:A.origin==="imported"?n("skills.origin.imported"):A.origin==="native"?n("skills.origin.native"):A.origin==="library"?n("skills.origin.library"):n("skills.origin.private")}),e.jsx("div",{className:"mt-0.5 line-clamp-2 text-[12px] text-ink-secondary",children:A.description}),e.jsx("div",{className:"mt-0.5 text-[11px] text-ink-secondary",children:n(A.enabled&&!ae(A)?"skills.foundWhenNeeded":"skills.usedWhenRelevant")})]}),e.jsx(W,{checked:ae(A),"aria-label":n(ae(A)?"skills.disableName":"skills.enableName",{name:A.name}),disabled:!!u,onClick:()=>{p(A)}}),A.origin!=="imported"&&A.origin!=="native"&&e.jsx("button",{"aria-label":n("skills.removeName",{name:A.name}),title:n("skills.remove"),disabled:!!u,onClick:()=>{V(A)},className:"flex size-8 shrink-0 items-center justify-center rounded-md text-ink-secondary hover:bg-danger/10 hover:text-danger disabled:opacity-40",children:e.jsx(Be,{size:15})})]}),e.jsx("div",{className:"mt-1 truncate text-[11px] text-ink-secondary",title:A.source,children:n("skills.source",{source:A.source})}),A.warnings.length>0&&e.jsx("div",{className:"mt-1 text-[11px] text-warning",children:A.warnings.join(" · ")})]},A.name))}),d.length>0&&e.jsx("div",{className:"mt-2 text-[12px] text-warning",children:d.length===1?n("skills.stagedOne"):n("skills.stagedMany",{count:d.length})}),g&&e.jsx("div",{role:"alert",className:"mt-2 text-[12px] text-danger",children:g})]}),e.jsx(Kn,{bot:a,taken:s.map(A=>A.name),onSaved:()=>{b()}}),e.jsx(Dn,{bot:a,onAdded:()=>{b()}}),m&&e.jsx(Fn,{skill:m.skill,text:m.text,error:g,working:u===m.skill.name,onCancel:()=>o(null),onEnable:()=>{S()}}),M&&e.jsx("div",{ref:D,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"skill-view-title",className:"fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-6",children:e.jsxs("div",{className:"flex max-h-[min(760px,90vh)] w-full max-w-2xl flex-col rounded-2xl bg-card p-5 shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{id:"skill-view-title",className:"text-[16px] font-semibold text-ink",children:M.name}),e.jsx("button",{type:"button",onClick:()=>L(null),className:"rounded-md px-2 py-1 text-[13px] text-ink-secondary hover:bg-control hover:text-ink",children:n("common.close")})]}),e.jsx("pre",{tabIndex:0,"aria-label":n("skills.fullSkill",{name:M.name}),className:"mt-3 min-h-0 flex-1 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-inset p-3 font-mono text-[12px] leading-relaxed text-ink",children:M.text})]})})]})}const Pn="MEMORY.md",Pi="SOUL.md",ie=(a,i)=>`/api/bots/${a}/memory${i?"/mine":""}`;function Oi(a,i=!1){return T(ie(a,i))}function Ii(a,i,t=!1){return T(`${ie(a,t)}/file?path=${encodeURIComponent(i)}`)}async function Wi(a,i,t,r,l=!1){const s=await fetch(`${ie(a,l)}/file`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({path:i,text:t,expectedHash:r})}),d=await s.json().catch(()=>({}));if(s.status===409&&typeof d.current=="string"&&typeof d.currentHash=="string")return{ok:!1,conflict:!0,current:d.current,currentHash:d.currentHash};if(!s.ok)throw new ma($e(d,typeof d.error=="string"?d.error:`${s.status} ${s.statusText}`),s.status);const h=d;return{ok:!0,doc:{path:h.path,text:h.text,hash:h.hash,exists:h.exists},overview:h.overview}}function Vi(a,i,t=!1){return T(`${ie(a,t)}/file?path=${encodeURIComponent(i)}`,{method:"DELETE"})}async function zi(a,i=50){return(await T(`/api/bots/${a}/memory/journal?limit=${i}`)).entries}function $i(a,i){return T(`/api/bots/${a}/memory/journal/${encodeURIComponent(i)}/revert`,{method:"POST"})}function Ui(a){return T(`/api/bots/${a}/history?view=changes&limit=20`)}function qi(a,i,t){return T(`/api/bots/${a}/history/rollback`,{method:"POST",body:JSON.stringify({id:i,expectedRevision:t})})}function Yi(a){return a?a.added+(a.topics??0):0}function Zi(a){return T(`/api/bots/${a}/memory/upkeep`)}function _i(a,i){return T(`/api/bots/${a}/memory/reviewed`,{method:"POST",body:JSON.stringify({token:i})})}function Qi(a){return T(`/api/bots/${a}/memory/tidy`,{method:"POST"})}function Xi(a,i){return T(`/api/bots/${a}/memory/open`,{method:"POST",body:JSON.stringify({target:i})})}function Q(a){return a<1024?`${a} B`:`${new Intl.NumberFormat(U(),{useGrouping:!1}).format(Math.round(a/102.4)/10)} KB`}function Fe(a,i=Date.now()){const t=Math.max(0,Math.round((i-a)/1e3));if(t<45)return n("remote.time.justNow");const r=Math.round(t/60);if(r<60)return n("remote.time.minutes",{count:r});const l=Math.round(r/60);if(l<24)return n("time.hoursAgo",{count:l});const s=Math.round(l/24);return s===1?n("time.yesterday"):s<7?n("time.daysAgo",{count:s}):new Date(a).toLocaleDateString(U(),{month:"short",day:"numeric"})}function er(a){const i=a.maxLines?a.lines/a.maxLines:0,t=a.maxBytes?a.bytes/a.maxBytes:0,r=a.truncated?"over":Math.max(i,t)>=.8?"near":"ok",l=`${a.lines} of ${a.maxLines} lines · ${Q(a.bytes)} of ${Q(a.maxBytes)}. Only the first ${a.maxLines} lines load each turn.`;let s=null;if(a.truncated){const d=a.lines-a.loadedLines;s=d>0?n(d===1?"memory.capacity.overLinesOne":"memory.capacity.overLinesMany",{lines:a.lines,loaded:a.loadedLines,missing:d}):n("memory.capacity.overBytes",{bytes:Q(a.bytes),loaded:Q(a.loadedBytes)})}return{level:r,lineShare:i,byteShare:t,sentence:l,warning:s}}function ar(a){return a===Pn?"MEMORY.md":a.startsWith("memory/log/")?a.slice(11).replace(/\.md$/,""):a.replace(/^memory\//,"").replace(/\.md$/,"")}function nr(a){return a.via==="revert"?"undo":a.via==="disk"?"changed outside the app":a.via==="tidy"?"tidy-up":a.via==="organize"?"filed into topics":a.via==="capture"?a.threadTitle?`noticed in chat “${a.threadTitle}”`:"noticed in a chat":a.threadTitle?`from chat “${a.threadTitle}”`:a.actor==="bot"?"during a task":a.via==="ui"?"in Settings":a.via==="api"?"through the API":null}function ir(a){return a.via==="revert"?"memory.source.undo":a.via==="disk"?"memory.source.disk":a.via==="tidy"?"memory.source.tidy":a.via==="organize"?"memory.source.organize":a.via==="capture"?a.threadTitle?"memory.source.captureWithTitle":"memory.source.capture":a.threadTitle?"memory.source.chat":a.actor==="bot"?"memory.source.task":a.via==="ui"?"memory.source.settings":a.via==="api"?"memory.source.api":null}function rr(a){const i=a.trim().replace(/\.md$/i,"").replace(/[^\w .-]+/g,"-").replace(/^[^\w]+/,"").trim();return i?`${i}.md`:null}function On(a,i,t){const r=(a??"").split(/[\\/]+/).filter(Boolean);return r.at(-3)==="task-workspaces"&&r.at(-2)===i&&r.at(-1)===t}const In={policy:"ask"},ue=["calendar","reminders","contacts","location","home","messages"],Wn=Object.fromEntries(ue.map(a=>[a,"write"])),Vn=15e3;function Pe(a){return a.phoneApps??Wn}function zn(a,i,t){const r={...Pe(a)};return t?r[i]=t:delete r[i],r}function $n(a,i){const t=Pe(a);return ue.map(r=>({cap:r,grant:t[r]??null,onPhone:i.some(l=>!!l.registration.capabilities[r])}))}function Un(a){return a.map(i=>i.registration.name).join(", ")}function tr(a){return ue.filter(i=>!!a.registration.capabilities[i])}function lr(a){return a==="ios"?"iPhone":"Android"}function sr(a){return`/api/phones/${encodeURIComponent(a)}`}function qn(){const[a,i]=x.useState({phase:"loading",phones:[]}),t=x.useRef(!1),r=x.useCallback(()=>{T("/api/phones",{background:!0}).then(l=>{t.current||i({phase:"ready",phones:l.phones??[]})}).catch(()=>{})},[]);return x.useEffect(()=>{t.current=!1,r();const l=window.setInterval(r,Vn);return()=>{t.current=!0,window.clearInterval(l)}},[r]),{...a,refresh:r}}function Yn({bot:a,patch:i}){const{phones:t}=qn();if(t.length===0)return null;const r=$n(a,t);return e.jsxs("div",{className:"rounded-xl bg-card p-4","data-testid":"access-phone-apps",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.phone.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.phone.subtitle",{phone:Un(t)})}),a.phoneApps===void 0&&e.jsx("div",{className:"mt-1 text-[12px] text-ink-secondary",children:n("botAccess.phone.default")}),e.jsx("div",{className:"mt-3 flex flex-col divide-y divide-hairline/20 rounded-lg bg-inset",children:r.map(({cap:l,grant:s,onPhone:d})=>{const h=n(`botAccess.phone.cap.${l}`);return e.jsxs("div",{className:R("flex flex-wrap items-center justify-between gap-3 px-3 py-1.5",!d&&"opacity-50"),children:[e.jsxs("span",{className:"min-w-0 text-[13px] text-ink",children:[h,!d&&e.jsx("span",{className:"ml-2 text-[11px] text-ink-secondary",children:n("botAccess.phone.notOnPhone")})]}),e.jsx("div",{className:"flex shrink-0 gap-0.5 rounded-md bg-card p-0.5",role:"group","aria-label":h,children:[[null,n("botAccess.scopes.off")],["read",n("botAccess.scopes.read")],["write",n("botAccess.scopes.readWrite")]].map(([u,c])=>e.jsx("button",{type:"button",disabled:!d,"aria-pressed":s===u,onClick:()=>i({phoneApps:zn(a,l,u)}),className:R("rounded px-2 py-0.5 text-[12px] font-medium",s===u?"bg-raised text-ink":"text-ink-secondary hover:text-ink"),children:c},c))})]},l)})})]})}const Zn={grok:"native-and-mcp",grokAgent:"native-and-mcp",piAgent:"native-and-mcp","openai-compat":"native-and-mcp",mistral:"native-and-mcp",minimax:"native-and-mcp",cerebras:"native-and-mcp",groq:"native-and-mcp",greenference:"native-and-mcp",modelgo:"native-and-mcp",meta:"native-and-mcp",claudeAgent:"mcp",codex:"mcp",geminiAgent:"mcp",kimiAgent:"mcp",droidAgent:"mcp",cursorAgent:"mcp",opencodeGo:"mcp",qwenAgent:"mcp",hermesAgent:"mcp",clineAgent:"mcp",copilotAgent:"mcp",commandCodeAgent:"mcp",kiroAgent:"mcp",deepseekAgent:"mcp",customAcp:"mcp",antigravityAgent:"mcp",museCode:"mcp"},X=a=>a.split(/\r?\n/).map(i=>i.trim()).filter(Boolean);function _n({bot:a,engineKind:i}){const{request:t}=H(),r=he(a.toolScope),l=r.ok?r.scope:void 0,[s,d]=x.useState(null),[h,u]=x.useState(!1),[c,g]=x.useState(null),y=x.useRef(!0),m=x.useRef(!1);x.useEffect(()=>(y.current=!0,()=>{y.current=!1}),[]);const o=s??{custom:a.toolScope!==void 0,onlyListed:l?.allow!==void 0,allow:l?.allow?.join(`
|
|
12
|
+
`,s=oa(l);if("error"in s||s.name!==t||s.description!==r)throw new Error("written skill: did not round-trip");return l}const Gn={name:"skills.write.problem.name",reserved:"skills.write.problem.reserved",taken:"skills.write.problem.taken",description:"skills.write.problem.description",instructions:"skills.write.problem.instructions"};function Kn({bot:a,taken:i,onSaved:t}){const{request:r}=H(),[l,s]=x.useState(""),[d,h]=x.useState(""),[u,c]=x.useState(""),[g,y]=x.useState(!1),[m,o]=x.useState(""),[b,p]=x.useState(""),S={name:l.trim(),description:d,instructions:u},B=Ke(S,i),N=!!(l.trim()||d.trim()||u.trim()),j=async()=>{if(!(B||g)){y(!0),p(""),o("");try{await r(`/api/bots/${a.id}/skill-template`,{method:"POST",body:JSON.stringify({name:S.name,description:"",warnings:[],source:Rn,text:Jn(S),enabled:!0})}),o(n("skills.write.saved",{name:S.name})),s(""),h(""),c(""),t()}catch(f){p(f instanceof Error?f.message:n("skills.write.failed"))}finally{y(!1)}}};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(pn,{size:16,className:"text-ink-secondary"}),e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("skills.write.title")})]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:n("skills.write.hint")}),e.jsxs("form",{className:"mt-3 flex flex-col gap-2",onSubmit:f=>{f.preventDefault(),j()},children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative w-44 shrink-0",children:[e.jsx("span",{className:"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 font-mono text-[15px] text-ink-secondary",children:"/"}),e.jsx("input",{className:O+" pl-6 font-mono",placeholder:n("skills.write.namePlaceholder"),"aria-label":n("skills.write.name"),value:l,maxLength:64,onChange:f=>s(f.target.value.toLowerCase().replace(/\s+/g,"-"))})]}),e.jsx("input",{className:O,placeholder:n("skills.write.descriptionPlaceholder"),"aria-label":n("skills.write.description"),value:d,maxLength:1024,onChange:f=>h(f.target.value)})]}),e.jsx("textarea",{className:O+" min-h-24 resize-y leading-relaxed",placeholder:n("skills.write.instructionsPlaceholder"),"aria-label":n("skills.write.instructions"),value:u,onChange:f=>c(f.target.value)}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{className:"min-w-0 text-[12px] text-ink-secondary",children:N&&B?n(Gn[B]):m}),e.jsx("button",{type:"submit",disabled:g||!!B,className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:g?n("skills.write.saving"):n("skills.write.save")})]}),b&&e.jsx("div",{role:"alert",className:"text-[12px] text-danger",children:b})]})]})}const ae=a=>a.enabled&&a.listed!==!1;function Hn(a){const{request:i}=H(),[t,r]=x.useState([]),[l,s]=x.useState([]),[d,h]=x.useState([]),[u,c]=x.useState(""),[g,y]=x.useState([]),[m,o]=x.useState(!0),[b,p]=x.useState(""),[S,B]=x.useState(""),[N,j]=x.useState(null),f=x.useRef(!1),k=async v=>{try{const C=await i(`/api/bots/${a.id}/skills`);if(v?.())return;r(C.skills??[]),y(C.staged??[]),h(C.library??[]),s(C.assignedSkills??[]),c(""),B("")}catch(C){v?.()||B(C instanceof Error?C.message:n("skills.error.loadLearned"))}finally{v?.()||o(!1)}};x.useEffect(()=>{let v=!1;return o(!0),j(null),k(()=>v),()=>{v=!0}},[a.id]);const M=async(v,C=!1)=>{const I=(await i(`/api/bots/${a.id}/skills`)).assignedSkills??l,D=C?I.filter(P=>P!==v):[...new Set([...I,v])];await i(`/api/bots/${a.id}/skills-library`,{method:"PUT",body:JSON.stringify({skills:D})}),await k()};return{skills:t,staged:g,loading:m,working:b,setWorking:p,error:S,setError:B,reviewing:N,setReviewing:j,refresh:k,toggle:async v=>{p(v.name),B("");try{if(v.origin==="native"){await i(`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!v.enabled})}),await k();return}if(v.origin==="library"&&v.enabled){await i(`/api/skills-library/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!v.enabled})}),await k();return}if(!v.enabled||!ae(v)){if(v.enabled){await i(`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!0})}),await k();return}const C=await i(v.origin==="library"?`/api/skills-library/${encodeURIComponent(v.name)}`:`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`);if(!C.text)throw new Error(n("skills.error.contentsRelearn"));j({skill:v,text:C.text});return}await i(`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!1})}),await k()}catch(C){B(C instanceof Error?C.message:n("skills.error.update"))}finally{p("")}},enableReviewed:async()=>{if(!N)return;const{skill:v}=N;p(v.name),B("");try{await i(v.origin==="library"?`/api/skills-library/${encodeURIComponent(v.name)}`:`/api/bots/${a.id}/skills/${encodeURIComponent(v.name)}`,{method:"PATCH",body:JSON.stringify({enabled:!0})}),j(null),await k()}catch(C){B(C instanceof Error?C.message:n("skills.error.enable"))}finally{p("")}},libraryPool:d,addFromLibrary:u,setAddFromLibrary:c,assignmentBusy:f,putAssignments:M,addToBot:async()=>{const v=u.trim();if(!(!v||f.current)){f.current=!0,p(v),B("");try{await M(v)}catch(C){B(C instanceof Error?C.message:n("skills.error.assign"))}finally{f.current=!1,p("")}}}}}function Fn({skill:a,text:i,error:t,working:r,onCancel:l,onEnable:s}){const d=x.useRef(null),h=x.useRef(l);return h.current=l,x.useEffect(()=>{const u=document.activeElement instanceof HTMLElement?document.activeElement:null,c=d.current,g=c?.parentElement?.closest('[role="dialog"]');c?.focus();const y=m=>{if(m.key==="Escape"&&(m.preventDefault(),r||h.current()),m.key!=="Tab"||!c)return;const o=c.querySelectorAll('button:not([disabled]), [tabindex="0"]'),b=o[0],p=o[o.length-1];!b||!p||(m.shiftKey&&(document.activeElement===b||document.activeElement===c)?(m.preventDefault(),p.focus()):!m.shiftKey&&document.activeElement===p&&(m.preventDefault(),b.focus()))};return window.addEventListener("keydown",y),()=>{window.removeEventListener("keydown",y),u&&u!==document.body&&u.isConnected?u.focus():g?.focus()}},[r]),e.jsx("div",{ref:d,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"skill-review-title",className:"fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-6",children:e.jsxs("div",{className:"flex max-h-[min(760px,90vh)] w-full max-w-2xl flex-col rounded-2xl bg-card p-5 shadow-2xl",children:[e.jsx("div",{id:"skill-review-title",className:"text-[16px] font-semibold text-ink",children:n("skills.reviewTitle",{name:a.name})}),e.jsx("div",{className:"mt-1 break-all text-[12px] text-ink-secondary",children:n("skills.source",{source:a.source})}),a.warnings.length>0&&e.jsx("div",{className:"mt-2 rounded-lg bg-warning/10 px-3 py-2 text-[12px] text-warning",children:a.warnings.join(" · ")}),e.jsx("pre",{tabIndex:0,"aria-label":n("skills.fullSkill",{name:a.name}),className:"mt-3 min-h-0 flex-1 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-inset p-3 font-mono text-[12px] leading-relaxed text-ink",children:i}),t&&e.jsx("div",{role:"alert",className:"mt-2 text-[12px] text-danger",children:t}),e.jsxs("div",{className:"mt-4 flex justify-end gap-2",children:[e.jsx("button",{type:"button",disabled:r,onClick:l,className:"rounded-lg px-4 py-2 text-[13px] font-medium text-ink-secondary hover:bg-raised disabled:opacity-40",children:n("common.cancel")}),e.jsx("button",{type:"button",disabled:r,onClick:s,className:"rounded-lg bg-accent px-4 py-2 text-[13px] font-semibold text-white disabled:opacity-40",children:n("skills.enableReviewed")})]})]})})}function Fi({bot:a}){const{request:i}=H(),{state:t}=G(),r=da(t.config),l=ca(t.config),{skills:s,staged:d,loading:h,working:u,setWorking:c,error:g,setError:y,reviewing:m,setReviewing:o,refresh:b,toggle:p,enableReviewed:S,libraryPool:B,addFromLibrary:N,setAddFromLibrary:j,assignmentBusy:f,addToBot:k}=Hn(a),[M,L]=x.useState(null),[J,F]=x.useState(""),[v,C]=x.useState(!1),[w,I]=x.useState(""),D=x.useRef(null),P=!!M;x.useEffect(()=>{if(!P)return;const A=document.activeElement instanceof HTMLElement?document.activeElement:null,E=D.current,Ve=E?.parentElement?.closest('[role="dialog"]');E?.focus();const ue=z=>{if(z.key==="Escape"&&(z.preventDefault(),u||L(null)),z.key!=="Tab"||!E)return;const te=E.querySelectorAll('button:not([disabled]), [tabindex="0"]'),le=te[0],se=te[te.length-1];!le||!se||(z.shiftKey&&(document.activeElement===le||document.activeElement===E)?(z.preventDefault(),se.focus()):!z.shiftKey&&document.activeElement===se&&(z.preventDefault(),le.focus()))};return window.addEventListener("keydown",ue),()=>{window.removeEventListener("keydown",ue),A&&A!==document.body&&A.isConnected?A.focus():Ve?.focus()}},[P,u]),x.useEffect(()=>{L(null)},[a.id]);const V=async A=>{if(A.origin==="library"){if(f.current||!window.confirm(n("skills.unassignConfirm",{name:A.name})))return;f.current=!0,c(A.name),y("");try{await i(`/api/bots/${a.id}/skills/${encodeURIComponent(A.name)}`,{method:"DELETE"}),await b()}catch(E){y(E instanceof Error?E.message:n("skills.error.unassign"))}finally{f.current=!1,c("")}return}if(window.confirm(n("skills.removeLearnedConfirm",{name:A.name}))){c(A.name),y("");try{await i(`/api/bots/${a.id}/skills/${encodeURIComponent(A.name)}`,{method:"DELETE"}),await b()}catch(E){y(E instanceof Error?E.message:n("skills.error.remove"))}finally{c("")}}},re=async A=>{y("");try{const E=A.origin==="library"?await i(`/api/skills-library/${encodeURIComponent(A.name)}`):await i(`/api/bots/${a.id}/skills/${encodeURIComponent(A.name)}`);L({name:A.name,text:E.text??""})}catch(E){y(E instanceof Error?E.message:n("skills.error.load"))}},We=async()=>{const A=J.trim();if(A){C(!0),y(""),I("");try{const E=await i(`/api/bots/${a.id}/skills`,{method:"POST",body:JSON.stringify({source:A})});I([...Ln(E.imported??[]),n("skills.import.reviewBelow")].join(" ")),F(""),await b()}catch(E){y(E instanceof Error?E.message:n("skills.error.import"))}finally{C(!1)}}};return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ne,{size:16,className:"text-ink-secondary"}),e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("skills.learned.title")})]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:r?n("skills.learned.hintOn"):n("skills.learned.hintOff")}),l?e.jsxs("div",{className:"mt-3 flex flex-col gap-1.5",children:[B.length>0?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(_,{size:"lg",className:"flex-1","aria-label":n("skills.library.addLabel"),value:N,disabled:!!u,onChange:A=>j(A.target.value),children:[e.jsx("option",{value:"",children:n("skills.library.addPlaceholder")}),B.map(A=>e.jsx("option",{value:A.name,children:A.name},A.name))]}),e.jsx("button",{type:"button",disabled:!N||!!u,onClick:()=>{k()},className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("common.add")})]}):e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("skills.library.allAssigned")}),e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("skills.library.manageHint")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("form",{className:"mt-3 flex items-center gap-2",onSubmit:A=>{A.preventDefault(),We()},children:[e.jsx("input",{className:O,placeholder:n("skills.import.placeholder"),"aria-label":n("skills.import.label"),value:J,onChange:A=>F(A.target.value)}),e.jsx("button",{type:"submit",disabled:v||!J.trim(),className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:v?n("skills.import.importing"):n("skills.import.button")})]}),w&&e.jsx("div",{className:"mt-1 text-[12px] text-ink-secondary",children:w})]}),h?e.jsx("div",{className:"mt-3 text-[12px] text-ink-secondary",children:n("skills.loading")}):s.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("skills.empty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:s.map(A=>e.jsxs("div",{className:"px-3 py-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>{re(A)},className:"min-w-0 flex-1 text-left",children:[e.jsx("div",{className:"truncate font-mono text-[13px] text-ink",children:A.name}),(l||A.origin==="imported"||A.origin==="native")&&e.jsx("span",{className:"ml-1.5 rounded bg-control px-1 py-px font-mono text-[10px] uppercase tracking-wide text-ink-secondary",title:A.origin==="imported"?n("skills.origin.importedHint"):A.origin==="native"?n("skills.origin.nativeHint"):void 0,children:A.origin==="imported"?n("skills.origin.imported"):A.origin==="native"?n("skills.origin.native"):A.origin==="library"?n("skills.origin.library"):n("skills.origin.private")}),e.jsx("div",{className:"mt-0.5 line-clamp-2 text-[12px] text-ink-secondary",children:A.description}),e.jsx("div",{className:"mt-0.5 text-[11px] text-ink-secondary",children:n(A.enabled&&!ae(A)?"skills.foundWhenNeeded":"skills.usedWhenRelevant")})]}),e.jsx(W,{checked:ae(A),"aria-label":n(ae(A)?"skills.disableName":"skills.enableName",{name:A.name}),disabled:!!u,onClick:()=>{p(A)}}),A.origin!=="imported"&&A.origin!=="native"&&e.jsx("button",{"aria-label":n("skills.removeName",{name:A.name}),title:n("skills.remove"),disabled:!!u,onClick:()=>{V(A)},className:"flex size-8 shrink-0 items-center justify-center rounded-md text-ink-secondary hover:bg-danger/10 hover:text-danger disabled:opacity-40",children:e.jsx(je,{size:15})})]}),e.jsx("div",{className:"mt-1 truncate text-[11px] text-ink-secondary",title:A.source,children:n("skills.source",{source:A.source})}),A.warnings.length>0&&e.jsx("div",{className:"mt-1 text-[11px] text-warning",children:A.warnings.join(" · ")})]},A.name))}),d.length>0&&e.jsx("div",{className:"mt-2 text-[12px] text-warning",children:d.length===1?n("skills.stagedOne"):n("skills.stagedMany",{count:d.length})}),g&&e.jsx("div",{role:"alert",className:"mt-2 text-[12px] text-danger",children:g})]}),e.jsx(Kn,{bot:a,taken:s.map(A=>A.name),onSaved:()=>{b()}}),e.jsx(Dn,{bot:a,onAdded:()=>{b()}}),m&&e.jsx(Fn,{skill:m.skill,text:m.text,error:g,working:u===m.skill.name,onCancel:()=>o(null),onEnable:()=>{S()}}),M&&e.jsx("div",{ref:D,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"skill-view-title",className:"fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-6",children:e.jsxs("div",{className:"flex max-h-[min(760px,90vh)] w-full max-w-2xl flex-col rounded-2xl bg-card p-5 shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{id:"skill-view-title",className:"text-[16px] font-semibold text-ink",children:M.name}),e.jsx("button",{type:"button",onClick:()=>L(null),className:"rounded-md px-2 py-1 text-[13px] text-ink-secondary hover:bg-control hover:text-ink",children:n("common.close")})]}),e.jsx("pre",{tabIndex:0,"aria-label":n("skills.fullSkill",{name:M.name}),className:"mt-3 min-h-0 flex-1 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-inset p-3 font-mono text-[12px] leading-relaxed text-ink",children:M.text})]})})]})}const Pn="MEMORY.md",Pi="SOUL.md",ie=(a,i)=>`/api/bots/${a}/memory${i?"/mine":""}`;function Oi(a,i=!1){return T(ie(a,i))}function Ii(a,i,t=!1){return T(`${ie(a,t)}/file?path=${encodeURIComponent(i)}`)}async function Wi(a,i,t,r,l=!1){const s=await fetch(`${ie(a,l)}/file`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({path:i,text:t,expectedHash:r})}),d=await s.json().catch(()=>({}));if(s.status===409&&typeof d.current=="string"&&typeof d.currentHash=="string")return{ok:!1,conflict:!0,current:d.current,currentHash:d.currentHash};if(!s.ok)throw new ma($e(d,typeof d.error=="string"?d.error:`${s.status} ${s.statusText}`),s.status);const h=d;return{ok:!0,doc:{path:h.path,text:h.text,hash:h.hash,exists:h.exists},overview:h.overview}}function Vi(a,i,t=!1){return T(`${ie(a,t)}/file?path=${encodeURIComponent(i)}`,{method:"DELETE"})}async function zi(a,i=50){return(await T(`/api/bots/${a}/memory/journal?limit=${i}`)).entries}function $i(a,i){return T(`/api/bots/${a}/memory/journal/${encodeURIComponent(i)}/revert`,{method:"POST"})}function Ui(a){return T(`/api/bots/${a}/history?view=changes&limit=20`)}function qi(a,i,t){return T(`/api/bots/${a}/history/rollback`,{method:"POST",body:JSON.stringify({id:i,expectedRevision:t})})}function Yi(a){return a?a.added+(a.topics??0):0}function Zi(a){return T(`/api/bots/${a}/memory/upkeep`)}function _i(a,i){return T(`/api/bots/${a}/memory/reviewed`,{method:"POST",body:JSON.stringify({token:i})})}function Qi(a){return T(`/api/bots/${a}/memory/tidy`,{method:"POST"})}function Xi(a,i){return T(`/api/bots/${a}/memory/open`,{method:"POST",body:JSON.stringify({target:i})})}function Q(a){return a<1024?`${a} B`:`${new Intl.NumberFormat(U(),{useGrouping:!1}).format(Math.round(a/102.4)/10)} KB`}function He(a,i=Date.now()){const t=Math.max(0,Math.round((i-a)/1e3));if(t<45)return n("remote.time.justNow");const r=Math.round(t/60);if(r<60)return n("remote.time.minutes",{count:r});const l=Math.round(r/60);if(l<24)return n("time.hoursAgo",{count:l});const s=Math.round(l/24);return s===1?n("time.yesterday"):s<7?n("time.daysAgo",{count:s}):new Date(a).toLocaleDateString(U(),{month:"short",day:"numeric"})}function er(a){const i=a.maxLines?a.lines/a.maxLines:0,t=a.maxBytes?a.bytes/a.maxBytes:0,r=a.truncated?"over":Math.max(i,t)>=.8?"near":"ok",l=`${a.lines} of ${a.maxLines} lines · ${Q(a.bytes)} of ${Q(a.maxBytes)}. Only the first ${a.maxLines} lines load each turn.`;let s=null;if(a.truncated){const d=a.lines-a.loadedLines;s=d>0?n(d===1?"memory.capacity.overLinesOne":"memory.capacity.overLinesMany",{lines:a.lines,loaded:a.loadedLines,missing:d}):n("memory.capacity.overBytes",{bytes:Q(a.bytes),loaded:Q(a.loadedBytes)})}return{level:r,lineShare:i,byteShare:t,sentence:l,warning:s}}function ar(a){return a===Pn?"MEMORY.md":a.startsWith("memory/log/")?a.slice(11).replace(/\.md$/,""):a.replace(/^memory\//,"").replace(/\.md$/,"")}function nr(a){return a.via==="revert"?"undo":a.via==="disk"?"changed outside the app":a.via==="tidy"?"tidy-up":a.via==="organize"?"filed into topics":a.via==="capture"?a.threadTitle?`noticed in chat “${a.threadTitle}”`:"noticed in a chat":a.threadTitle?`from chat “${a.threadTitle}”`:a.actor==="bot"?"during a task":a.via==="ui"?"in Settings":a.via==="api"?"through the API":null}function ir(a){return a.via==="revert"?"memory.source.undo":a.via==="disk"?"memory.source.disk":a.via==="tidy"?"memory.source.tidy":a.via==="organize"?"memory.source.organize":a.via==="capture"?a.threadTitle?"memory.source.captureWithTitle":"memory.source.capture":a.threadTitle?"memory.source.chat":a.actor==="bot"?"memory.source.task":a.via==="ui"?"memory.source.settings":a.via==="api"?"memory.source.api":null}function rr(a){const i=a.trim().replace(/\.md$/i,"").replace(/[^\w .-]+/g,"-").replace(/^[^\w]+/,"").trim();return i?`${i}.md`:null}function On(a,i,t){const r=(a??"").split(/[\\/]+/).filter(Boolean);return r.at(-3)==="task-workspaces"&&r.at(-2)===i&&r.at(-1)===t}const In={policy:"ask"},Fe=["calendar","reminders","contacts","location","home","messages"],Wn=Object.fromEntries(Fe.map(a=>[a,"write"])),Vn=15e3;function Pe(a){return a.phoneApps??Wn}function zn(a,i,t){const r={...Pe(a)};return t?r[i]=t:delete r[i],r}function $n(a,i){const t=Pe(a);return Fe.map(r=>({cap:r,grant:t[r]??null,onPhone:i.some(l=>!!l.registration.capabilities[r])}))}function Un(a){return a.map(i=>i.registration.name).join(", ")}function qn(){const[a,i]=x.useState({phase:"loading",phones:[]}),t=x.useRef(!1),r=x.useCallback(()=>{T("/api/phones",{background:!0}).then(l=>{t.current||i({phase:"ready",phones:l.phones??[]})}).catch(()=>{})},[]);return x.useEffect(()=>{t.current=!1,r();const l=window.setInterval(r,Vn);return()=>{t.current=!0,window.clearInterval(l)}},[r]),{...a,refresh:r}}function Yn({bot:a,patch:i}){const{phones:t}=qn();if(t.length===0)return null;const r=$n(a,t);return e.jsxs("div",{className:"rounded-xl bg-card p-4","data-testid":"access-phone-apps",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.phone.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.phone.subtitle",{phone:Un(t)})}),a.phoneApps===void 0&&e.jsx("div",{className:"mt-1 text-[12px] text-ink-secondary",children:n("botAccess.phone.default")}),e.jsx("div",{className:"mt-3 flex flex-col divide-y divide-hairline/20 rounded-lg bg-inset",children:r.map(({cap:l,grant:s,onPhone:d})=>{const h=n(`botAccess.phone.cap.${l}`);return e.jsxs("div",{className:R("flex flex-wrap items-center justify-between gap-3 px-3 py-1.5",!d&&"opacity-50"),children:[e.jsxs("span",{className:"min-w-0 text-[13px] text-ink",children:[h,!d&&e.jsx("span",{className:"ml-2 text-[11px] text-ink-secondary",children:n("botAccess.phone.notOnPhone")})]}),e.jsx("div",{className:"flex shrink-0 gap-0.5 rounded-md bg-card p-0.5",role:"group","aria-label":h,children:[[null,n("botAccess.scopes.off")],["read",n("botAccess.scopes.read")],["write",n("botAccess.scopes.readWrite")]].map(([u,c])=>e.jsx("button",{type:"button",disabled:!d,"aria-pressed":s===u,onClick:()=>i({phoneApps:zn(a,l,u)}),className:R("rounded px-2 py-0.5 text-[12px] font-medium",s===u?"bg-raised text-ink":"text-ink-secondary hover:text-ink"),children:c},c))})]},l)})})]})}const Zn={grok:"native-and-mcp",grokAgent:"native-and-mcp",piAgent:"native-and-mcp","openai-compat":"native-and-mcp",mistral:"native-and-mcp",minimax:"native-and-mcp",cerebras:"native-and-mcp",groq:"native-and-mcp",greenference:"native-and-mcp",modelgo:"native-and-mcp",meta:"native-and-mcp",claudeAgent:"mcp",codex:"mcp",geminiAgent:"mcp",kimiAgent:"mcp",droidAgent:"mcp",cursorAgent:"mcp",opencodeGo:"mcp",qwenAgent:"mcp",hermesAgent:"mcp",clineAgent:"mcp",copilotAgent:"mcp",commandCodeAgent:"mcp",kiroAgent:"mcp",deepseekAgent:"mcp",customAcp:"mcp",antigravityAgent:"mcp",museCode:"mcp"},X=a=>a.split(/\r?\n/).map(i=>i.trim()).filter(Boolean);function _n({bot:a,engineKind:i}){const{request:t}=H(),r=ye(a.toolScope),l=r.ok?r.scope:void 0,[s,d]=x.useState(null),[h,u]=x.useState(!1),[c,g]=x.useState(null),y=x.useRef(!0),m=x.useRef(!1);x.useEffect(()=>(y.current=!0,()=>{y.current=!1}),[]);const o=s??{custom:a.toolScope!==void 0,onlyListed:l?.allow!==void 0,allow:l?.allow?.join(`
|
|
13
13
|
`)??"",deny:l?.deny?.join(`
|
|
14
|
-
`)??""},b=o.custom?{...o.onlyListed?{allow:X(o.allow)}:{},deny:X(o.deny)}:void 0,p=
|
|
14
|
+
`)??""},b=o.custom?{...o.onlyListed?{allow:X(o.allow)}:{},deny:X(o.deny)}:void 0,p=ye(b),S=Zn[i],N=o.custom&&(o.onlyListed||X(o.deny).length>0)&&S!=="native-and-mcp"&&(S!=="mcp"||ua(b)),j=M=>{d({...o,...M}),g(null)},f=async()=>{if(!(!s||a.busy||m.current||!p.ok)){m.current=!0,u(!0),g(null);try{await t(`/api/bots/${a.id}`,{method:"PATCH",body:JSON.stringify({toolScope:p.scope??null})}),y.current&&d(null)}catch(M){y.current&&g(M instanceof Error?M.message:String(M))}finally{m.current=!1,y.current&&u(!1)}}},k=i==="piAgent"?`native:read
|
|
15
15
|
native:edit
|
|
16
16
|
native:write`:i==="grokAgent"?`native:read_file
|
|
17
17
|
native:search_replace
|
|
18
18
|
native:write`:S==="mcp"?`native:*
|
|
19
19
|
mcp:mail:read_notes`:`native:ask_user
|
|
20
20
|
mcp:mail:read_notes`;return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.tools.title")}),e.jsx("p",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.tools.description")}),e.jsx("p",{role:r.ok?"status":"alert",className:`mt-2 text-[12px] ${r.ok?"text-ink-secondary":"text-danger"}`,children:r.ok?l?.allow?.length===0?n("botAccess.tools.none"):l===void 0?n("botAccess.tools.all"):n("botAccess.tools.customSaved"):n("botAccess.tools.corrupt")}),e.jsxs("label",{className:"mt-3 block text-[13px] text-ink-secondary",children:[n("botAccess.tools.mode"),e.jsxs(_,{"aria-label":n("botAccess.tools.title"),disabled:h||!!a.busy,value:o.custom?"custom":"all",className:"mt-1 w-full",onChange:M=>j({custom:M.target.value==="custom",onlyListed:o.custom?o.onlyListed:!0}),children:[e.jsx("option",{value:"all",children:n("botAccess.tools.all")}),e.jsx("option",{value:"custom",children:n("botAccess.tools.custom")})]})]}),o.custom&&e.jsxs("fieldset",{disabled:h||!!a.busy,className:"mt-3 flex flex-col gap-3",children:[e.jsxs("label",{className:"flex items-center gap-2 text-[13px] text-ink",children:[e.jsx("input",{type:"checkbox",checked:o.onlyListed,onChange:M=>j({onlyListed:M.target.checked})}),n("botAccess.tools.onlyListed")]}),e.jsxs("label",{className:"text-[13px] text-ink-secondary",children:[n("botAccess.tools.allow"),e.jsx("textarea",{"aria-label":n("botAccess.tools.allow"),disabled:!o.onlyListed,rows:3,spellCheck:!1,className:`${O} mt-1 font-mono text-[12px] disabled:opacity-50`,placeholder:k,value:o.allow,onChange:M=>j({allow:M.target.value})})]}),o.onlyListed&&X(o.allow).length===0&&e.jsx("p",{className:"text-[12px] text-ink-secondary",children:n("botAccess.tools.emptyHint")}),e.jsxs("label",{className:"text-[13px] text-ink-secondary",children:[n("botAccess.tools.exclude"),e.jsx("textarea",{"aria-label":n("botAccess.tools.exclude"),rows:2,spellCheck:!1,className:`${O} mt-1 font-mono text-[12px]`,placeholder:"mcp:mail:send",value:o.deny,onChange:M=>j({deny:M.target.value})})]}),e.jsx("p",{className:"text-[12px] text-ink-secondary",children:n("botAccess.tools.syntax")}),i==="grokAgent"&&e.jsx("p",{className:"text-[12px] text-ink-secondary",children:n("botAccess.tools.grok")})]}),N&&e.jsx("p",{role:"alert",className:"mt-2 text-[12px] text-danger",children:n(S==="mcp"?"botAccess.tools.nativeUnsupported":"botAccess.tools.unsupported")}),!p.ok&&e.jsx("p",{role:"alert",className:"mt-2 text-[12px] text-danger",children:p.error}),c&&e.jsx("p",{role:"alert",className:"mt-2 text-[12px] text-danger",children:c}),a.busy&&e.jsx("p",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.tools.busy")}),e.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[e.jsx("button",{type:"button",disabled:h||!!a.busy||!s||!p.ok,onClick:()=>{f()},className:"rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n(h?"botAccess.tools.saving":"botAccess.tools.save")}),e.jsx("a",{href:"https://github.com/milind-soni/OpenMausBot/blob/main/docs/tool-selection.md",target:"_blank",rel:"noreferrer",className:"text-[12px] text-ink-secondary underline",children:n("botAccess.tools.examples")})]})]})}const Oe="YOUR_KEY",Qn="Bot API comes with a higher plan. Upgrade this Cloud to use it.";function Xn(a,i=Oe){return[`curl -X POST "${a}" \\`,` -H "Authorization: Bearer ${i}" \\`,' -H "Content-Type: application/json" \\',` -d '{"message": "Hello! What can you do?"}'`].join(`
|
|
21
|
-
`)}const Z="rounded-lg bg-control px-3 py-1.5 text-[13px] text-ink hover:bg-raised-hover disabled:cursor-not-allowed disabled:opacity-50";function ei(a,i=Date.now()){if(!a.callCount||a.lastCalledAt===void 0)return n("botApi.callsNone");const t=Fe(a.lastCalledAt,i);return a.callCount===1?n("botApi.callsOne",{when:t}):n("botApi.calls",{count:a.callCount,when:t})}function ai(a){const i=a.reason===Qn?n("botApi.starter"):a.statusCode===200?n("botApi.call.replied"):a.statusCode===202?n("botApi.call.accepted"):a.statusCode===401?n("botApi.call.wrongKey"):a.statusCode===403?n("botApi.call.off"):a.statusCode===429?n("automations.calls.tooFast"):a.statusCode===409?n("botApi.call.busy"):a.statusCode===413?n("automations.calls.tooLarge"):a.statusCode===400||a.statusCode===415?n("automations.calls.unreadable"):n("botApi.call.failed");return a.repeats&&a.repeats>1?`${i} (${a.repeats})`:i}const ni=a=>/^https?:\/\/(?:127\.0\.0\.1|localhost|\[::1\])[:/]/.test(a);function ii(a){return a===0?n("botApi.webhooksNone"):a===1?n("botApi.webhooksOne"):n("botApi.webhooks",{count:a})}function ri({className:a}){const{usage:i,bridge:t}=ya(),r=ha(t,i,"app_settings");return e.jsxs("div",{className:R("rounded-xl bg-card p-4",a),"data-testid":"bot-api",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botApi.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary","data-testid":"bot-api-starter",children:n("botApi.starter")}),t&&i&&e.jsx("button",{type:"button",onClick:()=>r.start(),disabled:r.busy!==null,className:R(Z,"mt-3"),"data-testid":"bot-api-upgrade",children:n("roomCard.upgrade")}),r.note&&e.jsx("div",{className:"mt-2",children:e.jsx(pa,{note:r.note})}),r.dialog]})}function ti(a){const{state:i}=G();return i.config?.cloudStarter===!0?e.jsx(ri,{className:a.className}):e.jsx(li,{...a})}function li({bot:a,webhooksLink:i=!1,className:t}){const{state:r,dispatch:l}=G(),[s,d]=x.useState(null),[h,u]=x.useState(null),[c,g]=x.useState(!1),[y,m]=x.useState(!1),[o,b]=x.useState(null),[p,S]=x.useState(null),B=`/api/bots/${a.id}/bot-api`;x.useEffect(()=>{let v=!1;return u(null),d(null),T(B).then(C=>{v||d(C)}).catch(()=>{v||b(n("botApi.error"))}),()=>{v=!0}},[B]);const N=async v=>{m(!0),b(null),g(!1);try{const{key:C,...w}=await v();d(w),u(C??null)}catch(C){b(C instanceof Error&&C.message?C.message:n("botApi.error"))}finally{m(!1)}},j=()=>N(()=>T(B,{method:"POST",body:JSON.stringify({enabled:!s?.enabled})})),f=()=>N(()=>T(`${B}/new-key`,{method:"POST"})),k=s?Xn(s.url,h??Oe):"",M=async()=>{const v=await en(k);S(v==="copied"?"copied":"failed"),window.setTimeout(()=>S(null),1500)},L=()=>{T(B).then(d).catch(()=>{})},J=r.webhooks.filter(v=>v.botId===a.id).length,F=s?.canManage??!1;return e.jsxs("div",{className:R("rounded-xl bg-card p-4",t),"data-testid":"bot-api",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botApi.title")}),e.jsx("div",{className:"mt-0.5 text-[14px] text-ink",children:n("botApi.switch")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:F||!s?n("botApi.hint",{name:a.name}):n("botApi.notAllowed",{name:a.name})})]}),e.jsx(W,{"aria-label":n("botApi.switch"),checked:s?.enabled===!0,disabled:!s||!F||y,onClick:()=>{j()},"data-testid":"bot-api-switch"})]}),s?.canTakeCalls===!1&&e.jsx("div",{className:"mt-2 text-[13px] text-warning","data-testid":"bot-api-cant-take",children:n("botApi.cantTake")}),s?.enabled&&e.jsxs("div",{className:"mt-3 flex flex-col gap-2",children:[e.jsx("pre",{"data-testid":"bot-api-curl",className:"whitespace-pre-wrap break-all rounded-lg bg-inset px-3 py-2 font-mono text-[12px] leading-[1.5] text-ink",children:k}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("button",{type:"button",onClick:()=>{M()},className:R(Z,"inline-flex items-center gap-1.5"),"data-testid":"bot-api-copy",children:[e.jsx(Xa,{size:13,"aria-hidden":"true"}),p==="copied"?n("botApi.copied"):p==="failed"?n("botApi.copyFailed"):n("botApi.copy")]})}),e.jsx("div",{className:R("text-[12px]",h?"text-warning":"text-ink-secondary"),"data-testid":"bot-api-key-note",children:h?n("botApi.keyOnce"):n("botApi.keyHidden")}),e.jsx("div",{className:"text-[12px] text-ink-secondary","data-testid":"bot-api-password",children:n("botApi.password")}),ni(s.url)&&e.jsx("div",{className:"text-[12px] text-ink-secondary","data-testid":"bot-api-local",children:n("botApi.localOnly")}),F&&(c?e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[13px] text-ink-secondary",children:[e.jsx("span",{children:n("botApi.newKeyConfirm")}),e.jsx("button",{type:"button",onClick:()=>{f()},disabled:y,className:Z,"data-testid":"bot-api-replace",children:n("botApi.replace")}),e.jsx("button",{type:"button",onClick:()=>g(!1),className:Z,children:n("common.cancel")})]}):e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("details",{className:"min-w-0 flex-1 text-[12px] text-ink-secondary","data-testid":"bot-api-calls",onToggle:v=>{v.currentTarget.open&&L()},children:[e.jsx("summary",{className:"cursor-pointer",children:ei(s)}),e.jsx("ul",{className:"mt-1.5 flex flex-col gap-1",children:(s.calls??[]).map(v=>e.jsxs("li",{className:"min-w-0 truncate",title:v.preview,children:[Fe(v.receivedAt)," · ",ai(v),v.preview?` · ${v.preview}`:""]},v.id))})]}),e.jsx("button",{type:"button",onClick:()=>g(!0),disabled:y,className:Z,"data-testid":"bot-api-new-key",children:n("botApi.newKey")})]}))]}),o&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:o}),i&&e.jsx("button",{type:"button",onClick:()=>l({type:"showRoutines",view:"list"}),className:"mt-3 text-[13px] text-ink-secondary hover:text-ink","data-testid":"bot-api-webhooks",children:ii(J)})]})}function si({budget:a}){const i=a.servers.filter(t=>!t.direct).map(t=>t.name);return e.jsxs("div",{"data-tool-budget":!0,className:"mt-3 text-[12px] text-ink-secondary",children:[e.jsx("div",{children:n("botAccess.tools.budget",{listed:a.listed,limit:a.limit})}),i.length>0&&e.jsx("div",{"data-tool-budget-searched":!0,className:"mt-0.5",children:n("botAccess.tools.budgetSearched",{names:new Intl.ListFormat(Me(),{type:"conjunction"}).format(i)})})]})}function oi({botId:a,busy:i}){const[t,r]=x.useState(null);return x.useEffect(()=>{if(i)return;let l=!0;return T(`/api/bots/${encodeURIComponent(a)}/tool-budget`).then(s=>{l&&r(s.budget??null)}).catch(()=>{l&&r(null)}),()=>{l=!1}},[a,i]),t?.limit!=null?e.jsx(si,{budget:{...t,limit:t.limit}}):null}function di(a){const{request:i}=H(),[t,r]=x.useState(null),[l,s]=x.useState(null),[d,h]=x.useState(!1),u=!!window.ogb?.pickFolder,c=async y=>{h(!0),s(null);try{await i(`/api/bots/${a.id}`,{method:"PATCH",body:JSON.stringify({cwd:y})}),r(null)}catch(m){s(m instanceof Error?m.message:String(m))}finally{h(!1)}};return{draft:t,setDraft:r,error:l,saving:d,canPick:u,save:c,pick:async()=>{const y=await window.ogb?.pickFolder?.(a.cwd);y&&c(y)}}}function ci({bot:a}){const{capabilities:i}=me(),t=i.host.homeDir,{draft:r,setDraft:l,error:s,saving:d,canPick:h,save:u,pick:c}=di(a),y=a.tasks?.find(o=>o.threadId===a.threadId)?.cwd,m=y!==void 0&&(y??void 0)!==a.cwd&&!On(y,a.id,a.threadId);return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.folder.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.folder.description")}),e.jsx(K,{bot:a,kind:"chief"}),h?e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsx("div",{className:"min-w-0 flex-1 truncate rounded-lg border border-hairline/40 bg-inset px-3 py-2 font-mono text-[13px] text-ink",title:a.cwd,children:a.cwd?xe(a.cwd,t):e.jsx("span",{className:"text-ink-secondary",children:n("botAccess.folder.private")})}),e.jsxs("button",{onClick:()=>{c()},disabled:d,className:"flex shrink-0 items-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[e.jsx(Ca,{size:14})," ",n("botAccess.folder.choose")]}),a.cwd&&e.jsx("button",{onClick:()=>{u(null)},disabled:d,className:"shrink-0 rounded-lg px-2 py-2 text-[13px] text-ink-secondary hover:text-ink disabled:opacity-50",children:n("botAccess.folder.clear")})]}):e.jsxs("form",{className:"mt-3 flex items-center gap-2",onSubmit:o=>{o.preventDefault(),u((r??a.cwd??"").trim()||null)},children:[e.jsx("input",{className:R(O,"font-mono text-[13px]"),"aria-label":n("botAccess.folder.title"),placeholder:n("botAccess.folder.placeholder"),value:r??a.cwd??"",onChange:o=>l(o.target.value)}),e.jsx("button",{type:"submit",disabled:d||r===null,className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("botAccess.folder.save")})]}),s&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:s}),m&&e.jsx("div",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.folder.pinned",{path:y?xe(y,t):n("botAccess.folder.home")})})]})}function mi({bot:a,patch:i}){const{dispatch:t}=G(),{servers:r,error:l,refresh:s}=nn(),d=r?rn(r,a.id):null,h=new Set((d?tn(d,a.mcpServers,a.id):[]).map(y=>y.name)),u=a.mcpServers==null,c=y=>{!d||a.busy||l||i({mcpServers:ln(d,a.mcpServers,y)})},g=()=>{t({type:"toggleSettings",open:!1}),t({type:"togglePlugins",open:!0,surface:"mcp"})};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"flex items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("connectors.tab.mcp")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.mcpDescription")}),e.jsx(K,{bot:a,kind:"owner"})]})}),l&&e.jsxs("div",{role:"alert",className:"mt-3 text-[12px] text-danger",children:[n("botAccess.mcpRefreshError")," ",e.jsx("button",{type:"button",onClick:()=>{s()},className:"underline",children:n("connectors.action.retry")})]}),d===null?!l&&e.jsx("div",{className:"mt-3 text-[12px] text-ink-secondary",children:n("mcp.loading")}):d.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.mcpEmpty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:d.map(y=>e.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate font-mono text-[13px] text-ink",children:y.name}),!y.enabled&&e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("botAccess.mcpDisabled")}),y.enabled&&y.offFor?.includes(a.id)&&e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("mcp.offFor",{bots:a.name})})]}),e.jsx(W,{checked:h.has(y.name),disabled:!y.enabled||!!a.busy||l,"aria-label":n("botAccess.mcpAllow",{name:y.name}),onClick:()=>c(y.name),className:"disabled:cursor-not-allowed"})]},y.name))}),e.jsx(oi,{botId:a.id,busy:!!a.busy}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:g,className:"flex items-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover",children:[e.jsx(Je,{size:14})," ",n("botAccess.mcpAdd")]}),!u&&d&&d.length>0&&e.jsx("button",{type:"button",disabled:!!a.busy||l,onClick:()=>{!a.busy&&!l&&i({mcpServers:null})},className:"rounded-lg px-2 py-2 text-[13px] text-ink-secondary hover:text-ink disabled:opacity-50",children:n("botAccess.mcpUseAll")})]}),a.busy&&e.jsx("p",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.mcpBusy")})]})}let ee=null,q=null;const ui=6e4;function Se(a=!1){return!a&&ee&&Date.now()-ee.at<ui?Promise.resolve(ee.services):q||(q=T("/api/connectors/tools").then(i=>{const t=i.services??{};return i.configured&&(ee={at:Date.now(),services:t}),t}).finally(()=>{q=null}),q)}const yi=["read","draft","send","modify","delete"],hi={read:"botAccess.grants.verb.read",draft:"botAccess.grants.verb.draft",send:"botAccess.grants.verb.send",modify:"botAccess.grants.verb.modify",delete:"botAccess.grants.verb.delete"};function pi({bot:a,patch:i,slugs:t}){const[r,l]=x.useState(null),[s,d]=x.useState(""),[h,u]=x.useState(null),[c,g]=x.useState(null),[y,m]=x.useState({});x.useEffect(()=>{if(!r||h||c)return;let f=!1;return Se().then(k=>{f||u(k)}).catch(k=>{f||g(k instanceof Error?k.message:String(k))}),()=>{f=!0}},[r,h,c]);const o=a.connectorTools,b=o!=null,p=f=>{const k=o?.[f];return k&&k.tools!=="*"?k.tools:[]},S=(f,k)=>{const M=Ba(o,f,k,t);M!==void 0&&i({connectorTools:M})},B=(f,k)=>{const M=p(f),L=M.includes(k)?M.filter(J=>J!==k):[...M,k];if(!L.length){S(f,null);return}m(J=>({...J,[f]:L})),S(f,{tools:L})},N=f=>{const k=p(f);k.length&&m(M=>({...M,[f]:k})),S(f,{tools:"*"})},j=f=>{const k=y[f];k&&k.length?S(f,{tools:k}):S(f,null)};return t.length?e.jsxs("div",{className:"mt-3",children:[e.jsx("div",{className:"text-[12px] font-medium text-ink",children:n("botAccess.grants.header")}),e.jsx("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:n("botAccess.grants.hint")}),e.jsx("div",{className:"mt-2 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:t.map(f=>{const k=Sa(o,f),M=r===f,L=o?.[f],J=k.level==="all"&&b&&L?.tools==="*",F=h?.[f]??[],v=p(f),C=s.trim().toLowerCase(),w=C?F.filter(D=>D.name.toLowerCase().includes(C)||(D.description??"").toLowerCase().includes(C)):F,I=new Map;for(const D of F){const P=Na(D.name);if(!P)continue;const V=I.get(P)??[];V.push(D.name),I.set(P,V)}return e.jsxs("div",{children:[e.jsxs("button",{type:"button","aria-expanded":M,onClick:()=>{l(M?null:f),d("")},className:"flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-control/60",children:[M?e.jsx(Ue,{size:14,className:"shrink-0 text-ink-secondary"}):e.jsx(yn,{size:14,className:"shrink-0 text-ink-secondary"}),e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] text-ink",children:f}),e.jsx("span",{className:"shrink-0 text-[12px] text-ink-secondary",children:k.editable?k.level==="all"?n("botAccess.grants.allTools"):k.level==="none"?n("botAccess.grants.noTools"):n("botAccess.grants.toolCount",{count:k.count}):n("botAccess.grants.custom")})]}),M&&e.jsx("div",{className:"border-t border-hairline/40 bg-inset/40 px-3 py-3",children:k.editable?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsx("button",{type:"button",onClick:()=>J?j(f):N(f),className:R("rounded-full px-2.5 py-1 text-[12px] font-medium",J?"bg-accent/15 text-accent-text":"bg-control text-ink hover:bg-raised-hover"),children:n("botAccess.grants.allTools")}),b&&e.jsx("button",{type:"button",onClick:()=>i({connectorTools:null}),className:"rounded-full bg-control px-2.5 py-1 text-[12px] font-medium text-ink hover:bg-raised-hover",children:n("botAccess.grants.allApps")})]}),c?e.jsxs("div",{className:"mt-2 text-[12px] text-ink-secondary",children:[n("botAccess.grants.loadError")," ",e.jsx("button",{type:"button",className:"underline",onClick:()=>{g(null),u(null),Se(!0).then(()=>{}).catch(()=>{})},children:n("botAccess.grants.retry")})]}):h===null?e.jsx("div",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.grants.loading")}):F.length===0?e.jsx("div",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.grants.noListing")}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mt-2 flex flex-wrap gap-1.5",children:yi.filter(D=>I.has(D)).map(D=>{const P=I.get(D)??[];return e.jsxs("button",{type:"button",title:n("botAccess.grants.verbHint"),onClick:()=>{const V=[...new Set([...v,...P])];m(re=>({...re,[f]:V})),S(f,{tools:V})},className:"rounded-full bg-control px-2.5 py-1 text-[11px] text-ink hover:bg-raised-hover",children:[n(hi[D])," · ",P.length]},D)})}),e.jsx("input",{className:R(O,"mt-2"),placeholder:n("botAccess.grants.search"),"aria-label":n("botAccess.grants.search"),value:s,onChange:D=>d(D.target.value)}),e.jsxs("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[w.map(D=>{const P=J||v.includes(D.name);return e.jsxs("label",{className:"flex cursor-pointer items-start gap-2 rounded-md px-1.5 py-1 hover:bg-control/60",children:[e.jsx("input",{type:"checkbox",checked:P,disabled:J,onChange:()=>B(f,D.name),className:"mt-0.5"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate font-mono text-[12px] text-ink",title:D.name,children:D.name}),D.description&&e.jsx("span",{className:"block truncate text-[11px] text-ink-secondary",title:D.description,children:D.description})]})]},D.name)}),w.length===0&&e.jsx("div",{className:"px-1.5 py-2 text-[12px] text-ink-secondary",children:n("botAccess.grants.noMatches")})]})]})]}):e.jsx("div",{className:"text-[12px] leading-relaxed text-ink-secondary",children:n("botAccess.grants.uneditable")})})]},f)})})]}):e.jsx("div",{className:"mt-3 text-[12px] text-ink-secondary",children:n("botAccess.grants.noApps")})}function xi({bot:a,patch:i}){const{state:t,dispatch:r}=G(),l=qe(un()?.view??null)==="connecting"&&t.config?.xResearch?.unavailable!==!0,s=t.config?.treg?.configured===!0,d=t.config?.xResearch?.included===!0,h=s||d,u=a.xResearch!==!1,c=h?u?n(s?"research.ownOn":"research.planOn"):n("research.off"):n(l?"research.connecting":"research.addKey");return e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-xl bg-card p-4","data-testid":"access-x-research",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("research.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:c}),!h&&!l&&e.jsx("button",{type:"button",className:"ui-button mt-2",onClick:()=>r(Ma("treg")),children:n("research.openKeys")})]}),e.jsx(W,{checked:h&&u,"aria-label":n("research.switch"),disabled:!h,onClick:()=>i({xResearch:!u}),className:"disabled:cursor-not-allowed"})]})}function bi({on:a,browserOn:i,myChrome:t,onChange:r}){return e.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4 border-t border-hairline/40 pt-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[14px] font-medium text-ink",children:n("botAccess.recordSteps.title")}),e.jsxs("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:[i?a?n("botAccess.recordSteps.on"):n("botAccess.recordSteps.off"):n("botAccess.recordSteps.needsBrowser"),i&&a&&t?` ${n("botAccess.recordSteps.myChrome")}`:""]})]}),e.jsx(W,{checked:a&&i,"aria-label":n("botAccess.recordSteps.title"),disabled:!i,onClick:()=>r(!a),className:"disabled:cursor-not-allowed"})]})}function gi(a,i){return(!a.computer||a.computer==="cloud")&&!i?.cloudHome}function fi({bot:a}){const{request:i}=H(),{state:t}=G(),r=t.config?.vps?.sshAlias??"",[l,s]=x.useState(null),[d,h]=x.useState(null),[u,c]=x.useState(null),[g,y]=x.useState(!1),m=async b=>{y(!0),h(null),c(null);try{const p=await i(`/api/bots/${a.id}`,{method:"PATCH",body:JSON.stringify({vpsAlias:b})});c(p?.notice??null),s(null)}catch(p){h(p instanceof Error?p.message:String(p))}finally{y(!1)}},o=l??a.vpsAlias??"";return e.jsxs("div",{className:"mt-3 rounded-lg bg-inset p-3",children:[e.jsx("div",{className:"text-[13px] text-ink",children:n("botAccess.cloud.server")}),e.jsxs("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:[r?n("botAccess.cloud.serverDefault",{alias:r}):n("botAccess.cloud.serverNoDefault")," ",e.jsx(ja,{id:"vps"})]}),e.jsxs("form",{className:"mt-2 flex items-center gap-2",onSubmit:b=>{b.preventDefault(),m(o.trim()||null)},children:[e.jsx("input",{className:R(O,"font-mono text-[13px]"),placeholder:r||n("botAccess.cloud.serverPlaceholder"),value:o,"aria-label":n("botAccess.cloud.server"),onChange:b=>s(b.target.value)}),e.jsx("button",{type:"submit",disabled:g||l===null,className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("botAccess.cloud.serverSave")})]}),d&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:d}),u&&e.jsx("div",{role:"status",className:"mt-2 break-words text-[12px] text-ink-secondary",children:u})]})}function vi({bot:a,patch:i}){const{state:t}=G(),{draft:r}=H();return gi(a,t.config)?e.jsxs(e.Fragment,{children:[!a.computer&&!r&&e.jsxs("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2.5 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx("span",{className:"font-medium text-ink",children:n("botAccess.cloud.autoTitle")})," ",n("botAccess.cloud.autoDescription")]}),e.jsx(mn,{value:a.cloudBackend??"box",onChange:l=>i({cloudBackend:l})}),a.cloudBackend==="vps"&&!r&&e.jsx(fi,{bot:a}),!a.computer&&a.cloudBackend==="vps"&&e.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4 rounded-lg bg-inset px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[13px] text-ink",children:n("botAccess.cloud.startVps")}),e.jsx("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:n("botAccess.cloud.startVpsDescription")})]}),e.jsx(W,{checked:!!a.autoStartVps,"aria-label":n("botAccess.cloud.startVps"),onClick:()=>i({autoStartVps:!a.autoStartVps})})]})]}):null}function Ai({bot:a,patch:i,seat:t}){const{state:r}=G(),{capabilities:l}=me(),s=fa(r.instances,a),d=va({capabilities:l,providerSupportsLocal:s}),h={...a,name:a.name||n("sidebar.newBotSimple")},u=sn(r.config,l).map(([g,y,m,o])=>{const b=we(Le({bot:h,place:g??"auto",seat:t,config:r.config,instances:r.instances,local:{ready:Aa({capabilities:l,providerSupportsLocal:s}),reason:d??n("computer.unavailableLocal")}})),p=on(g,a.cloudBackend,r.config?.managedPolicy);return{mode:g,labelKey:y,descriptionKey:m,Icon:o,view:b,managedBy:p,selected:dn(g,a.computer,l),disabled:!!p||ka(b),issue:!p&&pe(b),note:pe(b)?b.line:g==="local"?d??void 0:void 0}}),c=g=>i(g==="browser"?{computer:g,browser:!0}:{computer:g});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("computer.worksOn")}),e.jsx("p",{className:"mt-1 text-[12px] leading-5 text-ink-secondary",children:n(r.config?.cloudHome?"computer.worksOnHintCloudHome":"computer.worksOnHint")}),e.jsx(cn,{options:u,onSelect:c})]})}function or({bot:a,derived:i,parts:t}){const{draft:r}=H(),{state:l,dispatch:s}=G(),{patch:d,canUseConnectedApps:h,connectedAppsConfigured:u,connectedAppsEnabled:c,connectorGrantState:g,canUseBrowser:y,desktopBrowser:m,browserBlockedOnWindows:o,browserFeature:b,browserAllowed:p,browserEnabled:S}=i,B=l.config?.browserEngine?.installable===!0,{capabilities:N}=me(),j=xa(l.config,N),f=we(Le({bot:a,place:a.computer??"auto",seat:j,config:l.config,instances:l.instances})),k=ba(a),M=k.phase==="ready",L=k.connectedSlugs,J=Object.fromEntries(k.apps.map(w=>[w.slug,w.label])),F=l.webhooks.filter(w=>w.botId===a.id),v=a.alwaysAllow??[],C=w=>!t||t.includes(w);return e.jsxs("div",{className:"flex flex-col gap-4",children:[C("worksOn")&&e.jsxs("div",{className:"rounded-xl bg-card p-4","data-testid":"access-works-on",children:[r?e.jsx(Ai,{bot:a,patch:d,seat:j}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("access.worksOn",{name:a.name,short:f.short})}),e.jsx(K,{bot:a,kind:"owner"}),e.jsx("button",{type:"button",onClick:()=>{s({type:"toggleSettings",open:!1}),s({type:"toggleComputer",open:!0})},className:"mt-3 rounded-lg bg-control px-3 py-1.5 text-[13px] text-ink hover:bg-raised-hover",children:n("place.action.openComputerPanel")})]}),e.jsx(vi,{bot:a,patch:d})]}),C("folder")&&e.jsx(ci,{bot:a}),C("apps")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.apps.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:u?h?c?g==="partial"?n("botAccess.apps.partial"):g==="none"?n("botAccess.apps.none"):n("botAccess.apps.enabled"):n("botAccess.apps.disabled"):n("botAccess.apps.modelUnsupported"):n("botAccess.apps.connectInSettings")}),e.jsx(K,{bot:a,kind:"owner"})]}),e.jsx(W,{checked:c,"aria-label":n("botAccess.apps.allow"),disabled:!c&&(!u||!h),onClick:()=>d({composio:!c}),title:!c&&!u?n("botAccess.apps.connectFirst"):!c&&!h?n("botAccess.apps.modelUnsupportedShort"):void 0,className:"disabled:cursor-not-allowed"})]}),c&&M&&e.jsxs(e.Fragment,{children:[!r&&e.jsx(ki,{connectedSlugs:L,labels:J,scopes:a.connectorScopes,onChange:w=>d({connectorScopes:w})}),e.jsx(pi,{bot:a,patch:d,slugs:L})]}),c&&u&&e.jsxs("button",{type:"button",onClick:()=>{s({type:"toggleSettings",open:!1}),s({type:"togglePlugins",open:!0,surface:"apps"})},className:"mt-3 flex items-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover",children:[e.jsx(Je,{size:14})," ",n("botAccess.connectApp")]})]}),C("phone")&&e.jsx(Yn,{bot:a,patch:d}),C("mcp")&&e.jsx(mi,{bot:a,patch:d}),C("tools")&&e.jsx(_n,{bot:a,engineKind:i.engine?.driverKind},a.id),C("browser")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.browser.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:m?b?y?a.computer==="off"?n("botAccess.browser.off"):S?n("botAccess.browser.enabled"):n("botAccess.browser.disabled"):n("botAccess.browser.modelUnsupported"):n("botAccess.browser.disabledInSettings"):o&&!B?n("botAccess.browser.windowsUnavailable"):ga(l.config)}),e.jsx(K,{bot:a,kind:"owner"})]}),e.jsx(W,{checked:S&&a.computer!=="off","aria-label":n("botAccess.browser.allow"),disabled:a.computer==="off"||!S&&(!m&&!B||!b||!y),onClick:()=>d({browser:!p}),title:a.computer==="off"?n("botAccess.browser.offShort"):void 0,className:"disabled:cursor-not-allowed"})]}),!r&&e.jsx(bi,{on:a.recordBrowserSteps===!0,browserOn:S&&a.computer!=="off",myChrome:l.config?.browserEngine?.myChrome===!0&&(l.config?.browserProfiles??[]).some(w=>w.id===a.browserProfile&&w.browser==="chrome"),onChange:w=>d({recordBrowserSteps:w})})]}),!r&&C("xResearch")&&e.jsx(xi,{bot:a,patch:d}),!r&&C("webhooks")&&e.jsx(ti,{bot:a}),!r&&C("webhooks")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.webhooks.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.webhooks.description")}),e.jsx(K,{bot:a,kind:"owner"}),F.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.webhooks.empty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:F.map(w=>e.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate text-[13px] text-ink",children:w.name}),e.jsx("span",{className:R("shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium",w.enabled?"bg-accent/15 text-accent-text":"bg-control text-ink-secondary"),children:w.enabled?n("botAccess.webhooks.active"):n("botAccess.webhooks.paused")}),e.jsx("span",{className:"shrink-0 text-[12px] tabular-nums text-ink-secondary",children:n("botAccess.webhooks.deliveries",{count:w.deliveryCount})})]},w.id))})]}),!r&&C("always")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.always.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.always.description")}),e.jsx(K,{bot:a,kind:"owner"}),v.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.always.empty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:v.map(w=>e.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] text-ink",children:w}),e.jsx("button",{type:"button","aria-label":n("botAccess.always.remove",{entry:w}),onClick:()=>d({alwaysAllow:v.filter(I=>I!==w)}),className:"shrink-0 rounded-md px-2 py-1 text-[12px] text-ink-secondary hover:bg-danger/10 hover:text-danger",children:n("botAccess.always.removeButton")})]},w))})]})]})}function ki({connectedSlugs:a,labels:i={},scopes:t,onChange:r}){const l=t!==void 0,s=[...new Set([...a,...Object.keys(t?.apps??{})])].sort(),d=(h,u)=>{const c={...t?.apps};u?c[h]=u:delete c[h],r({apps:c})};return e.jsxs("div",{className:"mt-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsx("div",{className:"text-[13px] text-ink-secondary",children:l?n("botAccess.scopes.limited"):n("botAccess.scopes.unlimited")}),e.jsx(W,{checked:l,"aria-label":n("botAccess.scopes.limitLabel"),onClick:()=>r(l?null:{apps:{}})})]}),l&&e.jsxs("div",{className:"mt-2 flex flex-col divide-y divide-hairline/20 rounded-lg bg-inset",children:[!s.length&&e.jsx("div",{className:"px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.scopes.empty")}),s.map(h=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-3 py-1.5",children:[e.jsxs("span",{className:"min-w-0 text-[13px] text-ink",children:[i[h]??h,!a.includes(h)&&e.jsx("span",{className:"ml-2 text-[11px] text-ink-secondary",children:n("botAccess.scopes.notConnected")})]}),e.jsx("div",{className:"flex shrink-0 gap-0.5 rounded-md bg-card p-0.5",role:"group","aria-label":n("botAccess.scopes.accessLabel",{app:h}),children:[[null,n("botAccess.scopes.off"),n("botAccess.scopes.offHint")],["read",n("botAccess.scopes.read"),n("botAccess.scopes.readHint")],["write",n("botAccess.scopes.readWrite"),n("botAccess.scopes.readWriteHint")]].map(([u,c,g])=>e.jsx("button",{type:"button",title:g,"aria-pressed":(t?.apps[h]??null)===u,onClick:()=>d(h,u),className:R("rounded px-2 py-0.5 text-[12px] font-medium",(t?.apps[h]??null)===u?"bg-raised text-ink":"text-ink-secondary hover:text-ink"),children:c},c))})]},h))]})]})}function dr({bot:a}){const{state:i,dispatch:t}=G(),{draft:r}=H(),l=i.instances.find(s=>s.instanceId===a.modelSelection.instanceId)?.capabilities?.modelVariants;return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx(wa,{bot:a,contained:!0,label:e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("model.section.default")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:r?n("model.section.starting"):n("model.section.threads")}),e.jsx(K,{bot:a,kind:"chief"})]})}),!r&&e.jsx(La,{bot:a,className:"mt-3"}),!r&&e.jsx("div",{className:"mt-3 text-[13px] text-ink-secondary",children:n("model.section.installationDefault")})]}),e.jsx(Da,{bot:a,className:"rounded-xl bg-card p-4",label:e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:l?n("model.simple.reasoning"):n("model.section.effort")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:l?r?n("model.section.startingReasoning"):n("model.section.threads"):n(a.modelSelection.effort?"model.section.effortHelp":"model.section.effortHelpDefault")}),e.jsx(K,{bot:a,kind:"chief"})]})}),!r&&e.jsx(Si,{bot:a,onChange:s=>t({type:"updateBot",botId:a.id,patch:{fallback:s}})}),!r&&i.config?.cacheKeepWarm&&e.jsx(Ci,{bot:a,workspaceOn:i.config.cacheKeepWarm.enabled,onChange:s=>t({type:"updateBot",botId:a.id,patch:{cacheKeepWarm:s}})})]})}function Ci({bot:a,workspaceOn:i,onChange:t}){const r=a.cacheKeepWarm===!0?"on":a.cacheKeepWarm===!1?"off":"follow";return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("label",{htmlFor:"bot-cache-keepwarm",className:"text-[15px] font-medium text-ink",children:n("bot.keepWarm.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("bot.keepWarm.help")}),e.jsxs(_,{className:"mt-3 max-w-full",id:"bot-cache-keepwarm",value:r,onChange:l=>t(l.target.value==="on"?!0:l.target.value==="off"?!1:null),children:[e.jsx("option",{value:"follow",children:n("bot.keepWarm.follow",{state:n(i?"bot.keepWarm.on":"bot.keepWarm.off")})}),e.jsx("option",{value:"on",children:n("bot.keepWarm.on")}),e.jsx("option",{value:"off",children:n("bot.keepWarm.off")})]})]})}function Si({bot:a,onChange:i}){const{state:t}=G(),r=a.fallback??[],l=(m,o,b)=>a.modelSelection.instanceId===m&&a.modelSelection.model===o||r.some((p,S)=>S!==b&&p.instanceId===m&&p.model===o),s=m=>m?.models.options.filter(o=>!o.orgBlocked&&!o.needsCliUpdate&&(m.snapshot.authenticated!==!1||o.custom))??[],d=m=>{const o=m.models.options.find(b=>b.id===m.models.default);return o?s(m).includes(o):m.snapshot.authenticated!==!1},h=m=>[...d(m)?[m.models.default]:[],...s(m).map(o=>o.id)].find(o=>o.trim()&&!l(m.instanceId,o)),u=t.instances.filter(m=>m.snapshot.state==="available"&&!!m.models.default.trim()&&h(m)!==void 0),c=m=>t.instances.find(o=>o.instanceId===m)?.displayName??m,g=(m,o)=>{const b=s(t.instances.find(p=>p.instanceId===m.instanceId)).filter(p=>!l(m.instanceId,p.id,o));return b.some(p=>p.id===m.model)?b:[{id:m.model,label:m.model},...b]},y=m=>{const o=u.find(p=>p.instanceId===m),b=o&&h(o);!b||r.length>=5||i([...r,{instanceId:m,model:b}])};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("model.fallback.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("model.fallback.uses")}),r.length>0&&e.jsx("ol",{className:"mt-3 flex flex-col gap-1",children:r.map((m,o)=>e.jsxs("li",{className:"flex items-center gap-2 rounded-lg bg-inset px-3 py-1.5 text-[13px]",children:[e.jsxs("span",{className:"w-4 shrink-0 tabular-nums text-ink-secondary",children:[o+1,"."]}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-ink",children:c(m.instanceId)}),e.jsx(_,{size:"sm",className:"max-w-[45%] shrink-0",value:m.model,"aria-label":n("model.fallback.model",{name:c(m.instanceId)}),onChange:b=>i(r.map((p,S)=>S===o?{...p,model:b.target.value}:p)),children:g(m,o).map(b=>e.jsx("option",{value:b.id,children:b.label},b.id))}),e.jsx("button",{type:"button",onClick:()=>i(r.filter((b,p)=>p!==o)),"aria-label":n("model.fallback.remove",{name:c(m.instanceId)}),className:"shrink-0 rounded p-0.5 text-ink-secondary hover:text-ink",children:e.jsx(Ne,{size:13})})]},o))}),r.length<5&&e.jsx("div",{className:R("flex items-center gap-2",r.length>0?"mt-2":"mt-3"),children:e.jsxs(_,{size:"sm",value:"",onChange:m=>y(m.target.value),"aria-label":n("model.fallback.add"),disabled:u.length===0,children:[e.jsx("option",{value:"",children:u.length===0?n("model.fallback.none"):n("model.fallback.addOption")}),u.map(m=>e.jsx("option",{value:m.instanceId,children:m.instanceId===a.modelSelection.instanceId?`${m.displayName} · ${n("botPanel.backups.sameAccount")}`:m.displayName},m.instanceId))]})})]})}function Ni({name:a,ownTeam:i,teams:t,allowed:r,onSave:l}){const[s,d]=x.useState(r),h=[...new Set([...t,...r])].filter(c=>c!==i).sort(),u=JSON.stringify([...s].sort())!==JSON.stringify([...r].sort());return e.jsxs("details",{className:"mt-3 border-t border-hairline/40 pt-3",children:[e.jsx("summary",{className:"cursor-pointer text-[13px] font-medium text-ink",children:n("botAccess.teams.title")}),e.jsx("p",{className:"mt-2 text-[13px] leading-relaxed text-ink-secondary",children:n("botAccess.teams.description",{name:a})}),e.jsxs("fieldset",{className:"mt-3 flex max-h-52 flex-col gap-2 overflow-y-auto",children:[e.jsx("legend",{className:"sr-only",children:n("botAccess.teams.legend",{name:a})}),h.map(c=>e.jsxs("label",{className:"flex items-center gap-2 text-[13px] text-ink",children:[e.jsx("input",{type:"checkbox",className:"accent-accent",checked:s.includes(c),onChange:g=>d(y=>g.target.checked?[...y,c]:y.filter(m=>m!==c))}),c==="General"||!c?n("botAccess.teams.general"):c]},c)),!h.length&&e.jsx("p",{className:"text-[13px] text-ink-secondary",children:n("botAccess.teams.empty")})]}),e.jsx("button",{type:"button",disabled:!u,onClick:()=>l(s),className:"mt-3 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-medium text-white disabled:opacity-40",children:n("botAccess.teams.save")})]})}function cr({bot:a,derived:i,parts:t}){const{patch:r,engine:l,canCoordinate:s,approvalMode:d,trustedModesAvailable:h,sectionName:u,currentChief:c}=i,g=Ra(),{state:y,dispatch:m}=G(),o=De(),{draft:b}=H(),p=u==="General"?n("botAccess.teams.general"):u,[S,B]=x.useState(null),[N,j]=x.useState(null),f=L=>!t||t.includes(L),k=()=>m({type:"updateBot",botId:a.id,patch:{approvalMode:"full",applyToAllThreads:!0}}),M=L=>{if(L!==d){if(L==="full"){k();return}if(L==="auto"&&a.computer==="local"){B(a.id);return}r({approvalMode:L})}};return e.jsxs("div",{className:"flex flex-col gap-4",children:[f("chief")&&!g&&e.jsxs("div",{className:R("rounded-xl border p-4",a.chiefOfStaff?"border-accent/40 bg-accent/10":"border-hairline/40 bg-card"),children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:R("flex size-8 shrink-0 items-center justify-center rounded-lg",a.chiefOfStaff?"bg-accent text-white":"bg-control text-ink-secondary"),children:e.jsx(Ea,{size:17})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("permissions.chief.title")}),e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("permissions.chief.oneFor",{section:p})})]}),e.jsx(W,{checked:!!a.chiefOfStaff,"aria-label":n("permissions.chief.title"),disabled:!a.chiefOfStaff&&!s,onClick:()=>r({chiefOfStaff:!a.chiefOfStaff}),title:!a.chiefOfStaff&&!s?n("permissions.cannotCoordinate"):void 0,className:"disabled:cursor-not-allowed"})]}),e.jsx("div",{className:"mt-3 text-[13px] leading-relaxed text-ink-secondary",children:a.chiefOfStaff&&!s?n("permissions.chief.unsupportedCurrent"):a.chiefOfStaff?n("permissions.chief.active",{section:p}):s?c?n("permissions.chief.replace",{section:p,current:c.name}):n("permissions.chief.make",{section:p}):n("permissions.chief.unsupported")}),e.jsx(K,{bot:a,kind:"chief"}),a.chiefOfStaff&&e.jsx(Ni,{name:a.name,ownTeam:a.section?.trim()||"",teams:["",...y.sections??[],...[...y.bots,...y.groups].map(L=>L.section?.trim()||"")],allowed:a.managedSections??[],onSave:L=>r({managedSections:L,acknowledgePeerScope:!0})},a.id+JSON.stringify(a.managedSections??[])),a.chiefOfStaff&&e.jsx(K,{bot:a,kind:"owner"})]}),f("approval")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("permissions.approval.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:b?n("permissions.approval.draftHanded"):n("permissions.approval.helpHanded")}),e.jsx(K,{bot:a,kind:"owner"}),e.jsx("div",{className:"mt-3",children:e.jsx(Ta,{approvalMode:a.approvalMode,autoApprove:a.autoApprove,providerName:l?.displayName??a.name,driverKind:l?.driverKind??"",onSelect:M,menuDirection:"down",wide:!0,busy:!!a.busy,trustedModesAvailable:h,onManageCommandAllowlist:!b&&o===!0?()=>j({botId:a.id,botName:a.name}):void 0})}),!b&&d==="full"&&e.jsx("button",{type:"button",className:"mt-3 text-[13px] text-accent hover:underline disabled:opacity-40",onClick:k,children:n("permissions.approval.applyFull")}),!b&&o===!0&&e.jsx("button",{type:"button",className:"mt-3 block text-[13px] text-accent hover:underline",onClick:()=>j({botId:a.id,botName:a.name}),children:n("commandAllowlist.manage")})]}),N&&e.jsx(Ja,{...N,onClose:()=>j(null)},`command-allowlist:${N.botId}`),!b&&f("outbound")&&e.jsx(Mi,{bot:a,onChange:L=>r({outbound:L})}),e.jsx(Ga,{open:S!==null,onCancel:()=>B(null),onConfirm:()=>{const L=S;B(null),L&&m({type:"updateBot",botId:L,patch:{approvalMode:"auto",acknowledgeLocalAuto:!0}})}})]})}function Mi({bot:a,onChange:i}){const t=a.outbound??In;return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("permissions.outbound.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("permissions.outbound.help")}),e.jsx("div",{className:"mt-3 flex gap-1 rounded-lg bg-inset p-0.5",children:[["ask",n("permissions.outbound.ask"),n("permissions.outbound.askHint")],["allow",n("permissions.outbound.allow"),n("permissions.outbound.allowHint")]].map(([r,l,s])=>e.jsx("button",{title:s,type:"button","aria-pressed":t.policy===r,onClick:()=>{r!==t.policy&&i({policy:r})},className:R("flex-1 rounded-md px-2.5 py-1.5 text-[13px] font-medium",t.policy===r?"bg-raised text-ink":"text-ink-secondary hover:text-ink"),children:l},r))})]})}function mr({bot:a,derived:i}){const{patch:t}=i,{draft:r}=H();return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(Ka,{bot:a,onPatch:t}),e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-xl bg-card p-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("voice.notifications.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("voice.notifications.help")})]}),e.jsx(W,{checked:a.notifications,"aria-label":n("voice.notifications.label"),onClick:()=>{const l=!a.notifications;l&&!r&&Ha(),t({notifications:l})}})]})]})}function ce(a){return!a||a==="everyone"?{mode:"everyone",people:""}:a==="admins"?{mode:"admins",people:""}:{mode:"people",people:a.people.join(`
|
|
22
|
-
`)}}function ji(a,i){if(a!=="people")return{ok:!0,visibility:a};const t=[...new Set(i.split(/[\s,;]+/).map(r=>r.trim().toLowerCase()).filter(Boolean))];return t.length?{ok:!0,visibility:{people:t}}:{ok:!1}}function de(a){return!a||a==="everyone"||a==="admins"?a??"everyone":JSON.stringify([...new Set(a.people.map(i=>i.trim().toLowerCase()))].sort())}function Bi(a,i,t){const r=de(a.visibility);return i.filter(l=>!l.dm&&l.memberIds.includes(a.id)&&(l.audienceFloor!==void 0&&de(l.audienceFloor)!==r||l.memberIds.some(s=>{const d=t.find(h=>h.id===s);return d!==void 0&&d.id!==a.id&&de(d.visibility)!==r}))).map(l=>({id:l.id,name:l.name}))}const Ie=[{mode:"everyone",key:"botSettings.visibility.everyone"},{mode:"admins",key:"botSettings.visibility.admins"},{mode:"people",key:"botSettings.visibility.people"}];function
|
|
21
|
+
`)}const Z="rounded-lg bg-control px-3 py-1.5 text-[13px] text-ink hover:bg-raised-hover disabled:cursor-not-allowed disabled:opacity-50";function ei(a,i=Date.now()){if(!a.callCount||a.lastCalledAt===void 0)return n("botApi.callsNone");const t=He(a.lastCalledAt,i);return a.callCount===1?n("botApi.callsOne",{when:t}):n("botApi.calls",{count:a.callCount,when:t})}function ai(a){const i=a.reason===Qn?n("botApi.starter"):a.statusCode===200?n("botApi.call.replied"):a.statusCode===202?n("botApi.call.accepted"):a.statusCode===401?n("botApi.call.wrongKey"):a.statusCode===403?n("botApi.call.off"):a.statusCode===429?n("automations.calls.tooFast"):a.statusCode===409?n("botApi.call.busy"):a.statusCode===413?n("automations.calls.tooLarge"):a.statusCode===400||a.statusCode===415?n("automations.calls.unreadable"):n("botApi.call.failed");return a.repeats&&a.repeats>1?`${i} (${a.repeats})`:i}const ni=a=>/^https?:\/\/(?:127\.0\.0\.1|localhost|\[::1\])[:/]/.test(a);function ii(a){return a===0?n("botApi.webhooksNone"):a===1?n("botApi.webhooksOne"):n("botApi.webhooks",{count:a})}function ri({className:a}){const{usage:i,bridge:t}=ya(),r=ha(t,i,"app_settings");return e.jsxs("div",{className:R("rounded-xl bg-card p-4",a),"data-testid":"bot-api",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botApi.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary","data-testid":"bot-api-starter",children:n("botApi.starter")}),t&&i&&e.jsx("button",{type:"button",onClick:()=>r.start(),disabled:r.busy!==null,className:R(Z,"mt-3"),"data-testid":"bot-api-upgrade",children:n("roomCard.upgrade")}),r.note&&e.jsx("div",{className:"mt-2",children:e.jsx(pa,{note:r.note})}),r.dialog]})}function ti(a){const{state:i}=G();return i.config?.cloudStarter===!0?e.jsx(ri,{className:a.className}):e.jsx(li,{...a})}function li({bot:a,webhooksLink:i=!1,className:t}){const{state:r,dispatch:l}=G(),[s,d]=x.useState(null),[h,u]=x.useState(null),[c,g]=x.useState(!1),[y,m]=x.useState(!1),[o,b]=x.useState(null),[p,S]=x.useState(null),B=`/api/bots/${a.id}/bot-api`;x.useEffect(()=>{let v=!1;return u(null),d(null),T(B).then(C=>{v||d(C)}).catch(()=>{v||b(n("botApi.error"))}),()=>{v=!0}},[B]);const N=async v=>{m(!0),b(null),g(!1);try{const{key:C,...w}=await v();d(w),u(C??null)}catch(C){b(C instanceof Error&&C.message?C.message:n("botApi.error"))}finally{m(!1)}},j=()=>N(()=>T(B,{method:"POST",body:JSON.stringify({enabled:!s?.enabled})})),f=()=>N(()=>T(`${B}/new-key`,{method:"POST"})),k=s?Xn(s.url,h??Oe):"",M=async()=>{const v=await en(k);S(v==="copied"?"copied":"failed"),window.setTimeout(()=>S(null),1500)},L=()=>{T(B).then(d).catch(()=>{})},J=r.webhooks.filter(v=>v.botId===a.id).length,F=s?.canManage??!1;return e.jsxs("div",{className:R("rounded-xl bg-card p-4",t),"data-testid":"bot-api",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botApi.title")}),e.jsx("div",{className:"mt-0.5 text-[14px] text-ink",children:n("botApi.switch")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:F||!s?n("botApi.hint",{name:a.name}):n("botApi.notAllowed",{name:a.name})})]}),e.jsx(W,{"aria-label":n("botApi.switch"),checked:s?.enabled===!0,disabled:!s||!F||y,onClick:()=>{j()},"data-testid":"bot-api-switch"})]}),s?.canTakeCalls===!1&&e.jsx("div",{className:"mt-2 text-[13px] text-warning","data-testid":"bot-api-cant-take",children:n("botApi.cantTake")}),s?.enabled&&e.jsxs("div",{className:"mt-3 flex flex-col gap-2",children:[e.jsx("pre",{"data-testid":"bot-api-curl",className:"whitespace-pre-wrap break-all rounded-lg bg-inset px-3 py-2 font-mono text-[12px] leading-[1.5] text-ink",children:k}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("button",{type:"button",onClick:()=>{M()},className:R(Z,"inline-flex items-center gap-1.5"),"data-testid":"bot-api-copy",children:[e.jsx(Xa,{size:13,"aria-hidden":"true"}),p==="copied"?n("botApi.copied"):p==="failed"?n("botApi.copyFailed"):n("botApi.copy")]})}),e.jsx("div",{className:R("text-[12px]",h?"text-warning":"text-ink-secondary"),"data-testid":"bot-api-key-note",children:h?n("botApi.keyOnce"):n("botApi.keyHidden")}),e.jsx("div",{className:"text-[12px] text-ink-secondary","data-testid":"bot-api-password",children:n("botApi.password")}),ni(s.url)&&e.jsx("div",{className:"text-[12px] text-ink-secondary","data-testid":"bot-api-local",children:n("botApi.localOnly")}),F&&(c?e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[13px] text-ink-secondary",children:[e.jsx("span",{children:n("botApi.newKeyConfirm")}),e.jsx("button",{type:"button",onClick:()=>{f()},disabled:y,className:Z,"data-testid":"bot-api-replace",children:n("botApi.replace")}),e.jsx("button",{type:"button",onClick:()=>g(!1),className:Z,children:n("common.cancel")})]}):e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("details",{className:"min-w-0 flex-1 text-[12px] text-ink-secondary","data-testid":"bot-api-calls",onToggle:v=>{v.currentTarget.open&&L()},children:[e.jsx("summary",{className:"cursor-pointer",children:ei(s)}),e.jsx("ul",{className:"mt-1.5 flex flex-col gap-1",children:(s.calls??[]).map(v=>e.jsxs("li",{className:"min-w-0 truncate",title:v.preview,children:[He(v.receivedAt)," · ",ai(v),v.preview?` · ${v.preview}`:""]},v.id))})]}),e.jsx("button",{type:"button",onClick:()=>g(!0),disabled:y,className:Z,"data-testid":"bot-api-new-key",children:n("botApi.newKey")})]}))]}),o&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:o}),i&&e.jsx("button",{type:"button",onClick:()=>l({type:"showRoutines",view:"list"}),className:"mt-3 text-[13px] text-ink-secondary hover:text-ink","data-testid":"bot-api-webhooks",children:ii(J)})]})}function si({budget:a}){const i=a.servers.filter(t=>!t.direct).map(t=>t.name);return e.jsxs("div",{"data-tool-budget":!0,className:"mt-3 text-[12px] text-ink-secondary",children:[e.jsx("div",{children:n("botAccess.tools.budget",{listed:a.listed,limit:a.limit})}),i.length>0&&e.jsx("div",{"data-tool-budget-searched":!0,className:"mt-0.5",children:n("botAccess.tools.budgetSearched",{names:new Intl.ListFormat(Ne(),{type:"conjunction"}).format(i)})})]})}function oi({botId:a,busy:i}){const[t,r]=x.useState(null);return x.useEffect(()=>{if(i)return;let l=!0;return T(`/api/bots/${encodeURIComponent(a)}/tool-budget`).then(s=>{l&&r(s.budget??null)}).catch(()=>{l&&r(null)}),()=>{l=!1}},[a,i]),t?.limit!=null?e.jsx(si,{budget:{...t,limit:t.limit}}):null}function di(a){const{request:i}=H(),[t,r]=x.useState(null),[l,s]=x.useState(null),[d,h]=x.useState(!1),u=!!window.ogb?.pickFolder,c=async y=>{h(!0),s(null);try{await i(`/api/bots/${a.id}`,{method:"PATCH",body:JSON.stringify({cwd:y})}),r(null)}catch(m){s(m instanceof Error?m.message:String(m))}finally{h(!1)}};return{draft:t,setDraft:r,error:l,saving:d,canPick:u,save:c,pick:async()=>{const y=await window.ogb?.pickFolder?.(a.cwd);y&&c(y)}}}function ci({bot:a}){const{capabilities:i}=me(),t=i.host.homeDir,{draft:r,setDraft:l,error:s,saving:d,canPick:h,save:u,pick:c}=di(a),y=a.tasks?.find(o=>o.threadId===a.threadId)?.cwd,m=y!==void 0&&(y??void 0)!==a.cwd&&!On(y,a.id,a.threadId);return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.folder.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.folder.description")}),e.jsx(K,{bot:a,kind:"chief"}),h?e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsx("div",{className:"min-w-0 flex-1 truncate rounded-lg border border-hairline/40 bg-inset px-3 py-2 font-mono text-[13px] text-ink",title:a.cwd,children:a.cwd?pe(a.cwd,t):e.jsx("span",{className:"text-ink-secondary",children:n("botAccess.folder.private")})}),e.jsxs("button",{onClick:()=>{c()},disabled:d,className:"flex shrink-0 items-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[e.jsx(Ca,{size:14})," ",n("botAccess.folder.choose")]}),a.cwd&&e.jsx("button",{onClick:()=>{u(null)},disabled:d,className:"shrink-0 rounded-lg px-2 py-2 text-[13px] text-ink-secondary hover:text-ink disabled:opacity-50",children:n("botAccess.folder.clear")})]}):e.jsxs("form",{className:"mt-3 flex items-center gap-2",onSubmit:o=>{o.preventDefault(),u((r??a.cwd??"").trim()||null)},children:[e.jsx("input",{className:R(O,"font-mono text-[13px]"),"aria-label":n("botAccess.folder.title"),placeholder:n("botAccess.folder.placeholder"),value:r??a.cwd??"",onChange:o=>l(o.target.value)}),e.jsx("button",{type:"submit",disabled:d||r===null,className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("botAccess.folder.save")})]}),s&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:s}),m&&e.jsx("div",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.folder.pinned",{path:y?pe(y,t):n("botAccess.folder.home")})})]})}function mi({bot:a,patch:i}){const{dispatch:t}=G(),{servers:r,error:l,refresh:s}=nn(),d=r?rn(r,a.id):null,h=new Set((d?tn(d,a.mcpServers,a.id):[]).map(y=>y.name)),u=a.mcpServers==null,c=y=>{!d||a.busy||l||i({mcpServers:ln(d,a.mcpServers,y)})},g=()=>{t({type:"toggleSettings",open:!1}),t({type:"togglePlugins",open:!0,surface:"mcp"})};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"flex items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("connectors.tab.mcp")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.mcpDescription")}),e.jsx(K,{bot:a,kind:"owner"})]})}),l&&e.jsxs("div",{role:"alert",className:"mt-3 text-[12px] text-danger",children:[n("botAccess.mcpRefreshError")," ",e.jsx("button",{type:"button",onClick:()=>{s()},className:"underline",children:n("connectors.action.retry")})]}),d===null?!l&&e.jsx("div",{className:"mt-3 text-[12px] text-ink-secondary",children:n("mcp.loading")}):d.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.mcpEmpty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:d.map(y=>e.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate font-mono text-[13px] text-ink",children:y.name}),!y.enabled&&e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("botAccess.mcpDisabled")}),y.enabled&&y.offFor?.includes(a.id)&&e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("mcp.offFor",{bots:a.name})})]}),e.jsx(W,{checked:h.has(y.name),disabled:!y.enabled||!!a.busy||l,"aria-label":n("botAccess.mcpAllow",{name:y.name}),onClick:()=>c(y.name),className:"disabled:cursor-not-allowed"})]},y.name))}),e.jsx(oi,{botId:a.id,busy:!!a.busy}),e.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:g,className:"flex items-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover",children:[e.jsx(Te,{size:14})," ",n("botAccess.mcpAdd")]}),!u&&d&&d.length>0&&e.jsx("button",{type:"button",disabled:!!a.busy||l,onClick:()=>{!a.busy&&!l&&i({mcpServers:null})},className:"rounded-lg px-2 py-2 text-[13px] text-ink-secondary hover:text-ink disabled:opacity-50",children:n("botAccess.mcpUseAll")})]}),a.busy&&e.jsx("p",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.mcpBusy")})]})}let ee=null,q=null;const ui=6e4;function Ce(a=!1){return!a&&ee&&Date.now()-ee.at<ui?Promise.resolve(ee.services):q||(q=T("/api/connectors/tools").then(i=>{const t=i.services??{};return i.configured&&(ee={at:Date.now(),services:t}),t}).finally(()=>{q=null}),q)}const yi=["read","draft","send","modify","delete"],hi={read:"botAccess.grants.verb.read",draft:"botAccess.grants.verb.draft",send:"botAccess.grants.verb.send",modify:"botAccess.grants.verb.modify",delete:"botAccess.grants.verb.delete"};function pi({bot:a,patch:i,slugs:t}){const[r,l]=x.useState(null),[s,d]=x.useState(""),[h,u]=x.useState(null),[c,g]=x.useState(null),[y,m]=x.useState({});x.useEffect(()=>{if(!r||h||c)return;let f=!1;return Ce().then(k=>{f||u(k)}).catch(k=>{f||g(k instanceof Error?k.message:String(k))}),()=>{f=!0}},[r,h,c]);const o=a.connectorTools,b=o!=null,p=f=>{const k=o?.[f];return k&&k.tools!=="*"?k.tools:[]},S=(f,k)=>{const M=Ba(o,f,k,t);M!==void 0&&i({connectorTools:M})},B=(f,k)=>{const M=p(f),L=M.includes(k)?M.filter(J=>J!==k):[...M,k];if(!L.length){S(f,null);return}m(J=>({...J,[f]:L})),S(f,{tools:L})},N=f=>{const k=p(f);k.length&&m(M=>({...M,[f]:k})),S(f,{tools:"*"})},j=f=>{const k=y[f];k&&k.length?S(f,{tools:k}):S(f,null)};return t.length?e.jsxs("div",{className:"mt-3",children:[e.jsx("div",{className:"text-[12px] font-medium text-ink",children:n("botAccess.grants.header")}),e.jsx("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:n("botAccess.grants.hint")}),e.jsx("div",{className:"mt-2 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:t.map(f=>{const k=Sa(o,f),M=r===f,L=o?.[f],J=k.level==="all"&&b&&L?.tools==="*",F=h?.[f]??[],v=p(f),C=s.trim().toLowerCase(),w=C?F.filter(D=>D.name.toLowerCase().includes(C)||(D.description??"").toLowerCase().includes(C)):F,I=new Map;for(const D of F){const P=Na(D.name);if(!P)continue;const V=I.get(P)??[];V.push(D.name),I.set(P,V)}return e.jsxs("div",{children:[e.jsxs("button",{type:"button","aria-expanded":M,onClick:()=>{l(M?null:f),d("")},className:"flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-control/60",children:[M?e.jsx(Ue,{size:14,className:"shrink-0 text-ink-secondary"}):e.jsx(yn,{size:14,className:"shrink-0 text-ink-secondary"}),e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] text-ink",children:f}),e.jsx("span",{className:"shrink-0 text-[12px] text-ink-secondary",children:k.editable?k.level==="all"?n("botAccess.grants.allTools"):k.level==="none"?n("botAccess.grants.noTools"):n("botAccess.grants.toolCount",{count:k.count}):n("botAccess.grants.custom")})]}),M&&e.jsx("div",{className:"border-t border-hairline/40 bg-inset/40 px-3 py-3",children:k.editable?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsx("button",{type:"button",onClick:()=>J?j(f):N(f),className:R("rounded-full px-2.5 py-1 text-[12px] font-medium",J?"bg-accent/15 text-accent-text":"bg-control text-ink hover:bg-raised-hover"),children:n("botAccess.grants.allTools")}),b&&e.jsx("button",{type:"button",onClick:()=>i({connectorTools:null}),className:"rounded-full bg-control px-2.5 py-1 text-[12px] font-medium text-ink hover:bg-raised-hover",children:n("botAccess.grants.allApps")})]}),c?e.jsxs("div",{className:"mt-2 text-[12px] text-ink-secondary",children:[n("botAccess.grants.loadError")," ",e.jsx("button",{type:"button",className:"underline",onClick:()=>{g(null),u(null),Ce(!0).then(()=>{}).catch(()=>{})},children:n("botAccess.grants.retry")})]}):h===null?e.jsx("div",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.grants.loading")}):F.length===0?e.jsx("div",{className:"mt-2 text-[12px] text-ink-secondary",children:n("botAccess.grants.noListing")}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mt-2 flex flex-wrap gap-1.5",children:yi.filter(D=>I.has(D)).map(D=>{const P=I.get(D)??[];return e.jsxs("button",{type:"button",title:n("botAccess.grants.verbHint"),onClick:()=>{const V=[...new Set([...v,...P])];m(re=>({...re,[f]:V})),S(f,{tools:V})},className:"rounded-full bg-control px-2.5 py-1 text-[11px] text-ink hover:bg-raised-hover",children:[n(hi[D])," · ",P.length]},D)})}),e.jsx("input",{className:R(O,"mt-2"),placeholder:n("botAccess.grants.search"),"aria-label":n("botAccess.grants.search"),value:s,onChange:D=>d(D.target.value)}),e.jsxs("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[w.map(D=>{const P=J||v.includes(D.name);return e.jsxs("label",{className:"flex cursor-pointer items-start gap-2 rounded-md px-1.5 py-1 hover:bg-control/60",children:[e.jsx("input",{type:"checkbox",checked:P,disabled:J,onChange:()=>B(f,D.name),className:"mt-0.5"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate font-mono text-[12px] text-ink",title:D.name,children:D.name}),D.description&&e.jsx("span",{className:"block truncate text-[11px] text-ink-secondary",title:D.description,children:D.description})]})]},D.name)}),w.length===0&&e.jsx("div",{className:"px-1.5 py-2 text-[12px] text-ink-secondary",children:n("botAccess.grants.noMatches")})]})]})]}):e.jsx("div",{className:"text-[12px] leading-relaxed text-ink-secondary",children:n("botAccess.grants.uneditable")})})]},f)})})]}):e.jsx("div",{className:"mt-3 text-[12px] text-ink-secondary",children:n("botAccess.grants.noApps")})}function xi({bot:a,patch:i}){const{state:t,dispatch:r}=G(),l=qe(un()?.view??null)==="connecting"&&t.config?.xResearch?.unavailable!==!0,s=t.config?.treg?.configured===!0,d=t.config?.xResearch?.included===!0,h=s||d,u=a.xResearch!==!1,c=h?u?n(s?"research.ownOn":"research.planOn"):n("research.off"):n(l?"research.connecting":"research.addKey");return e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-xl bg-card p-4","data-testid":"access-x-research",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("research.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:c}),!h&&!l&&e.jsx("button",{type:"button",className:"ui-button mt-2",onClick:()=>r(Ma("treg")),children:n("research.openKeys")})]}),e.jsx(W,{checked:h&&u,"aria-label":n("research.switch"),disabled:!h,onClick:()=>i({xResearch:!u}),className:"disabled:cursor-not-allowed"})]})}function bi({on:a,browserOn:i,myChrome:t,onChange:r}){return e.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4 border-t border-hairline/40 pt-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[14px] font-medium text-ink",children:n("botAccess.recordSteps.title")}),e.jsxs("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:[i?a?n("botAccess.recordSteps.on"):n("botAccess.recordSteps.off"):n("botAccess.recordSteps.needsBrowser"),i&&a&&t?` ${n("botAccess.recordSteps.myChrome")}`:""]})]}),e.jsx(W,{checked:a&&i,"aria-label":n("botAccess.recordSteps.title"),disabled:!i,onClick:()=>r(!a),className:"disabled:cursor-not-allowed"})]})}function gi(a,i){return(!a.computer||a.computer==="cloud")&&!i?.cloudHome}function fi({bot:a}){const{request:i}=H(),{state:t}=G(),r=t.config?.vps?.sshAlias??"",[l,s]=x.useState(null),[d,h]=x.useState(null),[u,c]=x.useState(null),[g,y]=x.useState(!1),m=async b=>{y(!0),h(null),c(null);try{const p=await i(`/api/bots/${a.id}`,{method:"PATCH",body:JSON.stringify({vpsAlias:b})});c(p?.notice??null),s(null)}catch(p){h(p instanceof Error?p.message:String(p))}finally{y(!1)}},o=l??a.vpsAlias??"";return e.jsxs("div",{className:"mt-3 rounded-lg bg-inset p-3",children:[e.jsx("div",{className:"text-[13px] text-ink",children:n("botAccess.cloud.server")}),e.jsxs("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:[r?n("botAccess.cloud.serverDefault",{alias:r}):n("botAccess.cloud.serverNoDefault")," ",e.jsx(ja,{id:"vps"})]}),e.jsxs("form",{className:"mt-2 flex items-center gap-2",onSubmit:b=>{b.preventDefault(),m(o.trim()||null)},children:[e.jsx("input",{className:R(O,"font-mono text-[13px]"),placeholder:r||n("botAccess.cloud.serverPlaceholder"),value:o,"aria-label":n("botAccess.cloud.server"),onChange:b=>s(b.target.value)}),e.jsx("button",{type:"submit",disabled:g||l===null,className:"shrink-0 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:n("botAccess.cloud.serverSave")})]}),d&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:d}),u&&e.jsx("div",{role:"status",className:"mt-2 break-words text-[12px] text-ink-secondary",children:u})]})}function vi({bot:a,patch:i}){const{state:t}=G(),{draft:r}=H();return gi(a,t.config)?e.jsxs(e.Fragment,{children:[!a.computer&&!r&&e.jsxs("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2.5 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx("span",{className:"font-medium text-ink",children:n("botAccess.cloud.autoTitle")})," ",n("botAccess.cloud.autoDescription")]}),e.jsx(mn,{value:a.cloudBackend??"box",onChange:l=>i({cloudBackend:l})}),a.cloudBackend==="vps"&&!r&&e.jsx(fi,{bot:a}),!a.computer&&a.cloudBackend==="vps"&&e.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4 rounded-lg bg-inset px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[13px] text-ink",children:n("botAccess.cloud.startVps")}),e.jsx("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:n("botAccess.cloud.startVpsDescription")})]}),e.jsx(W,{checked:!!a.autoStartVps,"aria-label":n("botAccess.cloud.startVps"),onClick:()=>i({autoStartVps:!a.autoStartVps})})]})]}):null}function Ai({bot:a,patch:i,seat:t}){const{state:r}=G(),{capabilities:l}=me(),s=fa(r.instances,a),d=va({capabilities:l,providerSupportsLocal:s}),h={...a,name:a.name||n("sidebar.newBotSimple")},u=sn(r.config,l).map(([g,y,m,o])=>{const b=Be(we({bot:h,place:g??"auto",seat:t,config:r.config,instances:r.instances,local:{ready:Aa({capabilities:l,providerSupportsLocal:s}),reason:d??n("computer.unavailableLocal")}})),p=on(g,a.cloudBackend,r.config?.managedPolicy);return{mode:g,labelKey:y,descriptionKey:m,Icon:o,view:b,managedBy:p,selected:dn(g,a.computer,l),disabled:!!p||ka(b),issue:!p&&he(b),note:he(b)?b.line:g==="local"?d??void 0:void 0}}),c=g=>i(g==="browser"?{computer:g,browser:!0}:{computer:g});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("computer.worksOn")}),e.jsx("p",{className:"mt-1 text-[12px] leading-5 text-ink-secondary",children:n(r.config?.cloudHome?"computer.worksOnHintCloudHome":"computer.worksOnHint")}),e.jsx(cn,{options:u,onSelect:c})]})}function tr({bot:a,derived:i,parts:t}){const{draft:r}=H(),{state:l,dispatch:s}=G(),{patch:d,canUseConnectedApps:h,connectedAppsConfigured:u,connectedAppsEnabled:c,connectorGrantState:g,canUseBrowser:y,desktopBrowser:m,browserBlockedOnWindows:o,browserFeature:b,browserAllowed:p,browserEnabled:S}=i,B=l.config?.browserEngine?.installable===!0,{capabilities:N}=me(),j=xa(l.config,N),f=Be(we({bot:a,place:a.computer??"auto",seat:j,config:l.config,instances:l.instances})),k=ba(a),M=k.phase==="ready",L=k.connectedSlugs,J=Object.fromEntries(k.apps.map(w=>[w.slug,w.label])),F=l.webhooks.filter(w=>w.botId===a.id),v=a.alwaysAllow??[],C=w=>!t||t.includes(w);return e.jsxs("div",{className:"flex flex-col gap-4",children:[C("worksOn")&&e.jsxs("div",{className:"rounded-xl bg-card p-4","data-testid":"access-works-on",children:[r?e.jsx(Ai,{bot:a,patch:d,seat:j}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("access.worksOn",{name:a.name,short:f.short})}),e.jsx(K,{bot:a,kind:"owner"}),e.jsx("button",{type:"button",onClick:()=>{s({type:"toggleSettings",open:!1}),s({type:"toggleComputer",open:!0})},className:"mt-3 rounded-lg bg-control px-3 py-1.5 text-[13px] text-ink hover:bg-raised-hover",children:n("place.action.openComputerPanel")})]}),e.jsx(vi,{bot:a,patch:d})]}),C("folder")&&e.jsx(ci,{bot:a}),C("apps")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.apps.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:u?h?c?g==="partial"?n("botAccess.apps.partial"):g==="none"?n("botAccess.apps.none"):n("botAccess.apps.enabled"):n("botAccess.apps.disabled"):n("botAccess.apps.modelUnsupported"):n("botAccess.apps.connectInSettings")}),e.jsx(K,{bot:a,kind:"owner"})]}),e.jsx(W,{checked:c,"aria-label":n("botAccess.apps.allow"),disabled:!c&&(!u||!h),onClick:()=>d({composio:!c}),title:!c&&!u?n("botAccess.apps.connectFirst"):!c&&!h?n("botAccess.apps.modelUnsupportedShort"):void 0,className:"disabled:cursor-not-allowed"})]}),c&&M&&e.jsxs(e.Fragment,{children:[!r&&e.jsx(ki,{connectedSlugs:L,labels:J,scopes:a.connectorScopes,onChange:w=>d({connectorScopes:w})}),e.jsx(pi,{bot:a,patch:d,slugs:L})]}),c&&u&&e.jsxs("button",{type:"button",onClick:()=>{s({type:"toggleSettings",open:!1}),s({type:"togglePlugins",open:!0,surface:"apps"})},className:"mt-3 flex items-center gap-1.5 rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover",children:[e.jsx(Te,{size:14})," ",n("botAccess.connectApp")]})]}),C("phone")&&e.jsx(Yn,{bot:a,patch:d}),C("mcp")&&e.jsx(mi,{bot:a,patch:d}),C("tools")&&e.jsx(_n,{bot:a,engineKind:i.engine?.driverKind},a.id),C("browser")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.browser.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:m?b?y?a.computer==="off"?n("botAccess.browser.off"):S?n("botAccess.browser.enabled"):n("botAccess.browser.disabled"):n("botAccess.browser.modelUnsupported"):n("botAccess.browser.disabledInSettings"):o&&!B?n("botAccess.browser.windowsUnavailable"):ga(l.config)}),e.jsx(K,{bot:a,kind:"owner"})]}),e.jsx(W,{checked:S&&a.computer!=="off","aria-label":n("botAccess.browser.allow"),disabled:a.computer==="off"||!S&&(!m&&!B||!b||!y),onClick:()=>d({browser:!p}),title:a.computer==="off"?n("botAccess.browser.offShort"):void 0,className:"disabled:cursor-not-allowed"})]}),!r&&e.jsx(bi,{on:a.recordBrowserSteps===!0,browserOn:S&&a.computer!=="off",myChrome:l.config?.browserEngine?.myChrome===!0&&(l.config?.browserProfiles??[]).some(w=>w.id===a.browserProfile&&w.browser==="chrome"),onChange:w=>d({recordBrowserSteps:w})})]}),!r&&C("xResearch")&&e.jsx(xi,{bot:a,patch:d}),!r&&C("webhooks")&&e.jsx(ti,{bot:a}),!r&&C("webhooks")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.webhooks.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.webhooks.description")}),e.jsx(K,{bot:a,kind:"owner"}),F.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.webhooks.empty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:F.map(w=>e.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate text-[13px] text-ink",children:w.name}),e.jsx("span",{className:R("shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium",w.enabled?"bg-accent/15 text-accent-text":"bg-control text-ink-secondary"),children:w.enabled?n("botAccess.webhooks.active"):n("botAccess.webhooks.paused")}),e.jsx("span",{className:"shrink-0 text-[12px] tabular-nums text-ink-secondary",children:n("botAccess.webhooks.deliveries",{count:w.deliveryCount})})]},w.id))})]}),!r&&C("always")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("botAccess.always.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("botAccess.always.description")}),e.jsx(K,{bot:a,kind:"owner"}),v.length===0?e.jsx("div",{className:"mt-3 rounded-lg bg-inset px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.always.empty")}):e.jsx("div",{className:"mt-3 divide-y divide-hairline/40 overflow-hidden rounded-lg border border-hairline/40",children:v.map(w=>e.jsxs("div",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] text-ink",children:w}),e.jsx("button",{type:"button","aria-label":n("botAccess.always.remove",{entry:w}),onClick:()=>d({alwaysAllow:v.filter(I=>I!==w)}),className:"shrink-0 rounded-md px-2 py-1 text-[12px] text-ink-secondary hover:bg-danger/10 hover:text-danger",children:n("botAccess.always.removeButton")})]},w))})]})]})}function ki({connectedSlugs:a,labels:i={},scopes:t,onChange:r}){const l=t!==void 0,s=[...new Set([...a,...Object.keys(t?.apps??{})])].sort(),d=(h,u)=>{const c={...t?.apps};u?c[h]=u:delete c[h],r({apps:c})};return e.jsxs("div",{className:"mt-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsx("div",{className:"text-[13px] text-ink-secondary",children:l?n("botAccess.scopes.limited"):n("botAccess.scopes.unlimited")}),e.jsx(W,{checked:l,"aria-label":n("botAccess.scopes.limitLabel"),onClick:()=>r(l?null:{apps:{}})})]}),l&&e.jsxs("div",{className:"mt-2 flex flex-col divide-y divide-hairline/20 rounded-lg bg-inset",children:[!s.length&&e.jsx("div",{className:"px-3 py-2 text-[12px] text-ink-secondary",children:n("botAccess.scopes.empty")}),s.map(h=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-3 py-1.5",children:[e.jsxs("span",{className:"min-w-0 text-[13px] text-ink",children:[i[h]??h,!a.includes(h)&&e.jsx("span",{className:"ml-2 text-[11px] text-ink-secondary",children:n("botAccess.scopes.notConnected")})]}),e.jsx("div",{className:"flex shrink-0 gap-0.5 rounded-md bg-card p-0.5",role:"group","aria-label":n("botAccess.scopes.accessLabel",{app:h}),children:[[null,n("botAccess.scopes.off"),n("botAccess.scopes.offHint")],["read",n("botAccess.scopes.read"),n("botAccess.scopes.readHint")],["write",n("botAccess.scopes.readWrite"),n("botAccess.scopes.readWriteHint")]].map(([u,c,g])=>e.jsx("button",{type:"button",title:g,"aria-pressed":(t?.apps[h]??null)===u,onClick:()=>d(h,u),className:R("rounded px-2 py-0.5 text-[12px] font-medium",(t?.apps[h]??null)===u?"bg-raised text-ink":"text-ink-secondary hover:text-ink"),children:c},c))})]},h))]})]})}function lr({bot:a}){const{state:i,dispatch:t}=G(),{draft:r}=H(),l=i.instances.find(s=>s.instanceId===a.modelSelection.instanceId)?.capabilities?.modelVariants;return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx(wa,{bot:a,contained:!0,label:e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("model.section.default")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:r?n("model.section.starting"):n("model.section.threads")}),e.jsx(K,{bot:a,kind:"chief"})]})}),!r&&e.jsx(La,{bot:a,className:"mt-3"}),!r&&e.jsx("div",{className:"mt-3 text-[13px] text-ink-secondary",children:n("model.section.installationDefault")})]}),e.jsx(Da,{bot:a,className:"rounded-xl bg-card p-4",label:e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:l?n("model.simple.reasoning"):n("model.section.effort")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:l?r?n("model.section.startingReasoning"):n("model.section.threads"):n(a.modelSelection.effort?"model.section.effortHelp":"model.section.effortHelpDefault")}),e.jsx(K,{bot:a,kind:"chief"})]})}),!r&&e.jsx(Si,{bot:a,onChange:s=>t({type:"updateBot",botId:a.id,patch:{fallback:s}})}),!r&&i.config?.cacheKeepWarm&&e.jsx(Ci,{bot:a,workspaceOn:i.config.cacheKeepWarm.enabled,onChange:s=>t({type:"updateBot",botId:a.id,patch:{cacheKeepWarm:s}})})]})}function Ci({bot:a,workspaceOn:i,onChange:t}){const r=a.cacheKeepWarm===!0?"on":a.cacheKeepWarm===!1?"off":"follow";return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("label",{htmlFor:"bot-cache-keepwarm",className:"text-[15px] font-medium text-ink",children:n("bot.keepWarm.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("bot.keepWarm.help")}),e.jsxs(_,{className:"mt-3 max-w-full",id:"bot-cache-keepwarm",value:r,onChange:l=>t(l.target.value==="on"?!0:l.target.value==="off"?!1:null),children:[e.jsx("option",{value:"follow",children:n("bot.keepWarm.follow",{state:n(i?"bot.keepWarm.on":"bot.keepWarm.off")})}),e.jsx("option",{value:"on",children:n("bot.keepWarm.on")}),e.jsx("option",{value:"off",children:n("bot.keepWarm.off")})]})]})}function Si({bot:a,onChange:i}){const{state:t}=G(),r=a.fallback??[],l=(m,o,b)=>a.modelSelection.instanceId===m&&a.modelSelection.model===o||r.some((p,S)=>S!==b&&p.instanceId===m&&p.model===o),s=m=>m?.models.options.filter(o=>!o.orgBlocked&&!o.needsCliUpdate&&(m.snapshot.authenticated!==!1||o.custom))??[],d=m=>{const o=m.models.options.find(b=>b.id===m.models.default);return o?s(m).includes(o):m.snapshot.authenticated!==!1},h=m=>[...d(m)?[m.models.default]:[],...s(m).map(o=>o.id)].find(o=>o.trim()&&!l(m.instanceId,o)),u=t.instances.filter(m=>m.snapshot.state==="available"&&!!m.models.default.trim()&&h(m)!==void 0),c=m=>t.instances.find(o=>o.instanceId===m)?.displayName??m,g=(m,o)=>{const b=s(t.instances.find(p=>p.instanceId===m.instanceId)).filter(p=>!l(m.instanceId,p.id,o));return b.some(p=>p.id===m.model)?b:[{id:m.model,label:m.model},...b]},y=m=>{const o=u.find(p=>p.instanceId===m),b=o&&h(o);!b||r.length>=5||i([...r,{instanceId:m,model:b}])};return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("model.fallback.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("model.fallback.uses")}),r.length>0&&e.jsx("ol",{className:"mt-3 flex flex-col gap-1",children:r.map((m,o)=>e.jsxs("li",{className:"flex items-center gap-2 rounded-lg bg-inset px-3 py-1.5 text-[13px]",children:[e.jsxs("span",{className:"w-4 shrink-0 tabular-nums text-ink-secondary",children:[o+1,"."]}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-ink",children:c(m.instanceId)}),e.jsx(_,{size:"sm",className:"max-w-[45%] shrink-0",value:m.model,"aria-label":n("model.fallback.model",{name:c(m.instanceId)}),onChange:b=>i(r.map((p,S)=>S===o?{...p,model:b.target.value}:p)),children:g(m,o).map(b=>e.jsx("option",{value:b.id,children:b.label},b.id))}),e.jsx("button",{type:"button",onClick:()=>i(r.filter((b,p)=>p!==o)),"aria-label":n("model.fallback.remove",{name:c(m.instanceId)}),className:"shrink-0 rounded p-0.5 text-ink-secondary hover:text-ink",children:e.jsx(Se,{size:13})})]},o))}),r.length<5&&e.jsx("div",{className:R("flex items-center gap-2",r.length>0?"mt-2":"mt-3"),children:e.jsxs(_,{size:"sm",value:"",onChange:m=>y(m.target.value),"aria-label":n("model.fallback.add"),disabled:u.length===0,children:[e.jsx("option",{value:"",children:u.length===0?n("model.fallback.none"):n("model.fallback.addOption")}),u.map(m=>e.jsx("option",{value:m.instanceId,children:m.instanceId===a.modelSelection.instanceId?`${m.displayName} · ${n("botPanel.backups.sameAccount")}`:m.displayName},m.instanceId))]})})]})}function Ni({name:a,ownTeam:i,teams:t,allowed:r,onSave:l}){const[s,d]=x.useState(r),h=[...new Set([...t,...r])].filter(c=>c!==i).sort(),u=JSON.stringify([...s].sort())!==JSON.stringify([...r].sort());return e.jsxs("details",{className:"mt-3 border-t border-hairline/40 pt-3",children:[e.jsx("summary",{className:"cursor-pointer text-[13px] font-medium text-ink",children:n("botAccess.teams.title")}),e.jsx("p",{className:"mt-2 text-[13px] leading-relaxed text-ink-secondary",children:n("botAccess.teams.description",{name:a})}),e.jsxs("fieldset",{className:"mt-3 flex max-h-52 flex-col gap-2 overflow-y-auto",children:[e.jsx("legend",{className:"sr-only",children:n("botAccess.teams.legend",{name:a})}),h.map(c=>e.jsxs("label",{className:"flex items-center gap-2 text-[13px] text-ink",children:[e.jsx("input",{type:"checkbox",className:"accent-accent",checked:s.includes(c),onChange:g=>d(y=>g.target.checked?[...y,c]:y.filter(m=>m!==c))}),c==="General"||!c?n("botAccess.teams.general"):c]},c)),!h.length&&e.jsx("p",{className:"text-[13px] text-ink-secondary",children:n("botAccess.teams.empty")})]}),e.jsx("button",{type:"button",disabled:!u,onClick:()=>l(s),className:"mt-3 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-medium text-white disabled:opacity-40",children:n("botAccess.teams.save")})]})}function sr({bot:a,derived:i,parts:t}){const{patch:r,engine:l,canCoordinate:s,approvalMode:d,trustedModesAvailable:h,sectionName:u,currentChief:c}=i,g=Ra(),{state:y,dispatch:m}=G(),o=Le(),{draft:b}=H(),p=u==="General"?n("botAccess.teams.general"):u,[S,B]=x.useState(null),[N,j]=x.useState(null),f=L=>!t||t.includes(L),k=()=>m({type:"updateBot",botId:a.id,patch:{approvalMode:"full",applyToAllThreads:!0}}),M=L=>{if(L!==d){if(L==="full"){k();return}if(L==="auto"&&a.computer==="local"){B(a.id);return}r({approvalMode:L})}};return e.jsxs("div",{className:"flex flex-col gap-4",children:[f("chief")&&!g&&e.jsxs("div",{className:R("rounded-xl border p-4",a.chiefOfStaff?"border-accent/40 bg-accent/10":"border-hairline/40 bg-card"),children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:R("flex size-8 shrink-0 items-center justify-center rounded-lg",a.chiefOfStaff?"bg-accent text-white":"bg-control text-ink-secondary"),children:e.jsx(Ea,{size:17})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("permissions.chief.title")}),e.jsx("div",{className:"text-[12px] text-ink-secondary",children:n("permissions.chief.oneFor",{section:p})})]}),e.jsx(W,{checked:!!a.chiefOfStaff,"aria-label":n("permissions.chief.title"),disabled:!a.chiefOfStaff&&!s,onClick:()=>r({chiefOfStaff:!a.chiefOfStaff}),title:!a.chiefOfStaff&&!s?n("permissions.cannotCoordinate"):void 0,className:"disabled:cursor-not-allowed"})]}),e.jsx("div",{className:"mt-3 text-[13px] leading-relaxed text-ink-secondary",children:a.chiefOfStaff&&!s?n("permissions.chief.unsupportedCurrent"):a.chiefOfStaff?n("permissions.chief.active",{section:p}):s?c?n("permissions.chief.replace",{section:p,current:c.name}):n("permissions.chief.make",{section:p}):n("permissions.chief.unsupported")}),e.jsx(K,{bot:a,kind:"chief"}),a.chiefOfStaff&&e.jsx(Ni,{name:a.name,ownTeam:a.section?.trim()||"",teams:["",...y.sections??[],...[...y.bots,...y.groups].map(L=>L.section?.trim()||"")],allowed:a.managedSections??[],onSave:L=>r({managedSections:L,acknowledgePeerScope:!0})},a.id+JSON.stringify(a.managedSections??[])),a.chiefOfStaff&&e.jsx(K,{bot:a,kind:"owner"})]}),f("approval")&&e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("permissions.approval.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:b?n("permissions.approval.draftHanded"):n("permissions.approval.helpHanded")}),e.jsx(K,{bot:a,kind:"owner"}),e.jsx("div",{className:"mt-3",children:e.jsx(Ta,{approvalMode:a.approvalMode,autoApprove:a.autoApprove,providerName:l?.displayName??a.name,driverKind:l?.driverKind??"",onSelect:M,menuDirection:"down",wide:!0,busy:!!a.busy,trustedModesAvailable:h,onManageCommandAllowlist:!b&&o===!0?()=>j({botId:a.id,botName:a.name}):void 0})}),!b&&d==="full"&&e.jsx("button",{type:"button",className:"mt-3 text-[13px] text-accent hover:underline disabled:opacity-40",onClick:k,children:n("permissions.approval.applyFull")}),!b&&o===!0&&e.jsx("button",{type:"button",className:"mt-3 block text-[13px] text-accent hover:underline",onClick:()=>j({botId:a.id,botName:a.name}),children:n("commandAllowlist.manage")})]}),N&&e.jsx(Ja,{...N,onClose:()=>j(null)},`command-allowlist:${N.botId}`),!b&&f("outbound")&&e.jsx(Mi,{bot:a,onChange:L=>r({outbound:L})}),e.jsx(Ga,{open:S!==null,onCancel:()=>B(null),onConfirm:()=>{const L=S;B(null),L&&m({type:"updateBot",botId:L,patch:{approvalMode:"auto",acknowledgeLocalAuto:!0}})}})]})}function Mi({bot:a,onChange:i}){const t=a.outbound??In;return e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("permissions.outbound.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("permissions.outbound.help")}),e.jsx("div",{className:"mt-3 flex gap-1 rounded-lg bg-inset p-0.5",children:[["ask",n("permissions.outbound.ask"),n("permissions.outbound.askHint")],["allow",n("permissions.outbound.allow"),n("permissions.outbound.allowHint")]].map(([r,l,s])=>e.jsx("button",{title:s,type:"button","aria-pressed":t.policy===r,onClick:()=>{r!==t.policy&&i({policy:r})},className:R("flex-1 rounded-md px-2.5 py-1.5 text-[13px] font-medium",t.policy===r?"bg-raised text-ink":"text-ink-secondary hover:text-ink"),children:l},r))})]})}function or({bot:a,derived:i}){const{patch:t}=i,{draft:r}=H();return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(Ka,{bot:a,onPatch:t}),e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-xl bg-card p-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("voice.notifications.title")}),e.jsx("div",{className:"mt-0.5 text-[13px] text-ink-secondary",children:n("voice.notifications.help")})]}),e.jsx(W,{checked:a.notifications,"aria-label":n("voice.notifications.label"),onClick:()=>{const l=!a.notifications;l&&!r&&Ha(),t({notifications:l})}})]})]})}function ce(a){return!a||a==="everyone"?{mode:"everyone",people:""}:a==="admins"?{mode:"admins",people:""}:{mode:"people",people:a.people.join(`
|
|
22
|
+
`)}}function ji(a,i){if(a!=="people")return{ok:!0,visibility:a};const t=[...new Set(i.split(/[\s,;]+/).map(r=>r.trim().toLowerCase()).filter(Boolean))];return t.length?{ok:!0,visibility:{people:t}}:{ok:!1}}function de(a){return!a||a==="everyone"||a==="admins"?a??"everyone":JSON.stringify([...new Set(a.people.map(i=>i.trim().toLowerCase()))].sort())}function Bi(a,i,t){const r=de(a.visibility);return i.filter(l=>!l.dm&&l.memberIds.includes(a.id)&&(l.audienceFloor!==void 0&&de(l.audienceFloor)!==r||l.memberIds.some(s=>{const d=t.find(h=>h.id===s);return d!==void 0&&d.id!==a.id&&de(d.visibility)!==r}))).map(l=>({id:l.id,name:l.name}))}const Ie=[{mode:"everyone",key:"botSettings.visibility.everyone"},{mode:"admins",key:"botSettings.visibility.admins"},{mode:"people",key:"botSettings.visibility.people"}];function dr(){const{state:a}=G(),i=Le(),t=Fa();return!window.ogb&&i===!0&&!!a.config&&!t}function cr(a){const{mode:i}=ce(a);return n(Ie.find(t=>t.mode===i).key)}function mr({bot:a}){const{state:i}=G(),t=Bi(a,i.groups,i.bots),r=ce(a.visibility),[l,s]=x.useState(r.mode),[d,h]=x.useState(r.people),[u,c]=x.useState(!1),[g,y]=x.useState(null),[m,o]=x.useState(null),b=l!==r.mode||l==="people"&&d.trim()!==r.people.trim(),p=JSON.stringify(a.visibility??"everyone");x.useEffect(()=>{const N=ce(JSON.parse(p));s(N.mode),h(N.people)},[a.id,p]);const S=async N=>{c(!0),o(null);try{await T(`/api/groups/${N}`,{method:"PATCH",body:JSON.stringify({resetAudience:!0})})}catch(j){o(j instanceof Error?j.message:String(j))}finally{c(!1)}},B=async()=>{const N=ji(l,d);if(!N.ok){o(n("botSettings.visibility.needPeople"));return}c(!0),o(null),y(null);try{await T(`/api/bots/${a.id}`,{method:"PATCH",body:JSON.stringify({visibility:N.visibility})}),y("saved")}catch(j){o(j instanceof Error?j.message:String(j))}finally{c(!1)}};return e.jsxs("div",{className:"flex flex-col gap-3 rounded-xl border border-hairline/40 bg-card p-4","data-bot-visibility":!0,children:[e.jsx("p",{className:"text-[13px] leading-relaxed text-ink-secondary",children:n("botSettings.visibility.subtitle")}),e.jsx("div",{role:"radiogroup","aria-label":n("botSettings.visibility.title"),className:"flex flex-col gap-1.5",children:Ie.map(N=>e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 text-[13px] text-ink",children:[e.jsx("input",{type:"radio",name:`visibility-${a.id}`,value:N.mode,checked:l===N.mode,disabled:u,onChange:()=>{s(N.mode),y(null),o(null)}}),n(N.key)]},N.mode))}),l==="people"&&e.jsxs("label",{className:"flex flex-col gap-1 text-[12px] text-ink-secondary",children:[n("botSettings.visibility.peopleLabel"),e.jsx("textarea",{value:d,onChange:N=>{h(N.target.value),y(null)},placeholder:n("botSettings.visibility.peoplePlaceholder"),rows:4,disabled:u,className:"rounded-lg border border-hairline/40 bg-inset px-3 py-2 font-mono text-[13px] text-ink placeholder:text-ink-secondary focus:outline-none"})]}),e.jsx("p",{className:"text-[12px] leading-relaxed text-ink-secondary",children:n("botSettings.visibility.rooms")}),t.length>0&&e.jsxs("div",{className:"flex flex-col gap-2 rounded-lg border border-warning/25 bg-warning/5 px-3 py-2 text-[12px] leading-relaxed text-ink-secondary","data-visibility-mixed-rooms":!0,children:[e.jsx("p",{children:n("botSettings.visibility.mixedRooms",{rooms:t.map(N=>JSON.stringify(N.name)).join(", ")})}),e.jsx("div",{className:"flex flex-wrap gap-2",children:t.map(N=>e.jsx("button",{type:"button",disabled:u,onClick:()=>{S(N.id)},className:"rounded-md bg-control px-2 py-1 text-[12px] text-ink hover:bg-control/70 disabled:opacity-50",children:n("botSettings.visibility.resetRoom",{room:JSON.stringify(N.name)})},N.id))})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("button",{type:"button",onClick:()=>{B()},disabled:u||!b,className:R("flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-semibold text-white hover:brightness-110 disabled:opacity-50"),children:[u&&e.jsx(Re,{size:13,className:"animate-spin"}),u?n("botSettings.visibility.saving"):n("botSettings.visibility.save")]}),g==="saved"&&!b&&e.jsxs("span",{role:"status",className:"flex items-center gap-1 text-[12px] text-success",children:[e.jsx(Me,{size:13}),n("botSettings.visibility.saved")]})]}),m&&e.jsx("p",{role:"alert",className:"text-[12px] text-danger",children:m})]})}export{tr as A,qi as B,dr as C,vn as D,jn as E,Nn as F,cr as G,ti as H,Ki as I,di as J,Fn as K,mr as L,lr as M,Ln as N,Dn as O,sr as P,He as Q,Ae as R,Hi as S,or as V,Fi as a,Pn as b,zi as c,Zi as d,Ii as e,Oi as f,er as g,Q as h,O as i,Vi as j,rr as k,nr as l,_i as m,Yi as n,Xi as o,ir as p,ar as q,$i as r,Wi as s,Qi as t,Pi as u,ji as v,xn as w,Hn as x,ae as y,Ui as z};
|