bazilion 0.5.1 → 0.6.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.
Files changed (118) hide show
  1. package/README.md +14 -9
  2. package/dist/cli.js +365 -140
  3. package/dist/cli.js.map +1 -1
  4. package/dist/daemon.js +32 -14058
  5. package/dist/daemon.js.map +1 -1
  6. package/dist/web/client/assets/AgentAvatar-Cq7PVBE_.js +1 -0
  7. package/dist/web/client/assets/AgentTabs-M5K8emJ8.js +1 -0
  8. package/dist/web/client/assets/Button-BefUtjMZ.js +1 -0
  9. package/dist/web/client/assets/ChatPane-C8zQfpzH.js +74 -0
  10. package/dist/web/client/assets/ConfigTabs-DRqAymcN.js +1 -0
  11. package/dist/web/client/assets/FieldRow-BqWnxZiX.js +1 -0
  12. package/dist/web/client/assets/MembersEditor-B-47GLUb.js +1 -0
  13. package/dist/web/client/assets/SpawnTeamModal-DiiC7Nc0.js +1 -0
  14. package/dist/web/client/assets/TemplatesTabs-DB4KERTQ.js +1 -0
  15. package/dist/web/client/assets/_id-B7gv1aPQ.js +1 -0
  16. package/dist/web/client/assets/_id-C7d1AqS0.js +1 -0
  17. package/dist/web/client/assets/_id-DhiwjC8u.js +1 -0
  18. package/dist/web/client/assets/_id-p8lUuNFm.js +1 -0
  19. package/dist/web/client/assets/agents-v8G-wt0M.js +1 -0
  20. package/dist/web/client/assets/config-BdmYpS_y.js +3 -0
  21. package/dist/web/client/assets/groups-DiY_ExGM.js +1 -0
  22. package/dist/web/client/assets/inbox-DtfVx246.js +1 -0
  23. package/dist/web/client/assets/index-BQUL6oyH.js +12 -0
  24. package/dist/web/client/assets/login-CVS70W9g.js +1 -0
  25. package/dist/web/client/assets/mcp-BDLQq8OZ.js +1 -0
  26. package/dist/web/client/assets/memory-6GGuAXwx.js +1 -0
  27. package/dist/web/client/assets/profile-groups-BA8rwZMA.js +1 -0
  28. package/dist/web/client/assets/profiles-C0aAcPZg.js +1 -0
  29. package/dist/web/client/assets/routes-DgAhnKFw.js +1 -0
  30. package/dist/web/client/assets/services-BZ86QEah.js +1 -0
  31. package/dist/web/client/assets/skills-mv_NNNwo.js +1 -0
  32. package/dist/web/client/assets/styles-CmqUskDu.css +2 -0
  33. package/dist/web/client/assets/telegram-5f9WXs3x.js +1 -0
  34. package/dist/web/client/assets/tokens-DHiYsFUh.js +1 -0
  35. package/dist/web/client/assets/triggers-CjC8Ljrz.js +1 -0
  36. package/dist/web/client/assets/welcome-C-Cu-ziL.js +1 -0
  37. package/dist/web/client/assets/wire-constants-BkT5-597.js +1 -0
  38. package/dist/web/client/baziu.svg +8 -0
  39. package/dist/web/server/assets/AgentAvatar-8gTAy_tP.js +37 -0
  40. package/dist/web/server/assets/AgentTabs-BOjTN7QF.js +34 -0
  41. package/dist/web/server/assets/Button-Dsnw22OF.js +17 -0
  42. package/dist/web/server/assets/ChatPane-BvpswYvF.js +1084 -0
  43. package/dist/web/server/assets/ConfigTabs-CyuxzesF.js +41 -0
  44. package/dist/web/server/assets/FieldRow-DwyqycWI.js +94 -0
  45. package/dist/web/server/assets/MembersEditor-BWQztvrX.js +131 -0
  46. package/dist/web/server/assets/Sidebar-DmEiewRN.js +529 -0
  47. package/dist/web/server/assets/SpawnTeamModal-dSN421k_.js +107 -0
  48. package/dist/web/server/assets/TemplatesTabs---7h5GYa.js +30 -0
  49. package/dist/web/server/assets/_id-BZ-YCWSw.js +16 -0
  50. package/dist/web/server/assets/_id-Bm4-_AP-.js +367 -0
  51. package/dist/web/server/assets/_id-C78M9_j9.js +12 -0
  52. package/dist/web/server/assets/_id-CGZbudCl.js +28 -0
  53. package/dist/web/server/assets/_id-CHNm7EAd.js +161 -0
  54. package/dist/web/server/assets/_id-CrQbC5L8.js +16 -0
  55. package/dist/web/server/assets/_id-Crcw2HhT.js +38 -0
  56. package/dist/web/server/assets/_id-CvIGhq4U.js +16 -0
  57. package/dist/web/server/assets/_id-DF3pfi9M.js +27 -0
  58. package/dist/web/server/assets/_id-Dc8P9sy2.js +24 -0
  59. package/dist/web/server/assets/_id-GJk3EYTT.js +662 -0
  60. package/dist/web/server/assets/_id-pd4S7LTi.js +467 -0
  61. package/dist/web/server/assets/_tanstack-start-manifest_v-CPyKYMJg.js +174 -0
  62. package/dist/web/server/assets/agents-70EwQJR6.js +210 -0
  63. package/dist/web/server/assets/agents-Ds4lcREv.js +26 -0
  64. package/dist/web/server/assets/agents-K4Smhnq3.js +14 -0
  65. package/dist/web/server/assets/auth-DpAGLHpA.js +26 -0
  66. package/dist/web/server/assets/config-CMXUx_IF.js +19 -0
  67. package/dist/web/server/assets/config-DQbCsY_l.js +382 -0
  68. package/dist/web/server/assets/config-DxCGYgR9.js +12 -0
  69. package/dist/web/server/assets/createServerRpc-CBTntoKx.js +12 -0
  70. package/dist/web/server/assets/createSsrRpc-DHBVUN8O.js +16 -0
  71. package/dist/web/server/assets/daemon-client-2NRMzlTr.js +96 -0
  72. package/dist/web/server/assets/empty-plugin-adapters-Bos_V2s-.js +5 -0
  73. package/dist/web/server/assets/groups-CXVew7BP.js +150 -0
  74. package/dist/web/server/assets/groups-Cms8cvH5.js +12 -0
  75. package/dist/web/server/assets/groups-Dmcvw5ya.js +21 -0
  76. package/dist/web/server/assets/inbox-0QfwsrGo.js +27 -0
  77. package/dist/web/server/assets/inbox-8HybA2Ws.js +133 -0
  78. package/dist/web/server/assets/inbox-B7UWoICA.js +42 -0
  79. package/dist/web/server/assets/login-CNznncgA.js +58 -0
  80. package/dist/web/server/assets/login-CQybKk7Y.js +74 -0
  81. package/dist/web/server/assets/mcp-42BrkI1I.js +12 -0
  82. package/dist/web/server/assets/mcp-DIa0kIOf.js +268 -0
  83. package/dist/web/server/assets/mcp-DsTjY3uz.js +12 -0
  84. package/dist/web/server/assets/memory-BfrMp8iY.js +284 -0
  85. package/dist/web/server/assets/memory-Dr0lOM2y.js +28 -0
  86. package/dist/web/server/assets/memory-EEgLDfCj.js +16 -0
  87. package/dist/web/server/assets/profile-groups-BW5gU-fG.js +12 -0
  88. package/dist/web/server/assets/profile-groups-B_kIT6BU.js +208 -0
  89. package/dist/web/server/assets/profile-groups-C5isDI2t.js +28 -0
  90. package/dist/web/server/assets/profiles-BP1v-jna.js +453 -0
  91. package/dist/web/server/assets/profiles-BbPTpmyq.js +26 -0
  92. package/dist/web/server/assets/profiles-Cy5auEj8.js +12 -0
  93. package/dist/web/server/assets/router-CL100-Ly.js +460 -0
  94. package/dist/web/server/assets/routes-CzJLQxcS.js +14 -0
  95. package/dist/web/server/assets/routes-D2H1Hnoh.js +57 -0
  96. package/dist/web/server/assets/routes-Dzk8jvIo.js +33 -0
  97. package/dist/web/server/assets/services-Bgj6M2gC.js +12 -0
  98. package/dist/web/server/assets/services-DEgYsWJ4.js +17 -0
  99. package/dist/web/server/assets/services-DFenjiw0.js +94 -0
  100. package/dist/web/server/assets/skills-BASIP_rT.js +12 -0
  101. package/dist/web/server/assets/skills-C-JPRCHh.js +12 -0
  102. package/dist/web/server/assets/skills-DZXN680t.js +261 -0
  103. package/dist/web/server/assets/start-cOXH7eTI.js +4 -0
  104. package/dist/web/server/assets/telegram-BbvqVWxa.js +583 -0
  105. package/dist/web/server/assets/telegram-Bq49AtnP.js +12 -0
  106. package/dist/web/server/assets/telegram-sUckI94O.js +12 -0
  107. package/dist/web/server/assets/tokens-BERRE0wB.js +14 -0
  108. package/dist/web/server/assets/tokens-CImgxhDI.js +193 -0
  109. package/dist/web/server/assets/tokens-Dwn00iV7.js +12 -0
  110. package/dist/web/server/assets/triggers-DtexqbNH.js +16 -0
  111. package/dist/web/server/assets/triggers-TyIjwSYn.js +26 -0
  112. package/dist/web/server/assets/triggers-_iSeahif.js +191 -0
  113. package/dist/web/server/assets/welcome-BkQ9NC5K.js +81 -0
  114. package/dist/web/server/assets/wire-constants-Deb4NxBb.js +16 -0
  115. package/dist/web/server/server.js +5899 -0
  116. package/dist/web-server.js +42 -0
  117. package/dist/web-server.js.map +1 -0
  118. package/package.json +10 -4
