@edspencer/paddock 0.56.0 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/server/dist/cli/import-chats.js +6 -1
- package/packages/server/dist/cli/paddock.d.ts +29 -1
- package/packages/server/dist/cli/paddock.js +136 -44
- package/packages/server/dist/config.d.ts +26 -0
- package/packages/server/dist/config.js +32 -0
- package/packages/server/dist/environment-prompt.d.ts +52 -0
- package/packages/server/dist/environment-prompt.js +61 -0
- package/packages/server/dist/herdctl.d.ts +51 -0
- package/packages/server/dist/herdctl.js +61 -0
- package/packages/server/dist/instance-config.d.ts +13 -5
- package/packages/server/dist/instance-config.js +40 -0
- package/packages/server/package.json +1 -1
- package/packages/web/dist/assets/InstanceConfigPage-BKE6j_Wy.js +2 -0
- package/packages/web/dist/assets/{MarkdownRenderer-CJZFLj_8.js → MarkdownRenderer-B7_FErIN.js} +1 -1
- package/packages/web/dist/assets/{ProjectRedirect-BHwVbbqB.js → ProjectRedirect-DOaB53YM.js} +1 -1
- package/packages/web/dist/assets/{ProjectView-BOvuAITg.js → ProjectView-Dz_QUyPG.js} +3 -3
- package/packages/web/dist/assets/{ProjectsGrid-BCojZOGY.js → ProjectsGrid-CjfDQ37q.js} +1 -1
- package/packages/web/dist/assets/{arc-BVyxvnkl.js → arc-BxAGgBjd.js} +1 -1
- package/packages/web/dist/assets/{architectureDiagram-3BPJPVTR-Cd9Puqg1.js → architectureDiagram-3BPJPVTR-CBz2e-c3.js} +1 -1
- package/packages/web/dist/assets/{blockDiagram-GPEHLZMM-B_AQt_Rx.js → blockDiagram-GPEHLZMM-ZqClBxB7.js} +1 -1
- package/packages/web/dist/assets/{c4Diagram-AAUBKEIU-7e0TQtXB.js → c4Diagram-AAUBKEIU-CvFOBN1E.js} +1 -1
- package/packages/web/dist/assets/channel-BHzPWerJ.js +2 -0
- package/packages/web/dist/assets/{chunk-2J33WTMH-Dz4WZmUZ.js → chunk-2J33WTMH-C44u7-Xg.js} +1 -1
- package/packages/web/dist/assets/{chunk-4BX2VUAB-DVWYldo6.js → chunk-4BX2VUAB-DXG9UM3Z.js} +1 -1
- package/packages/web/dist/assets/{chunk-55IACEB6-BIMrizQd.js → chunk-55IACEB6-BLkJFttb.js} +1 -1
- package/packages/web/dist/assets/{chunk-727SXJPM-CL2q9fF1.js → chunk-727SXJPM-DZidMKHZ.js} +1 -1
- package/packages/web/dist/assets/{chunk-AQP2D5EJ-BSq3HlQ9.js → chunk-AQP2D5EJ-DVowfDYg.js} +1 -1
- package/packages/web/dist/assets/{chunk-FMBD7UC4-Bgt64pLE.js → chunk-FMBD7UC4-zeHzmwLI.js} +1 -1
- package/packages/web/dist/assets/{chunk-ND2GUHAM-C8Pr2A38.js → chunk-ND2GUHAM-Pcd02Wpz.js} +1 -1
- package/packages/web/dist/assets/{chunk-QZHKN3VN-BAOqh-MN.js → chunk-QZHKN3VN-yxlVeu8W.js} +1 -1
- package/packages/web/dist/assets/classDiagram-4FO5ZUOK-hNchnAu0.js +2 -0
- package/packages/web/dist/assets/classDiagram-v2-Q7XG4LA2-hNchnAu0.js +2 -0
- package/packages/web/dist/assets/{core-lJeGACQg.js → core-CSvc61jo.js} +1 -1
- package/packages/web/dist/assets/{cose-bilkent-S5V4N54A-BF4tameA.js → cose-bilkent-S5V4N54A-6MJqrbdr.js} +1 -1
- package/packages/web/dist/assets/{dagre-BM42HDAG-DdsLM6ql.js → dagre-BM42HDAG-B3pDB8_y.js} +1 -1
- package/packages/web/dist/assets/{diagram-2AECGRRQ-BQ78S_RM.js → diagram-2AECGRRQ-BJA5EERJ.js} +1 -1
- package/packages/web/dist/assets/{diagram-5GNKFQAL-CAKE6nHE.js → diagram-5GNKFQAL-CcyfxhVS.js} +1 -1
- package/packages/web/dist/assets/{diagram-KO2AKTUF-fEvHRXgr.js → diagram-KO2AKTUF-CPNyNU1j.js} +1 -1
- package/packages/web/dist/assets/{diagram-LMA3HP47-CtWsgeSm.js → diagram-LMA3HP47-Q4klJqX8.js} +1 -1
- package/packages/web/dist/assets/{diagram-OG6HWLK6-Buog8k7_.js → diagram-OG6HWLK6-D0ZBTRoA.js} +1 -1
- package/packages/web/dist/assets/{erDiagram-TEJ5UH35-CWvVVPZS.js → erDiagram-TEJ5UH35-DQrCT17u.js} +1 -1
- package/packages/web/dist/assets/{flowDiagram-I6XJVG4X-DsCGXtp4.js → flowDiagram-I6XJVG4X-CK7nM7wz.js} +1 -1
- package/packages/web/dist/assets/{format-DamJQ9LO.js → format-GJRFyZIp.js} +1 -1
- package/packages/web/dist/assets/{ganttDiagram-6RSMTGT7-CsdwIvvC.js → ganttDiagram-6RSMTGT7-CFsNGWGG.js} +1 -1
- package/packages/web/dist/assets/{gitGraphDiagram-PVQCEYII-hZvrX1sD.js → gitGraphDiagram-PVQCEYII-xP0bbv60.js} +1 -1
- package/packages/web/dist/assets/{index-CGbZdrm8.js → index-CDiCRIso.js} +2 -2
- package/packages/web/dist/assets/index-CvGiQddO.css +1 -0
- package/packages/web/dist/assets/{infoDiagram-5YYISTIA-nE_Vtz_l.js → infoDiagram-5YYISTIA-BaKZDvMw.js} +1 -1
- package/packages/web/dist/assets/{ishikawaDiagram-YF4QCWOH-2Nlqs0oH.js → ishikawaDiagram-YF4QCWOH-Dr0LK4iy.js} +1 -1
- package/packages/web/dist/assets/{journeyDiagram-JHISSGLW-mjU1fMc4.js → journeyDiagram-JHISSGLW-CxusdThR.js} +1 -1
- package/packages/web/dist/assets/{kanban-definition-UN3LZRKU-C_9xNaa3.js → kanban-definition-UN3LZRKU-CJYlFeaB.js} +1 -1
- package/packages/web/dist/assets/{linear-BxKd91ho.js → linear-D0XMlvYu.js} +1 -1
- package/packages/web/dist/assets/{mermaid.core-C-CuhD8I.js → mermaid.core-CcPpo_y5.js} +4 -4
- package/packages/web/dist/assets/{mindmap-definition-RKZ34NQL-Bs6yfcZv.js → mindmap-definition-RKZ34NQL-w064Pb6X.js} +1 -1
- package/packages/web/dist/assets/{pieDiagram-4H26LBE5-DNdqX7O5.js → pieDiagram-4H26LBE5-D_qwlox1.js} +1 -1
- package/packages/web/dist/assets/{quadrantDiagram-W4KKPZXB-ZMJl9OdZ.js → quadrantDiagram-W4KKPZXB-BuMUhsEZ.js} +1 -1
- package/packages/web/dist/assets/{requirementDiagram-4Y6WPE33-RmxMdm2q.js → requirementDiagram-4Y6WPE33-Bp1BqfXY.js} +1 -1
- package/packages/web/dist/assets/{sankeyDiagram-5OEKKPKP-OAAhWcfK.js → sankeyDiagram-5OEKKPKP-BQR4HfjD.js} +1 -1
- package/packages/web/dist/assets/{sequenceDiagram-3UESZ5HK-BWF7rCyN.js → sequenceDiagram-3UESZ5HK-DIAHV11i.js} +1 -1
- package/packages/web/dist/assets/{stateDiagram-AJRCARHV-M3b_zqqo.js → stateDiagram-AJRCARHV-BHMJl8rE.js} +1 -1
- package/packages/web/dist/assets/stateDiagram-v2-BHNVJYJU-CScn8fuQ.js +2 -0
- package/packages/web/dist/assets/{timeline-definition-PNZ67QCA-BpOCh63N.js → timeline-definition-PNZ67QCA-CB5sHevP.js} +1 -1
- package/packages/web/dist/assets/{vennDiagram-CIIHVFJN-D_iPH45Q.js → vennDiagram-CIIHVFJN-BeS1AXva.js} +1 -1
- package/packages/web/dist/assets/{wardley-L42UT6IY-DVD9I2Om.js → wardley-L42UT6IY-CJ9C5W6N.js} +1 -1
- package/packages/web/dist/assets/{wardleyDiagram-YWT4CUSO-Bn1IKwjn.js → wardleyDiagram-YWT4CUSO-Bf75XvJ_.js} +1 -1
- package/packages/web/dist/assets/{xychartDiagram-2RQKCTM6-DwtI0bkR.js → xychartDiagram-2RQKCTM6-0Qiya8rY.js} +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/sw.js +1 -1
- package/packages/web/dist/assets/InstanceConfigPage-4cQGTj9Y.js +0 -2
- package/packages/web/dist/assets/channel-C_1aISNn.js +0 -2
- package/packages/web/dist/assets/classDiagram-4FO5ZUOK-B8JE7cHJ.js +0 -2
- package/packages/web/dist/assets/classDiagram-v2-Q7XG4LA2-B8JE7cHJ.js +0 -2
- package/packages/web/dist/assets/index-DJDQ210-.css +0 -1
- package/packages/web/dist/assets/stateDiagram-v2-BHNVJYJU-CI7saFDa.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectsGrid-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectsGrid-CjfDQ37q.js","assets/format-GJRFyZIp.js","assets/ProjectView-Dz_QUyPG.js","assets/queued-LamEU0GH.js","assets/lastTab-CU1zsF0j.js","assets/ProjectRedirect-DOaB53YM.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function $c(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const l in r)if(l!=="default"&&!(l in e)){const o=Object.getOwnPropertyDescriptor(r,l);o&&Object.defineProperty(e,l,o.get?o:{enumerable:!0,get:()=>r[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();const Jh="modulepreload",Yh=function(e){return"/"+e},ou={},Sl=function(t,n,r){let l=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));l=Promise.allSettled(n.map(s=>{if(s=Yh(s),s in ou)return;ou[s]=!0;const u=s.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${f}`))return;const c=document.createElement("link");if(c.rel=u?"stylesheet":Jh,u||(c.as="script"),c.crossOrigin="",c.href=s,a&&c.setAttribute("nonce",a),document.head.appendChild(c),u)return new Promise((p,x)=>{c.addEventListener("load",p),c.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${s}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return l.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})};var p0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ac(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Bc={exports:{}},Vo={},Wc={exports:{}},X={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react.production.min.js
|
|
@@ -67,5 +67,5 @@ Error generating stack: `+o.message+`
|
|
|
67
67
|
* LICENSE.md file in the root directory of this source tree.
|
|
68
68
|
*
|
|
69
69
|
* @license MIT
|
|
70
|
-
*/function Er(){return Er=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Er.apply(this,arguments)}function gh(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o<r.length;o++)l=r[o],!(t.indexOf(l)>=0)&&(n[l]=e[l]);return n}function Bg(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Wg(e,t){return e.button===0&&(!t||t==="_self")&&!Bg(e)}const Vg=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],Hg=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],Qg="6";try{window.__reactRouterVersion=Qg}catch{}function Kg(e,t){return eg({basename:void 0,future:Er({},void 0,{v7_prependBasename:!0}),history:Cv({window:void 0}),hydrationData:bg(),routes:e,mapRouteProperties:Ag,unstable_dataStrategy:void 0,unstable_patchRoutesOnNavigation:void 0,window:void 0}).initialize()}function bg(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Er({},t,{errors:Jg(t.errors)})),t}function Jg(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,l]of t)if(l&&l.__type==="RouteErrorResponse")n[r]=new Bo(l.status,l.statusText,l.data,l.internal===!0);else if(l&&l.__type==="Error"){if(l.__subType){let o=window[l.__subType];if(typeof o=="function")try{let i=new o(l.message);i.stack="",n[r]=i}catch{}}if(n[r]==null){let o=new Error(l.message);o.stack="",n[r]=o}}else n[r]=l;return n}const yh=C.createContext({isTransitioning:!1}),Yg=C.createContext(new Map),Gg="startTransition",Tc=dp[Gg],Xg="flushSync",Lc=Ev[Xg];function Zg(e){Tc?Tc(e):e()}function Ar(e){Lc?Lc(e):e()}class qg{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function ey(e){let{fallbackElement:t,router:n,future:r}=e,[l,o]=C.useState(n.state),[i,a]=C.useState(),[s,u]=C.useState({isTransitioning:!1}),[f,c]=C.useState(),[p,x]=C.useState(),[E,k]=C.useState(),T=C.useRef(new Map),{v7_startTransition:m}=r||{},d=C.useCallback(y=>{m?Zg(y):y()},[m]),g=C.useCallback((y,F)=>{let{deletedFetchers:O,unstable_flushSync:Q,unstable_viewTransitionOpts:te}=F;O.forEach(se=>T.current.delete(se)),y.fetchers.forEach((se,et)=>{se.data!==void 0&&T.current.set(et,se.data)});let pe=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!te||pe){Q?Ar(()=>o(y)):d(()=>o(y));return}if(Q){Ar(()=>{p&&(f&&f.resolve(),p.skipTransition()),u({isTransitioning:!0,flushSync:!0,currentLocation:te.currentLocation,nextLocation:te.nextLocation})});let se=n.window.document.startViewTransition(()=>{Ar(()=>o(y))});se.finished.finally(()=>{Ar(()=>{c(void 0),x(void 0),a(void 0),u({isTransitioning:!1})})}),Ar(()=>x(se));return}p?(f&&f.resolve(),p.skipTransition(),k({state:y,currentLocation:te.currentLocation,nextLocation:te.nextLocation})):(a(y),u({isTransitioning:!0,flushSync:!1,currentLocation:te.currentLocation,nextLocation:te.nextLocation}))},[n.window,p,f,T,d]);C.useLayoutEffect(()=>n.subscribe(g),[n,g]),C.useEffect(()=>{s.isTransitioning&&!s.flushSync&&c(new qg)},[s]),C.useEffect(()=>{if(f&&i&&n.window){let y=i,F=f.promise,O=n.window.document.startViewTransition(async()=>{d(()=>o(y)),await F});O.finished.finally(()=>{c(void 0),x(void 0),a(void 0),u({isTransitioning:!1})}),x(O)}},[d,i,f,n.window]),C.useEffect(()=>{f&&i&&l.location.key===i.location.key&&f.resolve()},[f,p,l.location,i]),C.useEffect(()=>{!s.isTransitioning&&E&&(a(E.state),u({isTransitioning:!0,flushSync:!1,currentLocation:E.currentLocation,nextLocation:E.nextLocation}),k(void 0))},[s.isTransitioning,E]),C.useEffect(()=>{},[]);let S=C.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:y=>n.navigate(y),push:(y,F,O)=>n.navigate(y,{state:F,preventScrollReset:O==null?void 0:O.preventScrollReset}),replace:(y,F,O)=>n.navigate(y,{replace:!0,state:F,preventScrollReset:O==null?void 0:O.preventScrollReset})}),[n]),P=n.basename||"/",_=C.useMemo(()=>({router:n,navigator:S,static:!1,basename:P}),[n,S,P]),L=C.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return C.createElement(C.Fragment,null,C.createElement(Nl.Provider,{value:_},C.createElement(Fs.Provider,{value:l},C.createElement(Yg.Provider,{value:T.current},C.createElement(yh.Provider,{value:s},C.createElement($g,{basename:P,location:l.location,navigationType:l.historyAction,navigator:S,future:L},l.initialized||n.future.v7_partialHydration?C.createElement(ty,{routes:n.routes,future:n.future,state:l}):t))))),null)}const ty=C.memo(ny);function ny(e){let{routes:t,future:n,state:r}=e;return Ng(t,void 0,r,n)}const ry=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ly=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,oy=C.forwardRef(function(t,n){let{onClick:r,relative:l,reloadDocument:o,replace:i,state:a,target:s,to:u,preventScrollReset:f,unstable_viewTransition:c}=t,p=gh(t,Vg),{basename:x}=C.useContext(bt),E,k=!1;if(typeof u=="string"&&ly.test(u)&&(E=u,ry))try{let g=new URL(window.location.href),S=u.startsWith("//")?new URL(g.protocol+u):new URL(u),P=Qt(S.pathname,x);S.origin===g.origin&&P!=null?u=P+S.search+S.hash:k=!0}catch{}let T=Eg(u,{relative:l}),m=ay(u,{replace:i,state:a,target:s,preventScrollReset:f,relative:l,unstable_viewTransition:c});function d(g){r&&r(g),g.defaultPrevented||m(g)}return C.createElement("a",Er({},p,{href:E||T,onClick:k||o?r:d,ref:n,target:s}))}),bn=C.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:l=!1,className:o="",end:i=!1,style:a,to:s,unstable_viewTransition:u,children:f}=t,c=gh(t,Hg),p=ui(s,{relative:c.relative}),x=Wn(),E=C.useContext(Fs),{navigator:k,basename:T}=C.useContext(bt),m=E!=null&&sy(p)&&u===!0,d=k.encodeLocation?k.encodeLocation(p).pathname:p.pathname,g=x.pathname,S=E&&E.navigation&&E.navigation.location?E.navigation.location.pathname:null;l||(g=g.toLowerCase(),S=S?S.toLowerCase():null,d=d.toLowerCase()),S&&T&&(S=Qt(S,T)||S);const P=d!=="/"&&d.endsWith("/")?d.length-1:d.length;let _=g===d||!i&&g.startsWith(d)&&g.charAt(P)==="/",L=S!=null&&(S===d||!i&&S.startsWith(d)&&S.charAt(d.length)==="/"),y={isActive:_,isPending:L,isTransitioning:m},F=_?r:void 0,O;typeof o=="function"?O=o(y):O=[o,_?"active":null,L?"pending":null,m?"transitioning":null].filter(Boolean).join(" ");let Q=typeof a=="function"?a(y):a;return C.createElement(oy,Er({},c,{"aria-current":F,className:O,ref:n,style:Q,to:s,unstable_viewTransition:u}),typeof f=="function"?f(y):f)});var Ua;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Ua||(Ua={}));var Mc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Mc||(Mc={}));function iy(e){let t=C.useContext(Nl);return t||Y(!1),t}function ay(e,t){let{target:n,replace:r,state:l,preventScrollReset:o,relative:i,unstable_viewTransition:a}=t===void 0?{}:t,s=si(),u=Wn(),f=ui(e,{relative:i});return C.useCallback(c=>{if(Wg(c,n)){c.preventDefault();let p=r!==void 0?r:$n(u)===$n(f);s(e,{replace:p,state:l,preventScrollReset:o,relative:i,unstable_viewTransition:a})}},[u,s,f,r,l,n,e,o,i,a])}function sy(e,t){t===void 0&&(t={});let n=C.useContext(yh);n==null&&Y(!1);let{basename:r}=iy(Ua.useViewTransitionState),l=ui(e,{relative:t.relative});if(!n.isTransitioning)return!1;let o=Qt(n.currentLocation.pathname,r)||n.currentLocation.pathname,i=Qt(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Ao(l.pathname,i)!=null||Ao(l.pathname,o)!=null}const wh="";function As(e){return e===wh}function b(e){return As(e)?"/api/root":`/api/projects/${encodeURIComponent(e)}`}function g0(e){return As(e)?"":`/projects/${e}`}function y0(e){return e===""?"/":`${e}/home`}function uy(){return"/projects"}function w0(e,t){const n=e.startsWith(t)?e.slice(t.length):e;return n.startsWith("/files")?"files":n.startsWith("/changes")?"changes":n.startsWith("/history")?"history":n.startsWith("/settings")?"settings":n.startsWith("/triggers")||n.startsWith("/hooks")?"triggers":n.startsWith("/home")?"home":n.startsWith("/chat")?"chat":t===""?"home":"chat"}function x0(e,t){const n=`${t}/files`;if(!e.startsWith(n))return"";const r=e.slice(n.length).replace(/^\//,"");return r?r.split("/").filter(Boolean).map(l=>{try{return decodeURIComponent(l)}catch{return l}}).join("/"):""}function S0(e){if(!e)return"#";const t=e.trim().replace(/\.git$/i,"");if(/^https?:\/\//i.test(t))return t;const n=/^git@([^:]+):(.+)$/.exec(t);if(n)return`https://${n[1]}/${n[2]}`;const r=/^ssh:\/\/git@([^/]+)\/(.+)$/i.exec(t);return r?`https://${r[1]}/${r[2]}`:"#"}const ar="";async function H(e,t){const n=await fetch(`${ar}${e}`,{headers:{"content-type":"application/json",...(t==null?void 0:t.headers)??{}},...t});if(!n.ok){let r=n.statusText;try{const l=await n.json();l.error&&(r=l.error)}catch{}throw new xl(r,n.status)}return await n.json()}async function cy(e,t){const n=await fetch(`${ar}${e}`,t);if(!n.ok){let r=n.statusText;try{const l=JSON.parse(await n.text());l.error&&(r=l.error)}catch{}throw new xl(r,n.status)}return n.text()}class xl extends Error{constructor(t,n){super(t),this.status=n,this.name="ApiError"}}const Bs={async me(){return H("/api/me")},async markChatSeen(e,t,n){const r=`${b(e)}/chats/${encodeURIComponent(t)}/seen`;await H(r,{method:"POST",body:JSON.stringify(n!==void 0?{when:n}:{})})},async markChatUnread(e,t,n){const r=`${b(e)}/chats/${encodeURIComponent(t)}/unread`;await H(r,{method:"POST",body:JSON.stringify({unread:n})})},async projectRuns(e,t){const n=t!==void 0?`?limit=${encodeURIComponent(t)}`:"";return H(`${b(e)}/runs${n}`)},async markRunsSeen(e,t){await H(`${b(e)}/runs/seen`,{method:"POST",body:JSON.stringify(t!==void 0?{when:t}:{})})},async getModels(){return H("/api/models")},async getInstanceConfig(){return H("/api/instance-config")},async updateInstanceConfig(e){return H("/api/instance-config",{method:"PUT",body:JSON.stringify({patch:e})})},async uploadAttachments(e,t,n){const r=new FormData;for(const o of n)r.append("files",o,o.name);const l=await fetch(`${ar}${b(e)}/chats/${encodeURIComponent(t)}/upload`,{method:"POST",body:r});if(!l.ok){let o=l.statusText;try{const i=await l.json();i.error&&(o=i.error)}catch{}throw new xl(o,l.status)}return await l.json()},async projectCommands(e){const{commands:t}=await H(`${b(e)}/commands`);return t},async listProjects(){const{projects:e,root:t}=await H("/api/projects");return{projects:e,root:t??null}},async getProjectDetail(e){return H(`${b(e)}`)},async attentionChats(e){const t=await H(`${b(e)}/chats/attention`);return{running:t.running??[],unread:t.unread??[]}},async createProject(e){const{project:t}=await H("/api/projects",{method:"POST",body:JSON.stringify(e)});return t},async updateProject(e,t){const{project:n}=await H(`${b(e)}`,{method:"PATCH",body:JSON.stringify(t)});return n},async promoteProject(e,t){const{project:n}=await H(`${b(e)}/promote`,{method:"POST",body:JSON.stringify({repo:t})});return n},async deleteProject(e){await H(`${b(e)}`,{method:"DELETE"})},async deleteProjectChat(e,t){await H(`${b(e)}/chats/${encodeURIComponent(t)}`,{method:"DELETE"})},async renameProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify({name:n})})},async archiveProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}/archive`,{method:"POST",body:JSON.stringify({archived:n})})},async starProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}/star`,{method:"POST",body:JSON.stringify({starred:n})})},async archiveProjectChats(e,t,n){await H(`${b(e)}/chats/batch/archive`,{method:"POST",body:JSON.stringify({sessionIds:t,archived:n})})},async markChatsUnread(e,t,n){await H(`${b(e)}/chats/batch/unread`,{method:"POST",body:JSON.stringify({sessionIds:t,unread:n})})},async deleteProjectChats(e,t){const n=await H(`${b(e)}/chats/batch/delete`,{method:"POST",body:JSON.stringify({sessionIds:t})});return{removed:n.removed??[],failed:n.failed??[]}},async detachProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}/detach`,{method:"POST",body:JSON.stringify({detached:n})})},async promoteChat(e,t,n){return H(`${b(e)}/chats/${encodeURIComponent(t)}/promote`,{method:"POST",body:JSON.stringify(n)})},async forkChat(e,t,n,r){const{sessionId:l}=await H(`${b(e)}/chats/${encodeURIComponent(t)}/fork`,{method:"POST",body:JSON.stringify({name:n,fromUuid:r})});return l},async revertChat(e,t,n){const{removed:r}=await H(`${b(e)}/chats/${encodeURIComponent(t)}/revert`,{method:"POST",body:JSON.stringify({uuid:n})});return r},async listProjectDir(e,t=""){const n=t?`?path=${encodeURIComponent(t)}`:"";return H(`${b(e)}/files${n}`)},async listProjectFiles(e){const{entries:t}=await this.listProjectDir(e);return t.filter(n=>n.kind==="file").map(n=>n.name)},async getProjectFile(e,t){return H(`${b(e)}/files/${encodeURIComponent(t)}`)},projectFileRawUrl(e,t){return`${ar}${b(e)}/files/${encodeURIComponent(t)}?raw=1`},chatFileRawUrl(e){return`${ar}/api/chat-files/${encodeURIComponent(e)}`},async pinFile(e,t){const{project:n}=await H(`${b(e)}/pins`,{method:"PUT",body:JSON.stringify({file:t})});return n},async unpinFile(e,t){const{project:n}=await H(`${b(e)}/pins/${encodeURIComponent(t)}`,{method:"DELETE"});return n},async listProjectChats(e){const{chats:t}=await H(`${b(e)}/chats`);return t},async getAdoptableChats(e){return H(`${b(e)}/adoptable-chats`)},async adoptChats(e,t){return H(`${b(e)}/adopt-chats`,{method:"POST",body:JSON.stringify(t??{})})},async chatUsage(e,t){const n=t?`?scope=${t}`:"",{usage:r}=await H(`${b(e)}/chats/usage${n}`);return r},async projectChatMessages(e,t){const{messages:n}=await H(`${b(e)}/chats/${encodeURIComponent(t)}/messages`);return n},async subagentMessages(e,t,n){const r=`${b(e)}/chats/${encodeURIComponent(t)}`,{messages:l}=await H(`${r}/subagents/${encodeURIComponent(n)}/messages`);return l},async chatContext(e,t){const n=`${b(e)}/chats/${encodeURIComponent(t)}/context`,{usage:r}=await H(n);return r},async listTriggers(e){return H(`${b(e)}/triggers`)},async putTrigger(e,t,n){const{trigger:r}=await H(`${b(e)}/triggers/${encodeURIComponent(t)}`,{method:"PUT",body:JSON.stringify(n)});return r},async deleteTrigger(e,t){await H(`${b(e)}/triggers/${encodeURIComponent(t)}`,{method:"DELETE"})},async triggerRuntime(e){return H(`${b(e)}/triggers/runtime`)},async runTrigger(e,t){const{sessionId:n}=await H(`${b(e)}/triggers/${encodeURIComponent(t)}/run`,{method:"POST",body:"{}"});return n},async gitInfo(){return H("/api/git")},async gitStatus(e){return H(`${b(e)}/git/status`)},async gitDiff(e,t){const n=t?`?file=${encodeURIComponent(t)}`:"";return cy(`${b(e)}/git/diff${n}`)},async gitCommit(e,t,n){return H(`${b(e)}/git/commit`,{method:"POST",body:JSON.stringify(n?{message:t,files:n}:{message:t})})},async gitPush(){return H("/api/git/push",{method:"POST"})},async githubConnect(){return H("/api/git/github/connect",{method:"POST"})},async githubPoll(e){return H("/api/git/github/poll",{method:"POST",body:JSON.stringify({deviceCode:e})})},async githubDisconnect(){await H("/api/git/github/disconnect",{method:"POST"})},async transcriptionStatus(){return H("/api/transcription")},async transcribe(e,t="dictation.webm",n){const r=new FormData;r.append("file",e,t);const l=await fetch(`${ar}/api/transcribe`,{method:"POST",body:r,signal:n});if(!l.ok){let i=l.statusText;try{const a=await l.json();a.error&&(i=a.error)}catch{}throw new xl(i,l.status)}const{text:o}=await l.json();return o}},xh=C.createContext(null);function dy({children:e}){const[t,n]=C.useState([]),[r,l]=C.useState(null),[o,i]=C.useState(!0),[a,s]=C.useState(null),u=C.useCallback(async()=>{i(!0),s(null);try{const{projects:x,root:E}=await Bs.listProjects();n(x),E&&l(E)}catch(x){s(x instanceof Error?x.message:"Failed to load projects")}finally{i(!1)}},[]),f=C.useCallback(x=>{if(As(x.slug)){l(x);return}n(E=>[x,...E.filter(k=>k.slug!==x.slug)])},[]),c=C.useCallback(x=>{n(E=>E.filter(k=>k.slug!==x))},[]);C.useEffect(()=>{u()},[u]);const p=C.useMemo(()=>({projects:t,rootWorkspace:r,loading:o,error:a,refresh:u,upsert:f,remove:c}),[t,r,o,a,u,f,c]);return h.jsx(xh.Provider,{value:p,children:e})}function fy(){const e=C.useContext(xh);if(!e)throw new Error("useProjects must be used within ProjectsProvider");return e}const hy="paddock:theme";function py(){return typeof document<"u"&&document.documentElement.classList.contains("dark")}function my(){const[e,t]=C.useState(py),n=C.useCallback(()=>{t(r=>{const l=!r;document.documentElement.classList.toggle("dark",l);try{localStorage.setItem(hy,l?"dark":"light")}catch{}return l})},[]);return{dark:e,toggle:n}}const vy={name:"Paddock",logo:"🐎",accent:"#c2603c"},gy={enabled:!1,path:"/open-api"};function yy(){const e=globalThis.__PADDOCK_CONFIG__;return{...vy,...(e==null?void 0:e.brand)??{}}}function wy(){const e=globalThis.__PADDOCK_CONFIG__;return{...gy,...(e==null?void 0:e.openapi)??{}}}function xy(e){return/^(https?:\/\/|\/)/i.test(e.trim())}const Ws=[{slug:"homelab",label:"Homelab",blurb:"Servers, networking, self-hosted services."},{slug:"house",label:"House",blurb:"Physical home systems — water, climate, power, garden."},{slug:"side-projects",label:"Side Projects",blurb:"Apps and ideas of your own."}],Dc="",Sh=new Map(Ws.map(e=>[e.slug,e]));function Sy(e){if(!e)return"Unsorted";const t=Sh.get(e);return t?t.label:e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function k0(e){var t;return(t=Sh.get(e))==null?void 0:t.blurb}function ky(e){const t=new Set(e),n=[];for(const l of Ws)t.has(l.slug)&&(n.push(l.slug),t.delete(l.slug));const r=t.delete(Dc);return n.push(...[...t].sort()),r&&n.push(Dc),n}const kh=25e3,Eh=1e4,Ey=kh+Eh+5e3,Cy=500,jy=1e4;class Py{constructor(){this.ws=null,this.outbox=[],this.subs=new Map,this.pingTimer=null,this.pongTimer=null,this.awaitingPong=!1,this.lastPongAt=0,this.reconnectTimer=null,this.reconnectAttempts=0,this.manualClose=!1,this.stateListeners=new Set,this._state="closed",this.activeSessions=new Map,this.activeListeners=new Set,this.activeInfoListeners=new Set,this.knownSessions=new Set;const n=`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}`;if(this.url=`${n.replace(/^http/,"ws")}/ws`,typeof window<"u"){const r=()=>this.ensureLive();window.addEventListener("online",r),window.addEventListener("focus",r),typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&this.ensureLive()})}}get state(){return this._state}onState(t){return this.stateListeners.add(t),t(this._state),()=>this.stateListeners.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateListeners)n(t)}}onActiveSessions(t){return this.activeListeners.add(t),t(new Set(this.activeSessions.keys())),this.connect(),()=>this.activeListeners.delete(t)}onActiveInfos(t){return this.activeInfoListeners.add(t),t(new Map(this.activeSessions)),this.connect(),()=>this.activeInfoListeners.delete(t)}setActive(t,n,r){const l=this.activeSessions.has(t);if(n?this.activeSessions.set(t,r):this.activeSessions.delete(t),this.activeSessions.has(t)!==l){const o=new Set(this.activeSessions.keys());for(const a of this.activeListeners)a(o);const i=new Map(this.activeSessions);for(const a of this.activeInfoListeners)a(i)}}subscribe(t,n,r){const l=Symbol("chat-sub"),o={projectSlug:t,sessionId:n,handlers:r,lastSeq:-1,turnActive:!1};return this.subs.set(l,o),this.connect(),n&&this.attachSession(o,!1),{setSessionId:i=>{const a=this.subs.get(l);a&&(a.sessionId=i,i&&this.attachSession(a,!1))},unsubscribe:()=>{this.subs.delete(l)}}}attachSession(t,n){t.sessionId&&(this.knownSessions.add(t.sessionId),this.transmit(JSON.stringify({type:"chat:subscribe",payload:{projectSlug:t.projectSlug,sessionId:t.sessionId,wantReplay:n,lastSeq:t.lastSeq}})))}send(t,n,r,l){const o={projectSlug:t,sessionId:r,message:n};l!=null&&l.preloadContext&&(o.preloadContext=!0),l!=null&&l.model&&(o.model=l.model),l!=null&&l.attachments&&l.attachments.length>0&&(o.attachments=l.attachments),this.markTurnStart(t,r),this.transmit(JSON.stringify({type:"chat:send",payload:o}))}setQueued(t,n,r,l){const o={projectSlug:t,sessionId:n,text:r,ts:l};this.transmit(JSON.stringify({type:"chat:set_queue",payload:o}))}markTurnStart(t,n){for(const r of this.subs.values())r.projectSlug===t&&r.sessionId===n&&(r.lastSeq=-1,r.turnActive=!0)}sendCommand(t,n,r){this.markTurnStart(t,r),this.transmit(JSON.stringify({type:"chat:command",payload:{projectSlug:t,sessionId:r,command:n}}))}cancel(t){this.transmit(JSON.stringify({type:"chat:cancel",payload:{jobId:t}}))}continueChat(t,n){this.markTurnStart(t,n),this.transmit(JSON.stringify({type:"chat:continue",payload:{projectSlug:t,sessionId:n}}))}transmit(t){this.isLive()?this.ws.send(t):(this.outbox.push(t),this.ensureLive())}isLive(){var t;return((t=this.ws)==null?void 0:t.readyState)!==WebSocket.OPEN?!1:Date.now()-this.lastPongAt<Ey}wantsSocket(){return this.subs.size>0||this.activeListeners.size>0||this.activeInfoListeners.size>0}ensureLive(){var n;if(!this.wantsSocket())return;const t=(n=this.ws)==null?void 0:n.readyState;t===WebSocket.OPEN?this.sendPing():t!==WebSocket.CONNECTING&&(this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectAttempts=0,this.connect())}flushOutbox(){var n;if(((n=this.ws)==null?void 0:n.readyState)!==WebSocket.OPEN||this.outbox.length===0)return;const t=this.outbox;this.outbox=[];for(const r of t)this.ws.send(r)}connect(){if(this.manualClose=!1,this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;this.setState("connecting");let t;try{t=new WebSocket(this.url)}catch{this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectAttempts=0,this.awaitingPong=!1,this.lastPongAt=Date.now(),this.setState("open"),this.flushOutbox();for(const n of this.subs.values())n.sessionId&&this.attachSession(n,n.turnActive);this.startPing()},t.onclose=()=>{this.stopPing(),this.setState("closed"),this.manualClose||this.scheduleReconnect()},t.onerror=()=>{t.close()},t.onmessage=n=>this.dispatch(n.data)}startPing(){this.stopPing(),this.pingTimer=setInterval(()=>this.sendPing(),kh)}sendPing(){var t;if(!(((t=this.ws)==null?void 0:t.readyState)!==WebSocket.OPEN||this.awaitingPong)){this.awaitingPong=!0;try{this.ws.send(JSON.stringify({type:"ping"}))}catch{this.awaitingPong=!1,this.ws.close();return}this.pongTimer=setTimeout(()=>{var n;this.pongTimer=null,this.awaitingPong&&((n=this.ws)==null||n.close())},Eh)}}stopPing(){this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null,this.pongTimer&&clearTimeout(this.pongTimer),this.pongTimer=null,this.awaitingPong=!1}scheduleReconnect(){if(this.reconnectTimer)return;const t=Math.min(jy,Cy*2**this.reconnectAttempts);this.reconnectAttempts+=1,this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},t)}route(t,n){const r=[...this.subs.values()].filter(o=>o.projectSlug===t);if(r.length===0)return;if(n){const o=r.find(i=>i.sessionId===n);if(o)return o;if(this.knownSessions.has(n))return}const l=r.find(o=>o.sessionId===null);if(l)return l;if(n===null&&r.length===1)return r[0]}dispatch(t){var u,f,c,p,x,E,k,T,m,d,g,S,P,_,L,y,F,O,Q,te,pe,se,et,Ke;let n;try{n=JSON.parse(t)}catch{return}if(n.type==="pong"){this.awaitingPong=!1,this.pongTimer&&(clearTimeout(this.pongTimer),this.pongTimer=null),this.lastPongAt=Date.now(),this.flushOutbox();return}const r=n.payload.projectSlug;if(r==null)return;if(n.type==="chat:error"){const le=this.route(r,null);(f=le==null?void 0:(u=le.handlers).onError)==null||f.call(u,n.payload.error);return}if(n.type==="chat:resync"){const le=this.route(r,n.payload.sessionId);(p=le==null?void 0:(c=le.handlers).onResync)==null||p.call(c);return}if(n.type==="chat:active"){this.setActive(n.payload.sessionId,n.payload.running,r);for(const le of this.subs.values())le.projectSlug===r&&le.sessionId===n.payload.sessionId&&((E=(x=le.handlers).onActive)==null||E.call(x,{running:n.payload.running,jobId:n.payload.jobId}));return}if(n.type==="chat:queued_flushed"){const{sessionId:le,text:D}=n.payload;if(le){Sl(async()=>{const{writeQueued:I,writeQueuedTs:W}=await import("./queued-LamEU0GH.js");return{writeQueued:I,writeQueuedTs:W}},[]).then(({writeQueued:I,writeQueuedTs:W})=>{I(le,r,null),W(le,r,null)});for(const I of this.subs.values())I.projectSlug===r&&I.sessionId===le&&((T=(k=I.handlers).onQueuedFlushed)==null||T.call(k,{text:D}))}return}if(n.type==="chat:killed_task"){const{sessionId:le,summary:D,timestamp:I}=n.payload;if(le)for(const W of this.subs.values())W.projectSlug===r&&W.sessionId===le&&((d=(m=W.handlers).onKilledTask)==null||d.call(m,{summary:D??"",timestamp:I??""}));return}const{sessionId:l,jobId:o}=n.payload,i=this.route(r,l);if(!i)return;const a={sessionId:l,jobId:o},s=n.payload.seq;switch(typeof s=="number"&&s>i.lastSeq&&(i.lastSeq=s),i.turnActive=n.type!=="chat:complete",n.type){case"chat:response":(S=(g=i.handlers).onResponse)==null||S.call(g,n.payload.chunk,a);break;case"chat:tool_call":(_=(P=i.handlers).onToolCall)==null||_.call(P,{toolName:n.payload.toolName,inputSummary:n.payload.inputSummary,output:n.payload.output,isError:n.payload.isError,durationMs:n.payload.durationMs,toolUseId:n.payload.toolUseId,subagentType:n.payload.subagentType,description:n.payload.description,hasSubagent:n.payload.hasSubagent},a);break;case"chat:tool_start":(y=(L=i.handlers).onToolStart)==null||y.call(L,{toolName:n.payload.toolName,inputSummary:n.payload.inputSummary,toolUseId:n.payload.toolUseId,output:"",isError:!1,pending:!0,subagentType:n.payload.subagentType,description:n.payload.description,hasSubagent:n.payload.hasSubagent},a);break;case"chat:message_boundary":(O=(F=i.handlers).onMessageBoundary)==null||O.call(F,a);break;case"chat:injected":(te=(Q=i.handlers).onInjected)==null||te.call(Q,{sender:n.payload.sender,content:n.payload.content,timestamp:n.payload.timestamp},a);break;case"chat:notice":(se=(pe=i.handlers).onNotice)==null||se.call(pe,n.payload.notice,a);break;case"chat:complete":(Ke=(et=i.handlers).onComplete)==null||Ke.call(et,{...a,success:n.payload.success,error:n.payload.error,model:n.payload.model,usage:n.payload.usage});break}}}const Ny=new Py,Fa="paddock:lastSeen:",mn=new Map,$a="paddock:lastSeen-changed";function Ry(e){return Fa+e}function Vs(e){try{window.dispatchEvent(new CustomEvent($a,{detail:{sessionId:e}}))}catch{}}function _y(e){return mn.get(e)??0}function Ch(e,t){!t||!Number.isFinite(t)||t<=(mn.get(e)??0)||(mn.set(e,t),Vs(e))}function E0(e,t=Date.now()){const n=mn.get(e)??0;return t<=n||(mn.set(e,t),Vs(e)),n}function C0(e,t,n){mn.get(e)===n&&(t?mn.set(e,t):mn.delete(e),Vs(e))}function Ty(){const e=new Map;try{for(let t=0;t<localStorage.length;t++){const n=localStorage.key(t);if(!n||!n.startsWith(Fa))continue;const r=Number(localStorage.getItem(n));Number.isFinite(r)&&r>0&&e.set(n.slice(Fa.length),r)}}catch{}return e}function Ly(e){for(const t of e)try{localStorage.removeItem(Ry(t))}catch{}}const My=4;let Ic=!1;async function Dy(e){if(Ic)return;const t=Ty();if(t.size===0)return;const n=new Map;for(const u of e)for(const f of u.chatTurns??[])t.has(f.sessionId)&&n.set(f.sessionId,{slug:u.slug,serverLastSeen:f.lastSeen??0});if(n.size===0)return;Ic=!0;const r=[...n].filter(([u,{serverLastSeen:f}])=>t.get(u)>f).map(([u,{slug:f}])=>({sid:u,slug:f,when:t.get(u)})),l=[];let o=0;const i=async()=>{for(;o<r.length;){const u=r[o++];try{await Bs.markChatSeen(u.slug,u.sid,u.when),Ch(u.sid,u.when),l.push(u.sid)}catch{}}};await Promise.all(Array.from({length:Math.min(My,r.length)},()=>i()));const a=new Set(r.map(u=>u.sid)),s=[...n.keys()].filter(u=>!a.has(u));Ly([...l,...s])}function Iy({tag:e,className:t=""}){const n=si();return h.jsx("button",{type:"button",onClick:r=>{r.preventDefault(),r.stopPropagation(),n(`/tags/${encodeURIComponent(e)}`)},title:`Show projects tagged ${e}`,className:`tag relative z-10 transition-colors hover:bg-paddock-300/70 dark:hover:bg-paddock-700 ${t}`,children:e})}function G(e){return{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",...e}}const Oy=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 5v14M5 12h14"})}),j0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),zy=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M3 10.5 12 3l9 7.5"}),h.jsx("path",{d:"M5 9.5V20a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5"})]}),P0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})}),N0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"11",cy:"11",r:"7"}),h.jsx("path",{d:"m21 21-4.3-4.3"})]}),R0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M4 5h16"}),h.jsx("path",{d:"M8 5v6h12"}),h.jsx("path",{d:"M8 11v6h12"})]}),_0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M4 6h16M4 12h16M4 18h16"})}),Uy=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"})}),T0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"m22 2-7 20-4-9-9-4Z"}),h.jsx("path",{d:"M22 2 11 13"})]}),L0=e=>h.jsx("svg",{...G(e),children:h.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})}),M0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("rect",{x:"9",y:"2",width:"6",height:"12",rx:"3"}),h.jsx("path",{d:"M5 10a7 7 0 0 0 14 0"}),h.jsx("path",{d:"M12 17v4M8 21h8"})]}),D0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"m9 18 6-6-6-6"})}),I0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.6 2.6-2-2 2.6-2.6Z"})}),Fy=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"12",r:"3"}),h.jsx("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z"})]}),O0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z"}),h.jsx("path",{d:"M12 9v4M12 17h.01"})]}),z0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8"})}),jh=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M18 6 6 18M6 6l12 12"})}),U0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M13 2 4.5 13.5H11l-1 8.5 8.5-11.5H12z"})}),F0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M6 4.5v15l13-7.5z"})}),$y=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M3 6h18M3 12h18M3 18h18"})}),$0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"12",r:"9"}),h.jsx("path",{d:"M12 7v5l3 2"})]}),A0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"5",r:"1"}),h.jsx("circle",{cx:"12",cy:"12",r:"1"}),h.jsx("circle",{cx:"12",cy:"19",r:"1"})]}),B0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6M10 11v6M14 11v6"})}),W0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M12 20h9"}),h.jsx("path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"})]}),V0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z"}),h.jsx("path",{d:"M14 2v6h6"})]}),H0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M12 17v5"}),h.jsx("path",{d:"M9 10.76V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6.76a2 2 0 0 0 .59 1.42l1.12 1.12A1 1 0 0 1 17 15H7a1 1 0 0 1-.71-1.7l1.12-1.12A2 2 0 0 0 9 10.76Z"})]}),Q0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M20 6 9 17l-5-5"})}),K0=({open:e,...t})=>e?h.jsxs("svg",{...G(t),children:[h.jsx("path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z"}),h.jsx("path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10"})]}):h.jsxs("svg",{...G(t),children:[h.jsx("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}),h.jsx("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]}),b0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"6",cy:"6",r:"3"}),h.jsx("circle",{cx:"6",cy:"18",r:"3"}),h.jsx("circle",{cx:"18",cy:"6",r:"3"}),h.jsx("path",{d:"M6 9v6M18 9a9 9 0 0 1-9 9"})]}),J0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M9.5 14.5l-1.7 1.7a4 4 0 0 1-5.66-5.66l1.7-1.7"}),h.jsx("path",{d:"M14.5 9.5l1.7-1.7a4 4 0 0 1 5.66 5.66l-1.7 1.7"}),h.jsx("path",{d:"M8 3.5v2M3.5 8h2M16 20.5v-2M20.5 16h-2"})]}),Y0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),h.jsx("path",{d:"M17 8l-5-5-5 5M12 3v12"})]}),G0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M4 17l6-5-6-5M12 19h8"})}),X0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3-.3 6.2-1.5 6.2-6.6a5.2 5.2 0 0 0-1.4-3.6 4.8 4.8 0 0 0-.1-3.6s-1.1-.3-3.7 1.4a12.6 12.6 0 0 0-6.6 0C6.5 1.3 5.4 1.6 5.4 1.6a4.8 4.8 0 0 0-.1 3.6 5.2 5.2 0 0 0-1.4 3.6c0 5.1 3.2 6.3 6.2 6.6a3.4 3.4 0 0 0-1 2.6V22"})}),Ay=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"12",r:"4"}),h.jsx("path",{d:"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"})]}),By=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"})}),Wy=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.5 1.5"}),h.jsx("path",{d:"M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.5-1.5"})]}),Z0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"m6 9 6 6 6-6"})}),q0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("rect",{x:"3",y:"4",width:"18",height:"4",rx:"1"}),h.jsx("path",{d:"M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"}),h.jsx("path",{d:"M10 12h4"})]}),e1=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 2.5l2.9 5.88 6.49.94-4.7 4.58 1.11 6.46L12 17.8l-5.8 3.05 1.11-6.46-4.7-4.58 6.49-.94z"})}),Vy=["idea","active","paused","blocked","done"];function Hy({open:e,onClose:t,onCreated:n}){const[r,l]=C.useState(""),[o,i]=C.useState(""),[a,s]=C.useState(""),[u,f]=C.useState(""),[c,p]=C.useState("active"),[x,E]=C.useState(""),[k,T]=C.useState(!1),[m,d]=C.useState(null);if(C.useEffect(()=>{e&&(l(""),i(""),s(""),f(""),p("active"),E(""),d(null))},[e]),C.useEffect(()=>{const S=P=>{P.key==="Escape"&&e&&!k&&t()};return window.addEventListener("keydown",S),()=>window.removeEventListener("keydown",S)},[e,k,t]),!e)return null;const g=async S=>{if(S.preventDefault(),!!r.trim()){T(!0),d(null);try{const P=await Bs.createProject({name:r.trim(),status:c,group:u||void 0,summary:o.trim()||void 0,repo:x.trim()||void 0,domain:a.split(",").map(_=>_.trim()).filter(Boolean)});n(P)}catch(P){d(P instanceof xl?P.message:"Failed to create project")}finally{T(!1)}}};return h.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4 backdrop-blur-sm",onClick:()=>!k&&t(),children:h.jsxs("form",{className:"w-full max-w-md animate-scale-in rounded-2xl border border-paddock-200 bg-white p-6 shadow-2xl dark:border-paddock-800 dark:bg-paddock-900",onClick:S=>S.stopPropagation(),onSubmit:g,children:[h.jsxs("div",{className:"mb-5 flex items-center justify-between",children:[h.jsx("h2",{className:"text-lg font-semibold",children:"New project"}),h.jsx("button",{type:"button",onClick:t,className:"rounded-lg p-1 text-paddock-400 hover:bg-paddock-100 hover:text-paddock-600 dark:hover:bg-paddock-800","aria-label":"Close",children:h.jsx(jh,{width:18,height:18})})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Name"}),h.jsx("input",{autoFocus:!0,className:"input",value:r,onChange:S=>l(S.target.value),placeholder:"Garage Water Heater Replacement"})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Summary (optional)"}),h.jsx("input",{className:"input",value:o,onChange:S=>i(S.target.value),placeholder:"One line on what this project is about"})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Area"}),h.jsxs("select",{className:"input",value:u,onChange:S=>f(S.target.value),children:[h.jsx("option",{value:"",children:"Unsorted"}),Ws.map(S=>h.jsx("option",{value:S.slug,children:S.label},S.slug))]})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Git repository URL (optional)"}),h.jsx("input",{className:"input",value:x,onChange:S=>E(S.target.value),placeholder:"https://github.com/owner/repo.git"}),h.jsx("span",{className:"mt-1 block text-xs text-paddock-400 dark:text-paddock-500",children:"Link an external repo and Paddock clones it as the project's working directory — the repo's own CLAUDE.md, branches & PR flow apply. Leave blank for a notebook project."})]}),h.jsxs("div",{className:"mb-5 grid grid-cols-2 gap-3",children:[h.jsxs("label",{className:"block",children:[h.jsx("span",{className:"field-label",children:"Domain tags"}),h.jsx("input",{className:"input",value:a,onChange:S=>s(S.target.value),placeholder:"home, plumbing"})]}),h.jsxs("label",{className:"block",children:[h.jsx("span",{className:"field-label",children:"Status"}),h.jsx("select",{className:"input capitalize",value:c,onChange:S=>p(S.target.value),children:Vy.map(S=>h.jsx("option",{value:S,className:"capitalize",children:S},S))})]})]}),m&&h.jsx("p",{className:"mb-4 rounded-lg bg-rose-50 px-3 py-2 text-sm text-rose-600 dark:bg-rose-950/40 dark:text-rose-300",children:m}),h.jsxs("div",{className:"flex justify-end gap-2",children:[h.jsx("button",{type:"button",className:"btn-ghost",onClick:t,disabled:k,children:"Cancel"}),h.jsx("button",{type:"submit",className:"btn-primary",disabled:k||!r.trim(),children:k?"Creating…":"Create project"})]})]})})}function Oc(e){if(typeof window>"u"||typeof window.matchMedia!="function")return null;try{return window.matchMedia(e)??null}catch{return null}}function Qy(e){const[t,n]=C.useState(()=>{var r;return((r=Oc(e))==null?void 0:r.matches)??!1});return C.useEffect(()=>{var o;const r=Oc(e);if(!r)return;const l=()=>n(!!r.matches);return l(),typeof r.addEventListener=="function"?(r.addEventListener("change",l),()=>r.removeEventListener("change",l)):((o=r.addListener)==null||o.call(r,l),()=>{var i;return(i=r.removeListener)==null?void 0:i.call(r,l)})},[e]),t}const Hs="paddock:panewidth:",Ky={key:"sidenav",def:288,min:200,max:480},t1={key:"chatlist",def:256,min:220,max:520},by="(min-width: 1024px)";function pr(e,t){return Math.min(Math.max(t,e.min),e.max)}function zc(e,t,n){return pr(n,e+t)}function Jy(e){try{const t=localStorage.getItem(Hs+e.key);if(t==null)return null;const n=Number.parseFloat(t);return Number.isFinite(n)?pr(e,n):null}catch{return null}}function Yy(e,t){try{localStorage.setItem(Hs+e.key,String(pr(e,t)))}catch{}}function Gy(e){try{localStorage.removeItem(Hs+e.key)}catch{}}function Xy(e){const t=Qy(by),[n,r]=C.useState(()=>Jy(e)),l=pr(e,n??e.def);return{isDesktop:t,width:l,style:t?{width:l}:void 0,preview:o=>r(pr(e,o)),commit:o=>{const i=pr(e,o);r(i),Yy(e,i)},reset:()=>{r(null),Gy(e)},spec:e}}function Zy({spec:e,width:t,onPreview:n,onCommit:r,onReset:l,label:o}){const i=C.useRef(null),a=C.useRef(t);a.current=t;const s=16;return h.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":o,"aria-valuenow":Math.round(t),"aria-valuemin":e.min,"aria-valuemax":e.max,tabIndex:0,onPointerDown:u=>{i.current={startX:u.clientX,startWidth:t},u.currentTarget.setPointerCapture(u.pointerId)},onPointerMove:u=>{i.current&&n(zc(i.current.startWidth,u.clientX-i.current.startX,e))},onPointerUp:u=>{if(i.current){i.current=null;try{u.currentTarget.releasePointerCapture(u.pointerId)}catch{}r(a.current)}},onDoubleClick:l,onKeyDown:u=>{if(u.key==="ArrowLeft"||u.key==="ArrowRight"){u.preventDefault();const f=zc(t,u.key==="ArrowRight"?s:-s,e);n(f),r(f)}},title:"Drag to resize · double-click to reset",className:"group/resizer absolute inset-y-0 right-0 z-10 hidden w-1.5 -mr-0.5 cursor-ew-resize touch-none lg:block",children:h.jsx("span",{className:"absolute inset-y-0 right-0 w-px bg-paddock-200 transition group-hover/resizer:w-0.5 group-hover/resizer:bg-accent group-focus/resizer:w-0.5 group-focus/resizer:bg-accent dark:bg-paddock-800"})})}function qy(e){const[t,n]=C.useState(new Map),r=C.useRef(new Map),[l,o]=C.useState(0);return C.useEffect(()=>{const i=r.current;for(const a of e)for(const s of a.chatTurns??[]){Ch(s.sessionId,s.lastSeen);const u=Date.parse(s.lastTurnCompletedAt);if(!Number.isFinite(u))continue;const f=i.get(s.sessionId);!f||u>f.at?i.set(s.sessionId,{slug:a.slug,at:u,unread:s.unread}):f.unread=s.unread}o(a=>a+1),Dy(e).catch(()=>{})},[e]),C.useEffect(()=>{const i=new Map;return Ny.onActiveInfos(a=>{for(const[s,u]of i)a.has(s)||r.current.set(s,{slug:u,at:Date.now()});i.clear();for(const[s,u]of a)i.set(s,u);n(new Map(a)),o(s=>s+1)})},[]),C.useEffect(()=>{const i=()=>o(a=>a+1);return window.addEventListener($a,i),()=>window.removeEventListener($a,i)},[]),C.useMemo(()=>{const i=new Map,a=s=>{let u=i.get(s);return u||(u={unread:0,inflight:0},i.set(s,u)),u};for(const[s,{slug:u,at:f,unread:c}]of r.current)!t.has(s)&&(c||f>_y(s))&&(a(u).unread+=1);for(const s of t.values())a(s).inflight+=1;return i},[t,l])}function e0(){const{projects:e,rootWorkspace:t,loading:n,upsert:r}=fy(),{dark:l,toggle:o}=my(),[i,a]=C.useState(!1),[s,u]=C.useState(!1),f=si(),c=Wn(),p=yy(),x=wy(),E=Xy(Ky),k=c.pathname==="/"||c.pathname==="/projects"||c.pathname.startsWith("/chat"),T=c.pathname.startsWith("/projects/")||k;C.useEffect(()=>{a(!1)},[c.pathname]),C.useEffect(()=>{document.title=p.name},[p.name]);const m=C.useMemo(()=>{const P=new Map;for(const _ of e){const L=_.group??"",y=P.get(L);y?y.push(_):P.set(L,[_])}return ky(P.keys()).map(_=>[_,P.get(_)??[]])},[e]),d=C.useMemo(()=>t?[...e,t]:e,[e,t]),g=qy(d),S=g.get(wh);return h.jsxs("div",{className:"flex h-[100dvh] flex-col overflow-hidden bg-canvas dark:bg-canvas-dark lg:flex-row",children:[!T&&h.jsxs("header",{className:"pt-safe flex items-center gap-2 border-b border-paddock-200 px-3 pb-2 dark:border-paddock-800 lg:hidden",children:[h.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":"Open menu",className:"btn-subtle -ml-1 px-2 py-2",children:h.jsx($y,{width:20,height:20})}),h.jsxs(bn,{to:"/",className:"flex items-center gap-2",children:[h.jsx(Uc,{brand:p,className:"h-7 w-7 text-sm"}),h.jsx("span",{className:"text-[15px] font-semibold tracking-tight",children:p.name})]})]}),i&&h.jsx("div",{className:"fixed inset-0 z-30 bg-black/40 backdrop-blur-sm lg:hidden","aria-hidden":"true",onClick:()=>a(!1)}),h.jsxs("aside",{style:E.style,className:`fixed inset-y-0 left-0 z-40 flex w-72 max-w-[85%] shrink-0 flex-col border-r border-paddock-200 bg-canvas shadow-2xl transition-transform duration-200 ease-out dark:border-paddock-800 dark:bg-paddock-900 lg:relative lg:z-auto lg:max-w-none lg:translate-x-0 lg:bg-white/50 lg:shadow-none dark:lg:bg-paddock-900/30 ${i?"translate-x-0":"-translate-x-full"}`,children:[E.isDesktop&&h.jsx(Zy,{spec:E.spec,width:E.width,onPreview:E.preview,onCommit:E.commit,onReset:E.reset,label:"Resize sidebar"}),h.jsxs("div",{className:"flex items-center gap-2 px-5 py-4",children:[h.jsxs(bn,{to:"/",className:"group flex items-center gap-2",children:[h.jsx(Uc,{brand:p,className:"h-8 w-8 text-base"}),h.jsx("span",{className:"text-[17px] font-semibold tracking-tight",children:p.name})]}),h.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":"Close menu",className:"btn-subtle ml-auto px-2 py-2 lg:hidden",children:h.jsx(jh,{width:18,height:18})})]}),h.jsx("div",{className:"px-3 pb-1",children:h.jsxs(bn,{to:"/",end:!0,className:({isActive:P})=>`btn-subtle w-full justify-start ${P?"bg-paddock-200/80 dark:bg-paddock-800":""}`,title:"The root workspace — every project, and the instance's own chats",children:[h.jsx(zy,{width:16,height:16}),"Home",h.jsx(Ph,{badge:S,className:"ml-auto"})]})}),h.jsxs("div",{className:"mt-5 mb-1 flex items-center justify-between pr-3",children:[h.jsx(bn,{to:uy(),className:"section-label hover:text-accent",children:"Projects"}),h.jsx("button",{type:"button",onClick:()=>u(!0),"aria-label":"New Project",title:"New Project",className:"btn-subtle -mr-1 px-1.5 py-1 text-paddock-400 hover:text-accent",children:h.jsx(Oy,{width:14,height:14})})]}),h.jsxs("nav",{className:"flex-1 overflow-y-auto px-2 pb-4",children:[n&&h.jsx("div",{className:"space-y-2 px-2 py-2",children:[0,1,2].map(P=>h.jsx("div",{className:"h-10 animate-pulse rounded-lg bg-paddock-200/60 dark:bg-paddock-800/50"},P))}),!n&&e.length===0&&h.jsx("p",{className:"px-3 py-2 text-sm text-paddock-500",children:"No projects yet."}),!n&&e.length>0&&m.map(([P,_])=>h.jsxs("div",{className:"mb-2",children:[m.length>1&&h.jsx("div",{className:"px-2.5 pb-1 pt-2 text-[10px] font-semibold uppercase tracking-wider text-paddock-400",children:Sy(P)}),_.map(L=>h.jsx(n0,{project:L,badge:g.get(L.slug)},L.slug))]},P||"unsorted"))]}),h.jsxs("div",{className:"border-t border-paddock-200 px-3 py-3 dark:border-paddock-800",children:[h.jsxs(bn,{to:"/config",className:({isActive:P})=>`btn-subtle w-full justify-start ${P?"bg-paddock-200/80 dark:bg-paddock-800":""}`,title:"Instance config — paddock.config.yaml (restart required)",children:[h.jsx(Fy,{width:15,height:15}),"Config"]}),x.enabled&&h.jsxs("a",{href:x.path,target:"_blank",rel:"noreferrer",className:"btn-subtle mt-1 w-full justify-start",title:"OpenAPI / Swagger reference (opens in a new tab)",children:[h.jsx(Wy,{width:15,height:15}),"Swagger API"]}),h.jsxs("button",{type:"button",onClick:o,className:"btn-subtle mt-1 w-full justify-start","aria-label":l?"Switch to light mode":"Switch to dark mode",title:"Toggle light / dark theme",children:[l?h.jsx(Ay,{width:15,height:15}):h.jsx(By,{width:15,height:15}),l?"Light mode":"Dark mode"]}),h.jsxs("p",{className:"mt-2 px-2 text-[11px] text-paddock-400",children:["v","0.56.0"]})]})]}),h.jsx("main",{className:"min-w-0 flex-1 overflow-hidden",children:h.jsx(C.Suspense,{fallback:h.jsx(t0,{}),children:h.jsx(Fg,{context:{openNav:()=>a(!0)}})})}),h.jsx(Hy,{open:s,onClose:()=>u(!1),onCreated:P=>{r(P),u(!1),f(`/projects/${P.slug}/chat`)}})]})}function Uc({brand:e,className:t=""}){return h.jsx("span",{className:`flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-accent text-white shadow-sm ${t}`,children:xy(e.logo)?h.jsx("img",{src:e.logo,alt:"",className:"h-full w-full object-cover"}):e.logo})}function t0(){return h.jsxs("div",{className:"flex h-full items-center justify-center","aria-busy":"true","aria-live":"polite",children:[h.jsx("span",{className:"h-6 w-6 animate-spin rounded-full border-2 border-paddock-300 border-t-accent dark:border-paddock-700 dark:border-t-accent"}),h.jsx("span",{className:"sr-only",children:"Loading…"})]})}function n0({project:e,badge:t}){return h.jsxs(bn,{to:`/projects/${e.slug}`,className:({isActive:n})=>`group mb-0.5 flex flex-col gap-1 rounded-lg px-2.5 py-2 text-sm transition-colors ${n?"bg-paddock-200/80 dark:bg-paddock-800":"hover:bg-paddock-200/50 dark:hover:bg-paddock-800/50"}`,children:[h.jsxs("span",{className:"flex items-center justify-between gap-2",children:[h.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[h.jsx(Uy,{width:13,height:13,className:"shrink-0 text-paddock-400 group-hover:text-paddock-500"}),h.jsx("span",{className:"truncate font-medium",children:e.name})]}),h.jsx(Ph,{badge:t})]}),e.domain.length>0&&h.jsxs("span",{className:"flex min-w-0 items-center gap-1 overflow-hidden pl-[18px]",children:[e.domain.slice(0,2).map(n=>h.jsx(Iy,{tag:n,className:"max-w-[7rem] truncate"},n)),e.domain.length>2&&h.jsxs("span",{className:"shrink-0 text-[11px] text-paddock-400",children:["+",e.domain.length-2]})]})]})}function Ph({badge:e,className:t=""}){const n=(e==null?void 0:e.unread)??0,r=(e==null?void 0:e.inflight)??0;return n===0&&r===0?null:h.jsxs("span",{className:`flex shrink-0 items-center gap-1.5 ${t}`,children:[r>0&&h.jsxs("span",{className:"flex items-center gap-1 text-[11px] tabular-nums text-paddock-500 dark:text-paddock-400",title:`${r} chat${r===1?"":"s"} in flight`,"aria-label":`${r} chat${r===1?"":"s"} in flight`,children:[h.jsx("span",{"aria-hidden":"true",className:"h-2.5 w-2.5 spin-eco rounded-full border-[1.5px] border-paddock-400 border-t-transparent dark:border-paddock-500 dark:border-t-transparent"}),r]}),n>0&&h.jsx("span",{className:"inline-flex min-w-[1.1rem] items-center justify-center rounded-full bg-accent px-1.5 py-0.5 text-[11px] font-semibold leading-none tabular-nums text-white",title:`${n} unread ${n===1?"reply":"replies"}`,"aria-label":`${n} unread ${n===1?"reply":"replies"}`,children:n})]})}const Nh="paddock:chunkReloadAt",r0=1e4,Fc=/dynamically imported module|module script|importing a module|failed to fetch|unable to preload|load failed|error loading/i;function l0(e){return e?e instanceof Error?e.name==="ChunkLoadError"?!0:Fc.test(e.message):Fc.test(String(e)):!1}function Qs(){try{return typeof sessionStorage<"u"?sessionStorage:void 0}catch{return}}function o0(e=Date.now(),t=Qs()){if(!t)return!1;const n=t.getItem(Nh);if(!n)return!1;const r=Number(n);return Number.isFinite(r)&&e-r<r0}function i0(e=Date.now(),t=Qs()){try{t==null||t.setItem(Nh,String(e))}catch{}}function a0(e,t=Date.now(),n=Qs()){return l0(e)&&!o0(t,n)?"reload":"show"}function s0(){const e=vh(),t=a0(e);if(C.useEffect(()=>{t==="reload"&&(i0(),window.location.reload())},[t]),t==="reload")return h.jsxs("div",{className:"flex h-[100dvh] items-center justify-center bg-canvas dark:bg-canvas-dark","aria-busy":"true","aria-live":"polite",children:[h.jsx("span",{className:"h-6 w-6 animate-spin rounded-full border-2 border-paddock-300 border-t-accent dark:border-paddock-700 dark:border-t-accent"}),h.jsx("span",{className:"sr-only",children:"Updating…"})]});const n=e instanceof Error?e.message:typeof e=="string"?e:"";return h.jsxs("div",{className:"flex h-[100dvh] flex-col items-center justify-center gap-4 bg-canvas px-6 text-center dark:bg-canvas-dark",children:[h.jsxs("div",{children:[h.jsx("h1",{className:"text-lg font-semibold tracking-tight",children:"Something went wrong"}),h.jsx("p",{className:"mt-1 max-w-md text-sm text-paddock-500 dark:text-paddock-400",children:"The app hit an unexpected error. Reloading usually fixes it."}),n?h.jsx("p",{className:"mt-2 max-w-md break-words font-mono text-[11px] text-paddock-400",children:n}):null]}),h.jsx("button",{className:"btn-primary",onClick:()=>window.location.reload(),children:"Reload"})]})}function u0(){typeof navigator>"u"||!("serviceWorker"in navigator)||window.addEventListener("load",()=>{const e=navigator.serviceWorker,t=!!e.controller;let n=!1;e.addEventListener("controllerchange",()=>{n||!t||(n=!0,window.location.reload())}),e.register("/sw.js").catch(()=>{})})}const Rh=C.lazy(()=>Sl(()=>import("./ProjectsGrid-BCojZOGY.js"),__vite__mapDeps([0,1])).then(e=>({default:e.ProjectsGrid}))),ke=C.lazy(()=>Sl(()=>import("./ProjectView-BOvuAITg.js").then(e=>e.P),__vite__mapDeps([2,1,3,4])).then(e=>({default:e.ProjectView}))),c0=C.lazy(()=>Sl(()=>import("./ProjectRedirect-BHwVbbqB.js"),__vite__mapDeps([5,4])).then(e=>({default:e.ProjectRedirect}))),d0=C.lazy(()=>Sl(()=>import("./InstanceConfigPage-4cQGTj9Y.js"),[]).then(e=>({default:e.InstanceConfigPage}))),_h=()=>document.documentElement.setAttribute("data-tab-hidden",document.hidden?"true":"false");document.addEventListener("visibilitychange",_h);_h();function f0(){const{tag:e}=Pg();return h.jsx(Rh,{filterTag:e?decodeURIComponent(e):void 0})}const h0=Kg([{path:"/",element:h.jsx(e0,{}),errorElement:h.jsx(s0,{}),children:[{index:!0,element:h.jsx(ke,{root:!0})},{path:"projects",element:h.jsx(Rh,{})},{path:"tags/:tag",element:h.jsx(f0,{})},{path:"projects/:slug",element:h.jsx(c0,{})},{path:"projects/:slug/home",element:h.jsx(ke,{})},{path:"projects/:slug/chat",element:h.jsx(ke,{})},{path:"projects/:slug/chat/:sessionId",element:h.jsx(ke,{})},{path:"projects/:slug/files",element:h.jsx(ke,{})},{path:"projects/:slug/files/*",element:h.jsx(ke,{})},{path:"projects/:slug/changes",element:h.jsx(ke,{})},{path:"projects/:slug/changes/:file",element:h.jsx(ke,{})},{path:"projects/:slug/history",element:h.jsx(ke,{})},{path:"projects/:slug/settings",element:h.jsx(ke,{})},{path:"projects/:slug/triggers",element:h.jsx(ke,{})},{path:"projects/:slug/hooks",element:h.jsx(ke,{})},{path:"chat",element:h.jsx(ke,{root:!0})},{path:"chat/:sessionId",element:h.jsx(ke,{root:!0})},{path:"files",element:h.jsx(ke,{root:!0})},{path:"files/*",element:h.jsx(ke,{root:!0})},{path:"changes",element:h.jsx(ke,{root:!0})},{path:"changes/:file",element:h.jsx(ke,{root:!0})},{path:"history",element:h.jsx(ke,{root:!0})},{path:"triggers",element:h.jsx(ke,{root:!0})},{path:"settings",element:h.jsx(ke,{root:!0})},{path:"config",element:h.jsx(d0,{})}]}]);Wi.createRoot(document.getElementById("root")).render(h.jsx(Xc.StrictMode,{children:h.jsx(dy,{children:h.jsx(ey,{router:h0})})}));u0();export{Zy as $,O0 as A,b0 as B,P0 as C,T0 as D,Uy as E,V0 as F,Is as G,N0 as H,Ny as I,j0 as J,X0 as K,oy as L,$y as M,Hy as N,G0 as O,Oy as P,H0 as Q,Ws as R,z0 as S,Iy as T,Y0 as U,F0 as V,I0 as W,jh as X,_0 as Y,R0 as Z,Sl as _,si as a,Z0 as a0,J0 as a1,q0 as a2,K0 as a3,e1 as a4,E0 as a5,C0 as a6,Ch as a7,_y as a8,wh as a9,Wn as aa,w0 as ab,x0 as ac,Xy as ad,y0 as ae,g0 as af,S0 as ag,t1 as ah,Bs as b,$0 as c,k0 as d,Sy as e,D0 as f,uy as g,Pg as h,v0 as i,h as j,Q0 as k,xl as l,m0 as m,Fy as n,ky as o,Ac as p,A0 as q,C as r,W0 as s,B0 as t,fy as u,p0 as v,M0 as w,L0 as x,U0 as y,Wy as z};
|
|
70
|
+
*/function Er(){return Er=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Er.apply(this,arguments)}function gh(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o<r.length;o++)l=r[o],!(t.indexOf(l)>=0)&&(n[l]=e[l]);return n}function Bg(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Wg(e,t){return e.button===0&&(!t||t==="_self")&&!Bg(e)}const Vg=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],Hg=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],Qg="6";try{window.__reactRouterVersion=Qg}catch{}function Kg(e,t){return eg({basename:void 0,future:Er({},void 0,{v7_prependBasename:!0}),history:Cv({window:void 0}),hydrationData:bg(),routes:e,mapRouteProperties:Ag,unstable_dataStrategy:void 0,unstable_patchRoutesOnNavigation:void 0,window:void 0}).initialize()}function bg(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Er({},t,{errors:Jg(t.errors)})),t}function Jg(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,l]of t)if(l&&l.__type==="RouteErrorResponse")n[r]=new Bo(l.status,l.statusText,l.data,l.internal===!0);else if(l&&l.__type==="Error"){if(l.__subType){let o=window[l.__subType];if(typeof o=="function")try{let i=new o(l.message);i.stack="",n[r]=i}catch{}}if(n[r]==null){let o=new Error(l.message);o.stack="",n[r]=o}}else n[r]=l;return n}const yh=C.createContext({isTransitioning:!1}),Yg=C.createContext(new Map),Gg="startTransition",Tc=dp[Gg],Xg="flushSync",Lc=Ev[Xg];function Zg(e){Tc?Tc(e):e()}function Ar(e){Lc?Lc(e):e()}class qg{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function ey(e){let{fallbackElement:t,router:n,future:r}=e,[l,o]=C.useState(n.state),[i,a]=C.useState(),[s,u]=C.useState({isTransitioning:!1}),[f,c]=C.useState(),[p,x]=C.useState(),[E,k]=C.useState(),T=C.useRef(new Map),{v7_startTransition:m}=r||{},d=C.useCallback(y=>{m?Zg(y):y()},[m]),g=C.useCallback((y,F)=>{let{deletedFetchers:O,unstable_flushSync:Q,unstable_viewTransitionOpts:te}=F;O.forEach(se=>T.current.delete(se)),y.fetchers.forEach((se,et)=>{se.data!==void 0&&T.current.set(et,se.data)});let pe=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!te||pe){Q?Ar(()=>o(y)):d(()=>o(y));return}if(Q){Ar(()=>{p&&(f&&f.resolve(),p.skipTransition()),u({isTransitioning:!0,flushSync:!0,currentLocation:te.currentLocation,nextLocation:te.nextLocation})});let se=n.window.document.startViewTransition(()=>{Ar(()=>o(y))});se.finished.finally(()=>{Ar(()=>{c(void 0),x(void 0),a(void 0),u({isTransitioning:!1})})}),Ar(()=>x(se));return}p?(f&&f.resolve(),p.skipTransition(),k({state:y,currentLocation:te.currentLocation,nextLocation:te.nextLocation})):(a(y),u({isTransitioning:!0,flushSync:!1,currentLocation:te.currentLocation,nextLocation:te.nextLocation}))},[n.window,p,f,T,d]);C.useLayoutEffect(()=>n.subscribe(g),[n,g]),C.useEffect(()=>{s.isTransitioning&&!s.flushSync&&c(new qg)},[s]),C.useEffect(()=>{if(f&&i&&n.window){let y=i,F=f.promise,O=n.window.document.startViewTransition(async()=>{d(()=>o(y)),await F});O.finished.finally(()=>{c(void 0),x(void 0),a(void 0),u({isTransitioning:!1})}),x(O)}},[d,i,f,n.window]),C.useEffect(()=>{f&&i&&l.location.key===i.location.key&&f.resolve()},[f,p,l.location,i]),C.useEffect(()=>{!s.isTransitioning&&E&&(a(E.state),u({isTransitioning:!0,flushSync:!1,currentLocation:E.currentLocation,nextLocation:E.nextLocation}),k(void 0))},[s.isTransitioning,E]),C.useEffect(()=>{},[]);let S=C.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:y=>n.navigate(y),push:(y,F,O)=>n.navigate(y,{state:F,preventScrollReset:O==null?void 0:O.preventScrollReset}),replace:(y,F,O)=>n.navigate(y,{replace:!0,state:F,preventScrollReset:O==null?void 0:O.preventScrollReset})}),[n]),P=n.basename||"/",_=C.useMemo(()=>({router:n,navigator:S,static:!1,basename:P}),[n,S,P]),L=C.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return C.createElement(C.Fragment,null,C.createElement(Nl.Provider,{value:_},C.createElement(Fs.Provider,{value:l},C.createElement(Yg.Provider,{value:T.current},C.createElement(yh.Provider,{value:s},C.createElement($g,{basename:P,location:l.location,navigationType:l.historyAction,navigator:S,future:L},l.initialized||n.future.v7_partialHydration?C.createElement(ty,{routes:n.routes,future:n.future,state:l}):t))))),null)}const ty=C.memo(ny);function ny(e){let{routes:t,future:n,state:r}=e;return Ng(t,void 0,r,n)}const ry=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ly=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,oy=C.forwardRef(function(t,n){let{onClick:r,relative:l,reloadDocument:o,replace:i,state:a,target:s,to:u,preventScrollReset:f,unstable_viewTransition:c}=t,p=gh(t,Vg),{basename:x}=C.useContext(bt),E,k=!1;if(typeof u=="string"&&ly.test(u)&&(E=u,ry))try{let g=new URL(window.location.href),S=u.startsWith("//")?new URL(g.protocol+u):new URL(u),P=Qt(S.pathname,x);S.origin===g.origin&&P!=null?u=P+S.search+S.hash:k=!0}catch{}let T=Eg(u,{relative:l}),m=ay(u,{replace:i,state:a,target:s,preventScrollReset:f,relative:l,unstable_viewTransition:c});function d(g){r&&r(g),g.defaultPrevented||m(g)}return C.createElement("a",Er({},p,{href:E||T,onClick:k||o?r:d,ref:n,target:s}))}),bn=C.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:l=!1,className:o="",end:i=!1,style:a,to:s,unstable_viewTransition:u,children:f}=t,c=gh(t,Hg),p=ui(s,{relative:c.relative}),x=Wn(),E=C.useContext(Fs),{navigator:k,basename:T}=C.useContext(bt),m=E!=null&&sy(p)&&u===!0,d=k.encodeLocation?k.encodeLocation(p).pathname:p.pathname,g=x.pathname,S=E&&E.navigation&&E.navigation.location?E.navigation.location.pathname:null;l||(g=g.toLowerCase(),S=S?S.toLowerCase():null,d=d.toLowerCase()),S&&T&&(S=Qt(S,T)||S);const P=d!=="/"&&d.endsWith("/")?d.length-1:d.length;let _=g===d||!i&&g.startsWith(d)&&g.charAt(P)==="/",L=S!=null&&(S===d||!i&&S.startsWith(d)&&S.charAt(d.length)==="/"),y={isActive:_,isPending:L,isTransitioning:m},F=_?r:void 0,O;typeof o=="function"?O=o(y):O=[o,_?"active":null,L?"pending":null,m?"transitioning":null].filter(Boolean).join(" ");let Q=typeof a=="function"?a(y):a;return C.createElement(oy,Er({},c,{"aria-current":F,className:O,ref:n,style:Q,to:s,unstable_viewTransition:u}),typeof f=="function"?f(y):f)});var Ua;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Ua||(Ua={}));var Mc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Mc||(Mc={}));function iy(e){let t=C.useContext(Nl);return t||Y(!1),t}function ay(e,t){let{target:n,replace:r,state:l,preventScrollReset:o,relative:i,unstable_viewTransition:a}=t===void 0?{}:t,s=si(),u=Wn(),f=ui(e,{relative:i});return C.useCallback(c=>{if(Wg(c,n)){c.preventDefault();let p=r!==void 0?r:$n(u)===$n(f);s(e,{replace:p,state:l,preventScrollReset:o,relative:i,unstable_viewTransition:a})}},[u,s,f,r,l,n,e,o,i,a])}function sy(e,t){t===void 0&&(t={});let n=C.useContext(yh);n==null&&Y(!1);let{basename:r}=iy(Ua.useViewTransitionState),l=ui(e,{relative:t.relative});if(!n.isTransitioning)return!1;let o=Qt(n.currentLocation.pathname,r)||n.currentLocation.pathname,i=Qt(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Ao(l.pathname,i)!=null||Ao(l.pathname,o)!=null}const wh="";function As(e){return e===wh}function b(e){return As(e)?"/api/root":`/api/projects/${encodeURIComponent(e)}`}function g0(e){return As(e)?"":`/projects/${e}`}function y0(e){return e===""?"/":`${e}/home`}function uy(){return"/projects"}function w0(e,t){const n=e.startsWith(t)?e.slice(t.length):e;return n.startsWith("/files")?"files":n.startsWith("/changes")?"changes":n.startsWith("/history")?"history":n.startsWith("/settings")?"settings":n.startsWith("/triggers")||n.startsWith("/hooks")?"triggers":n.startsWith("/home")?"home":n.startsWith("/chat")?"chat":t===""?"home":"chat"}function x0(e,t){const n=`${t}/files`;if(!e.startsWith(n))return"";const r=e.slice(n.length).replace(/^\//,"");return r?r.split("/").filter(Boolean).map(l=>{try{return decodeURIComponent(l)}catch{return l}}).join("/"):""}function S0(e){if(!e)return"#";const t=e.trim().replace(/\.git$/i,"");if(/^https?:\/\//i.test(t))return t;const n=/^git@([^:]+):(.+)$/.exec(t);if(n)return`https://${n[1]}/${n[2]}`;const r=/^ssh:\/\/git@([^/]+)\/(.+)$/i.exec(t);return r?`https://${r[1]}/${r[2]}`:"#"}const ar="";async function H(e,t){const n=await fetch(`${ar}${e}`,{headers:{"content-type":"application/json",...(t==null?void 0:t.headers)??{}},...t});if(!n.ok){let r=n.statusText;try{const l=await n.json();l.error&&(r=l.error)}catch{}throw new xl(r,n.status)}return await n.json()}async function cy(e,t){const n=await fetch(`${ar}${e}`,t);if(!n.ok){let r=n.statusText;try{const l=JSON.parse(await n.text());l.error&&(r=l.error)}catch{}throw new xl(r,n.status)}return n.text()}class xl extends Error{constructor(t,n){super(t),this.status=n,this.name="ApiError"}}const Bs={async me(){return H("/api/me")},async markChatSeen(e,t,n){const r=`${b(e)}/chats/${encodeURIComponent(t)}/seen`;await H(r,{method:"POST",body:JSON.stringify(n!==void 0?{when:n}:{})})},async markChatUnread(e,t,n){const r=`${b(e)}/chats/${encodeURIComponent(t)}/unread`;await H(r,{method:"POST",body:JSON.stringify({unread:n})})},async projectRuns(e,t){const n=t!==void 0?`?limit=${encodeURIComponent(t)}`:"";return H(`${b(e)}/runs${n}`)},async markRunsSeen(e,t){await H(`${b(e)}/runs/seen`,{method:"POST",body:JSON.stringify(t!==void 0?{when:t}:{})})},async getModels(){return H("/api/models")},async getInstanceConfig(){return H("/api/instance-config")},async updateInstanceConfig(e){return H("/api/instance-config",{method:"PUT",body:JSON.stringify({patch:e})})},async uploadAttachments(e,t,n){const r=new FormData;for(const o of n)r.append("files",o,o.name);const l=await fetch(`${ar}${b(e)}/chats/${encodeURIComponent(t)}/upload`,{method:"POST",body:r});if(!l.ok){let o=l.statusText;try{const i=await l.json();i.error&&(o=i.error)}catch{}throw new xl(o,l.status)}return await l.json()},async projectCommands(e){const{commands:t}=await H(`${b(e)}/commands`);return t},async listProjects(){const{projects:e,root:t}=await H("/api/projects");return{projects:e,root:t??null}},async getProjectDetail(e){return H(`${b(e)}`)},async attentionChats(e){const t=await H(`${b(e)}/chats/attention`);return{running:t.running??[],unread:t.unread??[]}},async createProject(e){const{project:t}=await H("/api/projects",{method:"POST",body:JSON.stringify(e)});return t},async updateProject(e,t){const{project:n}=await H(`${b(e)}`,{method:"PATCH",body:JSON.stringify(t)});return n},async promoteProject(e,t){const{project:n}=await H(`${b(e)}/promote`,{method:"POST",body:JSON.stringify({repo:t})});return n},async deleteProject(e){await H(`${b(e)}`,{method:"DELETE"})},async deleteProjectChat(e,t){await H(`${b(e)}/chats/${encodeURIComponent(t)}`,{method:"DELETE"})},async renameProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify({name:n})})},async archiveProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}/archive`,{method:"POST",body:JSON.stringify({archived:n})})},async starProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}/star`,{method:"POST",body:JSON.stringify({starred:n})})},async archiveProjectChats(e,t,n){await H(`${b(e)}/chats/batch/archive`,{method:"POST",body:JSON.stringify({sessionIds:t,archived:n})})},async markChatsUnread(e,t,n){await H(`${b(e)}/chats/batch/unread`,{method:"POST",body:JSON.stringify({sessionIds:t,unread:n})})},async deleteProjectChats(e,t){const n=await H(`${b(e)}/chats/batch/delete`,{method:"POST",body:JSON.stringify({sessionIds:t})});return{removed:n.removed??[],failed:n.failed??[]}},async detachProjectChat(e,t,n){await H(`${b(e)}/chats/${encodeURIComponent(t)}/detach`,{method:"POST",body:JSON.stringify({detached:n})})},async promoteChat(e,t,n){return H(`${b(e)}/chats/${encodeURIComponent(t)}/promote`,{method:"POST",body:JSON.stringify(n)})},async forkChat(e,t,n,r){const{sessionId:l}=await H(`${b(e)}/chats/${encodeURIComponent(t)}/fork`,{method:"POST",body:JSON.stringify({name:n,fromUuid:r})});return l},async revertChat(e,t,n){const{removed:r}=await H(`${b(e)}/chats/${encodeURIComponent(t)}/revert`,{method:"POST",body:JSON.stringify({uuid:n})});return r},async listProjectDir(e,t=""){const n=t?`?path=${encodeURIComponent(t)}`:"";return H(`${b(e)}/files${n}`)},async listProjectFiles(e){const{entries:t}=await this.listProjectDir(e);return t.filter(n=>n.kind==="file").map(n=>n.name)},async getProjectFile(e,t){return H(`${b(e)}/files/${encodeURIComponent(t)}`)},projectFileRawUrl(e,t){return`${ar}${b(e)}/files/${encodeURIComponent(t)}?raw=1`},chatFileRawUrl(e){return`${ar}/api/chat-files/${encodeURIComponent(e)}`},async pinFile(e,t){const{project:n}=await H(`${b(e)}/pins`,{method:"PUT",body:JSON.stringify({file:t})});return n},async unpinFile(e,t){const{project:n}=await H(`${b(e)}/pins/${encodeURIComponent(t)}`,{method:"DELETE"});return n},async listProjectChats(e){const{chats:t}=await H(`${b(e)}/chats`);return t},async getAdoptableChats(e){return H(`${b(e)}/adoptable-chats`)},async adoptChats(e,t){return H(`${b(e)}/adopt-chats`,{method:"POST",body:JSON.stringify(t??{})})},async chatUsage(e,t){const n=t?`?scope=${t}`:"",{usage:r}=await H(`${b(e)}/chats/usage${n}`);return r},async projectChatMessages(e,t){const{messages:n}=await H(`${b(e)}/chats/${encodeURIComponent(t)}/messages`);return n},async subagentMessages(e,t,n){const r=`${b(e)}/chats/${encodeURIComponent(t)}`,{messages:l}=await H(`${r}/subagents/${encodeURIComponent(n)}/messages`);return l},async chatContext(e,t){const n=`${b(e)}/chats/${encodeURIComponent(t)}/context`,{usage:r}=await H(n);return r},async listTriggers(e){return H(`${b(e)}/triggers`)},async putTrigger(e,t,n){const{trigger:r}=await H(`${b(e)}/triggers/${encodeURIComponent(t)}`,{method:"PUT",body:JSON.stringify(n)});return r},async deleteTrigger(e,t){await H(`${b(e)}/triggers/${encodeURIComponent(t)}`,{method:"DELETE"})},async triggerRuntime(e){return H(`${b(e)}/triggers/runtime`)},async runTrigger(e,t){const{sessionId:n}=await H(`${b(e)}/triggers/${encodeURIComponent(t)}/run`,{method:"POST",body:"{}"});return n},async gitInfo(){return H("/api/git")},async gitStatus(e){return H(`${b(e)}/git/status`)},async gitDiff(e,t){const n=t?`?file=${encodeURIComponent(t)}`:"";return cy(`${b(e)}/git/diff${n}`)},async gitCommit(e,t,n){return H(`${b(e)}/git/commit`,{method:"POST",body:JSON.stringify(n?{message:t,files:n}:{message:t})})},async gitPush(){return H("/api/git/push",{method:"POST"})},async githubConnect(){return H("/api/git/github/connect",{method:"POST"})},async githubPoll(e){return H("/api/git/github/poll",{method:"POST",body:JSON.stringify({deviceCode:e})})},async githubDisconnect(){await H("/api/git/github/disconnect",{method:"POST"})},async transcriptionStatus(){return H("/api/transcription")},async transcribe(e,t="dictation.webm",n){const r=new FormData;r.append("file",e,t);const l=await fetch(`${ar}/api/transcribe`,{method:"POST",body:r,signal:n});if(!l.ok){let i=l.statusText;try{const a=await l.json();a.error&&(i=a.error)}catch{}throw new xl(i,l.status)}const{text:o}=await l.json();return o}},xh=C.createContext(null);function dy({children:e}){const[t,n]=C.useState([]),[r,l]=C.useState(null),[o,i]=C.useState(!0),[a,s]=C.useState(null),u=C.useCallback(async()=>{i(!0),s(null);try{const{projects:x,root:E}=await Bs.listProjects();n(x),E&&l(E)}catch(x){s(x instanceof Error?x.message:"Failed to load projects")}finally{i(!1)}},[]),f=C.useCallback(x=>{if(As(x.slug)){l(x);return}n(E=>[x,...E.filter(k=>k.slug!==x.slug)])},[]),c=C.useCallback(x=>{n(E=>E.filter(k=>k.slug!==x))},[]);C.useEffect(()=>{u()},[u]);const p=C.useMemo(()=>({projects:t,rootWorkspace:r,loading:o,error:a,refresh:u,upsert:f,remove:c}),[t,r,o,a,u,f,c]);return h.jsx(xh.Provider,{value:p,children:e})}function fy(){const e=C.useContext(xh);if(!e)throw new Error("useProjects must be used within ProjectsProvider");return e}const hy="paddock:theme";function py(){return typeof document<"u"&&document.documentElement.classList.contains("dark")}function my(){const[e,t]=C.useState(py),n=C.useCallback(()=>{t(r=>{const l=!r;document.documentElement.classList.toggle("dark",l);try{localStorage.setItem(hy,l?"dark":"light")}catch{}return l})},[]);return{dark:e,toggle:n}}const vy={name:"Paddock",logo:"🐎",accent:"#c2603c"},gy={enabled:!1,path:"/open-api"};function yy(){const e=globalThis.__PADDOCK_CONFIG__;return{...vy,...(e==null?void 0:e.brand)??{}}}function wy(){const e=globalThis.__PADDOCK_CONFIG__;return{...gy,...(e==null?void 0:e.openapi)??{}}}function xy(e){return/^(https?:\/\/|\/)/i.test(e.trim())}const Ws=[{slug:"homelab",label:"Homelab",blurb:"Servers, networking, self-hosted services."},{slug:"house",label:"House",blurb:"Physical home systems — water, climate, power, garden."},{slug:"side-projects",label:"Side Projects",blurb:"Apps and ideas of your own."}],Dc="",Sh=new Map(Ws.map(e=>[e.slug,e]));function Sy(e){if(!e)return"Unsorted";const t=Sh.get(e);return t?t.label:e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function k0(e){var t;return(t=Sh.get(e))==null?void 0:t.blurb}function ky(e){const t=new Set(e),n=[];for(const l of Ws)t.has(l.slug)&&(n.push(l.slug),t.delete(l.slug));const r=t.delete(Dc);return n.push(...[...t].sort()),r&&n.push(Dc),n}const kh=25e3,Eh=1e4,Ey=kh+Eh+5e3,Cy=500,jy=1e4;class Py{constructor(){this.ws=null,this.outbox=[],this.subs=new Map,this.pingTimer=null,this.pongTimer=null,this.awaitingPong=!1,this.lastPongAt=0,this.reconnectTimer=null,this.reconnectAttempts=0,this.manualClose=!1,this.stateListeners=new Set,this._state="closed",this.activeSessions=new Map,this.activeListeners=new Set,this.activeInfoListeners=new Set,this.knownSessions=new Set;const n=`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}`;if(this.url=`${n.replace(/^http/,"ws")}/ws`,typeof window<"u"){const r=()=>this.ensureLive();window.addEventListener("online",r),window.addEventListener("focus",r),typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&this.ensureLive()})}}get state(){return this._state}onState(t){return this.stateListeners.add(t),t(this._state),()=>this.stateListeners.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateListeners)n(t)}}onActiveSessions(t){return this.activeListeners.add(t),t(new Set(this.activeSessions.keys())),this.connect(),()=>this.activeListeners.delete(t)}onActiveInfos(t){return this.activeInfoListeners.add(t),t(new Map(this.activeSessions)),this.connect(),()=>this.activeInfoListeners.delete(t)}setActive(t,n,r){const l=this.activeSessions.has(t);if(n?this.activeSessions.set(t,r):this.activeSessions.delete(t),this.activeSessions.has(t)!==l){const o=new Set(this.activeSessions.keys());for(const a of this.activeListeners)a(o);const i=new Map(this.activeSessions);for(const a of this.activeInfoListeners)a(i)}}subscribe(t,n,r){const l=Symbol("chat-sub"),o={projectSlug:t,sessionId:n,handlers:r,lastSeq:-1,turnActive:!1};return this.subs.set(l,o),this.connect(),n&&this.attachSession(o,!1),{setSessionId:i=>{const a=this.subs.get(l);a&&(a.sessionId=i,i&&this.attachSession(a,!1))},unsubscribe:()=>{this.subs.delete(l)}}}attachSession(t,n){t.sessionId&&(this.knownSessions.add(t.sessionId),this.transmit(JSON.stringify({type:"chat:subscribe",payload:{projectSlug:t.projectSlug,sessionId:t.sessionId,wantReplay:n,lastSeq:t.lastSeq}})))}send(t,n,r,l){const o={projectSlug:t,sessionId:r,message:n};l!=null&&l.preloadContext&&(o.preloadContext=!0),l!=null&&l.model&&(o.model=l.model),l!=null&&l.attachments&&l.attachments.length>0&&(o.attachments=l.attachments),this.markTurnStart(t,r),this.transmit(JSON.stringify({type:"chat:send",payload:o}))}setQueued(t,n,r,l){const o={projectSlug:t,sessionId:n,text:r,ts:l};this.transmit(JSON.stringify({type:"chat:set_queue",payload:o}))}markTurnStart(t,n){for(const r of this.subs.values())r.projectSlug===t&&r.sessionId===n&&(r.lastSeq=-1,r.turnActive=!0)}sendCommand(t,n,r){this.markTurnStart(t,r),this.transmit(JSON.stringify({type:"chat:command",payload:{projectSlug:t,sessionId:r,command:n}}))}cancel(t){this.transmit(JSON.stringify({type:"chat:cancel",payload:{jobId:t}}))}continueChat(t,n){this.markTurnStart(t,n),this.transmit(JSON.stringify({type:"chat:continue",payload:{projectSlug:t,sessionId:n}}))}transmit(t){this.isLive()?this.ws.send(t):(this.outbox.push(t),this.ensureLive())}isLive(){var t;return((t=this.ws)==null?void 0:t.readyState)!==WebSocket.OPEN?!1:Date.now()-this.lastPongAt<Ey}wantsSocket(){return this.subs.size>0||this.activeListeners.size>0||this.activeInfoListeners.size>0}ensureLive(){var n;if(!this.wantsSocket())return;const t=(n=this.ws)==null?void 0:n.readyState;t===WebSocket.OPEN?this.sendPing():t!==WebSocket.CONNECTING&&(this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectAttempts=0,this.connect())}flushOutbox(){var n;if(((n=this.ws)==null?void 0:n.readyState)!==WebSocket.OPEN||this.outbox.length===0)return;const t=this.outbox;this.outbox=[];for(const r of t)this.ws.send(r)}connect(){if(this.manualClose=!1,this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;this.setState("connecting");let t;try{t=new WebSocket(this.url)}catch{this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectAttempts=0,this.awaitingPong=!1,this.lastPongAt=Date.now(),this.setState("open"),this.flushOutbox();for(const n of this.subs.values())n.sessionId&&this.attachSession(n,n.turnActive);this.startPing()},t.onclose=()=>{this.stopPing(),this.setState("closed"),this.manualClose||this.scheduleReconnect()},t.onerror=()=>{t.close()},t.onmessage=n=>this.dispatch(n.data)}startPing(){this.stopPing(),this.pingTimer=setInterval(()=>this.sendPing(),kh)}sendPing(){var t;if(!(((t=this.ws)==null?void 0:t.readyState)!==WebSocket.OPEN||this.awaitingPong)){this.awaitingPong=!0;try{this.ws.send(JSON.stringify({type:"ping"}))}catch{this.awaitingPong=!1,this.ws.close();return}this.pongTimer=setTimeout(()=>{var n;this.pongTimer=null,this.awaitingPong&&((n=this.ws)==null||n.close())},Eh)}}stopPing(){this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null,this.pongTimer&&clearTimeout(this.pongTimer),this.pongTimer=null,this.awaitingPong=!1}scheduleReconnect(){if(this.reconnectTimer)return;const t=Math.min(jy,Cy*2**this.reconnectAttempts);this.reconnectAttempts+=1,this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},t)}route(t,n){const r=[...this.subs.values()].filter(o=>o.projectSlug===t);if(r.length===0)return;if(n){const o=r.find(i=>i.sessionId===n);if(o)return o;if(this.knownSessions.has(n))return}const l=r.find(o=>o.sessionId===null);if(l)return l;if(n===null&&r.length===1)return r[0]}dispatch(t){var u,f,c,p,x,E,k,T,m,d,g,S,P,_,L,y,F,O,Q,te,pe,se,et,Ke;let n;try{n=JSON.parse(t)}catch{return}if(n.type==="pong"){this.awaitingPong=!1,this.pongTimer&&(clearTimeout(this.pongTimer),this.pongTimer=null),this.lastPongAt=Date.now(),this.flushOutbox();return}const r=n.payload.projectSlug;if(r==null)return;if(n.type==="chat:error"){const le=this.route(r,null);(f=le==null?void 0:(u=le.handlers).onError)==null||f.call(u,n.payload.error);return}if(n.type==="chat:resync"){const le=this.route(r,n.payload.sessionId);(p=le==null?void 0:(c=le.handlers).onResync)==null||p.call(c);return}if(n.type==="chat:active"){this.setActive(n.payload.sessionId,n.payload.running,r);for(const le of this.subs.values())le.projectSlug===r&&le.sessionId===n.payload.sessionId&&((E=(x=le.handlers).onActive)==null||E.call(x,{running:n.payload.running,jobId:n.payload.jobId}));return}if(n.type==="chat:queued_flushed"){const{sessionId:le,text:D}=n.payload;if(le){Sl(async()=>{const{writeQueued:I,writeQueuedTs:W}=await import("./queued-LamEU0GH.js");return{writeQueued:I,writeQueuedTs:W}},[]).then(({writeQueued:I,writeQueuedTs:W})=>{I(le,r,null),W(le,r,null)});for(const I of this.subs.values())I.projectSlug===r&&I.sessionId===le&&((T=(k=I.handlers).onQueuedFlushed)==null||T.call(k,{text:D}))}return}if(n.type==="chat:killed_task"){const{sessionId:le,summary:D,timestamp:I}=n.payload;if(le)for(const W of this.subs.values())W.projectSlug===r&&W.sessionId===le&&((d=(m=W.handlers).onKilledTask)==null||d.call(m,{summary:D??"",timestamp:I??""}));return}const{sessionId:l,jobId:o}=n.payload,i=this.route(r,l);if(!i)return;const a={sessionId:l,jobId:o},s=n.payload.seq;switch(typeof s=="number"&&s>i.lastSeq&&(i.lastSeq=s),i.turnActive=n.type!=="chat:complete",n.type){case"chat:response":(S=(g=i.handlers).onResponse)==null||S.call(g,n.payload.chunk,a);break;case"chat:tool_call":(_=(P=i.handlers).onToolCall)==null||_.call(P,{toolName:n.payload.toolName,inputSummary:n.payload.inputSummary,output:n.payload.output,isError:n.payload.isError,durationMs:n.payload.durationMs,toolUseId:n.payload.toolUseId,subagentType:n.payload.subagentType,description:n.payload.description,hasSubagent:n.payload.hasSubagent},a);break;case"chat:tool_start":(y=(L=i.handlers).onToolStart)==null||y.call(L,{toolName:n.payload.toolName,inputSummary:n.payload.inputSummary,toolUseId:n.payload.toolUseId,output:"",isError:!1,pending:!0,subagentType:n.payload.subagentType,description:n.payload.description,hasSubagent:n.payload.hasSubagent},a);break;case"chat:message_boundary":(O=(F=i.handlers).onMessageBoundary)==null||O.call(F,a);break;case"chat:injected":(te=(Q=i.handlers).onInjected)==null||te.call(Q,{sender:n.payload.sender,content:n.payload.content,timestamp:n.payload.timestamp},a);break;case"chat:notice":(se=(pe=i.handlers).onNotice)==null||se.call(pe,n.payload.notice,a);break;case"chat:complete":(Ke=(et=i.handlers).onComplete)==null||Ke.call(et,{...a,success:n.payload.success,error:n.payload.error,model:n.payload.model,usage:n.payload.usage});break}}}const Ny=new Py,Fa="paddock:lastSeen:",mn=new Map,$a="paddock:lastSeen-changed";function Ry(e){return Fa+e}function Vs(e){try{window.dispatchEvent(new CustomEvent($a,{detail:{sessionId:e}}))}catch{}}function _y(e){return mn.get(e)??0}function Ch(e,t){!t||!Number.isFinite(t)||t<=(mn.get(e)??0)||(mn.set(e,t),Vs(e))}function E0(e,t=Date.now()){const n=mn.get(e)??0;return t<=n||(mn.set(e,t),Vs(e)),n}function C0(e,t,n){mn.get(e)===n&&(t?mn.set(e,t):mn.delete(e),Vs(e))}function Ty(){const e=new Map;try{for(let t=0;t<localStorage.length;t++){const n=localStorage.key(t);if(!n||!n.startsWith(Fa))continue;const r=Number(localStorage.getItem(n));Number.isFinite(r)&&r>0&&e.set(n.slice(Fa.length),r)}}catch{}return e}function Ly(e){for(const t of e)try{localStorage.removeItem(Ry(t))}catch{}}const My=4;let Ic=!1;async function Dy(e){if(Ic)return;const t=Ty();if(t.size===0)return;const n=new Map;for(const u of e)for(const f of u.chatTurns??[])t.has(f.sessionId)&&n.set(f.sessionId,{slug:u.slug,serverLastSeen:f.lastSeen??0});if(n.size===0)return;Ic=!0;const r=[...n].filter(([u,{serverLastSeen:f}])=>t.get(u)>f).map(([u,{slug:f}])=>({sid:u,slug:f,when:t.get(u)})),l=[];let o=0;const i=async()=>{for(;o<r.length;){const u=r[o++];try{await Bs.markChatSeen(u.slug,u.sid,u.when),Ch(u.sid,u.when),l.push(u.sid)}catch{}}};await Promise.all(Array.from({length:Math.min(My,r.length)},()=>i()));const a=new Set(r.map(u=>u.sid)),s=[...n.keys()].filter(u=>!a.has(u));Ly([...l,...s])}function Iy({tag:e,className:t=""}){const n=si();return h.jsx("button",{type:"button",onClick:r=>{r.preventDefault(),r.stopPropagation(),n(`/tags/${encodeURIComponent(e)}`)},title:`Show projects tagged ${e}`,className:`tag relative z-10 transition-colors hover:bg-paddock-300/70 dark:hover:bg-paddock-700 ${t}`,children:e})}function G(e){return{width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",...e}}const Oy=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 5v14M5 12h14"})}),j0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),zy=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M3 10.5 12 3l9 7.5"}),h.jsx("path",{d:"M5 9.5V20a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V9.5"})]}),P0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})}),N0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"11",cy:"11",r:"7"}),h.jsx("path",{d:"m21 21-4.3-4.3"})]}),R0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M4 5h16"}),h.jsx("path",{d:"M8 5v6h12"}),h.jsx("path",{d:"M8 11v6h12"})]}),_0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M4 6h16M4 12h16M4 18h16"})}),Uy=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"})}),T0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"m22 2-7 20-4-9-9-4Z"}),h.jsx("path",{d:"M22 2 11 13"})]}),L0=e=>h.jsx("svg",{...G(e),children:h.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})}),M0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("rect",{x:"9",y:"2",width:"6",height:"12",rx:"3"}),h.jsx("path",{d:"M5 10a7 7 0 0 0 14 0"}),h.jsx("path",{d:"M12 17v4M8 21h8"})]}),D0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"m9 18 6-6-6-6"})}),I0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.6 2.6-2-2 2.6-2.6Z"})}),Fy=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"12",r:"3"}),h.jsx("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z"})]}),O0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z"}),h.jsx("path",{d:"M12 9v4M12 17h.01"})]}),z0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8"})}),jh=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M18 6 6 18M6 6l12 12"})}),U0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M13 2 4.5 13.5H11l-1 8.5 8.5-11.5H12z"})}),F0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M6 4.5v15l13-7.5z"})}),$y=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M3 6h18M3 12h18M3 18h18"})}),$0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"12",r:"9"}),h.jsx("path",{d:"M12 7v5l3 2"})]}),A0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"5",r:"1"}),h.jsx("circle",{cx:"12",cy:"12",r:"1"}),h.jsx("circle",{cx:"12",cy:"19",r:"1"})]}),B0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6M10 11v6M14 11v6"})}),W0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M12 20h9"}),h.jsx("path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"})]}),V0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z"}),h.jsx("path",{d:"M14 2v6h6"})]}),H0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M12 17v5"}),h.jsx("path",{d:"M9 10.76V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6.76a2 2 0 0 0 .59 1.42l1.12 1.12A1 1 0 0 1 17 15H7a1 1 0 0 1-.71-1.7l1.12-1.12A2 2 0 0 0 9 10.76Z"})]}),Q0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M20 6 9 17l-5-5"})}),K0=({open:e,...t})=>e?h.jsxs("svg",{...G(t),children:[h.jsx("path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z"}),h.jsx("path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10"})]}):h.jsxs("svg",{...G(t),children:[h.jsx("rect",{width:"20",height:"16",x:"2",y:"4",rx:"2"}),h.jsx("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]}),b0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"6",cy:"6",r:"3"}),h.jsx("circle",{cx:"6",cy:"18",r:"3"}),h.jsx("circle",{cx:"18",cy:"6",r:"3"}),h.jsx("path",{d:"M6 9v6M18 9a9 9 0 0 1-9 9"})]}),J0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M9.5 14.5l-1.7 1.7a4 4 0 0 1-5.66-5.66l1.7-1.7"}),h.jsx("path",{d:"M14.5 9.5l1.7-1.7a4 4 0 0 1 5.66 5.66l-1.7 1.7"}),h.jsx("path",{d:"M8 3.5v2M3.5 8h2M16 20.5v-2M20.5 16h-2"})]}),Y0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),h.jsx("path",{d:"M17 8l-5-5-5 5M12 3v12"})]}),G0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M4 17l6-5-6-5M12 19h8"})}),X0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.9a3.4 3.4 0 0 0-1-2.6c3-.3 6.2-1.5 6.2-6.6a5.2 5.2 0 0 0-1.4-3.6 4.8 4.8 0 0 0-.1-3.6s-1.1-.3-3.7 1.4a12.6 12.6 0 0 0-6.6 0C6.5 1.3 5.4 1.6 5.4 1.6a4.8 4.8 0 0 0-.1 3.6 5.2 5.2 0 0 0-1.4 3.6c0 5.1 3.2 6.3 6.2 6.6a3.4 3.4 0 0 0-1 2.6V22"})}),Ay=e=>h.jsxs("svg",{...G(e),children:[h.jsx("circle",{cx:"12",cy:"12",r:"4"}),h.jsx("path",{d:"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"})]}),By=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"})}),Wy=e=>h.jsxs("svg",{...G(e),children:[h.jsx("path",{d:"M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.5 1.5"}),h.jsx("path",{d:"M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.5-1.5"})]}),Z0=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"m6 9 6 6 6-6"})}),q0=e=>h.jsxs("svg",{...G(e),children:[h.jsx("rect",{x:"3",y:"4",width:"18",height:"4",rx:"1"}),h.jsx("path",{d:"M5 8v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8"}),h.jsx("path",{d:"M10 12h4"})]}),e1=e=>h.jsx("svg",{...G(e),children:h.jsx("path",{d:"M12 2.5l2.9 5.88 6.49.94-4.7 4.58 1.11 6.46L12 17.8l-5.8 3.05 1.11-6.46-4.7-4.58 6.49-.94z"})}),Vy=["idea","active","paused","blocked","done"];function Hy({open:e,onClose:t,onCreated:n}){const[r,l]=C.useState(""),[o,i]=C.useState(""),[a,s]=C.useState(""),[u,f]=C.useState(""),[c,p]=C.useState("active"),[x,E]=C.useState(""),[k,T]=C.useState(!1),[m,d]=C.useState(null);if(C.useEffect(()=>{e&&(l(""),i(""),s(""),f(""),p("active"),E(""),d(null))},[e]),C.useEffect(()=>{const S=P=>{P.key==="Escape"&&e&&!k&&t()};return window.addEventListener("keydown",S),()=>window.removeEventListener("keydown",S)},[e,k,t]),!e)return null;const g=async S=>{if(S.preventDefault(),!!r.trim()){T(!0),d(null);try{const P=await Bs.createProject({name:r.trim(),status:c,group:u||void 0,summary:o.trim()||void 0,repo:x.trim()||void 0,domain:a.split(",").map(_=>_.trim()).filter(Boolean)});n(P)}catch(P){d(P instanceof xl?P.message:"Failed to create project")}finally{T(!1)}}};return h.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4 backdrop-blur-sm",onClick:()=>!k&&t(),children:h.jsxs("form",{className:"w-full max-w-md animate-scale-in rounded-2xl border border-paddock-200 bg-white p-6 shadow-2xl dark:border-paddock-800 dark:bg-paddock-900",onClick:S=>S.stopPropagation(),onSubmit:g,children:[h.jsxs("div",{className:"mb-5 flex items-center justify-between",children:[h.jsx("h2",{className:"text-lg font-semibold",children:"New project"}),h.jsx("button",{type:"button",onClick:t,className:"rounded-lg p-1 text-paddock-400 hover:bg-paddock-100 hover:text-paddock-600 dark:hover:bg-paddock-800","aria-label":"Close",children:h.jsx(jh,{width:18,height:18})})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Name"}),h.jsx("input",{autoFocus:!0,className:"input",value:r,onChange:S=>l(S.target.value),placeholder:"Garage Water Heater Replacement"})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Summary (optional)"}),h.jsx("input",{className:"input",value:o,onChange:S=>i(S.target.value),placeholder:"One line on what this project is about"})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Area"}),h.jsxs("select",{className:"input",value:u,onChange:S=>f(S.target.value),children:[h.jsx("option",{value:"",children:"Unsorted"}),Ws.map(S=>h.jsx("option",{value:S.slug,children:S.label},S.slug))]})]}),h.jsxs("label",{className:"mb-4 block",children:[h.jsx("span",{className:"field-label",children:"Git repository URL (optional)"}),h.jsx("input",{className:"input",value:x,onChange:S=>E(S.target.value),placeholder:"https://github.com/owner/repo.git"}),h.jsx("span",{className:"mt-1 block text-xs text-paddock-400 dark:text-paddock-500",children:"Link an external repo and Paddock clones it as the project's working directory — the repo's own CLAUDE.md, branches & PR flow apply. Leave blank for a notebook project."})]}),h.jsxs("div",{className:"mb-5 grid grid-cols-2 gap-3",children:[h.jsxs("label",{className:"block",children:[h.jsx("span",{className:"field-label",children:"Domain tags"}),h.jsx("input",{className:"input",value:a,onChange:S=>s(S.target.value),placeholder:"home, plumbing"})]}),h.jsxs("label",{className:"block",children:[h.jsx("span",{className:"field-label",children:"Status"}),h.jsx("select",{className:"input capitalize",value:c,onChange:S=>p(S.target.value),children:Vy.map(S=>h.jsx("option",{value:S,className:"capitalize",children:S},S))})]})]}),m&&h.jsx("p",{className:"mb-4 rounded-lg bg-rose-50 px-3 py-2 text-sm text-rose-600 dark:bg-rose-950/40 dark:text-rose-300",children:m}),h.jsxs("div",{className:"flex justify-end gap-2",children:[h.jsx("button",{type:"button",className:"btn-ghost",onClick:t,disabled:k,children:"Cancel"}),h.jsx("button",{type:"submit",className:"btn-primary",disabled:k||!r.trim(),children:k?"Creating…":"Create project"})]})]})})}function Oc(e){if(typeof window>"u"||typeof window.matchMedia!="function")return null;try{return window.matchMedia(e)??null}catch{return null}}function Qy(e){const[t,n]=C.useState(()=>{var r;return((r=Oc(e))==null?void 0:r.matches)??!1});return C.useEffect(()=>{var o;const r=Oc(e);if(!r)return;const l=()=>n(!!r.matches);return l(),typeof r.addEventListener=="function"?(r.addEventListener("change",l),()=>r.removeEventListener("change",l)):((o=r.addListener)==null||o.call(r,l),()=>{var i;return(i=r.removeListener)==null?void 0:i.call(r,l)})},[e]),t}const Hs="paddock:panewidth:",Ky={key:"sidenav",def:288,min:200,max:480},t1={key:"chatlist",def:256,min:220,max:520},by="(min-width: 1024px)";function pr(e,t){return Math.min(Math.max(t,e.min),e.max)}function zc(e,t,n){return pr(n,e+t)}function Jy(e){try{const t=localStorage.getItem(Hs+e.key);if(t==null)return null;const n=Number.parseFloat(t);return Number.isFinite(n)?pr(e,n):null}catch{return null}}function Yy(e,t){try{localStorage.setItem(Hs+e.key,String(pr(e,t)))}catch{}}function Gy(e){try{localStorage.removeItem(Hs+e.key)}catch{}}function Xy(e){const t=Qy(by),[n,r]=C.useState(()=>Jy(e)),l=pr(e,n??e.def);return{isDesktop:t,width:l,style:t?{width:l}:void 0,preview:o=>r(pr(e,o)),commit:o=>{const i=pr(e,o);r(i),Yy(e,i)},reset:()=>{r(null),Gy(e)},spec:e}}function Zy({spec:e,width:t,onPreview:n,onCommit:r,onReset:l,label:o}){const i=C.useRef(null),a=C.useRef(t);a.current=t;const s=16;return h.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":o,"aria-valuenow":Math.round(t),"aria-valuemin":e.min,"aria-valuemax":e.max,tabIndex:0,onPointerDown:u=>{i.current={startX:u.clientX,startWidth:t},u.currentTarget.setPointerCapture(u.pointerId)},onPointerMove:u=>{i.current&&n(zc(i.current.startWidth,u.clientX-i.current.startX,e))},onPointerUp:u=>{if(i.current){i.current=null;try{u.currentTarget.releasePointerCapture(u.pointerId)}catch{}r(a.current)}},onDoubleClick:l,onKeyDown:u=>{if(u.key==="ArrowLeft"||u.key==="ArrowRight"){u.preventDefault();const f=zc(t,u.key==="ArrowRight"?s:-s,e);n(f),r(f)}},title:"Drag to resize · double-click to reset",className:"group/resizer absolute inset-y-0 right-0 z-10 hidden w-1.5 -mr-0.5 cursor-ew-resize touch-none lg:block",children:h.jsx("span",{className:"absolute inset-y-0 right-0 w-px bg-paddock-200 transition group-hover/resizer:w-0.5 group-hover/resizer:bg-accent group-focus/resizer:w-0.5 group-focus/resizer:bg-accent dark:bg-paddock-800"})})}function qy(e){const[t,n]=C.useState(new Map),r=C.useRef(new Map),[l,o]=C.useState(0);return C.useEffect(()=>{const i=r.current;for(const a of e)for(const s of a.chatTurns??[]){Ch(s.sessionId,s.lastSeen);const u=Date.parse(s.lastTurnCompletedAt);if(!Number.isFinite(u))continue;const f=i.get(s.sessionId);!f||u>f.at?i.set(s.sessionId,{slug:a.slug,at:u,unread:s.unread}):f.unread=s.unread}o(a=>a+1),Dy(e).catch(()=>{})},[e]),C.useEffect(()=>{const i=new Map;return Ny.onActiveInfos(a=>{for(const[s,u]of i)a.has(s)||r.current.set(s,{slug:u,at:Date.now()});i.clear();for(const[s,u]of a)i.set(s,u);n(new Map(a)),o(s=>s+1)})},[]),C.useEffect(()=>{const i=()=>o(a=>a+1);return window.addEventListener($a,i),()=>window.removeEventListener($a,i)},[]),C.useMemo(()=>{const i=new Map,a=s=>{let u=i.get(s);return u||(u={unread:0,inflight:0},i.set(s,u)),u};for(const[s,{slug:u,at:f,unread:c}]of r.current)!t.has(s)&&(c||f>_y(s))&&(a(u).unread+=1);for(const s of t.values())a(s).inflight+=1;return i},[t,l])}function e0(){const{projects:e,rootWorkspace:t,loading:n,upsert:r}=fy(),{dark:l,toggle:o}=my(),[i,a]=C.useState(!1),[s,u]=C.useState(!1),f=si(),c=Wn(),p=yy(),x=wy(),E=Xy(Ky),k=c.pathname==="/"||c.pathname==="/projects"||c.pathname.startsWith("/chat"),T=c.pathname.startsWith("/projects/")||k;C.useEffect(()=>{a(!1)},[c.pathname]),C.useEffect(()=>{document.title=p.name},[p.name]);const m=C.useMemo(()=>{const P=new Map;for(const _ of e){const L=_.group??"",y=P.get(L);y?y.push(_):P.set(L,[_])}return ky(P.keys()).map(_=>[_,P.get(_)??[]])},[e]),d=C.useMemo(()=>t?[...e,t]:e,[e,t]),g=qy(d),S=g.get(wh);return h.jsxs("div",{className:"flex h-[100dvh] flex-col overflow-hidden bg-canvas dark:bg-canvas-dark lg:flex-row",children:[!T&&h.jsxs("header",{className:"pt-safe flex items-center gap-2 border-b border-paddock-200 px-3 pb-2 dark:border-paddock-800 lg:hidden",children:[h.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":"Open menu",className:"btn-subtle -ml-1 px-2 py-2",children:h.jsx($y,{width:20,height:20})}),h.jsxs(bn,{to:"/",className:"flex items-center gap-2",children:[h.jsx(Uc,{brand:p,className:"h-7 w-7 text-sm"}),h.jsx("span",{className:"text-[15px] font-semibold tracking-tight",children:p.name})]})]}),i&&h.jsx("div",{className:"fixed inset-0 z-30 bg-black/40 backdrop-blur-sm lg:hidden","aria-hidden":"true",onClick:()=>a(!1)}),h.jsxs("aside",{style:E.style,className:`fixed inset-y-0 left-0 z-40 flex w-72 max-w-[85%] shrink-0 flex-col border-r border-paddock-200 bg-canvas shadow-2xl transition-transform duration-200 ease-out dark:border-paddock-800 dark:bg-paddock-900 lg:relative lg:z-auto lg:max-w-none lg:translate-x-0 lg:bg-white/50 lg:shadow-none dark:lg:bg-paddock-900/30 ${i?"translate-x-0":"-translate-x-full"}`,children:[E.isDesktop&&h.jsx(Zy,{spec:E.spec,width:E.width,onPreview:E.preview,onCommit:E.commit,onReset:E.reset,label:"Resize sidebar"}),h.jsxs("div",{className:"flex items-center gap-2 px-5 py-4",children:[h.jsxs(bn,{to:"/",className:"group flex items-center gap-2",children:[h.jsx(Uc,{brand:p,className:"h-8 w-8 text-base"}),h.jsx("span",{className:"text-[17px] font-semibold tracking-tight",children:p.name})]}),h.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":"Close menu",className:"btn-subtle ml-auto px-2 py-2 lg:hidden",children:h.jsx(jh,{width:18,height:18})})]}),h.jsx("div",{className:"px-3 pb-1",children:h.jsxs(bn,{to:"/",end:!0,className:({isActive:P})=>`btn-subtle w-full justify-start ${P?"bg-paddock-200/80 dark:bg-paddock-800":""}`,title:"The root workspace — every project, and the instance's own chats",children:[h.jsx(zy,{width:16,height:16}),"Home",h.jsx(Ph,{badge:S,className:"ml-auto"})]})}),h.jsxs("div",{className:"mt-5 mb-1 flex items-center justify-between pr-3",children:[h.jsx(bn,{to:uy(),className:"section-label hover:text-accent",children:"Projects"}),h.jsx("button",{type:"button",onClick:()=>u(!0),"aria-label":"New Project",title:"New Project",className:"btn-subtle -mr-1 px-1.5 py-1 text-paddock-400 hover:text-accent",children:h.jsx(Oy,{width:14,height:14})})]}),h.jsxs("nav",{className:"flex-1 overflow-y-auto px-2 pb-4",children:[n&&h.jsx("div",{className:"space-y-2 px-2 py-2",children:[0,1,2].map(P=>h.jsx("div",{className:"h-10 animate-pulse rounded-lg bg-paddock-200/60 dark:bg-paddock-800/50"},P))}),!n&&e.length===0&&h.jsx("p",{className:"px-3 py-2 text-sm text-paddock-500",children:"No projects yet."}),!n&&e.length>0&&m.map(([P,_])=>h.jsxs("div",{className:"mb-2",children:[m.length>1&&h.jsx("div",{className:"px-2.5 pb-1 pt-2 text-[10px] font-semibold uppercase tracking-wider text-paddock-400",children:Sy(P)}),_.map(L=>h.jsx(n0,{project:L,badge:g.get(L.slug)},L.slug))]},P||"unsorted"))]}),h.jsxs("div",{className:"border-t border-paddock-200 px-3 py-3 dark:border-paddock-800",children:[h.jsxs(bn,{to:"/config",className:({isActive:P})=>`btn-subtle w-full justify-start ${P?"bg-paddock-200/80 dark:bg-paddock-800":""}`,title:"Instance config — paddock.config.yaml (restart required)",children:[h.jsx(Fy,{width:15,height:15}),"Config"]}),x.enabled&&h.jsxs("a",{href:x.path,target:"_blank",rel:"noreferrer",className:"btn-subtle mt-1 w-full justify-start",title:"OpenAPI / Swagger reference (opens in a new tab)",children:[h.jsx(Wy,{width:15,height:15}),"Swagger API"]}),h.jsxs("button",{type:"button",onClick:o,className:"btn-subtle mt-1 w-full justify-start","aria-label":l?"Switch to light mode":"Switch to dark mode",title:"Toggle light / dark theme",children:[l?h.jsx(Ay,{width:15,height:15}):h.jsx(By,{width:15,height:15}),l?"Light mode":"Dark mode"]}),h.jsxs("p",{className:"mt-2 px-2 text-[11px] text-paddock-400",children:["v","0.58.0"]})]})]}),h.jsx("main",{className:"min-w-0 flex-1 overflow-hidden",children:h.jsx(C.Suspense,{fallback:h.jsx(t0,{}),children:h.jsx(Fg,{context:{openNav:()=>a(!0)}})})}),h.jsx(Hy,{open:s,onClose:()=>u(!1),onCreated:P=>{r(P),u(!1),f(`/projects/${P.slug}/chat`)}})]})}function Uc({brand:e,className:t=""}){return h.jsx("span",{className:`flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-accent text-white shadow-sm ${t}`,children:xy(e.logo)?h.jsx("img",{src:e.logo,alt:"",className:"h-full w-full object-cover"}):e.logo})}function t0(){return h.jsxs("div",{className:"flex h-full items-center justify-center","aria-busy":"true","aria-live":"polite",children:[h.jsx("span",{className:"h-6 w-6 animate-spin rounded-full border-2 border-paddock-300 border-t-accent dark:border-paddock-700 dark:border-t-accent"}),h.jsx("span",{className:"sr-only",children:"Loading…"})]})}function n0({project:e,badge:t}){return h.jsxs(bn,{to:`/projects/${e.slug}`,className:({isActive:n})=>`group mb-0.5 flex flex-col gap-1 rounded-lg px-2.5 py-2 text-sm transition-colors ${n?"bg-paddock-200/80 dark:bg-paddock-800":"hover:bg-paddock-200/50 dark:hover:bg-paddock-800/50"}`,children:[h.jsxs("span",{className:"flex items-center justify-between gap-2",children:[h.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[h.jsx(Uy,{width:13,height:13,className:"shrink-0 text-paddock-400 group-hover:text-paddock-500"}),h.jsx("span",{className:"truncate font-medium",children:e.name})]}),h.jsx(Ph,{badge:t})]}),e.domain.length>0&&h.jsxs("span",{className:"flex min-w-0 items-center gap-1 overflow-hidden pl-[18px]",children:[e.domain.slice(0,2).map(n=>h.jsx(Iy,{tag:n,className:"max-w-[7rem] truncate"},n)),e.domain.length>2&&h.jsxs("span",{className:"shrink-0 text-[11px] text-paddock-400",children:["+",e.domain.length-2]})]})]})}function Ph({badge:e,className:t=""}){const n=(e==null?void 0:e.unread)??0,r=(e==null?void 0:e.inflight)??0;return n===0&&r===0?null:h.jsxs("span",{className:`flex shrink-0 items-center gap-1.5 ${t}`,children:[r>0&&h.jsxs("span",{className:"flex items-center gap-1 text-[11px] tabular-nums text-paddock-500 dark:text-paddock-400",title:`${r} chat${r===1?"":"s"} in flight`,"aria-label":`${r} chat${r===1?"":"s"} in flight`,children:[h.jsx("span",{"aria-hidden":"true",className:"h-2.5 w-2.5 spin-eco rounded-full border-[1.5px] border-paddock-400 border-t-transparent dark:border-paddock-500 dark:border-t-transparent"}),r]}),n>0&&h.jsx("span",{className:"inline-flex min-w-[1.1rem] items-center justify-center rounded-full bg-accent px-1.5 py-0.5 text-[11px] font-semibold leading-none tabular-nums text-white",title:`${n} unread ${n===1?"reply":"replies"}`,"aria-label":`${n} unread ${n===1?"reply":"replies"}`,children:n})]})}const Nh="paddock:chunkReloadAt",r0=1e4,Fc=/dynamically imported module|module script|importing a module|failed to fetch|unable to preload|load failed|error loading/i;function l0(e){return e?e instanceof Error?e.name==="ChunkLoadError"?!0:Fc.test(e.message):Fc.test(String(e)):!1}function Qs(){try{return typeof sessionStorage<"u"?sessionStorage:void 0}catch{return}}function o0(e=Date.now(),t=Qs()){if(!t)return!1;const n=t.getItem(Nh);if(!n)return!1;const r=Number(n);return Number.isFinite(r)&&e-r<r0}function i0(e=Date.now(),t=Qs()){try{t==null||t.setItem(Nh,String(e))}catch{}}function a0(e,t=Date.now(),n=Qs()){return l0(e)&&!o0(t,n)?"reload":"show"}function s0(){const e=vh(),t=a0(e);if(C.useEffect(()=>{t==="reload"&&(i0(),window.location.reload())},[t]),t==="reload")return h.jsxs("div",{className:"flex h-[100dvh] items-center justify-center bg-canvas dark:bg-canvas-dark","aria-busy":"true","aria-live":"polite",children:[h.jsx("span",{className:"h-6 w-6 animate-spin rounded-full border-2 border-paddock-300 border-t-accent dark:border-paddock-700 dark:border-t-accent"}),h.jsx("span",{className:"sr-only",children:"Updating…"})]});const n=e instanceof Error?e.message:typeof e=="string"?e:"";return h.jsxs("div",{className:"flex h-[100dvh] flex-col items-center justify-center gap-4 bg-canvas px-6 text-center dark:bg-canvas-dark",children:[h.jsxs("div",{children:[h.jsx("h1",{className:"text-lg font-semibold tracking-tight",children:"Something went wrong"}),h.jsx("p",{className:"mt-1 max-w-md text-sm text-paddock-500 dark:text-paddock-400",children:"The app hit an unexpected error. Reloading usually fixes it."}),n?h.jsx("p",{className:"mt-2 max-w-md break-words font-mono text-[11px] text-paddock-400",children:n}):null]}),h.jsx("button",{className:"btn-primary",onClick:()=>window.location.reload(),children:"Reload"})]})}function u0(){typeof navigator>"u"||!("serviceWorker"in navigator)||window.addEventListener("load",()=>{const e=navigator.serviceWorker,t=!!e.controller;let n=!1;e.addEventListener("controllerchange",()=>{n||!t||(n=!0,window.location.reload())}),e.register("/sw.js").catch(()=>{})})}const Rh=C.lazy(()=>Sl(()=>import("./ProjectsGrid-CjfDQ37q.js"),__vite__mapDeps([0,1])).then(e=>({default:e.ProjectsGrid}))),ke=C.lazy(()=>Sl(()=>import("./ProjectView-Dz_QUyPG.js").then(e=>e.P),__vite__mapDeps([2,1,3,4])).then(e=>({default:e.ProjectView}))),c0=C.lazy(()=>Sl(()=>import("./ProjectRedirect-DOaB53YM.js"),__vite__mapDeps([5,4])).then(e=>({default:e.ProjectRedirect}))),d0=C.lazy(()=>Sl(()=>import("./InstanceConfigPage-BKE6j_Wy.js"),[]).then(e=>({default:e.InstanceConfigPage}))),_h=()=>document.documentElement.setAttribute("data-tab-hidden",document.hidden?"true":"false");document.addEventListener("visibilitychange",_h);_h();function f0(){const{tag:e}=Pg();return h.jsx(Rh,{filterTag:e?decodeURIComponent(e):void 0})}const h0=Kg([{path:"/",element:h.jsx(e0,{}),errorElement:h.jsx(s0,{}),children:[{index:!0,element:h.jsx(ke,{root:!0})},{path:"projects",element:h.jsx(Rh,{})},{path:"tags/:tag",element:h.jsx(f0,{})},{path:"projects/:slug",element:h.jsx(c0,{})},{path:"projects/:slug/home",element:h.jsx(ke,{})},{path:"projects/:slug/chat",element:h.jsx(ke,{})},{path:"projects/:slug/chat/:sessionId",element:h.jsx(ke,{})},{path:"projects/:slug/files",element:h.jsx(ke,{})},{path:"projects/:slug/files/*",element:h.jsx(ke,{})},{path:"projects/:slug/changes",element:h.jsx(ke,{})},{path:"projects/:slug/changes/:file",element:h.jsx(ke,{})},{path:"projects/:slug/history",element:h.jsx(ke,{})},{path:"projects/:slug/settings",element:h.jsx(ke,{})},{path:"projects/:slug/triggers",element:h.jsx(ke,{})},{path:"projects/:slug/hooks",element:h.jsx(ke,{})},{path:"chat",element:h.jsx(ke,{root:!0})},{path:"chat/:sessionId",element:h.jsx(ke,{root:!0})},{path:"files",element:h.jsx(ke,{root:!0})},{path:"files/*",element:h.jsx(ke,{root:!0})},{path:"changes",element:h.jsx(ke,{root:!0})},{path:"changes/:file",element:h.jsx(ke,{root:!0})},{path:"history",element:h.jsx(ke,{root:!0})},{path:"triggers",element:h.jsx(ke,{root:!0})},{path:"settings",element:h.jsx(ke,{root:!0})},{path:"config",element:h.jsx(d0,{})}]}]);Wi.createRoot(document.getElementById("root")).render(h.jsx(Xc.StrictMode,{children:h.jsx(dy,{children:h.jsx(ey,{router:h0})})}));u0();export{Zy as $,O0 as A,b0 as B,P0 as C,T0 as D,Uy as E,V0 as F,Is as G,N0 as H,Ny as I,j0 as J,X0 as K,oy as L,$y as M,Hy as N,G0 as O,Oy as P,H0 as Q,Ws as R,z0 as S,Iy as T,Y0 as U,F0 as V,I0 as W,jh as X,_0 as Y,R0 as Z,Sl as _,si as a,Z0 as a0,J0 as a1,q0 as a2,K0 as a3,e1 as a4,E0 as a5,C0 as a6,Ch as a7,_y as a8,wh as a9,Wn as aa,w0 as ab,x0 as ac,Xy as ad,y0 as ae,g0 as af,S0 as ag,t1 as ah,Bs as b,$0 as c,k0 as d,Sy as e,D0 as f,uy as g,Pg as h,v0 as i,h as j,Q0 as k,xl as l,m0 as m,Fy as n,ky as o,Ac as p,A0 as q,C as r,W0 as s,B0 as t,fy as u,p0 as v,M0 as w,L0 as x,U0 as y,Wy as z};
|
|
71
71
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{color-scheme:light dark;--accent: 194 96 60;--accent-600: 168 78 47;--accent-700: 138 63 38}html,body,#root{height:100%}html,body{overflow:hidden;overscroll-behavior:none}@media (max-width: 640px){input,textarea{font-size:16px!important}}a,button,[role=button],input,textarea,select{-webkit-tap-highlight-color:transparent}body{--tw-bg-opacity: 1;background-color:rgb(247 246 241 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(40 34 26 / var(--tw-text-opacity));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv05","ss01"}.dark body{--tw-bg-opacity: 1;background-color:rgb(20 18 16 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(236 233 224 / var(--tw-text-opacity))}*{scrollbar-width:thin;scrollbar-color:rgb(var(--scroll-thumb)) transparent}:root{--scroll-thumb: 212 205 182}.dark{--scroll-thumb: 62 53 40}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background-color:rgb(var(--scroll-thumb));border-radius:9999px}::-webkit-scrollbar-track{background:transparent}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.status-pill{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:11px;font-weight:500;line-height:1}.tag{display:inline-flex;align-items:center;border-radius:.375rem;background-color:#d4cdb6b3;padding:.125rem .375rem;font-size:11px;font-weight:500;--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.tag:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.btn{display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-primary:disabled{cursor:not-allowed;opacity:.5}.btn-primary{--tw-bg-opacity: 1;background-color:rgb(var(--accent) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(var(--accent-600) / var(--tw-bg-opacity))}.btn-primary:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-ghost{display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-ghost:disabled{cursor:not-allowed;opacity:.5}.btn-ghost{background-color:#d4cdb699;--tw-text-opacity: 1;color:rgb(62 53 40 / var(--tw-text-opacity))}.btn-ghost:hover{--tw-bg-opacity: 1;background-color:rgb(212 205 182 / var(--tw-bg-opacity))}.btn-ghost:is(.dark *){background-color:#3e352880;--tw-text-opacity: 1;color:rgb(236 234 223 / var(--tw-text-opacity))}.btn-ghost:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity))}.btn-subtle{display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-subtle:disabled{cursor:not-allowed;opacity:.5}.btn-subtle{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.btn-subtle:hover{background-color:#d4cdb699}.btn-subtle:is(.dark *){--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.btn-subtle:hover:is(.dark *){background-color:#3e352899}.btn-danger{display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-danger:disabled{cursor:not-allowed;opacity:.5}.btn-danger{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-danger:hover{--tw-bg-opacity: 1;background-color:rgb(190 18 60 / var(--tw-bg-opacity))}.btn-danger:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.chat-row{container-type:inline-size}.chat-row-time{transition:opacity .15s ease-out}.menu{position:absolute;z-index:50;min-width:10rem}.menu{animation:scale-in .18s ease-out;overflow:hidden;border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.menu:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(40 34 26 / var(--tw-bg-opacity))}.menu-item{display:flex;width:100%;align-items:center;gap:.5rem;padding:.5rem .75rem;text-align:left;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.menu-item:hover{--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity))}.menu-item:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.menu-item:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity))}.menu-item-danger{display:flex;width:100%;align-items:center;gap:.5rem;padding:.5rem .75rem;text-align:left;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.menu-item-danger:hover{--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity))}.menu-item-danger:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.menu-item-danger:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity))}.menu-item-danger{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.menu-item-danger:hover{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity))}.menu-item-danger:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}.menu-item-danger:hover:is(.dark *){background-color:#4c051980}.card{border-radius:1rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity));padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.card:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-border-opacity: 1;border-color:rgb(187 174 140 / var(--tw-border-opacity));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity));background-color:#28221ab3}.card:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 77 57 / var(--tw-border-opacity))}.input{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(187 174 140 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(247 246 241 / var(--tw-bg-opacity));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.input::-moz-placeholder{--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.input::placeholder{--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.input:focus{--tw-border-opacity: 1;border-color:rgb(var(--accent) / var(--tw-border-opacity));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(var(--accent) / .2)}.input:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 77 57 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(23 20 16 / var(--tw-bg-opacity))}.input:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.input:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.field-label{margin-bottom:.25rem;display:block;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em;--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.pt-safe{padding-top:max(env(safe-area-inset-top),.5rem)}.pb-safe{padding-bottom:max(env(safe-area-inset-bottom),.75rem)}.section-label{padding-left:.75rem;padding-right:.75rem;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.md{font-size:14px;line-height:1.625}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin-top:.5rem;margin-bottom:.5rem}.md h1{margin-bottom:.5rem;margin-top:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.md h2{margin-bottom:.5rem;margin-top:1rem;font-size:1rem;line-height:1.5rem;font-weight:600}.md h3{margin-bottom:.375rem;margin-top:.75rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.md ul{margin-top:.5rem;margin-bottom:.5rem;list-style-type:disc}.md ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.md ul{padding-left:1.25rem}.md ol{margin-top:.5rem;margin-bottom:.5rem;list-style-type:decimal}.md ol>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.md ol{padding-left:1.25rem}.md li>ul,.md li>ol{margin-top:.25rem;margin-bottom:.25rem}.md a{--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity));text-decoration-line:underline;text-underline-offset:2px}.md a:hover{--tw-text-opacity: 1;color:rgb(var(--accent-600) / var(--tw-text-opacity))}.md blockquote{margin-top:.5rem;margin-bottom:.5rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(187 174 140 / var(--tw-border-opacity));padding-left:.75rem;--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.md blockquote:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 77 57 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.md code{border-radius:.25rem;background-color:#d4cdb6b3;padding:.125rem .25rem;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:12.5px}.md code:is(.dark *){background-color:#3e3528cc}.md pre{margin-top:.75rem;margin-bottom:.75rem;overflow-x:auto;border-radius:.5rem;--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity));padding:.75rem;font-size:12.5px;line-height:1.625}.md pre:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 20 16 / var(--tw-bg-opacity))}.md pre code{background-color:transparent;padding:0}.md table{margin-top:.75rem;margin-bottom:.75rem;width:100%;border-collapse:collapse;font-size:13px}.md th,.md td{border-width:1px;--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity));padding:.25rem .5rem;text-align:left}.md th:is(.dark *),.md td:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity))}.md th{background-color:#eceadfb3;font-weight:600}.md th:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(40 34 26 / var(--tw-bg-opacity))}.md hr{margin-top:.75rem;margin-bottom:.75rem;--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity))}.md hr:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity))}.prose-doc .md{font-size:15px;line-height:1.75rem;--tw-text-opacity: 1;color:rgb(62 53 40 / var(--tw-text-opacity))}.prose-doc .md:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.prose-doc .md h1{margin-bottom:.75rem;margin-top:1.5rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity));padding-bottom:.5rem;font-size:1.5rem;line-height:2rem;font-weight:700;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(40 34 26 / var(--tw-text-opacity))}.prose-doc .md h1:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(236 233 224 / var(--tw-text-opacity))}.prose-doc .md h2{margin-bottom:.5rem;margin-top:1.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(40 34 26 / var(--tw-text-opacity))}.prose-doc .md h2:is(.dark *){--tw-text-opacity: 1;color:rgb(236 233 224 / var(--tw-text-opacity))}.prose-doc .md h3{margin-bottom:.5rem;margin-top:1.25rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(40 34 26 / var(--tw-text-opacity))}.prose-doc .md h3:is(.dark *){--tw-text-opacity: 1;color:rgb(236 233 224 / var(--tw-text-opacity))}.prose-doc .md p,.prose-doc .md ul{margin-top:.75rem;margin-bottom:.75rem}.prose-doc .md ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.prose-doc .md ol{margin-top:.75rem;margin-bottom:.75rem}.prose-doc .md ol>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.prose-doc .md blockquote{margin-top:1rem;margin-bottom:1rem;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-left-width:4px;border-color:rgb(var(--accent) / .7);background-color:rgb(var(--accent) / .05);padding:.5rem .75rem .5rem 1rem;--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.prose-doc .md blockquote:is(.dark *){--tw-text-opacity: 1;color:rgb(187 174 140 / var(--tw-text-opacity))}.prose-doc .md pre{margin-top:1rem;margin-bottom:1rem;border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity));padding:1rem}.prose-doc .md pre:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity))}.prose-doc .md table{margin-top:1rem;margin-bottom:1rem;overflow:hidden;border-radius:.5rem;font-size:.875rem;line-height:1.25rem}.prose-doc .md th,.prose-doc .md td{padding:.375rem .75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-2\.5{left:.625rem}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-8{top:2rem}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.m-1{margin:.25rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-3{margin-top:.75rem;margin-bottom:.75rem}.-mb-px{margin-bottom:-1px}.-ml-1{margin-left:-.25rem}.-mr-0\.5{margin-right:-.125rem}.-mr-1{margin-right:-.25rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-auto{margin-left:auto}.mr-1\.5{margin-right:.375rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[100dvh\]{height:100dvh}.h-\[18px\]{height:18px}.h-\[52px\]{height:52px}.h-\[600px\]{height:600px}.h-full{height:100%}.h-px{height:1px}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.max-h-\[35vh\]{max-height:35vh}.max-h-\[480px\]{max-height:480px}.max-h-\[90vh\]{max-height:90vh}.max-h-full{max-height:100%}.min-h-0{min-height:0px}.min-h-\[360px\]{min-height:360px}.min-h-\[40px\]{min-height:40px}.min-h-\[44px\]{min-height:44px}.min-h-\[480px\]{min-height:480px}.min-h-\[5rem\]{min-height:5rem}.min-h-\[9rem\]{min-height:9rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-12{width:3rem}.w-14{width:3.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/5{width:60%}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[18px\]{width:18px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[1\.1rem\]{min-width:1.1rem}.min-w-\[54rem\]{min-width:54rem}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[12rem\]{max-width:12rem}.max-w-\[14rem\]{max-width:14rem}.max-w-\[15rem\]{max-width:15rem}.max-w-\[16rem\]{max-width:16rem}.max-w-\[240px\]{max-width:240px}.max-w-\[7rem\]{max-width:7rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[85\%\]{max-width:85%}.max-w-\[90\%\]{max-width:90%}.max-w-\[92\%\]{max-width:92%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fade-in .25s ease-out}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes scale-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.animate-scale-in{animation:scale-in .18s ease-out}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto\,1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-accent\/15>:not([hidden])~:not([hidden]){border-color:rgb(var(--accent) / .15)}.divide-paddock-200\/50>:not([hidden])~:not([hidden]){border-color:#d4cdb680}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-bl-md{border-bottom-left-radius:.375rem}.rounded-br-md{border-bottom-right-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-accent{--tw-border-opacity: 1;border-color:rgb(var(--accent) / var(--tw-border-opacity))}.border-accent\/20{border-color:rgb(var(--accent) / .2)}.border-accent\/25{border-color:rgb(var(--accent) / .25)}.border-accent\/30{border-color:rgb(var(--accent) / .3)}.border-accent\/40{border-color:rgb(var(--accent) / .4)}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity))}.border-amber-300\/60{border-color:#fcd34d99}.border-amber-300\/70{border-color:#fcd34db3}.border-current{border-color:currentColor}.border-emerald-300{--tw-border-opacity: 1;border-color:rgb(110 231 183 / var(--tw-border-opacity))}.border-emerald-500\/40{border-color:#10b98166}.border-paddock-100{--tw-border-opacity: 1;border-color:rgb(236 234 223 / var(--tw-border-opacity))}.border-paddock-200{--tw-border-opacity: 1;border-color:rgb(212 205 182 / var(--tw-border-opacity))}.border-paddock-200\/60{border-color:#d4cdb699}.border-paddock-200\/70{border-color:#d4cdb6b3}.border-paddock-300{--tw-border-opacity: 1;border-color:rgb(187 174 140 / var(--tw-border-opacity))}.border-paddock-300\/60{border-color:#bbae8c99}.border-paddock-300\/70{border-color:#bbae8cb3}.border-paddock-400{--tw-border-opacity: 1;border-color:rgb(164 146 106 / var(--tw-border-opacity))}.border-rose-200\/50{border-color:#fecdd380}.border-rose-300\/60{border-color:#fda4af99}.border-rose-300\/70{border-color:#fda4afb3}.border-sky-200\/40{border-color:#bae6fd66}.border-sky-200\/60{border-color:#bae6fd99}.border-sky-300\/50{border-color:#7dd3fc80}.border-sky-300\/60{border-color:#7dd3fc99}.border-sky-300\/70{border-color:#7dd3fcb3}.border-transparent{border-color:transparent}.border-t-accent{--tw-border-opacity: 1;border-top-color:rgb(var(--accent) / var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(var(--accent) / var(--tw-bg-opacity))}.bg-accent\/10{background-color:rgb(var(--accent) / .1)}.bg-accent\/15{background-color:rgb(var(--accent) / .15)}.bg-accent\/\[0\.06\]{background-color:rgb(var(--accent) / .06)}.bg-accent\/\[0\.08\]{background-color:rgb(var(--accent) / .08)}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-black\/40{background-color:#0006}.bg-black\/55{background-color:#0000008c}.bg-black\/80{background-color:#000c}.bg-canvas{--tw-bg-opacity: 1;background-color:rgb(247 246 241 / var(--tw-bg-opacity))}.bg-canvas\/80{background-color:#f7f6f1cc}.bg-canvas\/95{background-color:#f7f6f1f2}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-paddock-100{--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity))}.bg-paddock-100\/50{background-color:#eceadf80}.bg-paddock-100\/60{background-color:#eceadf99}.bg-paddock-100\/70{background-color:#eceadfb3}.bg-paddock-200{--tw-bg-opacity: 1;background-color:rgb(212 205 182 / var(--tw-bg-opacity))}.bg-paddock-200\/60{background-color:#d4cdb699}.bg-paddock-200\/70{background-color:#d4cdb6b3}.bg-paddock-200\/80{background-color:#d4cdb6cc}.bg-paddock-300{--tw-bg-opacity: 1;background-color:rgb(187 174 140 / var(--tw-bg-opacity))}.bg-paddock-300\/70{background-color:#bbae8cb3}.bg-paddock-400{--tw-bg-opacity: 1;background-color:rgb(164 146 106 / var(--tw-bg-opacity))}.bg-paddock-50{--tw-bg-opacity: 1;background-color:rgb(247 246 241 / var(--tw-bg-opacity))}.bg-paddock-50\/40{background-color:#f7f6f166}.bg-paddock-50\/60{background-color:#f7f6f199}.bg-paddock-50\/80{background-color:#f7f6f1cc}.bg-paddock-500{--tw-bg-opacity: 1;background-color:rgb(143 124 84 / var(--tw-bg-opacity))}.bg-paddock-600{--tw-bg-opacity: 1;background-color:rgb(115 98 68 / var(--tw-bg-opacity))}.bg-paddock-900{--tw-bg-opacity: 1;background-color:rgb(40 34 26 / var(--tw-bg-opacity))}.bg-paddock-950{--tw-bg-opacity: 1;background-color:rgb(23 20 16 / var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity))}.bg-rose-200\/70{background-color:#fecdd3b3}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity))}.bg-rose-50\/50{background-color:#fff1f280}.bg-rose-50\/60{background-color:#fff1f299}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.bg-rose-500\/10{background-color:#f43f5e1a}.bg-rose-600{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity: 1;background-color:rgb(224 242 254 / var(--tw-bg-opacity))}.bg-sky-50\/40{background-color:#f0f9ff66}.bg-sky-50\/50{background-color:#f0f9ff80}.bg-sky-50\/95{background-color:#f0f9fff2}.bg-sky-500{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.bg-sky-500\/10{background-color:#0ea5e91a}.bg-sky-500\/15{background-color:#0ea5e926}.bg-transparent{background-color:transparent}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/50{background-color:#ffffff80}.bg-white\/60{background-color:#fff9}.bg-zinc-200{--tw-bg-opacity: 1;background-color:rgb(228 228 231 / var(--tw-bg-opacity))}.bg-zinc-400{--tw-bg-opacity: 1;background-color:rgb(161 161 170 / var(--tw-bg-opacity))}.stroke-accent{stroke:rgb(var(--accent) / 1)}.stroke-amber-500{stroke:#f59e0b}.stroke-paddock-200{stroke:#d4cdb6}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-4{padding-bottom:1rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-8{padding-left:2rem}.pl-\[18px\]{padding-left:18px}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-7{padding-right:1.75rem}.pr-8{padding-right:2rem}.pr-\[…\]{padding-right:…}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.font-sans{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[28px\]{font-size:28px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity))}.text-accent-700{--tw-text-opacity: 1;color:rgb(var(--accent-700) / var(--tw-text-opacity))}.text-accent\/80{color:rgb(var(--accent) / .8)}.text-accent\/90{color:rgb(var(--accent) / .9)}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity))}.text-amber-800\/80{color:#92400ecc}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity))}.text-ink{--tw-text-opacity: 1;color:rgb(40 34 26 / var(--tw-text-opacity))}.text-paddock-200{--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.text-paddock-300{--tw-text-opacity: 1;color:rgb(187 174 140 / var(--tw-text-opacity))}.text-paddock-400{--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.text-paddock-500{--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.text-paddock-600{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.text-paddock-700{--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.text-paddock-800{--tw-text-opacity: 1;color:rgb(62 53 40 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity))}.text-rose-800{--tw-text-opacity: 1;color:rgb(159 18 57 / var(--tw-text-opacity))}.text-rose-800\/80{color:#9f1239cc}.text-rose-900{--tw-text-opacity: 1;color:rgb(136 19 55 / var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity))}.text-sky-700\/80{color:#0369a1cc}.text-sky-800{--tw-text-opacity: 1;color:rgb(7 89 133 / var(--tw-text-opacity))}.text-sky-800\/80{color:#075985cc}.text-sky-800\/90{color:#075985e6}.text-sky-900{--tw-text-opacity: 1;color:rgb(12 74 110 / var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity: 1;color:rgb(124 58 237 / var(--tw-text-opacity))}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/70{color:#ffffffb3}.text-white\/90{color:#ffffffe6}.text-zinc-600{--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.accent-accent{accent-color:rgb(var(--accent) / 1)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-accent\/20{--tw-ring-color: rgb(var(--accent) / .2)}.ring-accent\/30{--tw-ring-color: rgb(var(--accent) / .3)}.ring-paddock-200\/60{--tw-ring-color: rgb(212 205 182 / .6)}.ring-paddock-200\/70{--tw-ring-color: rgb(212 205 182 / .7)}.ring-paddock-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(187 174 140 / var(--tw-ring-opacity))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.subagent-reveal{animation:subagent-reveal 1.6s ease-in-out 2}.spin-eco{animation:spin-eco 1.2s steps(12,end) infinite;will-change:transform}.streaming-caret:after{content:"▍";margin-left:.125rem;display:inline-block;--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity));animation:caret-blink 1s step-end infinite}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2")}@media (hover: hover){@container (width < 226px){.chat-row--actions-6:hover .chat-row-time{opacity:0}}@container (width < 252px){.chat-row--actions-7:hover .chat-row-time{opacity:0}}@container (width < 278px){.chat-row--actions-8:hover .chat-row-time{opacity:0}}}.hljs{--tw-text-opacity: 1;color:rgb(62 53 40 / var(--tw-text-opacity))}.hljs:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.hljs-comment,.hljs-quote{font-style:italic;--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.hljs-comment:is(.dark *),.hljs-quote:is(.dark *){--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.hljs-keyword,.hljs-selector-tag,.hljs-operator{font-weight:500;--tw-text-opacity: 1;color:rgb(var(--accent-700) / var(--tw-text-opacity))}.hljs-keyword:is(.dark *),.hljs-selector-tag:is(.dark *),.hljs-operator:is(.dark *){--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity))}.hljs-literal,.hljs-number,.hljs-symbol,.hljs-bullet{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.hljs-literal:is(.dark *),.hljs-number:is(.dark *),.hljs-symbol:is(.dark *),.hljs-bullet:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.hljs-string,.hljs-regexp,.hljs-meta .hljs-string{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity))}.hljs-string:is(.dark *),.hljs-regexp:is(.dark *),.hljs-meta .hljs-string:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.hljs-built_in,.hljs-type,.hljs-class .hljs-title{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity))}.hljs-built_in:is(.dark *),.hljs-type:is(.dark *),.hljs-class .hljs-title:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.hljs-title,.hljs-title.function_,.hljs-function .hljs-title,.hljs-section{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity))}.hljs-title:is(.dark *),.hljs-title.function_:is(.dark *),.hljs-function .hljs-title:is(.dark *),.hljs-section:is(.dark *){--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity))}.hljs-variable,.hljs-template-variable,.hljs-params{--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.hljs-variable:is(.dark *),.hljs-template-variable:is(.dark *),.hljs-params:is(.dark *){--tw-text-opacity: 1;color:rgb(187 174 140 / var(--tw-text-opacity))}.hljs-attr,.hljs-attribute,.hljs-property{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity))}.hljs-attr:is(.dark *),.hljs-attribute:is(.dark *),.hljs-property:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.hljs-name,.hljs-tag{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.hljs-name:is(.dark *),.hljs-tag:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}.hljs-meta,.hljs-punctuation{--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.hljs-meta:is(.dark *),.hljs-punctuation:is(.dark *){--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:600}.hljs-deletion{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity))}.hljs-deletion:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}.hljs-addition{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity))}.hljs-addition:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}@keyframes spin-eco{to{transform:rotate(1turn)}}@keyframes caret-blink{0%,49.9%{opacity:1}50%,to{opacity:0}}@keyframes subagent-reveal{0%,to{box-shadow:0 0 rgb(var(--accent) / 0);background-color:rgb(var(--accent) / .06)}20%,60%{box-shadow:0 0 0 3px rgb(var(--accent) / .35);background-color:rgb(var(--accent) / .16)}}@media (prefers-reduced-motion: reduce){.spin-eco,.streaming-caret:after,.animate-spin,.animate-ping,.animate-pulse,.animate-bounce{animation:none!important}.streaming-caret:after{opacity:1}}[data-tab-hidden=true] .spin-eco,[data-tab-hidden=true] .streaming-caret:after{animation-play-state:paused}.placeholder\:text-paddock-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.placeholder\:text-paddock-400::placeholder{--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.first\:border-t-0:first-child{border-top-width:0px}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.focus-within\:border-accent:focus-within{--tw-border-opacity: 1;border-color:rgb(var(--accent) / var(--tw-border-opacity))}.focus-within\:opacity-100:focus-within{opacity:1}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-within\:ring-accent\/20:focus-within{--tw-ring-color: rgb(var(--accent) / .2)}.hover\:bg-accent\/10:hover{background-color:rgb(var(--accent) / .1)}.hover\:bg-accent\/20:hover{background-color:rgb(var(--accent) / .2)}.hover\:bg-amber-700:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity))}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-black\/5:hover{background-color:#0000000d}.hover\:bg-black\/75:hover{background-color:#000000bf}.hover\:bg-paddock-100:hover{--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity))}.hover\:bg-paddock-100\/60:hover{background-color:#eceadf99}.hover\:bg-paddock-100\/70:hover{background-color:#eceadfb3}.hover\:bg-paddock-200:hover{--tw-bg-opacity: 1;background-color:rgb(212 205 182 / var(--tw-bg-opacity))}.hover\:bg-paddock-200\/40:hover{background-color:#d4cdb666}.hover\:bg-paddock-200\/50:hover{background-color:#d4cdb680}.hover\:bg-paddock-200\/60:hover{background-color:#d4cdb699}.hover\:bg-paddock-200\/70:hover{background-color:#d4cdb6b3}.hover\:bg-paddock-300:hover{--tw-bg-opacity: 1;background-color:rgb(187 174 140 / var(--tw-bg-opacity))}.hover\:bg-paddock-300\/60:hover{background-color:#bbae8c99}.hover\:bg-paddock-300\/70:hover{background-color:#bbae8cb3}.hover\:bg-paddock-700:hover{--tw-bg-opacity: 1;background-color:rgb(91 77 57 / var(--tw-bg-opacity))}.hover\:bg-rose-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity))}.hover\:bg-rose-700:hover{--tw-bg-opacity: 1;background-color:rgb(190 18 60 / var(--tw-bg-opacity))}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity))}.hover\:text-accent-600:hover{--tw-text-opacity: 1;color:rgb(var(--accent-600) / var(--tw-text-opacity))}.hover\:text-amber-500:hover{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity))}.hover\:text-paddock-600:hover{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.hover\:text-paddock-700:hover{--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.hover\:text-rose-500:hover{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity))}.hover\:text-rose-600:hover{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.hover\:text-rose-900:hover{--tw-text-opacity: 1;color:rgb(136 19 55 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-100:hover{opacity:1}.hover\:ring-accent:hover{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--accent) / var(--tw-ring-opacity))}.focus\:border-accent:focus{--tw-border-opacity: 1;border-color:rgb(var(--accent) / var(--tw-border-opacity))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-accent\/20:focus{--tw-ring-color: rgb(var(--accent) / .2)}.focus\:ring-accent\/30:focus{--tw-ring-color: rgb(var(--accent) / .3)}.focus-visible\:bg-black\/75:focus-visible{background-color:#000000bf}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-accent:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--accent) / var(--tw-ring-opacity))}.focus-visible\:ring-white\/70:focus-visible{--tw-ring-color: rgb(255 255 255 / .7)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:focus-within .group-focus-within\:pointer-events-auto{pointer-events:auto}.group:focus-within .group-focus-within\:opacity-100{opacity:1}.group:hover .group-hover\:pointer-events-auto{pointer-events:auto}.group:hover .group-hover\:hidden{display:none}.group\/resizer:hover .group-hover\/resizer\:w-0\.5{width:.125rem}.group\/resizer:hover .group-hover\/resizer\:bg-accent{--tw-bg-opacity: 1;background-color:rgb(var(--accent) / var(--tw-bg-opacity))}.group:hover .group-hover\:bg-paddock-400{--tw-bg-opacity: 1;background-color:rgb(164 146 106 / var(--tw-bg-opacity))}.group:hover .group-hover\:text-paddock-500{--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.group\/chat:hover .group-hover\/chat\:opacity-100,.group\/file:hover .group-hover\/file\:opacity-100,.group\/pin:hover .group-hover\/pin\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.group\/resizer:focus .group-focus\/resizer\:w-0\.5{width:.125rem}.group\/resizer:focus .group-focus\/resizer\:bg-accent{--tw-bg-opacity: 1;background-color:rgb(var(--accent) / var(--tw-bg-opacity))}.group:focus-visible .group-focus-visible\:block{display:block}.group:focus-visible .group-focus-visible\:hidden{display:none}@media (hover: hover){.can-hover\:opacity-0{opacity:0}.can-hover\:hover\:bg-paddock-100:hover{--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity))}.can-hover\:hover\:bg-rose-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity))}.can-hover\:hover\:text-paddock-700:hover{--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.can-hover\:hover\:text-rose-600:hover{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.group:focus-within .can-hover\:group-focus-within\:opacity-100{opacity:1}.group:hover .can-hover\:group-hover\:block{display:block}.group:hover .can-hover\:group-hover\:hidden{display:none}.group:hover .can-hover\:group-hover\:opacity-100{opacity:1}}.dark\:divide-paddock-800\/60:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#3e352899}.dark\:border-accent\/40:is(.dark *){border-color:rgb(var(--accent) / .4)}.dark\:border-amber-700\/60:is(.dark *){border-color:#b4530999}.dark\:border-amber-800\/60:is(.dark *){border-color:#92400e99}.dark\:border-amber-900\/60:is(.dark *){border-color:#78350f99}.dark\:border-emerald-700\/60:is(.dark *){border-color:#04785799}.dark\:border-paddock-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(143 124 84 / var(--tw-border-opacity))}.dark\:border-paddock-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(115 98 68 / var(--tw-border-opacity))}.dark\:border-paddock-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 77 57 / var(--tw-border-opacity))}.dark\:border-paddock-700\/60:is(.dark *){border-color:#5b4d3999}.dark\:border-paddock-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(62 53 40 / var(--tw-border-opacity))}.dark\:border-paddock-800\/60:is(.dark *){border-color:#3e352899}.dark\:border-rose-900\/40:is(.dark *){border-color:#88133766}.dark\:border-rose-900\/60:is(.dark *){border-color:#88133799}.dark\:border-rose-900\/70:is(.dark *){border-color:#881337b3}.dark\:border-sky-500\/30:is(.dark *){border-color:#0ea5e94d}.dark\:border-sky-500\/40:is(.dark *){border-color:#0ea5e966}.dark\:border-sky-900\/40:is(.dark *){border-color:#0c4a6e66}.dark\:border-sky-900\/50:is(.dark *){border-color:#0c4a6e80}.dark\:border-t-accent:is(.dark *){--tw-border-opacity: 1;border-top-color:rgb(var(--accent) / var(--tw-border-opacity))}.dark\:border-t-transparent:is(.dark *){border-top-color:transparent}.dark\:bg-accent\/10:is(.dark *){background-color:rgb(var(--accent) / .1)}.dark\:bg-accent\/15:is(.dark *){background-color:rgb(var(--accent) / .15)}.dark\:bg-amber-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/50:is(.dark *){background-color:#78350f80}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-amber-950\/40:is(.dark *){background-color:#451a0366}.dark\:bg-amber-950\/50:is(.dark *){background-color:#451a0380}.dark\:bg-amber-950\/60:is(.dark *){background-color:#451a0399}.dark\:bg-canvas-dark:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 18 16 / var(--tw-bg-opacity))}.dark\:bg-canvas-dark\/80:is(.dark *){background-color:#141210cc}.dark\:bg-canvas-dark\/95:is(.dark *){background-color:#141210f2}.dark\:bg-emerald-900\/20:is(.dark *){background-color:#064e3b33}.dark\:bg-emerald-900\/50:is(.dark *){background-color:#064e3b80}.dark\:bg-emerald-950\/30:is(.dark *){background-color:#022c224d}.dark\:bg-emerald-950\/40:is(.dark *){background-color:#022c2266}.dark\:bg-emerald-950\/50:is(.dark *){background-color:#022c2280}.dark\:bg-emerald-950\/60:is(.dark *){background-color:#022c2299}.dark\:bg-paddock-100:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(236 234 223 / var(--tw-bg-opacity))}.dark\:bg-paddock-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(115 98 68 / var(--tw-bg-opacity))}.dark\:bg-paddock-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(91 77 57 / var(--tw-bg-opacity))}.dark\:bg-paddock-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity))}.dark\:bg-paddock-800\/50:is(.dark *){background-color:#3e352880}.dark\:bg-paddock-800\/60:is(.dark *){background-color:#3e352899}.dark\:bg-paddock-800\/70:is(.dark *){background-color:#3e3528b3}.dark\:bg-paddock-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(40 34 26 / var(--tw-bg-opacity))}.dark\:bg-paddock-900\/40:is(.dark *){background-color:#28221a66}.dark\:bg-paddock-900\/50:is(.dark *){background-color:#28221a80}.dark\:bg-paddock-900\/60:is(.dark *){background-color:#28221a99}.dark\:bg-paddock-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 20 16 / var(--tw-bg-opacity))}.dark\:bg-paddock-950\/40:is(.dark *){background-color:#17141066}.dark\:bg-paddock-950\/60:is(.dark *){background-color:#17141099}.dark\:bg-rose-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(190 18 60 / var(--tw-bg-opacity))}.dark\:bg-rose-900\/50:is(.dark *){background-color:#88133780}.dark\:bg-rose-900\/60:is(.dark *){background-color:#88133799}.dark\:bg-rose-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(76 5 25 / var(--tw-bg-opacity))}.dark\:bg-rose-950\/20:is(.dark *){background-color:#4c051933}.dark\:bg-rose-950\/30:is(.dark *){background-color:#4c05194d}.dark\:bg-rose-950\/40:is(.dark *){background-color:#4c051966}.dark\:bg-rose-950\/50:is(.dark *){background-color:#4c051980}.dark\:bg-rose-950\/60:is(.dark *){background-color:#4c051999}.dark\:bg-rose-950\/80:is(.dark *){background-color:#4c0519cc}.dark\:bg-sky-400\/10:is(.dark *){background-color:#38bdf81a}.dark\:bg-sky-900\/50:is(.dark *){background-color:#0c4a6e80}.dark\:bg-sky-950\/20:is(.dark *){background-color:#082f4933}.dark\:bg-sky-950\/50:is(.dark *){background-color:#082f4980}.dark\:bg-sky-950\/60:is(.dark *){background-color:#082f4999}.dark\:bg-sky-950\/85:is(.dark *){background-color:#082f49d9}.dark\:bg-violet-950\/50:is(.dark *){background-color:#2e106580}.dark\:bg-zinc-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity))}.dark\:stroke-paddock-700:is(.dark *){stroke:#5b4d39}.dark\:text-accent:is(.dark *){--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity))}.dark\:text-amber-200:is(.dark *){--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity))}.dark\:text-amber-300\/70:is(.dark *){color:#fcd34db3}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.dark\:text-amber-400\/90:is(.dark *){color:#fbbf24e6}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.dark\:text-ink-dark:is(.dark *){--tw-text-opacity: 1;color:rgb(236 233 224 / var(--tw-text-opacity))}.dark\:text-ink-dark\/50:is(.dark *){color:#ece9e080}.dark\:text-ink-dark\/60:is(.dark *){color:#ece9e099}.dark\:text-ink-dark\/70:is(.dark *){color:#ece9e0b3}.dark\:text-paddock-100:is(.dark *){--tw-text-opacity: 1;color:rgb(236 234 223 / var(--tw-text-opacity))}.dark\:text-paddock-200:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.dark\:text-paddock-300:is(.dark *){--tw-text-opacity: 1;color:rgb(187 174 140 / var(--tw-text-opacity))}.dark\:text-paddock-400:is(.dark *){--tw-text-opacity: 1;color:rgb(164 146 106 / var(--tw-text-opacity))}.dark\:text-paddock-500:is(.dark *){--tw-text-opacity: 1;color:rgb(143 124 84 / var(--tw-text-opacity))}.dark\:text-paddock-600:is(.dark *){--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.dark\:text-paddock-700:is(.dark *){--tw-text-opacity: 1;color:rgb(91 77 57 / var(--tw-text-opacity))}.dark\:text-paddock-900:is(.dark *){--tw-text-opacity: 1;color:rgb(40 34 26 / var(--tw-text-opacity))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.dark\:text-rose-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 205 211 / var(--tw-text-opacity))}.dark\:text-rose-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity))}.dark\:text-rose-300\/70:is(.dark *){color:#fda4afb3}.dark\:text-rose-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}.dark\:text-sky-100:is(.dark *){--tw-text-opacity: 1;color:rgb(224 242 254 / var(--tw-text-opacity))}.dark\:text-sky-200:is(.dark *){--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity))}.dark\:text-sky-200\/70:is(.dark *){color:#bae6fdb3}.dark\:text-sky-200\/80:is(.dark *){color:#bae6fdcc}.dark\:text-sky-300:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.dark\:text-sky-400:is(.dark *){--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity))}.dark\:text-sky-400\/80:is(.dark *){color:#38bdf8cc}.dark\:text-violet-300:is(.dark *){--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity))}.dark\:text-violet-400:is(.dark *){--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity))}.dark\:text-zinc-400:is(.dark *){--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.dark\:ring-paddock-700:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(91 77 57 / var(--tw-ring-opacity))}.dark\:ring-paddock-800:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(62 53 40 / var(--tw-ring-opacity))}.dark\:ring-paddock-800\/70:is(.dark *){--tw-ring-color: rgb(62 53 40 / .7)}.dark\:placeholder\:text-paddock-600:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.dark\:placeholder\:text-paddock-600:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(115 98 68 / var(--tw-text-opacity))}.dark\:hover\:bg-amber-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.dark\:hover\:bg-paddock-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(91 77 57 / var(--tw-bg-opacity))}.dark\:hover\:bg-paddock-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity))}.dark\:hover\:bg-paddock-800\/40:hover:is(.dark *){background-color:#3e352866}.dark\:hover\:bg-paddock-800\/50:hover:is(.dark *){background-color:#3e352880}.dark\:hover\:bg-paddock-800\/60:hover:is(.dark *){background-color:#3e352899}.dark\:hover\:bg-paddock-900\/40:hover:is(.dark *){background-color:#28221a66}.dark\:hover\:bg-rose-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity))}.dark\:hover\:bg-rose-950\/60:hover:is(.dark *){background-color:#4c051999}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:text-accent:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(var(--accent) / var(--tw-text-opacity))}.dark\:hover\:text-amber-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.dark\:hover\:text-paddock-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(236 234 223 / var(--tw-text-opacity))}.dark\:hover\:text-paddock-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.dark\:hover\:text-paddock-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(187 174 140 / var(--tw-text-opacity))}.dark\:hover\:text-rose-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 228 230 / var(--tw-text-opacity))}.dark\:hover\:text-rose-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 205 211 / var(--tw-text-opacity))}.dark\:hover\:text-rose-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:bg-paddock-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(143 124 84 / var(--tw-bg-opacity))}@media (hover: hover){.dark\:can-hover\:hover\:bg-paddock-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(62 53 40 / var(--tw-bg-opacity))}.dark\:can-hover\:hover\:bg-rose-950\/60:hover:is(.dark *){background-color:#4c051999}.dark\:can-hover\:hover\:text-paddock-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(212 205 182 / var(--tw-text-opacity))}.dark\:can-hover\:hover\:text-rose-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity))}}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}}@media (min-width: 768px){.md\:inline{display:inline}}@media (min-width: 1024px){.lg\:relative{position:relative}.lg\:z-auto{z-index:auto}.lg\:-ml-2{margin-left:-.5rem}.lg\:block{display:block}.lg\:inline-flex{display:inline-flex}.lg\:hidden{display:none}.lg\:max-h-none{max-height:none}.lg\:w-72{width:18rem}.lg\:max-w-none{max-width:none}.lg\:flex-1{flex:1 1 0%}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-wrap{flex-wrap:wrap}.lg\:gap-3{gap:.75rem}.lg\:border-b-0{border-bottom-width:0px}.lg\:border-r{border-right-width:1px}.lg\:bg-white\/40{background-color:#fff6}.lg\:bg-white\/50{background-color:#ffffff80}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}.lg\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:lg\:bg-paddock-900\/20:is(.dark *){background-color:#28221a33}.dark\:lg\:bg-paddock-900\/30:is(.dark *){background-color:#28221a4d}}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as a,l as s,L as o,e as i}from"./mermaid.core-
|
|
1
|
+
import{_ as a,l as s,L as o,e as i}from"./mermaid.core-CcPpo_y5.js";import{p as g}from"./wardley-L42UT6IY-CJ9C5W6N.js";import"./index-CDiCRIso.js";var p={parse:a(async r=>{const e=await g("info",r);s.debug(e)},"parse")},v={version:"11.15.0"},d=a(()=>v.version,"getVersion"),m={getVersion:d},c=a((r,e,n)=>{s.debug(`rendering info diagram
|
|
2
2
|
`+r);const t=o(e);i(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${n}`)},"draw"),l={draw:c},b={parser:p,db:m,renderer:l};export{b as diagram};
|
|
3
3
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as o,c as ot,a4 as ut,L as dt,al as yt,z as ft,k as pt,p as it,a as gt,b as kt,g as mt,s as wt,q as _t,e as bt}from"./mermaid.core-
|
|
1
|
+
import{_ as o,c as ot,a4 as ut,L as dt,al as yt,z as ft,k as pt,p as it,a as gt,b as kt,g as mt,s as wt,q as _t,e as bt}from"./mermaid.core-CcPpo_y5.js";import"./index-CDiCRIso.js";var tt=function(){var e=o(function(M,t,s,i){for(s=s||{},i=M.length;i--;s[M[i]]=t);return s},"o"),h=[1,4],r=[1,14],a=[1,12],l=[1,13],y=[6,7,8],f=[1,20],d=[1,18],m=[1,19],c=[6,7,11],k=[1,6,13,14],g=[1,23],_=[1,24],x=[1,6,7,11,13,14],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(t,s,i,u,p,n,v){var w=n.length-1;switch(p){case 6:case 7:return u;case 15:u.addNode(n[w-1].length,n[w].trim());break;case 16:u.addNode(0,n[w].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:h},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:h},{6:r,7:[1,10],9:9,12:11,13:a,14:l},e(y,[2,3]),{1:[2,2]},e(y,[2,4]),e(y,[2,5]),{1:[2,6],6:r,12:15,13:a,14:l},{6:r,9:16,12:11,13:a,14:l},{6:f,7:d,10:17,11:m},e(c,[2,18],{14:[1,21]}),e(c,[2,16]),e(c,[2,17]),{6:f,7:d,10:22,11:m},{1:[2,7],6:r,12:15,13:a,14:l},e(k,[2,14],{7:g,11:_}),e(x,[2,8]),e(x,[2,9]),e(x,[2,10]),e(c,[2,15]),e(k,[2,13],{7:g,11:_}),e(x,[2,11]),e(x,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(t,s){if(s.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=s,i}},"parseError"),parse:o(function(t){var s=this,i=[0],u=[],p=[null],n=[],v=this.table,w="",I=0,S=0,L=2,E=1,R=n.slice.call(arguments,1),b=Object.create(this.lexer),C={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(C.yy[z]=this.yy[z]);b.setInput(t,C.yy),C.yy.lexer=b,C.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var T=b.yylloc;n.push(T);var D=b.options&&b.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function F(P){i.length=i.length-2*P,p.length=p.length-P,n.length=n.length-P}o(F,"popStack");function j(){var P;return P=u.pop()||b.lex()||E,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}o(j,"lex");for(var A,W,B,K,H={},X,V,et,Y;;){if(W=i[i.length-1],this.defaultActions[W]?B=this.defaultActions[W]:((A===null||typeof A>"u")&&(A=j()),B=v[W]&&v[W][A]),typeof B>"u"||!B.length||!B[0]){var Q="";Y=[];for(X in v[W])this.terminals_[X]&&X>L&&Y.push("'"+this.terminals_[X]+"'");b.showPosition?Q="Parse error on line "+(I+1)+`:
|
|
2
2
|
`+b.showPosition()+`
|
|
3
3
|
Expecting `+Y.join(", ")+", got '"+(this.terminals_[A]||A)+"'":Q="Parse error on line "+(I+1)+": Unexpected "+(A==E?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(Q,{text:b.match,token:this.terminals_[A]||A,line:b.yylineno,loc:T,expected:Y})}if(B[0]instanceof Array&&B.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+A);switch(B[0]){case 1:i.push(A),p.push(b.yytext),n.push(b.yylloc),i.push(B[1]),A=null,S=b.yyleng,w=b.yytext,I=b.yylineno,T=b.yylloc;break;case 2:if(V=this.productions_[B[1]][1],H.$=p[p.length-V],H._$={first_line:n[n.length-(V||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(V||1)].first_column,last_column:n[n.length-1].last_column},D&&(H._$.range=[n[n.length-(V||1)].range[0],n[n.length-1].range[1]]),K=this.performAction.apply(H,[w,S,I,C.yy,B[1],p,n].concat(R)),typeof K<"u")return K;V&&(i=i.slice(0,-1*V*2),p=p.slice(0,-1*V),n=n.slice(0,-1*V)),i.push(this.productions_[B[1]][0]),p.push(H.$),n.push(H._$),et=v[i[i.length-2]][i[i.length-1]],i.push(et);break;case 3:return!0}}return!0},"parse")},O=function(){var M={EOF:1,parseError:o(function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},"parseError"),setInput:o(function(t,s){return this.yy=s||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var s=t.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:o(function(t){var s=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(t){this.unput(this.match.slice(t))},"less"),pastInput:o(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var t=this.pastInput(),s=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as gt}from"./chunk-FMBD7UC4-
|
|
1
|
+
import{g as gt}from"./chunk-FMBD7UC4-zeHzmwLI.js";import{a as mt,g as lt,h as xt,d as kt}from"./chunk-ND2GUHAM-Pcd02Wpz.js";import{g as _t,s as vt,a as bt,b as wt,q as Tt,p as St,_ as s,c as R,d as G,e as $t,z as Mt}from"./mermaid.core-CcPpo_y5.js";import{d as it}from"./arc-BxAGgBjd.js";import"./index-CDiCRIso.js";var U=function(){var t=s(function(h,r,n,l){for(n=n||{},l=h.length;l--;n[h[l]]=r);return n},"o"),e=[6,8,10,11,12,14,16,17,18],a=[1,9],f=[1,10],i=[1,11],u=[1,12],p=[1,13],o=[1,14],g={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:s(function(r,n,l,y,d,c,v){var k=c.length-1;switch(d){case 1:return c[k-1];case 2:this.$=[];break;case 3:c[k-1].push(c[k]),this.$=c[k-1];break;case 4:case 5:this.$=c[k];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(c[k].substr(6)),this.$=c[k].substr(6);break;case 9:this.$=c[k].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=c[k].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(c[k].substr(8)),this.$=c[k].substr(8);break;case 13:y.addTask(c[k-1],c[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:s(function(r,n){if(n.recoverable)this.trace(r);else{var l=new Error(r);throw l.hash=n,l}},"parseError"),parse:s(function(r){var n=this,l=[0],y=[],d=[null],c=[],v=this.table,k="",C=0,Q=0,yt=2,D=1,dt=c.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(r,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;c.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,d.length=d.length-w,c.length=c.length-w}s(pt,"popStack");function tt(){var w;return w=y.pop()||_.lex()||D,typeof w!="number"&&(w instanceof Array&&(y=w,w=y.pop()),w=n.symbols_[w]||w),w}s(tt,"lex");for(var b,A,T,q,F={},N,M,et,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((b===null||typeof b>"u")&&(b=tt()),T=v[A]&&v[A][b]),typeof T>"u"||!T.length||!T[0]){var X="";z=[];for(N in v[A])this.terminals_[N]&&N>yt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?X="Parse error on line "+(C+1)+`:
|
|
2
2
|
`+_.showPosition()+`
|
|
3
3
|
Expecting `+z.join(", ")+", got '"+(this.terminals_[b]||b)+"'":X="Parse error on line "+(C+1)+": Unexpected "+(b==D?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(X,{text:_.match,token:this.terminals_[b]||b,line:_.yylineno,loc:Y,expected:z})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+b);switch(T[0]){case 1:l.push(b),d.push(_.yytext),c.push(_.yylloc),l.push(T[1]),b=null,Q=_.yyleng,k=_.yytext,C=_.yylineno,Y=_.yylloc;break;case 2:if(M=this.productions_[T[1]][1],F.$=d[d.length-M],F._$={first_line:c[c.length-(M||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(M||1)].first_column,last_column:c[c.length-1].last_column},ft&&(F._$.range=[c[c.length-(M||1)].range[0],c[c.length-1].range[1]]),q=this.performAction.apply(F,[k,Q,C,I.yy,T[1],d,c].concat(dt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),d=d.slice(0,-1*M),c=c.slice(0,-1*M)),l.push(this.productions_[T[1]][0]),d.push(F.$),c.push(F._$),et=v[l[l.length-2]][l[l.length-1]],l.push(et);break;case 3:return!0}}return!0},"parse")},m=function(){var h={EOF:1,parseError:s(function(n,l){if(this.yy.parser)this.yy.parser.parseError(n,l);else throw new Error(n)},"parseError"),setInput:s(function(r,n){return this.yy=n||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var n=r.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:s(function(r){var n=r.length,l=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var d=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===y.length?this.yylloc.first_column:0)+y[y.length-l.length].length-l[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(r){this.unput(this.match.slice(r))},"less"),pastInput:s(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var r=this.pastInput(),n=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|