gm-orchestrator 0.3.3 → 0.3.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,EAGZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,UAAU,KAAK;IACb,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CAiDtB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CAyDtB"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,EAGZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,UAAU,KAAK;IACb,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CAiDtB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CAqDtB"}
@@ -57,17 +57,15 @@ export async function runEpic(epicId, ports, config) {
57
57
  const epic = await gm.getEpic(epicId);
58
58
  logger.section(`Epic: "${epic.title}" (${epicId})`);
59
59
  logger.info(`Priority: ${epic.priority} Status: ${epic.status}`);
60
- const epicTaskIds = new Set((epic.tasks ?? []).map((t) => t.id));
61
60
  const failedIds = new Set();
62
61
  const retryCounts = new Map();
63
62
  while (true) {
64
- // Fetch fresh task data for all epic tasks
65
- const allTasks = await Promise.all([...epicTaskIds].map((id) => gm.getTask(id).catch(() => null)));
66
- const queue = sortByPriority(allTasks.filter((t) => t !== null &&
67
- !['done', 'cancelled'].includes(t.status) &&
63
+ // Fetch fresh task list from the epic's dedicated endpoint
64
+ const allTasks = await gm.listEpicTasks(epicId);
65
+ const queue = sortByPriority(allTasks.filter((t) => !['done', 'cancelled'].includes(t.status) &&
68
66
  !failedIds.has(t.id)));
69
67
  if (!queue.length) {
70
- const allDone = allTasks.every((t) => t?.status === 'done');
68
+ const allDone = allTasks.length > 0 && allTasks.every((t) => t.status === 'done');
71
69
  if (allDone) {
72
70
  logger.success('All epic tasks done — marking epic complete');
73
71
  await gm.moveEpic(epicId, 'done');
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export type TaskStatus = 'todo' | 'in_progress' | 'done' | 'cancelled';
1
+ export type TaskStatus = 'backlog' | 'todo' | 'in_progress' | 'done' | 'cancelled';
2
2
  export type TaskPriority = 'critical' | 'high' | 'medium' | 'low';
3
- export type EpicStatus = 'todo' | 'in_progress' | 'done' | 'cancelled';
3
+ export type EpicStatus = 'open' | 'todo' | 'in_progress' | 'done' | 'cancelled';
4
4
  export interface TaskRef {
5
5
  id: string;
6
6
  title: string;
@@ -125,6 +125,7 @@ export interface GraphMemoryPort {
125
125
  moveTask(taskId: string, status: TaskStatus): Promise<void>;
126
126
  updateTask(taskId: string, fields: Partial<Task>): Promise<void>;
127
127
  getEpic(epicId: string): Promise<Epic>;
128
+ listEpicTasks(epicId: string): Promise<Task[]>;
128
129
  listEpics(opts?: {
129
130
  status?: EpicStatus;
130
131
  limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export declare class GraphMemoryClient implements GraphMemoryPort {
23
23
  moveTask(taskId: string, status: TaskStatus): Promise<void>;
24
24
  updateTask(taskId: string, fields: Partial<Task>): Promise<void>;
25
25
  getEpic(epicId: string): Promise<Epic>;
26
+ listEpicTasks(epicId: string): Promise<Task[]>;
26
27
  listEpics({ status, limit, }?: {
27
28
  status?: EpicStatus;
28
29
  limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"gm-client.d.ts","sourceRoot":"","sources":["../../src/infra/gm-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAyB;gBAE5B,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa;IASzD,6DAA6D;IAC7D,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAWzE,OAAO,KAAK,IAAI,GAEf;IAIK,SAAS,CAAC,EACd,MAAM,EACN,GAAG,EACH,KAAW,GACZ,GAAE;QAAE,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQzE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,SAAS,CAAC,EACd,MAAM,EACN,KAAU,GACX,GAAE;QAAE,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAO3D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAMnD,GAAG;YAIH,IAAI;YAIJ,GAAG;YAIH,KAAK;YAIL,GAAG;CAclB"}
1
+ {"version":3,"file":"gm-client.d.ts","sourceRoot":"","sources":["../../src/infra/gm-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAyB;gBAE5B,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa;IASzD,6DAA6D;IAC7D,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAWzE,OAAO,KAAK,IAAI,GAEf;IAIK,SAAS,CAAC,EACd,MAAM,EACN,GAAG,EACH,KAAW,GACZ,GAAE;QAAE,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQzE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAK9C,SAAS,CAAC,EACd,MAAM,EACN,KAAU,GACX,GAAE;QAAE,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAO3D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAMnD,GAAG;YAIH,IAAI;YAIJ,GAAG;YAIH,KAAK;YAIL,GAAG;CAclB"}
@@ -53,6 +53,10 @@ export class GraphMemoryClient {
53
53
  async getEpic(epicId) {
54
54
  return this.get(`/epics/${epicId}`);
55
55
  }
56
+ async listEpicTasks(epicId) {
57
+ const data = await this.get(`/epics/${epicId}/tasks`);
58
+ return data.results ?? [];
59
+ }
56
60
  async listEpics({ status, limit = 50, } = {}) {
57
61
  const params = new URLSearchParams({ limit: String(limit) });
58
62
  if (status)
@@ -1 +1 @@
1
- {"version":3,"file":"gm-client.js","sourceRoot":"","sources":["../../src/infra/gm-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gm-client.js","sourceRoot":"","sources":["../../src/infra/gm-client.ts"],"names":[],"mappings":"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"}
@@ -256,4 +256,4 @@ For more information, see https://radix-ui.com/primitives/docs/components/${l.do
256
256
  ${d.right}px ${d.bottom}px,
257
257
  ${d.right}px ${d.top}px,
258
258
  ${d.left}px ${d.top}px
259
- )`}return y.jsx("div",{ref:r,role:"presentation","data-base-ui-inert":"",...s,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:c}})}),FA=h.forwardRef(function(l,r){const{keepMounted:o=!1,...s}=l,{store:c}=Yl(),d=c.useState("mounted"),p=c.useState("modal"),g=c.useState("open");return d||o?y.jsx(vx.Provider,{value:o,children:y.jsxs(Hj,{ref:r,...s,children:[d&&p===!0&&y.jsx(ZA,{ref:c.context.internalBackdropRef,inert:Sx(!g)}),l.children]})}):null});function WA(n){const l=h.useRef(!0);l.current&&(l.current=!1,n())}let Uy={},By={},Hy="";function JA(n){if(typeof document>"u")return!1;const l=xt(n);return Ta(l).innerWidth-l.documentElement.clientWidth>0}function eM(n){if(!(typeof CSS<"u"&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||typeof document>"u")return!1;const r=xt(n),o=r.documentElement,s=r.body,c=bm(o)?o:s,d=c.style.overflowY,p=o.style.scrollbarGutter;o.style.scrollbarGutter="stable",c.style.overflowY="scroll";const g=c.offsetWidth;c.style.overflowY="hidden";const m=c.offsetWidth;return c.style.overflowY=d,o.style.scrollbarGutter=p,g===m}function tM(n){const l=xt(n),r=l.documentElement,o=l.body,s=bm(r)?r:o,c={overflowY:s.style.overflowY,overflowX:s.style.overflowX};return Object.assign(s.style,{overflowY:"hidden",overflowX:"hidden"}),()=>{Object.assign(s.style,c)}}function nM(n){var S;const l=xt(n),r=l.documentElement,o=l.body,s=Ta(r);let c=0,d=0,p=!1;const g=Zn.create();if(V0&&(((S=s.visualViewport)==null?void 0:S.scale)??1)!==1)return()=>{};function m(){const C=s.getComputedStyle(r),R=s.getComputedStyle(o),T=(C.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";c=r.scrollTop,d=r.scrollLeft,Uy={scrollbarGutter:r.style.scrollbarGutter,overflowY:r.style.overflowY,overflowX:r.style.overflowX},Hy=r.style.scrollBehavior,By={position:o.style.position,height:o.style.height,width:o.style.width,boxSizing:o.style.boxSizing,overflowY:o.style.overflowY,overflowX:o.style.overflowX,scrollBehavior:o.style.scrollBehavior};const D=r.scrollHeight>r.clientHeight,U=r.scrollWidth>r.clientWidth,M=C.overflowY==="scroll"||R.overflowY==="scroll",z=C.overflowX==="scroll"||R.overflowX==="scroll",B=Math.max(0,s.innerWidth-o.clientWidth),V=Math.max(0,s.innerHeight-o.clientHeight),H=parseFloat(R.marginTop)+parseFloat(R.marginBottom),K=parseFloat(R.marginLeft)+parseFloat(R.marginRight),F=bm(r)?r:o;if(p=eM(n),p){r.style.scrollbarGutter=T,F.style.overflowY="hidden",F.style.overflowX="hidden";return}Object.assign(r.style,{scrollbarGutter:T,overflowY:"hidden",overflowX:"hidden"}),(D||M)&&(r.style.overflowY="scroll"),(U||z)&&(r.style.overflowX="scroll"),Object.assign(o.style,{position:"relative",height:H||V?`calc(100dvh - ${H+V}px)`:"100dvh",width:K||B?`calc(100vw - ${K+B}px)`:"100vw",boxSizing:"border-box",overflow:"hidden",scrollBehavior:"unset"}),o.scrollTop=c,o.scrollLeft=d,r.setAttribute("data-base-ui-scroll-locked",""),r.style.scrollBehavior="unset"}function x(){Object.assign(r.style,Uy),Object.assign(o.style,By),p||(r.scrollTop=c,r.scrollLeft=d,r.removeAttribute("data-base-ui-scroll-locked"),r.style.scrollBehavior=Hy)}function v(){x(),g.request(m)}return m(),s.addEventListener("resize",v),()=>{g.cancel(),x(),typeof s.removeEventListener=="function"&&s.removeEventListener("resize",v)}}class aM{constructor(){dt(this,"lockCount",0);dt(this,"restore",null);dt(this,"timeoutLock",Ul.create());dt(this,"timeoutUnlock",Ul.create());dt(this,"release",()=>{this.lockCount-=1,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)});dt(this,"unlock",()=>{var l;this.lockCount===0&&this.restore&&((l=this.restore)==null||l.call(this),this.restore=null)})}acquire(l){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(l)),this.release}lock(l){if(this.lockCount===0||this.restore!==null)return;const o=xt(l).documentElement,s=Ta(o).getComputedStyle(o).overflowY;if(s==="hidden"||s==="clip"){this.restore=un;return}const c=Y0||!JA(l);this.restore=c?tM(l):nM(l)}}const lM=new aM;function rM(n=!0,l=null){ke(()=>{if(n)return lM.acquire(l)},[n,l])}function iM(n){const l=h.useRef(""),r=h.useCallback(s=>{s.defaultPrevented||(l.current=s.pointerType,n(s,s.pointerType))},[n]);return{onClick:h.useCallback(s=>{if(s.detail===0){n(s,"keyboard");return}"pointerType"in s?n(s,s.pointerType):n(s,l.current),l.current=""},[n]),onPointerDown:r}}function Ex(n,l){const r=h.useRef(n),o=Ue(l);ke(()=>{r.current!==n&&o(r.current)},[n,o]),ke(()=>{r.current=n},[n])}function oM(n){const[l,r]=h.useState(null),o=Ue((d,p)=>{n||r(p||(Y0?"touch":""))});Ex(n,d=>{d&&!n&&r(null)});const{onClick:s,onPointerDown:c}=iM(o);return h.useMemo(()=>({openMethod:l,triggerProps:{onClick:s,onPointerDown:c}}),[l,s,c])}function sM(n){const{store:l,parentContext:r,actionsRef:o}=n,s=l.useState("open"),c=l.useState("disablePointerDismissal"),d=l.useState("modal"),p=l.useState("popupElement"),{openMethod:g,triggerProps:m}=oM(s);TA(l);const{forceUnmount:x}=NA(s,l),v=Ue(K=>{const F=kn(K);return F.preventUnmountOnClose=()=>{l.set("preventUnmountingOnClose",!0)},F}),S=h.useCallback(()=>{l.setOpen(!1,v(KN))},[l,v]);h.useImperativeHandle(o,()=>({unmount:x,close:S}),[x,S]);const C=OA({popupStore:l,onOpenChange:l.setOpen,treatPopupAsFloatingElement:!0,noEmit:!0}),[R,w]=h.useState(0),N=R===0,T=zA(C),D=Fj(C,{outsidePressEvent(){return l.context.internalBackdropRef.current||l.context.backdropRef.current?"intentional":{mouse:d==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(K){if(!l.context.outsidePressEnabledRef.current||"button"in K&&K.button!==0||"touches"in K&&K.touches.length!==1)return!1;const F=$n(K);if(N&&!c){const ne=F;return d&&(l.context.internalBackdropRef.current||l.context.backdropRef.current)?l.context.internalBackdropRef.current===ne||l.context.backdropRef.current===ne||rt(ne,p)&&!(ne!=null&&ne.hasAttribute("data-base-ui-portal")):!0}return!1},escapeKey:N});rM(s&&d===!0,p);const{getReferenceProps:U,getFloatingProps:M,getTriggerProps:z}=kA([T,D]);l.useContextCallback("onNestedDialogOpen",K=>{w(K+1)}),l.useContextCallback("onNestedDialogClose",()=>{w(0)}),h.useEffect(()=>(r!=null&&r.onNestedDialogOpen&&s&&r.onNestedDialogOpen(R),r!=null&&r.onNestedDialogClose&&!s&&r.onNestedDialogClose(),()=>{r!=null&&r.onNestedDialogClose&&s&&r.onNestedDialogClose()}),[s,r,R]);const B=h.useMemo(()=>U(m),[U,m]),V=h.useMemo(()=>z(m),[z,m]),H=h.useMemo(()=>M(),[M]);l.useSyncedValues({openMethod:g,activeTriggerProps:B,inactiveTriggerProps:V,popupProps:H,floatingRootContext:C,nestedOpenDialogCount:R})}const uM={...MA,modal:$e(n=>n.modal),nested:$e(n=>n.nested),nestedOpenDialogCount:$e(n=>n.nestedOpenDialogCount),disablePointerDismissal:$e(n=>n.disablePointerDismissal),openMethod:$e(n=>n.openMethod),descriptionElementId:$e(n=>n.descriptionElementId),titleElementId:$e(n=>n.titleElementId),viewportElement:$e(n=>n.viewportElement),role:$e(n=>n.role)};class cM extends mx{constructor(r){super(fM(r),{popupRef:h.createRef(),backdropRef:h.createRef(),internalBackdropRef:h.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:new gx,onOpenChange:void 0,onOpenChangeComplete:void 0},uM);dt(this,"setOpen",(r,o)=>{var p,g,m,x;if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!r&&o.trigger==null&&this.state.activeTriggerId!=null&&(o.trigger=this.state.activeTriggerElement??void 0),(g=(p=this.context).onOpenChange)==null||g.call(p,r,o),o.isCanceled)return;const s={open:r,nativeEvent:o.event,reason:o.reason,nested:this.state.nested};(m=this.state.floatingRootContext.context.events)==null||m.emit("openchange",s);const c={open:r},d=((x=o.trigger)==null?void 0:x.id)??null;(d||r)&&(c.activeTriggerId=d,c.activeTriggerElement=o.trigger??null),this.update(c)})}}function fM(n={}){return{...AA(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,role:"dialog",...n}}function dM(n){const{children:l,open:r,defaultOpen:o=!1,onOpenChange:s,onOpenChangeComplete:c,disablePointerDismissal:d=!1,modal:p=!0,actionsRef:g,handle:m,triggerId:x,defaultTriggerId:v=null}=n,S=Yl(!0),C=!!S,R=Yn(()=>(m==null?void 0:m.store)??new cM({open:o,openProp:r,activeTriggerId:v,triggerIdProp:x,modal:p,disablePointerDismissal:d,nested:C})).current;WA(()=>{r===void 0&&R.state.open===!1&&o===!0&&R.update({open:!0,activeTriggerId:v})}),R.useControlledProp("openProp",r),R.useControlledProp("triggerIdProp",x),R.useSyncedValues({disablePointerDismissal:d,nested:C,modal:p}),R.useContextCallback("onOpenChange",s),R.useContextCallback("onOpenChangeComplete",c);const w=R.useState("payload");sM({store:R,actionsRef:g,parentContext:S==null?void 0:S.store.context});const N=h.useMemo(()=>({store:R}),[R]);return y.jsx(N0.Provider,{value:N,children:typeof l=="function"?l({payload:w}):l})}const mM=h.forwardRef(function(l,r){const{render:o,className:s,id:c,...d}=l,{store:p}=Yl(),g=ql(c);return p.useSyncedValueWithCleanup("titleElementId",g),Nt("h2",l,{ref:r,props:[{id:g},d]})}),hM=h.forwardRef(function(l,r){const{render:o,className:s,disabled:c=!1,focusableWhenDisabled:d=!1,nativeButton:p=!0,...g}=l,{getButtonProps:m,buttonRef:x}=Tu({disabled:c,focusableWhenDisabled:d,native:p});return Nt("button",l,{state:{disabled:c},ref:[r,x],props:[g,m]})}),Vy=n=>typeof n=="boolean"?`${n}`:n===0?"0":n,Yy=d0,Au=(n,l)=>r=>{var o;if((l==null?void 0:l.variants)==null)return Yy(n,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:s,defaultVariants:c}=l,d=Object.keys(s).map(m=>{const x=r==null?void 0:r[m],v=c==null?void 0:c[m];if(x===null)return null;const S=Vy(x)||Vy(v);return s[m][S]}),p=r&&Object.entries(r).reduce((m,x)=>{let[v,S]=x;return S===void 0||(m[v]=S),m},{}),g=l==null||(o=l.compoundVariants)===null||o===void 0?void 0:o.reduce((m,x)=>{let{class:v,className:S,...C}=x;return Object.entries(C).every(R=>{let[w,N]=R;return Array.isArray(N)?N.includes({...c,...p}[w]):{...c,...p}[w]===N})?[...m,v,S]:m},[]);return Yy(n,d,g,r==null?void 0:r.class,r==null?void 0:r.className)},au=Au("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function it({className:n,variant:l="default",size:r="default",...o}){return y.jsx(hM,{"data-slot":"button",className:qe(au({variant:l,size:r,className:n})),...o})}function pM({...n}){return y.jsx(dM,{"data-slot":"dialog",...n})}function gM({...n}){return y.jsx(FA,{"data-slot":"dialog-portal",...n})}function vM({className:n,...l}){return y.jsx(kN,{"data-slot":"dialog-overlay",className:qe("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",n),...l})}function yM({className:n,children:l,showCloseButton:r=!0,...o}){return y.jsxs(gM,{children:[y.jsx(vM,{}),y.jsxs($A,{"data-slot":"dialog-content",className:qe("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n),...o,children:[l,r&&y.jsxs(PN,{"data-slot":"dialog-close",render:y.jsx(it,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[y.jsx(om,{}),y.jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function bM({className:n,...l}){return y.jsx("div",{"data-slot":"dialog-header",className:qe("flex flex-col gap-2",n),...l})}function xM({className:n,...l}){return y.jsx(mM,{"data-slot":"dialog-title",className:qe("font-heading text-base leading-none font-medium",n),...l})}function SM({className:n,...l}){return y.jsx($N,{"data-slot":"dialog-description",className:qe("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",n),...l})}let qy=(function(n){return n.disabled="data-disabled",n.valid="data-valid",n.invalid="data-invalid",n.touched="data-touched",n.dirty="data-dirty",n.filled="data-filled",n.focused="data-focused",n})({});const EM={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},Wi={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},wM={disabled:!1,...Wi},wx={valid(n){return n===null?null:n?{[qy.valid]:""}:{[qy.invalid]:""}}},CM=h.createContext({invalid:void 0,name:void 0,validityData:{state:EM,errors:[],error:"",value:"",initialValue:null},setValidityData:un,disabled:void 0,touched:Wi.touched,setTouched:un,dirty:Wi.dirty,setDirty:un,filled:Wi.filled,setFilled:un,focused:Wi.focused,setFocused:un,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:wM,markedDirtyRef:{current:!1},validation:{getValidationProps:(n=Kt)=>n,getInputValidationProps:(n=Kt)=>n,inputRef:{current:null},commit:async()=>{}}});function Mu(n=!0){const l=h.useContext(CM);if(l.setValidityData===un&&!n)throw new Error(ea(28));return l}const RM=h.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:un,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});function Cx(){return h.useContext(RM)}const TM=h.createContext({controlId:void 0,registerControlId:un,labelId:void 0,setLabelId:un,messageIds:[],setMessageIds:un,getDescriptionProps:n=>n});function Cm(){return h.useContext(TM)}function NM(n,l){return{...n,state:{...n.state,valid:!l&&n.state.valid}}}function Rm({controlled:n,default:l,name:r,state:o="value"}){const{current:s}=h.useRef(n!==void 0),[c,d]=h.useState(l),p=s?n:c,g=h.useCallback(m=>{s||d(m)},[]);return[p,g]}function Rx(n={}){const{id:l,implicit:r=!1,controlRef:o}=n,{controlId:s,registerControlId:c}=Cm(),d=ql(l),p=r?s:void 0,g=Yn(()=>Symbol("labelable-control")),m=h.useRef(!1),x=h.useRef(l!=null),v=Ue(()=>{!m.current||c===un||(m.current=!1,c(g.current,void 0))});return ke(()=>{if(c===un)return;let S;if(r){const C=o==null?void 0:o.current;Ur(C)&&C.closest("label")!=null?S=l??null:S=p??d}else if(l!=null)x.current=!0,S=l;else if(x.current)S=d;else{v();return}if(S===void 0){v();return}m.current=!0,c(g.current,S)},[l,o,p,c,r,d,g,v]),h.useEffect(()=>v,[v]),s??d}function Tx(n){const{enabled:l=!0,value:r,id:o,name:s,controlRef:c,commit:d}=n,{formRef:p}=Cx(),{invalid:g,markedDirtyRef:m,validityData:x,setValidityData:v}=Mu(),S=Ue(n.getValue);ke(()=>{if(!l)return;let C=r;C===void 0&&(C=S()),x.initialValue===null&&C!==null&&v(R=>({...R,initialValue:C}))},[l,v,r,x.initialValue,S]),ke(()=>{!l||!o||p.current.fields.set(o,{getValue:S,name:s,controlRef:c,validityData:NM(x,g),validate(C=!0){let R=r;R===void 0&&(R=S()),m.current=!0,C?Zr.flushSync(()=>d(R)):d(R)}})},[d,c,l,p,S,o,g,m,s,x,r]),ke(()=>{const C=p.current.fields;return()=>{o&&C.delete(o)}},[p,o])}const jM=h.forwardRef(function(l,r){const{render:o,className:s,id:c,name:d,value:p,disabled:g=!1,onValueChange:m,defaultValue:x,autoFocus:v=!1,...S}=l,{state:C,name:R,disabled:w,setTouched:N,setDirty:T,validityData:D,setFocused:U,setFilled:M,validationMode:z,validation:B}=Mu(),V=w||g,H=R??d,K={...C,disabled:V},{labelId:F}=Cm(),ne=Rx({id:c});ke(()=>{var ee;const _=p!=null;(ee=B.inputRef.current)!=null&&ee.value||_&&p!==""?M(!0):_&&p===""&&M(!1)},[B.inputRef,M,p]);const ie=h.useRef(null);ke(()=>{v&&ie.current===Sa(xt(ie.current))&&U(!0)},[v,U]);const[G]=Rm({controlled:p,default:x,name:"FieldControl",state:"value"}),ce=p!==void 0,fe=ce?G:void 0;return Tx({id:ne,name:H,commit:B.commit,value:fe,getValue:()=>{var _;return(_=B.inputRef.current)==null?void 0:_.value},controlRef:B.inputRef}),Nt("input",l,{ref:[r,ie],state:K,props:[{id:ne,disabled:V,name:H,ref:B.inputRef,"aria-labelledby":F,autoFocus:v,...ce?{value:fe}:{defaultValue:x},onChange(_){const ee=_.currentTarget.value;m==null||m(ee,kn(su,_.nativeEvent)),T(ee!==D.initialValue),M(ee!=="")},onFocus(){U(!0)},onBlur(_){N(!0),U(!1),z==="onBlur"&&B.commit(_.currentTarget.value)},onKeyDown(_){_.currentTarget.tagName==="INPUT"&&_.key==="Enter"&&(N(!0),B.commit(_.currentTarget.value))}},B.getInputValidationProps(),S],stateAttributesMapping:wx})}),AM=h.forwardRef(function(l,r){return y.jsx(jM,{ref:r,...l})});function Xt({className:n,type:l,...r}){return y.jsx(AM,{type:l,"data-slot":"input",className:qe("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",n),...r})}function MM({className:n,...l}){return y.jsx("div",{"data-slot":"input-group",role:"group",className:qe("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",n),...l})}const OM=Au("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function kM({className:n,align:l="inline-start",...r}){return y.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":l,className:qe(OM({align:l}),n),onClick:o=>{var s,c;o.target.closest("button")||(c=(s=o.currentTarget.parentElement)==null?void 0:s.querySelector("input"))==null||c.focus()},...r})}function DM({className:n,...l}){return y.jsx(Hl,{"data-slot":"command",className:qe("flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground",n),...l})}function zM({title:n="Command Palette",description:l="Search for a command to run...",children:r,className:o,showCloseButton:s=!1,...c}){return y.jsxs(pM,{...c,children:[y.jsxs(bM,{className:"sr-only",children:[y.jsx(xM,{children:n}),y.jsx(SM,{children:l})]}),y.jsx(yM,{className:qe("top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0",o),showCloseButton:s,children:r})]})}function _M({className:n,...l}){return y.jsx("div",{"data-slot":"command-input-wrapper",className:"p-1 pb-0",children:y.jsxs(MM,{className:"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!",children:[y.jsx(Hl.Input,{"data-slot":"command-input",className:qe("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",n),...l}),y.jsx(kM,{children:y.jsx(Cb,{className:"size-4 shrink-0 opacity-50"})})]})})}function LM({className:n,...l}){return y.jsx(Hl.List,{"data-slot":"command-list",className:qe("no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",n),...l})}function UM({className:n,...l}){return y.jsx(Hl.Empty,{"data-slot":"command-empty",className:qe("py-6 text-center text-sm",n),...l})}function $s({className:n,...l}){return y.jsx(Hl.Group,{"data-slot":"command-group",className:qe("overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",n),...l})}function Ad({className:n,...l}){return y.jsx(Hl.Separator,{"data-slot":"command-separator",className:qe("-mx-1 h-px bg-border",n),...l})}function tl({className:n,children:l,...r}){return y.jsxs(Hl.Item,{"data-slot":"command-item",className:qe("group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground",n),...r,children:[l,y.jsx(Jr,{className:"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100"})]})}function Md({className:n,...l}){return y.jsx("span",{"data-slot":"command-shortcut",className:qe("ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",n),...l})}function BM({projectId:n,isRunning:l,onStartSprint:r,onStop:o,tasks:s,epics:c,onStartEpic:d}){const[p,g]=h.useState(!1),m=mo();h.useEffect(()=>{function v(S){(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),g(C=>!C))}return document.addEventListener("keydown",v),()=>document.removeEventListener("keydown",v)},[]);const x=h.useCallback(v=>{v(),g(!1)},[]);return y.jsx(zM,{open:p,onOpenChange:g,children:y.jsxs(DM,{children:[y.jsx(_M,{placeholder:"Type a command or search..."}),y.jsxs(LM,{children:[y.jsx(UM,{children:"No results found."}),y.jsxs($s,{heading:"Navigation",children:[y.jsxs(tl,{onSelect:()=>x(()=>m("/dashboard")),children:[y.jsx(wb,{className:"w-4 h-4"}),y.jsx("span",{children:"View Dashboard"})]}),y.jsxs(tl,{onSelect:()=>x(()=>m("/sprint")),children:[y.jsx(Ji,{className:"w-4 h-4"}),y.jsx("span",{children:"View Sprint"})]}),y.jsxs(tl,{onSelect:()=>x(()=>m("/settings")),children:[y.jsx(Rb,{className:"w-4 h-4"}),y.jsx("span",{children:"Open Settings"})]}),y.jsxs(tl,{onSelect:()=>x(()=>m("/wizard")),children:[y.jsx(GC,{className:"w-4 h-4"}),y.jsx("span",{children:"Setup Wizard"})]})]}),y.jsx(Ad,{}),y.jsxs($s,{heading:"Actions",children:[!l&&n&&y.jsxs(tl,{onSelect:()=>x(r),children:[y.jsx(Ji,{className:"w-4 h-4 text-primary"}),y.jsx("span",{children:"Run Sprint"}),y.jsx(Md,{children:"sprint"})]}),l&&y.jsxs(tl,{onSelect:()=>x(o),children:[y.jsx(Tb,{className:"w-4 h-4 text-destructive"}),y.jsx("span",{children:"Stop Current Run"}),y.jsx(Md,{children:"stop"})]})]}),c.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Ad,{}),y.jsx($s,{heading:"Run Epic",children:c.map(v=>y.jsxs(tl,{onSelect:()=>x(()=>d(v.id)),disabled:l,children:[y.jsx(Ji,{className:"w-4 h-4 text-primary"}),y.jsx("span",{children:v.title})]},v.id))})]}),s.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Ad,{}),y.jsx($s,{heading:"Tasks",children:s.map(v=>y.jsxs(tl,{onSelect:()=>g(!1),children:[y.jsx(Cb,{className:"w-4 h-4 text-muted-foreground"}),y.jsx("span",{className:"truncate",children:v.title}),y.jsx(Md,{children:v.status})]},v.id))})]})]})]})})}function Yt({className:n,size:l="default",...r}){return y.jsx("div",{"data-slot":"card","data-size":l,className:qe("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",n),...r})}function Kr({className:n,...l}){return y.jsx("div",{"data-slot":"card-header",className:qe("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",n),...l})}function Pr({className:n,...l}){return y.jsx("div",{"data-slot":"card-title",className:qe("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",n),...l})}function Ou({className:n,...l}){return y.jsx("div",{"data-slot":"card-description",className:qe("text-sm text-muted-foreground",n),...l})}function qt({className:n,...l}){return y.jsx("div",{"data-slot":"card-content",className:qe("px-4 group-data-[size=sm]/card:px-3",n),...l})}function sn({className:n,...l}){return y.jsx("label",{"data-slot":"label",className:qe("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",n),...l})}const Nx=h.createContext(void 0);function HM(){const n=h.useContext(Nx);if(n===void 0)throw new Error(ea(63));return n}let Gy=(function(n){return n.checked="data-checked",n.unchecked="data-unchecked",n.disabled="data-disabled",n.readonly="data-readonly",n.required="data-required",n.valid="data-valid",n.invalid="data-invalid",n.touched="data-touched",n.dirty="data-dirty",n.filled="data-filled",n.focused="data-focused",n})({});const jx={...wx,checked(n){return n?{[Gy.checked]:""}:{[Gy.unchecked]:""}}};function VM(n,l,r,o=!0,s){const[c,d]=h.useState(),p=ql(s?`${s}-label`:void 0),g=n??l??c;return ke(()=>{const m=n||l||!o?void 0:YM(r.current,p);c!==m&&d(m)}),g}function YM(n,l){const r=qM(n);if(r)return!r.id&&l&&(r.id=l),r.id||void 0}function qM(n){if(!n)return;const l=n.parentElement;if(l&&l.tagName==="LABEL")return l;const r=n.id;if(r){const s=n.nextElementSibling;if(s&&s.htmlFor===r)return s}const o=n.labels;return o&&o[0]}const GM=h.forwardRef(function(l,r){const{checked:o,className:s,defaultChecked:c,"aria-labelledby":d,id:p,inputRef:g,name:m,nativeButton:x=!1,onCheckedChange:v,readOnly:S=!1,required:C=!1,disabled:R=!1,render:w,uncheckedValue:N,value:T,...D}=l,{clearErrors:U}=Cx(),{state:M,setTouched:z,setDirty:B,validityData:V,setFilled:H,setFocused:K,shouldValidateOnChange:F,validationMode:ne,disabled:ie,name:G,validation:ce}=Mu(),{labelId:fe}=Cm(),k=ie||R,_=G??m,ee=Ue(v),oe=h.useRef(null),W=_l(oe,g,ce.inputRef),j=h.useRef(null),A=ql(),q=Rx({id:p,implicit:!1,controlRef:j}),$=x?void 0:q,[I,re]=Rm({controlled:o,default:!!c,name:"Switch",state:"checked"});Tx({id:A,commit:ce.commit,value:I,controlRef:j,name:_,getValue:()=>I}),ke(()=>{oe.current&&H(oe.current.checked)},[oe,H]),Ex(I,()=>{U(_),B(I!==V.initialValue),H(I),F()?ce.commit(I):ce.commit(I,!0)});const{getButtonProps:de,buttonRef:se}=Tu({disabled:k,native:x}),he=VM(d,fe,oe,!x,$),Ye={id:x?q:A,role:"switch","aria-checked":I,"aria-readonly":S||void 0,"aria-required":C||void 0,"aria-labelledby":he,onFocus(){k||K(!0)},onBlur(){const ve=oe.current;!ve||k||(z(!0),K(!1),ne==="onBlur"&&ce.commit(ve.checked))},onClick(ve){var Ce;S||k||(ve.preventDefault(),(Ce=oe.current)==null||Ce.dispatchEvent(new PointerEvent("click",{bubbles:!0,shiftKey:ve.shiftKey,ctrlKey:ve.ctrlKey,altKey:ve.altKey,metaKey:ve.metaKey})))}},ot=h.useMemo(()=>wu({checked:I,disabled:k,id:$,name:_,required:C,style:_?zj:Sm,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:W,onChange(ve){if(ve.nativeEvent.defaultPrevented)return;const Ce=ve.target.checked,nt=kn(su,ve.nativeEvent);ee==null||ee(Ce,nt),!nt.isCanceled&&re(Ce)},onFocus(){var ve;(ve=j.current)==null||ve.focus()}},ce.getInputValidationProps,T!==void 0?{value:T}:Kt),[I,k,W,$,_,ee,C,re,ce,T]),ct=h.useMemo(()=>({...M,checked:I,disabled:k,readOnly:S,required:C}),[M,I,k,S,C]),xe=Nt("span",l,{state:ct,ref:[r,j,se],props:[Ye,ce.getValidationProps,D,de],stateAttributesMapping:jx});return y.jsxs(Nx.Provider,{value:ct,children:[xe,!I&&_&&N!==void 0&&y.jsx("input",{type:"hidden",name:_,value:N}),y.jsx("input",{...ot})]})}),IM=h.forwardRef(function(l,r){const{render:o,className:s,...c}=l,{state:d}=Mu(),p=HM(),g={...d,...p};return Nt("span",l,{state:g,ref:r,stateAttributesMapping:jx,props:c})});function ku({className:n,size:l="default",...r}){return y.jsx(GM,{"data-slot":"switch","data-size":l,className:qe("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",n),...r,children:y.jsx(IM,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}const al=["welcome","discover","select","permissions","notifications","done"],XM={welcome:"Welcome",discover:"Connect",select:"Project",permissions:"Permissions",notifications:"Notify",done:"Done"};function KM({current:n}){const l=al.indexOf(n);return y.jsx("div",{className:"flex items-center justify-center gap-1 mb-8",children:al.map((r,o)=>y.jsxs("div",{className:"flex items-center gap-1",children:[y.jsxs("div",{className:"flex flex-col items-center gap-1",children:[y.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-xs font-medium border transition-all ${o<l?"bg-primary/20 border-primary text-primary":o===l?"bg-primary border-primary text-primary-foreground font-bold":"bg-muted border-border text-muted-foreground"}`,children:o<l?y.jsx(Jr,{className:"w-3.5 h-3.5"}):o+1}),y.jsx("span",{className:`text-[10px] ${o<=l?"text-foreground":"text-muted-foreground"}`,children:XM[r]})]}),o<al.length-1&&y.jsx("div",{className:`w-6 h-px mb-4 ${o<l?"bg-primary":"bg-border"}`})]},r))})}function PM({onNext:n}){return y.jsx(Yt,{className:"max-w-md mx-auto",children:y.jsxs(qt,{className:"flex flex-col items-center text-center py-10 space-y-6",children:[y.jsx(Eb,{className:"w-14 h-14 text-primary",strokeWidth:1.5}),y.jsxs("div",{className:"space-y-2",children:[y.jsx("h2",{className:"text-xl font-mono font-semibold",children:"gm-orchestrator"}),y.jsx("p",{className:"text-sm text-muted-foreground",children:"Autonomous AI sprint runner for GraphMemory."}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"Set up takes 60 seconds."})]}),y.jsxs(it,{onClick:n,className:"gap-2",children:["Get started ",y.jsx(Wr,{className:"w-4 h-4"})]})]})})}function QM({servers:n,loading:l,manualUrl:r,manualProbing:o,onManualUrlChange:s,onManualAdd:c,onNext:d,onBack:p}){return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"Connect GraphMemory"}),y.jsx(Ou,{children:l?"Scanning localhost...":`Found ${n.length} server${n.length!==1?"s":""}`})]}),y.jsxs(qt,{className:"space-y-4",children:[l?y.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground text-sm py-4",children:[y.jsx($t,{className:"w-4 h-4 animate-spin text-primary"}),"Scanning for GraphMemory servers..."]}):n.length>0?y.jsx("div",{className:"space-y-2",children:n.map(g=>y.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-muted/50 border border-border rounded-lg text-sm",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("div",{className:"w-2 h-2 rounded-full bg-[var(--color-done)]"}),y.jsx("span",{className:"font-mono text-sm",children:g.url})]}),y.jsxs("span",{className:"text-xs text-muted-foreground",children:[g.projects.length," project",g.projects.length!==1?"s":""]})]},g.url))}):null,y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs text-muted-foreground",children:"Or enter URL manually:"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(Xt,{value:r,onChange:g=>s(g.target.value),placeholder:"http://localhost:3000",className:"font-mono text-sm"}),y.jsx(it,{variant:"secondary",onClick:c,disabled:!r.trim()||o,children:o?y.jsx($t,{className:"w-4 h-4 animate-spin"}):"Add"})]})]}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:p,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:d,disabled:l||n.length===0,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})}function $M({servers:n,selectedServer:l,selectedProject:r,onSelectServer:o,onSelectProject:s,onNext:c,onBack:d}){const p=n.find(m=>m.url===l),g=(p==null?void 0:p.projects)??[];return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"Select project"}),y.jsx(Ou,{children:"Choose a GraphMemory project to orchestrate."})]}),y.jsxs(qt,{className:"space-y-4",children:[n.length>1&&y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Server"}),y.jsx("select",{value:l,onChange:m=>{o(m.target.value),s("")},className:"w-full h-9 px-3 rounded-md border border-input bg-background text-sm font-mono",children:n.map(m=>y.jsx("option",{value:m.url,children:m.url},m.url))})]}),y.jsx("div",{className:"space-y-2",children:g.length>0?g.map(m=>y.jsxs("button",{type:"button",onClick:()=>s(m.id),className:`w-full flex items-center justify-between px-4 py-3 rounded-lg border text-sm text-left transition-colors ${r===m.id?"border-primary bg-primary/10":"border-border bg-muted/30 hover:bg-muted/50"}`,children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("div",{className:`w-2 h-2 rounded-full ${r===m.id?"bg-primary":"bg-muted-foreground"}`}),y.jsx("span",{className:"font-mono",children:m.id})]}),y.jsxs("span",{className:"text-xs text-muted-foreground",children:[m.taskCount," tasks · ",m.epicCount," epics"]})]},m.id)):y.jsx("p",{className:"text-sm text-muted-foreground py-4",children:"No projects found on this server."})}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:d,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:c,disabled:!r,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})}function kr({label:n,description:l,checked:r,disabled:o,onChange:s}){return y.jsxs("div",{className:`flex items-center justify-between py-2.5 ${o?"opacity-60":""}`,children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:n}),y.jsx("p",{className:"text-xs text-muted-foreground",children:l})]}),y.jsx(ku,{checked:r,disabled:o,onCheckedChange:s})]})}function ZM({permissions:n,onChange:l,onNext:r,onBack:o}){return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"What can Claude do?"}),y.jsx(Ou,{children:"Configure permissions for autonomous runs."})]}),y.jsxs(qt,{className:"space-y-4",children:[y.jsxs("div",{className:"divide-y divide-border",children:[y.jsx(kr,{label:"Read files",description:"Always enabled",checked:!0,disabled:!0,onChange:()=>{}}),y.jsx(kr,{label:"Write files",description:"Create and modify files",checked:n.writeFiles,onChange:s=>l({...n,writeFiles:s})}),y.jsx(kr,{label:"Run tests",description:"npm test, pytest, etc.",checked:n.runTests,onChange:s=>l({...n,runTests:s})}),y.jsx(kr,{label:"Git commit",description:"Stage and commit changes",checked:n.gitCommit,onChange:s=>l({...n,gitCommit:s})}),y.jsx(kr,{label:"Git push",description:"Push to remote repository",checked:n.gitPush,onChange:s=>l({...n,gitPush:s})}),y.jsx(kr,{label:"npm publish",description:"Publish packages to registry",checked:n.npmPublish,onChange:s=>l({...n,npmPublish:s})})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs text-muted-foreground",children:"Custom command whitelist (comma-separated)"}),y.jsx(Xt,{value:n.customCommands,onChange:s=>l({...n,customCommands:s.target.value}),placeholder:"e.g. make build, cargo test",className:"font-mono text-sm"})]}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:o,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:r,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})}function FM({notifications:n,onChange:l,onNext:r,onBack:o}){return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"Notifications"}),y.jsx(Ou,{children:"Optional — configure how to be notified about run progress."})]}),y.jsxs(qt,{className:"space-y-4",children:[y.jsxs("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Telegram"}),y.jsx(Xt,{value:n.telegramBotToken,onChange:s=>l({...n,telegramBotToken:s.target.value}),placeholder:"Bot token",className:"font-mono text-sm"}),y.jsx(Xt,{value:n.telegramChatId,onChange:s=>l({...n,telegramChatId:s.target.value}),placeholder:"Chat ID",className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Webhook"}),y.jsx(Xt,{value:n.webhookUrl,onChange:s=>l({...n,webhookUrl:s.target.value}),placeholder:"https://example.com/webhook",className:"font-mono text-sm"})]}),y.jsx("div",{className:"rounded-lg border border-border p-4",children:y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:"Desktop notifications"}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"Browser push notifications"})]}),y.jsx(ku,{checked:n.desktopNotifications,onCheckedChange:s=>l({...n,desktopNotifications:s})})]})}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:o,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(it,{variant:"secondary",onClick:r,children:"Skip"}),y.jsxs(it,{onClick:r,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})]})}function WM({selectedProject:n,selectedServer:l,taskCount:r,saving:o,error:s,onSave:c,onBack:d}){return y.jsx(Yt,{className:"max-w-md mx-auto",children:y.jsxs(qt,{className:"flex flex-col items-center text-center py-10 space-y-6",children:[y.jsx("div",{className:"w-14 h-14 rounded-full bg-[var(--color-done)]/20 flex items-center justify-center",children:y.jsx(Jr,{className:"w-7 h-7 text-[var(--color-done)]"})}),y.jsxs("div",{className:"space-y-2",children:[y.jsx("h2",{className:"text-xl font-semibold",children:"You're ready"}),y.jsxs("p",{className:"text-sm text-muted-foreground font-mono",children:[n," · ",l]}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:[r," tasks waiting"]})]}),s&&y.jsx("div",{className:"w-full px-4 py-3 rounded-lg bg-destructive/10 border border-destructive/30 text-sm text-destructive",children:s}),y.jsxs("div",{className:"flex gap-3",children:[y.jsxs(it,{variant:"ghost",onClick:d,disabled:o,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:c,disabled:o,className:"gap-2",children:[o&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Go to Dashboard ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})})}function Iy(){const n=mo(),[l,r]=h.useState("welcome"),[o,s]=h.useState(!0),[c,d]=h.useState([]),[p,g]=h.useState(!1),[m,x]=h.useState(""),[v,S]=h.useState(""),[C,R]=h.useState(""),[w,N]=h.useState({readFiles:!0,writeFiles:!0,runTests:!0,gitCommit:!0,gitPush:!1,npmPublish:!1,customCommands:""}),[T,D]=h.useState({telegramBotToken:"",telegramChatId:"",webhookUrl:"",desktopNotifications:!1}),[U,M]=h.useState(!1),[z,B]=h.useState(null);h.useEffect(()=>{(async()=>{var _;try{const ee=await fetch("/api/status");if(ee.ok){const oe=await ee.json();if((_=oe.config)!=null&&_.projectId&&!oe.setupRequired)try{if((await fetch(`/api/projects/${oe.config.projectId}/tasks?limit=1`)).ok){n("/dashboard",{replace:!0});return}}catch{}}}catch{}s(!1)})()},[n]);const V=h.useRef(!1);h.useEffect(()=>{l!=="discover"||V.current||(V.current=!0,g(!0),(async()=>{try{const _=await fetch("/api/projects");if(_.ok){const oe=(await _.json()).servers??[];d(W=>{const j=[...W];for(const A of oe)j.some(q=>q.url===A.url)||j.push(A);return j}),S(W=>W||(oe.length>0?oe[0].url:""))}}catch{}g(!1)})())},[l]);const[H,K]=h.useState(!1),F=h.useCallback(async()=>{const _=m.trim().replace(/\/+$/,"");if(_){try{new URL(_)}catch{tt.error("Invalid URL");return}K(!0);try{const ee=await fetch("/api/projects/probe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:_})});if(ee.ok){const oe=await ee.json();d(W=>{const j=W.findIndex(A=>A.url===oe.server.url);if(j>=0){const A=[...W];return A[j]=oe.server,A}return[...W,oe.server]}),S(oe.server.url),x(""),tt.success(`Found ${oe.server.projects.length} project(s)`)}else{const oe=await ee.json().catch(()=>({error:"Connection failed"}));tt.error(oe.error??"No GraphMemory server found at this URL")}}catch{tt.error("Could not reach server")}K(!1)}},[m]),ne=h.useCallback(async()=>{M(!0),B(null);try{const _=c.find(W=>W.url===v),ee={baseUrl:(_==null?void 0:_.url)??v,projectId:C,permissions:w,notifications:T},oe=await fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)});if(!oe.ok){const W=await oe.json().catch(()=>({error:`HTTP ${oe.status}`}));throw new Error(W.error??`HTTP ${oe.status}`)}tt.success("Configuration saved!"),n("/dashboard",{replace:!0})}catch(_){const ee=_ instanceof Error?_.message:"Failed to save config";B(ee),tt.error(ee)}M(!1)},[c,v,C,w,T,n]),ie=h.useCallback(()=>{const _=al.indexOf(l);_<al.length-1&&r(al[_+1])},[l]),G=h.useCallback(()=>{const _=al.indexOf(l);_>0&&r(al[_-1])},[l]);if(o)return y.jsx("div",{className:"flex items-center justify-center min-h-screen",children:y.jsx($t,{className:"w-6 h-6 animate-spin text-primary"})});const ce=c.find(_=>_.url===v),fe=ce==null?void 0:ce.projects.find(_=>_.id===C),k=(fe==null?void 0:fe.taskCount)??0;return y.jsx("div",{className:"min-h-screen flex items-center justify-center p-8",children:y.jsxs("div",{className:"w-full max-w-lg",children:[y.jsx(KM,{current:l}),l==="welcome"&&y.jsx(PM,{onNext:ie}),l==="discover"&&y.jsx(QM,{servers:c,loading:p,manualUrl:m,manualProbing:H,onManualUrlChange:x,onManualAdd:F,onNext:ie,onBack:G}),l==="select"&&y.jsx($M,{servers:c,selectedServer:v,selectedProject:C,onSelectServer:S,onSelectProject:R,onNext:ie,onBack:G}),l==="permissions"&&y.jsx(ZM,{permissions:w,onChange:N,onNext:ie,onBack:G}),l==="notifications"&&y.jsx(FM,{notifications:T,onChange:D,onNext:ie,onBack:G}),l==="done"&&y.jsx(WM,{selectedProject:C,selectedServer:v,taskCount:k,saving:U,error:z,onSave:ne,onBack:G})]})})}const Xy=new Map;function JM(n,l){const r=JSON.stringify({locale:n,options:l}),o=Xy.get(r);if(o)return o;const s=new Intl.NumberFormat(n,l);return Xy.set(r,s),s}function Ky(n,l,r){return n==null?"":JM(l,r).format(n)}function eO(n,l,r){return n==null?"":r?Ky(n,l,r):Ky(n/100,l,{style:"percent"})}const Ax=h.createContext(void 0);function Mx(){const n=h.useContext(Ax);if(n===void 0)throw new Error(ea(51));return n}let Od=(function(n){return n.complete="data-complete",n.indeterminate="data-indeterminate",n.progressing="data-progressing",n})({});const Tm={status(n){return n==="progressing"?{[Od.progressing]:""}:n==="complete"?{[Od.complete]:""}:n==="indeterminate"?{[Od.indeterminate]:""}:null}};function tO(n,l){return l==null?"indeterminate progress":n||`${l}%`}const nO=h.forwardRef(function(l,r){const{format:o,getAriaValueText:s=tO,locale:c,max:d=100,min:p=0,value:g,render:m,className:x,children:v,...S}=l,[C,R]=h.useState(),w=nu(o);let N="indeterminate";Number.isFinite(g)&&(N=g===d?"complete":"progressing");const T=eO(g,c,w.current),D=h.useMemo(()=>({status:N}),[N]),U={"aria-labelledby":C,"aria-valuemax":d,"aria-valuemin":p,"aria-valuenow":g??void 0,"aria-valuetext":s(T,g),role:"progressbar",children:y.jsxs(h.Fragment,{children:[v,y.jsx("span",{role:"presentation",style:Sm,children:"x"})]})},M=h.useMemo(()=>({formattedValue:T,max:d,min:p,setLabelId:R,state:D,status:N,value:g}),[T,d,p,R,D,N,g]),z=Nt("div",l,{state:D,ref:r,props:[U,S],stateAttributesMapping:Tm});return y.jsx(Ax.Provider,{value:M,children:z})}),aO=h.forwardRef(function(l,r){const{render:o,className:s,...c}=l,{state:d}=Mx();return Nt("div",l,{state:d,ref:r,props:c,stateAttributesMapping:Tm})});function lO(n,l,r){return(n-l)*100/(r-l)}const rO=h.forwardRef(function(l,r){const{render:o,className:s,...c}=l,{max:d,min:p,value:g,state:m}=Mx(),x=Number.isFinite(g)&&g!==null?lO(g,p,d):null,v=h.useCallback(()=>x==null?{}:{insetInlineStart:0,height:"inherit",width:`${x}%`},[x]);return Nt("div",l,{state:m,ref:r,props:[{style:v()},c],stateAttributesMapping:Tm})});function Nm({className:n,children:l,value:r,...o}){return y.jsxs(nO,{value:r,"data-slot":"progress",className:qe("flex flex-wrap gap-3",n),...o,children:[l,y.jsx(iO,{children:y.jsx(oO,{})})]})}function iO({className:n,...l}){return y.jsx(aO,{className:qe("relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",n),"data-slot":"progress-track",...l})}function oO({className:n,...l}){return y.jsx(rO,{"data-slot":"progress-indicator",className:qe("h-full bg-primary transition-all",n),...l})}const sO=h.forwardRef(function(l,r){const{className:o,render:s,orientation:c="horizontal",...d}=l;return Nt("div",l,{state:{orientation:c},ref:r,props:[{role:"separator","aria-orientation":c},d]})});function em({className:n,orientation:l="horizontal",...r}){return y.jsx(sO,{"data-slot":"separator",orientation:l,className:qe("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",n),...r})}const uO=[{path:"/dashboard",label:"Dashboard",icon:wb},{path:"/sprint",label:"Sprint",icon:Ji},{path:"/settings",label:"Settings",icon:Rb}];function Br({projectId:n,taskCount:l,children:r}){const o=Ra();return y.jsxs("div",{className:"flex min-h-screen",children:[y.jsxs("aside",{className:"w-60 shrink-0 bg-card border-r border-border flex flex-col",children:[y.jsxs("div",{className:"px-4 py-5 flex items-center gap-2",children:[y.jsx(Eb,{className:"w-5 h-5 text-primary",strokeWidth:1.5}),y.jsx("span",{className:"font-mono text-sm font-semibold",children:"gm-orchestrator"})]}),y.jsx(em,{}),y.jsx("nav",{className:"flex-1 py-3",children:uO.map(({path:s,label:c,icon:d})=>{const p=o.pathname===s;return y.jsxs(Hr,{to:s,className:`flex items-center gap-3 px-4 py-2 text-sm transition-colors ${p?"border-l-2 border-primary bg-muted text-foreground font-medium":"border-l-2 border-transparent text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[y.jsx(d,{className:"w-4 h-4"}),c]},s)})}),y.jsx(em,{}),y.jsxs("div",{className:"px-4 py-4 space-y-2",children:[n&&y.jsxs("div",{children:[y.jsx("p",{className:"text-xs font-mono font-medium truncate",children:n}),y.jsxs("p",{className:"text-[10px] text-muted-foreground",children:[l," tasks"]})]}),y.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-muted-foreground",children:[y.jsx(jC,{className:"w-3 h-3"}),y.jsx("span",{children:"Cmd+K"})]})]})]}),y.jsx("main",{className:"flex-1 flex flex-col overflow-hidden",children:r})]})}function cO(n){return Nt(n.defaultTagName??"div",n,n)}const fO=Au("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function dO({className:n,variant:l="default",render:r,...o}){return cO({defaultTagName:"span",props:wu({className:qe(fO({variant:l}),n)},o),render:r,state:{slot:"badge",variant:l}})}const Py={done:{label:"Done",className:"bg-[var(--color-done)]/15 text-[var(--color-done)] border-[var(--color-done)]/30"},in_progress:{label:"Running",className:"bg-[var(--color-running)]/15 text-[var(--color-running)] border-[var(--color-running)]/30 animate-pulse-dot"},todo:{label:"Queued",className:"bg-[var(--color-queued)]/15 text-[var(--color-queued)] border-[var(--color-queued)]/30"},cancelled:{label:"Cancelled",className:"bg-[var(--color-cancelled)]/15 text-[var(--color-cancelled)] border-[var(--color-cancelled)]/30"}};function mO({status:n}){const l=Py[n]??Py.todo;return y.jsx(dO,{variant:"outline",className:`text-[10px] font-medium ${l.className}`,children:l.label})}function hO(n,l){const[r,o]=h.useState("");return h.useEffect(()=>{if(!n||!l){n&&!l&&o(Qy(Date.now()-new Date(n).getTime()));return}const s=new Date(n).getTime(),c=()=>o(Qy(Date.now()-s));c();const d=setInterval(c,1e3);return()=>clearInterval(d)},[n,l]),r}function Qy(n){const l=Math.floor(n/1e3);if(l<60)return`${l}s`;const r=Math.floor(l/60),o=l%60;return r<60?`${r}m ${o}s`:`${Math.floor(r/60)}h ${r%60}m`}function pO({task:n}){const l=n.status==="in_progress",r=hO(n.updatedAt,l);return y.jsxs("div",{className:`flex items-center gap-3 px-3 py-2.5 rounded-lg border transition-colors ${n.status==="done"?"border-border/50 opacity-70 task-done":n.status==="cancelled"?"border-border/50 opacity-50":"border-border hover:border-primary/30"}`,style:{borderLeftWidth:"3px",borderLeftColor:`var(--priority-${n.priority})`},children:[y.jsxs("div",{className:"flex-1 min-w-0",children:[y.jsx("span",{className:`text-sm ${n.status==="cancelled"?"line-through text-muted-foreground":""}`,children:n.title}),n.tags&&n.tags.length>0&&y.jsx("span",{className:"ml-2 text-xs text-muted-foreground",children:n.tags.map(o=>`#${o}`).join(" ")})]}),r&&y.jsx("span",{className:"text-xs text-muted-foreground font-mono shrink-0",children:r}),y.jsx(mO,{status:n.status})]})}function gO({epic:n}){var s,c;const l=((s=n.tasks)==null?void 0:s.length)??0,r=((c=n.tasks)==null?void 0:c.filter(d=>d.status==="done").length)??0,o=l>0?Math.round(r/l*100):0;return y.jsxs("div",{className:"rounded-lg border border-border p-3 space-y-2 hover:border-primary/30 transition-colors",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx("span",{className:"text-sm font-medium truncate",children:n.title}),y.jsxs("span",{className:"text-xs text-muted-foreground shrink-0 ml-2",children:[r,"/",l]})]}),y.jsx(Nm,{value:o,className:"h-1.5"})]})}const $y={critical:0,high:1,medium:2,low:3},Zy=5;function vO(n){const[l,r]=h.useState([]),[o,s]=h.useState(!1),c=h.useCallback(async()=>{if(n){s(!0);try{const d=await fetch(`/api/projects/${encodeURIComponent(n)}/epics`);if(!d.ok)throw new Error(`HTTP ${d.status}`);const p=await d.json();r(p.epics)}catch{}finally{s(!1)}}},[n]);return h.useEffect(()=>{c()},[c]),{epics:l,isLoading:o}}function yO(){const n=new Date().getHours();return n<12?"Good morning.":n<18?"Good afternoon.":"Good evening."}function bO(){const n=mo(),l=sm(),[r,o]=h.useState(null);h.useEffect(()=>{(async()=>{var B;try{const V=await fetch("/api/status");if(!V.ok)return;const H=await V.json();(B=H.config)!=null&&B.projectId?o(H.config.projectId):n("/",{replace:!0})}catch{}})()},[n]);const{tasks:s,isLoading:c}=Nb(r,l),d=um(l),{epics:p,isLoading:g}=vO(r),[m,x]=h.useState(""),[v,S]=h.useState(!1),C=h.useMemo(()=>[...s].sort((B,V)=>($y[B.priority]??3)-($y[V.priority]??3)),[s]),R=h.useMemo(()=>{const B=new Date;return new Date(B.getFullYear(),B.getMonth(),B.getDate()).toISOString()},[]),w=h.useMemo(()=>{const B=s.filter(F=>F.status==="todo").length,V=s.filter(F=>F.status==="done").length,H=s.filter(F=>F.status==="done"&&F.completedAt&&F.completedAt>=R).length,K=s.filter(F=>F.status==="cancelled"&&F.completedAt&&F.completedAt>=R).length;return{total:s.length,todo:B,done:V,doneToday:H,cancelledToday:K}},[s,R]),N=w.doneToday+w.cancelledToday,T=N>0?Math.round(w.doneToday/N*100):0,D=h.useCallback(async()=>{if(r)try{await d.startSprint(r),n("/sprint")}catch(B){tt.error(B.message)}},[r,d,n]),U=h.useCallback(async()=>{if(!(!r||!m))try{await d.startEpic(r,m),n("/sprint")}catch(B){tt.error(B.message)}},[r,m,d,n]);if(!r)return y.jsx("div",{className:"flex items-center justify-center min-h-screen",children:y.jsx($t,{className:"w-6 h-6 animate-spin text-primary"})});const M=v?C:C.slice(0,Zy),z=C.length-Zy;return y.jsx(Br,{projectId:r,taskCount:w.total,children:y.jsxs("div",{className:"flex-1 overflow-y-auto p-6 space-y-6",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:yO()}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:[w.todo," tasks waiting in ",r]})]}),y.jsxs(it,{onClick:D,disabled:d.isRunning,className:"gap-2",children:[d.isRunning?y.jsx($t,{className:"w-4 h-4 animate-spin"}):y.jsx(Ji,{className:"w-4 h-4"}),d.isRunning?"Running...":"Run Sprint"]})]}),y.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[y.jsxs(Yt,{className:"lg:col-span-2",children:[y.jsx(Kr,{className:"pb-3",children:y.jsx(Pr,{className:"text-sm font-medium uppercase tracking-wider text-muted-foreground",children:"Tasks"})}),y.jsx(qt,{className:"space-y-2",children:c&&s.length===0?y.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground text-sm py-8",children:[y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Loading tasks..."]}):C.length===0?y.jsx("p",{className:"text-muted-foreground text-sm py-8",children:"No tasks found."}):y.jsxs(y.Fragment,{children:[M.map(B=>y.jsx(pO,{task:B},B.id)),!v&&z>0&&y.jsxs("button",{type:"button",onClick:()=>S(!0),className:"text-xs text-muted-foreground hover:text-foreground transition-colors pt-1",children:["+ ",z," more"]})]})})]}),y.jsxs(Yt,{children:[y.jsx(Kr,{className:"pb-3",children:y.jsx(Pr,{className:"text-sm font-medium uppercase tracking-wider text-muted-foreground",children:"Epics"})}),y.jsx(qt,{className:"space-y-2",children:g&&p.length===0?y.jsx("div",{className:"flex items-center gap-3 text-muted-foreground text-sm py-4",children:y.jsx($t,{className:"w-4 h-4 animate-spin"})}):p.length===0?y.jsx("p",{className:"text-muted-foreground text-sm py-4",children:"No epics found."}):y.jsxs(y.Fragment,{children:[p.map(B=>y.jsx(gO,{epic:B},B.id)),y.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[y.jsxs("select",{value:m,onChange:B=>x(B.target.value),disabled:d.isRunning||g,className:"flex-1 h-8 px-2 rounded-md border border-input bg-background text-xs font-mono disabled:opacity-50",children:[y.jsx("option",{value:"",children:"Select epic..."}),p.map(B=>y.jsx("option",{value:B.id,children:B.title},B.id))]}),y.jsx(it,{size:"sm",variant:"secondary",onClick:U,disabled:!m||d.isRunning,className:"text-xs",children:"Run Epic"})]})]})})]})]}),N>0&&y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4",children:[y.jsxs("div",{className:"flex items-center justify-between mb-2",children:[y.jsx("span",{className:"text-sm font-medium",children:"Today"}),y.jsxs("span",{className:"text-xs text-muted-foreground",children:[y.jsxs("span",{className:"text-[var(--color-done)]",children:[w.doneToday," done"]}),w.cancelledToday>0&&y.jsxs(y.Fragment,{children:[" · ",y.jsxs("span",{className:"text-[var(--color-cancelled)]",children:[w.cancelledToday," cancelled"]})]})]})]}),y.jsx(Nm,{value:T,className:"h-2"})]})})]})})}const Fy=500;function xO({lines:n,taskId:l}){const r=h.useRef(null),o=h.useRef(null),s=h.useRef(!1),c=n.length>Fy?n.slice(n.length-Fy):n,d=n.length-c.length;h.useEffect(()=>{var g;s.current||(g=r.current)==null||g.scrollIntoView({behavior:"smooth"})},[n.length]);function p(){const g=o.current;if(!g)return;const m=g.scrollHeight-g.scrollTop-g.clientHeight<40;s.current=!m}return y.jsxs("div",{ref:o,onScroll:p,"data-task-id":l,className:"h-full bg-black/40 rounded-lg border border-border p-3 overflow-y-auto font-mono text-sm leading-relaxed",children:[d>0&&y.jsxs("div",{className:"text-muted-foreground text-xs mb-1",children:["... ",d," lines hidden ..."]}),c.map((g,m)=>{const x=g.startsWith(">");return y.jsx("div",{className:`whitespace-pre-wrap break-all log-line ${x?"text-primary":"text-foreground/80"}`,children:g},d+m)}),y.jsx("div",{ref:r})]})}function no(n){const l=Math.floor(n/1e3),r=Math.floor(l/60),o=l%60;return r<60?`${r}m ${String(o).padStart(2,"0")}s`:`${Math.floor(r/60)}h ${r%60}m`}function kd({item:n}){const{task:l,startedAt:r,finishedAt:o}=n,s=l.status==="in_progress",[c,d]=h.useState("");return h.useEffect(()=>{if(!r){d("");return}if(o){d(no(o-r));return}if(!s){d(no(Date.now()-r));return}const p=()=>d(no(Date.now()-r));p();const g=setInterval(p,1e3);return()=>clearInterval(g)},[r,o,s]),y.jsxs("div",{className:`flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${l.status==="done"?"opacity-60 task-done":""} ${l.status==="cancelled"?"opacity-50":""}`,children:[l.status==="done"&&y.jsx(Jr,{className:"w-4 h-4 text-[var(--color-done)] shrink-0"}),l.status==="in_progress"&&y.jsx("div",{className:"w-4 h-4 rounded-full bg-primary shrink-0 animate-pulse-dot"}),l.status==="todo"&&y.jsx(TC,{className:"w-4 h-4 text-muted-foreground shrink-0"}),l.status==="cancelled"&&y.jsx(om,{className:"w-4 h-4 text-[var(--color-cancelled)] shrink-0"}),y.jsx("span",{className:`flex-1 truncate ${l.status==="cancelled"?"line-through text-muted-foreground":""}`,children:l.title}),c&&y.jsx("span",{className:"text-xs text-muted-foreground font-mono shrink-0",children:c}),l.status==="done"&&y.jsx("span",{className:"text-[10px] text-[var(--color-done)]",children:"done"})]})}function SO(n){const[l,r]=h.useState(0),o=h.useRef(Date.now());return h.useEffect(()=>{if(!n)return;o.current=Date.now();const s=setInterval(()=>r(Date.now()-o.current),1e3);return()=>clearInterval(s)},[n]),l}function EO(){const n=sm(),l=um(n),[r,o]=h.useState(null),[s,c]=h.useState(new Map),[d,p]=h.useState([]),[g,m]=h.useState(null),[x,v]=h.useState(""),[S,C]=h.useState(null),[R,w]=h.useState(!1),[N,T]=h.useState(!1),D=h.useRef(!1),U=SO(N);h.useEffect(()=>{(async()=>{var F;try{const ne=await fetch("/api/status");if(!ne.ok)return;const ie=await ne.json();(F=ie.config)!=null&&F.projectId&&o(ie.config.projectId)}catch{}})()},[]),h.useEffect(()=>{l.isRunning&&!D.current&&(T(!0),D.current=!0)},[l.isRunning]),h.useEffect(()=>{if(!n.lastEvent)return;const F=n.lastEvent;switch(F.type){case"run:started":D.current=!0,T(!0),C(null),w(!1),c(new Map),p([]),m(null),v("");break;case"task:started":{const ne=F.payload.task;m(ne.id),v(ne.title),p([]),c(ie=>{const G=new Map(ie);return G.set(ne.id,{task:{...ne,status:"in_progress"},startedAt:Date.now()}),G});break}case"task:done":case"task:cancelled":case"task:timeout":{const ne=F.payload.task,ie=Date.now();c(G=>{const ce=new Map(G),fe=ce.get(ne.id);return ce.set(ne.id,{task:{...ne},startedAt:fe==null?void 0:fe.startedAt,finishedAt:ie}),ce}),g===ne.id&&m(null);break}case"task:retrying":{const ne=F.payload.task;c(ie=>{const G=new Map(ie);return G.set(ne.id,{task:{...ne,status:"in_progress"},startedAt:Date.now()}),G}),m(ne.id),v(ne.title),p([]);break}case"log:line":p(ne=>[...ne,F.payload.line]);break;case"run:complete":C(F.payload),T(!1),m(null),tt.success("Sprint complete!");break;case"run:stopped":w(!0),T(!1),m(null);break;case"error":p(ne=>[...ne,`[ERROR] ${F.payload.message}`]),tt.error(F.payload.message);break}},[n.lastEvent,g]);const M=h.useMemo(()=>Array.from(s.values()),[s]),z=h.useMemo(()=>M.filter(F=>F.task.status==="done").length,[M]),B=M.length,V=B>0?Math.round(z/B*100):0,H=h.useCallback(async()=>{try{await l.stop()}catch(F){tt.error(F.message)}},[l]),K=M.length;if(!N&&!S&&!R)return y.jsx(Br,{projectId:r,taskCount:0,children:y.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-4",children:[y.jsx("p",{className:"text-lg text-muted-foreground",children:"No active run"}),y.jsx(Hr,{to:"/dashboard",className:au(),children:"Go to Dashboard"})]})});if(S){const F=S;return y.jsx(Br,{projectId:r,taskCount:K,children:y.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-6 gap-6",children:[y.jsx(Yt,{className:"w-full max-w-md",children:y.jsxs(qt,{className:"py-8 space-y-6",children:[y.jsxs("div",{className:"flex flex-col items-center gap-2",children:[y.jsx("div",{className:"w-12 h-12 rounded-full bg-[var(--color-done)]/20 flex items-center justify-center",children:y.jsx(Jr,{className:"w-6 h-6 text-[var(--color-done)]"})}),y.jsx("h2",{className:"text-lg font-semibold",children:"Sprint Complete"}),y.jsx("p",{className:"text-sm text-muted-foreground",children:no(F.durationMs)})]}),y.jsxs("div",{className:"grid grid-cols-3 gap-3 text-center",children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-2xl font-semibold text-[var(--color-done)]",children:F.done}),y.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Done"})]}),y.jsxs("div",{children:[y.jsx("p",{className:"text-2xl font-semibold text-[var(--color-cancelled)]",children:F.cancelled}),y.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Cancelled"})]}),y.jsxs("div",{children:[y.jsx("p",{className:"text-2xl font-semibold text-muted-foreground",children:F.skipped}),y.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Skipped"})]})]})]})}),M.length>0&&y.jsx(Yt,{className:"w-full max-w-2xl",children:y.jsx(qt,{className:"py-2 divide-y divide-border",children:M.map(ne=>y.jsx(kd,{item:ne},ne.task.id))})}),y.jsxs(Hr,{to:"/dashboard",className:au({className:"gap-2"}),children:[y.jsx(Fr,{className:"w-4 h-4"})," Back to Dashboard"]})]})})}return R&&!N?y.jsx(Br,{projectId:r,taskCount:K,children:y.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-6 gap-4",children:[y.jsx("h2",{className:"text-lg font-semibold text-yellow-400",children:"Run Stopped"}),M.length>0&&y.jsx(Yt,{className:"w-full max-w-2xl",children:y.jsx(qt,{className:"py-2 divide-y divide-border",children:M.map(F=>y.jsx(kd,{item:F},F.task.id))})}),y.jsx(Hr,{to:"/dashboard",className:au(),children:"Back to Dashboard"})]})}):y.jsx(Br,{projectId:r,taskCount:K,children:y.jsxs("div",{className:"flex flex-col h-full",children:[y.jsxs("div",{className:"px-6 py-4 border-b border-border space-y-3",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-lg font-semibold",children:"Sprint"}),y.jsxs("p",{className:"text-xs text-muted-foreground",children:[N?"Running":"Idle"," · ",no(U)," elapsed"]})]}),y.jsxs(it,{variant:"destructive",size:"sm",onClick:H,className:"gap-1.5",children:[y.jsx(Tb,{className:"w-3.5 h-3.5"})," Stop"]})]}),y.jsxs("div",{className:"flex items-center gap-3",children:[y.jsx(Nm,{value:V,className:"flex-1 h-2"}),y.jsxs("span",{className:"text-xs text-muted-foreground font-mono shrink-0",children:[z," / ",B]})]})]}),y.jsx("div",{className:"border-b border-border max-h-[40vh] overflow-y-auto divide-y divide-border/50",children:M.length===0?y.jsxs("div",{className:"px-6 py-4 text-sm text-muted-foreground flex items-center gap-2",children:[y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Waiting for tasks..."]}):M.map(F=>y.jsx(kd,{item:F},F.task.id))}),y.jsxs("div",{className:"flex-1 px-6 py-4 flex flex-col min-h-0",children:[y.jsxs("p",{className:"text-xs text-muted-foreground mb-2 font-mono",children:["Claude",x?` — ${x}`:""]}),y.jsx("div",{className:"flex-1 min-h-0",children:y.jsx(xO,{lines:d,taskId:g??""})})]})]})})}const Ox=h.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}});function wO(){return h.useContext(Ox)}function kx(n){const{children:l,elementsRef:r,labelsRef:o,onMapChange:s}=n,c=Ue(s),d=h.useRef(0),p=Yn(RO).current,g=Yn(CO).current,[m,x]=h.useState(0),v=h.useRef(m),S=Ue((T,D)=>{g.set(T,D??null),v.current+=1,x(v.current)}),C=Ue(T=>{g.delete(T),v.current+=1,x(v.current)}),R=h.useMemo(()=>{const T=new Map;return Array.from(g.keys()).filter(U=>U.isConnected).sort(TO).forEach((U,M)=>{const z=g.get(U)??{};T.set(U,{...z,index:M})}),T},[g,m]);ke(()=>{if(typeof MutationObserver!="function"||R.size===0)return;const T=new MutationObserver(D=>{const U=new Set,M=z=>U.has(z)?U.delete(z):U.add(z);D.forEach(z=>{z.removedNodes.forEach(M),z.addedNodes.forEach(M)}),U.size===0&&(v.current+=1,x(v.current))});return R.forEach((D,U)=>{U.parentElement&&T.observe(U.parentElement,{childList:!0})}),()=>{T.disconnect()}},[R]),ke(()=>{v.current===m&&(r.current.length!==R.size&&(r.current.length=R.size),o&&o.current.length!==R.size&&(o.current.length=R.size),d.current=R.size),c(R)},[c,R,r,o,m]),ke(()=>()=>{r.current=[]},[r]),ke(()=>()=>{o&&(o.current=[])},[o]);const w=Ue(T=>(p.add(T),()=>{p.delete(T)}));ke(()=>{p.forEach(T=>T(R))},[p,R]);const N=h.useMemo(()=>({register:S,unregister:C,subscribeMapChange:w,elementsRef:r,labelsRef:o,nextIndexRef:d}),[S,C,w,r,o,d]);return y.jsx(Ox.Provider,{value:N,children:l})}function CO(){return new Map}function RO(){return new Set}function TO(n,l){const r=n.compareDocumentPosition(l);return r&Node.DOCUMENT_POSITION_FOLLOWING||r&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:r&Node.DOCUMENT_POSITION_PRECEDING||r&Node.DOCUMENT_POSITION_CONTAINS?1:0}const NO=h.createContext(void 0);function Dx(){const n=h.useContext(NO);return(n==null?void 0:n.direction)??"ltr"}const zx=h.createContext(void 0);function jm(){const n=h.useContext(zx);if(n===void 0)throw new Error(ea(64));return n}let jO=(function(n){return n.activationDirection="data-activation-direction",n.orientation="data-orientation",n})({});const Am={tabActivationDirection:n=>({[jO.activationDirection]:n})},AO=h.forwardRef(function(l,r){const{className:o,defaultValue:s=0,onValueChange:c,orientation:d="horizontal",render:p,value:g,...m}=l,x=Dx(),v=Object.hasOwn(l,"defaultValue"),S=h.useRef([]),[C,R]=h.useState(()=>new Map),[w,N]=Rm({controlled:g,default:s,name:"Tabs",state:"value"}),T=g!==void 0,[D,U]=h.useState(()=>new Map),[M,z]=h.useState("none"),B=Ue((_,ee)=>{c==null||c(_,ee),!ee.isCanceled&&(N(_),z(ee.activationDirection))}),V=Ue((_,ee)=>{R(oe=>{if(oe.get(_)===ee)return oe;const W=new Map(oe);return W.set(_,ee),W})}),H=Ue((_,ee)=>{R(oe=>{if(!oe.has(_)||oe.get(_)!==ee)return oe;const W=new Map(oe);return W.delete(_),W})}),K=h.useCallback(_=>C.get(_),[C]),F=h.useCallback(_=>{for(const ee of D.values())if(_===(ee==null?void 0:ee.value))return ee==null?void 0:ee.id},[D]),ne=h.useCallback(_=>{if(_===void 0)return null;for(const[ee,oe]of D.entries())if(oe!=null&&_===(oe.value??oe.index))return ee;return null},[D]),ie=h.useMemo(()=>({direction:x,getTabElementBySelectedValue:ne,getTabIdByPanelValue:F,getTabPanelIdByValue:K,onValueChange:B,orientation:d,registerMountedTabPanel:V,setTabMap:U,unregisterMountedTabPanel:H,tabActivationDirection:M,value:w}),[x,ne,F,K,B,d,V,U,H,M,w]),G=h.useMemo(()=>{for(const _ of D.values())if(_!=null&&_.value===w)return _},[D,w]),ce=h.useMemo(()=>{for(const _ of D.values())if(_!=null&&!_.disabled)return _.value},[D]);ke(()=>{if(T||D.size===0)return;const _=G==null?void 0:G.disabled,ee=G==null&&w!==null;if(v&&_&&w===s||!_&&!ee)return;const W=ce??null;w!==W&&(N(W),z("none"))},[s,ce,v,T,G,z,N,D,w]);const k=Nt("div",l,{state:{orientation:d,tabActivationDirection:M},ref:r,props:m,stateAttributesMapping:Am});return y.jsx(zx.Provider,{value:ie,children:y.jsx(kx,{elementsRef:S,children:k})})}),_x="data-composite-item-active";let MO=(function(n){return n[n.None=0]="None",n[n.GuessFromOrder=1]="GuessFromOrder",n})({});function Lx(n={}){const{label:l,metadata:r,textRef:o,indexGuessBehavior:s,index:c}=n,{register:d,unregister:p,subscribeMapChange:g,elementsRef:m,labelsRef:x,nextIndexRef:v}=wO(),S=h.useRef(-1),[C,R]=h.useState(c??(s===MO.GuessFromOrder?()=>{if(S.current===-1){const T=v.current;v.current+=1,S.current=T}return S.current}:-1)),w=h.useRef(null),N=h.useCallback(T=>{var D;if(w.current=T,C!==-1&&T!==null&&(m.current[C]=T,x)){const U=l!==void 0;x.current[C]=U?l:((D=o==null?void 0:o.current)==null?void 0:D.textContent)??T.textContent}},[C,m,x,l,o]);return ke(()=>{if(c!=null)return;const T=w.current;if(T)return d(T,r),()=>{p(T)}},[c,d,p,r]),ke(()=>{if(c==null)return g(T=>{var U;const D=w.current?(U=T.get(w.current))==null?void 0:U.index:null;D!=null&&R(D)})},[c,g,R]),h.useMemo(()=>({ref:N,index:C}),[C,N])}function OO(n={}){const{highlightItemOnHover:l,highlightedIndex:r,onHighlightedIndexChange:o}=z0(),{ref:s,index:c}=Lx(n),d=r===c,p=h.useRef(null),g=_l(s,p);return{compositeProps:h.useMemo(()=>({tabIndex:d?0:-1,onFocus(){o(c)},onMouseMove(){const x=p.current;if(!l||!x)return;const v=x.hasAttribute("disabled")||x.ariaDisabled==="true";!d&&!v&&x.focus()}}),[d,o,c,l]),compositeRef:g,index:c}}const Ux=h.createContext(void 0);function kO(){const n=h.useContext(Ux);if(n===void 0)throw new Error(ea(65));return n}const DO=h.forwardRef(function(l,r){const{className:o,disabled:s=!1,render:c,value:d,id:p,nativeButton:g=!0,...m}=l,{value:x,getTabPanelIdByValue:v,orientation:S}=jm(),{activateOnFocus:C,highlightedTabIndex:R,onTabActivation:w,registerTabResizeObserverElement:N,setHighlightedTabIndex:T,tabsListElement:D}=kO(),U=ql(p),M=h.useMemo(()=>({disabled:s,id:U,value:d}),[s,U,d]),{compositeProps:z,compositeRef:B,index:V}=OO({metadata:M}),H=d===x,K=h.useRef(!1),F=h.useRef(null);h.useEffect(()=>{const j=F.current;if(j)return N(j)},[N]),ke(()=>{if(K.current){K.current=!1;return}if(!(H&&V>-1&&R!==V))return;const j=D;if(j!=null){const A=Sa(xt(j));if(A&&rt(j,A))return}s||T(V)},[H,V,R,T,s,D]);const{getButtonProps:ne,buttonRef:ie}=Tu({disabled:s,native:g,focusableWhenDisabled:!0}),G=v(d),ce=h.useRef(!1),fe=h.useRef(!1);function k(j){H||s||w(d,kn(su,j.nativeEvent,void 0,{activationDirection:"none"}))}function _(j){H||(V>-1&&!s&&T(V),!s&&C&&(!ce.current||ce.current&&fe.current)&&w(d,kn(su,j.nativeEvent,void 0,{activationDirection:"none"})))}function ee(j){if(H||s)return;ce.current=!0;function A(){ce.current=!1,fe.current=!1}(!j.button||j.button===0)&&(fe.current=!0,xt(j.currentTarget).addEventListener("pointerup",A,{once:!0}))}return Nt("button",l,{state:{disabled:s,active:H,orientation:S},ref:[r,ie,B,F],props:[z,{role:"tab","aria-controls":G,"aria-selected":H,id:U,onClick:k,onFocus:_,onPointerDown:ee,[_x]:H?"":void 0,onKeyDownCapture(){K.current=!0}},m,ne]})});let zO=(function(n){return n.index="data-index",n.activationDirection="data-activation-direction",n.orientation="data-orientation",n.hidden="data-hidden",n[n.startingStyle=Ll.startingStyle]="startingStyle",n[n.endingStyle=Ll.endingStyle]="endingStyle",n})({});const _O={...Am,...vm},LO=h.forwardRef(function(l,r){const{className:o,value:s,render:c,keepMounted:d=!1,...p}=l,{value:g,getTabIdByPanelValue:m,orientation:x,tabActivationDirection:v,registerMountedTabPanel:S,unregisterMountedTabPanel:C}=jm(),R=ql(),w=h.useMemo(()=>({id:R,value:s}),[R,s]),{ref:N,index:T}=Lx({metadata:w}),D=s===g,{mounted:U,transitionStatus:M,setMounted:z}=px(D),B=!U,V=m(s),H={hidden:B,orientation:x,tabActivationDirection:v,transitionStatus:M},K=h.useRef(null),F=Nt("div",l,{state:H,ref:[r,N,K],props:[{"aria-labelledby":V,hidden:B,id:R,role:"tabpanel",tabIndex:D?0:-1,inert:Sx(!D),[zO.index]:T},p],stateAttributesMapping:_O});return wm({open:D,ref:K,onComplete(){D||z(!1)}}),ke(()=>{if(!(B&&!d)&&R!=null)return S(s,R),()=>{C(s,R)}},[B,d,s,R,S,C]),d||U?F:null});function UO(n){return n==null||n.hasAttribute("disabled")||n.getAttribute("aria-disabled")==="true"}const BO=[];function HO(n){const{itemSizes:l,cols:r=1,loopFocus:o=!0,dense:s=!1,orientation:c="both",direction:d,highlightedIndex:p,onHighlightedIndexChange:g,rootRef:m,enableHomeAndEndKeys:x=!1,stopEventPropagation:v=!1,disabledIndices:S,modifierKeys:C=BO}=n,[R,w]=h.useState(0),N=r>1,T=h.useRef(null),D=_l(T,m),U=h.useRef([]),M=h.useRef(!1),z=p??R,B=Ue((K,F=!1)=>{if((g??w)(K),F){const ne=U.current[K];_y(T.current,ne,d,c)}}),V=Ue(K=>{if(K.size===0||M.current)return;M.current=!0;const F=Array.from(K.keys()),ne=F.find(G=>G==null?void 0:G.hasAttribute(_x))??null,ie=ne?F.indexOf(ne):-1;ie!==-1&&B(ie),_y(T.current,ne,d,c)}),H=h.useMemo(()=>({"aria-orientation":c==="both"?void 0:c,ref:D,onFocus(K){!T.current||!zy(K.target)||K.target.setSelectionRange(0,K.target.value.length??0)},onKeyDown(K){const F=x?VA:xx;if(!F.has(K.key)||VO(K,C)||!T.current)return;const ie=d==="rtl",G=ie?oo:Ir,ce={horizontal:G,vertical:kl,both:G}[c],fe=ie?Ir:oo,k={horizontal:fe,vertical:Gr,both:fe}[c];if(zy(K.target)&&!UO(K.target)){const q=K.target.selectionStart,$=K.target.selectionEnd,I=K.target.value??"";if(q==null||K.shiftKey||q!==$||K.key!==k&&q<I.length||K.key!==ce&&q>0)return}let _=z;const ee=cj(U,S),oe=fj(U,S);if(N){const q=l||Array.from({length:U.current.length},()=>({width:1,height:1})),$=mj(q,r,s),I=$.findIndex(de=>de!=null&&!qr(U,de,S)),re=$.reduce((de,se,he)=>se!=null&&!qr(U,se,S)?he:de,-1);_=$[dj({current:$.map(de=>de?U.current[de]:null)},{event:K,orientation:c,loopFocus:o,cols:r,disabledIndices:pj([...S||U.current.map((de,se)=>qr(U,se)?se:void 0),void 0],$),minIndex:I,maxIndex:re,prevIndex:hj(z>oe?ee:z,q,$,r,K.key===kl?"bl":K.key===Ir?"tr":"tl"),rtl:ie})]}const W={horizontal:[G],vertical:[kl],both:[G,kl]}[c],j={horizontal:[fe],vertical:[Gr],both:[fe,Gr]}[c],A=N?F:{horizontal:x?BA:yx,vertical:x?HA:bx,both:F}[c];x&&(K.key===bo?_=ee:K.key===xo&&(_=oe)),_===z&&(W.includes(K.key)||j.includes(K.key))&&(o&&_===oe&&W.includes(K.key)?_=ee:o&&_===ee&&j.includes(K.key)?_=oe:_=On(U,{startingIndex:_,decrement:j.includes(K.key),disabledIndices:S})),_!==z&&!Zd(U,_)&&(v&&K.stopPropagation(),A.has(K.key)&&K.preventDefault(),B(_,!0),queueMicrotask(()=>{var q;(q=U.current[_])==null||q.focus()}))}}),[r,s,d,S,U,x,z,N,l,o,D,C,B,c,v]);return h.useMemo(()=>({props:H,highlightedIndex:z,onHighlightedIndexChange:B,elementsRef:U,disabledIndices:S,onMapChange:V,relayKeyboardEvent:H.onKeyDown}),[H,z,B,U,S,V])}function VO(n,l){for(const r of KA.values())if(!l.includes(r)&&n.getModifierState(r))return!0;return!1}function YO(n){const{render:l,className:r,refs:o=Kd,props:s=Kd,state:c=Kt,stateAttributesMapping:d,highlightedIndex:p,onHighlightedIndexChange:g,orientation:m,dense:x,itemSizes:v,loopFocus:S,cols:C,enableHomeAndEndKeys:R,onMapChange:w,stopEventPropagation:N=!0,rootRef:T,disabledIndices:D,modifierKeys:U,highlightItemOnHover:M=!1,tag:z="div",...B}=n,V=Dx(),{props:H,highlightedIndex:K,onHighlightedIndexChange:F,elementsRef:ne,onMapChange:ie,relayKeyboardEvent:G}=HO({itemSizes:v,cols:C,loopFocus:S,dense:x,orientation:m,highlightedIndex:p,onHighlightedIndexChange:g,rootRef:T,stopEventPropagation:N,enableHomeAndEndKeys:R,direction:V,disabledIndices:D,modifierKeys:U}),ce=Nt(z,n,{state:c,ref:o,props:[H,...s,B],stateAttributesMapping:d}),fe=h.useMemo(()=>({highlightedIndex:K,onHighlightedIndexChange:F,highlightItemOnHover:M,relayKeyboardEvent:G}),[K,F,M,G]);return y.jsx(D0.Provider,{value:fe,children:y.jsx(kx,{elementsRef:ne,onMapChange:k=>{w==null||w(k),ie(k)},children:ce})})}const qO=h.forwardRef(function(l,r){const{activateOnFocus:o=!1,className:s,loopFocus:c=!0,render:d,...p}=l,{getTabElementBySelectedValue:g,onValueChange:m,orientation:x,value:v,setTabMap:S,tabActivationDirection:C}=jm(),[R,w]=h.useState(0),[N,T]=h.useState(null),D=h.useRef(new Set),U=h.useRef(new Set),M=h.useRef(null),z=Ue(()=>{D.current.forEach(G=>{G()})});h.useEffect(()=>{if(typeof ResizeObserver>"u")return;const G=new ResizeObserver(()=>{D.current.size&&z()});return M.current=G,N&&G.observe(N),U.current.forEach(ce=>{G.observe(ce)}),()=>{G.disconnect(),M.current=null}},[N,z]);const B=Ue(G=>(D.current.add(G),()=>{D.current.delete(G)})),V=Ue(G=>{var ce;return U.current.add(G),(ce=M.current)==null||ce.observe(G),()=>{var fe;U.current.delete(G),(fe=M.current)==null||fe.unobserve(G)}}),H=GO(v,x,N,g),K=Ue((G,ce)=>{if(G!==v){const fe=H(G);ce.activationDirection=fe,m(G,ce)}}),F={orientation:x,tabActivationDirection:C},ne={"aria-orientation":x==="vertical"?"vertical":void 0,role:"tablist"},ie=h.useMemo(()=>({activateOnFocus:o,highlightedTabIndex:R,registerIndicatorUpdateListener:B,registerTabResizeObserverElement:V,onTabActivation:K,setHighlightedTabIndex:w,tabsListElement:N}),[o,R,B,V,K,w,N]);return y.jsx(Ux.Provider,{value:ie,children:y.jsx(YO,{render:d,className:s,state:F,refs:[r,T],props:[ne,p],stateAttributesMapping:Am,highlightedIndex:R,enableHomeAndEndKeys:!0,loopFocus:c,orientation:x,onHighlightedIndexChange:w,onMapChange:S,disabledIndices:Kd})})});function Wy(n,l){const{left:r,top:o}=n.getBoundingClientRect(),{left:s,top:c}=l.getBoundingClientRect(),d=r-s,p=o-c;return{left:d,top:p}}function GO(n,l,r,o){const[s,c]=h.useState(null);return ke(()=>{if(n==null||r==null){c(null);return}const d=o(n);if(d==null){c(null);return}const{left:p,top:g}=Wy(d,r);c(l==="horizontal"?p:g)},[l,o,r,n]),h.useCallback(d=>{if(d===n)return"none";if(d==null)return c(null),"none";if(d!=null&&r!=null){const p=o(d);if(p!=null){const{left:g,top:m}=Wy(p,r);if(s==null)return c(l==="horizontal"?g:m),"none";if(l==="horizontal"){if(g<s)return c(g),"left";if(g>s)return c(g),"right"}else{if(m<s)return c(m),"up";if(m>s)return c(m),"down"}}}return"none"},[o,l,s,r,n])}function IO({className:n,orientation:l="horizontal",...r}){return y.jsx(AO,{"data-slot":"tabs","data-orientation":l,className:qe("group/tabs flex gap-2 data-horizontal:flex-col",n),...r})}const XO=Au("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function KO({className:n,variant:l="default",...r}){return y.jsx(qO,{"data-slot":"tabs-list","data-variant":l,className:qe(XO({variant:l}),n),...r})}function Dd({className:n,...l}){return y.jsx(DO,{"data-slot":"tabs-trigger",className:qe("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",n),...l})}function zd({className:n,...l}){return y.jsx(LO,{"data-slot":"tabs-content",className:qe("flex-1 text-sm outline-none",n),...l})}const PO={baseUrl:"",projectId:"",apiKey:"",timeoutMinutes:30,maxRetries:2,pollInterval:3,permissions:{readFiles:!0,writeFiles:!0,runTests:!0,gitCommit:!0,gitPush:!1,npmPublish:!1,customCommands:""},notifications:{telegramBotToken:"",telegramChatId:"",webhookUrl:"",webhookHeaders:"",desktopNotifications:!1}};function Jy(n){try{return new URL(n),!0}catch{return!1}}function Dr({label:n,description:l,checked:r,disabled:o,onChange:s}){return y.jsxs("div",{className:`flex items-center justify-between py-2.5 ${o?"opacity-60":""}`,children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:n}),y.jsx("p",{className:"text-xs text-muted-foreground",children:l})]}),y.jsx(ku,{checked:r,disabled:o,onCheckedChange:s})]})}function QO(){const[n,l]=h.useState(PO),[r,o]=h.useState(!0),[s,c]=h.useState(!1),[d,p]=h.useState("idle"),[g,m]=h.useState(null),[x,v]=h.useState(!1),[S,C]=h.useState(null);h.useEffect(()=>{(async()=>{var M,z,B,V,H,K,F,ne,ie,G,ce;try{const fe=await fetch("/api/config");if(fe.ok){const k=await fe.json();C(k.projectId??null),l({baseUrl:k.baseUrl??"",projectId:k.projectId??"",apiKey:k.apiKey??"",timeoutMinutes:Math.round((k.timeoutMs??18e5)/6e4),maxRetries:k.maxRetries??2,pollInterval:Math.round((k.pauseMs??3e3)/1e3),permissions:{readFiles:!0,writeFiles:((M=k.permissions)==null?void 0:M.writeFiles)??!0,runTests:((z=k.permissions)==null?void 0:z.runTests)??!0,gitCommit:((B=k.permissions)==null?void 0:B.gitCommit)??!0,gitPush:((V=k.permissions)==null?void 0:V.gitPush)??!1,npmPublish:((H=k.permissions)==null?void 0:H.npmPublish)??!1,customCommands:((K=k.permissions)==null?void 0:K.customCommands)??""},notifications:{telegramBotToken:((F=k.notifications)==null?void 0:F.telegramBotToken)??"",telegramChatId:((ne=k.notifications)==null?void 0:ne.telegramChatId)??"",webhookUrl:((ie=k.notifications)==null?void 0:ie.webhookUrl)??"",webhookHeaders:((G=k.notifications)==null?void 0:G.webhookHeaders)??"",desktopNotifications:((ce=k.notifications)==null?void 0:ce.desktopNotifications)??!1}})}}catch{}o(!1)})()},[]);const R=h.useCallback(async()=>{if(!n.baseUrl||!Jy(n.baseUrl)){tt.error("Enter a valid GraphMemory URL first");return}p("testing");try{(await fetch("/api/projects")).ok?(p("success"),tt.success("Connection successful")):(p("error"),tt.error("Connection failed"))}catch{p("error"),tt.error("Connection failed — could not reach server")}},[n.baseUrl]),w=h.useCallback(async M=>{m(M);try{const z=await fetch("/api/notifications/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:M})});if(z.ok)tt.success(`Test ${M} notification sent`);else{const B=await z.json().catch(()=>({error:`HTTP ${z.status}`}));tt.error(B.error??`Test ${M} notification failed`)}}catch{tt.error(`Failed to send test ${M} notification`)}m(null)},[]),N=h.useCallback(async()=>{if(!n.baseUrl.trim()){tt.error("GraphMemory URL is required");return}if(!Jy(n.baseUrl)){tt.error("Invalid GraphMemory URL");return}if(!n.projectId.trim()){tt.error("Project ID is required");return}c(!0);try{const M={baseUrl:n.baseUrl.trim(),projectId:n.projectId.trim(),apiKey:n.apiKey||void 0,timeoutMs:n.timeoutMinutes*6e4,pauseMs:n.pollInterval*1e3,maxRetries:n.maxRetries,permissions:n.permissions,notifications:n.notifications},z=await fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)});if(!z.ok){const B=await z.json().catch(()=>({error:`HTTP ${z.status}`}));throw new Error(B.error??`HTTP ${z.status}`)}tt.success("Settings saved")}catch(M){tt.error(M instanceof Error?M.message:"Failed to save settings")}c(!1)},[n]),T=h.useCallback((M,z)=>{l(B=>({...B,[M]:z}))},[]),D=h.useCallback(M=>{l(z=>({...z,permissions:M}))},[]),U=h.useCallback(M=>{l(z=>({...z,notifications:M}))},[]);return r?y.jsx("div",{className:"flex items-center justify-center min-h-screen",children:y.jsx($t,{className:"w-6 h-6 animate-spin text-primary"})}):y.jsx(Br,{projectId:S,taskCount:0,children:y.jsx("div",{className:"flex-1 overflow-y-auto p-6",children:y.jsxs("div",{className:"max-w-2xl mx-auto space-y-6",children:[y.jsx("h1",{className:"text-xl font-semibold",children:"Settings"}),y.jsxs(IO,{defaultValue:"connection",children:[y.jsxs(KO,{children:[y.jsx(Dd,{value:"connection",children:"Connection"}),y.jsx(Dd,{value:"permissions",children:"Permissions"}),y.jsx(Dd,{value:"notifications",children:"Notifications"})]}),y.jsxs(zd,{value:"connection",className:"space-y-4 pt-4",children:[y.jsx(Yt,{children:y.jsxs(qt,{className:"space-y-4 py-4",children:[y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{children:"GraphMemory URL"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(Xt,{value:n.baseUrl,onChange:M=>T("baseUrl",M.target.value),placeholder:"http://localhost:3000",className:"font-mono text-sm"}),y.jsxs(it,{variant:d==="success"?"secondary":d==="error"?"destructive":"secondary",onClick:R,disabled:d==="testing",className:"shrink-0 gap-1.5",children:[d==="testing"&&y.jsx($t,{className:"w-3.5 h-3.5 animate-spin"}),d==="success"&&y.jsx(Jr,{className:"w-3.5 h-3.5"}),d==="error"&&y.jsx(om,{className:"w-3.5 h-3.5"}),d==="testing"?"Testing...":d==="success"?"Connected":d==="error"?"Retry":"Test"]})]})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{children:"Project ID"}),y.jsx(Xt,{value:n.projectId,onChange:M=>T("projectId",M.target.value),placeholder:"my-project",className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{children:"API Key"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(Xt,{type:x?"text":"password",value:n.apiKey,onChange:M=>T("apiKey",M.target.value),placeholder:"Enter API key...",className:"font-mono text-sm"}),y.jsx(it,{variant:"ghost",size:"sm",onClick:()=>v(!x),children:x?"Hide":"Show"})]})]}),y.jsx(em,{}),y.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Timeout (min)"}),y.jsx(Xt,{type:"number",min:1,max:1440,value:n.timeoutMinutes,onChange:M=>T("timeoutMinutes",parseInt(M.target.value,10)||0),className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Max retries"}),y.jsx(Xt,{type:"number",min:0,max:10,value:n.maxRetries,onChange:M=>T("maxRetries",parseInt(M.target.value,10)||0),className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Poll interval (s)"}),y.jsx(Xt,{type:"number",min:1,max:60,value:n.pollInterval,onChange:M=>T("pollInterval",parseInt(M.target.value,10)||0),className:"font-mono text-sm"})]})]})]})}),y.jsx("div",{className:"flex justify-end",children:y.jsxs(it,{onClick:N,disabled:s,className:"gap-2",children:[s&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Save"]})})]}),y.jsxs(zd,{value:"permissions",className:"space-y-4 pt-4",children:[y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4",children:[y.jsxs("div",{className:"divide-y divide-border",children:[y.jsx(Dr,{label:"Read files",description:"Always enabled",checked:!0,disabled:!0,onChange:()=>{}}),y.jsx(Dr,{label:"Write files",description:"Create and modify files",checked:n.permissions.writeFiles,onChange:M=>D({...n.permissions,writeFiles:M})}),y.jsx(Dr,{label:"Run tests",description:"npm test, pytest, etc.",checked:n.permissions.runTests,onChange:M=>D({...n.permissions,runTests:M})}),y.jsx(Dr,{label:"Git commit",description:"Stage and commit changes",checked:n.permissions.gitCommit,onChange:M=>D({...n.permissions,gitCommit:M})}),y.jsx(Dr,{label:"Git push",description:"Push to remote repository",checked:n.permissions.gitPush,onChange:M=>D({...n.permissions,gitPush:M})}),y.jsx(Dr,{label:"npm publish",description:"Publish packages to registry",checked:n.permissions.npmPublish,onChange:M=>D({...n.permissions,npmPublish:M})})]}),y.jsxs("div",{className:"space-y-2 mt-4",children:[y.jsx(sn,{className:"text-xs",children:"Custom command whitelist (comma-separated)"}),y.jsx(Xt,{value:n.permissions.customCommands,onChange:M=>D({...n.permissions,customCommands:M.target.value}),placeholder:"e.g. make build, cargo test",className:"font-mono text-sm"})]})]})}),y.jsx("div",{className:"flex justify-end",children:y.jsxs(it,{onClick:N,disabled:s,className:"gap-2",children:[s&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Save"]})})]}),y.jsxs(zd,{value:"notifications",className:"space-y-4 pt-4",children:[y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4 space-y-3",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Telegram"}),y.jsx(it,{variant:"secondary",size:"sm",onClick:()=>w("telegram"),disabled:g==="telegram"||!n.notifications.telegramBotToken||!n.notifications.telegramChatId,className:"text-xs",children:g==="telegram"?"Sending...":"Send test"})]}),y.jsx(Xt,{value:n.notifications.telegramBotToken,onChange:M=>U({...n.notifications,telegramBotToken:M.target.value}),placeholder:"Bot token",className:"font-mono text-sm"}),y.jsx(Xt,{value:n.notifications.telegramChatId,onChange:M=>U({...n.notifications,telegramChatId:M.target.value}),placeholder:"Chat ID",className:"font-mono text-sm"})]})}),y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4 space-y-3",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Webhook"}),y.jsx(it,{variant:"secondary",size:"sm",onClick:()=>w("webhook"),disabled:g==="webhook"||!n.notifications.webhookUrl,className:"text-xs",children:g==="webhook"?"Sending...":"Send test"})]}),y.jsx(Xt,{value:n.notifications.webhookUrl,onChange:M=>U({...n.notifications,webhookUrl:M.target.value}),placeholder:"https://example.com/webhook",className:"font-mono text-sm"}),y.jsx(Xt,{value:n.notifications.webhookHeaders,onChange:M=>U({...n.notifications,webhookHeaders:M.target.value}),placeholder:'Headers JSON: {"Authorization": "Bearer ..."}',className:"font-mono text-sm"})]})}),y.jsx(Yt,{children:y.jsx(qt,{className:"py-4",children:y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:"Desktop notifications"}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"Browser push notifications"})]}),y.jsxs("div",{className:"flex items-center gap-3",children:[y.jsx(it,{variant:"secondary",size:"sm",onClick:()=>w("desktop"),disabled:g==="desktop"||!n.notifications.desktopNotifications,className:"text-xs",children:g==="desktop"?"Sending...":"Send test"}),y.jsx(ku,{checked:n.notifications.desktopNotifications,onCheckedChange:M=>U({...n.notifications,desktopNotifications:M})})]})]})})}),y.jsx("div",{className:"flex justify-end",children:y.jsxs(it,{onClick:N,disabled:s,className:"gap-2",children:[s&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Save"]})})]})]})]})})})}function $O(){const n=mo(),l=sm(),[r,o]=h.useState(null),[s,c]=h.useState([]),d=um(l),{tasks:p}=Nb(r,l);h.useEffect(()=>{(async()=>{var v;try{const S=await fetch("/api/status");if(!S.ok)return;const C=await S.json();(v=C.config)!=null&&v.projectId&&o(C.config.projectId)}catch{}})()},[]),h.useEffect(()=>{r&&(async()=>{try{const v=await fetch(`/api/projects/${encodeURIComponent(r)}/epics`);if(!v.ok)return;const S=await v.json();c(S.epics)}catch{}})()},[r]);const g=h.useCallback(async()=>{if(r)try{await d.startSprint(r),n("/sprint")}catch(v){tt.error(v.message)}},[r,d,n]),m=h.useCallback(async v=>{if(r)try{await d.startEpic(r,v),n("/sprint")}catch(S){tt.error(S.message)}},[r,d,n]),x=h.useCallback(async()=>{try{await d.stop(),tt.success("Run stopped")}catch(v){tt.error(v.message)}},[d]);return y.jsxs(y.Fragment,{children:[y.jsx(BM,{projectId:r,isRunning:d.isRunning,onStartSprint:g,onStop:x,tasks:p,epics:s,onStartEpic:m}),y.jsxs(aw,{children:[y.jsx(zr,{path:"/",element:y.jsx(Iy,{})}),y.jsx(zr,{path:"/wizard",element:y.jsx(Iy,{})}),y.jsx(zr,{path:"/dashboard",element:y.jsx(bO,{})}),y.jsx(zr,{path:"/sprint",element:y.jsx(EO,{})}),y.jsx(zr,{path:"/settings",element:y.jsx(QO,{})})]}),y.jsx(XC,{richColors:!0,position:"bottom-right"})]})}function ZO(){return y.jsx("div",{className:"min-h-screen bg-background text-foreground",children:y.jsx($O,{})})}iE.createRoot(document.getElementById("root")).render(y.jsx(h.StrictMode,{children:y.jsx(Nw,{children:y.jsx(ZO,{})})}));
259
+ )`}return y.jsx("div",{ref:r,role:"presentation","data-base-ui-inert":"",...s,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:c}})}),FA=h.forwardRef(function(l,r){const{keepMounted:o=!1,...s}=l,{store:c}=Yl(),d=c.useState("mounted"),p=c.useState("modal"),g=c.useState("open");return d||o?y.jsx(vx.Provider,{value:o,children:y.jsxs(Hj,{ref:r,...s,children:[d&&p===!0&&y.jsx(ZA,{ref:c.context.internalBackdropRef,inert:Sx(!g)}),l.children]})}):null});function WA(n){const l=h.useRef(!0);l.current&&(l.current=!1,n())}let Uy={},By={},Hy="";function JA(n){if(typeof document>"u")return!1;const l=xt(n);return Ta(l).innerWidth-l.documentElement.clientWidth>0}function eM(n){if(!(typeof CSS<"u"&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||typeof document>"u")return!1;const r=xt(n),o=r.documentElement,s=r.body,c=bm(o)?o:s,d=c.style.overflowY,p=o.style.scrollbarGutter;o.style.scrollbarGutter="stable",c.style.overflowY="scroll";const g=c.offsetWidth;c.style.overflowY="hidden";const m=c.offsetWidth;return c.style.overflowY=d,o.style.scrollbarGutter=p,g===m}function tM(n){const l=xt(n),r=l.documentElement,o=l.body,s=bm(r)?r:o,c={overflowY:s.style.overflowY,overflowX:s.style.overflowX};return Object.assign(s.style,{overflowY:"hidden",overflowX:"hidden"}),()=>{Object.assign(s.style,c)}}function nM(n){var S;const l=xt(n),r=l.documentElement,o=l.body,s=Ta(r);let c=0,d=0,p=!1;const g=Zn.create();if(V0&&(((S=s.visualViewport)==null?void 0:S.scale)??1)!==1)return()=>{};function m(){const C=s.getComputedStyle(r),R=s.getComputedStyle(o),T=(C.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";c=r.scrollTop,d=r.scrollLeft,Uy={scrollbarGutter:r.style.scrollbarGutter,overflowY:r.style.overflowY,overflowX:r.style.overflowX},Hy=r.style.scrollBehavior,By={position:o.style.position,height:o.style.height,width:o.style.width,boxSizing:o.style.boxSizing,overflowY:o.style.overflowY,overflowX:o.style.overflowX,scrollBehavior:o.style.scrollBehavior};const D=r.scrollHeight>r.clientHeight,U=r.scrollWidth>r.clientWidth,M=C.overflowY==="scroll"||R.overflowY==="scroll",z=C.overflowX==="scroll"||R.overflowX==="scroll",B=Math.max(0,s.innerWidth-o.clientWidth),V=Math.max(0,s.innerHeight-o.clientHeight),H=parseFloat(R.marginTop)+parseFloat(R.marginBottom),K=parseFloat(R.marginLeft)+parseFloat(R.marginRight),F=bm(r)?r:o;if(p=eM(n),p){r.style.scrollbarGutter=T,F.style.overflowY="hidden",F.style.overflowX="hidden";return}Object.assign(r.style,{scrollbarGutter:T,overflowY:"hidden",overflowX:"hidden"}),(D||M)&&(r.style.overflowY="scroll"),(U||z)&&(r.style.overflowX="scroll"),Object.assign(o.style,{position:"relative",height:H||V?`calc(100dvh - ${H+V}px)`:"100dvh",width:K||B?`calc(100vw - ${K+B}px)`:"100vw",boxSizing:"border-box",overflow:"hidden",scrollBehavior:"unset"}),o.scrollTop=c,o.scrollLeft=d,r.setAttribute("data-base-ui-scroll-locked",""),r.style.scrollBehavior="unset"}function x(){Object.assign(r.style,Uy),Object.assign(o.style,By),p||(r.scrollTop=c,r.scrollLeft=d,r.removeAttribute("data-base-ui-scroll-locked"),r.style.scrollBehavior=Hy)}function v(){x(),g.request(m)}return m(),s.addEventListener("resize",v),()=>{g.cancel(),x(),typeof s.removeEventListener=="function"&&s.removeEventListener("resize",v)}}class aM{constructor(){dt(this,"lockCount",0);dt(this,"restore",null);dt(this,"timeoutLock",Ul.create());dt(this,"timeoutUnlock",Ul.create());dt(this,"release",()=>{this.lockCount-=1,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)});dt(this,"unlock",()=>{var l;this.lockCount===0&&this.restore&&((l=this.restore)==null||l.call(this),this.restore=null)})}acquire(l){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(l)),this.release}lock(l){if(this.lockCount===0||this.restore!==null)return;const o=xt(l).documentElement,s=Ta(o).getComputedStyle(o).overflowY;if(s==="hidden"||s==="clip"){this.restore=un;return}const c=Y0||!JA(l);this.restore=c?tM(l):nM(l)}}const lM=new aM;function rM(n=!0,l=null){ke(()=>{if(n)return lM.acquire(l)},[n,l])}function iM(n){const l=h.useRef(""),r=h.useCallback(s=>{s.defaultPrevented||(l.current=s.pointerType,n(s,s.pointerType))},[n]);return{onClick:h.useCallback(s=>{if(s.detail===0){n(s,"keyboard");return}"pointerType"in s?n(s,s.pointerType):n(s,l.current),l.current=""},[n]),onPointerDown:r}}function Ex(n,l){const r=h.useRef(n),o=Ue(l);ke(()=>{r.current!==n&&o(r.current)},[n,o]),ke(()=>{r.current=n},[n])}function oM(n){const[l,r]=h.useState(null),o=Ue((d,p)=>{n||r(p||(Y0?"touch":""))});Ex(n,d=>{d&&!n&&r(null)});const{onClick:s,onPointerDown:c}=iM(o);return h.useMemo(()=>({openMethod:l,triggerProps:{onClick:s,onPointerDown:c}}),[l,s,c])}function sM(n){const{store:l,parentContext:r,actionsRef:o}=n,s=l.useState("open"),c=l.useState("disablePointerDismissal"),d=l.useState("modal"),p=l.useState("popupElement"),{openMethod:g,triggerProps:m}=oM(s);TA(l);const{forceUnmount:x}=NA(s,l),v=Ue(K=>{const F=kn(K);return F.preventUnmountOnClose=()=>{l.set("preventUnmountingOnClose",!0)},F}),S=h.useCallback(()=>{l.setOpen(!1,v(KN))},[l,v]);h.useImperativeHandle(o,()=>({unmount:x,close:S}),[x,S]);const C=OA({popupStore:l,onOpenChange:l.setOpen,treatPopupAsFloatingElement:!0,noEmit:!0}),[R,w]=h.useState(0),N=R===0,T=zA(C),D=Fj(C,{outsidePressEvent(){return l.context.internalBackdropRef.current||l.context.backdropRef.current?"intentional":{mouse:d==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(K){if(!l.context.outsidePressEnabledRef.current||"button"in K&&K.button!==0||"touches"in K&&K.touches.length!==1)return!1;const F=$n(K);if(N&&!c){const ne=F;return d&&(l.context.internalBackdropRef.current||l.context.backdropRef.current)?l.context.internalBackdropRef.current===ne||l.context.backdropRef.current===ne||rt(ne,p)&&!(ne!=null&&ne.hasAttribute("data-base-ui-portal")):!0}return!1},escapeKey:N});rM(s&&d===!0,p);const{getReferenceProps:U,getFloatingProps:M,getTriggerProps:z}=kA([T,D]);l.useContextCallback("onNestedDialogOpen",K=>{w(K+1)}),l.useContextCallback("onNestedDialogClose",()=>{w(0)}),h.useEffect(()=>(r!=null&&r.onNestedDialogOpen&&s&&r.onNestedDialogOpen(R),r!=null&&r.onNestedDialogClose&&!s&&r.onNestedDialogClose(),()=>{r!=null&&r.onNestedDialogClose&&s&&r.onNestedDialogClose()}),[s,r,R]);const B=h.useMemo(()=>U(m),[U,m]),V=h.useMemo(()=>z(m),[z,m]),H=h.useMemo(()=>M(),[M]);l.useSyncedValues({openMethod:g,activeTriggerProps:B,inactiveTriggerProps:V,popupProps:H,floatingRootContext:C,nestedOpenDialogCount:R})}const uM={...MA,modal:$e(n=>n.modal),nested:$e(n=>n.nested),nestedOpenDialogCount:$e(n=>n.nestedOpenDialogCount),disablePointerDismissal:$e(n=>n.disablePointerDismissal),openMethod:$e(n=>n.openMethod),descriptionElementId:$e(n=>n.descriptionElementId),titleElementId:$e(n=>n.titleElementId),viewportElement:$e(n=>n.viewportElement),role:$e(n=>n.role)};class cM extends mx{constructor(r){super(fM(r),{popupRef:h.createRef(),backdropRef:h.createRef(),internalBackdropRef:h.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:new gx,onOpenChange:void 0,onOpenChangeComplete:void 0},uM);dt(this,"setOpen",(r,o)=>{var p,g,m,x;if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!r&&o.trigger==null&&this.state.activeTriggerId!=null&&(o.trigger=this.state.activeTriggerElement??void 0),(g=(p=this.context).onOpenChange)==null||g.call(p,r,o),o.isCanceled)return;const s={open:r,nativeEvent:o.event,reason:o.reason,nested:this.state.nested};(m=this.state.floatingRootContext.context.events)==null||m.emit("openchange",s);const c={open:r},d=((x=o.trigger)==null?void 0:x.id)??null;(d||r)&&(c.activeTriggerId=d,c.activeTriggerElement=o.trigger??null),this.update(c)})}}function fM(n={}){return{...AA(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,role:"dialog",...n}}function dM(n){const{children:l,open:r,defaultOpen:o=!1,onOpenChange:s,onOpenChangeComplete:c,disablePointerDismissal:d=!1,modal:p=!0,actionsRef:g,handle:m,triggerId:x,defaultTriggerId:v=null}=n,S=Yl(!0),C=!!S,R=Yn(()=>(m==null?void 0:m.store)??new cM({open:o,openProp:r,activeTriggerId:v,triggerIdProp:x,modal:p,disablePointerDismissal:d,nested:C})).current;WA(()=>{r===void 0&&R.state.open===!1&&o===!0&&R.update({open:!0,activeTriggerId:v})}),R.useControlledProp("openProp",r),R.useControlledProp("triggerIdProp",x),R.useSyncedValues({disablePointerDismissal:d,nested:C,modal:p}),R.useContextCallback("onOpenChange",s),R.useContextCallback("onOpenChangeComplete",c);const w=R.useState("payload");sM({store:R,actionsRef:g,parentContext:S==null?void 0:S.store.context});const N=h.useMemo(()=>({store:R}),[R]);return y.jsx(N0.Provider,{value:N,children:typeof l=="function"?l({payload:w}):l})}const mM=h.forwardRef(function(l,r){const{render:o,className:s,id:c,...d}=l,{store:p}=Yl(),g=ql(c);return p.useSyncedValueWithCleanup("titleElementId",g),Nt("h2",l,{ref:r,props:[{id:g},d]})}),hM=h.forwardRef(function(l,r){const{render:o,className:s,disabled:c=!1,focusableWhenDisabled:d=!1,nativeButton:p=!0,...g}=l,{getButtonProps:m,buttonRef:x}=Tu({disabled:c,focusableWhenDisabled:d,native:p});return Nt("button",l,{state:{disabled:c},ref:[r,x],props:[g,m]})}),Vy=n=>typeof n=="boolean"?`${n}`:n===0?"0":n,Yy=d0,Au=(n,l)=>r=>{var o;if((l==null?void 0:l.variants)==null)return Yy(n,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:s,defaultVariants:c}=l,d=Object.keys(s).map(m=>{const x=r==null?void 0:r[m],v=c==null?void 0:c[m];if(x===null)return null;const S=Vy(x)||Vy(v);return s[m][S]}),p=r&&Object.entries(r).reduce((m,x)=>{let[v,S]=x;return S===void 0||(m[v]=S),m},{}),g=l==null||(o=l.compoundVariants)===null||o===void 0?void 0:o.reduce((m,x)=>{let{class:v,className:S,...C}=x;return Object.entries(C).every(R=>{let[w,N]=R;return Array.isArray(N)?N.includes({...c,...p}[w]):{...c,...p}[w]===N})?[...m,v,S]:m},[]);return Yy(n,d,g,r==null?void 0:r.class,r==null?void 0:r.className)},au=Au("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function it({className:n,variant:l="default",size:r="default",...o}){return y.jsx(hM,{"data-slot":"button",className:qe(au({variant:l,size:r,className:n})),...o})}function pM({...n}){return y.jsx(dM,{"data-slot":"dialog",...n})}function gM({...n}){return y.jsx(FA,{"data-slot":"dialog-portal",...n})}function vM({className:n,...l}){return y.jsx(kN,{"data-slot":"dialog-overlay",className:qe("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",n),...l})}function yM({className:n,children:l,showCloseButton:r=!0,...o}){return y.jsxs(gM,{children:[y.jsx(vM,{}),y.jsxs($A,{"data-slot":"dialog-content",className:qe("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n),...o,children:[l,r&&y.jsxs(PN,{"data-slot":"dialog-close",render:y.jsx(it,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[y.jsx(om,{}),y.jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function bM({className:n,...l}){return y.jsx("div",{"data-slot":"dialog-header",className:qe("flex flex-col gap-2",n),...l})}function xM({className:n,...l}){return y.jsx(mM,{"data-slot":"dialog-title",className:qe("font-heading text-base leading-none font-medium",n),...l})}function SM({className:n,...l}){return y.jsx($N,{"data-slot":"dialog-description",className:qe("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",n),...l})}let qy=(function(n){return n.disabled="data-disabled",n.valid="data-valid",n.invalid="data-invalid",n.touched="data-touched",n.dirty="data-dirty",n.filled="data-filled",n.focused="data-focused",n})({});const EM={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},Wi={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},wM={disabled:!1,...Wi},wx={valid(n){return n===null?null:n?{[qy.valid]:""}:{[qy.invalid]:""}}},CM=h.createContext({invalid:void 0,name:void 0,validityData:{state:EM,errors:[],error:"",value:"",initialValue:null},setValidityData:un,disabled:void 0,touched:Wi.touched,setTouched:un,dirty:Wi.dirty,setDirty:un,filled:Wi.filled,setFilled:un,focused:Wi.focused,setFocused:un,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:wM,markedDirtyRef:{current:!1},validation:{getValidationProps:(n=Kt)=>n,getInputValidationProps:(n=Kt)=>n,inputRef:{current:null},commit:async()=>{}}});function Mu(n=!0){const l=h.useContext(CM);if(l.setValidityData===un&&!n)throw new Error(ea(28));return l}const RM=h.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:un,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});function Cx(){return h.useContext(RM)}const TM=h.createContext({controlId:void 0,registerControlId:un,labelId:void 0,setLabelId:un,messageIds:[],setMessageIds:un,getDescriptionProps:n=>n});function Cm(){return h.useContext(TM)}function NM(n,l){return{...n,state:{...n.state,valid:!l&&n.state.valid}}}function Rm({controlled:n,default:l,name:r,state:o="value"}){const{current:s}=h.useRef(n!==void 0),[c,d]=h.useState(l),p=s?n:c,g=h.useCallback(m=>{s||d(m)},[]);return[p,g]}function Rx(n={}){const{id:l,implicit:r=!1,controlRef:o}=n,{controlId:s,registerControlId:c}=Cm(),d=ql(l),p=r?s:void 0,g=Yn(()=>Symbol("labelable-control")),m=h.useRef(!1),x=h.useRef(l!=null),v=Ue(()=>{!m.current||c===un||(m.current=!1,c(g.current,void 0))});return ke(()=>{if(c===un)return;let S;if(r){const C=o==null?void 0:o.current;Ur(C)&&C.closest("label")!=null?S=l??null:S=p??d}else if(l!=null)x.current=!0,S=l;else if(x.current)S=d;else{v();return}if(S===void 0){v();return}m.current=!0,c(g.current,S)},[l,o,p,c,r,d,g,v]),h.useEffect(()=>v,[v]),s??d}function Tx(n){const{enabled:l=!0,value:r,id:o,name:s,controlRef:c,commit:d}=n,{formRef:p}=Cx(),{invalid:g,markedDirtyRef:m,validityData:x,setValidityData:v}=Mu(),S=Ue(n.getValue);ke(()=>{if(!l)return;let C=r;C===void 0&&(C=S()),x.initialValue===null&&C!==null&&v(R=>({...R,initialValue:C}))},[l,v,r,x.initialValue,S]),ke(()=>{!l||!o||p.current.fields.set(o,{getValue:S,name:s,controlRef:c,validityData:NM(x,g),validate(C=!0){let R=r;R===void 0&&(R=S()),m.current=!0,C?Zr.flushSync(()=>d(R)):d(R)}})},[d,c,l,p,S,o,g,m,s,x,r]),ke(()=>{const C=p.current.fields;return()=>{o&&C.delete(o)}},[p,o])}const jM=h.forwardRef(function(l,r){const{render:o,className:s,id:c,name:d,value:p,disabled:g=!1,onValueChange:m,defaultValue:x,autoFocus:v=!1,...S}=l,{state:C,name:R,disabled:w,setTouched:N,setDirty:T,validityData:D,setFocused:U,setFilled:M,validationMode:z,validation:B}=Mu(),V=w||g,H=R??d,K={...C,disabled:V},{labelId:F}=Cm(),ne=Rx({id:c});ke(()=>{var ee;const _=p!=null;(ee=B.inputRef.current)!=null&&ee.value||_&&p!==""?M(!0):_&&p===""&&M(!1)},[B.inputRef,M,p]);const ie=h.useRef(null);ke(()=>{v&&ie.current===Sa(xt(ie.current))&&U(!0)},[v,U]);const[G]=Rm({controlled:p,default:x,name:"FieldControl",state:"value"}),ce=p!==void 0,fe=ce?G:void 0;return Tx({id:ne,name:H,commit:B.commit,value:fe,getValue:()=>{var _;return(_=B.inputRef.current)==null?void 0:_.value},controlRef:B.inputRef}),Nt("input",l,{ref:[r,ie],state:K,props:[{id:ne,disabled:V,name:H,ref:B.inputRef,"aria-labelledby":F,autoFocus:v,...ce?{value:fe}:{defaultValue:x},onChange(_){const ee=_.currentTarget.value;m==null||m(ee,kn(su,_.nativeEvent)),T(ee!==D.initialValue),M(ee!=="")},onFocus(){U(!0)},onBlur(_){N(!0),U(!1),z==="onBlur"&&B.commit(_.currentTarget.value)},onKeyDown(_){_.currentTarget.tagName==="INPUT"&&_.key==="Enter"&&(N(!0),B.commit(_.currentTarget.value))}},B.getInputValidationProps(),S],stateAttributesMapping:wx})}),AM=h.forwardRef(function(l,r){return y.jsx(jM,{ref:r,...l})});function Xt({className:n,type:l,...r}){return y.jsx(AM,{type:l,"data-slot":"input",className:qe("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",n),...r})}function MM({className:n,...l}){return y.jsx("div",{"data-slot":"input-group",role:"group",className:qe("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",n),...l})}const OM=Au("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function kM({className:n,align:l="inline-start",...r}){return y.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":l,className:qe(OM({align:l}),n),onClick:o=>{var s,c;o.target.closest("button")||(c=(s=o.currentTarget.parentElement)==null?void 0:s.querySelector("input"))==null||c.focus()},...r})}function DM({className:n,...l}){return y.jsx(Hl,{"data-slot":"command",className:qe("flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground",n),...l})}function zM({title:n="Command Palette",description:l="Search for a command to run...",children:r,className:o,showCloseButton:s=!1,...c}){return y.jsxs(pM,{...c,children:[y.jsxs(bM,{className:"sr-only",children:[y.jsx(xM,{children:n}),y.jsx(SM,{children:l})]}),y.jsx(yM,{className:qe("top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0",o),showCloseButton:s,children:r})]})}function _M({className:n,...l}){return y.jsx("div",{"data-slot":"command-input-wrapper",className:"p-1 pb-0",children:y.jsxs(MM,{className:"h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!",children:[y.jsx(Hl.Input,{"data-slot":"command-input",className:qe("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",n),...l}),y.jsx(kM,{children:y.jsx(Cb,{className:"size-4 shrink-0 opacity-50"})})]})})}function LM({className:n,...l}){return y.jsx(Hl.List,{"data-slot":"command-list",className:qe("no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",n),...l})}function UM({className:n,...l}){return y.jsx(Hl.Empty,{"data-slot":"command-empty",className:qe("py-6 text-center text-sm",n),...l})}function $s({className:n,...l}){return y.jsx(Hl.Group,{"data-slot":"command-group",className:qe("overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",n),...l})}function Ad({className:n,...l}){return y.jsx(Hl.Separator,{"data-slot":"command-separator",className:qe("-mx-1 h-px bg-border",n),...l})}function tl({className:n,children:l,...r}){return y.jsxs(Hl.Item,{"data-slot":"command-item",className:qe("group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground",n),...r,children:[l,y.jsx(Jr,{className:"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100"})]})}function Md({className:n,...l}){return y.jsx("span",{"data-slot":"command-shortcut",className:qe("ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",n),...l})}function BM({projectId:n,isRunning:l,onStartSprint:r,onStop:o,tasks:s,epics:c,onStartEpic:d}){const[p,g]=h.useState(!1),m=mo();h.useEffect(()=>{function v(S){(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),g(C=>!C))}return document.addEventListener("keydown",v),()=>document.removeEventListener("keydown",v)},[]);const x=h.useCallback(v=>{v(),g(!1)},[]);return y.jsx(zM,{open:p,onOpenChange:g,children:y.jsxs(DM,{children:[y.jsx(_M,{placeholder:"Type a command or search..."}),y.jsxs(LM,{children:[y.jsx(UM,{children:"No results found."}),y.jsxs($s,{heading:"Navigation",children:[y.jsxs(tl,{onSelect:()=>x(()=>m("/dashboard")),children:[y.jsx(wb,{className:"w-4 h-4"}),y.jsx("span",{children:"View Dashboard"})]}),y.jsxs(tl,{onSelect:()=>x(()=>m("/sprint")),children:[y.jsx(Ji,{className:"w-4 h-4"}),y.jsx("span",{children:"View Sprint"})]}),y.jsxs(tl,{onSelect:()=>x(()=>m("/settings")),children:[y.jsx(Rb,{className:"w-4 h-4"}),y.jsx("span",{children:"Open Settings"})]}),y.jsxs(tl,{onSelect:()=>x(()=>m("/wizard")),children:[y.jsx(GC,{className:"w-4 h-4"}),y.jsx("span",{children:"Setup Wizard"})]})]}),y.jsx(Ad,{}),y.jsxs($s,{heading:"Actions",children:[!l&&n&&y.jsxs(tl,{onSelect:()=>x(r),children:[y.jsx(Ji,{className:"w-4 h-4 text-primary"}),y.jsx("span",{children:"Run Sprint"}),y.jsx(Md,{children:"sprint"})]}),l&&y.jsxs(tl,{onSelect:()=>x(o),children:[y.jsx(Tb,{className:"w-4 h-4 text-destructive"}),y.jsx("span",{children:"Stop Current Run"}),y.jsx(Md,{children:"stop"})]})]}),c.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Ad,{}),y.jsx($s,{heading:"Run Epic",children:c.map(v=>y.jsxs(tl,{onSelect:()=>x(()=>d(v.id)),disabled:l,children:[y.jsx(Ji,{className:"w-4 h-4 text-primary"}),y.jsx("span",{children:v.title})]},v.id))})]}),s.length>0&&y.jsxs(y.Fragment,{children:[y.jsx(Ad,{}),y.jsx($s,{heading:"Tasks",children:s.map(v=>y.jsxs(tl,{onSelect:()=>g(!1),children:[y.jsx(Cb,{className:"w-4 h-4 text-muted-foreground"}),y.jsx("span",{className:"truncate",children:v.title}),y.jsx(Md,{children:v.status})]},v.id))})]})]})]})})}function Yt({className:n,size:l="default",...r}){return y.jsx("div",{"data-slot":"card","data-size":l,className:qe("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",n),...r})}function Kr({className:n,...l}){return y.jsx("div",{"data-slot":"card-header",className:qe("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",n),...l})}function Pr({className:n,...l}){return y.jsx("div",{"data-slot":"card-title",className:qe("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",n),...l})}function Ou({className:n,...l}){return y.jsx("div",{"data-slot":"card-description",className:qe("text-sm text-muted-foreground",n),...l})}function qt({className:n,...l}){return y.jsx("div",{"data-slot":"card-content",className:qe("px-4 group-data-[size=sm]/card:px-3",n),...l})}function sn({className:n,...l}){return y.jsx("label",{"data-slot":"label",className:qe("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",n),...l})}const Nx=h.createContext(void 0);function HM(){const n=h.useContext(Nx);if(n===void 0)throw new Error(ea(63));return n}let Gy=(function(n){return n.checked="data-checked",n.unchecked="data-unchecked",n.disabled="data-disabled",n.readonly="data-readonly",n.required="data-required",n.valid="data-valid",n.invalid="data-invalid",n.touched="data-touched",n.dirty="data-dirty",n.filled="data-filled",n.focused="data-focused",n})({});const jx={...wx,checked(n){return n?{[Gy.checked]:""}:{[Gy.unchecked]:""}}};function VM(n,l,r,o=!0,s){const[c,d]=h.useState(),p=ql(s?`${s}-label`:void 0),g=n??l??c;return ke(()=>{const m=n||l||!o?void 0:YM(r.current,p);c!==m&&d(m)}),g}function YM(n,l){const r=qM(n);if(r)return!r.id&&l&&(r.id=l),r.id||void 0}function qM(n){if(!n)return;const l=n.parentElement;if(l&&l.tagName==="LABEL")return l;const r=n.id;if(r){const s=n.nextElementSibling;if(s&&s.htmlFor===r)return s}const o=n.labels;return o&&o[0]}const GM=h.forwardRef(function(l,r){const{checked:o,className:s,defaultChecked:c,"aria-labelledby":d,id:p,inputRef:g,name:m,nativeButton:x=!1,onCheckedChange:v,readOnly:S=!1,required:C=!1,disabled:R=!1,render:w,uncheckedValue:N,value:T,...D}=l,{clearErrors:U}=Cx(),{state:M,setTouched:z,setDirty:B,validityData:V,setFilled:H,setFocused:K,shouldValidateOnChange:F,validationMode:ne,disabled:ie,name:G,validation:ce}=Mu(),{labelId:fe}=Cm(),k=ie||R,_=G??m,ee=Ue(v),oe=h.useRef(null),W=_l(oe,g,ce.inputRef),j=h.useRef(null),A=ql(),q=Rx({id:p,implicit:!1,controlRef:j}),$=x?void 0:q,[I,re]=Rm({controlled:o,default:!!c,name:"Switch",state:"checked"});Tx({id:A,commit:ce.commit,value:I,controlRef:j,name:_,getValue:()=>I}),ke(()=>{oe.current&&H(oe.current.checked)},[oe,H]),Ex(I,()=>{U(_),B(I!==V.initialValue),H(I),F()?ce.commit(I):ce.commit(I,!0)});const{getButtonProps:de,buttonRef:se}=Tu({disabled:k,native:x}),he=VM(d,fe,oe,!x,$),Ye={id:x?q:A,role:"switch","aria-checked":I,"aria-readonly":S||void 0,"aria-required":C||void 0,"aria-labelledby":he,onFocus(){k||K(!0)},onBlur(){const ve=oe.current;!ve||k||(z(!0),K(!1),ne==="onBlur"&&ce.commit(ve.checked))},onClick(ve){var Ce;S||k||(ve.preventDefault(),(Ce=oe.current)==null||Ce.dispatchEvent(new PointerEvent("click",{bubbles:!0,shiftKey:ve.shiftKey,ctrlKey:ve.ctrlKey,altKey:ve.altKey,metaKey:ve.metaKey})))}},ot=h.useMemo(()=>wu({checked:I,disabled:k,id:$,name:_,required:C,style:_?zj:Sm,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:W,onChange(ve){if(ve.nativeEvent.defaultPrevented)return;const Ce=ve.target.checked,nt=kn(su,ve.nativeEvent);ee==null||ee(Ce,nt),!nt.isCanceled&&re(Ce)},onFocus(){var ve;(ve=j.current)==null||ve.focus()}},ce.getInputValidationProps,T!==void 0?{value:T}:Kt),[I,k,W,$,_,ee,C,re,ce,T]),ct=h.useMemo(()=>({...M,checked:I,disabled:k,readOnly:S,required:C}),[M,I,k,S,C]),xe=Nt("span",l,{state:ct,ref:[r,j,se],props:[Ye,ce.getValidationProps,D,de],stateAttributesMapping:jx});return y.jsxs(Nx.Provider,{value:ct,children:[xe,!I&&_&&N!==void 0&&y.jsx("input",{type:"hidden",name:_,value:N}),y.jsx("input",{...ot})]})}),IM=h.forwardRef(function(l,r){const{render:o,className:s,...c}=l,{state:d}=Mu(),p=HM(),g={...d,...p};return Nt("span",l,{state:g,ref:r,stateAttributesMapping:jx,props:c})});function ku({className:n,size:l="default",...r}){return y.jsx(GM,{"data-slot":"switch","data-size":l,className:qe("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",n),...r,children:y.jsx(IM,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}const al=["welcome","discover","select","permissions","notifications","done"],XM={welcome:"Welcome",discover:"Connect",select:"Project",permissions:"Permissions",notifications:"Notify",done:"Done"};function KM({current:n}){const l=al.indexOf(n);return y.jsx("div",{className:"flex items-center justify-center gap-1 mb-8",children:al.map((r,o)=>y.jsxs("div",{className:"flex items-center gap-1",children:[y.jsxs("div",{className:"flex flex-col items-center gap-1",children:[y.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-xs font-medium border transition-all ${o<l?"bg-primary/20 border-primary text-primary":o===l?"bg-primary border-primary text-primary-foreground font-bold":"bg-muted border-border text-muted-foreground"}`,children:o<l?y.jsx(Jr,{className:"w-3.5 h-3.5"}):o+1}),y.jsx("span",{className:`text-[10px] ${o<=l?"text-foreground":"text-muted-foreground"}`,children:XM[r]})]}),o<al.length-1&&y.jsx("div",{className:`w-6 h-px mb-4 ${o<l?"bg-primary":"bg-border"}`})]},r))})}function PM({onNext:n}){return y.jsx(Yt,{className:"max-w-md mx-auto",children:y.jsxs(qt,{className:"flex flex-col items-center text-center py-10 space-y-6",children:[y.jsx(Eb,{className:"w-14 h-14 text-primary",strokeWidth:1.5}),y.jsxs("div",{className:"space-y-2",children:[y.jsx("h2",{className:"text-xl font-mono font-semibold",children:"gm-orchestrator"}),y.jsx("p",{className:"text-sm text-muted-foreground",children:"Autonomous AI sprint runner for GraphMemory."}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"Set up takes 60 seconds."})]}),y.jsxs(it,{onClick:n,className:"gap-2",children:["Get started ",y.jsx(Wr,{className:"w-4 h-4"})]})]})})}function QM({servers:n,loading:l,manualUrl:r,manualProbing:o,onManualUrlChange:s,onManualAdd:c,onNext:d,onBack:p}){return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"Connect GraphMemory"}),y.jsx(Ou,{children:l?"Scanning localhost...":`Found ${n.length} server${n.length!==1?"s":""}`})]}),y.jsxs(qt,{className:"space-y-4",children:[l?y.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground text-sm py-4",children:[y.jsx($t,{className:"w-4 h-4 animate-spin text-primary"}),"Scanning for GraphMemory servers..."]}):n.length>0?y.jsx("div",{className:"space-y-2",children:n.map(g=>y.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-muted/50 border border-border rounded-lg text-sm",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("div",{className:"w-2 h-2 rounded-full bg-[var(--color-done)]"}),y.jsx("span",{className:"font-mono text-sm",children:g.url})]}),y.jsxs("span",{className:"text-xs text-muted-foreground",children:[g.projects.length," project",g.projects.length!==1?"s":""]})]},g.url))}):null,y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs text-muted-foreground",children:"Or enter URL manually:"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(Xt,{value:r,onChange:g=>s(g.target.value),placeholder:"http://localhost:3000",className:"font-mono text-sm"}),y.jsx(it,{variant:"secondary",onClick:c,disabled:!r.trim()||o,children:o?y.jsx($t,{className:"w-4 h-4 animate-spin"}):"Add"})]})]}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:p,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:d,disabled:l||n.length===0,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})}function $M({servers:n,selectedServer:l,selectedProject:r,onSelectServer:o,onSelectProject:s,onNext:c,onBack:d}){const p=n.find(m=>m.url===l),g=(p==null?void 0:p.projects)??[];return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"Select project"}),y.jsx(Ou,{children:"Choose a GraphMemory project to orchestrate."})]}),y.jsxs(qt,{className:"space-y-4",children:[n.length>1&&y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Server"}),y.jsx("select",{value:l,onChange:m=>{o(m.target.value),s("")},className:"w-full h-9 px-3 rounded-md border border-input bg-background text-sm font-mono",children:n.map(m=>y.jsx("option",{value:m.url,children:m.url},m.url))})]}),y.jsx("div",{className:"space-y-2",children:g.length>0?g.map(m=>y.jsxs("button",{type:"button",onClick:()=>s(m.id),className:`w-full flex items-center justify-between px-4 py-3 rounded-lg border text-sm text-left transition-colors ${r===m.id?"border-primary bg-primary/10":"border-border bg-muted/30 hover:bg-muted/50"}`,children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("div",{className:`w-2 h-2 rounded-full ${r===m.id?"bg-primary":"bg-muted-foreground"}`}),y.jsx("span",{className:"font-mono",children:m.id})]}),y.jsxs("span",{className:"text-xs text-muted-foreground",children:[m.taskCount," tasks · ",m.epicCount," epics"]})]},m.id)):y.jsx("p",{className:"text-sm text-muted-foreground py-4",children:"No projects found on this server."})}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:d,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:c,disabled:!r,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})}function kr({label:n,description:l,checked:r,disabled:o,onChange:s}){return y.jsxs("div",{className:`flex items-center justify-between py-2.5 ${o?"opacity-60":""}`,children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:n}),y.jsx("p",{className:"text-xs text-muted-foreground",children:l})]}),y.jsx(ku,{checked:r,disabled:o,onCheckedChange:s})]})}function ZM({permissions:n,onChange:l,onNext:r,onBack:o}){return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"What can Claude do?"}),y.jsx(Ou,{children:"Configure permissions for autonomous runs."})]}),y.jsxs(qt,{className:"space-y-4",children:[y.jsxs("div",{className:"divide-y divide-border",children:[y.jsx(kr,{label:"Read files",description:"Always enabled",checked:!0,disabled:!0,onChange:()=>{}}),y.jsx(kr,{label:"Write files",description:"Create and modify files",checked:n.writeFiles,onChange:s=>l({...n,writeFiles:s})}),y.jsx(kr,{label:"Run tests",description:"npm test, pytest, etc.",checked:n.runTests,onChange:s=>l({...n,runTests:s})}),y.jsx(kr,{label:"Git commit",description:"Stage and commit changes",checked:n.gitCommit,onChange:s=>l({...n,gitCommit:s})}),y.jsx(kr,{label:"Git push",description:"Push to remote repository",checked:n.gitPush,onChange:s=>l({...n,gitPush:s})}),y.jsx(kr,{label:"npm publish",description:"Publish packages to registry",checked:n.npmPublish,onChange:s=>l({...n,npmPublish:s})})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs text-muted-foreground",children:"Custom command whitelist (comma-separated)"}),y.jsx(Xt,{value:n.customCommands,onChange:s=>l({...n,customCommands:s.target.value}),placeholder:"e.g. make build, cargo test",className:"font-mono text-sm"})]}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:o,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:r,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})}function FM({notifications:n,onChange:l,onNext:r,onBack:o}){return y.jsxs(Yt,{children:[y.jsxs(Kr,{children:[y.jsx(Pr,{children:"Notifications"}),y.jsx(Ou,{children:"Optional — configure how to be notified about run progress."})]}),y.jsxs(qt,{className:"space-y-4",children:[y.jsxs("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Telegram"}),y.jsx(Xt,{value:n.telegramBotToken,onChange:s=>l({...n,telegramBotToken:s.target.value}),placeholder:"Bot token",className:"font-mono text-sm"}),y.jsx(Xt,{value:n.telegramChatId,onChange:s=>l({...n,telegramChatId:s.target.value}),placeholder:"Chat ID",className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Webhook"}),y.jsx(Xt,{value:n.webhookUrl,onChange:s=>l({...n,webhookUrl:s.target.value}),placeholder:"https://example.com/webhook",className:"font-mono text-sm"})]}),y.jsx("div",{className:"rounded-lg border border-border p-4",children:y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:"Desktop notifications"}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"Browser push notifications"})]}),y.jsx(ku,{checked:n.desktopNotifications,onCheckedChange:s=>l({...n,desktopNotifications:s})})]})}),y.jsxs("div",{className:"flex justify-between pt-2",children:[y.jsxs(it,{variant:"ghost",onClick:o,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(it,{variant:"secondary",onClick:r,children:"Skip"}),y.jsxs(it,{onClick:r,className:"gap-1",children:["Continue ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})]})]})}function WM({selectedProject:n,selectedServer:l,taskCount:r,saving:o,error:s,onSave:c,onBack:d}){return y.jsx(Yt,{className:"max-w-md mx-auto",children:y.jsxs(qt,{className:"flex flex-col items-center text-center py-10 space-y-6",children:[y.jsx("div",{className:"w-14 h-14 rounded-full bg-[var(--color-done)]/20 flex items-center justify-center",children:y.jsx(Jr,{className:"w-7 h-7 text-[var(--color-done)]"})}),y.jsxs("div",{className:"space-y-2",children:[y.jsx("h2",{className:"text-xl font-semibold",children:"You're ready"}),y.jsxs("p",{className:"text-sm text-muted-foreground font-mono",children:[n," · ",l]}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:[r," tasks waiting"]})]}),s&&y.jsx("div",{className:"w-full px-4 py-3 rounded-lg bg-destructive/10 border border-destructive/30 text-sm text-destructive",children:s}),y.jsxs("div",{className:"flex gap-3",children:[y.jsxs(it,{variant:"ghost",onClick:d,disabled:o,className:"gap-1",children:[y.jsx(Fr,{className:"w-4 h-4"})," Back"]}),y.jsxs(it,{onClick:c,disabled:o,className:"gap-2",children:[o&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Go to Dashboard ",y.jsx(Wr,{className:"w-4 h-4"})]})]})]})})}function Iy(){const n=mo(),[l,r]=h.useState("welcome"),[o,s]=h.useState(!0),[c,d]=h.useState([]),[p,g]=h.useState(!1),[m,x]=h.useState(""),[v,S]=h.useState(""),[C,R]=h.useState(""),[w,N]=h.useState({readFiles:!0,writeFiles:!0,runTests:!0,gitCommit:!0,gitPush:!1,npmPublish:!1,customCommands:""}),[T,D]=h.useState({telegramBotToken:"",telegramChatId:"",webhookUrl:"",desktopNotifications:!1}),[U,M]=h.useState(!1),[z,B]=h.useState(null);h.useEffect(()=>{(async()=>{var _;try{const ee=await fetch("/api/status");if(ee.ok){const oe=await ee.json();if((_=oe.config)!=null&&_.projectId&&!oe.setupRequired)try{if((await fetch(`/api/projects/${oe.config.projectId}/tasks?limit=1`)).ok){n("/dashboard",{replace:!0});return}}catch{}}}catch{}s(!1)})()},[n]);const V=h.useRef(!1);h.useEffect(()=>{l!=="discover"||V.current||(V.current=!0,g(!0),(async()=>{try{const _=await fetch("/api/projects");if(_.ok){const oe=(await _.json()).servers??[];d(W=>{const j=[...W];for(const A of oe)j.some(q=>q.url===A.url)||j.push(A);return j}),S(W=>W||(oe.length>0?oe[0].url:""))}}catch{}g(!1)})())},[l]);const[H,K]=h.useState(!1),F=h.useCallback(async()=>{const _=m.trim().replace(/\/+$/,"");if(_){try{new URL(_)}catch{tt.error("Invalid URL");return}K(!0);try{const ee=await fetch("/api/projects/probe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:_})});if(ee.ok){const oe=await ee.json();d(W=>{const j=W.findIndex(A=>A.url===oe.server.url);if(j>=0){const A=[...W];return A[j]=oe.server,A}return[...W,oe.server]}),S(oe.server.url),x(""),tt.success(`Found ${oe.server.projects.length} project(s)`)}else{const oe=await ee.json().catch(()=>({error:"Connection failed"}));tt.error(oe.error??"No GraphMemory server found at this URL")}}catch{tt.error("Could not reach server")}K(!1)}},[m]),ne=h.useCallback(async()=>{M(!0),B(null);try{const _=c.find(W=>W.url===v),ee={baseUrl:(_==null?void 0:_.url)??v,projectId:C,permissions:w,notifications:T},oe=await fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)});if(!oe.ok){const W=await oe.json().catch(()=>({error:`HTTP ${oe.status}`}));throw new Error(W.error??`HTTP ${oe.status}`)}tt.success("Configuration saved!"),n("/dashboard",{replace:!0})}catch(_){const ee=_ instanceof Error?_.message:"Failed to save config";B(ee),tt.error(ee)}M(!1)},[c,v,C,w,T,n]),ie=h.useCallback(()=>{const _=al.indexOf(l);_<al.length-1&&r(al[_+1])},[l]),G=h.useCallback(()=>{const _=al.indexOf(l);_>0&&r(al[_-1])},[l]);if(o)return y.jsx("div",{className:"flex items-center justify-center min-h-screen",children:y.jsx($t,{className:"w-6 h-6 animate-spin text-primary"})});const ce=c.find(_=>_.url===v),fe=ce==null?void 0:ce.projects.find(_=>_.id===C),k=(fe==null?void 0:fe.taskCount)??0;return y.jsx("div",{className:"min-h-screen flex items-center justify-center p-8",children:y.jsxs("div",{className:"w-full max-w-lg",children:[y.jsx(KM,{current:l}),l==="welcome"&&y.jsx(PM,{onNext:ie}),l==="discover"&&y.jsx(QM,{servers:c,loading:p,manualUrl:m,manualProbing:H,onManualUrlChange:x,onManualAdd:F,onNext:ie,onBack:G}),l==="select"&&y.jsx($M,{servers:c,selectedServer:v,selectedProject:C,onSelectServer:S,onSelectProject:R,onNext:ie,onBack:G}),l==="permissions"&&y.jsx(ZM,{permissions:w,onChange:N,onNext:ie,onBack:G}),l==="notifications"&&y.jsx(FM,{notifications:T,onChange:D,onNext:ie,onBack:G}),l==="done"&&y.jsx(WM,{selectedProject:C,selectedServer:v,taskCount:k,saving:U,error:z,onSave:ne,onBack:G})]})})}const Xy=new Map;function JM(n,l){const r=JSON.stringify({locale:n,options:l}),o=Xy.get(r);if(o)return o;const s=new Intl.NumberFormat(n,l);return Xy.set(r,s),s}function Ky(n,l,r){return n==null?"":JM(l,r).format(n)}function eO(n,l,r){return n==null?"":r?Ky(n,l,r):Ky(n/100,l,{style:"percent"})}const Ax=h.createContext(void 0);function Mx(){const n=h.useContext(Ax);if(n===void 0)throw new Error(ea(51));return n}let Od=(function(n){return n.complete="data-complete",n.indeterminate="data-indeterminate",n.progressing="data-progressing",n})({});const Tm={status(n){return n==="progressing"?{[Od.progressing]:""}:n==="complete"?{[Od.complete]:""}:n==="indeterminate"?{[Od.indeterminate]:""}:null}};function tO(n,l){return l==null?"indeterminate progress":n||`${l}%`}const nO=h.forwardRef(function(l,r){const{format:o,getAriaValueText:s=tO,locale:c,max:d=100,min:p=0,value:g,render:m,className:x,children:v,...S}=l,[C,R]=h.useState(),w=nu(o);let N="indeterminate";Number.isFinite(g)&&(N=g===d?"complete":"progressing");const T=eO(g,c,w.current),D=h.useMemo(()=>({status:N}),[N]),U={"aria-labelledby":C,"aria-valuemax":d,"aria-valuemin":p,"aria-valuenow":g??void 0,"aria-valuetext":s(T,g),role:"progressbar",children:y.jsxs(h.Fragment,{children:[v,y.jsx("span",{role:"presentation",style:Sm,children:"x"})]})},M=h.useMemo(()=>({formattedValue:T,max:d,min:p,setLabelId:R,state:D,status:N,value:g}),[T,d,p,R,D,N,g]),z=Nt("div",l,{state:D,ref:r,props:[U,S],stateAttributesMapping:Tm});return y.jsx(Ax.Provider,{value:M,children:z})}),aO=h.forwardRef(function(l,r){const{render:o,className:s,...c}=l,{state:d}=Mx();return Nt("div",l,{state:d,ref:r,props:c,stateAttributesMapping:Tm})});function lO(n,l,r){return(n-l)*100/(r-l)}const rO=h.forwardRef(function(l,r){const{render:o,className:s,...c}=l,{max:d,min:p,value:g,state:m}=Mx(),x=Number.isFinite(g)&&g!==null?lO(g,p,d):null,v=h.useCallback(()=>x==null?{}:{insetInlineStart:0,height:"inherit",width:`${x}%`},[x]);return Nt("div",l,{state:m,ref:r,props:[{style:v()},c],stateAttributesMapping:Tm})});function Nm({className:n,children:l,value:r,...o}){return y.jsxs(nO,{value:r,"data-slot":"progress",className:qe("flex flex-wrap gap-3",n),...o,children:[l,y.jsx(iO,{children:y.jsx(oO,{})})]})}function iO({className:n,...l}){return y.jsx(aO,{className:qe("relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",n),"data-slot":"progress-track",...l})}function oO({className:n,...l}){return y.jsx(rO,{"data-slot":"progress-indicator",className:qe("h-full bg-primary transition-all",n),...l})}const sO=h.forwardRef(function(l,r){const{className:o,render:s,orientation:c="horizontal",...d}=l;return Nt("div",l,{state:{orientation:c},ref:r,props:[{role:"separator","aria-orientation":c},d]})});function em({className:n,orientation:l="horizontal",...r}){return y.jsx(sO,{"data-slot":"separator",orientation:l,className:qe("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",n),...r})}const uO=[{path:"/dashboard",label:"Dashboard",icon:wb},{path:"/sprint",label:"Sprint",icon:Ji},{path:"/settings",label:"Settings",icon:Rb}];function Br({projectId:n,taskCount:l,children:r}){const o=Ra();return y.jsxs("div",{className:"flex min-h-screen",children:[y.jsxs("aside",{className:"w-60 shrink-0 bg-card border-r border-border flex flex-col",children:[y.jsxs("div",{className:"px-4 py-5 flex items-center gap-2",children:[y.jsx(Eb,{className:"w-5 h-5 text-primary",strokeWidth:1.5}),y.jsx("span",{className:"font-mono text-sm font-semibold",children:"gm-orchestrator"})]}),y.jsx(em,{}),y.jsx("nav",{className:"flex-1 py-3",children:uO.map(({path:s,label:c,icon:d})=>{const p=o.pathname===s;return y.jsxs(Hr,{to:s,className:`flex items-center gap-3 px-4 py-2 text-sm transition-colors ${p?"border-l-2 border-primary bg-muted text-foreground font-medium":"border-l-2 border-transparent text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[y.jsx(d,{className:"w-4 h-4"}),c]},s)})}),y.jsx(em,{}),y.jsxs("div",{className:"px-4 py-4 space-y-2",children:[n&&y.jsxs("div",{children:[y.jsx("p",{className:"text-xs font-mono font-medium truncate",children:n}),y.jsxs("p",{className:"text-[10px] text-muted-foreground",children:[l," tasks"]})]}),y.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-muted-foreground",children:[y.jsx(jC,{className:"w-3 h-3"}),y.jsx("span",{children:"Cmd+K"})]})]})]}),y.jsx("main",{className:"flex-1 flex flex-col overflow-hidden",children:r})]})}function cO(n){return Nt(n.defaultTagName??"div",n,n)}const fO=Au("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function dO({className:n,variant:l="default",render:r,...o}){return cO({defaultTagName:"span",props:wu({className:qe(fO({variant:l}),n)},o),render:r,state:{slot:"badge",variant:l}})}const Py={done:{label:"Done",className:"bg-[var(--color-done)]/15 text-[var(--color-done)] border-[var(--color-done)]/30"},in_progress:{label:"Running",className:"bg-[var(--color-running)]/15 text-[var(--color-running)] border-[var(--color-running)]/30 animate-pulse-dot"},backlog:{label:"Backlog",className:"bg-muted/50 text-muted-foreground border-muted-foreground/30"},todo:{label:"Queued",className:"bg-[var(--color-queued)]/15 text-[var(--color-queued)] border-[var(--color-queued)]/30"},cancelled:{label:"Cancelled",className:"bg-[var(--color-cancelled)]/15 text-[var(--color-cancelled)] border-[var(--color-cancelled)]/30"}};function mO({status:n}){const l=Py[n]??Py.todo;return y.jsx(dO,{variant:"outline",className:`text-[10px] font-medium ${l.className}`,children:l.label})}function hO(n,l){const[r,o]=h.useState("");return h.useEffect(()=>{if(!n||!l){n&&!l&&o(Qy(Date.now()-new Date(n).getTime()));return}const s=new Date(n).getTime(),c=()=>o(Qy(Date.now()-s));c();const d=setInterval(c,1e3);return()=>clearInterval(d)},[n,l]),r}function Qy(n){const l=Math.floor(n/1e3);if(l<60)return`${l}s`;const r=Math.floor(l/60),o=l%60;return r<60?`${r}m ${o}s`:`${Math.floor(r/60)}h ${r%60}m`}function pO({task:n}){const l=n.status==="in_progress",r=hO(n.updatedAt,l);return y.jsxs("div",{className:`flex items-center gap-3 px-3 py-2.5 rounded-lg border transition-colors ${n.status==="done"?"border-border/50 opacity-70 task-done":n.status==="cancelled"?"border-border/50 opacity-50":"border-border hover:border-primary/30"}`,style:{borderLeftWidth:"3px",borderLeftColor:`var(--priority-${n.priority})`},children:[y.jsxs("div",{className:"flex-1 min-w-0",children:[y.jsx("span",{className:`text-sm ${n.status==="cancelled"?"line-through text-muted-foreground":""}`,children:n.title}),n.tags&&n.tags.length>0&&y.jsx("span",{className:"ml-2 text-xs text-muted-foreground",children:n.tags.map(o=>`#${o}`).join(" ")})]}),r&&y.jsx("span",{className:"text-xs text-muted-foreground font-mono shrink-0",children:r}),y.jsx(mO,{status:n.status})]})}function gO({epic:n}){var s,c;const l=((s=n.tasks)==null?void 0:s.length)??0,r=((c=n.tasks)==null?void 0:c.filter(d=>d.status==="done").length)??0,o=l>0?Math.round(r/l*100):0;return y.jsxs("div",{className:"rounded-lg border border-border p-3 space-y-2 hover:border-primary/30 transition-colors",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx("span",{className:"text-sm font-medium truncate",children:n.title}),y.jsxs("span",{className:"text-xs text-muted-foreground shrink-0 ml-2",children:[r,"/",l]})]}),y.jsx(Nm,{value:o,className:"h-1.5"})]})}const $y={critical:0,high:1,medium:2,low:3},Zy=5;function vO(n){const[l,r]=h.useState([]),[o,s]=h.useState(!1),c=h.useCallback(async()=>{if(n){s(!0);try{const d=await fetch(`/api/projects/${encodeURIComponent(n)}/epics`);if(!d.ok)throw new Error(`HTTP ${d.status}`);const p=await d.json();r(p.epics)}catch{}finally{s(!1)}}},[n]);return h.useEffect(()=>{c()},[c]),{epics:l,isLoading:o}}function yO(){const n=new Date().getHours();return n<12?"Good morning.":n<18?"Good afternoon.":"Good evening."}function bO(){const n=mo(),l=sm(),[r,o]=h.useState(null);h.useEffect(()=>{(async()=>{var B;try{const V=await fetch("/api/status");if(!V.ok)return;const H=await V.json();(B=H.config)!=null&&B.projectId?o(H.config.projectId):n("/",{replace:!0})}catch{}})()},[n]);const{tasks:s,isLoading:c}=Nb(r,l),d=um(l),{epics:p,isLoading:g}=vO(r),[m,x]=h.useState(""),[v,S]=h.useState(!1),C=h.useMemo(()=>[...s].sort((B,V)=>($y[B.priority]??3)-($y[V.priority]??3)),[s]),R=h.useMemo(()=>{const B=new Date;return new Date(B.getFullYear(),B.getMonth(),B.getDate()).toISOString()},[]),w=h.useMemo(()=>{const B=s.filter(F=>F.status==="todo").length,V=s.filter(F=>F.status==="done").length,H=s.filter(F=>F.status==="done"&&F.completedAt&&F.completedAt>=R).length,K=s.filter(F=>F.status==="cancelled"&&F.completedAt&&F.completedAt>=R).length;return{total:s.length,todo:B,done:V,doneToday:H,cancelledToday:K}},[s,R]),N=w.doneToday+w.cancelledToday,T=N>0?Math.round(w.doneToday/N*100):0,D=h.useCallback(async()=>{if(r)try{await d.startSprint(r),n("/sprint")}catch(B){tt.error(B.message)}},[r,d,n]),U=h.useCallback(async()=>{if(!(!r||!m))try{await d.startEpic(r,m),n("/sprint")}catch(B){tt.error(B.message)}},[r,m,d,n]);if(!r)return y.jsx("div",{className:"flex items-center justify-center min-h-screen",children:y.jsx($t,{className:"w-6 h-6 animate-spin text-primary"})});const M=v?C:C.slice(0,Zy),z=C.length-Zy;return y.jsx(Br,{projectId:r,taskCount:w.total,children:y.jsxs("div",{className:"flex-1 overflow-y-auto p-6 space-y-6",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-xl font-semibold",children:yO()}),y.jsxs("p",{className:"text-sm text-muted-foreground",children:[w.todo," tasks waiting in ",r]})]}),y.jsxs(it,{onClick:D,disabled:d.isRunning,className:"gap-2",children:[d.isRunning?y.jsx($t,{className:"w-4 h-4 animate-spin"}):y.jsx(Ji,{className:"w-4 h-4"}),d.isRunning?"Running...":"Run Sprint"]})]}),y.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[y.jsxs(Yt,{className:"lg:col-span-2",children:[y.jsx(Kr,{className:"pb-3",children:y.jsx(Pr,{className:"text-sm font-medium uppercase tracking-wider text-muted-foreground",children:"Tasks"})}),y.jsx(qt,{className:"space-y-2",children:c&&s.length===0?y.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground text-sm py-8",children:[y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Loading tasks..."]}):C.length===0?y.jsx("p",{className:"text-muted-foreground text-sm py-8",children:"No tasks found."}):y.jsxs(y.Fragment,{children:[M.map(B=>y.jsx(pO,{task:B},B.id)),!v&&z>0&&y.jsxs("button",{type:"button",onClick:()=>S(!0),className:"text-xs text-muted-foreground hover:text-foreground transition-colors pt-1",children:["+ ",z," more"]})]})})]}),y.jsxs(Yt,{children:[y.jsx(Kr,{className:"pb-3",children:y.jsx(Pr,{className:"text-sm font-medium uppercase tracking-wider text-muted-foreground",children:"Epics"})}),y.jsx(qt,{className:"space-y-2",children:g&&p.length===0?y.jsx("div",{className:"flex items-center gap-3 text-muted-foreground text-sm py-4",children:y.jsx($t,{className:"w-4 h-4 animate-spin"})}):p.length===0?y.jsx("p",{className:"text-muted-foreground text-sm py-4",children:"No epics found."}):y.jsxs(y.Fragment,{children:[p.map(B=>y.jsx(gO,{epic:B},B.id)),y.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[y.jsxs("select",{value:m,onChange:B=>x(B.target.value),disabled:d.isRunning||g,className:"flex-1 h-8 px-2 rounded-md border border-input bg-background text-xs font-mono disabled:opacity-50",children:[y.jsx("option",{value:"",children:"Select epic..."}),p.map(B=>y.jsx("option",{value:B.id,children:B.title},B.id))]}),y.jsx(it,{size:"sm",variant:"secondary",onClick:U,disabled:!m||d.isRunning,className:"text-xs",children:"Run Epic"})]})]})})]})]}),N>0&&y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4",children:[y.jsxs("div",{className:"flex items-center justify-between mb-2",children:[y.jsx("span",{className:"text-sm font-medium",children:"Today"}),y.jsxs("span",{className:"text-xs text-muted-foreground",children:[y.jsxs("span",{className:"text-[var(--color-done)]",children:[w.doneToday," done"]}),w.cancelledToday>0&&y.jsxs(y.Fragment,{children:[" · ",y.jsxs("span",{className:"text-[var(--color-cancelled)]",children:[w.cancelledToday," cancelled"]})]})]})]}),y.jsx(Nm,{value:T,className:"h-2"})]})})]})})}const Fy=500;function xO({lines:n,taskId:l}){const r=h.useRef(null),o=h.useRef(null),s=h.useRef(!1),c=n.length>Fy?n.slice(n.length-Fy):n,d=n.length-c.length;h.useEffect(()=>{var g;s.current||(g=r.current)==null||g.scrollIntoView({behavior:"smooth"})},[n.length]);function p(){const g=o.current;if(!g)return;const m=g.scrollHeight-g.scrollTop-g.clientHeight<40;s.current=!m}return y.jsxs("div",{ref:o,onScroll:p,"data-task-id":l,className:"h-full bg-black/40 rounded-lg border border-border p-3 overflow-y-auto font-mono text-sm leading-relaxed",children:[d>0&&y.jsxs("div",{className:"text-muted-foreground text-xs mb-1",children:["... ",d," lines hidden ..."]}),c.map((g,m)=>{const x=g.startsWith(">");return y.jsx("div",{className:`whitespace-pre-wrap break-all log-line ${x?"text-primary":"text-foreground/80"}`,children:g},d+m)}),y.jsx("div",{ref:r})]})}function no(n){const l=Math.floor(n/1e3),r=Math.floor(l/60),o=l%60;return r<60?`${r}m ${String(o).padStart(2,"0")}s`:`${Math.floor(r/60)}h ${r%60}m`}function kd({item:n}){const{task:l,startedAt:r,finishedAt:o}=n,s=l.status==="in_progress",[c,d]=h.useState("");return h.useEffect(()=>{if(!r){d("");return}if(o){d(no(o-r));return}if(!s){d(no(Date.now()-r));return}const p=()=>d(no(Date.now()-r));p();const g=setInterval(p,1e3);return()=>clearInterval(g)},[r,o,s]),y.jsxs("div",{className:`flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${l.status==="done"?"opacity-60 task-done":""} ${l.status==="cancelled"?"opacity-50":""}`,children:[l.status==="done"&&y.jsx(Jr,{className:"w-4 h-4 text-[var(--color-done)] shrink-0"}),l.status==="in_progress"&&y.jsx("div",{className:"w-4 h-4 rounded-full bg-primary shrink-0 animate-pulse-dot"}),l.status==="todo"&&y.jsx(TC,{className:"w-4 h-4 text-muted-foreground shrink-0"}),l.status==="cancelled"&&y.jsx(om,{className:"w-4 h-4 text-[var(--color-cancelled)] shrink-0"}),y.jsx("span",{className:`flex-1 truncate ${l.status==="cancelled"?"line-through text-muted-foreground":""}`,children:l.title}),c&&y.jsx("span",{className:"text-xs text-muted-foreground font-mono shrink-0",children:c}),l.status==="done"&&y.jsx("span",{className:"text-[10px] text-[var(--color-done)]",children:"done"})]})}function SO(n){const[l,r]=h.useState(0),o=h.useRef(Date.now());return h.useEffect(()=>{if(!n)return;o.current=Date.now();const s=setInterval(()=>r(Date.now()-o.current),1e3);return()=>clearInterval(s)},[n]),l}function EO(){const n=sm(),l=um(n),[r,o]=h.useState(null),[s,c]=h.useState(new Map),[d,p]=h.useState([]),[g,m]=h.useState(null),[x,v]=h.useState(""),[S,C]=h.useState(null),[R,w]=h.useState(!1),[N,T]=h.useState(!1),D=h.useRef(!1),U=SO(N);h.useEffect(()=>{(async()=>{var F;try{const ne=await fetch("/api/status");if(!ne.ok)return;const ie=await ne.json();(F=ie.config)!=null&&F.projectId&&o(ie.config.projectId)}catch{}})()},[]),h.useEffect(()=>{l.isRunning&&!D.current&&(T(!0),D.current=!0)},[l.isRunning]),h.useEffect(()=>{if(!n.lastEvent)return;const F=n.lastEvent;switch(F.type){case"run:started":D.current=!0,T(!0),C(null),w(!1),c(new Map),p([]),m(null),v("");break;case"task:started":{const ne=F.payload.task;m(ne.id),v(ne.title),p([]),c(ie=>{const G=new Map(ie);return G.set(ne.id,{task:{...ne,status:"in_progress"},startedAt:Date.now()}),G});break}case"task:done":case"task:cancelled":case"task:timeout":{const ne=F.payload.task,ie=Date.now();c(G=>{const ce=new Map(G),fe=ce.get(ne.id);return ce.set(ne.id,{task:{...ne},startedAt:fe==null?void 0:fe.startedAt,finishedAt:ie}),ce}),g===ne.id&&m(null);break}case"task:retrying":{const ne=F.payload.task;c(ie=>{const G=new Map(ie);return G.set(ne.id,{task:{...ne,status:"in_progress"},startedAt:Date.now()}),G}),m(ne.id),v(ne.title),p([]);break}case"log:line":p(ne=>[...ne,F.payload.line]);break;case"run:complete":C(F.payload),T(!1),m(null),tt.success("Sprint complete!");break;case"run:stopped":w(!0),T(!1),m(null);break;case"error":p(ne=>[...ne,`[ERROR] ${F.payload.message}`]),tt.error(F.payload.message);break}},[n.lastEvent,g]);const M=h.useMemo(()=>Array.from(s.values()),[s]),z=h.useMemo(()=>M.filter(F=>F.task.status==="done").length,[M]),B=M.length,V=B>0?Math.round(z/B*100):0,H=h.useCallback(async()=>{try{await l.stop()}catch(F){tt.error(F.message)}},[l]),K=M.length;if(!N&&!S&&!R)return y.jsx(Br,{projectId:r,taskCount:0,children:y.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-4",children:[y.jsx("p",{className:"text-lg text-muted-foreground",children:"No active run"}),y.jsx(Hr,{to:"/dashboard",className:au(),children:"Go to Dashboard"})]})});if(S){const F=S;return y.jsx(Br,{projectId:r,taskCount:K,children:y.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-6 gap-6",children:[y.jsx(Yt,{className:"w-full max-w-md",children:y.jsxs(qt,{className:"py-8 space-y-6",children:[y.jsxs("div",{className:"flex flex-col items-center gap-2",children:[y.jsx("div",{className:"w-12 h-12 rounded-full bg-[var(--color-done)]/20 flex items-center justify-center",children:y.jsx(Jr,{className:"w-6 h-6 text-[var(--color-done)]"})}),y.jsx("h2",{className:"text-lg font-semibold",children:"Sprint Complete"}),y.jsx("p",{className:"text-sm text-muted-foreground",children:no(F.durationMs)})]}),y.jsxs("div",{className:"grid grid-cols-3 gap-3 text-center",children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-2xl font-semibold text-[var(--color-done)]",children:F.done}),y.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Done"})]}),y.jsxs("div",{children:[y.jsx("p",{className:"text-2xl font-semibold text-[var(--color-cancelled)]",children:F.cancelled}),y.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Cancelled"})]}),y.jsxs("div",{children:[y.jsx("p",{className:"text-2xl font-semibold text-muted-foreground",children:F.skipped}),y.jsx("p",{className:"text-[10px] text-muted-foreground",children:"Skipped"})]})]})]})}),M.length>0&&y.jsx(Yt,{className:"w-full max-w-2xl",children:y.jsx(qt,{className:"py-2 divide-y divide-border",children:M.map(ne=>y.jsx(kd,{item:ne},ne.task.id))})}),y.jsxs(Hr,{to:"/dashboard",className:au({className:"gap-2"}),children:[y.jsx(Fr,{className:"w-4 h-4"})," Back to Dashboard"]})]})})}return R&&!N?y.jsx(Br,{projectId:r,taskCount:K,children:y.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center p-6 gap-4",children:[y.jsx("h2",{className:"text-lg font-semibold text-yellow-400",children:"Run Stopped"}),M.length>0&&y.jsx(Yt,{className:"w-full max-w-2xl",children:y.jsx(qt,{className:"py-2 divide-y divide-border",children:M.map(F=>y.jsx(kd,{item:F},F.task.id))})}),y.jsx(Hr,{to:"/dashboard",className:au(),children:"Back to Dashboard"})]})}):y.jsx(Br,{projectId:r,taskCount:K,children:y.jsxs("div",{className:"flex flex-col h-full",children:[y.jsxs("div",{className:"px-6 py-4 border-b border-border space-y-3",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("h1",{className:"text-lg font-semibold",children:"Sprint"}),y.jsxs("p",{className:"text-xs text-muted-foreground",children:[N?"Running":"Idle"," · ",no(U)," elapsed"]})]}),y.jsxs(it,{variant:"destructive",size:"sm",onClick:H,className:"gap-1.5",children:[y.jsx(Tb,{className:"w-3.5 h-3.5"})," Stop"]})]}),y.jsxs("div",{className:"flex items-center gap-3",children:[y.jsx(Nm,{value:V,className:"flex-1 h-2"}),y.jsxs("span",{className:"text-xs text-muted-foreground font-mono shrink-0",children:[z," / ",B]})]})]}),y.jsx("div",{className:"border-b border-border max-h-[40vh] overflow-y-auto divide-y divide-border/50",children:M.length===0?y.jsxs("div",{className:"px-6 py-4 text-sm text-muted-foreground flex items-center gap-2",children:[y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Waiting for tasks..."]}):M.map(F=>y.jsx(kd,{item:F},F.task.id))}),y.jsxs("div",{className:"flex-1 px-6 py-4 flex flex-col min-h-0",children:[y.jsxs("p",{className:"text-xs text-muted-foreground mb-2 font-mono",children:["Claude",x?` — ${x}`:""]}),y.jsx("div",{className:"flex-1 min-h-0",children:y.jsx(xO,{lines:d,taskId:g??""})})]})]})})}const Ox=h.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}});function wO(){return h.useContext(Ox)}function kx(n){const{children:l,elementsRef:r,labelsRef:o,onMapChange:s}=n,c=Ue(s),d=h.useRef(0),p=Yn(RO).current,g=Yn(CO).current,[m,x]=h.useState(0),v=h.useRef(m),S=Ue((T,D)=>{g.set(T,D??null),v.current+=1,x(v.current)}),C=Ue(T=>{g.delete(T),v.current+=1,x(v.current)}),R=h.useMemo(()=>{const T=new Map;return Array.from(g.keys()).filter(U=>U.isConnected).sort(TO).forEach((U,M)=>{const z=g.get(U)??{};T.set(U,{...z,index:M})}),T},[g,m]);ke(()=>{if(typeof MutationObserver!="function"||R.size===0)return;const T=new MutationObserver(D=>{const U=new Set,M=z=>U.has(z)?U.delete(z):U.add(z);D.forEach(z=>{z.removedNodes.forEach(M),z.addedNodes.forEach(M)}),U.size===0&&(v.current+=1,x(v.current))});return R.forEach((D,U)=>{U.parentElement&&T.observe(U.parentElement,{childList:!0})}),()=>{T.disconnect()}},[R]),ke(()=>{v.current===m&&(r.current.length!==R.size&&(r.current.length=R.size),o&&o.current.length!==R.size&&(o.current.length=R.size),d.current=R.size),c(R)},[c,R,r,o,m]),ke(()=>()=>{r.current=[]},[r]),ke(()=>()=>{o&&(o.current=[])},[o]);const w=Ue(T=>(p.add(T),()=>{p.delete(T)}));ke(()=>{p.forEach(T=>T(R))},[p,R]);const N=h.useMemo(()=>({register:S,unregister:C,subscribeMapChange:w,elementsRef:r,labelsRef:o,nextIndexRef:d}),[S,C,w,r,o,d]);return y.jsx(Ox.Provider,{value:N,children:l})}function CO(){return new Map}function RO(){return new Set}function TO(n,l){const r=n.compareDocumentPosition(l);return r&Node.DOCUMENT_POSITION_FOLLOWING||r&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:r&Node.DOCUMENT_POSITION_PRECEDING||r&Node.DOCUMENT_POSITION_CONTAINS?1:0}const NO=h.createContext(void 0);function Dx(){const n=h.useContext(NO);return(n==null?void 0:n.direction)??"ltr"}const zx=h.createContext(void 0);function jm(){const n=h.useContext(zx);if(n===void 0)throw new Error(ea(64));return n}let jO=(function(n){return n.activationDirection="data-activation-direction",n.orientation="data-orientation",n})({});const Am={tabActivationDirection:n=>({[jO.activationDirection]:n})},AO=h.forwardRef(function(l,r){const{className:o,defaultValue:s=0,onValueChange:c,orientation:d="horizontal",render:p,value:g,...m}=l,x=Dx(),v=Object.hasOwn(l,"defaultValue"),S=h.useRef([]),[C,R]=h.useState(()=>new Map),[w,N]=Rm({controlled:g,default:s,name:"Tabs",state:"value"}),T=g!==void 0,[D,U]=h.useState(()=>new Map),[M,z]=h.useState("none"),B=Ue((_,ee)=>{c==null||c(_,ee),!ee.isCanceled&&(N(_),z(ee.activationDirection))}),V=Ue((_,ee)=>{R(oe=>{if(oe.get(_)===ee)return oe;const W=new Map(oe);return W.set(_,ee),W})}),H=Ue((_,ee)=>{R(oe=>{if(!oe.has(_)||oe.get(_)!==ee)return oe;const W=new Map(oe);return W.delete(_),W})}),K=h.useCallback(_=>C.get(_),[C]),F=h.useCallback(_=>{for(const ee of D.values())if(_===(ee==null?void 0:ee.value))return ee==null?void 0:ee.id},[D]),ne=h.useCallback(_=>{if(_===void 0)return null;for(const[ee,oe]of D.entries())if(oe!=null&&_===(oe.value??oe.index))return ee;return null},[D]),ie=h.useMemo(()=>({direction:x,getTabElementBySelectedValue:ne,getTabIdByPanelValue:F,getTabPanelIdByValue:K,onValueChange:B,orientation:d,registerMountedTabPanel:V,setTabMap:U,unregisterMountedTabPanel:H,tabActivationDirection:M,value:w}),[x,ne,F,K,B,d,V,U,H,M,w]),G=h.useMemo(()=>{for(const _ of D.values())if(_!=null&&_.value===w)return _},[D,w]),ce=h.useMemo(()=>{for(const _ of D.values())if(_!=null&&!_.disabled)return _.value},[D]);ke(()=>{if(T||D.size===0)return;const _=G==null?void 0:G.disabled,ee=G==null&&w!==null;if(v&&_&&w===s||!_&&!ee)return;const W=ce??null;w!==W&&(N(W),z("none"))},[s,ce,v,T,G,z,N,D,w]);const k=Nt("div",l,{state:{orientation:d,tabActivationDirection:M},ref:r,props:m,stateAttributesMapping:Am});return y.jsx(zx.Provider,{value:ie,children:y.jsx(kx,{elementsRef:S,children:k})})}),_x="data-composite-item-active";let MO=(function(n){return n[n.None=0]="None",n[n.GuessFromOrder=1]="GuessFromOrder",n})({});function Lx(n={}){const{label:l,metadata:r,textRef:o,indexGuessBehavior:s,index:c}=n,{register:d,unregister:p,subscribeMapChange:g,elementsRef:m,labelsRef:x,nextIndexRef:v}=wO(),S=h.useRef(-1),[C,R]=h.useState(c??(s===MO.GuessFromOrder?()=>{if(S.current===-1){const T=v.current;v.current+=1,S.current=T}return S.current}:-1)),w=h.useRef(null),N=h.useCallback(T=>{var D;if(w.current=T,C!==-1&&T!==null&&(m.current[C]=T,x)){const U=l!==void 0;x.current[C]=U?l:((D=o==null?void 0:o.current)==null?void 0:D.textContent)??T.textContent}},[C,m,x,l,o]);return ke(()=>{if(c!=null)return;const T=w.current;if(T)return d(T,r),()=>{p(T)}},[c,d,p,r]),ke(()=>{if(c==null)return g(T=>{var U;const D=w.current?(U=T.get(w.current))==null?void 0:U.index:null;D!=null&&R(D)})},[c,g,R]),h.useMemo(()=>({ref:N,index:C}),[C,N])}function OO(n={}){const{highlightItemOnHover:l,highlightedIndex:r,onHighlightedIndexChange:o}=z0(),{ref:s,index:c}=Lx(n),d=r===c,p=h.useRef(null),g=_l(s,p);return{compositeProps:h.useMemo(()=>({tabIndex:d?0:-1,onFocus(){o(c)},onMouseMove(){const x=p.current;if(!l||!x)return;const v=x.hasAttribute("disabled")||x.ariaDisabled==="true";!d&&!v&&x.focus()}}),[d,o,c,l]),compositeRef:g,index:c}}const Ux=h.createContext(void 0);function kO(){const n=h.useContext(Ux);if(n===void 0)throw new Error(ea(65));return n}const DO=h.forwardRef(function(l,r){const{className:o,disabled:s=!1,render:c,value:d,id:p,nativeButton:g=!0,...m}=l,{value:x,getTabPanelIdByValue:v,orientation:S}=jm(),{activateOnFocus:C,highlightedTabIndex:R,onTabActivation:w,registerTabResizeObserverElement:N,setHighlightedTabIndex:T,tabsListElement:D}=kO(),U=ql(p),M=h.useMemo(()=>({disabled:s,id:U,value:d}),[s,U,d]),{compositeProps:z,compositeRef:B,index:V}=OO({metadata:M}),H=d===x,K=h.useRef(!1),F=h.useRef(null);h.useEffect(()=>{const j=F.current;if(j)return N(j)},[N]),ke(()=>{if(K.current){K.current=!1;return}if(!(H&&V>-1&&R!==V))return;const j=D;if(j!=null){const A=Sa(xt(j));if(A&&rt(j,A))return}s||T(V)},[H,V,R,T,s,D]);const{getButtonProps:ne,buttonRef:ie}=Tu({disabled:s,native:g,focusableWhenDisabled:!0}),G=v(d),ce=h.useRef(!1),fe=h.useRef(!1);function k(j){H||s||w(d,kn(su,j.nativeEvent,void 0,{activationDirection:"none"}))}function _(j){H||(V>-1&&!s&&T(V),!s&&C&&(!ce.current||ce.current&&fe.current)&&w(d,kn(su,j.nativeEvent,void 0,{activationDirection:"none"})))}function ee(j){if(H||s)return;ce.current=!0;function A(){ce.current=!1,fe.current=!1}(!j.button||j.button===0)&&(fe.current=!0,xt(j.currentTarget).addEventListener("pointerup",A,{once:!0}))}return Nt("button",l,{state:{disabled:s,active:H,orientation:S},ref:[r,ie,B,F],props:[z,{role:"tab","aria-controls":G,"aria-selected":H,id:U,onClick:k,onFocus:_,onPointerDown:ee,[_x]:H?"":void 0,onKeyDownCapture(){K.current=!0}},m,ne]})});let zO=(function(n){return n.index="data-index",n.activationDirection="data-activation-direction",n.orientation="data-orientation",n.hidden="data-hidden",n[n.startingStyle=Ll.startingStyle]="startingStyle",n[n.endingStyle=Ll.endingStyle]="endingStyle",n})({});const _O={...Am,...vm},LO=h.forwardRef(function(l,r){const{className:o,value:s,render:c,keepMounted:d=!1,...p}=l,{value:g,getTabIdByPanelValue:m,orientation:x,tabActivationDirection:v,registerMountedTabPanel:S,unregisterMountedTabPanel:C}=jm(),R=ql(),w=h.useMemo(()=>({id:R,value:s}),[R,s]),{ref:N,index:T}=Lx({metadata:w}),D=s===g,{mounted:U,transitionStatus:M,setMounted:z}=px(D),B=!U,V=m(s),H={hidden:B,orientation:x,tabActivationDirection:v,transitionStatus:M},K=h.useRef(null),F=Nt("div",l,{state:H,ref:[r,N,K],props:[{"aria-labelledby":V,hidden:B,id:R,role:"tabpanel",tabIndex:D?0:-1,inert:Sx(!D),[zO.index]:T},p],stateAttributesMapping:_O});return wm({open:D,ref:K,onComplete(){D||z(!1)}}),ke(()=>{if(!(B&&!d)&&R!=null)return S(s,R),()=>{C(s,R)}},[B,d,s,R,S,C]),d||U?F:null});function UO(n){return n==null||n.hasAttribute("disabled")||n.getAttribute("aria-disabled")==="true"}const BO=[];function HO(n){const{itemSizes:l,cols:r=1,loopFocus:o=!0,dense:s=!1,orientation:c="both",direction:d,highlightedIndex:p,onHighlightedIndexChange:g,rootRef:m,enableHomeAndEndKeys:x=!1,stopEventPropagation:v=!1,disabledIndices:S,modifierKeys:C=BO}=n,[R,w]=h.useState(0),N=r>1,T=h.useRef(null),D=_l(T,m),U=h.useRef([]),M=h.useRef(!1),z=p??R,B=Ue((K,F=!1)=>{if((g??w)(K),F){const ne=U.current[K];_y(T.current,ne,d,c)}}),V=Ue(K=>{if(K.size===0||M.current)return;M.current=!0;const F=Array.from(K.keys()),ne=F.find(G=>G==null?void 0:G.hasAttribute(_x))??null,ie=ne?F.indexOf(ne):-1;ie!==-1&&B(ie),_y(T.current,ne,d,c)}),H=h.useMemo(()=>({"aria-orientation":c==="both"?void 0:c,ref:D,onFocus(K){!T.current||!zy(K.target)||K.target.setSelectionRange(0,K.target.value.length??0)},onKeyDown(K){const F=x?VA:xx;if(!F.has(K.key)||VO(K,C)||!T.current)return;const ie=d==="rtl",G=ie?oo:Ir,ce={horizontal:G,vertical:kl,both:G}[c],fe=ie?Ir:oo,k={horizontal:fe,vertical:Gr,both:fe}[c];if(zy(K.target)&&!UO(K.target)){const q=K.target.selectionStart,$=K.target.selectionEnd,I=K.target.value??"";if(q==null||K.shiftKey||q!==$||K.key!==k&&q<I.length||K.key!==ce&&q>0)return}let _=z;const ee=cj(U,S),oe=fj(U,S);if(N){const q=l||Array.from({length:U.current.length},()=>({width:1,height:1})),$=mj(q,r,s),I=$.findIndex(de=>de!=null&&!qr(U,de,S)),re=$.reduce((de,se,he)=>se!=null&&!qr(U,se,S)?he:de,-1);_=$[dj({current:$.map(de=>de?U.current[de]:null)},{event:K,orientation:c,loopFocus:o,cols:r,disabledIndices:pj([...S||U.current.map((de,se)=>qr(U,se)?se:void 0),void 0],$),minIndex:I,maxIndex:re,prevIndex:hj(z>oe?ee:z,q,$,r,K.key===kl?"bl":K.key===Ir?"tr":"tl"),rtl:ie})]}const W={horizontal:[G],vertical:[kl],both:[G,kl]}[c],j={horizontal:[fe],vertical:[Gr],both:[fe,Gr]}[c],A=N?F:{horizontal:x?BA:yx,vertical:x?HA:bx,both:F}[c];x&&(K.key===bo?_=ee:K.key===xo&&(_=oe)),_===z&&(W.includes(K.key)||j.includes(K.key))&&(o&&_===oe&&W.includes(K.key)?_=ee:o&&_===ee&&j.includes(K.key)?_=oe:_=On(U,{startingIndex:_,decrement:j.includes(K.key),disabledIndices:S})),_!==z&&!Zd(U,_)&&(v&&K.stopPropagation(),A.has(K.key)&&K.preventDefault(),B(_,!0),queueMicrotask(()=>{var q;(q=U.current[_])==null||q.focus()}))}}),[r,s,d,S,U,x,z,N,l,o,D,C,B,c,v]);return h.useMemo(()=>({props:H,highlightedIndex:z,onHighlightedIndexChange:B,elementsRef:U,disabledIndices:S,onMapChange:V,relayKeyboardEvent:H.onKeyDown}),[H,z,B,U,S,V])}function VO(n,l){for(const r of KA.values())if(!l.includes(r)&&n.getModifierState(r))return!0;return!1}function YO(n){const{render:l,className:r,refs:o=Kd,props:s=Kd,state:c=Kt,stateAttributesMapping:d,highlightedIndex:p,onHighlightedIndexChange:g,orientation:m,dense:x,itemSizes:v,loopFocus:S,cols:C,enableHomeAndEndKeys:R,onMapChange:w,stopEventPropagation:N=!0,rootRef:T,disabledIndices:D,modifierKeys:U,highlightItemOnHover:M=!1,tag:z="div",...B}=n,V=Dx(),{props:H,highlightedIndex:K,onHighlightedIndexChange:F,elementsRef:ne,onMapChange:ie,relayKeyboardEvent:G}=HO({itemSizes:v,cols:C,loopFocus:S,dense:x,orientation:m,highlightedIndex:p,onHighlightedIndexChange:g,rootRef:T,stopEventPropagation:N,enableHomeAndEndKeys:R,direction:V,disabledIndices:D,modifierKeys:U}),ce=Nt(z,n,{state:c,ref:o,props:[H,...s,B],stateAttributesMapping:d}),fe=h.useMemo(()=>({highlightedIndex:K,onHighlightedIndexChange:F,highlightItemOnHover:M,relayKeyboardEvent:G}),[K,F,M,G]);return y.jsx(D0.Provider,{value:fe,children:y.jsx(kx,{elementsRef:ne,onMapChange:k=>{w==null||w(k),ie(k)},children:ce})})}const qO=h.forwardRef(function(l,r){const{activateOnFocus:o=!1,className:s,loopFocus:c=!0,render:d,...p}=l,{getTabElementBySelectedValue:g,onValueChange:m,orientation:x,value:v,setTabMap:S,tabActivationDirection:C}=jm(),[R,w]=h.useState(0),[N,T]=h.useState(null),D=h.useRef(new Set),U=h.useRef(new Set),M=h.useRef(null),z=Ue(()=>{D.current.forEach(G=>{G()})});h.useEffect(()=>{if(typeof ResizeObserver>"u")return;const G=new ResizeObserver(()=>{D.current.size&&z()});return M.current=G,N&&G.observe(N),U.current.forEach(ce=>{G.observe(ce)}),()=>{G.disconnect(),M.current=null}},[N,z]);const B=Ue(G=>(D.current.add(G),()=>{D.current.delete(G)})),V=Ue(G=>{var ce;return U.current.add(G),(ce=M.current)==null||ce.observe(G),()=>{var fe;U.current.delete(G),(fe=M.current)==null||fe.unobserve(G)}}),H=GO(v,x,N,g),K=Ue((G,ce)=>{if(G!==v){const fe=H(G);ce.activationDirection=fe,m(G,ce)}}),F={orientation:x,tabActivationDirection:C},ne={"aria-orientation":x==="vertical"?"vertical":void 0,role:"tablist"},ie=h.useMemo(()=>({activateOnFocus:o,highlightedTabIndex:R,registerIndicatorUpdateListener:B,registerTabResizeObserverElement:V,onTabActivation:K,setHighlightedTabIndex:w,tabsListElement:N}),[o,R,B,V,K,w,N]);return y.jsx(Ux.Provider,{value:ie,children:y.jsx(YO,{render:d,className:s,state:F,refs:[r,T],props:[ne,p],stateAttributesMapping:Am,highlightedIndex:R,enableHomeAndEndKeys:!0,loopFocus:c,orientation:x,onHighlightedIndexChange:w,onMapChange:S,disabledIndices:Kd})})});function Wy(n,l){const{left:r,top:o}=n.getBoundingClientRect(),{left:s,top:c}=l.getBoundingClientRect(),d=r-s,p=o-c;return{left:d,top:p}}function GO(n,l,r,o){const[s,c]=h.useState(null);return ke(()=>{if(n==null||r==null){c(null);return}const d=o(n);if(d==null){c(null);return}const{left:p,top:g}=Wy(d,r);c(l==="horizontal"?p:g)},[l,o,r,n]),h.useCallback(d=>{if(d===n)return"none";if(d==null)return c(null),"none";if(d!=null&&r!=null){const p=o(d);if(p!=null){const{left:g,top:m}=Wy(p,r);if(s==null)return c(l==="horizontal"?g:m),"none";if(l==="horizontal"){if(g<s)return c(g),"left";if(g>s)return c(g),"right"}else{if(m<s)return c(m),"up";if(m>s)return c(m),"down"}}}return"none"},[o,l,s,r,n])}function IO({className:n,orientation:l="horizontal",...r}){return y.jsx(AO,{"data-slot":"tabs","data-orientation":l,className:qe("group/tabs flex gap-2 data-horizontal:flex-col",n),...r})}const XO=Au("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function KO({className:n,variant:l="default",...r}){return y.jsx(qO,{"data-slot":"tabs-list","data-variant":l,className:qe(XO({variant:l}),n),...r})}function Dd({className:n,...l}){return y.jsx(DO,{"data-slot":"tabs-trigger",className:qe("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",n),...l})}function zd({className:n,...l}){return y.jsx(LO,{"data-slot":"tabs-content",className:qe("flex-1 text-sm outline-none",n),...l})}const PO={baseUrl:"",projectId:"",apiKey:"",timeoutMinutes:30,maxRetries:2,pollInterval:3,permissions:{readFiles:!0,writeFiles:!0,runTests:!0,gitCommit:!0,gitPush:!1,npmPublish:!1,customCommands:""},notifications:{telegramBotToken:"",telegramChatId:"",webhookUrl:"",webhookHeaders:"",desktopNotifications:!1}};function Jy(n){try{return new URL(n),!0}catch{return!1}}function Dr({label:n,description:l,checked:r,disabled:o,onChange:s}){return y.jsxs("div",{className:`flex items-center justify-between py-2.5 ${o?"opacity-60":""}`,children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:n}),y.jsx("p",{className:"text-xs text-muted-foreground",children:l})]}),y.jsx(ku,{checked:r,disabled:o,onCheckedChange:s})]})}function QO(){const[n,l]=h.useState(PO),[r,o]=h.useState(!0),[s,c]=h.useState(!1),[d,p]=h.useState("idle"),[g,m]=h.useState(null),[x,v]=h.useState(!1),[S,C]=h.useState(null);h.useEffect(()=>{(async()=>{var M,z,B,V,H,K,F,ne,ie,G,ce;try{const fe=await fetch("/api/config");if(fe.ok){const k=await fe.json();C(k.projectId??null),l({baseUrl:k.baseUrl??"",projectId:k.projectId??"",apiKey:k.apiKey??"",timeoutMinutes:Math.round((k.timeoutMs??18e5)/6e4),maxRetries:k.maxRetries??2,pollInterval:Math.round((k.pauseMs??3e3)/1e3),permissions:{readFiles:!0,writeFiles:((M=k.permissions)==null?void 0:M.writeFiles)??!0,runTests:((z=k.permissions)==null?void 0:z.runTests)??!0,gitCommit:((B=k.permissions)==null?void 0:B.gitCommit)??!0,gitPush:((V=k.permissions)==null?void 0:V.gitPush)??!1,npmPublish:((H=k.permissions)==null?void 0:H.npmPublish)??!1,customCommands:((K=k.permissions)==null?void 0:K.customCommands)??""},notifications:{telegramBotToken:((F=k.notifications)==null?void 0:F.telegramBotToken)??"",telegramChatId:((ne=k.notifications)==null?void 0:ne.telegramChatId)??"",webhookUrl:((ie=k.notifications)==null?void 0:ie.webhookUrl)??"",webhookHeaders:((G=k.notifications)==null?void 0:G.webhookHeaders)??"",desktopNotifications:((ce=k.notifications)==null?void 0:ce.desktopNotifications)??!1}})}}catch{}o(!1)})()},[]);const R=h.useCallback(async()=>{if(!n.baseUrl||!Jy(n.baseUrl)){tt.error("Enter a valid GraphMemory URL first");return}p("testing");try{(await fetch("/api/projects")).ok?(p("success"),tt.success("Connection successful")):(p("error"),tt.error("Connection failed"))}catch{p("error"),tt.error("Connection failed — could not reach server")}},[n.baseUrl]),w=h.useCallback(async M=>{m(M);try{const z=await fetch("/api/notifications/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({channel:M})});if(z.ok)tt.success(`Test ${M} notification sent`);else{const B=await z.json().catch(()=>({error:`HTTP ${z.status}`}));tt.error(B.error??`Test ${M} notification failed`)}}catch{tt.error(`Failed to send test ${M} notification`)}m(null)},[]),N=h.useCallback(async()=>{if(!n.baseUrl.trim()){tt.error("GraphMemory URL is required");return}if(!Jy(n.baseUrl)){tt.error("Invalid GraphMemory URL");return}if(!n.projectId.trim()){tt.error("Project ID is required");return}c(!0);try{const M={baseUrl:n.baseUrl.trim(),projectId:n.projectId.trim(),apiKey:n.apiKey||void 0,timeoutMs:n.timeoutMinutes*6e4,pauseMs:n.pollInterval*1e3,maxRetries:n.maxRetries,permissions:n.permissions,notifications:n.notifications},z=await fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)});if(!z.ok){const B=await z.json().catch(()=>({error:`HTTP ${z.status}`}));throw new Error(B.error??`HTTP ${z.status}`)}tt.success("Settings saved")}catch(M){tt.error(M instanceof Error?M.message:"Failed to save settings")}c(!1)},[n]),T=h.useCallback((M,z)=>{l(B=>({...B,[M]:z}))},[]),D=h.useCallback(M=>{l(z=>({...z,permissions:M}))},[]),U=h.useCallback(M=>{l(z=>({...z,notifications:M}))},[]);return r?y.jsx("div",{className:"flex items-center justify-center min-h-screen",children:y.jsx($t,{className:"w-6 h-6 animate-spin text-primary"})}):y.jsx(Br,{projectId:S,taskCount:0,children:y.jsx("div",{className:"flex-1 overflow-y-auto p-6",children:y.jsxs("div",{className:"max-w-2xl mx-auto space-y-6",children:[y.jsx("h1",{className:"text-xl font-semibold",children:"Settings"}),y.jsxs(IO,{defaultValue:"connection",children:[y.jsxs(KO,{children:[y.jsx(Dd,{value:"connection",children:"Connection"}),y.jsx(Dd,{value:"permissions",children:"Permissions"}),y.jsx(Dd,{value:"notifications",children:"Notifications"})]}),y.jsxs(zd,{value:"connection",className:"space-y-4 pt-4",children:[y.jsx(Yt,{children:y.jsxs(qt,{className:"space-y-4 py-4",children:[y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{children:"GraphMemory URL"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(Xt,{value:n.baseUrl,onChange:M=>T("baseUrl",M.target.value),placeholder:"http://localhost:3000",className:"font-mono text-sm"}),y.jsxs(it,{variant:d==="success"?"secondary":d==="error"?"destructive":"secondary",onClick:R,disabled:d==="testing",className:"shrink-0 gap-1.5",children:[d==="testing"&&y.jsx($t,{className:"w-3.5 h-3.5 animate-spin"}),d==="success"&&y.jsx(Jr,{className:"w-3.5 h-3.5"}),d==="error"&&y.jsx(om,{className:"w-3.5 h-3.5"}),d==="testing"?"Testing...":d==="success"?"Connected":d==="error"?"Retry":"Test"]})]})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{children:"Project ID"}),y.jsx(Xt,{value:n.projectId,onChange:M=>T("projectId",M.target.value),placeholder:"my-project",className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{children:"API Key"}),y.jsxs("div",{className:"flex gap-2",children:[y.jsx(Xt,{type:x?"text":"password",value:n.apiKey,onChange:M=>T("apiKey",M.target.value),placeholder:"Enter API key...",className:"font-mono text-sm"}),y.jsx(it,{variant:"ghost",size:"sm",onClick:()=>v(!x),children:x?"Hide":"Show"})]})]}),y.jsx(em,{}),y.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Timeout (min)"}),y.jsx(Xt,{type:"number",min:1,max:1440,value:n.timeoutMinutes,onChange:M=>T("timeoutMinutes",parseInt(M.target.value,10)||0),className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Max retries"}),y.jsx(Xt,{type:"number",min:0,max:10,value:n.maxRetries,onChange:M=>T("maxRetries",parseInt(M.target.value,10)||0),className:"font-mono text-sm"})]}),y.jsxs("div",{className:"space-y-2",children:[y.jsx(sn,{className:"text-xs",children:"Poll interval (s)"}),y.jsx(Xt,{type:"number",min:1,max:60,value:n.pollInterval,onChange:M=>T("pollInterval",parseInt(M.target.value,10)||0),className:"font-mono text-sm"})]})]})]})}),y.jsx("div",{className:"flex justify-end",children:y.jsxs(it,{onClick:N,disabled:s,className:"gap-2",children:[s&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Save"]})})]}),y.jsxs(zd,{value:"permissions",className:"space-y-4 pt-4",children:[y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4",children:[y.jsxs("div",{className:"divide-y divide-border",children:[y.jsx(Dr,{label:"Read files",description:"Always enabled",checked:!0,disabled:!0,onChange:()=>{}}),y.jsx(Dr,{label:"Write files",description:"Create and modify files",checked:n.permissions.writeFiles,onChange:M=>D({...n.permissions,writeFiles:M})}),y.jsx(Dr,{label:"Run tests",description:"npm test, pytest, etc.",checked:n.permissions.runTests,onChange:M=>D({...n.permissions,runTests:M})}),y.jsx(Dr,{label:"Git commit",description:"Stage and commit changes",checked:n.permissions.gitCommit,onChange:M=>D({...n.permissions,gitCommit:M})}),y.jsx(Dr,{label:"Git push",description:"Push to remote repository",checked:n.permissions.gitPush,onChange:M=>D({...n.permissions,gitPush:M})}),y.jsx(Dr,{label:"npm publish",description:"Publish packages to registry",checked:n.permissions.npmPublish,onChange:M=>D({...n.permissions,npmPublish:M})})]}),y.jsxs("div",{className:"space-y-2 mt-4",children:[y.jsx(sn,{className:"text-xs",children:"Custom command whitelist (comma-separated)"}),y.jsx(Xt,{value:n.permissions.customCommands,onChange:M=>D({...n.permissions,customCommands:M.target.value}),placeholder:"e.g. make build, cargo test",className:"font-mono text-sm"})]})]})}),y.jsx("div",{className:"flex justify-end",children:y.jsxs(it,{onClick:N,disabled:s,className:"gap-2",children:[s&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Save"]})})]}),y.jsxs(zd,{value:"notifications",className:"space-y-4 pt-4",children:[y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4 space-y-3",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Telegram"}),y.jsx(it,{variant:"secondary",size:"sm",onClick:()=>w("telegram"),disabled:g==="telegram"||!n.notifications.telegramBotToken||!n.notifications.telegramChatId,className:"text-xs",children:g==="telegram"?"Sending...":"Send test"})]}),y.jsx(Xt,{value:n.notifications.telegramBotToken,onChange:M=>U({...n.notifications,telegramBotToken:M.target.value}),placeholder:"Bot token",className:"font-mono text-sm"}),y.jsx(Xt,{value:n.notifications.telegramChatId,onChange:M=>U({...n.notifications,telegramChatId:M.target.value}),placeholder:"Chat ID",className:"font-mono text-sm"})]})}),y.jsx(Yt,{children:y.jsxs(qt,{className:"py-4 space-y-3",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsx(sn,{className:"text-sm font-medium",children:"Webhook"}),y.jsx(it,{variant:"secondary",size:"sm",onClick:()=>w("webhook"),disabled:g==="webhook"||!n.notifications.webhookUrl,className:"text-xs",children:g==="webhook"?"Sending...":"Send test"})]}),y.jsx(Xt,{value:n.notifications.webhookUrl,onChange:M=>U({...n.notifications,webhookUrl:M.target.value}),placeholder:"https://example.com/webhook",className:"font-mono text-sm"}),y.jsx(Xt,{value:n.notifications.webhookHeaders,onChange:M=>U({...n.notifications,webhookHeaders:M.target.value}),placeholder:'Headers JSON: {"Authorization": "Bearer ..."}',className:"font-mono text-sm"})]})}),y.jsx(Yt,{children:y.jsx(qt,{className:"py-4",children:y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("div",{children:[y.jsx("p",{className:"text-sm font-medium",children:"Desktop notifications"}),y.jsx("p",{className:"text-xs text-muted-foreground",children:"Browser push notifications"})]}),y.jsxs("div",{className:"flex items-center gap-3",children:[y.jsx(it,{variant:"secondary",size:"sm",onClick:()=>w("desktop"),disabled:g==="desktop"||!n.notifications.desktopNotifications,className:"text-xs",children:g==="desktop"?"Sending...":"Send test"}),y.jsx(ku,{checked:n.notifications.desktopNotifications,onCheckedChange:M=>U({...n.notifications,desktopNotifications:M})})]})]})})}),y.jsx("div",{className:"flex justify-end",children:y.jsxs(it,{onClick:N,disabled:s,className:"gap-2",children:[s&&y.jsx($t,{className:"w-4 h-4 animate-spin"}),"Save"]})})]})]})]})})})}function $O(){const n=mo(),l=sm(),[r,o]=h.useState(null),[s,c]=h.useState([]),d=um(l),{tasks:p}=Nb(r,l);h.useEffect(()=>{(async()=>{var v;try{const S=await fetch("/api/status");if(!S.ok)return;const C=await S.json();(v=C.config)!=null&&v.projectId&&o(C.config.projectId)}catch{}})()},[]),h.useEffect(()=>{r&&(async()=>{try{const v=await fetch(`/api/projects/${encodeURIComponent(r)}/epics`);if(!v.ok)return;const S=await v.json();c(S.epics)}catch{}})()},[r]);const g=h.useCallback(async()=>{if(r)try{await d.startSprint(r),n("/sprint")}catch(v){tt.error(v.message)}},[r,d,n]),m=h.useCallback(async v=>{if(r)try{await d.startEpic(r,v),n("/sprint")}catch(S){tt.error(S.message)}},[r,d,n]),x=h.useCallback(async()=>{try{await d.stop(),tt.success("Run stopped")}catch(v){tt.error(v.message)}},[d]);return y.jsxs(y.Fragment,{children:[y.jsx(BM,{projectId:r,isRunning:d.isRunning,onStartSprint:g,onStop:x,tasks:p,epics:s,onStartEpic:m}),y.jsxs(aw,{children:[y.jsx(zr,{path:"/",element:y.jsx(Iy,{})}),y.jsx(zr,{path:"/wizard",element:y.jsx(Iy,{})}),y.jsx(zr,{path:"/dashboard",element:y.jsx(bO,{})}),y.jsx(zr,{path:"/sprint",element:y.jsx(EO,{})}),y.jsx(zr,{path:"/settings",element:y.jsx(QO,{})})]}),y.jsx(XC,{richColors:!0,position:"bottom-right"})]})}function ZO(){return y.jsx("div",{className:"min-h-screen bg-background text-foreground",children:y.jsx($O,{})})}iE.createRoot(document.getElementById("root")).render(y.jsx(h.StrictMode,{children:y.jsx(Nw,{children:y.jsx(ZO,{})})}));
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-content:"";--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-900:oklch(39.6% .141 25.723);--color-orange-500:oklch(70.5% .213 47.604);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-900:oklch(39.3% .095 152.535);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Inter", sans-serif;--default-mono-font-family:"JetBrains Mono", monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Inter,sans-serif}code,pre,.font-mono{font-family:JetBrains Mono,monospace}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\/2{top:50%}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0\.5{left:calc(var(--spacing) * .5)}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-8\!{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[40vh\]{max-height:40vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-\(--anchor-width\){width:var(--anchor-width)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-60{width:calc(var(--spacing) * 60)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)),:where(.divide-border\/50>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.rounded-\[2px\]{border-radius:2px}.rounded-\[calc\(var\(--radius\)-3px\)\]{border-radius:calc(var(--radius) - 3px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-lg\!{border-radius:var(--radius)!important}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-xl\!{border-radius:calc(var(--radius) * 1.4)!important}.rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--color-cancelled\)\]\/30{border-color:var(--color-cancelled)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-cancelled\)\]\/30{border-color:color-mix(in oklab,var(--color-cancelled) 30%,transparent)}}.border-\[var\(--color-done\)\]\/30{border-color:var(--color-done)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-done\)\]\/30{border-color:color-mix(in oklab,var(--color-done) 30%,transparent)}}.border-\[var\(--color-queued\)\]\/30{border-color:var(--color-queued)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-queued\)\]\/30{border-color:color-mix(in oklab,var(--color-queued) 30%,transparent)}}.border-\[var\(--color-running\)\]\/30{border-color:var(--color-running)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-running\)\]\/30{border-color:color-mix(in oklab,var(--color-running) 30%,transparent)}}.border-accent{border-color:var(--accent)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/30{border-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-input,.border-input\/30{border-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.border-input\/30{border-color:color-mix(in oklab,var(--input) 30%,transparent)}}.border-muted-foreground\/30{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/30{border-color:color-mix(in oklab,var(--muted-foreground) 30%,transparent)}}.border-primary{border-color:var(--primary)}.border-transparent{border-color:#0000}.bg-\[var\(--color-cancelled\)\]\/15{background-color:var(--color-cancelled)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-cancelled\)\]\/15{background-color:color-mix(in oklab,var(--color-cancelled) 15%,transparent)}}.bg-\[var\(--color-done\)\],.bg-\[var\(--color-done\)\]\/15{background-color:var(--color-done)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-done\)\]\/15{background-color:color-mix(in oklab,var(--color-done) 15%,transparent)}}.bg-\[var\(--color-done\)\]\/20{background-color:var(--color-done)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-done\)\]\/20{background-color:color-mix(in oklab,var(--color-done) 20%,transparent)}}.bg-\[var\(--color-queued\)\]\/15{background-color:var(--color-queued)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-queued\)\]\/15{background-color:color-mix(in oklab,var(--color-queued) 15%,transparent)}}.bg-\[var\(--color-running\)\]\/15{background-color:var(--color-running)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-running\)\]\/15{background-color:color-mix(in oklab,var(--color-running) 15%,transparent)}}.bg-accent,.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--accent) 20%,transparent)}}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900\/50{background-color:#10182880}@supports (color:color-mix(in lab,red,red)){.bg-gray-900\/50{background-color:color-mix(in oklab,var(--color-gray-900) 50%,transparent)}}.bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/30{background-color:color-mix(in oklab,var(--color-green-900) 30%,transparent)}}.bg-green-900\/40{background-color:#0d542b66}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/40{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}.bg-input\/30{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.bg-input\/30{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/40{background-color:color-mix(in oklab,var(--color-red-900) 40%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.text-left{text-align:left}.font-heading{font-family:Inter,sans-serif}.font-mono{font-family:JetBrains Mono,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-cancelled\)\]{color:var(--color-cancelled)}.text-\[var\(--color-done\)\]{color:var(--color-done)}.text-\[var\(--color-queued\)\]{color:var(--color-queued)}.text-\[var\(--color-running\)\]{color:var(--color-running)}.text-accent{color:var(--accent)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground) 80%,transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-green-400{color:var(--color-green-400)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-400{color:var(--color-red-400)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-yellow-400{color:var(--color-yellow-400)}.uppercase{text-transform:uppercase}.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,)}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-has-data-\[slot\=command-shortcut\]\/command-item\:hidden:is(:where(.group\/command-item):has([data-slot=command-shortcut]) *){display:none}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-data-\[checked\=true\]\/command-item\:opacity-100:is(:where(.group\/command-item)[data-checked=true] *){opacity:1}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=default\]\/switch\:size-4:is(:where(.group\/switch)[data-size=default] *){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[size\=sm\]\/switch\:size-3:is(:where(.group\/switch)[data-size=sm] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-selected\/command-item\:text-foreground:is(:where(.group\/command-item):where([data-selected=true]) *){color:var(--foreground)}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * -3)}.after\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(var(--spacing) * -2)}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media(hover:hover){.hover\:border-gray-600:hover{border-color:var(--color-gray-600)}.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:border-primary\/30:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus,:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:where([data-slot=dialog-content]) .in-data-\[slot\=dialog-content\]\:rounded-lg\!{border-radius:var(--radius)!important}.has-disabled\:bg-input\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.has-disabled\:bg-input\/50:has(:disabled){background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:calc(var(--spacing) * 0)}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:p-0:has(>svg){padding:calc(var(--spacing) * 0)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--spacing) * 1)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--spacing) * -1)}.data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--spacing) * -1)}.data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--spacing) * -1)}.data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--spacing) * -1)}.data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--spacing) * -2.5)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=default\]\:h-\[18\.4px\][data-size=default]{height:18.4px}.data-\[size\=default\]\:w-\[32px\][data-size=default]{width:32px}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:h-\[14px\][data-size=sm]{height:14px}.data-\[size\=sm\]\:w-\[24px\][data-size=sm]{width:24px}.data-\[size\=sm\]\:gap-3[data-size=sm]{gap:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md),10px)}.data-\[size\=sm\]\:py-3[data-size=sm]{padding-block:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}:is(.\*\:data-\[slot\=input-group-addon\]\:pl-2\!>*)[data-slot=input-group-addon]{padding-left:calc(var(--spacing) * 2)!important}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media(min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:disabled\:bg-transparent:is(.dark *):disabled{background-color:#0000}.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.group-data-\[size\=default\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=default] *):where([data-state=checked]),.group-data-\[size\=default\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=default] *):where([data-checked]:not([data-checked=false])),.group-data-\[size\=sm\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=sm] *):where([data-state=checked]),.group-data-\[size\=sm\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=sm] *):where([data-checked]:not([data-checked=false])){--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.dark\:data-checked\:bg-primary-foreground:is(.dark *):where([data-state=checked]),.dark\:data-checked\:bg-primary-foreground:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary-foreground)}.data-unchecked\:bg-input:where([data-state=unchecked]),.data-unchecked\:bg-input:where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}.group-data-\[size\=default\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=default] *):where([data-state=unchecked]),.group-data-\[size\=default\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=default] *):where([data-unchecked]:not([data-unchecked=false])),.group-data-\[size\=sm\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=sm] *):where([data-state=unchecked]),.group-data-\[size\=sm\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=sm] *):where([data-unchecked]:not([data-unchecked=false])){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.dark\:data-unchecked\:bg-foreground:is(.dark *):where([data-state=unchecked]),.dark\:data-unchecked\:bg-foreground:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--foreground)}.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-state=unchecked]),.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-state=unchecked]),.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.data-selected\:bg-muted:where([data-selected=true]){background-color:var(--muted)}.data-selected\:text-foreground:where([data-selected=true]){color:var(--foreground)}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:cursor-not-allowed:where([data-disabled=true]),.data-disabled\:cursor-not-allowed:where([data-disabled]:not([data-disabled=false])){cursor:not-allowed}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-state=active]),.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-b\]\:pb-4.border-b{padding-bottom:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:\[\.border-b\]\:pb-3:is(:where(.group\/card)[data-size=sm] *).border-b{padding-bottom:calc(var(--spacing) * 3)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:px-2 *)[cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:py-1\.5 *)[cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-xs *)[cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:font-medium *)[cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-muted-foreground *)[cmdk-group-heading]{color:var(--muted-foreground)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media(hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-selected\:\*\:\[svg\]\:text-foreground:where([data-selected=true])>*):is(svg){color:var(--foreground)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(13% .015 270);--foreground:oklch(91% .02 240);--card:oklch(16% .015 270);--card-foreground:oklch(91% .02 240);--popover:oklch(16% .015 270);--popover-foreground:oklch(91% .02 240);--primary:oklch(55% .25 270);--primary-foreground:oklch(100% 0 0);--secondary:oklch(22% .015 270);--secondary-foreground:oklch(91% .02 240);--muted:oklch(25% .015 270);--muted-foreground:oklch(55% .02 250);--accent:oklch(55% .25 270);--accent-foreground:oklch(100% 0 0);--destructive:oklch(65% .25 10);--border:oklch(22% .015 270);--input:oklch(22% .015 270);--ring:oklch(55% .25 270);--radius:.5rem;--chart-1:oklch(55% .25 270);--chart-2:oklch(72% .2 155);--chart-3:oklch(70% .18 45);--chart-4:oklch(65% .25 10);--chart-5:oklch(55% .02 250);--sidebar:oklch(14% .015 270);--sidebar-foreground:oklch(91% .02 240);--sidebar-primary:oklch(55% .25 270);--sidebar-primary-foreground:oklch(100% 0 0);--sidebar-accent:oklch(22% .015 270);--sidebar-accent-foreground:oklch(91% .02 240);--sidebar-border:oklch(22% .015 270);--sidebar-ring:oklch(55% .25 270);--color-done:#00d084;--color-cancelled:#ff4d6d;--color-running:#7c3aed;--color-queued:#64748b;--priority-critical:#ff4d6d;--priority-high:#f97316;--priority-medium:#7c3aed;--priority-low:#64748b}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes slide-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-pulse-dot{animation:1.5s ease-in-out infinite pulse-dot}.log-line{animation:.15s slide-in}.task-done{transition:opacity .3s,background .3s}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>GM Orchestrator</title>
7
- <script type="module" crossorigin src="/assets/index-DEoSxdl1.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-D6_auaif.css">
7
+ <script type="module" crossorigin src="/assets/index-CNWg3_sE.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-iBDF7mnS.css">
9
9
  </head>