@@ -0,0 +1 @@
1
+ import{E as e,b as t,x as n,y as r}from"./index-BQUL6oyH.js";var i=e();function a(){let{error:e}=r.useSearch();return(0,i.jsxs)(`main`,{className:`relative flex min-h-dvh items-center justify-center bg-cream`,children:[(0,i.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0`,style:{background:`radial-gradient(circle at 20% 15%, rgba(74,124,155,0.12), transparent 55%), radial-gradient(circle at 80% 85%, rgba(196,135,138,0.10), transparent 55%)`}}),(0,i.jsxs)(`div`,{className:`relative w-full max-w-sm rounded-[16px] border border-frost bg-snow p-8 text-center shadow-baziu-md`,children:[(0,i.jsx)(t,{className:`mx-auto mb-3 h-16 w-16`}),(0,i.jsx)(`h1`,{className:`font-display text-[2rem] tracking-tight text-charcoal`,children:`bazilion`}),e&&(0,i.jsx)(`div`,{className:`err mt-4`,children:`invalid token`}),(0,i.jsxs)(`form`,{method:`POST`,action:`/api/login`,className:`mt-6 text-left`,children:[(0,i.jsx)(`label`,{htmlFor:`token`,className:`block text-[0.85em] font-medium text-mocha`,children:`Token`}),(0,i.jsx)(`input`,{type:`password`,id:`token`,name:`token`,autoFocus:!0,required:!0,placeholder:`paste from auth.json`,className:`mb-5`}),(0,i.jsx)(`button`,{type:`submit`,className:`w-full`,children:`log in`})]}),(0,i.jsxs)(`p`,{className:`mt-5 text-[0.78em] leading-relaxed text-mocha-light`,children:[`Your token is in `,(0,i.jsx)(`code`,{children:`~/.bazilion/auth.json`}),(0,i.jsx)(`br`,{}),`created on first `,(0,i.jsx)(`code`,{children:`bazilion dashboard`}),` or `,(0,i.jsx)(`code`,{children:`bazilion serve`})]})]}),(0,i.jsxs)(`footer`,{className:`absolute bottom-4 left-0 right-0 text-center text-[0.78em] text-fawn`,children:[`dedicated to Baziu`,(0,i.jsx)(n,{className:`ml-1 inline-block h-3 w-3 align-[-1px] opacity-40`})]})]})}export{a as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,s as i}from"./index-BQUL6oyH.js";import{t as a}from"./ConfigTabs-DRqAymcN.js";var o=n(e()),s=t(),c=[`stdio`,`http`,`sse`];function l(){let{servers:e}=i.useLoaderData(),t=r(),[n,l]=(0,o.useState)(``),[u,d]=(0,o.useState)(`stdio`),[f,p]=(0,o.useState)(``),[m,h]=(0,o.useState)(``),[g,_]=(0,o.useState)(``),[v,y]=(0,o.useState)(``),[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(!1),[w,T]=(0,o.useState)({});async function E(e){e.preventDefault(),x(null),C(!0);try{let e={name:n,transport:u,command:u===`stdio`?f:null,args:u===`stdio`?m.split(` `).filter(Boolean):[],url:u===`stdio`?null:g,authToken:v||void 0},r=await fetch(`/api/mcp-servers`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`${r.status} ${r.statusText}`)}l(``),p(``),h(``),_(``),y(``),await t.invalidate()}catch(e){x(e.message)}finally{C(!1)}}async function D(e){await fetch(`/api/mcp-servers/${e.id}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:!e.enabled})}),await t.invalidate()}async function O(e){await fetch(`/api/mcp-servers/${e}`,{method:`DELETE`}),await t.invalidate()}async function k(e){T(t=>({...t,[e]:`connecting…`}));let t=await(await fetch(`/api/mcp-servers/${e}/test`,{method:`POST`})).json().catch(()=>({}));T(n=>({...n,[e]:t.ok?`✓ ${t.tools?.length??0} tools: ${(t.tools??[]).map(e=>e.name).join(`, `)}`:`✗ ${t.error??`failed`}`}))}return(0,s.jsxs)(`main`,{className:`mx-auto max-w-5xl px-6 py-8`,children:[(0,s.jsx)(`h1`,{className:`font-serif text-3xl text-foreground mb-2`,children:`config`}),(0,s.jsx)(a,{active:`mcp`}),(0,s.jsxs)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:[`Model Context Protocol servers. Each enabled server's tools are exposed to every agent, namespaced `,(0,s.jsx)(`code`,{className:`font-mono`,children:`mcp__<server>__<tool>`}),`. stdio servers run as local subprocesses and inherit your configured secrets; http/sse servers connect to a remote endpoint with an optional bearer token.`]}),(0,s.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-6`,children:[(0,s.jsx)(`h3`,{className:`font-serif text-xl mb-3`,children:`Add a server`}),(0,s.jsxs)(`form`,{onSubmit:E,className:`space-y-3`,children:[(0,s.jsxs)(`div`,{className:`flex gap-3 flex-wrap items-end`,children:[(0,s.jsxs)(`label`,{className:`text-sm`,children:[`Name`,(0,s.jsx)(`input`,{type:`text`,value:n,onChange:e=>l(e.target.value),required:!0,placeholder:`playwright`,pattern:`[a-zA-Z0-9_]+`,className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm w-48`})]}),(0,s.jsxs)(`label`,{className:`text-sm`,children:[`Transport`,(0,s.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm`,children:c.map(e=>(0,s.jsx)(`option`,{value:e,children:e},e))})]})]}),u===`stdio`?(0,s.jsxs)(`div`,{className:`flex gap-3 flex-wrap items-end`,children:[(0,s.jsxs)(`label`,{className:`text-sm`,children:[`Command`,(0,s.jsx)(`input`,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`npx`,className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm w-48`})]}),(0,s.jsxs)(`label`,{className:`text-sm flex-1`,children:[`Args (space-separated)`,(0,s.jsx)(`input`,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`-y @modelcontextprotocol/server-filesystem /tmp`,className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm w-full`})]})]}):(0,s.jsxs)(`div`,{className:`flex gap-3 flex-wrap items-end`,children:[(0,s.jsxs)(`label`,{className:`text-sm flex-1`,children:[`URL`,(0,s.jsx)(`input`,{type:`url`,value:g,onChange:e=>_(e.target.value),placeholder:`https://mcp.example.com/sse`,className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm w-full`})]}),(0,s.jsxs)(`label`,{className:`text-sm`,children:[`Bearer token (optional)`,(0,s.jsx)(`input`,{type:`password`,value:v,onChange:e=>y(e.target.value),autoComplete:`off`,className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm w-56`})]})]}),(0,s.jsx)(`button`,{type:`submit`,disabled:S,className:`rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50`,children:S?`adding…`:`add server`}),b&&(0,s.jsx)(`p`,{className:`text-sm text-rose-700`,children:b})]})]}),(0,s.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,s.jsx)(`thead`,{className:`text-left text-muted-foreground border-b`,children:(0,s.jsxs)(`tr`,{children:[(0,s.jsx)(`th`,{className:`py-2`,children:`name`}),(0,s.jsx)(`th`,{children:`transport`}),(0,s.jsx)(`th`,{children:`target`}),(0,s.jsx)(`th`,{children:`state`}),(0,s.jsx)(`th`,{})]})}),(0,s.jsxs)(`tbody`,{children:[e.length===0&&(0,s.jsx)(`tr`,{children:(0,s.jsx)(`td`,{colSpan:5,className:`py-6 text-center text-muted-foreground italic`,children:`no MCP servers yet — add one above`})}),e.map(e=>(0,s.jsxs)(`tr`,{className:`border-b last:border-0 align-top`,children:[(0,s.jsxs)(`td`,{className:`py-2`,children:[e.name,e.hasAuthToken&&(0,s.jsx)(`span`,{className:`ml-2 text-[0.7em] uppercase tracking-wide text-muted-foreground`,children:`auth`}),w[e.id]&&(0,s.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1 break-all`,children:w[e.id]})]}),(0,s.jsx)(`td`,{children:e.transport}),(0,s.jsx)(`td`,{className:`font-mono text-xs break-all`,children:e.transport===`stdio`?`${e.command??``} ${e.args.join(` `)}`.trim():e.url}),(0,s.jsx)(`td`,{children:e.enabled?(0,s.jsx)(`span`,{className:`text-emerald-700`,children:`enabled`}):(0,s.jsx)(`span`,{className:`text-muted-foreground`,children:`disabled`})}),(0,s.jsxs)(`td`,{className:`space-x-2 whitespace-nowrap`,children:[(0,s.jsx)(`button`,{type:`button`,onClick:()=>k(e.id),className:`rounded-md border px-2 py-1 text-xs hover:bg-accent`,children:`test`}),(0,s.jsx)(`button`,{type:`button`,onClick:()=>D(e),className:`rounded-md border px-2 py-1 text-xs hover:bg-accent`,children:e.enabled?`disable`:`enable`}),(0,s.jsx)(`button`,{type:`button`,onClick:()=>O(e.id),className:`rounded-md border px-2 py-1 text-xs text-rose-700 hover:bg-rose-50`,children:`delete`})]})]},e.id))]})]})]})}export{l as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,i as r}from"./index-BQUL6oyH.js";var i=n(e()),a=t();function o(e){return e.split(`/`).map(encodeURIComponent).join(`/`)}function s(){let{group:e,memberCount:t,entries:n}=r.useLoaderData(),s=e.id,[c,l]=(0,i.useState)(()=>n.map(e=>({key:e.key,preview:e.content.slice(0,80)}))),[u,d]=(0,i.useState)(!1),[f,p]=(0,i.useState)(``),[m,h]=(0,i.useState)(null),[g,_]=(0,i.useState)(`none`),[v,y]=(0,i.useState)(``),[b,x]=(0,i.useState)(``),[S,C]=(0,i.useState)(null),w=(0,i.useRef)(null);async function T(e){try{let t=e.trim().length>0?`/api/groups/${encodeURIComponent(s)}/memory/search?q=${encodeURIComponent(e)}&limit=50`:`/api/groups/${encodeURIComponent(s)}/memory`,n=await fetch(t);if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??n.statusText)}let r=await n.json();e.trim().length>0?(l(r.map(e=>({key:e.key,preview:e.snippet,score:e.score}))),d(!0)):(l(r.map(e=>({key:e.key,preview:e.content.slice(0,80)}))),d(!1))}catch(e){C({msg:`error: ${e.message}`,kind:`error`})}}(0,i.useEffect)(()=>(w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{T(f)},200),()=>{w.current&&clearTimeout(w.current)}),[f]);async function E(e){h(e),_(`edit`),C({msg:`loading…`,kind:`info`});try{let t=await fetch(`/api/groups/${encodeURIComponent(s)}/memory/${o(e)}`);if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error??t.statusText)}let n=await t.json();y(n.key),x(n.content??``),C({msg:`loaded ${n.key}`,kind:`info`})}catch(e){C({msg:`error: ${e.message}`,kind:`error`})}}function D(){h(null),_(`new`),y(``),x(``),C({msg:`new entry — type a key and content, then save`,kind:`info`})}async function O(){let e=v.trim();if(!e){C({msg:`key is required`,kind:`error`});return}try{let t=await fetch(`/api/groups/${encodeURIComponent(s)}/memory/${o(e)}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({content:b})});if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error??t.statusText)}h(e),_(`edit`),C({msg:`saved`,kind:`info`}),await T(f)}catch(e){C({msg:`error: ${e.message}`,kind:`error`})}}async function k(){if(m&&confirm(`delete ${m}?`))try{let e=await fetch(`/api/groups/${encodeURIComponent(s)}/memory/${o(m)}`,{method:`DELETE`});if(!e.ok&&e.status!==204){let t=await e.json().catch(()=>null);throw Error(t?.error??e.statusText)}h(null),_(`none`),y(``),x(``),C({msg:`deleted`,kind:`info`}),await T(f)}catch(e){C({msg:`error: ${e.message}`,kind:`error`})}}let A=g!==`none`&&v.trim().length>0,j=g===`edit`&&m!==null;return(0,a.jsxs)(`main`,{className:`mx-auto max-w-5xl px-6 py-8`,children:[(0,a.jsxs)(`header`,{className:`mb-6`,children:[(0,a.jsxs)(`h1`,{className:`font-serif text-3xl text-foreground`,children:[e.name,` `,(0,a.jsx)(`span`,{className:`text-muted-foreground text-base`,children:`/ shared memory`})]}),(0,a.jsxs)(`p`,{className:`text-muted-foreground text-sm mt-1`,children:[`BM25-indexed markdown notes shared by every agent in`,` `,(0,a.jsx)(`a`,{href:`/groups/${encodeURIComponent(e.id)}`,className:`font-mono underline`,children:e.id}),` `,`(`,t,` member`,t===1?``:`s`,`). Anything written here is visible to every member; per-agent notes belong in the agent's own`,` `,(0,a.jsx)(`code`,{className:`font-mono`,children:`IDENTITY.md`}),` via `,(0,a.jsx)(`code`,{children:`home_write`}),`.`]})]}),(0,a.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-[320px_1fr]`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsxs)(`div`,{className:`overflow-hidden rounded-[16px] border border-frost bg-snow`,children:[(0,a.jsx)(`div`,{className:`border-b border-frost p-2`,children:(0,a.jsx)(`input`,{type:`text`,placeholder:`search (BM25)...`,autoComplete:`off`,value:f,onChange:e=>p(e.target.value)})}),(0,a.jsx)(`div`,{className:`max-h-[520px] overflow-y-auto`,children:c.length===0?(0,a.jsx)(`div`,{className:`p-8 text-center text-mocha-light`,children:`no entries`}):c.map(e=>(0,a.jsxs)(`button`,{type:`button`,onClick:()=>E(e.key),className:`unstyled block w-full cursor-pointer border-b border-frost/50 px-3.5 py-2 text-left font-mono text-[0.84em] transition-colors last:border-b-0 hover:bg-sapphire-glow ${e.key===m?`bg-sapphire-glow font-medium text-sapphire-deep`:``}`,children:[u&&e.score!==void 0&&(0,a.jsx)(`span`,{className:`float-right text-[0.75em] text-sapphire`,children:e.score.toFixed(2)}),e.key,e.preview&&(0,a.jsx)(`span`,{className:`mt-1 block text-[0.9em] font-normal text-mocha-light`,children:e.preview})]},e.key))})]}),(0,a.jsx)(`button`,{type:`button`,className:`ghost-btn mt-3 w-full`,onClick:D,children:`+ new entry`})]}),(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`div`,{className:`mb-3 flex items-center gap-2`,children:(0,a.jsx)(`input`,{type:`text`,placeholder:`key (e.g. prefs/hiking.md)`,value:v,onChange:e=>y(e.target.value),disabled:g!==`new`,className:`flex-1 font-mono`})}),(0,a.jsx)(`textarea`,{placeholder:`select an entry on the left, or create a new one.`,value:b,onChange:e=>x(e.target.value),className:`min-h-[360px] w-full font-mono text-[0.9em] leading-[1.55]`}),(0,a.jsxs)(`div`,{className:`mt-3 flex gap-2`,children:[(0,a.jsx)(`button`,{type:`button`,className:`btn-primary`,onClick:O,disabled:!A,children:`save`}),(0,a.jsx)(`button`,{type:`button`,className:`ghost-btn`,onClick:k,disabled:!j,children:`delete`})]}),S&&(0,a.jsx)(`p`,{className:`mt-2 text-[0.9em] ${S.kind===`error`?`text-[#9B3D3D]`:`text-mocha-light`}`,children:S.msg})]})]})]})}export{s as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,h as i}from"./index-BQUL6oyH.js";import{t as a}from"./Button-BefUtjMZ.js";import{t as o}from"./SpawnTeamModal-DiiC7Nc0.js";import{t as s}from"./MembersEditor-B-47GLUb.js";import{t as c}from"./TemplatesTabs-DB4KERTQ.js";var l=n(e()),u=t();function d(){let{profileGroups:e,groups:t,profiles:n,modelGroups:s,userMdDefault:d}=i.useLoaderData(),p=r(),[m,h]=(0,l.useState)(null);async function g(e){if(!confirm(`delete this profile group? (does not affect spawned agents)`))return;let t=await fetch(`/api/profile-groups/${e}`,{method:`DELETE`});if(!t.ok&&t.status!==204){let e=await t.json().catch(()=>null);alert(e?.error??t.statusText);return}await p.invalidate()}return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(c,{}),(0,u.jsx)(`h1`,{children:`profile groups`}),(0,u.jsx)(`p`,{className:`muted`,children:`A profile group is a reusable team template. Each one holds an ordered list of members — profile + agent-name + optional overrides — that get replayed as a single transactional spawn into a target group.`}),(0,u.jsx)(f,{profiles:n,modelGroups:s,userMdDefault:d,onCreated:()=>p.invalidate()}),(0,u.jsxs)(`table`,{children:[(0,u.jsx)(`thead`,{children:(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`th`,{children:`id`}),(0,u.jsx)(`th`,{children:`name`}),(0,u.jsx)(`th`,{children:`members`}),(0,u.jsx)(`th`,{})]})}),(0,u.jsxs)(`tbody`,{children:[e.length===0&&(0,u.jsx)(`tr`,{children:(0,u.jsx)(`td`,{colSpan:4,className:`muted`,children:`no profile groups yet`})}),e.map(e=>(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`td`,{children:(0,u.jsx)(`a`,{href:`/profile-groups/${e.id}`,children:(0,u.jsx)(`code`,{children:e.id})})}),(0,u.jsx)(`td`,{children:e.name}),(0,u.jsx)(`td`,{children:e.memberCount}),(0,u.jsxs)(`td`,{className:`flex gap-2`,children:[(0,u.jsx)(a,{variant:`primary`,disabled:e.memberCount===0,title:e.memberCount===0?`add at least one member before spawning`:void 0,onClick:()=>h(e.id),children:`spawn team`}),(0,u.jsx)(a,{variant:`danger`,onClick:()=>g(e.id),children:`delete`})]})]},e.id))]})]}),m&&(0,u.jsx)(o,{profileGroup:e.find(e=>e.id===m),groups:t,onClose:()=>h(null),onSpawned:e=>{h(null),p.navigate({to:`/groups/$id`,params:{id:e}})}})]})}function f({profiles:e,modelGroups:t,userMdDefault:n,onCreated:r}){let[i,o]=(0,l.useState)(``),[c,d]=(0,l.useState)(``),[f,p]=(0,l.useState)(n),[m,h]=(0,l.useState)([]),[g,_]=(0,l.useState)(null),[v,y]=(0,l.useState)(!1);async function b(e){if(e.preventDefault(),_(null),!i.trim()){_(`id is required`);return}y(!0);try{let e={id:i.trim()};c.trim()&&(e.name=c.trim()),f&&(e.userMd=f);let t=await fetch(`/api/profile-groups`,{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??t.statusText)}if(m.length>0){let e=await fetch(`/api/profile-groups/${i.trim()}/members`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({members:m})});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(`group created, member save failed: ${t?.error??e.statusText}`)}}o(``),d(``),p(n),h([]),r()}catch(e){_(e.message)}finally{y(!1)}}return(0,u.jsxs)(`form`,{className:`card`,onSubmit:b,children:[(0,u.jsx)(`h3`,{children:`create profile group`}),g&&(0,u.jsx)(`div`,{className:`err`,children:g}),(0,u.jsxs)(`div`,{className:`flex gap-4`,children:[(0,u.jsxs)(`label`,{className:`flex-1`,children:[`id (slug)`,(0,u.jsx)(`input`,{value:i,onChange:e=>o(e.target.value),required:!0,placeholder:`platform-team`})]}),(0,u.jsxs)(`label`,{className:`flex-1`,children:[`name`,(0,u.jsx)(`input`,{value:c,onChange:e=>d(e.target.value),placeholder:`Platform Team`})]})]}),(0,u.jsxs)(`label`,{children:[`starter USER.md (seeded into freshly-created target groups; prefilled with the built-in default — edit to customise)`,(0,u.jsx)(`textarea`,{rows:3,value:f,onChange:e=>p(e.target.value),className:`font-mono text-[0.88em] leading-[1.55]`})]}),(0,u.jsxs)(`div`,{className:`mt-4`,children:[(0,u.jsx)(`h4`,{className:`mb-1 text-[0.95em] font-medium`,children:`members`}),(0,u.jsxs)(`p`,{className:`muted mb-2 text-[0.88em]`,children:[`Each member becomes one agent when the team is spawned. You can also configure members later from the detail page.`,` `,e.length>0&&(0,u.jsxs)(u.Fragment,{children:[`Available profiles:`,` `,e.map((e,t)=>(0,u.jsxs)(`span`,{children:[t>0&&`, `,(0,u.jsx)(`code`,{children:e.id})]},e.id)),`.`]})]}),(0,u.jsx)(s,{members:m,onChange:h,profiles:e,modelGroups:t,emptyHint:`No members configured yet — add one to pick a profile for each team member.`})]}),(0,u.jsx)(`div`,{className:`mt-4`,children:(0,u.jsx)(a,{variant:`primary`,type:`submit`,disabled:v,children:v?`creating…`:`create`})})]})}export{d as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,g as i}from"./index-BQUL6oyH.js";import{t as a}from"./Button-BefUtjMZ.js";import{t as o}from"./TemplatesTabs-DB4KERTQ.js";var s=n(e()),c=t();function l(){let{profiles:e,modelGroups:t,skills:n,templates:s}=i.useLoaderData(),l=r();async function d(e){if(!confirm(`delete profile and all its files?`))return;let t=await fetch(`/api/profiles/${e}`,{method:`DELETE`});if(!t.ok&&t.status!==204){let e=await t.json().catch(()=>null);alert(e?.error??t.statusText);return}await l.invalidate()}return(0,c.jsxs)(`div`,{children:[(0,c.jsx)(o,{}),(0,c.jsx)(`h1`,{children:`profiles`}),(0,c.jsx)(`p`,{className:`muted`,children:`A profile is a spawn template — SOUL/IDENTITY templates, a default model, a skills policy. Agents choose a group at spawn time, independent of their profile.`}),(0,c.jsx)(u,{modelGroups:t,skills:n,templates:s,onCreated:()=>l.invalidate()}),(0,c.jsxs)(`table`,{children:[(0,c.jsx)(`thead`,{children:(0,c.jsxs)(`tr`,{children:[(0,c.jsx)(`th`,{children:`id`}),(0,c.jsx)(`th`,{children:`name`}),(0,c.jsx)(`th`,{children:`model`}),(0,c.jsx)(`th`,{children:`agents`}),(0,c.jsx)(`th`,{children:`skills`}),(0,c.jsx)(`th`,{})]})}),(0,c.jsxs)(`tbody`,{children:[e.length===0&&(0,c.jsx)(`tr`,{children:(0,c.jsx)(`td`,{colSpan:6,className:`muted`,children:`no profiles yet`})}),e.map(e=>{let t=e.skillsMode===`all`?`all`:e.defaultSkills.length===0?`—`:e.defaultSkills.join(`, `);return(0,c.jsxs)(`tr`,{children:[(0,c.jsx)(`td`,{children:(0,c.jsx)(`a`,{href:`/profiles/${e.id}`,children:(0,c.jsx)(`code`,{children:e.id})})}),(0,c.jsx)(`td`,{children:e.name}),(0,c.jsx)(`td`,{children:(0,c.jsx)(`code`,{children:e.defaultModel})}),(0,c.jsx)(`td`,{children:e.agentCount}),(0,c.jsx)(`td`,{className:`text-xs text-mocha-light`,children:t}),(0,c.jsx)(`td`,{children:e.agentCount===0?(0,c.jsx)(a,{variant:`danger`,onClick:()=>d(e.id),children:`delete`}):(0,c.jsx)(`span`,{className:`muted`,title:`${e.agentCount} agent(s) use this profile`,children:`in use`})})]},e.id)})]})]})]})}function u({modelGroups:e,skills:t,templates:n,onCreated:r}){let[i,o]=(0,s.useState)(`basics`),[l,u]=(0,s.useState)(``),[p,m]=(0,s.useState)(``),[h,g]=(0,s.useState)(``),[_,v]=(0,s.useState)(n.soul),[y,b]=(0,s.useState)(n.identity),[x,S]=(0,s.useState)(n.bootstrap),[C,w]=(0,s.useState)(!0),[T,E]=(0,s.useState)(n.agents),[D,O]=(0,s.useState)(!0),[k,A]=(0,s.useState)(n.tools),[j,M]=(0,s.useState)(!0),[N,P]=(0,s.useState)(n.heartbeat),[F,I]=(0,s.useState)(!1);function L(e,t,n){t(n),!n&&i===e&&o(`basics`)}let[R,z]=(0,s.useState)(`all`),[B,V]=(0,s.useState)(new Set),[H,U]=(0,s.useState)(null),[W,G]=(0,s.useState)(!1);function K(e){V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function q(e){if(e.preventDefault(),U(null),!l.trim()){U(`id is required`);return}if(!h.trim()){U(`default model is required`);return}G(!0);try{let e={id:l.trim(),name:p.trim()||void 0,model:h.trim(),skillsMode:R,defaultSkills:R===`selected`?Array.from(B):[],soul:_,identity:y,bootstrap:C?x:null,agents:D?T:null,tools:j?k:null,heartbeat:F?N:null},t=await fetch(`/api/profiles`,{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??t.statusText)}u(``),m(``),g(``),w(!0),E(n.agents),O(!0),A(n.tools),M(!0),P(n.heartbeat),I(!1),V(new Set),z(`all`),o(`basics`),r()}catch(e){U(e.message)}finally{G(!1)}}return(0,c.jsxs)(`form`,{className:`card`,onSubmit:q,children:[(0,c.jsx)(`h3`,{children:`create profile`}),H&&(0,c.jsx)(`div`,{className:`err`,children:H}),(0,c.jsx)(d,{items:[{id:`basics`,label:`basics`},{id:`soul`,label:`SOUL`},{id:`identity`,label:`IDENTITY`},{id:`bootstrap`,label:`BOOTSTRAP`,disabled:!C},{id:`agents`,label:`AGENTS`,disabled:!D},{id:`tools`,label:`TOOLS`,disabled:!j},{id:`heartbeat`,label:`HEARTBEAT`,disabled:!F},{id:`skills`,label:`skills`}],active:i,onChange:e=>o(e)}),(0,c.jsxs)(`fieldset`,{className:`mb-5 rounded-md border border-frost p-3`,children:[(0,c.jsx)(`legend`,{className:`px-1 text-[0.85em] font-medium text-mocha`,children:`templates to include`}),(0,c.jsxs)(`div`,{className:`flex flex-wrap gap-x-5 gap-y-2 text-[0.9em]`,children:[(0,c.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 opacity-60`,title:`always included`,children:[(0,c.jsx)(`input`,{type:`checkbox`,defaultChecked:!0,disabled:!0}),` SOUL.md`]}),(0,c.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 opacity-60`,title:`always included`,children:[(0,c.jsx)(`input`,{type:`checkbox`,defaultChecked:!0,disabled:!0}),` IDENTITY.md`]}),(0,c.jsxs)(`label`,{className:`inline-flex cursor-pointer items-center gap-1.5`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:C,onChange:e=>L(`bootstrap`,w,e.target.checked)}),`BOOTSTRAP.md`]}),(0,c.jsxs)(`label`,{className:`inline-flex cursor-pointer items-center gap-1.5`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:D,onChange:e=>L(`agents`,O,e.target.checked)}),`AGENTS.md`]}),(0,c.jsxs)(`label`,{className:`inline-flex cursor-pointer items-center gap-1.5`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:j,onChange:e=>L(`tools`,M,e.target.checked)}),`TOOLS.md`]}),(0,c.jsxs)(`label`,{className:`inline-flex cursor-pointer items-center gap-1.5`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:F,onChange:e=>L(`heartbeat`,I,e.target.checked)}),`HEARTBEAT.md`]})]}),(0,c.jsx)(`p`,{className:`muted mt-2 text-[0.8em]`,children:`Disabled files aren't created for this profile. Each spawned agent gets its own copy of the enabled files at spawn time.`})]}),i===`basics`&&(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`div`,{className:`flex gap-4`,children:[(0,c.jsxs)(`label`,{className:`flex-1`,children:[`id (slug)`,(0,c.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),required:!0})]}),(0,c.jsxs)(`label`,{className:`flex-1`,children:[`name`,(0,c.jsx)(`input`,{value:p,onChange:e=>m(e.target.value)})]})]}),(0,c.jsxs)(`label`,{children:[`default model`,e.length===0?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`select`,{disabled:!0,children:(0,c.jsx)(`option`,{children:`(no models available)`})}),(0,c.jsxs)(`span`,{className:`muted text-[0.85em]`,children:[`Enable a provider and curate models on `,(0,c.jsx)(`a`,{href:`/config`,children:`/config`}),` first.`]})]}):(0,c.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),required:!0,children:[(0,c.jsx)(`option`,{value:``,children:`-- pick a model --`}),e.map(e=>(0,c.jsx)(`optgroup`,{label:e.provider,children:e.models.map(t=>(0,c.jsx)(`option`,{value:`${e.provider}:${t}`,children:`${e.provider}:${t}`},t))},e.provider))]})]})]}),i===`soul`&&(0,c.jsx)(f,{label:`SOUL.md`,hint:`Persona, values, and operating principles. Injected into every session.`,value:_,onChange:v,rows:16}),i===`identity`&&(0,c.jsx)(f,{label:`IDENTITY.md`,hint:`Name, creature, vibe, emoji, avatar — filled in during the bootstrap ritual.`,value:y,onChange:b,rows:12}),i===`bootstrap`&&(0,c.jsx)(f,{label:`BOOTSTRAP.md`,hint:`One-time first-run ritual. The agent retires it once introductions are done.`,value:x,onChange:S,rows:16}),i===`agents`&&(0,c.jsx)(f,{label:`AGENTS.md`,hint:`The workspace operating manual — memory discipline, red lines, channel etiquette.`,value:T,onChange:E,rows:16}),i===`tools`&&(0,c.jsx)(f,{label:`TOOLS.md`,hint:`Agent-specific tool notes and environment facts beyond the generic tool descriptions.`,value:k,onChange:A,rows:14}),i===`heartbeat`&&(0,c.jsx)(f,{label:`HEARTBEAT.md`,hint:`Optional checklist run on scheduled wake-ups. Pair with an interval/cron trigger.`,value:N,onChange:P,rows:12}),i===`skills`&&(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`p`,{className:`muted my-2`,children:`Choose which skills agents inherit at spawn time. In both modes each agent can still attach or detach skills individually after it's spawned.`}),(0,c.jsxs)(`label`,{className:`flex items-start gap-2 my-2 cursor-pointer`,children:[(0,c.jsx)(`input`,{type:`radio`,name:`skillsMode`,value:`all`,checked:R===`all`,onChange:()=>z(`all`)}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:`allow all skills`}),` — every skill on disk is attached when an agent is spawned.`]})]}),(0,c.jsxs)(`label`,{className:`flex items-start gap-2 my-2 cursor-pointer`,children:[(0,c.jsx)(`input`,{type:`radio`,name:`skillsMode`,value:`selected`,checked:R===`selected`,onChange:()=>z(`selected`)}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:`select skills`}),` — attach only the ones you pick below.`]})]}),(0,c.jsx)(`div`,{className:`mt-3 max-h-[22rem] overflow-y-auto rounded-md border border-frost p-3 ${R===`all`?`opacity-50 pointer-events-none`:``}`,children:t.length===0?(0,c.jsxs)(`p`,{className:`muted`,children:[`No skills installed yet. Import some on `,(0,c.jsx)(`a`,{href:`/skills`,children:`/skills`}),`.`]}):t.map(e=>(0,c.jsxs)(`label`,{className:`my-1.5 flex cursor-pointer items-start gap-2`,children:[(0,c.jsx)(`input`,{type:`checkbox`,checked:B.has(e.name),onChange:()=>K(e.name)}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`code`,{children:e.name}),e.description&&(0,c.jsxs)(`span`,{className:`text-[0.9em] text-mocha-light`,children:[` — `,e.description]})]})]},e.name))})]}),(0,c.jsx)(`div`,{className:`mt-5 flex gap-2`,children:(0,c.jsx)(a,{variant:`primary`,type:`submit`,disabled:W,children:W?`creating…`:`create`})})]})}function d({items:e,active:t,onChange:n}){return(0,c.jsx)(`nav`,{role:`tablist`,className:`-mb-px mb-5 flex flex-wrap gap-1 border-b border-frost`,children:e.map(e=>(0,c.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e.id,disabled:e.disabled,title:e.disabled?`disabled — enable it in “templates to include”`:void 0,onClick:()=>n(e.id),className:`unstyled border-b-2 bg-transparent px-4 py-2 text-[0.9em] font-medium transition-colors ${e.disabled?`cursor-not-allowed border-transparent text-mocha-light/40`:t===e.id?`cursor-pointer border-sapphire text-sapphire`:`cursor-pointer border-transparent text-mocha hover:text-sapphire`}`,children:e.label},e.id))})}function f({label:e,hint:t,value:n,onChange:r,rows:i}){return(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`p`,{className:`muted my-2 text-[0.85em]`,children:t}),(0,c.jsxs)(`label`,{children:[e,(0,c.jsx)(`textarea`,{rows:i,value:n,onChange:e=>r(e.target.value),className:`font-mono text-[0.88em] leading-[1.55]`})]})]})}export{l as component};
@@ -0,0 +1 @@
1
+ import{C as e,D as t,E as n,O as r,T as i,v as a,w as o}from"./index-BQUL6oyH.js";import{t as s}from"./ChatPane-C8zQfpzH.js";import"./wire-constants-BkT5-597.js";import{t as c}from"./SpawnTeamModal-DiiC7Nc0.js";var l=r(t(),1),u=n();function d({onClose:e}){let t=i(),[n,r]=(0,l.useState)(``),[a,o]=(0,l.useState)(``),[s,c]=(0,l.useState)(``),[d,f]=(0,l.useState)(!1),[p,m]=(0,l.useState)(null);async function h(r){if(r.preventDefault(),m(null),!n.trim()){m(`id is required`);return}f(!0);try{let r={id:n.trim()};a.trim()&&(r.name=a.trim()),s.trim()&&(r.link=s.trim());let i=await fetch(`/api/groups`,{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){m(e.message),f(!1)}}return(0,u.jsx)(`div`,{onClick:e,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/30 backdrop-blur-[1px]`,children:(0,u.jsxs)(`form`,{onSubmit:h,onClick:e=>e.stopPropagation(),className:`w-full max-w-md rounded-2xl border bg-card p-6 shadow-lg`,children:[(0,u.jsx)(`h3`,{className:`font-serif text-xl text-foreground mb-1`,children:`Create a new group`}),(0,u.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-4`,children:[`A group is a collaboration context — one filesystem root, one USER.md, one roster. The slot lives at `,(0,u.jsx)(`code`,{className:`font-mono`,children:`~/.bazilion/groups/<slug>/`}),`.`]}),(0,u.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 mb-3`,children:[(0,u.jsxs)(`label`,{className:`block text-sm`,children:[`ID (slug)`,(0,u.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),required:!0,pattern:`[a-z0-9][a-z0-9_-]*`,placeholder:`myproject`,autoFocus:!0,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,u.jsxs)(`label`,{className:`block text-sm`,children:[`Name `,(0,u.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional)`}),(0,u.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,u.jsxs)(`label`,{className:`block text-sm mb-3`,children:[`Link target`,` `,(0,u.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional, absolute path)`}),(0,u.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,u.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.`})]}),p&&(0,u.jsx)(`p`,{className:`mt-2 text-sm text-rose-700`,children:p}),(0,u.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,u.jsx)(`button`,{type:`button`,onClick:e,className:`rounded-md border px-3 py-2 text-sm text-foreground hover:bg-accent`,children:`Cancel`}),(0,u.jsx)(`button`,{type:`submit`,disabled:d,className:`rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50`,children:d?`Creating…`:`Create`})]})]})})}function f({profileId:e,groupHint:t,groups:n,onClose:r}){let i=o(),[a,s]=(0,l.useState)(``),[c,d]=(0,l.useState)(t??`default`),[f,m]=(0,l.useState)(!1),[h,g]=(0,l.useState)(null);async function _(t){t.preventDefault(),g(null),m(!0);try{let t={profile:e};a.trim()&&(t.name=a.trim()),c&&(t.groupId=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 o=await n.json();r(),await i({to:`/`,search:{agent:o.id}})}catch(e){g(e.message),m(!1)}}return(0,u.jsx)(p,{onClose:r,children:(0,u.jsxs)(`form`,{onSubmit:_,className:`w-full max-w-md rounded-2xl border bg-card p-6 shadow-lg`,onClick:e=>e.stopPropagation(),children:[(0,u.jsx)(`h3`,{className:`font-serif text-xl text-foreground mb-1`,children:`Spawn a new agent`}),(0,u.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-4`,children:[`Profile: `,(0,u.jsx)(`code`,{className:`font-mono`,children:e})]}),(0,u.jsxs)(`label`,{className:`block text-sm text-foreground mb-3`,children:[`Agent name`,` `,(0,u.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional — defaults to the profile's name)`}),(0,u.jsx)(`input`,{type:`text`,value:a,onChange:e=>s(e.target.value),autoFocus:!0,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,u.jsxs)(`label`,{className:`block text-sm text-foreground mb-3`,children:[`Group`,(0,u.jsx)(`select`,{value:c,onChange:e=>d(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`,children:n.map(e=>(0,u.jsxs)(`option`,{value:e.id,children:[e.name,e.id===`default`?` (default)`:``]},e.id))})]}),h&&(0,u.jsx)(`p`,{className:`mt-2 text-sm text-rose-700`,children:h}),(0,u.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,u.jsx)(`button`,{type:`button`,onClick:r,className:`rounded-md border px-3 py-2 text-sm text-foreground hover:bg-accent`,children:`Cancel`}),(0,u.jsx)(`button`,{type:`submit`,disabled:f,className:`rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50`,children:f?`Creating…`:`Create`})]})]})})}function p({children:e,onClose:t}){return(0,u.jsx)(`div`,{onClick:t,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/30 backdrop-blur-[1px]`,children:e})}var m=`bz_sidebar_open_groups`;function h(e){if(typeof document>`u`)return;let t=encodeURIComponent(JSON.stringify(e));document.cookie=`${m}=${t}; Path=/; Max-Age=31536000; SameSite=Lax`}function g({agents:t,groups:n,profiles:r,profileGroups:a,selectedAgentId:o,initialOpenGroups:s}){let p=i(),[m,g]=(0,l.useState)(null),[_,v]=(0,l.useState)(null),[y,b]=(0,l.useState)(!1),[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(()=>s??{});async function T(e){let t=window.prompt(`rename "${e.name}" to:`,e.name)?.trim();if(!t||t===e.name)return;let n=await fetch(`/api/agents/${e.id}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({name:t})});if(!n.ok){let e=await n.json().catch(()=>null);alert(e?.error??n.statusText);return}await p.invalidate()}async function E(e){if(!confirm(`archive "${e.name}"? (reversible — find under "show archived")`))return;let t=await fetch(`/api/agents/${e.id}/archive`,{method:`POST`});if(!t.ok&&t.status!==204){alert(t.statusText);return}await p.invalidate()}let D=[...r].sort((e,t)=>e.id===`default`?-1:+(t.id===`default`)),O=[...n].sort((e,t)=>e.id===`default`?-1:+(t.id===`default`)),k=new Map;for(let e of t){let t=k.get(e.groupId)??[];t.push(e),k.set(e.groupId,t)}let A=t.find(e=>e.id===o)?.groupId??null;return(0,u.jsxs)(`aside`,{className:`flex h-full flex-col rounded-lg border bg-card overflow-hidden`,children:[(0,u.jsxs)(`header`,{className:`flex items-center justify-between border-b px-3 py-2.5 bg-muted/30`,children:[(0,u.jsx)(`span`,{className:`font-serif text-base text-foreground`,children:`agents`}),(0,u.jsxs)(`div`,{className:`relative`,children:[(0,u.jsx)(`button`,{type:`button`,onClick:()=>S(e=>!e),className:`rounded-md border px-2 py-1 text-xs text-muted-foreground hover:text-foreground hover:border-foreground/30`,children:`+ new ▾`}),x&&(0,u.jsxs)(`div`,{role:`menu`,className:`absolute right-0 top-[calc(100%+0.3rem)] z-20 min-w-[14rem] rounded-md border bg-popover p-1 shadow-md`,onMouseLeave:()=>S(!1),children:[r.length===0?(0,u.jsxs)(`div`,{className:`px-3 py-2 text-sm text-muted-foreground`,children:[`No profiles yet.`,(0,u.jsx)(`br`,{}),(0,u.jsx)(`a`,{href:`/profiles`,className:`text-primary underline`,children:`Create one`}),` `,`to spawn agents.`]}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{className:`px-3 pt-1 pb-0.5 text-[0.7em] uppercase tracking-wide text-muted-foreground`,children:`spawn agent from template`}),D.map(e=>(0,u.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{S(!1),g({profileId:e.id})},className:`flex w-full items-center justify-between rounded-sm px-3 py-1.5 text-sm hover:bg-accent`,children:[(0,u.jsx)(`span`,{children:e.name||e.id}),e.id===`default`&&(0,u.jsx)(`span`,{className:`rounded bg-muted px-1 text-[0.7em] text-muted-foreground`,children:`default`})]},e.id))]}),(0,u.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,u.jsx)(`div`,{className:`px-3 pt-1 pb-0.5 text-[0.7em] uppercase tracking-wide text-muted-foreground`,children:`spawn group from template`}),a.length===0?(0,u.jsxs)(`div`,{className:`px-3 py-1.5 text-xs text-muted-foreground`,children:[`No team templates yet.`,` `,(0,u.jsx)(`a`,{href:`/profile-groups`,className:`text-primary underline`,children:`Create one`}),`.`]}):a.map(e=>(0,u.jsxs)(`button`,{type:`button`,role:`menuitem`,disabled:e.memberCount===0,title:e.memberCount===0?`add at least one member before spawning`:void 0,onClick:()=>{S(!1),v(e)},className:`flex w-full items-center justify-between rounded-sm px-3 py-1.5 text-sm hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent`,children:[(0,u.jsx)(`span`,{children:e.name||e.id}),(0,u.jsx)(`span`,{className:`font-mono text-[0.7em] text-muted-foreground`,children:e.memberCount})]},e.id)),(0,u.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>{S(!1),b(!0)},className:`block w-full text-left rounded-sm px-3 py-1.5 text-xs text-muted-foreground hover:bg-accent`,children:`+ create group`})]})]})]}),(0,u.jsx)(`nav`,{className:`flex-1 overflow-y-auto p-1`,children:t.length===0&&n.length===0?(0,u.jsxs)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:[`No agents yet.`,` `,(0,u.jsx)(`a`,{href:`/agents`,className:`text-primary underline`,children:`Spawn one`}),` `,`to start chatting.`]}):O.map(t=>{let n=k.get(t.id)??[],r=A===t.id,i=C[t.id];return(0,u.jsxs)(`details`,{open:i===void 0?r||t.id===`default`:i,onToggle:e=>{let n=e.currentTarget.open;if(C[t.id]===n)return;let r={...C,[t.id]:n};h(r),w(r),p.invalidate()},className:`group/details mb-1 last:mb-0`,children:[(0,u.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-1.5 rounded-sm px-2 py-1.5 text-xs uppercase tracking-wide text-muted-foreground hover:bg-accent`,children:[(0,u.jsx)(`span`,{className:`w-3 text-xs transition-transform group-open/details:rotate-90 inline-block`,children:`▸`}),(0,u.jsx)(`span`,{className:`flex-1 truncate font-semibold`,children:t.name}),(0,u.jsx)(`span`,{className:`font-mono text-xs rounded bg-muted px-1 min-w-[1.4em] text-center`,children:n.length})]}),n.length===0?(0,u.jsx)(`div`,{className:`pl-6 py-1 text-xs italic text-muted-foreground`,children:`no agents`}):(0,u.jsx)(`div`,{className:`pl-2`,children:n.map(t=>(0,u.jsxs)(`div`,{className:`group/row relative`,children:[(0,u.jsxs)(e,{to:`/`,search:{agent:t.id},className:`block rounded-sm border-l-2 px-3 py-1.5 pr-14 hover:bg-accent ${t.id===o?`border-primary bg-accent`:`border-transparent`}`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5 truncate text-sm font-medium`,children:[(0,u.jsx)(`span`,{className:`truncate`,children:t.name}),t.telegramTopicId!==null&&(0,u.jsx)(`span`,{className:`text-xs`,title:`Telegram topic #${t.telegramTopicId}`,"aria-label":`Bound to Telegram topic ${t.telegramTopicId}`,children:`✈`})]}),(0,u.jsxs)(`div`,{className:`flex gap-2 font-mono text-[0.7em] text-muted-foreground`,children:[(0,u.jsx)(`span`,{className:`uppercase tracking-wide`,children:t.status}),(0,u.jsx)(`code`,{children:t.id.slice(0,8)})]})]}),(0,u.jsxs)(`div`,{className:`absolute right-1 top-1 flex gap-0.5 opacity-0 transition-opacity group-hover/row:opacity-100 focus-within:opacity-100`,children:[(0,u.jsx)(`button`,{type:`button`,onClick:()=>T(t),title:`rename`,"aria-label":`rename ${t.name}`,className:`unstyled flex h-6 w-6 items-center justify-center rounded-sm text-mocha-light hover:bg-snow hover:text-sapphire`,children:`✎`}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>E(t),title:`archive`,"aria-label":`archive ${t.name}`,className:`unstyled flex h-6 w-6 items-center justify-center rounded-sm text-mocha-light hover:bg-snow hover:text-[#9B3D3D]`,children:`×`})]})]},t.id))})]},t.id)})}),m&&(0,u.jsx)(f,{profileId:m.profileId,groupHint:m.groupHint,groups:O,onClose:()=>g(null)}),_&&(0,u.jsx)(c,{profileGroup:_,groups:O,onClose:()=>v(null),onSpawned:e=>{v(null),p.navigate({to:`/groups/$id`,params:{id:e}})}}),y&&(0,u.jsx)(d,{onClose:()=>b(!1)})]})}function _(){let e=a.useLoaderData(),t=e.selected?.resolved.agent.id??null;return(0,u.jsxs)(`div`,{className:`grid h-full grid-cols-1 gap-3 py-3 sm:grid-cols-[16rem_minmax(0,1fr)]`,children:[(0,u.jsx)(g,{agents:e.agents,groups:e.groups,profiles:e.profiles,profileGroups:e.profileGroups,selectedAgentId:t,initialOpenGroups:e.initialOpenGroups}),(0,u.jsx)(`main`,{className:`overflow-hidden`,children:e.selected?(0,u.jsx)(s,{agentId:e.selected.resolved.agent.id,agentName:e.selected.resolved.agent.name,initialMessages:e.selected.initialMessages,initialSessionHead:e.selected.sessionHead}):(0,u.jsx)(`div`,{className:`flex h-full items-center justify-center rounded-lg border border-dashed bg-card text-muted-foreground`,children:e.agents.length===0?`No agents yet.`:`Pick an agent on the left to start chatting.`})})]})}export{_ as component};
@@ -0,0 +1 @@
1
+ import{E as e,c as t}from"./index-BQUL6oyH.js";import{t as n}from"./ConfigTabs-DRqAymcN.js";import{t as r}from"./FieldRow-BqWnxZiX.js";var i=e(),a=`Other`;function o(e){let t=new Map;for(let n of e){let e=n.group??a,r=t.get(e)??[];r.push(n),t.set(e,r)}let n=Array.from(t,([e,t])=>({group:e,items:t}));return n.length>1&&n.sort((e,t)=>e.group===a?1:t.group===a?-1:0),n}function s(){let{services:e}=t.useLoaderData(),a=o(e);return(0,i.jsxs)(`main`,{className:`mx-auto max-w-5xl px-6 py-8`,children:[(0,i.jsx)(`h1`,{className:`font-serif text-3xl text-foreground mb-2`,children:`config`}),(0,i.jsx)(n,{active:`services`}),(0,i.jsxs)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:[`Configuration for non-LLM integrations — web search, crawlers, and similar. Fields marked as secrets are encrypted in the `,(0,i.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`table; plaintext URLs and IDs live in the `,(0,i.jsx)(`code`,{className:`font-mono`,children:`config`}),` `,`table.`]}),e.length===0&&(0,i.jsx)(`p`,{className:`text-muted-foreground italic`,children:`(no services registered)`}),a.map(({group:e,items:t})=>(0,i.jsxs)(`section`,{className:`mb-6`,children:[(0,i.jsx)(`h2`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),t.map(e=>(0,i.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-3`,children:[(0,i.jsxs)(`header`,{className:`flex items-center gap-2 mb-3`,children:[(0,i.jsx)(`span`,{className:`font-mono font-semibold`,children:e.id}),(0,i.jsxs)(`span`,{className:`text-muted-foreground text-sm`,children:[`· `,e.displayName]})]}),e.hint&&(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground mb-2`,children:e.hint}),e.fields.map(e=>(0,i.jsx)(r,{field:e},e.envVar))]},e.id))]},e))]})}export{s as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,_ as i}from"./index-BQUL6oyH.js";var a=n(e()),o=t();function s(){let e=i.useLoaderData(),t=r();async function n(e){if(!confirm(`remove skill "${e}"? this deletes the directory on disk.`))return;let n=await fetch(`/api/skills/${encodeURIComponent(e)}`,{method:`DELETE`});if(!n.ok&&n.status!==204){alert(n.statusText);return}await t.invalidate()}return(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`h1`,{children:`skills`}),(0,o.jsx)(c,{onImported:()=>t.invalidate()}),(0,o.jsxs)(`table`,{children:[(0,o.jsx)(`thead`,{children:(0,o.jsxs)(`tr`,{children:[(0,o.jsx)(`th`,{children:`name`}),(0,o.jsx)(`th`,{children:`description`}),(0,o.jsx)(`th`,{children:`source`}),(0,o.jsx)(`th`,{})]})}),(0,o.jsxs)(`tbody`,{children:[e.length===0&&(0,o.jsx)(`tr`,{children:(0,o.jsx)(`td`,{colSpan:4,className:`muted`,children:`no skills installed yet`})}),e.map(e=>(0,o.jsxs)(`tr`,{children:[(0,o.jsx)(`td`,{children:(0,o.jsx)(`code`,{children:e.name})}),(0,o.jsx)(`td`,{children:e.parseError?(0,o.jsxs)(`span`,{className:`text-[#9B3D3D]`,children:[`parse error: `,e.parseError]}):e.description}),(0,o.jsxs)(`td`,{className:`text-[0.78em] text-mocha-light`,children:[(0,o.jsx)(`span`,{className:`font-mono`,children:e.source??`(unknown)`}),e.importedAt&&(0,o.jsx)(`div`,{className:`font-mono`,children:new Date(e.importedAt).toLocaleDateString()})]}),(0,o.jsx)(`td`,{children:(0,o.jsx)(`button`,{type:`button`,className:`ghost-btn`,onClick:()=>n(e.name),children:`remove`})})]},e.name))]})]})]})}function c({onImported:e}){let[t,n]=(0,a.useState)(`openclaw`),[r,i]=(0,a.useState)(``),[s,c]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(null),[h,g]=(0,a.useState)(!1),_=(0,a.useRef)(null);async function v(n){n.preventDefault(),m(null),g(!0);try{let n;if(t===`zip`){if(!l){m(`choose a .zip file first`),g(!1);return}let e=new FormData;e.set(`file`,l),s&&e.set(`force`,`true`),n=await fetch(`/api/skills/import`,{method:`POST`,body:e})}else{let e;if(t===`openclaw`)e=`openclaw`;else if(e=r.trim(),!e){m(`fill in the server path`),g(!1);return}n=await fetch(`/api/skills/import`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({source:e,force:s})})}if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??`${n.status} ${n.statusText}`)}i(``),u(null),e()}catch(e){m(e.message)}finally{g(!1)}}function y(e){u(e.target.files?.[0]??null)}function b(e){e.preventDefault(),f(!1);let t=e.dataTransfer?.files;if(!t||t.length===0)return;let n=t[0];if(n){if(!/\.zip$/i.test(n.name)){m(`only .zip archives are supported`);return}if(u(n),_.current){let e=new DataTransfer;e.items.add(n),_.current.files=e.files}}}return(0,o.jsxs)(`section`,{className:`card`,children:[(0,o.jsx)(`h3`,{className:`mb-1`,children:`import skills`}),(0,o.jsxs)(`p`,{className:`muted mb-3 text-[0.88em]`,children:[`pick a source. Each skill's `,(0,o.jsx)(`code`,{children:`SKILL.md`}),` body is injected into the system prompt of any agent it's attached to.`]}),(0,o.jsx)(`div`,{role:`tablist`,className:`mb-4 inline-flex gap-0 rounded-md border border-frost bg-ivory p-1`,children:[{id:`openclaw`,label:`OpenClaw`},{id:`path`,label:`server directory`},{id:`zip`,label:`upload zip`}].map(e=>(0,o.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e.id,onClick:()=>{n(e.id),m(null)},className:`unstyled cursor-pointer rounded-sm border-none bg-transparent px-3 py-1.5 text-[0.88em] font-medium transition-colors ${t===e.id?`bg-snow text-sapphire-deep shadow-baziu-sm`:`text-mocha hover:text-sapphire`}`,children:e.label},e.id))}),p&&(0,o.jsx)(`div`,{className:`err`,children:p}),(0,o.jsxs)(`form`,{onSubmit:v,children:[t===`openclaw`&&(0,o.jsxs)(`p`,{className:`text-[0.92em] text-mocha`,children:[`One-click import of every skill found in `,(0,o.jsx)(`code`,{children:`~/.openclaw/skills`}),` on the server.`]}),t===`path`&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`p`,{className:`text-[0.92em] text-mocha`,children:[`Import from an absolute path on the server — either a single skill folder (contains `,(0,o.jsx)(`code`,{children:`SKILL.md`}),`) or a parent folder holding many skill subfolders.`]}),(0,o.jsxs)(`label`,{children:[`server path`,(0,o.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`/home/you/my-skills`,required:!0})]})]}),t===`zip`&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`p`,{className:`text-[0.92em] text-mocha`,children:[`Upload a `,(0,o.jsx)(`code`,{children:`.zip`}),` archive whose top level contains one folder per skill — the folder name becomes the skill name.`]}),(0,o.jsxs)(`label`,{onDragOver:e=>{e.preventDefault(),f(!0)},onDragLeave:()=>f(!1),onDrop:b,className:`block cursor-pointer rounded-md border-2 border-dashed p-6 text-center transition-colors ${d?`border-sapphire bg-sapphire-glow text-sapphire-deep`:l?`border-solid border-sapphire-light bg-snow text-chocolate`:`border-frost bg-ivory text-mocha-light hover:border-sapphire hover:bg-sapphire-glow hover:text-sapphire-deep`}`,children:[(0,o.jsx)(`input`,{ref:_,type:`file`,accept:`.zip,application/zip`,onChange:y,className:`absolute h-px w-px overflow-hidden opacity-0`}),l?(0,o.jsx)(`span`,{className:`block break-all font-mono text-[0.85em] text-sapphire-deep`,children:l.name}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`block text-[0.95em] font-medium text-mocha`,children:`click to choose a .zip file`}),(0,o.jsx)(`span`,{className:`text-[0.82em]`,children:`or drag & drop here`})]})]})]}),(0,o.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-3`,children:[(0,o.jsx)(`button`,{type:`submit`,disabled:h,children:h?`importing…`:t===`zip`?`upload & import`:t===`openclaw`?`import from OpenClaw`:`import`}),(0,o.jsxs)(`label`,{className:`m-0 inline-flex cursor-pointer items-center text-[0.88em] text-mocha`,children:[(0,o.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),`overwrite existing`]})]})]})]})}export{s as component};
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.0 | 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-space-x-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-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:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--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-tight:-.025em;--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;--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:#f5f0e8;--color-ivory:#faf8f4;--color-frost:#e8e2d8;--color-fawn:#d4cab8;--color-chocolate:#3d2b1f;--color-charcoal:#2a1f16;--color-mocha:#7a6555;--color-mocha-light:#9e8e7e;--color-sapphire:#4a7c9b;--color-sapphire-deep:#3a6580;--color-sapphire-light:#6ba3c2;--color-sapphire-glow:#4a7c9b1f;--color-rose-baziu:#c4878a;--color-snow:#fff;--shadow-baziu-sm:0 1px 3px #2a1f160f;--shadow-baziu-md:0 4px 12px #2a1f1614;--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;min-height:100vh;font-size:15px;line-height:1.6}html{font-family:var(--font-sans);scrollbar-gutter:stable;overflow-y:scroll}html[data-layout=home],body[data-layout=home]{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{margin-bottom:.25rem;font-size:2rem}h2{font-size:1.5rem}h3{color:var(--color-mocha);margin-bottom:.4rem;font-size:1.15rem}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:not([type]),select,textarea{font:inherit;border:1.5px solid var(--color-frost);border-radius:var(--radius-md);background:var(--color-ivory);width:100%;color:var(--color-chocolate);outline:none;padding:.5rem .75rem;font-size:.95em;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{color:var(--color-fawn)}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{font:inherit;letter-spacing:.01em;border-radius:var(--radius-md);cursor:pointer;background:var(--color-sapphire);color:var(--color-snow);border:none;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1.25rem;font-size:.92em;font-weight:600;transition:all .2s;display:inline-flex}button[type=submit]:not(.unstyled):hover,.btn-primary:hover{background:var(--color-sapphire-deep);color:var(--color-snow);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{color:var(--color-mocha);border:1.5px solid var(--color-frost);font:inherit;border-radius:var(--radius-md);cursor:pointer;background:0 0;align-items:center;gap:.3rem;padding:.35rem .85rem;font-size:.92em;font-weight:500;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{color:var(--destructive);border:1.5px solid var(--destructive);background:0 0;align-items:center;gap:.3rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.danger-btn{border:1.5px solid color-mix(in srgb, var(--destructive) 30%, transparent)}}.danger-btn{font:inherit;border-radius:var(--radius-md);cursor:pointer;padding:.35rem .85rem;font-size:.92em;font-weight:500;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:var(--color-snow);border:1px solid var(--color-frost);border-radius:var(--radius-lg);width:100%;margin:1rem 0;overflow:hidden}thead{background:var(--color-ivory)}th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--color-mocha-light);border-bottom:1px solid var(--color-frost);padding:.65rem 1rem;font-size:.82em;font-weight:600}td{border-bottom:1px solid var(--color-frost);vertical-align:middle;padding:.6rem 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:var(--color-snow);border:1px solid var(--color-frost);border-radius:var(--radius-lg);box-shadow:var(--shadow-baziu-sm);margin:1.25rem 0;padding:1.5rem;transition:box-shadow .2s}.card:hover{box-shadow:var(--shadow-baziu-md)}.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}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-1{top:calc(var(--spacing) * 1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-\[calc\(100\%\+0\.3rem\)\]{top:calc(100% + .3rem)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-4{grid-column:span 4/span 4}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.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:calc(var(--spacing) * 0)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-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:calc(var(--spacing) * 1)}.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)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.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-10{margin-top:calc(var(--spacing) * 10)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-6{margin-right:calc(var(--spacing) * 6)}.-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:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.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:calc(var(--spacing) * 1)}.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}.block{display:block}.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-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.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)}.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-16{height:calc(var(--spacing) * 16)}.h-\[1\.3rem\]{height:1.3rem}.h-\[28px\]{height:28px}.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-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}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.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-dvh{min-height:100dvh}.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-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-72{width:calc(var(--spacing) * 72)}.w-\[1\.6rem\]{width:1.6rem}.w-\[28px\]{width:28px}.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-\[85\%\]{max-width:85%}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[260px\]{max-width:260px}.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)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-\[1\.4em\]{min-width:1.4em}.min-w-\[14rem\]{min-width:14rem}.min-w-\[16rem\]{min-width:16rem}.min-w-\[18rem\]{min-width:18rem}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.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)}.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:calc(var(--spacing) * 1)}.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-\[12rem_minmax\(14rem\,1fr\)_auto_auto\]{grid-template-columns:12rem minmax(14rem,1fr) auto 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}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[0\.45rem\]{gap:.45rem}: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(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * 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)))}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.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}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[4px\]{border-radius:4px}.rounded-\[14px_14px_4px_14px\]{border-radius:14px 14px 4px}.rounded-\[16px\]{border-radius:16px}.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);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-2{border-left-style:var(--tw-border-style);border-left-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-\[\#9B3D3D\]{border-color:#9b3d3d}.border-\[\#bcd9bc\]{border-color:#bcd9bc}.border-\[rgba\(196\,135\,138\,0\.4\)\]{border-color:#c4878a66}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-400{border-color:var(--color-amber-400)}.border-border{border-color:var(--color-border)}.border-fawn{border-color:var(--color-fawn)}.border-frost{border-color:var(--color-frost)}.border-frost\/50{border-color:#e8e2d880}@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-color:var(--color-primary)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-400{border-color:var(--color-rose-400)}.border-sapphire{border-color:var(--color-sapphire)}.border-sapphire-light{border-color:var(--color-sapphire-light)}.border-transparent{border-color:#0000}.border-l-\[\#9B3D3D\]{border-left-color:#9b3d3d}.border-l-mocha-light{border-left-color:var(--color-mocha-light)}.bg-\[\#eef7ee\]{background-color:#eef7ee}.bg-\[rgba\(42\,31\,22\,0\.04\)\]{background-color:#2a1f160a}.bg-\[rgba\(196\,135\,138\,0\.06\)\]{background-color:#c4878a0f}.bg-\[rgba\(196\,135\,138\,0\.08\)\]{background-color:#c4878a14}.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-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background{background-color:var(--color-background)}.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-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-cream{background-color:var(--color-cream)}.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-emerald-100{background-color:var(--color-emerald-100)}.bg-fawn\/35{background-color:#d4cab859}@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:#e8e2d866}@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:#9e8e7e99}@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\/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\/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-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-primary-foreground{background-color:var(--color-primary-foreground)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-sapphire{background-color:var(--color-sapphire)}.bg-sapphire-glow{background-color:var(--color-sapphire-glow)}.bg-sapphire-glow\/80{background-color:#4a7c9b19}@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-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.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-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.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:calc(var(--spacing) * 1)}.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-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.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-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.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-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-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\.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-\[1\.2rem\]{font-size:1.2rem}.text-\[1\.35rem\]{font-size:1.35rem}.text-\[1em\]{font-size:1em}.text-\[2rem\]{font-size:2rem}.text-\[10px\]{font-size:10px}.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\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.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-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#3b7a3b\]{color:#3b7a3b}.text-\[\#7a4e2a\]{color:#7a4e2a}.text-\[\#9B3D3D\]{color:#9b3d3d}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.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-destructive{color:var(--color-destructive)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-fawn{color:var(--color-fawn)}.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:#9e8e7e66}@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-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-rose-900{color:var(--color-rose-900)}.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)}.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-md{--tw-shadow:0 4px 12px var(--tw-shadow-color,#2a1f1614);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 3px var(--tw-shadow-color,#2a1f160f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px 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-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)}.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}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-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-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\/details\:rotate-90:is(:where(.group\/details):is([open],:popover-open,:open) *){rotate:90deg}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:scale-\[1\.08\]:is(:where(.group):hover *){scale:1.08}.group-hover\:rotate-\[-8deg\]:is(:where(.group):hover *){rotate:-8deg}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}}.group-has-disabled\/field\:opacity-50:is(:where(.group\/field):has(:disabled) *){opacity:.5}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.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))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:calc(var(--spacing) * 0)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 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}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:border-\[\#bcd9bc\]:hover{border-color:#bcd9bc}.hover\:border-foreground\/30:hover{border-color:var(--color-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-foreground\/30:hover{border-color:color-mix(in oklab, var(--color-foreground) 30%, transparent)}}.hover\:border-frost:hover{border-color:var(--color-frost)}.hover\:border-primary:hover{border-color:var(--color-primary)}.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-\[rgba\(196\,135\,138\,0\.08\)\]:hover{background-color:#c4878a14}.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-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-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-rose-50:hover{background-color:var(--color-rose-50)}.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-\[\#9B3D3D\]:hover{color:#9b3d3d}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-mocha:hover{color:var(--color-mocha)}.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-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.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\: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\: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-group]) .in-data-\[slot\=button-group\]\: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:calc(var(--spacing) * 1)}.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:calc(var(--spacing) * 1)}.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:calc(var(--spacing) * 0)}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:calc(var(--spacing) * 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:calc(var(--spacing) * 1);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:calc(var(--spacing) * 1);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:calc(var(--spacing) * 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\=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\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-\[16rem_minmax\(0\,1fr\)\]{grid-template-columns:16rem minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (width>=48rem){.md\:grid-cols-\[360px_1fr\]{grid-template-columns:360px 1fr}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (width>=64rem){.lg\:grid-cols-\[320px_1fr\]{grid-template-columns:320px 1fr}}.dark\:border-input:is(.dark *){border-color:var(--color-input)}.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)}.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-state=active]),.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])){--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)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.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)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.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}.\[\&_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:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-4.border-b{padding-bottom:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:\[\.border-b\]\:pb-3:is(:where(.group\/card)[data-size=sm] *).border-b{padding-bottom:calc(var(--spacing) * 3)}: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:#f5f0e8;--foreground:#3d2b1f;--card:#fff;--card-foreground:#3d2b1f;--popover:#fff;--popover-foreground:#3d2b1f;--primary:#4a7c9b;--primary-foreground:#fff;--secondary:#faf8f4;--secondary-foreground:#3d2b1f;--muted:#faf8f4;--muted-foreground:#9e8e7e;--accent:#4a7c9b1f;--accent-foreground:#3a6580;--destructive:#9b3d3d;--border:#e8e2d8;--input:#e8e2d8;--ring:#4a7c9b;--chart-1:#4a7c9b;--chart-2:#c4878a;--chart-3:#7a6555;--chart-4:#d4cab8;--chart-5:#6ba3c2;--radius:16px;--sidebar:#faf8f4;--sidebar-foreground:#3d2b1f;--sidebar-primary:#4a7c9b;--sidebar-primary-foreground:#fff;--sidebar-accent:#4a7c9b1f;--sidebar-accent-foreground:#3a6580;--sidebar-border:#e8e2d8;--sidebar-ring:#4a7c9b}: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;--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}@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-space-x-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-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))}}
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,r as i}from"./index-BQUL6oyH.js";import{t as a}from"./ConfigTabs-DRqAymcN.js";import{t as o}from"./Button-BefUtjMZ.js";var s=n(e()),c=t();function l(){let e=i.useLoaderData(),t=r(),[n,l]=(0,s.useState)(``),[h,g]=(0,s.useState)(e.chatId),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(!1);async function D(e){e.preventDefault(),v(!0),b(null),S(!1);try{let e=await fetch(`/api/config/telegram`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({botToken:n,chatId:h})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??`${e.status} ${e.statusText}`)}l(``),S(!0),await t.invalidate()}catch(e){b(e.message)}finally{v(!1)}}async function O(){if(confirm(`Clear the saved Telegram credentials?`))try{await fetch(`/api/config/telegram`,{method:`DELETE`}),l(``),g(``),w(null),S(!1),b(null),await t.invalidate()}catch(e){b(e.message)}}async function k(){E(!0),w(null);try{w(await(await fetch(`/api/config/telegram/health`)).json())}catch(e){w({configured:!0,preflight:null,error:{step:`getMe`,message:e.message},polling:null})}finally{E(!1)}}return(0,c.jsxs)(`main`,{className:`mx-auto max-w-3xl px-6 py-8`,children:[(0,c.jsx)(`h1`,{className:`font-serif text-3xl text-foreground mb-2`,children:`config`}),(0,c.jsx)(a,{active:`integrations`}),(0,c.jsxs)(`header`,{className:`mb-6`,children:[(0,c.jsx)(`h2`,{className:`text-xl font-semibold`,children:`Telegram`}),(0,c.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`One forum-supergroup bot, one topic per agent. Talk to any of your agents from a phone.`})]}),(0,c.jsx)(f,{}),e.migratedChatId&&(0,c.jsx)(d,{toChatId:e.migratedChatId}),(0,c.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-6`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-3`,children:`Credentials`}),e.configured&&(0,c.jsxs)(`p`,{className:`text-xs text-emerald-700 mb-3`,children:[`✓ Stored: `,(0,c.jsx)(`code`,{className:`font-mono`,children:e.botTokenPreview}),` `,e.chatId&&(0,c.jsxs)(c.Fragment,{children:[`· chat `,(0,c.jsx)(`code`,{className:`font-mono`,children:e.chatId})]})]}),(0,c.jsxs)(`form`,{onSubmit:D,className:`space-y-3`,children:[(0,c.jsxs)(`label`,{className:`block`,children:[(0,c.jsx)(`span`,{className:`block text-sm font-medium mb-1`,children:`Bot token`}),(0,c.jsx)(`input`,{type:`password`,autoComplete:`off`,value:n,onChange:e=>l(e.target.value),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,c.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`From @BotFather → /newbot. Disable Privacy Mode in `,(0,c.jsx)(`em`,{children:`Bot Settings → Group Privacy → Turn off`}),`.`]})]}),(0,c.jsxs)(`label`,{className:`block`,children:[(0,c.jsx)(`span`,{className:`block text-sm font-medium mb-1`,children:`Supergroup chat ID`}),(0,c.jsx)(`input`,{type:`text`,value:h,onChange:e=>g(e.target.value),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,c.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`Forum-enabled supergroup the bot is admin in (with`,` `,(0,c.jsx)(`code`,{className:`font-mono`,children:`can_manage_topics`}),`).`]})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-3 pt-1`,children:[(0,c.jsx)(o,{variant:`primary`,type:`submit`,disabled:_,children:_?`saving…`:`save credentials`}),e.configured&&(0,c.jsx)(o,{variant:`danger`,onClick:O,children:`clear credentials`}),x&&(0,c.jsx)(`span`,{className:`text-xs text-emerald-700`,children:`saved ✓`}),y&&(0,c.jsxs)(`span`,{className:`text-xs text-rose-700`,children:[`error: `,y]})]})]})]}),(0,c.jsxs)(`section`,{className:`rounded-lg border bg-card p-5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground`,children:`Preflight checks`}),(0,c.jsx)(o,{variant:`ghost`,onClick:k,disabled:T||!e.configured,children:T?`checking…`:`run preflight`})]}),!e.configured&&(0,c.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:`Save credentials above first.`}),e.configured&&!C&&!T&&(0,c.jsxs)(`p`,{className:`text-xs text-muted-foreground italic`,children:[`Click `,(0,c.jsx)(`em`,{children:`run preflight`}),` to validate the stored credentials against the Telegram Bot API.`]}),C&&(0,c.jsx)(m,{health:C}),C?.polling&&(0,c.jsx)(p,{polling:C.polling})]}),e.configured&&(0,c.jsx)(u,{})]})}function u(){let[e,t]=(0,s.useState)(null),[n,r]=(0,s.useState)(``),[i,a]=(0,s.useState)(``),[l,u]=(0,s.useState)(!1),[d,f]=(0,s.useState)(null);async function p(){try{let e=await fetch(`/api/config/telegram/acl`);if(!e.ok)throw Error(e.statusText);t(await e.json())}catch(e){f(e.message)}}(0,s.useEffect)(()=>{p()},[]);async function m(e){e.preventDefault();let t=Number(n);if(!Number.isInteger(t)){f(`user id must be an integer`);return}u(!0),f(null);try{let e=await fetch(`/api/config/telegram/acl`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({userId:t,label:i.trim()||null})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??e.statusText)}r(``),a(``),await p()}catch(e){f(e.message)}finally{u(!1)}}async function h(e){f(null);try{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 p()}catch(e){f(e.message)}}return(0,c.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mt-6`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wide text-muted-foreground mb-1`,children:`Access control`}),(0,c.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:[`Allowlisted Telegram users can use the bot (commands + chat). While the list is empty the bot is open and the first person to message it becomes owner. Users find their id via`,` `,(0,c.jsx)(`code`,{className:`font-mono`,children:`/whoami`}),`.`]}),e===null?(0,c.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:`loading…`}):e.length===0?(0,c.jsx)(`p`,{className:`text-xs text-amber-700 mb-3`,children:`Open — no allowlist yet. The first user to message the bot claims owner.`}):(0,c.jsx)(`ul`,{className:`mb-3 space-y-1 text-sm`,children:e.map(e=>(0,c.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(`code`,{className:`font-mono`,children:e.userId}),(0,c.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.label??(e.username?`@${e.username}`:`—`),` · `,e.role]}),e.role!==`owner`&&(0,c.jsx)(`button`,{type:`button`,onClick:()=>void h(e.userId),className:`ghost-btn text-xs text-[#9B3D3D]`,children:`remove`})]},e.userId))}),(0,c.jsxs)(`form`,{onSubmit:m,className:`flex items-center gap-2`,children:[(0,c.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),placeholder:`user id`,className:`w-28 rounded-md border bg-background px-2 py-1 font-mono text-sm`}),(0,c.jsx)(`input`,{value:i,onChange:e=>a(e.target.value),placeholder:`label (optional)`,className:`w-40 rounded-md border bg-background px-2 py-1 text-sm`}),(0,c.jsx)(o,{variant:`ghost`,type:`submit`,disabled:l,children:`add`}),d&&(0,c.jsx)(`span`,{className:`text-xs text-rose-700`,children:d})]})]})}function d({toChatId:e}){let[t,n]=(0,s.useState)(!1),[r,i]=(0,s.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,c.jsxs)(`div`,{className:`rounded-md border-2 border-rose-400 bg-rose-50 px-4 py-3 mb-6 text-sm`,children:[(0,c.jsx)(`div`,{className:`font-semibold text-rose-900 mb-1`,children:`Supergroup chat id changed`}),(0,c.jsxs)(`p`,{className:`text-rose-900 mb-2`,children:[`Telegram migrated this supergroup to a new chat id (`,(0,c.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,c.jsx)(`code`,{className:`font-mono`,children:`⚙ bazilion`}),` `,`service chat in the new group. Agent topic bindings will reconcile on next use.`]}),(0,c.jsx)(o,{variant:`primary`,onClick:a,disabled:t,children:t?`reconnecting…`:`Reconnect to ${e}`}),r&&(0,c.jsx)(`span`,{className:`ml-3 text-xs text-rose-700`,children:r})]})}function f(){return(0,c.jsxs)(`div`,{className:`rounded-md border-2 border-amber-400 bg-amber-50 px-4 py-3 mb-6 text-sm`,children:[(0,c.jsx)(`div`,{className:`font-semibold text-amber-900 mb-1`,children:`Step 2 of the rollout`}),(0,c.jsxs)(`p`,{className:`text-amber-900`,children:[`The bot polls Telegram and creates the `,(0,c.jsx)(`code`,{className:`font-mono`,children:`⚙ bazilion`}),` `,`service chat on first start. Inbound messages are logged but not yet routed to agents —`,` `,`slash commands and per-agent topics ship in the next release. Outbound from agents ships after that.`]})]})}function p({polling:e}){let t=e.startedAt?new Date(e.startedAt).toISOString():null,n=e.lastSuccessfulPollAt?new Date(e.lastSuccessfulPollAt).toISOString():null;return(0,c.jsxs)(`div`,{className:`mt-4 rounded-md border bg-muted/30 px-3 py-2 text-xs space-y-1`,children:[(0,c.jsx)(`p`,{className:`font-semibold uppercase tracking-wide text-muted-foreground`,children:`Polling state`}),(0,c.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 font-mono`,children:[(0,c.jsx)(`span`,{className:e.running?`text-emerald-700`:`text-rose-700`,children:e.running?`running`:`stopped`}),(0,c.jsx)(`span`,{className:e.activated?`text-emerald-700`:`text-amber-700`,children:e.activated?`activated`:`awaiting activation`}),e.lastUpdateId!==null&&(0,c.jsxs)(`span`,{children:[`last update `,e.lastUpdateId]}),t&&(0,c.jsxs)(`span`,{children:[`started `,t]}),n&&(0,c.jsxs)(`span`,{children:[`last poll `,n]})]}),e.error&&(0,c.jsxs)(`p`,{className:`text-rose-700`,children:[`error: `,e.error]})]})}function m({health:e}){if(e.error)return(0,c.jsxs)(`div`,{className:`rounded-md border border-rose-300 bg-rose-50 px-3 py-2 text-sm`,children:[(0,c.jsxs)(`p`,{className:`font-semibold text-rose-900`,children:[`Failed at `,(0,c.jsx)(`code`,{className:`font-mono`,children:e.error.step})]}),(0,c.jsx)(`p`,{className:`text-rose-900 mt-1`,children:e.error.message}),g(e.error.step)]});if(!e.preflight)return(0,c.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:`No preflight data.`});let t=e.preflight;return(0,c.jsxs)(`ul`,{className:`space-y-1.5`,children:[(0,c.jsxs)(h,{ok:t.botUsername.length>0,label:`Bot identity`,children:[`@`,t.botUsername]}),(0,c.jsx)(h,{ok:t.chatTitle.length>0,label:`Supergroup reachable`,children:t.chatTitle}),(0,c.jsx)(h,{ok:t.isForum,label:`Forum topics enabled`,children:t.isForum?`is_forum: true`:`is_forum: false — the supergroup owner must enable Topics in group settings`}),(0,c.jsx)(h,{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,c.jsx)(h,{ok:t.privacyModeOff,label:`Privacy Mode is OFF`,children:t.privacyModeOff?`can_read_all_group_messages: true`:`BotFather → /mybots → select bot → Bot Settings → Group Privacy → Turn off`})]})}function h({ok:e,label:t,children:n}){return(0,c.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,c.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-emerald-100 text-emerald-800`:`bg-rose-100 text-rose-800`}`,"aria-hidden":!0,children:e?`✓`:`✕`}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`span`,{className:`font-medium`,children:t}),(0,c.jsx)(`span`,{className:`ml-2 text-xs ${e?`text-muted-foreground`:`text-rose-800`}`,children:n})]})]})}function g(e){switch(e){case`getMe`:return(0,c.jsx)(`p`,{className:`text-xs text-rose-900 mt-1`,children:`The token is invalid or revoked. Re-issue with @BotFather → /token, or paste a fresh one above.`});case`getChat`:return(0,c.jsx)(`p`,{className:`text-xs text-rose-900 mt-1`,children:`The chat id either doesn't exist, points at a basic group (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 group.`});case`getChatMember`:return(0,c.jsx)(`p`,{className:`text-xs text-rose-900 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{l as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,l as i}from"./index-BQUL6oyH.js";import{t as a}from"./ConfigTabs-DRqAymcN.js";var o=n(e()),s=t();function c(e){return new Date(e).toISOString().slice(0,16).replace(`T`,` `)}function l(){let{tokens:e}=i.useLoaderData(),{all:t}=i.useSearch(),n=t===`1`,l=r(),[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(null),[m,h]=(0,o.useState)(null),[g,_]=(0,o.useState)(!1);async function v(e){e.preventDefault(),h(null),_(!0);try{let e=await fetch(`/api/tokens`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({label:u})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??`${e.status} ${e.statusText}`)}p((await e.json()).token),d(``),await l.invalidate()}catch(e){h(e.message)}finally{_(!1)}}async function y(e){await fetch(`/api/tokens/${e}`,{method:`DELETE`}),await l.invalidate()}return(0,s.jsxs)(`main`,{className:`mx-auto max-w-5xl px-6 py-8`,children:[(0,s.jsx)(`h1`,{className:`font-serif text-3xl text-foreground mb-2`,children:`config`}),(0,s.jsx)(a,{active:`tokens`}),(0,s.jsxs)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:[`Per-client credentials for the HTTP API and CLI. The row labelled`,` `,(0,s.jsx)(`code`,{className:`font-mono`,children:`bootstrap`}),` is the loopback token in`,` `,(0,s.jsx)(`code`,{className:`font-mono`,children:`~/.bazilion/auth.json`}),` — revoking it locks the local CLI out, so it can't be revoked from this page. Mint additional tokens here for Tailscale/LAN clients (mobile, remote machines); revoke any of those at any time.`]}),(0,s.jsxs)(`section`,{className:`rounded-lg border bg-card p-5 mb-6`,children:[(0,s.jsx)(`h3`,{className:`font-serif text-xl mb-3`,children:`Mint a new token`}),(0,s.jsxs)(`form`,{onSubmit:v,className:`flex gap-2 items-end mb-3`,children:[(0,s.jsxs)(`label`,{className:`text-sm`,children:[`Label`,(0,s.jsx)(`input`,{type:`text`,value:u,onChange:e=>d(e.target.value),required:!0,placeholder:`e.g. laptop-tailscale`,autoComplete:`off`,className:`block mt-1 rounded-md border bg-background px-3 py-2 text-sm w-72`})]}),(0,s.jsx)(`button`,{type:`submit`,disabled:g,className:`rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50`,children:g?`creating…`:`create`})]}),f&&(0,s.jsxs)(`div`,{className:`rounded-md border border-amber-200 bg-amber-50 p-3`,children:[(0,s.jsx)(`p`,{className:`text-xs text-amber-800 mb-1`,children:`copy this token now — it is not recoverable later.`}),(0,s.jsx)(`pre`,{className:`font-mono text-xs whitespace-pre-wrap break-all`,children:f})]}),m&&(0,s.jsx)(`p`,{className:`text-sm text-rose-700`,children:m})]}),(0,s.jsx)(`div`,{className:`mb-3`,children:(0,s.jsxs)(`label`,{className:`text-sm flex items-center gap-2`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:n,onChange:e=>{window.location.assign(e.target.checked?`/config/tokens?all=1`:`/config/tokens`)}}),`show revoked`]})}),(0,s.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,s.jsx)(`thead`,{className:`text-left text-muted-foreground border-b`,children:(0,s.jsxs)(`tr`,{children:[(0,s.jsx)(`th`,{className:`py-2`,children:`label`}),(0,s.jsx)(`th`,{children:`id`}),(0,s.jsx)(`th`,{children:`state`}),(0,s.jsx)(`th`,{children:`created`}),(0,s.jsx)(`th`,{children:`last used`}),(0,s.jsx)(`th`,{})]})}),(0,s.jsxs)(`tbody`,{children:[e.length===0&&(0,s.jsx)(`tr`,{children:(0,s.jsx)(`td`,{colSpan:6,className:`py-6 text-center text-muted-foreground italic`,children:`no tokens yet — mint one above`})}),e.map(e=>{let t=e.label===`bootstrap`;return(0,s.jsxs)(`tr`,{className:`border-b last:border-0 hover:bg-accent/30`,children:[(0,s.jsxs)(`td`,{className:`py-2`,children:[e.label,t&&(0,s.jsx)(`span`,{className:`ml-2 text-[0.7em] uppercase tracking-wide text-muted-foreground`,children:`auth.json`})]}),(0,s.jsx)(`td`,{children:(0,s.jsx)(`code`,{className:`font-mono text-xs`,children:e.id})}),(0,s.jsx)(`td`,{children:e.revokedAt?(0,s.jsx)(`span`,{className:`text-muted-foreground`,children:`revoked`}):(0,s.jsx)(`span`,{className:`text-emerald-700`,children:`active`})}),(0,s.jsx)(`td`,{className:`text-muted-foreground text-xs`,children:c(e.createdAt)}),(0,s.jsx)(`td`,{className:`text-muted-foreground text-xs`,children:e.lastUsedAt?c(e.lastUsedAt):`(never)`}),(0,s.jsx)(`td`,{children:!e.revokedAt&&!t&&(0,s.jsx)(`button`,{type:`button`,onClick:()=>y(e.id),className:`rounded-md border px-2 py-1 text-xs text-rose-700 hover:bg-rose-50`,children:`revoke`})})]},e.id)})]})]})]})}export{l as component};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,O as n,T as r,n as i}from"./index-BQUL6oyH.js";import{t as a}from"./AgentTabs-M5K8emJ8.js";var o=n(e()),s=t();function c(){let{resolved:e,triggers:t}=i.useLoaderData(),n=r();async function o(e){await fetch(`/api/triggers/${e.id}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:!e.enabled})}),await n.invalidate()}async function c(e){confirm(`delete this trigger?`)&&(await fetch(`/api/triggers/${e}`,{method:`DELETE`}),await n.invalidate())}return(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`header`,{className:`mb-6`,children:(0,s.jsx)(`h1`,{children:e.agent.name})}),(0,s.jsx)(a,{agentId:e.agent.id,active:`triggers`,archived:e.agent.status===`archived`}),(0,s.jsx)(l,{agentId:e.agent.id,onAdded:()=>n.invalidate()}),(0,s.jsx)(`h3`,{className:`mb-3 mt-6 font-body text-[0.85em] font-semibold uppercase tracking-wider text-mocha-light`,children:`Active triggers`}),t.length===0?(0,s.jsx)(`p`,{className:`muted`,children:`no triggers yet — add one above.`}):(0,s.jsxs)(`table`,{children:[(0,s.jsx)(`thead`,{children:(0,s.jsxs)(`tr`,{children:[(0,s.jsx)(`th`,{children:`id`}),(0,s.jsx)(`th`,{children:`kind`}),(0,s.jsx)(`th`,{children:`spec`}),(0,s.jsx)(`th`,{children:`message`}),(0,s.jsx)(`th`,{children:`last fired`}),(0,s.jsx)(`th`,{})]})}),(0,s.jsx)(`tbody`,{children:t.map(e=>{let t=e.kind===`interval`?`every ${e.intervalSec}s`:e.cronExpr,n=e.lastFiredAt?new Date(e.lastFiredAt).toLocaleString():`(never)`;return(0,s.jsxs)(`tr`,{className:e.enabled?``:`opacity-60`,children:[(0,s.jsx)(`td`,{children:(0,s.jsxs)(`code`,{children:[e.id.slice(0,8),`…`]})}),(0,s.jsx)(`td`,{children:(0,s.jsx)(`span`,{className:`inline-block rounded-sm border border-frost bg-ivory px-2 py-0.5 font-mono text-[0.8em] text-mocha`,children:e.kind})}),(0,s.jsx)(`td`,{children:(0,s.jsx)(`code`,{children:t})}),(0,s.jsx)(`td`,{children:e.message.length>60?`${e.message.slice(0,60)}…`:e.message}),(0,s.jsx)(`td`,{className:`text-[0.82em] text-mocha-light`,children:n}),(0,s.jsx)(`td`,{children:(0,s.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,s.jsx)(`button`,{type:`button`,className:`ghost-btn`,onClick:()=>o(e),children:e.enabled?`disable`:`enable`}),(0,s.jsx)(`button`,{type:`button`,className:`ghost-btn`,onClick:()=>c(e.id),children:`delete`})]})})]},e.id)})})]})]})}function l({agentId:e,onAdded:t}){let[n,r]=(0,o.useState)(`interval`),[i,a]=(0,o.useState)(300),[c,l]=(0,o.useState)(``),[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(null),[m,h]=(0,o.useState)(!1);async function g(r){if(r.preventDefault(),p(null),!u.trim()){p(`message is required`);return}if(n===`interval`&&(!Number.isFinite(i)||i<=0)){p(`interval must be a positive number`);return}if(n===`cron`&&!c.trim()){p(`cron expression is required`);return}h(!0);try{let r={kind:n,message:u.trim()};n===`interval`?r.intervalSec=i:r.cronExpr=c.trim();let o=await fetch(`/api/agents/${encodeURIComponent(e)}/triggers`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});if(!o.ok){let e=await o.json().catch(()=>null);throw Error(e?.error??o.statusText)}d(``),l(``),a(300),t()}catch(e){p(e.message)}finally{h(!1)}}return(0,s.jsxs)(`form`,{className:`card`,onSubmit:g,children:[(0,s.jsx)(`h3`,{children:`Add trigger`}),(0,s.jsxs)(`div`,{className:`mb-3 flex gap-3`,children:[(0,s.jsxs)(`label`,{className:`m-0 inline-flex cursor-pointer items-center gap-1`,children:[(0,s.jsx)(`input`,{type:`radio`,checked:n===`interval`,onChange:()=>r(`interval`)}),`interval (every N seconds)`]}),(0,s.jsxs)(`label`,{className:`m-0 inline-flex cursor-pointer items-center gap-1`,children:[(0,s.jsx)(`input`,{type:`radio`,checked:n===`cron`,onChange:()=>r(`cron`)}),`cron (5-field)`]})]}),n===`interval`?(0,s.jsxs)(`label`,{children:[`interval (seconds)`,(0,s.jsx)(`input`,{type:`number`,min:1,value:i,onChange:e=>a(Number(e.target.value))})]}):(0,s.jsxs)(`label`,{children:[`cron expression (minute hour dom month dow)`,(0,s.jsx)(`input`,{type:`text`,placeholder:`*/15 * * * *`,value:c,onChange:e=>l(e.target.value)})]}),(0,s.jsxs)(`label`,{children:[`message`,(0,s.jsx)(`textarea`,{placeholder:`e.g. check your inbox and act on anything new`,value:u,onChange:e=>d(e.target.value),className:`font-mono text-[0.9em] min-h-[80px]`})]}),(0,s.jsxs)(`div`,{className:`mt-3 flex items-center gap-3`,children:[(0,s.jsx)(`button`,{type:`submit`,disabled:m,children:m?`adding…`:`add`}),f&&(0,s.jsx)(`span`,{className:`text-[0.85em] text-[#9B3D3D]`,children:f})]})]})}export{c as component};
@@ -0,0 +1 @@
1
+ import{E as e}from"./index-BQUL6oyH.js";var t=e();function n(){return(0,t.jsx)(`div`,{className:`mx-auto max-w-2xl`,children:(0,t.jsxs)(`div`,{className:`card`,children:[(0,t.jsx)(`h1`,{children:`Welcome to bazilion`}),(0,t.jsxs)(`p`,{className:`muted my-3`,children:[`Before you can spawn agents, pick a provider and give it at least one model. Once you do, a `,(0,t.jsx)(`code`,{children:`default`}),` profile (and a `,(0,t.jsx)(`code`,{children:`default`}),` group directory) are created automatically and the rest of the app unlocks.`]}),(0,t.jsxs)(`ol`,{className:`my-5 space-y-4`,children:[(0,t.jsxs)(r,{n:1,children:[(0,t.jsx)(`strong`,{children:`Configure credentials.`}),` Head to the`,` `,(0,t.jsx)(`a`,{href:`/config`,children:`providers tab`}),` and set the API key or local URL for the service you want to use (Anthropic, OpenAI, Ollama, LMStudio, …).`]}),(0,t.jsxs)(r,{n:2,children:[(0,t.jsx)(`strong`,{children:`Enable the provider + add a model.`}),` Flip the provider's toggle on and list at least one concrete model name (e.g. `,(0,t.jsx)(`code`,{children:`claude-opus-4-8`}),` or`,` `,(0,t.jsx)(`code`,{children:`llama3.2`}),`).`]}),(0,t.jsxs)(r,{n:3,children:[(0,t.jsx)(`strong`,{children:`Start chatting.`}),` You'll be redirected to the home page automatically, where a `,(0,t.jsx)(`code`,{children:`default`}),` profile is waiting for a first spawn.`]})]}),(0,t.jsx)(`a`,{href:`/config`,className:`inline-flex items-center gap-2 rounded-md bg-sapphire px-4 py-2 text-[0.92em] font-semibold text-snow no-underline transition-colors hover:bg-sapphire-deep`,children:`Go to config →`})]})})}function r({n:e,children:n}){return(0,t.jsxs)(`li`,{className:`grid grid-cols-[2rem_1fr] gap-3 border-t border-frost pt-3 first:border-t-0 first:pt-0`,children:[(0,t.jsx)(`span`,{className:`text-center font-display text-xl text-sapphire`,children:e}),(0,t.jsx)(`div`,{className:`text-[0.92em] leading-relaxed text-mocha`,children:n})]})}export{n as component};
@@ -0,0 +1 @@
1
+ var e=`default`,t=`default`,n=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];export{e as n,n as r,t};