bazilion 0.14.2 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1752 -825
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +16624 -9803
- package/dist/daemon.js.map +1 -1
- package/dist/migrations/0001_init.sql +218 -3
- package/dist/web/client/assets/ChatPane-CQZzxOir.js +76 -0
- package/dist/web/client/assets/{ConfirmDialog-_bmG-wVG.js → ConfirmDialog-MicTTwdy.js} +1 -1
- package/dist/web/client/assets/{FieldRow-Do1cBkRc.js → FieldRow-DJ2Gx4Du.js} +1 -1
- package/dist/web/client/assets/{ProductionTeamPolicyEditor-XP-QJul4.js → ProductionTeamPolicyEditor-DqUnN_ce.js} +1 -1
- package/dist/web/client/assets/{ProfileCommunicationEditor-CwdFPdpk.js → ProfileCommunicationEditor-DArXub0b.js} +1 -1
- package/dist/web/client/assets/ResultCard-Cps_lXVN.js +1 -0
- package/dist/web/client/assets/ResultSourceConversation-CtzJ8QA-.js +1 -0
- package/dist/web/client/assets/TeamTabs-DbIk5vvT.js +1 -0
- package/dist/web/client/assets/{TemplatesTabs-D4WHvs6b.js → TemplatesTabs-CatJIjGi.js} +1 -1
- package/dist/web/client/assets/{UnsavedChangesGuard-B1aLqiK5.js → UnsavedChangesGuard-BCsLw-mU.js} +1 -1
- package/dist/web/client/assets/_id-B5Ov7cdO.js +1 -0
- package/dist/web/client/assets/{_id-BH3v_vI_.js → _id-BEDmIXVf.js} +1 -1
- package/dist/web/client/assets/_id-BFM_tn_s.js +1 -0
- package/dist/web/client/assets/_id-CrnEVcw8.js +1 -0
- package/dist/web/client/assets/{_id-3w4PFfma.js → _id-DxopIW-y.js} +1 -1
- package/dist/web/client/assets/{activity-A_HrG1Tv.js → activity-CrG8Bg60.js} +1 -1
- package/dist/web/client/assets/{agents-C8OVKq3N.js → agents-CMPOFcs-.js} +1 -1
- package/dist/web/client/assets/{agents-BeeFCt2c.js → agents-O4soKZND.js} +1 -1
- package/dist/web/client/assets/{approvals-BIdZ9BSn.js → approvals-CwDu_lrA.js} +1 -1
- package/dist/web/client/assets/{attention-B9bUrxiU.js → attention-BY8MMuM_.js} +1 -1
- package/dist/web/client/assets/chevron-right-Cf6vKeLq.js +1 -0
- package/dist/web/client/assets/{config-By86S7k-.js → config-Cn4iBJFz.js} +1 -1
- package/dist/web/client/assets/{inbox-DlXQCJLe.js → inbox-CWXql0K3.js} +1 -1
- package/dist/web/client/assets/{index-CLdmsmiN.js → index-Bq2zrG2_.js} +2 -2
- package/dist/web/client/assets/{learning-BqZIw2nA.js → learning-DAm4dyyc.js} +1 -1
- package/dist/web/client/assets/login-BsABI8Ux.js +1 -0
- package/dist/web/client/assets/{mcp-DKSY2yVa.js → mcp-loLB0wuh.js} +1 -1
- package/dist/web/client/assets/{members-9GuOiq6J.js → members-BJ0ikkTl.js} +1 -1
- package/dist/web/client/assets/{memory-DiGMI6FC.js → memory-Drn9Gv53.js} +1 -1
- package/dist/web/client/assets/{policy-TBGQffw5.js → policy-pQadZyk0.js} +1 -1
- package/dist/web/client/assets/results-9exU6f7m.js +1 -0
- package/dist/web/client/assets/routes-jw1PuqiR.js +1 -0
- package/dist/web/client/assets/{services-1Z398CES.js → services-BLso1BhA.js} +1 -1
- package/dist/web/client/assets/{skills-BP2gciFt.js → skills-BodqX3OI.js} +1 -1
- package/dist/web/client/assets/styles-d1yjBpud.css +2 -0
- package/dist/web/client/assets/{teams-DBIivGT7.js → teams-ByQedXZi.js} +1 -1
- package/dist/web/client/assets/{teams-tNoMDJ_M.js → teams-SYsF1bOR.js} +1 -1
- package/dist/web/client/assets/telegram-DC9PLFbB.js +1 -0
- package/dist/web/client/assets/{tokens-eDWCGQQ2.js → tokens-DGy8Ijpo.js} +1 -1
- package/dist/web/client/assets/{triggers-DZME3IcK.js → triggers-BXpVmHDG.js} +1 -1
- package/dist/web/client/assets/{welcome-B49sh_uf.js → welcome-BKsnsCxJ.js} +1 -1
- package/dist/web/client/assets/wire-constants-CBD-lTaa.js +1 -0
- package/dist/web/client/assets/{x-CHc7_-TH.js → x-BK4xNCzS.js} +1 -1
- package/dist/web/server/assets/ChatPane-CS5oI7ef.js +2666 -0
- package/dist/web/server/assets/ResultCard-B3zD9N0t.js +143 -0
- package/dist/web/server/assets/ResultSourceConversation-BpVWBRYq.js +64 -0
- package/dist/web/server/assets/{TeamTabs-Co3n2exj.js → TeamTabs-TCKjCvMA.js} +4 -0
- package/dist/web/server/assets/{_id-sNu5aXZt.js → _id-5pgKoid8.js} +2 -1
- package/dist/web/server/assets/_id-BDEpe6k0.js +6 -0
- package/dist/web/server/assets/{_id-DxCnEFpm.js → _id-BG2nkGxa.js} +3 -4
- package/dist/web/server/assets/{_id-BqWTB8Wl.js → _id-B_-CDHOi2.js} +1 -1
- package/dist/web/server/assets/{_id-BeKhPKw3.js → _id-BnqodC1c2.js} +7 -3
- package/dist/web/server/assets/{_id-DvlDkk04.js → _id-CeyHEsCZ.js} +1 -1
- package/dist/web/server/assets/{_id-BYKpT2Tu.js → _id-DFHB9JFQ.js} +1 -1
- package/dist/web/server/assets/{_id-DYU6uIBx.js → _id-DOnInzLb.js} +1 -1
- package/dist/web/server/assets/{_id-HMy7jM3P.js → _id-DrB9uR1b.js} +1 -1
- package/dist/web/server/assets/{_id-BAA9KJBU.js → _id-DtIYuJJX.js} +1 -1
- package/dist/web/server/assets/_id-DwZXhLlL.js +779 -0
- package/dist/web/server/assets/_id-wyjrf0JG.js +17 -0
- package/dist/web/server/assets/{_tanstack-start-manifest_v-Duhf0z7H.js → _tanstack-start-manifest_v-D7gKv6m6.js} +97 -70
- package/dist/web/server/assets/{activity-9VP6QDTH.js → activity-0VUkStOu.js} +1 -1
- package/dist/web/server/assets/{activity-BWv1goK6.js → activity-5fWKPDxj.js} +2 -2
- package/dist/web/server/assets/{activity-LjpblbDL.js → activity-C88qrNqv.js} +1 -1
- package/dist/web/server/assets/{agents-DjyQk94u.js → agents-C86K6HvS.js} +1 -1
- package/dist/web/server/assets/{agents-BJAv919x.js → agents-CSXLaM2W.js} +1 -1
- package/dist/web/server/assets/{approvals-BYi84gwl.js → approvals-C3MysI6l.js} +1 -1
- package/dist/web/server/assets/{approvals-7JOoBchn.js → approvals-DTdrltyk.js} +1 -1
- package/dist/web/server/assets/{approvals-Bz123liE.js → approvals-DXoN-T57.js} +15 -1
- package/dist/web/server/assets/{attention-UhqPK_Ro.js → attention-DLeLCKah.js} +1 -1
- package/dist/web/server/assets/{auth-7BHTH-KS.js → auth-CDZp9aEk.js} +1 -1
- package/dist/web/server/assets/{config-BMiajTZP.js → config-BVTHvljR.js} +1 -1
- package/dist/web/server/assets/{daemon-client-CI5NHwNC.js → daemon-client-xWyYKAcx.js} +59 -0
- package/dist/web/server/assets/{inbox-Dv55rGYq.js → inbox-PQTrjtOw.js} +1 -1
- package/dist/web/server/assets/{learning-C2upa1CE.js → learning-K0cmDsZR.js} +1 -1
- package/dist/web/server/assets/{login-BNj3U6ok.js → login-B_-9L8TU.js} +7 -2
- package/dist/web/server/assets/{login-Be8eP4Jp.js → login-rDox7PRD.js} +5 -2
- package/dist/web/server/assets/{mcp-BvnvlVFd.js → mcp-Rtraochg.js} +1 -1
- package/dist/web/server/assets/{members-DiYtr-zm.js → members-CD3GiTfF.js} +1 -1
- package/dist/web/server/assets/{members-DHYTVgwb.js → members-cc5SeEaW.js} +2 -2
- package/dist/web/server/assets/{members-BP3UTqu1.js → members-grAKFWgv.js} +1 -1
- package/dist/web/server/assets/{memory-CkXUgf5s.js → memory-C5i_GxlY.js} +2 -2
- package/dist/web/server/assets/{memory-DTFEmfF3.js → memory-CVqnyUaM.js} +1 -1
- package/dist/web/server/assets/{memory-BqV-Afy1.js → memory-egFpBD1g.js} +1 -1
- package/dist/web/server/assets/{policy-Bvvav8fh.js → policy-Dgjb0_gK.js} +2 -2
- package/dist/web/server/assets/{policy-BddK4xom.js → policy-bLKwvnja.js} +1 -1
- package/dist/web/server/assets/{policy-18fdTFO4.js → policy-ooSBgiDS.js} +1 -1
- package/dist/web/server/assets/results-CfNsFncJ.js +173 -0
- package/dist/web/server/assets/results-DXdYtHaq.js +12 -0
- package/dist/web/server/assets/results-N-kP4iFT.js +12 -0
- package/dist/web/server/assets/{router-CY_pCgP1.js → router-B6g_s7W3.js} +60 -43
- package/dist/web/server/assets/{routes-COtkyZG1.js → routes-BqSaZvlu.js} +3 -3
- package/dist/web/server/assets/{routes-BgHisAxH.js → routes-Dsh8F_7i.js} +2 -2
- package/dist/web/server/assets/{routes-DAU2g7Uz.js → routes-pcRy_Sf8.js} +1 -1
- package/dist/web/server/assets/{services-DozuJtzX.js → services-DlZA8fRL.js} +1 -1
- package/dist/web/server/assets/{skills-DfGSJTCB.js → skills-i2duvgW-.js} +1 -1
- package/dist/web/server/assets/{teams-be05ci17.js → teams-6RYIj1Xm.js} +1 -1
- package/dist/web/server/assets/{teams-DPnAX4wD.js → teams-B1AI3NfN.js} +1 -1
- package/dist/web/server/assets/{telegram-1AWL6lFw.js → telegram-C4q0YTVn.js} +1 -1
- package/dist/web/server/assets/{telegram-Dj4Wwhd6.js → telegram-CoNeOgqZ.js} +465 -1
- package/dist/web/server/assets/{telegram-DbOFpTFm.js → telegram-Zd1rIZxg.js} +1 -1
- package/dist/web/server/assets/{tokens-DjM8GsgS.js → tokens-RFquA2Bx.js} +1 -1
- package/dist/web/server/assets/{triggers-Nezfw-Bd.js → triggers-DVD-iE-N.js} +1 -1
- package/dist/web/server/server.js +31 -27
- package/dist/worker.js +1765 -710
- package/dist/worker.js.map +1 -1
- package/package.json +3 -3
- package/dist/web/client/assets/TeamTabs-DIRiKcqx.js +0 -1
- package/dist/web/client/assets/_id-Cx7o4Zmf.js +0 -1
- package/dist/web/client/assets/_id-DIiVVxBl.js +0 -1
- package/dist/web/client/assets/chevron-right-VWrk_dTX.js +0 -1
- package/dist/web/client/assets/login-CCMPXiny.js +0 -1
- package/dist/web/client/assets/routes-g3yUOhCb.js +0 -1
- package/dist/web/client/assets/styles-B5vcgXln.css +0 -2
- package/dist/web/client/assets/telegram-CJG_DFdI.js +0 -1
- package/dist/web/client/assets/wire-constants-zZ7Wjb9C.js +0 -74
- package/dist/web/server/assets/ChatPane-CgSe7tsy.js +0 -1429
- package/dist/web/server/assets/_id-ndxFHx0t.js +0 -381
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bazilion",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Multi-agent runtime CLI — spawn LLM agents, manage profiles/teams/skills, and run the local daemon.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@types/adm-zip": "^0.5.8",
|
|
70
70
|
"@types/qrcode-terminal": "^0.12.2",
|
|
71
|
-
"@bazilion/
|
|
72
|
-
"@bazilion/
|
|
71
|
+
"@bazilion/api-types": "0.16.0",
|
|
72
|
+
"@bazilion/client": "0.16.0"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|
|
75
75
|
"build": "pnpm --filter @bazilion/web build && tsup"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{a as t}from"./preload-helper-bztXdkDj.js";import{X as n}from"./index-CLdmsmiN.js";import{n as r,t as i}from"./SectionTabs-4kCQXuFY.js";var a=e(),o=[{suffix:``,label:`Context`,exact:!0},{suffix:`/members`,label:`Members`},{suffix:`/policy`,label:`Policy`},{suffix:`/memory`,label:`Memory`},{suffix:`/activity`,label:`Activity`}];function s({teamId:e}){let s=n({select:e=>e.location.pathname}),c=`/teams/${encodeURIComponent(e)}`;return(0,a.jsx)(`nav`,{"aria-label":`Team sections`,className:i,children:o.map(e=>{let n=`${c}${e.suffix}`,i=`exact`in e&&e.exact?s===c||s===`${c}/`:s.startsWith(n);return(0,a.jsx)(t,{to:n,"aria-current":i?`page`:void 0,className:r(i),children:e.label},e.label)})})}export{s as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{t as n}from"./react-3W8R1pOO.js";import{d as r}from"./preload-helper-bztXdkDj.js";import{t as i}from"./UnsavedChangesGuard-B1aLqiK5.js";import{f as a}from"./index-CLdmsmiN.js";import{a as o,i as s,r as c}from"./Page-NV96O47A.js";import{t as l}from"./Button-ByiV6fpd.js";import{t as u}from"./TeamTabs-DIRiKcqx.js";var d=e(n()),f=t();function p(){let{team:e,members:t,profileGroups:n}=a.useLoaderData(),p=r(),[g,_]=(0,d.useState)(e.userMd),[v,y]=(0,d.useState)(!1),[b,x]=(0,d.useState)(null),[S,C]=(0,d.useState)(null),[w,T]=(0,d.useState)(!1),E=g!==e.userMd||w;async function D(){y(!0),x(null);try{let t=await fetch(`/api/teams/${encodeURIComponent(e.id)}/user-md`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({userMd:g})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`${t.status} ${t.statusText}`)}C(Date.now()),await p.invalidate()}catch(e){x(e.message)}finally{y(!1)}}return(0,f.jsxs)(c,{children:[(0,f.jsx)(i,{when:E,subject:`Team context`}),(0,f.jsxs)(`h1`,{className:`font-serif text-3xl text-foreground`,children:[e.name,` `,(0,f.jsxs)(`span`,{className:`text-muted-foreground text-base`,children:[`(`,e.id,`)`]})]}),(0,f.jsxs)(`p`,{className:`text-muted-foreground text-sm mb-6 mt-1`,children:[(0,f.jsx)(`code`,{className:`font-mono`,children:e.path}),` · `,t.length,` `,`member`,t.length===1?``:`s`,` ·`,` `,(0,f.jsx)(`a`,{href:`/teams/${encodeURIComponent(e.id)}/memory`,className:`text-primary underline`,children:`shared memory →`})]}),(0,f.jsx)(u,{teamId:e.id}),(0,f.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-6`,children:[(0,f.jsx)(`h3`,{className:`font-serif text-xl mb-1`,children:`USER.md`}),(0,f.jsx)(`p`,{className:`text-muted-foreground text-sm mb-3`,children:`Read-only context about the human, injected into every member agent's system prompt. 12 KB cap. Agents cannot edit this file — only you can.`}),(0,f.jsx)(`label`,{htmlFor:`team-user-context`,className:`sr-only`,children:`USER.md Team context`}),(0,f.jsx)(`textarea`,{id:`team-user-context`,value:g,onChange:e=>_(e.target.value),rows:16,className:`w-full rounded-md border bg-background px-3 py-2 font-mono text-sm outline-none focus:ring-2 focus:ring-ring/30`,placeholder:`What the agent should know about you in this team context…`}),(0,f.jsxs)(`div`,{className:`flex items-center gap-3 mt-3`,children:[(0,f.jsx)(l,{variant:`primary`,onClick:D,disabled:v||g===e.userMd,children:v?`saving…`:`save`}),(0,f.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[g.length,` / 12000 chars`]}),S&&(0,f.jsx)(`span`,{role:`status`,className:`text-xs text-success`,children:`Saved`}),b&&(0,f.jsx)(`span`,{role:`alert`,className:`text-xs text-danger`,children:b})]})]}),(0,f.jsx)(m,{team:e,sampleAgent:t[0]?.name??`researcher`,onSaved:()=>p.invalidate(),onDirtyChange:T}),t.length===0&&(0,f.jsx)(h,{teamId:e.id,profileGroups:n,onSpawned:()=>p.invalidate()}),(0,f.jsx)(s,{title:`Roster`,description:`Live Team membership has one canonical management view.`,actions:(0,f.jsxs)(o,{variant:t.length>0?`success`:`neutral`,children:[t.length,` member`,t.length===1?``:`s`]}),children:(0,f.jsx)(`a`,{href:`/teams/${encodeURIComponent(e.id)}/members`,className:`ghost-btn`,children:`Manage Team members`})})]})}function m({team:e,sampleAgent:t,onSaved:n,onDirtyChange:r}){let[i,a]=(0,d.useState)(e.telegramTopicNameFormat??``),[o,s]=(0,d.useState)(!1),[c,u]=(0,d.useState)(null),[p,m]=(0,d.useState)(null),h=i.trim(),g=h?h.replaceAll(`{agent.name}`,t).replaceAll(`{team.name}`,e.name).replaceAll(`{team.slug}`,e.id):e.id==="default"?t:`${e.id} › ${t}`,_=(e.telegramTopicNameFormat??``)!==i;(0,d.useEffect)(()=>(r(_),()=>r(!1)),[_,r]);async function v(t){s(!0),u(null);try{let r=await fetch(`/api/teams/${encodeURIComponent(e.id)}/topic-format`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({format:t?null:i})});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`${r.status} ${r.statusText}`)}t&&a(``),m(Date.now()),n()}catch(e){u(e.message)}finally{s(!1)}}return(0,f.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-6`,children:[(0,f.jsx)(`h3`,{className:`font-serif text-xl mb-1`,children:`Telegram topic names`}),(0,f.jsxs)(`p`,{className:`text-muted-foreground text-sm mb-3`,children:[`Template for this team's Telegram forum-topic titles. Leave empty for built-in naming. Tokens: `,(0,f.jsx)(`code`,{className:`font-mono`,children:`{agent.name}`}),` `,(0,f.jsx)(`code`,{className:`font-mono`,children:`{team.name}`}),` `,(0,f.jsx)(`code`,{className:`font-mono`,children:`{team.slug}`}),` — must include`,` `,(0,f.jsx)(`code`,{className:`font-mono`,children:`{agent.name}`}),`. Saving renames existing topics that you haven't manually renamed in Telegram.`]}),(0,f.jsx)(`label`,{htmlFor:`team-telegram-topic-format`,className:`sr-only`,children:`Telegram topic name format`}),(0,f.jsx)(`input`,{id:`team-telegram-topic-format`,value:i,onChange:e=>a(e.target.value),placeholder:`{team.name} / {agent.name}`,className:`w-full rounded-md border bg-background px-3 py-2 font-mono text-sm outline-none focus:ring-2 focus:ring-ring/30`}),(0,f.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:[`preview: `,(0,f.jsx)(`span`,{className:`font-mono text-foreground`,children:g})]}),(0,f.jsxs)(`div`,{className:`flex items-center gap-3 mt-3`,children:[(0,f.jsx)(l,{variant:`primary`,onClick:()=>v(!1),disabled:o||!_||h.length===0,children:o?`saving…`:`save`}),e.telegramTopicNameFormat&&(0,f.jsx)(l,{variant:`ghost`,onClick:()=>v(!0),disabled:o,children:`clear`}),p&&(0,f.jsx)(`span`,{role:`status`,className:`text-xs text-success`,children:`Saved`}),c&&(0,f.jsx)(`span`,{role:`alert`,className:`text-xs text-danger`,children:c})]})]})}function h({teamId:e,profileGroups:t,onSpawned:n}){let r=t.filter(e=>e.slotCount>0&&!e.deletedAt),[i,a]=(0,d.useState)(r[0]?.id??``),[o,s]=(0,d.useState)(!1),[c,u]=(0,d.useState)(null);async function p(){if(i){s(!0),u(null);try{let t=r.find(e=>e.id===i);if(!t)throw Error(`Team template is unavailable.`);let a=await fetch(`/api/teams/${encodeURIComponent(e)}/policy`);if(!a.ok)throw Error(`The current Team policy is unavailable.`);let o=await a.json(),s=await fetch(`/api/team-templates/${encodeURIComponent(i)}/spawn`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({templateExpectedRevision:t.currentRevision,teamId:e,teamExpectedRevision:o.teamPolicy.revision,mode:`initialize`})});if(!s.ok){let e=await s.json().catch(()=>({}));throw Error(e.error??`${s.status} ${s.statusText}`)}n()}catch(e){u(e.message)}finally{s(!1)}}}return(0,f.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-6`,children:[(0,f.jsx)(`h3`,{className:`font-serif text-xl mb-1`,children:`spawn a team into this team`}),(0,f.jsx)(`p`,{className:`text-muted-foreground text-sm mb-3`,children:`This Team is empty. Pick a canonical Team template to initialize its roster and policy at the current reviewed Team and Team revisions.`}),r.length===0?(0,f.jsxs)(`p`,{className:`text-muted-foreground text-sm`,children:[`No Team templates with slots yet. Build one on`,` `,(0,f.jsx)(`a`,{href:`/templates/teams`,className:`text-primary underline`,children:`Team templates`}),` `,`first.`]}):(0,f.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3`,children:[(0,f.jsxs)(`label`,{className:`m-0 flex min-w-0 flex-1 flex-col gap-1 text-sm text-foreground`,children:[`Team template`,(0,f.jsx)(`select`,{value:i,onChange:e=>a(e.target.value),className:`min-w-0 rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring/30`,children:r.map(e=>(0,f.jsxs)(`option`,{value:e.id,children:[e.name,` (`,e.slotCount,` slot`,e.slotCount===1?``:`s`,`, r`,e.currentRevision,`)`]},e.id))})]}),(0,f.jsx)(l,{variant:`primary`,onClick:p,disabled:o||!i,children:o?`spawning…`:`spawn team`}),c&&(0,f.jsx)(`span`,{role:`alert`,className:`basis-full text-xs text-danger`,children:c})]})]})}export{p as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{t as n}from"./react-3W8R1pOO.js";import{d as r}from"./preload-helper-bztXdkDj.js";import{t as i}from"./ConfirmDialog-_bmG-wVG.js";import{d as a,q as o}from"./index-CLdmsmiN.js";import{i as s,r as c}from"./Page-NV96O47A.js";import{t as l}from"./AgentTabs-BcmmwYJc.js";import{t as u}from"./AgentAvatar-JYijLvZ2.js";import{t as d}from"./Button-ByiV6fpd.js";import{i as f,r as p}from"./wire-constants-zZ7Wjb9C.js";var m=o(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),h=e(n(),1),g=t();function _({value:e,className:t,ariaLabel:n=`Copy to clipboard`,title:r=`Copy to clipboard`}){let[i,a]=(0,h.useState)(!1);async function o(){if(!e)return;let t=!1;try{navigator.clipboard?.writeText&&(await navigator.clipboard.writeText(e),t=!0)}catch{}if(!t){let n=document.createElement(`textarea`);n.value=e,n.setAttribute(`readonly`,``),n.style.position=`fixed`,n.style.opacity=`0`,document.body.appendChild(n),n.select();try{t=document.execCommand(`copy`)}catch{}n.remove()}t&&(a(!0),setTimeout(()=>a(!1),1e3))}return(0,g.jsx)(`button`,{type:`button`,onClick:o,title:r,"aria-label":n,className:`inline-flex h-[1.3rem] w-[1.6rem] items-center justify-center rounded-sm border border-transparent text-mocha-light transition-colors hover:border-frost hover:bg-snow hover:text-mocha ${i?`border-[#bcd9bc] bg-[#eef7ee] text-[#3b7a3b] hover:border-[#bcd9bc] hover:bg-[#eef7ee] hover:text-[#3b7a3b]`:``} ${t??``}`,children:i?`✓`:`⧉`})}function v(){let{resolved:e,initialMessages:t,sessionHead:n,teams:o,skills:p,modelGroups:v,telegramConfigured:w}=a.useLoaderData(),E=a.useSearch(),D=r(),[O,k]=(0,h.useState)(null),[A,j]=(0,h.useState)(null),M=E.mode===`settings`;async function N(){let t=await fetch(`/api/agents/${encodeURIComponent(e.agent.id)}/archive`,{method:`POST`});if(!t.ok&&t.status!==204){let e=await t.json().catch(()=>null);throw Error(e?.error??`Could not archive Agent (${t.status})`)}await D.invalidate()}async function P(){j(null);try{let t=await fetch(`/api/agents/${encodeURIComponent(e.agent.id)}/unarchive`,{method:`POST`});if(!t.ok&&t.status!==204){let e=await t.json().catch(()=>null);throw Error(e?.error??`Could not restore Agent (${t.status})`)}await D.invalidate()}catch(e){j(e instanceof Error?e.message:String(e))}}async function F(){let t=await fetch(`/api/teams/${encodeURIComponent(e.team.id)}/policy`);if(!t.ok)throw Error(`The current Team policy is unavailable. Nothing was deleted.`);let n=await t.json(),r=await fetch(`/api/agents/${e.agent.id}?expectedTeamRevision=${n.teamPolicy.revision}`,{method:`DELETE`});if(r.ok||r.status===204)window.location.assign(`/agents`);else{let e=await r.json().catch(()=>null);throw Error(e?.error??`Could not delete Agent (${r.status})`)}}return(0,g.jsxs)(c,{children:[(0,g.jsxs)(`header`,{className:`mb-8`,children:[E.teamPolicy&&(0,g.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[(0,g.jsxs)(`a`,{href:`/teams/${encodeURIComponent(E.teamPolicy)}/policy?view=${E.view??`flow`}&selected=${encodeURIComponent(E.selected??``)}&vx=${E.vx??0}&vy=${E.vy??0}&vz=${E.vz??.9}`,className:`ghost-btn`,children:[(0,g.jsx)(m,{className:`h-4 w-4`}),` back to Team policy`]}),(0,g.jsx)(`span`,{className:`text-xs text-mocha-light`,children:`Returns to the same projection, viewport, and selection.`})]}),(0,g.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,g.jsx)(u,{identity:e.agent.identity,size:44}),(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(`h1`,{className:`mb-0 break-words`,children:e.agent.name}),(e.agent.identity?.creature||e.agent.identity?.vibe)&&(0,g.jsx)(`p`,{className:`muted mt-0.5 text-sm`,children:[e.agent.identity?.creature,e.agent.identity?.vibe].filter(Boolean).join(` · `)})]})]}),(0,g.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-5 gap-y-2`,children:[(0,g.jsxs)(b,{children:[(0,g.jsx)(`span`,{className:`min-w-0 break-all px-1.5 font-mono text-[0.95em] text-mocha select-all`,children:e.agent.id}),(0,g.jsx)(_,{value:e.agent.id,ariaLabel:`Copy agent UUID`,title:`Copy UUID to clipboard`})]}),(0,g.jsxs)(b,{children:[`status: `,(0,g.jsx)(`span`,{className:`ml-1`,children:e.agent.status})]}),(0,g.jsxs)(b,{children:[`profile:`,` `,(0,g.jsx)(`code`,{className:`ml-1 min-w-0 break-all bg-transparent px-0`,children:e.profile.id})]}),(0,g.jsxs)(b,{children:[`team:`,` `,(0,g.jsx)(`a`,{href:`/teams/${encodeURIComponent(e.team.id)}`,className:`ml-1 min-w-0 break-all bg-transparent px-0 font-mono underline`,children:e.team.id}),` `,`·`,` `,(0,g.jsx)(`a`,{href:`/teams/${encodeURIComponent(e.team.id)}/memory`,className:`ml-0.5 underline`,children:`shared memory →`})]}),(0,g.jsxs)(b,{children:[`model:`,` `,(0,g.jsx)(`code`,{className:`ml-1 min-w-0 break-all bg-transparent px-0`,children:e.model})]}),(0,g.jsxs)(b,{children:[`reasoning:`,` `,(0,g.jsx)(`code`,{className:`ml-1 bg-transparent px-0`,children:e.reasoningLevel})]})]}),(0,g.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[e.agent.status===`archived`?(0,g.jsx)(d,{variant:`ghost`,onClick:()=>void P(),children:`Restore`}):(0,g.jsx)(d,{variant:`ghost`,onClick:()=>k(`archive`),children:`Archive`}),(0,g.jsx)(d,{variant:`danger`,onClick:()=>k(`delete`),children:`Delete permanently`})]})]}),A&&(0,g.jsx)(`p`,{role:`alert`,className:`err`,children:A}),e.agent.status===`archived`&&(0,g.jsxs)(`div`,{className:`mb-4 rounded-md border border-frost bg-fawn/35 px-4 py-2 text-[0.9em] text-chocolate`,children:[(0,g.jsx)(`strong`,{className:`text-warning`,children:`This agent is archived.`}),` It's hidden from the default agent list; use `,(0,g.jsx)(`em`,{children:`unarchive`}),` above to bring it back, or`,` `,(0,g.jsx)(`em`,{children:`delete permanently`}),` to remove its data entirely.`]}),(0,g.jsx)(l,{agentId:e.agent.id,active:M?`settings`:`chat`,archived:e.agent.status===`archived`}),M?(0,g.jsxs)(`div`,{className:`space-y-6`,children:[(0,g.jsx)(x,{agentId:e.agent.id,currentModelOverride:e.agent.modelOverride??null,profileDefaultModel:e.profile.defaultModel,currentReasoning:e.reasoningLevel,modelGroups:v}),(0,g.jsxs)(s,{title:`Team`,description:`Move this permanent Agent between Team workspaces with an exact policy preview.`,children:[(0,g.jsx)(y,{children:`Team`}),(0,g.jsxs)(`p`,{className:`text-[0.9em] text-mocha-light`,children:[`Current team: `,(0,g.jsx)(`code`,{children:e.team.id}),` (`,e.team.name,`) —`,` `,(0,g.jsx)(`code`,{children:e.team.path}),`.`,` `,(0,g.jsx)(`a`,{href:`/teams/${e.team.id}`,children:`view / edit USER.md`})]}),(0,g.jsx)(S,{agentId:e.agent.id,currentTeamId:e.team.id,teams:o})]}),(0,g.jsx)(s,{title:`Skills`,description:`Attach or detach prompt skills for this Agent.`,children:(0,g.jsx)(C,{agentId:e.agent.id,attached:new Set(e.skills),all:p})}),w&&(0,g.jsx)(s,{title:`Telegram`,description:`Bind this Agent to its Telegram topic and control mirroring.`,children:(0,g.jsx)(T,{agent:e.agent})})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(y,{children:`Chat`}),(0,g.jsx)(`div`,{className:`h-[70vh]`,children:(0,g.jsx)(f,{agentId:e.agent.id,agentName:e.agent.name,initialMessages:t,initialSessionHead:n})}),(0,g.jsx)(`p`,{className:`mt-2 text-[0.82em] text-mocha-light`,children:`chat history persists in bazilion across navigation and restarts.`})]}),(0,g.jsx)(i,{open:O!==null,onOpenChange:e=>{e||k(null)},title:O===`delete`?`Delete ${e.agent.name} permanently?`:`Archive ${e.agent.name}?`,description:O===`delete`?(0,g.jsx)(`p`,{children:`This permanently removes messages, triggers, skill attachments, sessions, and the Agent's private on-disk directory. This cannot be undone.`}):(0,g.jsx)(`p`,{children:`The Agent will stop receiving normal work and disappear from current lists. You can restore it later from “Show archived”.`}),confirmLabel:O===`delete`?`Delete permanently`:`Archive Agent`,confirmVariant:O===`delete`?`danger`:`primary`,onConfirm:async()=>{j(null);try{O===`delete`?await F():await N()}catch(e){throw j(e instanceof Error?e.message:String(e)),e}}})]})}function y({children:e}){return(0,g.jsx)(`h3`,{className:`mb-3 font-body text-[0.85em] font-semibold uppercase tracking-wider text-mocha-light`,children:e})}function b({children:e}){return(0,g.jsx)(`span`,{className:`inline-flex max-w-full min-w-0 flex-wrap items-center gap-1 break-all rounded-full border border-frost bg-ivory px-3 py-0.5 text-[0.84em] text-mocha-light`,children:e})}function x({agentId:e,currentModelOverride:t,profileDefaultModel:n,currentReasoning:i,modelGroups:a}){let o=r(),[c,l]=(0,h.useState)(t??``),[u,f]=(0,h.useState)(i),[m,_]=(0,h.useState)(!1),[v,y]=(0,h.useState)(!1),[b,x]=(0,h.useState)(null),S=t!==null&&a.some(e=>e.models.some(n=>`${e.provider}:${n}`===t));async function C(t){t.preventDefault(),_(!0),x(null);try{let t=await fetch(`/api/agents/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({modelOverride:c===``?null:c,reasoningLevel:u})});if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error??t.statusText)}y(!0),setTimeout(()=>y(!1),1500),await o.invalidate()}catch(e){x(e.message)}finally{_(!1)}}return(0,g.jsx)(s,{title:`Model and reasoning`,description:`Override the Agent template defaults for this Agent only.`,children:(0,g.jsxs)(`form`,{onSubmit:C,className:`grid gap-4 sm:grid-cols-2`,children:[(0,g.jsxs)(`label`,{className:`m-0 flex min-w-0 flex-col gap-1 text-sm text-foreground`,children:[`Model override`,(0,g.jsxs)(`select`,{name:`modelOverride`,value:c,onChange:e=>l(e.target.value),className:`min-w-0`,children:[(0,g.jsxs)(`option`,{value:``,children:[`inherit from profile (`,n,`)`]}),t!==null&&!S&&(0,g.jsxs)(`option`,{value:t,children:[t,` (not in curated list)`]}),a.map(e=>(0,g.jsx)(`optgroup`,{label:e.provider,children:e.models.map(t=>{let n=`${e.provider}:${t}`;return(0,g.jsx)(`option`,{value:n,children:n},n)})},e.provider))]})]}),(0,g.jsxs)(`label`,{className:`m-0 flex min-w-0 flex-col gap-1 text-sm text-foreground`,children:[`Reasoning level`,(0,g.jsx)(`select`,{name:`reasoningLevel`,value:u,onChange:e=>f(e.target.value),className:`min-w-0`,children:p.map(e=>(0,g.jsx)(`option`,{value:e,children:e},e))})]}),(0,g.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 sm:col-span-2`,children:[(0,g.jsx)(d,{variant:`primary`,type:`submit`,disabled:m,children:m?`Saving…`:`Save model settings`}),v&&(0,g.jsx)(`span`,{role:`status`,className:`text-sm text-success`,children:`Saved`}),b&&(0,g.jsx)(`span`,{role:`alert`,className:`text-sm text-danger`,children:b})]})]})})}function S({agentId:e,currentTeamId:t,teams:n}){let i=r(),[a,o]=(0,h.useState)(t),[s,c]=(0,h.useState)(!1),[l,u]=(0,h.useState)(`profile_defaults`),[f,p]=(0,h.useState)(null),[m,_]=(0,h.useState)(null);async function v(n){if(n.preventDefault(),a!==t){c(!0),p(null);try{let[n,r]=await Promise.all([fetch(`/api/teams/${encodeURIComponent(t)}/policy`),fetch(`/api/teams/${encodeURIComponent(a)}/policy`)]);if(!n.ok||!r.ok)throw Error(`A Team policy is unavailable. Nothing was moved.`);let o=await n.json(),s=await r.json(),c={teamId:a,sourceExpectedRevision:o.teamPolicy.revision,destinationExpectedRevision:s.teamPolicy.revision,placement:l};if(!m){let t=await fetch(`/api/agents/${encodeURIComponent(e)}/team/preview`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(c)});if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error??t.statusText)}_(await t.json());return}let u=await fetch(`/api/agents/${encodeURIComponent(e)}/team`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({...c,sourceExpectedRevision:m.source.currentRevision,destinationExpectedRevision:m.destination.currentRevision})});if(!u.ok){let e=await u.json().catch(()=>null);throw Error(e?.error??u.statusText)}await i.invalidate()}catch(e){p(e.message)}finally{c(!1)}}}return(0,g.jsxs)(`form`,{onSubmit:v,className:`mt-2 flex flex-wrap items-end gap-2`,children:[(0,g.jsxs)(`label`,{className:`flex min-w-0 flex-1 flex-col gap-1 text-[0.85em] text-mocha-light`,children:[`move to:`,(0,g.jsx)(`select`,{value:a,onChange:e=>{o(e.target.value),_(null)},className:`w-full min-w-0 rounded-sm border border-frost bg-snow px-2 py-1.5 sm:min-w-[18rem]`,children:n.map(e=>(0,g.jsxs)(`option`,{value:e.id,children:[e.id,` — `,e.path]},e.id))})]}),(0,g.jsxs)(`label`,{className:`flex flex-col gap-1 text-[0.85em] text-mocha-light`,children:[`destination placement:`,(0,g.jsxs)(`select`,{value:l,onChange:e=>{u(e.target.value),_(null)},className:`rounded-sm border border-frost bg-snow px-2 py-1.5`,children:[(0,g.jsx)(`option`,{value:`profile_defaults`,children:`Agent-template defaults`}),(0,g.jsx)(`option`,{value:`isolated`,children:`isolated`})]})]}),(0,g.jsx)(d,{variant:`primary`,type:`submit`,disabled:s||a===t,children:s?`working…`:m?`commit reviewed move`:`review move`}),f&&(0,g.jsx)(`span`,{role:`alert`,className:`basis-full text-[0.85em] text-danger`,children:f}),m&&(0,g.jsxs)(`div`,{className:`basis-full rounded-md border border-sapphire-light bg-sapphire-glow p-3 text-sm`,children:[(0,g.jsxs)(`p`,{children:[`Source revision `,m.source.currentRevision,` → `,(0,g.jsx)(`strong`,{children:m.source.resultingRevision}),`, removing `,m.source.removedEdges.length,` incident edges. Destination revision `,m.destination.currentRevision,` → `,(0,g.jsx)(`strong`,{children:m.destination.resultingRevision}),`, adding `,m.destination.addedEdges.length,` edges to `,m.destination.existingEdges.length,` existing edges.`]}),(0,g.jsx)(`p`,{className:`mt-1 muted`,children:m.lineage})]})]})}function C({agentId:e,attached:t,all:n}){let a=r(),[o,s]=(0,h.useState)(null),[c,l]=(0,h.useState)(null),[u,f]=(0,h.useState)(null),[p,m]=(0,h.useState)(null);async function _(t,n=!1){let r=t.scanFindings??[];if(r.length>0&&!n){f(t);return}s(t.name),l(null);try{let n=await fetch(`/api/agents/${encodeURIComponent(e)}/skills`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({skill:t.name,allowFindings:r.length>0})});if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??n.statusText)}await a.invalidate()}catch(e){throw l(e instanceof Error?e.message:String(e)),e}finally{s(null)}}async function v(t){s(t),l(null);try{let n=await fetch(`/api/agents/${encodeURIComponent(e)}/skills/${encodeURIComponent(t)}`,{method:`DELETE`});if(!n.ok&&n.status!==204){let e=await n.json().catch(()=>null);throw Error(e?.error??n.statusText)}await a.invalidate()}catch(e){throw l(e.message),e}finally{s(null)}}return n.length===0?(0,g.jsx)(`p`,{className:`text-[0.9em] text-mocha-light`,children:`no skills installed`}):(0,g.jsxs)(g.Fragment,{children:[c&&(0,g.jsx)(`p`,{role:`alert`,className:`mb-2 text-[0.85em] text-danger`,children:c}),(0,g.jsxs)(`table`,{className:`hidden md:table`,children:[(0,g.jsx)(`thead`,{children:(0,g.jsxs)(`tr`,{children:[(0,g.jsx)(`th`,{children:`name`}),(0,g.jsx)(`th`,{children:`description`}),(0,g.jsx)(`th`,{children:`scan`}),(0,g.jsx)(`th`,{})]})}),(0,g.jsx)(`tbody`,{children:n.map(e=>{let n=t.has(e.name),r=o===e.name;return(0,g.jsxs)(`tr`,{children:[(0,g.jsx)(`td`,{children:(0,g.jsx)(`code`,{children:e.name})}),(0,g.jsx)(`td`,{children:e.description||(0,g.jsx)(`span`,{className:`text-mocha-light`,children:`—`})}),(0,g.jsx)(`td`,{children:(0,g.jsx)(w,{findings:e.scanFindings??[]})}),(0,g.jsx)(`td`,{children:n?(0,g.jsx)(d,{variant:`ghost`,disabled:r,onClick:()=>m(e.name),children:r?`…`:`detach`}):(0,g.jsx)(d,{variant:`ghost`,disabled:r,onClick:()=>void _(e).catch(()=>{}),children:r?`…`:`attach`})})]},e.name)})})]}),(0,g.jsx)(`div`,{className:`grid gap-3 md:hidden`,children:n.map(e=>{let n=t.has(e.name),r=o===e.name;return(0,g.jsxs)(`article`,{className:`min-w-0 rounded-xl border border-border bg-muted/20 p-4`,children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,g.jsx)(`code`,{className:`min-w-0 break-all font-mono text-sm`,children:e.name}),(0,g.jsx)(`span`,{className:`shrink-0 text-xs font-semibold ${n?`text-success`:`text-muted-foreground`}`,children:n?`Attached`:`Available`})]}),(0,g.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e.description||`No description provided.`}),(0,g.jsx)(`div`,{className:`mt-2`,children:(0,g.jsx)(w,{findings:e.scanFindings??[]})}),(0,g.jsx)(`div`,{className:`mt-3`,children:n?(0,g.jsx)(d,{variant:`ghost`,disabled:r,onClick:()=>m(e.name),children:r?`Detaching…`:`Detach`}):(0,g.jsx)(d,{variant:`ghost`,disabled:r,onClick:()=>void _(e).catch(()=>{}),children:r?`Attaching…`:`Attach`})})]},e.name)})}),(0,g.jsx)(i,{open:u!==null,onOpenChange:e=>{e||f(null)},title:`Attach ${u?.name??`skill`} despite scan findings?`,description:(0,g.jsxs)(`div`,{className:`space-y-2`,children:[(0,g.jsxs)(`p`,{children:[`Static scanning found `,u?.scanFindings?.length??0,` potentially unsafe instruction`,u?.scanFindings?.length===1?``:`s`,`. Review the findings before allowing this skill into the Agent's prompt.`]}),(0,g.jsx)(w,{findings:u?.scanFindings??[]})]}),confirmLabel:`Attach despite findings`,onConfirm:async()=>{u&&await _(u,!0)}}),(0,g.jsx)(i,{open:p!==null,onOpenChange:e=>{e||m(null)},title:`Detach ${p??`skill`}?`,description:(0,g.jsx)(`p`,{children:`This removes the skill's instructions from this Agent's future turns. It does not uninstall the skill, and you can attach it again later.`}),confirmLabel:`Detach skill`,onConfirm:async()=>{p&&await v(p)}})]})}function w({findings:e}){return e.length===0?(0,g.jsx)(`span`,{className:`text-mocha-light`,children:`clean`}):(0,g.jsxs)(`details`,{className:`text-[0.82em]`,children:[(0,g.jsxs)(`summary`,{className:e.some(e=>e.severity===`danger`)?`cursor-pointer text-danger`:`cursor-pointer text-mocha`,children:[e.length,` finding`,e.length===1?``:`s`]}),(0,g.jsx)(`ul`,{className:`m-0 list-disc pl-4`,children:e.map((e,t)=>(0,g.jsxs)(`li`,{children:[(0,g.jsx)(`span`,{className:`font-mono`,children:e.severity}),`: `,e.code,e.line?` line ${e.line}`:``,` - `,e.message]},`${e.code}-${e.line??0}-${t}`))})]})}function T({agent:e}){let t=r(),[n,a]=(0,h.useState)(!1),[o,s]=(0,h.useState)(null),[c,l]=(0,h.useState)(e.telegramMirrorMode),[u,f]=(0,h.useState)(e.telegramIconEmoji??``),[p,m]=(0,h.useState)(!1),_=e.telegramTopicId!==null;async function v(){a(!0),s(null);try{let n=await fetch(`/api/agents/${encodeURIComponent(e.id)}/telegram/bind`,{method:`POST`});if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??n.statusText)}let r=await n.json();window.open(r.deepLink,`_blank`,`noopener`),await t.invalidate()}catch(e){s(e.message)}finally{a(!1)}}async function y(){a(!0),s(null);try{let n=await fetch(`/api/agents/${encodeURIComponent(e.id)}/telegram/binding`,{method:`DELETE`});if(!n.ok&&n.status!==204){let e=await n.json().catch(()=>null);throw Error(e?.error??`Could not unbind Telegram topic (${n.status})`)}await t.invalidate()}catch(e){throw s(e instanceof Error?e.message:String(e)),e}finally{a(!1)}}async function b(n){l(n);try{let r=await fetch(`/api/agents/${encodeURIComponent(e.id)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({telegramMirrorMode:n})});if(!r.ok)throw Error(r.statusText);await t.invalidate()}catch(t){l(e.telegramMirrorMode),s(t.message)}}async function x(){s(null);try{let n=await fetch(`/api/agents/${encodeURIComponent(e.id)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({telegramIconEmoji:u.trim()||null})});if(!n.ok)throw Error(n.statusText);await t.invalidate()}catch(e){s(e.message)}}return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`text-[0.9em]`,children:[(0,g.jsx)(`div`,{className:`mb-3 flex flex-wrap items-center gap-3`,children:_?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`span`,{className:`rounded-full bg-success/10 px-2 py-0.5 text-xs font-semibold text-success`,children:`bound`}),(0,g.jsxs)(`span`,{className:`font-mono text-mocha`,children:[`topic #`,e.telegramTopicId]}),(0,g.jsx)(`button`,{type:`button`,onClick:v,disabled:n,className:`ghost-btn`,title:`Open the topic in Telegram (works on desktop/Android; iOS shows the topic list)`,children:`open in Telegram`}),(0,g.jsx)(d,{variant:`danger`,onClick:()=>m(!0),disabled:n,children:`Unbind`})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`span`,{className:`rounded-full bg-warning/10 px-2 py-0.5 text-xs font-semibold text-warning`,children:`unbound`}),(0,g.jsx)(`button`,{type:`button`,onClick:v,disabled:n,className:`ghost-btn`,title:`Create a Telegram topic for this agent`,children:n?`binding…`:`bind a topic`})]})}),(0,g.jsxs)(`div`,{className:`flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-2`,children:[(0,g.jsx)(`label`,{htmlFor:`mirror-mode`,className:`m-0 text-mocha-light`,children:`Mirror mode`}),(0,g.jsxs)(`select`,{id:`mirror-mode`,value:c,onChange:e=>void b(e.target.value),className:`rounded-md border bg-background px-2 py-1 font-mono text-sm`,disabled:n,children:[(0,g.jsx)(`option`,{value:`minimal`,children:`minimal — assistant messages only`}),(0,g.jsx)(`option`,{value:`verbose`,children:`verbose — also tool calls`})]})]}),(0,g.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-end gap-2`,children:[(0,g.jsx)(`label`,{htmlFor:`topic-icon`,className:`m-0 text-mocha-light`,children:`Topic icon`}),(0,g.jsx)(`input`,{id:`topic-icon`,value:u,onChange:e=>f(e.target.value),placeholder:`(profile default)`,maxLength:8,className:`w-32 rounded-md border bg-background px-2 py-1 font-mono text-sm`,disabled:n}),(0,g.jsx)(`button`,{type:`button`,onClick:()=>void x(),disabled:n||u===(e.telegramIconEmoji??``),className:`ghost-btn`,children:`save icon`})]}),o&&(0,g.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-danger`,children:o}),(0,g.jsx)(`p`,{className:`mt-3 text-[0.85em] text-mocha-light`,children:`When bound, every assistant turn for this agent gets mirrored to the topic. Typing in the topic triggers a new turn. iOS Telegram clients have a known limitation that prevents inline link deep-links from opening directly into a topic — bound state is still functional; navigate via the topic list manually.`})]}),(0,g.jsx)(i,{open:p,onOpenChange:m,title:`Unbind ${e.name} from Telegram?`,description:(0,g.jsx)(`p`,{children:`Telegram ingress and mirroring stop for this Agent. The existing forum topic remains in Telegram as an orphan until you remove it there.`}),confirmLabel:`Unbind Telegram topic`,onConfirm:y})]})}export{v as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{q as e}from"./index-CLdmsmiN.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-DGeXAQPT.js";import{E as t,J as n,T as r,U as i,Y as a,q as o}from"./index-CLdmsmiN.js";var s=o(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),c=o(`message-square-text`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M7 11h10`,key:`1twpyw`}],[`path`,{d:`M7 15h6`,key:`d9of3u`}],[`path`,{d:`M7 7h8`,key:`af5zfr`}]]),l=e();function u(){let{error:e}=r.useSearch();return(0,l.jsxs)(`main`,{className:`relative flex min-h-dvh items-center overflow-hidden bg-cream px-5 py-16 sm:px-8`,children:[(0,l.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at 16% 12%, rgba(61,120,153,0.18), transparent 36rem), radial-gradient(circle at 88% 84%, rgba(196,135,138,0.13), transparent 32rem)`}}),(0,l.jsx)(`div`,{className:`absolute right-4 top-4 z-10 sm:right-6 sm:top-6`,children:(0,l.jsx)(t,{})}),(0,l.jsxs)(`div`,{className:`relative mx-auto grid w-full max-w-5xl items-center gap-10 lg:grid-cols-[minmax(0,1fr)_25rem] lg:gap-20`,children:[(0,l.jsxs)(`section`,{className:`hidden lg:block`,children:[(0,l.jsxs)(`div`,{className:`mb-8 flex items-center gap-3`,children:[(0,l.jsx)(a,{className:`h-12 w-12`}),(0,l.jsx)(`span`,{className:`font-display text-3xl tracking-[-0.03em] text-charcoal`,children:`bazilion`})]}),(0,l.jsx)(`h1`,{className:`max-w-xl text-[3.4rem] leading-[0.98] tracking-[-0.035em]`,children:`Your agents, working as one thoughtful team.`}),(0,l.jsx)(`p`,{className:`mt-6 max-w-lg text-base leading-7 text-mocha`,children:`A private workspace for long-lived agents, shared context, and communication policies you can actually see and control.`}),(0,l.jsxs)(`div`,{className:`mt-8 grid max-w-lg gap-3 sm:grid-cols-2`,children:[(0,l.jsx)(d,{icon:(0,l.jsx)(c,{className:`h-4 w-4`}),label:`Persistent conversations`}),(0,l.jsx)(d,{icon:(0,l.jsx)(i,{className:`h-4 w-4`}),label:`Team-owned context`})]})]}),(0,l.jsxs)(`section`,{className:`w-full rounded-[24px] border border-frost bg-snow/95 p-7 shadow-baziu-lg backdrop-blur sm:p-9`,children:[(0,l.jsxs)(`div`,{className:`mb-6 flex items-center gap-3 lg:hidden`,children:[(0,l.jsx)(a,{className:`h-10 w-10`}),(0,l.jsx)(`span`,{className:`font-display text-2xl text-charcoal`,children:`bazilion`})]}),(0,l.jsx)(`div`,{className:`mb-6 flex h-10 w-10 items-center justify-center rounded-xl bg-sapphire-glow text-sapphire`,children:(0,l.jsx)(s,{className:`h-5 w-5`,"aria-hidden":`true`})}),(0,l.jsx)(`h2`,{className:`font-display text-3xl text-charcoal`,children:`Open Bazilion`}),(0,l.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-mocha-light`,children:`Use the fresh-install credential once, then a named device token for future sign-ins.`}),e===`token`&&(0,l.jsxs)(`div`,{className:`err mt-5`,role:`alert`,children:[`That credential was not accepted. On first run, use the bootstrap token from`,` `,(0,l.jsx)(`code`,{children:`auth.json`}),`; afterward, use a named device token.`]}),e===`origin`&&(0,l.jsx)(`div`,{className:`err mt-5`,role:`alert`,children:`Bazilion blocked the sign-in request because its browser origin was hidden. Reload this page and try again from the configured Bazilion address.`}),(0,l.jsxs)(`form`,{method:`POST`,action:`/api/login`,className:`mt-6 text-left`,children:[(0,l.jsx)(`label`,{htmlFor:`token`,className:`block text-[0.85em] font-semibold text-mocha`,children:`Access token`}),(0,l.jsx)(`input`,{type:`password`,id:`token`,name:`token`,autoFocus:!0,required:!0,placeholder:`Paste your token`,className:`mb-4`}),(0,l.jsx)(`button`,{type:`submit`,className:`w-full`,children:`Open Bazilion`})]}),(0,l.jsxs)(`p`,{className:`mt-5 rounded-xl bg-ivory px-3 py-2.5 text-[0.78em] leading-relaxed text-mocha-light`,children:[`Fresh install? Paste the bootstrap token from `,(0,l.jsx)(`code`,{children:`auth.json`}),`; it is accepted only until provider setup is complete and is exchanged for a bounded session. For later sign-ins, run `,(0,l.jsx)(`code`,{children:`bazilion token create browser`}),` on the server.`]})]})]}),(0,l.jsxs)(`footer`,{className:`absolute bottom-4 left-0 right-0 text-center text-xs text-mocha-light`,children:[`dedicated to Baziu`,(0,l.jsx)(n,{className:`ml-1 inline-block h-3 w-3 align-[-1px] opacity-40`})]})]})}function d({icon:e,label:t}){return(0,l.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl border border-frost bg-snow/70 px-3 py-2.5 text-sm font-semibold text-mocha shadow-baziu-sm`,children:[(0,l.jsx)(`span`,{className:`text-sapphire`,children:e}),t]})}export{u as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{t as n}from"./react-3W8R1pOO.js";import{a as r,d as i,o as a}from"./preload-helper-bztXdkDj.js";import{t as o}from"./chevron-right-VWrk_dTX.js";import{n as s,t as c}from"./x-CHc7_-TH.js";import{a as l,c as u,i as d,n as f,o as p,r as m,s as h,t as g}from"./ConfirmDialog-_bmG-wVG.js";import{B as _,G as v,K as y,U as b,q as x,w as S}from"./index-CLdmsmiN.js";import{n as C,t as w}from"./utils-B6KiDbIe.js";import{t as T}from"./Button-ByiV6fpd.js";import{i as E}from"./wire-constants-zZ7Wjb9C.js";var D=x(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),O=x(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),k=x(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),A=e(n(),1),j=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,M=C,N=(e,t)=>n=>{if(t?.variants==null)return M(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=j(t)||j(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return M(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},P=t(),F=N(`team/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,outline:`border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground`,ghost:`hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50`,destructive:`bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,xs:`h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-team]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-team]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,icon:`size-8`,"icon-xs":`size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-team]:rounded-lg [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-team]:rounded-lg`,"icon-lg":`size-9`}},defaultVariants:{variant:`default`,size:`default`}});function I({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,P.jsx)(r?_:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:w(F({variant:t,size:n,className:e})),...i})}function L({...e}){return(0,P.jsx)(f,{"data-slot":`dialog`,...e})}function R({...e}){return(0,P.jsx)(h,{"data-slot":`dialog-portal`,...e})}function z({className:e,...t}){return(0,P.jsx)(p,{"data-slot":`dialog-overlay`,className:w(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function B({className:e,children:t,showCloseButton:n=!0,...r}){return(0,P.jsxs)(R,{children:[(0,P.jsx)(z,{}),(0,P.jsxs)(d,{"data-slot":`dialog-content`,className:w(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...r,children:[t,n&&(0,P.jsx)(m,{"data-slot":`dialog-close`,asChild:!0,children:(0,P.jsxs)(I,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,P.jsx)(c,{}),(0,P.jsx)(`span`,{className:`sr-only`,children:`Close`})]})})]})]})}function V({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`dialog-header`,className:w(`flex flex-col gap-2`,e),...t})}function H({className:e,showCloseButton:t=!1,children:n,...r}){return(0,P.jsxs)(`div`,{"data-slot":`dialog-footer`,className:w(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,e),...r,children:[n,t&&(0,P.jsx)(m,{asChild:!0,children:(0,P.jsx)(I,{variant:`outline`,children:`Close`})})]})}function U({className:e,...t}){return(0,P.jsx)(u,{"data-slot":`dialog-title`,className:w(`font-heading text-base leading-none font-medium`,e),...t})}function W({className:e,...t}){return(0,P.jsx)(l,{"data-slot":`dialog-description`,className:w(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function G({onClose:e}){let t=i(),[n,r]=(0,A.useState)(``),[a,o]=(0,A.useState)(``),[s,c]=(0,A.useState)(``),[l,u]=(0,A.useState)(!1),[d,f]=(0,A.useState)(null);async function p(r){if(r.preventDefault(),f(null),!n.trim()){f(`id is required`);return}u(!0);try{let r={id:n.trim()};a.trim()&&(r.name=a.trim()),s.trim()&&(r.link=s.trim());let i=await fetch(`/api/teams`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(e.error??`${i.status} ${i.statusText}`)}e(),await t.invalidate()}catch(e){f(e.message),u(!1)}}return(0,P.jsx)(L,{open:!0,onOpenChange:t=>{!t&&!l&&e()},children:(0,P.jsx)(B,{showCloseButton:!l,className:`max-h-[calc(100dvh-2rem)] w-full max-w-lg overflow-y-auto rounded-3xl border border-frost bg-card p-6 shadow-baziu-lg sm:p-7`,onEscapeKeyDown:e=>{l&&e.preventDefault()},onPointerDownOutside:e=>{l&&e.preventDefault()},children:(0,P.jsxs)(`form`,{onSubmit:p,children:[(0,P.jsxs)(V,{children:[(0,P.jsx)(U,{className:`font-serif text-2xl text-foreground`,children:`Create a team`}),(0,P.jsxs)(W,{children:[`A team is a collaboration context — one filesystem root, one USER.md, one roster. The slot lives at `,(0,P.jsx)(`code`,{className:`font-mono`,children:`~/.bazilion/teams/<slug>/`}),`.`]})]}),(0,P.jsxs)(`div`,{className:`mb-3 mt-4 grid gap-3 sm:grid-cols-2`,children:[(0,P.jsxs)(`label`,{className:`block text-sm`,children:[`ID (slug)`,(0,P.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),required:!0,pattern:`[a-z0-9][a-z0-9_-]*`,placeholder:`myproject`,className:`mt-1 block w-full rounded-md border bg-background px-3 py-2 outline-none focus:ring-2 focus:ring-ring/30`})]}),(0,P.jsxs)(`label`,{className:`block text-sm`,children:[`Name `,(0,P.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional)`}),(0,P.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),className:`mt-1 block w-full rounded-md border bg-background px-3 py-2 outline-none focus:ring-2 focus:ring-ring/30`})]})]}),(0,P.jsxs)(`label`,{className:`mb-3 block text-sm`,children:[`Link target`,` `,(0,P.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional, absolute path)`}),(0,P.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),placeholder:`/home/you/projects/myrepo`,className:`mt-1 block w-full rounded-md border bg-background px-3 py-2 outline-none focus:ring-2 focus:ring-ring/30`}),(0,P.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:`Leave blank to create a fresh directory. Supply an absolute path to materialize the slot as a symlink to your existing project tree.`})]}),d&&(0,P.jsx)(`p`,{role:`alert`,className:`err mt-2`,children:d}),(0,P.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,P.jsx)(T,{variant:`ghost`,disabled:l,onClick:e,children:`Cancel`}),(0,P.jsx)(T,{variant:`primary`,type:`submit`,disabled:l,children:l?`Creating…`:`Create team`})]})]})})})}function K({profileId:e,teamHint:t,teams:n,onClose:r}){let i=a(),[o,s]=(0,A.useState)(``),[c,l]=(0,A.useState)(t??n.find(e=>e.id==="default")?.id??n[0]?.id??``),[u,d]=(0,A.useState)(`profile_defaults`),[f,p]=(0,A.useState)(!1),[m,h]=(0,A.useState)(null),[g,_]=(0,A.useState)(null);async function v(){let t=await fetch(`/api/teams/${encodeURIComponent(c)}/policy`);if(!t.ok)throw Error(`The selected Team policy is unavailable. Reload and try again.`);let n=await t.json();return{current:n,body:{profileId:e,teamId:c,teamExpectedRevision:n.teamPolicy.revision,placement:u}}}async function y(){h(null),p(!0);try{let{body:e}=await v(),t=await fetch(`/api/agents/placement-preview`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error??`Preview failed (${t.status})`)}_(await t.json())}catch(e){h(e.message)}finally{p(!1)}}async function b(t){t.preventDefault(),h(null),p(!0);try{if(!g){await y();return}let t={profile:e,teamExpectedRevision:g.currentRevision,placement:u};o.trim()&&(t.name=o.trim()),c&&(t.teamId=c);let n=await fetch(`/api/agents`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`${n.status} ${n.statusText}`)}let a=(await n.json()).agent;r(),await i({to:`/`,search:{agent:a.id}})}catch(e){h(e.message),p(!1)}}return(0,P.jsx)(L,{open:!0,onOpenChange:e=>{!e&&!f&&r()},children:(0,P.jsx)(B,{showCloseButton:!f,className:`max-h-[calc(100dvh-2rem)] w-full max-w-lg overflow-y-auto rounded-3xl border border-frost bg-card p-6 shadow-baziu-lg sm:p-7`,onEscapeKeyDown:e=>{f&&e.preventDefault()},onPointerDownOutside:e=>{f&&e.preventDefault()},children:(0,P.jsxs)(`form`,{onSubmit:b,children:[(0,P.jsxs)(V,{children:[(0,P.jsx)(U,{className:`font-serif text-xl text-foreground`,children:`Spawn a new agent`}),(0,P.jsxs)(W,{children:[`Create an agent from profile `,(0,P.jsx)(`code`,{className:`font-mono`,children:e}),`, then review its exact Team policy placement before committing.`]})]}),(0,P.jsxs)(`label`,{className:`mb-3 mt-4 block text-sm text-foreground`,children:[`Agent name`,` `,(0,P.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional — defaults to the profile's name)`}),(0,P.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),autoComplete:`off`,className:`mt-1 block w-full rounded-md border bg-background px-3 py-2 outline-none focus:ring-2 focus:ring-ring/30`})]}),(0,P.jsxs)(`label`,{className:`mb-3 block text-sm text-foreground`,children:[`Initial policy placement`,(0,P.jsxs)(`select`,{value:u,onChange:e=>{d(e.target.value),_(null)},className:`mt-1 block w-full rounded-md border bg-background px-3 py-2`,children:[(0,P.jsx)(`option`,{value:`profile_defaults`,children:`Agent-template defaults`}),(0,P.jsx)(`option`,{value:`isolated`,children:`Isolated`})]}),(0,P.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:`The current Team revision is checked again when you submit.`})]}),(0,P.jsxs)(`label`,{className:`mb-3 block text-sm text-foreground`,children:[`Team`,(0,P.jsx)(`select`,{value:c,onChange:e=>{l(e.target.value),_(null)},className:`mt-1 block w-full rounded-md border bg-background px-3 py-2 outline-none focus:ring-2 focus:ring-ring/30`,children:n.map(e=>(0,P.jsxs)(`option`,{value:e.id,children:[e.name,e.id==="default"?` (default)`:``]},e.id))})]}),m&&(0,P.jsx)(`p`,{role:`alert`,className:`err mt-2`,children:m}),g&&(0,P.jsxs)(`div`,{role:`status`,className:`mt-3 rounded-md border border-sapphire-light bg-sapphire-glow p-3 text-sm`,children:[(0,P.jsxs)(`p`,{children:[`Creating this Agent advances Team revision `,g.currentRevision,` →`,` `,(0,P.jsx)(`strong`,{children:g.resultingRevision}),` and adds`,` `,(0,P.jsx)(`strong`,{children:g.addedEdges.length}),` directed edges to the existing`,` `,g.existingEdges.length,`.`]}),(0,P.jsx)(`ul`,{className:`mt-2 max-h-36 overflow-auto`,children:g.addedEdges.map((e,t)=>(0,P.jsx)(`li`,{children:(0,P.jsxs)(`code`,{children:[e.sourceKind,e.sourceId?`:${e.sourceId}`:``,` → `,e.targetKind,e.targetId?`:${e.targetId}`:``]})},`${e.sourceKind}:${e.sourceId??``}>${e.targetKind}:${e.targetId??``}:${t}`))}),g.addedEdges.length===0&&(0,P.jsx)(`p`,{className:`mt-2`,children:`The new Agent starts isolated.`})]}),(0,P.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,P.jsx)(T,{variant:`ghost`,disabled:f,onClick:r,children:`Cancel`}),(0,P.jsx)(T,{variant:`primary`,type:`submit`,disabled:f,children:f?`Working…`:g?`Commit reviewed creation`:`Review exact policy`})]})]})})})}function q({profileGroup:e,teams:t,onClose:n,onSpawned:r}){let[i,a]=(0,A.useState)(``),[o,s]=(0,A.useState)(``),[c,l]=(0,A.useState)(null),[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(null);async function m(){let n=i.trim();if(!n)throw Error(`Target Team slug is required`);let r=t.find(e=>e.id===n),a;if(r){let e=await fetch(`/api/teams/${encodeURIComponent(n)}/policy`);if(!e.ok)throw Error(`The target Team policy is unavailable.`);a=(await e.json()).teamPolicy.revision}return{target:n,body:{templateExpectedRevision:e.currentRevision,teamId:n,...a?{teamExpectedRevision:a}:{},mode:r?`append`:`initialize`,...o?{userMd:o}:{}}}}async function h(){d(!0),l(null),p(null);try{let{body:t}=await m(),n=await fetch(`/api/team-templates/${encodeURIComponent(e.id)}/spawn/preview`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error((await n.json().catch(()=>null))?.error??n.statusText);p(await n.json())}catch(e){l(e.message)}finally{d(!1)}}async function g(){let t=i.trim();if(!t){l(`Target Team slug is required`);return}d(!0),l(null);try{let{body:n}=await m(),i=await fetch(`/api/team-templates/${encodeURIComponent(e.id)}/spawn`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});if(!i.ok)throw Error((await i.json().catch(()=>null))?.error??i.statusText);r(t)}catch(e){l(e.message)}finally{d(!1)}}return(0,P.jsx)(L,{open:!0,onOpenChange:e=>{!e&&!u&&n()},children:(0,P.jsxs)(B,{showCloseButton:!u,className:`max-h-[calc(100dvh-2rem)] w-full max-w-lg overflow-y-auto rounded-3xl border border-frost bg-card p-6 shadow-baziu-lg sm:p-7`,onEscapeKeyDown:e=>{u&&e.preventDefault()},onPointerDownOutside:e=>{u&&e.preventDefault()},children:[(0,P.jsxs)(V,{children:[(0,P.jsxs)(U,{className:`font-serif text-xl text-foreground`,children:[`Spawn team — `,e.name]}),(0,P.jsxs)(W,{children:[`Uses immutable Team revision `,e.currentRevision,`. Existing Teams append at their current reviewed revision; a new Team initializes at revision 1. Conflicts never overwrite newer state.`]})]}),c&&(0,P.jsx)(`div`,{role:`alert`,className:`err`,children:c}),(0,P.jsxs)(`label`,{children:[`Target Team slug`,(0,P.jsx)(`input`,{value:i,onChange:e=>{a(e.target.value),p(null)},list:`canonical-teams`,required:!0}),(0,P.jsx)(`datalist`,{id:`canonical-teams`,children:t.map(e=>(0,P.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,P.jsxs)(`label`,{children:[`Starter USER.md (new Team only)`,(0,P.jsx)(`textarea`,{rows:3,value:o,onChange:e=>{s(e.target.value),p(null)},className:`font-mono text-[0.88em] leading-[1.55]`})]}),f&&(0,P.jsxs)(`div`,{role:`status`,className:`mt-4 rounded-md border border-sapphire-light bg-sapphire-glow p-3 text-sm`,children:[(0,P.jsxs)(`p`,{children:[(0,P.jsx)(`strong`,{children:f.mode===`initialize`?`Initialize`:`Append`}),` produces Team revision `,f.resultingRevision,`, adds `,f.newMembers.length,` Agents, and results in `,f.edges.length,` directed allow edges.`]}),(0,P.jsx)(`ul`,{className:`mt-2 max-h-40 overflow-auto`,children:f.newMembers.map(e=>(0,P.jsxs)(`li`,{children:[e.agentName,` · stable source slot `,(0,P.jsx)(`code`,{children:e.slotId})]},e.slotId))}),(0,P.jsxs)(`details`,{className:`mt-2`,children:[(0,P.jsx)(`summary`,{className:`cursor-pointer`,children:`Review exact edge topology`}),(0,P.jsx)(`ul`,{className:`mt-2 max-h-40 overflow-auto`,children:f.edges.map((e,t)=>(0,P.jsx)(`li`,{children:(0,P.jsxs)(`code`,{children:[e.sourceKind,e.sourceId?`:${e.sourceId}`:``,` → `,e.targetKind,e.targetId?`:${e.targetId}`:``]})},`${e.sourceKind}:${e.sourceId??``}>${e.targetKind}:${e.targetId??``}:${t}`))})]})]}),(0,P.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,P.jsx)(T,{variant:`ghost`,disabled:u,onClick:n,children:`Cancel`}),f?(0,P.jsx)(T,{variant:`primary`,onClick:g,disabled:u,children:u?`Spawning…`:`Commit ${f.mode}`}):(0,P.jsx)(T,{variant:`primary`,onClick:h,disabled:u||e.slotCount===0,children:u?`Reviewing…`:`Review exact result`})]})]})})}var J=`bz_sidebar_open_groups`;function Y(e){if(typeof document>`u`)return;let t=encodeURIComponent(JSON.stringify(e));document.cookie=`${J}=${t}; Path=/; Max-Age=31536000; SameSite=Lax`}function X({agents:e,teams:t,profiles:n,profileGroups:a,selectedAgentId:c,initialOpenGroups:l}){let u=i(),[d,f]=(0,A.useState)(null),[p,m]=(0,A.useState)(null),[h,_]=(0,A.useState)(!1),[x,S]=(0,A.useState)(!1),[C,w]=(0,A.useState)(null),[T,E]=(0,A.useState)(null),[j,M]=(0,A.useState)(null),N=(0,A.useRef)(null),F=(0,A.useRef)(null),I=()=>window.requestAnimationFrame(()=>N.current?.focus()),[L,R]=(0,A.useState)(()=>l??{});(0,A.useEffect)(()=>{if(!x)return;let e=F.current;window.requestAnimationFrame(()=>{e?.querySelector(`[role="menuitem"]:not([disabled])`)?.focus()});let t=t=>{e?.contains(t.target)||N.current?.contains(t.target)||(S(!1),I())},n=e=>{e.key===`Escape`&&(e.preventDefault(),S(!1),I())};return document.addEventListener(`pointerdown`,t),document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`pointerdown`,t),document.removeEventListener(`keydown`,n)}},[x]);function z(e){if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(e.currentTarget.querySelectorAll(`[role="menuitem"]:not([disabled])`));if(t.length===0)return;e.preventDefault();let n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:e.key===`ArrowDown`?(n+1+t.length)%t.length:(n-1+t.length)%t.length]?.focus()}async function B(e,t){let n=t.trim();if(!n||n===e.name)return;let r=await fetch(`/api/agents/${e.id}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({name:n})});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(e?.error??`Could not rename agent (${r.status})`)}await u.invalidate()}async function V(e){let t=await fetch(`/api/agents/${e.id}/archive`,{method:`POST`});if(!t.ok&&t.status!==204){let e=await t.json().catch(()=>null);throw Error(e?.error??`Could not archive agent (${t.status})`)}await u.invalidate()}let H=[...n].sort((e,t)=>e.id==="default"?-1:+(t.id==="default")),U=[...t].sort((e,t)=>e.id==="default"?-1:+(t.id==="default")),W=new Map;for(let t of e){let e=W.get(t.teamId)??[];e.push(t),W.set(t.teamId,e)}let J=e.find(e=>e.id===c)?.teamId??null;return(0,P.jsxs)(`aside`,{className:`flex h-full flex-col overflow-hidden rounded-2xl border border-border bg-card shadow-baziu-sm`,children:[(0,P.jsxs)(`header`,{className:`flex items-center justify-between gap-3 border-b border-border bg-muted/30 px-3 py-2.5`,children:[(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-foreground`,children:[(0,P.jsx)(`span`,{className:`flex size-7 items-center justify-center rounded-lg bg-accent text-accent-foreground`,children:(0,P.jsx)(y,{className:`size-4`,"aria-hidden":`true`})}),(0,P.jsx)(`span`,{children:`Agents`})]}),(0,P.jsxs)(`p`,{className:`mt-0.5 truncate pl-9 text-xs text-muted-foreground`,children:[e.length,` agent`,e.length===1?``:`s`,` across `,t.length,` team`,t.length===1?``:`s`]})]}),(0,P.jsxs)(`div`,{className:`relative`,children:[(0,P.jsxs)(`button`,{ref:N,id:`sidebar-new-menu-button`,type:`button`,onClick:()=>S(e=>!e),"aria-label":`Create a new Agent or Team`,"aria-controls":x?`sidebar-new-menu`:void 0,"aria-expanded":x,"aria-haspopup":`menu`,className:`unstyled inline-flex h-8 items-center gap-1 rounded-lg border border-border bg-card px-2.5 text-xs font-semibold text-foreground shadow-baziu-sm transition-colors hover:border-primary/30 hover:bg-accent hover:text-accent-foreground`,children:[(0,P.jsx)(s,{className:`size-3.5`,"aria-hidden":`true`}),`New`,(0,P.jsx)(v,{className:`size-3.5 text-muted-foreground transition-transform ${x?`rotate-180`:``}`,"aria-hidden":`true`})]}),x&&(0,P.jsxs)(`div`,{ref:F,id:`sidebar-new-menu`,role:`menu`,"aria-labelledby":`sidebar-new-menu-button`,className:`absolute right-0 top-[calc(100%+0.4rem)] z-20 w-60 overflow-hidden rounded-xl border border-border bg-popover p-1.5 text-popover-foreground shadow-baziu-lg`,onKeyDown:z,children:[n.length===0?(0,P.jsxs)(`div`,{className:`rounded-lg bg-muted/40 px-3 py-2.5 text-xs leading-5 text-muted-foreground`,children:[`No Agent templates yet.`,` `,(0,P.jsx)(`a`,{href:`/templates/agents`,role:`menuitem`,className:`text-primary underline`,children:`Create one to spawn agents.`})]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2.5 pb-1 pt-1 text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:[(0,P.jsx)(y,{className:`size-3`,"aria-hidden":`true`}),`Agent templates`]}),H.map(e=>(0,P.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{S(!1),f({profileId:e.id})},className:`unstyled flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent hover:text-accent-foreground`,children:[(0,P.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground`,children:(0,P.jsx)(y,{className:`size-3.5`,"aria-hidden":`true`})}),(0,P.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name||e.id}),e.id==="default"&&(0,P.jsx)(`span`,{className:`rounded-full border border-border bg-muted px-1.5 py-0.5 text-xs font-semibold text-muted-foreground`,children:`Default`})]},e.id))]}),(0,P.jsx)(`div`,{className:`my-1.5 h-px bg-border`}),(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2.5 pb-1 pt-1 text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:[(0,P.jsx)(b,{className:`size-3`,"aria-hidden":`true`}),`Team templates`]}),a.length===0?(0,P.jsxs)(`div`,{className:`rounded-lg bg-muted/40 px-3 py-2 text-xs leading-5 text-muted-foreground`,children:[`No team templates yet.`,` `,(0,P.jsx)(`a`,{href:`/templates/teams`,role:`menuitem`,className:`text-primary underline`,children:`Create one`}),`.`]}):a.map(e=>(0,P.jsxs)(`button`,{type:`button`,role:`menuitem`,disabled:e.slotCount===0,title:e.slotCount===0?`Add at least one member before spawning`:void 0,onClick:()=>{S(!1),m(e)},className:`unstyled flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent hover:text-accent-foreground disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent`,children:[(0,P.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground`,children:(0,P.jsx)(b,{className:`size-3.5`,"aria-hidden":`true`})}),(0,P.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name||e.id}),(0,P.jsx)(`span`,{className:`inline-flex min-w-6 items-center justify-center rounded-full bg-muted px-1.5 font-mono text-xs text-muted-foreground`,children:e.slotCount})]},e.id)),(0,P.jsx)(`div`,{className:`my-1.5 h-px bg-border`}),(0,P.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{S(!1),_(!0)},className:`unstyled flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-xs font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground`,children:[(0,P.jsx)(s,{className:`size-3.5`,"aria-hidden":`true`}),`Create a team`]})]})]})]}),j&&(0,P.jsx)(`p`,{role:`alert`,className:`m-2 rounded-lg bg-danger/10 px-3 py-2 text-xs text-danger`,children:j}),(0,P.jsx)(`nav`,{className:`flex-1 overflow-y-auto p-1.5`,"aria-label":`Teams and agents`,children:e.length===0?(0,P.jsxs)(`div`,{className:`m-1 flex flex-col items-center rounded-xl border border-dashed border-border bg-muted/30 px-4 py-6 text-center`,children:[(0,P.jsx)(`span`,{className:`mb-2 flex size-9 items-center justify-center rounded-full bg-accent text-accent-foreground`,children:(0,P.jsx)(y,{className:`size-4`,"aria-hidden":`true`})}),(0,P.jsx)(`p`,{className:`text-sm font-semibold text-foreground`,children:`No agents yet`}),(0,P.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:`Your default Team is ready. Spawn the first agent to start a conversation.`}),H[0]?(0,P.jsxs)(`button`,{type:`button`,onClick:()=>f({profileId:H[0]?.id??`default`}),className:`unstyled mt-3 inline-flex min-h-9 items-center gap-1 rounded-lg bg-primary px-3 text-xs font-semibold text-primary-foreground hover:bg-primary/90`,children:[`Spawn first agent`,(0,P.jsx)(o,{className:`size-3.5`,"aria-hidden":`true`})]}):(0,P.jsxs)(`a`,{href:`/templates/agents`,className:`mt-3 inline-flex items-center gap-1 text-xs font-semibold text-primary hover:text-primary/80`,children:[`Create an Agent template`,(0,P.jsx)(o,{className:`size-3.5`,"aria-hidden":`true`})]})]}):U.map(e=>{let t=W.get(e.id)??[],n=J===e.id,i=L[e.id];return(0,P.jsxs)(`details`,{open:i===void 0?n||e.id==="default":i,onToggle:t=>{let n=t.currentTarget.open;if(L[e.id]===n)return;let r={...L,[e.id]:n};Y(r),R(r),u.invalidate()},className:`team/details mb-1 last:mb-0`,children:[(0,P.jsxs)(`summary`,{className:`flex min-h-8 cursor-pointer list-none items-center gap-1.5 rounded-lg px-2 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${n?`bg-muted/60 text-foreground`:`text-muted-foreground`}`,children:[(0,P.jsx)(o,{className:`size-3.5 shrink-0 transition-transform team-open/details:rotate-90`,"aria-hidden":`true`}),(0,P.jsx)(`span`,{className:`flex size-5 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground`,children:(0,P.jsx)(b,{className:`size-3`,"aria-hidden":`true`})}),(0,P.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium`,children:e.name}),e.id==="default"&&(0,P.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:`Default`}),(0,P.jsx)(`span`,{className:`inline-flex min-w-6 items-center justify-center rounded-full border border-border bg-card px-1.5 font-mono text-xs text-muted-foreground`,children:t.length})]}),t.length===0?(0,P.jsx)(`div`,{className:`py-2 pl-12 pr-2 text-xs text-muted-foreground`,children:`No agents in this team`}):(0,P.jsx)(`div`,{className:`space-y-0.5 py-0.5 pl-2`,children:t.map(e=>(0,P.jsxs)(`div`,{className:`team/row relative rounded-lg`,children:[(0,P.jsxs)(r,{to:`/`,search:{agent:e.id},"aria-current":e.id===c?`page`:void 0,className:`block min-h-11 rounded-lg border border-transparent py-1.5 pl-2.5 pr-[4.6rem] transition-colors hover:bg-accent/70 ${e.id===c?`border-primary/20 bg-accent text-accent-foreground shadow-baziu-sm`:`text-foreground`}`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm font-medium`,children:[(0,P.jsx)(`span`,{className:`size-1.5 shrink-0 rounded-full ${e.id===c?`bg-primary`:`bg-border`}`,"aria-hidden":`true`}),(0,P.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),e.telegramTopicId!==null&&(0,P.jsx)(`span`,{className:`shrink-0 text-primary`,title:`Telegram topic #${e.telegramTopicId}`,"aria-label":`Bound to Telegram topic ${e.telegramTopicId}`,children:(0,P.jsx)(k,{className:`size-3`,"aria-hidden":`true`})})]}),(0,P.jsxs)(`div`,{className:`mt-0.5 flex gap-2 pl-3 font-mono text-xs text-muted-foreground`,children:[(0,P.jsx)(`span`,{className:`uppercase tracking-wide`,children:e.status}),(0,P.jsx)(`span`,{children:e.id.slice(0,8)})]})]}),(0,P.jsxs)(`div`,{className:`absolute right-1 top-1/2 z-10 flex -translate-y-1/2 gap-0.5`,children:[(0,P.jsx)(`button`,{type:`button`,onClick:()=>w(e),title:`Rename`,"aria-label":`Rename ${e.name}`,className:`unstyled flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-card hover:text-primary focus-visible:bg-card`,children:(0,P.jsx)(O,{className:`size-3.5`,"aria-hidden":`true`})}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>E(e),title:`Archive`,"aria-label":`Archive ${e.name}`,className:`unstyled flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive focus-visible:bg-destructive/10 focus-visible:text-destructive`,children:(0,P.jsx)(D,{className:`size-3.5`,"aria-hidden":`true`})})]})]},e.id))})]},e.id)})}),d&&(0,P.jsx)(K,{profileId:d.profileId,teamHint:d.teamHint,teams:U,onClose:()=>{f(null),I()}}),p&&(0,P.jsx)(q,{profileGroup:p,teams:U,onClose:()=>{m(null),I()},onSpawned:e=>{m(null),u.navigate({to:`/teams/$id`,params:{id:e}})}}),h&&(0,P.jsx)(G,{onClose:()=>{_(!1),I()}}),(0,P.jsx)(Z,{agent:C,onOpenChange:e=>{e||w(null)},onRename:async(e,t)=>{M(null);try{await B(e,t)}catch(e){throw M(e instanceof Error?e.message:String(e)),e}}}),(0,P.jsx)(g,{open:T!==null,onOpenChange:e=>{e||E(null)},title:`Archive ${T?.name??`agent`}?`,description:(0,P.jsx)(`p`,{children:`The Agent will stop appearing in this sidebar and cannot receive normal work. You can restore it later from the Agents page with “Show archived”.`}),confirmLabel:`Archive agent`,confirmVariant:`primary`,onConfirm:async()=>{if(T){M(null);try{await V(T)}catch(e){throw M(e instanceof Error?e.message:String(e)),e}}}})]})}function Z({agent:e,onOpenChange:t,onRename:n}){let[r,i]=(0,A.useState)(``),[a,o]=(0,A.useState)(!1),[s,c]=(0,A.useState)(null);function l(n){!n&&a||(n&&e&&i(e.name),n||(i(``),c(null),o(!1)),t(n))}async function u(t){if(t.preventDefault(),!(!e||!r.trim()||r.trim()===e.name)){o(!0),c(null);try{await n(e,r),l(!1)}catch(e){c(e instanceof Error?e.message:String(e)),o(!1)}}}return(0,P.jsx)(L,{open:e!==null,onOpenChange:l,children:(0,P.jsx)(B,{showCloseButton:!a,children:(0,P.jsxs)(`form`,{onSubmit:e=>void u(e),children:[(0,P.jsxs)(V,{children:[(0,P.jsxs)(U,{children:[`Rename `,e?.name??`agent`]}),(0,P.jsx)(W,{children:`This changes the display name only; the Agent ID and history stay the same.`})]}),(0,P.jsxs)(`label`,{className:`mt-4 block text-sm font-semibold text-foreground`,children:[`Agent name`,(0,P.jsx)(`input`,{autoFocus:!0,className:`mt-1`,value:r||e?.name||``,onChange:e=>i(e.target.value),maxLength:120})]}),s&&(0,P.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:s}),(0,P.jsxs)(H,{className:`mt-4`,children:[(0,P.jsx)(T,{variant:`ghost`,disabled:a,onClick:()=>l(!1),children:`Cancel`}),(0,P.jsx)(T,{variant:`primary`,type:`submit`,disabled:a||!r.trim()||r.trim()===e?.name,children:a?`Renaming…`:`Rename agent`})]})]})})})}function Q(){let e=S.useLoaderData(),t=e.selected?.resolved.agent.id??null;return(0,P.jsxs)(`div`,{className:`grid h-full min-h-0 grid-cols-1 gap-3 py-3 lg:grid-cols-[18rem_minmax(0,1fr)]`,children:[(0,P.jsx)(`div`,{className:`min-h-0 ${e.selected?`hidden lg:block`:``}`,children:(0,P.jsx)(X,{agents:e.agents,teams:e.teams,profiles:e.profiles,profileGroups:e.profileGroups,selectedAgentId:t,initialOpenGroups:e.initialOpenGroups})}),(0,P.jsx)(`section`,{className:`min-h-0 overflow-hidden ${e.selected?``:`hidden lg:block`}`,children:e.selected?(0,P.jsx)(E,{agentId:e.selected.resolved.agent.id,agentName:e.selected.resolved.agent.name,initialMessages:e.selected.initialMessages,initialSessionHead:e.selected.sessionHead}):(0,P.jsx)(`div`,{className:`flex h-full items-center justify-center rounded-2xl border border-dashed bg-card px-6 text-center text-muted-foreground`,children:(0,P.jsxs)(`div`,{className:`max-w-sm`,children:[(0,P.jsx)(`h1`,{className:`m-0 font-body text-lg font-semibold text-foreground`,children:e.agents.length===0?`Start your first conversation`:`Choose an agent`}),(0,P.jsx)(`p`,{className:`mt-2 text-sm leading-6`,children:e.agents.length===0?`Your default Team and Agent template are ready. Use “Spawn first agent” on the left to create a working member.`:`Pick an agent in the Team list to open its persistent conversation.`}),e.agents.length===0&&(0,P.jsx)(`a`,{href:`/agents`,className:`btn-primary mt-4 no-underline`,children:`Open agent setup`})]})})})]})}export{Q as component};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:"DM Sans", system-ui, sans-serif;--font-serif:"DM Serif Display", Georgia, serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-800:oklch(44.4% .177 26.899);--color-amber-950:oklch(27.9% .077 45.635);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:22px;--radius-2xl:28px;--radius-3xl:36px;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-heading:"DM Serif Display", Georgia, serif;--font-display:"DM Serif Display", Georgia, serif;--font-body:"DM Sans", system-ui, sans-serif;--color-cream:#f4f1eb;--color-ivory:#faf8f4;--color-frost:#ded7cd;--color-fawn:#c9beb1;--color-chocolate:#342820;--color-charcoal:#241c16;--color-mocha:#6f6054;--color-mocha-light:#776a60;--color-sapphire:#356e8f;--color-sapphire-deep:#2f617d;--color-sapphire-light:#72a9c5;--color-sapphire-glow:#356e8f1f;--color-rose-baziu:#c4878a;--color-snow:#fff;--color-success:#376f59;--color-warning:#87591b;--color-danger:#a34e52;--shadow-baziu-sm:0 1px 2px #241c160d, 0 1px 8px #241c1609;--shadow-baziu-md:0 8px 24px #241c1614;--color-ring:var(--ring);--color-input:var(--input);--color-border:var(--border);--color-destructive:var(--destructive);--color-accent-foreground:var(--accent-foreground);--color-accent:var(--accent);--color-muted-foreground:var(--muted-foreground);--color-muted:var(--muted);--color-secondary-foreground:var(--secondary-foreground);--color-secondary:var(--secondary);--color-primary-foreground:var(--primary-foreground);--color-primary:var(--primary);--color-popover-foreground:var(--popover-foreground);--color-popover:var(--popover);--color-card-foreground:var(--card-foreground);--color-card:var(--card);--color-foreground:var(--foreground);--color-background:var(--background)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--color-border);outline-color:var(--color-ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--color-ring) 50%, transparent)}}body{background-color:var(--color-background);color:var(--color-foreground);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-image:radial-gradient(circle at 8% -10%, var(--color-sapphire-glow), transparent 28rem), radial-gradient(circle at 94% 0%, #c4878a14, transparent 25rem);min-height:100vh;font-size:15px;line-height:1.6}@supports (color:color-mix(in lab, red, red)){body{background-image:radial-gradient(circle at 8% -10%, var(--color-sapphire-glow), transparent 28rem), radial-gradient(circle at 94% 0%, color-mix(in srgb, var(--color-rose-baziu) 8%, transparent), transparent 25rem)}}body{background-attachment:fixed}html{font-family:var(--font-sans);scrollbar-gutter:stable;overflow:hidden scroll}html[data-layout=home],body[data-layout=home],html[data-layout=workspace],body[data-layout=workspace]{height:100dvh;overflow:hidden}body:before{content:"";opacity:.025;pointer-events:none;z-index:9999;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px;position:fixed;inset:0}h1,h2,h3{font-family:var(--font-display);color:var(--color-charcoal);letter-spacing:-.01em;font-weight:400}h1{font-size:clamp(2rem,3vw,2.65rem);line-height:1.05}h2{font-size:clamp(1.4rem,2vw,1.75rem);line-height:1.15}h3{color:var(--color-mocha);font-size:1.12rem;line-height:1.25}code{font-family:var(--font-mono);background:var(--color-frost);border-radius:var(--radius-sm);color:var(--color-mocha);padding:.15em .4em;font-size:.88em}a{color:var(--color-sapphire);text-decoration:none;transition:color .2s}a:hover{color:var(--color-sapphire-deep)}}@layer components{label{color:var(--color-mocha);margin:.6rem 0;font-size:.9em;display:block}input[type=text],input[type=password],input[type=number],input[type=search],input[type=email],input[type=url],input:not([type]),select,textarea{min-height:2.65rem;font:inherit;border:1px solid var(--color-frost);border-radius:var(--radius-md);background:#fefefd;width:100%;padding:.58rem .8rem;font-size:.95em}@supports (color:color-mix(in lab, red, red)){input[type=text],input[type=password],input[type=number],input[type=search],input[type=email],input[type=url],input:not([type]),select,textarea{background:color-mix(in srgb, var(--color-snow) 82%, var(--color-ivory))}}input[type=text],input[type=password],input[type=number],input[type=search],input[type=email],input[type=url],input:not([type]),select,textarea{color:var(--color-chocolate);outline:none;transition:all .2s}input:focus,select:focus,textarea:focus{border-color:var(--color-sapphire);box-shadow:0 0 0 3px var(--color-sapphire-glow);background:var(--color-snow)}input::placeholder,textarea::placeholder{color:var(--color-mocha-light)}input[type=checkbox]{accent-color:var(--color-sapphire);vertical-align:middle;width:16px;height:16px;margin-right:.35rem}button[type=submit]:not(.unstyled),.btn-primary{min-height:2.55rem;font:inherit;letter-spacing:.005em;border-radius:var(--radius-md);cursor:pointer;background:var(--color-sapphire);color:var(--primary-foreground);border:none;justify-content:center;align-items:center;gap:.4rem;padding:.58rem 1.05rem;font-size:.9em;font-weight:650;transition:all .2s;display:inline-flex;box-shadow:0 1px 1px #172d3a1f,0 4px 12px #3d789924}button[type=submit]:not(.unstyled):hover,.btn-primary:hover{background:var(--color-sapphire-deep);color:var(--primary-foreground);box-shadow:var(--shadow-baziu-md);transform:translateY(-1px)}button[type=submit]:not(.unstyled):active,.btn-primary:active{transform:translateY(0)}button[type=submit]:not(.unstyled):disabled,button[type=submit]:not(.unstyled)[disabled],.btn-primary:disabled,.btn-primary[disabled]{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.ghost-btn{min-height:2.4rem;color:var(--color-mocha);border:1px solid var(--color-frost);font:inherit;border-radius:var(--radius-md);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.35rem;padding:.48rem .85rem;font-size:.9em;font-weight:600;transition:all .2s;display:inline-flex}.ghost-btn:hover{border-color:var(--color-sapphire-light);color:var(--color-sapphire);background:var(--color-sapphire-glow)}.ghost-btn:disabled,.ghost-btn[disabled]{opacity:.5;cursor:not-allowed}.danger-btn{min-height:2.4rem;color:var(--destructive);border:1px solid var(--destructive);background:0 0;justify-content:center;align-items:center;gap:.35rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.danger-btn{border:1px solid color-mix(in srgb, var(--destructive) 32%, transparent)}}.danger-btn{font:inherit;border-radius:var(--radius-md);cursor:pointer;padding:.48rem .85rem;font-size:.9em;font-weight:600;transition:all .2s}.danger-btn:hover{background:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.danger-btn:hover{background:color-mix(in srgb, var(--destructive) 10%, transparent)}}.danger-btn:hover{border-color:var(--destructive)}.danger-btn:disabled,.danger-btn[disabled]{opacity:.5;cursor:not-allowed}table{border-collapse:separate;border-spacing:0;background:#fffffff0;width:100%;margin:1rem 0}@supports (color:color-mix(in lab, red, red)){table{background:color-mix(in srgb, var(--color-snow) 94%, transparent)}}table{border:1px solid var(--color-frost);border-radius:var(--radius-lg);overflow:hidden}thead{background:var(--color-ivory)}th{text-align:left;text-transform:uppercase;letter-spacing:.08em;color:var(--color-mocha-light);border-bottom:1px solid var(--color-frost);padding:.75rem 1rem;font-size:.74em;font-weight:700}td{border-bottom:1px solid var(--color-frost);vertical-align:middle;padding:.78rem 1rem;font-size:.93em}tr:last-child td{border-bottom:none}tbody tr{transition:background .2s}tbody tr:hover{background:var(--color-sapphire-glow)}.md-content>*+*{margin-top:.65em}.md-content h1,.md-content h2,.md-content h3,.md-content h4,.md-content h5,.md-content h6{font-family:var(--font-serif);color:var(--color-chocolate);margin-top:1.1em;font-weight:600;line-height:1.3}.md-content h1{font-size:1.45em}.md-content h2{font-size:1.25em}.md-content h3{font-size:1.1em}.md-content h4,.md-content h5,.md-content h6{font-size:1em}.md-content p{line-height:1.55}.md-content ul,.md-content ol{padding-left:1.5em;line-height:1.55}.md-content ul{list-style:outside}.md-content ol{list-style:decimal}.md-content li+li,.md-content li>ul,.md-content li>ol{margin-top:.25em}.md-content a{color:var(--color-sapphire);text-underline-offset:2px;text-decoration:underline}.md-content a:hover{color:var(--color-sapphire-deep)}.md-content strong{color:var(--color-chocolate);font-weight:600}.md-content em{font-style:italic}.md-content code{font-family:var(--font-mono,ui-monospace, monospace);background:var(--color-frost);border-radius:var(--radius-sm,4px);color:var(--color-chocolate);padding:.1em .35em;font-size:.88em}.md-content pre{background:var(--color-ivory);border:1px solid var(--color-frost);border-radius:var(--radius-md);margin:.7em 0;padding:.75rem 1rem;font-size:.88em;line-height:1.5;overflow-x:auto}.md-content pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.md-content blockquote{border-left:3px solid var(--color-frost);color:var(--color-mocha-light);padding-left:.9rem;font-style:italic}.md-content hr{border:none;border-top:1px solid var(--color-frost);margin:1em 0}.md-content table{border-collapse:collapse;margin:.5em 0;font-size:.93em}.md-content th,.md-content td{border:1px solid var(--color-frost);text-align:left;padding:.4rem .7rem}.md-content th{background:var(--color-frost);font-weight:600}.md-content img{border-radius:var(--radius-sm,4px);max-width:100%;height:auto}.card{background:#fffffff0;min-width:0}@supports (color:color-mix(in lab, red, red)){.card{background:color-mix(in srgb, var(--color-snow) 94%, transparent)}}.card{border:1px solid var(--color-frost);border-radius:var(--radius-xl);box-shadow:var(--shadow-baziu-sm);margin:1.25rem 0;padding:1.5rem}.card h3{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.06em;color:var(--color-mocha-light);margin-bottom:1rem;font-size:.92em;font-weight:600}.muted{color:var(--color-mocha-light);font-size:.9em}.err{color:var(--destructive);background:var(--destructive);padding:.75rem 1rem}@supports (color:color-mix(in lab, red, red)){.err{background:color-mix(in srgb, var(--destructive) 12%, transparent)}}.err{border:1px solid var(--destructive)}@supports (color:color-mix(in lab, red, red)){.err{border:1px solid color-mix(in srgb, var(--destructive) 25%, transparent)}}.err{border-radius:var(--radius-md);margin-bottom:1rem;font-size:.92em}}@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[calc\(100\%\+0\.4rem\)\]{top:calc(100% + .4rem)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:0}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.float-right{float:right}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.m-1{margin:var(--spacing)}.m-2{margin:calc(var(--spacing) * 2)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-10{margin-block:calc(var(--spacing) * 10)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-14{margin-top:calc(var(--spacing) * 14)}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.-mb-3{margin-bottom:calc(var(--spacing) * -3)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.\!hidden{display:none!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.\!h-3{height:calc(var(--spacing) * 3)!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-\[1\.3rem\]{height:1.3rem}.h-\[70vh\]{height:70vh}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-\[22rem\]{max-height:22rem}.max-h-\[200px\]{max-height:200px}.max-h-\[520px\]{max-height:520px}.max-h-\[640px\]{max-height:640px}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-56{min-height:calc(var(--spacing) * 56)}.min-h-\[2\.4rem\]{min-height:2.4rem}.min-h-\[80px\]{min-height:80px}.min-h-\[240px\]{min-height:240px}.min-h-\[360px\]{min-height:360px}.min-h-\[420px\]{min-height:420px}.min-h-\[480px\]{min-height:480px}.min-h-\[620px\]{min-height:620px}.min-h-dvh{min-height:100dvh}.\!w-3{width:calc(var(--spacing) * 3)!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-60{width:calc(var(--spacing) * 60)}.w-\[1\.6rem\]{width:1.6rem}.w-\[150px\]{width:150px}.w-\[190px\]{width:190px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[min\(21rem\,calc\(100vw-1\.5rem\)\)\]{width:min(21rem,100vw - 1.5rem)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-24{max-width:calc(var(--spacing) * 24)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-72{max-width:calc(var(--spacing) * 72)}.max-w-\[85\%\]{max-width:85%}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[260px\]{max-width:260px}.max-w-\[1500px\]{max-width:1500px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-64{min-width:calc(var(--spacing) * 64)}.min-w-\[680px\]{min-width:680px}.min-w-\[720px\]{min-width:720px}.min-w-\[760px\]{min-width:760px}.min-w-\[820px\]{min-width:820px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:var(--spacing)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[2rem_1fr\]{grid-template-columns:2rem 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-10{gap:calc(var(--spacing) * 10)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\!overflow-hidden{overflow:hidden!important}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded-md{border-radius:var(--radius-md)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[4px\]{border-radius:4px}.rounded-\[14px_14px_4px_14px\]{border-radius:14px 14px 4px}.rounded-\[16px\]{border-radius:16px}.rounded-\[24px\]{border-radius:24px}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md), 10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md), 12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-r-sm{border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-\[3px\]{border-left-style:var(--tw-border-style);border-left-width:3px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.\!border-frost{border-color:var(--color-frost)!important}.\!border-ivory{border-color:var(--color-ivory)!important}.\!border-snow{border-color:var(--color-snow)!important}.border-\[\#bcd9bc\]{border-color:#bcd9bc}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\/25{border-color:#a34e5240}@supports (color:color-mix(in lab, red, red)){.border-danger\/25{border-color:color-mix(in oklab, var(--color-danger) 25%, transparent)}}.border-danger\/30{border-color:#a34e524d}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.border-danger\/40{border-color:#a34e5266}@supports (color:color-mix(in lab, red, red)){.border-danger\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-danger\/50{border-color:#a34e5280}@supports (color:color-mix(in lab, red, red)){.border-danger\/50{border-color:color-mix(in oklab, var(--color-danger) 50%, transparent)}}.border-destructive\/20{border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/20{border-color:color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.border-fawn{border-color:var(--color-fawn)}.border-frost{border-color:var(--color-frost)}.border-frost\/50{border-color:#ded7cd80}@supports (color:color-mix(in lab, red, red)){.border-frost\/50{border-color:color-mix(in oklab, var(--color-frost) 50%, transparent)}}.border-input{border-color:var(--color-input)}.border-primary,.border-primary\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-primary\/40{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/40{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.border-red-300{border-color:var(--color-red-300)}.border-rose-baziu{border-color:var(--color-rose-baziu)}.border-sapphire{border-color:var(--color-sapphire)}.border-sapphire-light{border-color:var(--color-sapphire-light)}.border-success\/25{border-color:#376f5940}@supports (color:color-mix(in lab, red, red)){.border-success\/25{border-color:color-mix(in oklab, var(--color-success) 25%, transparent)}}.border-success\/30{border-color:#376f594d}@supports (color:color-mix(in lab, red, red)){.border-success\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\/25{border-color:#87591b40}@supports (color:color-mix(in lab, red, red)){.border-warning\/25{border-color:color-mix(in oklab, var(--color-warning) 25%, transparent)}}.border-warning\/30{border-color:#87591b4d}@supports (color:color-mix(in lab, red, red)){.border-warning\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.border-l-danger{border-left-color:var(--color-danger)}.border-l-mocha-light{border-left-color:var(--color-mocha-light)}.\!bg-rose-baziu{background-color:var(--color-rose-baziu)!important}.\!bg-sapphire{background-color:var(--color-sapphire)!important}.\!bg-snow{background-color:var(--color-snow)!important}.bg-\[\#eef7ee\]{background-color:#eef7ee}.bg-\[rgba\(42\,31\,22\,0\.04\)\]{background-color:#2a1f160a}.bg-accent,.bg-accent\/40{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/40{background-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.bg-accent\/60{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/60{background-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.bg-accent\/70{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/70{background-color:color-mix(in oklab, var(--color-accent) 70%, transparent)}}.bg-background,.bg-background\/60{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/60{background-color:color-mix(in oklab, var(--color-background) 60%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-chocolate\/35{background-color:#34282059}@supports (color:color-mix(in lab, red, red)){.bg-chocolate\/35{background-color:color-mix(in oklab, var(--color-chocolate) 35%, transparent)}}.bg-cream{background-color:var(--color-cream)}.bg-danger{background-color:var(--color-danger)}.bg-danger\/5{background-color:#a34e520d}@supports (color:color-mix(in lab, red, red)){.bg-danger\/5{background-color:color-mix(in oklab, var(--color-danger) 5%, transparent)}}.bg-danger\/10{background-color:#a34e521a}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-destructive\/10{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.bg-fawn\/35{background-color:#c9beb159}@supports (color:color-mix(in lab, red, red)){.bg-fawn\/35{background-color:color-mix(in oklab, var(--color-fawn) 35%, transparent)}}.bg-frost{background-color:var(--color-frost)}.bg-frost\/40{background-color:#ded7cd66}@supports (color:color-mix(in lab, red, red)){.bg-frost\/40{background-color:color-mix(in oklab, var(--color-frost) 40%, transparent)}}.bg-ivory{background-color:var(--color-ivory)}.bg-mocha-light\/60{background-color:#776a6099}@supports (color:color-mix(in lab, red, red)){.bg-mocha-light\/60{background-color:color-mix(in oklab, var(--color-mocha-light) 60%, transparent)}}.bg-muted,.bg-muted\/20{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--color-muted) 20%, transparent)}}.bg-muted\/30{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--color-muted) 30%, transparent)}}.bg-muted\/40{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--color-muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--color-muted) 50%, transparent)}}.bg-muted\/60{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/60{background-color:color-mix(in oklab, var(--color-muted) 60%, transparent)}}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-primary-foreground{background-color:var(--color-primary-foreground)}.bg-red-50{background-color:var(--color-red-50)}.bg-rose-baziu\/10{background-color:#c4878a1a}@supports (color:color-mix(in lab, red, red)){.bg-rose-baziu\/10{background-color:color-mix(in oklab, var(--color-rose-baziu) 10%, transparent)}}.bg-sapphire{background-color:var(--color-sapphire)}.bg-sapphire-glow{background-color:var(--color-sapphire-glow)}.bg-sapphire-glow\/80{background-color:#356e8f19}@supports (color:color-mix(in lab, red, red)){.bg-sapphire-glow\/80{background-color:color-mix(in oklab, var(--color-sapphire-glow) 80%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-snow{background-color:var(--color-snow)}.bg-snow\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-snow\/70{background-color:color-mix(in oklab, var(--color-snow) 70%, transparent)}}.bg-snow\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-snow\/95{background-color:color-mix(in oklab, var(--color-snow) 95%, transparent)}}.bg-success\/5{background-color:#376f590d}@supports (color:color-mix(in lab, red, red)){.bg-success\/5{background-color:color-mix(in oklab, var(--color-success) 5%, transparent)}}.bg-success\/10{background-color:#376f591a}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/10{background-color:#87591b1a}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.bg-clip-padding{background-clip:padding-box}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-9{padding-block:calc(var(--spacing) * 9)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:var(--spacing)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-\[4\.6rem\]{padding-right:4.6rem}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-0{padding-left:0}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-12{padding-left:calc(var(--spacing) * 12)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-\[-1px\]{vertical-align:-1px}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-body{font-family:var(--font-body)}.font-display{font-family:var(--font-display)}.font-heading{font-family:var(--font-heading)}.font-mono{font-family:var(--font-mono)}.font-serif{font-family:var(--font-serif)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.7em\]{font-size:.7em}.text-\[0\.8em\]{font-size:.8em}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.9em\]{font-size:.9em}.text-\[0\.66rem\]{font-size:.66rem}.text-\[0\.68rem\]{font-size:.68rem}.text-\[0\.72em\]{font-size:.72em}.text-\[0\.75em\]{font-size:.75em}.text-\[0\.78em\]{font-size:.78em}.text-\[0\.82em\]{font-size:.82em}.text-\[0\.84em\]{font-size:.84em}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.86em\]{font-size:.86em}.text-\[0\.88em\]{font-size:.88em}.text-\[0\.92em\]{font-size:.92em}.text-\[0\.93em\]{font-size:.93em}.text-\[0\.95em\]{font-size:.95em}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.2rem\]{font-size:1.2rem}.text-\[1\.35rem\]{font-size:1.35rem}.text-\[1em\]{font-size:1em}.text-\[3\.4rem\]{font-size:3.4rem}.text-\[10px\]{font-size:10px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\[0\.98\]{--tw-leading:.98;line-height:.98}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.5\]{--tw-leading:1.5;line-height:1.5}.leading-\[1\.45\]{--tw-leading:1.45;line-height:1.45}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[-0\.03em\]{--tw-tracking:-.03em;letter-spacing:-.03em}.tracking-\[-0\.035em\]{--tw-tracking:-.035em;letter-spacing:-.035em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#3b7a3b\]{color:#3b7a3b}.text-\[\#a56568\]{color:#a56568}.text-accent-foreground{color:var(--color-accent-foreground)}.text-card-foreground{color:var(--color-card-foreground)}.text-charcoal{color:var(--color-charcoal)}.text-chocolate{color:var(--color-chocolate)}.text-current{color:currentColor}.text-danger{color:var(--color-danger)}.text-destructive{color:var(--color-destructive)}.text-foreground,.text-foreground\/60{color:var(--color-foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--color-foreground) 60%, transparent)}}.text-mocha{color:var(--color-mocha)}.text-mocha-light{color:var(--color-mocha-light)}.text-mocha-light\/40{color:#776a6066}@supports (color:color-mix(in lab, red, red)){.text-mocha-light\/40{color:color-mix(in oklab, var(--color-mocha-light) 40%, transparent)}}.text-muted-foreground{color:var(--color-muted-foreground)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-red-800{color:var(--color-red-800)}.text-rose-baziu{color:var(--color-rose-baziu)}.text-sapphire{color:var(--color-sapphire)}.text-sapphire-deep{color:var(--color-sapphire-deep)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-snow{color:var(--color-snow)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.\!shadow-baziu-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#241c160d), 0 1px 8px var(--tw-shadow-color,#241c1609)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-baziu-lg{--tw-shadow:0 18px 50px var(--tw-shadow-color,#241c161f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-baziu-md{--tw-shadow:0 8px 24px var(--tw-shadow-color,#241c1614);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-baziu-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#241c160d), 0 1px 8px var(--tw-shadow-color,#241c1609);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--color-foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--color-foreground) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.running{animation-play-state:running}.group-open\/providers\:rotate-180:is(:where(.group\/providers):is([open],:popover-open,:open) *){rotate:180deg}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * -3)}.after\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(var(--spacing) * -2)}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--color-foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\:border-0:first-child{border-style:var(--tw-border-style);border-width:0}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:border-\[\#bcd9bc\]:hover{border-color:#bcd9bc}.hover\:border-frost:hover{border-color:var(--color-frost)}.hover\:border-primary:hover,.hover\:border-primary\/30:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.hover\:border-rose-baziu:hover{border-color:var(--color-rose-baziu)}.hover\:border-sapphire:hover{border-color:var(--color-sapphire)}.hover\:border-sapphire-light:hover{border-color:var(--color-sapphire-light)}.hover\:bg-\[\#eef7ee\]:hover{background-color:#eef7ee}.hover\:bg-accent:hover,.hover\:bg-accent\/30:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab, var(--color-accent) 30%, transparent)}}.hover\:bg-accent\/50:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\:bg-accent\/70:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/70:hover{background-color:color-mix(in oklab, var(--color-accent) 70%, transparent)}}.hover\:bg-card:hover,.hover\:bg-card\/70:hover{background-color:var(--color-card)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-card\/70:hover{background-color:color-mix(in oklab, var(--color-card) 70%, transparent)}}.hover\:bg-danger\/10:hover{background-color:#a34e521a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-danger\/10:hover{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.hover\:bg-destructive\/10:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.hover\:bg-destructive\/20:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.hover\:bg-ivory:hover{background-color:var(--color-ivory)}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--color-muted) 50%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\:bg-sapphire-deep:hover{background-color:var(--color-sapphire-deep)}.hover\:bg-sapphire-glow:hover{background-color:var(--color-sapphire-glow)}.hover\:bg-secondary\/80:hover{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:bg-snow:hover{background-color:var(--color-snow)}.hover\:text-\[\#3b7a3b\]:hover{color:#3b7a3b}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-charcoal:hover{color:var(--color-charcoal)}.hover\:text-destructive:hover{color:var(--color-destructive)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-mocha:hover{color:var(--color-mocha)}.hover\:text-primary:hover,.hover\:text-primary\/80:hover{color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:text-primary\/80:hover{color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:text-rose-baziu:hover{color:var(--color-rose-baziu)}.hover\:text-sapphire:hover{color:var(--color-sapphire)}.hover\:text-sapphire-deep:hover{color:var(--color-sapphire-deep)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-3:focus{left:calc(var(--spacing) * 3)}.focus\:border-sapphire:focus{border-color:var(--color-sapphire)}.focus\:bg-accent:focus{background-color:var(--color-accent)}.focus\:text-accent-foreground:focus{color:var(--color-accent-foreground)}.focus\:shadow-\[0_0_0_3px_var\(--color-sapphire-glow\)\]:focus{--tw-shadow:0 0 0 3px var(--tw-shadow-color,var(--color-sapphire-glow));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring\/30:focus{--tw-ring-color:var(--color-ring)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-ring\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-ring) 30%, transparent)}}:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--color-accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--color-destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--color-ring)}.focus-visible\:bg-card:focus-visible{background-color:var(--color-card)}.focus-visible\:bg-destructive\/10:focus-visible{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-destructive\/10:focus-visible{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.focus-visible\:text-destructive:focus-visible{color:var(--color-destructive)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--color-ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--color-ring)}.active\:translate-y-px:active,.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--color-input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--color-input) 50%, transparent)}}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}:where([data-slot=button-team]) .in-data-\[slot\=button-team\]\:rounded-lg{border-radius:var(--radius-lg)}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--color-muted) 50%, transparent)}}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:var(--spacing)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:var(--spacing)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:0}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:0}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--color-muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--color-secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--color-foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--color-secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--color-destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.aria-invalid\:aria-checked\:border-primary[aria-invalid=true][aria-checked=true]{border-color:var(--color-primary)}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--color-muted-foreground)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[position\=popper\]\:h-\(--radix-select-trigger-height\)[data-position=popper]{height:var(--radix-select-trigger-height)}.data-\[position\=popper\]\:w-full[data-position=popper]{width:100%}.data-\[position\=popper\]\:min-w-\(--radix-select-trigger-width\)[data-position=popper]{min-width:var(--radix-select-trigger-width)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:gap-3[data-size=sm]{gap:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md), 10px)}.data-\[size\=sm\]\:py-3[data-size=sm]{padding-block:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:0}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--color-muted)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (width>=40rem){.sm\:top-6{top:calc(var(--spacing) * 6)}.sm\:right-6{right:calc(var(--spacing) * 6)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:\!block{display:block!important}.sm\:block{display:block}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:w-32{width:calc(var(--spacing) * 32)}.sm\:w-36{width:calc(var(--spacing) * 36)}.sm\:w-40{width:calc(var(--spacing) * 40)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-52{width:calc(var(--spacing) * 52)}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-72{width:calc(var(--spacing) * 72)}.sm\:w-auto{width:auto}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-\[18rem\]{min-width:18rem}.sm\:flex-1{flex:1}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[1fr_1fr_auto\]{grid-template-columns:1fr 1fr auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:p-3{padding:calc(var(--spacing) * 3)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-7{padding:calc(var(--spacing) * 7)}.sm\:p-9{padding:calc(var(--spacing) * 9)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.sm\:pl-0{padding-left:0}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-\[2\.1rem\]{font-size:2.1rem}}@media (width>=48rem){.md\:absolute{position:absolute}.md\:top-\[calc\(100\%\+0\.35rem\)\]{top:calc(100% + .35rem)}.md\:right-0{right:0}.md\:z-50{z-index:50}.md\:col-auto{grid-column:auto}.md\:col-span-4{grid-column:span 4/span 4}.md\:row-auto{grid-row:auto}.md\:ml-4{margin-left:calc(var(--spacing) * 4)}.md\:ml-auto{margin-left:auto}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:table{display:table}.md\:flex-1{flex:1}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[12rem_minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:12rem minmax(0,1fr) auto auto}.md\:grid-cols-\[360px_1fr\]{grid-template-columns:360px 1fr}.md\:items-center{align-items:center}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:justify-self-end{justify-self:flex-end}.md\:overflow-visible{overflow:visible}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:pb-0{padding-bottom:0}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:shadow-baziu-md{--tw-shadow:0 8px 24px var(--tw-shadow-color,#241c1614);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (width>=64rem){.lg\:block{display:block}.lg\:hidden{display:none}.lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[18rem_minmax\(0\,1fr\)\]{grid-template-columns:18rem minmax(0,1fr)}.lg\:grid-cols-\[320px_1fr\]{grid-template-columns:320px 1fr}.lg\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(320px\,0\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_25rem\]{grid-template-columns:minmax(0,1fr) 25rem}.lg\:grid-cols-\[minmax\(0\,1fr\)_280px\]{grid-template-columns:minmax(0,1fr) 280px}.lg\:gap-20{gap:calc(var(--spacing) * 20)}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}}@media (width>=80rem){.xl\:inline{display:inline}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--color-input)}.dark\:bg-amber-950\/30:is(.dark *){background-color:#4619014d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/30:is(.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 30%, transparent)}}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--color-input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--color-input) 30%, transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--color-muted-foreground)}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--color-input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--color-input) 50%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--color-muted) 50%, transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--color-foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--color-input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--color-input) 80%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--color-destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--color-destructive) 40%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-checked\:border-primary:where([data-state=checked]),.data-checked\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--color-primary)}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--color-primary)}.data-checked\:text-primary-foreground:where([data-state=checked]),.data-checked\:text-primary-foreground:where([data-checked]:not([data-checked=false])){color:var(--color-primary-foreground)}.dark\:data-checked\:bg-primary:is(.dark *):where([data-state=checked]),.dark\:data-checked\:bg-primary:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--color-primary)}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--color-background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--color-foreground)}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--color-input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--color-input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--color-input) 30%, transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--color-foreground)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.\[\&_\.bubble-content\]\:line-through .bubble-content{text-decoration-line:line-through}.\[\&_button\]\:\!border-frost button{border-color:var(--color-frost)!important}.\[\&_button\]\:\!bg-snow button{background-color:var(--color-snow)!important}.\[\&_button\]\:\!fill-chocolate button{fill:var(--color-chocolate)!important}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\.border-b\]\:pb-4.border-b{padding-bottom:calc(var(--spacing) * 4)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--color-foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:#f4f1eb;--foreground:#342820;--card:#fff;--card-foreground:#342820;--popover:#fff;--popover-foreground:#342820;--primary:#356e8f;--primary-foreground:#fff;--secondary:#faf8f4;--secondary-foreground:#342820;--muted:#faf8f4;--muted-foreground:#776a60;--accent:#356e8f1f;--accent-foreground:#2f617d;--destructive:#a34e52;--border:#ded7cd;--input:#ded7cd;--ring:#356e8f;--chart-1:#356e8f;--chart-2:#c4878a;--chart-3:#7a6555;--chart-4:#d4cab8;--chart-5:#6ba3c2;--radius:16px;--sidebar:#faf8f4;--sidebar-foreground:#342820;--sidebar-primary:#356e8f;--sidebar-primary-foreground:#fff;--sidebar-accent:#356e8f1f;--sidebar-accent-foreground:#2f617d;--sidebar-border:#ded7cd;--sidebar-ring:#356e8f}:root.dark{--color-cream:#1a140f;--color-ivory:#211a13;--color-frost:#3b2e24;--color-fawn:#5c4a3d;--color-chocolate:#f5f0e8;--color-charcoal:#faf8f4;--color-mocha:#c4b3a0;--color-mocha-light:#a89789;--color-sapphire:#7bb4d2;--color-sapphire-deep:#5e9bba;--color-sapphire-light:#a0cee3;--color-sapphire-glow:#7bb4d22e;--color-rose-baziu:#d89a9d;--color-snow:#2a211a;--color-success:#75b99a;--color-warning:#d2a15d;--color-danger:#e28a8e;--color-info:#8ac3df;--shadow-baziu-sm:0 1px 3px #0006;--shadow-baziu-md:0 4px 12px #00000080;--shadow-baziu-lg:0 8px 30px #0009;--background:#1a140f;--foreground:#f5f0e8;--card:#2a211a;--card-foreground:#f5f0e8;--popover:#2a211a;--popover-foreground:#f5f0e8;--primary:#7bb4d2;--primary-foreground:#0f0a07;--secondary:#211a13;--secondary-foreground:#f5f0e8;--muted:#211a13;--muted-foreground:#a89789;--accent:#7bb4d22e;--accent-foreground:#a0cee3;--destructive:#d87878;--border:#3b2e24;--input:#3b2e24;--ring:#7bb4d2;--chart-1:#7bb4d2;--chart-2:#d89a9d;--chart-3:#c4b3a0;--chart-4:#5c4a3d;--chart-5:#a0cee3;--sidebar:#1f1812;--sidebar-foreground:#f5f0e8;--sidebar-primary:#7bb4d2;--sidebar-primary-foreground:#0f0a07;--sidebar-accent:#7bb4d22e;--sidebar-accent-foreground:#a0cee3;--sidebar-border:#3b2e24;--sidebar-ring:#7bb4d2}::selection{background:#356e8f3d}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in srgb, var(--color-sapphire) 24%, transparent)}}::selection{color:var(--color-charcoal)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--color-sapphire);outline-offset:2px}.teamPolicy-flow{--xy-background-color:var(--color-ivory);--xy-node-color:var(--color-chocolate);--xy-node-border:1px solid var(--color-frost);--xy-edge-stroke:var(--color-sapphire);--xy-edge-stroke-selected:var(--color-sapphire-deep);--xy-connectionline-stroke:var(--color-rose-baziu);--xy-selection-background-color:var(--color-sapphire-glow);--xy-selection-border:1px dotted var(--color-sapphire);--xy-controls-button-background-color:var(--color-snow);--xy-controls-button-background-color-hover:var(--color-ivory);--xy-controls-button-color:var(--color-chocolate);--xy-controls-button-border-color:var(--color-frost);--xy-minimap-background-color:var(--color-snow)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{t as n}from"./react-3W8R1pOO.js";import{d as r}from"./preload-helper-bztXdkDj.js";import{t as i}from"./ConfirmDialog-_bmG-wVG.js";import{o as a}from"./index-CLdmsmiN.js";import{t as o}from"./Button-ByiV6fpd.js";import{t as s}from"./ConfigPage-BCLp-FUC.js";var c=e(n()),l=t();function u(){let e=a.useLoaderData(),t=r(),[n,u]=(0,c.useState)(``),[g,_]=(0,c.useState)(e.chatId),[v,y]=(0,c.useState)(!1),[b,x]=(0,c.useState)(null),[S,C]=(0,c.useState)(!1),[w,T]=(0,c.useState)(!1),[E,D]=(0,c.useState)(null),[O,k]=(0,c.useState)(!1);async function A(r){if(r.preventDefault(),e.configured&&n.trim().length===0){C(!1),x(g.trim()===e.chatId?`Nothing changed. Paste a replacement token to update credentials.`:`Paste the bot token again when changing the supergroup, so the existing secret is never cleared or reused silently.`);return}y(!0),x(null),C(!1);try{let e=await fetch(`/api/config/telegram`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({botToken:n,chatId:g})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??`${e.status} ${e.statusText}`)}u(``),C(!0),await t.invalidate()}catch(e){x(e.message)}finally{y(!1)}}async function j(){let e=await fetch(`/api/config/telegram`,{method:`DELETE`});if(!e.ok&&e.status!==204){let t=await e.json().catch(()=>null);throw Error(t?.error??`Could not clear Telegram credentials (${e.status})`)}u(``),_(``),D(null),C(!1),x(null),await t.invalidate()}async function M(){k(!0),D(null);try{D(await(await fetch(`/api/config/telegram/health`)).json())}catch(e){D({configured:!0,preflight:null,error:{step:`getMe`,message:e.message},polling:null})}finally{k(!1)}}return(0,l.jsxs)(s,{active:`integrations`,title:`Telegram`,description:`Connect one forum-supergroup bot with one topic per agent, so conversations stay reachable from your phone.`,size:`narrow`,children:[e.migratedChatId&&(0,l.jsx)(p,{toChatId:e.migratedChatId}),(0,l.jsxs)(`section`,{className:`rounded-lg border bg-card p-5`,children:[(0,l.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-3`,children:`Credentials`}),e.configured&&(0,l.jsxs)(`p`,{className:`text-xs text-success mb-3`,children:[`✓ Stored: `,(0,l.jsx)(`code`,{className:`font-mono`,children:e.botTokenPreview}),` `,e.chatId&&(0,l.jsxs)(l.Fragment,{children:[`· chat `,(0,l.jsx)(`code`,{className:`font-mono`,children:e.chatId})]})]}),(0,l.jsxs)(`form`,{onSubmit:A,className:`space-y-3`,children:[(0,l.jsxs)(`label`,{className:`block`,children:[(0,l.jsx)(`span`,{className:`block text-sm font-medium mb-1`,children:`Bot token`}),(0,l.jsx)(`input`,{type:`password`,autoComplete:`off`,value:n,onChange:e=>{u(e.target.value),x(null)},placeholder:e.configured?`(leave blank to keep stored value)`:`1234567890:ABC...`,className:`w-full rounded-md border bg-background px-2 py-1.5 font-mono text-sm outline-none focus:ring-2 focus:ring-ring/30`,required:!e.configured}),(0,l.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`From @BotFather → /newbot. Disable Privacy Mode in `,(0,l.jsx)(`em`,{children:`Bot Settings → Team Privacy → Turn off`}),`.`]}),e.configured&&(0,l.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Blank preserves the stored token. To remove it, use clear credentials and confirm the integration shutdown.`})]}),(0,l.jsxs)(`label`,{className:`block`,children:[(0,l.jsx)(`span`,{className:`block text-sm font-medium mb-1`,children:`Supergroup chat ID`}),(0,l.jsx)(`input`,{type:`text`,value:g,onChange:e=>{_(e.target.value),x(null)},placeholder:`-1001234567890`,className:`w-full rounded-md border bg-background px-2 py-1.5 font-mono text-sm outline-none focus:ring-2 focus:ring-ring/30`,required:!0}),(0,l.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`Forum-enabled supergroup the bot is admin in (with`,` `,(0,l.jsx)(`code`,{className:`font-mono`,children:`can_manage_topics`}),`).`]})]}),(0,l.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 pt-1`,children:[(0,l.jsx)(o,{variant:`primary`,type:`submit`,disabled:v,children:v?`saving…`:`save credentials`}),e.configured&&(0,l.jsx)(o,{variant:`danger`,onClick:()=>T(!0),children:`clear credentials`}),S&&(0,l.jsx)(`span`,{className:`text-xs text-success`,children:`saved ✓`}),b&&(0,l.jsxs)(`span`,{role:`alert`,className:`text-xs text-danger`,children:[`error: `,b]})]})]})]}),(0,l.jsxs)(`section`,{className:`rounded-lg border bg-card p-5`,children:[(0,l.jsxs)(`div`,{className:`mb-3 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,l.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground`,children:`Preflight checks`}),(0,l.jsx)(o,{variant:`ghost`,onClick:M,disabled:O||!e.configured,children:O?`checking…`:`run preflight`})]}),!e.configured&&(0,l.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:`Save credentials above first.`}),e.configured&&!E&&!O&&(0,l.jsxs)(`p`,{className:`text-xs text-muted-foreground italic`,children:[`Click `,(0,l.jsx)(`em`,{children:`run preflight`}),` to validate the stored credentials against the Telegram Bot API.`]}),E&&(0,l.jsx)(h,{health:E}),E?.polling&&(0,l.jsx)(m,{polling:E.polling})]}),e.configured&&(0,l.jsx)(d,{}),e.configured&&(0,l.jsx)(f,{}),(0,l.jsx)(i,{open:w,title:`Disconnect Telegram?`,description:(0,l.jsx)(`p`,{children:`This permanently removes the saved bot token and supergroup ID. Telegram polling, ingress, and outbound delivery stop until new credentials are saved and pairing is completed again.`}),confirmLabel:`clear credentials and disconnect`,onConfirm:async()=>{try{await j()}catch(e){throw x(e instanceof Error?e.message:String(e)),e}},onOpenChange:T})]})}function d(){let[e,t]=(0,c.useState)(null),[n,r]=(0,c.useState)(null),[a,s]=(0,c.useState)(null),[u,d]=(0,c.useState)(!1),f=async()=>{let e=await fetch(`/api/config/telegram/pairing`);if(!e.ok)throw Error(e.statusText);t(await e.json())};(0,c.useEffect)(()=>{f().catch(e=>s(e.message))},[]);async function p(){s(null);let e=await fetch(`/api/config/telegram/pairing/challenge`,{method:`POST`}),n=await e.json().catch(()=>({}));if(!e.ok||!n.code)return s(n.error??e.statusText);r(n.code),t(n)}async function m(){let e=await fetch(`/api/config/telegram/pairing/challenge`,{method:`DELETE`});if(!e.ok&&e.status!==204){let t=await e.json().catch(()=>null);throw Error(t?.error??`Could not cancel the pairing code`)}r(null),await f()}async function h(){let e=await fetch(`/api/config/telegram/pairing/reset`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({confirm:!0})});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error??`Could not reset Telegram owner`)}r(null),await f()}return(0,l.jsxs)(`section`,{className:`rounded-lg border bg-card p-5`,children:[(0,l.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-1`,children:`Owner pairing`}),(0,l.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:[`Telegram stays closed until one owner consumes a short-lived code in the configured`,` `,(0,l.jsx)(`code`,{className:`font-mono`,children:`⚙ bazilion`}),` service topic.`]}),e?.paired?(0,l.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,l.jsx)(`span`,{className:`text-sm text-success`,children:`✓ owner paired`}),(0,l.jsx)(o,{variant:`danger`,onClick:()=>d(!0),children:`reset owner`})]}):(0,l.jsxs)(`div`,{className:`space-y-2`,children:[(0,l.jsx)(`p`,{className:`text-sm text-warning`,children:`Unpaired — all Telegram ingress is closed.`}),n?(0,l.jsxs)(`div`,{className:`rounded-md border bg-muted/30 p-3 text-sm`,children:[`Send `,(0,l.jsxs)(`code`,{className:`font-mono`,children:[`/pair `,n]}),` in the service topic. This code is shown once and expires in ten minutes.`]}):null,(0,l.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,l.jsx)(o,{variant:`primary`,onClick:p,children:`generate pairing code`}),e?.challengeActive&&(0,l.jsx)(o,{variant:`ghost`,onClick:()=>void m().catch(e=>s(e instanceof Error?e.message:String(e))),children:`cancel code`})]})]}),a&&(0,l.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:a}),(0,l.jsx)(i,{open:u,title:`Revoke the paired Telegram owner?`,description:(0,l.jsx)(`p`,{children:`This immediately revokes the current owner and closes all Telegram ingress. No one can use the bot until a new one-time pairing code is generated and consumed.`}),confirmLabel:`revoke owner and close ingress`,onConfirm:async()=>{try{await h()}catch(e){throw s(e instanceof Error?e.message:String(e)),e}},onOpenChange:d})]})}function f(){let[e,t]=(0,c.useState)(null),[n,r]=(0,c.useState)(``),[a,s]=(0,c.useState)(``),[u,d]=(0,c.useState)(!1),[f,p]=(0,c.useState)(null),[m,h]=(0,c.useState)(null);async function g(){try{let e=await fetch(`/api/config/telegram/acl`);if(!e.ok)throw Error(e.statusText);t(await e.json())}catch(e){p(e.message)}}(0,c.useEffect)(()=>{g()},[]);async function _(e){e.preventDefault();let t=Number(n);if(!Number.isInteger(t)){p(`user id must be an integer`);return}d(!0),p(null);try{let e=await fetch(`/api/config/telegram/acl`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({userId:t,label:a.trim()||null})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??e.statusText)}r(``),s(``),await g()}catch(e){p(e.message)}finally{d(!1)}}async function v(e){p(null);let t=await fetch(`/api/config/telegram/acl/${e}`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??t.statusText)}await g()}return(0,l.jsxs)(`section`,{className:`rounded-lg border bg-card p-5`,children:[(0,l.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-1`,children:`Access control`}),(0,l.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:[`Allowlisted Telegram users can use the bot (commands + chat). An empty list is closed; ownership begins only through the one-time pairing flow. Users find their id via`,` `,(0,l.jsx)(`code`,{className:`font-mono`,children:`/whoami`}),`.`]}),e===null?(0,l.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:`loading…`}):e.length===0?(0,l.jsx)(`p`,{className:`text-xs text-warning mb-3`,children:`Closed — no paired owner or allowlisted members.`}):(0,l.jsx)(`ul`,{className:`mb-3 space-y-1 text-sm`,children:e.map(e=>(0,l.jsxs)(`li`,{className:`flex flex-wrap items-center gap-2`,children:[(0,l.jsx)(`code`,{className:`font-mono`,children:e.userId}),(0,l.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.label??(e.username?`@${e.username}`:`—`),` · `,e.role]}),e.role!==`owner`&&(0,l.jsx)(o,{variant:`danger`,className:`text-xs`,onClick:()=>h(e),children:`remove`})]},e.userId))}),(0,l.jsxs)(`form`,{onSubmit:_,className:`flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-end`,children:[(0,l.jsxs)(`label`,{className:`m-0 flex flex-col gap-1 text-xs font-medium text-foreground`,children:[`Telegram user ID`,(0,l.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),placeholder:`123456789`,inputMode:`numeric`,className:`w-full rounded-md border bg-background px-2 py-1 font-mono text-sm sm:w-32`})]}),(0,l.jsxs)(`label`,{className:`m-0 flex flex-col gap-1 text-xs font-medium text-foreground`,children:[`Label `,(0,l.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`(optional)`}),(0,l.jsx)(`input`,{value:a,onChange:e=>s(e.target.value),placeholder:`e.g. Pat`,className:`w-full rounded-md border bg-background px-2 py-1 text-sm sm:w-40`})]}),(0,l.jsx)(o,{variant:`ghost`,type:`submit`,disabled:u,children:`add`}),f&&(0,l.jsx)(`span`,{role:`alert`,className:`text-xs text-danger`,children:f})]}),(0,l.jsx)(i,{open:m!==null,title:`Remove ${m?.label??m?.username??m?.userId??``}?`,description:(0,l.jsxs)(`p`,{children:[`Telegram user `,(0,l.jsx)(`code`,{className:`font-mono`,children:m?.userId}),` immediately loses command and chat access. Their Telegram account is not changed, and they can be allowlisted again later.`]}),confirmLabel:`remove Telegram access`,onConfirm:async()=>{if(m)try{await v(m.userId)}catch(e){throw p(e instanceof Error?e.message:String(e)),e}},onOpenChange:e=>{e||h(null)}})]})}function p({toChatId:e}){let[t,n]=(0,c.useState)(!1),[r,i]=(0,c.useState)(null);async function a(){n(!0),i(null);try{let e=await fetch(`/api/config/telegram/reconnect`,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??e.statusText)}window.location.reload()}catch(e){i(e.message),n(!1)}}return(0,l.jsxs)(`div`,{className:`rounded-md border-2 border-danger/25 bg-danger/10 px-4 py-3 text-sm`,children:[(0,l.jsx)(`div`,{className:`font-semibold text-danger mb-1`,children:`Supergroup chat id changed`}),(0,l.jsxs)(`p`,{className:`text-danger mb-2`,children:[`Telegram migrated this supergroup to a new chat id (`,(0,l.jsx)(`code`,{className:`font-mono`,children:e}),`). The bot is still pointed at the old id. Reconnect to repoint it and re-create the `,(0,l.jsx)(`code`,{className:`font-mono`,children:`⚙ bazilion`}),` `,`service chat in the new team. Agent topic bindings will reconcile on next use.`]}),(0,l.jsx)(o,{variant:`primary`,onClick:a,disabled:t,children:t?`reconnecting…`:`Reconnect to ${e}`}),r&&(0,l.jsx)(`span`,{role:`alert`,className:`ml-3 text-xs text-danger`,children:r})]})}function m({polling:e}){let t=e.startedAt?new Date(e.startedAt).toISOString():null,n=e.lastSuccessfulPollAt?new Date(e.lastSuccessfulPollAt).toISOString():null;return(0,l.jsxs)(`div`,{className:`mt-4 rounded-md border bg-muted/30 px-3 py-2 text-xs space-y-1`,children:[(0,l.jsx)(`p`,{className:`font-semibold uppercase tracking-wide text-muted-foreground`,children:`Polling state`}),(0,l.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 font-mono`,children:[(0,l.jsx)(`span`,{className:e.running?`text-success`:`text-danger`,children:e.running?`running`:`stopped`}),(0,l.jsx)(`span`,{className:e.activated?`text-success`:`text-warning`,children:e.activated?`activated`:`awaiting activation`}),e.lastUpdateId!==null&&(0,l.jsxs)(`span`,{children:[`last update `,e.lastUpdateId]}),t&&(0,l.jsxs)(`span`,{children:[`started `,t]}),n&&(0,l.jsxs)(`span`,{children:[`last poll `,n]})]}),e.error&&(0,l.jsxs)(`p`,{role:`alert`,className:`text-danger`,children:[`error: `,e.error]})]})}function h({health:e}){if(e.error)return(0,l.jsxs)(`div`,{role:`alert`,className:`rounded-md border border-danger/25 bg-danger/10 px-3 py-2 text-sm`,children:[(0,l.jsxs)(`p`,{className:`font-semibold text-danger`,children:[`Failed at `,(0,l.jsx)(`code`,{className:`font-mono`,children:e.error.step})]}),(0,l.jsx)(`p`,{className:`text-danger mt-1`,children:e.error.message}),_(e.error.step)]});if(!e.preflight)return(0,l.jsx)(`p`,{role:`status`,className:`text-xs text-muted-foreground italic`,children:`No preflight data.`});let t=e.preflight;return(0,l.jsxs)(`ul`,{role:`status`,"aria-live":`polite`,"aria-atomic":`true`,className:`space-y-1.5`,children:[(0,l.jsxs)(g,{ok:t.botUsername.length>0,label:`Bot identity`,children:[`@`,t.botUsername]}),(0,l.jsx)(g,{ok:t.chatTitle.length>0,label:`Supergroup reachable`,children:t.chatTitle}),(0,l.jsx)(g,{ok:t.isForum,label:`Forum topics enabled`,children:t.isForum?`is_forum: true`:`is_forum: false — the supergroup owner must enable Topics in team settings`}),(0,l.jsx)(g,{ok:t.hasManageTopics,label:`Bot has can_manage_topics`,children:t.hasManageTopics?`admin with can_manage_topics`:`promote the bot to admin in the supergroup with the "Manage topics" permission`}),(0,l.jsx)(g,{ok:t.privacyModeOff,label:`Privacy Mode is OFF`,children:t.privacyModeOff?`can_read_all_group_messages: true`:`BotFather → /mybots → select bot → Bot Settings → Team Privacy → Turn off`}),(0,l.jsx)(g,{ok:t.chatIsPrivate,label:`Supergroup is private`,children:t.chatIsPrivate?`no public @username`:`public groups expose topic content to readers`}),(0,l.jsx)(g,{ok:t.memberCount===2,label:`Expected membership`,children:t.memberCount===null?`member count unavailable — verify one owner plus the bot manually`:`${t.memberCount} members reported; secure posture is one owner plus the bot`}),t.ownerPresent!==null&&(0,l.jsx)(g,{ok:t.ownerPresent,label:`Paired owner is present`,children:t.ownerPresent?`owner membership confirmed`:`owner missing — Telegram ingress is degraded`})]})}function g({ok:e,label:t,children:n}){return(0,l.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,l.jsx)(`span`,{className:`mt-0.5 inline-flex h-4 w-4 items-center justify-center rounded-full text-[10px] font-bold leading-none ${e?`bg-success/10 text-success`:`bg-danger/10 text-danger`}`,"aria-hidden":!0,children:e?`✓`:`✕`}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`span`,{className:`font-medium`,children:t}),(0,l.jsx)(`span`,{className:`ml-2 text-xs ${e?`text-muted-foreground`:`text-danger`}`,children:n})]})]})}function _(e){switch(e){case`getMe`:return(0,l.jsx)(`p`,{className:`text-xs text-danger mt-1`,children:`The token is invalid or revoked. Re-issue with @BotFather → /token, or paste a fresh one above.`});case`getChat`:return(0,l.jsx)(`p`,{className:`text-xs text-danger mt-1`,children:`The chat id either doesn't exist, points at a basic team (not a supergroup), or the bot isn't a member. Forward any message from the supergroup to the bot to double-check the id, then add the bot to the team.`});case`getChatMember`:return(0,l.jsx)(`p`,{className:`text-xs text-danger mt-1`,children:`The bot is in the chat but the membership lookup failed. Usually means the bot was kicked or the chat id was migrated — confirm the bot is still in the supergroup.`})}}export{u as component};
|