10
10
  <body class="bg-bg text-text min-h-screen">
11
11
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-orchestrator",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Tokenless Claude Code orchestrator for GraphMemory — AI-first, TypeScript",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-900:oklch(39.6% .141 25.723);--color-orange-500:oklch(70.5% .213 47.604);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-900:oklch(39.3% .095 152.535);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Inter", sans-serif;--default-mono-font-family:"JetBrains Mono", monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Inter,sans-serif}code,pre,.font-mono{font-family:JetBrains Mono,monospace}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\/2{top:50%}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0\.5{left:calc(var(--spacing) * .5)}.left-1\/2{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.field-sizing-content{field-sizing:content}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-8\!{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[40vh\]{max-height:40vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-\(--anchor-width\){width:var(--anchor-width)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-60{width:calc(var(--spacing) * 60)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-border>:not(:last-child)),:where(.divide-border\/50>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.rounded-\[2px\]{border-radius:2px}.rounded-\[calc\(var\(--radius\)-3px\)\]{border-radius:calc(var(--radius) - 3px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-lg\!{border-radius:var(--radius)!important}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-xl\!{border-radius:calc(var(--radius) * 1.4)!important}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--color-cancelled\)\]\/30{border-color:var(--color-cancelled)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-cancelled\)\]\/30{border-color:color-mix(in oklab,var(--color-cancelled) 30%,transparent)}}.border-\[var\(--color-done\)\]\/30{border-color:var(--color-done)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-done\)\]\/30{border-color:color-mix(in oklab,var(--color-done) 30%,transparent)}}.border-\[var\(--color-queued\)\]\/30{border-color:var(--color-queued)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-queued\)\]\/30{border-color:color-mix(in oklab,var(--color-queued) 30%,transparent)}}.border-\[var\(--color-running\)\]\/30{border-color:var(--color-running)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-running\)\]\/30{border-color:color-mix(in oklab,var(--color-running) 30%,transparent)}}.border-accent{border-color:var(--accent)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/30{border-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-input,.border-input\/30{border-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.border-input\/30{border-color:color-mix(in oklab,var(--input) 30%,transparent)}}.border-primary{border-color:var(--primary)}.border-transparent{border-color:#0000}.bg-\[var\(--color-cancelled\)\]\/15{background-color:var(--color-cancelled)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-cancelled\)\]\/15{background-color:color-mix(in oklab,var(--color-cancelled) 15%,transparent)}}.bg-\[var\(--color-done\)\],.bg-\[var\(--color-done\)\]\/15{background-color:var(--color-done)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-done\)\]\/15{background-color:color-mix(in oklab,var(--color-done) 15%,transparent)}}.bg-\[var\(--color-done\)\]\/20{background-color:var(--color-done)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-done\)\]\/20{background-color:color-mix(in oklab,var(--color-done) 20%,transparent)}}.bg-\[var\(--color-queued\)\]\/15{background-color:var(--color-queued)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-queued\)\]\/15{background-color:color-mix(in oklab,var(--color-queued) 15%,transparent)}}.bg-\[var\(--color-running\)\]\/15{background-color:var(--color-running)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-running\)\]\/15{background-color:color-mix(in oklab,var(--color-running) 15%,transparent)}}.bg-accent,.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--accent) 20%,transparent)}}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900\/50{background-color:#10182880}@supports (color:color-mix(in lab,red,red)){.bg-gray-900\/50{background-color:color-mix(in oklab,var(--color-gray-900) 50%,transparent)}}.bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/30{background-color:color-mix(in oklab,var(--color-green-900) 30%,transparent)}}.bg-green-900\/40{background-color:#0d542b66}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/40{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}.bg-input\/30{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.bg-input\/30{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/40{background-color:color-mix(in oklab,var(--color-red-900) 40%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-clip-padding{background-clip:padding-box}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.text-left{text-align:left}.font-heading{font-family:Inter,sans-serif}.font-mono{font-family:JetBrains Mono,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-cancelled\)\]{color:var(--color-cancelled)}.text-\[var\(--color-done\)\]{color:var(--color-done)}.text-\[var\(--color-queued\)\]{color:var(--color-queued)}.text-\[var\(--color-running\)\]{color:var(--color-running)}.text-accent{color:var(--accent)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground) 80%,transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-green-400{color:var(--color-green-400)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-400{color:var(--color-red-400)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.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,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);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-grayscale{--tw-backdrop-grayscale:grayscale(100%);-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-invert{--tw-backdrop-invert:invert(100%);-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-sepia{--tw-backdrop-sepia:sepia(100%);-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-filter{-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-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-has-data-\[slot\=command-shortcut\]\/command-item\:hidden:is(:where(.group\/command-item):has([data-slot=command-shortcut]) *){display:none}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-data-\[checked\=true\]\/command-item\:opacity-100:is(:where(.group\/command-item)[data-checked=true] *){opacity:1}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=default\]\/switch\:size-4:is(:where(.group\/switch)[data-size=default] *){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[size\=sm\]\/switch\:size-3:is(:where(.group\/switch)[data-size=sm] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-selected\/command-item\:text-foreground:is(:where(.group\/command-item):where([data-selected=true]) *){color:var(--foreground)}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * -3)}.after\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(var(--spacing) * -2)}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media(hover:hover){.hover\:border-gray-600:hover{border-color:var(--color-gray-600)}.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:border-primary\/30:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus,:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:where([data-slot=dialog-content]) .in-data-\[slot\=dialog-content\]\:rounded-lg\!{border-radius:var(--radius)!important}.has-disabled\:bg-input\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.has-disabled\:bg-input\/50:has(:disabled){background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:calc(var(--spacing) * 0)}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:p-0:has(>svg){padding:calc(var(--spacing) * 0)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--spacing) * 1)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--spacing) * -1)}.data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--spacing) * -1)}.data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--spacing) * -1)}.data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--spacing) * -1)}.data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--spacing) * -2.5)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=default\]\:h-\[18\.4px\][data-size=default]{height:18.4px}.data-\[size\=default\]\:w-\[32px\][data-size=default]{width:32px}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:h-\[14px\][data-size=sm]{height:14px}.data-\[size\=sm\]\:w-\[24px\][data-size=sm]{width:24px}.data-\[size\=sm\]\:gap-3[data-size=sm]{gap:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md),10px)}.data-\[size\=sm\]\:py-3[data-size=sm]{padding-block:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}:is(.\*\:data-\[slot\=input-group-addon\]\:pl-2\!>*)[data-slot=input-group-addon]{padding-left:calc(var(--spacing) * 2)!important}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media(min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:disabled\:bg-transparent:is(.dark *):disabled{background-color:#0000}.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.group-data-\[size\=default\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=default] *):where([data-state=checked]),.group-data-\[size\=default\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=default] *):where([data-checked]:not([data-checked=false])),.group-data-\[size\=sm\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=sm] *):where([data-state=checked]),.group-data-\[size\=sm\]\/switch\:data-checked\:translate-x-\[calc\(100\%-2px\)\]:is(:where(.group\/switch)[data-size=sm] *):where([data-checked]:not([data-checked=false])){--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.dark\:data-checked\:bg-primary-foreground:is(.dark *):where([data-state=checked]),.dark\:data-checked\:bg-primary-foreground:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary-foreground)}.data-unchecked\:bg-input:where([data-state=unchecked]),.data-unchecked\:bg-input:where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}.group-data-\[size\=default\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=default] *):where([data-state=unchecked]),.group-data-\[size\=default\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=default] *):where([data-unchecked]:not([data-unchecked=false])),.group-data-\[size\=sm\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=sm] *):where([data-state=unchecked]),.group-data-\[size\=sm\]\/switch\:data-unchecked\:translate-x-0:is(:where(.group\/switch)[data-size=sm] *):where([data-unchecked]:not([data-unchecked=false])){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.dark\:data-unchecked\:bg-foreground:is(.dark *):where([data-state=unchecked]),.dark\:data-unchecked\:bg-foreground:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--foreground)}.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-state=unchecked]),.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-state=unchecked]),.dark\:data-unchecked\:bg-input\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.data-selected\:bg-muted:where([data-selected=true]){background-color:var(--muted)}.data-selected\:text-foreground:where([data-selected=true]){color:var(--foreground)}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:cursor-not-allowed:where([data-disabled=true]),.data-disabled\:cursor-not-allowed:where([data-disabled]:not([data-disabled=false])){cursor:not-allowed}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-state=active]),.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-b\]\:pb-4.border-b{padding-bottom:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:\[\.border-b\]\:pb-3:is(:where(.group\/card)[data-size=sm] *).border-b{padding-bottom:calc(var(--spacing) * 3)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:px-2 *)[cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:py-1\.5 *)[cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-xs *)[cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:font-medium *)[cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-muted-foreground *)[cmdk-group-heading]{color:var(--muted-foreground)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media(hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-selected\:\*\:\[svg\]\:text-foreground:where([data-selected=true])>*):is(svg){color:var(--foreground)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(13% .015 270);--foreground:oklch(91% .02 240);--card:oklch(16% .015 270);--card-foreground:oklch(91% .02 240);--popover:oklch(16% .015 270);--popover-foreground:oklch(91% .02 240);--primary:oklch(55% .25 270);--primary-foreground:oklch(100% 0 0);--secondary:oklch(22% .015 270);--secondary-foreground:oklch(91% .02 240);--muted:oklch(25% .015 270);--muted-foreground:oklch(55% .02 250);--accent:oklch(55% .25 270);--accent-foreground:oklch(100% 0 0);--destructive:oklch(65% .25 10);--border:oklch(22% .015 270);--input:oklch(22% .015 270);--ring:oklch(55% .25 270);--radius:.5rem;--chart-1:oklch(55% .25 270);--chart-2:oklch(72% .2 155);--chart-3:oklch(70% .18 45);--chart-4:oklch(65% .25 10);--chart-5:oklch(55% .02 250);--sidebar:oklch(14% .015 270);--sidebar-foreground:oklch(91% .02 240);--sidebar-primary:oklch(55% .25 270);--sidebar-primary-foreground:oklch(100% 0 0);--sidebar-accent:oklch(22% .015 270);--sidebar-accent-foreground:oklch(91% .02 240);--sidebar-border:oklch(22% .015 270);--sidebar-ring:oklch(55% .25 270);--color-done:#00d084;--color-cancelled:#ff4d6d;--color-running:#7c3aed;--color-queued:#64748b;--priority-critical:#ff4d6d;--priority-high:#f97316;--priority-medium:#7c3aed;--priority-low:#64748b}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes slide-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-pulse-dot{animation:1.5s ease-in-out infinite pulse-dot}.log-line{animation:.15s slide-in}.task-done{transition:opacity .3s,background .3s}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}