wizards 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/apps/runtime/dist/app.js +44 -0
- package/apps/runtime/dist/auth/account.js +16 -2
- package/apps/runtime/dist/auth/index.js +14 -1
- package/apps/runtime/dist/connectors/external.js +5 -0
- package/apps/runtime/dist/db/control-schema.js +12 -3
- package/apps/runtime/dist/db/migrations/control/0005_chilly_oracle.sql +1 -0
- package/apps/runtime/dist/db/migrations/control/0006_sleepy_mojo.sql +1 -0
- package/apps/runtime/dist/db/migrations/control/meta/0005_snapshot.json +358 -0
- package/apps/runtime/dist/db/migrations/control/meta/0006_snapshot.json +365 -0
- package/apps/runtime/dist/db/migrations/control/meta/_journal.json +14 -0
- package/apps/runtime/dist/db/migrations/tenant/0005_reflective_forgotten_one.sql +2 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0005_snapshot.json +1659 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/_journal.json +7 -0
- package/apps/runtime/dist/db/schema.js +6 -0
- package/apps/runtime/dist/engine/asks.js +2 -0
- package/apps/runtime/dist/engine/push.js +58 -0
- package/apps/runtime/dist/engine/runner.js +6 -0
- package/apps/runtime/dist/env.js +14 -1
- package/apps/runtime/dist/limits.js +21 -0
- package/apps/runtime/dist/manage.js +16 -3
- package/apps/runtime/dist/mcp/tools.js +4 -2
- package/apps/runtime/dist/plugins/loader.js +23 -1
- package/apps/runtime/dist/routes/api.js +96 -6
- package/apps/runtime/dist/routes/runs.js +68 -2
- package/apps/runtime/dist/routes/studio.js +79 -11
- package/apps/runtime/dist/services/access.js +62 -0
- package/apps/runtime/dist/services/architect.js +3 -2
- package/apps/runtime/dist/services/cloud.js +241 -39
- package/apps/runtime/dist/services/errors.js +1 -0
- package/apps/runtime/dist/services/files.js +3 -3
- package/apps/runtime/dist/services/project-files.js +6 -0
- package/apps/runtime/dist/services/projects.js +38 -14
- package/apps/runtime/dist/services/spaces.js +400 -0
- package/apps/runtime/dist/services/wizards.js +19 -8
- package/apps/runtime/dist/tenants/control.js +47 -0
- package/apps/web/dist/assets/{ChangelogDialog-Co_9fs61.js → ChangelogDialog-CbZBUMRu.js} +1 -1
- package/apps/web/dist/assets/ChatPanel-zurtfj6A.js +1 -0
- package/apps/web/dist/assets/{CreditsDialog-D3fZRqXH.js → CreditsDialog-BewZHZTR.js} +1 -1
- package/apps/web/dist/assets/EditorPage-B7ZOoW5h.js +2 -0
- package/apps/web/dist/assets/{FlowPreview-CjUK5046.js → FlowPreview-DHrhPps0.js} +1 -1
- package/apps/web/dist/assets/HomePage-CBvWxXsq.js +1 -0
- package/apps/web/dist/assets/ImportWizard-CKjVJMaG.js +1 -0
- package/apps/web/dist/assets/{LocalRuntime-CTyLGC98.js → LocalRuntime-Brkvbzzg.js} +10 -10
- package/apps/web/dist/assets/NewWizardPage-B3XePMlp.js +2 -0
- package/apps/web/dist/assets/PublicRunner-Bn1g6HG9.js +1 -0
- package/apps/web/dist/assets/RunnerView-CO1Nk3jn.js +2 -0
- package/apps/web/dist/assets/SettingsPage-BIY4kHZl.js +2 -0
- package/apps/web/dist/assets/{SetupPage-CfXTOaIm.js → SetupPage-BvLwZH9i.js} +1 -1
- package/apps/web/dist/assets/{SharePage-CgByqrAF.js → SharePage-CDESJ11B.js} +1 -1
- package/apps/web/dist/assets/{api-KMi35npD.js → api-9sHuNTkp.js} +1 -1
- package/apps/web/dist/assets/changelog-Cto0j5-V.js +1 -0
- package/apps/web/dist/assets/index-CIwJmOjo.css +1 -0
- package/apps/web/dist/assets/{index-BmpnE7IO.js → index-VsRgvimv.js} +3 -3
- package/apps/web/dist/assets/{meta-4R1Lnr25.js → meta-B4mZqEso.js} +1 -1
- package/apps/web/dist/assets/oss-credits-Hu4LieLA.js +1 -0
- package/apps/web/dist/assets/outputs-boPx5ngv.js +69 -0
- package/apps/web/dist/assets/{session-B6-6VomQ.js → session-CJGuo1Tv.js} +1 -1
- package/apps/web/dist/assets/type-BMJpS6_D.js +1 -0
- package/apps/web/dist/assets/ui-iTYHqwvY.js +1 -0
- package/apps/web/dist/index.html +5 -5
- package/apps/web/dist/mcp/flow.html +54 -54
- package/modules/README.md +1 -1
- package/node_modules/@engenty-wizards/plugin-sdk/dist/index.d.ts +24 -1
- package/node_modules/@engenty-wizards/plugin-sdk/dist/studio.d.ts +1 -1
- package/package.json +1 -1
- package/apps/web/dist/assets/ChatPanel-Br3nYkUc.js +0 -1
- package/apps/web/dist/assets/EditorPage-BSjQC6FE.js +0 -2
- package/apps/web/dist/assets/HomePage-8v4HqIbP.js +0 -1
- package/apps/web/dist/assets/ImportWizard-DiV62Uno.js +0 -1
- package/apps/web/dist/assets/NewWizardPage-BBL2yenw.js +0 -2
- package/apps/web/dist/assets/PublicRunner-BwtoEVlE.js +0 -1
- package/apps/web/dist/assets/RunnerView-DOizlTad.js +0 -2
- package/apps/web/dist/assets/SettingsPage-CBDv04YS.js +0 -2
- package/apps/web/dist/assets/changelog-03JgixQA.js +0 -1
- package/apps/web/dist/assets/index-B9YVjvVY.css +0 -1
- package/apps/web/dist/assets/oss-credits-roB62QJu.js +0 -1
- package/apps/web/dist/assets/outputs-COE_nvAw.js +0 -69
- package/apps/web/dist/assets/type-Bj9H3eOK.js +0 -1
- package/apps/web/dist/assets/ui-Cs6lpsmj.js +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/qr-scanner.min-C_UI0gH-.js","assets/preload-helper-CNEI7N0N.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{c as r,d as i,n as a,t as o}from"./api-KMi35npD.js";import{t as s}from"./preload-helper-CNEI7N0N.js";import{t as c}from"./createLucideIcon-q3MZMmnf.js";import{t as l}from"./arrow-left-hTN1VoH1.js";import{t as u}from"./arrow-right-6FyN3e7D.js";import{S as d,_ as f,a as p,b as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,o as C,p as w,s as T,t as E,u as D,v as O,x as ee,y as k}from"./outputs-COE_nvAw.js";import{t as A}from"./check-CUpby_J9.js";import{n as j,t as M}from"./plus-Du-Jx8aI.js";import{t as N}from"./external-link-MAL7vJYj.js";import{n as P,t as F}from"./mic-Bvz4mA2j.js";import{n as I,t as te}from"./video-CjgmvRDk.js";import{d as ne,f as re,p as ie,u as ae}from"./definition-DndaH5Ow.js";import{_ as L,c as R,d as z,f as oe,h as B,i as se,l as ce,m as le,n as ue,o as V,p as de,s as H,t as U,u as fe,y as W}from"./ui-Cs6lpsmj.js";import{l as G}from"./index-BmpnE7IO.js";var pe={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};pe.node;var me=c(pe),he={name:`bell-ring`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]};he.node;var ge=c(he),_e={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};_e.node;var ve=c(_e),ye={name:`camera`,size:24,node:[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]};ye.node;var be=c(ye),xe={name:`corner-down-left`,size:24,node:[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]};xe.node;var Se=c(xe),Ce={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Ce.node;var we=c(Ce),Te={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};Te.node;var Ee=c(Te),De={name:`file-headphone`,size:24,node:[[`path`,{d:`M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343`,key:`1vfytu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0`,key:`1etmh7`}]],aliases:[`file-audio`,`file-audio-2`]};De.node;var Oe=c(De),ke={name:`flashlight-off`,size:24,node:[[`path`,{d:`M11.652 6H18`,key:`voqkpr`}],[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V6`,key:`dzyf92`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M7.649 2H17a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8a4 4 0 0 0-.55 1.007`,key:`1hvcfn`}]]};ke.node;var Ae=c(ke),je={name:`flashlight`,size:24,node:[[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M17 2a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8A4 4 0 0 0 16 12v8a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V3a1 1 0 0 1 1-1z`,key:`17vh7j`}],[`path`,{d:`M6 6h12`,key:`n6hhss`}]]};je.node;var Me=c(je),Ne={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};Ne.node;var Pe=c(Ne),Fe={name:`image-plus`,size:24,node:[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Fe.node;var Ie=c(Fe),Le={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Le.node;var Re=c(Le),ze={name:`locate-fixed`,size:24,node:[[`line`,{x1:`2`,x2:`5`,y1:`12`,y2:`12`,key:`bvdh0s`}],[`line`,{x1:`19`,x2:`22`,y1:`12`,y2:`12`,key:`1tbv5k`}],[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`5`,key:`11lu5j`}],[`line`,{x1:`12`,x2:`12`,y1:`19`,y2:`22`,key:`x3vr5v`}],[`circle`,{cx:`12`,cy:`12`,r:`7`,key:`fim9np`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};ze.node;var Be=c(ze),Ve={name:`lock-keyhole`,size:24,node:[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]};Ve.node;var He=c(Ve),Ue={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Ue.node;var We=c(Ue),Ge={name:`pencil-line`,size:24,node:[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]};Ge.node;var Ke=c(Ge),qe={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};qe.node;var Je=c(qe),Ye={name:`scan-line`,size:24,node:[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]};Ye.node;var Xe=c(Ye),Ze={name:`share-2`,size:24,node:[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]};Ze.node;var Qe=c(Ze),$e={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};$e.node;var et=c($e),tt={name:`switch-camera`,size:24,node:[[`path`,{d:`M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5`,key:`mtk2lu`}],[`path`,{d:`M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5`,key:`120jsl`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`path`,{d:`m18 22-3-3 3-3`,key:`kgdoj7`}],[`path`,{d:`m6 2 3 3-3 3`,key:`1fnbkv`}]]};tt.node;var nt=c(tt),rt={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};rt.node;var it=c(rt),at={name:`unplug`,size:24,node:[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]};at.node;var ot=c(at),K=e(t(),1),q=e(n(),1);function st(e,t){let n=encodeURIComponent(e),r=encodeURIComponent(t);return[{id:`mail`,label:W(`shareRun.email`),href:`mailto:?subject=${r}&body=${r}%0A%0A${n}`},{id:`x`,label:`X`,href:`https://x.com/intent/post?text=${r}&url=${n}`},{id:`linkedin`,label:`LinkedIn`,href:`https://www.linkedin.com/sharing/share-offsite/?url=${n}`},{id:`whatsapp`,label:`WhatsApp`,href:`https://wa.me/?text=${r}%20${n}`},{id:`facebook`,label:`Facebook`,href:`https://www.facebook.com/sharer/sharer.php?u=${n}`}]}var ct={x:`𝕏`,linkedin:`in`,whatsapp:`WA`,facebook:`f`};function lt({runId:e,title:t,initial:n}){let[r,i]=(0,K.useState)(!1),[o,s]=(0,K.useState)(n),[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(null),h=async()=>{if(i(!0),!o){l(!0),p(null);try{s(await a.post(`/api/runs/${e}/share`))}catch(e){p(e.message)}finally{l(!1)}}},g=async()=>{await a.del(`/api/runs/${e}/share`),s(null),i(!1)},_=()=>{o&&(navigator.clipboard.writeText(o.url),d(!0),setTimeout(()=>d(!1),1500))},v=typeof navigator<`u`&&`share`in navigator,y=o?.expiresAt?new Intl.DateTimeFormat(L,{dateStyle:`long`}).format(new Date(o.expiresAt)):null;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(U,{variant:`secondary`,onClick:()=>void h(),children:[(0,q.jsx)(Qe,{className:`size-4`}),` `,W(`shareRun.button`)]}),(0,q.jsx)(se,{open:r,onClose:()=>i(!1),title:W(`shareRun.title`),children:c?(0,q.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,q.jsx)(z,{})}):f?(0,q.jsx)(`p`,{className:`rounded-lg bg-rose-tint px-3 py-2 text-[14px] text-rose`,children:f}):o?(0,q.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-paper-2 p-1.5 pl-3`,children:[(0,q.jsx)(m,{className:`size-4 shrink-0 text-ink-3`}),(0,q.jsx)(`input`,{readOnly:!0,value:o.url,onFocus:e=>e.target.select(),"aria-label":W(`share.link`),className:`min-w-0 flex-1 bg-transparent text-[14px] outline-none coarse:h-11`}),(0,q.jsxs)(U,{size:`sm`,onClick:_,children:[u?(0,q.jsx)(A,{className:`size-3.5`}):(0,q.jsx)(j,{className:`size-3.5`}),W(u?`share.copied`:`share.copy`)]})]}),(0,q.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 sm:grid-cols-6`,children:[st(o.url,t).map(e=>(0,q.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer`,className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,q.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 font-semibold text-[15px] transition hover:bg-paper-3`,children:e.id===`mail`?(0,q.jsx)(k,{className:`size-5`}):ct[e.id]}),e.label]},e.id)),v?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>void navigator.share({title:t,url:o.url}).catch(()=>void 0),className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,q.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 transition hover:bg-paper-3`,children:(0,q.jsx)(Qe,{className:`size-5`})}),W(`shareRun.more`)]}):null]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[13px] text-ink-3`,children:[(0,q.jsx)(`span`,{children:y?W(`shareRun.until`,{date:y}):W(`shareRun.kept`)}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>void g(),className:`shrink-0 hover:text-rose coarse:min-h-11`,children:W(`shareRun.withdraw`)})]})]}):null})]})}function ut({runId:e,ask:t}){return t.kind===`confirm`?(0,q.jsx)(dt,{runId:e,ask:t}):(0,q.jsx)(ft,{runId:e,ask:t})}function dt({runId:e,ask:t}){let[n,r]=(0,K.useState)(!1),[i,o]=(0,K.useState)(!1),[s,c]=(0,K.useState)(null),l=async n=>{o(!0),c(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){c(e.message),o(!1)}},u=t.action.destructive?it:Ke;return(0,q.jsxs)(`div`,{className:`animate-rise`,children:[(0,q.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,q.jsx)(`div`,{className:B(`flex size-10 shrink-0 items-center justify-center rounded-full`,t.action.destructive?`bg-rose-tint text-rose`:`bg-ember-tint text-ember-strong`),children:(0,q.jsx)(u,{className:`size-5`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:W(`ask.wants`,{service:t.service})}),(0,q.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason})]})]}),(0,q.jsx)(`pre`,{className:`max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-paper-2 p-4 text-[13px] leading-relaxed ring-1 ring-border-soft`,children:t.input}),(0,q.jsxs)(`div`,{className:`mt-5 flex items-center gap-4`,children:[(0,q.jsx)(de,{checked:n,onChange:r,label:W(`ask.allowRest`)}),(0,q.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:W(`ask.allowRest`)})]}),s?(0,q.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:s}):null,(0,q.jsxs)(`div`,{className:`action-bar mt-6 flex items-center justify-between gap-3`,children:[(0,q.jsx)(U,{variant:`ghost`,disabled:i,onClick:()=>void l({type:`skip`}),children:W(`ask.deny`)}),(0,q.jsx)(U,{busy:i,onClick:()=>void l({type:`done`,remember:n}),children:W(`ask.allow`)})]})]})}function ft({runId:e,ask:t}){let[n,i]=(0,K.useState)({}),[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)(!1),[u,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(0),[h,g]=(0,K.useState)(``),[_,v]=(0,K.useState)(!1),y=(0,K.useRef)(null),b=(0,K.useCallback)(()=>m(e=>e+1),[]);(0,K.useEffect)(()=>{let e=setInterval(b,2500);return()=>clearInterval(e)},[b]);let x=async n=>{l(!0),f(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){f(e.message),l(!1)}},S=async t=>{f(null);try{await a.post(`/api/runs/${e}/browser/act`,t)}catch(e){f(e.message)}b()},C=e=>{let t=y.current;if(!t?.naturalWidth)return;let n=t.getBoundingClientRect();S({type:`click`,x:Math.round((e.clientX-n.left)/n.width*t.naturalWidth),y:Math.round((e.clientY-n.top)/n.height*t.naturalHeight)})},w=t.fields.some(e=>n[e.id]);return(0,q.jsxs)(`div`,{className:`animate-rise`,children:[(0,q.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,q.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-ember-tint text-ember-strong`,children:(0,q.jsx)(He,{className:`size-5`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason}),(0,q.jsxs)(`p`,{className:`mt-0.5 truncate text-[13px] text-ink-3`,children:[t.site.host,t.site.title?` · ${t.site.title}`:``]})]})]}),(0,q.jsxs)(`div`,{className:`overflow-hidden rounded-xl bg-paper-2 ring-1 ring-border-soft`,children:[(0,q.jsx)(`img`,{ref:y,src:r(`/api/runs/${e}/browser/screen?t=${p}`),alt:t.site.host,onClick:C,className:`block w-full cursor-pointer`}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-border-soft border-t bg-card p-2`,children:[(0,q.jsx)(H,{type:_?`password`:`text`,autoComplete:`off`,value:h,placeholder:W(`ask.typeInto`),onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),S({type:`type`,text:h}).then(()=>g(``)))},autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:`send`,className:`h-9 min-w-[9rem] flex-1 basis-full text-[13px] sm:basis-0 coarse:h-11`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:B(`h-9 shrink-0 rounded-md px-2.5 text-[12px] coarse:h-11 coarse:px-3.5`,_?`bg-ember-veil text-ink`:`text-ink-3 hover:bg-paper-2`),children:W(`ask.hide`)}),(0,q.jsx)(pt,{label:`Enter`,onClick:()=>void S({type:`key`,key:`Enter`}),children:(0,q.jsx)(Se,{className:`size-4`})}),(0,q.jsx)(pt,{label:W(`ask.up`),onClick:()=>void S({type:`scroll`,dy:-500}),children:(0,q.jsx)(d,{className:`size-4`})}),(0,q.jsx)(pt,{label:W(`ask.down`),onClick:()=>void S({type:`scroll`,dy:500}),children:(0,q.jsx)(me,{className:`size-4`})})]})]}),(0,q.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-4`,children:W(`ask.pictureHint`)}),t.fields.length?(0,q.jsxs)(`form`,{className:`mt-5 flex flex-col gap-4`,onSubmit:e=>{e.preventDefault(),x({type:`fill`,values:n,remember:o})},children:[t.fields.map((e,r)=>(0,q.jsxs)(`div`,{children:[(0,q.jsx)(R,{children:e.label}),(0,q.jsx)(H,{autoFocus:r===0,type:e.secret?`password`:`text`,autoComplete:`off`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:r===t.fields.length-1?`go`:`next`,value:n[e.id]??``,onChange:t=>i(n=>({...n,[e.id]:t.target.value}))})]},e.id)),(0,q.jsx)(`button`,{type:`submit`,hidden:!0})]}):null,(0,q.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-4`,children:[(0,q.jsx)(de,{checked:o,onChange:s,label:W(`ask.remember`)}),(0,q.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:W(`ask.remember`)})]}),(0,q.jsxs)(`p`,{className:`mt-3 flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,q.jsx)(et,{className:`mt-0.5 size-4 shrink-0 text-moss`}),` `,W(`ask.private`)]}),u?(0,q.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:u}):null,(0,q.jsxs)(`div`,{className:`action-bar mt-6 flex flex-wrap items-center justify-between gap-3`,children:[(0,q.jsx)(U,{variant:`ghost`,disabled:c,onClick:()=>void x({type:`skip`}),children:W(`ask.skip`)}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[t.fields.length?(0,q.jsx)(U,{variant:`secondary`,disabled:c,onClick:()=>void x({type:`done`,remember:o}),children:W(`ask.done`)}):null,t.fields.length?(0,q.jsx)(U,{busy:c,disabled:!w,onClick:()=>void x({type:`fill`,values:n,remember:o}),children:W(`ask.signIn`)}):(0,q.jsx)(U,{busy:c,onClick:()=>void x({type:`done`,remember:o}),children:W(`ask.done`)})]})]})]})}function pt({label:e,onClick:t,children:n}){return(0,q.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:t,className:`flex size-9 shrink-0 items-center justify-center rounded-md text-ink-3 hover:bg-paper-2 hover:text-ink coarse:size-11`,children:n})}var J=36e5,Y=6e4,mt=1e3;function ht(e){return e.fractionDigits===void 0?e.style===`integer`?0:2:e.fractionDigits}function gt(e,t,n=`en`){if(typeof e!=`number`||!Number.isFinite(e))return``;let r=ht(t),i=t.grouping!==!1;return t.style===`percent`?new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,style:`percent`,useGrouping:i}).format(e):t.style===`currency`&&t.currency?new Intl.NumberFormat(n,{currency:t.currency,maximumFractionDigits:r,minimumFractionDigits:r,style:`currency`,useGrouping:i}).format(e):new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,useGrouping:i}).format(e)}function _t(e,t,n=`en`){if(typeof e!=`string`||e.length===0)return``;if(t.kind===`time`)return vt(e,t.timePrecision??`minutes`);if(t.dateStyle===`iso`)return t.kind===`date`?e.slice(0,10):e;let r=t.kind===`date`?new Date(`${e}T00:00:00`):new Date(e);if(Number.isNaN(r.getTime()))return e;let i=t.dateStyle??`medium`;if(t.kind===`date`)return new Intl.DateTimeFormat(n,{dateStyle:i}).format(r);let a=t.timePrecision??`minutes`;return new Intl.DateTimeFormat(n,{dateStyle:i,timeStyle:a===`hours`?`short`:`medium`}).format(r)}function vt(e,t){let[n=`0`,r=`00`,i=`00`]=e.split(`:`);return t===`hours`?`${n.padStart(2,`0`)}:00`:t===`minutes`?`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}`:`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}:${i.padStart(2,`0`)}`}function yt(e,t){if(typeof e!=`number`||!Number.isFinite(e))return``;let n=Math.max(0,Math.round(e));if(t.display===`iso`)return bt(n);if(t.display===`minutes`)return`${Math.round(n/Y)} min`;if(t.display===`hours`)return`${(n/J).toFixed(2)} h`;if(t.display===`decimal-hours`)return(n/J).toFixed(2);let r=Math.floor(n/J),i=Math.floor(n%J/Y),a=Math.floor(n%Y/mt);return`${r}:${String(i).padStart(2,`0`)}:${String(a).padStart(2,`0`)}`}function bt(e){let t=Math.floor(e/J),n=Math.floor(e%J/Y),r=Math.floor(e%Y/mt);return`${t>=24?`P${Math.floor(t/24)}D`:`P`}T${t%24}H${n}M${r}S`}function X(e,t,n=`en`){if(t==null)return``;switch(e.type){case`number`:return gt(t,e.format,n);case`date`:return _t(t,e.format,n);case`duration`:return yt(t,e.format);case`boolean`:return t===!0?`true`:t===!1?`false`:``;case`select`:return xt(e,t);default:return String(t)}}function xt(e,t){let n=Array.isArray(t)?t:[t],r=e.format.options.reduce((e,t)=>(e[t.id]=t.label,e),{});return n.filter(e=>typeof e==`string`&&e.length>0).map(e=>r[e]??e).join(`, `)}async function St(e,t=2400){if(!/^image\/(jpeg|png|webp)$/.test(e.type)||e.size<12e5)return e;try{let n=await createImageBitmap(e),r=Math.min(1,t/Math.max(n.width,n.height)),i=document.createElement(`canvas`);i.width=Math.round(n.width*r),i.height=Math.round(n.height*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height);let a=await new Promise(e=>i.toBlob(e,`image/jpeg`,.86));return a&&a.size<e.size?new File([a],`${e.name.replace(/\.[^.]+$/,``)}.jpg`,{type:`image/jpeg`}):e}catch{return e}}function Ct(){return new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`)}function wt(e){let t=e?.name;return t===`NotFoundError`||t===`OverconstrainedError`?`missing`:t===`NotReadableError`||t===`AbortError`?`busy`:`denied`}function Tt(e){return!!e?.getCapabilities?.()?.torch}function Et(e,t,n=!1){let r=(0,K.useRef)(null),[i,a]=(0,K.useState)(null),[o,s]=(0,K.useState)(null),[c,l]=(0,K.useState)(1),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(!1);return(0,K.useEffect)(()=>{if(!e)return;let r=null,i=!1;s(null),a(null),d(!1),p(!1);let o={facingMode:{ideal:t},width:{ideal:2560},height:{ideal:1440}};return(async()=>{if(!navigator.mediaDevices?.getUserMedia)throw new DOMException(`no camera api`,`NotAllowedError`);try{r=await navigator.mediaDevices.getUserMedia({video:o,audio:n})}catch(e){if(!n)throw e;r=await navigator.mediaDevices.getUserMedia({video:o})}if(i){for(let e of r.getTracks())e.stop();return}a(r);let e=r.getVideoTracks()[0],t=()=>!i&&d(Tt(e));t(),setTimeout(t,600);let s=await navigator.mediaDevices.enumerateDevices().catch(()=>[]);i||l(s.filter(e=>e.kind===`videoinput`).length)})().catch(e=>!i&&s(wt(e))),()=>{i=!0;for(let e of r?.getTracks()??[])e.stop()}},[e,t,n]),(0,K.useEffect)(()=>{r.current&&i&&(r.current.srcObject=i)},[i]),{video:r,stream:i,error:o,cameras:c,torchable:u,torch:f,setTorch:async e=>{let t=i?.getVideoTracks()[0];try{await t?.applyConstraints({advanced:[{torch:e}]}),p(e)}catch{d(!1)}},mirrored:i?.getVideoTracks()[0]?.getSettings().facingMode===`user`}}function Dt({open:e,onClose:t,label:n,children:r}){let i=(0,K.useRef)(null);return(0,K.useEffect)(()=>{let t=i.current;t&&(e&&!t.open?t.showModal():!e&&t.open&&t.close())},[e]),(0,q.jsx)(`dialog`,{ref:i,onClose:t,"aria-label":n,className:`media-sheet`,children:e?(0,q.jsx)(`div`,{className:`flex h-full flex-col`,children:r}):null})}function Ot({label:e,onClick:t,active:n,children:r}){return(0,q.jsx)(`button`,{type:`button`,"aria-label":e,title:e,"aria-pressed":n,onClick:t,className:B(`flex size-11 shrink-0 items-center justify-center rounded-full transition`,n?`bg-white text-black`:`bg-white/12 text-white hover:bg-white/20`),children:r})}function kt({title:e,onClose:t,camera:n,onFlip:r}){return(0,q.jsx)(`div`,{className:`safe-top`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,q.jsx)(Ot,{label:W(`common.close`),onClick:t,children:(0,q.jsx)(G,{className:`size-5`})}),(0,q.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-center font-medium text-[15px]`,children:e}),n.torchable?(0,q.jsx)(Ot,{label:W(`camera.torch`),active:n.torch,onClick:()=>void n.setTorch(!n.torch),children:n.torch?(0,q.jsx)(Me,{className:`size-5`}):(0,q.jsx)(Ae,{className:`size-5`})}):null,n.stream&&(n.cameras>1||h)?(0,q.jsx)(Ot,{label:W(`camera.flip`),onClick:r,children:(0,q.jsx)(nt,{className:`size-5`})}):(0,q.jsx)(`span`,{className:`size-11`})]})})}function At({camera:e,asking:t,children:n,actions:r}){return(0,q.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:[(0,q.jsx)(`video`,{ref:e.video,autoPlay:!0,playsInline:!0,muted:!0,className:B(`absolute inset-0 size-full object-contain`,e.mirrored&&`-scale-x-100`)}),e.error?(0,q.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-5 bg-black px-8 text-center`,children:[(0,q.jsx)(`p`,{className:`max-w-sm text-[15px] text-white/85 leading-relaxed`,children:W(`camera.${e.error}`)}),r]}):e.stream?n:(0,q.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-4 px-8 text-center text-white/75`,children:[(0,q.jsx)(z,{}),(0,q.jsx)(`p`,{className:`max-w-xs text-[14px] leading-relaxed`,children:t})]})]})}var jt=30;function Mt(){if(typeof MediaRecorder<`u`)return[`video/mp4;codecs=avc1.42E01E,mp4a.40.2`,`video/mp4`,`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`].find(e=>MediaRecorder.isTypeSupported(e))}var Nt=!!Mt();function Pt({open:e,multiple:t,video:n,onClose:r,onCapture:i,onNative:a}){let[o,s]=(0,K.useState)(`environment`),[c,l]=(0,K.useState)(`photo`),[u,d]=(0,K.useState)(0),[f,p]=(0,K.useState)(!1),[m,g]=(0,K.useState)(null),_=(0,K.useRef)(null),v=Et(e,o,c===`video`);(0,K.useEffect)(()=>{e&&(d(0),l(`photo`),g(null))},[e]);let y=async e=>{p(!0);try{await i(e),d(e=>e+1),t||r()}finally{p(!1)}},b=async()=>{let e=v.video.current;if(!e?.videoWidth)return;let t=document.createElement(`canvas`);t.width=e.videoWidth,t.height=e.videoHeight,t.getContext(`2d`)?.drawImage(e,0,0);let n=await new Promise(e=>t.toBlob(e,`image/jpeg`,.9));n&&await y(new File([n],`foto-${Ct()}.jpg`,{type:`image/jpeg`}))},x=()=>{_.current?.state===`recording`&&_.current.stop()},S=()=>{let e=Mt();if(!v.stream||!e)return;let t=[],n=new MediaRecorder(v.stream,{mimeType:e,videoBitsPerSecond:25e5,audioBitsPerSecond:96e3});n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{g(null),_.current=null;let n=e.split(`;`)[0];if(t.length){let e=n===`video/mp4`?`mp4`:`webm`;y(new File(t,`video-${Ct()}.${e}`,{type:n}))}},_.current=n,n.start(1e3),g(0)};(0,K.useEffect)(()=>{if(m===null)return;if(m>=jt){_.current?.state===`recording`&&_.current.stop();return}let e=setTimeout(()=>g(e=>e===null?null:e+1),1e3);return()=>clearTimeout(e)},[m]),(0,K.useEffect)(()=>{!e&&_.current&&(_.current.onstop=null,_.current.stop(),_.current=null)},[e]);let C=e=>`0:${String(e).padStart(2,`0`)}`;return(0,q.jsxs)(Dt,{open:e,onClose:r,label:W(`camera.title`),children:[(0,q.jsx)(kt,{title:m===null?u?W(`camera.taken`,{n:u}):W(`camera.title`):`${C(m)} / ${C(jt)}`,onClose:r,camera:v,onFlip:()=>s(e=>e===`environment`?`user`:`environment`)}),(0,q.jsx)(At,{camera:v,asking:W(`camera.asking`),actions:(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[a?(0,q.jsxs)(Z,{onClick:()=>{r(),a()},children:[(0,q.jsx)(be,{className:`size-4`}),` `,W(h?`camera.native`:`camera.pick`)]}):null,(0,q.jsx)(Z,{quiet:!0,onClick:r,children:W(`common.close`)})]})}),(0,q.jsxs)(`div`,{className:B(`safe-bottom px-4 pt-3`,v.error&&`invisible`),children:[n&&Nt&&m===null?(0,q.jsx)(`div`,{className:`mb-3 flex justify-center gap-1 text-[13px]`,children:[`photo`,`video`].map(e=>(0,q.jsx)(`button`,{type:`button`,"aria-pressed":c===e,onClick:()=>l(e),className:B(`h-9 rounded-full px-4 font-medium transition`,c===e?`bg-white text-black`:`text-white/70 hover:text-white`),children:W(e===`photo`?`camera.photo`:`camera.video`)},e))}):null,(0,q.jsxs)(`div`,{className:`grid grid-cols-[1fr_auto_1fr] items-center gap-3`,children:[(0,q.jsx)(`span`,{className:`text-[13px] text-white/70 leading-snug`,children:m===null?c===`video`?W(`camera.clipHint`,{s:jt}):W(t?`camera.hintMany`:`camera.hint`):W(`camera.recording`)}),(0,q.jsx)(`button`,{type:`button`,"aria-label":W(c===`photo`?`camera.shoot`:m===null?`camera.record`:`camera.stop`),disabled:!v.stream||f,onClick:()=>c===`photo`?void b():m===null?S():x(),className:`flex size-[72px] items-center justify-center rounded-full border-4 border-white transition active:scale-95 disabled:opacity-40`,children:f?(0,q.jsx)(z,{className:`text-white`}):c===`photo`?(0,q.jsx)(`span`,{className:`size-[54px] rounded-full bg-white`}):m===null?(0,q.jsx)(`span`,{className:`flex size-[54px] items-center justify-center rounded-full bg-[#e5484d]`,children:(0,q.jsx)(te,{className:`size-6 text-white`})}):(0,q.jsx)(`span`,{className:`size-7 rounded-md bg-[#e5484d]`})}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:t&&u&&m===null?(0,q.jsxs)(Z,{onClick:r,children:[(0,q.jsx)(A,{className:`size-4`}),` `,W(`camera.done`)]}):null})]})]})]})}function Z({onClick:e,quiet:t,children:n}){return(0,q.jsx)(`button`,{type:`button`,onClick:e,className:B(`inline-flex h-11 items-center justify-center gap-2 rounded-full px-5 font-medium text-[14px] transition`,t?`text-white/75 hover:text-white`:`bg-white text-black hover:bg-white/90`),children:n})}var Ft=25,It=9e3;function Lt(e){return e.code===e.PERMISSION_DENIED?`denied`:e.code===e.TIMEOUT?`timeout`:`unavailable`}function Rt({value:e,runId:t,placeholder:n,onChange:r,onBusy:i}){let o=ne(e)?e:null,[s,c]=(0,K.useState)(!1),[l,u]=(0,K.useState)(null),d=(0,K.useRef)(null),f=(0,K.useRef)(!!o?.label),p=(0,K.useRef)(o);p.current=o;let m=o?.lat!==void 0&&o.lng!==void 0,h=typeof navigator<`u`&&`geolocation`in navigator,g=()=>{d.current!==null&&(navigator.geolocation.clearWatch(d.current),d.current=null),c(!1),i?.(!1)};(0,K.useEffect)(()=>()=>{d.current!==null&&navigator.geolocation.clearWatch(d.current)},[]);let _=async(e,n)=>{try{let{label:i}=await a.post(`/api/runs/${t}/geocode`,{lat:e,lng:n,language:L}),o=p.current;i&&!f.current&&o?.lat===e&&o.lng===n&&r({...o,label:i})}catch{}},v=()=>{u(null),c(!0),i?.(!0);let e=Date.now(),t=1/0;d.current=navigator.geolocation.watchPosition(n=>{let{latitude:i,longitude:a,accuracy:o}=n.coords;if(o<t){t=o;let e=Math.round(i*1e6)/1e6,n=Math.round(a*1e6)/1e6,s=f.current?p.current?.label:void 0,c={lat:e,lng:n,accuracy:Math.round(o),...s?{label:s}:{}};p.current=c,r(c)}if(t<=Ft||Date.now()-e>It){g();let e=p.current;e?.lat!==void 0&&e.lng!==void 0&&_(e.lat,e.lng)}},e=>{g(),t===1/0&&u(Lt(e))},{enableHighAccuracy:!0,timeout:15e3,maximumAge:1e4})},y=e=>{f.current=e.trim().length>0;let t={...m?o:{},label:e};r(m||e.trim()?t:void 0)};return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[m?(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,q.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,q.jsx)(We,{className:`size-5`})}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`truncate font-medium text-[15px] tabular-nums`,children:[o.lat?.toFixed(5),`, `,o.lng?.toFixed(5)]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[13px] text-ink-3`,children:[(0,q.jsx)(`span`,{children:s?W(`location.refining`):o.accuracy?W(`location.accuracy`,{m:o.accuracy}):null}),(0,q.jsxs)(`a`,{href:`https://www.openstreetmap.org/?mlat=${o.lat}&mlon=${o.lng}#map=17/${o.lat}/${o.lng}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 underline-offset-2 hover:text-ink hover:underline coarse:-my-3 coarse:min-h-11 coarse:min-w-11`,children:[W(`location.map`),` `,(0,q.jsx)(N,{className:`size-3`})]})]})]}),(0,q.jsx)(V,{label:W(`location.remove`),onClick:()=>{g(),f.current=!1,r(void 0)},children:(0,q.jsx)(G,{className:`size-4`})})]}):h?(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(U,{variant:`secondary`,size:`lg`,busy:s,onClick:v,className:`w-full sm:w-auto`,children:[s?null:(0,q.jsx)(Be,{className:`size-4`}),W(s?`location.locating`:`location.use`)]}),l?(0,q.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:W(`location.${l}`)}):(0,q.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:W(`location.why`)})]}):null,(0,q.jsx)(H,{value:o?.label??``,placeholder:n??W(m?`location.label`:`location.manual`),autoComplete:`street-address`,enterKeyHint:`done`,"aria-label":W(`location.manual`),onChange:e=>y(e.target.value)})]})}var zt=null;function Bt(){return zt??=(async()=>{let e=window.BarcodeDetector;if(e)try{let t=await e.getSupportedFormats();if(t.includes(`qr_code`)){let n=new e({formats:t});return{qrOnly:!1,detect:async e=>(await n.detect(e))[0]?.rawValue||null}}}catch{}let{default:t}=await s(async()=>{let{default:e}=await import(`./qr-scanner.min-C_UI0gH-.js`);return{default:e}},__vite__mapDeps([0,1])),n=t.createQrEngine();return{qrOnly:!0,detect:async e=>{try{return(await t.scanImage(e,{qrEngine:n,returnDetailedScanResult:!0})).data||null}catch{return null}}}})(),zt}function Vt({open:e,onClose:t,onResult:n}){let[r,i]=(0,K.useState)(`environment`),[a,o]=(0,K.useState)(!1),[s,c]=(0,K.useState)(!1),l=(0,K.useRef)(null),u=Et(e,r),d=(0,K.useRef)(n);d.current=n;let f=(0,K.useRef)(t);f.current=t,(0,K.useEffect)(()=>{e&&(c(!1),Bt().then(e=>o(e.qrOnly)))},[e]),(0,K.useEffect)(()=>{if(!e||!u.stream)return;let t=!1,n,r=async()=>{let e=u.video.current;if(!t&&e&&e.readyState>=2&&e.videoWidth){let n=await(await Bt()).detect(e).catch(()=>null);if(n&&!t){navigator.vibrate?.(60),d.current(n),f.current();return}}t||(n=setTimeout(r,200))};return r(),()=>{t=!0,clearTimeout(n)}},[e,u.stream,u.video]);let p=async e=>{if(!e)return;c(!1);let r=await createImageBitmap(e).catch(()=>null),i=r?await(await Bt()).detect(r).catch(()=>null):null;i?(n(i),t()):c(!0)};return(0,q.jsxs)(Dt,{open:e,onClose:t,label:W(`scan.title`),children:[(0,q.jsx)(kt,{title:W(`scan.title`),onClose:t,camera:u,onFlip:()=>i(e=>e===`environment`?`user`:`environment`)}),(0,q.jsx)(At,{camera:u,asking:W(`scan.asking`),actions:(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsxs)(Z,{onClick:()=>l.current?.click(),children:[(0,q.jsx)(Re,{className:`size-4`}),` `,W(`scan.fromPhoto`)]}),(0,q.jsx)(Z,{quiet:!0,onClick:t,children:W(`scan.typeInstead`)})]}),children:(0,q.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:(0,q.jsx)(`div`,{className:`aspect-square w-[min(68%,320px)] rounded-3xl border-2 border-white/90 shadow-[0_0_0_100vmax_rgb(0_0_0/0.35)]`})})}),(0,q.jsxs)(`div`,{className:`safe-bottom flex flex-col items-center gap-3 px-5 pt-3 text-center`,children:[(0,q.jsx)(`p`,{className:`text-[13px] text-white/75 leading-snug`,children:W(s?`scan.miss`:a?`scan.hintQr`:`scan.hint`)}),u.stream?(0,q.jsxs)(Z,{quiet:!0,onClick:()=>l.current?.click(),children:[(0,q.jsx)(Re,{className:`size-4`}),` `,W(`scan.fromPhoto`)]}):null]}),(0,q.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,onChange:e=>{p(e.target.files?.[0]),e.target.value=``}})]})}var Ht=`#1d1a17`,Q={width:1200,height:480};function Ut(e,t,n,r,i){e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=Ht,e.fillStyle=Ht,e.lineWidth=i;for(let a of t){if(a.length===1){e.beginPath(),e.arc(a[0].x*n,a[0].y*r,i/2,0,Math.PI*2),e.fill();continue}e.beginPath(),e.moveTo(a[0].x*n,a[0].y*r);for(let t=1;t<a.length-1;t++){let i=a[t],o=a[t+1];e.quadraticCurveTo(i.x*n,i.y*r,(i.x+o.x)/2*n,(i.y+o.y)/2*r)}let t=a[a.length-1];e.lineTo(t.x*n,t.y*r),e.stroke()}}function Wt({strokes:e,onStrokes:t}){let n=(0,K.useRef)(null),r=(0,K.useRef)(null),i=(0,K.useRef)(e);i.current=e;let a=()=>{let e=n.current,t=e?.getContext(`2d`);if(!e||!t)return;let a=window.devicePixelRatio||1,o=Math.round(e.clientWidth*a),s=Math.round(e.clientHeight*a);(e.width!==o||e.height!==s)&&(e.width=o,e.height=s),t.clearRect(0,0,o,s),Ut(t,r.current?[...i.current,r.current]:i.current,o,s,2.4*a)};(0,K.useEffect)(()=>{a();let e=n.current;if(!e)return;let t=new ResizeObserver(a);return t.observe(e),()=>t.disconnect()},[e]);let o=e=>{let t=e.currentTarget.getBoundingClientRect();return{x:Math.min(1,Math.max(0,(e.clientX-t.left)/t.width)),y:Math.min(1,Math.max(0,(e.clientY-t.top)/t.height))}};return(0,q.jsxs)(`div`,{className:`relative overflow-hidden rounded-xl bg-white ring-1 ring-input`,children:[(0,q.jsx)(`canvas`,{ref:n,"aria-label":W(`sign.pad`),className:`block aspect-[5/2] w-full cursor-crosshair touch-none select-none`,onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),r.current=[o(e)],a()},onPointerMove:e=>{r.current&&(r.current.push(o(e)),a())},onPointerUp:()=>{if(r.current){let e=r.current;r.current=null,t([...i.current,e])}},onPointerCancel:()=>{r.current=null,a()}}),(0,q.jsx)(`div`,{className:`pointer-events-none absolute inset-x-6 bottom-[22%] border-[#1d1a17]/25 border-b`}),e.length?null:(0,q.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center text-[#1d1a17]/40 text-[14px]`,children:W(`sign.hint`)})]})}async function Gt(e){let t=document.createElement(`canvas`);t.width=Q.width,t.height=Q.height;let n=t.getContext(`2d`);if(!n)return null;Ut(n,e,Q.width,Q.height,7);let r=await new Promise(e=>t.toBlob(e,`image/png`));return r?new File([r],`unterschrift.png`,{type:`image/png`}):null}function Kt({label:e,value:t,runId:n,onChange:i}){let[o,s]=(0,K.useState)(!1),[c,l]=(0,K.useState)([]),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(null),m=typeof t==`string`&&t?t:null,h=async()=>{d(!0),p(null);try{let e=await Gt(c);if(!e)return;i((await a.upload(`/api/runs/${n}/uploads`,e)).id),s(!1)}catch(e){p(e.message)}finally{d(!1)}};return(0,q.jsxs)(`div`,{children:[m?(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`min-w-0 flex-1 rounded-lg bg-white px-3`,"aria-label":W(`sign.again`),children:(0,q.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${m}`),alt:e,className:`mx-auto h-20 object-contain`})}),(0,q.jsx)(V,{label:W(`sign.remove`),onClick:()=>i(void 0),children:(0,q.jsx)(G,{className:`size-4`})})]}):(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`flex w-full flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-4 py-7 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,children:[(0,q.jsx)(I,{className:`size-6`}),W(`sign.open`)]}),(0,q.jsxs)(se,{open:o,onClose:()=>s(!1),title:e,wide:!0,children:[(0,q.jsx)(Wt,{strokes:c,onStrokes:l}),f?(0,q.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:f}):null,(0,q.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-3`,children:[(0,q.jsxs)(U,{variant:`ghost`,disabled:!c.length||u,onClick:()=>l([]),children:[(0,q.jsx)(Ee,{className:`size-4`}),` `,W(`sign.clear`)]}),(0,q.jsx)(U,{busy:u,disabled:!c.length,onClick:()=>void h(),children:W(`sign.accept`)})]})]})]})}function qt({runId:e,connectionId:t,connector:n,onCancel:r}){let[i,o]=(0,K.useState)({}),[s,c]=(0,K.useState)(!1),[l,u]=(0,K.useState)(null),d=async()=>{c(!0),u(null);try{await a.post(`/api/runs/${e}/connections/${t}/credentials/${n.id}`,{values:i})}catch(e){u(e.message)}finally{c(!1)}};return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-xl bg-card p-4 ring-1 ring-input`,children:[(n.fields??[]).map(e=>(0,q.jsxs)(`div`,{children:[(0,q.jsx)(R,{children:e.label}),(0,q.jsx)(H,{type:e.secret?`password`:`text`,autoComplete:`off`,value:i[e.key]??``,placeholder:e.placeholder,onChange:t=>o(n=>({...n,[e.key]:t.target.value})),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),d())}})]},e.key)),n.hint?(0,q.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:n.hint}):null,l?(0,q.jsx)(`p`,{className:`text-[13px] text-rose`,children:l}):null,(0,q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:r,children:W(`common.cancel`)}),(0,q.jsx)(U,{size:`sm`,busy:s,onClick:()=>void d(),children:W(`connect.go`)})]})]})}function Jt({runId:e,connection:t}){let[n,r]=(0,K.useState)(null),[i,o]=(0,K.useState)(null),[s,c]=(0,K.useState)(null);if(!t)return null;if(t.account){let n=t.connectors.find(e=>e.id===t.account?.connector)?.name??``;return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,q.jsx)(`div`,{className:`flex size-10 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,q.jsx)(A,{className:`size-5`})}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`truncate font-medium text-[15px]`,children:t.account.label}),(0,q.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:W(`connect.connected`,{name:n})})]}),(0,q.jsx)(V,{label:W(`connect.disconnect`),onClick:()=>void a.del(`/api/runs/${e}/connections/${t.id}`),children:(0,q.jsx)(ot,{className:`size-4`})})]})}let l=async n=>{c(null),o(null);let r=window.open(`about:blank`,`wizard-connect`,`width=540,height=700`);try{let{url:i}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);r?r.location.replace(i):o(i)}catch(e){r?.close(),c(e.message)}},u=t.connectors.find(e=>e.id===n);return t.connectors.length?(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.connectors.map(e=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>e.auth===`oauth2`?void l(e):r(n===e.id?null:e.id),className:B(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,n===e.id?`bg-ember-veil text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ember`),children:[(0,q.jsx)(m,{className:`size-4`}),` `,e.name]},e.id))}),u?(0,q.jsx)(qt,{runId:e,connectionId:t.id,connector:u,onCancel:()=>r(null)}):null,i?(0,q.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,className:`text-[14px] text-ember underline`,children:W(`connect.openLink`)}):null,s?(0,q.jsx)(`p`,{className:`text-[13px] text-rose`,children:s}):null]}):(0,q.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:W(`connect.none`)})}function Yt(e){return e==null?``:Array.isArray(e)?e.join(`, `):String(e)}function Xt(e,t){if(t.trim()===``)return null;if(e.type===`number`){let e=Number(t.replace(/\s/g,``).replace(`,`,`.`));return Number.isFinite(e)?e:t}return e.type===`boolean`?t===`true`:t}function $({column:e,value:t,boxed:n,onCommit:r}){let[i,a]=(0,K.useState)(Yt(t));(0,K.useEffect)(()=>a(Yt(t)),[t]);let o=B(`w-full min-w-0 rounded-md border border-transparent px-2 text-[13px] outline-none focus:border-ember focus:bg-card`,n?`h-11 bg-paper-2`:`h-9 bg-transparent hover:bg-paper-2 coarse:h-11`);return e.type===`boolean`?(0,q.jsx)(`label`,{className:`flex size-9 cursor-pointer items-center justify-center coarse:size-11`,children:(0,q.jsx)(`input`,{type:`checkbox`,"aria-label":e.name,checked:t===!0,onChange:e=>r(e.target.checked),className:`size-4 accent-[var(--ember)] coarse:size-6`})}):e.type===`select`&&!e.format.multiple&&!e.format.allowCustom?(0,q.jsxs)(`select`,{value:i,onChange:e=>r(e.target.value||null),className:o,children:[(0,q.jsx)(`option`,{value:``}),e.format.options.map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.label},e.id))]}):(0,q.jsx)(`input`,{"aria-label":e.name,type:e.type===`date`&&e.format.kind===`date`?`date`:`text`,inputMode:e.type===`number`?`decimal`:void 0,enterKeyHint:`done`,autoComplete:`off`,value:i,onChange:e=>a(e.target.value),onBlur:()=>{i!==Yt(t)&&r(Xt(e,i))},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.target.blur())},className:B(o,e.type===`number`&&`text-right tabular-nums`)})}function Zt({runId:e,list:t,editable:n}){let{def:r,rows:i}=t,[s,c]=(0,K.useState)(null),[l,u]=(0,K.useState)({}),d=`/api/runs/${e}/lists/${r.id}/rows`,f=async e=>{c(null);try{await e()}catch(e){c(e instanceof o?e.message:String(e))}},p=()=>f(async()=>{await a.post(d,{cells:l}),u({})}),m=Object.values(l).some(e=>e!=null&&e!==``);if(!i.length&&!n)return(0,q.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:W(`list.empty`)});let h=(e,t)=>t===0||e.type===`text`&&e.format?.style===`multiline`,g=(e,t,n)=>void f(()=>a.patch(`${d}/${e}`,{cells:{[t]:n}}));return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:hidden`,children:[i.map(e=>(0,q.jsxs)(`div`,{className:`rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,q.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((t,r)=>(0,q.jsxs)(`div`,{className:B(`min-w-0`,h(t,r)&&`col-span-2`),children:[(0,q.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:t.name}),n?(0,q.jsx)($,{boxed:!0,column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,q.jsx)(`div`,{className:B(`break-words px-1 text-[14px]`,t.type===`number`&&`tabular-nums`),children:X(t,e.cells[t.id],L)||`—`})]},t.id))}),n?(0,q.jsx)(`div`,{className:`mt-1 flex justify-end`,children:(0,q.jsx)(V,{label:W(`list.delete`),onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,q.jsx)(S,{className:`size-4`})})}):null]},e.id)),n?(0,q.jsxs)(`div`,{className:`rounded-lg border border-input border-dashed p-2`,children:[(0,q.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((e,t)=>(0,q.jsxs)(`div`,{className:B(`min-w-0`,h(e,t)&&`col-span-2`),children:[(0,q.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,q.jsx)($,{boxed:!0,column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})]},e.id))}),(0,q.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,q.jsxs)(U,{variant:`secondary`,size:`sm`,onClick:()=>m?void p():void 0,children:[(0,q.jsx)(M,{className:`size-4`}),` `,W(`run.addRow`)]})})]}):null]}),(0,q.jsx)(`div`,{className:`hidden overflow-x-auto rounded-lg ring-1 ring-border-soft sm:block`,children:(0,q.jsxs)(`table`,{className:`w-full text-[13px]`,children:[(0,q.jsx)(`thead`,{className:`bg-paper-2 text-ink-2`,children:(0,q.jsxs)(`tr`,{children:[r.columns.map(e=>(0,q.jsx)(`th`,{className:`whitespace-nowrap px-3 py-2 text-left font-medium`,children:e.name},e.id)),n?(0,q.jsx)(`th`,{className:`w-10`}):null]})}),(0,q.jsxs)(`tbody`,{children:[i.map(e=>(0,q.jsxs)(`tr`,{className:`border-border-soft border-t align-top`,children:[r.columns.map(t=>(0,q.jsx)(`td`,{className:B(`min-w-[7.5rem]`,n?`px-1 py-0.5`:`px-3 py-2`),children:n?(0,q.jsx)($,{column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,q.jsx)(`span`,{className:B(t.type===`number`&&`tabular-nums`),children:X(t,e.cells[t.id],L)})},t.id)),n?(0,q.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,q.jsx)(V,{label:W(`list.delete`),className:`size-9`,onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,q.jsx)(S,{className:`size-3.5`})})}):null]},e.id)),n?(0,q.jsxs)(`tr`,{className:`border-border-soft border-t bg-paper`,children:[r.columns.map(e=>(0,q.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,q.jsx)($,{column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})},e.id)),(0,q.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,q.jsx)(V,{label:W(`run.addRow`),className:`size-9`,onClick:()=>m?void p():void 0,children:(0,q.jsx)(M,{className:`size-4`})})})]}):null]})]})}),s?(0,q.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:s}):null]})}function Qt(e,t,n){let i=t.split(`/`).map(encodeURIComponent).join(`/`);return r(`/api/runs/${e}/store/files/${i}${n?`?inline=1`:``}`)}var $t=[`bg-paper-3 text-ink-3`,`bg-moss-tint text-moss`,`bg-rose-tint text-rose`,`bg-ember-tint text-ember-strong`];function en({runId:e,list:t}){let{def:n,rows:r}=t,i=n.columns.find(e=>e.id===n.check?.file),s=n.columns.find(e=>e.id===n.check?.status),c=s?.type===`select`?s.format.options:[],l=c[0]?.id,u=e=>s?String(e.cells[s.id]??l??``):``,d=e=>!s||u(e)===l,[f,p]=(0,K.useState)(()=>(r.find(d)??r[0])?.id??null),[m,h]=(0,K.useState)(!1),[g,_]=(0,K.useState)(null),v=`/api/runs/${e}/lists/${n.id}/rows`,y=r.find(e=>e.id===f)??r[0],b=m?r.filter(e=>d(e)||e.id===y?.id):r,x=r.filter(e=>!d(e)).length,S=n.columns.filter(e=>e!==i&&e!==s),C=S.filter(e=>e.id!==n.key),w=C.find(e=>e.type===`text`)??C[0],T=C.filter(e=>e!==w),E=async(e,t)=>{_(null);try{await a.patch(`${v}/${e}`,{cells:t})}catch(e){_(e instanceof o?e.message:String(e))}},D=e=>{let t=b.findIndex(e=>e.id===y?.id),n=b[Math.min(b.length-1,Math.max(0,t+e))];n&&p(n.id)},O=async e=>{if(!y||!s)return;let t=r.findIndex(e=>e.id===y.id),n=[...r.slice(t+1),...r.slice(0,t)].find(d);await E(y.id,{[s.id]:e}),n&&e!==l&&p(n.id)},ee=e=>{e.target.closest(`input, textarea, select`)||(e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),D(e.key===`ArrowDown`?1:-1)):/^[1-9]$/.test(e.key)&&c[Number(e.key)]&&(e.preventDefault(),O(c[Number(e.key)].id)))};if(!r.length)return(0,q.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:W(`list.empty`)});let k=i&&y?String(y.cells[i.id]??``).trim():``,j=k.split(`.`).pop()?.toLowerCase()??``,M=e=>$t[Math.min(Math.max(0,c.findIndex(t=>t.id===u(e))),3)];return(0,q.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(280px,360px)_minmax(0,1fr)]`,onKeyDown:ee,children:[(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-col`,children:[(0,q.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,q.jsx)(`span`,{className:`text-[13px] text-ink-3 tabular-nums`,children:W(`check.progress`,{done:x,total:r.length})}),s?(0,q.jsx)(`button`,{type:`button`,"aria-pressed":m,onClick:()=>h(e=>!e),className:B(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,m?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:W(`check.onlyOpen`)}):null]}),(0,q.jsx)(`ul`,{className:`flex max-h-[38vh] flex-col gap-1.5 overflow-y-auto p-0.5 pr-1 lg:max-h-[calc(100vh-15rem)]`,children:b.map(e=>(0,q.jsx)(`li`,{children:(0,q.jsxs)(`button`,{type:`button`,onClick:()=>p(e.id),"aria-current":e.id===y?.id,className:B(`flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left ring-1 transition`,e.id===y?.id?`bg-card shadow-soft ring-ember`:`bg-paper ring-border-soft hover:bg-card`),children:[(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`span`,{className:`block truncate font-medium text-[14px]`,children:w&&X(w,e.cells[w.id],L)||`—`}),(0,q.jsx)(`span`,{className:`block truncate text-[12px] text-ink-3 tabular-nums`,children:T.slice(0,2).map(t=>X(t,e.cells[t.id],L)).filter(Boolean).join(` · `)})]}),s?(0,q.jsx)(`span`,{className:B(`shrink-0 rounded-full px-2 py-0.5 font-medium text-[11px]`,M(e)),children:c.find(t=>t.id===u(e))?.label??u(e)}):null]})},e.id))})]}),y?(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[c.length>1?(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[c.slice(1).map((e,t)=>(0,q.jsxs)(U,{size:`md`,variant:u(y)===e.id?`primary`:`secondary`,onClick:()=>void O(e.id),children:[u(y)===e.id?(0,q.jsx)(A,{className:`size-4`}):null,e.label,(0,q.jsx)(`kbd`,{className:`ml-1 hidden rounded bg-black/10 px-1.5 text-[11px] lg:inline`,children:t+1})]},e.id)),u(y)===l?null:(0,q.jsx)(U,{size:`md`,variant:`ghost`,onClick:()=>void O(l??``),children:W(`check.reopen`)})]}):null,(0,q.jsx)(`div`,{className:`overflow-hidden rounded-lg bg-paper-2 ring-1 ring-border-soft`,children:k?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 border-border-soft border-b bg-card px-3 py-2 text-[13px]`,children:[(0,q.jsx)(P,{className:`size-3.5 shrink-0 text-ink-3`}),(0,q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:k.split(`/`).pop()}),(0,q.jsx)(`a`,{href:Qt(e,k,j===`pdf`),target:`_blank`,rel:`noreferrer`,className:`shrink-0 text-ink-2 underline-offset-2 hover:text-ink hover:underline`,children:W(`run.openFull`)})]}),j===`pdf`?(0,q.jsx)(`iframe`,{title:k,src:`${Qt(e,k,!0)}#toolbar=0&navpanes=0&view=FitH`,className:`h-[46vh] w-full border-0 bg-white lg:h-[calc(100vh-27rem)] lg:min-h-[360px]`},k):[`png`,`jpg`,`jpeg`,`webp`].includes(j)?(0,q.jsx)(`div`,{className:`flex max-h-[46vh] justify-center overflow-auto bg-white lg:max-h-[calc(100vh-27rem)]`,children:(0,q.jsx)(`img`,{src:Qt(e,k,!0),alt:k,className:`max-w-full object-contain`},k)}):(0,q.jsx)(`p`,{className:`px-4 py-10 text-center text-[14px] text-ink-3`,children:W(`check.noPreview`)})]}):(0,q.jsx)(`p`,{className:`px-4 py-14 text-center text-[14px] text-ink-3`,children:W(`check.noFile`)})}),(0,q.jsx)(`div`,{className:`grid grid-cols-2 gap-x-3 gap-y-2 sm:grid-cols-3`,children:S.map(e=>(0,q.jsxs)(`div`,{className:B(`min-w-0`,e.type===`text`&&e.format?.style===`multiline`&&`col-span-full`),children:[(0,q.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,q.jsx)($,{boxed:!0,column:e,value:y.cells[e.id],onCommit:t=>void E(y.id,{[e.id]:t})})]},e.id))}),g?(0,q.jsx)(`p`,{className:`text-[13px] text-rose`,children:g}):null]}):null]})}var tn={xlsx:`Excel`,csv:`CSV`,json:`JSON`,md:`Markdown`,zip:`ZIP`};function nn({runId:e,list:t}){return(0,q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.formats.map(n=>(0,q.jsx)(`a`,{href:r(`/api/runs/${e}/lists/${t.def.id}/download?format=${n}`),className:`inline-flex h-9 items-center rounded-full bg-paper-2 px-3.5 font-medium text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink coarse:h-11 coarse:px-4`,children:tn[n]??n},n))})}function rn(e){return e>1e6?`${(e/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1e3))} KB`}function an({runId:e}){let[t,n]=(0,K.useState)(!1),[i,o]=(0,K.useState)(null),[s,c]=(0,K.useState)(!1);(0,K.useEffect)(()=>{t&&(c(!1),a.get(`/api/runs/${e}/store`).then(o))},[t,e]);let l=i&&!i.files.length&&!i.connections.length&&!i.keepsSignIns&&i.lists.every(e=>!e.rows);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),className:`inline-flex items-center gap-1.5 text-[13px] text-ink-4 transition hover:text-ink-2 coarse:min-h-11`,children:[(0,q.jsx)(we,{className:`size-3.5`}),` `,W(`store.open`)]}),(0,q.jsx)(se,{open:t,onClose:()=>n(!1),title:W(`store.title`),wide:!0,children:i?(0,q.jsxs)(`div`,{className:`flex flex-col gap-5 text-[14px]`,children:[(0,q.jsx)(`p`,{className:`text-ink-3`,children:W(`store.explain`)}),l?(0,q.jsx)(`p`,{className:`text-ink-2`,children:W(`store.empty`)}):null,i.lists.some(e=>e.rows)?(0,q.jsx)(`ul`,{className:`flex flex-col gap-1`,children:i.lists.filter(e=>e.rows).map(e=>(0,q.jsxs)(`li`,{className:`flex justify-between gap-3`,children:[(0,q.jsx)(`span`,{children:e.title}),(0,q.jsx)(`span`,{className:`text-ink-3 tabular-nums`,children:W(`store.rows`,{n:e.rows})})]},e.id))}):null,i.connections.map(e=>(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(m,{className:`size-4 text-ink-3`}),` `,e.account?.label]},e.id)),i.keepsSignIns?(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(A,{className:`size-4 text-ink-3`}),` `,W(`store.signIns`)]}):null,i.files.length?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1 text-ink-3`,children:W(`store.files`,{n:i.files.length,size:rn(i.files.reduce((e,t)=>e+t.size,0))})}),(0,q.jsx)(`ul`,{className:`max-h-56 overflow-y-auto rounded-lg ring-1 ring-border-soft`,children:i.files.map(t=>(0,q.jsx)(`li`,{className:`border-border-soft border-b last:border-0`,children:(0,q.jsxs)(`a`,{href:r(`/api/runs/${e}/store/files/${t.path}`),className:`flex items-center gap-2 px-3 py-2 text-[13px] hover:bg-paper-2 coarse:min-h-11`,title:t.source??void 0,children:[(0,q.jsx)(P,{className:`size-3.5 shrink-0 text-ink-3`}),(0,q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t.path}),(0,q.jsx)(`span`,{className:`text-ink-4 tabular-nums`,children:rn(t.size)})]})},t.path))})]}):null,(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 pt-1`,children:[l?(0,q.jsx)(`span`,{}):s?(0,q.jsxs)(U,{variant:`secondary`,onClick:async()=>{await a.del(`/api/runs/${e}/store`),o(await a.get(`/api/runs/${e}/store`)),c(!1)},children:[(0,q.jsx)(S,{className:`size-4`}),` `,W(`store.confirmDelete`)]}):(0,q.jsxs)(U,{variant:`ghost`,onClick:()=>c(!0),children:[(0,q.jsx)(S,{className:`size-4`}),` `,W(`store.delete`)]}),(0,q.jsx)(U,{onClick:()=>n(!1),children:W(`common.close`)})]})]}):(0,q.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,q.jsx)(z,{})})})]})}var on=300;function sn(){if(typeof MediaRecorder<`u`)return[`audio/webm;codecs=opus`,`audio/mp4`,`audio/webm`,`audio/ogg;codecs=opus`].find(e=>MediaRecorder.isTypeSupported(e))}function cn(e){return`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function ln({value:e,runId:t,onChange:n,onBusy:r}){let i=ae(e)?e:null,[o,s]=(0,K.useState)(null),[c,l]=(0,K.useState)(0),[u,d]=(0,K.useState)(!1),[f,m]=(0,K.useState)(null),[h,g]=(0,K.useState)(!1),[_,v]=(0,K.useState)(null),b=(0,K.useRef)(null),x=(0,K.useRef)(null),S=sn(),C=p&&!!S;(0,K.useEffect)(()=>()=>{b.current&&(b.current.recorder.onstop=null,b.current.stop())},[]),(0,K.useEffect)(()=>()=>{_&&URL.revokeObjectURL(_.url)},[_]);let w=async(e,i)=>{d(!0),r?.(!0),m(null);try{let r=await a.upload(`/api/runs/${t}/uploads`,e);v({asset:r.id,url:URL.createObjectURL(e)}),n({asset:r.id,...i===void 0?{}:{seconds:i}})}catch(e){m(e.message)}finally{d(!1),r?.(!1)}},T=async()=>{m(null),g(!1);let e;try{e=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}})}catch{g(!0);return}let t=[],n=new MediaRecorder(e,{mimeType:S,audioBitsPerSecond:48e3}),i=Date.now(),a=new AudioContext,o=a.createAnalyser();o.fftSize=256,a.createMediaStreamSource(e).connect(o);let c=new Uint8Array(o.fftSize),u=0,d=()=>{o.getByteTimeDomainData(c);let e=0;for(let t of c)e=Math.max(e,Math.abs(t-128));if(l(Math.min(1,e/64)),s((Date.now()-i)/1e3),(Date.now()-i)/1e3>=on){f();return}u=requestAnimationFrame(d)},f=()=>{cancelAnimationFrame(u),n.state!==`inactive`&&n.stop();for(let t of e.getTracks())t.stop();a.close().catch(()=>void 0),b.current=null,s(null),l(0)};n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{let e=(n.mimeType||S||`audio/webm`).split(`;`)[0],r=e===`audio/mp4`?`m4a`:e===`audio/ogg`?`ogg`:`webm`,a=Math.max(1,Math.round((Date.now()-i)/1e3));w(new File(t,`sprachnotiz-${Ct()}.${r}`,{type:e}),a)},b.current={recorder:n,stop:f},r?.(!0),n.start(1e3),u=requestAnimationFrame(d)},E=o!==null,D=(0,q.jsxs)(U,{variant:`secondary`,onClick:()=>x.current?.click(),children:[(0,q.jsx)(Oe,{className:`size-4`}),` `,W(`voice.pick`)]});return(0,q.jsxs)(`div`,{children:[E?(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-ember`,children:[(0,q.jsxs)(`span`,{className:`relative flex size-11 shrink-0 items-center justify-center`,children:[(0,q.jsx)(`span`,{className:`absolute inset-0 rounded-full bg-rose-tint transition-transform duration-75`,style:{transform:`scale(${.7+c*.5})`}}),(0,q.jsx)(`span`,{className:`relative size-3.5 animate-pulse-dot rounded-full bg-rose`})]}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`font-medium text-[15px] tabular-nums`,children:cn(o)}),(0,q.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:o>270?W(`voice.left`,{s:Math.ceil(on-o)}):W(`voice.recording`)})]}),(0,q.jsxs)(U,{onClick:()=>b.current?.stop(),children:[(0,q.jsx)(y,{className:`size-3.5 fill-current`}),` `,W(`voice.stop`)]})]}):u?(0,q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-4 text-[14px] text-ink-3 ring-1 ring-input`,children:[(0,q.jsx)(z,{className:`size-4`}),` `,W(`run.uploading`)]}):i?(0,q.jsxs)(`div`,{className:`rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,q.jsx)(`audio`,{controls:!0,preload:`metadata`,src:_?.asset===i.asset?_.url:`/api/runs/${t}/assets/${i.asset}`,className:`h-11 w-full`}),i.transcript?(0,q.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap px-1 text-[14px] text-ink-2 leading-relaxed`,children:i.transcript}):null,(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center justify-between gap-2`,children:[(0,q.jsx)(`span`,{className:`px-1 text-[13px] text-ink-3`,children:i.seconds?cn(i.seconds):null}),(0,q.jsxs)(`div`,{className:`flex gap-1`,children:[C?(0,q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>void T(),children:[(0,q.jsx)(Je,{className:`size-3.5`}),` `,W(`voice.again`)]}):null,(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>n(void 0),children:W(`voice.remove`)})]})]})]}):(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[C?(0,q.jsxs)(U,{variant:`secondary`,size:`lg`,onClick:()=>void T(),className:`w-full sm:w-auto`,children:[(0,q.jsx)(F,{className:`size-4`}),` `,W(`voice.start`)]}):D,C&&h?D:null]}),h?(0,q.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:W(`voice.denied`)}):(0,q.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:W(C?`voice.why`:`voice.noRecorder`)})]}),(0,q.jsx)(`input`,{ref:x,type:`file`,hidden:!0,accept:`audio/*`,capture:!0,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&w(t,void 0)}}),f?(0,q.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:f}):null]})}function un(e,t){try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t}).format(e)}catch{return`${e.toFixed(2)} ${t}`}}function dn({field:e,value:t,values:n,onChange:r}){let i=e.columns??[],a=Array.isArray(t)&&t.length?t:[{}],o=re(e,a,n),s=(e,t,n)=>{r(a.map((r,i)=>i===e?{...r,[t]:n}:r))},c=i.map(e=>e.kind===`text`&&e===i[0]?`minmax(0,3fr)`:`minmax(0,1fr)`).join(` `);return(0,q.jsxs)(`div`,{className:`rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,q.jsx)(`div`,{className:`hidden gap-2 px-2 pt-1 pb-2 text-[12px] text-ink-3 sm:grid`,style:{gridTemplateColumns:`${c} 36px`},children:i.map(e=>(0,q.jsx)(`div`,{className:e.kind===`text`?``:`text-right`,children:e.label},e.id))}),(0,q.jsx)(`div`,{className:`flex flex-col gap-2`,children:a.map((e,t)=>(0,q.jsxs)(`div`,{className:`grid grid-cols-6 gap-2 rounded-lg bg-paper p-2 sm:bg-transparent sm:p-0 sm:[grid-template-columns:var(--cols)]`,style:{"--cols":`${c} 36px`},children:[i.map((n,r)=>(0,q.jsxs)(`label`,{className:B(`flex min-w-0 flex-col gap-1 sm:col-span-1`,r===0?`col-span-5`:i.length-1<=2?`col-span-3`:`col-span-2`),children:[(0,q.jsx)(`span`,{className:`px-0.5 text-[11px] text-ink-3 sm:hidden`,children:n.label}),(0,q.jsx)(`input`,{"aria-label":n.label,placeholder:n.label,inputMode:n.kind===`text`?`text`:`decimal`,autoComplete:`off`,value:String(e[n.id]??``),onChange:e=>s(t,n.id,e.target.value),className:B(`h-11 w-full min-w-0 rounded-md border border-transparent bg-paper-2 px-2.5 text-[14px] outline-none placeholder:text-transparent focus:border-focus focus:bg-card sm:placeholder:text-ink-4`,n.kind!==`text`&&`text-right tabular-nums`)})]},n.id)),(0,q.jsx)(V,{label:W(`list.delete`),onClick:()=>r(a.filter((e,n)=>n!==t)),className:`order-first col-start-6 row-start-1 size-11 justify-self-end self-end sm:order-none sm:col-start-auto sm:row-start-auto`,children:(0,q.jsx)(S,{className:`size-4`})})]},t))}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-end justify-between gap-3 px-2 pb-1`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r([...a,{}]),className:`inline-flex h-9 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent coarse:h-11`,children:[(0,q.jsx)(M,{className:`size-4`}),` `,W(`run.addRow`)]}),(0,q.jsxs)(`div`,{className:`text-right text-[13px] tabular-nums`,children:[(0,q.jsxs)(`div`,{className:`text-ink-3`,children:[W(`run.net`),` `,un(o.net,o.currency)]}),o.vatRate?(0,q.jsxs)(`div`,{className:`text-ink-3`,children:[W(`run.vat`,{r:o.vatRate}),` `,un(o.vat,o.currency)]}):null,(0,q.jsxs)(`div`,{className:`font-semibold text-[15px] text-ink`,children:[W(`run.total`),` `,un(o.gross,o.currency)]})]})]})]})}function fn(e){return!!e?.closest(`input, textarea, [contenteditable='true']`)}function pn({field:e,value:t,runId:n,onChange:i,onBusy:o}){let s=(0,K.useRef)(null),c=(0,K.useRef)(null),l=(0,K.useRef)(null),u=(0,K.useRef)(null),[d,f]=(0,K.useState)(!1),[m,g]=(0,K.useState)({}),[_,v]=(0,K.useState)(null),[y,b]=(0,K.useState)(!1),[x,S]=(0,K.useState)(!1),[C,w]=(0,K.useState)(null),T=(0,K.useRef)(null),E=e=>{T.current=e,w(e)},D=e.kind===`image`,k=!!e.multiple,A=k?e.max??30:1,j=D||!!e.camera||!!e.video,M=!D&&!!e.video,N=Array.isArray(t)?t:typeof t==`string`&&t?[t]:[],P=(0,K.useRef)(N);P.current=N;let F=N.length<A,I=async e=>{let t=(D?e.filter(e=>e.type.startsWith(`image/`)):e).sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));if(!t.length)return;let r=A-(k?P.current.length:0);f(!0),o?.(!0),v(t.length>r&&k?W(`run.maxFiles`,{n:A}):null);try{for(let e of t.slice(0,Math.max(0,r))){let t=await St(e),r=await a.upload(`/api/runs/${n}/uploads`,t);g(e=>({...e,[r.id]:{name:r.name,mime:r.mime}}));let o=k?[...P.current,r.id]:r.id;P.current=k?o:[r.id],i(o)}}catch(e){v(e.message)}finally{f(!1),o?.(!1)}},ne=(0,K.useRef)(I);ne.current=I;let re=e=>{let t=N.filter(t=>t!==e);i(k?t:void 0)},ie=(e,t)=>{let n=P.current.indexOf(e),r=Math.min(P.current.length-1,Math.max(0,t));if(n<0||n===r)return;let a=P.current.filter(t=>t!==e);a.splice(r,0,e),P.current=a,i(a)},ae=k&&N.length>1;(0,K.useEffect)(()=>{if(!F)return;let e=e=>{let t=Array.from(e.clipboardData?.files??[]),n=s.current;if(!t.length||!n||fn(document.activeElement))return;let r=document.querySelectorAll(`[data-upload-field]`);(n.matches(`:hover`)||n.contains(document.activeElement)||r.length===1)&&(e.preventDefault(),ne.current(t))};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[F]);let L=B(`flex flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-3 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,N.length?`py-4`:`py-8`);return(0,q.jsxs)(`div`,{ref:s,"data-upload-field":``,onDragOver:e=>{F&&(e.preventDefault(),S(!0))},onDragLeave:()=>S(!1),onDrop:e=>{S(!1),F&&(e.preventDefault(),I(Array.from(e.dataTransfer.files)))},children:[N.length?(0,q.jsx)(`div`,{className:`mb-2 flex flex-col gap-2`,children:N.map((e,t)=>{let i=m[e],a=i?.mime??(D?`image/`:``);return(0,q.jsxs)(`div`,{"data-file-id":e,className:B(`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input transition-shadow`,C===e&&`relative z-10 shadow-elevated ring-2 ring-ember`),children:[ae?(0,q.jsxs)(`button`,{type:`button`,"aria-label":W(`run.moveFile`,{n:t+1}),title:W(`run.moveFileHint`),className:B(`-mr-1 flex h-14 w-9 shrink-0 touch-none flex-col items-center justify-center gap-0.5 rounded-lg text-ink-3 hover:bg-paper-2 hover:text-ink`,C===e?`cursor-grabbing`:`cursor-grab`),onPointerDown:t=>{try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}E(e)},onPointerMove:t=>{if(T.current!==e)return;let n=document.elementFromPoint(t.clientX,t.clientY)?.closest(`[data-file-id]`),r=n?.getAttribute(`data-file-id`);r&&r!==e&&s.current?.contains(n??null)&&ie(e,P.current.indexOf(r))},onPointerUp:()=>E(null),onPointerCancel:()=>E(null),onKeyDown:n=>{(n.key===`ArrowUp`||n.key===`ArrowDown`)&&(n.preventDefault(),ie(e,t+(n.key===`ArrowUp`?-1:1)))},children:[(0,q.jsx)(`span`,{className:`font-medium text-[12px] tabular-nums`,children:t+1}),(0,q.jsx)(Pe,{className:`size-4`})]}):null,a.startsWith(`image/`)?(0,q.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${e}`),alt:``,className:`size-14 rounded-lg object-cover`}):(0,q.jsx)(`div`,{className:`flex size-12 shrink-0 items-center justify-center rounded-lg bg-paper-2`,children:a.startsWith(`video/`)?(0,q.jsx)(ee,{className:`size-5 text-ink-3`}):(0,q.jsx)(O,{className:`size-5 text-ink-3`})}),(0,q.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-[14px]`,children:i?.name??`✓`}),(0,q.jsx)(V,{label:W(`run.removeFile`),onClick:()=>re(e),children:(0,q.jsx)(G,{className:`size-4`})})]},e)})}):null,F?(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>c.current?.click(),className:B(L,`min-w-[9rem] flex-1 px-4`,x&&`border-ember text-ink`),children:[D?(0,q.jsx)(Ie,{className:`size-6`}):(0,q.jsx)(O,{className:`size-6`}),d?W(`run.uploading`):N.length?W(`run.uploadMore`):W(h?`run.uploadTouch`:`run.upload`)]}),j?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>p?b(!0):l.current?.click(),className:B(L,`w-28`),children:[(0,q.jsx)(be,{className:`size-6`}),W(`run.camera`)]}):null,M&&!(p&&Nt)?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>u.current?.click(),className:B(L,`w-28`),children:[(0,q.jsx)(te,{className:`size-6`}),W(`camera.video`)]}):null]}):null,(0,q.jsx)(`input`,{ref:c,type:`file`,hidden:!0,multiple:k,accept:D?`image/*`:void 0,onChange:e=>{I(Array.from(e.target.files??[])),e.target.value=``}}),(0,q.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,capture:`environment`,onChange:e=>{I(Array.from(e.target.files??[])),e.target.value=``}}),M?(0,q.jsx)(`input`,{ref:u,type:`file`,hidden:!0,accept:`video/*`,capture:`environment`,onChange:e=>{I(Array.from(e.target.files??[])),e.target.value=``}}):null,(0,q.jsx)(Pt,{open:y,multiple:k,video:M,onClose:()=>b(!1),onCapture:e=>I([e]),onNative:()=>l.current?.click()}),k&&(e.min||e.max)?(0,q.jsx)(`div`,{className:`mt-2 text-[13px] text-ink-3 tabular-nums`,children:e.min&&N.length<e.min?W(`run.filesMin`,{n:N.length,min:e.min}):e.max?W(`run.filesOf`,{n:N.length,max:e.max}):null}):null,_?(0,q.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:_}):null]})}function mn(e){let t=`${e.id} ${e.label}`.toLowerCase();return/telefon|phone|handy|mobil(?!it)|\btel\b|rückruf/.test(t)?{type:`tel`,inputMode:`tel`,autoComplete:`tel`}:/\bplz\b|postleitzahl|postal|zip/.test(t)?{inputMode:`numeric`,autoComplete:`postal-code`}:/iban/.test(t)?{autoCapitalize:`characters`,autoCorrect:`off`,spellCheck:!1}:/vorname|first.?name/.test(t)?{autoComplete:`given-name`,autoCapitalize:`words`}:/nachname|last.?name|surname/.test(t)?{autoComplete:`family-name`,autoCapitalize:`words`}:/firma|unternehmen|company|organi[sz]ation/.test(t)?{autoComplete:`organization`,autoCapitalize:`words`}:/straße|strasse|street|anschrift|adresse|address/.test(t)?{autoComplete:`street-address`,autoCapitalize:`words`}:/\b(ort|stadt|city|town)\b/.test(t)?{autoComplete:`address-level2`,autoCapitalize:`words`}:/\bname\b|ansprechp/.test(t)?{autoComplete:`name`,autoCapitalize:`words`}:{autoCapitalize:`sentences`}}function hn({field:e,value:t,onChange:n}){let[r,i]=(0,K.useState)(!1);return(0,q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,q.jsx)(H,{value:t,placeholder:e.placeholder,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>n(e.target.value)}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>i(!0),className:`inline-flex h-11 shrink-0 items-center gap-2 rounded-lg border border-input bg-card px-3.5 font-medium text-[14px] text-ink-2 transition hover:border-ember hover:text-ink`,children:[(0,q.jsx)(Xe,{className:`size-4`}),` `,W(`scan.button`)]}),(0,q.jsx)(Vt,{open:r,onClose:()=>i(!1),onResult:n})]})}function gn({field:e,value:t,values:n,runId:r,view:i,onChange:a,onBusy:o,error:s}){let c=t==null?``:String(t),l;switch(e.kind){case`textarea`:l=(0,q.jsx)(le,{value:c,placeholder:e.placeholder,autoCapitalize:`sentences`,enterKeyHint:`enter`,onChange:e=>a(e.target.value)});break;case`number`:l=(0,q.jsx)(H,{inputMode:`decimal`,autoComplete:`off`,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`select`:{let t=e.options??[];l=t.length<=5&&t.every(e=>e.length<=28)?(0,q.jsx)(ce,{value:c,options:t,onChange:a}):(0,q.jsx)(fe,{value:c,placeholder:`—`,onChange:a,options:t.map(e=>({value:e,label:e}))});break}case`multiselect`:l=(0,q.jsx)(ce,{multi:!0,value:Array.isArray(t)?t:[],options:e.options??[],onChange:a});break;case`date`:l=(0,q.jsx)(H,{type:`date`,value:c,onChange:e=>a(e.target.value),className:`w-full sm:w-56`});break;case`email`:l=(0,q.jsx)(H,{type:`email`,inputMode:`email`,autoComplete:`email`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`url`:l=(0,q.jsx)(H,{type:`url`,inputMode:`url`,autoComplete:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder??`https://`,onChange:e=>a(e.target.value)});break;case`toggle`:l=(0,q.jsx)(de,{checked:t===!0,onChange:a,label:e.label});break;case`color`:l=(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(oe,{value:c||`#e0531b`,onChange:e=>a(e.target.value)}),(0,q.jsx)(H,{value:c,placeholder:`#e0531b`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>a(e.target.value),className:`w-36`})]});break;case`image`:case`file`:l=(0,q.jsx)(pn,{field:e,value:t,runId:r,onChange:a,onBusy:o});break;case`items`:l=(0,q.jsx)(dn,{field:e,value:t,values:n,onChange:a});break;case`connection`:l=(0,q.jsx)(Jt,{runId:r,connection:i?.connections.find(t=>t.id===e.connection)});break;case`list`:{let t=i?.lists.find(t=>t.def.id===e.list);l=t?(0,q.jsx)(Zt,{runId:r,list:t,editable:!0}):null;break}case`location`:l=(0,q.jsx)(Rt,{value:t,runId:r,placeholder:e.placeholder,onChange:a,onBusy:o});break;case`audio`:l=(0,q.jsx)(ln,{value:t,runId:r,onChange:a,onBusy:o});break;case`signature`:l=(0,q.jsx)(Kt,{label:e.label,value:t,runId:r,onChange:a});break;default:l=e.scan?(0,q.jsx)(hn,{field:e,value:c,onChange:a}):(0,q.jsx)(H,{...mn(e),value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)})}return(0,q.jsxs)(`div`,{children:[e.kind===`toggle`?(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-6`,children:[(0,q.jsx)(R,{hint:e.help,children:e.label}),l]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(R,{hint:e.help,required:e.required,children:e.label}),l]}),s?(0,q.jsx)(`div`,{className:`mt-1.5 text-[13px] text-rose`,children:s}):null]})}var _n=45e3;function vn(e){let[t,n]=(0,K.useState)(null),[i,s]=(0,K.useState)(null),[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)({});(0,K.useEffect)(()=>{if(n(null),l(!1),!e)return;let t=!1,i=0,s,c=null,u=Date.now(),d=()=>{t=!0,c?.close(),l(!0)},f=async()=>{try{let r=await a.get(`/api/runs/${e}`);t||n(r)}catch(e){e instanceof o&&e.status===404&&d()}},p=()=>{if(clearTimeout(s),c?.close(),t)return;let a=new EventSource(r(`/api/runs/${e}/stream`),{withCredentials:!0});c=a,u=Date.now(),a.addEventListener(`view`,e=>{i=0,u=Date.now(),n(JSON.parse(e.data))}),a.addEventListener(`ping`,()=>{u=Date.now()}),a.onerror=()=>{a.close(),!(t||c!==a)&&(c=null,f(),i=Math.min(i+1,6),s=setTimeout(p,500*2**i))}},m=()=>{t||document.visibilityState!==`visible`||(!c||c.readyState===EventSource.CLOSED||Date.now()-u>_n?(i=0,p()):f())},h=setInterval(()=>{!t&&c&&Date.now()-u>_n&&(i=0,p())},15e3);return p(),document.addEventListener(`visibilitychange`,m),window.addEventListener(`pageshow`,m),window.addEventListener(`online`,m),()=>{t=!0,clearTimeout(s),clearInterval(h),document.removeEventListener(`visibilitychange`,m),window.removeEventListener(`pageshow`,m),window.removeEventListener(`online`,m),c?.close()}},[e]);let m=(0,K.useCallback)(async(t,n)=>{if(!e)return!1;d(!0),s(null),p({});try{return await a.post(`/api/runs/${e}/${t}`,n),!0}catch(e){return e instanceof o&&e.status===422&&Array.isArray(e.body?.fields)&&p(Object.fromEntries(e.body.fields.map(e=>[e.field,e.message]))),s(e.message),!1}finally{d(!1)}},[e]);return{view:t,notFound:c,error:i,busy:u,fieldErrors:f,submitPage:(e,t)=>m(`pages/${e}`,{values:t}),accept:(e,t)=>m(`reviews/${e}`,{type:`accept`,edits:t}),regenerate:(e,t,n,r)=>m(`reviews/${e}`,{type:`regenerate`,target:t,note:n,items:r?.length?r:void 0}),back:()=>m(`back`),retry:()=>m(`retry`)}}function yn({view:e}){let t=Math.round(Math.min(e.progress.done,e.progress.total)/Math.max(1,e.progress.total)*100);return(0,q.jsx)(`div`,{className:`h-[3px] w-full bg-paper-2`,children:(0,q.jsx)(`div`,{className:`h-full bg-ember transition-[width] duration-700 ease-out`,style:{width:`${t}%`}})})}function bn({title:e,description:t,kicker:n}){return(0,q.jsxs)(`div`,{className:`mb-8`,children:[n?(0,q.jsx)(`p`,{className:`mb-4 text-[15px] text-ink-2 leading-relaxed`,children:n}):null,(0,q.jsx)(`h1`,{className:`font-display font-semibold text-[28px] leading-[1.15] tracking-tight sm:text-[32px]`,children:e}),t?(0,q.jsx)(`p`,{className:`mt-2 text-[15px] text-ink-3 leading-relaxed`,children:t}):null]})}function xn(e,t){let n={};for(let r of e.fields)n[r.id]=t.values[r.id]??t.prefill?.[r.id]??r.default??(r.kind===`multiselect`?[]:void 0);return n}function Sn(e){return Array.from(e.querySelectorAll(`input:not([type="hidden"], [type="file"], [type="checkbox"], [type="color"], [type="range"], [disabled]), textarea:not([disabled])`)).filter(e=>!e.closest(`dialog`)&&e.offsetParent!==null)}function Cn({view:e,run:t,step:n}){let[r,i]=(0,K.useState)(()=>xn(n,e)),[a,o]=(0,K.useState)(new Set),s=(0,K.useRef)(null),c=e.progress.done===0,l=()=>void t.submitPage(n.id,r);return(0,K.useEffect)(()=>{if(!s.current)return;let e=Sn(s.current).filter(e=>e instanceof HTMLInputElement);for(let[t,n]of e.entries())(n.dataset.hint||!n.hasAttribute(`enterkeyhint`))&&(n.dataset.hint=`1`,n.setAttribute(`enterkeyhint`,t===e.length-1?`go`:`next`))}),(0,q.jsxs)(`form`,{ref:s,className:`animate-rise`,onSubmit:e=>{e.preventDefault(),a.size||l()},onKeyDown:e=>{let t=e.target;if(e.key!==`Enter`||e.defaultPrevented||e.nativeEvent.isComposing||!(t instanceof HTMLInputElement)||t.closest(`dialog`))return;let n=Sn(e.currentTarget),r=n[n.indexOf(t)+1];r&&(e.preventDefault(),r.focus())},children:[(0,q.jsx)(bn,{title:n.title,description:n.description,kicker:c?e.wizard.intro:null}),(0,q.jsx)(`div`,{className:`flex flex-col gap-7`,children:n.fields.map(n=>(0,q.jsx)(gn,{field:n,value:r[n.id],values:r,runId:e.id,view:e,error:t.fieldErrors[n.id],onChange:e=>i(t=>({...t,[n.id]:e})),onBusy:e=>o(t=>{if(t.has(n.id)===e)return t;let r=new Set(t);return e?r.add(n.id):r.delete(n.id),r})},n.id))}),(0,q.jsx)(wn,{view:e,run:t,sticky:!0,children:(0,q.jsxs)(U,{type:`submit`,size:`lg`,busy:t.busy,disabled:a.size>0,children:[n.cta||W(`run.next`),` `,(0,q.jsx)(u,{className:`size-4`})]})})]})}function wn({view:e,run:t,sticky:n,children:r}){return(0,q.jsxs)(`div`,{className:B(`mt-10 flex items-center justify-between gap-3`,n&&`action-bar`),children:[e.canBack?(0,q.jsxs)(U,{variant:`ghost`,onClick:()=>void t.back(),disabled:t.busy,children:[(0,q.jsx)(l,{className:`size-4`}),` `,W(`run.back`)]}):(0,q.jsx)(`span`,{}),r]})}function Tn(){let e=_(),[t,n]=(0,K.useState)(!1),r=e!==`off`;return(0,q.jsxs)(`div`,{className:`mt-6 flex flex-col items-center gap-2`,children:[(0,q.jsxs)(`button`,{type:`button`,"aria-pressed":r,disabled:t,onClick:async()=>{if(r){C();return}n(!0),await T(),n(!1)},className:B(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,r?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ink-4`),children:[r?(0,q.jsx)(ge,{className:`size-4 text-ember-strong`}):(0,q.jsx)(ve,{className:`size-4`}),W(r?`notify.on`:`notify.ask`)]}),(0,q.jsx)(`p`,{className:`max-w-xs text-[12px] text-ink-4 leading-relaxed`,children:W(e===`off`?`notify.why`:e===`on`?`notify.onHint`:x()?`notify.blocked`:`notify.quiet`)})]})}function En({view:e,compact:t,awake:n}){let a=(0,K.useMemo)(()=>{let t=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id);return t?new Date(t.at).getTime():Date.now()},[e.events,e.step?.id]),[o,s]=(0,K.useState)(Date.now());(0,K.useEffect)(()=>{let e=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(e)},[]);let c=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id)?.message??e.step?.title??W(`run.working`),l=e.events.filter(e=>(e.type===`tool`||e.type===`info`)&&new Date(e.at).getTime()>=a-500),u=l.slice(-4),d=[...new Set(l.map(e=>e.asset).filter(e=>!!e))],f=[...l].reverse().find(e=>e.asset)?.asset;return(0,q.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-6 text-center`,children:[(0,q.jsx)(i,{kind:e.wizard.avatar,size:t?130:170,fluffy:!0}),(0,q.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px] tracking-tight`,children:c}),(0,q.jsx)(`div`,{className:`mt-1 text-[13px] text-ink-4 tabular-nums`,children:W(`run.elapsed`,{s:Math.max(0,Math.round((o-a)/1e3))})}),d.length?(0,q.jsx)(`div`,{className:`mt-5 flex max-w-full flex-wrap justify-center gap-2`,children:d.slice(-8).map(t=>(0,q.jsx)(`img`,{src:r(`/api/runs/${e.id}/assets/${t}`),alt:``,className:B(`size-16 animate-rise rounded-lg bg-paper-2 object-cover ring-1 ring-border-soft transition sm:size-20`,t===f?`ring-2 ring-ember`:`opacity-70`)},t))}):null,(0,q.jsx)(`div`,{className:`mt-6 flex min-h-[7rem] w-full max-w-sm flex-col gap-1.5`,children:u.map((e,t)=>(0,q.jsxs)(`div`,{className:B(`flex items-center justify-center gap-2 text-[13px] transition-opacity`,t===u.length-1?`text-ink-2`:`text-ink-4`),children:[t===u.length-1?(0,q.jsx)(v,{className:`size-3.5 animate-breathe text-ember`}):null,(0,q.jsx)(`span`,{className:`truncate`,children:e.message})]},e.id))}),t?null:(0,q.jsx)(Tn,{}),n?(0,q.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-4`,children:W(`run.awake`)}):null]})}function Dn(e){let t=(0,K.useRef)({running:!1,since:0,ask:null});(0,K.useEffect)(()=>{if(!e)return;let n=t.current,r=e.status===`running`,i=r?n.running?n.since:Date.now():0,a=t=>{document.visibilityState!==`visible`&&!document.title.startsWith(`● `)&&(document.title=`● ${document.title}`),D({title:e.wizard.title,body:t,tag:e.id})};r&&e.ask&&e.ask.id!==n.ask?a(W(`notify.needsYou`)):!r&&n.running&&Date.now()-n.since>8e3&&a(e.status===`failed`?W(`run.failed`):e.status===`done`?W(`notify.done`):W(`notify.next`)),t.current={running:r,since:i,ask:e.ask?.id??null}},[e]),(0,K.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&document.title.startsWith(`● `)&&(document.title=document.title.slice(2))};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[])}function On({view:e,run:t,step:n}){let[r,i]=(0,K.useState)({}),[a,o]=(0,K.useState)({}),[s,c]=(0,K.useState)(``),l=e.shown.filter(e=>e.output),[d,p]=(0,K.useState)(l.length===1?l[0].step.id:null),[m,h]=(0,K.useState)({}),g=(0,K.useRef)(null),_=l.find(e=>e.step.id===d),v=_?.step.type===`generate`&&(_.output?.assets?.length??0)>1,y=()=>{_&&s.trim()&&t.regenerate(n.id,_.step.id,s.trim(),m[_.step.id])};return(0,q.jsxs)(`div`,{className:`animate-rise`,children:[(0,q.jsx)(bn,{title:n.title,description:n.description}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[e.shown.map(({step:t,output:s})=>{let c=!!n.edit&&t.type===`agent`&&t.output.format!==`json`;return(0,q.jsxs)(`section`,{children:[(0,q.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,q.jsx)(`h3`,{className:`font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.title}),(0,q.jsx)(`div`,{className:`flex items-center`,children:c&&!a[t.id]?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>({...e,[t.id]:!0})),className:`inline-flex h-8 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent hover:text-ink coarse:h-11`,children:[(0,q.jsx)(f,{className:`size-3.5`}),` `,W(`run.edit`)]}):null})]}),(0,q.jsx)(b,{base:`/api/runs/${e.id}`,step:t,output:s,editable:c&&a[t.id],draft:r[t.id],onDraft:e=>i(n=>({...n,[t.id]:e})),picked:m[t.id],onPick:n.regenerate?e=>{p(t.id),h(n=>{let r=n[t.id]??[];return{...n,[t.id]:r.includes(e)?r.filter(t=>t!==e):[...r,e]}}),g.current?.focus()}:void 0})]},t.id)}),e.lists.map(t=>(0,q.jsxs)(`section`,{children:[(0,q.jsx)(`h3`,{className:`mb-2 font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.def.title}),t.def.check?(0,q.jsx)(en,{runId:e.id,list:t}):(0,q.jsx)(Zt,{runId:e.id,list:t,editable:!0})]},t.def.id)),n.regenerate&&l.length?(0,q.jsxs)(ue,{className:`p-3`,children:[l.length>1?(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 pb-2`,children:[(0,q.jsx)(`span`,{className:`mr-1 text-[13px] text-ink-3`,children:W(`run.feedbackTarget`)}),l.map(({step:e})=>(0,q.jsx)(`button`,{type:`button`,"aria-pressed":d===e.id,onClick:()=>{p(e.id),g.current?.focus()},className:B(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,d===e.id?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:e.title},e.id))]}):null,(0,q.jsx)(le,{ref:g,minRows:2,maxRows:8,value:s,placeholder:W(`run.feedbackPlaceholder`),onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),y())},className:`border-0 bg-transparent shadow-none focus:ring-0`}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-1 pt-1`,children:[(0,q.jsx)(`span`,{className:`min-w-0 text-[12px] text-ink-3`,children:v?m[_.step.id]?.length?W(`run.regeneratePicked`,{n:[...m[_.step.id]].sort((e,t)=>e-t).map(e=>e+1).join(`, `)}):W(`run.regenerateAll`):!_&&s.trim()?W(`run.feedbackPick`):null}),(0,q.jsxs)(U,{size:`sm`,variant:`secondary`,busy:t.busy,disabled:!s.trim()||!_,onClick:y,children:[(0,q.jsx)(ie,{className:`size-3.5`}),` `,W(`run.regenerateGo`)]})]})]}):null]}),(0,q.jsx)(wn,{view:e,run:t,sticky:!0,children:(0,q.jsxs)(U,{size:`lg`,busy:t.busy,onClick:()=>void t.accept(n.id,Object.keys(r).length?r:void 0),children:[W(`run.accept`),` `,(0,q.jsx)(u,{className:`size-4`})]})})]})}function kn({view:e,run:t,step:n,onRestart:r}){let a=e.shown.filter(e=>e.output);return(0,q.jsxs)(`div`,{className:`animate-rise`,children:[(0,q.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-center gap-x-4 gap-y-5`,children:[(0,q.jsx)(i,{kind:e.wizard.avatar,size:64}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1 basis-[12rem]`,children:[(0,q.jsx)(`h1`,{className:`text-balance font-display font-semibold text-[28px] leading-tight tracking-tight sm:text-[32px]`,children:n.title}),n.message?(0,q.jsx)(`p`,{className:`mt-1 text-[15px] text-ink-3`,children:n.message}):null]}),e.shown.some(e=>e.output)?(0,q.jsx)(`div`,{className:`max-sm:basis-full`,children:(0,q.jsx)(lt,{runId:e.id,title:`${n.title} · ${e.wizard.title}`,initial:e.shareUrl?{url:e.shareUrl,expiresAt:e.expiresAt}:null})}):null]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[a.map(({step:t,output:n,formats:r,label:i})=>(0,q.jsxs)(ue,{className:`p-4 sm:p-5`,children:[(0,q.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,q.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:i??t.title}),(0,q.jsx)(E,{base:`/api/runs/${e.id}`,stepId:t.id,formats:r,title:i??t.title})]}),(0,q.jsx)(b,{base:`/api/runs/${e.id}`,step:t,output:n}),n?.assets?.some(e=>e.ai)?(0,q.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-3 leading-relaxed`,children:W(`ai.publish`)}):null]},t.id)),e.lists.map(t=>(0,q.jsxs)(ue,{className:`p-4 sm:p-5`,children:[(0,q.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,q.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:t.label??t.def.title}),(0,q.jsx)(nn,{runId:e.id,list:t})]}),(0,q.jsx)(Zt,{runId:e.id,list:t,editable:!0})]},t.def.id))]}),(0,q.jsx)(wn,{view:e,run:t,children:r?(0,q.jsxs)(U,{variant:`secondary`,onClick:r,children:[(0,q.jsx)(Je,{className:`size-4`}),` `,W(`run.again`)]}):(0,q.jsx)(`span`,{})})]})}function An({view:e,run:t}){return(0,q.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-8 text-center`,children:[(0,q.jsx)(i,{kind:e.wizard.avatar,size:90}),(0,q.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px]`,children:W(`run.failed`)}),(0,q.jsx)(`p`,{className:`mt-2 max-w-md text-[15px] text-ink-3`,children:e.error}),(0,q.jsxs)(`div`,{className:`mt-8 flex gap-3`,children:[e.canBack?(0,q.jsxs)(U,{variant:`ghost`,onClick:()=>void t.back(),children:[(0,q.jsx)(l,{className:`size-4`}),` `,W(`run.back`)]}):null,(0,q.jsxs)(U,{onClick:()=>void t.retry(),busy:t.busy,children:[(0,q.jsx)(Je,{className:`size-4`}),` `,W(`run.retry`)]})]})]})}function jn({runId:e,compact:t,onRestart:n,onView:r,stickyProgress:i}){let a=vn(e),{view:o}=a;(0,K.useEffect)(()=>{r?.(o)},[o,r]),g();let s=w(o?.status===`running`&&!o.ask);if(Dn(o),a.notFound)return(0,q.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:W(`run.notFound`)});if(!o)return(0,q.jsx)(`div`,{className:`flex justify-center py-24 text-ink-4`,children:(0,q.jsx)(z,{})});let c=o.step,l=null;if(o.status===`running`&&o.ask)l=(0,q.jsx)(ut,{runId:o.id,ask:o.ask},o.ask.id);else if(o.status===`running`)l=(0,q.jsx)(En,{view:o,compact:t,awake:s});else if(o.status===`failed`)l=(0,q.jsx)(An,{view:o,run:a});else if(o.status===`cancelled`)l=(0,q.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:W(`run.cancelled`)});else if(c?.type===`page`)l=(0,q.jsx)(Cn,{view:o,run:a,step:c},c.id);else if(c?.type===`review`){let e=o.shown.map(e=>e.output?.at??``).join(`|`);l=(0,q.jsx)(On,{view:o,run:a,step:c},`${c.id}:${e}`)}else c?.type===`result`&&(l=(0,q.jsx)(kn,{view:o,run:a,step:c,onRestart:n}));let u=c?.type===`review`&&o.status===`waiting_input`&&o.lists.some(e=>e.def.check);return(0,q.jsxs)(`div`,{className:`flex min-h-full flex-col`,children:[i?(0,q.jsx)(`div`,{className:`sticky top-0 z-10`,children:(0,q.jsx)(yn,{view:o})}):(0,q.jsx)(yn,{view:o}),(0,q.jsxs)(`div`,{className:B(`safe-x mx-auto w-full flex-1`,u?`max-w-[1240px] py-8`:t?`max-w-[620px] py-8`:`max-w-[640px] py-8 sm:py-16`),children:[l,a.error&&o.status!==`failed`?(0,q.jsx)(`div`,{className:`mt-4 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:a.error}):null,o.keeps&&o.status!==`running`?(0,q.jsx)(`div`,{className:`mt-10 flex justify-center`,children:(0,q.jsx)(an,{runId:o.id})}):null]})]})}export{Qe as n,me as r,jn as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{O as r,S as i,c as a,d as o,i as s,j as c,k as l,n as u,nt as d,w as f}from"./api-KMi35npD.js";import{a as p,c as m,o as h,s as g,t as _}from"./session-B6-6VomQ.js";import{t as v}from"./createLucideIcon-q3MZMmnf.js";import{n as y,t as ee}from"./plug-CLjyCoHB.js";import{t as b}from"./arrow-right-6FyN3e7D.js";import{S as x,_ as te,b as S,g as ne,m as C,r as re,x as ie,y as ae}from"./outputs-COE_nvAw.js";import{t as w}from"./check-CUpby_J9.js";import{n as T,r as oe,t as se}from"./wand-sparkles-CKxArWPY.js";import{r as ce,t as le}from"./ChatPanel-Br3nYkUc.js";import{n as ue,t as E}from"./plus-Du-Jx8aI.js";import{t as D}from"./external-link-MAL7vJYj.js";import{n as de}from"./mic-Bvz4mA2j.js";import{i as fe,n as pe,r as me,t as he}from"./type-Bj9H3eOK.js";import{p as ge}from"./definition-DndaH5Ow.js";import{t as _e}from"./upload--J5bZhEM.js";import{_ as ve,c as O,d as k,f as ye,h as A,i as j,m as M,n as N,o as P,p as be,r as F,s as I,t as L,u as xe,y as R}from"./ui-Cs6lpsmj.js";import{a as Se,c as Ce,i as we,o as Te,r as Ee,s as De}from"./index-BmpnE7IO.js";import{o as Oe,r as ke,t as Ae}from"./LocalRuntime-CTyLGC98.js";import{ProjectSwitcher as je}from"./HomePage-8v4HqIbP.js";var Me={name:`calendar`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}]]};Me.node;var Ne=v(Me),Pe={name:`file-spreadsheet`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 13h2`,key:`yr2amv`}],[`path`,{d:`M14 13h2`,key:`un5t4a`}],[`path`,{d:`M8 17h2`,key:`2yhykz`}],[`path`,{d:`M14 17h2`,key:`10kma7`}]]};Pe.node;var Fe=v(Pe),Ie={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};Ie.node;var Le=v(Ie),Re={name:`hash`,size:24,node:[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]};Re.node;var ze=v(Re),Be={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};Be.node;var Ve=v(Be),He={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};He.node;var Ue=v(He),We={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};We.node;var Ge=v(We),Ke={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};Ke.node;var qe=v(Ke),Je={name:`music`,size:24,node:[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]};Je.node;var Ye=v(Je),Xe={name:`phone`,size:24,node:[[`path`,{d:`M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384`,key:`9njp5v`}]]};Xe.node;var Ze=v(Xe),Qe={name:`rotate-cw`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]};Qe.node;var $e=v(Qe),et={name:`text-align-start`,size:24,node:[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M17 19H3`,key:`z6ezky`}]],aliases:[`text`,`align-left`]};et.node;var tt=v(et),nt={name:`toggle-left`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`3`,key:`u3jwor`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`,key:`g7kal2`}]]};nt.node;var rt=v(nt),it={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};it.node;var at=v(it),z=e(t(),1),B=e(n(),1);function V({title:e,hint:t,save:n,action:r,children:i}){return(0,B.jsxs)(`section`,{className:`flex flex-col gap-2.5`,children:[(0,B.jsxs)(`div`,{className:`flex items-start justify-between gap-4 px-1`,children:[(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`h2`,{className:`font-display font-semibold text-lg leading-tight`,children:e}),n?.state===`saving`?(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[12px] text-ink-3`,children:[(0,B.jsx)(k,{className:`size-3`}),` `,R(`project.saving`)]}):n?.state===`saved`?(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[12px] text-moss`,children:[(0,B.jsx)(w,{className:`size-3.5`}),` `,R(`settings.saved`)]}):null]}),t?(0,B.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-snug`,children:t}):null]}),r?(0,B.jsx)(`div`,{className:`shrink-0`,children:r}):null]}),(0,B.jsxs)(N,{className:`p-5`,children:[i,n?.state===`error`&&n.error?(0,B.jsx)(`p`,{className:`mt-4 text-[14px] text-rose`,children:n.error}):null]})]})}function ot({children:e,layout:t,onToggle:n}){return(0,B.jsxs)(`div`,{className:`mb-3 flex items-start gap-2`,children:[(0,B.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,B.jsx)(`div`,{className:`w-56 max-w-full transition-[width] duration-200 focus-within:w-full has-[input:not(:placeholder-shown)]:w-full`,children:e})}),(0,B.jsx)(P,{label:R(t===`list`?`project.viewCards`:`project.viewList`),onClick:n,children:t===`list`?(0,B.jsx)(Ue,{className:`size-4`}):(0,B.jsx)(Ge,{className:`size-4`})})]})}function st({value:e,onChange:t,onEnter:n,placeholder:r,busy:i}){return(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(me,{className:`-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 size-4 text-ink-4`}),(0,B.jsx)(`input`,{type:`search`,value:e,placeholder:r,onChange:e=>t(e.target.value),onKeyDown:e=>e.key===`Enter`&&n?.(),className:`h-9 w-full rounded-lg border border-input bg-card pr-3 pl-9 text-[14px] text-ink outline-none transition placeholder:text-ink-4 focus:border-focus focus:ring-4 focus:ring-focus-glow`}),i?(0,B.jsx)(k,{className:`-translate-y-1/2 absolute top-1/2 right-3 size-4 text-ink-3`}):null]})}function ct({onFiles:e,accept:t,multiple:n=!0,className:r,children:i}){return(0,B.jsxs)(`label`,{onDragOver:e=>{e.preventDefault(),e.currentTarget.dataset.over=`1`},onDragLeave:e=>{delete e.currentTarget.dataset.over},onDrop:t=>{t.preventDefault(),delete t.currentTarget.dataset.over;let r=Array.from(t.dataTransfer.files);r.length&&e(n?r:r.slice(0,1))},className:A(`flex cursor-pointer items-center justify-center gap-2 rounded-lg border border-input border-dashed text-[14px] text-ink-3 transition focus-within:border-focus focus-within:ring-4 focus-within:ring-focus-glow hover:border-ink-4 hover:text-ink data-[over]:border-focus data-[over]:bg-paper-2 data-[over]:text-ink`,r),children:[i,(0,B.jsx)(`input`,{className:`sr-only`,type:`file`,accept:t,multiple:n,onChange:t=>{let n=Array.from(t.target.files??[]);t.target.value=``,n.length&&e(n)}})]})}function lt(){let e=Ce(),[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(null),a=async e=>{n(e??`*`),i(null);try{await De(e)}catch(e){i(e.message)}finally{n(null)}};return(0,B.jsxs)(V,{title:R(`plugins.title`),hint:e.canReload?R(`plugins.hint`):R(`plugins.hintManaged`),action:e.canReload?(0,B.jsx)(L,{variant:`secondary`,busy:t===`*`,onClick:()=>void a(),children:R(`plugins.rescan`)}):null,children:[(0,B.jsxs)(`ul`,{className:`divide-y divide-border-soft`,children:[e.plugins.map(n=>{let r=e.failed[n.id];return(0,B.jsxs)(`li`,{className:`flex items-start gap-4 py-4 first:pt-0 last:pb-0`,children:[(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2.5 gap-y-1`,children:[(0,B.jsx)(`span`,{className:`font-medium text-[15px]`,children:n.name}),n.name===n.id?null:(0,B.jsxs)(`span`,{className:`font-mono text-[12px] text-ink-4`,children:[n.id,` · `,n.version]})]}),n.description?(0,B.jsx)(`p`,{className:`mt-0.5 text-[14px] text-ink-3`,children:n.description}):null,n.tools.length?(0,B.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[12px] text-ink-3`,children:[R(`plugins.tools`),n.tools.map(e=>(0,B.jsx)(F,{children:e.id},e.id))]}):null,n.error?(0,B.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:R(`plugins.serverFailed`,{error:n.error})}):null,r?(0,B.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:R(`plugins.studioFailed`,{error:r})}):null]}),e.canReload?(0,B.jsx)(P,{label:R(`plugins.reload`),disabled:t!==null,onClick:()=>void a(n.id),children:(0,B.jsx)($e,{className:t===n.id?`size-4 animate-spin`:`size-4`})}):null]},n.id)}),e.problems.map(e=>(0,B.jsxs)(`li`,{className:`py-4 first:pt-0 last:pb-0`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2.5 gap-y-1`,children:[(0,B.jsx)(F,{tone:`warn`,children:R(`plugins.problems`)}),(0,B.jsx)(`span`,{className:`break-all font-mono text-[12px] text-ink-3`,children:e.path})]}),(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:e.message})]},e.path))]}),r?(0,B.jsx)(`p`,{className:`mt-4 text-[13px] text-rose`,children:r}):null]})}var ut=e=>[`project-files`,e];function dt(e){return c({queryKey:ut(e),queryFn:()=>u.get(`/api/studio/projects/${e}/files`),refetchInterval:e=>e.state.data?.files.some(e=>e.status===`pending`)?2e3:!1})}function H(e,t){return a(`/api/studio/projects/${e}/files/${t}/content`)}function U(e){let t=d(),[n,r]=(0,z.useState)(!1),[i,a]=(0,z.useState)(null),o=()=>t.invalidateQueries({queryKey:ut(e)}),s=async e=>{a(null);try{await e()}catch(e){a(e.message)}finally{await o()}};return{busy:n,error:i,upload:async(t,n)=>{r(!0),await s(async()=>{for(let r of n)await u.upload(`/api/studio/projects/${e}/files?kind=${t}`,r),await o()}),r(!1)},describe:(t,n)=>s(()=>u.patch(`/api/studio/projects/${e}/files/${t}`,{description:n})),remove:t=>s(()=>u.del(`/api/studio/projects/${e}/files/${t}`)),reindex:t=>s(()=>u.post(`/api/studio/projects/${e}/files/${t}/reindex`)),order:(t,n)=>s(()=>u.put(`/api/studio/projects/${e}/files/order`,{kind:t,ids:n}))}}function ft(e,t){let n=`wz.layout.${e}`,[r,i]=(0,z.useState)(()=>{try{let e=localStorage.getItem(n);return e===`list`||e===`cards`?e:t}catch{return t}});return[r,()=>i(e=>{let t=e===`list`?`cards`:`list`;try{localStorage.setItem(n,t)}catch{}return t})]}function W(e,t,n=700){let[r,i]=(0,z.useState)(`idle`),[a,o]=(0,z.useState)(null),s=JSON.stringify(e),c=(0,z.useRef)(s),l=(0,z.useRef)({value:e,json:s,save:t});l.current={value:e,json:s,save:t};let u=(0,z.useRef)(Promise.resolve()),d=(0,z.useCallback)(()=>{let e=l.current;e.json!==c.current&&(c.current=e.json,i(`saving`),u.current=u.current.then(async()=>{try{await e.save(e.value),o(null),i(`saved`)}catch(e){c.current=``,o(e.message),i(`error`)}}))},[]);return(0,z.useEffect)(()=>{if(s===c.current)return;let e=setTimeout(d,n);return()=>clearTimeout(e)},[s,n,d]),(0,z.useEffect)(()=>d,[d]),{state:r,error:a}}function pt(e){return e<1e6?`${Math.max(1,Math.round(e/1e3))} KB`:`${(e/1e6).toFixed(1)} MB`}var mt=`mt-1.5 text-[13px] text-ink-3`;function ht({me:e}){let t=d(),n=e.mode===`managed`,[r,i]=(0,z.useState)(e.profile),a=e=>i(t=>({...t,...e})),o=W(r,async e=>{await u.put(`/api/studio/profile`,e),await t.invalidateQueries({queryKey:[`me`]})}),s=e.manageUrl?`${e.manageUrl}/account`:e.account?.url??null;return(0,B.jsxs)(`div`,{className:`flex flex-col gap-9`,children:[(0,B.jsx)(V,{title:R(`account.title`),hint:R(`account.hint`),save:o,children:(0,B.jsxs)(`div`,{className:`flex flex-col gap-6 sm:flex-row sm:gap-8`,children:[(0,B.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center gap-2 sm:w-32`,children:[(0,B.jsx)(`div`,{className:`flex size-20 items-center justify-center overflow-hidden rounded-full bg-ember-tint font-semibold text-[28px] text-ember-strong ring-1 ring-border-soft`,children:e.user.image?(0,B.jsx)(`img`,{src:e.user.image,alt:``,className:`size-full object-cover`}):_(r.name)||`?`}),(0,B.jsx)(`p`,{className:`text-center text-[12px] text-ink-3 leading-snug`,children:R(`account.initials`)})]}),(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-5`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`account.name`)}),(0,B.jsx)(I,{value:r.name,maxLength:80,disabled:n,onChange:e=>a({name:e.target.value})}),(0,B.jsx)(`p`,{className:mt,children:R(n?`account.fromAccount`:`account.nameHint`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`account.about`)}),(0,B.jsx)(M,{minRows:3,maxLength:2e3,value:r.about,onChange:e=>a({about:e.target.value})}),(0,B.jsx)(`p`,{className:mt,children:R(`account.aboutHint`)})]}),(0,B.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`account.email`)}),(0,B.jsx)(I,{type:`email`,value:r.email,maxLength:200,disabled:n,onChange:e=>a({email:e.target.value})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`account.phone`)}),(0,B.jsx)(I,{type:`tel`,value:r.phone,maxLength:40,onChange:e=>a({phone:e.target.value})})]})]})]})]})}),(0,B.jsx)(V,{title:R(`account.connection`),hint:R(`account.connectionHint`),children:e.mode===`local`&&!e.account?(0,B.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,B.jsx)(`div`,{className:`flex size-11 shrink-0 items-center justify-center rounded-full bg-paper-2 text-ink-2`,children:(0,B.jsx)(Le,{className:`size-5`})}),(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.local`)}),(0,B.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-relaxed`,children:R(`account.localText`)})]})]}):(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`truncate font-medium text-[15px]`,children:e.account?.name??e.user.name}),(0,B.jsx)(F,{tone:`live`,children:R(`account.linked`)})]}),(0,B.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:e.account?.email??e.user.email})]}),s?(0,B.jsxs)(`button`,{type:`button`,onClick:()=>ke(s),className:`inline-flex h-10 items-center gap-2 rounded-full border border-border bg-card px-4 font-medium text-sm transition hover:bg-paper-2`,children:[R(`setup.openAccount`),` `,(0,B.jsx)(D,{className:`size-4`})]}):null]})}),(0,B.jsx)(V,{title:R(`account.look`),hint:R(`account.lookHint`),children:(0,B.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-4 pb-4`,children:[(0,B.jsx)(`span`,{className:`font-medium text-[14px]`,children:R(`nav.language`)}),(0,B.jsx)(Se,{tone:`surface`})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-4 pt-4`,children:[(0,B.jsx)(`span`,{className:`font-medium text-[14px]`,children:R(`nav.theme`)}),(0,B.jsx)(Ee,{})]})]})})]})}function gt({connector:e}){let[t,n]=(0,z.useState)(!1);return(0,B.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,B.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-3 px-3 py-2 text-left`,children:[(0,B.jsx)(`span`,{className:A(`size-2 shrink-0 rounded-full`,e.usable?`bg-moss`:`bg-ink-4`)}),(0,B.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-[13px]`,children:[e.name,` `,(0,B.jsx)(`span`,{className:`font-mono text-[11px] text-ink-4`,children:e.id})]}),(0,B.jsx)(`span`,{className:`shrink-0 text-[12px] text-ink-3`,children:e.usable?R(`connectors.actions`,{n:e.actions.length,r:e.actions.filter(e=>e.group===`read`).length}):R(`connectors.notSetUp`)})]}),t?(0,B.jsxs)(`div`,{className:`border-border-soft border-t px-3 py-2 text-[12px]`,children:[e.missingSetup?(0,B.jsxs)(`p`,{className:`mb-1 text-ink-3`,children:[R(`connectors.setup`),` `,(0,B.jsx)(`span`,{className:`font-mono text-ink-2`,children:e.missingSetup})]}):null,(0,B.jsx)(`p`,{className:`text-ink-4`,children:e.actions.map(e=>e.group===`read`?e.id:`${e.id} (${R(`connectors.group.${e.group}`)})`).join(` · `)})]}):null]})}var _t={none:`connectors.authNone`,oauth2:`connectors.authOauth`,api_key:`connectors.authKey`};function vt({projectId:e,connector:t}){let n=d(),[r,i]=(0,z.useState)(!1),a=()=>n.invalidateQueries({queryKey:[`connectors`,e]}),o=`/api/studio/projects/${e}/connectors/${t.id}`,s=m({mutationFn:()=>u.post(`${o}/refresh`),onSuccess:a}),c=m({mutationFn:()=>u.del(o),onSuccess:a}),l=t.actions.filter(e=>e.group===`read`).length;return(0,B.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3 p-3`,children:[(0,B.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-paper-2 text-ink-2`,children:(0,B.jsx)(ee,{className:`size-4`})}),(0,B.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`min-w-0 flex-1 text-left`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`truncate font-medium text-[14px]`,children:t.name}),(0,B.jsx)(`span`,{className:`font-mono text-[11px] text-ink-4`,children:t.id})]}),(0,B.jsxs)(`div`,{className:`truncate text-[12px] text-ink-3`,children:[t.domain,` · `,t.sourceKind===`mcp`?`MCP`:`OpenAPI`,` ·`,` `,R(_t[t.auth]),` ·`,` `,t.toolsPending?R(`connectors.pending`):R(`connectors.actions`,{n:t.actions.length,r:l})]})]}),(0,B.jsx)(P,{label:R(`connectors.refresh`),onClick:()=>s.mutate(),children:s.isPending?(0,B.jsx)(k,{className:`size-4`}):(0,B.jsx)(ge,{className:`size-4`})}),(0,B.jsx)(P,{label:R(`connectors.remove`),className:`hover:text-rose`,onClick:()=>confirm(`${t.name}: ${R(`connectors.remove`)}?`)&&c.mutate(),children:(0,B.jsx)(C,{className:`size-4`})})]}),t.needsOAuthClient?(0,B.jsx)(`p`,{className:`border-border-soft border-t px-3 py-2 text-[12px] text-rose`,children:R(`connectors.needsClient`)}):null,s.error?(0,B.jsx)(`p`,{className:`border-border-soft border-t px-3 py-2 text-[12px] text-rose`,children:s.error.message}):null,r&&t.actions.length?(0,B.jsx)(`ul`,{className:`max-h-64 overflow-y-auto border-border-soft border-t px-3 py-2`,children:t.actions.map(e=>(0,B.jsxs)(`li`,{className:`flex items-baseline gap-2 py-1 text-[12px]`,children:[(0,B.jsx)(`span`,{className:A(`w-14 shrink-0 text-[11px] uppercase tracking-wide`,e.group===`read`?`text-moss`:e.group===`write`?`text-ink-3`:`text-rose`),children:R(`connectors.group.${e.group}`)}),(0,B.jsx)(`span`,{className:`shrink-0 font-mono text-ink-2`,children:e.id}),(0,B.jsx)(`span`,{className:`min-w-0 truncate text-ink-4`,children:e.summary})]},e.id))}):null]})}function yt({projectId:e,domain:t,source:n,taken:r,onDone:i}){let a=d(),[o,s]=(0,z.useState)({id:``,secret:``}),[c,l]=(0,z.useState)(!1),f=r.includes(n.suggestedId),p=m({mutationFn:()=>u.post(`/api/studio/projects/${e}/connectors`,{domain:t,sourceKind:n.sourceKind,sourceUrl:n.sourceUrl,id:n.suggestedId,toolPrefix:n.suggestedToolPrefix,...n.name?{name:n.name}:{},...o.id&&o.secret?{oauthClientId:o.id,oauthClientSecret:o.secret}:{}}),onSuccess:async t=>{await a.invalidateQueries({queryKey:[`connectors`,e]}),i(t.warnings)}});return(0,B.jsxs)(`div`,{className:`rounded-lg bg-card p-3 ring-1 ring-border-soft`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(F,{tone:n.sourceKind===`mcp`?`ember`:`neutral`,children:n.sourceKind===`mcp`?`MCP`:`OpenAPI`}),(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`div`,{className:`truncate text-[13px]`,children:n.name??n.suggestedId}),(0,B.jsx)(`div`,{className:`truncate font-mono text-[11px] text-ink-4`,children:n.sourceUrl})]}),n.blocked||f?null:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`text-[12px] text-ink-3 hover:text-ink`,children:R(`connectors.ownClient`)}),(0,B.jsx)(L,{size:`sm`,busy:p.isPending,onClick:()=>p.mutate(),children:R(`connectors.import`)})]})]}),n.blocked?(0,B.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-3`,children:n.blocked}):null,f?(0,B.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-3`,children:R(`connectors.exists`)}):null,c?(0,B.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-2`,children:[(0,B.jsx)(I,{placeholder:`OAuth Client-ID`,value:o.id,onChange:e=>s(t=>({...t,id:e.target.value}))}),(0,B.jsx)(I,{type:`password`,autoComplete:`off`,placeholder:`OAuth Client-Secret`,value:o.secret,onChange:e=>s(t=>({...t,secret:e.target.value}))})]}):null,p.error?(0,B.jsx)(`p`,{className:`mt-2 text-[12px] text-rose`,children:p.error.message}):null]})}function bt({projectId:e}){let[t,n]=(0,z.useState)(``),[r,i]=(0,z.useState)(null),[a,o]=(0,z.useState)(null),[s,l]=(0,z.useState)([]),d=c({queryKey:[`connectors`,e],queryFn:()=>u.get(`/api/studio/projects/${e}/connectors`)}),f=m({mutationFn:()=>u.post(`/api/studio/connectors/search`,{query:t}),onSuccess:e=>{i(e),o(null),l([])}}),p=m({mutationFn:e=>u.get(`/api/studio/connectors/registry/${encodeURIComponent(e)}`),onSuccess:o}),h=d.data??[],g=h.filter(e=>e.sourceKind===`builtin`&&(Oe.unsetConnectors||e.usable)),_=h.filter(e=>e.sourceKind!==`builtin`);return(0,B.jsxs)(N,{className:`p-6`,children:[(0,B.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`connectors.title`)}),(0,B.jsx)(`p`,{className:`mt-1 mb-5 text-[14px] text-ink-3`,children:R(`connectors.hint`)}),g.length?(0,B.jsx)(`div`,{className:`mb-5 grid gap-1.5 sm:grid-cols-2`,children:g.map(e=>(0,B.jsx)(gt,{connector:e},e.id))}):null,(0,B.jsx)(`h3`,{className:`mb-2 font-medium text-[12px] text-ink-3 uppercase tracking-[0.07em]`,children:R(`connectors.imported`)}),_.length?(0,B.jsx)(`div`,{className:`mb-4 flex flex-col gap-2`,children:_.map(t=>(0,B.jsx)(vt,{projectId:e,connector:t},t.id))}):null,(0,B.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),t.trim()&&f.mutate()},children:[(0,B.jsx)(I,{value:t,placeholder:R(`connectors.search`),onChange:e=>n(e.target.value)}),(0,B.jsxs)(L,{type:`submit`,variant:`secondary`,busy:f.isPending,children:[(0,B.jsx)(me,{className:`size-4`}),` `,R(`connectors.find`)]})]}),f.error?(0,B.jsx)(`p`,{className:`mt-3 text-[13px] text-rose`,children:f.error.message}):null,r&&!a?(0,B.jsxs)(`div`,{className:`mt-3 flex flex-col gap-1`,children:[r.length?null:(0,B.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:R(`connectors.none`)}),r.map(e=>(0,B.jsxs)(`button`,{type:`button`,disabled:!e.kinds.length,onClick:()=>p.mutate(e.domain),className:`flex items-center gap-3 rounded-lg px-3 py-2 text-left transition hover:bg-paper-2 disabled:opacity-50`,children:[(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`div`,{className:`truncate text-[14px]`,children:e.domain}),(0,B.jsx)(`div`,{className:`truncate text-[12px] text-ink-3`,children:e.description})]}),(0,B.jsx)(`span`,{className:`text-[11px] text-ink-4 uppercase`,children:e.kinds.join(` · `)}),(0,B.jsx)(oe,{className:`-rotate-90 size-4 text-ink-4`})]},e.domain)),p.isPending?(0,B.jsx)(k,{className:`mx-auto mt-2 size-4 text-ink-4`}):null,p.error?(0,B.jsx)(`p`,{className:`text-[13px] text-rose`,children:p.error.message}):null]}):null,a?(0,B.jsxs)(`div`,{className:`mt-4 flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,B.jsx)(`div`,{className:`font-medium text-[14px]`,children:a.domain}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>o(null),className:`text-[12px] text-ink-3 hover:text-ink`,children:R(`run.back`)})]}),a.summary?(0,B.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:a.summary}):null,a.sources.map(t=>(0,B.jsx)(yt,{projectId:e,domain:a.domain,source:t,taken:h.map(e=>e.id),onDone:l},`${t.sourceKind}:${t.sourceUrl}`)),a.credentials.filter(e=>e.setup||e.url).map(e=>(0,B.jsxs)(`p`,{className:`text-[12px] text-ink-3`,children:[(0,B.jsxs)(`span`,{className:`text-ink-2`,children:[e.label,`:`]}),` `,e.setup,` `,e.url?(0,B.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-ember underline`,children:e.url}):null]},e.label)),s.map(e=>(0,B.jsx)(`p`,{className:`text-[12px] text-ink-3`,children:e},e))]}):null]})}var G=`engenty-wizards`,xt=`ENGENTY_WIZARDS_KEY`,St=[{id:`claude-desktop`,name:`Claude Desktop`,widgets:!0},{id:`claude-code`,name:`Claude Code`,widgets:!1},{id:`codex`,name:`Codex · ChatGPT app`,widgets:!1},{id:`cursor`,name:`Cursor`,widgets:!0},{id:`vscode`,name:`VS Code (Copilot)`,widgets:!0},{id:`windsurf`,name:`Windsurf`,widgets:!1},{id:`gemini`,name:`Gemini CLI`,widgets:!1},{id:`goose`,name:`Goose`,widgets:!0},{id:`openclaw`,name:`OpenClaw`,widgets:!1},{id:`lm-studio`,name:`LM Studio`,widgets:!1},{id:`claude-ai`,name:`claude.ai`,widgets:!0,oauth:!0},{id:`chatgpt`,name:`ChatGPT`,widgets:!0,oauth:!0}];function K({text:e}){let[t,n]=(0,z.useState)(!1);return(0,B.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg bg-paper-2 p-3`,children:[(0,B.jsx)(`code`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-all font-mono text-[12px] leading-relaxed`,children:e}),(0,B.jsx)(P,{label:R(t?`settings.copied`:`settings.copy`),onClick:async()=>{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)},children:t?(0,B.jsx)(w,{className:`size-4`}):(0,B.jsx)(ue,{className:`size-4`})})]})}function Ct(e){try{let t=new URL(e);return t.protocol===`https:`&&!/(^|\.)localhost$/.test(t.hostname)&&!/^(127\.|10\.|192\.168\.|\[::1\])/.test(t.hostname)}catch{return!1}}function q({children:e}){return(0,B.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:e})}function J({title:e,children:t}){return(0,B.jsxs)(`section`,{className:`flex flex-col gap-2.5 border-border-soft border-t pt-5 first:border-t-0 first:pt-0`,children:[(0,B.jsx)(`h3`,{className:`font-medium text-[15px]`,children:e}),t]})}function Y(e,t){return JSON.stringify({[e]:{[G]:t}},null,2)}function wt({id:e,url:t,apiKey:n}){let r=n?`Authorization: Bearer ${n}`:null,i=n?{headers:{Authorization:`Bearer ${n}`}}:{};switch(e){case`claude-code`:{let e=t.replace(/\/api\/mcp$/,`/api/claude-plugin`);return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.terminal`)}),(0,B.jsx)(K,{text:`claude mcp add --transport http --scope user ${G} ${t}${r?` --header "${r}"`:``}`}),!n&&Ct(t)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.ccPlugin`)}),(0,B.jsx)(K,{text:`claude plugin marketplace add ${e}/marketplace.json`}),(0,B.jsx)(K,{text:`claude plugin install ${G}@engenty`})]}):null]})}case`codex`:return n?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.codexKey`)}),(0,B.jsx)(K,{text:`echo 'export ${xt}=${n}' >> ~/.zshrc && source ~/.zshrc`}),(0,B.jsx)(K,{text:`codex mcp add ${G} --url ${t} --bearer-token-env-var ${xt}`})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.terminal`)}),(0,B.jsx)(K,{text:`codex mcp add ${G} --url ${t}`}),(0,B.jsx)(K,{text:`codex mcp login ${G}`})]});case`gemini`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.terminal`)}),(0,B.jsx)(K,{text:`gemini mcp add --scope user --transport http ${G} ${t}${r?` -H "${r}"`:``}`})]});case`cursor`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.file`,{file:`~/.cursor/mcp.json`})}),(0,B.jsx)(K,{text:Y(`mcpServers`,{url:t,...i})})]});case`vscode`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.vscode`)}),(0,B.jsx)(K,{text:Y(`servers`,{type:`http`,url:t,...i})})]});case`windsurf`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.file`,{file:`~/.codeium/windsurf/mcp_config.json`})}),(0,B.jsx)(K,{text:Y(`mcpServers`,{serverUrl:t,...i})})]});case`lm-studio`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.file`,{file:`~/.lmstudio/mcp.json`})}),(0,B.jsx)(K,{text:Y(`mcpServers`,{url:t,...i})})]});case`claude-desktop`:case`claude-ai`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.claudeAi`)}),(0,B.jsx)(K,{text:t})]});case`chatgpt`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.chatgpt`)}),(0,B.jsx)(K,{text:t})]});default:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.generic`)}),(0,B.jsx)(K,{text:t}),r?(0,B.jsx)(K,{text:r}):null]})}}function Tt(){let e=d(),t=c({queryKey:[`api-keys`],queryFn:()=>u.get(`/api/studio/api-keys`)}),n=m({mutationFn:e=>u.del(`/api/studio/api-keys/${e}`),onSuccess:()=>e.invalidateQueries({queryKey:[`api-keys`]})});return t.data?.length?(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`mcp.keys`)}),(0,B.jsx)(`p`,{className:`mt-1 mb-4 text-[14px] text-ink-3`,children:R(`mcp.keysHint`)}),(0,B.jsx)(N,{className:`flex flex-col gap-2 p-3`,children:t.data.map(e=>(0,B.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-3 py-2`,children:[(0,B.jsx)(Ve,{className:`size-4 shrink-0 text-ink-4`}),(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`div`,{className:`truncate text-[14px]`,children:e.name}),(0,B.jsxs)(`div`,{className:`font-mono text-[11px] text-ink-4`,children:[e.start,`… ·`,` `,e.lastRequest?R(`settings.lastUsed`,{when:new Date(e.lastRequest).toLocaleString()}):R(`settings.neverUsed`)]})]}),(0,B.jsx)(P,{label:R(`settings.revoke`),onClick:()=>n.mutate(e.id),className:`hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})})]},e.id))})]}):null}function X({state:e,title:t,children:n}){return(0,B.jsxs)(`li`,{className:`grid grid-cols-[22px_minmax(0,1fr)] gap-x-3`,children:[(0,B.jsx)(`span`,{className:A(`mt-0.5 grid size-[22px] place-items-center rounded-full`,e===`done`&&`bg-moss text-white`,e===`now`&&`bg-amber-tint text-ink-2`,e===`later`&&`bg-paper-2 ring-1 ring-border-soft`),children:e===`done`?(0,B.jsx)(w,{className:`size-3.5`,strokeWidth:3}):e===`now`?(0,B.jsx)(k,{className:`size-3`}):null}),(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 pb-4`,children:[(0,B.jsx)(`span`,{className:A(`text-[14px]`,e===`later`?`text-ink-3`:`font-medium`),children:t}),e===`now`?n:null]})]})}function Et({widgets:e}){return(0,B.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{className:`rounded-xl bg-paper p-4 ring-1 ring-border-soft`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-[14px]`,children:[(0,B.jsx)(at,{className:`size-4 text-ember-strong`}),` MCP`]}),(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`integrate.kindMcp`)})]}),(0,B.jsxs)(`div`,{className:A(`rounded-xl p-4 ring-1`,e?`bg-paper ring-border-soft`:`bg-paper-2/60 ring-border-soft/60`),children:[(0,B.jsxs)(`div`,{className:A(`flex items-center gap-2 font-medium text-[14px]`,e?null:`text-ink-3`),children:[(0,B.jsx)(y,{className:A(`size-4`,e?`text-ember-strong`:`text-ink-4`)}),` MCP App`]}),(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(e?`integrate.kindApp`:`integrate.kindAppNo`)})]})]})}function Z({selected:e,title:t,note:n,tone:r,widgets:i,disabled:a,onPick:o}){return(0,B.jsxs)(`button`,{type:`button`,disabled:a,onClick:o,"aria-pressed":e,className:A(`group flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left transition`,e?`bg-card shadow-soft ring-1 ring-border-soft`:`hover:bg-accent`,a&&`cursor-default opacity-55 hover:bg-transparent`),children:[(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`truncate font-medium text-[14px]`,children:t}),i?(0,B.jsx)(`span`,{title:`MCP App`,className:`rounded bg-ember-tint px-1 font-semibold text-[10px] text-ember-strong leading-4`,children:`APP`}):null]}),n?(0,B.jsxs)(`span`,{className:A(`flex items-center gap-1 text-[12px]`,r===`done`?`text-moss`:r===`ok`?`text-ink-2`:`text-ink-4`),children:[r===`done`?(0,B.jsx)(w,{className:`size-3`,strokeWidth:3}):null,n]}):null]}),a?null:(0,B.jsx)(b,{className:A(`size-3.5 shrink-0 transition`,e?`text-ink-3`:`text-ink-4 opacity-0 group-hover:opacity-100`)})]})}function Dt({at:e,done:t}){let n=[R(`setup.stage.connect`),R(`setup.stage.test`),R(`setup.stage.done`)];return(0,B.jsx)(`ol`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 font-medium text-[11px] uppercase tracking-[0.14em]`,children:n.map((n,r)=>{let i=t||r<e;return(0,B.jsxs)(`li`,{"aria-current":!i&&r===e?`step`:void 0,className:A(`flex items-center gap-1`,i?`text-moss`:r===e?`text-ember-strong`:`text-ink-4`),children:[i?(0,B.jsx)(w,{className:`size-3`,strokeWidth:3}):null,n]},n)})})}function Ot({client:e,local:t,seen:n,managed:r,url:i}){let a=d(),o=Ct(i),s=!r&&!!t&&!e.oauth,[c,l]=(0,z.useState)(s&&t?.installed!==!1?`here`:`address`),[f,p]=(0,z.useState)(null),[h,g]=(0,z.useState)(),_=m({mutationFn:t=>u.post(`/api/studio/local/apps/${e.id}`,{connect:t}),onSuccess:e=>p(e),onError:e=>p({ok:!1,message:e.message}),onSettled:()=>a.invalidateQueries({queryKey:[`local-apps`]})}),v=m({mutationFn:()=>u.post(`/api/studio/api-keys`,{name:e.name.slice(0,32)}),onSuccess:async e=>{g(e.key),await a.invalidateQueries({queryKey:[`api-keys`]})}}),y=e.oauth===!0||e.id===`claude-desktop`,ee=c===`address`&&y&&!(r&&o),b=c===`here`?!!t?.connected:r||!!h,x=!!n?.toolAt,te=x?2:b||n?1:0,S=e=>(0,B.jsx)(K,{text:e});return(0,B.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(Dt,{at:te,done:x}),(0,B.jsx)(`h2`,{className:`mt-1.5 font-display font-semibold text-[26px] leading-tight tracking-tight`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3`,children:e.widgets?R(`integrate.leadApp`):R(`integrate.leadMcp`)})]}),(0,B.jsx)(Et,{widgets:e.widgets}),(0,B.jsxs)(N,{className:`flex flex-col gap-6 p-6`,children:[s||!e.oauth?(0,B.jsx)(J,{title:R(`integrate.where`),children:(0,B.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[`here`,`address`].map(e=>{let t=e===`here`&&!s;return(0,B.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>l(e),"aria-pressed":c===e,className:A(`flex items-start gap-3 rounded-xl p-3.5 text-left ring-1 transition`,c===e?`bg-ember-tint/50 ring-ember-strong/40`:`ring-border-soft hover:bg-accent`,t&&`cursor-not-allowed opacity-50 hover:bg-transparent`),children:[e===`here`?(0,B.jsx)(qe,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}):(0,B.jsx)(fe,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}),(0,B.jsxs)(`span`,{className:`min-w-0`,children:[(0,B.jsx)(`span`,{className:`block font-medium text-[14px]`,children:R(e===`here`?`integrate.here`:`integrate.address`)}),(0,B.jsx)(`span`,{className:`block text-[12px] text-ink-3`,children:R(e===`here`?r?`integrate.hereManaged`:`integrate.hereHint`:`integrate.addressHint`)})]})]},e)})})}):null,ee?(0,B.jsx)(J,{title:R(`mcp.notHere`),children:(0,B.jsx)(q,{children:R(r?`mcp.needsPublic`:`integrate.oauthLocal`)})}):c===`here`?(0,B.jsxs)(J,{title:R(`integrate.connectTitle`),children:[t?.installed===!1&&!t.connected?(0,B.jsx)(q,{children:R(`integrate.notInstalled`,{app:e.name})}):null,t?.connected?(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 text-[14px] text-ink-2`,children:[(0,B.jsx)(w,{className:`size-4 text-moss`}),R(`integrate.connected`,{app:e.name})]}),(0,B.jsx)(L,{size:`sm`,variant:`ghost`,busy:_.isPending&&_.variables===!1,onClick:()=>_.mutate(!1),children:R(`mcp.appsDisconnect`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`integrate.connectHint`,{app:e.name})}),(0,B.jsx)(`div`,{children:(0,B.jsxs)(L,{busy:_.isPending,onClick:()=>_.mutate(!0),children:[(0,B.jsx)(E,{className:`size-4`}),` `,R(`integrate.connect`,{app:e.name})]})})]}),f&&!f.ok?(0,B.jsx)(`p`,{className:`text-[13px] text-rose`,children:f.message}):null,f?.snippet?(0,B.jsx)(K,{text:f.snippet}):null,t?.where?(0,B.jsx)(`p`,{className:`font-mono text-[11px] text-ink-4`,children:t.where}):null]}):(0,B.jsxs)(B.Fragment,{children:[r||y?null:(0,B.jsx)(J,{title:R(`mcp.keyTitle`),children:h?(0,B.jsxs)(`p`,{className:`flex items-center gap-2 text-[14px] text-ink-2`,children:[(0,B.jsx)(w,{className:`size-4 text-moss`}),` `,R(`mcp.keyReady`)]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(q,{children:R(`mcp.keyHint`)}),(0,B.jsx)(`div`,{children:(0,B.jsxs)(L,{variant:`secondary`,busy:v.isPending,onClick:()=>v.mutate(),children:[(0,B.jsx)(E,{className:`size-4`}),` `,R(`mcp.keyCreate`,{client:e.name})]})})]})}),(0,B.jsxs)(J,{title:R(`mcp.add`),children:[r||h||y?(0,B.jsx)(wt,{id:e.id,url:i,apiKey:h}):(0,B.jsx)(q,{children:R(`mcp.keyFirst`)}),r?(0,B.jsx)(q,{children:R(`mcp.oauth`)}):null,(0,B.jsx)(`p`,{className:`text-[12px] text-ink-4`,children:R(o?`mcp.addressPublic`:`mcp.addressLocal`)})]})]}),ee?null:(0,B.jsxs)(J,{title:R(`integrate.test`),children:[(0,B.jsxs)(`ol`,{className:`flex flex-col`,children:[(0,B.jsx)(X,{state:n?`done`:b?`now`:`later`,title:R(`integrate.seen`,{app:e.name}),children:(0,B.jsx)(q,{children:R(c===`here`?`integrate.restart`:`integrate.reload`,{app:e.name})})}),(0,B.jsxs)(X,{state:n?.toolAt?`done`:n?`now`:`later`,title:R(`integrate.tool`),children:[(0,B.jsx)(q,{children:R(`integrate.askHint`,{app:e.name})}),S(R(`integrate.askTool`))]}),e.widgets?(0,B.jsxs)(X,{state:n?.widgetAt?`done`:n?.toolAt?`now`:`later`,title:R(`integrate.widget`),children:[(0,B.jsx)(q,{children:R(`integrate.widgetHint`)}),S(R(`integrate.askWidget`))]}):null]}),x?(0,B.jsxs)(`p`,{className:`flex items-center gap-2 font-medium text-[14px] text-moss`,children:[(0,B.jsx)(w,{className:`size-4`,strokeWidth:3}),R(`integrate.works`,{app:e.name})]}):null]})]})]})}function kt(){let e=g(),t=e.data?.mode===`managed`,n=c({queryKey:[`local-apps`],queryFn:()=>u.get(`/api/studio/local/apps`),enabled:e.data?.mode===`local`}),r=c({queryKey:[`integrations-seen`],queryFn:()=>u.get(`/api/studio/integrations/seen`),refetchInterval:2500}),[i,a]=(0,z.useState)(null);if(!e.data||!t&&!n.data)return null;let o=e.data.mcpUrl??``,s=e=>n.data?.find(t=>t.id===e),l=e=>r.data?.[e],d=e=>{let t=s(e);return t?.installed||t?.connected?0:1},f=[...St].sort((e,t)=>d(e.id)-d(t.id)),p=f.find(e=>e.id===i)??f[0],m=e=>{let t=s(e);return l(e)?.toolAt?{note:R(`integrate.stateWorks`),tone:`done`}:t?.connected?{note:R(`integrate.stateConnected`),tone:`ok`}:t?.installed?{note:R(`integrate.stateInstalled`),tone:`dim`}:{}};return(0,B.jsxs)(`div`,{className:`flex flex-col gap-10`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`font-display font-semibold text-[22px] tracking-tight`,children:R(`integrate.title`)}),(0,B.jsx)(`p`,{className:`mt-1 max-w-2xl text-[14px] text-ink-2`,children:R(`integrate.lead`)})]}),(0,B.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-[16rem_minmax(0,1fr)]`,children:[(0,B.jsxs)(`nav`,{className:`flex flex-col gap-5 lg:sticky lg:top-24 lg:self-start`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`mb-1.5 px-3 font-medium text-[11px] text-ink-4 uppercase tracking-[0.14em]`,children:R(`integrate.groupApps`)}),(0,B.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:f.map(e=>(0,B.jsx)(Z,{selected:e.id===p.id,title:e.name,widgets:e.widgets,onPick:()=>a(e.id),...m(e.id)},e.id))})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`mb-1.5 px-3 font-medium text-[11px] text-ink-4 uppercase tracking-[0.14em]`,children:R(`integrate.groupShare`)}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,B.jsx)(Z,{selected:!1,disabled:!0,title:R(`integrate.shareLink`),note:R(`integrate.soon`)}),(0,B.jsx)(Z,{selected:!1,disabled:!0,title:R(`integrate.shareSite`),note:R(`integrate.soon`)})]})]})]}),(0,B.jsx)(Ot,{client:p,local:s(p.id),seen:l(p.id),managed:t,url:o},p.id)]}),t?null:(0,B.jsx)(Tt,{}),(0,B.jsxs)(`p`,{className:`flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,B.jsx)(S,{className:`mt-0.5 size-3.5 shrink-0`}),R(`mcp.notReverse`)]})]})}function At(e){return e.type.startsWith(`image/`)&&/logo/i.test(e.name)?`logo`:/^(image|video|audio)\//.test(e.type)?`asset`:`document`}function jt(e,t){let n=d(),[r,i]=(0,z.useState)([]),[a,o]=(0,z.useState)(`idle`),[c,l]=(0,z.useState)(null),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(null),g=(0,z.useRef)(null),_=()=>(g.current??=(async()=>{await Promise.all([n.invalidateQueries({queryKey:[`projects`]}),n.invalidateQueries({queryKey:[`project-files`,e]})]),t(),g.current=null})(),g.current);return{messages:r,phase:a,activity:f,startedAt:m,error:c,send:async(t,c=[])=>{if(!(t.trim()||c.length)||a!==`idle`)return!1;if(l(null),o(`thinking`),h(Date.now()),c.length){try{for(let t of c)await u.upload(`/api/studio/projects/${e}/files?kind=${At(t)}`,t)}catch(e){return l(e.message),o(`idle`),h(null),await _(),!1}await _();let n=`${R(`editor.attached`)}: ${c.map(e=>e.name).join(`, `)}`;t=t.trim()?`${t}\n\n${n}`:n}let d=r.map(({role:e,content:t})=>({role:e,content:t})).slice(-12),f=`p-${Date.now()}`;i(e=>[...e,{id:`u-${Date.now()}`,role:`user`,content:t,previews:ce(c)},{id:f,role:`assistant`,content:``,pending:!0}]),p(null);let m=!1;try{await s(`/api/studio/projects/${e}/assist`,{message:t,history:d},(e,t)=>{if(e===`text`){let e=JSON.parse(t);i(t=>t.map(t=>t.id===f?{...t,content:t.content+e}:t))}else if(e===`activity`)p(JSON.parse(t));else if(e===`changed`)o(`building`),_();else if(e===`done`){m=!0;let e=JSON.parse(t);i(t=>t.map(t=>t.id===f?{...t,content:e.reply,changed:e.changed,pending:!1}:t))}else e===`error`&&(m=!0,l(JSON.parse(t).message))}),m||l(R(`editor.chatBroken`))}catch(e){l(e.message)}finally{p(null),h(null),i(e=>e.filter(e=>!(e.id===f&&!e.content)).map(e=>({...e,pending:!1}))),o(`idle`),await g.current,await _(),await n.invalidateQueries({queryKey:[`me`]})}return!0}}}function Mt(){return(0,B.jsxs)(`div`,{className:`sm:pr-36`,children:[(0,B.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-tight tracking-tight`,children:R(`project.assistantTitle`)}),(0,B.jsx)(`p`,{className:`mt-1.5 max-w-2xl text-[15px] text-ink-2 leading-relaxed`,children:R(`project.assistantHello`)})]})}var Nt=72,Pt=720;function Ft({projectId:e,onChanged:t}){let n=jt(e,t),r=(0,z.useRef)(null),[i,a]=(0,z.useState)(null);return(0,z.useEffect)(()=>{let e=()=>{let e=r.current?.getBoundingClientRect();e&&a(t=>{if(e.bottom>=Nt)return null;let n=Math.min(e.width,Pt),r=e.left+(e.width-n)/2;return t&&t.left===r&&t.width===n?t:{left:r,width:n,height:t?.height??e.height}})};return e(),window.addEventListener(`scroll`,e,{passive:!0}),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e),window.removeEventListener(`resize`,e)}},[]),(0,B.jsxs)(`div`,{ref:r,style:i?{minHeight:i.height}:void 0,children:[(0,B.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 px-1 font-medium text-[12px] text-ember-strong uppercase tracking-[0.07em]`,children:[(0,B.jsx)(ne,{className:`size-3.5`}),` `,R(`project.assistant`)]}),(0,B.jsxs)(`div`,{className:`relative`,children:[!i&&n.messages.length===0?(0,B.jsx)(`div`,{className:`absolute -top-14 right-10 z-10 max-sm:hidden`,children:(0,B.jsx)(o,{kind:`round`,size:104})}):null,(0,B.jsx)(`div`,{className:A(`flex flex-col overflow-hidden bg-card`,i?`fixed bottom-4 z-30 max-h-[70dvh] animate-dock rounded-2xl shadow-overlay ring-1 ring-border`:`max-h-[520px] rounded-xl bg-linear-to-br from-ember-tint via-card to-card shadow-soft ring-1 ring-ember-veil`),style:i?{left:i.left,width:i.width}:void 0,children:(0,B.jsx)(le,{chat:n,avatar:`round`,compact:!!i,intro:(0,B.jsx)(Mt,{}),placeholder:R(`project.assistantComposer`),changedLabel:R(`project.assistantChanged`)})})]})]})}var It=[`text`,`longtext`,`number`,`date`,`url`,`email`,`phone`,`boolean`],Lt=/^(\d{4}-\d{2}-\d{2}|\d{1,2}\.\s?\d{1,2}\.\s?\d{4})$/,Rt=/^[+-]?\d{1,3}([.,\s']?\d{3})*([.,]\d+)?$/,zt=/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/,Bt=/^(https?:\/\/|www\.)\S+$/i,Vt=/^\+?[\d\s()/.-]{7,20}$/,Ht=/^(ja|nein|yes|no|true|false)$/i;function Ut(e){let t=e.trim();return t?t.includes(`
|
|
2
|
-
`)||t.length>140?`longtext`:Ht.test(t)?`boolean`:zt.test(t)?`email`:Bt.test(t)?`url`:Lt.test(t)?`date`:Rt.test(t)&&!/^(\+|0\d)/.test(t)?`number`:Vt.test(t)&&t.replace(/\D/g,``).length>=7?`phone`:`text`:`text`}function Wt(e,t=[]){let n=e.toLowerCase().replace(/ä/g,`ae`).replace(/ö/g,`oe`).replace(/ü/g,`ue`).replace(/ß/g,`ss`).normalize(`NFD`).replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).slice(0,40)||`fakt`,r=n;for(let e=2;t.includes(r);e++)r=`${n}_${e}`;return r}var Gt=[{key:`adresse`,de:`Adresse`,en:`Address`},{key:`plz`,de:`PLZ`,en:`Postcode`},{key:`ort`,de:`Ort`,en:`City`},{key:`uid`,de:`UID`,en:`VAT id`},{key:`telefon`,de:`Telefon`,en:`Phone`},{key:`e_mail`,de:`E-Mail`,en:`Email`},{key:`website`,de:`Website`,en:`Website`},{key:`iban`,de:`IBAN`,en:`IBAN`}],Q={facts:100,colors:12,files:{logo:8,asset:100,document:50},bytes:{logo:5e6,asset:15e6,video:8e7,document:3e7}},Kt=/^#[0-9a-fA-F]{6}$/;function qt({onAdd:e,onClose:t}){let[n,r]=(0,z.useState)(`#e0531b`),[i,a]=(0,z.useState)(``),o=Kt.test(n);return(0,B.jsx)(j,{open:!0,onClose:t,title:R(`project.colorAddTitle`),children:(0,B.jsxs)(`form`,{onSubmit:r=>{r.preventDefault(),o&&(e({name:i.trim(),value:n.toLowerCase()}),t())},className:`flex flex-col gap-5`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`project.colorValue`)}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(ye,{value:o?n:`#888888`,onChange:e=>r(e.target.value)}),(0,B.jsx)(I,{value:n,placeholder:`#e0531b`,spellCheck:!1,onChange:e=>r(e.target.value.trim()),className:`font-mono text-[14px]`})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`project.colorUseLabel`)}),(0,B.jsx)(I,{autoFocus:!0,value:i,maxLength:120,placeholder:R(`project.colorName`),onChange:e=>a(e.target.value)}),(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.colorUse`)})]}),(0,B.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,B.jsx)(L,{variant:`ghost`,onClick:t,children:R(`common.cancel`)}),(0,B.jsx)(L,{type:`submit`,disabled:!o,children:R(`project.add`)})]})]})})}function Jt({colors:e,save:t}){let n=(0,z.useRef)(0),[r,i]=(0,z.useState)(()=>e.map(e=>({...e,id:`c${n.current++}`}))),[a,o]=(0,z.useState)(!1),s=W(r.filter(e=>Kt.test(e.value)).map(({name:e,value:t})=>({name:e.trim(),value:t})),t),c=(e,t)=>i(n=>n.map(n=>n.id===e?{...n,...t}:n));return(0,B.jsxs)(V,{title:R(`project.colors`),hint:R(`project.colorsHint`),save:s,children:[(0,B.jsx)(`div`,{className:`flex flex-col gap-2`,children:r.map((e,t)=>(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(ye,{value:Kt.test(e.value)?e.value:`#888888`,onChange:t=>c(e.id,{value:t.target.value})}),(0,B.jsx)(I,{value:e.name,placeholder:R(`project.colorName`),maxLength:120,onChange:t=>c(e.id,{name:t.target.value}),className:`min-w-0 flex-1`}),(0,B.jsx)(I,{value:e.value,placeholder:`#e0531b`,spellCheck:!1,onChange:t=>c(e.id,{value:t.target.value.trim()}),className:`w-28 font-mono text-[13px]`}),(0,B.jsxs)(`div`,{className:`flex w-24 shrink-0 items-center justify-end max-sm:w-auto`,children:[t===0?(0,B.jsx)(`span`,{className:`mr-1 max-sm:hidden`,children:(0,B.jsx)(F,{tone:`ember`,children:R(`project.colorAccent`)})}):(0,B.jsx)(P,{label:R(`project.colorFirst`),onClick:()=>i(t=>[e,...t.filter(t=>t.id!==e.id)]),children:(0,B.jsx)(x,{className:`size-4`})}),(0,B.jsx)(P,{label:R(`project.remove`),onClick:()=>i(t=>t.filter(t=>t.id!==e.id)),className:`hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})})]})]},e.id))}),r.length?(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.colorUse`)}):null,r.length<Q.colors?(0,B.jsxs)(L,{variant:`secondary`,size:`sm`,className:r.length?`mt-3`:void 0,onClick:()=>o(!0),children:[(0,B.jsx)(E,{className:`size-4`}),` `,R(`project.colorAdd`)]}):null,a?(0,B.jsx)(qt,{onClose:()=>o(!1),onAdd:e=>i(t=>[...t,{...e,id:`c${n.current++}`}])}):null]})}var Yt={backgroundImage:`repeating-conic-gradient(#c9c9c9 0% 25%, #dedede 0% 50%)`,backgroundSize:`16px 16px`};function $({file:e,actions:t}){let[n,r]=(0,z.useState)(e.description),i=(0,z.useRef)(e.description),a=(0,z.useRef)(null);(0,z.useEffect)(()=>{e.description!==i.current&&(r(t=>t===i.current?e.description:t),i.current=e.description)},[e.description]),(0,z.useLayoutEffect)(()=>{let e=a.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[n]);let o=e.status===`pending`&&!n;return(0,B.jsx)(`textarea`,{ref:a,rows:1,value:n,maxLength:600,placeholder:R(o?`project.describing`:`project.description`),onChange:e=>r(e.target.value),onBlur:()=>{n.trim()!==e.description&&(i.current=n.trim(),t.describe(e.id,n.trim()))},className:`-mx-1 block w-[calc(100%+0.5rem)] resize-none overflow-hidden rounded-md bg-transparent px-1 py-0.5 text-[13px] text-ink-2 leading-snug outline-none transition placeholder:text-ink-4 hover:bg-paper-2 focus:bg-card focus:text-ink focus:ring-1 focus:ring-border`})}function Xt(e,t){confirm(R(`project.removeConfirm`,{name:e.name}))&&t.remove(e.id)}function Zt({projectId:e,file:t,small:n}){let r=H(e,t.id);return t.mime.startsWith(`image/`)?(0,B.jsx)(`img`,{src:r,alt:``,loading:`lazy`,className:A(`size-full`,t.kind===`logo`?`object-contain p-3`:`object-cover`)}):t.mime.startsWith(`video/`)?(0,B.jsx)(`video`,{src:`${r}#t=0.1`,preload:`metadata`,controls:!n,className:`size-full object-cover`}):(0,B.jsx)(`div`,{className:`flex size-full items-center justify-center text-ink-3`,children:t.mime.startsWith(`audio/`)?(0,B.jsx)(Ye,{className:n?`size-5`:`size-7`}):(0,B.jsx)(ie,{className:n?`size-5`:`size-7`})})}function Qt({projectId:e,kind:t,files:n,actions:r,accept:i,addLabel:a,onPreview:o}){return(0,B.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(184px,1fr))] gap-3`,children:[n.map((i,a)=>(0,B.jsxs)(`div`,{className:`group relative flex flex-col gap-1.5 rounded-lg bg-paper p-2 pb-2.5 ring-1 ring-border-soft`,children:[t===`logo`&&a===0?(0,B.jsx)(`span`,{className:`absolute -top-3 left-3 z-10 rounded-full ring-2 ring-card`,children:(0,B.jsx)(F,{tone:`ember`,children:R(`project.logoMain`)})}):null,(0,B.jsxs)(`div`,{className:`relative h-28 overflow-hidden rounded-md bg-paper-2`,style:t===`logo`?Yt:void 0,children:[o&&i.mime.startsWith(`image/`)?(0,B.jsx)(`button`,{type:`button`,"aria-label":`${R(`project.preview`)}: ${i.name}`,onClick:()=>o(i),className:`block size-full cursor-zoom-in`,children:(0,B.jsx)(Zt,{projectId:e,file:i})}):(0,B.jsx)(Zt,{projectId:e,file:i}),(0,B.jsxs)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 transition focus-within:opacity-100 group-hover:opacity-100 coarse:opacity-100`,children:[o?(0,B.jsx)(P,{label:R(`project.preview`),onClick:()=>o(i),className:`size-8 bg-card shadow-soft`,children:(0,B.jsx)(T,{className:`size-4`})}):null,t===`logo`&&a>0?(0,B.jsx)(P,{label:R(`project.logoMakeMain`),onClick:()=>r.order(`logo`,[i.id,...n.filter(e=>e.id!==i.id).map(e=>e.id)]),className:`size-8 bg-card shadow-soft`,children:(0,B.jsx)(pe,{className:`size-4`})}):null,(0,B.jsx)(P,{label:R(`project.remove`),onClick:()=>Xt(i,r),className:`size-8 bg-card shadow-soft hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})})]})]}),t===`asset`?(0,B.jsx)(`div`,{className:`truncate px-0.5 text-[12px] text-ink-3`,title:i.name,children:i.name}):null,(0,B.jsx)($,{file:i,actions:r})]},i.id)),a?(0,B.jsxs)(ct,{accept:i,multiple:!1,onFiles:e=>r.upload(t,e),className:`min-h-28 flex-col p-3`,children:[r.busy?(0,B.jsx)(k,{className:`size-5`}):(0,B.jsx)(E,{className:`size-5`}),a]}):null]})}function $t({projectId:e,data:t}){let n=U(e);return(0,B.jsxs)(V,{title:R(`project.logos`),hint:R(`project.logosHint`),children:[(0,B.jsx)(Qt,{projectId:e,kind:`logo`,files:t.files.filter(e=>e.kind===`logo`),actions:n,accept:`image/*`,addLabel:R(`project.logoAdd`)}),n.error?(0,B.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:n.error}):null]})}var en=e=>[(e.name.includes(`.`)?e.name.split(`.`).pop():e.mime.split(`/`).pop())?.toUpperCase().slice(0,5),pt(e.size)].filter(Boolean).join(` · `);function tn({projectId:e,file:t,actions:n,onClose:r}){let i=H(e,t.id);return(0,B.jsxs)(j,{open:!0,onClose:r,wide:`page`,title:t.name,children:[(0,B.jsxs)(`div`,{className:`-mt-2 mb-4 flex items-center justify-between gap-3`,children:[(0,B.jsx)(`span`,{className:`text-[13px] text-ink-3`,children:en(t)}),(0,B.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,"aria-label":R(`project.openOriginal`),title:R(`project.openOriginal`),className:`inline-flex size-9 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink`,children:(0,B.jsx)(D,{className:`size-4`})})]}),t.mime.startsWith(`image/`)?(0,B.jsx)(`div`,{className:`overflow-hidden rounded-lg`,style:Yt,children:(0,B.jsx)(`img`,{src:i,alt:``,className:`mx-auto max-h-[68dvh] object-contain`})}):t.mime.startsWith(`video/`)?(0,B.jsx)(`video`,{src:i,controls:!0,className:`max-h-[68dvh] w-full rounded-lg bg-black`}):(0,B.jsx)(`audio`,{src:i,controls:!0,className:`w-full`}),(0,B.jsx)(`div`,{className:`mt-4`,children:(0,B.jsx)($,{file:t,actions:n})})]})}function nn({projectId:e,file:t,actions:n,onPreview:r}){return(0,B.jsxs)(`li`,{className:`flex items-start gap-3 rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":`${R(`project.preview`)}: ${t.name}`,onClick:r,className:`size-14 shrink-0 cursor-zoom-in overflow-hidden rounded-md bg-paper-2`,children:(0,B.jsx)(Zt,{projectId:e,file:t,small:!0})}),(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1 py-0.5`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:r,title:t.name,className:`min-w-0 truncate font-medium text-[14px] hover:underline`,children:t.name}),(0,B.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:en(t)})]}),(0,B.jsx)($,{file:t,actions:n})]}),(0,B.jsxs)(`div`,{className:`flex shrink-0 items-start`,children:[(0,B.jsx)(P,{label:R(`project.preview`),onClick:r,children:(0,B.jsx)(T,{className:`size-4`})}),(0,B.jsx)(P,{label:R(`project.remove`),onClick:()=>Xt(t,n),className:`hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})})]})]})}function rn({projectId:e,data:t}){let n=U(e),[r,i]=ft(`assets`,`cards`),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(null),l=t.files.filter(e=>e.kind===`asset`),u=l.find(e=>e.id===s),d=a.trim().toLowerCase(),f=d?l.filter(e=>`${e.name} ${e.description}`.toLowerCase().includes(d)):l;return(0,B.jsxs)(V,{title:R(`project.assets`),hint:R(`project.assetsHint`),children:[l.length?(0,B.jsx)(ot,{layout:r,onToggle:i,children:(0,B.jsx)(st,{value:a,onChange:o,placeholder:R(`project.assetSearch`)})}):null,f.length?(0,B.jsx)(`div`,{className:`mb-3`,children:r===`cards`?(0,B.jsx)(Qt,{projectId:e,kind:`asset`,files:f,actions:n,onPreview:e=>c(e.id)}):(0,B.jsx)(`ul`,{className:`flex flex-col gap-2`,children:f.map(t=>(0,B.jsx)(nn,{projectId:e,file:t,actions:n,onPreview:()=>c(t.id)},t.id))})}):null,(0,B.jsxs)(ct,{accept:`image/*,video/*,audio/*`,onFiles:e=>n.upload(`asset`,e),className:`h-16 w-full`,children:[n.busy?(0,B.jsx)(k,{className:`size-4`}):(0,B.jsx)(_e,{className:`size-4`}),R(`project.drop`),` `,(0,B.jsx)(`span`,{className:`underline`,children:R(`project.assetAdd`)})]}),n.error?(0,B.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:n.error}):null,u?(0,B.jsx)(tn,{projectId:e,file:u,actions:n,onClose:()=>c(null)}):null]})}function an(e,t,n){return c({queryKey:[`project-file-text`,t.id,t.chars,n],queryFn:()=>u.get(`/api/studio/projects/${e}/files/${t.id}/text?limit=${n}`),enabled:t.status===`ready`,staleTime:6e4})}function on(e){return((e.name.includes(`.`)?e.name.split(`.`).pop():``)||e.mime.split(`/`).pop()||``).toUpperCase().slice(0,5)}var sn=e=>[on(e),e.pages?R(`project.pages`,{n:e.pages}):null,pt(e.size)].filter(Boolean).join(` · `);function cn({file:e}){return e.status===`pending`?(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[12px] text-ink-3`,children:[(0,B.jsx)(k,{className:`size-3`}),` `,R(`project.reading`)]}):e.status===`failed`?(0,B.jsx)(`span`,{className:`text-[12px] text-rose`,children:e.error}):e.indexed?(0,B.jsx)(F,{tone:`live`,children:e.indexed===`embeddings`?R(`project.indexed`):R(`project.indexedKeywords`)}):(0,B.jsx)(F,{tone:`warn`,children:R(`project.notIndexed`)})}function ln({file:e,actions:t,onPreview:n}){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(P,{label:R(`project.preview`),onClick:n,children:(0,B.jsx)(T,{className:`size-4`})}),e.status===`pending`?null:(0,B.jsx)(P,{label:R(`project.reindex`),onClick:()=>t.reindex(e.id),children:(0,B.jsx)(ge,{className:`size-4`})}),(0,B.jsx)(P,{label:R(`project.remove`),onClick:()=>Xt(e,t),className:`hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})})]})}function un({file:e,actions:t,onPreview:n}){let r=/sheet|csv|excel/.test(e.mime);return(0,B.jsxs)(`li`,{className:`flex gap-3 rounded-lg bg-paper p-3 ring-1 ring-border-soft`,children:[(0,B.jsx)(`div`,{className:`mt-0.5 text-ink-3`,children:r?(0,B.jsx)(Fe,{className:`size-5`}):(0,B.jsx)(de,{className:`size-5`})}),(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:n,title:e.name,className:`min-w-0 truncate font-medium text-[14px] hover:underline`,children:e.name}),(0,B.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:sn(e)}),(0,B.jsx)(cn,{file:e})]}),(0,B.jsx)($,{file:e,actions:t})]}),(0,B.jsx)(`div`,{className:`-my-1 flex shrink-0 items-start`,children:(0,B.jsx)(ln,{file:e,actions:t,onPreview:n})})]})}function dn({projectId:e,file:t}){let n=an(e,t,1500);return t.mime.startsWith(`image/`)?(0,B.jsx)(`img`,{src:H(e,t.id),alt:``,className:`size-full object-cover`}):t.status===`pending`||n.isLoading?(0,B.jsx)(`div`,{className:`flex size-full items-center justify-center text-ink-4`,children:(0,B.jsx)(k,{className:`size-5`})}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`w-[222%] origin-top-left scale-[0.45] p-6`,children:(0,B.jsx)(re,{text:n.data?.text??``})}),(0,B.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-12 bg-linear-to-t from-card to-transparent`})]})}function fn({projectId:e,file:t,actions:n,onPreview:r}){return(0,B.jsxs)(`li`,{className:`group flex flex-col gap-1.5 rounded-lg bg-paper p-2 pb-2.5 ring-1 ring-border-soft`,children:[(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`${R(`project.preview`)}: ${t.name}`,className:`relative block h-44 w-full overflow-hidden rounded-md bg-card text-left ring-1 ring-border-soft transition hover:ring-border`,children:(0,B.jsx)(dn,{projectId:e,file:t})}),(0,B.jsx)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 transition focus-within:opacity-100 group-hover:opacity-100 coarse:opacity-100 [&>button]:size-8 [&>button]:bg-card [&>button]:shadow-soft`,children:(0,B.jsx)(ln,{file:t,actions:n,onPreview:r})})]}),(0,B.jsxs)(`div`,{className:`mt-1 flex flex-col gap-1 px-0.5`,children:[(0,B.jsx)(`div`,{className:`truncate font-medium text-[13px]`,title:t.name,children:t.name}),(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,B.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:sn(t)}),(0,B.jsx)(cn,{file:t})]})]}),(0,B.jsx)($,{file:t,actions:n})]})}var pn=2e5;function mn({projectId:e,file:t,onClose:n}){let r=t.mime===`application/pdf`||t.mime.startsWith(`image/`),[i,a]=(0,z.useState)(r?`original`:`text`),o=an(e,t,pn),s=H(e,t.id),c=(e,t)=>(0,B.jsx)(`button`,{type:`button`,"aria-pressed":i===e,onClick:()=>a(e),className:A(`h-8 rounded-full px-3 text-[13px] transition`,i===e?`bg-paper-2 font-medium text-ink`:`text-ink-3 hover:text-ink`),children:t});return(0,B.jsxs)(j,{open:!0,onClose:n,wide:`page`,title:t.name,children:[(0,B.jsxs)(`div`,{className:`-mt-2 mb-4 flex flex-wrap items-center gap-x-3 gap-y-2`,children:[(0,B.jsx)(`span`,{className:`text-[13px] text-ink-3`,children:sn(t)}),(0,B.jsx)(cn,{file:t}),(0,B.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[r?(0,B.jsxs)(B.Fragment,{children:[c(`original`,R(`project.original`)),c(`text`,R(`project.readText`))]}):null,(0,B.jsx)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,"aria-label":R(`project.openOriginal`),title:R(`project.openOriginal`),className:`inline-flex size-9 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink`,children:(0,B.jsx)(D,{className:`size-4`})})]})]}),i===`original`?t.mime===`application/pdf`?(0,B.jsx)(`iframe`,{src:s,title:t.name,className:`h-[70dvh] w-full rounded-lg bg-paper-2 ring-1 ring-border-soft`}):(0,B.jsx)(`img`,{src:s,alt:``,className:`mx-auto max-h-[70dvh] rounded-lg object-contain`}):o.isLoading?(0,B.jsx)(`div`,{className:`flex h-40 items-center justify-center text-ink-3`,children:(0,B.jsx)(k,{})}):o.data?.text?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`overflow-x-auto rounded-lg bg-paper p-5 ring-1 ring-border-soft`,children:(0,B.jsx)(re,{text:o.data.text,className:`text-[14px]`})}),o.data.chars>o.data.text.length?(0,B.jsx)(`p`,{className:`mt-3 text-[13px] text-ink-3`,children:R(`project.textCut`,{shown:o.data.text.length.toLocaleString(),total:o.data.chars.toLocaleString()})}):null]}):(0,B.jsx)(`p`,{className:`py-8 text-center text-[14px] text-ink-3`,children:R(`project.noText`)})]})}function hn({projectId:e}){let[t,n]=(0,z.useState)(``),[r,i]=(0,z.useState)(null),[a,o]=(0,z.useState)(!1),s=async()=>{if(!t.trim()){i(null);return}o(!0);try{let n=await u.post(`/api/studio/projects/${e}/search`,{query:t});i(n.hits)}catch{i([])}finally{o(!1)}};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(st,{value:t,placeholder:R(`project.searchTest`),busy:a,onEnter:()=>void s(),onChange:e=>{n(e),e.trim()||i(null)}}),r?r.length?(0,B.jsx)(`ul`,{className:`mt-2 flex flex-col gap-2`,children:r.map((e,t)=>(0,B.jsxs)(`li`,{className:`rounded-lg bg-paper-2 px-3 py-2 text-[13px]`,children:[(0,B.jsx)(`div`,{className:`mb-0.5 font-medium text-[12px] text-ink-3`,children:e.name}),(0,B.jsx)(`p`,{className:`line-clamp-3 whitespace-pre-line text-ink-2`,children:e.text})]},t))}):(0,B.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3`,children:R(`project.searchNone`)}):null]})}function gn({projectId:e,data:t}){let n=U(e),[r,i]=ft(`documents`,`list`),[a,o]=(0,z.useState)(null),s=t.files.filter(e=>e.kind===`document`),c=s.find(e=>e.id===a),l=r===`cards`?fn:un;return(0,B.jsxs)(V,{title:R(`project.documents`),hint:R(`project.documentsHint`),children:[s.length?(0,B.jsx)(ot,{layout:r,onToggle:i,children:(0,B.jsx)(hn,{projectId:e})}):null,s.length?(0,B.jsx)(`ul`,{className:A(`mb-3`,r===`cards`?`grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-3`:`flex flex-col gap-2`),children:s.map(t=>(0,B.jsx)(l,{projectId:e,file:t,actions:n,onPreview:()=>o(t.id)},t.id))}):null,(0,B.jsxs)(ct,{accept:`.pdf,.docx,.doc,.xlsx,.csv,.tsv,.txt,.md,.json,.html,.eml,image/*`,onFiles:e=>n.upload(`document`,e),className:`h-16 w-full`,children:[n.busy?(0,B.jsx)(k,{className:`size-4`}):(0,B.jsx)(_e,{className:`size-4`}),R(`project.drop`),` `,(0,B.jsx)(`span`,{className:`underline`,children:R(`project.documentAdd`)})]}),n.error?(0,B.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:n.error}):null,s.length&&!t.embeddings?(0,B.jsx)(`p`,{className:`mt-3 text-[13px] text-ink-3`,children:R(`project.keywordsOnly`)}):null,c?(0,B.jsx)(mn,{projectId:e,file:c,onClose:()=>o(null)}):null]})}var _n=e=>/^(ja|yes|true)$/i.test(e.trim()),vn={text:he,longtext:tt,number:ze,date:Ne,url:S,email:ae,phone:Ze,boolean:rt};function yn({type:e,detected:t,onChange:n}){let[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(!1),s=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!r)return;let e=e=>{s.current?.contains(e.target)||i(!1)},t=e=>e.key===`Escape`&&i(!1);return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[r]);let c=vn[e??t],l=`${R(`project.factType`)}: ${R(`project.type.${e??t}`)}`,u=`flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-[14px] text-ink-2 hover:bg-accent hover:text-ink`,d=e=>{n(e),i(!1)};return(0,B.jsxs)(`div`,{className:`relative`,ref:s,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":l,title:l,"aria-haspopup":`menu`,"aria-expanded":r,onClick:e=>{o(window.innerHeight-e.currentTarget.getBoundingClientRect().bottom<400),i(e=>!e)},className:A(`inline-flex size-11 items-center justify-center rounded-lg transition hover:bg-accent hover:text-ink`,r?`bg-accent text-ink`:e?`text-ink-2`:`text-ink-4`),children:(0,B.jsx)(c,{className:`size-4`})}),r?(0,B.jsxs)(`div`,{role:`menu`,className:A(`absolute right-0 z-50 w-56 animate-rise rounded-xl bg-card p-1.5 shadow-overlay ring-1 ring-border-soft`,a?`bottom-12`:`top-12`),children:[(0,B.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":!e,className:u,onClick:()=>d(void 0),children:[(0,B.jsx)(se,{className:`size-4 shrink-0`}),(0,B.jsx)(`span`,{className:`flex-1`,children:R(`project.factAuto`)}),(0,B.jsx)(`span`,{className:`text-[12px] text-ink-4`,children:R(`project.type.${t}`)}),(0,B.jsx)(w,{className:A(`size-4 shrink-0`,e&&`invisible`)})]}),(0,B.jsx)(`div`,{className:`mx-2 my-1 h-px bg-border-soft`}),It.map(t=>{let n=vn[t];return(0,B.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":e===t,className:u,onClick:()=>d(t),children:[(0,B.jsx)(n,{className:`size-4 shrink-0`}),(0,B.jsx)(`span`,{className:`flex-1`,children:R(`project.type.${t}`)}),(0,B.jsx)(w,{className:A(`size-4 shrink-0`,e!==t&&`invisible`)})]},t)})]}):null]})}function bn({facts:e,save:t}){let n=(0,z.useRef)(0),r=(0,z.useRef)(null),[i,a]=(0,z.useState)(()=>e.map(e=>({...e,id:`f${n.current++}`}))),o=W(i.filter(e=>e.key&&e.label.trim()).map(({key:e,label:t,value:n,type:r})=>({key:e,label:t.trim(),value:n,...r?{type:r}:{}})),t),s=(e,t)=>a(n=>n.map(n=>n.id===e?{...n,...t}:n)),c=(e,t,i=!1)=>{let o=`f${n.current++}`;r.current=`${o}:${t}`;let s={id:o,key:``,label:``,value:``,...e};a(e=>i?[s,...e]:[...e,s])},l=e=>t=>{t&&r.current===e&&(r.current=null,t.focus())},u=Gt.filter(e=>!i.some(t=>t.key===e.key));return(0,B.jsxs)(V,{title:R(`project.facts`),hint:R(`project.factsHint`),save:o,action:i.length<Q.facts?(0,B.jsxs)(L,{variant:`secondary`,size:`sm`,onClick:()=>c({},`label`,!0),children:[(0,B.jsx)(E,{className:`size-4`}),` `,R(`project.factAdd`)]}):null,children:[(0,B.jsx)(`div`,{className:`flex flex-col gap-2`,children:i.map(e=>{let t=Ut(e.value),n=e.type??t;return(0,B.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_auto] items-start gap-x-1 gap-y-2 sm:grid-cols-[minmax(0,2fr)_minmax(0,3fr)_auto_auto]`,children:[(0,B.jsx)(I,{ref:l(`${e.id}:label`),value:e.label,placeholder:R(`project.factLabel`),title:e.key?`{{facts.${e.key}}}`:void 0,onChange:t=>s(e.id,{label:t.target.value}),onBlur:()=>{!e.key&&e.label.trim()&&s(e.id,{key:Wt(e.label,i.map(e=>e.key))})},className:`max-sm:col-span-3 max-sm:font-medium sm:mr-1`}),e.type===`boolean`?(0,B.jsxs)(`div`,{className:`flex h-11 items-center gap-3`,children:[(0,B.jsx)(be,{checked:_n(e.value),label:e.label,onChange:t=>s(e.id,{value:R(t?`project.yes`:`project.no`)})}),(0,B.jsx)(`span`,{className:`text-[14px] text-ink-2`,children:_n(e.value)?R(`project.yes`):R(`project.no`)})]}):(0,B.jsx)(M,{ref:l(`${e.id}:value`),rows:1,minRows:n===`longtext`?2:1,maxRows:10,value:e.value,placeholder:R(`project.factValue`),onChange:t=>s(e.id,{value:t.target.value}),className:`min-h-11`}),(0,B.jsx)(yn,{type:e.type,detected:t,onChange:t=>s(e.id,{type:t})}),(0,B.jsx)(P,{label:R(`project.remove`),onClick:()=>a(t=>t.filter(t=>t.id!==e.id)),className:`size-11 rounded-lg hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})})]},e.id)})}),i.length<Q.facts?(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 ${i.length?`mt-4`:``}`,children:[(0,B.jsxs)(L,{variant:`secondary`,size:`sm`,onClick:()=>c({},`label`),children:[(0,B.jsx)(E,{className:`size-4`}),` `,R(`project.factAdd`)]}),u.map(e=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>c({key:e.key,label:ve===`en`?e.en:e.de},`value`),className:`inline-flex h-8 items-center gap-1 rounded-full bg-paper-2 px-3 text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink`,children:[(0,B.jsx)(E,{className:`size-3.5`}),` `,ve===`en`?e.en:e.de]},e.key))]}):null]})}function xn({project:e,save:t}){let[n,r]=(0,z.useState)(e.brand.name??``),[i,a]=(0,z.useState)(e.brand.about??``),o=W({name:n.trim(),about:i.trim()},e=>t({brand:e}));return(0,B.jsx)(V,{title:R(`project.base`),hint:R(`project.baseHint`),save:o,children:(0,B.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`project.title`)}),(0,B.jsx)(I,{value:n,maxLength:120,onChange:e=>r(e.target.value)}),(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.titleHint`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(O,{children:R(`project.about`)}),(0,B.jsx)(M,{minRows:4,value:i,onChange:e=>a(e.target.value)}),(0,B.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.aboutHint`)})]})]})})}function Sn({project:e,save:t}){let[n,r]=(0,z.useState)(!1),[i,a]=(0,z.useState)(e.name),o=m({mutationFn:()=>t({name:i.trim()}),onSuccess:()=>r(!1)});return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(P,{label:R(`project.rename`),onClick:()=>{a(e.name),r(!0)},children:(0,B.jsx)(te,{className:`size-4`})}),(0,B.jsx)(j,{open:n,onClose:()=>r(!1),title:R(`project.rename`),children:(0,B.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),i.trim()&&o.mutate()},children:[(0,B.jsx)(I,{autoFocus:!0,value:i,maxLength:80,onChange:e=>a(e.target.value)}),o.error?(0,B.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:o.error.message}):null,(0,B.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,B.jsx)(L,{variant:`ghost`,onClick:()=>r(!1),children:R(`common.cancel`)}),(0,B.jsx)(L,{type:`submit`,busy:o.isPending,disabled:!i.trim(),children:R(`settings.save`)})]})]})})]})}function Cn({project:e}){let t=d(),n=dt(e.id),[r,i]=(0,z.useState)(0),a=async n=>{await u.patch(`/api/studio/projects/${e.id}`,n),await t.invalidateQueries({queryKey:[`projects`]})},o=m({mutationFn:()=>u.del(`/api/studio/projects/${e.id}`),onSuccess:()=>t.invalidateQueries({queryKey:[`projects`]})}),s=h(),c=n.data??{files:[],embeddings:!0},l=`${e.id}:${r}`;return(0,B.jsxs)(`div`,{className:`flex flex-col gap-9 pb-20`,children:[s?(0,B.jsxs)(`div`,{className:`-mb-3 flex items-center gap-1`,children:[(0,B.jsx)(je,{}),(0,B.jsx)(Sn,{project:e,save:a})]}):null,(0,B.jsx)(Ft,{projectId:e.id,onChanged:()=>i(e=>e+1)},e.id),(0,B.jsx)(xn,{project:e,save:a},`base:${l}`),(0,B.jsx)($t,{projectId:e.id,data:c}),(0,B.jsx)(Jt,{colors:e.brand.colors??[],save:e=>a({brand:{colors:e}})},`colors:${l}`),(0,B.jsx)(rn,{projectId:e.id,data:c}),(0,B.jsx)(gn,{projectId:e.id,data:c}),(0,B.jsx)(bn,{facts:e.facts,save:e=>a({facts:e})},`facts:${l}`),s?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(L,{variant:`danger`,busy:o.isPending,onClick:()=>confirm(`${R(`settings.delete`)}?`)&&o.mutate(),children:R(`settings.delete`)}),o.error?(0,B.jsx)(`p`,{className:`mt-2 text-[14px] text-rose`,children:o.error.message}):null]}):null]})}function wn(e,t){let n=e.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).replace(/^[^a-z]+/,``).slice(0,24)||`system`,r=n,i=2;for(;t.includes(r);)r=`${n}_${i++}`;return r}function Tn({project:e}){let t=d(),[n,r]=(0,z.useState)(e.mcpServers.map(e=>({...e,auth:e.headers?.Authorization??e.headers?.authorization??``}))),[i,a]=(0,z.useState)(!1),o=m({mutationFn:()=>u.patch(`/api/studio/projects/${e.id}`,{mcpServers:n.filter(e=>e.name&&e.url).map(({auth:e,headers:t,...n})=>({...n,headers:e?{...t,Authorization:e}:void 0}))}),onSuccess:async()=>{await t.invalidateQueries({queryKey:[`projects`]}),a(!0),setTimeout(()=>a(!1),1800)}});return(0,B.jsxs)(N,{className:`p-6`,children:[(0,B.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`settings.mcp`)}),(0,B.jsx)(`p`,{className:`mt-1 mb-5 text-[14px] text-ink-3`,children:R(`settings.mcpHint`)}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[n.map((e,t)=>(0,B.jsxs)(`div`,{className:`grid gap-2 rounded-lg bg-paper p-3 ring-1 ring-border-soft sm:grid-cols-[1fr_2fr_auto]`,children:[(0,B.jsx)(I,{placeholder:R(`settings.serverName`),value:e.name,onChange:e=>r(n=>n.map((r,i)=>i===t?{...r,name:e.target.value,id:r.id||wn(e.target.value,n.map(e=>e.id))}:r))}),(0,B.jsx)(I,{placeholder:`${R(`settings.serverUrl`)} (https://…/mcp)`,value:e.url,onChange:e=>r(n=>n.map((n,r)=>r===t?{...n,url:e.target.value}:n))}),(0,B.jsx)(P,{label:`Entfernen`,onClick:()=>r(e=>e.filter((e,n)=>n!==t)),className:`hover:text-rose`,children:(0,B.jsx)(C,{className:`size-4`})}),(0,B.jsx)(I,{className:`sm:col-span-2`,placeholder:R(`settings.serverHeader`),value:e.auth??``,onChange:e=>r(n=>n.map((n,r)=>r===t?{...n,auth:e.target.value}:n))}),e.id?(0,B.jsx)(`span`,{className:`self-center font-mono text-[11px] text-ink-4`,children:e.id}):null]},t)),(0,B.jsxs)(L,{variant:`secondary`,className:`self-start`,onClick:()=>r(e=>[...e,{id:``,name:``,url:``,auth:``}]),children:[(0,B.jsx)(E,{className:`size-4`}),` `,R(`settings.addServer`)]})]}),(0,B.jsxs)(`div`,{className:`mt-5 flex items-center justify-end gap-3`,children:[o.error?(0,B.jsx)(`p`,{className:`text-[14px] text-rose`,children:o.error.message}):null,(0,B.jsx)(L,{busy:o.isPending,onClick:()=>o.mutate(),children:R(i?`settings.saved`:`settings.save`)})]})]})}function En(){let{section:e}=l(),t=r(),n=g(),{project:a}=p(),o=h(),[s,c]=(0,z.useState)(a?.id);(0,z.useEffect)(()=>c(a?.id),[a?.id]);let u=Ce(),d=we(n.data,u),m=d.find(t=>t.id===e);if(!m)return e===`build`?(0,B.jsx)(f,{to:`/settings/integrate`,replace:!0}):u.status===`ready`?(0,B.jsx)(f,{to:`/settings/project`,replace:!0}):null;let _=m.id===`connectors`&&o;return(0,B.jsxs)(`div`,{className:`animate-rise`,children:[(0,B.jsx)(`h1`,{className:`font-display font-semibold text-[28px] tracking-tight`,children:R(`settings.title`)}),(0,B.jsxs)(`div`,{className:`mt-6 grid gap-6 md:mt-8 md:grid-cols-[200px_minmax(0,1fr)] md:gap-10`,children:[(0,B.jsx)(`nav`,{className:`max-md:hidden`,children:(0,B.jsx)(`ul`,{className:`sticky top-24 flex flex-col gap-0.5`,children:d.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsx)(i,{to:`/settings/${e.id}`,"aria-current":e.id===m.id?`page`:void 0,className:A(`block rounded-lg px-3 py-2 text-[14px] transition`,e.id===m.id?`bg-paper-2 font-medium text-ink`:`text-ink-3 hover:bg-accent hover:text-ink`),children:e.label})},e.id))})}),(0,B.jsx)(xe,{className:`md:hidden`,value:m.id,onChange:e=>t(`/settings/${e}`),options:d.map(e=>({value:e.id,label:e.label}))}),(0,B.jsxs)(`div`,{className:A(`min-w-0`,m.id!==`project`&&m.id!==`integrate`&&`max-w-2xl`),children:[_?(0,B.jsx)(`div`,{className:`mb-6`,children:(0,B.jsx)(je,{})}):null,m.id===`project`&&a?(0,B.jsx)(Cn,{project:a},s):null,m.id===`connectors`&&a?(0,B.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,B.jsx)(bt,{projectId:a.id},s),(0,B.jsx)(Tn,{project:a},s)]}):null,m.id===`models`?(0,B.jsx)(Ae,{}):null,m.id===`integrate`?(0,B.jsx)(kt,{}):null,m.id===`account`&&n.data?(0,B.jsx)(ht,{me:n.data}):null,m.id===`plugins`?(0,B.jsx)(lt,{}):null,m.plugin?(0,B.jsx)(Te,{of:m.plugin,children:(0,B.jsx)(m.plugin.component,{})}):null]})]})]})}export{En as SettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=JSON.parse(`[{"version":"v0.2.1","timestamp":1791223497,"commits":[{"id":"9c16b47","message":"the AI apps start the MCP server as the wizards command, after the rename from engenty-wizards","group":"Fixed","scope":null,"breaking":false},{"id":"f118703","message":"the wizards run in the person's own AI apps — connect writes the MCP server into Claude Desktop, Cursor, Codex and others, a run shows the wizard itself as an MCP App widget, and Settings → Einbinden adds an app with one click and tests it until it works","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.0","timestamp":1791223087,"commits":[{"id":"4404371","message":"a runtime takes plugins: tools for agent steps, routes with tables of their own, listeners on runs that end, and pages, top bar icons and settings sections in the studio; they load from modules/ and PLUGINS_DIR at start and again while it runs","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.11","timestamp":1791208594,"commits":[{"id":"85facbd","message":"the package is on npm as wizards, and the README's studio picture shows the branches with their conditions","group":"Docs","scope":null,"breaking":false},{"id":"6ca5cfc","message":"a branch that skips steps runs beside them in the editor, with its condition readable on the line; it ran behind the step with the condition hidden","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.10","timestamp":1791206923,"commits":[{"id":"8f35bf0","message":"the README shows the studio with a branched flow and a wizard in use, from its first page to the result","group":"Docs","scope":null,"breaking":false},{"id":"7abf9df","message":"the editor's review notes, tool names and branch labels follow the language; they were German in the English studio","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.9","timestamp":1791203125,"commits":[{"id":"5182fec","message":"the installer is engenty.ai/install.sh (was wizards.sh), and the command and the npm package are wizards (were engenty-wizards); the installer renames an install made under the old names","group":"Changed","scope":null,"breaking":false},{"id":"c6500f9","message":"the proxy sends the runtime /w/ and /s/ with the slash","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.1.8","timestamp":1791196160,"commits":[{"id":"a965d36","message":"the marketplace's pages are written by the site at engenty.ai, at /wizards/<slug> and /de/wizards/<slug>","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.1.7","timestamp":1791194770,"commits":[{"id":"66e9109","message":"a banner in the studio says when a newer release is out; the update installs from there, the runtime restarts into the new version and the page reloads","group":"Added","scope":null,"breaking":false},{"id":"5e27bf6","message":"the studio chat counts the seconds of a turn and says what the architect is doing and thinking; pasted pictures show in the thread and the architect sees them","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.6","timestamp":1791167380,"commits":[{"id":"481807b","message":"video models render at 720p, or 480p when a step asks; a larger clip is scaled down, and the price follows the resolution","group":"Added","scope":null,"breaking":false},{"id":"bb20f2b","message":"the settings say Codex makes images on the sign-in too; only video and audio still need a key","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.5","timestamp":1791151312,"commits":[{"id":"f4b7e43","message":"plan for a setup by capability","group":"Docs","scope":null,"breaking":false},{"id":"8ddaab7","message":"a wizard says which models it lacks before it runs, and only refuses to start when every path needs one; templates can be filtered by capability, and those this install cannot run are greyed out","group":"Added","scope":null,"breaking":false},{"id":"2689c74","message":"Codex makes images on the ChatGPT plan, and runs each model class on its own model (Luna, Sol, Astra); image, video and voice stay empty without a gateway key instead of naming models nothing can reach","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.4","timestamp":1791144283,"commits":[{"id":"071e6ca","message":"the changelog's groups read NEW, FIXED, DOCS in every language, like the entries they stand before","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.3","timestamp":1791142528,"commits":[{"id":"32d1698","message":"the publish job fetches the package artifact by name; with one artifact left it no longer lands in its own folder","group":"Fixed","scope":"release","breaking":false}]},{"version":"v0.1.2","timestamp":1791140122,"commits":[{"id":"4bc37b9","message":"a marketplace entry opens in the local studio at localhost:24368 instead of the Mac app's engenty-wizards:// link","group":"Added","scope":null,"breaking":false},{"id":"e09e748","message":"the Mac app is no longer built or offered; the studio offers to install itself as a Chrome app in a banner, starting at login on a Mac is a LaunchAgent that runs the command, and the setup, README and docs point there","group":"Added","scope":null,"breaking":false},{"id":"ab10b49","message":"engenty wizards starts at login — the Mac app opens in the menu bar without its window (\\"Open at Login\\" in its menus), on Linux a systemd user service; the setup asks, \`engenty-wizards autostart on|off\` switches it, and the Mac app's server takes port 24368 too","group":"Added","scope":null,"breaking":false},{"id":"239e338","message":"the setup page installs a missing AI client in its own terminal, and both setups suggest the client whose app is on the Mac — its subscription is most likely already paid for","group":"Added","scope":null,"breaking":false},{"id":"b479df7","message":"an inline terminal's stream sends its last lines and its end before it closes; a page that opens it afterwards gets them all","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.1","timestamp":1791138130,"commits":[{"id":"21f70df","message":"the German tagline on the sign-in page follows the new one","group":"Docs","scope":null,"breaking":false},{"id":"765ae7c","message":"the studio says when a newer release is out and, on an install made by wizards.sh, updates it from the footer","group":"Added","scope":null,"breaking":false},{"id":"825da6c","message":"the tagline is \\"Make a wish. Get your wizard.\\" In the README, the npm package description and the banner of wizards.sh.","group":"Docs","scope":null,"breaking":false},{"id":"05e2e5c","message":"the local runtime listens on 24368, AGENT on a phone keypad; the Docker image stays on 8891","group":"Added","scope":null,"breaking":false},{"id":"71bb778","message":"Ctrl-C stops engenty-wizards again — the login shell that reads the person's variables runs in a session of its own and no longer keeps the terminal","group":"Fixed","scope":null,"breaking":false},{"id":"ee20646","message":"wizards.sh opens with the tall engenty — one eye; it wakes up, looks around, hops and blinks","group":"Added","scope":null,"breaking":false},{"id":"81d4f21","message":"the studio moves to /studio; the root of a host is free for a landing page","group":"Added","scope":null,"breaking":false},{"id":"f6058fd","message":"the marketplace is an app of its own; the runtime searches it live and keeps its starters and the starred entries for offline use","group":"Added","scope":null,"breaking":false},{"id":"e6fdeab","message":"engenty-wizards://new?starter=<id> opens a marketplace template in the desktop app","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.0","timestamp":1791100948,"commits":[{"id":"71cc075","message":"install with wizards.sh; the local install and how its pieces share it","group":"Docs","scope":null,"breaking":false},{"id":"6ae641d","message":"the desktop app is a window on the local install and brings no runtime along","group":"Added","scope":null,"breaking":false},{"id":"9c9dbb8","message":"an installer, wizards.sh, that every runtime serves","group":"Added","scope":null,"breaking":false},{"id":"34d0a1a","message":"an engenty-wizards command for a local install in ~/.engenty/wizards","group":"Added","scope":null,"breaking":false},{"id":"4ac6329","message":"the search skips filler words with umlauts too","group":"Fixed","scope":null,"breaking":false},{"id":"3bda9a6","message":"the gallery's footer stays without version, changelog and open-source links","group":"Fixed","scope":null,"breaking":false},{"id":"9e65725","message":"a changelog and open-source credits in the studio's footer; pnpm release cuts a release from the commits","group":"Added","scope":null,"breaking":false},{"id":"45d2906","message":"an entry's search terms are scored one by one, not as one long text","group":"Fixed","scope":null,"breaking":false},{"id":"648819c","message":"marketplace entries carry the words people ask for, so a search by words finds them","group":"Added","scope":null,"breaking":false},{"id":"0838373","message":"one project unless the limit says more; an account page; previews and layouts in the project settings","group":"Added","scope":null,"breaking":false},{"id":"8da2aaf","message":"a project holds base infos, logos, colours, assets, documents and facts for all its wizards","group":"Added","scope":null,"breaking":false},{"id":"8679ae2","message":"the gallery has the studio's footer line","group":"Fixed","scope":null,"breaking":false},{"id":"d5086f3","message":"the gallery's field is narrower","group":"Fixed","scope":null,"breaking":false},{"id":"4a82b26","message":"the gallery invites to start a wizard from a template","group":"Other","scope":null,"breaking":false},{"id":"07d2def","message":"a template's header is the dialog's own colour under a spotlight; in the light a tinted grey","group":"Fixed","scope":null,"breaking":false},{"id":"d10be9f","message":"a template opens with its flow as a diagram; the gallery's field is narrower, its chips centred","group":"Added","scope":null,"breaking":false},{"id":"fbee998","message":"the gallery says what it is, compact and from the left; its search is a two-line field to write into","group":"Added","scope":null,"breaking":false},{"id":"478f271","message":"the gallery opens with one question and the search field; quieter filter chips","group":"Added","scope":null,"breaking":false},{"id":"15d7f94","message":"the marketplace search asks the model for the signed-in tenant; a sentence without a model keeps only close finds","group":"Fixed","scope":null,"breaking":false},{"id":"c254357","message":"a marketplace of wizards to start from, with a gallery, admin, translation and search","group":"Added","scope":null,"breaking":false},{"id":"4d6e270","message":"AI media is marked in its file and labelled with the EU icons (AI Act, Art. 50)","group":"Added","scope":null,"breaking":false},{"id":"f86f070","message":"two writers of the same blob no longer share a temporary file","group":"Fixed","scope":null,"breaking":false},{"id":"c6a06cc","message":"plan for definition versions and importing older packages","group":"Docs","scope":null,"breaking":false},{"id":"a37e826","message":"wizard packages carry their own extension, .wizard","group":"Added","scope":null,"breaking":false},{"id":"e104574","message":"wizards export as a package (.wizard.zip) and import into a project","group":"Added","scope":null,"breaking":false},{"id":"b389539","message":"the editor pane's resize handle is a short, thick pill","group":"Added","scope":null,"breaking":false},{"id":"670c3ce","message":"chat composer takes files (+) and dictation","group":"Added","scope":null,"breaking":false},{"id":"766f6fd","message":"editor side pane resizable; Steps tab steps with ← / →, header and strip spacing fixed","group":"Added","scope":null,"breaking":false},{"id":"8205c88","message":"the arrow on a live wizard's card opens it in a new tab","group":"Added","scope":null,"breaking":false},{"id":"2696a50","message":"the AI clients page says it is an MCP server and sets a client up step by step","group":"Added","scope":null,"breaking":false},{"id":"6004a7d","message":"settings in sub-pages with a nav on the left (a dropdown on phones); MCP servers under Connectors","group":"Added","scope":null,"breaking":false},{"id":"49054fa","message":"settings button in the top bar; the user menu closes on Einstellungen","group":"Added","scope":null,"breaking":false},{"id":"65c9867","message":"at most 5 projects per tenant","group":"Added","scope":null,"breaking":false},{"id":"7ecca24","message":"the project switcher switches the wizard list","group":"Fixed","scope":null,"breaking":false},{"id":"c037604","message":"light / dark in the user menu, in place of the top bar's toggle","group":"Added","scope":null,"breaking":false},{"id":"ef464ab","message":"upload limits and sorting, pictures while a step works, faster photo steps, a feedback box on reviews","group":"Added","scope":null,"breaking":false},{"id":"1cbc02f","message":"starters for receipts, video ad, property film, window offer, menu plan and ten website helpers","group":"Added","scope":null,"breaking":false},{"id":"8069115","message":"photos reach an installed AI client, and a photo without text is described","group":"Fixed","scope":null,"breaking":false},{"id":"013f7df","message":"embed a wizard in a website, inline or behind a button that opens it in a window","group":"Added","scope":null,"breaking":false},{"id":"78c2a2a","message":"the editor at /edit/<id>, signed-out visitors of the start page go to SIGNED_OUT_URL","group":"Fixed","scope":null,"breaking":false},{"id":"deb4942","message":"wizards at /w/<token>, the app at the root of https://engenty.ai","group":"Added","scope":null,"breaking":false},{"id":"b811b4c","message":"serve the app under a path (https://engenty.ai/w)","group":"Added","scope":null,"breaking":false},{"id":"4821fb1","message":"the hosted addresses (engenty.ai) as defaults, no private repo names in the public sources","group":"Fixed","scope":null,"breaking":false},{"id":"ca2207e","message":"the drop engenty as app icon, tray icon and favicon","group":"Added","scope":null,"breaking":false},{"id":"90fcbce","message":"a README for people who install it, developer notes in docs/development.md","group":"Docs","scope":null,"breaking":false},{"id":"4b0c54a","message":"a built runtime links to its own port, the sandbox falls back to agentOS","group":"Fixed","scope":null,"breaking":false},{"id":"7071edf","message":"no links to the clients' pages, a placeholder dot in the footer","group":"Fixed","scope":"setup","breaking":false},{"id":"14171bf","message":"installed AI clients as the model of a local runtime, first-start setup as a wizard","group":"Added","scope":null,"breaking":false},{"id":"ca3f3a7","message":"align vertical head turn with pointer gaze","group":"Fixed","scope":"engenty","breaking":false},{"id":"e1f04ff","message":"add furry and jelly renderers with an interactive builder","group":"Added","scope":"engenty","breaking":false},{"id":"99207af","message":"whole credits in the top bar, a footer line with the account's places","group":"Added","scope":null,"breaking":false},{"id":"e498ab1","message":"decision steps — yes/no and choice output fields, branches on step outputs","group":"Added","scope":null,"breaking":false},{"id":"e83a433","message":"pnpm workspace with apps/ and packages/","group":"Changed","scope":null,"breaking":false},{"id":"281e3a3","message":"desktop app — Tauri shell with the runtime as a Node sidecar","group":"Added","scope":null,"breaking":false},{"id":"9296521","message":"a database per tenant, model classes, sign-in at the Manage-App, phone inputs","group":"Added","scope":null,"breaking":false},{"id":"63b1693","message":"engenty's built-in connectors — Gmail, Drive, Calendar, Contacts, Outlook, OneDrive, Slack, GitHub, HubSpot, S3","group":"Added","scope":null,"breaking":false},{"id":"cd431c9","message":"connectors from the integrations registry, asked-first changes in connected accounts","group":"Added","scope":null,"breaking":false},{"id":"8dbe30d","message":"harden browser and file downloads, step navigation in the inspector, store and mailbox docs","group":"Added","scope":null,"breaking":false},{"id":"54370e8","message":"light/dark mode with engenty-coloured dark pages, jelly and fur coats, quiet focus rings","group":"Added","scope":null,"breaking":false},{"id":"371b033","message":"lists and connections kept between runs, mail and browser tools, camera and ask panel","group":"Added","scope":null,"breaking":false},{"id":"07df228","message":"setup per AI client and a self-served plugin with /wizard","group":"Added","scope":null,"breaking":false},{"id":"de27ae8","message":"interactive widgets with a workspace per wizard, shareable results","group":"Added","scope":null,"breaking":false},{"id":"12854e1","message":"live studio — MCP and other edits show up without a reload","group":"Added","scope":null,"breaking":false},{"id":"7f72420","message":"OAuth sign-in for MCP clients, connected apps in settings","group":"Added","scope":null,"breaking":false},{"id":"3014699","message":"MCP endpoint for authoring wizards with personal API keys","group":"Added","scope":null,"breaking":false},{"id":"985e612","message":"engenty wizards — prompt-built AI wizards with shareable links","group":"Added","scope":null,"breaking":false}]}]`);export{e as default};
|