@taskforcehq/taskforce 0.3.332 → 0.3.333
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/routes/localService.js +1 -0
- package/dist/server/routes/syncPushRoutes.d.ts +3 -0
- package/dist/server/routes/syncPushRoutes.js +8 -2
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +1 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +7 -6
- package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +2 -2
- package/dist/sync/engine/workspaceSyncEngineLocalApply.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +6 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +34 -1
- package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +2 -2
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +4 -1
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +53 -10
- package/dist/sync/syncService.d.ts +1 -0
- package/dist/sync/syncService.js +5 -2
- package/dist/ui/assets/{AiIdentityRosterCard-CDMPtnbC.js → AiIdentityRosterCard-Cfvb9Nuv.js} +1 -1
- package/dist/ui/assets/{AiProfilesModule-Cww85C4E.js → AiProfilesModule-0oR70eFG.js} +1 -1
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-Dt9TKYSH.js → AnnotatedAttachmentWorkspace-C33iH_r_.js} +1 -1
- package/dist/ui/assets/{AssetTraySortControl-CKgapnxu.js → AssetTraySortControl-BAqxUtke.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-T-cEVcOZ.js → ContextAttachmentManager-BudIbOR9.js} +1 -1
- package/dist/ui/assets/{DocumentWorkspace-HD4MUjAZ.js → DocumentWorkspace-A8dFQyId.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-_V0zfMuh.js → EntityActivityTimeline-g7vtdsx1.js} +1 -1
- package/dist/ui/assets/{PlanningModule-mTkBygsB.js → PlanningModule-D-DeQs4F.js} +1 -1
- package/dist/ui/assets/{PlansPage-Btiq06VO.js → PlansPage-BWmfGi0Z.js} +1 -1
- package/dist/ui/assets/{TaskContextUpload-C00NVUpn.js → TaskContextUpload-BA_lQmS9.js} +1 -1
- package/dist/ui/assets/{TaskSettings-Cp-L-4xh.js → TaskSettings-DAlH4YIP.js} +1 -1
- package/dist/ui/assets/{TaskforceAgentsModule-Coq9-PUp.js → TaskforceAgentsModule-DmeCf6pJ.js} +1 -1
- package/dist/ui/assets/{WorkflowManagerModule-CuqRzMmM.js → WorkflowManagerModule-p08eDOaa.js} +1 -1
- package/dist/ui/assets/index-GHJgcW3j.js +7 -0
- package/dist/ui/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/index-DSQINwt9.js +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-_V0zfMuh.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-Bsq-mcEn.js","assets/vendor-markdown-_lhNCyq-.js","assets/vendor-dnd-CJ-AjP-Y.js","assets/vendor-router-AqJMU8Lz.js","assets/EntityActivityTimeline-BfJbZRdl.css","assets/TaskContextUpload-C00NVUpn.js","assets/ContextAttachmentManager-T-cEVcOZ.js","assets/TaskContextUpload-qmBeUw3u.css","assets/TaskSettings-Cp-L-4xh.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-Dt9TKYSH.js","assets/AssetTraySortControl-CKgapnxu.js","assets/AssetTraySortControl-B9k5caQW.css","assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css","assets/DocumentWorkspace-HD4MUjAZ.js","assets/DocumentWorkspace-BIBGBfd7.css","assets/TaskforceAgentsModule-Coq9-PUp.js","assets/AiIdentityRosterCard-CDMPtnbC.js","assets/TaskforceAgentsModule-b-8R25cJ.css","assets/WorkflowManagerModule-CuqRzMmM.js","assets/WorkflowManagerModule-DF10XENz.css","assets/AiProfilesModule-Cww85C4E.js","assets/PlanningModule-mTkBygsB.js","assets/PlanningModule-CoIR9hbV.css","assets/PlansPage-Btiq06VO.js","assets/PlansPage-C2nkK2Bp.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as o,j as a,R as re,a as uc,b as o0}from"./vendor-react-CKJs5o3c.js";import{I as Xs,C as Md,a as Fd,S as ry,F as i0,R as $i,b as c0,c as l0,d as XA,U as pg,G as d0,H as u0,M as f0,e as m0,P as p0,B as h0,f as g0,W as y0,L as k0,g as v0,h as w0,i as b0,j as S0,k as Tg,l as cc,m as A0,n as C0,o as I0,p as _0,T as T0,q as Jm,r as fp,s as x0,t as ui,u as Fi,A as ow,v as QA,w as na,x as Ld,y as R0,z as P0,D as j0,E as eC,J as Cd,K as tf,N as tC,O as E0,X as mi,Q as iw,V as Um,Y as Pd,Z as Od,_ as N0,$ as rC,a0 as Xm,a1 as D0,a2 as Nb,a3 as M0,a4 as Qm,a5 as L0,a6 as nC,a7 as aC,a8 as cw,a9 as sC,aa as O0,ab as B0,ac as W0,ad as $0,ae as F0,af as U0,ag as z0,ah as oC,ai as H0,aj as lw,ak as wo,al as iC,am as V0,an as G0,ao as K0,ap as q0,aq as Db,ar as Mb,as as Y0,at as Z0,au as J0,av as X0,aw as Q0,ax as cC,ay as ex,az as Lb,aA as tx,aB as rx,aC as nx}from"./vendor-icons-Bsq-mcEn.js";import{s as ax,M as sx,r as Ob,a as ox}from"./vendor-markdown-_lhNCyq-.js";import{u as dw,a as ep,P as uw,b as lC,D as fw,c as dC,S as mw,v as pw,d as hw,C as ny,e as gw,s as uC,K as fC,f as ix,p as cx,g as Bb,h as lx,i as mC,j as dx}from"./vendor-dnd-CJ-AjP-Y.js";import{u as pC,a as hC,b as ux,M as fx,N as Wb,B as mx}from"./vendor-router-AqJMU8Lz.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function r(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(s){if(s.ep)return;s.ep=!0;const i=r(s);fetch(s.href,i)}})();const rf="default",ay="General",bo="task",px=2,hx=[{value:rf,label:ay,icon:"Inbox"}],gC=[{value:bo,label:"Task",icon:"CheckSquare",color:"blue-500"}],gx=[{value:px,label:"Medium",color:"blue-500",icon:"Minus"}];function yx(){return hx.map(e=>({...e}))}function kx(){return gC.map(e=>({...e}))}function vx(e){const t=String(e||"").trim().toLowerCase();return gC.find(r=>r.value===t)}function yC(){return gx.map(e=>({...e}))}const wx={categories:yx(),types:kx(),priorities:yC(),taxonomies:[],apiEndpoint:"/api/taskforce/task",apiBaseUrl:void 0,cloudAuthBaseUrl:void 0,cloudMcpBaseUrl:void 0,wsBaseUrl:void 0,appGates:void 0,position:"bottom-right",offsetY:70,theme:"dawn",shortcut:"Alt+T",manualComplexityEnabled:!1,checklistDropdownEnabled:!0,showTaskCardStatusLabel:!1,showTaskCardDescription:!0,showTaskCardAttachments:!0,showTaskCardChecklistProgress:!0,showTaskCardLatestActivity:!0,tintTaskCardActivityBackground:!1},bx=["light","dawn","dark","midnight"],xg="dawn",Sx=[{id:"light",label:"Light",family:"light",icon:"sun"},{id:"dawn",label:"Dawn",family:"light",icon:"wind"},{id:"dark",label:"Dark",family:"dark",icon:"moon"},{id:"midnight",label:"Midnight",family:"dark",icon:"sparkles"}],Ax=new Set(bx),Cx=new Set(Sx.filter(e=>e.family==="light").map(e=>e.id));function Ix(e){return typeof e=="string"&&Ax.has(e)}function Zu(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return Ix(t)?t:null}function kC(e){const t=Zu(e);return t!==null&&Cx.has(t)}function Rg(e){const t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return null;const r=Math.floor(t);return r>0?r:null}const _x=new RegExp("(?<![\\w-])((?:IN|WS|D|I)-\\d+)(?![\\w-])","gi"),Tx={IN:"initiative",WS:"workstream",D:"document",I:"image"};function vC(e){const r=String(e||"").trim().toUpperCase().match(/^(IN|WS|D|I)-(\d+)$/);if(!r)return null;const n=Rg(r[2]);return n?{kind:Tx[r[1]],token:`${r[1]}-${n}`,referenceNumber:n}:null}function af(e,t){const r=Rg(typeof t=="object"&&t!==null?t.referenceNumber:t);return r?`${e}${r}`:""}function sy(e,t){const r=String(e||"").trim(),n=String(t||"").trim();if(!r||!n)return null;const s=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=n.match(new RegExp(`^${s}(\\d+)$`,"i"));return i?Rg(i[1]):null}function mp(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():af(e,t.referenceNumber):""}const yw="T-",gv="LT-",xx=/^task-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i,Rx=/^task-\d{10,}-[a-z0-9]+$/i,Px=new RegExp("(?<![\\w-])((?:LT|T)-\\d+|task-(?:[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}|\\d{10,}-[a-z0-9]+))(?![\\w-])","gi");function wC(e){const t=String(e||"").trim();return oy(t)!==null||SC(t)!==null||xx.test(t)||Rx.test(t)}function jx(e,t){const r=String(t||"").trim();if(!r||!wC(r))return null;const n=r.toLowerCase(),s=oy(r),i=SC(r),l=e.filter(c=>c.id.toLowerCase()===n||s!==null&&c.referenceNumber===s||i!==null&&c.localReferenceNumber===i?!0:Ss(c).toLowerCase()===n);return l.length===1?l[0].id:null}function Ex(e){const t=new Map,r=(s,i)=>{const l=String(s||"").trim().toLowerCase();if(l){if(!t.has(l)){t.set(l,i);return}t.get(l)!==i&&t.set(l,null)}};return e.forEach(s=>{r(s.id,s.id),s.referenceNumber&&r(bC(s.referenceNumber),s.id),s.localReferenceNumber&&r(kw(s.localReferenceNumber),s.id),r(Ss(s),s.id)}),{revision:JSON.stringify(Array.from(t.entries()).sort(([s],[i])=>s.localeCompare(i))),resolve:s=>{const i=String(s||"").trim();return!i||!wC(i)?null:t.get(i.toLowerCase())??null}}}function bC(e){return af(yw,e)}function kw(e){return typeof e=="number"||e===null||e===void 0?af(gv,e):af(gv,{referenceNumber:e.localReferenceNumber??null})}function oy(e){return sy(yw,e)}function SC(e){return sy(gv,e)}function Ss(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=mp(yw,e);return t||kw(e.localReferenceNumber)}function Nx(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function vw(e){return{label:Ss(e),isProvisional:Nx(e)}}function Dx(e){return e==="taskId"?"Task":e==="title"?"Title":e==="description"?"Description":e==="ownerId"?"Owner":e==="status"?"Status":e==="scheduledDate"?"Scheduled date":e==="dueDate"?"Due date":e==="workstreamId"?"Workstream":e==="initiativeId"?"Initiative":e}function Ph(e){const t=String(e??"").trim().toLowerCase();return!t||t==="none"||t==="null"||t==="unassigned"||t==="user"}function Mx(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function Ha(e,t,r){const n=r?.(t,e);if(typeof n=="string")return n;if(e==null||e==="")return"none";if(Array.isArray(e)){const s=e.map(i=>Ha(i,t,r)).filter(Boolean);return s.length>0?s.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?Mx(String(e)):String(e)}function $b(e){return Array.isArray(e)?e.map((t,r)=>{const n=t&&typeof t=="object"?t:{},s=Number(n.order);return{id:String(n.id||"").trim(),title:String(n.title||"").trim(),isCompleted:!!n.isCompleted,order:Number.isFinite(s)?s:r}}):[]}function Lx(e){const t=$b(e?.from),r=$b(e?.to),n=new Map(t.map(l=>[l.id||l.title,l])),s=new Map(r.map(l=>[l.id||l.title,l]));for(const[l,c]of s.entries()){const d=n.get(l);if(!d)return c.title?`Checklist item added: ${c.title}`:"Checklist item added";if(d.isCompleted!==c.isCompleted)return c.title?c.isCompleted?`Checklist item completed: ${c.title}`:`Checklist item reopened: ${c.title}`:c.isCompleted?"Checklist item completed":"Checklist item reopened"}for(const[l,c]of n.entries())if(!s.has(l))return c.title?`Checklist item removed: ${c.title}`:"Checklist item removed";return t.length===r.length&&t.every(l=>s.has(l.id||l.title))&&t.some((c,d)=>{const m=r[d];return(c.id||c.title)!==(m?.id||m?.title)})?"Checklist reordered":"Checklist updated"}function ww(e){return e.split(/[?#]/,1)[0]||e}function Fb(e){const t=ww(e).replace(/\\/g,"/"),r=t.split("/").filter(Boolean);return r[r.length-1]||t}function Ox(e){return/\.(png|jpe?g|webp|gif)$/i.test(ww(e))}function Bx(e){return e.includes("/api/taskforce/documents/")?!0:/\.(pdf|txt|md|markdown|csv|json|docx?|html?|js|jsx|ts|tsx|css|py|java|go|rs|sh)$/i.test(ww(e))}function Ub(e){return Array.isArray(e)?e.flatMap((t,r)=>{const n=t&&typeof t=="object"?t:null,s=typeof t=="string"?t:String(n?.path||"").trim(),i=String(n?.fsPath||"").trim(),l=String(n?.assetId||"").trim(),c=String(n?.referenceLabel||"").trim(),d=[n?.displayName,n?.originalFilename,n?.caption,c,i?Fb(i):"",s?Fb(s):""].map(h=>String(h||"").trim()).find(Boolean)||`Attachment ${r+1}`,m=l||i||s||`${d}:${r}`,f=[s,i,String(n?.originalFilename||"").trim(),String(n?.displayName||"").trim(),c].filter(Boolean),g=f.some(h=>Ox(h))?"image":c.startsWith("D-")||f.some(h=>Bx(h))?"document":"attachment";return[{key:m,label:d,kind:g}]}):[]}function Wx(e,t){return t===1?e:e==="image"?"images":e==="document"?"documents":"attachments"}function jh(e){if(e.length===0)return"attachments";const t=e.reduce((n,s)=>(n[s.kind]+=1,n),{image:0,document:0,attachment:0}),r=Object.entries(t).filter(([,n])=>n>0).map(([n,s])=>s===1?n:`${s} ${Wx(n,s)}`);return r.length===1?r[0]:e.length<=3&&r.length<=2?r.join(" and "):`${e.length} attachments`}function _l(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function jk(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?t.trim():"").filter(Boolean):[]}function $x(e){if(Array.isArray(e.from)||Array.isArray(e.to)||!["fromCount","toCount","added","removed","updated"].some(c=>Object.prototype.hasOwnProperty.call(e,c)))return null;const r=jk(e.added),n=jk(e.removed),s=jk(e.updated);if(r.length===1&&n.length===0&&s.length===0)return`Attachment attached: ${r[0]}`;if(n.length===1&&r.length===0&&s.length===0)return`Attachment removed: ${n[0]}`;if(r.length===1&&n.length===1&&s.length===0)return`Attachment replaced: ${n[0]} -> ${r[0]}`;if(s.length===1&&r.length===0&&n.length===0)return`Attachment updated: ${s[0]}`;if(s.length>0&&r.length===0&&n.length===0)return`${s.length} attachments updated`;if(r.length>0||n.length>0){const c=[...r.length>0?[`${r.length} ${r.length===1?"attachment":"attachments"} attached`]:[],...n.length>0?[`${n.length} ${n.length===1?"attachment":"attachments"} removed`]:[],...s.length>0?[`${s.length} ${s.length===1?"attachment":"attachments"} updated`]:[]];return _l(c.join(", "))}const i=Number(e.fromCount),l=Number(e.toCount);if(Number.isSafeInteger(i)&&i>=0&&Number.isSafeInteger(l)&&l>=0){const c=l-i;if(c===1)return"Attachment attached";if(c>1)return`${c} attachments attached`;if(c===-1)return"Attachment removed";if(c<-1)return`${Math.abs(c)} attachments removed`}return"Attachment details updated"}function Fx(e){const t=e?$x(e):null;if(t)return t;const r=Ub(e?.from),n=Ub(e?.to),s=new Map(r.map(m=>[m.key,m])),i=new Map(n.map(m=>[m.key,m])),l=n.filter(m=>!s.has(m.key)),c=r.filter(m=>!i.has(m.key));if(l.length===1&&c.length===0)return`${_l(l[0].kind)} attached: ${l[0].label}`;if(c.length===1&&l.length===0)return`${_l(c[0].kind)} removed: ${c[0].label}`;if(l.length>0&&c.length===0)return`${_l(jh(l))} attached`;if(c.length>0&&l.length===0)return`${_l(jh(c))} removed`;if(l.length===1&&c.length===1)return`${_l(l[0].kind)} replaced: ${c[0].label} -> ${l[0].label}`;if(l.length>0||c.length>0)return`${_l(jh(l))} attached, ${jh(c)} removed`;const d=n.filter(m=>{const f=s.get(m.key);return f&&f.label!==m.label});if(d.length===1&&r.length===1&&n.length===1){const m=s.get(d[0].key);return`${_l(d[0].kind)} renamed: ${m?.label||"Attachment"} -> ${d[0].label}`}return"Attachment details updated"}function Pg(e,t,r){if(e==="checklistItems")return Lx(t);if(e==="attachments")return Fx(t);if(e==="assignee"){const s=Ha(t?.from,e,r),i=Ha(t?.to,e,r);return Ph(t?.from)&&!Ph(t?.to)?`Assigned to ${i}`:!Ph(t?.from)&&Ph(t?.to)?`Unassigned from ${s}`:`Reassigned: ${s} → ${i}`}const n=Dx(e);if(e==="title")return`${n}: updated`;if(e==="description"){const s=Ha(t?.from,e,r)!=="none",i=Ha(t?.to,e,r)!=="none";return!s&&i?`${n}: added`:s&&!i?`${n}: cleared`:`${n}: updated`}return`${n}: ${Ha(t?.from,e,r)} -> ${Ha(t?.to,e,r)}`}function AC(e,t){const r=e.details?.changes||{},n=Object.keys(r);if(e.action==="task-created")return"Task created";if(e.action==="task-comment-added")return"Comment added";if(e.action==="task-archived")return"Task marked done";if(e.action==="task-cancelled")return"Task cancelled";if(e.action==="task-unarchived")return"Task restored";if(e.action==="task-status-changed"&&r.status)return`Status changed: ${Ha(r.status.from,"status",t)} -> ${Ha(r.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return r.scheduledDate?`Scheduled date changed: ${Ha(r.scheduledDate.from,"scheduledDate",t)} -> ${Ha(r.scheduledDate.to,"scheduledDate",t)}`:r.dueDate?`Due date changed: ${Ha(r.dueDate.from,"dueDate",t)} -> ${Ha(r.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&r.workstreamId)return`Workstream changed: ${Ha(r.workstreamId.from,"workstreamId",t)} -> ${Ha(r.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&r.initiativeId)return`Initiative changed: ${Ha(r.initiativeId.from,"initiativeId",t)} -> ${Ha(r.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return r.attachments?Pg("attachments",r.attachments,t):"Attachments updated";if(n.length===1){const s=n[0],i=r[s];return Pg(s,i,t)}return n.length>1?`${n.length} fields updated`:"Task updated"}function Gre(e,t){if(e.taskId||e.entityType==="task")return AC(e,t);const r=e.details?.changes||{},n=Object.keys(r),s=e.entityType==="initiative"?"Initiative":"Workstream",i=typeof e.details?.taskTitle=="string"&&e.details.taskTitle.trim().length>0?e.details.taskTitle.trim():null;return e.action==="initiative-created"?"Initiative created":e.action==="initiative-archived"?"Initiative archived":e.action==="initiative-unarchived"?"Initiative restored":e.action==="workstream-created"?"Workstream created":e.action==="workstream-archived"?"Workstream archived":e.action==="workstream-unarchived"?"Workstream restored":e.action==="workstream-task-added"?i?`Task added: ${i}`:"Task added":e.action==="workstream-task-removed"?i?`Task removed: ${i}`:"Task removed":e.action==="workstream-relationship-changed"&&r.initiativeId?`Initiative changed: ${Ha(r.initiativeId.from,"initiativeId",t)} -> ${Ha(r.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&r.attachments?Pg("attachments",r.attachments,t):n.length===1?Pg(n[0],r[n[0]],t):n.length>1?`${n.length} fields updated`:e.action==="initiative-updated"||e.action==="workstream-updated"?`${s} updated`:`${s} activity updated`}function jg(e){const t=Date.parse(String(e.timestamp||""));return Number.isFinite(t)?t:null}function Ux(e){const t=e.details?.changes||{},r=Object.keys(t);if(e.action==="task-status-changed"&&t.status)return"status";if(e.action==="task-schedule-changed"){if(t.scheduledDate)return"scheduledDate";if(t.dueDate)return"dueDate"}if(e.action==="task-relationship-changed"){if(t.workstreamId)return"workstreamId";if(t.initiativeId)return"initiativeId"}return e.action==="task-attachments-changed"&&t.attachments?"attachments":r.length===1?r[0]:null}function Kre(e){if(e.taskId||e.entityType==="task")return Ux(e);const t=e.details?.changes||{},r=Object.keys(t);return(e.action==="workstream-task-added"||e.action==="workstream-task-removed")&&e.details?.taskId?"taskId":e.action==="workstream-relationship-changed"&&t.initiativeId?"initiativeId":(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&t.attachments?"attachments":r.length===1?r[0]:null}function CC(e){const t=new Map,r=new Set,n=s=>{if(s.type==="event"&&s.event.action==="task-comment-added"||s.type==="event"&&s.event.action==="task-updated"&&s.event.details?.saveSource==="autosave"&&Object.keys(s.event.details?.changes||{}).length===0)return;const i=s.type==="comment"?`comment:${String(s.comment.id||s.id).replace(/^comment:/,"")}`:`event:${String(s.event.id||s.id).replace(/^event:/,"")}`;t.set(i,{...s,id:i}),s.type==="comment"&&r.add(String(s.comment.id||s.id).replace(/^comment:/,""))};return Array.isArray(e.activity)&&e.activity.forEach(n),Array.isArray(e.comments)&&e.comments.forEach(s=>{const i=String(s.id||"").trim();!i||r.has(i)||n({id:`comment:${i}`,type:"comment",timestamp:s.timestamp,comment:s})}),[...t.values()].sort((s,i)=>{const l=jg(s),c=jg(i);return l!==null&&c!==null&&l!==c?l-c:l!==null&&c===null?-1:l===null&&c!==null?1:String(s.id||"").localeCompare(String(i.id||""))})}function bw(e){return CC(e)}function IC(e){const t=bw(e);return t.length===0?null:[...t].sort((r,n)=>{const s=jg(r),i=jg(n);return s!==null&&i!==null&&s!==i?i-s:s!==null&&i===null?-1:s===null&&i!==null?1:String(n.id||"").localeCompare(String(r.id||""))})[0]||null}function zx(e,t){return e?e.type==="comment"?e.comment.text:AC(e.event,t):""}yC();const Hx={low:1,medium:2,high:3,critical:4,"on-hold":1};function Vx(e){const t=String(e||"").trim().toLowerCase();return t==="blocked"||t==="on hold"||t==="on-hold"?"on-hold":t==="task"||t==="on-hold"||t==="in-progress"||t==="review"||t==="done"||t==="cancelled"?t:"task"}function Eg(e){if(typeof e=="number"&&Number.isFinite(e))return Math.max(1,Math.round(e));const t=Number(e);return Number.isFinite(t)?Math.max(1,Math.round(t)):Hx[String(e||"").trim().toLowerCase()]??2}function Qs(e){const t=typeof e.referenceNumber=="number"?e.referenceNumber:Number.isFinite(Number(e.referenceNumber))?Number(e.referenceNumber):null,r=typeof e.localReferenceNumber=="number"?e.localReferenceNumber:Number.isFinite(Number(e.localReferenceNumber))?Number(e.localReferenceNumber):null;return{...e,referenceNumber:t&&t>0?Math.floor(t):null,localReferenceNumber:r&&r>0?Math.floor(r):null,referenceLabel:typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0?e.referenceLabel.trim():t?bC(t):kw(r),assignee:(()=>{const n=String(e.assignee||"").trim(),s=n.toLowerCase();return s==="agent"||s==="ai"?"agent":!n||s==="user"||s==="human"||s==="unassigned"||s==="none"||s==="null"?"unassigned":n})(),category:typeof e.category=="string"?e.category:e.category?.value||"default",type:(typeof e.type=="string"?e.type:e.type?.label||"task").toLowerCase(),priority:Eg(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:Vx(e.status)}}function zb(e){const{description:t,comments:r,activity:n,taskEvents:s,attachments:i,checklistItems:l,createdByActor:c,assigneeActor:d,...m}=e,f=b=>b.reduce((w,P)=>String(P||"")>w?String(P||""):w,""),g=e.commentCount??r?.length??0,h=e.checklistCount??l?.length??0,y=e.completedChecklistCount??l?.filter(b=>b.isCompleted).length??0,k=e.attachmentCount??i?.length??0,v=e.relationshipCount??0,A=e.latestActivity??IC(e);return{...m,cardCoverAttachment:e.cardCoverAttachment??(e.cardCoverAssetId&&i?.find(b=>typeof b!="string"&&b.assetId===e.cardCoverAssetId)||null),isSummary:!0,commentCount:g,checklistCount:h,completedChecklistCount:y,attachmentCount:k,relationshipCount:v,latestActivity:A,detailRevision:e.detailRevision||JSON.stringify([String(e.updatedAt||e.createdAt||""),g,f(r?.map(b=>b.timestamp)||[]),h,y,f(l?.map(b=>b.updatedAt||b.createdAt)||[]),k,f(i?.map(b=>typeof b=="string"?"":b.timestamp)||[]),v,A?.timestamp||"",A?.id||""])}}function tp(e){return JSON.stringify(e)}function Hb(e,t){if(e.length===0)return t.length===0?e:t;const r=new Map(e.map(i=>[i.id,i]));let n=e.length!==t.length;const s=t.map((i,l)=>{const c=r.get(i.id),d=c&&tp(c)===tp(i)?c:i;return d!==e[l]&&(n=!0),d});return n?s:e}function Gx(e,t,r){if(!e||typeof e!="object")return{tasks:t,archivedTasks:r};const n=Qs(e),s=String(n.id||"").trim();if(!s)return{tasks:t,archivedTasks:r};const i=!!n.isArchived,l=i?{...n,isArchived:!0}:{...n,isArchived:!1},c=(i?r:t).find(h=>h.id===s),d=(i?t:r).some(h=>h.id===s);if(c&&!d&&tp(c)===tp(l))return{tasks:t,archivedTasks:r};const m=h=>[...h].sort((y,k)=>{const v=Date.parse(String(y.updatedAt||y.createdAt||"")),A=Date.parse(String(k.updatedAt||k.createdAt||""));if(Number.isFinite(v)&&Number.isFinite(A)&&v!==A)return A-v;if(Number.isFinite(v)!==Number.isFinite(A))return Number.isFinite(A)?1:-1;const b=Date.parse(String(k.createdAt||""))-Date.parse(String(y.createdAt||""));return Number.isFinite(b)&&b!==0?b:String(y.id).localeCompare(String(k.id))}),f=t.some(h=>h.id===s)?t.filter(h=>h.id!==s):t,g=r.some(h=>h.id===s)?r.filter(h=>h.id!==s):r;return i?{tasks:f,archivedTasks:m([...g,l])}:{tasks:m([...f,l]),archivedTasks:g}}function Kx(e,t){if(!t.length||!e.length)return[];const r=new Set(t.map(s=>Number(s.value))),n=Array.from(new Set(e.map(s=>Number(s)).filter(s=>Number.isFinite(s)&&r.has(s))));return n.length>0?n:t.map(s=>Number(s.value))}function Ek(e,t){return t.some(r=>String(r)===String(e))}function qx(e,t){if(!e.length||!t.length)return e;const r=new Set(t.map(s=>s.value)),n=Array.from(new Set(e.filter(s=>r.has(s))));return n.length>0?n:t.map(s=>s.value)}const Yx={taskForm:{commentsSectionTitle:"Activity & Comments",noComments:"No comments yet. Start the conversation!",noActivity:"No activity yet.",you:"You",commentPlaceholder:"Type a comment...",newActivity:"New activity",newActivityAriaLabel:"New activity. Scroll to latest.",scheduledLabel:"Scheduled:",dueLabel:"Due:",createdLabel:"Created:",updatedLabel:"Updated:",completedLabel:"Completed:",emptyValue:"—",dueBeforeScheduled:"Due date is before scheduled date.",overdue:"This task is overdue."},schedule:{},taskList:{searchPlaceholder:"Search tasks...",clearSearchTitle:"Clear search",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",sortByLabel:"Sort By:",sortCreated:"Created",sortUpdated:"Updated",sortPriority:"Priority",sortDirectionDescTitle:"Sort: Last First",sortDirectionAscTitle:"Sort: First First",resetFiltersTitle:"Reset all filters",archiveAllTitle:"Archive all completed and cancelled tasks",noTasksToArchiveTitle:"No tasks to archive",archiveFinished:"Archive Finished",linksLabel:"Links",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchive:"Archived",noMatchingTasks:"No matching tasks",noActiveTasks:"No active tasks",addTaskToCategoryTitle:"Add task to {category}"},actionHeader:{saveChangesTitle:"Save Changes",update:"Update",copyTaskIdTitle:"Click to copy Task ID",startWorking:"Start Working",stopWorking:"Stop Working",unlockAndContinue:"Unlock & Continue Work",readyForReview:"Ready for Review",markComplete:"Mark Complete",unmarkComplete:"Unmark Complete",cancelTask:"Cancel Task",unmarkCancelled:"Unmark Cancelled",archiveNow:"Archive Now",completeTaskToArchive:"Complete task to archive",clearFormTitle:"Clear Form",clear:"Clear",addTaskTitle:"Add Task",addTask:"Add Task"},standalone:{searchPlaceholder:"Search tasks...",clearSearchTitle:"Clear search",sortLabel:"Sort:",sortCreated:"Created",sortUpdated:"Updated",sortPriority:"Priority",sortComplexity:"Complexity",sortDirectionDescTitle:"Sort: Last First",sortDirectionAscTitle:"Sort: First First",groupLabel:"Group:",groupCategory:"Category",groupType:"Type",groupPriority:"Priority",groupComplexity:"Complexity",groupAssignee:"Assignee",groupStatus:"Status",groupHierarchy:"Hierarchy",groupSchedule:"Schedule",showEmptyColumns:"Show Empty Columns",compressEmptyColumns:"Compress Empty Columns",hideEmptyColumns:"Hide Empty Columns",expandCards:"Expand Cards",compressCards:"Compress Cards",exitZenMode:"Exit Zen Mode",enterZenMode:"Enter Zen Mode",toggleFilters:"Toggle Filters",addTask:"Add Task",helpTutorial:"Help & Support",settings:"Settings",filtersCaps:"FILTERS:",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",linksLabel:"Links:",chooseLinksTitle:"Choose which linked tasks are shown",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchiveTitle:"Include archived tasks",includeArchive:"Archived",clearFilters:"Clear Filters",noTasksMatchFilters:"No tasks match current filters.",showingWithLinksHint:"Showing: {parentFilterLabel}. Switch Links to All or clear filters.",visibleActiveTasksTitle:"Visible active tasks / total active tasks",totalActiveTasksTitle:"Total active tasks"},setup:{headingCheckFailed:"Setup Check Failed",headingGlobalRequired:"Global Setup Required",headingWorkspaceRequired:"Configure your new workspace.",subtitleUnreadable:"Taskforce could not read setup state. Retry to continue.",subtitleGlobalRequired:"Choose your default operating mode to continue.",subtitleWorkspaceRequired:"",runtimeLabel:"Runtime",workspaceTermProject:"Project",workspaceTermMission:"Mission",coreModeOption:"Core Mode: {workspaceLabel} planning defaults",operationsModeOption:"Operations Mode: Mission-first terminology and flows",workspaceNamePlaceholder:"{workspaceLabel} name",workspaceDescriptionPlaceholder:"{workspaceLabel} description (optional)",saving:"Saving...",saveGlobalSetup:"Save Global Setup",saveWorkspaceSetup:"Save {workspaceLabel} Setup",globalSetupSaved:"Global setup saved.",workspaceSetupSaved:"{workspaceLabel} setup saved.",saveFailedWithStatus:"Failed to save setup ({status})",saveFailed:"Failed to save setup.",saveWorkspaceFailed:"Failed to save workspace profile.",retrySetupCheck:"Retry Setup Check",signOut:"Sign Out"}},Zx={taskForm:{commentsSectionTitle:"Actividad y comentarios",noComments:"Aun no hay comentarios. Inicia la conversacion.",noActivity:"Aun no hay actividad.",you:"Tu",commentPlaceholder:"Escribe un comentario...",newActivity:"Nueva actividad",newActivityAriaLabel:"Nueva actividad. Ir a la mas reciente.",scheduledLabel:"Programado:",dueLabel:"Vence:",createdLabel:"Creado:",updatedLabel:"Actualizado:",completedLabel:"Completado:",emptyValue:"—",dueBeforeScheduled:"La fecha de vencimiento es anterior a la fecha programada.",overdue:"Esta tarea esta vencida."},schedule:{},taskList:{searchPlaceholder:"Buscar tareas...",clearSearchTitle:"Limpiar busqueda",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",sortByLabel:"Ordenar por:",sortCreated:"Creado",sortUpdated:"Actualizado",sortPriority:"Prioridad",sortDirectionDescTitle:"Orden: mas reciente primero",sortDirectionAscTitle:"Orden: mas antiguo primero",resetFiltersTitle:"Restablecer todos los filtros",archiveAllTitle:"Archivar todas las tareas completadas y canceladas",noTasksToArchiveTitle:"No hay tareas para archivar",archiveFinished:"Archivar finalizadas",linksLabel:"Vinculos",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchive:"Incluir archivo",noMatchingTasks:"No hay tareas coincidentes",noActiveTasks:"No hay tareas activas",addTaskToCategoryTitle:"Agregar tarea a {category}"},actionHeader:{saveChangesTitle:"Guardar cambios",update:"Actualizar",copyTaskIdTitle:"Haz clic para copiar el ID de la tarea",startWorking:"Comenzar trabajo",stopWorking:"Detener trabajo",unlockAndContinue:"Desbloquear y continuar",readyForReview:"Lista para revision",markComplete:"Marcar como completada",unmarkComplete:"Quitar completada",cancelTask:"Cancelar tarea",unmarkCancelled:"Quitar cancelada",archiveNow:"Archivar ahora",completeTaskToArchive:"Completa la tarea para archivar",clearFormTitle:"Limpiar formulario",clear:"Limpiar",addTaskTitle:"Agregar tarea",addTask:"Agregar tarea"},standalone:{searchPlaceholder:"Buscar tareas...",clearSearchTitle:"Limpiar busqueda",sortLabel:"Orden:",sortCreated:"Creado",sortUpdated:"Actualizado",sortPriority:"Prioridad",sortComplexity:"Complejidad",sortDirectionDescTitle:"Orden: mas reciente primero",sortDirectionAscTitle:"Orden: mas antiguo primero",groupLabel:"Agrupar:",groupCategory:"Categoria",groupType:"Tipo",groupPriority:"Prioridad",groupComplexity:"Complejidad",groupAssignee:"Asignado a",groupStatus:"Estado",groupHierarchy:"Jerarquia",groupSchedule:"Calendario",showEmptyColumns:"Mostrar columnas vacias",compressEmptyColumns:"Comprimir columnas vacias",hideEmptyColumns:"Ocultar columnas vacias",expandCards:"Expandir tarjetas",compressCards:"Comprimir tarjetas",exitZenMode:"Salir del modo zen",enterZenMode:"Entrar en modo zen",toggleFilters:"Alternar filtros",addTask:"Agregar tarea",helpTutorial:"Ayuda y soporte",settings:"Configuracion",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",linksLabel:"Vinculos:",chooseLinksTitle:"Elige que tareas vinculadas se muestran",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchiveTitle:"Incluir tareas archivadas",includeArchive:"Incluir archivo",clearFilters:"Limpiar filtros",noTasksMatchFilters:"Ninguna tarea coincide con los filtros actuales.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Cambia Vinculos a Todas o limpia filtros.",visibleActiveTasksTitle:"Tareas activas visibles / total de tareas activas",totalActiveTasksTitle:"Total de tareas activas"},setup:{headingCheckFailed:"Fallo en verificacion de configuracion",headingGlobalRequired:"Configuracion global requerida",headingWorkspaceRequired:"Configuracion del espacio requerida",subtitleUnreadable:"Taskforce no pudo leer el estado de configuracion. Reintenta para continuar.",subtitleGlobalRequired:"Elige tu modo operativo predeterminado para continuar.",subtitleWorkspaceRequired:"Configura el perfil de tu espacio para continuar.",runtimeLabel:"Entorno",workspaceTermProject:"Proyecto",workspaceTermMission:"Mision",coreModeOption:"Modo Core: valores predeterminados de planificacion para {workspaceLabel}",operationsModeOption:"Modo Operaciones: terminologia y flujos orientados a Mision",workspaceNamePlaceholder:"Nombre de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descripcion de {workspaceLabel} (opcional)",saving:"Guardando...",saveGlobalSetup:"Guardar configuracion global",saveWorkspaceSetup:"Guardar configuracion de {workspaceLabel}",globalSetupSaved:"Configuracion global guardada.",workspaceSetupSaved:"Configuracion de {workspaceLabel} guardada.",saveFailedWithStatus:"Error al guardar la configuracion ({status})",saveFailed:"Error al guardar la configuracion.",saveWorkspaceFailed:"Error al guardar el perfil del espacio.",retrySetupCheck:"Reintentar verificacion",signOut:"Cerrar sesion"}},Jx={taskForm:{commentsSectionTitle:"Atividade e comentarios",noComments:"Ainda nao ha comentarios. Inicie a conversa.",noActivity:"Ainda nao ha atividade.",you:"Voce",commentPlaceholder:"Digite um comentario...",newActivity:"Nova atividade",newActivityAriaLabel:"Nova atividade. Ir para a mais recente.",scheduledLabel:"Agendado:",dueLabel:"Vencimento:",createdLabel:"Criado:",updatedLabel:"Atualizado:",completedLabel:"Concluido:",emptyValue:"—",dueBeforeScheduled:"A data de vencimento e anterior a data agendada.",overdue:"Esta tarefa esta atrasada."},schedule:{},taskList:{searchPlaceholder:"Buscar tarefas...",clearSearchTitle:"Limpar busca",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",sortByLabel:"Ordenar por:",sortCreated:"Criado",sortUpdated:"Atualizado",sortPriority:"Prioridade",sortDirectionDescTitle:"Ordem: mais recente primeiro",sortDirectionAscTitle:"Ordem: mais antigo primeiro",resetFiltersTitle:"Redefinir todos os filtros",archiveAllTitle:"Arquivar todas as tarefas concluidas e canceladas",noTasksToArchiveTitle:"Nao ha tarefas para arquivar",archiveFinished:"Arquivar finalizadas",linksLabel:"Vinculos",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchive:"Incluir arquivo",noMatchingTasks:"Nenhuma tarefa correspondente",noActiveTasks:"Nenhuma tarefa ativa",addTaskToCategoryTitle:"Adicionar tarefa a {category}"},actionHeader:{saveChangesTitle:"Salvar alteracoes",update:"Atualizar",copyTaskIdTitle:"Clique para copiar o ID da tarefa",startWorking:"Iniciar trabalho",stopWorking:"Parar trabalho",unlockAndContinue:"Desbloquear e continuar",readyForReview:"Pronto para revisao",markComplete:"Marcar como concluida",unmarkComplete:"Desmarcar concluida",cancelTask:"Cancelar tarefa",unmarkCancelled:"Desmarcar cancelada",archiveNow:"Arquivar agora",completeTaskToArchive:"Conclua a tarefa para arquivar",clearFormTitle:"Limpar formulario",clear:"Limpar",addTaskTitle:"Adicionar tarefa",addTask:"Adicionar tarefa"},standalone:{searchPlaceholder:"Buscar tarefas...",clearSearchTitle:"Limpar busca",sortLabel:"Ordenar:",sortCreated:"Criado",sortUpdated:"Atualizado",sortPriority:"Prioridade",sortComplexity:"Complexidade",sortDirectionDescTitle:"Ordem: mais recente primeiro",sortDirectionAscTitle:"Ordem: mais antigo primeiro",groupLabel:"Agrupar:",groupCategory:"Categoria",groupType:"Tipo",groupPriority:"Prioridade",groupComplexity:"Complexidade",groupAssignee:"Atribuido para",groupStatus:"Status",groupHierarchy:"Hierarquia",groupSchedule:"Agenda",showEmptyColumns:"Mostrar colunas vazias",compressEmptyColumns:"Comprimir colunas vazias",hideEmptyColumns:"Ocultar colunas vazias",expandCards:"Expandir cards",compressCards:"Comprimir cards",exitZenMode:"Sair do modo zen",enterZenMode:"Entrar no modo zen",toggleFilters:"Alternar filtros",addTask:"Adicionar tarefa",helpTutorial:"Ajuda e suporte",settings:"Configuracoes",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",linksLabel:"Vinculos:",chooseLinksTitle:"Escolha quais tarefas vinculadas sao exibidas",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchiveTitle:"Incluir tarefas arquivadas",includeArchive:"Incluir arquivo",clearFilters:"Limpar filtros",noTasksMatchFilters:"Nenhuma tarefa corresponde aos filtros atuais.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Mude Vinculos para Todas ou limpe os filtros.",visibleActiveTasksTitle:"Tarefas ativas visiveis / total de tarefas ativas",totalActiveTasksTitle:"Total de tarefas ativas"},setup:{headingCheckFailed:"Falha na verificacao da configuracao",headingGlobalRequired:"Configuracao global obrigatoria",headingWorkspaceRequired:"Configuracao do espaco obrigatoria",subtitleUnreadable:"Taskforce nao conseguiu ler o estado da configuracao. Tente novamente para continuar.",subtitleGlobalRequired:"Escolha seu modo operacional padrao para continuar.",subtitleWorkspaceRequired:"Configure o perfil do seu espaco para continuar.",runtimeLabel:"Ambiente",workspaceTermProject:"Projeto",workspaceTermMission:"Missao",coreModeOption:"Modo Core: padroes de planejamento para {workspaceLabel}",operationsModeOption:"Modo Operacoes: terminologia e fluxos orientados por Missao",workspaceNamePlaceholder:"Nome de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descricao de {workspaceLabel} (opcional)",saving:"Salvando...",saveGlobalSetup:"Salvar configuracao global",saveWorkspaceSetup:"Salvar configuracao de {workspaceLabel}",globalSetupSaved:"Configuracao global salva.",workspaceSetupSaved:"Configuracao de {workspaceLabel} salva.",saveFailedWithStatus:"Falha ao salvar configuracao ({status})",saveFailed:"Falha ao salvar configuracao.",saveWorkspaceFailed:"Falha ao salvar perfil do espaco.",retrySetupCheck:"Tentar verificacao novamente",signOut:"Sair"}},_C=["en-US","es-419","pt-BR"],Ng="en-US",Nk={"en-US":Yx,"es-419":Zx,"pt-BR":Jx},TC={en:"en-US",es:"es-419",pt:"pt-BR"};let jd=Ng;function Xx(e){return e.split(".").filter(Boolean)}function Dk(e,t){let r=e;for(const n of t){if(!r||typeof r!="object")return;r=r[n]}return typeof r=="string"?r:void 0}function xC(e){if(!e)return Ng;const t=_C.find(n=>n.toLowerCase()===e.toLowerCase());if(t)return t;const r=e.split("-")[0]?.toLowerCase()||"";return TC[r]||Ng}function Mk(e,t){return t?e.replace(/\{([^}]+)\}/g,(r,n)=>{const s=t[n];return s==null?"":String(s)}):e}function RC(){return jd}function Qx(){return[..._C]}function PC(e){const t=xC(e);return jd=t,t}function eR(e){const t=typeof navigator<"u"?navigator.language:null;return jd=xC(t),jd}function jt(e,t){const r=Xx(e),n=Dk(Nk[jd],r);if(n)return Mk(n,t);const s=jd.split("-")[0]?.toLowerCase()||"",i=TC[s];if(i&&i!==jd){const c=Dk(Nk[i],r);if(c)return Mk(c,t)}const l=Dk(Nk[Ng],r);return l?Mk(l,t):e}const tR="default",Bd="bootstrap";function rR(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function iy(e){const t=String(e||"").trim().toLowerCase();return t?`${(t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${rR(t)}`:Bd}function Sw(e){const t=String(e||"").trim().toLowerCase();if(!t)return Bd;const r=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return r?r.slice(0,96):Bd}function jC(e){const t=String(e||"").trim();return t?iy(t):Bd}function nR(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?Bd:jC(e.projectRoot)}function aR(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const r=String(e.workspaceId||"").trim();return r&&!Aw(r)?iy(`cloud-workspace:${r}`):Bd}return jC(e.projectRoot)}function Aw(e){return String(e||"").trim().toLowerCase()===tR}const sR={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function oR(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function iR(e){return sR[oR(e)]}const rp={production:{appBaseUrl:"https://app.taskforcehq.ai",mcpBaseUrl:"https://mcp.taskforcehq.ai",label:"Production",themeToken:"production"},staging:{appBaseUrl:"https://staging-app.taskforcehq.ai",mcpBaseUrl:"https://staging-mcp.taskforcehq.ai",label:"Staging",themeToken:"staging"},performance:{appBaseUrl:"https://performance-app.taskforcehq.ai",mcpBaseUrl:"https://performance-mcp.taskforcehq.ai",label:"Performance",themeToken:"performance"}};function pp(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function cR(e){return pp(e)||"production"}function Vb(e){return rp[cR(String(e||""))]}function lR(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[r,n]of Object.entries(rp))if(new URL(n.appBaseUrl).hostname.toLowerCase()===t||new URL(n.mcpBaseUrl).hostname.toLowerCase()===t)return r;return null}function Cw(e){const t=String(e||"").trim();if(!t)return null;try{return lR(new URL(t).hostname)}catch{return null}}function dR(e){const t=Cw(e);return t?rp[t].mcpBaseUrl:null}function pd(e,t){return String(e[t]||"").trim()}function Gb(e,t,r){e.push(t),r?.(t)}function uR(e,t){const r=[],n=pd(e,"ENV"),s=pp(n);if(s)return Gb(r,`[Taskforce compat] ENV=${n} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${s} instead.`,t),{cloudEnvironment:s,warnings:r};const i=[{key:"TASKFORCE_CLOUD_PROXY_BASE_URL",value:pd(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:pd(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:pd(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:pd(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:pd(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:pd(e,"TASKFORCE_BASE_URL")}];for(const l of i){if(!l.value)continue;const c=Cw(l.value);if(c)return Gb(r,`[Taskforce compat] ${l.key} is being used to infer TASKFORCE_CLOUD_ENVIRONMENT=${c}. Set TASKFORCE_CLOUD_ENVIRONMENT explicitly.`,t),{cloudEnvironment:c,warnings:r}}return{cloudEnvironment:null,warnings:r}}function ac(e,t){return String(e[t]||"").trim()}function fR(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function $u(e){return String(e||"").trim().replace(/\/+$/,"")}function mR(e){return String(e||"").trim().replace(/\/+$/,"")}function Kc(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function pR(e,t={}){const r=[],n=S=>{r.push(S),t.onWarning?.(S)},s=fR(ac(e,"TASKFORCE_RUNTIME_MODE")),i=pp(ac(e,"TASKFORCE_CLOUD_ENVIRONMENT")),l=i?{cloudEnvironment:i}:uR(e,n),c=i||l.cloudEnvironment,d=$u(String(t.requestBaseUrl||"")),m=$u(Kc(ac(e,"VITE_TASKFORCE_BASE_URL"),ac(e,"TASKFORCE_BASE_URL"))),f=$u(ac(e,"VITE_TASKFORCE_API_BASE_URL")),g=$u(ac(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=$u(Kc(ac(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),ac(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),y=$u(ac(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),k=mR(ac(e,"VITE_TASKFORCE_WS_BASE_URL")),v=c?rp[c].appBaseUrl:"",A=c?rp[c].mcpBaseUrl:"",b=Kc(y,g,f,m,v),w=Kc(h,A,b),P=Kc(d,m,f,g,b),E=Kc(d,f,m,b),D=Kc(g,m,f,b),j=s==="local"?Kc(k,d,f,m,y,g,v,b):Kc(d,k,E,P,b);return{runtimeMode:s,cloudEnvironment:c,cloudBaseUrl:b,cloudMcpBaseUrl:w,baseUrl:P,apiBaseUrl:E,cloudAuthBaseUrl:D,wsBaseUrl:j,cloudAuthViaLocalProxy:s==="local"||!!y,warnings:r}}function Iw(e){return pR({TASKFORCE_CLOUD_ENVIRONMENT:"",VITE_TASKFORCE_BASE_URL:e.VITE_TASKFORCE_BASE_URL,VITE_TASKFORCE_API_BASE_URL:e.VITE_TASKFORCE_API_BASE_URL,VITE_TASKFORCE_CLOUD_AUTH_BASE_URL:e.VITE_TASKFORCE_CLOUD_AUTH_BASE_URL,VITE_TASKFORCE_CLOUD_MCP_BASE_URL:e.VITE_TASKFORCE_CLOUD_MCP_BASE_URL,VITE_TASKFORCE_WS_BASE_URL:e.VITE_TASKFORCE_WS_BASE_URL})}function yv(e){if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new Error("Canonical JSON cannot contain non-finite numbers.");return e}if(Array.isArray(e))return e.map(yv);if(typeof e=="object"){const t={};for(const r of Object.keys(e).sort()){const n=e[r];n!==void 0&&(t[r]=yv(n))}return t}throw new Error(`Canonical JSON cannot contain ${typeof e}.`)}function pn(e){return JSON.stringify(yv(e))}const hR=["title","description","category","type","priority","complexity","status","assignee","scheduledDate","dueDate","workstreamId"];function Lk(e){return{title:e.title||"",description:e.description||"",category:e.category||"",type:e.type||"",priority:e.priority,complexity:Number(e.complexity)||3,status:e.status||"task",assignee:e.assignee||"unassigned",scheduledDate:e.scheduledDate||"",dueDate:e.dueDate||"",workstreamId:e.workstreamId||"",taxonomies:{...e.taxonomies||{}},checklistItems:[...e.checklistItems||[]],attachments:[...e.attachments||[]]}}function Ok(e,t){return{...e,title:t.title,description:t.description||null,category:t.category,type:t.type,priority:t.priority,complexity:t.complexity,status:t.status,assignee:t.assignee,scheduledDate:t.scheduledDate||null,dueDate:t.dueDate||null,workstreamId:t.workstreamId||null,taxonomies:t.taxonomies,checklistItems:t.checklistItems,attachments:t.attachments}}function Rl(e,t){return pn(e??null)===pn(t??null)}function kv(e,t,r){const n=!Rl(t,e),s=!Rl(r,e);return n?!s||Rl(t,r)?{value:t,conflict:!1,remoteChanged:s}:{value:t,conflict:!0,remoteChanged:s}:{value:r,conflict:!1,remoteChanged:s}}function Dg(e){return typeof e=="string"?`path:${e}`:e.assetId?`asset:${e.assetId}`:e.referenceLabel?`reference:${e.referenceLabel}`:e.referenceNumber!=null?`number:${e.referenceNumber}`:`path:${e.path||e.fsPath||pn(e)}`}function Kb(e,t,r,n){const s=new Map(e.map(g=>[n(g),g])),i=new Map(t.map(g=>[n(g),g])),l=new Map(r.map(g=>[n(g),g])),c=new Set([...s.keys(),...l.keys(),...i.keys()]),d=new Map,m=[];for(const g of c){const h=s.get(g),y=i.get(g),k=l.get(g),v=kv(h,y,k);v.value!==void 0&&d.set(g,v.value),v.conflict&&m.push(g)}return{items:[...r.map(n),...t.map(n).filter(g=>!l.has(g))].filter((g,h,y)=>y.indexOf(g)===h&&d.has(g)).map(g=>d.get(g)),conflictKeys:m,remoteChanged:!Rl(e,r)}}function gR(e,t,r){const n={...r},s=[],i=new Set;for(const f of hR){const g=kv(e[f],t[f],r[f]);n[f]=g.value,g.conflict&&s.push({field:f}),g.remoteChanged&&i.add(f)}const l=new Set([...Object.keys(e.taxonomies),...Object.keys(t.taxonomies),...Object.keys(r.taxonomies)]),c={};for(const f of l){const g=kv(e.taxonomies[f],t.taxonomies[f],r.taxonomies[f]);g.value!==void 0&&(c[f]=g.value),g.conflict&&s.push({field:"taxonomies",key:f}),g.remoteChanged&&i.add(`taxonomies.${f}`)}n.taxonomies=c;const d=Kb(e.checklistItems,t.checklistItems,r.checklistItems,f=>f.id);n.checklistItems=d.items,d.conflictKeys.forEach(f=>s.push({field:"checklistItems",key:f})),d.remoteChanged&&i.add("checklistItems");const m=Kb(e.attachments,t.attachments,r.attachments,Dg);return n.attachments=m.items,m.conflictKeys.forEach(f=>s.push({field:"attachments",key:f})),m.remoteChanged&&i.add("attachments"),{merged:n,conflicts:s,remoteChangedFields:[...i]}}function yR(e,t,r,n=e.merged){if(r==="local")return n;const s={...n,taxonomies:{...n.taxonomies},checklistItems:[...n.checklistItems],attachments:[...n.attachments]};for(const i of e.conflicts){if(i.field==="taxonomies"){const l=t.taxonomies[i.key];l===void 0?delete s.taxonomies[i.key]:s.taxonomies[i.key]=l;continue}if(i.field==="checklistItems"||i.field==="attachments"){const l=i.field==="checklistItems"?g=>g.id:g=>Dg(g),c=s[i.field],m=t[i.field].find(g=>l(g)===i.key),f=c.filter(g=>l(g)!==i.key);s[i.field]=m?[...f,m]:f;continue}s[i.field]=t[i.field]}return s}function kR(e,t,r){return e.field==="taxonomies"?Rl(t.taxonomies[e.key],r.taxonomies[e.key]):e.field==="checklistItems"?Rl(t.checklistItems.find(n=>n.id===e.key),r.checklistItems.find(n=>n.id===e.key)):e.field==="attachments"?Rl(t.attachments.find(n=>Dg(n)===e.key),r.attachments.find(n=>Dg(n)===e.key)):Rl(t[e.field],r[e.field])}function vR(e){return"key"in e?`${e.field}:${e.key}`:e.field}function wR(e,t,r,n){return[...new Map([...e.filter(i=>!kR(i,r,n)),...t].map(i=>[vR(i),i])).values()]}function bR(e){const t={title:"title",description:"description",category:"category",type:"type",priority:"priority",complexity:"complexity",status:"status",assignee:"assignee",scheduledDate:"scheduled date",dueDate:"due date",workstreamId:"workstream",taxonomies:"taxonomy",checklistItems:"checklist",attachments:"attachments"};return[...new Set(e.map(r=>t[r.field]||String(r.field)))]}const SR={"annotated_attachments.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"Annotated Attachment workspace readiness gate.",owner:"taskforce",removalMilestone:"Annotated Attachment GA"},"documents.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"Document Manager/editor workspace readiness gate.",owner:"taskforce",removalMilestone:"Document Manager GA"},"workflow_manager.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!1},description:"Workflow Manager workspace readiness gate.",owner:"taskforce",removalMilestone:"Workflow Manager GA"},"taskforce_agents.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!1},description:"Taskforce Agents workspace readiness gate.",owner:"taskforce",removalMilestone:"Taskforce Agents workspace GA"},"ai_profiles.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"AI Profiles workspace readiness gate.",owner:"taskforce",removalMilestone:"AI Profiles workspace GA"},"planning.workspace_access":{enabledByEnvironment:{performance:!1,staging:!1,production:!1},description:"Planning workspace readiness gate.",owner:"taskforce",removalMilestone:"Planning workspace GA"}},vv="annotated_attachments.workspace_access",wv="documents.workspace_access",qb="workflow_manager.workspace_access",zm="taskforce_agents.workspace_access",Yb="ai_profiles.workspace_access",Zb="planning.workspace_access",AR=Object.fromEntries(Object.entries(SR).map(([e,t])=>[e,Object.freeze({key:e,enabledByEnvironment:Object.freeze({...t.enabledByEnvironment}),description:t.description,owner:t.owner,removalMilestone:t.removalMilestone})])),EC=Object.freeze(AR);function NC(){return Object.values(EC)}function CR(e){const t=String(e||"").trim();return t&&EC[t]||null}function IR(e,t){const r=CR(e);return r?r.enabledByEnvironment[t]?{featureKey:e,allowed:!0,source:"app_gate",code:"OK"}:{featureKey:e,allowed:!1,source:"app_gate",code:"APP_GATE_DISABLED"}:{featureKey:e,allowed:!0,source:"none",code:"OK"}}function _R(e){return Object.fromEntries(NC().map(({key:t})=>[t,IR(t,e)]))}function TR(e,t){if(e&&DC(e))return e;const r=pp(String(t||""))||"production";return _R(r)}function DC(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return NC().every(({key:r})=>{const n=t[r];if(!n||typeof n!="object"||Array.isArray(n))return!1;const s=n;return s.featureKey===r&&typeof s.allowed=="boolean"&&(s.source==="app_gate"||s.source==="cloud_entitlement"||s.source==="none")&&typeof s.code=="string"})}function Jb(e){const t=String(e.workspaceId||"default").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"default",r=Number.isFinite(Number(e.epoch))?Math.max(0,Math.floor(Number(e.epoch))):0,n=String(e.seed||"session").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"session",s=String(e.phase||"bootstrap").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"bootstrap";return`tfb-${n}-${t}-e${r}-${s}`}function Bk(e,t){const r=String(t||"").trim();if(!r)return e;const n=new Headers(e?.headers||void 0);return n.has("x-taskforce-bootstrap-trace-id")||n.set("x-taskforce-bootstrap-trace-id",r),{...e||{},headers:n}}function xR(e){const t=String(e.activeWorkspaceId||"").trim();return{email:e.email,password:e.password,...t&&t!=="default"?{workspaceId:t}:{}}}const Mg="unassigned",MC="agent",hp="UserRound",cy="color-mix(in srgb, var(--text-helper) 68%, transparent)",RR="user",PR=/^[0-9a-f]{8,}$/i,Ed={value:Mg,label:"Unassigned",icon:hp,color:cy,kind:"unassigned"};function LC(e){const t=String(e||"").trim().toLowerCase();return t===MC||t==="ai"||t.startsWith("ai-profile-")}function _w(e){const t=String(e||"").trim().toLowerCase();return!t||t===Mg||t==="none"||t==="null"||t===RR}function bv(e){return LC(e)?"agent":_w(e)?"unassigned":"member"}function jR(e){const t=String(e.displayName||"").trim(),r=String(e.email||"").trim().toLowerCase();return t||r||String(e.userId||"").trim()||"Workspace member"}function El(){return[{...Ed}]}function ER(e){const t=new Map;for(const r of e){const n=String(r.userId||"").trim();n&&t.set(n,{value:n,label:jR(r),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof r.avatarUrl=="string"&&r.avatarUrl.trim().length>0?r.avatarUrl.trim():null})}return sf(Array.from(t.values()))}function sf(e){const t=new Map;for(const n of El())t.set(n.value,n);for(const n of Array.isArray(e)?e:[]){const s=String(n?.value||"").trim(),i=typeof n?.archivedAt=="string"?n.archivedAt.trim():"";!s||i||s===Mg||s===MC||t.set(s,{value:s,label:String(n.label||s).trim()||s,icon:String(n.icon||(n.kind==="agent"?"Bot":"User")),color:String(n.color||(n.kind==="agent"?"#8b5cf6":"#22c55e")),kind:n.kind==="agent"?"agent":"member",avatarUrl:typeof n.avatarUrl=="string"&&n.avatarUrl.trim().length>0?n.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(n.avatarRevision))?Math.max(0,Math.floor(Number(n.avatarRevision))):null,avatarUpdatedAt:typeof n.avatarUpdatedAt=="string"&&n.avatarUpdatedAt.trim().length>0?n.avatarUpdatedAt.trim():null,username:typeof n.username=="string"&&n.username.trim().length>0?n.username.trim():null,surfaceType:typeof n.surfaceType=="string"&&n.surfaceType.trim().length>0?n.surfaceType.trim():null,providerMetadata:n.providerMetadata&&typeof n.providerMetadata=="object"&&!Array.isArray(n.providerMetadata)?n.providerMetadata:null,archivedAt:null,createdAt:typeof n.createdAt=="string"&&n.createdAt.trim().length>0?n.createdAt.trim():null,updatedAt:typeof n.updatedAt=="string"&&n.updatedAt.trim().length>0?n.updatedAt.trim():null})}const r=[Mg];return Array.from(t.values()).sort((n,s)=>{const i=r.indexOf(n.value),l=r.indexOf(s.value);return i>=0||l>=0?i<0?1:l<0?-1:i-l:n.label.localeCompare(s.label,void 0,{sensitivity:"base"})})}function OC(e,t){const r=String(t||"").trim();if(!r||e.some(i=>i.value===r))return e;const n=r.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),s=n?n.split(" ").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" "):r;if(bv(r)==="agent"){const i=String(r).toLowerCase().startsWith("ai-profile-")&&n.split(" ").every(l=>PR.test(l));return sf([...e,{value:r,label:i?"AI":s||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return bv(r)==="member"?sf([...e,{value:r,label:s||r,icon:"User",color:"#22c55e",kind:"member"}]):e}function BC(e){const t=Array.isArray(e)?e.filter(Boolean):[];return sf(t)}function np(e,t){const r=String(e||"").trim(),s=BC(t).find(i=>i.value===r);return s?s.label:LC(r)?"AI":_w(r)?"Unassigned":r||"Unassigned"}const Sv=1,WC="taskforce.workspaceContext.v2",NR="taskforce.uiState.app.v1",DR="taskforce.bootstrapDebug.v1",Xb=5e3,Eh=new Map;function Nh(e){return Array.from(new Set(e.map(t=>String(t??"").trim()).filter(t=>t.length>0))).sort()}function of(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Id(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean)))}function Av(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string"&&t.trim().length>0||typeof t=="number")))}function MR(e){if(!of(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim(),i=Av(n);!s||!i||(t[s]=i)}),t}function LR(e){if(!of(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim();!s||typeof n!="boolean"||(t[s]=n)}),t}function OR(e){if(!of(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim();if(!s||typeof n!="string")return;const i=n.trim();i&&(t[s]=i)}),t}function BR(e){if(!of(e))return;const t=Id(e.categories),r=Id(e.types),n=Id(e.priorities);if(!t||!r||!n)return;const s={};return of(e.taxonomies)&&Object.entries(e.taxonomies).forEach(([i,l])=>{const c=String(i||"").trim(),d=Id(l);!c||!d||(s[c]=d)}),{categories:t,types:r,priorities:n,taxonomies:s}}function $C(e){if(!of(e))return null;const t={version:Sv},r=["category","type","priority","assignee","status","complexity","schedule","docs"];e.groupBy==="approach"&&(t.groupBy="status"),typeof e.groupBy=="string"&&r.includes(e.groupBy)&&(t.groupBy=e.groupBy);const n=e.activeWorkspaceModule==="agents"?"aiProfiles":e.activeWorkspaceModule==="workflows"?"tasks":e.activeWorkspaceModule;typeof n=="string"&&["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"].includes(n)&&(t.activeWorkspaceModule=n),(e.emptyColumnMode==="show"||e.emptyColumnMode==="collapse"||e.emptyColumnMode==="hide")&&(t.emptyColumnMode=e.emptyColumnMode),(e.taskScope==="open"||e.taskScope==="archived"||e.taskScope==="deleted")&&(t.taskScope=e.taskScope),typeof e.openTaskId=="string"?t.openTaskId=e.openTaskId.trim()||null:e.openTaskId===null&&(t.openTaskId=null),typeof e.compressedCards=="boolean"&&(t.compressedCards=e.compressedCards),typeof e.zenMode=="boolean"&&(t.zenMode=e.zenMode),typeof e.searchQuery=="string"&&(t.searchQuery=e.searchQuery);const i=LR(e.collapsedCategories);i&&(t.collapsedCategories=i);const l=Id(e.filterCategories);l&&(t.filterCategories=l);const c=Av(e.filterPriorities);c&&(t.filterPriorities=c);const d=Id(e.filterTypes);d&&(t.filterTypes=d);const m=Av(e.filterStatus);m&&(t.filterStatus=m);const f=Id(e.filterAssignees);f&&(t.filterAssignees=f),typeof e.filterAssigneesAllSelected=="boolean"&&(t.filterAssigneesAllSelected=e.filterAssigneesAllSelected);const g=MR(e.filterTaxonomies);g&&(t.filterTaxonomies=g);const h=BR(e.filterTaxonomySignature);if(h&&(t.filterTaxonomySignature=h),(e.sortBy==="created"||e.sortBy==="priority"||e.sortBy==="updated"||e.sortBy==="complexity")&&(t.sortBy=e.sortBy),(e.sortOrder==="asc"||e.sortOrder==="desc")&&(t.sortOrder=e.sortOrder),typeof e.hasInitedFilters=="boolean"&&(t.hasInitedFilters=e.hasInitedFilters),typeof e.lastCategory=="string"&&(t.lastCategory=e.lastCategory),typeof e.taskforceAgentId=="string"){const k=e.taskforceAgentId.trim();k&&(t.taskforceAgentId=k)}if(typeof e.taskforceAgentConversationId=="string"){const k=e.taskforceAgentConversationId.trim();k&&(t.taskforceAgentConversationId=k)}const y=OR(e.taskforceAgentConversationByAgentId);return y&&Object.keys(y).length>0&&(t.taskforceAgentConversationByAgentId=y),t}function WR(e){const t=Nh(e.categories.map(i=>i.value)),r=Nh(e.types.map(i=>i.value)),n=Nh(e.priorities.map(i=>i.value));if(t.length===0||r.length===0||n.length===0)return null;const s={};return(e.taxonomies||[]).forEach(i=>{const l=String(i.id??"").trim();l&&(s[l]=Nh((i.options||[]).map(c=>c.value)))}),{categories:t,types:r,priorities:n,taxonomies:s}}function vm(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function $R(e,t){if(!e||!t||!vm(e.categories||[],t.categories||[])||!vm(e.types||[],t.types||[])||!vm(e.priorities||[],t.priorities||[]))return!1;const r=Object.keys(e.taxonomies||{}).sort(),n=Object.keys(t.taxonomies||{}).sort();return vm(r,n)?r.every(s=>vm(e.taxonomies[s]||[],t.taxonomies[s]||[])):!1}function FR(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(DR)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Cr(e,t){if(!FR())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function UR(e,t,r,n=!1){const s=String(e).trim()||"default",i=String(t).trim()||"default",l=String(r||"default").trim()||"default";return`${n?"cloud":"same-origin"}::${i}::${s}::${l}`}async function Hm(e){const t=String(e.stateKey||"default").trim()||"default",r=String(e.workspaceId||"").trim(),n=e.patch&&typeof e.patch=="object"?e.patch:{},s=JSON.stringify(n),i=UR(t,r||"default",e.dedupeScope,e.useCloudProxy),l=Date.now(),c=Eh.get(i);if(c&&c.serializedPatch===s){if(c.status==="success"&&e.skipIfUnchanged!==!1)return Cr("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&c.retryAfter>l)return Cr("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"cooldown",retryAfterMs:c.retryAfter-l}),{skipped:!0,reason:"cooldown"}}try{const d=await fetch(`/api/taskforce/ui-state${e.useCloudProxy?"?taskforceCloud=1":""}`,{method:"POST",headers:{"Content-Type":"application/json",...e.headers||{}},credentials:"include",...e.keepalive?{keepalive:!0}:{},body:JSON.stringify({stateKey:t,...r?{workspaceId:r}:{},patch:n})}),m=await d.json().catch(()=>({}));if(d.ok&&m?.success!==!1)return Eh.set(i,{serializedPatch:s,status:"success",retryAfter:0}),{skipped:!1,response:d,payload:m};if(Eh.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??Xb)}),Cr("ui_state_persist_failed",{stateKey:t,workspaceId:r||"default",status:d.status,error:String(m?.error||"")}),e.throwOnError)throw new Error(String(m?.error||`Failed to persist UI state (${d.status})`));return{skipped:!1,response:d,payload:m}}catch(d){if(Eh.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??Xb)}),Cr("ui_state_persist_failed",{stateKey:t,workspaceId:r||"default",error:d instanceof Error?d.message:String(d)}),e.throwOnError)throw d;return{skipped:!1,payload:null}}}function Tw(e){const t=iy(e);return`${WC}.${t}`}function FC(e){const t=Sw(e);return`${WC}.${t}`}function Cv(e){if(typeof window>"u")return"";try{const t=Tw(e),r=String(window.localStorage.getItem(t)||"").trim();if(r&&r.length<=120&&!/\s/.test(r))return r;const n=FC(e),s=String(window.localStorage.getItem(n)||"").trim();return s&&s.length<=120&&!/\s/.test(s)?(window.localStorage.setItem(t,s),s):""}catch{return""}}function zR(e,t){if(typeof window>"u")return;const r=String(e||"").trim();try{if(!r||Aw(r))return;const n=Tw(t),s=String(window.localStorage.getItem(n)||"").trim();if(!r&&s&&s.toLowerCase()!=="default")return;window.localStorage.setItem(n,r)}catch{}}function Qb(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(Tw(e)),window.localStorage.removeItem(FC(e))}catch{}}function UC(e){const t=Sw(e);return`${NR}.${t}`}function eS(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(UC(e));if(!t)return null;const r=JSON.parse(t);return $C(r)}catch{return null}}function HR(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(UC(t),JSON.stringify(e))}catch{}}const Iv="taskforce.localMutationActorUserId.v1";function zC(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function VR(e){const t=String(e||"").trim().toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function Nm(e){if(!(typeof window>"u"))try{const t=String(e||"").trim();if(!t||t==="anonymous"){window.sessionStorage.removeItem(Iv);return}window.sessionStorage.setItem(Iv,t)}catch{}}function xw(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(Iv)||"").trim()}catch{return""}}function GR(e,t){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!VR(window.location.hostname))return!1;try{return new URL(t,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function KR(e,t,r){if(!GR(e,t))return r;const n=xw();if(!n)return r;const s=new Headers(r?.headers||void 0);return s.has("x-taskforce-user-id")||s.set("x-taskforce-user-id",n),{...r,headers:s}}function qR(e,t){if(!e.startsWith("/"))return e;const r=zC(t);return r?`${r}${e}`:e}async function YR(e,t,r){const n=qR(e,r),s=zC(r).length>0,i=KR(e,n,t),l=typeof performance<"u"?performance.now():Date.now();try{const c=await fetch(n,i);if(!(s&&n!==e&&e.startsWith("/api/taskforce/")&&(c.status===401||c.status===403)))return c;Cr("taskforce_api_auth_fallback_retry",{path:e,primaryUrl:n,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)});try{const m=await fetch(e,i);return Cr("taskforce_api_auth_fallback_completed",{path:e,primaryUrl:n,fallbackUrl:e,primaryStatus:c.status,fallbackStatus:m.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),m}catch{return Cr("taskforce_api_auth_fallback_failed",{path:e,primaryUrl:n,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),c}}catch(c){if(!s||!e.startsWith("/"))throw c;Cr("taskforce_api_network_fallback_retry",{path:e,primaryUrl:n,fallbackUrl:e,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l),error:c instanceof Error?c.message:String(c)});const d=await fetch(e,i);return Cr("taskforce_api_network_fallback_completed",{path:e,primaryUrl:n,fallbackUrl:e,fallbackStatus:d.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),d}}const Dm=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:4,coverageDigest:"c622f33d62c9f9251559a5b3644ba617da31c1b53d4fd0927b529e76c89948d1"}),ly=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1","task-comments/full-v1","task-checklist/full-v1","task-attachment-links/full-v1","entity-event/full-v1"]),Mm=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:5,coverageDigest:"1227152d1998809427f8560f85c8ef2da8780d3ea697390fbaa48c9e85a97be2"}),ZR=ly,Lm=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:6,coverageDigest:"0aa90b110c71cf37a1234617b098d055f1df1e8da389184c7b147833164e338d"}),JR=Object.freeze([...ly,"workstream-task-order/full-v1"]),Om=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:7,coverageDigest:"84b0dee7ac0811234288c1b296357b2ddbcfe82d438ccf90b6bc6e8b5afea0b6"}),HC=Object.freeze(ly.map(e=>e==="task-attachment-links/full-v1"?"task-attachment-links/full-v2":e)),Dh=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:8,coverageDigest:"344c3360d36d383241b212192fe6c2ac1a7694fe521d3b6636559043b7e58253"}),XR=HC,Aa=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:3,coverageDigest:"48544ecfcb72c44866cdd39d02d0ba83222bc5e236045880f7f62b979be46117"}),QR=1,e1=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1"]);function Nl(e){const t=String(e.coverageProfileId||"").trim(),r=Number(e.coverageVersion),n=String(e.coverageDigest||"").trim();return t===Aa.coverageProfileId&&r===Aa.coverageVersion&&n===Aa.coverageDigest?{coverage:Aa,excludedProjections:e1,nestedWriterPrerequisitesRequired:!1,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Dm.coverageProfileId&&r===Dm.coverageVersion&&n===Dm.coverageDigest?{coverage:Dm,excludedProjections:ly,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Mm.coverageProfileId&&r===Mm.coverageVersion&&n===Mm.coverageDigest?{coverage:Mm,excludedProjections:ZR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!0,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Lm.coverageProfileId&&r===Lm.coverageVersion&&n===Lm.coverageDigest?{coverage:Lm,excludedProjections:JR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!0,taskCoverProjectionRequired:!1}:t===Om.coverageProfileId&&r===Om.coverageVersion&&n===Om.coverageDigest?{coverage:Om,excludedProjections:HC,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!0}:t===Dh.coverageProfileId&&r===Dh.coverageVersion&&n===Dh.coverageDigest?{coverage:Dh,excludedProjections:XR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!0,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!0}:null}function Rw(e){for(const t of[Aa,Dm,Mm,Lm,Om]){const r=Nl(t);if(e.length===r.excludedProjections.length&&r.excludedProjections.every((n,s)=>e[s]===n))return t}return null}function Pw(e,t=Aa){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,n=r.coverage;return r.capabilityVersion===QR&&r.runtimeMode==="cloud"&&r.routeAvailable===!0&&r.writerPrerequisitesReady===!0&&r.activationReady===!0&&Array.isArray(r.missingPrerequisites)&&r.missingPrerequisites.length===0&&!!n&&typeof n=="object"&&!Array.isArray(n)&&n.coverageProfileId===t.coverageProfileId&&n.coverageVersion===t.coverageVersion&&n.coverageDigest===t.coverageDigest}function jw(e,t=Aa){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,n=r.excludedProjections,s=Nl(t);return s?r.cloudWritesFenced===!0&&Array.isArray(n)&&n.length===s.excludedProjections.length&&s.excludedProjections.every((i,l)=>n[l]===i):!1}function t1(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return t.cloudWritesFenced===!1&&Array.isArray(t.excludedProjections)&&t.excludedProjections.length===0}const VC=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1","task-comments/full-v1","task-checklist/full-v1","task-attachment-links/full-v1","task-attachment-links/full-v2","entity-event/full-v1","workstream-task-order/full-v1"]),r1=new Set(VC);function Lg(e){const t=new Set;for(const r of e||[]){const n=String(r||"").trim();if(!n||!r1.has(n)||t.has(n))throw new Error("Workspace sync v2 projection exclusions are invalid.");t.add(n)}return VC.filter(r=>t.has(r))}function n1(e,t){try{const r=Lg(e),n=Lg(t);return r.length===n.length&&r.every((s,i)=>s===n[i])}catch{return!1}}function a1(e,t){const r=[],n={},s=i=>{n[i]=(n[i]||0)+1};for(const i of e){if(i.op==="upsert"){const l=t.has("task-comments/full-v1"),c=t.has("task-checklist/full-v1"),d=t.has("task-attachment-links/full-v2")?"task-attachment-links/full-v2":"task-attachment-links/full-v1",m=t.has(d);if(t.has("task/root-v1")&&s("task/root-v1"),l||c||m){const f={...i.task};l&&(delete f.comments,s("task-comments/full-v1")),c&&(delete f.checklistItems,s("task-checklist/full-v1")),m&&(delete f.attachments,d==="task-attachment-links/full-v2"&&delete f.cardCoverAssetId,s(d)),r.push({...i,task:f});continue}}if(t.has("task/root-v1")&&i.op==="delete"){s("task/root-v1");continue}if(t.has("task-relationship/full-v1")&&(i.op==="task-relationship-upsert"||i.op==="task-relationship-delete")){s("task-relationship/full-v1");continue}if(t.has("taxonomy/full-v1")&&i.op==="taxonomy-upsert"){s("taxonomy/full-v1");continue}if(t.has("initiative/full-v1")&&i.op==="initiative-upsert"){s("initiative/full-v1");continue}if(t.has("workstream/full-v1")&&i.op==="workstream-upsert"){s("workstream/full-v1");continue}if(t.has("entity-event/full-v1")&&(i.op==="task-event-upsert"||i.op==="entity-event-upsert")){s("entity-event/full-v1");continue}r.push(i)}return{changes:r,suppressedCounts:n}}const GC=1;function s1(e){if(e.version!==GC)throw new TypeError("The sync transfer completion group version is unsupported.");if(!e.workspaceId.trim())throw new TypeError("The sync transfer completion group workspace is required.");if(!Number.isSafeInteger(e.coordinatorGeneration)||e.coordinatorGeneration<0)throw new TypeError("The sync transfer completion group generation is invalid.");if(e.ownerMode!=="browser-gateway"&&e.ownerMode!=="server")throw new TypeError("The sync transfer completion group owner is invalid.");if(!e.serverInstanceId.trim())throw new TypeError("The sync transfer completion group server instance is required.");if(!Array.isArray(e.permitIds)||e.permitIds.length===0)throw new TypeError("The sync transfer completion group requires at least one permit.");const t=e.permitIds.map(r=>r.trim());if(t.some((r,n)=>!r||r!==e.permitIds[n]))throw new TypeError("The sync transfer completion group contains an invalid permit ID.");if(new Set(t).size!==t.length)throw new TypeError("The sync transfer completion group contains duplicate permit IDs.");pn(e.previousBoundary),pn(e.expectedBoundary)}const So=45e3,Ew=18e4;function dy(e,t){const r=t?.completionGroup;if(!r)return{};if(s1(r),r.workspaceId!==e)throw new TypeError("The local sync apply completion group workspace does not match the request.");if(r.ownerMode!=="browser-gateway")throw new TypeError("The local sync browser apply requires a browser-gateway completion group.");return{coordinatorGeneration:r.coordinatorGeneration,permitIds:[...r.permitIds]}}async function KC(e,t=100){const r=new URLSearchParams({workspaceId:e,limit:String(Math.max(1,Math.min(100,Math.floor(t))))});return ua(fetch(`/api/taskforce/sync/workspace/content-obligations?${r.toString()}`,{credentials:"include",headers:{"x-taskforce-workspace-id":e}}))}async function qC(e,t,r){return ua(fetch("/api/taskforce/sync/workspace/content-obligations/failures",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},body:JSON.stringify({workspaceId:e,obligationIds:t,error:r})}))}async function o1(e,t,r=[],n=[],s=cI){const i=await s(e);if(!i.ok)return i;const l=new Set(Array.from(t,S=>String(S||"").trim()).filter(Boolean)),c=new Set(Array.from(r,S=>String(S||"").trim()).filter(Boolean)),d=new Set(Array.from(n,S=>String(S||"").trim()).filter(Boolean)),m=i.data;if(m.success!==!0||m.contractVersion!==3||m.workspaceId!==e||!Array.isArray(m.tasks)||!Array.isArray(m.activeTaskRelationshipIds)||!Array.isArray(m.initiatives)||!Array.isArray(m.workstreams)||!m.initiativeProjection||typeof m.initiativeProjection!="object"||m.initiativeProjection.owner!=="v2"&&m.initiativeProjection.owner!=="v3"||typeof m.initiativeProjection.epoch!="string"||!/^\d+$/.test(m.initiativeProjection.epoch)||m.activeTaskRelationshipIds.some(S=>typeof S!="string"||!S.trim())||!m.taxonomy||typeof m.taxonomy!="object"||Array.isArray(m.taxonomy)||typeof m.taxonomy.activeOperation!="boolean"||typeof m.taxonomy.owned!="boolean"||typeof m.taxonomy.entityRevision!="string"||!/^\d+$/.test(m.taxonomy.entityRevision)||typeof m.taxonomy.lifecycleRevision!="string"||!/^\d+$/.test(m.taxonomy.lifecycleRevision)||m.taxonomy.lastSequence!==null&&(typeof m.taxonomy.lastSequence!="string"||!/^\d+$/.test(m.taxonomy.lastSequence)))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};const f=m.combinedProjection;if(f!==void 0&&(!f||typeof f!="object"||Array.isArray(f)||f.owner!=="v2"&&f.owner!=="v3"||typeof f.epoch!="string"||!/^\d+$/.test(f.epoch)))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};const g=f?Nl({coverageProfileId:f.coverageProfileId,coverageVersion:f.coverageVersion,coverageDigest:f.coverageDigest}):null;if(f?.owner==="v3"&&!g)return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedExcludedProjections:[]}};const h=[];for(const S of m.tasks){const L=String(S?.taskId||"").trim();if(!S||typeof S!="object"||Array.isArray(S)||!L||typeof S.activeOperation!="boolean"||typeof S.activeCreateOperation!="boolean"||S.activeDeleteOperation!==void 0&&typeof S.activeDeleteOperation!="boolean"||S.deleteOwned!==void 0&&typeof S.deleteOwned!="boolean"||typeof S.activeLifecycleOperation!="boolean"||typeof S.activeReopenOperation!="boolean"||typeof S.reopenAssigneeOwned!="boolean")return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};h.push({entry:S,taskId:L})}const y=h.filter(({taskId:S})=>S.length>0&&l.has(S)),k=Array.from(new Set(y.filter(({entry:S})=>S?.activeOperation===!0).map(({taskId:S})=>S))).sort(),v=Array.from(new Set(y.filter(({entry:S})=>S?.activeCreateOperation===!0).map(({taskId:S})=>S))).sort(),A=Array.from(new Set(y.filter(({entry:S})=>S?.activeDeleteOperation===!0||S?.deleteOwned===!0).map(({taskId:S})=>S))).sort(),b=Array.from(new Set(y.filter(({entry:S})=>S?.activeLifecycleOperation===!0).map(({taskId:S})=>S))).sort(),w=Array.from(new Set(y.filter(({entry:S})=>S?.activeReopenOperation===!0).map(({taskId:S})=>S))).sort(),P=Array.from(new Set(m.activeTaskRelationshipIds.map(S=>String(S).trim()))).sort(),E=[],D=[];for(const S of m.initiatives){const L=String(S?.entityId||"").trim();if(!(S&&typeof S=="object"&&!Array.isArray(S)&&S.domain==="initiative"&&L.length>0&&typeof S.activeOperation=="boolean"&&typeof S.owned=="boolean"&&typeof S.entityRevision=="string"&&/^\d+$/.test(S.entityRevision)&&typeof S.lifecycleRevision=="string"&&/^\d+$/.test(S.lifecycleRevision)&&(S.lastSequence===null||typeof S.lastSequence=="string"&&/^\d+$/.test(S.lastSequence))&&(S.canonicalFingerprint===null||typeof S.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(S.canonicalFingerprint))))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};c.has(L)&&(S.activeOperation===!0&&E.push(L),(S.activeOperation===!0||S.owned===!0)&&D.push(L))}const j=[];for(const S of m.workstreams){const L=String(S?.entityId||"").trim();if(!(S&&typeof S=="object"&&!Array.isArray(S)&&S.domain==="workstream"&&L.length>0&&typeof S.activeOperation=="boolean"&&typeof S.owned=="boolean"&&typeof S.entityRevision=="string"&&/^\d+$/.test(S.entityRevision)&&typeof S.lifecycleRevision=="string"&&/^\d+$/.test(S.lifecycleRevision)&&(S.lastSequence===null||typeof S.lastSequence=="string"&&/^\d+$/.test(S.lastSequence))&&(S.canonicalFingerprint===null||typeof S.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(S.canonicalFingerprint))))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};d.has(L)&&(S.activeOperation===!0||S.owned===!0)&&j.push(L)}return{ok:!0,status:i.status,data:{activeMetadataTaskIds:k,activeCreateTaskIds:v,activeDeleteTaskIds:A,activeLifecycleTaskIds:b,activeReopenTaskIds:w,activeTaskRelationshipIds:P,activeInitiativeIds:Array.from(new Set(E)).sort(),protectedInitiativeIds:Array.from(new Set(D)).sort(),protectedWorkstreamIds:Array.from(new Set(j)).sort(),taxonomyProtected:m.taxonomy.activeOperation===!0||m.taxonomy.owned===!0,initiativeProjectionOwner:m.initiativeProjection.owner,initiativeProjectionEpoch:m.initiativeProjection.epoch,combinedProjectionOwner:f?.owner==="v3"?"v3":"v2",combinedProjectionEpoch:f&&typeof f.epoch=="string"?f.epoch:"0",combinedCoverage:f?.owner==="v3"&&g?g.coverage:void 0,combinedExcludedProjections:f?.owner==="v3"&&g?[...g.excludedProjections]:[]}}}function i1(e){const t=Number(e?.status);return Number.isFinite(t)&&t>0?Math.floor(t):0}async function ua(e){try{const t=await e,r=await t.text().catch(()=>"");let n={};if(r)try{n=JSON.parse(r)}catch{n={error:!t.ok&&t.statusText?`${t.status} ${t.statusText}`:r.slice(0,400)}}else!t.ok&&t.statusText&&(n={error:`${t.status} ${t.statusText}`});const s=t.headers.get("retry-after");let i;if(s){const l=Number.parseInt(s,10);if(Number.isFinite(l)&&l>0)i=l*1e3;else{const c=Date.parse(s);if(Number.isFinite(c)){const d=c-Date.now();d>0&&(i=d)}}}return{ok:t.ok,status:t.status,data:n,retryAfterMs:i}}catch(t){const n=String(t?.name||"").trim()==="AbortError"?{error:"Workspace sync pull request timed out."}:{};return{ok:!1,status:i1(t),data:n}}}function Os(e,t,r){const n=typeof AbortController=="function"?new AbortController:null,s=n?globalThis.setTimeout(()=>n.abort(),Math.max(1,Math.floor(r))):null;return fetch(e,{...t,...n?{signal:n.signal}:{}}).finally(()=>{s!==null&&globalThis.clearTimeout(s)})}async function c1(e){return ua(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function l1(e,t){return ua(fetch(e("/api/taskforce/sync/user-settings"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function d1(e,t){return ua(fetch(e("/api/taskforce/sync/workspace/handshake"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}))}async function u1(e,t){return ua(fetch(e("/api/taskforce/sync/workspace/provision"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function f1(e,t){const r=new URLSearchParams({limit:String(t.limit),workspaceId:t.workspaceId});if(t.cursor&&r.set("cursor",t.cursor),t.repairMode===!0&&r.set("repair","1"),t.contentMode==="manifest"&&r.set("content","manifest"),t.excludeInitiatives===!0&&r.set("excludeInitiatives","1"),t.excludedProjections?.length){r.set("excludeProjections",t.excludedProjections.join(","));const i=Rw(t.excludedProjections);i&&(r.set("coverageProfileId",i.coverageProfileId),r.set("coverageVersion",String(i.coverageVersion)),r.set("coverageDigest",i.coverageDigest))}const n=e("/api/taskforce/sync/workspace/pull"),s=n.includes("?")?"&":"?";return ua(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},So))}async function YC(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor),t.repairCursor&&r.set("repairCursor",t.repairCursor);const n=e("/api/taskforce/sync/v3/workspace/feed"),s=n.includes("?")?"&":"?";return ua(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},So))}async function ZC(e,t){const r=t.coverage||Aa,n=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&n.set("cursor",t.cursor),t.repairCursor&&n.set("repairCursor",t.repairCursor),t.forceRepair===!0&&n.set("forceRepair","1");const s=e("/api/taskforce/sync/v3/workspace/feed"),i=s.includes("?")?"&":"?",l=t.forceRepair===!0||t.repairCursor?Ew:So;return ua(Os(`${s}${i}${n.toString()}`,{method:"GET",credentials:"include"},l))}async function JC(e){const t=new URLSearchParams({workspaceId:e});return ua(Os(`/api/taskforce/sync/v3/local/feed?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},So))}async function XC(e,t,r){return ua(Os("/api/taskforce/sync/v3/local/feed",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,...t,...dy(e,r)})},So))}async function QC(e,t=Aa){const r=new URLSearchParams({workspaceId:e,coverageProfileId:t.coverageProfileId,coverageVersion:String(t.coverageVersion),coverageDigest:t.coverageDigest});return ua(Os(`/api/taskforce/sync/v3/local/feed?${r.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},So))}async function eI(e,t,r=Aa,n){return ua(Os("/api/taskforce/sync/v3/local/feed",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,...t,...r,...dy(e,n)})},So))}async function tI(e){const t=new URLSearchParams({workspaceId:e});return ua(Os(`/api/taskforce/sync/v3/local/task-comment-audit?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},So))}async function rI(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||50)});t.cursor&&r.set("cursor",t.cursor);const n=e("/api/taskforce/sync/v3/workspace/task-comment-audit"),s=n.includes("?")?"&":"?";return ua(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},So))}async function nI(e,t,r){return ua(Os("/api/taskforce/sync/v3/local/task-comment-audit",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,page:t,...dy(e,r)})},So))}async function m1(e){return ua(Os("/api/taskforce/sync/v3/local/coordinator/recovery/authoritative-repair-complete",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e.workspaceId},credentials:"include",body:JSON.stringify(e)},So))}async function aI(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor);const n=e("/api/taskforce/sync/workspace/initiative-repair"),s=n.includes("?")?"&":"?";return ua(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},Ew))}async function sI(e,t){const r=t.coverage||Aa,n=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&n.set("cursor",t.cursor);const s=e("/api/taskforce/sync/workspace/combined-repair"),i=s.includes("?")?"&":"?";return ua(Os(`${s}${i}${n.toString()}`,{method:"GET",credentials:"include"},Ew))}async function oI(e){const t=new URLSearchParams({workspaceId:e});return ua(Os(`/api/taskforce/sync/workspace/content-manifest?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},So))}async function p1(e,t){return ua(Os(e("/api/taskforce/sync/workspace/content"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)},So))}async function iI(e,t={}){const r=e.changes.filter(_=>_.op==="upsert").map(_=>String(_.task?.id||"").trim()).filter(Boolean),n=e.changes.filter(_=>_.op==="delete").map(_=>String(_.taskId||"").trim()).filter(Boolean),s=new Set(r),i=e.changes.filter(_=>_.op==="initiative-upsert").map(_=>String(_.initiative?.id||"").trim()).filter(Boolean),l=e.changes.filter(_=>_.op==="workstream-upsert").map(_=>String(_.workstream?.id||"").trim()).filter(Boolean);let c=[],d=[],m=[],f=new Set,g=new Set,h=new Set,y=!1,k=[],v=new Set,A=new Set,b="v2",w="v2",P="0",E=null,D=[];if(e.changes.length>0){const _=await o1(e.workspaceId,[...r,...n],i,l,t.readOwnership);if(!_.ok)return{ok:!1,status:_.status,data:_.data,retryAfterMs:_.retryAfterMs};f=new Set(_.data.activeCreateTaskIds),g=new Set(_.data.activeDeleteTaskIds),h=new Set(_.data.activeTaskRelationshipIds),y=_.data.taxonomyProtected,k=_.data.activeInitiativeIds,v=new Set(_.data.protectedInitiativeIds),A=new Set(_.data.protectedWorkstreamIds),b=_.data.initiativeProjectionOwner,w=_.data.combinedProjectionOwner,P=_.data.combinedProjectionEpoch,E=_.data.combinedCoverage||null,D=_.data.combinedExcludedProjections||[],c=_.data.activeMetadataTaskIds.filter(T=>s.has(T)&&!f.has(T)),d=_.data.activeLifecycleTaskIds.filter(T=>s.has(T)&&!f.has(T)),m=_.data.activeReopenTaskIds.filter(T=>s.has(T)&&!f.has(T))}const j=e.changes.filter(_=>{if(_.op==="upsert"){const T=String(_.task?.id||"").trim();return!f.has(T)&&!g.has(T)}return _.op==="delete"?!g.has(String(_.taskId||"").trim()):_.op==="task-relationship-upsert"||_.op==="task-relationship-delete"?!h.has(String(_.relationship?.id||"").trim()):_.op==="taxonomy-upsert"?!y:_.op==="initiative-upsert"?b!=="v3"&&!v.has(String(_.initiative?.id||"").trim()):_.op==="workstream-upsert"?!A.has(String(_.workstream?.id||"").trim()):!0}),S=a1(j,new Set(D)).changes,L=w==="v3"?e.changes.length-S.length:0;return{ok:!0,status:200,data:{changes:S,ownership:{activeV3TaskMetadataIds:c,activeV3TaskLifecycleIds:d,activeV3TaskReopenAssigneeIds:m,activeV3InitiativeIds:k,initiativeProjectionOwner:b,combinedProjectionOwner:w,combinedProjectionEpoch:P,combinedCoverage:E,combinedExcludedProjections:D,combinedV3SuppressedChangeCount:L}}}}async function h1(e,t){const r=await iI({workspaceId:t.workspaceId,changes:t.changes});if(!r.ok)return r;const{changes:n,ownership:s}=r.data;return n.length===0?{ok:!0,status:204,data:{success:!0,skipped:!0}}:ua(fetch(e("/api/taskforce/sync/workspace/push"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({...t,changes:n,...s.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:s.activeV3TaskMetadataIds}:{},...s.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:s.activeV3TaskLifecycleIds}:{},...s.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:s.activeV3TaskReopenAssigneeIds}:{},...s.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:s.activeV3InitiativeIds}:{},...s.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...s.combinedCoverage?{combinedCoverage:s.combinedCoverage,excludedProjections:s.combinedExcludedProjections||[]}:{},...t.repairMode===!0?{repair:!0}:{}})}))}async function cI(e){const t=new URLSearchParams({workspaceId:e});return ua(Os(`/api/taskforce/sync/v3/local/metadata-ownership?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},So))}async function lI(e,t,r){const n=Lg(r?.excludedProjections||[]),s=n.length?Rw(n):null,i=JSON.stringify({workspaceId:e,changes:t,workspaceMembers:Array.isArray(r?.workspaceMembers)?r.workspaceMembers:void 0,...r?.repairMode===!0?{repair:!0}:{},excludedProjections:n,...s?{combinedCoverage:s}:{},contentPullObligations:r?.contentPullObligations,contentPullResolutionClaims:r?.contentPullResolutionClaims,...dy(e,r),bootstrapSnapshot:r?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds:[]}:void 0}),l="/api/taskforce/sync/workspace/apply-local",c=[];try{const d=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:i});if(d.ok){const g=await d.json().catch(()=>({}));return{ok:!0,status:d.status,data:g,failures:c}}const m=await d.text().catch(()=>"");let f={};if(m)try{f=JSON.parse(m)}catch{f={error:m.slice(0,400)}}else d.statusText&&(f={error:`${d.status} ${d.statusText}`});return c.push(`${l}:${d.status}`),{ok:!1,status:d.status,data:f,failures:c}}catch{c.push(`${l}:network`)}return{ok:!1,status:0,data:{},failures:c}}function qc(e){return`${e.kind}:${e.path}`}const tS="WORKSPACE_SYNC_V3_APPLY_NOT_COMMITTED";function Nw(e){return{handshakeWorkspace:t=>d1(e,t),provisionWorkspace:t=>u1(e,t),pushWorkspaceChanges:({ownership:t,pushBoundary:r,...n})=>h1(e,n),pullWorkspaceChanges:t=>f1(e,t),pullWorkspaceContent:({previousCursor:t,independentCompletionIdentity:r,...n})=>p1(e,n),pullInitiativeFeed:t=>YC(e,t),pullInitiativeRepair:t=>aI(e,t),pullCombinedFeed:t=>ZC(e,t),pullCombinedRepair:t=>sI(e,t),pullTaskCommentAudit:t=>rI(e,t),abandonTransferReceipts:()=>{},acknowledgeNonApplyingTransferReceipts:()=>{},buildV2ApplyCompletionGroup:()=>{},buildIndependentContentApplyCompletionGroup:()=>{},buildV2PushApplyCompletionGroup:()=>{},buildV3ApplyCompletionGroup:()=>{}}}const dI=1;function uI(e){if(!Array.isArray(e)||e.length===0||e.some(t=>typeof t!="string"||t.trim().length===0||t!==t.trim())||new Set(e).size!==e.length)throw new TypeError("A V2 push boundary requires nonempty, unique, trimmed batch operation identities.");return Object.freeze({version:dI,projection:"v2-push",batchOperationIdentities:Object.freeze([...e])})}function Mh(e){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==dI||e.projection!=="v2-push"||!Array.isArray(e.batchOperationIdentities))throw new TypeError("The V2 push boundary is invalid.");return uI(e.batchOperationIdentities)}function hg(e){const t=e.filter(r=>r?.op==="upsert").map(r=>String(r.task?.id||"").trim()).filter(Boolean);return Array.from(new Set(t))}function fI(e,t){if(!Array.isArray(t)||t.some(i=>typeof i!="string"||i.trim().length===0||i!==i.trim())||new Set(t).size!==t.length)throw new TypeError("The expected V2 push task echo identities are invalid.");if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("The V2 push authoritative echo response is invalid.");const r=e;if(!Array.isArray(r.appliedTaskUpserts))throw new TypeError("The V2 push authoritative echo response is missing appliedTaskUpserts.");const n=r.appliedTaskUpserts.map(i=>{const l=i&&typeof i=="object"&&!Array.isArray(i)?i:null;if(!l||typeof l.archived!="boolean")return null;const c=l.task&&typeof l.task=="object"&&!Array.isArray(l.task)?l.task:null,d=String(c?.id||"").trim();return!c||!d?null:{archived:l.archived===!0,task:c,...l.durableRevision&&typeof l.durableRevision=="object"&&!Array.isArray(l.durableRevision)?{durableRevision:l.durableRevision}:{}}}).filter(i=>!!i),s=n.map(i=>String(i.task.id).trim());if(n.length!==r.appliedTaskUpserts.length||s.length!==t.length||new Set(s).size!==s.length||s.some((i,l)=>i!==t[l]))throw new TypeError("The V2 push authoritative task echo contract is incomplete or malformed.");return n}function mI(e,t){const{updatedAt:r,...n}=structuredClone(e);return t||delete n.referenceNumber,n}function rS(e){const t=mI(e.task,e.preserveReferenceNumber),r=e.excludedProjections.has("task/root-v1"),n=e.excludedProjections.has("task-comments/full-v1"),s=e.excludedProjections.has("task-checklist/full-v1"),i=e.excludedProjections.has("task-attachment-links/full-v1"),l=e.excludedProjections.has("task-attachment-links/full-v2");if(r)for(const c of Object.keys(t))["id","comments","checklistItems","attachments","cardCoverAssetId"].includes(c)||delete t[c];return n&&delete t.comments,s&&delete t.checklistItems,(i||l)&&delete t.attachments,l&&delete t.cardCoverAssetId,{...r?{}:{archived:e.archived},task:t}}function g1(e){const t=String(e.operationIdentity||"").trim();if(!t||t!==e.operationIdentity)throw new TypeError("The V2 push settlement operation identity is invalid.");const r=e.changes.filter(c=>c.op==="upsert");if(r.length!==e.appliedTaskUpserts.length)throw new TypeError("The V2 push authoritative settlement projection is incomplete.");const n=r.map(c=>({archived:c.archived,task:mI(c.task,c.task.referenceNumber!==void 0&&c.task.referenceNumber!==null)})),s=new Set(e.excludedProjections||[]),i=r.map(c=>rS({archived:c.archived,task:c.task,preserveReferenceNumber:c.task.referenceNumber!==void 0&&c.task.referenceNumber!==null,excludedProjections:s})),l=e.appliedTaskUpserts.map((c,d)=>rS({archived:c.archived,task:c.task,preserveReferenceNumber:r[d]?.task.referenceNumber!==void 0&&r[d]?.task.referenceNumber!==null,excludedProjections:s}));if(pn(l)!==pn(i))throw new TypeError("The V2 push authoritative settlement does not match the canonical request state.");return{version:1,operationIdentity:t,taskUpserts:n}}const _v="V1:AESGCM:",Dw="AES-GCM",y1=12;async function pI(e){const t=Buffer.from(e,"base64");if(t.length!==32)throw new Error("Encryption key must be exactly 32 bytes (256-bit).");return crypto.subtle.importKey("raw",t,{name:Dw},!1,["encrypt","decrypt"])}async function nS(e,t){if(!e)return e;const r=crypto.getRandomValues(new Uint8Array(y1)),n=await pI(t),i=new TextEncoder().encode(e),l=await crypto.subtle.encrypt({name:Dw,iv:r},n,i),c=Buffer.from(l).toString("base64"),d=Buffer.from(r).toString("base64");return`${_v}${d}:${c}`}async function aS(e,t){if(!e||!e.startsWith(_v))return e;const r=e.slice(_v.length),[n,s]=r.split(":");if(!n||!s)throw new Error("Malformed encrypted document payload.");const i=Buffer.from(n,"base64"),l=Buffer.from(s,"base64"),c=await pI(t);try{const d=await crypto.subtle.decrypt({name:Dw,iv:i},c,l);return new TextDecoder("utf-8").decode(d)}catch(d){throw new Error(`Failed to decrypt document: ${d.message}`)}}async function gg(e,t){t&&(e.op==="document-upsert"&&typeof e.content=="string"&&(e.content=await aS(e.content,t)),e.op==="asset-upsert"&&typeof e.contentBase64=="string"&&(e.contentBase64=await aS(e.contentBase64,t)))}async function Og(e,t){const r=e==="document"?new TextEncoder().encode(t):Uint8Array.from(atob(t),s=>s.charCodeAt(0)),n=await crypto.subtle.digest("SHA-256",r);return{sha256:Array.from(new Uint8Array(n),s=>s.toString(16).padStart(2,"0")).join(""),sizeBytes:r.byteLength}}function sS(e){return String(e||"").trim().toLowerCase()}function oS(e){return/^[a-f0-9]{64}$/.test(e)}function iS(e){return Number.isSafeInteger(e)&&e>=0}function k1(e,t){if(!t||!t.existsLocally||t.kind!==e.kind||t.path!==e.path||t.manifestVersion!==e.manifestVersion)return{shouldFetch:!0,reasons:["missing"]};const r=[],n=sS(e.sha256),s=sS(t.sha256);return!oS(n)||!oS(s)?r.push("unknown-hash"):n!==s&&r.push("hash-mismatch"),(!iS(e.sizeBytes)||!iS(t.sizeBytes)||e.sizeBytes!==t.sizeBytes)&&r.push("size-mismatch"),(!e.metadataFingerprint||!t.metadataFingerprint||e.metadataFingerprint!==t.metadataFingerprint)&&r.push("metadata-mismatch"),{shouldFetch:r.length>0,reasons:r}}const cS=1;var Tl={};function Sa(e){return e&&typeof e=="object"?e:{}}const v1=3e4,w1=60*6e4;function b1(e,t=Date.now()){const r=Math.max(0,Math.floor(Number(e.attempts)||0));if(r===0)return!0;const n=Date.parse(String(e.updatedAt||""));if(!Number.isFinite(n))return!0;const s=Math.min(w1,v1*2**Math.min(r-1,7));return n+s<=t}function di(e){const t=Number(e||0);return t===0||t===429||t>=500}function lS(e,t){const r=String(e.code||"").trim().toUpperCase(),n=String(e.error||"").trim();return r==="WORKSPACE_ID_ALREADY_EXISTS"||n.toLowerCase()==="workspace id already exists"?"This workspace is already linked to another cloud account. Sign in with the original account, ask the workspace owner to grant you access, or keep this workspace local-only.":n||`Workspace provisioning failed (${t})`}function S1(e,t){if(t!==400)return!1;const r=String(e.code||"").trim().toUpperCase(),n=String(e.error||"").trim().toLowerCase();return r==="WORKSPACE_ID_REQUIRED"&&n.includes("no cloud workspace is selected")}async function A1(e){if(!e.cloudAuthConfigured)return{success:!1,error:"Cloud auth endpoint is not configured."};if(e.runtimeMode!=="local")return{success:!1,error:"Workspace sync is only available in local runtime."};if(!e.isAuthenticated)return{success:!1,error:"Authentication required."};try{const t=e.remoteServices||Nw(e.resolveCloudAuthUrl);let r=await t.handshakeWorkspace(e.workspaceId);if(r.ok)return{success:!0,provisioned:!1};const n=Sa(r.data);if(r.status===401)return{success:!1,statusCode:401,transient:!1,error:String(n.error||"Authentication required for workspace sync.")};if(r.status===429)return{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(n.error||"Workspace sync rate limited. Please retry later.")};if(S1(n,r.status)){const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=Sa(s.data);return{success:!1,statusCode:s.status,transient:di(s.status),retryAfterMs:s.retryAfterMs,error:lS(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=Sa(r.data);return r.status===401?{success:!1,statusCode:401,transient:!1,error:String(i.error||"Authentication required for workspace sync.")}:r.status===429?{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(i.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:r.status,transient:di(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}if(r.status===409&&n.code==="WORKSPACE_ID_MISMATCH"){if(e.allowProvisionOnMismatch===!1)return{success:!1,statusCode:409,transient:!1,error:String(n.error||"Selected cloud workspace could not be attached to this local workspace.")};const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=Sa(s.data);return{success:!1,statusCode:s.status,error:lS(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=Sa(r.data);return r.status===401?{success:!1,statusCode:401,transient:!1,error:String(i.error||"Authentication required for workspace sync.")}:r.status===429?{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(i.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:r.status,transient:di(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:r.status,transient:di(r.status),error:String(n.error||`Workspace sync handshake failed (${r.status})`)}}catch{return{success:!1,statusCode:0,transient:!0,error:"Failed to validate workspace sync access."}}}function C1(e,t,r){if(!e)return;const n={};for(const i of t)n[i.op]=(n[i.op]||0)+1;const s=(i,l)=>i&&{...i,changeCount:l};return{...e,totalChanges:t.length,byOp:n,domains:{...e.domains,tasks:s(e.domains.tasks,(n.upsert||0)+(n.delete||0)),taskRelationships:s(e.domains.taskRelationships,(n["task-relationship-upsert"]||0)+(n["task-relationship-delete"]||0)),initiatives:s(e.domains.initiatives,n["initiative-upsert"]||0),workstreams:s(e.domains.workstreams,n["workstream-upsert"]||0),taxonomy:s(e.domains.taxonomy,n["taxonomy-upsert"]||0)},...r?.combinedV3SuppressedChangeCount?{combinedV3SuppressedChangeCount:r.combinedV3SuppressedChangeCount}:{}}}async function hI(e,t){const r=pn(e);try{const n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(n)).map(s=>s.toString(16).padStart(2,"0")).join("")}catch{let n=2166136261;for(let i=0;i<r.length;i+=1)n^=r.charCodeAt(i),n=Math.imul(n,16777619);const s=(n>>>0).toString(16).padStart(8,"0");return t?`${t}:fallback:${s}`:s.repeat(8)}}async function I1(e,t,r){return hI({contractVersion:1,workspaceId:e,repairMode:r,changes:t},e)}const _1=64,dS=4*1024*1024,T1=45*1024*1024,x1=64*1024;function uS(e){switch(e.op){case"upsert":return`${e.op}:${e.task.id}`;case"delete":return`${e.op}:${e.taskId}`;case"task-relationship-upsert":case"task-relationship-delete":return`${e.op}:${e.relationship.id}`;case"initiative-upsert":return`${e.op}:${e.initiative.id}`;case"workstream-upsert":return`${e.op}:${e.workstream.id}`;case"planning-identity-upsert":return`${e.op}:${e.identity.entityType}:${e.identity.entityId}`;case"taxonomy-upsert":return e.op;case"ai-profile-upsert":return`${e.op}:${e.profile.id}`;case"document-upsert":case"document-delete":return`${e.op}:${e.path}`;case"document-manifest":return`${e.op}:${e.manifest.path}`;case"asset-upsert":case"asset-delete":return`${e.op}:${e.path}`;case"asset-manifest":return`${e.op}:${e.manifest.path}`;case"document-review-session-upsert":return`${e.op}:${e.session.id}`;case"document-review-session-delete":return`${e.op}:${e.sessionId}`;case"document-review-comment-upsert":return`${e.op}:${e.comment.id}`;case"document-review-comment-delete":return`${e.op}:${e.commentId}`;case"annotated-attachment-session-upsert":return`${e.op}:${e.session.id}`;case"annotated-attachment-session-delete":return`${e.op}:${e.sessionId}`;case"taskforce-agent-upsert":return`${e.op}:${e.agent.id}`;case"agent-role-upsert":return`${e.op}:${e.role.id}`;case"taskforce-agent-skill-upsert":return`${e.op}:${e.skill.id}`;case"agent-conversation-upsert":return`${e.op}:${e.conversation.id}`;case"entity-event-upsert":return`${e.op}:${e.event.id}`;case"task-event-upsert":return`${e.op}:${e.event.id}`}}function R1(e,t){const r=new Map;for(const[s,i]of e.entries()){const l=uS(i),c=r.get(l)||[];c.push(s),r.set(l,c)}const n=new Map;return t.map(s=>{const i=uS(s),l=r.get(i)||[],c=n.get(i)||0,d=l[c];if(d===void 0)throw new Error(`Prepared V2 push change is not present in the frozen payload: ${i}.`);n.set(i,c+1);const m=e[d];return JSON.stringify(m)===JSON.stringify(s)?{sourceChangeIndex:d}:{sourceChangeIndex:d,preparedChange:s}})}function P1(e,t){const r=new Set;return t.batches.map(n=>n.map(s=>{const i=s.sourceChangeIndex;if(!Number.isSafeInteger(i)||i<0||i>=e.length||r.has(i))throw new Error("Persisted V2 push prepared plan contains an invalid source change index.");return r.add(i),s.preparedChange||e[i]}))}function gI(e){switch(e.op){case"taxonomy-upsert":case"ai-profile-upsert":case"initiative-upsert":case"taskforce-agent-upsert":case"taskforce-agent-skill-upsert":return 0;case"workstream-upsert":return 1;case"planning-identity-upsert":return 2;case"upsert":return 2;case"document-upsert":case"document-manifest":case"asset-upsert":case"asset-manifest":return 3;case"document-review-session-upsert":case"annotated-attachment-session-upsert":case"agent-conversation-upsert":case"task-relationship-upsert":return 4;case"document-review-comment-upsert":case"task-event-upsert":case"entity-event-upsert":return 5;case"document-review-comment-delete":case"annotated-attachment-session-delete":case"task-relationship-delete":return 6;case"document-review-session-delete":case"document-delete":case"asset-delete":return 7;case"delete":return 8;default:return 4}}function j1(e){return e.op==="document-upsert"||e.op==="document-manifest"||e.op==="asset-upsert"||e.op==="asset-manifest"||e.op==="document-delete"||e.op==="asset-delete"}function fS(e,t){return x1+new TextEncoder().encode(JSON.stringify({workspaceId:e.workspaceId,idempotencyKey:"0".repeat(64),changes:t,repairMode:e.repairMode===!0,repair:e.repairMode===!0})).byteLength}function E1(e,t,r){const n=t.map((l,c)=>({plain:l,safe:r[c],phase:gI(l),preparedIndex:c})).sort((l,c)=>l.phase-c.phase||l.preparedIndex-c.preparedIndex);if(n.length===0)return{batches:[[]],oversizedChangeIndex:null};const s=[];let i=[];for(const l of n){const c=fS(e,[l.safe]);if(c>T1)return{batches:[],oversizedChangeIndex:l.preparedIndex};const d=i.length>0&&i[0].phase!==l.phase,m=[...i,l],f=i.length>0&&fS(e,m.map(g=>g.safe))>dS;(d||i.length>=_1||f)&&(s.push(i),i=[]),i.push(l),c>dS&&(s.push(i),i=[])}return i.length>0&&s.push(i),{batches:s,oversizedChangeIndex:null}}async function N1(e){const t=e.remoteServices||Nw(e.resolveCloudAuthUrl);let r={activeV3TaskMetadataIds:[],activeV3TaskLifecycleIds:[],activeV3TaskReopenAssigneeIds:[],activeV3InitiativeIds:[],initiativeProjectionOwner:"v2",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedV3SuppressedChangeCount:0},n,s=e.preparedPlan||null,i=null;if(s){if(s.contractVersion!==cS)throw new Error("Persisted V2 push prepared plan version is unsupported.");i=P1(e.payload.changes,s),n=i.flat(),r=s.ownership}else n=e.payload.changes;if(!s&&n.length>0){const H=await iI({workspaceId:e.workspaceId,changes:n},{readOwnership:e.localServices?.readPushOwnership});if(!H.ok){const M=Sa(H.data);return{success:!1,status:H.status,error:typeof M.error=="string"?M.error:"Local workspace sync ownership could not be verified.",code:typeof M.code=="string"?M.code:void 0,retryAfterMs:H.retryAfterMs,transient:di(H.status),requestMs:0,changeCount:e.payload.changes.length,deleteCount:e.payload.deleteTaskIds.size,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}n=H.data.changes,r=H.data.ownership}const l=n.length,c=C1(e.payload.deltaDiagnostics,n,r),d=Lg(r.combinedExcludedProjections||[]),m=e.payload.deleteTaskIds.size;let f=0;if(l===0&&e.repairMode!==!0&&(r?.combinedProjectionOwner==="v3"||!!e.payload.deltaDiagnostics&&e.payload.deltaDiagnostics?.baselineResetReason!=="missing-baseline"))return{success:!0,syncedAt:new Date().toISOString(),requestMs:0,changeCount:0,effectiveDeltaDiagnostics:c,effectiveV2ExcludedProjections:d,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]};let h=n;if(typeof process<"u"&&Tl?.TASKFORCE_SYNC_KEY){const H=Tl.TASKFORCE_SYNC_KEY,M=[];for(const oe of h)oe.op==="document-upsert"&&typeof oe.content=="string"?M.push({...oe,content:await nS(oe.content,H)}):oe.op==="asset-upsert"&&typeof oe.contentBase64=="string"&&oe.contentBase64.length>0?M.push({...oe,contentBase64:await nS(oe.contentBase64,H)}):M.push(oe);h=M}let y=E1(e,n,h);if(i){let H=0;y={oversizedChangeIndex:null,batches:i.map(M=>M.map(oe=>{const K={plain:oe,safe:h[H],phase:gI(oe),preparedIndex:H};return H+=1,K}))}}if(y.oversizedChangeIndex!==null){const H=n[y.oversizedChangeIndex];return{success:!1,status:413,error:`Workspace sync change ${y.oversizedChangeIndex+1} (${H.op}) exceeds the single-change transfer limit.`,transient:!1,requestMs:f,changeCount:l,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}const k=new Set,v=[];let A;if(s){if(A=[...s.batchOperationIdentities],A.length!==y.batches.length||new Set(A).size!==A.length||A.some(H=>!/^[a-f0-9]{64}$/.test(H)))throw new Error("Persisted V2 push prepared plan fingerprint does not match its frozen batches.")}else{A=await Promise.all(y.batches.map(M=>I1(e.workspaceId,M.map(oe=>oe.plain),e.repairMode===!0)));const H=R1(e.payload.changes,n);s={contractVersion:cS,ownership:r,batches:y.batches.map(M=>M.map(oe=>H[oe.preparedIndex])),batchOperationIdentities:[...A]}}const b=uI(A),w=e.acknowledgedNonApplyingBatchOperationIdentities||[];if(new Set(w).size!==w.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");for(const H of w){const M=A.indexOf(H);if(M>=0&&hg(y.batches[M].map(oe=>oe.plain)).length>0)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.")}const P=w.filter(H=>{const M=A.indexOf(H);return M>=0&&hg(y.batches[M].map(oe=>oe.plain)).length===0}),E=e.preparedPlan?[]:w.filter(H=>!P.includes(H));s&&!e.preparedPlan&&await e.onPreparedPlan?.({plan:s,acknowledgedOperationIdentities:P,replayedLegacyAcknowledgementIdentities:E});const D=new Set(P);if(e.preparedPlan&&D.size!==w.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");const j=e.settledBatchOperationIdentities||[];if(j.length>0&&!e.onAcceptedBatchSettled||new Set(j).size!==j.length||j.some(H=>!A.includes(H)))throw new Error("Persisted V2 push batch settlement state does not match the frozen push plan.");const S=new Set(j);let L=0,_=0,T=null;const z=[],Y=async H=>{if(z.length===0)return;const M=z.splice(0);await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:M,errorCode:H})};try{for(const[H,M]of y.batches.entries()){const oe=M.map(se=>se.plain),K=M.map(se=>se.safe),Q=hg(oe),ee=A[H];if(S.has(ee)||D.has(ee)){L+=1,_+=oe.length;continue}z.length>0&&await t.retainTransferReceipts?.({workspaceId:e.workspaceId,receipts:z});const fe=async()=>{const se=Date.now(),ie=await t.pushWorkspaceChanges({workspaceId:e.workspaceId,idempotencyKey:ee,pushBoundary:b,changes:K,ownership:r,repairMode:e.repairMode===!0});return f+=Date.now()-se,ie};let _e=await fe(),$e=Sa(_e.data),Ye=_e.status===409&&$e.code==="SYNC_PUSH_IN_PROGRESS";if(!_e.ok&&!Ye&&(_e.status===403||_e.status===409)&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(_e=await fe(),$e=Sa(_e.data),Ye=_e.status===409&&$e.code==="SYNC_PUSH_IN_PROGRESS"),_e.transferReceipt&&z.push(_e.transferReceipt),!_e.ok){await Y("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED");const se=Sa(_e.data),ie=Array.from(new Set(oe.map(B=>B.op))),me=oe.filter(j1).length,$=me===oe.length?"content":me===0?"metadata":"mixed",V={success:!1,status:_e.status,error:typeof se.error=="string"?se.error:void 0,code:typeof se.code=="string"?se.code:void 0,batchProgress:{totalBatches:y.batches.length,completedBatches:L,completedChanges:_,failedBatchIndex:H,failedChangeCount:oe.length,failedOperations:ie,failureDomain:$},retryAfterMs:_e.retryAfterMs,transient:Ye||di(_e.status),requestMs:f,changeCount:l,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]};if(T||=V,$!=="content")return V;continue}const ye=Sa(_e.data);if(Array.isArray(ye.emittedEventIds))for(const se of ye.emittedEventIds.map(ie=>String(ie||"").trim()).filter(Boolean))k.add(se);const ge=fI(ye,Q);if(v.push(...ge),e.onAcceptedBatchSettled){if(!_e.transferReceipt)throw new Error("Accepted V2 push batch is missing its atomic settlement receipt.");await e.onAcceptedBatchSettled({operationIdentity:ee,settlementIdentityFingerprint:await hI(g1({operationIdentity:ee,changes:oe,appliedTaskUpserts:ge,excludedProjections:d})),appliedTaskUpserts:ge,transferReceipt:_e.transferReceipt,pushBoundary:b,excludedProjections:d});const se=z.indexOf(_e.transferReceipt);se>=0&&z.splice(se,1),S.add(ee)}else if(_e.transferReceipt&&ge.length===0){await t.acknowledgeNonApplyingTransferReceipts({workspaceId:e.workspaceId,receipts:[_e.transferReceipt]});const se=z.indexOf(_e.transferReceipt);se>=0&&z.splice(se,1),D.add(ee),await e.onNonApplyingBatchAcknowledged?.({operationIdentity:ee,acknowledgedOperationIdentities:A.filter(ie=>D.has(ie))})}L+=1,_+=oe.length}}catch(H){throw await Y("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED"),H}return T?{...T,batchProgress:{...T.batchProgress,completedBatches:L,completedChanges:_},requestMs:f}:{success:!0,syncedAt:new Date().toISOString(),requestMs:f,changeCount:l,batchProgress:{totalBatches:y.batches.length,completedBatches:L,completedChanges:_,failedBatchIndex:null,failedChangeCount:0,failedOperations:[],failureDomain:null},effectiveDeltaDiagnostics:c,effectiveV2ExcludedProjections:d,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:e.payload.pushedWatermarks,pushedTaskChangeKeys:e.payload.pushedTaskChangeKeys??new Map,emittedEventIds:Array.from(k),appliedTaskUpserts:v,pushBoundary:b,pushTransferReceipts:z}}async function D1(e){const t=e.remoteServices||Nw(e.resolveCloudAuthUrl);let r=[];const n=Q=>{Q.transferReceipt&&r.push(Q.transferReceipt)},s=async Q=>{if(r.length===0)return;const ee=r;await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:ee,errorCode:Q}),r=[]},i=e.localServices?.readContentManifest||oI,l=e.localServices?.applyV2Batch||lI,c=e.localServices?.listContentPullObligations||KC,d=e.localServices?.recordContentPullObligationFailures||qC,m=async(Q,ee)=>{const fe=await d(e.workspaceId,Q,ee);if(!fe.ok)throw new Error(String(fe.data?.error||"Failed to persist content-pull retry state."))};let f=e.cursor,g=!0,h=0,y=0,k=0,v=0;const A=new Set;let b=!1,w=!1,P=!1,E=!1,D=!1,j=!1,S=!1,L=!1;const _=new Set,T=new Set,z=new Set;let Y=null;const H={manifestEntries:0,bodiesRequested:0,bodiesTransferred:0,contentBytesTransferred:0,contentBytesAvoided:0,obligationsAttempted:0,obligationsResolved:0,obligationsRemaining:0},M=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;let oe=new Map;const K=new Set;try{{const Q=await c(e.workspaceId,100);if(!Q.ok)throw new Error(String(Q.data?.error||`Local content-pull obligation read failed (${Q.status}).`));const ee=Array.isArray(Q.data?.obligations)?Q.data.obligations:[];ee.forEach(_e=>{K.add(qc(_e))});const fe=ee.filter(_e=>b1(_e));if(H.obligationsAttempted=fe.length,fe.length>0){const _e=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:fe.map(({kind:$e,path:Ye})=>({kind:$e,path:Ye})),previousCursor:f});if(n(_e),_e.ok){const $e=_e.data||{},Ye=Array.isArray($e.changes)?$e.changes:[],ye=Array.isArray($e.contentMetadata)?$e.contentMetadata:[],ge=new Map(ye.map($=>[`${$.kind}:${$.path}`,$])),se=new Map(fe.map($=>[qc($),$]));if(ge.size!==ye.length||ye.some($=>!se.has(`${$.kind}:${$.path}`)))throw await m(fe.map(qc),"Content response contained duplicate or unexpected authoritative metadata."),new Error("Workspace content obligation response contained invalid authoritative metadata.");const ie=[],me=[];for(const $ of Ye){if($.op!=="document-upsert"&&$.op!=="asset-upsert")throw await m(fe.map(qc),`Content response contained invalid operation ${$.op}.`),new Error(`Workspace content obligation returned invalid operation: ${$.op}.`);const V=$.op==="document-upsert"?"document":"asset",B=`${V}:${$.path}`;if(!se.has(B))throw await m(fe.map(qc),`Content response contained unexpected body ${B}.`),new Error(`Workspace content obligation returned an unexpected body: ${B}.`);const N=ge.get(B);if(!N)throw await m([B],"Content response omitted authoritative metadata."),new Error(`Workspace content obligation omitted authoritative metadata: ${B}.`);if(ie.includes(B))throw await m([B],"Content response contained a duplicate body."),new Error(`Workspace content obligation returned a duplicate body: ${B}.`);if(typeof process<"u"&&Tl?.TASKFORCE_SYNC_KEY)try{await gg($,Tl.TASKFORCE_SYNC_KEY)}catch(q){throw await m([B],String(q?.message||"Content decryption failed.")),q}const be=await Og(V,$.op==="document-upsert"?$.content:$.contentBase64);if(be.sha256!==String(N.sha256||"").toLowerCase()||be.sizeBytes!==Number(N.sizeBytes)||String(N.updatedAt||"")<String(se.get(B)?.sourceWatermark||"")||String($.updatedAt||"")<String(se.get(B)?.sourceWatermark||""))throw await m([B],"Authoritative content response was stale or failed verification."),new Error(`Workspace content obligation verification failed: ${B}.`);ie.push(B);const Ae=se.get(B);me.push({kind:V,path:$.path,resolution:"exact-version",sourceWatermark:Ae.sourceWatermark,metadataFingerprint:Ae.metadataFingerprint})}if(Ye.length>0){const $=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:f,receipts:r}):void 0;if(r.length>0&&!$)throw new Error("Content-obligation receipts did not produce an apply completion group.");let V;try{V=await l(e.workspaceId,Ye,{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,contentPullResolutionClaims:me,...$?{completionGroup:$}:{}})}catch(N){throw await m(ie,String(N?.message||"Content obligation apply failed.")),N}if(!V.ok||Sa(V.data).success===!1)throw await m(ie,String(Sa(V.data).error||"Workspace content obligation apply failed.")),new Error(String(Sa(V.data).error||"Workspace content obligation apply failed."));r=[],H.obligationsResolved=ie.length;const B=fe.map(qc).filter(N=>!ie.includes(N));B.length>0&&await m(B,"Authoritative content body remains unavailable.")}else{if(r.length>0){const $=t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:f,receipts:r});if(!$)throw new Error("Unavailable content receipts did not produce an apply completion group.");const V=await l(e.workspaceId,[],{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,completionGroup:$});if(!V.ok||Sa(V.data).success===!1)throw new Error(String(Sa(V.data).error||"Unavailable content receipt settlement failed."));r=[]}await m(fe.map(qc),"Authoritative content body remains unavailable.")}}else await s("WORKSPACE_SYNC_CONTENT_OBLIGATION_RETRY"),await m(fe.map(qc),String(Sa(_e.data).error||`Content pull failed (${_e.status}).`))}H.obligationsRemaining=Math.max(0,ee.length-H.obligationsResolved)}if(e.contentMode==="manifest"){const Q=await i(e.workspaceId);if(!Q.ok)throw new Error(`Local workspace content manifest failed (${Q.status||0}).`);const ee=Array.isArray(Q.data?.entries)?Q.data.entries:[];oe=new Map(ee.map(fe=>[`${fe.kind}:${fe.path}`,fe]))}for(;g&&h<M;){const Q=async()=>{const B=Date.now(),N=await t.pullWorkspaceChanges({workspaceId:e.workspaceId,cursor:f,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0,contentMode:e.contentMode,excludeInitiatives:e.excludeInitiatives,excludedProjections:e.excludedProjections});return k+=Date.now()-B,N};let ee=await Q();if(n(ee),!ee.ok&&ee.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(await s("WORKSPACE_SYNC_V2_PULL_RETRY"),ee=await Q(),n(ee)),!ee.ok){await s("WORKSPACE_SYNC_V2_PULL_REJECTED");const B=Sa(ee.data);return{success:!1,kind:"pull_http",status:ee.status,errorCode:typeof B.code=="string"?B.code:void 0,error:typeof B.error=="string"?B.error:void 0,retryAfterMs:ee.retryAfterMs,transient:di(ee.status),cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),serverDiagnostics:null}}const fe=ee.data||{};if(!n1(fe.excludedProjections,e.excludedProjections))return await s("SYNC_V2_PROJECTION_EXCLUSIONS_MISMATCH"),{success:!1,kind:"pull_http",status:502,errorCode:"SYNC_V2_PROJECTION_EXCLUSIONS_MISMATCH",error:"Cloud pull did not attest the requested v2 projection exclusions.",transient:!1,cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),serverDiagnostics:null};let _e=Array.isArray(fe?.changes)?fe.changes:[];const $e=new Map,Ye=[];if(e.contentMode==="manifest"){const B=[],N=[];for(const Ae of _e){if(Ae.op!=="document-manifest"&&Ae.op!=="asset-manifest"){N.push(Ae);continue}const q=Ae.manifest;if(H.manifestEntries+=1,!q.existsLocally){Ye.push({manifest:q,sourceWatermark:q.updatedAt}),K.add(`${q.kind}:${q.path}`);continue}const Z=`${q.kind}:${q.path}`,G=k1(q,oe.get(Z));G.shouldFetch?G.reasons.every(ne=>ne==="metadata-mismatch")?(N.push(Ae),H.contentBytesAvoided+=Math.max(0,q.sizeBytes)):(B.push({kind:q.kind,path:q.path}),$e.set(Z,q),H.bodiesRequested+=1):H.contentBytesAvoided+=Math.max(0,q.sizeBytes)}const be=[...B];for(;be.length>0;){let Ae=be.splice(0,100);for(;Ae.length>0;){const q=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:Ae,previousCursor:f});if(!q.ok)throw n(q),new Error(`Workspace content pull failed (${q.status||0}).`);n(q);const Z=q.data||{},G=Array.isArray(Z.changes)?Z.changes:[],ne=Array.isArray(Z.missing)?Z.missing:[];if(ne.length>0){const Le="path"in ne[0]?ne[0].path:ne[0].assetId;throw new Error(`Workspace content changed or disappeared during reconciliation: ${ne[0].kind}:${Le}`)}N.push(...G);const Te=Array.isArray(Z.remaining)?Z.remaining:[];if(G.length===0&&Te.length>=Ae.length)throw new Error("Workspace content pull made no progress.");Ae=Te}}_e=N}else{const B=[];for(const N of _e){if(N.op!=="document-manifest"&&N.op!=="asset-manifest"){B.push(N);continue}Ye.push({manifest:N.manifest,sourceWatermark:N.manifest.updatedAt}),K.add(`${N.manifest.kind}:${N.manifest.path}`)}_e=B}const ye=fe?.diagnostics&&typeof fe.diagnostics=="object"?fe.diagnostics:null;Y=ye;const ge=Array.isArray(fe?.workspaceMembers),se=ge?fe.workspaceMembers:void 0;for(const B of _e){if(B.op==="upsert"){B?.archived===!0||B?.task?.isArchived===!0?w=!0:b=!0;continue}if(B.op==="annotated-attachment-session-upsert"){const be=String(B?.session?.id||"").trim();be&&z.add(be);continue}if(B.op==="task-event-upsert"||B.op==="entity-event-upsert"){P=!0;continue}if(B.op==="initiative-upsert"||B.op==="workstream-upsert"){E=!0;continue}if(B.op==="taskforce-agent-upsert"){D=!0;continue}if(B.op==="agent-role-upsert"){j=!0;continue}if(B.op==="taskforce-agent-skill-upsert"){S=!0;continue}if(B.op==="agent-conversation-upsert"){L=!0;continue}if(B.op==="document-upsert"){if(typeof B.content=="string"&&typeof process<"u"&&Tl?.TASKFORCE_SYNC_KEY)try{await gg(B,Tl.TASKFORCE_SYNC_KEY)}catch{const be=String(B.path||"").trim();be&&_.add(be)}continue}if(B.op==="asset-upsert"){if(typeof B.contentBase64=="string"&&typeof process<"u"&&Tl?.TASKFORCE_SYNC_KEY)try{await gg(B,Tl.TASKFORCE_SYNC_KEY)}catch{const be=String(B.path||"").trim();be&&_.add(be)}continue}if(B.op!=="delete")continue;const N=String(B.taskId||"").trim();N&&A.add(N)}if(e.contentMode==="manifest"&&$e.size>0){const B=new Set;for(const N of _e){if(N.op!=="document-upsert"&&N.op!=="asset-upsert")continue;const be=N.op==="document-upsert"?"document":"asset",Ae=$e.get(`${be}:${N.path}`);if(!Ae)continue;const q=await Og(be,N.op==="document-upsert"?N.content:N.contentBase64);if(Ae.sha256&&q.sha256!==Ae.sha256.toLowerCase()||q.sizeBytes!==Ae.sizeBytes)throw new Error(`Workspace content verification failed for ${be}:${N.path}.`);B.add(`${be}:${N.path}`),H.bodiesTransferred+=1,H.contentBytesTransferred+=q.sizeBytes}if(B.size!==$e.size)throw new Error("Workspace content pull did not return every requested body.")}e.onPagePulled&&e.onPagePulled();const ie=fe&&"nextCursor"in fe&&(fe.nextCursor===null||typeof fe.nextCursor=="string")?fe.nextCursor:f,me=_e.flatMap(B=>B.op!=="document-delete"&&B.op!=="asset-delete"?[]:B.deletedAt?[{kind:B.op==="document-delete"?"document":"asset",path:B.path,resolution:"at-or-before-watermark",sourceWatermark:B.deletedAt}]:[]),$=e.bootstrap&&!fe?.hasMore,V=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:ie,receipts:r}):void 0;if(r.length>0&&!V)throw new Error("V2 sync transfer receipts did not produce an apply completion group.");if(_e.length>0||Ye.length>0||ge||V||$){const B=Date.now(),N=await l(e.workspaceId,_e,{...ge?{workspaceMembers:se}:{},repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,...$?{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(z)}}:{},...V?{completionGroup:V}:{},...Ye.length>0?{contentPullObligations:Ye}:{},...me.length>0?{contentPullResolutionClaims:me}:{}}),be=N.failures;if(!N.ok){v+=Date.now()-B,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED");const q=Sa(N.data);if(be.some(ne=>ne.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:be,cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),serverDiagnostics:ye};const G=be.some(ne=>{if(ne.endsWith(":network"))return!0;const Te=ne.split(":").pop()||"",Le=Number.parseInt(Te,10);return Number.isFinite(Le)&&(Le===429||Le>=500)});return{success:!1,kind:"apply_all_candidates",status:N.status||void 0,transient:G,error:String(q.error||"").trim()||void 0,failures:be,hasTransientApplyFailure:G,cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:Y}}const Ae=Sa(N.data);if(Ae.success===!1)return v+=Date.now()-B,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED"),{success:!1,kind:"apply_payload",transient:!1,error:String(Ae.error||"Workspace sync apply failed."),cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:Y};if(v+=Date.now()-B,y+=_e.length,Array.isArray(Ae.emittedEventIds))for(const q of Ae.emittedEventIds)T.add(String(q));_e.some(q=>q.op==="ai-profile-upsert")&&e.onAiProfilesApplied?.(),e.onChangesApplied&&e.onChangesApplied(_e.length),me.forEach(q=>{K.delete(qc(q))})}r=[],fe&&"nextCursor"in fe&&(fe.nextCursor===null||typeof fe.nextCursor=="string")&&(f=fe.nextCursor),g=!!fe?.hasMore,h+=1}return{success:!0,hasMore:g,syncedAt:new Date().toISOString(),cursor:f||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledAgentRoleUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:e.contentMode==="manifest"?{...Y||{},contentReconciliation:H}:Y}}catch(Q){let ee=Q;try{await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED")}catch(fe){ee=fe}return{success:!1,kind:"exception",status:0,transient:!0,error:String(ee?.message||ee||"Workspace sync pull failed unexpectedly."),cursor:f||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:P,pulledPlanningUpserts:E,pulledTaskforceAgentUpserts:D,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:e.contentMode==="manifest"?{...Y||{},contentReconciliation:H}:Y}}}async function M1(e){const t=await c1(e.resolveCloudAuthUrl);if(!t.ok){const h=Number(t.status||0);return{success:!1,error:`Sync pull failed (${t.status})`,statusCode:t.status,retryAfterMs:t.retryAfterMs,transient:di(h)}}const r=Sa(t.data),n=r.settings&&typeof r.settings=="object"?r.settings:{},s=typeof r.updatedAt=="string"&&r.updatedAt.trim().length>0?r.updatedAt.trim():null,i=e.getLocalUpdatedAt(e.userId),l=i?Date.parse(i):NaN,c=s?Date.parse(s):NaN;if(!i&&e.preferCloudOnFirstSync&&Number.isFinite(c))return await e.applyRemoteSettings(n),{success:!0,mode:"pulled",updatedAt:s};if(Number.isFinite(c)&&(!Number.isFinite(l)||c>l))return await e.applyRemoteSettings(n),{success:!0,mode:"pulled",updatedAt:s};const d=i||new Date().toISOString(),m=await l1(e.resolveCloudAuthUrl,{settings:e.buildLocalSettings(),updatedAt:d});if(!m.ok){const h=Number(m.status||0);return{success:!1,error:`Sync push failed (${m.status})`,statusCode:m.status,retryAfterMs:m.retryAfterMs,transient:di(h)}}const f=Sa(m.data);return{success:!0,mode:"pushed",updatedAt:typeof f.updatedAt=="string"&&f.updatedAt.trim().length>0?f.updatedAt.trim():d}}function L1(e){const t=Math.max(1,Math.floor(Number(e)||1)),r=Math.min(12e4,1500*2**Math.max(0,t-1)),n=Math.floor(r*(.15*Math.random()));return r+n}function O1(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t||t.startsWith("/"))return null;const r=t.split("/").filter(Boolean);return r.length===0||r.some(n=>n==="."||n==="..")?null:r.join("/")}function B1(e){const t=O1(e);return!t||!["users/","workspaces/","system/","tmp/","quarantine/"].some(n=>t.startsWith(n))?null:t}function W1(e){return String(e||"").trim()}function $1(e,t){return W1(e).replace(/[^a-zA-Z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||t}function F1(e,t){const r=$1(t,"default"),n=String(e||"").replace(/\\/g,"/");return(n.startsWith(`workspaces/${r}/assets/ai-profiles/`)||n.startsWith(`workspaces/${r}/assets/images/ai-profiles/`))&&n.includes("/avatar/")}function U1(e,t){const r=String(e||"").trim();if(!r.startsWith("/api/taskforce/context/"))return null;const n=r.slice(23).split(/[?#]/,1)[0]||"";if(!n)return null;try{return t(decodeURIComponent(n))}catch{return null}}function z1(e,t){return F1(e,t)}function H1(e){const t=e.split("/").pop()||"",r=t.lastIndexOf("."),n=r>=0?t.slice(r).toLowerCase():"";return n===".png"?"image/png":n===".jpg"||n===".jpeg"?"image/jpeg":n===".webp"?"image/webp":n===".gif"?"image/gif":"application/octet-stream"}function V1(e){return String(e||"").match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i)?.[2]}function G1(e,t,r){const n=new Map;for(const s of Array.isArray(e)?e:[]){const i=String(s?.updatedAt||s?.createdAt||"").trim();for(const l of[s?.avatarUrl,s?.avatarSourceUrl]){const c=U1(l,r);!c||!z1(c,t)||n.has(c)||n.set(c,{updatedAt:i,assetId:V1(c),originalFilename:c.split("/").pop()||c,mimeType:H1(c)})}}return n}const K1=new Set(["assetId","path","caption","displayName","originalFilename","referenceNumber","referenceLabel","linkRole"]);[...K1];function Tv(e,t){return e<t?-1:e>t?1:0}function li(e){return typeof e!="string"?void 0:e.trim()||void 0}function ap(e){if(e!==void 0){if(!Array.isArray(e))throw new Error("Planning comments must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Planning comment ${r} must be an object.`);const n=t,s=li(n.id),i=li(n.author),l=Date.parse(String(n.timestamp||"").trim());if(!s||!i||!Number.isFinite(l))throw new Error(`Planning comment ${r} has invalid identity, author, or timestamp.`);const c=li(n.submittedAuthor);return{id:s,author:i,...c?{submittedAuthor:c}:{},text:String(n.text||""),timestamp:new Date(l).toISOString()}}).sort((t,r)=>Tv(t.timestamp,r.timestamp)||Tv(t.id,r.id))}}function sp(e){if(e!==void 0){if(!Array.isArray(e))throw new Error("Planning attachments must be an array.");return e.map((t,r)=>{if(typeof t=="string"){const h=t.trim();if(!h)throw new Error(`Planning attachment ${r} path is required.`);return h}if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Planning attachment ${r} must be a path or object.`);const n=t,s=li(n.path);if(!s)throw new Error(`Planning attachment ${r} path is required.`);const i=li(n.fsPath),l=li(n.timestamp),c=n.assetId===null?null:li(n.assetId),d=n.referenceNumber===null?null:Number.isFinite(Number(n.referenceNumber))?Math.max(1,Math.floor(Number(n.referenceNumber))):void 0,m=n.referenceLabel===null?null:li(n.referenceLabel),f=n.taskId===null?null:li(n.taskId),g=n.linkRole==="attachment"||n.linkRole==="image"||n.linkRole==="reference"?n.linkRole:void 0;return{path:s,...i?{fsPath:i}:{},...typeof n.caption=="string"?{caption:n.caption}:{},...typeof n.displayName=="string"?{displayName:n.displayName}:{},...typeof n.originalFilename=="string"?{originalFilename:n.originalFilename}:{},...l?{timestamp:l}:{},...c!==void 0?{assetId:c}:{},...d!==void 0?{referenceNumber:d}:{},...m!==void 0?{referenceLabel:m}:{},...f!==void 0?{taskId:f}:{},...g?{linkRole:g}:{}}})}}function q1(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("Planning attachments must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Durable planning attachment ${r} must be a canonical asset link.`);const n=t,s=li(n.assetId),i=li(n.path);if(!s||!i)throw new Error(`Durable planning attachment ${r} requires assetId and path.`);const l=n.referenceNumber===null?null:Number.isInteger(n.referenceNumber)&&Number(n.referenceNumber)>0?Number(n.referenceNumber):void 0,c=n.referenceLabel===null?null:li(n.referenceLabel),d=n.linkRole==="attachment"||n.linkRole==="image"||n.linkRole==="reference"?n.linkRole:void 0;return{assetId:s,path:i,...typeof n.caption=="string"?{caption:n.caption}:{},...typeof n.displayName=="string"?{displayName:n.displayName}:{},...typeof n.originalFilename=="string"?{originalFilename:n.originalFilename}:{},...l!==void 0?{referenceNumber:l}:{},...c!==void 0?{referenceLabel:c}:{},...d?{linkRole:d}:{}}}).sort((t,r)=>Tv(`${t.assetId}\0${t.linkRole||""}\0${t.path}\0${JSON.stringify(t)}`,`${r.assetId}\0${r.linkRole||""}\0${r.path}\0${JSON.stringify(r)}`))}function Y1(e){return Array.isArray(e)?e.slice(0,24).flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,n=String(r.name||"").trim();if(!n)return[];const s=String(r.resultText||"").trim().slice(0,4e3);return[{name:n.slice(0,120),...r.arguments&&typeof r.arguments=="object"&&!Array.isArray(r.arguments)?{arguments:r.arguments}:{},ok:r.ok!==!1,...s?{resultText:s}:{}}]}):[]}function Z1(e){return Array.isArray(e)?e.flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,n=r.role==="assistant"?"assistant":r.role==="user"?"user":null,s=String(r.content||"").trim();if(!n||!s)return[];const i={role:n,content:s};for(const c of["agentId","agentName","providerKey","providerLabel","modelKey","modelLabel","modelId"]){const d=String(r[c]||"").trim();d&&(i[c]=d)}const l=Y1(r.toolActivity);return n==="assistant"&&l.length>0&&(i.toolActivity=l),[i]}):[]}const J1=["chat_app","ide","cli","coding_tool","agent"],X1={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},Q1={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function eP(e){return typeof e=="string"&&J1.includes(e)}function yI(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":eP(t)?t:null}function qre(e){return X1[e]}function Yre(e){return e??"unclassified"}function Zre(e){return Q1[e]}const tP=["cloud_metered","local_unmetered"],rP={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function nP(e){return typeof e=="string"&&tP.includes(e)}function kI(e){if(typeof e!="string")return null;const t=e.trim();return nP(t)?t:null}function Jre(e){return rP[e]}function Pl(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function qn(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function op(e){return Pl(e)}function el(e){return qn(e)}function bs(e){return qn(e)}function cf(e){const t=qn(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function Wk(e){return Pl(e)}function wm(e){if(e!==void 0)return qn(e)}function aP(e){return typeof e=="boolean"?e:void 0}function Lh(e,t){if(e===void 0)return;if(e===null||e==="")return t?.nullable?null:void 0;const r=typeof e=="number"?e:Number(e);if(!Number.isFinite(r))return t?.nullable?null:void 0;const n=Math.floor(r);return Number.isFinite(t?.min)&&n<Number(t?.min)?t?.nullable?null:void 0:n}function sP(e){if(!e||typeof e!="object"||Array.isArray(e))return;const r=Object.entries(e).reduce((n,[s,i])=>s==="approach"?n:Array.isArray(i)?(n[s]=i.map(l=>String(l??"")),n):(i==null||(n[s]=String(i)),n),{});return Object.keys(r).length>0?r:{}}function oP(e){if(Array.isArray(e))return e.map(t=>{const r=t;return{id:r.id,author:r.author,...r.submittedAuthor===void 0?{}:{submittedAuthor:r.submittedAuthor},text:r.text,timestamp:r.timestamp}})}function iP(e){return Array.isArray(e)?e:void 0}function cP(e){return Array.isArray(e)?e:void 0}function vI(e){const t=e&&typeof e=="object"?e:{},r=Object.prototype.hasOwnProperty.call(t,"cardCoverAssetId");return{id:String(t.id||"").trim(),title:String(t.title||"").trim(),description:t.description===void 0?void 0:t.description||null,status:String(t.status||"task").trim()||"task",priority:Lh(t.priority,{min:1})??void 0,complexity:Lh(t.complexity,{min:1,nullable:!0}),type:String(t.type||"").trim(),category:String(t.category||"").trim(),canceledReason:t.canceledReason===void 0?void 0:t.canceledReason||null,createdAt:String(t.createdAt||"").trim(),updatedAt:Wk(t.updatedAt),completedAt:t.completedAt===void 0?void 0:t.completedAt||null,isArchived:aP(t.isArchived),taxonomies:sP(t.taxonomies),createdBy:Wk(t.createdBy),assignee:Wk(t.assignee),scheduledDate:wm(t.scheduledDate),dueDate:wm(t.dueDate),scheduledWeekKey:wm(t.scheduledWeekKey),orderInDay:Lh(t.orderInDay,{min:0,nullable:!0}),workstreamId:wm(t.workstreamId),referenceNumber:Lh(t.referenceNumber,{min:1,nullable:!0}),comments:oP(t.comments),attachments:iP(t.attachments),...r?{cardCoverAssetId:wm(t.cardCoverAssetId)}:{},checklistItems:cP(t.checklistItems)}}function lP(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=Object.entries(e).filter(([n])=>String(n||"").trim().length>0).sort(([n],[s])=>n.localeCompare(s)),r={};for(const[n,s]of t){if(Array.isArray(s)){r[n]=s.map(i=>String(i??"")).sort((i,l)=>i.localeCompare(l));continue}s!=null&&(r[n]=String(s))}return r}function dP(e){return Array.isArray(e)?e.map(t=>{const r=t&&typeof t=="object"?t:{};return{id:String(r.id||"").trim(),title:String(r.title||"").trim(),isCompleted:!!r.isCompleted,order:r.order===void 0||r.order===null?"":String(r.order)}}).sort((t,r)=>{const n=Number.parseInt(t.order,10),s=Number.parseInt(r.order,10);return Number.isFinite(n)&&Number.isFinite(s)&&n!==s?n-s:t.title!==r.title?t.title.localeCompare(r.title):t.id.localeCompare(r.id)}):[]}function uP(e){return Array.isArray(e)?e.map(t=>{const r=t&&typeof t=="object"?t:null;return{id:String(r?.id||"").trim(),author:String(r?.author||"").trim(),submittedAuthor:Pl(r?.submittedAuthor)||"",text:String(r?.text||""),timestamp:bs(r?.timestamp)||"",actor:r?.actor??null}}).sort((t,r)=>t.timestamp!==r.timestamp?t.timestamp.localeCompare(r.timestamp):t.id!==r.id?t.id.localeCompare(r.id):t.author!==r.author?t.author.localeCompare(r.author):t.text.localeCompare(r.text)):[]}function fP(e){return Array.isArray(e)?e.map(t=>{if(typeof t=="string")return{path:t.trim(),fsPath:"",caption:"",displayName:"",originalFilename:"",assetId:"",referenceNumber:"",taskId:"",timestamp:""};const r=t&&typeof t=="object"?t:null;return{path:String(r?.path||"").trim(),fsPath:Pl(r?.fsPath)||"",caption:Pl(r?.caption)||"",displayName:Pl(r?.displayName)||"",originalFilename:Pl(r?.originalFilename)||"",assetId:op(r?.assetId)||"",referenceNumber:r?.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),taskId:el(r?.taskId)||"",timestamp:bs(r?.timestamp)||""}}).sort((t,r)=>t.path!==r.path?t.path.localeCompare(r.path):t.assetId!==r.assetId?t.assetId.localeCompare(r.assetId):t.timestamp!==r.timestamp?t.timestamp.localeCompare(r.timestamp):JSON.stringify(t).localeCompare(JSON.stringify(r))):[]}function mP(e,t){const r=vI(e);return JSON.stringify({id:r.id,title:r.title,description:qn(r.description)||"",category:r.category,type:r.type,priority:r.priority===void 0||r.priority===null?"":String(r.priority),complexity:r.complexity===void 0||r.complexity===null?"":String(r.complexity),status:r.status,canceledReason:qn(r.canceledReason)||"",createdAt:r.createdAt,completedAt:bs(r.completedAt)||"",taxonomies:lP(r.taxonomies),createdBy:op(r.createdBy)||"",assignee:op(r.assignee)||"",scheduledDate:qn(r.scheduledDate)||"",dueDate:qn(r.dueDate)||"",scheduledWeekKey:qn(r.scheduledWeekKey)||"",orderInDay:r.orderInDay===void 0||r.orderInDay===null?"":String(r.orderInDay),workstreamId:el(r.workstreamId)||"",referenceNumber:r.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),comments:uP(r.comments),attachments:fP(r.attachments),checklistItems:dP(r.checklistItems),isArchived:t?"1":"0"})}function pP(...e){return e.reduce((t,r)=>{const n=bs(r)||"";return t?n&&n>t?n:t:n},"")}function hP(e){const t=e||{};return pP(t.createdAt,t.updatedAt,t.lastActiveAt,t.colorUpdatedAt,t.archivedAt,t.rosterStateUpdatedAt)}function wI(e){const t=e||{};return JSON.stringify({id:String(t.id||"").trim(),workspaceId:String(t.workspaceId||"").trim(),profileToken:String(t.profileToken||"").trim(),name:String(t.name||"").trim(),username:String(t.username||"").trim(),icon:String(t.icon||"Bot").trim()||"Bot",color:String(t.color||"#8b5cf6").trim()||"#8b5cf6",colorSource:qn(t.colorSource)||"",colorUpdatedAt:bs(t.colorUpdatedAt)||"",avatarUrl:cf(t.avatarUrl)||"",avatarSourceUrl:cf(t.avatarSourceUrl)||"",avatarRevision:Number.isFinite(Number(t.avatarRevision))?Math.max(0,Math.floor(Number(t.avatarRevision))):0,avatarUpdatedAt:bs(t.avatarUpdatedAt)||"",description:qn(t.description)||"",role:qn(t.role)||"",provider:qn(t.provider)||"",model:qn(t.model)||"",surfaceType:qn(t.surfaceType)||"",seatScope:qn(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:bs(t.archivedAt)||"",archivedBy:op(t.archivedBy)||"",archivedReason:qn(t.archivedReason)||"",mergedIntoProfileId:op(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:bs(t.rosterStateUpdatedAt)||"",createdAt:bs(t.createdAt)||"",updatedAt:bs(t.updatedAt)||"",lastActiveAt:bs(t.lastActiveAt)||""})}function gP(e){return JSON.stringify(e.map(t=>wI(t)).sort())}function Mw(e){return pn(e||null)}function bI(e){return e.taxonomyState&&typeof e.taxonomyState=="object"?pn({taxonomyState:e.taxonomyState}):Array.isArray(e.taxonomies)?pn({taxonomies:e.taxonomies}):""}const ci={kind:"task",getId:e=>String(e?.id||"").trim(),getWatermark:e=>String(e?.updatedAt||e?.createdAt||"").trim(),getChangeKey:e=>mP(e,!!e?.isArchived)},Vm={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>hP(e),getChangeKey:e=>wI(e)};function mS(e,t,r){const n=e.getId(t);if(!n)return!1;const s=e.getChangeKey(t),i=r?.watermarks;if(!i||i.size===0||!i.has(n))return!0;const c=r?.changeKeys?.get(n);return typeof c=="string"?c!==s:(i.get(n)||"")!==s}function pS(e){return vI(e)}function hS(e,t){const r=e??t;return new Set(Array.from(r).map(n=>String(n||"").trim()).filter(n=>n.length>0))}function yP(e){return[...e].sort((t,r)=>{const n=String(t?.createdAt||"").trim(),s=String(r?.createdAt||"").trim(),i=n.localeCompare(s);return i!==0?i:String(t?.id||"").trim().localeCompare(String(r?.id||"").trim())})}function gS(e){return[...e].sort((t,r)=>{const n=String(t?.id||"").trim(),s=String(r?.id||"").trim();return n.localeCompare(s)})}function kP(e){const t=new Date().toISOString(),r=new Set(Array.from(e.pendingDeletedTaskIds).map(u=>String(u||"").trim()).filter(u=>u.length>0)),n=new Map(Array.from(e.pendingDeletedTaskWatermarks||new Map).map(([u,St])=>[String(u||"").trim(),String(St||"").trim()]).filter(([u,St])=>u.length>0&&Number.isFinite(Date.parse(St)))),s=new Map((e.deletedTasks||[]).map(u=>[String(u.taskId||"").trim(),u])),i=u=>{const St=s.get(u);return{op:"delete",taskId:u,deletedAt:St?.deletedAt||n.get(u)||t,...St?{actor:St.actor,actorType:St.actorType,source:St.source,details:St.details}:{}}},l=e.lastPushedWatermarks,c=e.lastPushedTaskChangeKeys,d=(u,St)=>(u?.referenceNumber===void 0||u?.referenceNumber===null)&&Number.isFinite(Number(u?.localReferenceNumber))?!0:mS(ci,{...u,isArchived:St},{watermarks:l,changeKeys:c}),m=gS(e.tasks||[]),f=gS(e.archivedTasks||[]),g=new Map,h=new Map,y=new Map,k=new Map,v=m.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!1)).map(u=>{const St=String(u?.id||"").trim(),gt=ci.getWatermark(u),Fr=ci.getChangeKey({...u,isArchived:!1});return St&&(y.set(St,gt),k.set(St,Fr)),{op:"upsert",archived:!1,task:pS(u)}}),A=f.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!0)).map(u=>{const St=String(u?.id||"").trim(),gt=ci.getWatermark(u),Fr=ci.getChangeKey({...u,isArchived:!0});return St&&(y.set(St,gt),k.set(St,Fr)),{op:"upsert",archived:!0,task:pS(u)}}),b=new Set;for(const u of e.tasks||[]){const St=String(u?.id||"").trim();St&&(b.add(St),g.set(St,ci.getWatermark(u)),h.set(St,ci.getChangeKey({...u,isArchived:!1})))}for(const u of e.archivedTasks||[]){const St=String(u?.id||"").trim();St&&(b.add(St),g.set(St,ci.getWatermark(u)),h.set(St,ci.getChangeKey({...u,isArchived:!0})))}const w=Array.from(e.lastPushedTaskIds).filter(u=>!b.has(u)).map(u=>i(u)),P=Array.from(r).map(u=>i(u)),E=new Set([...w.map(u=>String(u.taskId)),...P.map(u=>String(u.taskId))]),D=e.lastPushedTaskRelationshipChangeKeys,j=new Map,S=(Array.isArray(e.taskRelationships)?e.taskRelationships:[]).filter(u=>u?.id&&Number.isFinite(Date.parse(String(u.updatedAt||"")))).map(u=>{const St=String(u.id||"").trim(),gt=Mw(u);return j.set(St,gt),{op:u.deletedAt?"task-relationship-delete":"task-relationship-upsert",relationship:u,relationshipId:St,changeKey:gt}}).filter(u=>D?.get(u.relationshipId)!==u.changeKey).map(({relationshipId:u,changeKey:St,...gt})=>gt),L=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),_=new Map((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),T=e.lastPushedInitiativeWatermarks,z=!T||T.size===0,Y=(Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>({op:"initiative-upsert",initiative:{id:String(u?.id||"").trim(),referenceNumber:Number.isFinite(Number(u?.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,referenceLabel:typeof u?.referenceLabel=="string"&&u.referenceLabel.trim().length>0?u.referenceLabel.trim():void 0,title:String(u?.title||"").trim(),description:typeof u?.description=="string"?u.description:null,ownerId:typeof u?.ownerId=="string"&&u.ownerId.trim().length>0?u.ownerId.trim():null,comments:ap(u?.comments),createdAt:String(u?.createdAt||"").trim(),updatedAt:String(u?.updatedAt||u?.createdAt||"").trim(),order:Number.isFinite(Number(u?.order))?Math.floor(Number(u.order)):null,attachments:sp(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.initiative.id.length>0).filter(u=>z?!0:T.get(u.initiative.id)!==u.initiative.updatedAt),H=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),M=new Map((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),oe=e.lastPushedWorkstreamWatermarks,K=!oe||oe.size===0,Q=(Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>({op:"workstream-upsert",workstream:{id:String(u?.id||"").trim(),referenceNumber:Number.isFinite(Number(u?.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,referenceLabel:typeof u?.referenceLabel=="string"&&u.referenceLabel.trim().length>0?u.referenceLabel.trim():void 0,initiativeId:typeof u?.initiativeId=="string"&&u.initiativeId.trim().length>0?u.initiativeId.trim():null,title:String(u?.title||"").trim(),description:typeof u?.description=="string"?u.description:null,ownerId:typeof u?.ownerId=="string"&&u.ownerId.trim().length>0?u.ownerId.trim():null,comments:ap(u?.comments),createdAt:String(u?.createdAt||"").trim(),updatedAt:String(u?.updatedAt||u?.createdAt||"").trim(),order:Number.isFinite(Number(u?.order))?Math.floor(Number(u.order)):null,attachments:sp(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.workstream.id.length>0).filter(u=>K?!0:oe.get(u.workstream.id)!==u.workstream.updatedAt),ee=e.lastPushedPlanningIdentityWatermarks,fe=new Map,_e=[...(Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>({entityType:"initiative",entityId:String(u?.id||"").trim(),icon:u?.icon??null,color:u?.color??null,updatedAt:String(u?.identityUpdatedAt||"").trim()})),...(Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>({entityType:"workstream",entityId:String(u?.id||"").trim(),icon:u?.icon??null,color:u?.color??null,updatedAt:String(u?.identityUpdatedAt||"").trim()}))].filter(u=>u.entityId.length>0&&Number.isFinite(Date.parse(u.updatedAt))).map(u=>{const St=`${u.entityType}:${u.entityId}`;return fe.set(St,u.updatedAt),{op:"planning-identity-upsert",identity:u,identityKey:St}}).filter(u=>ee?.get(u.identityKey)!==u.identity.updatedAt).map(({identityKey:u,...St})=>St),$e=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ye=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),Vm.getWatermark(u)]).filter(([u])=>u.length>0)),ye=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),Vm.getChangeKey(u)]).filter(([u])=>u.length>0)),ge=e.lastPushedAiProfileWatermarks,se=e.lastPushedAiProfileChangeKeys,ie=!ge||ge.size===0,me=(Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>({op:"ai-profile-upsert",profile:{id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),profileToken:String(u.profileToken||"").trim(),name:String(u.name||"").trim(),username:String(u.username||"").trim(),icon:String(u.icon||"Bot").trim()||"Bot",color:String(u.color||"#8b5cf6").trim()||"#8b5cf6",colorSource:typeof u.colorSource=="string"?u.colorSource:null,colorUpdatedAt:typeof u.colorUpdatedAt=="string"?u.colorUpdatedAt:null,avatarUrl:cf(u.avatarUrl),avatarSourceUrl:cf(u.avatarSourceUrl),avatarRevision:Number.isFinite(Number(u.avatarRevision))?Math.max(0,Math.floor(Number(u.avatarRevision))):0,avatarUpdatedAt:typeof u.avatarUpdatedAt=="string"&&u.avatarUpdatedAt.trim().length>0?u.avatarUpdatedAt.trim():null,description:typeof u.description=="string"&&u.description.trim()||null,role:typeof u.role=="string"&&u.role.trim()||null,provider:typeof u.provider=="string"&&u.provider.trim()||null,model:typeof u.model=="string"&&u.model.trim()||null,surfaceType:yI(u.surfaceType),seatScope:kI(u.seatScope),providerMetadata:u.providerMetadata&&typeof u.providerMetadata=="object"&&!Array.isArray(u.providerMetadata)?u.providerMetadata:null,archivedAt:typeof u.archivedAt=="string"&&u.archivedAt.trim().length>0?u.archivedAt.trim():null,archivedBy:typeof u.archivedBy=="string"&&u.archivedBy.trim().length>0?u.archivedBy.trim():null,archivedReason:typeof u.archivedReason=="string"&&u.archivedReason.trim()||null,mergedIntoProfileId:typeof u.mergedIntoProfileId=="string"&&u.mergedIntoProfileId.trim().length>0?u.mergedIntoProfileId.trim():null,rosterStateUpdatedAt:typeof u.rosterStateUpdatedAt=="string"&&u.rosterStateUpdatedAt.trim().length>0?u.rosterStateUpdatedAt.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),lastActiveAt:typeof u.lastActiveAt=="string"&&u.lastActiveAt.trim().length>0?u.lastActiveAt.trim():null}})).filter(u=>u.profile.id.length>0&&u.profile.workspaceId.length>0).filter(u=>ie?!0:mS(Vm,u.profile,{watermarks:ge,changeKeys:se})),$=hS(e.currentDocumentPaths,(Array.isArray(e.documents)?e.documents:[]).map(u=>String(u?.path||"").trim())),B=e.documentsSnapshotComplete!==!1?new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!$.has(u))):new Set,N=new Map((Array.isArray(e.documents)?e.documents:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),be=e.lastPushedDocumentWatermarks,Ae=!be||be.size===0,q=(Array.isArray(e.documents)?e.documents:[]).map(u=>({op:"document-upsert",path:String(u.path||"").trim(),updatedAt:String(u.updatedAt||"").trim(),content:typeof u.content=="string"?u.content:"",assetId:typeof u.assetId=="string"&&u.assetId.trim().length>0?u.assetId.trim():void 0,documentId:typeof u.documentId=="string"&&u.documentId.trim().length>0?u.documentId.trim():null,referenceNumber:Number.isFinite(Number(u.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,version:Number.isFinite(Number(u.version))?Math.max(1,Math.floor(Number(u.version))):null,taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,linkTargetType:u.linkTargetType==="initiative"||u.linkTargetType==="workstream"||u.linkTargetType==="task"?u.linkTargetType:null,linkTargetId:typeof u.linkTargetId=="string"&&u.linkTargetId.trim().length>0?u.linkTargetId.trim():null,logicalName:typeof u.logicalName=="string"&&u.logicalName.trim().length>0?u.logicalName.trim():null,caption:typeof u.caption=="string"&&u.caption.trim().length>0?u.caption.trim():null,originalFilename:typeof u.originalFilename=="string"&&u.originalFilename.trim().length>0?u.originalFilename.trim():null,linkRole:u.linkRole==="reference"?"reference":"attachment",...u.links?{links:u.links}:{}})).filter(u=>u.path.length>0).filter(u=>Ae?!0:be.get(u.path)!==u.updatedAt),Z=hS(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(u=>String(u?.path||"").trim())),ne=e.assetsSnapshotComplete!==!1?new Set(Array.from(e.lastPushedAssetPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!Z.has(u))):new Set,Te=new Map((Array.isArray(e.assets)?e.assets:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),Le=e.lastPushedAssetWatermarks,Ue=!Le||Le.size===0,st=(Array.isArray(e.assets)?e.assets:[]).map(u=>({op:"asset-upsert",path:String(u.path||"").trim(),updatedAt:String(u.updatedAt||"").trim(),contentBase64:typeof u.contentBase64=="string"?u.contentBase64:"",assetId:typeof u.assetId=="string"&&u.assetId.trim().length>0?u.assetId.trim():void 0,kind:u.kind==="image"?"image":"file",mimeType:typeof u.mimeType=="string"&&u.mimeType.trim().length>0?u.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(u.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,linkTargetType:u.linkTargetType==="initiative"||u.linkTargetType==="workstream"||u.linkTargetType==="task"?u.linkTargetType:null,linkTargetId:typeof u.linkTargetId=="string"&&u.linkTargetId.trim().length>0?u.linkTargetId.trim():null,logicalName:typeof u.logicalName=="string"&&u.logicalName.trim().length>0?u.logicalName.trim():null,caption:typeof u.caption=="string"&&u.caption.trim().length>0?u.caption.trim():null,originalFilename:typeof u.originalFilename=="string"&&u.originalFilename.trim().length>0?u.originalFilename.trim():null,linkRole:u.linkRole==="reference"?"reference":u.linkRole==="image"?"image":"attachment",...u.links?{links:u.links}:{}})).filter(u=>u.path.length>0&&u.contentBase64.length>0).filter(u=>Ue?!0:Le.get(u.path)!==u.updatedAt),ft=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],xe=new Set(ft.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),ke=new Set(ft.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),ve=e.lastPushedDocumentReviewSessionIds||new Set,He=new Map(ft.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Ee=e.lastPushedDocumentReviewSessionWatermarks,de=!Ee||Ee.size===0,x=ft.map(u=>({op:"document-review-session-upsert",session:{id:String(u.id||"").trim(),assetId:String(u.assetId||"").trim(),documentId:typeof u.documentId=="string"&&u.documentId.trim().length>0?u.documentId.trim():null,documentVersion:Number.isFinite(Number(u.documentVersion))?Math.max(1,Math.floor(Number(u.documentVersion))):null,title:typeof u.title=="string"&&u.title.trim().length>0?u.title.trim():null,status:u.status==="resolved"?"resolved":"open",comments:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim().length>0?u.createdByActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.session.id.length>0&&u.session.assetId.length>0&&!u.session.deletedAt).filter(u=>de?!0:Ee.get(u.session.id)!==u.session.updatedAt),le=ft.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>de?!0:Ee.get(u.sessionId)!==u.deletedAt),Ie=Array.from(ve).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!xe.has(u)),Je=[...Ie.map(u=>({sessionId:u,deletedAt:t})),...le],J=new Set([...Ie,...le.map(u=>u.sessionId)]),Ze=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],te=new Set(Ze.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ne=new Set(Ze.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),je=e.lastPushedDocumentReviewCommentIds||new Set,Re=new Map(Ze.map(u=>[String(u?.id||"").trim(),[u?.deletedAt,u?.threadStatusUpdatedAt,u?.updatedAt,u?.createdAt].map(St=>String(St||"").trim()).filter(St=>Number.isFinite(Date.parse(St))).sort().at(-1)||""]).filter(([u])=>u.length>0)),Ce=e.lastPushedDocumentReviewCommentWatermarks,Pe=!Ce||Ce.size===0,he=Ze.map(u=>({op:"document-review-comment-upsert",comment:{id:String(u.id||"").trim(),sessionId:String(u.sessionId||"").trim(),body:String(u.body||"").trim(),anchor:u.anchor??null,order:Number.isFinite(Number(u.order))?Math.max(0,Math.floor(Number(u.order))):0,authorActorId:typeof u.authorActorId=="string"&&u.authorActorId.trim().length>0?u.authorActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,deletedByActorId:typeof u.deletedByActorId=="string"&&u.deletedByActorId.trim().length>0?u.deletedByActorId.trim():null,parentCommentId:typeof u.parentCommentId=="string"&&u.parentCommentId.trim().length>0?u.parentCommentId.trim():null,threadStatus:u.parentCommentId?null:u.threadStatus==="resolved"?"resolved":"open",threadStatusUpdatedAt:typeof u.threadStatusUpdatedAt=="string"&&u.threadStatusUpdatedAt.trim().length>0?u.threadStatusUpdatedAt.trim():null,resolvedAt:typeof u.resolvedAt=="string"&&u.resolvedAt.trim().length>0?u.resolvedAt.trim():null,resolvedByActorId:typeof u.resolvedByActorId=="string"&&u.resolvedByActorId.trim().length>0?u.resolvedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.comment.id.length>0&&u.comment.sessionId.length>0&&!u.comment.deletedAt).filter(u=>Pe?!0:Ce.get(u.comment.id)!==([u.comment.threadStatusUpdatedAt,u.comment.updatedAt].filter(St=>typeof St=="string"&&Number.isFinite(Date.parse(St))).sort().at(-1)||u.comment.updatedAt)),De=Ze.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({commentId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t,deletedByActorId:typeof u?.deletedByActorId=="string"&&u.deletedByActorId.trim().length>0?u.deletedByActorId.trim():null})).filter(u=>u.commentId.length>0).filter(u=>Pe?!0:Ce.get(u.commentId)!==u.deletedAt),et=Array.from(je).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!te.has(u)),Fe=[...et.map(u=>({commentId:u,deletedAt:t,deletedByActorId:null})),...De],yt=new Set([...et,...De.map(u=>u.commentId)]),Oe=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],mt=new Set(Oe.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),vt=new Set(Oe.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ve=e.lastPushedAnnotatedAttachmentSessionIds||new Set,tt=new Map(Oe.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),It=e.lastPushedAnnotatedAttachmentSessionWatermarks,Xe=!It||It.size===0,bt=Oe.map(u=>({op:"annotated-attachment-session-upsert",session:{id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),taskId:String(u.taskId||"").trim(),baseImageAssetId:String(u.baseImageAssetId||"").trim(),title:typeof u.title=="string"&&u.title.trim().length>0?u.title.trim():null,globalInstruction:typeof u.globalInstruction=="string"&&u.globalInstruction.trim().length>0?u.globalInstruction.trim():null,annotations:Array.isArray(u.annotations)?u.annotations:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim().length>0?u.createdByActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.session.id.length>0&&u.session.workspaceId.length>0&&u.session.baseImageAssetId.length>0&&!u.session.deletedAt).filter(u=>Xe?!0:It.get(u.session.id)!==u.session.updatedAt),at=Oe.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>Xe?!0:It.get(u.sessionId)!==u.deletedAt),U=Array.from(Ve).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!mt.has(u)),pe=[...U.map(u=>({sessionId:u,deletedAt:t})),...at],Ke=new Set([...U,...at.map(u=>u.sessionId)]),Et=Array.isArray(e.taskforceAgents)?e.taskforceAgents:[],kt=new Set(Et.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ot=new Map(Et.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),dr=e.lastPushedTaskforceAgentWatermarks,tr=!dr||dr.size===0,pr=Et.map(u=>({op:"taskforce-agent-upsert",agent:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),...Object.prototype.hasOwnProperty.call(u,"definition")?{definition:u.definition,definitionRevision:Number(u.definitionRevision)||0,definitionHash:String(u.definitionHash||"").trim(),lifecycleStatus:String(u.lifecycleStatus||"").trim(),managedProfileId:typeof u.managedProfileId=="string"&&u.managedProfileId.trim()||null,configurationState:u.configurationState,configurationIssues:Array.isArray(u.configurationIssues)?u.configurationIssues:[]}:{},name:String(u.name||"").trim()||"Agent",modelProvider:"taskforce_hq",providerKey:String(u.providerKey||"").trim(),modelKey:String(u.modelKey||"").trim(),modelTier:String(u.modelTier||"").trim(),systemPrompt:typeof u.systemPrompt=="string"?u.systemPrompt:"",enabled:u.enabled!==!1,createdByUserId:typeof u.createdByUserId=="string"&&u.createdByUserId.trim().length>0?u.createdByUserId.trim():null,updatedByUserId:typeof u.updatedByUserId=="string"&&u.updatedByUserId.trim().length>0?u.updatedByUserId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.agent.id.length>0&&u.agent.workspaceId.length>0).filter(u=>tr?!0:dr.get(u.agent.id)!==(u.agent.deletedAt||u.agent.updatedAt)),Bt=Array.isArray(e.agentRoles)?e.agentRoles:[];Bt.forEach(u=>{const St=String(u?.id||"").trim();if(!St)return;const gt=`agent-role:${St}`;String(u?.deletedAt||"").trim()||kt.add(gt),Ot.set(gt,String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim())});const wr=Bt.map(u=>({op:"agent-role-upsert",role:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),lifecycleStatus:u.lifecycleStatus==="retired"?"retired":"active",currentRevision:Number(u.currentRevision)||0,currentContentHash:String(u.currentContentHash||"").trim(),definition:u.definition,revisions:Array.isArray(u.revisions)?u.revisions:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim()||null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim()||null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),retiredAt:typeof u.retiredAt=="string"&&u.retiredAt.trim()||null,deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim()||null}})).filter(u=>u.role.id.length>0&&u.role.workspaceId.length>0&&u.role.currentRevision>0&&u.role.currentContentHash.length>0).filter(u=>{if(tr)return!0;const St=`agent-role:${u.role.id}`;return dr.get(St)!==(u.role.deletedAt||u.role.updatedAt)}),or=Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills:[],$r=new Set(or.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Dr=new Map(or.map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Me=e.lastPushedTaskforceAgentSkillWatermarks,nt=!Me||Me.size===0,pt=or.map(u=>({op:"taskforce-agent-skill-upsert",skill:{...u,id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),revision:Number(u.revision),contentHash:String(u.contentHash||"").trim(),createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim()}})).filter(u=>u.skill.id.length>0&&u.skill.workspaceId.length>0&&Number.isInteger(u.skill.revision)&&u.skill.revision>0).filter(u=>nt?!0:Me.get(u.skill.id)!==u.skill.updatedAt),lt=Array.isArray(e.agentConversations)?e.agentConversations:[],xt=new Set(lt.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Yt=new Map(lt.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Nt=e.lastPushedAgentConversationWatermarks,Qt=!Nt||Nt.size===0,Ct=lt.map(u=>({op:"agent-conversation-upsert",conversation:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),agentId:String(u.agentId||"").trim(),taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,title:String(u.title||"Agent chat").trim()||"Agent chat",messages:Z1(u.messages),modelProvider:typeof u.modelProvider=="string"&&u.modelProvider.trim().length>0?u.modelProvider.trim():null,modelId:typeof u.modelId=="string"&&u.modelId.trim().length>0?u.modelId.trim():null,usage:u.usage&&typeof u.usage=="object"?u.usage:null,latencyMs:Number.isFinite(Number(u.latencyMs))?Number(u.latencyMs):null,createdByUserId:typeof u.createdByUserId=="string"&&u.createdByUserId.trim().length>0?u.createdByUserId.trim():null,updatedByUserId:typeof u.updatedByUserId=="string"&&u.updatedByUserId.trim().length>0?u.updatedByUserId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.conversation.id.length>0&&u.conversation.workspaceId.length>0&&u.conversation.agentId.length>0).filter(u=>Qt?!0:Nt.get(u.conversation.id)!==(u.conversation.deletedAt||u.conversation.updatedAt)),Ht=yP(Array.isArray(e.taskEvents)?e.taskEvents:[]),Ft=new Map(Ht.map(u=>[String(u?.id||"").trim(),String(u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),ir=e.lastPushedTaskEventWatermarks,cr=!ir||ir.size===0,it=Ht.map(u=>{const St=u.entityType==="initiative"||u.entityType==="workstream"?u.entityType:"task",gt=String(u.entityId||u.taskId||"").trim(),Fr={id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),entityType:St,entityId:gt,taskId:St==="task"?String(u.taskId||gt).trim():void 0,action:String(u.action||"").trim(),actor:String(u.actor||"system").trim()||"system",actorType:u.actorType==="ai"||u.actorType==="human"||u.actorType==="system"?u.actorType:"system",details:u.details&&typeof u.details=="object"&&!Array.isArray(u.details)?u.details:{},createdAt:String(u.createdAt||"").trim()};return St==="task"?{op:"task-event-upsert",event:{...Fr,entityType:"task",taskId:String(Fr.taskId||gt).trim()}}:{op:"entity-event-upsert",event:{...Fr,entityType:St,taskId:void 0}}}).filter(u=>u.event.id.length>0&&u.event.entityId.length>0&&u.event.workspaceId.length>0&&u.event.action.length>0&&Number.isFinite(Date.parse(u.event.createdAt))).filter(u=>cr?!0:ir.get(u.event.id)!==u.event.createdAt),Zt=bI({taxonomyState:e.taxonomyState,taxonomies:e.taxonomies}),Lr=Zt.length>0&&e.lastPushedTaxonomyChangeKey!==Zt,lr=[...Y,...Q,..._e,...Lr&&e.taxonomyState&&typeof e.taxonomyState=="object"?[{op:"taxonomy-upsert",taxonomyState:e.taxonomyState,updatedAt:t}]:Lr&&Array.isArray(e.taxonomies)?[{op:"taxonomy-upsert",taxonomies:e.taxonomies,updatedAt:t}]:[],...me,...q,...Array.from(B).map(u=>({op:"document-delete",path:u,deletedAt:t})),...st,...Array.from(ne).map(u=>({op:"asset-delete",path:u,deletedAt:t})),...x,...Je.map(u=>({op:"document-review-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...he,...Fe.map(u=>({op:"document-review-comment-delete",commentId:u.commentId,deletedAt:u.deletedAt,deletedByActorId:u.deletedByActorId})),...bt,...pe.map(u=>({op:"annotated-attachment-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...pr,...wr,...pt,...Ct,...it,...v,...A,...S.filter(u=>!u.relationship.deletedAt),...S.filter(u=>!!u.relationship.deletedAt),...Array.from(E).map(u=>i(u))],$n=e.baselineResetReason??null,br=u=>{const St=u.upsertCount+(u.deleteCount||0);if(u.currentCount===0&&St===0)return{mode:"none",reason:null,currentCount:0,baselineCount:u.baselineCount,changeCount:St};if(u.alwaysFull)return{mode:St>0?"send-all":"none",reason:St>0?"full-state-domain":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:St};const gt=u.baselineCount===0&&u.currentCount>0&&u.upsertCount>=u.currentCount;return{mode:gt?"send-all":"delta",reason:gt?$n||"missing-baseline":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:St}},ur=lr.reduce((u,St)=>{const gt=String(St.op||"").trim();return u[gt]=(u[gt]||0)+1,u},{});return{changes:lr,currentTaskIds:new Set(Array.from(b).filter(u=>!r.has(u))),currentTaskWatermarks:new Map(Array.from(g.entries()).filter(([u])=>!r.has(u))),currentTaskChangeKeys:new Map(Array.from(h.entries()).filter(([u])=>!r.has(u))),currentTaskRelationshipChangeKeys:j,currentTaxonomyChangeKey:Zt,deleteTaskIds:E,currentInitiativeIds:L,currentInitiativeWatermarks:_,currentWorkstreamIds:H,currentWorkstreamWatermarks:M,currentPlanningIdentityWatermarks:fe,currentAiProfileIds:$e,currentAiProfileWatermarks:Ye,currentAiProfileChangeKeys:ye,currentDocumentPaths:$,deleteDocumentPaths:B,currentDocumentWatermarks:N,currentAssetPaths:Z,deleteAssetPaths:ne,currentAssetWatermarks:Te,currentDocumentReviewSessionIds:ke,deleteDocumentReviewSessionIds:J,currentDocumentReviewSessionWatermarks:He,currentDocumentReviewCommentIds:Ne,deleteDocumentReviewCommentIds:yt,currentDocumentReviewCommentWatermarks:Re,currentAnnotatedAttachmentSessionIds:vt,deleteAnnotatedAttachmentSessionIds:Ke,currentAnnotatedAttachmentSessionWatermarks:tt,currentTaskforceAgentIds:kt,currentTaskforceAgentWatermarks:Ot,currentTaskforceAgentSkillIds:$r,currentTaskforceAgentSkillWatermarks:Dr,currentAgentConversationIds:xt,currentAgentConversationWatermarks:Yt,currentTaskEventWatermarks:Ft,pushedWatermarks:y,pushedTaskChangeKeys:k,deltaDiagnostics:{totalChanges:lr.length,byOp:ur,baselineResetReason:$n,domains:{tasks:br({currentCount:b.size,baselineCount:l?.size||0,upsertCount:v.length+A.length,deleteCount:E.size}),taskRelationships:br({currentCount:j.size,baselineCount:D?.size||0,upsertCount:ur["task-relationship-upsert"]||0,deleteCount:ur["task-relationship-delete"]||0}),initiatives:br({currentCount:L.size,baselineCount:T?.size||0,upsertCount:Y.length}),workstreams:br({currentCount:H.size,baselineCount:oe?.size||0,upsertCount:Q.length}),planningIdentities:br({currentCount:fe.size,baselineCount:ee?.size||0,upsertCount:_e.length}),aiProfiles:br({currentCount:$e.size,baselineCount:ge?.size||0,upsertCount:me.length}),documents:br({currentCount:$.size,baselineCount:be?.size||0,upsertCount:q.length,deleteCount:B.size}),assets:br({currentCount:Z.size,baselineCount:Le?.size||0,upsertCount:st.length,deleteCount:ne.size}),documentReviewSessions:br({currentCount:ke.size,baselineCount:Ee?.size||0,upsertCount:x.length,deleteCount:J.size}),documentReviewComments:br({currentCount:Ne.size,baselineCount:Ce?.size||0,upsertCount:he.length,deleteCount:yt.size}),annotatedAttachmentSessions:br({currentCount:vt.size,baselineCount:It?.size||0,upsertCount:bt.length,deleteCount:Ke.size}),taskforceAgents:br({currentCount:kt.size,baselineCount:dr?.size||0,upsertCount:pr.length+wr.length}),taskforceAgentSkills:br({currentCount:$r.size,baselineCount:Me?.size||0,upsertCount:pt.length}),agentConversations:br({currentCount:xt.size,baselineCount:Nt?.size||0,upsertCount:Ct.length}),taskEvents:br({currentCount:Ft.size,baselineCount:ir?.size||0,upsertCount:it.length}),taxonomy:br({currentCount:e.taxonomyState&&typeof e.taxonomyState=="object"||Array.isArray(e.taxonomies)?1:0,baselineCount:e.lastPushedTaxonomyChangeKey?1:0,upsertCount:ur["taxonomy-upsert"]||0})}}}}function vP(e){const t=(e.tasks||[]).map(c=>`${c.id}:${c.updatedAt||c.createdAt||""}:${c.status}`).sort(),r=(e.archivedTasks||[]).map(c=>`${c.id}:${c.updatedAt||c.createdAt||""}:${c.status}`).sort(),n=e.pendingDeletedTaskIds?Array.from(e.pendingDeletedTaskIds).sort():[],s=(e.taskRelationships||[]).filter(c=>String(c?.id||"").trim().length>0&&Number.isFinite(Date.parse(String(c?.updatedAt||"")))).map(c=>({id:String(c.id||"").trim(),changeKey:Mw(c)})).sort((c,d)=>c.id.localeCompare(d.id)||c.changeKey.localeCompare(d.changeKey)),i=(e.initiatives||[]).map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),title:String(c.title||"").trim(),ownerId:typeof c.ownerId=="string"?c.ownerId.trim():"",comments:ap(c.comments)||[],attachments:sp(c.attachments)||[],isArchived:!!c.isArchived,icon:c.icon??null,color:c.color??null,identityUpdatedAt:String(c.identityUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)),l=(e.workstreams||[]).map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),initiativeId:typeof c.initiativeId=="string"?c.initiativeId.trim():"",title:String(c.title||"").trim(),ownerId:typeof c.ownerId=="string"?c.ownerId.trim():"",comments:ap(c.comments)||[],attachments:sp(c.attachments)||[],isArchived:!!c.isArchived,icon:c.icon??null,color:c.color??null,identityUpdatedAt:String(c.identityUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id));return JSON.stringify({workspaceId:e.workspaceId,initiatives:i,workstreams:l,taskRelationships:s,taxonomyState:e.taxonomyState&&typeof e.taxonomyState=="object"?e.taxonomyState:null,taxonomies:Array.isArray(e.taxonomies)?e.taxonomies:[],aiProfiles:Array.isArray(e.aiProfiles)?e.aiProfiles.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),name:String(c.name||"").trim(),username:String(c.username||"").trim(),archivedAt:String(c.archivedAt||"").trim(),archivedReason:String(c.archivedReason||"").trim(),mergedIntoProfileId:String(c.mergedIntoProfileId||"").trim(),rosterStateUpdatedAt:String(c.rosterStateUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskEvents:Array.isArray(e.taskEvents)?e.taskEvents.map(c=>({id:String(c.id||"").trim(),taskId:String(c.taskId||"").trim(),action:String(c.action||"").trim(),actor:String(c.actor||"").trim(),actorType:c.actorType==="ai"||c.actorType==="human"||c.actorType==="system"?c.actorType:"system",createdAt:String(c.createdAt||"").trim()})).filter(c=>c.id.length>0&&c.taskId.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],documents:Array.isArray(e.documents)?e.documents.map(c=>({path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),length:typeof c.content=="string"?c.content.length:0})).filter(c=>c.path.length>0).sort((c,d)=>c.path.localeCompare(d.path)):[],assets:Array.isArray(e.assets)?e.assets.map(c=>({path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),length:typeof c.contentBase64=="string"?c.contentBase64.length:0,kind:c.kind==="image"?"image":"file"})).filter(c=>c.path.length>0).sort((c,d)=>c.path.localeCompare(d.path)):[],documentReviewSessions:Array.isArray(e.documentReviewSessions)?e.documentReviewSessions.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),assetId:String(c.assetId||"").trim(),status:c.status==="resolved"?"resolved":"open",deletedAt:String(c.deletedAt||"").trim(),commentCount:Array.isArray(c.comments)?c.comments.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],documentReviewComments:Array.isArray(e.documentReviewComments)?e.documentReviewComments.map(c=>({id:String(c.id||"").trim(),sessionId:String(c.sessionId||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),bodyLength:String(c.body||"").length})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],annotatedAttachmentSessions:Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),taskId:String(c.taskId||"").trim(),baseImageAssetId:String(c.baseImageAssetId||"").trim(),deletedAt:String(c.deletedAt||"").trim(),annotationCount:Array.isArray(c.annotations)?c.annotations.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskforceAgents:Array.isArray(e.taskforceAgents)?e.taskforceAgents.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),definitionRevision:Number(c.definitionRevision)||0,definitionHash:String(c.definitionHash||"").trim(),lifecycleStatus:String(c.lifecycleStatus||"").trim(),managedProfileId:String(c.managedProfileId||"").trim(),name:String(c.name||"").trim(),modelTier:String(c.modelTier||"").trim(),providerKey:String(c.providerKey||"").trim(),modelKey:String(c.modelKey||"").trim(),enabled:c.enabled!==!1})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],agentRoles:Array.isArray(e.agentRoles)?e.agentRoles.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),lifecycleStatus:c.lifecycleStatus,currentRevision:Number(c.currentRevision)||0,currentContentHash:String(c.currentContentHash||"").trim(),revisionCount:Array.isArray(c.revisions)?c.revisions.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskforceAgentSkills:Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),revision:Number(c.revision)||0,contentHash:String(c.contentHash||"").trim(),lifecycleStatus:String(c.lifecycleStatus||"").trim(),revisionCount:Array.isArray(c.revisions)?c.revisions.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],agentConversations:Array.isArray(e.agentConversations)?e.agentConversations.map(c=>({id:String(c.id||"").trim(),agentId:String(c.agentId||"").trim(),taskId:String(c.taskId||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),messageCount:Array.isArray(c.messages)?c.messages.length:0,modelId:String(c.modelId||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],active:t,archived:r,pendingDeletes:n})}function xv(e,t,r=[],n=[]){const s=new Map;for(const i of[...e||[],...t||[]]){const l=Array.isArray(i?.taskEvents)?i.taskEvents:[];for(const c of l){const d=String(c?.id||"").trim(),m=String(c?.taskId||i?.id||"").trim(),f=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!m||!f||!g)continue;const h={id:d,workspaceId:f,entityType:"task",entityId:m,taskId:m,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}for(const i of r||[]){const l=Array.isArray(i?.entityEvents)?i.entityEvents:[];for(const c of l){const d=String(c?.id||"").trim(),m=String(c?.entityId||i?.id||"").trim(),f=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!m||!f||!g)continue;const h={id:d,workspaceId:f,entityType:"initiative",entityId:m,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}for(const i of n||[]){const l=Array.isArray(i?.entityEvents)?i.entityEvents:[];for(const c of l){const d=String(c?.id||"").trim(),m=String(c?.entityId||i?.id||"").trim(),f=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!m||!f||!g)continue;const h={id:d,workspaceId:f,entityType:"workstream",entityId:m,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}return Array.from(s.values()).sort((i,l)=>i.createdAt!==l.createdAt?i.createdAt.localeCompare(l.createdAt):i.id.localeCompare(l.id))}function as(e){return Object.freeze(structuredClone(Array.from(e||[])))}function yS(e,t){return new Set(e?Array.from(e):t)}function wP(e){const t=as(e.tasks),r=as(e.archivedTasks),n=as(e.deletedTasks),s=as(e.initiatives),i=as(e.workstreams),l=as(e.documents),c=as(e.assets),d=e.pendingDeletedTaskIds?new Set(e.pendingDeletedTaskIds):new Set,m=e.pendingDeletedTaskWatermarks?new Map(e.pendingDeletedTaskWatermarks):new Map;if(!e.pendingDeletedTaskIds&&!e.pendingDeletedTaskWatermarks)for(const g of n){const h=String(g?.taskId||"").trim(),y=String(g?.deletedAt||"").trim();h&&(d.add(h),Number.isFinite(Date.parse(y))&&m.set(h,y))}const f=e.taskEvents?as(e.taskEvents):Object.freeze(xv(t,r,s,i));return Object.freeze({workspaceId:String(e.workspaceId||"").trim(),tasks:t,archivedTasks:r,deletedTasks:n,pendingDeletedTaskIds:d,pendingDeletedTaskWatermarks:m,taskRelationships:as(e.taskRelationships),initiatives:s,workstreams:i,taxonomies:as(e.taxonomies),taxonomyState:e.taxonomyState?structuredClone(e.taxonomyState):void 0,aiProfiles:as(e.aiProfiles),documents:l,assets:c,currentDocumentPaths:yS(e.currentDocumentPaths,l.map(g=>g.path)),currentAssetPaths:yS(e.currentAssetPaths,c.map(g=>g.path)),documentsSnapshotComplete:e.documentsSnapshotComplete!==!1,assetsSnapshotComplete:e.assetsSnapshotComplete!==!1,documentReviewSessions:as(e.documentReviewSessions),documentReviewComments:as(e.documentReviewComments),annotatedAttachmentSessions:as(e.annotatedAttachmentSessions),taskforceAgents:as(e.taskforceAgents),agentRoles:as(e.agentRoles),taskforceAgentSkills:as(e.taskforceAgentSkills),agentConversations:as(e.agentConversations),taskEvents:f})}function ko(e){return new Set(e)}function ss(e){return new Map(e)}function bP(e,t){return new Set(G1(Array.from(e),t,r=>B1(String(r||"").trim())).keys())}function SP(e){const{snapshot:t,baseline:r}=e,n=e.forceAllAiProfiles===!0,s=n?bP(t.aiProfiles,t.workspaceId):new Set,i=ko(r.lastPushedAssetPaths),l=ss(r.lastPushedAssetWatermarks),c=ko(r.lastPushedDocumentPaths),d=ss(r.lastPushedDocumentWatermarks);for(const g of[...s,...e.forceAssetPaths||[]])i.delete(g),l.delete(g);for(const g of e.forceDocumentPaths||[])c.delete(g),d.delete(g);const m=structuredClone(kP({tasks:Array.from(t.tasks),archivedTasks:Array.from(t.archivedTasks),taskRelationships:Array.from(t.taskRelationships),taskEvents:Array.from(t.taskEvents),lastPushedTaskIds:ko(r.lastPushedTaskIds),pendingDeletedTaskIds:ko(t.pendingDeletedTaskIds),pendingDeletedTaskWatermarks:ss(t.pendingDeletedTaskWatermarks),deletedTasks:Array.from(t.deletedTasks),initiatives:Array.from(t.initiatives),workstreams:Array.from(t.workstreams),taxonomies:Array.from(t.taxonomies),taxonomyState:t.taxonomyState,lastPushedInitiativeIds:ko(r.lastPushedInitiativeIds),lastPushedInitiativeWatermarks:ss(r.lastPushedInitiativeWatermarks),lastPushedWorkstreamIds:ko(r.lastPushedWorkstreamIds),lastPushedWorkstreamWatermarks:ss(r.lastPushedWorkstreamWatermarks),lastPushedPlanningIdentityWatermarks:ss(r.lastPushedPlanningIdentityWatermarks||new Map),aiProfiles:Array.from(t.aiProfiles),lastPushedAiProfileIds:n?new Set:ko(r.lastPushedAiProfileIds),lastPushedAiProfileWatermarks:n?new Map:ss(r.lastPushedAiProfileWatermarks),lastPushedAiProfileChangeKeys:n?new Map:ss(r.lastPushedAiProfileChangeKeys),documents:Array.from(t.documents),assets:Array.from(t.assets),currentDocumentPaths:t.currentDocumentPaths,currentAssetPaths:t.currentAssetPaths,documentsSnapshotComplete:t.documentsSnapshotComplete,assetsSnapshotComplete:t.assetsSnapshotComplete,documentReviewSessions:Array.from(t.documentReviewSessions),documentReviewComments:Array.from(t.documentReviewComments),annotatedAttachmentSessions:Array.from(t.annotatedAttachmentSessions),taskforceAgents:Array.from(t.taskforceAgents),agentRoles:Array.from(t.agentRoles),taskforceAgentSkills:Array.from(t.taskforceAgentSkills),agentConversations:Array.from(t.agentConversations),lastPushedDocumentPaths:c,lastPushedDocumentWatermarks:d,lastPushedAssetPaths:i,lastPushedAssetWatermarks:l,lastPushedDocumentReviewSessionIds:ko(r.lastPushedDocumentReviewSessionIds),lastPushedDocumentReviewSessionWatermarks:ss(r.lastPushedDocumentReviewSessionWatermarks),lastPushedDocumentReviewCommentIds:ko(r.lastPushedDocumentReviewCommentIds),lastPushedDocumentReviewCommentWatermarks:ss(r.lastPushedDocumentReviewCommentWatermarks),lastPushedAnnotatedAttachmentSessionIds:ko(r.lastPushedAnnotatedAttachmentSessionIds),lastPushedAnnotatedAttachmentSessionWatermarks:ss(r.lastPushedAnnotatedAttachmentSessionWatermarks),lastPushedTaskforceAgentIds:n?new Set:ko(r.lastPushedTaskforceAgentIds),lastPushedTaskforceAgentWatermarks:n?new Map:ss(r.lastPushedTaskforceAgentWatermarks),lastPushedTaskforceAgentSkillIds:n?new Set:ko(r.lastPushedTaskforceAgentSkillIds),lastPushedTaskforceAgentSkillWatermarks:n?new Map:ss(r.lastPushedTaskforceAgentSkillWatermarks),lastPushedAgentConversationIds:ko(r.lastPushedAgentConversationIds),lastPushedAgentConversationWatermarks:ss(r.lastPushedAgentConversationWatermarks),lastPushedTaskEventWatermarks:ss(r.lastPushedTaskEventWatermarks),baselineResetReason:r.baselineResetReason,lastPushedWatermarks:ss(r.lastPushedWatermarks),lastPushedTaskChangeKeys:ss(r.lastPushedTaskChangeKeys),lastPushedTaskRelationshipChangeKeys:ss(r.lastPushedTaskRelationshipChangeKeys),lastPushedTaxonomyChangeKey:r.lastPushedTaxonomyChangeKey})),f=SI(t);return Object.freeze({snapshot:t,signature:f,payload:m})}function SI(e){return vP({workspaceId:e.workspaceId,tasks:Array.from(e.tasks),archivedTasks:Array.from(e.archivedTasks),taskRelationships:Array.from(e.taskRelationships),taskEvents:Array.from(e.taskEvents),pendingDeletedTaskIds:ko(e.pendingDeletedTaskIds),initiatives:Array.from(e.initiatives),workstreams:Array.from(e.workstreams),taxonomies:Array.from(e.taxonomies),taxonomyState:e.taxonomyState,aiProfiles:Array.from(e.aiProfiles),documents:Array.from(e.documents),assets:Array.from(e.assets),documentReviewSessions:Array.from(e.documentReviewSessions),documentReviewComments:Array.from(e.documentReviewComments),annotatedAttachmentSessions:Array.from(e.annotatedAttachmentSessions),taskforceAgents:Array.from(e.taskforceAgents),agentRoles:Array.from(e.agentRoles),taskforceAgentSkills:Array.from(e.taskforceAgentSkills),agentConversations:Array.from(e.agentConversations)})}function AI(e){return Pl(e)}function lc(e){return qn(e)}function AP(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=String(n.id||"").trim(),i=String(n.workspaceId||t||"").trim(),l=Number(n.currentRevision),c=Number.isInteger(l)&&l>0?l:0,d=String(n.currentContentHash||"").trim(),m=n.lifecycleStatus;return!s||!i||!c||!d||m!=="active"&&m!=="retired"||t&&i!==t?null:{id:s,tenantId:AI(n.tenantId),workspaceId:i,lifecycleStatus:m,currentRevision:c,currentContentHash:d,definition:n.definition,revisions:Array.isArray(n.revisions)?n.revisions.map(f=>({roleId:String(f?.roleId||s).trim()||s,revision:Number.isInteger(Number(f?.revision))&&Number(f?.revision)>0?Number(f.revision):0,definition:f?.definition,contentHash:String(f?.contentHash||"").trim(),createdByActorId:lc(f?.createdByActorId),createdAt:String(f?.createdAt||r||"").trim()})):[],createdByActorId:lc(n.createdByActorId),updatedByActorId:lc(n.updatedByActorId),createdAt:String(n.createdAt||r||"").trim(),updatedAt:String(n.updatedAt||r||n.createdAt||"").trim(),retiredAt:lc(n.retiredAt),deletedAt:lc(n.deletedAt)}}function CP(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=String(n.id||"").trim(),i=String(n.workspaceId||t||"").trim(),l=String(n.lifecycleStatus||"").trim(),c=Number(n.revision);return!s||!i||!Number.isInteger(c)||c<1||t&&i!==t||l!=="active"&&l!=="retired"||!Array.isArray(n.revisions)?null:{id:s,tenantId:AI(n.tenantId),workspaceId:i,lifecycleStatus:l,definition:n.definition,revision:c,contentHash:String(n.contentHash||"").trim(),revisions:n.revisions.map(d=>{if(!d||typeof d!="object"||Array.isArray(d))return null;const m=d,f=Number(m.revision);return!Number.isInteger(f)||f<1?null:{revision:f,contentHash:String(m.contentHash||"").trim(),definition:m.definition,createdByActorId:lc(m.createdByActorId),createdAt:String(m.createdAt||r||"").trim()}}).filter(d=>d!==null),createdByActorId:lc(n.createdByActorId),updatedByActorId:lc(n.updatedByActorId),createdAt:String(n.createdAt||r||"").trim(),updatedAt:String(n.updatedAt||r||n.createdAt||"").trim(),retiredAt:lc(n.retiredAt),retiredByActorId:lc(n.retiredByActorId)}}function kS(e){if(!Array.isArray(e))return;const t=e.filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim());return t.length>0?t:void 0}function CI(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return Array.isArray(t.categories)||Array.isArray(t.types)||Array.isArray(t.priorities)||Array.isArray(t.taxonomies)||!!t.displayLabels&&typeof t.displayLabels=="object"&&!Array.isArray(t.displayLabels)}function IP(e){const t=e||{};return{categories:Array.isArray(t.categories)?t.categories.map(n=>typeof n=="string"?{value:n.toLowerCase().replace(/\s+/g,"-"),label:n}:n):[],types:Array.isArray(t.types)?t.types.map(n=>({...vx(n.value),...n,aliases:Array.isArray(n.aliases)?n.aliases.filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim()):void 0,status:n.status==="retired"?"retired":"active"})):[],priorities:Array.isArray(t.priorities)?t.priorities:[],taxonomies:Array.isArray(t.taxonomies)?t.taxonomies.map(n=>({...n,aliases:kS(n.aliases),options:Array.isArray(n.options)?n.options.map(s=>({...s,aliases:kS(s.aliases),status:s.status==="retired"?"retired":"active"})):[],status:n.status==="retired"?"retired":"active",formEnabled:n.formEnabled!==!1,filterEnabled:n.filterEnabled!==!1,sortEnabled:n.sortEnabled===!0})):[],displayLabels:{category:typeof t.displayLabels?.category=="string"&&t.displayLabels.category.trim().length>0?t.displayLabels.category.trim():void 0,type:typeof t.displayLabels?.type=="string"&&t.displayLabels.type.trim().length>0?t.displayLabels.type.trim():void 0,priority:typeof t.displayLabels?.priority=="string"&&t.displayLabels.priority.trim().length>0?t.displayLabels.priority.trim():void 0}}}function yg(){return{version:2,revision:null,enabled:!1,phase:"idle",setupIntent:null,startupFullReconcileCompletedAt:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null,pushBaseline:null}}function vS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=t.counter,n=typeof t.writerId=="string"?t.writerId.trim():"";return!Number.isSafeInteger(r)||Number(r)<1||!n||n.length>200?null:{counter:Number(r),writerId:n}}function _P(e,t){return e?t?e.counter!==t.counter?e.counter<t.counter?-1:1:e.writerId===t.writerId?0:e.writerId<t.writerId?-1:1:1:t?-1:0}function TP(e,t){const r=String(t||"").trim();if(!r)throw new Error("Workspace sync state revision writer is required");if(r.length>200)throw new Error("Workspace sync state revision writer is too long");if(e?.counter===Number.MAX_SAFE_INTEGER)throw new Error("Workspace sync state revision counter is exhausted");return{counter:(e?.counter||0)+1,writerId:r}}function sc(e){const t=String(e||"").trim();return t.length>0?t:null}function wS(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function xP(e){if(!Array.isArray(e)||e.length<2)return null;const t=String(e[0]||"").trim(),r=String(e[1]||"").trim();return!t||!r?null:[t,r]}function RP(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function bS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=n=>Array.isArray(t[n])?t[n].map(s=>xP(s)).filter(s=>Array.isArray(s)):[];return{taskIds:RP(t.taskIds),taskWatermarks:r("taskWatermarks"),taskChangeKeys:r("taskChangeKeys"),taskRelationshipChangeKeys:r("taskRelationshipChangeKeys"),initiativeWatermarks:r("initiativeWatermarks"),workstreamWatermarks:r("workstreamWatermarks"),aiProfileWatermarks:r("aiProfileWatermarks"),aiProfileChangeKeys:r("aiProfileChangeKeys"),documentWatermarks:r("documentWatermarks"),assetWatermarks:r("assetWatermarks"),documentReviewSessionWatermarks:r("documentReviewSessionWatermarks"),documentReviewCommentWatermarks:r("documentReviewCommentWatermarks"),annotatedAttachmentSessionWatermarks:r("annotatedAttachmentSessionWatermarks"),taskEventWatermarks:r("taskEventWatermarks"),taxonomyStateFingerprint:String(t.taxonomyStateFingerprint||"").trim(),taxonomyChangeKey:String(t.taxonomyChangeKey||"")}}function PP(e,t){if(!!!(e.enabled??e.cloudSyncEnabled))return"idle";const n=String(e.phase||"").trim().toLowerCase();if(n==="idle"||n==="provision-local"||n==="attach-cloud"||n==="active"||n==="error")return n;const s=String(e.bootstrapMode||"").trim().toLowerCase();if(s==="provision-local"||s==="attach-cloud")return s;const i=String(e.sourceOfTruth||"").trim().toLowerCase();return e.onboardingCompleted?"active":i==="cloud"?t.lastPullAt?"active":"attach-cloud":i==="local"?t.lastPullAt||t.lastPushAt?"active":"provision-local":(t.lastPullAt||t.lastPushAt,"active")}function $k(e){const t=yg();if(!e||typeof e!="object")return{state:t,changed:!1};const r=e,n=r.lastErrorMessage,s=typeof n=="string"&&n.trim().length>0?n:null,i={version:2,revision:vS(r.revision),enabled:!!(r.enabled??r.cloudSyncEnabled),phase:"idle",setupIntent:wS(r.setupIntent),startupFullReconcileCompletedAt:sc(r.startupFullReconcileCompletedAt),pullCursor:sc(r.pullCursor),lastPullAt:sc(r.lastPullAt),lastPushAt:sc(r.lastPushAt),lastSyncedAt:sc(r.lastSyncedAt),lastErrorMessage:s,pushBaseline:bS(r.pushBaseline)};i.phase=PP(r,i),i.enabled||(i.phase="idle",i.pullCursor=null);const c=Number(r.version||0)!==2||JSON.stringify(vS(r.revision))!==JSON.stringify(i.revision)||!!(r.enabled??r.cloudSyncEnabled)!==i.enabled||String(r.phase||"").trim()!==i.phase||wS(r.setupIntent)!==i.setupIntent||sc(r.startupFullReconcileCompletedAt)!==i.startupFullReconcileCompletedAt||sc(r.pullCursor)!==i.pullCursor||sc(r.lastPullAt)!==i.lastPullAt||sc(r.lastPushAt)!==i.lastPushAt||sc(r.lastSyncedAt)!==i.lastSyncedAt||s!==i.lastErrorMessage||JSON.stringify(bS(r.pushBaseline))!==JSON.stringify(i.pushBaseline);return{state:i,changed:c}}const jP="taskforce.sync.lease.v1",EP="taskforce.sync.completed.v1",NP="taskforce.sync.lease.v1",DP=2500,MP=9e3,LP=()=>!0;function Il(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function bm(e){const t=String(e||"").trim();return t.length>0?t:null}function Fk(e){return`${jP}.${e}`}function SS(e,t){return`${EP}.${e}.${t}`}function OP(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.workspaceId||"").trim(),n=String(t?.operation||"").trim(),s=String(t?.completedAt||"").trim();return!r||!Number.isFinite(Date.parse(s))||n!=="pull"&&n!=="push"&&n!=="repair"?null:{workspaceId:r,operation:n,completedAt:s}}catch{return null}}function BP(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.ownerId||"").trim(),n=String(t?.workspaceId||"").trim(),s=String(t?.operation||"").trim(),i=String(t?.heartbeatAt||"").trim(),l=String(t?.expiresAt||"").trim();return!r||!n||!i||!l||s!=="pull"&&s!=="push"&&s!=="repair"?null:{ownerId:r,workspaceId:n,operation:s,heartbeatAt:i,expiresAt:l}}catch{return null}}function WP(e,t,r,n){return{ownerId:e,workspaceId:t,operation:r,heartbeatAt:new Date(n).toISOString(),expiresAt:new Date(n+MP).toISOString()}}function $P(e,t=Date.now()){if(!e)return!0;const r=Date.parse(e.expiresAt);return!Number.isFinite(r)||r<=t}function Uk(e,t){const r={...e,...t,version:2,phase:t.phase||e.phase,setupIntent:t.setupIntent===void 0?e.setupIntent??null:t.setupIntent??null,startupFullReconcileCompletedAt:t.startupFullReconcileCompletedAt===void 0?e.startupFullReconcileCompletedAt??null:bm(t.startupFullReconcileCompletedAt),pullCursor:t.pullCursor===void 0?e.pullCursor:bm(t.pullCursor),lastPullAt:t.lastPullAt===void 0?e.lastPullAt:bm(t.lastPullAt),lastPushAt:t.lastPushAt===void 0?e.lastPushAt:bm(t.lastPushAt),lastSyncedAt:t.lastSyncedAt===void 0?e.lastSyncedAt:bm(t.lastSyncedAt),lastErrorMessage:t.lastErrorMessage===void 0?e.lastErrorMessage:t.lastErrorMessage??null,pushBaseline:t.pushBaseline===void 0?e.pushBaseline??null:t.pushBaseline??null};return r.enabled||(r.phase="idle",r.setupIntent=null,r.pullCursor=null),r}function AS(e){return{...e,pushBaseline:null}}function FP(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:r,setWorkspaceSyncPhase:n,setWorkspaceSyncSetupIntent:s,setWorkspaceLastPullAt:i,setWorkspaceLastPushAt:l,setWorkspaceLastErrorMessage:c,isWorkspaceOperationAuthorized:d=LP}=e,[m,f]=o.useState(null),g=o.useRef(null),h=o.useRef(null),y=o.useRef(0),k=o.useRef(!1),v=o.useRef(!1),A=o.useRef(""),b=o.useRef(""),w=o.useRef(new Set),P=o.useRef(new Set),E=o.useRef(new Map),D=o.useRef(null),j=o.useRef(yg()),S=o.useRef(""),L=o.useRef(null),_=o.useRef(null),T=o.useRef(null),z=o.useRef(null);if(!S.current){const q=Date.now().toString(36),Z=Math.random().toString(36).slice(2,10);S.current=`sync-lease-${q}-${Z}`}const Y=o.useCallback(()=>{y.current=0,h.current=null,g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),f(null)},[]),H=o.useCallback((q,Z)=>{if(typeof window>"u"||!d())return;const G=Math.max(1,y.current+1);y.current=G;const ne=L1(G),Te=Number(Z?.minDelayMs),Le=Number.isFinite(Te)&&Te>0?Math.max(ne,Math.floor(Te)):ne,Ue=Date.now()+Le;h.current=Ue,f(new Date(Ue).toISOString()),g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h.current=null,f(null),d()&&q()},Le)},[d]),M=o.useCallback(()=>{const q=h.current;return typeof q=="number"&&Number.isFinite(q)&&q>Date.now()},[]),oe=o.useCallback(q=>{if(typeof window>"u")return null;const Z=String(q||"").trim();return Il(Z)?BP(window.localStorage.getItem(Fk(Z))):null},[]),K=o.useCallback((q,Z)=>{if(typeof window>"u")return null;const G=String(q||"").trim();if(!Il(G))return null;try{const ne=OP(window.localStorage.getItem(SS(G,Z)));return ne?.workspaceId===G&&ne.operation===Z?ne:null}catch{return null}},[]),Q=o.useCallback(q=>{const Z=String(q||"").trim();if(Z)try{z.current?.postMessage({workspaceId:Z})}catch{}},[]),ee=o.useCallback((q,Z)=>{const G=String(q||"").trim();if(Il(G))try{z.current?.postMessage({kind:"state",workspaceId:G,state:AS(Z)})}catch{}},[]),fe=o.useCallback((q,Z,G=new Date().toISOString())=>{if(typeof window>"u")return;const ne=String(q||"").trim();if(!(!Il(ne)||!Number.isFinite(Date.parse(G))))try{window.localStorage.setItem(SS(ne,Z),JSON.stringify({workspaceId:ne,operation:Z,completedAt:new Date(G).toISOString()}))}catch{return}},[]),_e=o.useCallback((q,Z,G,ne=Date.now())=>{const Te=K(q,Z),Le=Te?Date.parse(Te.completedAt):NaN,Ue=Number(G);return Number.isFinite(Le)&&Number.isFinite(Ue)&&Ue>0&&Le<=ne&&ne-Le<Ue},[K]),$e=o.useCallback((q,Z)=>{if(typeof window>"u")return null;const G=String(q||"").trim();if(!Il(G))return null;const ne=WP(S.current,G,Z,Date.now());try{window.localStorage.setItem(Fk(G),JSON.stringify(ne))}catch{return null}return Q(G),ne},[Q]),Ye=o.useCallback(()=>{T.current!==null&&typeof window<"u"&&(window.clearInterval(T.current),T.current=null)},[]),ye=o.useCallback((q,Z)=>{if(typeof window>"u")return;const G=String(q||L.current||"").trim();if(!G)return;const ne=oe(G),Te=ne?.ownerId===S.current;if(!(!Z?.force&&ne&&!Te)){Ye();try{window.localStorage.removeItem(Fk(G))}catch{}L.current=null,_.current=null,Q(G)}},[Q,oe,Ye]),ge=o.useCallback((q,Z)=>{typeof window>"u"||(Ye(),T.current=window.setInterval(()=>{if(!d()){Ye();return}const G=String(L.current||"").trim(),ne=_.current;if(!G||!ne){Ye();return}if(oe(G)?.ownerId!==S.current){Ye(),L.current=null,_.current=null;return}$e(G,ne)},DP),L.current=q,_.current=Z)},[d,oe,Ye,$e]),se=o.useCallback(async(q,Z)=>{if(!d())return!1;if(typeof window>"u")return!0;const G=String(q||"").trim();if(!Il(G))return!1;const ne=oe(G);if(ne?.ownerId===S.current)return $e(G,Z)?(ge(G,Z),!0):!1;if(ne&&!$P(ne)||!$e(G,Z))return!1;const Ue=oe(G);return!Ue||Ue.ownerId!==S.current?!1:(ge(G,Z),!0)},[d,oe,ge,$e]),ie=o.useCallback(q=>{ye(q,{force:!0})},[ye]),me=o.useCallback(q=>{const Z=j.current,G=Uk(Z,{enabled:!!q.enabled,phase:q.phase||Z.phase,setupIntent:q.setupIntent,pullCursor:q.pullCursor,lastPullAt:q.lastPullAt,lastPushAt:q.lastPushAt,lastSyncedAt:q.lastSyncedAt,lastErrorMessage:q.lastErrorMessage});j.current=G,D.current=G.pullCursor,r(G.enabled),n(G.phase),s(G.setupIntent??null),i(G.lastPullAt),l(G.lastPushAt),c(G.lastErrorMessage??null)},[r,n,s,i,l,c]),$=o.useCallback((q,Z)=>{const G=j.current.revision,ne=q.revision;if(ne){const Te=_P(ne,G);if(Te<0||Te===0&&!Z?.allowEqualRevision)return!1}else if(G||!Z?.allowUnversioned)return!1;return j.current=q,me(q),!0},[me]),V=o.useCallback(q=>{const Z=Uk(j.current,q);return me(Z),Z},[me]),B=o.useCallback(()=>j.current,[]),N=o.useCallback(async q=>{const Z=Uk(j.current,{...q,revision:TP(j.current.revision,S.current)});j.current=Z,D.current=Z.pullCursor;const G=await Hm({workspaceId:t,stateKey:"workspace-sync",patch:AS(Z),throwOnError:!0,respectFailureCooldown:!1}),ne=G.response,Te=G.payload;if(G.skipped)return $(Z,{allowEqualRevision:!0})&&ee(t,Z),j.current;if(!ne)throw new Error("Failed to persist workspace sync state (missing response)");if(!ne.ok||Te?.success===!1)throw new Error(Te?.error||`Failed to persist workspace sync state (${ne.status})`);const Le=Te?.state&&typeof Te.state=="object"&&!Array.isArray(Te.state)?$k(Te.state).state:Z;return $(Le,{allowEqualRevision:!0})&&ee(t,Le),j.current},[$,ee,t]),be=o.useCallback(async()=>{if(!Il(t)){const q=yg();j.current=q,me(q);return}try{const q=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!q.ok)return;const Z=await q.json().catch(()=>({})),G=$k(Z?.state&&typeof Z.state=="object"?Z.state:null);$(G.state,{allowEqualRevision:!0,allowUnversioned:!0})&&(G.changed||!G.state.revision)&&N(G.state)}catch{}},[$,t,N]),Ae=o.useCallback(async(q,Z)=>{if(!Il(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!q.enabled)return await N({enabled:!1,phase:"idle",setupIntent:null,pullCursor:null}),{success:!0};if(!Z.isAuthenticated)return{success:!1,error:"Sign in is required before enabling workspace sync."};if(!Z.cloudAuthConfigured)return{success:!1,error:"Cloud authentication endpoint is not configured."};const G=await Z.ensureCloudWorkspaceReadyForSync();return G.success?(await N({enabled:!0,phase:G.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:G.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[t,N]);return o.useEffect(()=>{A.current="",b.current="",w.current=new Set,P.current=new Set,E.current=new Map,D.current=null,j.current=yg(),k.current=!1,v.current=!1,ye(),Y()},[Y,t,ye]),o.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const q=new BroadcastChannel(NP);return z.current=q,q.onmessage=Z=>{const G=Z.data;if(G?.kind!=="state"||String(G.workspaceId||"").trim()!==t||!G.state||typeof G.state!="object"||Array.isArray(G.state))return;const ne=$k(G.state);$(ne.state)},()=>{q.onmessage=null,q.close(),z.current===q&&(z.current=null)}},[$,t]),o.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),ye()},[ye]),{workspaceRetryAt:m,isWorkspaceRetryPending:M,workspacePushInFlightRef:k,workspacePullInFlightRef:v,workspaceLastPushedSignatureRef:A,workspacePendingSignatureRef:b,workspaceLastPushedTaskIdsRef:w,workspaceDeletedTaskIdsRef:P,workspaceDeletedTaskWatermarksRef:E,workspacePullCursorRef:D,clearWorkspaceRetry:Y,scheduleWorkspaceRetry:H,persistWorkspaceSyncPatch:N,applyWorkspaceSyncPatchLocally:V,readWorkspaceSyncStateSnapshot:B,loadWorkspaceSyncState:be,applyWorkspaceSyncStateSnapshot:me,saveWorkspaceCloudSyncSettings:Ae,acquireWorkspaceSyncLease:se,releaseWorkspaceSyncLease:ye,forceClearWorkspaceSyncLease:ie,readWorkspaceSyncLease:oe,readWorkspaceSyncCompletion:K,recordWorkspaceSyncCompletion:fe,wasWorkspaceSyncOperationCompletedRecently:_e}}class UP{constructor(t=2048){this.maxSeenEventIds=t}seenEventIds=new Set;seenEventIdQueue=[];activeEpoch="";lastSeq=null;telemetry={accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0};process(t){const r=typeof t.eventId=="string"?t.eventId.trim():"";if(r&&this.seenEventIds.has(r))return this.telemetry.duplicateDiscarded+=1,{accepted:!1,reason:"duplicate",shouldRecover:!1};const n=typeof t.serverEpoch=="string"?t.serverEpoch.trim():"",s=Number(t.seq);if(!(n.length>0&&Number.isFinite(s)&&s>=0))return r?(this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}):(this.telemetry.invalidDiscarded+=1,{accepted:!1,reason:"invalid",shouldRecover:!1});const l=Math.floor(s);if(this.activeEpoch&&this.activeEpoch!==n)return this.activeEpoch=n,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=n,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};const c=this.lastSeq;if(typeof c=="number"){if(l<=c){this.telemetry.outOfOrderDiscarded+=l===c?0:1,this.telemetry.duplicateDiscarded+=l===c?1:0;const d=l<c;return d&&(this.telemetry.recoveryTriggered+=1),{accepted:!1,reason:l===c?"duplicate":"out-of-order",shouldRecover:d}}if(l>c+1)return this.telemetry.outOfOrderDiscarded+=1,this.telemetry.recoveryTriggered+=1,{accepted:!1,reason:"out-of-order",shouldRecover:!0}}return this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}}getTelemetry(){return{...this.telemetry}}rememberEventId(t){for(this.seenEventIds.add(t),this.seenEventIdQueue.push(t);this.seenEventIdQueue.length>this.maxSeenEventIds;){const r=this.seenEventIdQueue.shift();r&&this.seenEventIds.delete(r)}}}function II(e){const{enabled:t,workspaceId:r,websocketUrl:n,reconnectBaseMs:s=400,reconnectMaxMs:i=1e4,degradeAfterAttempts:l=5,replayLimit:c=200,onSignal:d,onTelemetry:m,userId:f}=e,[g,h]=o.useState("degraded-fallback"),y=o.useRef(null),k=o.useRef(null),v=o.useRef(0),A=o.useRef(""),b=o.useRef(!1),w=o.useRef(null),P=o.useRef(null),E=o.useRef(new UP),D=o.useRef(d),j=o.useRef(m);o.useEffect(()=>{D.current=d},[d]),o.useEffect(()=>{j.current=m},[m]);const[S,L]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),_=o.useMemo(()=>String(r||"").trim(),[r]),T=o.useMemo(()=>String(n||"").trim(),[n]);return o.useEffect(()=>{let z=!1;const Y=()=>{k.current!==null&&(window.clearTimeout(k.current),k.current=null)},H=()=>{const ye=y.current;if(y.current=null,ye)try{ye.close()}catch{}},M=ye=>ye==="taskforce:replay-gap"||ye==="taskforce:replay-reset"?4:ye==="taskforce:mutation"||ye==="taskforce:replay"?3:1,oe=ye=>{const ge=P.current;if(ge){const se=M(ge.type),ie=M(ye.type);if(ie<se)return;ie===se&&(ye={...ye,eventIds:Array.from(new Set([...ge.eventIds||[],...ge.eventId?[ge.eventId]:[],...ye.eventIds||[],...ye.eventId?[ye.eventId]:[]])),invalidations:[...ge.invalidations||[],...ye.invalidations||[]]})}P.current=ye,w.current!==null&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{w.current=null;const se=D.current;if(!P.current||typeof se!="function")return;const ie=P.current;P.current=null,se(ie)},80)},K=ye=>{try{const ge=JSON.parse(String(ye.data||""));return!ge||typeof ge!="object"?null:ge}catch{return null}},Q=ye=>{const ge=typeof ye.serverEpoch=="string"?ye.serverEpoch.trim():"",se=Number(ye.seq);!ge||!Number.isFinite(se)||se<0||(A.current=`${ge}:${Math.floor(se)}`,b.current=!1)},ee=ye=>{const ge=typeof ye.entityType=="string"?ye.entityType.trim():"";if(!ge)return null;const se=Array.isArray(ye.affectedCollections)?ye.affectedCollections.map(me=>typeof me=="string"?me.trim():"").filter(Boolean):void 0,ie=Number(ye.dataVersion);return{entityType:ge,changeType:typeof ye.changeType=="string"?ye.changeType.trim():void 0,entityIds:Array.isArray(ye.entityIds)?ye.entityIds.map(me=>typeof me=="string"?me.trim():"").filter(Boolean):[],affectedCollections:se,lifecycleTransition:typeof ye.lifecycleTransition=="string"?ye.lifecycleTransition.trim():void 0,dataVersion:Number.isFinite(ie)?ie:void 0}},fe=()=>{const ye=E.current.getTelemetry();L(ye);const ge=j.current;typeof ge=="function"&&ge(ye)},_e=ye=>{const ge={type:"taskforce:replay",workspaceId:_,limit:c},se=A.current;se&&(ge.cursor=se),ye.send(JSON.stringify(ge))},$e=()=>{if(!t||z)return;Y(),v.current+=1;const ye=v.current,ge=Math.max(50,Math.floor(s)),se=Math.max(ge,Math.floor(i)),ie=Math.min(se,ge*Math.pow(2,Math.max(0,ye-1)));h(ye>=l?"degraded-fallback":"reconnecting"),k.current=window.setTimeout(()=>{z||(k.current=null,Ye())},ie)},Ye=()=>{if(!t||z||!_||!T)return;H();let ye;try{ye=new WebSocket(T)}catch{$e();return}y.current=ye,ye.addEventListener("open",()=>{v.current=0,h("connected"),ye.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:_,userId:f||void 0})),_e(ye)}),ye.addEventListener("message",ge=>{const se=K(ge);if(!se||typeof se.type!="string")return;const ie=typeof se.workspaceId=="string"?se.workspaceId.trim():_;if(!(!ie||ie!==_)){if(se.type==="taskforce:update"){oe({type:"taskforce:update",workspaceId:_,eventId:typeof se.eventId=="string"?se.eventId.trim():void 0});return}if(se.type==="taskforce:mutation"){const me=E.current.process({eventId:se.eventId,serverEpoch:se.serverEpoch,seq:se.seq});if(!me.accepted){fe(),me.shouldRecover&&(A.current="",b.current||(b.current=!0,oe({type:"taskforce:replay-gap",workspaceId:_})));return}Q(se),fe();const $=ee(se);oe({type:se.type,workspaceId:_,eventId:typeof se.eventId=="string"?se.eventId.trim():void 0,invalidations:$?[$]:void 0});return}if(se.type==="taskforce:replay"){const me=Array.isArray(se.events)?se.events:[];let $=0;const V=[],B=[];for(const N of me){if(!E.current.process({eventId:N.eventId,serverEpoch:N.serverEpoch,seq:N.seq}).accepted)continue;$+=1,Q(N);const Ae=ee(N);Ae&&V.push(Ae),typeof N.eventId=="string"&&N.eventId.trim()&&B.push(N.eventId.trim())}b.current=!1,fe(),($>0||se.truncated===!0)&&oe({type:"taskforce:replay",workspaceId:_,eventIds:B,invalidations:V}),se.truncated===!0&&_e(ye);return}if(se.type==="taskforce:replay-gap"||se.type==="taskforce:replay-reset"){if(A.current="",b.current)return;b.current=!0,oe({type:se.type,workspaceId:_})}}}),ye.addEventListener("close",ge=>{if(y.current===ye&&(y.current=null),!z&&t){const se=Number(ge?.code||0),ie=String(ge?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${_} user=${String(f||"anonymous").trim()||"anonymous"} code=${se}${ie?` reason=${ie}`:""}`)}$e()}),ye.addEventListener("error",()=>{try{ye.close()}catch{}})};return!t||!_||!T?(h("degraded-fallback"),Y(),H(),()=>{Y(),H()}):(h("reconnecting"),Ye(),()=>{z=!0,Y(),w.current!==null&&(window.clearTimeout(w.current),w.current=null),P.current=null,H()})},[t,_,T,s,i,l,c,f]),{connectionState:g,telemetry:S}}const Rv="taskforce:context-assets-mutated";function zP(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Rv,{detail:e}))}const Pv="taskforce:ai-profiles-mutated";function _I(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Pv,{detail:e}))}const jv="taskforce:agents-mutated";function TI(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(jv,{detail:e}))}const Ev="taskforce:agent-skills-mutated";function xI(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(Ev,{detail:e}))}const HP=4,Oh=100;function Bm(e,t,r){if(e===null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:String(e);if(typeof e=="bigint")return e.toString();if(e instanceof Date)return e.toISOString();if(t>=HP)return"[MaxDepth]";if(typeof e=="function"||typeof e=="symbol"||typeof e>"u")return String(e);if(Array.isArray(e))return e.slice(0,Oh).map(n=>Bm(n,t+1,r));if(e instanceof Set)return Array.from(e.values()).slice(0,Oh).map(n=>Bm(n,t+1,r));if(e instanceof Map){const n={};for(const[s,i]of Array.from(e.entries()).slice(0,Oh))n[String(s)]=Bm(i,t+1,r);return n}if(typeof e=="object"){if(r.has(e))return"[Circular]";r.add(e);const n={};for(const[s,i]of Object.entries(e).slice(0,Oh))n[s]=Bm(i,t+1,r);return r.delete(e),n}return String(e)}function uy(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return Bm(e,0,new WeakSet)}function RI(e){const t=uy(e);if(!t)return"null";try{return JSON.stringify(t)}catch{return"[UnserializableSyncEventDetails]"}}const PI="anthropic",VP="anthropic.claude-sonnet-4-6",jI=[{key:"anthropic",label:"Anthropic"},{key:"openai",label:"OpenAI"},{key:"google",label:"Google"},{key:"xai",label:"xAI"},{key:"deepseek",label:"DeepSeek"},{key:"meta",label:"Meta"},{key:"mistral",label:"Mistral AI"},{key:"amazon",label:"Amazon"}],Lw=[{key:VP,providerKey:"anthropic",label:"Claude Sonnet 4.6",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.anthropic.claude-sonnet-4-6",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"anthropic.claude-haiku-4-5",providerKey:"anthropic",label:"Claude Haiku 4.5",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.anthropic.claude-haiku-4-5-20251001-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"anthropic.claude-sonnet-5",providerKey:"anthropic",label:"Claude Sonnet 5",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"balanced",runtimeModelId:"anthropic.claude-sonnet-5",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"anthropic.claude-fable-5",providerKey:"anthropic",label:"Claude Fable 5",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"advanced",runtimeModelId:"anthropic.claude-fable-5",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"anthropic.claude-opus-4-8",providerKey:"anthropic",label:"Claude Opus 4.8",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"advanced",runtimeModelId:"anthropic.claude-opus-4-8",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"amazon.nova-lite",providerKey:"amazon",label:"Nova Lite",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.amazon.nova-lite-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"amazon.nova-2-lite",providerKey:"amazon",label:"Nova 2 Lite",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.amazon.nova-2-lite-v1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"amazon.nova-pro",providerKey:"amazon",label:"Nova Pro",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.amazon.nova-pro-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"deepseek.v3-2",providerKey:"deepseek",label:"DeepSeek V3.2",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"deepseek.v3.2",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"google.gemma-3-12b-it",providerKey:"google",label:"Gemma 3 12B IT",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"google.gemma-3-12b-it",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"meta.llama-3-3-70b-instruct",providerKey:"meta",label:"Llama 3.3 70B Instruct",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.meta.llama3-3-70b-instruct-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"meta.llama-4-scout-17b-instruct",providerKey:"meta",label:"Llama 4 Scout 17B Instruct",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.meta.llama4-scout-17b-instruct-v1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"mistral.large-3",providerKey:"mistral",label:"Mistral Large 3",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"mistral.mistral-large-3-675b-instruct",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"xai.grok-4-3",providerKey:"xai",label:"Grok 4.3",source:"bedrock",runtime:"bedrock-mantle",defaultTier:"advanced",runtimeModelId:"xai.grok-4.3",availability:"verified",visible:!0,supportsTemperature:!1,defaultMaxTokens:1024},{key:"openai.gpt-oss-120b",providerKey:"openai",label:"gpt-oss-120b",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"openai.gpt-oss-120b-1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"openai.codex-gpt-5-6-sol",providerKey:"openai",label:"Codex GPT-5.6 Sol",source:"subscription_dev",runtime:"subscription-dev",defaultTier:"advanced",runtimeModelId:"gpt-5.6-sol",availability:"configured",visible:!0,supportsTemperature:!1,defaultMaxTokens:1024,devOnly:!0},{key:"openai.gpt-5-4",providerKey:"openai",label:"GPT-5.4",source:"bedrock",runtime:"bedrock-mantle",defaultTier:"advanced",runtimeModelId:"openai.gpt-5.4",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024}];function CS(e){const t=String(e||"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"}function GP(){const e=globalThis;return CS(e.__TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS__)||CS(e.process?.env?.TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS)}function KP(e){return e.visible&&e.availability!=="account_unavailable"&&(!e.devOnly||GP())}function Xre(e){const t=String(e||"").trim();return Lw.find(r=>r.key===t)||null}function Ow(e){const t=String(e||"").trim().toLowerCase();return jI.some(r=>r.key===t)?t:PI}function qP(e){const t=Ow(e);return Lw.filter(r=>r.providerKey===t&&ZP(r))}function YP(e,t){const r=String(e||"").trim(),n=qP(t??PI);return n.some(s=>s.key===r)?r:n[0]?.key||""}function ZP(e){return KP(e)}function Qre(e){const t=Ow(e);return jI.find(r=>r.key===t)?.label||"Anthropic"}function ene(e){const t=String(e||"").trim();return Lw.find(r=>r.key===t)?.label||t||"No configured model"}const EI="taskforce.userGlobalSyncMeta.v1",JP="taskforce.syncDebug.v1",XP=12e4,NI="taskforce.syncWatermarks.v3",QP=300*1e3,IS="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function Zc(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function ej(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(JP)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Ds(e,t){if(!ej())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function tj(e){const t=e?.providerMetadata??e?.provider_metadata??null;return{id:String(e?.id||"").trim(),workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),profileToken:String(e?.profileToken||e?.profile_token||"").trim(),name:String(e?.name||"").trim(),username:String(e?.username||"").trim(),icon:String(e?.icon||"Bot").trim()||"Bot",color:String(e?.color||"#8b5cf6").trim()||"#8b5cf6",avatarUrl:cf(e?.avatarUrl??e?.avatar_url),avatarSourceUrl:cf(e?.avatarSourceUrl??e?.avatar_source_url),avatarRevision:Number.isFinite(Number(e?.avatarRevision??e?.avatar_revision))?Math.max(0,Math.floor(Number(e?.avatarRevision??e?.avatar_revision))):0,avatarUpdatedAt:bs(e?.avatarUpdatedAt??e?.avatar_updated_at),description:qn(e?.description),role:qn(e?.role),provider:qn(e?.provider),model:qn(e?.model),surfaceType:yI(e?.surfaceType??e?.surface_type),seatScope:kI(e?.seatScope??e?.seat_scope),providerMetadata:t&&typeof t=="object"&&!Array.isArray(t)?t:null,archivedAt:bs(e?.archivedAt??e?.archived_at),archivedBy:el(e?.archivedBy??e?.archived_by),archivedReason:qn(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:el(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:bs(e?.rosterStateUpdatedAt??e?.roster_state_updated_at),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),lastActiveAt:bs(e?.lastActiveAt??e?.last_active_at)}}function rj(e){const t=String(e?.modelTier||e?.model_tier||"").trim().toLowerCase();return{id:String(e?.id||"").trim(),tenantId:String(e?.tenantId||e?.tenant_id||"").trim()||void 0,workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),name:String(e?.name||"Agent").trim()||"Agent",modelProvider:"taskforce_hq",providerKey:Ow(e?.providerKey??e?.provider_key),modelKey:YP(e?.modelKey??e?.model_key,e?.providerKey??e?.provider_key),modelTier:t==="fast"||t==="advanced"?t:"balanced",systemPrompt:typeof(e?.systemPrompt??e?.system_prompt)=="string"?String(e?.systemPrompt??e?.system_prompt):"",enabled:(e?.enabled??!0)!==!1&&Number(e?.enabled??1)!==0,createdByUserId:el(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:el(e?.updatedByUserId??e?.updated_by_user_id),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),deletedAt:bs(e?.deletedAt??e?.deleted_at)}}function nj(e){const t=Array.isArray(e?.messages)?e.messages.map(n=>({role:n?.role==="assistant"?"assistant":"user",content:String(n?.content||"").trim()})).filter(n=>n.content.length>0):[],r=(e?.usage??e?.usage_json)&&typeof(e?.usage??e?.usage_json)=="object"?e?.usage??e?.usage_json:null;return{id:String(e?.id||"").trim(),tenantId:String(e?.tenantId||e?.tenant_id||"").trim()||void 0,workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),agentId:String(e?.agentId||e?.agent_id||"").trim(),taskId:el(e?.taskId??e?.task_id),title:String(e?.title||"Agent chat").trim()||"Agent chat",messages:t,modelProvider:qn(e?.modelProvider??e?.model_provider),modelId:qn(e?.modelId??e?.model_id),usage:r,latencyMs:Number.isFinite(Number(e?.latencyMs??e?.latency_ms))?Number(e?.latencyMs??e?.latency_ms):null,createdByUserId:el(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:el(e?.updatedByUserId??e?.updated_by_user_id),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),deletedAt:bs(e?.deletedAt??e?.deleted_at)}}function _S(){if(typeof window>"u")return{};try{const e=window.localStorage.getItem(EI);if(!e)return{};const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function aj(e){if(!(typeof window>"u"))try{window.localStorage.setItem(EI,JSON.stringify(e))}catch{}}function sj(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function oj(e){return e.flatMap(t=>{const r=String(t?.id||"").trim();return!r||!Array.isArray(t?.comments)?[]:t.comments.map(n=>({id:String(n?.id||"").trim(),sessionId:r,body:String(n?.body||""),anchor:n?.anchor??null,order:Number.isFinite(Number(n?.order))?Math.max(0,Math.floor(Number(n.order))):0,authorActorId:typeof n?.authorActorId=="string"&&n.authorActorId.trim().length>0?n.authorActorId.trim():null,updatedByActorId:typeof n?.updatedByActorId=="string"&&n.updatedByActorId.trim().length>0?n.updatedByActorId.trim():null,deletedByActorId:typeof n?.deletedByActorId=="string"&&n.deletedByActorId.trim().length>0?n.deletedByActorId.trim():null,createdAt:String(n?.createdAt||"").trim(),updatedAt:String(n?.updatedAt||n?.createdAt||"").trim(),deletedAt:typeof n?.deletedAt=="string"&&n.deletedAt.trim().length>0?n.deletedAt.trim():null})).filter(n=>n.id.length>0&&n.sessionId.length>0)})}function DI(e){return{taskIds:Array.from(e.taskIds.values()),taskWatermarks:Array.from(e.taskWatermarks.entries()),taskChangeKeys:Array.from((e.taskChangeKeys||new Map).entries()),taskRelationshipChangeKeys:Array.from((e.taskRelationshipChangeKeys||new Map).entries()),initiativeWatermarks:Array.from(e.initiativeWatermarks.entries()),workstreamWatermarks:Array.from(e.workstreamWatermarks.entries()),planningIdentityWatermarks:Array.from((e.planningIdentityWatermarks||new Map).entries()),aiProfileWatermarks:Array.from(e.aiProfileWatermarks.entries()),aiProfileChangeKeys:Array.from((e.aiProfileChangeKeys||new Map).entries()),taskforceAgentWatermarks:Array.from((e.taskforceAgentWatermarks||new Map).entries()),taskforceAgentSkillWatermarks:Array.from((e.taskforceAgentSkillWatermarks||new Map).entries()),agentConversationWatermarks:Array.from((e.agentConversationWatermarks||new Map).entries()),documentWatermarks:Array.from(e.documentWatermarks.entries()),assetWatermarks:Array.from(e.assetWatermarks.entries()),documentReviewSessionWatermarks:Array.from(e.documentReviewSessionWatermarks.entries()),documentReviewCommentWatermarks:Array.from(e.documentReviewCommentWatermarks.entries()),annotatedAttachmentSessionWatermarks:Array.from(e.annotatedAttachmentSessionWatermarks.entries()),taskEventWatermarks:Array.from(e.taskEventWatermarks.entries()),taxonomyStateFingerprint:typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",taxonomyChangeKey:typeof e.taxonomyChangeKey=="string"?e.taxonomyChangeKey:""}}function MI(e,t){if(!e||typeof e!="object")return null;const r=typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",n=!t||!r||r===t?new Map(Array.isArray(e.taskWatermarks)?e.taskWatermarks:[]):new Map;return{taskIds:new Set(Array.isArray(e.taskIds)?e.taskIds.map(i=>String(i||"").trim()).filter(i=>i.length>0):Array.from(n.keys())),taskWatermarks:n,taskChangeKeys:new Map(Array.isArray(e.taskChangeKeys)?e.taskChangeKeys:[]),taskRelationshipChangeKeys:new Map(Array.isArray(e.taskRelationshipChangeKeys)?e.taskRelationshipChangeKeys:[]),initiativeWatermarks:new Map(Array.isArray(e.initiativeWatermarks)?e.initiativeWatermarks:[]),workstreamWatermarks:new Map(Array.isArray(e.workstreamWatermarks)?e.workstreamWatermarks:[]),planningIdentityWatermarks:new Map(Array.isArray(e.planningIdentityWatermarks)?e.planningIdentityWatermarks:[]),aiProfileWatermarks:new Map(Array.isArray(e.aiProfileWatermarks)?e.aiProfileWatermarks:[]),aiProfileChangeKeys:new Map(Array.isArray(e.aiProfileChangeKeys)?e.aiProfileChangeKeys:[]),taskforceAgentWatermarks:new Map(Array.isArray(e.taskforceAgentWatermarks)?e.taskforceAgentWatermarks:[]),taskforceAgentSkillWatermarks:new Map(Array.isArray(e.taskforceAgentSkillWatermarks)?e.taskforceAgentSkillWatermarks:[]),agentConversationWatermarks:new Map(Array.isArray(e.agentConversationWatermarks)?e.agentConversationWatermarks:[]),documentWatermarks:new Map(Array.isArray(e.documentWatermarks)?e.documentWatermarks:[]),assetWatermarks:new Map(Array.isArray(e.assetWatermarks)?e.assetWatermarks:[]),documentReviewSessionWatermarks:new Map(Array.isArray(e.documentReviewSessionWatermarks)?e.documentReviewSessionWatermarks:[]),documentReviewCommentWatermarks:new Map(Array.isArray(e.documentReviewCommentWatermarks)?e.documentReviewCommentWatermarks:[]),annotatedAttachmentSessionWatermarks:new Map(Array.isArray(e.annotatedAttachmentSessionWatermarks)?e.annotatedAttachmentSessionWatermarks:[]),taskEventWatermarks:new Map(Array.isArray(e.taskEventWatermarks)?e.taskEventWatermarks:[]),taxonomyChangeKey:typeof e.taxonomyChangeKey=="string"?e.taxonomyChangeKey:""}}function zk(e,t){if(typeof window>"u")return null;try{const r=`${NI}.${e}`,n=window.localStorage.getItem(r);if(!n)return null;const s=JSON.parse(n);return!s||s.v!==2&&s.v!==3&&s.v!==4&&s.v!==5&&s.v!==6&&s.v!==7&&s.v!==8&&s.v!==9&&s.v!==10&&s.v!==11&&s.v!==12?null:MI(s,t)}catch{return null}}function TS(e,t){if(typeof window>"u")return!1;try{const r=`${NI}.${e}`;return window.localStorage.setItem(r,JSON.stringify({v:12,savedAt:new Date().toISOString(),...DI(t)})),!0}catch{return!1}}function ij({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:r,setWorkspaceSyncBusy:n,setUserGlobalSyncStatus:s,setUserGlobalSyncError:i,setWorkspaceLastErrorMessage:l,setWorkspaceLastErrorAt:c,reportSyncEvent:d,setAuthBlocked:m,setIsAuthenticated:f,checkAuthSession:g,ensureCloudWorkspaceReadyForSync:h,scheduleWorkspaceSyncRetry:y,persistWorkspaceSyncPatchSafely:k}){const v=async(b,w)=>{r(),n(!1),s("error");const P="Session expired. Sign in again to resume cloud sync.";i(P),l(P),c(new Date().toISOString()),d(e,{eventType:b==="handshake"?"handshake":b,status:"error",statusCode:w,errorMessage:P}),m(!0),f(!1),await g()};return{handleSyncAuthFailure:v,ensureWorkspaceSyncReady:async()=>{if(!Zc(e)){const P="Workspace sync blocked: local workspace ID is unresolved.";return l(P),c(new Date().toISOString()),i(P),s("error"),!1}const b=await h();if(b.success)return!0;if(b.statusCode===401)return await v("handshake",401),!1;const w=b.error||"Workspace sync handshake failed.";return l(w),c(new Date().toISOString()),i(w),s("error"),d(e,{eventType:"handshake",status:"error",statusCode:b.statusCode,errorMessage:w}),b.transient||di(b.statusCode)?y(b.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&k({phase:"error",lastErrorMessage:w}),!1}}}const LI=5*6e4;function Hk(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function gp(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function cj({enabled:e,phase:t,busy:r,retryAt:n,lastErrorMessage:s,lastErrorAt:i,lastPullAt:l,lastPushAt:c,nowMs:d,pullLagToleranceMs:m=LI,pendingChanges:f=0,durableOutbox:g}){if(!e)return{status:"off",summary:"Sync is turned off for this workspace.",recommendedAction:"Turn on sync when you are ready to back up this workspace."};if(t==="provision-local")return{status:"syncing",summary:r?"Uploading this workspace to cloud for the first time.":"Preparing the first upload to cloud.",recommendedAction:"Keep this window open while the first upload finishes."};if(t==="attach-cloud")return{status:"syncing",summary:r?"Pulling the cloud workspace into this device.":"Waiting for the first cloud pull into this device.",recommendedAction:"Keep this window open for the first cloud pull. If it does not move, press Repair."};if((g?.blocked||0)>0){const A=g?.blocked||0,b=g?.pending||0;return{status:"attention",summary:`${A} durable local change${A===1?"":"s"} could not sync${b>0?`; ${b} later change${b===1?" is":"s are"} waiting`:""}.`,recommendedAction:"Press Repair to reconcile and replay supported task changes. If Repair is blocked, copy the report for diagnosis."}}if(g?.recovery&&g.recovery.state!=="completed")return g.recovery.state==="awaiting_baseline"?{status:"attention",summary:"Durable local recovery is waiting for an authoritative cloud repair.",recommendedAction:"Press Repair to resume the verified cloud baseline and replay."}:g.recovery.replayBlocked>0?{status:"attention",summary:"A recovered local change is still blocked during replay.",recommendedAction:"Copy the Sync Manager report so the replay conflict can be diagnosed safely."}:{status:"syncing",summary:"Recovered local changes are replaying against the repaired cloud baseline.",recommendedAction:"No action needed unless the recovery state remains unchanged."};if(n)return{status:"attention",summary:"Sync hit a temporary problem and will retry automatically.",recommendedAction:"Wait for the automatic retry."};if(s||t==="error")return{status:"attention",summary:"Sync needs attention before it can continue.",recommendedAction:"Keep sync enabled. If the same error keeps returning, press Repair."};if(f>0||(g?.pending||0)>0||(g?.inFlight||0)>0)return{status:"syncing",summary:"Local changes are waiting to sync.",recommendedAction:"No action needed unless the queue remains unchanged."};if(r)return{status:"syncing",summary:"Sync is currently running.",recommendedAction:"No action needed."};const h=Hk(l),y=Hk(c),k=Hk(i);return h===null?{status:"attention",summary:y===null?"This device has not completed its first cloud pull.":"Cloud uploads are working, but this device has not completed a cloud pull.",recommendedAction:"Keep sync enabled. If the cloud check still does not complete, press Repair and copy the report."}:k!==null&&k>h?{status:"attention",summary:"A sync issue occurred after the last successful cloud pull.",recommendedAction:"Wait for the automatic retry. If the issue returns, copy the report."}:Number.isFinite(d)&&d-h>Math.max(0,m)?{status:"attention",summary:y!==null&&y>h?"Cloud uploads are succeeding, but this device has not received cloud changes recently.":"This device has not checked for cloud changes recently.",recommendedAction:"Keep sync enabled. If Last cloud check does not advance, press Repair and copy the report."}:{status:"healthy",summary:"A recent cloud check succeeded and no local changes are waiting.",recommendedAction:"No action needed."}}function lj(e){return gp(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function dj(e){return gp(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function uj(e){return gp(e)?e.workspaceSyncPhase==="provision-local"||e.workspaceSyncPhase==="error"||e.retryPending?{shouldStart:!1,shouldKickOffImmediately:!1}:{shouldStart:!0,shouldKickOffImmediately:e.workspaceSyncPhase==="attach-cloud"||!e.lastPullAt}:{shouldStart:!1,shouldKickOffImmediately:!1}}function fj(e){return gp(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function mj(e){return gp(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function pj(e){const{workspaceSyncPhase:t,lastBootstrapPhase:r,workspaceLastPullAt:n}=e;return t==="provision-local"?"provision-local":t==="attach-cloud"?"attach-cloud":t==="active"||r==="active"?"active":r==="provision-local"||r==="attach-cloud"?r:n?"attach-cloud":"provision-local"}function hj({workspaceSyncPhase:e,lastBootstrapPhaseRef:t,bootstrapPhaseStartedAtRef:r,bootstrapLastProgressAtRef:n}){if(e==="attach-cloud"||e==="provision-local"){t.current=e,r.current===null&&(r.current=Date.now()),n.current=null;return}r.current=null,n.current=null}function gj({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspacePullInFlightRef:n,workspacePushInFlightRef:s,bootstrapPhaseStartedAtRef:i,bootstrapLastProgressAtRef:l,isExecutionAuthorized:c=()=>!0,setWorkspaceLastErrorMessage:d,setWorkspaceLastErrorAt:m,setUserGlobalSyncStatus:f,setUserGlobalSyncError:g,setWorkspaceSyncBusy:h,persistWorkspaceSyncPatchSafely:y}){if(!c()||!t||r!=="attach-cloud"&&r!=="provision-local")return;const k=window.setInterval(()=>{if(!c()||r!=="attach-cloud"&&r!=="provision-local"||n.current||s.current)return;const v=Math.max(i.current??0,l.current??0);if(v>0&&Date.now()-v<XP)return;const b=`Workspace sync ${r==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(b),m(new Date().toISOString()),f("error"),g(b),h(!1),y({phase:"error",lastErrorMessage:b}),Ds("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:r})},1e4);return()=>window.clearInterval(k)}function yj(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}const Bw={allowed:!0};function As(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function Ww(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?As("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!yj(e.currentWorkspaceId)?As("invalid-workspace"):null:As("sync-disabled"):As("cloud-auth-unconfigured")}function Nv(e){const t=Ww(e);return t||(e.repairModeActive&&!e.repairModeBypass?As("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"&&!e.repairModeBypass?As("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?As("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?As("pull-in-flight",{retainPendingSignature:!0}):Bw:As("auth-required"))}function Dv(e){const t=Ww(e);return t||(e.repairModeActive&&!e.repairModeBypass?As("repair-active"):e.workspaceSyncPhase==="provision-local"?As("provision-local"):e.retryPending?As("retry-pending"):e.isAuthenticated?e.pullInFlight?As("pull-in-flight"):e.pushInFlight?As("push-in-flight"):Bw:As("auth-required"))}function Mv(e){const t=Ww(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?Bw:As("auth-required"))}function kj(e){return As("lease-held",{retainPendingSignature:e==="push"})}const vj=512;function wj({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:r,workspaceSyncPhase:n,workspacePullInFlightRef:s,realtimePullDebounceRef:i,realtimeSuppressedEventIdsRef:l,clearWorkspaceRetry:c,isWorkspaceRetryPending:d,isExecutionAuthorized:m=()=>!0,isServerOwned:f=()=>!1,signalServerWake:g,pullWorkspaceChangesFromCloud:h}){const y=new Set;let k=!1,v=!1,A=null,b=!1;const w=()=>{if(v||!f())return;const _=b?[]:A;_&&(b=!1,A=null,v=!0,g?.(_).catch(()=>{}).finally(()=>{v=!1,w()}))},P=_=>{if(!b){if(!v&&A===null){A=_,w();return}if(A===null){A=_;return}A=null,b=!0}},E=()=>{A=null,b=!0,w()},D=()=>{if(!k&&y.size===0)return;const _=k?[]:Array.from(y);y.clear(),k=!1,_.length===0?E():P(_)};return{handleRealtimeSignal:_=>{if(!e||t!=="local"||!r||n==="provision-local")return;const T=Array.from(new Set([..._?.eventIds||[],..._?.eventId?[_.eventId]:[]].map(Y=>String(Y||"").trim()).filter(Boolean)));let z=T.length===0;for(const Y of T)l.current.delete(Y)||(z=!0);if(z){if(f()){if(T.length===0)k=!0;else if(!k)for(const Y of T)y.add(Y),y.size>=vj&&(P(Array.from(y)),y.clear());i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,D()},180);return}m()&&(s.current||(d()&&c(),i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,m()&&h()},180)))}},recordSuppressedEventIds:(_,T)=>{const z=T?.queueRef,Y=Number.isFinite(T?.maxQueueSize)?Math.max(1,Number(T?.maxQueueSize)):2048,H=Number.isFinite(T?.ttlMs)?Math.max(0,Number(T?.ttlMs)):null;for(const M of _){const oe=String(M||"").trim();!oe||l.current.has(oe)||(l.current.add(oe),z&&z.current.push(oe),H!==null&&window.setTimeout(()=>{l.current.delete(oe)},H))}if(z)for(;z.current.length>Y;){const M=z.current.shift();M&&l.current.delete(M)}},clearRealtimePullDebounce:()=>{i.current!==null&&(window.clearTimeout(i.current),i.current=null),y.clear(),k=!1,A=null,b=!1}}}function OI(e){e.lastPushedTaskIds.current=new Set,e.lastPushedWatermarks.current=new Map,e.lastPushedTaskChangeKeys.current=new Map,e.lastPushedTaskRelationshipChangeKeys.current=new Map,e.lastPushedTaxonomyChangeKey.current="",e.lastPushedInitiativeIds.current=new Set,e.lastPushedInitiativeWatermarks.current=new Map,e.lastPushedWorkstreamIds.current=new Set,e.lastPushedWorkstreamWatermarks.current=new Map,e.lastPushedPlanningIdentityWatermarks.current=new Map,e.lastPushedAiProfileIds.current=new Set,e.lastPushedAiProfileWatermarks.current=new Map,e.lastPushedAiProfileChangeKeys.current=new Map,e.lastPushedDocumentPaths.current=new Set,e.lastPushedDocumentWatermarks.current=new Map,e.lastPushedAssetPaths.current=new Set,e.lastPushedAssetWatermarks.current=new Map,e.baselineResetReason.current="repair-reset"}function bj(e){OI(e),e.lastPushedDocumentReviewSessionIds.current=new Set,e.lastPushedDocumentReviewSessionWatermarks.current=new Map,e.lastPushedDocumentReviewCommentIds.current=new Set,e.lastPushedDocumentReviewCommentWatermarks.current=new Map,e.lastPushedAnnotatedAttachmentSessionIds.current=new Set,e.lastPushedAnnotatedAttachmentSessionWatermarks.current=new Map,e.lastPushedTaskEventWatermarks.current=new Map}async function Sj(e){const t=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return Array.from(new Uint8Array(t),r=>r.toString(16).padStart(2,"0")).join("")}function Aj({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspaceLastPullAt:n,runtime:s,localServices:i,acquireWorkspaceSyncLease:l,releaseWorkspaceSyncLease:c,forceClearWorkspaceSyncLease:d,clearWorkspaceRetry:m,clearWorkspaceIssue:f,reportWorkspaceWindowContention:g,reportSyncEvent:h,persistWorkspaceSyncPatch:y,persistWorkspaceSyncWatermarksSnapshotBestEffort:k,buildWorkspaceSyncSignature:v,pullWorkspaceChangesFromCloud:A,pushWorkspaceChangesToCloud:b,cloudAuthConfigured:w,runtimeMode:P,isAuthenticated:E,checkAuthSession:D,isExecutionAuthorized:j=()=>!0,coordinatorGeneration:S=null}){const L=s.lastBootstrapPhase,_=s.repairMode,T=s.forceFullAiProfilePush,z=s.startupRepairRan,Y=s.startupFullReconcileRan,H=s.fullReconcileInFlight,M=s.pullCursor,oe=s.attachBootstrapBaselineSignature,K=s.captureAttachBootstrapBaseline,Q=s.pendingSignature,ee=s.pendingPushReplay,fe=s.lastPushedSignature;s.baselineResetReason;const _e=s.bootstrapPhaseStartedAtMs,$e=s.bootstrapLastProgressAtMs,Ye=r==="provision-local"?"push":r==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{if(!j())return!1;m();let se=Mv({cloudAuthConfigured:w,runtimeMode:P,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:E});if(!se.allowed&&se.reason==="auth-required"){if(!await D())return h(e,{eventType:Ye,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:r}}),!1;se=Mv({cloudAuthConfigured:w,runtimeMode:P,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!se.allowed)return h(e,{eventType:Ye,status:"error",errorMessage:`Manual sync retry blocked: ${se.reason}.`,details:{source:"retry.blocked",reason:se.reason,phase:r}}),!1;if(T.current=!0,r==="provision-local"){const V=v();return V?b(V,{forceAllAiProfiles:!0}):!1}const ie=ee.current;if(r==="active"&&ie)return Q.current=ie.signature,b(ie.signature,{forceAllAiProfiles:ie.forceAllAiProfiles,repairMode:ie.repairMode});const me=await A();if(r==="attach-cloud")return me;const $=v();if($){Q.current=$;const V=await b($,{forceAllAiProfiles:T.current===!0});return me||V}return me},resetWorkspaceSyncCursorAndPull:async()=>{if(!j())return;if(!await l(e,"repair")&&(d(e),!await l(e,"repair"))){g("repair"),h(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because another window is already syncing this workspace.",details:{source:"repair.blocked",reason:"lease-held",phase:r}});return}const ie=pj({workspaceSyncPhase:r,lastBootstrapPhase:L.current,workspaceLastPullAt:n}),me=ie==="provision-local",$=ie==="active"||ie==="attach-cloud";m(),f();try{if(!t){h(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because workspace sync is turned off.",details:{source:"repair.blocked",reason:"sync-disabled",phase:r}});return}let V=null;if(ie!=="provision-local")try{V=await i.prepareOutboxRecovery(e)}catch(Ae){h(e,{eventType:"bootstrap",status:"error",errorMessage:String(Ae?.message||"Blocked local changes could not enter recovery."),details:{source:"repair.local-recovery-blocked",phase:r}});return}if(_e.current=null,$e.current=null,M.current=null,oe.current="",K.current=!1,Q.current="",fe.current="",T.current=!1,z.current=!1,Y.current=!1,H.current=!1,me&&(bj(s),k()),_.current=!0,h(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:r,repairPhase:ie,lastBootstrapPhase:L.current}}),await y({phase:ie,pullCursor:null,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),ie==="provision-local"){const Ae=v();if(!Ae)return;await b(Ae,{forceAllAiProfiles:!0,repairMode:!0});return}const B=await A({repairMode:!0,...V?.kind==="recovery"&&V.needsAuthoritativeRepair?{forceV3AuthoritativeRepair:!0,recoveryBatchId:V.recoveryBatchId}:{}});if(ie!=="active"&&ie!=="attach-cloud"||!B)return;$&&(OI(s),k());const N=v();if(!N)return;if(Q.current=N,await b(N,{forceAllAiProfiles:!0,repairMode:!0})&&S!==null&&i.completeAuthoritativeRepair){const Ae=await i.completeAuthoritativeRepair({workspaceId:e,coordinatorGeneration:S,repairId:`repair-${globalThis.crypto.randomUUID()}`,stateSignatureSha256:await Sj(N)});(!Ae.ok||Ae.data?.success!==!0)&&h(e,{eventType:"bootstrap",status:"error",statusCode:Ae.status,errorMessage:String(Ae.data?.error||"Authoritative repair could not settle coordinator recovery."),details:{source:"repair.coordinator-recovery-settlement-failed",phase:r,code:Ae.data?.code||null}})}}finally{_.current=!1,c(e)}}}}function Cj({workspaceSyncPhase:e,forceCursorNull:t,currentCursor:r}){const n=e==="attach-cloud";return{bootstrap:n,cursor:n||t===!0?null:r,successEventType:n?"bootstrap":"pull"}}function Ij({workspaceSyncPhase:e,forceCursorNull:t,repairMode:r,startupFullReconcileRan:n,pendingSignature:s,fallbackSignature:i,lastPushedSignature:l}){const c=e==="attach-cloud",d=c&&r===!0,m=s||i,f=!c&&m&&m!==l?m:null;return{successEventType:c?"bootstrap":"pull",shouldCaptureAttachBootstrapBaseline:c&&!d,shouldClearPendingSignature:c||f!==null,shouldRefreshReferenceSnapshots:c,shouldSeedWorkspaceSnapshotPushBaseline:c&&!d,shouldScheduleStartupFullReconcile:!t&&!c&&!n,deferredPushSignature:f}}function BI(e){if(typeof e!="string")return;const t=e.trim();return t.length>0?t:void 0}function _j(e){return BI(e)??null}function Tj(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.max(1,Math.floor(t)):null}function xj(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.floor(t):null}function Rj(e,t,r){if(e===void 0||!e||typeof e!="object"||Array.isArray(e))return;const n=e,s=["canonicalFingerprint","contractVersion","domain","entityId","entityRevision","lifecycleRevision","mutationKind","sequence"],i=Object.keys(n).sort(),l=new Set(["create","metadata-update","append-comment","archive","unarchive"]);if(!(i.length!==s.length||i.some((c,d)=>c!==s[d])||n.contractVersion!==3||n.domain!==t||n.entityId!==r||typeof n.mutationKind!="string"||!l.has(n.mutationKind)||typeof n.sequence!="string"||!/^[1-9]\d*$/.test(n.sequence)||typeof n.entityRevision!="string"||!/^\d+$/.test(n.entityRevision)||typeof n.lifecycleRevision!="string"||!/^\d+$/.test(n.lifecycleRevision)||n.entityRevision==="0"||n.mutationKind==="create"&&(n.entityRevision!=="1"||n.lifecycleRevision!=="0")||(n.mutationKind==="archive"||n.mutationKind==="unarchive")&&n.lifecycleRevision==="0"||typeof n.canonicalFingerprint!="string"||!/^[a-f0-9]{64}$/.test(n.canonicalFingerprint)))return n}function Pj(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,n=String(r.id||"").trim();if(!n)return null;const s=Rj(r.durableRevision,"initiative",n);if(Object.prototype.hasOwnProperty.call(r,"durableRevision")&&!s)throw new Error("Initiative durable revision is invalid.");const i=ap(r.comments);return{id:n,referenceNumber:Tj(r.referenceNumber),referenceLabel:BI(r.referenceLabel),title:String(r.title||"").trim(),description:typeof r.description=="string"?r.description:null,ownerId:_j(r.ownerId),...i?{comments:i}:{},createdAt:String(r.createdAt||t||"").trim(),updatedAt:String(r.updatedAt||t||r.createdAt||"").trim(),order:xj(r.order),attachments:sp(r.attachments),isArchived:!!r.isArchived,...s?{durableRevision:s}:{}}}function jj(e){const t=Pj(e);if(!t||!t.createdAt||!t.updatedAt)throw new Error("Initiative is missing canonical sync identity or watermarks.");return{...t,attachments:q1(e.attachments)}}const WI=["create","metadata-update","append-comment","archive","unarchive"],Ej={coverageProfileId:"covered-metadata",coverageVersion:1,projections:[{projectionId:"initiative/full-v1",domain:"initiative",schemaVersion:1,mutationKinds:WI,fields:["id","referenceNumber","referenceLabel","title","description","ownerId","comments","attachments","order","createdAt","updatedAt","isArchived"],dependencies:[],operationAtomic:!0}]};function Lv(e){return Array.isArray(e)?e.every(Lv):!e||typeof e!="object"?!0:Object.entries(e).every(([t,r])=>t!=="content"&&t!=="contentBase64"&&Lv(r))}function $I(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.coverageDigest=="string"&&/^[a-f0-9]{64}$/.test(t.coverageDigest)&&pn({coverageProfileId:t.coverageProfileId,coverageVersion:t.coverageVersion,projections:t.projections})===pn(Ej)}function FI(e){const t=n=>/^\d+$/.test(String(n??""));if(e.projection!=="initiative/full-v1"||e.domain!=="initiative"||!e.entityId||!WI.includes(e.mutationKind)||!t(e.sequence)||!t(e.entityRevision)||!t(e.lifecycleRevision)||!/^[a-f0-9]{64}$/.test(e.payloadFingerprint)||!Lv(e.payload)||e.contentSha256!==void 0||e.sizeBytes!==void 0)throw new Error("Workspace sync v3 initiative entry is invalid.");const r=jj(e.payload);if(r.id!==e.entityId||pn(r)!==pn(e.payload))throw new Error("Workspace sync v3 initiative payload is not canonical.")}const Nj={getLocalProjection:JC,applyLocalProjection:XC,pullFeed:YC,pullInitiativeRepair:aI};function Dj(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!r||r.owner!=="v2"&&r.owner!=="v3"||!/^\d+$/.test(r.epoch)?null:r}function Gm(e){return e.data?.result?.projection||e.data?.projection||null}function xl(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),excludeInitiativesFromV2:t==="v3"}}function Bh(e){return e===0||e===429||e>=500}function xS(e,t){const r=e.data,n=r.coverage,s=r?.repair;if(e.status!==409||r?.workspaceId!==t||r?.protocolVersion!==3||r.legacyInitiativePushDisabled!==!0||r.code!=="CURSOR_EXPIRED"&&r.code!=="COVERAGE_CHANGED"||!s||!$I(n)||s.mode!=="authoritative-covered-projection-snapshot"||!/^\d+$/.test(String(s.snapshotSequence||""))||!Array.isArray(s.entries)||typeof s.hasMore!="boolean"||s.hasMore!==!!s.nextRepairCursor||typeof s.resumeCursor!="string"||!s.resumeCursor)return null;try{s.entries.forEach(FI)}catch{return null}return s}function Mj(e,t){const r=e.data;if(!e.ok||r?.protocolVersion!==3||r?.workspaceId!==t||r.legacyInitiativePushDisabled!==!0||!Array.isArray(r.entries)||typeof r.nextCursor!="string"||!r.nextCursor||typeof r.hasMore!="boolean"||!$I(r.coverage)||!/^\d+$/.test(String(r.cycleHighWatermark||""))||!/^\d+$/.test(String(r.lastScannedSequence||""))||!r.diagnostics||r.diagnostics.coveredCount!==r.entries.length||r.diagnostics.scannedCount<r.entries.length)return null;try{r.entries.forEach(FI)}catch{return null}return r}async function Lj(e){let t=e.projection,r=t.repair?.cursor||null;const n=new Set;for(;;){const s=await e.dependencies.pullInitiativeRepair(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:r,limit:100});if(!s.ok)return s.status===401?{kind:"auth-failure",status:401,excludeInitiativesFromV2:!1}:xl(s,"v2","Initiative fallback repair failed.");const i=s.data;if(i?.success!==!0||i.workspaceId!==e.workspaceId||!/^\d+$/.test(String(i.snapshotSequence||""))||!Array.isArray(i.entries)||typeof i.hasMore!="boolean"||i.hasMore!==!!i.nextRepairCursor)return{kind:"transient-failure",status:502,error:"Initiative fallback repair returned an invalid page.",excludeInitiativesFromV2:!1};const l=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:r,page:{snapshotSequence:String(i.snapshotSequence),entries:i.entries,hasMore:i.hasMore,nextRepairCursor:i.nextRepairCursor||null}}),c=Gm(l);if(!l.ok||!c)return xl(l,"v3","Initiative fallback repair could not be staged locally.");if(t=c,!i.hasMore)return t.owner==="v2"?{kind:"v2-fallback",excludeInitiativesFromV2:!1}:{kind:"transient-failure",status:502,error:"Initiative fallback repair did not switch ownership.",excludeInitiativesFromV2:!0};const d=String(i.nextRepairCursor||"");if(!d||d===r||n.has(d))return{kind:"transient-failure",status:502,error:"Initiative fallback repair made no progress.",excludeInitiativesFromV2:!1};n.add(d),r=d}}async function hd(e){return Lj(e)}async function Wh(e){const t=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"rollback",epoch:e.projection.epoch}),r=Gm(t);return!t.ok||!r||r.owner!=="v2"?xl(t,e.projection.owner,"Initiative activation rollback is not ready."):{kind:"transient-failure",status:409,error:"Local initiative changes must complete v2 synchronization before v3 activation can retry.",excludeInitiativesFromV2:!1}}async function Ov(e){const t={...Nj,...e.dependencies},r={...t,applyLocalProjection:async(...l)=>{const c=await t.applyLocalProjection(...l);return c.ok&&c.data?.success!==!1&&"page"in l[1]&&e.onChangesApplied?.(l[1].page.entries.length),c}},n=await r.getLocalProjection(e.workspaceId),s=Dj(n,e.workspaceId);if(!s)return xl(n,"v2","Local initiative projection state is unavailable.");if(s.owner==="v3"&&s.repair?.resumeCursor.startsWith("v2-fallback:"))return hd({...e,projection:s,dependencies:r});if(!e.activationEnabled)return s.owner==="v3"?hd({...e,projection:s,dependencies:r}):s.repair?Wh({workspaceId:e.workspaceId,projection:s,dependencies:r}):{kind:"v2-fallback",excludeInitiativesFromV2:!1};let i=s;for(;i.owner==="v2"||i.repair;){const l=await r.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,repairCursor:i.repair?.cursor||null,limit:100});if(l.status===401)return{kind:"auth-failure",status:401,excludeInitiativesFromV2:!1};if(l.status===404||l.status!==409&&!Bh(l.status))return i.owner==="v3"?hd({...e,projection:i,dependencies:r}):Wh({workspaceId:e.workspaceId,projection:i,dependencies:r});if(Bh(l.status))return xl(l,"v2","Workspace sync v3 feed is temporarily unavailable.");const c=xS(l,e.workspaceId);if(!c)return i.owner==="v3"?hd({...e,projection:i,dependencies:r}):Wh({workspaceId:e.workspaceId,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:i.repair?.cursor||null,page:c}),m=Gm(d);if(!d.ok||!m)return Wh({workspaceId:e.workspaceId,projection:i,dependencies:r});const f=i.repair?.cursor||null;if(i=m,i.owner==="v2"&&i.repair?.cursor===f)return{kind:"transient-failure",status:502,error:"Initiative repair made no local progress.",excludeInitiativesFromV2:!1}}for(;i.owner==="v3";){const l=await r.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:i.opaqueCursor,limit:100});if(l.status===401)return{kind:"auth-failure",status:401,excludeInitiativesFromV2:!0};if(l.status===404||l.status!==409&&!l.ok&&!Bh(l.status))return hd({...e,projection:i,dependencies:r});if(Bh(l.status))return xl(l,"v3","Workspace sync v3 feed is temporarily unavailable.");if(l.status===409){const f=xS(l,e.workspaceId);if(!f)return hd({...e,projection:i,dependencies:r});const g=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:null,page:f}),h=Gm(g);if(!g.ok||!h)return xl(g,"v3","Initiative repair could not be applied locally.");if(i=h,i.repair)return Ov({...e,dependencies:t});continue}const c=Mj(l,e.workspaceId);if(!c||!i.opaqueCursor)return hd({...e,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"delta",epoch:i.epoch,previousCursor:i.opaqueCursor,page:c}),m=Gm(d);if(!d.ok||!m)return xl(d,"v3","Workspace sync v3 feed could not be applied locally.");if(m.owner!=="v3"||m.repair||m.opaqueCursor!==c.nextCursor)return{kind:"transient-failure",status:502,error:"Workspace sync v3 feed did not commit its exact cursor.",excludeInitiativesFromV2:!0};if(!c.hasMore)return{kind:"v3-active",excludeInitiativesFromV2:!0};if(m.opaqueCursor===i.opaqueCursor)return{kind:"transient-failure",status:502,error:"Workspace sync v3 feed made no local progress.",excludeInitiativesFromV2:!0};i=m}return{kind:"v2-fallback",excludeInitiativesFromV2:!1}}const _d=Object.freeze([]),Oj=960*1e3,Bj="coverage/task-planning-metadata-v1",Wj={getLocalProjection:QC,applyLocalProjection:eI,pullFeed:ZC,pullFallbackRepair:sI,getLocalTaskCommentAudit:tI,pullTaskCommentAudit:rI,applyLocalTaskCommentAudit:nI};function kg(e){return Nl(e)?.coverage||null}function jl(e){return e.owner!=="v3"?_d:Nl(e)?.excludedProjections||_d}function Bi(e,t){return e.coverageProfileId===t.coverageProfileId&&e.coverageVersion===t.coverageVersion&&e.coverageDigest===t.coverageDigest}function $j(e,t){return Bi(t,Aa)?e:{...e,coverage:t}}function Vu(e,t,r,n){return Bi(n,Aa)?e.applyLocalProjection(t,r):e.applyLocalProjection(t,r,n)}function UI(e){return!!(e&&e.coverageId===Bj&&(e.owner==="v2"||e.owner==="v3")&&Nl(e)&&typeof e.coverageRepairRequired=="boolean"&&/^\d+$/.test(e.epoch)&&(e.repair===null||typeof e.repair=="object"&&/^\d+$/.test(String(e.repair.epoch||""))&&e.repair.snapshotId&&/^\d+$/.test(String(e.repair.snapshotSequence||""))&&typeof e.repair.resumeCursor=="string"&&(e.repair.cursor===null||typeof e.repair.cursor=="string")))}function Fj(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!UI(r)?null:r}function Gu(e,t){const r=e.data?.result?.projection||e.data?.projection;return e.ok&&e.data?.success===!0&&e.data?.contractVersion===3&&e.data?.workspaceId===t&&UI(r)?r:null}function Sm(e){return e.ok&&e.data?.success===!0&&e.data?.result?.state==="invalidated"}function vo(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),...e.data?.causeCode?{causeCode:String(e.data.causeCode)}:{},...e.data?.causeAssetId?{causeAssetId:String(e.data.causeAssetId)}:{},excludedProjections:jl(t)}}function vs(e,t){return{kind:"transient-failure",status:502,error:t,excludedProjections:jl(e)}}function Uj(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return n.success===!0&&n.contractVersion===3&&n.workspaceId===t&&n.previousCursor===r&&Array.isArray(n.entries)&&typeof n.hasMore=="boolean"&&n.hasMore===!!n.nextCursor}async function zj(e){const t=await e.dependencies.getLocalTaskCommentAudit(e.workspaceId),r=t.ok&&t.data?.success===!0&&t.data.contractVersion===3&&t.data.workspaceId===e.workspaceId&&(t.data.cursor===null||t.data.cursor===void 0||typeof t.data.cursor=="string")?t.data.cursor||null:void 0,n=t.data?.nextSweepAt==null?null:String(t.data.nextSweepAt);if(r===void 0)return vo(t,e.projection,"Local task comment audit state is unavailable.");const s=Date.now(),i=Date.parse(n||""),l=Number.isFinite(i)&&i>s&&i<=s+Oj;if(r===null&&l)return null;const c=await e.dependencies.pullTaskCommentAudit(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:r,limit:50});if(c.status===401)return{kind:"auth-failure",status:401,excludedProjections:jl(e.projection)};if(!c.ok||!Uj(c.data,e.workspaceId,r))return vo(c,e.projection,"Cloud task comment audit is temporarily unavailable.");const d=await e.dependencies.applyLocalTaskCommentAudit(e.workspaceId,c.data),m=d.data?.result,f=m?.stale===!0&&m.previousCursor===c.data.nextCursor&&m.nextCursor===c.data.nextCursor;return!d.ok||d.data?.success!==!0||d.data.contractVersion!==3||d.data.workspaceId!==e.workspaceId||!f&&(m?.previousCursor!==r||m?.nextCursor!==c.data.nextCursor)?vo(d,e.projection,"Task comment audit could not be applied locally."):(f||e.onChangesApplied?.(Math.max(0,Number(m?.reconciliationsQueued)||0)+Math.max(0,Number(m?.activityEventsApplied)||0)),null)}function Am(e){return e===0||e===429||e>=500}function fy(e,t){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e;return r.coverageProfileId===t.coverageProfileId&&r.coverageVersion===t.coverageVersion&&r.coverageDigest===t.coverageDigest}function $w(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return n.success===!0&&n.protocolVersion===3&&n.workspaceId===t&&fy(n.coverage,r)&&!!n.snapshotId&&/^\d+$/.test(String(n.snapshotSequence||""))&&Number.isFinite(Date.parse(String(n.expiresAt||"")))&&Array.isArray(n.entries)&&typeof n.hasMore=="boolean"&&n.hasMore===!!n.nextRepairCursor&&!!n.resumeCursor&&!!n.diagnostics&&n.diagnostics.returnedEntries===n.entries.length}function zI(e,t,r){const n=e.data,s=String(n?.code||"unknown");let i="repair envelope is incompatible";n?.protocolVersion!==3||n?.workspaceId!==t?i="protocol or workspace scope is incompatible":["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(s)?fy(n.coverage,r)?n.repairMode!=="authoritative-covered-projection-snapshot"?i="repair mode is incompatible":Pw(n.peerCapability,r)?jw(n.legacyV2Boundary,r)?$w(n.repair,t,r)||(i="repair page is incompatible"):i="legacy v2 boundary attestation is incompatible":i="peer capability attestation is incompatible":i="coverage attestation is incompatible":i="repair code is unsupported";const l=String(n?.error||"").trim();return`Cloud combined workspace sync returned an invalid repair response (${s}; ${i}).`+(l?` Cloud error: ${l}`:"")}function $h(e,t,r){const n=e.data;return e.status===409&&n?.protocolVersion===3&&n.workspaceId===t&&(n.code==="CURSOR_EXPIRED"||n.code==="COVERAGE_CHANGED"||n.code==="EXPLICIT_REPAIR")&&fy(n.coverage,r)&&n.repairMode==="authoritative-covered-projection-snapshot"&&Pw(n.peerCapability,r)&&jw(n.legacyV2Boundary,r)&&$w(n.repair,t,r)?n.repair:null}function Hj(e,t,r){const n=e.data;return e.ok&&n?.success===!0&&n.protocolVersion===3&&n.workspaceId===t&&fy(n.coverage,r)&&Pw(n.peerCapability,r)&&jw(n.legacyV2Boundary,r)&&Array.isArray(n.entries)&&typeof n.nextCursor=="string"&&n.nextCursor&&typeof n.hasMore=="boolean"&&/^\d+$/.test(String(n.cycleHighWatermark||""))&&/^\d+$/.test(String(n.lastScannedSequence||""))&&n.diagnostics&&n.diagnostics.coveredCount===n.entries.length&&n.diagnostics.scannedCount>=n.entries.length?n:null}function Vj(e){const t=e.data&&typeof e.data=="object"?e.data.peerCapability:void 0,r=Array.isArray(t?.missingPrerequisites)?String(t.missingPrerequisites[0]||"").trim():"";return r?`Cloud combined workspace sync prerequisite is not ready (${r}).`:"Cloud combined workspace sync capability attestation is missing or incompatible."}function Gj(e,t,r){const n=String(e.data?.code||"").trim();return n&&!["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(n)?zI(e,t,r):Vj(e)}function Kj(e){return e.data?.success!==!1?!1:e.status===410&&e.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"||e.status===400&&e.data.code==="INVALID_SYNC_V3_REPAIR_CURSOR"}async function Fh(e){let t=e.projection;const r=kg(t);if(!r)return vs(t,"Persisted combined workspace sync coverage is unsupported.");let n=t.repair?.resumeCursor.startsWith("v2-fallback:")?t.repair.cursor:null;const s=new Set;let i=!1;for(;;){const l=await e.dependencies.pullFallbackRepair(e.resolveCloudAuthUrl,$j({workspaceId:e.workspaceId,cursor:n,limit:100},r));if(l.status===401)return{kind:"auth-failure",status:401,excludedProjections:jl(t)};if(l.status===410&&n&&!i&&l.data?.success===!1&&l.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"){i=!0,n=null,s.clear();continue}if(!l.ok)return vo(l,t,"Combined v2 fallback repair failed.");const c=$w(l.data,e.workspaceId,r)&&t1(l.data.legacyV2Boundary)?l.data:null;if(!c)return vs(t,"Combined v2 fallback repair returned an invalid page.");const d=await Vu(e.dependencies,e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:n,page:c},r),m=Gu(d,e.workspaceId);if(!d.ok||!m)return vo(d,t,"Combined v2 fallback repair could not be applied locally.");if(t=m,!c.hasMore)return t.owner==="v2"&&!t.repair?{kind:"v2-fallback",excludedProjections:_d}:vs(t,"Combined v2 fallback repair did not release v3 ownership.");const f=String(c.nextRepairCursor||"");if(!f||f===n||s.has(f)||t.owner!=="v3"||t.repair?.cursor!==f||!t.repair.resumeCursor.startsWith("v2-fallback:"))return vs(t,"Combined v2 fallback repair made no progress.");s.add(f),n=f}}function RS(e){return Bv(e,!1)}async function Bv(e,t){const r={...Wj,...e.dependencies},n={...r,applyLocalProjection:async(...b)=>{const w=await r.applyLocalProjection(...b);return w.ok&&w.data?.success!==!1&&!Sm(w)&&e.onChangesApplied?.(b[1].page.entries.length),w}},s=e.coverage||Aa,i=Nl(s);if(!i)return{kind:"transient-failure",status:502,error:"Requested combined workspace sync coverage is unsupported.",excludedProjections:_d};const l=await n.getLocalProjection(e.workspaceId,s),c=Fj(l,e.workspaceId);if(!c)return{kind:"transient-failure",status:l.status,retryAfterMs:l.retryAfterMs,error:String(l.data?.error||"Local combined projection state is unavailable."),excludedProjections:_d};if(c.owner==="v3"&&c.repair?.resumeCursor.startsWith("v2-fallback:"))return Fh({...e,projection:c,dependencies:n});if(!e.activationEnabled)return c.owner==="v3"?Fh({...e,projection:c,dependencies:n}):{kind:"v2-fallback",excludedProjections:_d};let d=c,m=!1,f=!1,g=!1,h=t;const y=kg(d);if(!y)return vs(d,"Persisted combined workspace sync coverage is unsupported.");if(g=d.owner==="v3"&&d.repair!==null&&!Bi(y,s),d.coverageRepairRequired||d.owner==="v3"&&!d.repair&&!Bi(y,s)){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...d.owner==="v3"&&d.opaqueCursor?{cursor:d.opaqueCursor}:{},limit:100,...Bi(s,Aa)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:jl(d)};if(Am(b.status))return vo(b,d,"Combined workspace sync coverage upgrade is temporarily unavailable.");const w=$h(b,e.workspaceId,s);if(!w)return vs(d,"Cloud combined workspace sync did not provide the required coverage upgrade repair.");const P=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:w,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),E=Gu(P,e.workspaceId),D=E?kg(E):null;if(E&&Sm(P)){if(h)return vs(E,"A refreshed combined repair snapshot still predates authoritative local state.");d=E,f=!0,h=!0}else if(!P.ok||!E||!D||(w.hasMore?!E.repair||E.repair.cursor!==w.nextRepairCursor||!Bi(D,y):E.coverageRepairRequired||E.repair!==null||!Bi(D,s)))return vo(P,d,"Combined workspace sync coverage upgrade could not be applied locally.");d=E,m=!!(e.recoveryBatchId&&!d.repair)}if(e.forceAuthoritativeRepair&&!m&&d.owner==="v3"&&!d.repair){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,limit:100,forceRepair:!0,...Bi(s,Aa)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:jl(d)};if(Am(b.status))return vo(b,d,"Combined workspace sync authoritative recovery is temporarily unavailable.");const w=$h(b,e.workspaceId,s);if(!w)return vs(d,"Cloud combined workspace sync did not provide the requested authoritative repair.");const P=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:w,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),E=Gu(P,e.workspaceId);if(!P.ok||!E)return vo(P,d,"Combined workspace sync authoritative recovery could not be applied locally.");if(d=E,Sm(P)){if(h)return vs(d,"A refreshed combined repair snapshot still predates authoritative local state.");f=!0,h=!0}}let k=!1,v=!1;for(;d.owner==="v2"||d.repair||f||g;){const b=k||f||g?null:d.repair?.cursor||null,w=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...k||f||g?{forceRepair:!0}:{repairCursor:b},limit:100,...Bi(s,Aa)?{}:{coverage:s}});if(w.status===401)return{kind:"auth-failure",status:401,excludedProjections:jl(d)};if(b&&!v&&Kj(w)){v=!0,k=!0;continue}if(Am(w.status))return vo(w,d,"Combined workspace sync feed is temporarily unavailable.");const P=$h(w,e.workspaceId,s);if(!P)return vs(d,Gj(w,e.workspaceId,s));const E=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:b,page:P,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),D=Gu(E,e.workspaceId);if(!E.ok||!D)return vo(E,d,"Combined workspace sync repair could not be applied locally.");if(d=D,k=!1,f=!1,g=!1,Sm(E)){if(h)return vs(d,"A refreshed combined repair snapshot still predates authoritative local state.");h=!0,f=!0;continue}if(d.repair?.cursor===b)return vs(d,"Combined workspace sync repair made no local progress.")}const A=kg(d);if(d.owner!=="v3"||!A||!Bi(A,s))return vs(d,"Combined workspace sync repair did not activate the requested coverage.");if(e.recoveryBatchId)return{kind:"v3-active",excludedProjections:i.excludedProjections};for(;d.owner==="v3";){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:d.opaqueCursor,limit:100,...Bi(s,Aa)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:jl(d)};if(b.status===404||b.status!==409&&!b.ok&&!Am(b.status))return Fh({...e,projection:d,dependencies:n});if(Am(b.status))return vo(b,d,"Combined workspace sync feed is temporarily unavailable.");if(b.status===409){const D=$h(b,e.workspaceId,s);if(!D)return vs(d,zI(b,e.workspaceId,s));const j=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:D,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),S=Gu(j,e.workspaceId);if(!j.ok||!S)return vo(j,d,"Combined workspace sync repair could not be applied locally.");if(d=S,Sm(j))return h?vs(d,"A refreshed combined repair snapshot still predates authoritative local state."):Bv({...e,forceAuthoritativeRepair:!0},!0);if(d.repair)return Bv({...e,dependencies:r},h);continue}const w=Hj(b,e.workspaceId,s);if(!w||!d.opaqueCursor)return Fh({...e,projection:d,dependencies:n});const P=await Vu(n,e.workspaceId,{kind:"delta",epoch:d.epoch,previousCursor:d.opaqueCursor,page:w},s),E=Gu(P,e.workspaceId);if(!P.ok||!E)return vo(P,d,"Combined workspace sync page could not be applied locally.");if(E.owner!=="v3"||E.repair||E.opaqueCursor!==w.nextCursor)return vs(d,"Combined workspace sync feed did not commit its exact v3 cursor.");if(!w.hasMore)return await zj({resolveCloudAuthUrl:e.resolveCloudAuthUrl,workspaceId:e.workspaceId,projection:E,dependencies:n,onChangesApplied:e.onChangesApplied})||{kind:"v3-active",excludedProjections:i.excludedProjections};if(E.opaqueCursor===d.opaqueCursor)return vs(d,"Combined workspace sync feed made no local progress.");d=E}return{kind:"v2-fallback",excludedProjections:_d}}var qj={};async function HI(e){const t=e.remoteServices,r=e.localServices.applyV2Batch,n=`attachment-asset:${e.assetId}`,s=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:[{kind:"asset",assetId:e.assetId}],previousCursor:null,independentCompletionIdentity:n}),i=s.transferReceipt;let l=!1,c=!1;try{if(!s.ok)return{success:!1,error:`Workspace attachment asset hydration failed (${s.status||0}).`};const d=s.data||{};if((d.remaining?.length||0)>0)return{success:!1,error:`Workspace attachment asset hydration is incomplete: ${e.assetId}`,disposition:"retryable"};const m=Array.isArray(d.missing)&&d.missing.find(D=>D?.kind==="asset"&&"assetId"in D&&String(D.assetId||"").trim()===e.assetId);if(m)return{success:!1,error:m.disposition==="terminal-unavailable"?`Workspace attachment asset is authoritatively unavailable in cloud metadata: ${e.assetId}`:`Workspace attachment asset body is temporarily unavailable in cloud content: ${e.assetId}`,disposition:m.disposition==="terminal-unavailable"?"terminal-unavailable":"retryable"};if((d.missing?.length||0)>0)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected missing result: ${e.assetId}`,disposition:"retryable"};const f=Array.isArray(d.changes)?d.changes:[],g=f.filter(D=>(D.op==="document-upsert"||D.op==="asset-upsert")&&String(D.assetId||"").trim()===e.assetId);if(f.length!==1||g.length!==1)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected payload: ${e.assetId}`};try{await gg(g[0],typeof process<"u"?qj?.TASKFORCE_SYNC_KEY:void 0)}catch{return{success:!1,error:`Workspace attachment asset hydration decryption failed: ${e.assetId}`}}const h=Array.isArray(d.contentMetadata)?d.contentMetadata:[],y=g[0].op==="document-upsert"?"document":"asset",k=h.filter(D=>D.kind===y&&D.assetId===e.assetId&&D.path===g[0].path);if(h.length!==1||k.length!==1)return{success:!1,error:`Workspace attachment asset hydration metadata is unavailable: ${e.assetId}`};const v=k[0],A=g[0].op==="document-upsert"?await Og("document",g[0].content):await Og("asset",g[0].contentBase64);if(A.sha256!==v.sha256.toLowerCase()||A.sizeBytes!==v.sizeBytes)return{success:!1,error:`Workspace attachment asset hydration verification failed: ${e.assetId}`};const b=i?t.buildIndependentContentApplyCompletionGroup({workspaceId:e.workspaceId,identity:n,receipts:[i]}):void 0;if(i&&!b)return{success:!1,error:"Workspace attachment asset hydration could not bind its transfer to local apply."};c=!0;const w=b?await r(e.workspaceId,g,{completionGroup:b}):await r(e.workspaceId,g);if(!w.ok)return{success:!1,error:`Workspace attachment asset hydration apply failed (${w.status||0}).`};l=!0;const P=w.data&&typeof w.data=="object"?w.data:{},E=Array.isArray(P.emittedEventIds)?P.emittedEventIds.map(D=>String(D||"").trim()).filter(Boolean):[];return{success:!0,appliedChanges:g.length,emittedEventIds:E}}finally{if(i&&!l){if(!c){const d=t.buildIndependentContentApplyCompletionGroup({workspaceId:e.workspaceId,identity:n,receipts:[i]});d&&(c=!0,l=(await r(e.workspaceId,[],{completionGroup:d})).ok)}l||await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:[i],errorCode:"WORKSPACE_SYNC_V3_ATTACHMENT_HYDRATION_NOT_COMMITTED"})}}}const Yj="/api/taskforce/sync/v3/local/recovery";async function Zj(e){const t=String(e.workspaceId||"").trim();if(!t)throw new Error("Workspace id is required to prepare local recovery.");const r=await(e.fetchImpl||fetch)(Yj,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}),n=await r.json().catch(()=>null);if(!r.ok||n?.success!==!0){const c=String(n?.error||`Local workspace sync recovery failed (${r.status}).`),d=typeof n?.code=="string"?n.code.trim():"";let m="unknown-origin";try{m=new URL(r.url).origin}catch{}throw new Error(`${c} [${d||"UNKNOWN_RECOVERY_ERROR"}; HTTP ${r.status}; ${m}]`)}if(n.kind==="none"&&n.needsAuthoritativeRepair===!1&&n.recovery===null)return{kind:"none",needsAuthoritativeRepair:!1,recoveryBatchId:null};if(n.kind!=="recovery"||typeof n.needsAuthoritativeRepair!="boolean"||!n.recovery||typeof n.recovery!="object"||Array.isArray(n.recovery))throw new Error("Local workspace sync recovery returned an invalid response.");const s=n.recovery,i=String(s.recoveryBatchId||"").trim(),l=String(s.state||"");if(!/^recovery-[A-Za-z0-9-]{1,200}$/.test(i)||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(l)||n.needsAuthoritativeRepair===!0&&l!=="awaiting_baseline")throw new Error("Local workspace sync recovery returned an invalid state.");return{kind:"recovery",needsAuthoritativeRepair:n.needsAuthoritativeRepair,recoveryBatchId:i,state:l}}function Jj(e){const t=e.data&&typeof e.data=="object"&&!Array.isArray(e.data)?e.data:{},r=String(t.error||"").trim(),n=String(t.code||"").trim(),s=Number(e.status)||0;return r?`Authoritative V2 push echo apply failed (${s}): ${r}${n?` [${n}]`:""}`:`Authoritative V2 push echo apply failed (${s}).`}function Xj(e={}){return{readPushOwnership:cI,readContentManifest:oI,applyV2Batch:lI,listContentPullObligations:KC,recordContentPullObligationFailures:qC,readInitiativeProjection:JC,applyInitiativeProjection:XC,readCombinedProjection:QC,applyCombinedProjection:eI,readTaskCommentAuditCursor:tI,applyTaskCommentAuditPage:nI,prepareOutboxRecovery:t=>Zj({workspaceId:t,...e.recoveryFetchImpl?{fetchImpl:e.recoveryFetchImpl}:{}}),completeAuthoritativeRepair:m1}}function Qj(e){return e.causeCode==="TASK_ATTACHMENT_ASSET_NOT_READY"&&e.causeAssetId?e.causeAssetId:e.status!==409?null:/^Task attachment asset is unavailable because it has not reached this runtime: ([A-Za-z0-9._:-]+)$/.exec(String(e.error||""))?.[1]||null}function eE(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e.repair;return t&&typeof t=="object"&&!Array.isArray(t)?t:e}function PS(e){return e.kind==="delta"?String(e.page.nextCursor||"")||null:e.page.hasMore===!0?String(e.page.nextRepairCursor||"")||null:e.kind==="repair"&&String(e.page.resumeCursor||"")||null}function tE(e){const t=new WeakMap,r=new Set,n=m=>{const f=eE(m.data);return m.transferReceipt&&(r.add(m.transferReceipt),f&&t.set(f,m.transferReceipt)),m},s=(m,f)=>{const g=t.get(m);if(!g)return;const h=e.remoteServices.buildV3ApplyCompletionGroup({workspaceId:e.workspaceId,apply:f,receipts:[g]});if(!h)throw new Error("A v3 sync transfer receipt did not produce an apply completion group.");return h},i=async m=>{try{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:m,errorCode:tS})}catch{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:m,errorCode:tS})}},l=async m=>{const f=t.get(m);f&&(await i([f]),t.delete(m),r.delete(f))},c=async(m,f,g)=>{let h=!1;try{const y=s(m,f),k=await g(y);if(y&&(!k||typeof k!="object"||!("ok"in k)||k.ok!==!0))h=!0,await l(m);else if(y){const v=t.get(m);t.delete(m),v&&r.delete(v)}return k}catch(y){throw h||await l(m),y}};return{abandonPendingReceipts:async()=>{if(r.size===0)return;const m=Array.from(r);await i(m);for(const f of m)r.delete(f)},initiative:{getLocalProjection:e.localServices.readInitiativeProjection,applyLocalProjection:(m,f)=>{if(f.kind==="rollback")return e.localServices.applyInitiativeProjection(m,f);const g={projection:"initiative",kind:f.kind,epoch:f.epoch,previousCursor:f.previousCursor,nextCursor:PS({kind:f.kind,page:f.page})};return c(f.page,g,h=>e.localServices.applyInitiativeProjection(m,f,h?{completionGroup:h}:void 0))},pullFeed:async(m,f)=>n(await e.remoteServices.pullInitiativeFeed(f)),pullInitiativeRepair:async(m,f)=>n(await e.remoteServices.pullInitiativeRepair(f))},combined:{getLocalProjection:e.localServices.readCombinedProjection,applyLocalProjection:(m,f,g)=>{const h={projection:"combined",kind:f.kind,epoch:f.epoch,previousCursor:f.previousCursor,nextCursor:PS({kind:f.kind,page:f.page})};return c(f.page,h,y=>e.localServices.applyCombinedProjection(m,f,g,y?{completionGroup:y}:void 0))},getLocalTaskCommentAudit:e.localServices.readTaskCommentAuditCursor,applyLocalTaskCommentAudit:(m,f)=>{const g={projection:"task-comment-audit",kind:"audit",previousCursor:f.previousCursor,nextCursor:f.nextCursor};return c(f,g,h=>e.localServices.applyTaskCommentAuditPage(m,f,h?{completionGroup:h}:void 0))},pullFeed:async(m,f)=>n(await e.remoteServices.pullCombinedFeed(f)),pullFallbackRepair:async(m,f)=>n(await e.remoteServices.pullCombinedRepair(f)),pullTaskCommentAudit:async(m,f)=>n(await e.remoteServices.pullTaskCommentAudit(f))}}}function rE({cloudAuthConfigured:e,runtimeMode:t,initiativeFeedActivationEnabled:r,combinedFeedActivationEnabled:n,combinedFeedCoverage:s,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,checkAuthSession:m,resolveCloudAuthUrl:f,ensureCloudWorkspaceReadyForSync:g,ensureWorkspaceSyncReady:h,handleSyncAuthFailure:y,clearWorkspaceRetry:k,clearWorkspaceIssue:v,isWorkspaceRetryPending:A,isDurableRecoveryBlockingOrdinaryPush:b,isExecutionAuthorized:w=()=>!0,scheduleWorkspaceSyncRetry:P,persistWorkspaceSyncPatchSafely:E,persistWorkspaceSyncPatchBestEffort:D,persistWorkspaceSyncWatermarksSnapshotBestEffort:j,refreshWorkspaceAiProfilePushBaselineFromPersistence:S,reportSyncEvent:L,acquireWorkspaceSyncLease:_,releaseWorkspaceSyncLease:T,recordWorkspaceSyncCompletion:z,reportWorkspaceWindowContention:Y,refreshWorkspaceSyncMarkdownDocumentsSnapshot:H,refreshWorkspaceSyncAiProfilesSnapshot:M,refreshWorkspaceSyncAssetsSnapshot:oe,refreshWorkspaceSyncTaxonomySnapshot:K,refreshWorkspaceSyncPlanningEntitiesSnapshot:Q,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:ee,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:fe,refreshWorkspaceSyncTaskforceAgentsSnapshot:_e,refreshLocalWorkspaceTaskCollections:$e,buildWorkspaceSyncPayload:Ye,buildWorkspaceSyncSignature:ye,seedWorkspaceSnapshotPushBaseline:ge,shouldSuppressAttachBootstrapPush:se,recordSuppressedEventIds:ie,runtime:me,localServices:$,remoteServices:V,setWorkspaceSyncBusy:B,setUserGlobalSyncStatus:N,setUserGlobalSyncError:be,setWorkspaceLastErrorMessage:Ae,setWorkspaceLastErrorAt:q,setWorkspaceLastPullAt:Z,setWorkspaceLastPushAt:G,setWorkspaceSyncPendingChanges:ne,setTasks:Te,setArchivedTasks:Le,now:Ue,scheduleTask:st,logDebug:ft=()=>{},notifyAiProfilesMutated:xe=()=>{},notifyAgentsMutated:ke=()=>{},notifyAgentSkillsMutated:ve=()=>{}}){const{repairMode:He,forceFullAiProfilePush:Ee,pushInFlight:de,pullInFlight:x,pullAfterPushRequested:le,pendingPushReplay:Ie,blockedPushSignature:Je,lastPushedSignature:J,pendingSignature:Ze,lastPushedTaskIds:te,deletedTaskIds:Ne,deletedTaskWatermarks:je,pullCursor:Re,lastPushedWatermarks:Ce,lastPushedTaskChangeKeys:Pe,lastPushedTaskRelationshipChangeKeys:he,lastPushedTaxonomyChangeKey:De,lastPushedInitiativeIds:et,lastPushedInitiativeWatermarks:Fe,lastPushedWorkstreamIds:yt,lastPushedWorkstreamWatermarks:Oe,lastPushedPlanningIdentityWatermarks:mt,lastPushedAiProfileIds:vt,lastPushedAiProfileWatermarks:Ve,lastPushedAiProfileChangeKeys:tt,lastPushedDocumentPaths:It,lastPushedDocumentWatermarks:Xe,lastPushedAssetPaths:bt,lastPushedAssetWatermarks:at,lastPushedDocumentReviewSessionIds:U,lastPushedDocumentReviewSessionWatermarks:pe,lastPushedDocumentReviewCommentIds:Ke,lastPushedDocumentReviewCommentWatermarks:Et,lastPushedAnnotatedAttachmentSessionIds:kt,lastPushedAnnotatedAttachmentSessionWatermarks:Ot,lastPushedTaskforceAgentIds:dr,lastPushedTaskforceAgentWatermarks:tr,lastPushedTaskforceAgentSkillIds:pr,lastPushedTaskforceAgentSkillWatermarks:Bt,lastPushedAgentConversationIds:wr,lastPushedAgentConversationWatermarks:or,lastPushedTaskEventWatermarks:$r,baselineResetReason:Dr,captureAttachBootstrapBaseline:Me,startupFullReconcileRan:nt,startupFullReconcileRequested:pt,fullReconcileInFlight:lt,bootstrapLastProgressAtMs:xt,realtimeSuppressedEventQueue:Yt}=me,Nt=new Map;let Qt=!1;const Ct=(it,Zt,Lr)=>{if(Qt||!w()||Nt.has(it))return;let lr=null;lr=st(()=>{Nt.delete(it),!Qt&&w()&&Zt()},Lr),Nt.set(it,lr)},Ht=()=>{if(!Qt){Qt=!0;for(const it of Nt.values())it.cancel();Nt.clear()}},Ft=async(it,Zt)=>{if(!w())return!1;if(Zt?.repairMode!==!0&&b())return Ze.current=it,!1;let Lr=Nv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:He.current===!0,repairModeBypass:Zt?.repairMode===!0,pushInFlight:de.current,pullInFlight:x.current});if(!Lr.allowed&&Lr.reason==="auth-required"){if(!await m())return!1;Lr=Nv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:He.current===!0,repairModeBypass:Zt?.repairMode===!0,pushInFlight:de.current,pullInFlight:x.current})}if(!Lr.allowed)return Lr.retainPendingSignature&&(Ze.current=it),!1;if(se(it))return!1;if(!await _(l,"push")){const xr=kj("push");return!xr.allowed&&xr.retainPendingSignature&&(Ze.current=it),Y("push"),!1}de.current=!0,B(!0),N("syncing"),be(null);const $n=Ue().getTime(),br=Zt?.forceAllAiProfiles===!0||Ee.current===!0,ur=Zt?.repairMode===!0||He.current===!0;let u=null,St=!1,gt=it,Fr=!1;try{S?.();const xr=[await H(),await M(),await oe(),await K(),await Q(),await ee(),await fe(),await _e?.()];if(ur&&xr.some(Xt=>Xt===!1)){const Xt="Workspace sync repair could not refresh the complete local snapshot. Press Repair to retry.";return k(),N("error"),be(Xt),Ae(Xt),q(Ue().toISOString()),await D({phase:"error",lastErrorMessage:Xt}),L(l,{eventType:"push",status:"error",errorMessage:Xt,details:{recovery:"repair-snapshot-refresh-failed"}}),!1}if(!await h()||!w())return!1;const jr=ye();if(jr&&(gt=jr),se(gt))return!1;const qr=Ie.current,cn=qr&&qr.signature===gt&&(!br||qr.forceAllAiProfiles===!0)&&(!ur||qr.repairMode===!0)?qr:null,Hr=cn?.payload||Ye({forceAllAiProfiles:br});u=Hr,St=cn!==null,ne(Hr.changes.length);const Ge=await N1({resolveCloudAuthUrl:f,workspaceId:l,payload:Hr,ensureCloudWorkspaceReadyForSync:g,repairMode:cn?.repairMode??ur,remoteServices:V,localServices:$});if(!Ge.success){if(Ge.status===401)return Fr=!0,Ie.current=null,await y("push",401),!1;let Xt=Ge.error?`Workspace sync push failed (${Ge.status||0}): ${Ge.error}`:`Workspace sync push failed (${Ge.status||0})`;return Ge.status===413&&(Xt="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),N("error"),be(Xt),Ae(Xt),q(Ue().toISOString()),L(l,{eventType:"push",status:"error",statusCode:Ge.status,errorMessage:Xt,requestMs:Ge.requestMs,details:{payloadDiagnostics:Hr.deltaDiagnostics||null,replayedPayload:St,...Ge.batchProgress?{pushBatchProgress:Ge.batchProgress}:{}}}),Ze.current=gt,Ge.transient||di(Ge.status)?(Ie.current={signature:gt,payload:Hr,forceAllAiProfiles:cn?.forceAllAiProfiles??br,repairMode:cn?.repairMode??ur},P(Ge.retryAfterMs)):(Fr=!0,Je.current=gt,Ie.current=null,c==="active"&&E({phase:"error",lastErrorMessage:Xt})),!1}const Xr=Ge.appliedTaskUpserts||[];if(Xr.length>0){const Xt=Ge.pushTransferReceipts||[],bn=Ge.pushBoundary?V.buildV2PushApplyCompletionGroup({workspaceId:l,pushBoundary:Ge.pushBoundary,receipts:Xt}):void 0;if(Xt.length>0&&!bn)throw await V.abandonTransferReceipts({workspaceId:l,receipts:Xt,errorCode:"WORKSPACE_SYNC_V2_PUSH_APPLY_COMPLETION_INVALID"}),new Error("Accepted V2 push echoes are missing an atomic local apply completion group.");let $t;try{const Ut={repairMode:cn?.repairMode??ur,excludedProjections:Ge.effectiveV2ExcludedProjections},Ur=Xr.map(Fn=>({op:"upsert",archived:Fn.archived===!0,task:Fn.task,...Fn.durableRevision?{durableRevision:Fn.durableRevision}:{}}));$t=bn?await $.applyV2Batch(l,Ur,{...Ut,completionGroup:bn}):await $.applyV2Batch(l,Ur,Ut)}catch(Ut){throw Xt.length>0&&await V.abandonTransferReceipts({workspaceId:l,receipts:Xt,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),Ut}if(!$t.ok)throw Xt.length>0&&await V.abandonTransferReceipts({workspaceId:l,receipts:Xt,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),new Error(Jj($t));for(const Ut of Xr){const Ur=String(Ut.task.id||"").trim(),Fn=String(Ut.task.updatedAt||Ut.task.createdAt||"").trim();!Ur||!Fn||(Ge.currentTaskWatermarks?.set(Ur,Fn),Ge.pushedWatermarks.set(Ur,Fn))}try{await $e()}catch{ft("push_local_task_refresh_failed",{workspaceId:l,taskCount:Xr.length})}}Ie.current=null,Je.current="",J.current=gt,te.current=Ge.currentTaskIds,Ce.current=Ge.currentTaskWatermarks?new Map(Ge.currentTaskWatermarks):new Map(Ce.current),Pe.current=Ge.currentTaskChangeKeys?new Map(Ge.currentTaskChangeKeys):new Map(Pe.current),he&&(he.current=Ge.currentTaskRelationshipChangeKeys?new Map(Ge.currentTaskRelationshipChangeKeys):new Map(he.current)),De&&(De.current=Ge.currentTaxonomyChangeKey??De.current),et.current=new Set(Ge.currentInitiativeIds),Fe.current=new Map(Ge.currentInitiativeWatermarks),yt.current=new Set(Ge.currentWorkstreamIds),Oe.current=new Map(Ge.currentWorkstreamWatermarks),mt.current=new Map(Ge.currentPlanningIdentityWatermarks||Hr.currentPlanningIdentityWatermarks),vt.current=new Set(Ge.currentAiProfileIds),Ve.current=new Map(Ge.currentAiProfileWatermarks),tt.current=Ge.currentAiProfileChangeKeys?new Map(Ge.currentAiProfileChangeKeys):new Map(tt.current),It.current=new Set(Ge.currentDocumentPaths),Xe.current=new Map(Ge.currentDocumentWatermarks),bt.current=new Set(Ge.currentAssetPaths),at.current=new Map(Ge.currentAssetWatermarks),U.current=new Set(Ge.currentDocumentReviewSessionIds),pe.current=new Map(Ge.currentDocumentReviewSessionWatermarks),Ke.current=new Set(Ge.currentDocumentReviewCommentIds),Et.current=new Map(Ge.currentDocumentReviewCommentWatermarks),kt.current=new Set(Ge.currentAnnotatedAttachmentSessionIds),Ot.current=new Map(Ge.currentAnnotatedAttachmentSessionWatermarks),dr&&(dr.current=new Set(Ge.currentTaskforceAgentIds)),tr&&(tr.current=new Map(Ge.currentTaskforceAgentWatermarks)),pr&&(pr.current=new Set(Ge.currentTaskforceAgentSkillIds)),Bt&&(Bt.current=new Map(Ge.currentTaskforceAgentSkillWatermarks)),wr&&(wr.current=new Set(Ge.currentAgentConversationIds)),or&&(or.current=new Map(Ge.currentAgentConversationWatermarks)),$r.current=new Map(Ge.currentTaskEventWatermarks),br&&(Ee.current=!1);for(const[Xt,bn]of Ge.pushedWatermarks)Ce.current.set(Xt,bn);for(const[Xt,bn]of Ge.pushedTaskChangeKeys||new Map)Pe.current.set(Xt,bn);if(Ge.deleteTaskIds.size>0)for(const Xt of Ge.deleteTaskIds)Ne.current.delete(Xt),je.current.delete(Xt),Ce.current.delete(Xt),Pe.current.delete(Xt);const hr=await j();Dr.current=hr?null:"storage-write-failed",Array.isArray(Ge.emittedEventIds)&&Ge.emittedEventIds.length>0&&ie(Ge.emittedEventIds,{queueRef:Yt,maxQueueSize:2048}),k();const Jt=Ge.syncedAt||Ue().toISOString();return J.current=ye(),G(Jt),ne(0),N("idle"),E({phase:"active",lastPushAt:Jt,lastSyncedAt:Jt}),L(l,{eventType:c==="provision-local"?"bootstrap":"push",status:"success",changeCount:Ge.changeCount,requestMs:Ge.requestMs,details:{payloadDiagnostics:Ge.effectiveDeltaDiagnostics||Hr.deltaDiagnostics||null,...Ge.batchProgress?{pushBatchProgress:Ge.batchProgress}:{},...Ge.effectiveDeltaDiagnostics&&Hr.deltaDiagnostics&&Ge.effectiveDeltaDiagnostics.totalChanges!==Hr.deltaDiagnostics.totalChanges?{candidatePayloadDiagnostics:Hr.deltaDiagnostics}:{},replayedPayload:St}}),!0}catch(xr){const er="Workspace sync push failed.";return N("error"),be(er),Ae(er),q(Ue().toISOString()),Ze.current=gt,u&&(Ie.current={signature:gt,payload:u,forceAllAiProfiles:br,repairMode:ur}),P(),L(l,{eventType:"push",status:"error",errorMessage:`${er} ${String(xr?.message||"").trim()}`.trim(),details:{replayedPayload:St}}),ft("push_failed_exception",{workspaceId:l,elapsedMs:Ue().getTime()-$n}),!1}finally{de.current=!1,B(x.current),T(l),le.current&&!x.current&&!A()&&Ct("pull-after-push",()=>{ir()},0);const xr=Ze.current,er=ye();xr&&er&&er!==J.current&&!x.current&&!A()&&!Fr&&Ct("pending-push",()=>{const jr=Ze.current||er;Ze.current="",Ft(jr)},120)}},ir=async it=>{if(!w())return!1;const Zt=it?.repairMode===!0,Lr=async u=>{Zt&&(k(),await D({phase:"error",lastErrorMessage:u}))};let lr=Dv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:He.current===!0,repairModeBypass:Zt,retryPending:A(),pullInFlight:x.current,pushInFlight:de.current});if(!lr.allowed&&lr.reason==="auth-required"){if(!await m())return await Lr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;lr=Dv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:He.current===!0,repairModeBypass:Zt,retryPending:A(),pullInFlight:x.current,pushInFlight:de.current})}if(!lr.allowed)return lr.reason==="push-in-flight"&&!Zt&&(le.current=!0),!1;if(le.current=!1,!await _(l,"pull"))return Y("pull"),!1;x.current=!0,B(!0),N("syncing"),be(null);const br=Ue().getTime();let ur=!1;try{if(!await h())return await Lr("Workspace sync repair could not validate cloud access. Resolve the reported error, then press Repair to retry."),!1;if(!w())return!1;const St={authFailure:!1,failure:null};let gt=!1,Fr=[],xr=0;const er=$t=>{xr+=Math.max(0,Number($t)||0)},jr=tE({workspaceId:l,remoteServices:V,localServices:$});let qr="",An="";const cn=($t,Ut)=>$t.kind==="auth-failure"?(St.authFailure=!0,!1):$t.kind==="transient-failure"?(St.failure={status:$t.status,retryAfterMs:$t.retryAfterMs,error:String($t.error||"Workspace projection synchronization failed."),projectionCycle:Ut},!1):!0;try{if(n===!0){const $t=await Ov({activationEnabled:!1,resolveCloudAuthUrl:f,workspaceId:l,onChangesApplied:er,dependencies:jr.initiative});if(cn($t,"initiative")){const Ut=await RS({activationEnabled:!0,coverage:s,resolveCloudAuthUrl:f,workspaceId:l,forceAuthoritativeRepair:it?.forceV3AuthoritativeRepair===!0,...it?.recoveryBatchId?{recoveryBatchId:it.recoveryBatchId}:{},onChangesApplied:er,dependencies:jr.combined});Fr=Ut.excludedProjections;const Ur=Ut.kind==="transient-failure"?Qj(Ut):null;Ur?(qr=Ur,An=Ut.kind==="transient-failure"?Ut.error:""):cn(Ut,"combined")}}else{if(n!==void 0){const $t=await RS({activationEnabled:!1,coverage:s,resolveCloudAuthUrl:f,workspaceId:l,onChangesApplied:er,dependencies:jr.combined});cn($t,"combined")}if(!St.authFailure&&!St.failure&&r!==void 0){const $t=await Ov({activationEnabled:r,resolveCloudAuthUrl:f,workspaceId:l,onChangesApplied:er,dependencies:jr.initiative});cn($t,"initiative")&&(gt=$t.excludeInitiativesFromV2)}}}finally{await jr.abandonPendingReceipts()}if(St.authFailure)return await y("pull",401),await Lr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(St.failure)return Ae(St.failure.error),q(Ue().toISOString()),L(l,{eventType:"apply",status:"error",statusCode:St.failure.status,errorMessage:St.failure.error,details:{recovery:"projection-cycle-retry",projectionCycle:St.failure.projectionCycle,...St.failure.retryAfterMs!==void 0?{retryAfterMs:St.failure.retryAfterMs}:{}}}),Zt?await D({phase:"error",lastErrorMessage:St.failure.error}):P(St.failure.retryAfterMs),!1;if(qr){const $t=await HI({workspaceId:l,assetId:qr,remoteServices:V,localServices:$}).catch(Ut=>({success:!1,error:Ut instanceof Error?Ut.message:String(Ut||"Unknown hydration failure.")}));return $t.success&&$t.emittedEventIds.length>0&&ie($t.emittedEventIds,{ttlMs:6e4}),N("error"),be(An),Ae(An),q(Ue().toISOString()),L(l,{eventType:"apply",status:"error",errorMessage:An,changeCount:$t.success?$t.appliedChanges:0,details:{recovery:$t.success?"combined-attachment-asset-hydrated-retry-pending":"combined-attachment-asset-hydration-failed",assetId:qr,...$t.success?{}:{hydrationError:$t.error}}}),P(),!1}const Hr=Cj({workspaceSyncPhase:c,forceCursorNull:it?.forceCursorNull===!0,currentCursor:Re.current}),Ge=await D1({resolveCloudAuthUrl:f,workspaceId:l,cursor:Zt?null:Hr.cursor,bootstrap:Hr.bootstrap,ensureCloudWorkspaceReadyForSync:g,maxPages:Zt?200:20,repairMode:Zt||He.current===!0,contentMode:it?.forceCursorNull===!0?"manifest":"full",excludeInitiatives:gt,excludedProjections:Fr,onPagePulled:()=>{xt.current=Ue().getTime()},onAiProfilesApplied:()=>{xe({workspaceId:l,reason:"sync-apply",origin:"sync-orchestrator"})},onChangesApplied:()=>{xt.current=Ue().getTime()},remoteServices:V,localServices:$});if(!Ge.success){if(Ge.kind==="pull_http"&&Ge.status===401)return await y("pull",401),await Lr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ge.kind==="apply_auth")return await y("apply",401),await Lr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ge.kind==="pull_http"&&Ge.errorCode==="INVALID_SYNC_CURSOR"){const Ut="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return Re.current=null,E({pullCursor:null}),N("error"),be(Ut),Ae(Ut),q(Ue().toISOString()),L(l,{eventType:"pull",status:"error",statusCode:Ge.status,errorMessage:Ut,requestMs:Ge.pullRequestMs,details:{recovery:"cursor-reset",...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),Zt?await D({phase:"error",lastErrorMessage:Ut}):P(150),!1}let $t=Ge.kind==="apply_payload"||Ge.kind==="apply_all_candidates"||Ge.kind==="exception"?String(Ge.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Ge.status||0})`;return Ge.status===413&&($t="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),N("error"),be($t),Ae($t),q(Ue().toISOString()),L(l,{eventType:Ge.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Ge.status,errorMessage:$t,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),Zt?await D({phase:"error",lastErrorMessage:$t}):Ge.transient||Ge.hasTransientApplyFailure||di(Ge.status)?P(Ge.retryAfterMs):E({phase:"error",lastErrorMessage:$t}),!1}if(Zt&&Ge.hasMore===!0){const $t="Workspace sync repair stopped before the full cloud snapshot was downloaded. Press Repair to retry.";return N("error"),be($t),Ae($t),q(Ue().toISOString()),await D({phase:"error",lastErrorMessage:$t}),L(l,{eventType:"pull",status:"error",errorMessage:$t,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,recovery:"repair-pull-incomplete"}}),!1}Array.isArray(Ge.emittedEventIds)&&ie(Ge.emittedEventIds,{ttlMs:6e4}),(Ge.pulledTaskforceAgentUpserts||Ge.pulledAgentRoleUpserts||Ge.pulledTaskforceAgentSkillUpserts||Ge.pulledAgentConversationUpserts)&&await _e?.(),(Ge.pulledTaskforceAgentUpserts||Ge.pulledAgentRoleUpserts||Ge.pulledAgentConversationUpserts)&&ke({workspaceId:l,reason:"sync-apply"}),Ge.pulledTaskforceAgentSkillUpserts&&ve({workspaceId:l,reason:"sync-apply"}),Ge.pulledDeleteTaskIds.size>0&&(Te($t=>$t.filter(Ut=>!Ge.pulledDeleteTaskIds.has(String(Ut.id||"")))),Le($t=>$t.filter(Ut=>!Ge.pulledDeleteTaskIds.has(String(Ut.id||"")))));const hr=Array.isArray(Ge.documentDecryptFailures)?Ge.documentDecryptFailures.filter($t=>String($t||"").trim().length>0):[];if(hr.length>0&&ft("pull_document_decrypt_failures",{workspaceId:l,failureCount:hr.length}),Re.current=Ge.cursor||null,xr>0||Ge.appliedChanges>0&&(Zt||Ge.pulledActiveUpserts||Ge.pulledArchivedUpserts||Ge.pulledTaskEventUpserts||Ge.pulledPlanningUpserts||Ge.pulledDeleteTaskIds.size>0))try{await $e()}catch{if(ft("pull_local_refresh_failed",{workspaceId:l,appliedChanges:Ge.appliedChanges+xr}),Zt){const $t="Workspace sync repair could not refresh tasks and relationships after the cloud pull. Press Repair to retry.";return k(),N("error"),be($t),Ae($t),q(Ue().toISOString()),await D({phase:"error",lastErrorMessage:$t}),!1}}k(),v();const Jt=Ge.syncedAt||Ue().toISOString();Z(Jt),ne(0),N("idle");const Xt=Ij({workspaceSyncPhase:c,forceCursorNull:it?.forceCursorNull===!0,repairMode:Zt,startupFullReconcileRan:nt.current,pendingSignature:Ze.current,fallbackSignature:ye(),lastPushedSignature:J.current});if(Xt.shouldCaptureAttachBootstrapBaseline&&(Me.current=!0),Xt.shouldClearPendingSignature&&(Ze.current=Xt.deferredPushSignature||"",Ie.current=null),await D({phase:"active",pullCursor:Re.current,lastPullAt:Jt,lastSyncedAt:Jt,...it?.forceCursorNull===!0?{startupFullReconcileCompletedAt:Jt}:{},lastErrorMessage:null}),L(l,{eventType:Xt.successEventType,status:"success",changeCount:Ge.appliedChanges+xr,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),Xt.shouldRefreshReferenceSnapshots&&(await H(),await oe(),await ee(),await fe()),Xt.shouldSeedWorkspaceSnapshotPushBaseline&&ge(),Xt.shouldRefreshReferenceSnapshots||Xt.shouldSeedWorkspaceSnapshotPushBaseline)return ur=!0,!0;if(Xt.shouldScheduleStartupFullReconcile&&(pt.current=!0,Ct("startup-full-reconcile",()=>{!pt.current||lt.current||(pt.current=!1,nt.current=!0,lt.current=!0,ir({forceCursorNull:!0}).finally(()=>{lt.current=!1}))},250)),it?.forceCursorNull===!0&&!Zt&&c==="active"){const $t=ye();$t&&(Ee.current=!0,Ze.current=$t,Ct("pending-push",()=>{const Ut=Ze.current||$t;Ze.current="",Ft(Ut,{forceAllAiProfiles:!0})},120))}else if(Xt.deferredPushSignature){const $t=Xt.deferredPushSignature;Ct("pending-push",()=>{const Ut=Ze.current||$t;Ze.current="",Ft(Ut)},120)}return ur=!0,!0}catch(u){const St=String(u?.message||"").trim(),gt=St?`Workspace sync pull failed. ${St}`:"Workspace sync pull failed.";return N("error"),be(gt),Ae(gt),q(Ue().toISOString()),Zt?await D({phase:"error",lastErrorMessage:gt}):P(),L(l,{eventType:"pull",status:"error",errorMessage:gt,requestMs:Ue().getTime()-br}),ft("pull_failed_exception",{workspaceId:l,elapsedMs:Ue().getTime()-br,error:St||null}),!1}finally{x.current=!1,B(de.current),ur&&z(l,"pull"),T(l)}};return{pushWorkspaceChangesToCloud:Ft,pullWorkspaceChangesFromCloud:ir,resumeDeferredWork:()=>{w()&&(le.current&&Ct("pull-after-push",()=>{ir()},0),Ze.current&&Ct("pending-push",()=>{const it=Ze.current;it&&(Ze.current="",Ft(it,{forceAllAiProfiles:Ee.current}))},120),pt.current&&Ct("startup-full-reconcile",()=>{!pt.current||lt.current||(pt.current=!1,nt.current=!0,lt.current=!0,ir({forceCursorNull:!0}).finally(()=>{lt.current=!1}))},250))},dispose:Ht}}function nE(e){return rE({now:()=>new Date,scheduleTask:(t,r)=>{const n=window.setTimeout(t,r);return{cancel:()=>window.clearTimeout(n)}},logDebug:Ds,notifyAiProfilesMutated:_I,notifyAgentsMutated:TI,notifyAgentSkillsMutated:xI,...e})}const aE="/api/taskforce/sync/v3/local/dispatch",sE=20,oE=1e5;function iE(e){if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid outbox status.");const t=e,r=v=>{const A=Number(t[v]);return Number.isInteger(A)&&A>=0?A:null},n=r("activeDepth"),s=r("pending"),i=r("inFlight"),l=r("blocked");let c;if(t.operationStates!==void 0){if(!t.operationStates||typeof t.operationStates!="object"||Array.isArray(t.operationStates))throw new Error("Local outbox dispatch returned invalid operation states.");const v=t.operationStates,A=w=>{const P=Number(v[w]);return Number.isInteger(P)&&P>=0?P:null},b={pending:A("pending"),retryScheduled:A("retryScheduled"),inFlight:A("inFlight"),stale:A("stale"),blocked:A("blocked")};if(Object.values(b).some(w=>w===null)||s===null||i===null||l===null||b.pending+b.retryScheduled!==s||b.inFlight+b.stale!==i||b.blocked!==l)throw new Error("Local outbox dispatch returned inconsistent operation states.");c={pending:b.pending,retryScheduled:b.retryScheduled,inFlight:b.inFlight,stale:b.stale,blocked:b.blocked}}const d=v=>t[v]===null||typeof t[v]=="string"?t[v]:void 0,m=d("oldestActiveCreatedAt"),f=d("oldestActionableAt"),g=d("blockedErrorCode"),h=t.recovery;let y=null;if(h!==null){if(!h||typeof h!="object"||Array.isArray(h))throw new Error("Local outbox dispatch returned an invalid recovery status.");const v=h,A=S=>{const L=Number(v[S]);return Number.isInteger(L)&&L>=0?L:null},b=String(v.state||""),w=A("replayTotal"),P=A("replayPending"),E=A("replayInFlight"),D=A("replayBlocked"),j=A("replayAccepted");if(typeof v.recoveryBatchId!="string"||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(b)||w===null||P===null||E===null||D===null||j===null||w<P+E+D+j||typeof v.createdAt!="string"||typeof v.updatedAt!="string"||v.completedAt!==null&&typeof v.completedAt!="string")throw new Error("Local outbox dispatch returned an invalid recovery status.");y={recoveryBatchId:v.recoveryBatchId,state:b,replayTotal:w,replayPending:P,replayInFlight:E,replayBlocked:D,replayAccepted:j,createdAt:v.createdAt,updatedAt:v.updatedAt,completedAt:v.completedAt}}let k;if(t.attachmentApplyObligations!==void 0){if(!t.attachmentApplyObligations||typeof t.attachmentApplyObligations!="object"||Array.isArray(t.attachmentApplyObligations))throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");const v=t.attachmentApplyObligations,A=Number(v.open),b=Number(v.due),w=Number(v.totalAttempts);if(![A,b,w].every(P=>Number.isInteger(P)&&P>=0)||b>A||v.oldestOpenCreatedAt!==null&&typeof v.oldestOpenCreatedAt!="string"||v.nextAttemptAt!==null&&typeof v.nextAttemptAt!="string"||v.lastError!==null&&typeof v.lastError!="string")throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");k={open:A,due:b,totalAttempts:w,oldestOpenCreatedAt:v.oldestOpenCreatedAt,nextAttemptAt:v.nextAttemptAt,lastError:v.lastError}}if(n===null||s===null||i===null||l===null||n!==s+i+l||m===void 0||g===void 0||!Object.prototype.hasOwnProperty.call(t,"recovery"))throw new Error("Local outbox dispatch returned an invalid outbox status.");return{activeDepth:n,pending:s,inFlight:i,blocked:l,...c?{operationStates:c}:{},oldestActiveCreatedAt:m,...f!==void 0?{oldestActionableAt:f}:{},blockedErrorCode:g,recovery:y,...k?{attachmentApplyObligations:k}:{}}}function cE(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid response.");const t=e,r=Number(t.claimed),n=Array.isArray(t.outcomes)?t.outcomes:[],s=i=>{if(i.retryDependency===void 0)return!0;if(i.disposition!=="retry"||!i.retryDependency||typeof i.retryDependency!="object"||Array.isArray(i.retryDependency))return!1;const l=i.retryDependency;return Object.keys(l).sort().join(",")==="assetId,kind"&&l.kind==="asset"&&typeof l.assetId=="string"&&/^[A-Za-z0-9._:-]+$/.test(l.assetId)};if(t.success!==!0||!Number.isInteger(r)||r<0||r>1||n.length!==r||n.some(i=>!i||typeof i!="object"||!["accepted","retry","blocked","lease-lost"].includes(String(i.disposition||""))))throw new Error("Local outbox dispatch returned an invalid response.");if(n.some(i=>!s(i)))throw new Error("Local outbox dispatch returned an invalid retry dependency.");return{success:!0,claimed:r,outcomes:n,outbox:iE(t.outbox)}}async function lE(e){const t=String(e.workspaceId||"").trim();if(!t)throw new Error("Workspace id is required to drain the local outbox.");const r=e.fetchImpl||fetch,n=Math.max(1,Math.min(100,Math.floor(e.operationBudget??sE))),s=Math.max(1,Math.floor(e.requestTimeoutMs??oE));let i=0;const l=new Set;let c;for(;i<n;){const d=new AbortController;let m,f;const g=new Promise((y,k)=>{f=k,m=setTimeout(()=>{d.abort(),k(new Error("Local outbox dispatch timed out."))},s)}),h=()=>{d.abort(e.signal?.reason),f?.(new DOMException("Local outbox dispatch aborted.","AbortError"))};e.signal?.aborted?h():e.signal?.addEventListener("abort",h,{once:!0});try{const y=(async()=>{const b=await r(aE,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t,limit:1}),signal:d.signal});if(!b.ok)throw new Error(`Local outbox dispatch failed (${b.status}).`);return cE(await b.json())})(),k=await Promise.race([y,g]);if(c=k.outbox,k.claimed===0)return{processed:i,retryRecommended:!1,budgetExhausted:!1,...c?{outbox:c}:{}};i+=k.claimed;const v=k.outcomes[0],A=v?.disposition;if(A==="retry"&&v.retryDependency?.kind==="asset"){const b=`${v.retryDependency.kind}:${v.retryDependency.assetId}`;if(l.has(b))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};if(!e.hydrateAsset||!await e.hydrateAsset(v.retryDependency.assetId))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};l.add(b);continue}if(A==="retry"||A==="lease-lost")return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}}}finally{m!==void 0&&clearTimeout(m),e.signal?.removeEventListener("abort",h)}}return{processed:i,retryRecommended:!0,budgetExhausted:!0,...c?{outbox:c}:{}}}const dE=3e4,uE=1e3,fE=3e4;function mE(e){const t=o.useRef(null),r=o.useRef(""),n=o.useRef(null),s=o.useRef(null),i=o.useRef({enabled:e.enabled,workspaceId:e.workspaceId,authorityScope:e.authorityScope,remoteServices:e.remoteServices,localServices:e.localServices,isAuthorityCurrent:e.isAuthorityCurrent,onHydratedEventIds:e.onHydratedEventIds,onOutboxStatus:e.onOutboxStatus});i.current={enabled:e.enabled,workspaceId:e.workspaceId,authorityScope:e.authorityScope,remoteServices:e.remoteServices,localServices:e.localServices,isAuthorityCurrent:e.isAuthorityCurrent,onHydratedEventIds:e.onHydratedEventIds,onOutboxStatus:e.onOutboxStatus};const l=o.useCallback(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),c=o.useCallback(async()=>{const d=i.current;if(!d.enabled||!d.workspaceId||!d.remoteServices)return;const m=d.workspaceId,f=d.remoteServices,g=s.current;if(g?.key===m&&g.authorityScope===d.authorityScope&&g.at>Date.now()){n.current===null&&(n.current=window.setTimeout(()=>{n.current=null,c()},g.at-Date.now()));return}(g?.key!==m||g.authorityScope!==d.authorityScope||g.at<=Date.now())&&(s.current=null);const h=t.current;if(h?.key===m&&h.authorityScope===d.authorityScope){r.current=m;return}h&&h.controller.abort(),l();const y={key:m,authorityScope:d.authorityScope,controller:new AbortController};t.current=y;let k=0;try{const v=await lE({workspaceId:m,signal:y.controller.signal,hydrateAsset:async b=>{const w=i.current;if(y.controller.signal.aborted||!w.enabled||w.workspaceId!==m||w.authorityScope!==y.authorityScope||w.remoteServices!==f||w.isAuthorityCurrent?.(y.authorityScope)===!1)return!1;const P=await HI({workspaceId:m,assetId:b,remoteServices:f,localServices:d.localServices}).catch(()=>({success:!1,error:"Attachment hydration failed."})),E=i.current;return y.controller.signal.aborted||!E.enabled||E.workspaceId!==m||E.authorityScope!==y.authorityScope||E.remoteServices!==f||E.isAuthorityCurrent?.(y.authorityScope)===!1||!P.success?!1:(P.emittedEventIds.length>0&&d.onHydratedEventIds?.(P.emittedEventIds),!0)}}),A=i.current;if(!A.enabled||A.workspaceId!==m||A.authorityScope!==y.authorityScope)return;v.retryRecommended&&(k=v.budgetExhausted?uE:fE,s.current={key:m,authorityScope:y.authorityScope,at:Date.now()+k}),v.outbox&&d.onOutboxStatus?.(v.outbox)}catch{}finally{t.current===y&&(t.current=null)}if(!(!i.current.enabled||i.current.workspaceId!==m)){if(r.current===m){r.current="",c();return}k>0&&(n.current=window.setTimeout(()=>{n.current=null,c()},k))}},[l]);o.useEffect(()=>{e.onOutboxStatus?.(null)},[e.onOutboxStatus,e.workspaceId]),o.useEffect(()=>{if(!e.enabled){t.current?.controller.abort(),t.current=null,r.current="",s.current=null,i.current.onOutboxStatus?.(null),l();return}c()},[l,e.enabled,e.mutationFingerprint,e.authorityScope,e.remoteServices,e.workspaceId,c]),o.useEffect(()=>{if(!e.enabled)return;const d=()=>{c()},m=()=>{document.visibilityState==="visible"&&c()},f=window.setInterval(()=>{c()},dE);return window.addEventListener("online",d),document.addEventListener("visibilitychange",m),()=>{window.removeEventListener("online",d),document.removeEventListener("visibilitychange",m),window.clearInterval(f);const g=t.current;g?.key===e.workspaceId&&(g.controller.abort(),t.current=null),r.current===e.workspaceId&&(r.current=""),l()}},[l,e.authorityScope,e.enabled,e.remoteServices,e.workspaceId,c])}const yo="/api/taskforce/sync/v3/local/coordinator";class Va extends Error{constructor(t,r,n){super(t),this.code=r,this.status=n,this.name="LocalSyncCoordinatorBrowserClientError"}}class VI{fetchImpl;constructor(t){this.fetchImpl=t||globalThis.fetch.bind(globalThis)}attachWorkspace(t){return this.requestJson(`${yo}/attach`,Oi("POST",t))}readStatus(t){const r=Uh(t);return this.requestJson(`${yo}/status?${r.toString()}`,{method:"GET",credentials:"include"})}attachCredential(t){return this.requestJson(`${yo}/credential`,Oi("POST",t))}switchWorkspace(t){return this.requestJson(`${yo}/workspace-switch`,Oi("POST",t))}clearCredential(t){const r=Uh(t);return this.requestJson(`${yo}/credential?${r.toString()}`,{method:"DELETE",credentials:"include"})}issuePermit(t){return this.requestJson(`${yo}/permits`,Oi("POST",t))}issueCommand(t){return this.requestJson(`${yo}/commands`,Oi("POST",t))}signalWake(t){return this.requestJson(`${yo}/wake`,Oi("POST",t))}transferOwnership(t){return this.requestJson(`${yo}/ownership-transfer`,Oi("POST",t))}readCommand(t){const r=Uh(t);return t.rootCommandId&&r.set("rootCommandId",t.rootCommandId),this.requestJson(`${yo}/commands/${encodeURIComponent(t.commandId)}?${r.toString()}`,{method:"GET",credentials:"include"})}readPermit(t){const r=Uh(t);return this.requestJson(`${yo}/permits/${encodeURIComponent(t.permitId)}?${r.toString()}`,{method:"GET",credentials:"include"})}async executeGateway(t){return await this.fetchImpl(`${yo}/gateway`,Oi("POST",t))}applyCombinedFeed(t){const r=t.command.kind==="delta"?t.command:{...t.command,epoch:t.command.expectedEpoch,previousCursor:t.command.previousRepairCursor,expectedEpoch:void 0,previousRepairCursor:void 0};return this.requestJson("/api/taskforce/sync/v3/local/feed",Oi("POST",{workspaceId:t.workspaceId,executionPermitId:t.executionPermitId,coordinatorGeneration:t.coordinatorGeneration,...r,...t.coverage}))}releasePermit(t){return this.requestJson(`${yo}/permits/${encodeURIComponent(t.permitId)}/release`,Oi("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.pushBoundary?{pushBoundary:t.pushBoundary}:{}}))}abandonPermit(t){return this.permitAction(t,"abandon")}permitAction(t,r){return this.requestJson(`${yo}/permits/${encodeURIComponent(t.permitId)}/${r}`,Oi("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.errorCode?{errorCode:t.errorCode}:{}}))}async requestJson(t,r){const n=await this.fetchImpl(t,r);return n.ok||await pE(n),n.json()}}function Uh(e){return new URLSearchParams({workspaceId:e.workspaceId,coordinatorGeneration:String(e.coordinatorGeneration)})}function Oi(e,t){return{method:e,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}}async function pE(e){let t={};try{t=await e.json()}catch{}throw new Va(String(t.error||`Local sync coordinator request failed (${e.status}).`),String(t.code||"SYNC_COORDINATOR_REQUEST_FAILED"),e.status)}const jS="taskforce.local-sync-coordinator.command.v1",hE=500,gE=240,yE=8,kE=600*1e3;function Fw(e,t="default"){return t==="priority"?`${jS}.priority:${e}`:`${jS}:${e}`}function vE(e,t,r=()=>new Date,n="default"){e.setItem(Fw(t.workspaceId,n),JSON.stringify({storedAt:r().toISOString(),envelope:t}))}function ES(e,t,r=()=>new Date,n="default"){const s=Fw(t,n);try{const i=e.getItem(s);if(!i)return null;const l=JSON.parse(i),c=Date.parse(String(l.storedAt||"")),d=l.envelope;return!d||d.workspaceId!==t||!d.commandId||!Number.isInteger(d.coordinatorGeneration)||!Number.isFinite(c)||r().getTime()-c>kE?(Ju(e,t,n),null):d}catch{return Ju(e,t,n),null}}function wE(e,t,r="default"){e.removeItem(Fw(t,r))}async function Vk(e){const{client:t,envelope:r,storage:n=null,pollIntervalMs:s=hE,maxPollAttempts:i=gE,delay:l=IE,recoverExisting:c=!1,storageLane:d="default"}=e;if(n&&!c)try{vE(n,r,void 0,d)}catch{}try{let m=c?await bE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i}):await SE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i});const f=new Set;for(let g=0;g<i;g+=1){if(f.has(m.commandId))throw new Va("The local sync coordinator command references contain a cycle.","SYNC_COORDINATOR_COMMAND_REFERENCE_CYCLE",409);if(f.add(m.commandId),m.status==="succeeded")return Ju(n,r.workspaceId,d),m;if(m.status==="failed")throw Ju(n,r.workspaceId,d),new Va(m.errorMessage||"The local sync coordinator command failed.",m.errorCode||"SYNC_COORDINATOR_COMMAND_FAILED",409);if(m.status==="superseded"){const h=AE(m);if(!h)return Ju(n,r.workspaceId,d),m;if(f.size>=yE)throw new Va("The local sync coordinator command reference chain is too long.","SYNC_COORDINATOR_COMMAND_REFERENCE_LIMIT",409);m=await Bg(t,r,h);continue}await l(Math.max(1,s)),m=await Bg(t,r,m.commandId),f.delete(m.commandId)}throw new Va("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}catch(m){const f=$g(m);throw n&&CE(f)&&Ju(n,r.workspaceId,d),f}}function Ju(e,t,r){if(e)try{wE(e,t,r)}catch{}}async function bE(e,t,r){for(let n=0;n<r.maxPollAttempts;n+=1)try{return await Bg(e,t,t.commandId)}catch(s){const i=$g(s);if(i.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Wg(i))throw i;await r.delay(Math.max(1,r.pollIntervalMs))}throw GI()}async function SE(e,t,r){try{return(await e.issueCommand(t)).command}catch(n){const s=$g(n);if(!Wg(s))throw s;for(let i=0;i<r.maxPollAttempts;i+=1)try{return await Bg(e,t,t.commandId)}catch(l){const c=$g(l);if(c.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Wg(c))throw c;await r.delay(Math.max(1,r.pollIntervalMs))}throw GI()}}async function Bg(e,t,r){return(await e.readCommand({commandId:r,workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,rootCommandId:t.commandId})).command}function AE(e){if(!e.result||typeof e.result!="object")return null;const t=e.result,r=t.leaderCommandId||t.supersedingCommandId;return typeof r=="string"&&r.trim()?r.trim():null}function Wg(e){return e.status===0||e.status===408||e.status===429||e.status>=500}function CE(e){return!Wg(e)&&e.code!=="SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT"}function GI(){return new Va("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}function $g(e){return e instanceof Va?e:new Va(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function IE(e){return new Promise(t=>{setTimeout(t,e)})}const Wv="taskforce:auth-session-changed";function NS(){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new Event(Wv))}const _E=new VI;function TE(e){const t=e.client||_E,r=Math.max(1e3,e.pollIntervalMs??3e3),[n,s]=o.useState({phase:"idle",snapshot:null,error:null}),i=o.useRef(0),l=o.useRef(0),c=o.useRef(null),d=o.useRef(null),[m,f]=o.useState(null),[g,h]=o.useState(null),y=o.useRef(null);y.current=n.snapshot,o.useEffect(()=>{f(null),h(null)},[e.workspaceId]);const k=o.useCallback(S=>{const L=c.current;if(L?.workspaceId===e.workspaceId)return L.promise;const _=Gk(),T=_?ES(_,e.workspaceId):null;if(!T)return null;const z=Vk({client:t,envelope:T,storage:_,recoverExisting:!0}),Y={workspaceId:e.workspaceId,scope:S,type:T.type,promise:z};return c.current=Y,f(T.type),z.catch(()=>{}).finally(()=>{c.current===Y&&(c.current=null,f(null))}),z},[t,e.workspaceId]),v=o.useCallback(S=>{const L=d.current;if(L?.workspaceId===e.workspaceId)return L.promise;const _=Gk(),T=_?ES(_,e.workspaceId,void 0,"priority"):null;if(!T)return null;const z=Vk({client:t,envelope:T,storage:_,recoverExisting:!0,storageLane:"priority"}),Y={workspaceId:e.workspaceId,scope:S,type:T.type,promise:z};return d.current=Y,h(T.type),z.catch(()=>{}).finally(()=>{d.current===Y&&(d.current=null,h(null))}),z},[t,e.workspaceId]),A=o.useCallback(async(S,L)=>{const _=await t.attachWorkspace({workspaceId:e.workspaceId});if(i.current!==S||l.current!==L)return null;if(_.runtimeResumePending===!0)throw new Va("The local sync runtime has not resumed yet.",_.runtimeResumeErrorCode||"SYNC_COORDINATOR_RUNTIME_RESUME_PENDING",503);const T=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration});if(i.current!==S||l.current!==L)return null;if(T.credential.status!=="ready")throw new Va("The local sync coordinator credential is not ready after attach.","SYNC_COORDINATOR_CREDENTIAL_BLOCKED",409);return y.current=T,s({phase:"ready",snapshot:T,error:null}),k(S),v(S),T},[t,e.workspaceId,k,v]),b=o.useCallback(async()=>{if(!e.enabled||!e.workspaceId)return null;const S=i.current,L=l.current+1;l.current=L;try{const _=y.current;if(!_)return await A(S,L);const T=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration});return i.current!==S||l.current!==L?null:T.credential.status!=="ready"||T.serverInstanceId!==_.serverInstanceId?await A(S,L):(y.current=T,s({phase:"ready",snapshot:T,error:null}),k(S),v(S),T)}catch(_){if(i.current!==S||l.current!==L)return null;const T=Kk(_);if(T.code==="SYNC_COORDINATOR_STALE_GENERATION"||T.code==="SYNC_COORDINATOR_INACTIVE_WORKSPACE")try{return await A(S,L)}catch(z){if(i.current!==S||l.current!==L)return null;const Y=Kk(z);return s(H=>({phase:"error",snapshot:H.snapshot,error:Y})),null}return s(z=>({phase:"error",snapshot:z.snapshot,error:T})),null}},[A,t,e.enabled,e.workspaceId,k,v]);o.useEffect(()=>{const S=i.current+1;if(i.current=S,y.current=null,!e.enabled||!e.workspaceId||typeof window>"u"){s({phase:"idle",snapshot:null,error:null});return}let L=!1,_=null;s({phase:"attaching",snapshot:null,error:null});const T=()=>{L||(_=window.setTimeout(()=>{_=null,b().finally(T)},r))},z=()=>{document.visibilityState==="visible"&&b()},Y=()=>{b()},H=()=>{y.current=null,b()},M=()=>{b().then(K=>{if(K?.state.ownershipMode==="server")return t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:K.state.coordinatorGeneration,source:"connectivity"}).catch(()=>{})})};document.addEventListener("visibilitychange",z),window.addEventListener("focus",Y),window.addEventListener("online",M),window.addEventListener(Wv,H);const oe=l.current+1;return l.current=oe,A(S,oe).catch(K=>{i.current!==S||l.current!==oe||s({phase:"error",snapshot:null,error:Kk(K)})}).finally(T),()=>{L=!0,i.current+=1,_!==null&&window.clearTimeout(_),document.removeEventListener("visibilitychange",z),window.removeEventListener("focus",Y),window.removeEventListener("online",M),window.removeEventListener(Wv,H)}},[A,t,e.enabled,e.workspaceId,r,b]);const w=o.useCallback(async(S,L=null)=>{let _=y.current;if(!_)throw new Va("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);const T=S==="DisableSync";if(T){const ee=d.current;if(ee?.workspaceId===e.workspaceId){if(ee.type===S)return ee.promise;await ee.promise}const fe=v(i.current);if(fe){if(d.current?.type===S)return fe;await fe}}const z=c.current;if(z?.workspaceId===e.workspaceId){if(z.type===S)return z.promise;const ee=z.type==="EnableSync"||z.type==="DisableSync";(!T||ee)&&await z.promise}const Y=k(i.current);if(Y){const ee=c.current?.type;if(ee===S)return Y;(!T||(ee==="EnableSync"||ee==="DisableSync"))&&await Y}if(!T){const ee=d.current;if(ee?.workspaceId===e.workspaceId){if(ee.type===S)return ee.promise;await ee.promise}const fe=v(i.current);if(fe){if(d.current?.type===S)return fe;await fe}}if(_=y.current,!_)throw new Va("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);const H={commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration,type:S,version:1,args:L},M=Vk({client:t,envelope:H,storage:Gk(),storageLane:T?"priority":"default"}),oe={workspaceId:e.workspaceId,scope:i.current,type:S,promise:M},K=T?d:c;K.current=oe,T?h(S):f(S);const Q=()=>{K.current===oe&&(K.current=null,T?h(null):f(null)),i.current===oe.scope&&e.workspaceId===oe.workspaceId&&b()};return M.then(Q,Q),M},[t,e.workspaceId,b,k,v]),P=o.useCallback(async(S,L=[])=>{const _=y.current;return!_||_.state.ownershipMode!=="server"?!1:(await t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration,source:S,eventIds:L}),!0)},[t,e.workspaceId]),E=o.useCallback(async()=>{const S=y.current;return!S||!e.workspaceId?!1:(await t.clearCredential({workspaceId:e.workspaceId,coordinatorGeneration:S.state.coordinatorGeneration}),y.current=null,s({phase:"idle",snapshot:null,error:null}),!0)},[t,e.workspaceId]),D=o.useCallback(async S=>{const L=y.current,_=String(L?.state.activeWorkspaceId||"").trim(),T=String(S||"").trim();if(!L||!_)throw new Va("The local sync coordinator is not attached to an active workspace.","SYNC_COORDINATOR_UNAVAILABLE",409);if(!T)throw new Va("The target workspace is required.","SYNC_COORDINATOR_COMMAND_INVALID",400);if(T===_)return L.state;const z=i.current,Y=await t.switchWorkspace({commandId:crypto.randomUUID(),expectedActiveWorkspaceId:_,targetWorkspaceId:T,coordinatorGeneration:L.state.coordinatorGeneration,version:1});return i.current===z&&(l.current+=1,y.current=null,s({phase:"attaching",snapshot:null,error:null})),Y.state},[t]),j=o.useCallback(async S=>{const L=y.current;if(!L)throw new Va("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);if(L.state.ownershipMode===S)return L.state;const _=i.current,T=await t.transferOwnership({commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:L.state.coordinatorGeneration,targetMode:S,version:1});if(i.current===_){const z={...L,state:T.state};y.current=z,s({phase:"ready",snapshot:z,error:null}),b()}return T.state},[t,e.workspaceId,b]);return o.useMemo(()=>({...n,activeCommandType:m,activePriorityCommandType:g,refresh:b,issueCommand:w,signalWake:P,clearCredential:E,switchWorkspace:D,transferOwnership:j}),[m,g,E,w,b,P,n,D,j])}function Gk(){if(typeof window>"u")return null;try{return window.sessionStorage}catch{return null}}function Kk(e){return e instanceof Va?e:new Va(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function xE(e){return e.serverCommandMode}function RE(e){return e.runtimeMode==="local"}function DS(e){const t=String(e.workspaceId||"").trim(),r=e.snapshot,n=r?.state,s=r?.credential,i=r?[r.serverInstanceId,n?.activeWorkspaceId||"",n?.coordinatorGeneration??"",n?.ownershipMode||"",n?.transitionState||"",s?.status||"",s?.coordinatorGeneration??""].join(":"):`${e.phase}:unavailable`;let l,c=!1,d=!1,m=!0;return e.phase!=="ready"||!r||!n||!s?l="coordinator-unavailable":!t||n.activeWorkspaceId!==t?l="workspace-mismatch":s.status!=="ready"||s.workspaceId!==t?l="credential-blocked":s.coordinatorGeneration!==n.coordinatorGeneration?l="generation-mismatch":n.transitionState!=="idle"?l="transition-active":n.ownershipMode==="browser-gateway"?(l="browser-owner",c=!0,m=!1):n.ownershipMode==="server"?(l="server-owner",c=!0,d=!0,m=!1):n.ownershipMode==="stopped"?l="coordinator-stopped":l="transition-active",{browserSchedulingAllowed:l==="browser-owner",coordinatorAuthorityReady:c,serverCommandMode:d,transitionFenced:m,reason:l,authorityEpoch:i}}class PE extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkspaceSyncTransportGatewayError"}}function jE(e){if(e.type==="handshake")return"handshake";if(e.type==="provision"||e.type==="bootstrap-push")return"bootstrap";if(e.type==="push")return"push";if(e.type==="v3-dispatch")return"v3-dispatch";if(e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="pull"&&e.repairMode===!0||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor))return"repair";if(e.type==="pull"||e.type==="v3-feed"||e.type==="task-comment-audit"||e.type==="content-pull")return"pull";throw EE("The requested sync gateway operation is not supported.")}function EE(e){return new PE(e,"SYNC_COORDINATOR_GATEWAY_OPERATION_INVALID")}function NE(e){return e.type==="v3-dispatch"?9e4:e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor)?75e3:e.type==="push"&&e.repairMode===!0||e.type==="pull"&&e.repairMode===!0?18e4:e.type==="push"||e.type==="bootstrap-push"||e.type==="pull"||e.type==="v3-feed"||e.type==="content-pull"?9e4:e.type==="task-comment-audit"?45e3:2e4}const DE=5e3;function MS(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function ME(e,t){return!MS(e)||e.success!==!0||e.workspaceId!==t||!Array.isArray(e.changes)||typeof e.hasMore!="boolean"||!Object.hasOwn(e,"nextCursor")||!(e.nextCursor===null||typeof e.nextCursor=="string")||e.workspaceMembers!==void 0&&!Array.isArray(e.workspaceMembers)||e.excludedProjections!==void 0&&(!Array.isArray(e.excludedProjections)||e.excludedProjections.some(r=>typeof r!="string"))?!1:e.diagnostics===void 0||MS(e.diagnostics)}function zh(e){return{cursor:e??null}}function Cm(e){return{version:1,projection:e.projection,cursor:e.cursor??null,...e.coverage?{coverage:{...e.coverage}}:{}}}function LS(e){const t=String(e||"").trim();if(!t)throw new TypeError("Independent content transfer identity is required.");return{version:1,projection:"independent-content",cursor:null,identity:t}}async function LE(e,t){const r=await e.text();let n={},s=!1;if(r)try{n=JSON.parse(r),s=!!(n&&typeof n=="object"&&!Array.isArray(n))}catch{n={error:r.slice(0,400)}}const i=e.headers.get("retry-after");let l;if(i){const c=Number.parseInt(i,10);if(Number.isFinite(c)&&c>0)l=c*1e3;else{const d=Date.parse(i),m=d-t;Number.isFinite(d)&&m>0&&(l=m)}}return{result:{ok:e.status>=200&&e.status<300,status:e.status,data:n,...l===void 0?{}:{retryAfterMs:l}},validJsonObject:s}}function OE(e){const t=e.now,r=e.createPermitId||(()=>crypto.randomUUID()),n=new WeakMap,s=f=>{if(f!==e.workspaceId)throw new TypeError("The browser-gateway sync operation workspace does not match its coordinator.")},i=async(f,g="SYNC_COORDINATOR_BROWSER_ABANDONED",h)=>{const k=(await e.client.abandonPermit({permitId:f,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,errorCode:g}))?.permit;if(!k||k.permitId!==f||k.workspaceId!==e.workspaceId||k.coordinatorGeneration!==e.coordinatorGeneration||k.serverInstanceId!==e.serverInstanceId||k.ownerMode!=="browser-gateway"||h&&(k.operationClass!==h.operationClass||k.operationIdentity!==h.operationIdentity)||!["released","abandoned-clean","abandoned-reconcile-required"].includes(k.state)||h?.acceptedReceipt===!0&&(k.upstreamDisposition!=="accepted"||!["released","abandoned-reconcile-required"].includes(k.state)))throw new Error("The browser-gateway execution permit was not abandoned safely.");return k},l=async(f,g,h)=>{try{await i(f,void 0,h)}catch{}throw g},c=async f=>{if(e.isExecutionAuthorized?.()===!1)throw new Error("The browser-gateway sync authority selection was revoked.");s(f.operation.workspaceId);const g=t(),h=Math.max(1,Math.floor(e.permitDeadlineMs??NE(f.operation)+DE)),y=jE(f.operation),k={operationClass:y,operationIdentity:f.operationIdentity||null},v=r();let A;try{A=await e.client.issuePermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationClass:y,operationIdentity:f.operationIdentity||null,lastCommittedCursor:f.previousBoundary,deadlineAt:new Date(g.getTime()+h).toISOString()})}catch(L){return l(v,L,k)}const b=A?.permit;if(!b||b.permitId!==v||b.workspaceId!==e.workspaceId||b.coordinatorGeneration!==e.coordinatorGeneration||b.serverInstanceId!==e.serverInstanceId||b.ownerMode!=="browser-gateway"||b.operationClass!==y||b.operationIdentity!==k.operationIdentity||b.state!=="issued-idle")return l(v,new Error("The browser-gateway execution permit is invalid."),k);let w;try{w=await e.client.executeGateway({permitId:b.permitId,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationIdentity:f.operationIdentity||null,operation:f.operation})}catch(L){return l(v,L,k)}let P;try{P=await LE(w,g.getTime())}catch(L){return l(v,L,k)}const E=P.result;let D;try{D=await e.client.readPermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch(L){return l(v,L,k)}const j=D?.permit;if(!j||j.permitId!==v||j.workspaceId!==e.workspaceId||j.coordinatorGeneration!==e.coordinatorGeneration||j.serverInstanceId!==e.serverInstanceId||j.ownerMode!=="browser-gateway"||j.operationClass!==y||j.operationIdentity!==k.operationIdentity||j.state!=="gateway-complete-awaiting-apply"||!["accepted","rejected","unknown"].includes(j.upstreamDisposition||""))return l(v,new Error("The browser-gateway did not settle its execution permit."),k);if(j.upstreamDisposition==="accepted"&&(f.requireAcceptedJsonObject&&!P.validJsonObject||f.validateAcceptedData&&!f.validateAcceptedData(E.data)))return l(v,new Error("The accepted browser-gateway sync response is invalid."),k);if(!f.applying){if(j.upstreamDisposition==="accepted"){let L;try{L=await e.client.releasePermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch(T){return l(v,T,k)}const _=L?.permit;if(!_||_.permitId!==v||_.workspaceId!==e.workspaceId||_.coordinatorGeneration!==e.coordinatorGeneration||_.serverInstanceId!==e.serverInstanceId||_.ownerMode!=="browser-gateway"||_.operationClass!==y||_.operationIdentity!==k.operationIdentity||_.state!=="released")return l(v,new Error("The browser-gateway execution permit was not released."),k)}else await i(v,void 0,k);return E}if(j.upstreamDisposition!=="accepted")return await i(v,void 0,k),E;if(!f.previousBoundary)return l(v,new Error("A browser-gateway applying request did not declare its prior boundary."),k);const S=Object.freeze({});return n.set(S,{permitId:v,workspaceId:e.workspaceId,previousBoundary:f.previousBoundary,operationClass:y,operationIdentity:k.operationIdentity}),{...E,transferReceipt:{token:S}}},d=(f,g,h)=>{if(s(f),!Array.isArray(g)||g.length===0)throw new TypeError("A browser-gateway apply completion group requires transfer receipts.");const y=g.map(k=>{if(!k||typeof k!="object")throw new TypeError("The browser-gateway transfer receipt is invalid.");const v=k.token;if(!v||typeof v!="object")throw new TypeError("The browser-gateway transfer receipt token is invalid.");const A=n.get(v);if(!A||A.workspaceId!==f)throw new TypeError("The browser-gateway transfer receipt does not belong to this adapter.");if(h&&pn(A.previousBoundary)!==pn(h))throw new TypeError("The browser-gateway transfer receipt starts at a different boundary.");return A});if(new Set(y.map(k=>k.permitId)).size!==y.length)throw new TypeError("The browser-gateway apply completion group contains duplicate receipts.");return y},m=(f,g,h,y)=>{const k=d(f,g,h);return{version:GC,workspaceId:f,coordinatorGeneration:e.coordinatorGeneration,ownerMode:"browser-gateway",serverInstanceId:e.serverInstanceId,permitIds:k.map(v=>v.permitId),previousBoundary:h,expectedBoundary:y}};return{handshakeWorkspace:f=>c({operation:{type:"handshake",workspaceId:f},applying:!1}),provisionWorkspace:f=>c({operation:{type:"provision",...f},applying:!1}),pushWorkspaceChanges:f=>{const{ownership:g}=f,h=Mh(f.pushBoundary),y=hg(f.changes);return c({operation:{type:"push",workspaceId:f.workspaceId,idempotencyKey:f.idempotencyKey,changes:f.changes,...f.repairMode===!0?{repairMode:!0}:{},...g.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:g.activeV3TaskMetadataIds}:{},...g.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:g.activeV3TaskLifecycleIds}:{},...g.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:g.activeV3TaskReopenAssigneeIds}:{},...g.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:g.activeV3InitiativeIds}:{},...g.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...g.combinedCoverage?{combinedCoverage:g.combinedCoverage,excludedProjections:g.combinedExcludedProjections||[]}:{}},operationIdentity:f.idempotencyKey,previousBoundary:h,applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:k=>{try{return fI(k,y),!0}catch{return!1}}})},pullWorkspaceChanges:f=>{const g=f.excludedProjections?.length?Rw(f.excludedProjections):null;return c({operation:{type:"pull",...f,...g?{coverage:g}:{},excludedProjections:f.excludedProjections?[...f.excludedProjections]:void 0},previousBoundary:zh(f.cursor),applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:h=>ME(h,f.workspaceId)})},pullWorkspaceContent:f=>{const{previousCursor:g,independentCompletionIdentity:h,...y}=f;return c({operation:{type:"content-pull",...y},previousBoundary:h?LS(h):zh(g),applying:!0})},pullInitiativeFeed:f=>c({operation:{type:"v3-feed",...f,limit:f.limit||100},previousBoundary:Cm({projection:"initiative",cursor:f.repairCursor||f.cursor}),applying:!0}),pullInitiativeRepair:f=>c({operation:{type:"initiative-repair",...f,limit:f.limit||100},previousBoundary:Cm({projection:"initiative",cursor:f.cursor}),applying:!0}),pullCombinedFeed:f=>c({operation:{type:"v3-feed",...f,limit:f.limit||100},previousBoundary:Cm({projection:"combined",cursor:f.repairCursor||f.cursor,coverage:f.coverage||Aa}),applying:!0}),pullCombinedRepair:f=>c({operation:{type:"combined-repair",...f,limit:f.limit||100,coverage:f.coverage||Aa},previousBoundary:Cm({projection:"combined",cursor:f.cursor,coverage:f.coverage||Aa}),applying:!0}),pullTaskCommentAudit:f=>c({operation:{type:"task-comment-audit",...f,limit:f.limit||50},previousBoundary:Cm({projection:"task-comment-audit",cursor:f.cursor}),applying:!0}),abandonTransferReceipts:async({workspaceId:f,receipts:g,errorCode:h})=>{const y=d(f,g);await Promise.all(y.map(k=>i(k.permitId,h,{operationClass:k.operationClass,operationIdentity:k.operationIdentity,acceptedReceipt:!0})))},acknowledgeNonApplyingTransferReceipts:async({workspaceId:f,receipts:g})=>{const h=d(f,g);await Promise.all(h.map(async y=>{const k=await e.client.releasePermit({permitId:y.permitId,workspaceId:f,coordinatorGeneration:e.coordinatorGeneration,...y.operationClass==="push"?{pushBoundary:Mh(y.previousBoundary)}:{}});if(!k?.permit||k.permit.state!=="released"||k.permit.permitId!==y.permitId||k.permit.workspaceId!==f||k.permit.coordinatorGeneration!==e.coordinatorGeneration||k.permit.serverInstanceId!==e.serverInstanceId||k.permit.ownerMode!=="browser-gateway"||k.permit.operationClass!==y.operationClass)throw new Error("The browser-gateway non-applying transfer receipt was not released.")}))},buildV2ApplyCompletionGroup:({workspaceId:f,previousCursor:g,nextCursor:h,receipts:y})=>m(f,y,zh(g),zh(h)),buildIndependentContentApplyCompletionGroup:({workspaceId:f,identity:g,receipts:h})=>{const y=LS(g);return m(f,h,y,y)},buildV2PushApplyCompletionGroup:({workspaceId:f,pushBoundary:g,receipts:h})=>m(f,h,Mh(g),Mh(g)),buildV3ApplyCompletionGroup:({workspaceId:f,apply:g,receipts:h})=>{const y=d(f,h),k=y[0].previousBoundary;if(!("projection"in k)||k.projection!==g.projection||y.some(b=>pn(b.previousBoundary)!==pn(k)))throw new TypeError("The v3 transfer receipts do not match the applied projection.");const v=g.kind==="repair"&&g.previousCursor===null&&y.every(b=>b.operationClass==="pull");if(k.cursor!==g.previousCursor&&!v)throw new TypeError("The v3 apply does not start at the receipt boundary.");const A=g.kind==="delta"||g.kind==="audit"?"pull":"repair";if(!v&&y.some(b=>b.operationClass!==A))throw new TypeError("The v3 transfer receipt operation does not match the apply.");return m(f,h,k,{...k,cursor:g.nextCursor})}}}function OS(e){const t=e.current===e.captured&&e.current.mode!=="blocked"&&e.browserSchedulingAllowed;return t||e.onDenied?.(),t}function BE(e){if(!e.authority.browserSchedulingAllowed)return{mode:"blocked",remoteServices:null};const t=String(e.workspaceId||"").trim(),r=e.snapshot,n=r?.state,s=r?.credential;if(e.phase!=="ready"||e.authority.reason!=="browser-owner"||!t||!r||!n||!s||n.activeWorkspaceId!==t||n.ownershipMode!=="browser-gateway"||n.transitionState!=="idle"||s.status!=="ready"||s.workspaceId!==t||s.coordinatorGeneration!==n.coordinatorGeneration||!Number.isSafeInteger(n.coordinatorGeneration)||n.coordinatorGeneration<1||!String(r.serverInstanceId||"").trim())return{mode:"blocked",remoteServices:null};const i=e.createGatewayRemoteServices||OE;let l;return l={mode:"browser-gateway",remoteServices:i({workspaceId:t,coordinatorGeneration:n.coordinatorGeneration,serverInstanceId:r.serverInstanceId,client:e.client,now:()=>new Date,isExecutionAuthorized:()=>e.isSelectionAuthorized?.(l)!==!1}),coordinatorGeneration:n.coordinatorGeneration,serverInstanceId:r.serverInstanceId},l}const BS={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1,taskforceAgents:!1};function WE(e){const{currentWorkspaceId:t,cloudAuthConfigured:r,runtimeMode:n,authSessionResolved:s,isAuthenticated:i,authUserId:l,projectName:c,resolveCloudAuthUrl:d,resolveWebSocketUrl:m,realtimeSyncEnabled:f,localOutboxDispatchEnabled:g,localCoordinatorBrowserAuthorityGateEnabled:h=!1,localCoordinatorClient:y,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:A,tasks:b,archivedTasks:w,deletedTasks:P=[],initiatives:E,workstreams:D,taxonomies:j,taxonomyState:S,setupState:L,globalTheme:_,locale:T,globalWeekStartsOn:z,themeUseGlobalDefault:Y,setTasks:H,setArchivedTasks:M,setAuthBlocked:oe,setIsAuthenticated:K,checkAuthSession:Q,setGlobalTheme:ee,setCurrentTheme:fe,setSetupState:_e,setLocale:$e,setGlobalWeekStartsOn:Ye,fetchPlanningEntities:ye}=e,ge=o.useMemo(()=>sj(S),[S]),[se,ie]=o.useState("disconnected"),[me,$]=o.useState(null),[V,B]=o.useState(null),[N,be]=o.useState(null),[Ae,q]=o.useState(null),[Z,G]=o.useState(null),[ne,Te]=o.useState(!1),[Le,Ue]=o.useState("idle"),[st,ft]=o.useState(null),[xe,ke]=o.useState(!1),[ve,He]=o.useState(0),[Ee,de]=o.useState(null),x=o.useRef(null),le=o.useCallback(F=>{x.current=F,de(F)},[]),[Ie,Je]=o.useState([]),[J,Ze]=o.useState(""),te=o.useRef(b||[]),Ne=o.useRef(w||[]),je=o.useRef(P||[]),Re=o.useRef([]),[Ce,Pe]=o.useState([]),he=o.useCallback(F=>{Re.current=F,Pe(F)},[]),De=o.useRef(E||[]),et=o.useRef(D||[]),Fe=o.useRef(S),yt=o.useRef(j||[]),Oe=o.useRef([]),mt=o.useRef(new Set),[vt,Ve]=o.useState([]),[tt,It]=o.useState(""),[Xe,bt]=o.useState(null),[at,U]=o.useState(null),[pe,Ke]=o.useState(0),[Et,kt]=o.useState(null),Ot=o.useRef([]),[dr,tr]=o.useState([]),[pr,Bt]=o.useState(""),wr=o.useRef([]),or=o.useRef(new Set),[$r,Dr]=o.useState([]),[Me,nt]=o.useState(""),pt=o.useRef([]),lt=o.useRef([]),[xt,Yt]=o.useState([]),[Nt,Qt]=o.useState(""),Ct=o.useRef([]),[Ht,Ft]=o.useState([]),[ir,cr]=o.useState(""),it=o.useRef([]),Zt=o.useRef([]),Lr=o.useRef([]),lr=o.useRef([]),[$n,br]=o.useState(BS),[ur,u]=o.useState("degraded-fallback"),[St,gt]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Fr=o.useRef(!1),xr=o.useRef(null),er=o.useRef("missing-baseline"),jr=o.useRef(0),qr=o.useRef(!1),An=o.useRef(new Set),cn=o.useRef(""),Hr=o.useRef(""),Ge=o.useRef(""),Xr=o.useRef(""),hr=o.useRef(""),Jt=o.useRef(""),Xt=o.useRef(""),bn=o.useRef(!1),$t=o.useRef(null),Ut=o.useRef(new Set),Ur=o.useRef([]),Fn=o.useRef(null),Yn=o.useRef(""),Ca=o.useRef(()=>Promise.resolve(!1)),yn=o.useRef(""),Vr=o.useRef(async()=>{}),rn=o.useRef(null),Mn=o.useRef(null),sn=o.useRef("idle"),Sn=o.useRef(0),Ir=o.useRef(!1),Wr=o.useRef(!1),Yr=o.useRef(0),Zn=o.useRef(0),Ln=o.useCallback(()=>{xr.current!==null&&(window.clearTimeout(xr.current),xr.current=null)},[]),fn=o.useCallback(F=>{if(typeof window>"u")return;Ln();const O=Math.max(1,Math.floor(jr.current)+1);jr.current=O;const Vt=1500*2**Math.max(0,O-1),Mt=Number.isFinite(Number(F))?Math.max(0,Math.floor(Number(F))):0,Rt=Math.max(Math.min(12e4,Vt),Mt);xr.current=window.setTimeout(()=>{xr.current=null,Vr.current({preferCloudOnFirstSync:!1})},Rt)},[Ln]),Rn=o.useCallback(F=>{br(O=>O[F]?O:{...O,[F]:!0})},[]),hn=Object.values($n).every(Boolean),dt=o.useMemo(()=>y||new VI,[y]),On=RE({runtimeMode:n}),Wt=TE({enabled:On,workspaceId:t,client:dt}),ue=o.useMemo(()=>DS({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot}),[t,Wt.phase,Wt.snapshot,h]),ot=o.useMemo(()=>DS({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot}),[t,Wt.phase,Wt.snapshot]),_t=o.useRef(ue);o.useLayoutEffect(()=>{_t.current=ue},[ue]);const Pt=o.useCallback(()=>_t.current.browserSchedulingAllowed,[]),{workspaceRetryAt:nr,isWorkspaceRetryPending:fr,workspacePushInFlightRef:ln,workspacePullInFlightRef:Tt,workspaceLastPushedSignatureRef:Rr,workspacePendingSignatureRef:Qr,workspaceLastPushedTaskIdsRef:on,workspaceDeletedTaskIdsRef:Jn,workspaceDeletedTaskWatermarksRef:Zr,workspacePullCursorRef:Er,clearWorkspaceRetry:Xn,scheduleWorkspaceRetry:Ia,persistWorkspaceSyncPatch:Un,applyWorkspaceSyncPatchLocally:Cs,readWorkspaceSyncStateSnapshot:ga,loadWorkspaceSyncState:Bs,applyWorkspaceSyncStateSnapshot:eo,saveWorkspaceCloudSyncSettings:to,acquireWorkspaceSyncLease:Qn,releaseWorkspaceSyncLease:Ws,forceClearWorkspaceSyncLease:sa,recordWorkspaceSyncCompletion:hi,wasWorkspaceSyncOperationCompletedRecently:ea}=FP({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:Te,setWorkspaceSyncPhase:Ue,setWorkspaceSyncSetupIntent:ft,setWorkspaceLastPullAt:B,setWorkspaceLastPushAt:be,setWorkspaceLastErrorMessage:G,isWorkspaceOperationAuthorized:Pt}),gi=o.useCallback(F=>{(F.phase==="attach-cloud"||F.phase==="provision-local")&&(sn.current=F.phase,rn.current===null&&(rn.current=Date.now()),Mn.current=null),eo(F)},[eo]),_a=o.useRef(new Map),oa=o.useRef(new Map),Ta=o.useRef(new Map),Ka=o.useRef(""),ls=o.useRef(new Set),ds=o.useRef(new Map),La=o.useRef(new Set),qa=o.useRef(new Map),xa=o.useRef(new Map),Ra=o.useRef(new Set),zn=o.useRef(new Map),us=o.useRef(new Map),ut=o.useRef(new Set),vr=o.useRef(new Map),en=o.useRef(new Set),In=o.useRef(new Map),Pn=o.useRef(new Set),ro=o.useRef(new Map),Is=o.useRef(new Set),$s=o.useRef(new Map),Pa=o.useRef(new Set),ya=o.useRef(new Map),jn=o.useRef(new Set),Nr=o.useRef(new Map),Oa=o.useRef(new Set),Ya=o.useRef(new Map),ia=o.useRef(new Set),Hn=o.useRef(new Map),Vn=o.useRef(new Map),Za=o.useCallback(F=>F?(on.current=new Set(F.taskIds),_a.current=F.taskWatermarks,oa.current=F.taskChangeKeys||new Map,Ta.current=F.taskRelationshipChangeKeys||new Map,Ka.current=F.taxonomyChangeKey||"",ls.current=new Set(Array.from(F.initiativeWatermarks.keys())),ds.current=F.initiativeWatermarks,La.current=new Set(Array.from(F.workstreamWatermarks.keys())),qa.current=F.workstreamWatermarks,xa.current=new Map(F.planningIdentityWatermarks||[]),Ra.current=new Set(Array.from(F.aiProfileWatermarks.keys())),zn.current=F.aiProfileWatermarks,us.current=F.aiProfileChangeKeys||new Map,jn.current=new Set(Array.from((F.taskforceAgentWatermarks||new Map).keys())),Nr.current=F.taskforceAgentWatermarks||new Map,Oa.current=new Set(Array.from((F.taskforceAgentSkillWatermarks||new Map).keys())),Ya.current=F.taskforceAgentSkillWatermarks||new Map,ia.current=new Set(Array.from((F.agentConversationWatermarks||new Map).keys())),Hn.current=F.agentConversationWatermarks||new Map,ut.current=new Set(Array.from(F.documentWatermarks.keys())),vr.current=F.documentWatermarks,en.current=new Set(Array.from(F.assetWatermarks.keys())),In.current=F.assetWatermarks,Pn.current=new Set(Array.from(F.documentReviewSessionWatermarks.keys())),ro.current=F.documentReviewSessionWatermarks,Is.current=new Set(Array.from(F.documentReviewCommentWatermarks.keys())),$s.current=F.documentReviewCommentWatermarks,Pa.current=new Set(Array.from(F.annotatedAttachmentSessionWatermarks.keys())),ya.current=F.annotatedAttachmentSessionWatermarks,Vn.current=F.taskEventWatermarks,er.current=null,!0):!1,[on]),Ao=o.useCallback(()=>({taskIds:on.current,taskWatermarks:_a.current,taskChangeKeys:oa.current,taskRelationshipChangeKeys:Ta.current,taxonomyChangeKey:Ka.current,initiativeWatermarks:ds.current,workstreamWatermarks:qa.current,planningIdentityWatermarks:xa.current,aiProfileWatermarks:zn.current,aiProfileChangeKeys:us.current,taskforceAgentWatermarks:Nr.current,taskforceAgentSkillWatermarks:Ya.current,agentConversationWatermarks:Hn.current,documentWatermarks:vr.current,assetWatermarks:In.current,documentReviewSessionWatermarks:ro.current,documentReviewCommentWatermarks:$s.current,annotatedAttachmentSessionWatermarks:ya.current,taskEventWatermarks:Vn.current}),[]),yi=o.useCallback(()=>{if(er.current==="repair-reset"||er.current==="storage-write-failed")return!1;const F=zk(t,ge);return!F||F.aiProfileWatermarks.size===0?!1:(Ra.current=new Set(F.aiProfileWatermarks.keys()),zn.current=new Map(F.aiProfileWatermarks),us.current=new Map(F.aiProfileChangeKeys||[]),!0)},[t,ge]),_s=o.useRef(!1),ki=o.useRef(!1),we=o.useRef(!1),At=o.useRef(!1),qt=o.useRef(!1),ar=o.useRef(""),Sr=o.useRef(!1),gn=3e4,fa=f?3e4:15e3,ta=Math.max(3e4,fa),[mn,fs]=o.useState(null);o.useEffect(()=>{const F=Date.now();if(n!=="local"||!ne||Le!=="active")return;const O=V?Date.parse(V):NaN;if(!Number.isFinite(O))return;const Vt=O+LI-F;if(Vt<=0)return;const Mt=window.setTimeout(()=>{fs(Date.now())},Vt+50);return()=>window.clearTimeout(Mt)},[n,ne,Le,V]);const Ui=o.useMemo(()=>{const F=V?Date.parse(V):NaN,O=N?Date.parse(N):NaN;return Number.isFinite(F)&&Number.isFinite(O)?F>=O?V:N:Number.isFinite(F)?V:Number.isFinite(O)?N:null},[V,N]),no=cj({enabled:ne,phase:Le,busy:xe,retryAt:nr,lastErrorMessage:Z,lastErrorAt:Ae,lastPullAt:V,lastPushAt:N,nowMs:mn??Date.now(),pendingChanges:ve,durableOutbox:Ee}),zi=no.status,Fs=no.summary,sr=no.recommendedAction,Gn=o.useCallback(F=>{const O=String(F||"").trim();if(!O)return null;const Mt=_S()[O]?.updatedAt;return typeof Mt=="string"&&Mt.trim().length>0?Mt.trim():null},[]),En=o.useCallback((F,O)=>{const Vt=String(F||"").trim(),Mt=String(O||"").trim();if(!Vt||!Mt)return;const Rt=_S();Rt[Vt]={updatedAt:Mt},aj(Rt)},[]),ms=o.useCallback(()=>{const F=L?.mode==="operations"?"operations":"core";return{theme:_,operatingMode:F,localization:{locale:T,weekStartsOn:z}}},[_,L?.mode,T,z]),_n=o.useCallback(async F=>{if(!(!F||typeof F!="object")){qr.current=!0;try{const O={},Vt=Zu(F.theme);if(Vt&&(ee(Vt),Y&&fe(Vt),O.theme=Vt),(F.operatingMode==="core"||F.operatingMode==="operations")&&(_e(Mt=>Mt&&{...Mt,mode:F.operatingMode}),O.setup={mode:F.operatingMode}),F.localization&&typeof F.localization=="object"){const Mt={};if(typeof F.localization.locale=="string"&&F.localization.locale.trim().length>0){const ht=PC(F.localization.locale.trim());$e(ht)}const Rt=String(F.localization.weekStartsOn||"").trim().toLowerCase();(Rt==="sunday"||Rt==="monday")&&(Ye(Rt),Mt.weekStartsOn=Rt),Object.keys(Mt).length>0&&(O.schedulePreferences=Mt)}Object.keys(O).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(O)})}finally{qr.current=!1}}},[Y,ee,fe,_e,$e,Ye]),ja=o.useCallback(async F=>{const O=F?.preferCloudOnFirstSync!==!1;if(!r)return;if(n!=="local"||!i){Ln(),jr.current=0,ie("disconnected");return}const Vt=String(l||"").trim();if(!Vt||Vt==="anonymous"){Ln(),jr.current=0,ie("disconnected");return}if(!Fr.current){ie("syncing"),$(null),Fr.current=!0;try{const Mt=await M1({resolveCloudAuthUrl:d,userId:Vt,preferCloudOnFirstSync:O,getLocalUpdatedAt:Gn,buildLocalSettings:ms,applyRemoteSettings:_n});if(!Mt.success){ie("error"),Mt.transient?($(Mt.error||"Sync failed temporarily. Retrying automatically."),fn(Mt.retryAfterMs)):(Ln(),jr.current=0,$(Mt.error||"Sync failed."));return}Ln(),jr.current=0;const Rt=String(Mt.updatedAt||"").trim()||new Date().toISOString();En(Vt,Rt),ie("idle"),$(null),An.current.add(Vt),Mt.mode==="pulled"&&(cn.current="")}catch{ie("error"),$("Sync failed temporarily. Retrying automatically."),fn()}finally{Fr.current=!1}}},[r,n,i,l,d,Gn,ms,_n,En,Ln,fn]);o.useEffect(()=>{Vr.current=ja},[ja]),o.useEffect(()=>()=>{Ln()},[Ln]);const ao=o.useCallback(()=>{G(null),q(null)},[]),Ts=o.useCallback(F=>{G(IS),q(new Date().toISOString()),ie("error"),$(IS),Ds("workspace_sync_window_contention",{workspaceId:t,operation:F})},[t]),Ba=o.useCallback(async F=>{try{return await Un(F)}catch{return Cs(F)}},[Cs,Un]),Wa=o.useCallback(F=>{Ba(F).catch(()=>{})},[Ba]),ka=o.useCallback(()=>{const F={...Ao(),taxonomyStateFingerprint:ge},O=TS(t,F);return Ba({pushBaseline:DI(F)}).catch(()=>{}),O},[Ao,t,Ba,ge]);o.useEffect(()=>{Sn.current+=1,Ir.current=!1,Wr.current=!1,Hr.current="",Ge.current="",Xr.current="",hr.current="",Jt.current="",Xt.current="",ar.current="",Sr.current=!1,Oe.current=[],mt.current=new Set,Je([]),Ze(""),Ot.current=[],Ve([]),It(""),wr.current=[],or.current=new Set,tr([]),Bt(""),pt.current=[],lt.current=[],Dr([]),nt(""),Ct.current=[],Yt([]),Qt(""),it.current=[],Zt.current=[],lr.current=[],Ft([]),cr(""),br(BS),G(null),q(null),He(0),Ut.current=new Set,Ur.current=[],_a.current=new Map,oa.current=new Map,Ta.current=new Map,Ka.current="",ls.current=new Set,ds.current=new Map,La.current=new Set,qa.current=new Map,xa.current=new Map,Ra.current=new Set,zn.current=new Map,us.current=new Map,ut.current=new Set,vr.current=new Map,en.current=new Set,In.current=new Map,Pn.current=new Set,ro.current=new Map,Is.current=new Set,$s.current=new Map,Pa.current=new Set,ya.current=new Map,jn.current=new Set,Nr.current=new Map,Oa.current=new Set,Ya.current=new Map,ia.current=new Set,Hn.current=new Map,Vn.current=new Map,ki.current=!!ga().startupFullReconcileCompletedAt,vi.current=!1;const F=zk(t,ge);Za(F)||(er.current="missing-baseline")},[t,Za,ge]),o.useEffect(()=>{if(er.current!=="missing-baseline")return;const F=zk(t,ge);if(Za(F))return;const O=MI(ga().pushBaseline,ge);Za(O)&&TS(t,{...Ao(),taxonomyStateFingerprint:ge})},[Ao,t,Za,ga,ge,ne,Le]),o.useEffect(()=>{ki.current=!!ga().startupFullReconcileCompletedAt},[t,ga,V,Le]);const $a=o.useCallback(F=>{Ia(()=>Ca.current(),{minDelayMs:F})},[Ia]);o.useEffect(()=>{hj({workspaceSyncPhase:Le,lastBootstrapPhaseRef:sn,bootstrapPhaseStartedAtRef:rn,bootstrapLastProgressAtRef:Mn})},[Le]),o.useEffect(()=>gj({currentWorkspaceId:t,workspaceCloudSyncEnabled:ne,workspaceSyncPhase:Le,workspacePullInFlightRef:Tt,workspacePushInFlightRef:ln,bootstrapPhaseStartedAtRef:rn,bootstrapLastProgressAtRef:Mn,isExecutionAuthorized:Pt,setWorkspaceLastErrorMessage:F=>G(F),setWorkspaceLastErrorAt:F=>q(F),setUserGlobalSyncStatus:ie,setUserGlobalSyncError:F=>$(F),setWorkspaceSyncBusy:ke,persistWorkspaceSyncPatchSafely:Wa}),[t,ne,Le,Wa,Tt,ln,ue.authorityEpoch,Pt]),o.useEffect(()=>{te.current=b||[]},[b]),o.useEffect(()=>{Ne.current=w||[]},[w]),o.useEffect(()=>{let F=!1;return fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"}).then(O=>O.ok?O.json():null).then(O=>{!F&&Array.isArray(O?.relationships)&&he(O.relationships)}).catch(()=>{}),()=>{F=!0}},[w,t,b,he]),o.useEffect(()=>{je.current=P||[],Jn.current=new Set((P||[]).map(F=>String(F?.taskId||"").trim()).filter(F=>F.length>0)),Zr.current=new Map((P||[]).map(F=>[String(F?.taskId||"").trim(),String(F?.deletedAt||"").trim()]).filter(([F,O])=>F.length>0&&Number.isFinite(Date.parse(O))))},[P,Jn,Zr]),o.useEffect(()=>{De.current=E||[]},[E]),o.useEffect(()=>{et.current=D||[]},[D]),o.useEffect(()=>{Fe.current=S,yt.current=j||[]},[j,S]);const Ar=o.useRef(!1),vi=o.useRef(!1),ps=o.useMemo(()=>({repairMode:At,forceFullAiProfilePush:Ar,pushInFlight:ln,pullInFlight:Tt,pullAfterPushRequested:qt,pendingPushReplay:Fn,blockedPushSignature:Yn,lastPushedSignature:Rr,pendingSignature:Qr,lastPushedTaskIds:on,deletedTaskIds:Jn,deletedTaskWatermarks:Zr,pullCursor:Er,lastPushedWatermarks:_a,lastPushedTaskChangeKeys:oa,lastPushedTaskRelationshipChangeKeys:Ta,lastPushedTaxonomyChangeKey:Ka,lastPushedInitiativeIds:ls,lastPushedInitiativeWatermarks:ds,lastPushedWorkstreamIds:La,lastPushedWorkstreamWatermarks:qa,lastPushedPlanningIdentityWatermarks:xa,lastPushedAiProfileIds:Ra,lastPushedAiProfileWatermarks:zn,lastPushedAiProfileChangeKeys:us,lastPushedDocumentPaths:ut,lastPushedDocumentWatermarks:vr,lastPushedAssetPaths:en,lastPushedAssetWatermarks:In,lastPushedDocumentReviewSessionIds:Pn,lastPushedDocumentReviewSessionWatermarks:ro,lastPushedDocumentReviewCommentIds:Is,lastPushedDocumentReviewCommentWatermarks:$s,lastPushedAnnotatedAttachmentSessionIds:Pa,lastPushedAnnotatedAttachmentSessionWatermarks:ya,lastPushedTaskforceAgentIds:jn,lastPushedTaskforceAgentWatermarks:Nr,lastPushedTaskforceAgentSkillIds:Oa,lastPushedTaskforceAgentSkillWatermarks:Ya,lastPushedAgentConversationIds:ia,lastPushedAgentConversationWatermarks:Hn,lastPushedTaskEventWatermarks:Vn,baselineResetReason:er,captureAttachBootstrapBaseline:Sr,attachBootstrapBaselineSignature:ar,startupRepairRan:_s,startupFullReconcileRan:ki,startupFullReconcileRequested:we,fullReconcileInFlight:vi,lastBootstrapPhase:sn,bootstrapPhaseStartedAtMs:rn,bootstrapLastProgressAtMs:Mn,realtimeSuppressedEventQueue:Ur}),[]),Co=o.useMemo(()=>Xj(),[]),Us=o.useRef(null),Ja=o.useMemo(()=>BE({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot,authority:ue,client:dt,isSelectionAuthorized:F=>Us.current===F&&Pt()}),[ue.authorityEpoch,ue.browserSchedulingAllowed,ue.reason,t,dt,Wt.phase,Wt.snapshot?.credential.coordinatorGeneration,Wt.snapshot?.credential.status,Wt.snapshot?.credential.workspaceId,Wt.snapshot?.serverInstanceId,Wt.snapshot?.state.activeWorkspaceId,Wt.snapshot?.state.coordinatorGeneration,Wt.snapshot?.state.ownershipMode,Wt.snapshot?.state.transitionState,h]),va=Ja.remoteServices;o.useLayoutEffect(()=>(Us.current=Ja,()=>{Us.current===Ja&&(Us.current=null)}),[Ja]);const Fa=o.useCallback(async()=>{const F=Ja,O=Us.current??{mode:"blocked",remoteServices:null};return!va||!OS({current:O,captured:F,browserSchedulingAllowed:Pt()})?{success:!1,statusCode:409,transient:!0,error:"Browser workspace sync authority changed before cloud readiness validation."}:A1({cloudAuthConfigured:r,runtimeMode:n,isAuthenticated:i,resolveCloudAuthUrl:d,workspaceId:t,workspaceName:c||t,allowProvisionOnMismatch:Le!=="attach-cloud",remoteServices:va})},[r,t,i,Pt,c,d,n,va,Le,Ja]),so=o.useRef(t);so.current=t;const Ua=o.useCallback(()=>wP({workspaceId:so.current,tasks:te.current,archivedTasks:Ne.current,taskRelationships:Re.current,deletedTasks:je.current,pendingDeletedTaskIds:Jn.current,pendingDeletedTaskWatermarks:Zr.current,initiatives:De.current,workstreams:et.current,taxonomies:yt.current,taxonomyState:Fe.current,aiProfiles:Ot.current,documents:Oe.current,assets:wr.current,currentDocumentPaths:mt.current,currentAssetPaths:or.current,documentsSnapshotComplete:Ir.current,assetsSnapshotComplete:Wr.current,documentReviewSessions:pt.current,documentReviewComments:lt.current,annotatedAttachmentSessions:Ct.current,taskforceAgents:it.current,agentRoles:Zt.current,taskforceAgentSkills:Lr.current,agentConversations:lr.current}),[]),Xa=o.useCallback(F=>{const O=Ua();return SP({snapshot:O,forceAllAiProfiles:F?.forceAllAiProfiles===!0,baseline:{lastPushedTaskIds:on.current,lastPushedWatermarks:_a.current,lastPushedTaskChangeKeys:oa.current,lastPushedTaskRelationshipChangeKeys:Ta.current,lastPushedTaxonomyChangeKey:Ka.current,lastPushedInitiativeIds:ls.current,lastPushedInitiativeWatermarks:ds.current,lastPushedWorkstreamIds:La.current,lastPushedWorkstreamWatermarks:qa.current,lastPushedPlanningIdentityWatermarks:xa.current,lastPushedAiProfileIds:Ra.current,lastPushedAiProfileWatermarks:zn.current,lastPushedAiProfileChangeKeys:us.current,lastPushedDocumentPaths:ut.current,lastPushedDocumentWatermarks:vr.current,lastPushedAssetPaths:en.current,lastPushedAssetWatermarks:In.current,lastPushedDocumentReviewSessionIds:Pn.current,lastPushedDocumentReviewSessionWatermarks:ro.current,lastPushedDocumentReviewCommentIds:Is.current,lastPushedDocumentReviewCommentWatermarks:$s.current,lastPushedAnnotatedAttachmentSessionIds:Pa.current,lastPushedAnnotatedAttachmentSessionWatermarks:ya.current,lastPushedTaskforceAgentIds:jn.current,lastPushedTaskforceAgentWatermarks:Nr.current,lastPushedTaskforceAgentSkillIds:Oa.current,lastPushedTaskforceAgentSkillWatermarks:Ya.current,lastPushedAgentConversationIds:ia.current,lastPushedAgentConversationWatermarks:Hn.current,lastPushedTaskEventWatermarks:Vn.current,baselineResetReason:er.current}})},[Ua]),wa=o.useCallback(F=>Xa(F).payload,[Xa]),Yo=o.useCallback((F,O)=>{if(n==="local")try{const Vt={...O,workspaceId:F,details:uy(O.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(Vt)}).catch(Mt=>{Ds("sync_event_post_failed",{workspaceId:F,eventType:O.eventType,status:O.status,error:String(Mt?.message||Mt||"")})})}catch(Vt){Ds("sync_event_post_failed",{workspaceId:F,eventType:O.eventType,status:O.status,error:String(Vt?.message||Vt||"")})}},[n]),ba=o.useCallback(()=>SI(Ua()),[Ua]),pc=o.useMemo(()=>JSON.stringify({tasks:(b||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),status:String(F.status||"").trim(),referenceNumber:F.referenceNumber??null,localReferenceNumber:F.localReferenceNumber??null})).sort((F,O)=>F.id.localeCompare(O.id)),archivedTasks:(w||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),status:String(F.status||"").trim(),referenceNumber:F.referenceNumber??null,localReferenceNumber:F.localReferenceNumber??null})).sort((F,O)=>F.id.localeCompare(O.id)),initiatives:(E||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),isArchived:!!F.isArchived})).sort((F,O)=>F.id.localeCompare(O.id)),workstreams:(D||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),initiativeId:typeof F.initiativeId=="string"?F.initiativeId.trim():"",isArchived:!!F.isArchived})).sort((F,O)=>F.id.localeCompare(O.id)),taskEvents:xv(b||[],w||[],E||[],D||[]).map(F=>({id:String(F.id||"").trim(),entityType:String(F.entityType||"task").trim(),entityId:String(F.entityId||F.taskId||"").trim(),createdAt:String(F.createdAt||"").trim(),action:String(F.action||"").trim()})).sort((F,O)=>F.id.localeCompare(O.id)),deletedTasks:(P||[]).map(F=>({taskId:String(F?.taskId||"").trim(),deletedAt:String(F?.deletedAt||"").trim()})).filter(F=>F.taskId.length>0&&Number.isFinite(Date.parse(F.deletedAt))).sort((F,O)=>F.taskId.localeCompare(O.taskId)),taxonomies:Array.isArray(j)?j:[],taxonomyState:S&&typeof S=="object"?S:null}),[b,w,P,E,D,j,S]);mE({enabled:g===!0&&n==="local"&&ot.browserSchedulingAllowed&&ne,workspaceId:t,mutationFingerprint:pc,authorityScope:Ja,remoteServices:va,localServices:Co,isAuthorityCurrent:F=>Us.current===F&&Pt(),onHydratedEventIds:F=>{To.current.recordSuppressedEventIds(F,{ttlMs:6e4})},onOutboxStatus:le});const hs=o.useCallback(()=>{if(g!==!0)return!1;const F=x.current;return F===null||F.recovery!==null&&F.recovery.state!=="completed"},[g]),wi=o.useMemo(()=>{const F=[];for(const O of b||[]){const Vt=Array.isArray(O.attachments)?O.attachments.length:0;Vt>0&&F.push(`${O.id}:${Vt}`)}return F.join("|")},[b]),dn=o.useCallback(F=>{if(!F)return!1;if(Sr.current)return Sr.current=!1,ar.current=F,Rr.current=F,He(0),!0;const O=ar.current;return O?F===O?(Rr.current=F,He(0),!0):(ar.current="",!1):!1},[]),Hi=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/taxonomy-state?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();return CI(O)?(Fe.current=O,yt.current=Array.isArray(O.taxonomies)?O.taxonomies:[],!0):!1}catch(F){return Ds("taxonomy_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}},[n,t,r,s,i]),ma=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;const F=t,O=Sn.current,Vt=Yr.current+=1,Mt=()=>F!==so.current||O!==Sn.current||Vt!==Yr.current;try{const Rt=await fetch(`/api/taskforce/sync/workspace/documents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(Mt()||!Rt.ok)return!1;const ht=await Rt.json();if(Mt()||!Array.isArray(ht?.documents))return!1;const nn=Array.isArray(ht?.documents)?ht.documents.map(Dt=>({path:String(Dt?.path||"").trim(),updatedAt:String(Dt?.updatedAt||"").trim(),content:typeof Dt?.content=="string"?Dt.content:"",assetId:typeof Dt?.assetId=="string"&&Dt.assetId.trim().length>0?Dt.assetId.trim():void 0,documentId:typeof Dt?.documentId=="string"&&Dt.documentId.trim().length>0?Dt.documentId.trim():null,referenceNumber:Number.isFinite(Number(Dt?.referenceNumber))?Math.max(1,Math.floor(Number(Dt.referenceNumber))):null,version:Number.isFinite(Number(Dt?.version))?Math.max(1,Math.floor(Number(Dt.version))):null,taskId:typeof Dt?.taskId=="string"&&Dt.taskId.trim().length>0?Dt.taskId.trim():null,logicalName:typeof Dt?.logicalName=="string"&&Dt.logicalName.trim().length>0?Dt.logicalName.trim():null,caption:typeof Dt?.caption=="string"&&Dt.caption.trim().length>0?Dt.caption.trim():null,originalFilename:typeof Dt?.originalFilename=="string"&&Dt.originalFilename.trim().length>0?Dt.originalFilename.trim():null,linkRole:Dt?.linkRole==="reference"?"reference":"attachment"})).filter(Dt=>Dt.path.length>0):[],rr=new Set(Array.isArray(ht?.knownPaths)?ht.knownPaths.map(Dt=>String(Dt||"").trim()).filter(Dt=>Dt.length>0):nn.map(Dt=>Dt.path)),Pr=typeof ht?.fingerprint=="string"?ht.fingerprint:JSON.stringify(nn.map(Dt=>`${Dt.path}:${Dt.updatedAt}:${Dt.content.length}`).sort());return Mt()?!1:Pr===Hr.current?(Ir.current=!0,!0):(Hr.current=Pr,Oe.current=nn,mt.current=rr,Je(nn),Ze(Pr),Ir.current=!0,!0)}catch(Rt){return Ds("documents_snapshot_refresh_failed",{workspaceId:t,error:String(Rt?.message||Rt||"")}),!1}finally{Rn("documents")}},[n,t,r,s,i,Rn]),zs=o.useCallback(async()=>{if(n!=="local")return kt("runtime-not-local"),!1;if(!Zc(t))return kt("workspace-id-invalid"),!1;if(r&&(!s||!i))return kt(s?"auth-required":"auth-unresolved"),!1;kt(null);try{const F=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return U(`HTTP ${F.status}`),bt(new Date().toISOString()),!1;const O=await F.json();if(!Array.isArray(O?.aiProfiles))return!1;const Vt=Array.isArray(O?.aiProfiles)?O.aiProfiles:[];Ke(Vt.length);const Mt=Array.isArray(O?.aiProfiles)?O.aiProfiles.map(ht=>tj(ht)).filter(ht=>ht.id.length>0&&ht.workspaceId.length>0):[];U(null),bt(new Date().toISOString());const Rt=typeof O?.fingerprint=="string"?O.fingerprint:gP(Mt);return Rt===Ge.current||(Ge.current=Rt,Ot.current=Mt,Ve(Mt),It(Rt)),!0}catch(F){return U(String(F?.message||F||"unknown-error")),bt(new Date().toISOString()),Ds("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("aiProfiles")}},[n,t,r,s,i,Rn]),Ea=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;const F=t,O=Sn.current,Vt=Zn.current+=1,Mt=()=>F!==so.current||O!==Sn.current||Vt!==Zn.current;try{const Rt=await fetch(`/api/taskforce/sync/workspace/assets?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(Mt()||!Rt.ok)return!1;const ht=await Rt.json();if(Mt()||!Array.isArray(ht?.assets))return!1;const nn=Array.isArray(ht?.assets)?ht.assets.map(Dt=>({path:String(Dt?.path||"").trim(),updatedAt:String(Dt?.updatedAt||"").trim(),contentBase64:typeof Dt?.contentBase64=="string"?Dt.contentBase64:"",assetId:typeof Dt?.assetId=="string"&&Dt.assetId.trim().length>0?Dt.assetId.trim():void 0,kind:Dt?.kind==="image"?"image":"file",mimeType:typeof Dt?.mimeType=="string"&&Dt.mimeType.trim().length>0?Dt.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(Dt?.referenceNumber))?Math.max(1,Math.floor(Number(Dt.referenceNumber))):null,taskId:typeof Dt?.taskId=="string"&&Dt.taskId.trim().length>0?Dt.taskId.trim():null,logicalName:typeof Dt?.logicalName=="string"&&Dt.logicalName.trim().length>0?Dt.logicalName.trim():null,caption:typeof Dt?.caption=="string"&&Dt.caption.trim().length>0?Dt.caption.trim():null,originalFilename:typeof Dt?.originalFilename=="string"&&Dt.originalFilename.trim().length>0?Dt.originalFilename.trim():null,linkRole:Dt?.linkRole==="reference"?"reference":Dt?.linkRole==="image"?"image":"attachment"})).filter(Dt=>Dt.path.length>0&&Dt.contentBase64.length>0):[],rr=new Set(Array.isArray(ht?.knownPaths)?ht.knownPaths.map(Dt=>String(Dt||"").trim()).filter(Dt=>Dt.length>0):nn.map(Dt=>Dt.path)),Pr=typeof ht?.fingerprint=="string"?ht.fingerprint:JSON.stringify(nn.map(Dt=>`${Dt.path}:${Dt.updatedAt}:${Dt.contentBase64.length}`).sort());return Mt()?!1:Pr===Xr.current?(Wr.current=!0,!0):(Xr.current=Pr,wr.current=nn,or.current=rr,tr(nn),Bt(Pr),Wr.current=!0,!0)}catch(Rt){return Ds("assets_snapshot_refresh_failed",{workspaceId:t,error:String(Rt?.message||Rt||"")}),!1}finally{Rn("assets")}},[n,t,r,s,i,Rn]),hc=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/planning/bootstrap?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.initiatives)||!Array.isArray(O?.workstreams))return!1;const Vt=Array.isArray(O?.initiatives)?O.initiatives.filter(Rt=>!!(Rt&&typeof Rt=="object"&&typeof Rt.id=="string")):[],Mt=Array.isArray(O?.workstreams)?O.workstreams.filter(Rt=>!!(Rt&&typeof Rt=="object"&&typeof Rt.id=="string")):[];return De.current=Vt,et.current=Mt,!0}catch(F){return Ds("planning_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}},[n,t,r,s,i]),gs=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/sync/workspace/document-reviews?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.sessions))return!1;const Vt=Array.isArray(O?.sessions)?O.sessions.map(ht=>({id:String(ht?.id||"").trim(),assetId:String(ht?.assetId||"").trim(),documentId:typeof ht?.documentId=="string"&&ht.documentId.trim().length>0?ht.documentId.trim():null,documentVersion:Number.isFinite(Number(ht?.documentVersion))?Math.max(1,Math.floor(Number(ht.documentVersion))):null,title:typeof ht?.title=="string"&&ht.title.trim().length>0?ht.title.trim():null,status:ht?.status==="resolved"?"resolved":"open",comments:Array.isArray(ht?.comments)?ht.comments:[],createdByActorId:typeof ht?.createdByActorId=="string"&&ht.createdByActorId.trim().length>0?ht.createdByActorId.trim():null,updatedByActorId:typeof ht?.updatedByActorId=="string"&&ht.updatedByActorId.trim().length>0?ht.updatedByActorId.trim():null,createdAt:String(ht?.createdAt||"").trim(),updatedAt:String(ht?.updatedAt||ht?.createdAt||"").trim(),deletedAt:typeof ht?.deletedAt=="string"&&ht.deletedAt.trim().length>0?ht.deletedAt.trim():null})).filter(ht=>ht.id.length>0&&ht.assetId.length>0):[],Mt=Array.isArray(O?.comments)?O.comments.map(ht=>({id:String(ht?.id||"").trim(),sessionId:String(ht?.sessionId||"").trim(),body:typeof ht?.body=="string"?ht.body:"",anchor:ht?.anchor??null,order:Number.isFinite(Number(ht?.order))?Math.max(0,Math.floor(Number(ht.order))):0,authorActorId:typeof ht?.authorActorId=="string"&&ht.authorActorId.trim().length>0?ht.authorActorId.trim():null,updatedByActorId:typeof ht?.updatedByActorId=="string"&&ht.updatedByActorId.trim().length>0?ht.updatedByActorId.trim():null,deletedByActorId:typeof ht?.deletedByActorId=="string"&&ht.deletedByActorId.trim().length>0?ht.deletedByActorId.trim():null,createdAt:String(ht?.createdAt||"").trim(),updatedAt:String(ht?.updatedAt||ht?.createdAt||"").trim(),deletedAt:typeof ht?.deletedAt=="string"&&ht.deletedAt.trim().length>0?ht.deletedAt.trim():null})).filter(ht=>ht.id.length>0&&ht.sessionId.length>0):oj(Vt),Rt=typeof O?.fingerprint=="string"?O.fingerprint:JSON.stringify([...Vt.map(ht=>`${ht.id}:${ht.updatedAt}:${ht.status}:${ht.deletedAt||""}:${ht.comments.length}`).sort(),...Mt.map(ht=>`${ht.id}:${ht.sessionId}:${ht.updatedAt}:${ht.deletedAt||""}`).sort()]);return Rt===hr.current||(hr.current=Rt,pt.current=Vt,lt.current=Mt,Dr(Vt),nt(Rt)),!0}catch(F){return Ds("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("documentReviewSessions")}},[n,t,r,s,i,Rn]),bi=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/sync/workspace/annotated-attachments?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.sessions))return!1;const Vt=Array.isArray(O?.sessions)?O.sessions.map(Rt=>({id:String(Rt?.id||"").trim(),workspaceId:String(Rt?.workspaceId||"").trim(),taskId:String(Rt?.taskId||"").trim(),baseImageAssetId:String(Rt?.baseImageAssetId||"").trim(),title:typeof Rt?.title=="string"&&Rt.title.trim().length>0?Rt.title.trim():null,globalInstruction:typeof Rt?.globalInstruction=="string"&&Rt.globalInstruction.trim().length>0?Rt.globalInstruction.trim():null,annotations:Array.isArray(Rt?.annotations)?Rt.annotations:[],createdByActorId:typeof Rt?.createdByActorId=="string"&&Rt.createdByActorId.trim().length>0?Rt.createdByActorId.trim():null,updatedByActorId:typeof Rt?.updatedByActorId=="string"&&Rt.updatedByActorId.trim().length>0?Rt.updatedByActorId.trim():null,createdAt:String(Rt?.createdAt||"").trim(),updatedAt:String(Rt?.updatedAt||Rt?.createdAt||"").trim(),deletedAt:typeof Rt?.deletedAt=="string"&&Rt.deletedAt.trim().length>0?Rt.deletedAt.trim():null})).filter(Rt=>Rt.id.length>0&&Rt.workspaceId.length>0&&Rt.taskId.length>0&&Rt.baseImageAssetId.length>0):[],Mt=typeof O?.fingerprint=="string"?O.fingerprint:JSON.stringify(Vt.map(Rt=>`${Rt.id}:${Rt.updatedAt}:${Rt.taskId}:${Rt.baseImageAssetId}:${Rt.annotations.length}:${Rt.deletedAt||""}`).sort());return Mt===Jt.current||(Jt.current=Mt,Ct.current=Vt,Yt(Vt),Qt(Mt)),!0}catch(F){return Ds("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("annotatedAttachmentSessions")}},[n,t,r,s,i,Rn]),Zo=o.useCallback(async()=>{if(n!=="local"||!Zc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/sync/workspace/taskforce-agents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.agents)||!Array.isArray(O?.roles)||!Array.isArray(O?.skills)||!Array.isArray(O?.conversations))return!1;const Vt=Array.isArray(O?.agents)?O.agents.map(rr=>rj(rr)).filter(rr=>rr.id.length>0&&rr.workspaceId.length>0):[],Mt=Array.isArray(O?.conversations)?O.conversations.map(rr=>nj(rr)).filter(rr=>rr.id.length>0&&rr.workspaceId.length>0&&rr.agentId.length>0):[],Rt=Array.isArray(O?.roles)?O.roles.map(rr=>AP(rr,t)).filter(rr=>!!rr):[],ht=O.skills.map(rr=>CP(rr,t)).filter(rr=>!!(rr&&rr.id.length>0&&rr.workspaceId.length>0)),nn=typeof O?.fingerprint=="string"?O.fingerprint:JSON.stringify([...Vt.map(rr=>`${rr.id}:${rr.updatedAt}:${rr.deletedAt||""}:${rr.name}:${rr.modelTier}`).sort(),...Rt.map(rr=>`${rr.id}:${rr.updatedAt}:${rr.deletedAt||""}:${rr.currentRevision}:${rr.currentContentHash}`).sort(),...ht.map(rr=>`${rr.id}:${rr.updatedAt}:${rr.revision}:${rr.contentHash}:${rr.lifecycleStatus}`).sort(),...Mt.map(rr=>`${rr.id}:${rr.agentId}:${rr.updatedAt}:${rr.deletedAt||""}:${rr.messages.length}`).sort()]);return nn===Xt.current||(Xt.current=nn,it.current=Vt,Zt.current=Rt,Lr.current=ht,lr.current=Mt,Ft(Vt),cr(nn)),!0}catch(F){return Ds("taskforce_agents_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("taskforceAgents")}},[n,t,r,s,i,Rn]),Io=o.useCallback(()=>{on.current=new Set([...te.current,...Ne.current].map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),_a.current=new Map([...te.current,...Ne.current].map(O=>[String(O?.id||"").trim(),ci.getWatermark(O)]).filter(([O])=>O.length>0)),oa.current=new Map([...te.current.map(O=>[String(O?.id||"").trim(),ci.getChangeKey({...O,isArchived:!1})]),...Ne.current.map(O=>[String(O?.id||"").trim(),ci.getChangeKey({...O,isArchived:!0})])].filter(([O])=>O.length>0)),Ta.current=new Map(Re.current.map(O=>[String(O?.id||"").trim(),Mw(O)]).filter(([O])=>O.length>0)),Ka.current=bI({taxonomyState:Fe.current,taxonomies:yt.current}),ls.current=new Set(De.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),ds.current=new Map(De.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),La.current=new Set(et.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),qa.current=new Map(et.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),xa.current=new Map([...De.current.map(O=>[`initiative:${String(O?.id||"").trim()}`,String(O?.identityUpdatedAt||"").trim()]),...et.current.map(O=>[`workstream:${String(O?.id||"").trim()}`,String(O?.identityUpdatedAt||"").trim()])].filter(([O,Vt])=>!O.endsWith(":")&&Number.isFinite(Date.parse(Vt)))),Ra.current=new Set(Ot.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),zn.current=new Map(Ot.current.map(O=>[String(O?.id||"").trim(),Vm.getWatermark(O)]).filter(([O])=>O.length>0)),us.current=new Map(Ot.current.map(O=>[String(O?.id||"").trim(),Vm.getChangeKey(O)]).filter(([O])=>O.length>0)),ut.current=new Set(Oe.current.map(O=>String(O?.path||"").trim()).filter(O=>O.length>0)),vr.current=new Map(Oe.current.map(O=>[String(O?.path||"").trim(),String(O?.updatedAt||"").trim()]).filter(([O])=>O.length>0)),en.current=new Set(wr.current.map(O=>String(O?.path||"").trim()).filter(O=>O.length>0)),In.current=new Map(wr.current.map(O=>[String(O?.path||"").trim(),String(O?.updatedAt||"").trim()]).filter(([O])=>O.length>0)),Pn.current=new Set(pt.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),ro.current=new Map(pt.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),Is.current=new Set(lt.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),$s.current=new Map(lt.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),Pa.current=new Set(Ct.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),ya.current=new Map(Ct.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),jn.current=new Set([...it.current.map(O=>String(O?.id||"").trim()),...Zt.current.map(O=>`agent-role:${String(O?.id||"").trim()}`)].filter(O=>O.length>0)),Nr.current=new Map([...it.current.map(O=>[String(O?.id||"").trim(),String(O?.deletedAt||O?.updatedAt||O?.createdAt||"").trim()]),...Zt.current.map(O=>[`agent-role:${String(O?.id||"").trim()}`,String(O?.deletedAt||O?.updatedAt||O?.createdAt||"").trim()])].filter(([O])=>O.length>0)),Oa.current=new Set(Lr.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),Ya.current=new Map(Lr.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),ia.current=new Set(lr.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),Hn.current=new Map(lr.current.map(O=>[String(O?.id||"").trim(),String(O?.deletedAt||O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),Vn.current=new Map(xv(te.current,Ne.current,De.current,et.current).map(O=>[String(O?.id||"").trim(),String(O?.createdAt||"").trim()]).filter(([O])=>O.length>0));const F=ka();er.current=F?null:"storage-write-failed"},[ka]),_o=o.useCallback(async()=>{const[F,O,Vt]=await Promise.all([fetch("/api/taskforce/tasks",{method:"GET",credentials:"include"}),fetch("/api/taskforce/archive",{method:"GET",credentials:"include"}),fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"})]);if(!F.ok||!O.ok||!Vt.ok)throw new Error("Required task collection refresh failed.");const[Mt,Rt,ht]=await Promise.all([F.json(),O.json(),Vt.json()]);if(!Array.isArray(Mt?.tasks)||!Array.isArray(Rt?.archived)||!Array.isArray(ht?.relationships))throw new Error("Required task collection refresh returned an invalid response.");const nn=Mt.tasks.map(Pr=>Qs(Pr)),rr=Rt.archived.map(Pr=>({...Qs(Pr),isArchived:!0}));te.current=nn,Ne.current=rr,he(ht.relationships),H(nn),M(rr),await ye().catch(()=>{Ds("refresh_planning_entities_failed",{workspaceId:t})})},[t,ye,M,H,he]),{handleSyncAuthFailure:gc,ensureWorkspaceSyncReady:Jo}=o.useMemo(()=>ij({currentWorkspaceId:t,workspaceSyncPhase:Le,clearWorkspaceRetry:Xn,setWorkspaceSyncBusy:ke,setUserGlobalSyncStatus:ie,setUserGlobalSyncError:F=>$(F),setWorkspaceLastErrorMessage:F=>G(F),setWorkspaceLastErrorAt:F=>q(F),reportSyncEvent:Yo,setAuthBlocked:oe,setIsAuthenticated:K,checkAuthSession:Q,ensureCloudWorkspaceReadyForSync:Fa,scheduleWorkspaceSyncRetry:$a,persistWorkspaceSyncPatchSafely:Wa}),[t,Le,Xn,Yo,oe,K,Q,Fa,$a,Wa]),ys=o.useMemo(()=>{const F=Ja;return va?nE({cloudAuthConfigured:r,runtimeMode:n,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:A,workspaceCloudSyncEnabled:ne,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,checkAuthSession:Q,resolveCloudAuthUrl:d,ensureCloudWorkspaceReadyForSync:Fa,ensureWorkspaceSyncReady:Jo,handleSyncAuthFailure:gc,clearWorkspaceRetry:Xn,clearWorkspaceIssue:ao,isWorkspaceRetryPending:fr,isDurableRecoveryBlockingOrdinaryPush:hs,isExecutionAuthorized:()=>OS({current:Us.current??{mode:"blocked",remoteServices:null},captured:F,browserSchedulingAllowed:Pt(),onDenied:()=>{const O=_t.current;!O.serverCommandMode||yn.current===O.authorityEpoch||(yn.current=O.authorityEpoch,Yo(t,{eventType:"handshake",status:"error",statusCode:409,errorMessage:"Browser cloud execution was blocked by persisted server ownership.",details:{errorCode:"SYNC_BROWSER_EXECUTION_FENCED_BY_SERVER_OWNER",authorityEpoch:O.authorityEpoch,capturedTransportMode:F.mode}}))}}),scheduleWorkspaceSyncRetry:$a,persistWorkspaceSyncPatchSafely:Wa,persistWorkspaceSyncPatchBestEffort:Ba,persistWorkspaceSyncWatermarksSnapshotBestEffort:ka,refreshWorkspaceAiProfilePushBaselineFromPersistence:yi,reportSyncEvent:Yo,acquireWorkspaceSyncLease:Qn,releaseWorkspaceSyncLease:Ws,recordWorkspaceSyncCompletion:hi,reportWorkspaceWindowContention:Ts,refreshWorkspaceSyncMarkdownDocumentsSnapshot:ma,refreshWorkspaceSyncAiProfilesSnapshot:zs,refreshWorkspaceSyncAssetsSnapshot:Ea,refreshWorkspaceSyncTaxonomySnapshot:Hi,refreshWorkspaceSyncPlanningEntitiesSnapshot:hc,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:gs,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:bi,refreshWorkspaceSyncTaskforceAgentsSnapshot:Zo,refreshLocalWorkspaceTaskCollections:_o,buildWorkspaceSyncPayload:wa,buildWorkspaceSyncSignature:ba,seedWorkspaceSnapshotPushBaseline:Io,shouldSuppressAttachBootstrapPush:dn,recordSuppressedEventIds:(...O)=>To.current.recordSuppressedEventIds(...O),runtime:ps,localServices:Co,remoteServices:va,setWorkspaceSyncBusy:ke,setUserGlobalSyncStatus:ie,setUserGlobalSyncError:$,setWorkspaceLastErrorMessage:G,setWorkspaceLastErrorAt:q,setWorkspaceLastPullAt:B,setWorkspaceLastPushAt:be,setWorkspaceSyncPendingChanges:He,setTasks:H,setArchivedTasks:M,scheduleTask:(O,Vt)=>{const Mt=window.setTimeout(O,Vt);return{cancel:()=>window.clearTimeout(Mt)}},logDebug:Ds,notifyAiProfilesMutated:_I,notifyAgentsMutated:TI,notifyAgentSkillsMutated:xI}):null},[r,n,k,v,A,ne,t,Le,ge,i,Q,d,Fa,Jo,gc,Xn,ao,hs,$a,Wa,Ba,ka,yi,Yo,Qn,Ws,hi,Ts,ma,zs,Ea,Hi,hc,gs,bi,Zo,_o,wa,ba,Io,dn,Ja,va,H,M]);o.useEffect(()=>{ys?.resumeDeferredWork()},[ue.authorityEpoch,ys]),o.useEffect(()=>()=>ys?.dispose(),[ys]);const pa=o.useCallback((F,O)=>ys?ys.pushWorkspaceChangesToCloud(F,O):Promise.resolve(!1),[ys]),oo=o.useCallback(F=>ys?ys.pullWorkspaceChangesFromCloud(F):Promise.resolve(!1),[ys]),un=o.useRef(oo);un.current=oo;const To=o.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),Qa=o.useMemo(()=>wj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,workspaceSyncPhase:Le,workspacePullInFlightRef:Tt,realtimePullDebounceRef:$t,realtimeSuppressedEventIdsRef:Ut,clearWorkspaceRetry:Xn,isWorkspaceRetryPending:fr,isExecutionAuthorized:Pt,isServerOwned:()=>xE(_t.current),signalServerWake:F=>Wt.signalWake("realtime",F),pullWorkspaceChangesFromCloud:oo}),[r,n,ne,Le,Xn,fr,Pt,Wt.signalWake,oo]);To.current=Qa;const ra=m("/taskforce-ws"),yc=String(l||"").trim(),Dl=!!(f&&(Pt()||ue.serverCommandMode)&&r&&n==="local"&&ne&&s&&i&&yc&&yc!=="anonymous"&&ra),rl=II({enabled:Dl,workspaceId:t,websocketUrl:ra,onSignal:Qa.handleRealtimeSignal,onTelemetry:gt,userId:yc||void 0});o.useEffect(()=>{u(rl.connectionState)},[rl.connectionState]),o.useEffect(()=>()=>Qa.clearRealtimePullDebounce(),[Qa]),o.useEffect(()=>{ue.browserSchedulingAllowed||(Xn(),To.current.clearRealtimePullDebounce())},[ue.authorityEpoch,ue.browserSchedulingAllowed,Xn]);const ca=o.useCallback(async F=>ue.serverCommandMode?(await Wt.issueCommand(F.enabled?"EnableSync":"DisableSync"),{success:!0}):Pt()?to(F,{cloudAuthConfigured:r,isAuthenticated:i,ensureCloudWorkspaceReadyForSync:Fa}):{success:!1,error:"Workspace sync ownership is changing. Wait for the coordinator to become ready."},[to,r,i,Fa,ue.serverCommandMode,Pt,Wt]),Ml=o.useCallback(async()=>{await ja({preferCloudOnFirstSync:!1})},[ja]),Si=o.useMemo(()=>Aj({currentWorkspaceId:t,workspaceCloudSyncEnabled:ne,workspaceSyncPhase:Le,workspaceLastPullAt:V,runtime:ps,localServices:Co,acquireWorkspaceSyncLease:Qn,releaseWorkspaceSyncLease:Ws,forceClearWorkspaceSyncLease:sa,clearWorkspaceRetry:Xn,clearWorkspaceIssue:ao,reportWorkspaceWindowContention:Ts,reportSyncEvent:Yo,persistWorkspaceSyncPatch:Un,persistWorkspaceSyncWatermarksSnapshotBestEffort:ka,buildWorkspaceSyncSignature:ba,pullWorkspaceChangesFromCloud:oo,pushWorkspaceChangesToCloud:pa,cloudAuthConfigured:r,runtimeMode:n,isAuthenticated:i,checkAuthSession:Q,isExecutionAuthorized:Pt,coordinatorGeneration:Wt.snapshot?.state?.coordinatorGeneration??null}),[t,ge,ne,Le,V,ps,Co,Qn,Ws,sa,Xn,ao,Ts,Yo,Un,ka,ba,oo,pa,r,n,i,Q,Pt,Wt.snapshot?.state?.coordinatorGeneration]),xo=o.useCallback(async()=>{if(ue.serverCommandMode){const F=Wt.snapshot||await Wt.refresh();return!F||F.credential.status!=="ready"?!1:(await Wt.issueCommand("Retry"),!0)}return Pt()?Si.retryWorkspaceCloudSync():!1},[ue.serverCommandMode,Pt,Wt,Si]),kc=o.useCallback(async()=>{if(ue.serverCommandMode){Wt.issueCommand("Repair").catch(()=>{});return}Pt()&&await Si.resetWorkspaceSyncCursorAndPull()},[ue.serverCommandMode,Pt,Wt,Si]),Ai=o.useCallback(()=>{const F=Nv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,repairModeActive:At.current===!0,repairModeBypass:!1,pushInFlight:ln.current,pullInFlight:Tt.current}),O=fr(),Vt=Dv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,repairModeActive:At.current===!0,repairModeBypass:!1,retryPending:O,pushInFlight:ln.current,pullInFlight:Tt.current}),Mt=Mv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,currentWorkspaceId:t,isAuthenticated:i});return{workspaceId:t,enabled:ne,phase:Le,status:zi,summary:Fs,lastSuccessfulSyncAt:Ui,lastPullAt:V,lastPushAt:N,lastErrorAt:Ae,pendingChanges:ve+(Ee?.activeDepth||0),lastErrorMessage:Z,recommendedAction:sr,pushBlockedReason:F.allowed?null:F.reason,pullBlockedReason:Vt.allowed?null:Vt.reason,retryBlockedReason:Mt.allowed?null:Mt.reason,repairActive:At.current===!0,pushInFlight:ln.current===!0,pullInFlight:Tt.current===!0,retryPending:O,documentSnapshotCount:Ie.length,aiProfileSnapshotCount:vt.length,aiProfileSnapshotRawCount:pe,aiProfileSnapshotLastFetchAt:Xe,aiProfileSnapshotLastFetchError:at,aiProfileSnapshotLastSkipReason:Et,assetSnapshotCount:dr.length,documentReviewSessionSnapshotCount:$r.length,documentReviewSessionSnapshotFingerprint:Me,annotatedAttachmentSessionSnapshotCount:xt.length,annotatedAttachmentSessionSnapshotFingerprint:Nt,taskforceAgentSnapshotCount:Ht.length,taskforceAgentSnapshotFingerprint:ir,lastPushedAiProfileCount:Ra.current.size,lastPushedAiProfileWatermarkCount:zn.current.size,lastPushedTaskforceAgentCount:jn.current.size,lastPushedTaskforceAgentWatermarkCount:Nr.current.size,lastPushedAgentConversationCount:ia.current.size,lastPushedAgentConversationWatermarkCount:Hn.current.size,forceFullAiProfilePushQueued:Ar.current===!0,durableOutbox:Ee}},[r,t,n,ne,Le,i,zi,Fs,Ui,V,N,Ae,ve,Ee,Z,sr,Ie.length,vt.length,pe,Xe,at,Et,dr.length,$r.length,Me,xt.length,Nt,Ht.length,ir,fr]);o.useEffect(()=>{Ca.current=xo},[xo]);const Xo=o.useCallback(()=>{ma(),Ea()},[ma,Ea]);o.useEffect(()=>{if(!r||n!=="local"||!ne||!s||!i)return;ma(),zs(),Ea(),gs(),bi(),Zo();const F=kn=>{const Tn=kn.detail;(String(Tn?.workspaceId||"").trim()||"default")===t&&Xo()},O=kn=>{const Tn=kn.detail;(String(Tn?.workspaceId||"").trim()||"default")===t&&(zs(),Ea())},Vt=kn=>{const Tn=kn.detail;(String(Tn?.workspaceId||"").trim()||"default")===t&&String(Tn?.reason||"").trim()!=="sync-apply"&&Zo()},Mt=kn=>{const Tn=kn.detail;(String(Tn?.workspaceId||"").trim()||"default")===t&&String(Tn?.reason||"").trim()!=="sync-apply"&&Zo()};window.addEventListener(Rv,F),window.addEventListener(Pv,O),window.addEventListener(jv,Vt),window.addEventListener(Ev,Mt);const Rt=window.setInterval(()=>{ma()},gn),ht=window.setInterval(()=>{zs()},gn),nn=window.setInterval(()=>{Ea()},gn),rr=window.setInterval(()=>{gs()},gn),Pr=window.setInterval(()=>{bi()},gn),Dt=window.setInterval(()=>{Zo()},gn);return()=>{window.removeEventListener(Rv,F),window.removeEventListener(Pv,O),window.removeEventListener(jv,Vt),window.removeEventListener(Ev,Mt),window.clearInterval(Rt),window.clearInterval(ht),window.clearInterval(nn),window.clearInterval(rr),window.clearInterval(Pr),window.clearInterval(Dt)}},[r,n,ne,s,i,t,Xo,ma,zs,Ea,gs,bi,Zo,gn]),o.useEffect(()=>{!r||n!=="local"||!ne||!s||!i||wi&&Xo()},[r,n,ne,s,i,wi,Xo]),o.useEffect(()=>{if(!Pt()||!lj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,authSessionResolved:s,workspaceSyncPhase:Le,workspaceSyncReferenceSnapshotsReady:hn}))return;const F=ba();if(dn(F)||!F||F===Rr.current||Yn.current===F)return;Yn.current="";const O=wa();if(He(O.changes.length),ln.current||Tt.current){Qr.current=F;return}const Vt=window.setTimeout(()=>{if(Pt()){if(ln.current||Tt.current){Qr.current=ba();return}pa(F)}},1500);return()=>window.clearTimeout(Vt)},[r,n,ne,s,Le,hn,ba,dn,wa,pc,tt,J,pr,Me,Nt,ir,pa,ln,Tt,ue.authorityEpoch,Pt]),o.useEffect(()=>{if(!Pt()||!dj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,authSessionResolved:s,workspaceSyncPhase:Le,workspaceSyncReferenceSnapshotsReady:hn}))return;const F=window.setInterval(()=>{if(!Pt()||ln.current||Tt.current||fr())return;const O=ba();if(!O||O===Rr.current||Yn.current===O)return;Yn.current="";const Vt=wa();He(Vt.changes.length),Vt.changes.length!==0&&pa(O)},ta);return()=>window.clearInterval(F)},[r,n,ne,s,Le,hn,ba,wa,pa,fr,ta,ue.authorityEpoch,Pt]),o.useEffect(()=>{r&&n==="local"&&ne||(Xn(),ke(!1))},[r,n,ne,Xn]),o.useEffect(()=>{if(!Pt())return;const F=uj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,authSessionResolved:s,workspaceSyncPhase:Le,lastPullAt:V,retryPending:fr()});if(!F.shouldStart)return;F.shouldKickOffImmediately&&un.current();const O=window.setInterval(()=>{Pt()&&(ea(t,"pull",fa)||un.current())},fa);return()=>{window.clearInterval(O)}},[r,n,ne,s,Le,V,t,fr,ea,fa,ue.authorityEpoch,Pt]),o.useEffect(()=>{if(!Pt()||!fj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:Le}))return;const F=window.setInterval(()=>{Pt()&&(vi.current||(vi.current=!0,un.current({forceCursorNull:!0}).finally(()=>{vi.current=!1})))},QP);return()=>window.clearInterval(F)},[r,n,ne,s,i,Le,ue.authorityEpoch,Pt]),o.useEffect(()=>{n!=="local"||!i||!l||l==="anonymous"||ja({preferCloudOnFirstSync:!0})},[n,i,l,ja]),o.useEffect(()=>{if(n!=="local"||!i||!l||l==="anonymous"||!An.current.has(l)||qr.current)return;const F=ms(),O=JSON.stringify(F);if(!cn.current){cn.current=O;return}if(O===cn.current)return;cn.current=O,En(l,new Date().toISOString());const Vt=window.setTimeout(()=>{ja({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(Vt)},[n,i,l,ms,En,ja]),o.useEffect(()=>{Pt()&&mj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ne,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:Le,alreadyRan:_s.current})&&(_s.current=!0,fetch("/api/taskforce/sync/workspace/repair-startup",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}).then(async F=>{if(!F.ok)return;const O=await F.json().catch(()=>({}));O?.applied>0&&(Ds("startup_repair_applied",{workspaceId:t,applied:O.applied,skipped:O.skipped,failed:O.failed}),ma(),zs(),Ea(),gs())}).catch(()=>{}))},[r,n,ne,s,i,Le,t,ma,zs,Ea,gs,ue.authorityEpoch,Pt]);const Ro=On&&Wt.phase==="ready"&&Wt.snapshot?.state.activeWorkspaceId===t?{coordinatorGeneration:Wt.snapshot.state.coordinatorGeneration,localDataVersion:Wt.snapshot.state.localDataVersion}:null,vc=On?{phase:Wt.phase,snapshot:Wt.snapshot,errorMessage:Wt.error?.message||null,activeCommandType:Wt.activeCommandType,activePriorityCommandType:Wt.activePriorityCommandType}:null,Cn=o.useCallback(async F=>{if(n!=="local"||!On)return!1;if(Wt.phase!=="ready"||!Wt.snapshot)throw new Va("The local sync coordinator is not ready to switch workspaces.","SYNC_COORDINATOR_UNAVAILABLE",409);return await Wt.switchWorkspace(F),!0},[Wt,On,n]),Qo=o.useCallback(async F=>{if(n!=="local"||!On)return!1;if(Wt.phase!=="ready"||!Wt.snapshot)throw new Va("The local sync coordinator is not ready to transfer ownership.","SYNC_COORDINATOR_UNAVAILABLE",409);return await Wt.transferOwnership(F),F==="server"&&(await Wt.issueCommand(ne?"EnableSync":"DisableSync"),ne&&Wt.issueCommand("Sync").catch(()=>{})),!0},[Wt,On,n,ne]),Hs=o.useCallback(async()=>n!=="local"||!On?!1:Wt.clearCredential(),[Wt,On,n]);return{userGlobalSyncStatus:se,setUserGlobalSyncStatus:ie,userGlobalSyncError:me,setUserGlobalSyncError:$,workspaceLastPullAt:V,workspaceLastPushAt:N,workspaceLastErrorAt:Ae,workspaceLastErrorMessage:Z,workspaceLastSuccessfulSyncAt:Ui,workspaceCloudSyncEnabled:ne,workspaceSyncPhase:Le,workspaceSyncSetupIntent:st,workspaceSyncStatus:zi,workspaceSyncSummary:Fs,workspaceSyncRecommendedAction:sr,workspaceSyncBusy:xe,workspaceSyncPendingChanges:ve+(Ee?.activeDepth||0),workspaceTaskRelationships:Ce,localCoordinatorDataVersion:Ro,localCoordinatorStatus:vc,switchLocalCoordinatorWorkspace:Cn,transferLocalCoordinatorOwnership:Qo,clearLocalCoordinatorCredential:Hs,syncInFlightRef:bn,workspaceRetryAt:nr,isWorkspaceRetryPending:fr,workspacePushInFlightRef:ln,workspacePullInFlightRef:Tt,workspaceLastPushedSignatureRef:Rr,workspacePendingSignatureRef:Qr,workspaceLastPushedTaskIdsRef:on,workspaceDeletedTaskIdsRef:Jn,workspaceDeletedTaskWatermarksRef:Zr,workspacePullCursorRef:Er,clearWorkspaceRetry:Xn,persistWorkspaceSyncPatch:Un,loadWorkspaceSyncState:Bs,applyWorkspaceSyncStateSnapshot:gi,syncUserGlobalSettings:ja,buildWorkspaceSyncSignature:ba,pushWorkspaceChangesToCloud:pa,pullWorkspaceChangesFromCloud:oo,saveWorkspaceCloudSyncSettings:ca,retryUserGlobalSettingsSync:Ml,retryWorkspaceCloudSync:xo,resetWorkspaceSyncCursorAndPull:kc,getWorkspaceSyncDiagnostics:Ai}}function $E(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?12e3:2600}function FE(){const[e,t]=o.useState(null),r=o.useRef(null),n=o.useCallback(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null),t(null)},[]),s=o.useCallback((i,l="info",c,d)=>{if(!i||(r.current!==null&&(window.clearTimeout(r.current),r.current=null),t({message:i,tone:l,ttlMs:c,actionLabel:d?.label,onAction:d?.onAction,actionPrimary:d?.primary,secondaryActionLabel:d?.secondaryLabel,onSecondaryAction:d?.onSecondaryAction,dismissible:d?.dismissible,ownerKey:d?.ownerKey}),d))return;const m=$E(l,c);r.current=window.setTimeout(()=>{r.current=null,t(null)},m)},[]);return o.useEffect(()=>()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},[]),{uiNotice:e,pushNotice:s,clearNotice:n}}function UE(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:r,normalizedCloudAuthBaseUrl:n,normalizedCloudMcpBaseUrl:s,mergedConfig:i,availableWorkspaces:l,currentTheme:c,configLoaded:d,globalTheme:m,themeUseGlobalDefault:f,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:v,supportedLocales:A,jsonBackupUseGlobalDefault:b,manualComplexityEnabled:w,checklistDropdownEnabled:P,showTaskCardStatusLabel:E,showTaskCardDescription:D,showTaskCardAttachments:j,showTaskCardChecklistProgress:S,showTaskCardLatestActivity:L,tintTaskCardActivityBackground:_,pathSaved:T,settingsSection:z,setupState:Y,buildInfo:H,saveSetupMode:M,saveWorkspaceProfile:oe,setCurrentTheme:K,handleSaveTheme:Q,handleSaveGlobalTheme:ee,handleUseGlobalThemeDefault:fe,setKeyShortcut:_e,handleJsonBackupEnabledChange:$e,handleSaveGlobalJsonBackupEnabled:Ye,handleUseGlobalJsonBackupDefault:ye,handleSaveGlobalWeekStartsOn:ge,handleSaveLocale:se,handleManualComplexityEnabledChange:ie,handleChecklistDropdownEnabledChange:me,handleShowTaskCardStatusLabelChange:$,handleShowTaskCardDescriptionChange:V,handleShowTaskCardAttachmentsChange:B,handleShowTaskCardChecklistProgressChange:N,handleShowTaskCardLatestActivityChange:be,handleTintTaskCardActivityBackgroundChange:Ae,handleSaveSettings:q,initiativeTemplates:Z,fetchInitiativeTemplates:G,createInitiativeFromTemplate:ne,setShowFolderBrowser:Te,setBrowserTarget:Le,fetchFolders:Ue,activeCategories:st,pathValidation:ft,taxonomyDisplayLabels:xe,handleUpdateCategory:ke,handleRemoveCategory:ve,handleSaveCategory:He,handleAddPath:Ee,handleRemovePath:de,handleUpdateCategoryIcon:x,handleUpdateCategoryColor:le,activeTypes:Ie,handleSaveType:Je,handleRemoveType:J,handleUpdateType:Ze,taxonomies:te,handleUpdateTaxonomies:Ne,priorities:je,handleUpdatePriorities:Re,analyzeSystemTaxonomyPack:Ce,handleApplySystemTaxonomyPack:Pe,handleUpdateTaxonomyDisplayLabels:he,projectRoot:De,projectName:et,mcpHostRoot:Fe,serverHostRoot:yt,mcpScriptPath:Oe,tenantId:mt,runtimeMode:vt,workspaceSwitchingEnabled:Ve,deleteWorkspace:tt,setMcpHostRoot:It,isAuthenticated:Xe}=e,bt=o.useCallback(async(Ke,Et)=>{const kt=t(Ke),Ot=new Headers(Et?.headers||void 0);if(Ke.startsWith("/api/taskforce/settings/mcp/")){const tr=String(r||"").trim();tr&&tr!=="default"&&!Ot.has("x-taskforce-workspace-id")&&Ot.set("x-taskforce-workspace-id",tr)}const dr={...Et,headers:Ot,credentials:Et?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(kt))try{new URL(kt,window.location.origin).origin!==window.location.origin&&dr.mode===void 0&&(dr.mode="cors")}catch{}return fetch(kt,dr)},[r,t]),at=o.useCallback(async()=>{const Ke=new Headers,Et=String(r||"").trim();Et&&Et!=="default"&&Ke.set("x-taskforce-workspace-id",Et);const kt=await fetch("/api/taskforce/mcp/global-cli-health",{method:"POST",headers:Ke,credentials:"include"}),Ot=await kt.json().catch(()=>({}));if(!kt.ok||!Ot?.result)throw new Error(String(Ot?.error||"Unable to validate the global Taskforce CLI."));return Ot.result},[r]),U=o.useCallback(async()=>{const Ke=await fetch("/api/taskforce/update/status",{method:"GET",credentials:"include"}),Et=await Ke.json().catch(()=>({}));if(!Ke.ok||!Et?.result)throw new Error(String(Et?.error||"Unable to determine Taskforce update availability."));return Et.result},[]),pe=l.find(Ke=>Ke.id===r);return{fetchCloudAuthApi:bt,checkLocalMcpCliHealth:at,getLocalUpdateStatus:U,currentTheme:c,configLoaded:d,globalTheme:m,themeUseGlobalDefault:f,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:v,supportedLocales:A,jsonBackupUseGlobalDefault:b,manualComplexityEnabled:w,checklistDropdownEnabled:P,showTaskCardStatusLabel:E,showTaskCardDescription:D,showTaskCardAttachments:j,showTaskCardChecklistProgress:S,showTaskCardLatestActivity:L,tintTaskCardActivityBackground:_,pathSaved:T,initialSection:z,setupState:Y,buildInfo:H,onSaveSetupMode:M,onSaveWorkspaceProfile:oe,onThemeChange:K,onSaveTheme:Q,onSaveGlobalTheme:ee,onUseGlobalThemeDefault:fe,onKeyShortcutChange:_e,onJsonBackupEnabledChange:$e,onSaveGlobalJsonBackupEnabled:Ye,onUseGlobalJsonBackupDefault:ye,onSaveGlobalWeekStartsOn:ge,onSaveLocale:se,onManualComplexityEnabledChange:ie,onChecklistDropdownEnabledChange:me,onShowTaskCardStatusLabelChange:$,onShowTaskCardDescriptionChange:V,onShowTaskCardAttachmentsChange:B,onShowTaskCardChecklistProgressChange:N,onShowTaskCardLatestActivityChange:be,onTintTaskCardActivityBackgroundChange:Ae,onSaveSettings:q,initiativeTemplates:Z,onRefreshInitiativeTemplates:G,onCreateInitiativeFromTemplate:ne,onShowFolderBrowserChange:Te,onBrowserTargetChange:Le,onFetchFolders:Ue,categories:st,pathValidation:ft,taxonomyDisplayLabels:xe,onUpdateCategory:ke,onRemoveCategory:ve,onSaveCategory:He,onAddPath:Ee,onRemovePath:de,onUpdateCategoryIcon:x,onUpdateCategoryColor:le,types:Ie,onSaveType:Je,onRemoveType:J,onUpdateType:Ze,taxonomies:te,onUpdateTaxonomies:Ne,priorities:je,onUpdatePriorities:Re,onAnalyzeSystemTaxonomyPack:Ce,onApplySystemTaxonomyPack:Pe,onUpdateTaxonomyDisplayLabels:he,projectRoot:De,projectName:et,mcpHostRoot:Fe,serverHostRoot:yt,mcpScriptPath:Oe,tenantId:mt,workspaceId:r,runtimeMode:vt,cloudAuthBaseUrl:n||i.cloudAuthBaseUrl,cloudMcpBaseUrl:s||void 0,workspaceSwitchingEnabled:Ve,currentWorkspaceRole:pe?.role||"member",currentWorkspaceName:String(pe?.name||""),onDeleteWorkspace:tt,onMcpHostRootChange:It,isAuthenticated:Xe}}function zE(e){const{keyShortcut:t,themeUseGlobalDefault:r,runtimeMode:n,jsonBackupUseGlobalDefault:s,globalTheme:i,globalJsonBackupEnabled:l,setCurrentTheme:c,setThemeUseGlobalDefault:d,setGlobalTheme:m,setJsonBackupEnabled:f,setJsonBackupUseGlobalDefault:g,setGlobalJsonBackupEnabled:h,setGlobalWeekStartsOn:y,setLocale:k,setManualComplexityEnabled:v,setChecklistDropdownEnabled:A,setShowTaskCardStatusLabel:b,setShowTaskCardDescription:w,setShowTaskCardAttachments:P,setShowTaskCardChecklistProgress:E,setShowTaskCardLatestActivity:D,setTintTaskCardActivityBackground:j}=e,S=o.useCallback(async()=>{try{const se=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!se.ok)throw new Error(`Failed to save global settings (${se.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),L=o.useCallback(async se=>{c(se),d(!1);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:se})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[c,d]),_=o.useCallback(async se=>{m(se),r&&c(se);try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:se})});if(!ie.ok)throw new Error(`Failed to save global settings (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[m,r,c]),T=o.useCallback(async()=>{try{const se=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null})});if(!se.ok)throw new Error(`Failed to save config (${se.status})`);return d(!0),c(i),!0}catch{return console.error("[Taskforce] Failed to use global theme default"),!1}},[i,c,d]),z=o.useCallback(async se=>{if(n==="cloud")return f(!1),g(!1),!1;f(se),g(!1);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:se})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[n,f,g]),Y=o.useCallback(async se=>{if(n==="cloud")return h(!1),s&&f(!1),!1;h(se),s&&f(se);try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:se})});if(!ie.ok)throw new Error(`Failed to save global settings (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[n,h,s,f]),H=o.useCallback(async()=>{try{const se=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:null})});if(!se.ok)throw new Error(`Failed to save config (${se.status})`);return g(!0),f(l),!0}catch{return console.error("[Taskforce] Failed to use global backup default"),!1}},[l,f,g]),M=o.useCallback(async se=>{y(se);try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:se}})});if(!ie.ok)throw new Error(`Failed to save global settings (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[y]),oe=o.useCallback(async se=>{const ie=PC(se);return k(ie),!0},[k]),K=o.useCallback(async se=>{v(se);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:se})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[v]),Q=o.useCallback(async se=>{A(se);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:se})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[A]),ee=o.useCallback(async(se,ie,me)=>{try{const $=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[se]:ie})});if(!$.ok)throw new Error(`Failed to save config (${$.status})`);return!0}catch{return console.error(`[Taskforce] ${me}`),!1}},[]),fe=o.useCallback(async se=>(b(se),ee("showTaskCardStatusLabel",se,"Failed to save task card status label setting")),[ee,b]),_e=o.useCallback(async se=>(w(se),ee("showTaskCardDescription",se,"Failed to save task card description setting")),[ee,w]),$e=o.useCallback(async se=>(P(se),ee("showTaskCardAttachments",se,"Failed to save task card attachments setting")),[ee,P]),Ye=o.useCallback(async se=>(E(se),ee("showTaskCardChecklistProgress",se,"Failed to save task card checklist progress setting")),[ee,E]),ye=o.useCallback(async se=>(D(se),ee("showTaskCardLatestActivity",se,"Failed to save task card latest activity setting")),[ee,D]),ge=o.useCallback(async se=>(j(se),ee("tintTaskCardActivityBackground",se,"Failed to save task card activity background setting")),[ee,j]);return{handleSaveSettings:S,handleSaveTheme:L,handleSaveGlobalTheme:_,handleUseGlobalThemeDefault:T,handleJsonBackupEnabledChange:z,handleSaveGlobalJsonBackupEnabled:Y,handleUseGlobalJsonBackupDefault:H,handleSaveGlobalWeekStartsOn:M,handleSaveLocale:oe,handleManualComplexityEnabledChange:K,handleChecklistDropdownEnabledChange:Q,handleShowTaskCardStatusLabelChange:fe,handleShowTaskCardDescriptionChange:_e,handleShowTaskCardAttachmentsChange:$e,handleShowTaskCardChecklistProgressChange:Ye,handleShowTaskCardLatestActivityChange:ye,handleTintTaskCardActivityBackgroundChange:ge}}function HE(e){const{activeCategories:t,activeTab:r,activeTypes:n,archivedTasks:s,browserTarget:i,category:l,configLoaded:c,customCategories:d,refreshTaskCollections:m,fetchTasks:f,filterCategories:g,getCategoryPaths:h,normalizePath:y,pathValidation:k,setBrowserTarget:v,setCategory:A,setCustomCategories:b,setCustomTypes:w,setFilterCategories:P,setPathValidation:E,setPriorities:D,setShowFolderBrowser:j,setTaxonomies:S,tasks:L}=e,_=o.useCallback(async($,V)=>{const B=await $.json().catch(()=>({}));return String(B?.error||V)},[]),T=o.useCallback(()=>[...L,...s],[s,L]),z=o.useCallback($=>$.priorities.find(V=>V.value===2)?.value||$.priorities[0]?.value||2,[]),Y=o.useCallback(async $=>{if($.length!==0)try{const V=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:$})});if(V.ok){const B=await V.json();E(N=>({...N,...B.results}))}}catch(V){console.error("[Taskforce] Failed to validate paths:",V)}},[E]);o.useEffect(()=>{if(r!=="settings"||!c)return;const $=[];t.forEach(B=>{h(B).forEach(be=>{$.includes(be)||$.push(be)})});const V=$.filter(B=>!k[B]);V.length>0&&Y(V)},[t,r,c,h,k,Y]);const H=o.useCallback(async($,V)=>{if(c){b(B=>(B.length>0?B:t).map(be=>be.value===$.value?$:be)),V&&V!==$.label&&(l===V&&A($.label),g.includes(V)&&P(B=>B.map(N=>N===V?$.label:N)));try{const be={categories:(d.length>0?d:t).map(Ae=>Ae.value===$.value?$:Ae)};V&&V!==$.label&&(be.reassignFrom=V,be.reassignTo=$.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(be)}),V&&await f()}catch(B){console.error("[Taskforce] Failed to update category",B)}}},[t,l,c,d,f,g,A,b,P]),M=o.useCallback(async $=>{if(!c)return;const V=$.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(N=>N.value===V))return;const B={value:V,label:$.trim(),color:"blue-200",icon:"Folder"};b(N=>[...N.length>0?N:t,B]);try{const be=[...d.length>0?d:t,B];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:be})})}catch(N){console.error("[Taskforce] Failed to create category",N)}},[t,c,d,b]),oe=o.useCallback(($,V)=>{if(!V.trim())return;const B=t.find(q=>q.value===$);if(!B)return;const N=h(B),be=V.trim();if(N.includes(be))return;const Ae=[...N,be];H({...B,path:void 0,paths:Ae}),Y(Ae)},[t,h,H,Y]),K=o.useCallback(($,V)=>{const B=t.find(N=>N.value===$);B&&H({...B,icon:V})},[t,H]),Q=o.useCallback(($,V)=>{const B=t.find(N=>N.value===$);B&&H({...B,color:V})},[t,H]),ee=o.useCallback(($,V)=>{const B=t.find(Ae=>Ae.value===$);if(!B)return;const be=h(B).filter(Ae=>Ae!==V);H({...B,path:void 0,paths:be})},[t,h,H]),fe=o.useCallback($=>{const V=y($);if(i&&typeof i=="object"&&i.type==="category"){const B=t.find(N=>N.value===i.value);if(B){const N=h(B);if(!N.includes(V)){const be=[...N,V];H({...B,path:void 0,paths:be})}}}j(!1),v(null)},[t,i,h,H,y,v,j]),_e=o.useCallback(async $=>{if(!c)return;const V=rf,B=t.find(q=>q.value===V),N=B?{...B}:{value:V,label:ay,icon:"Inbox"},be=N.label,Ae=t.find(q=>q.value===$);b(q=>{let G=(q.length>0?q:t).filter(ne=>ne.value!==$);return G.some(ne=>ne.value===V)||(G=[N,...G]),G}),Ae&&((l===Ae.label||l===Ae.value)&&A(V),(g.includes(Ae.label)||g.includes(Ae.value))&&P(q=>{const Z=q.filter(G=>G!==Ae.label&&G!==Ae.value);return Z.includes(V)?Z:[...Z,V]}));try{let q=(d.length>0?d:t).filter(Z=>Z.value!==$);q.some(Z=>Z.value===V)||(q=[N,...q]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:q,reassignFrom:Ae?.label||$,reassignTo:be})}),await f()}catch(q){console.error("[Taskforce] Failed to remove category",q)}},[t,l,c,d,f,g,A,b,P]),$e=o.useCallback(async $=>{if(!$.trim())return;const V=$.trim().toLowerCase().replace(/\s+/g,"-");if(n.some(N=>N.value===V))return;const B=[...n,{value:V,label:$.trim(),status:"active"}];w(B);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:B})})}catch(N){console.error("Failed to save type",N)}},[n,w]),Ye=o.useCallback(async $=>{const V=n.map(B=>B.value===$?{...B,status:"retired"}:B);w(V);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:V})}),await f()}catch(B){console.error("Failed to save type",B)}},[n,f,w]),ye=o.useCallback(async($,V)=>{const B=n.find(q=>q.value===$);if(!B)return;const N=typeof V.label=="string"?V.label.trim():B.label;if(!N)return;const be=n.map(q=>q.value===$?{...q,...V,label:N}:q);if(JSON.stringify(be)!==JSON.stringify(n)){w(be);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:be})})}catch(q){console.error("Failed to update type",q)}}},[n,w]),ge=o.useCallback(async $=>{if(c){S($);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:$})})}catch(V){console.error("[Taskforce] Failed to save taxonomies",V)}}},[c,S]),se=o.useCallback(async $=>{if(c){D($);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:$})})}catch(V){console.error("[Taskforce] Failed to save priorities",V)}}},[c,D]),ie=o.useCallback($=>{const V=T(),B=new Set($.categories.map(G=>G.value)),N=new Set($.types.map(G=>G.value)),be=new Set($.priorities.map(G=>Number(G.value))),Ae=Array.from(new Set(V.map(G=>String(G.category||"").trim()).filter(G=>G.length>0&&!B.has(G)))).sort(),q=Array.from(new Set(V.map(G=>String(G.type||"").trim()).filter(G=>G.length>0&&!N.has(G)))).sort(),Z=Array.from(new Set(V.map(G=>Number(G.priority)).filter(G=>Number.isFinite(G)&&G>0&&!be.has(G)))).sort((G,ne)=>G-ne);return{unmatchedCategoryValues:Ae,unmatchedTypeValues:q,incompatiblePriorityValues:Z}},[T]),me=o.useCallback(async $=>{if(!c)return{success:!1,error:"Settings are still loading."};const{pack:V,sections:B,remapExistingValuesToDefault:N,workspaceIdOverride:be}=$,Ae=String(be||"").trim(),q=Ae.length>0,Z=q?[]:T(),G=Te=>{if(!Ae)return Te;const Le=Te.includes("?")?"&":"?";return`${Te}${Le}workspaceId=${encodeURIComponent(Ae)}`},ne=()=>{const Te={"Content-Type":"application/json"};return Ae&&(Te["x-taskforce-workspace-id"]=Ae),Te};try{const Te=await fetch(G("/api/taskforce/taxonomy-library/apply"),{method:"POST",headers:ne(),body:JSON.stringify({packId:V.id,sections:B,remapExistingValuesToDefault:N})}),Le=await Te.json().catch(()=>({}));if(Te.ok&&Le.taxonomyState)return q||(B.categories&&Le.taxonomyState.categories&&b(Le.taxonomyState.categories),B.types&&Le.taxonomyState.types&&w(Le.taxonomyState.types),B.priorities&&Le.taxonomyState.priorities&&D(Le.taxonomyState.priorities),await m({isSilent:!0})),{success:!0};if(Le.code!=="WORKSPACE_SYNC_V3_TAXONOMY_ACTIVATION_DISABLED")return{success:!1,error:Le.error||"Failed to apply taxonomy library pack atomically."};if(B.categories){const Ue=new Set(V.categories.map(xe=>xe.value)),st=N?[...V.categories]:[...V.categories,...t.filter(xe=>!Ue.has(xe.value)).map(xe=>({...xe,disabled:!0}))];q||b(st);const ft=await fetch(G("/api/taskforce/categories"),{method:"POST",headers:ne(),body:JSON.stringify({categories:st})});if(!ft.ok)return{success:!1,error:await _(ft,"Failed to apply category library pack.")}}if(B.types){const Ue=new Set(V.types.map(ke=>ke.value)),st=V.types.find(ke=>ke.value===bo)?.value||V.types[0]?.value||bo;if(N){const ke=Z.filter(ve=>ve.type&&!Ue.has(String(ve.type))).map(ve=>({id:ve.id,type:st}));if(ke.length>0){const ve=await fetch(G("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ne(),body:JSON.stringify({updates:ke})});if(!ve.ok)return{success:!1,error:await _(ve,"Failed to remap task types to the pack default.")}}}const ft=N?[...V.types]:[...V.types,...n.filter(ke=>!Ue.has(ke.value)).map(ke=>({...ke,status:"retired"}))];q||w(ft);const xe=await fetch(G("/api/taskforce/types"),{method:"POST",headers:ne(),body:JSON.stringify({types:ft})});if(!xe.ok)return{success:!1,error:await _(xe,"Failed to apply task type library pack.")}}if(B.priorities){const Ue=new Set(V.priorities.map(ke=>ke.value)),st=Array.from(new Set(Z.map(ke=>Number(ke.priority)).filter(ke=>Number.isFinite(ke)&&ke>0&&!Ue.has(ke)))).sort((ke,ve)=>ke-ve);if(st.length>0&&!N)return{success:!1,error:`This workspace still uses priority levels ${st.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(st.length>0){const ke=z(V),ve=Z.filter(He=>st.includes(Number(He.priority))).map(He=>({id:He.id,priority:ke}));if(ve.length>0){const He=await fetch(G("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ne(),body:JSON.stringify({updates:ve})});if(!He.ok)return{success:!1,error:await _(He,"Failed to remap task priorities to the pack default.")}}}const ft=V.priorities.map(ke=>({...ke,value:Number(ke.value)}));q||D(ft);const xe=await fetch(G("/api/taskforce/priorities"),{method:"POST",headers:ne(),body:JSON.stringify({priorities:ft})});if(!xe.ok)return{success:!1,error:await _(xe,"Failed to apply priority library pack.")}}return q||await m({isSilent:!0}),{success:!0}}catch(Te){return console.error("[Taskforce] Failed to apply system taxonomy pack",Te),{success:!1,error:Te instanceof Error?Te.message:"Failed to apply system taxonomy pack."}}},[t,n,c,T,z,_,m,b,w,D]);return{getCategoryPaths:h,validatePaths:Y,handleUpdateCategory:H,handleSaveCategory:M,handleAddPath:oe,handleUpdateCategoryIcon:K,handleUpdateCategoryColor:Q,handleRemovePath:ee,handleSelectPath:fe,handleRemoveCategory:_e,handleSaveType:$e,handleRemoveType:Ye,handleUpdateType:ye,handleUpdateTaxonomies:ge,handleUpdatePriorities:se,analyzeSystemTaxonomyPack:ie,handleApplySystemTaxonomyPack:me}}function VE({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:t}){const[r,n]=o.useState([]),s=e||t,i=o.useCallback(async()=>{if(s)return[];try{const l=await fetch("/api/taskforce/initiative-templates");if(!l.ok)return[];const c=await l.json(),d=Array.isArray(c?.templates)?c.templates:[];return n(d),d}catch{return[]}},[s]);return{initiativeTemplates:r,fetchInitiativeTemplates:i}}function GE(){const[e,t]=o.useState(!1),r=o.useCallback(async()=>{if(!document.fullscreenElement){try{await document.documentElement.requestFullscreen(),t(!0)}catch(n){console.error(`Error attempting to enable full-screen mode: ${n}`)}return}document.exitFullscreen&&(await document.exitFullscreen(),t(!1))},[]);return o.useEffect(()=>{const n=()=>{t(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[]),{zenMode:e,setZenModeState:t,toggleZenMode:r}}function KE({tasks:e,archivedTasks:t,setTasks:r,setArchivedTasks:n,setLoadingTasks:s,getCurrentWorkspaceId:i,workspaceResetKey:l,shouldDeferProtectedApiCalls:c,shouldBlockProtectedApiCalls:d,handleUnauthorized:m,authRequiredForApi:f,setError:g,setLoading:h,pendingTaskMetadataOverlaysRef:y}){const k=o.useRef(new Map),v=o.useRef(!1),A=o.useRef(e),b=o.useRef(t),w=o.useRef(null),P=o.useRef(null),E=o.useRef(null),D=o.useRef(new Map),[j,S]=o.useState([]),[L,_]=o.useState({}),T=o.useCallback(me=>String(me.detailRevision||JSON.stringify([me.updatedAt||me.createdAt||"",me.commentCount||0,me.checklistCount||0,me.completedChecklistCount||0,me.attachmentCount||0,me.relationshipCount||0])),[]),z=o.useCallback(()=>{S(Array.from(D.current.values(),me=>me.detail))},[]);o.useEffect(()=>{A.current=e},[e]),o.useEffect(()=>{b.current=t},[t]);const Y=o.useCallback(me=>tp(me),[]),H=o.useCallback(me=>{const $=y?.current.get(me.id);if(!$)return me;const V=Object.entries($.patch).every(([be,Ae])=>{const q=me[be];return q===void 0||Ae===void 0?q===Ae:pn(q)===pn(Ae)}),B=Date.parse(String(me.updatedAt||"")),N=Date.parse(String($.observedUpdatedAt||""));return V||Number.isFinite(B)&&Number.isFinite(N)&&B>N?(y?.current.delete(me.id),me):{...me,...$.patch}},[y]),M=o.useCallback((me,$)=>$.aborted?me===$.reason?!0:me instanceof DOMException?me.name==="AbortError":String(me?.name||"").toLowerCase()==="aborterror":!1,[]),[oe,K]=o.useState([]),Q=o.useRef(new Map),ee=o.useCallback(me=>{!me.length||typeof window>"u"||(K($=>Array.from(new Set([...$,...me]))),me.forEach($=>{const V=Q.current.get($);V&&window.clearTimeout(V);const B=window.setTimeout(()=>{Q.current.delete($),K(N=>N.filter(be=>be!==$))},2e3);Q.current.set($,B)}))},[]);o.useEffect(()=>()=>{typeof window>"u"||(Q.current.forEach(me=>window.clearTimeout(me)),Q.current.clear())},[]),o.useEffect(()=>{k.current=new Map,v.current=!1,w.current?.abort("workspace-reset"),w.current=null,P.current?.abort("workspace-reset"),P.current=null;const me=E.current!==null;E.current?.abort("workspace-reset"),E.current=null,me&&h?.(!1),D.current=new Map,S([]),_({}),typeof window<"u"&&(Q.current.forEach($=>window.clearTimeout($)),Q.current.clear()),K([])},[h,l]),o.useEffect(()=>()=>{E.current?.abort("unmount")},[]);const fe=o.useCallback((me,$)=>{const V=new Map(me.map(q=>[q.id,q]));let B=!1;const N=new Map(D.current),be={},Ae=new Set;for(const[q,Z]of N){const G=V.get(q),ne=!!Z.detail.isArchived===$;if(ne&&Ae.add(q),!G&&ne){N.delete(q),B=!0;continue}if(G){const Te=T(G);Te!==Z.summaryRevision&&(be[q]=Te)}}_(q=>{const G={...Object.fromEntries(Object.entries(q).filter(([Le])=>!Ae.has(Le))),...be},ne=Object.entries(q),Te=Object.entries(G);return ne.length===Te.length&&ne.every(([Le,Ue])=>G[Le]===Ue)?q:G}),B&&(D.current=N,z())},[T,z]),_e=o.useCallback(()=>{const me=E.current!==null;E.current?.abort("navigation"),E.current=null,me&&h?.(!1)},[h]),$e=o.useCallback(async(me=!1,$)=>{if(!($?.ignoreAuthGuard===!0)&&(c||d))return;s(!me);const B=String(i()||"").trim();w.current?.abort("superseded");const N=new AbortController;w.current=N;try{const be=await fetch("/api/taskforce/tasks",{signal:N.signal});if(be.status===401){m(),r([]),me||s(!1);return}if(be.ok){const q=((await be.json()).tasks||[]).map(st=>H(Qs(st)));if(String(i()||"").trim()!==B)return;fe(q,!1);const G=new Map,ne=[],Te=$?.highlightChangedTaskIds===void 0?null:new Set($.highlightChangedTaskIds.map(st=>jx(q,st)||st));for(const st of q){const ft=Y(st);if(G.set(st.id,ft),!v.current)continue;const xe=k.current.get(st.id);(!xe||xe!==ft)&&(Te===null||Te.has(st.id))&&ne.push(st.id)}k.current=G,v.current?ee(ne):v.current=!0;const Le=A.current,Ue=Hb(Le,q);A.current=Ue,Ue!==Le&&r(Ue)}}catch(be){if(M(be,N.signal))return;console.error("[Taskforce] Failed to fetch tasks:",be)}finally{w.current===N&&(w.current=null,s(!1))}},[Y,i,ee,m,r,s,f,c,d,fe,H]),Ye=o.useCallback(async(me=!1,$)=>{if(!($?.ignoreAuthGuard===!0)&&(c||d))return!1;me||s(!0);const B=String(i()||"").trim();P.current?.abort("superseded");const N=new AbortController;P.current=N;try{const be=await fetch("/api/taskforce/archive",{signal:N.signal});if(be.ok){const Ae=await be.json();if(String(i()||"").trim()!==B)return!1;const Z=(Ae.archived||[]).map(Te=>({...H(Qs(Te)),isArchived:!0}));fe(Z,!0);const G=b.current,ne=Hb(G,Z);return b.current=ne,ne!==G&&n(ne),!0}return!1}catch(be){return M(be,N.signal)||console.error("[Taskforce] Failed to fetch archive:",be),!1}finally{P.current===N&&(P.current=null,me||s(!1))}},[i,M,H,fe,n,s,c,d]),ye=o.useCallback(async(me,$)=>{const V=$?.force===!0;if(!V&&!me.isSummary){const Z=zb(me);return D.current.set(me.id,{detail:me,summaryRevision:T(Z)}),_(G=>{if(!Object.prototype.hasOwnProperty.call(G,me.id))return G;const ne={...G};return delete ne[me.id],ne}),z(),me}const B=D.current.get(me.id);let N=me,be=T(N);if(!V&&B&&B.summaryRevision===be)return B.detail;const Ae=String(i()||"").trim();E.current?.abort("superseded");const q=new AbortController;E.current=q,h?.(!0),g?.("");try{for(let Z=0;Z<2;Z+=1){const G=await fetch(`/api/taskforce/task/${encodeURIComponent(N.id)}`,{signal:q.signal});if(G.status===401)return m(),null;if(G.status===404)return g?.("Task not found. It may have moved or been deleted."),null;if(!G.ok)return g?.("Unable to load task details."),null;const ne=Qs(await G.json()),Te=String(i()||"").trim();if(q.signal.aborted||Te!==Ae)return null;const Le=[...A.current,...b.current].find(ft=>ft.id===N.id);if(!Le)return g?.("Task not found. It may have moved or been deleted."),null;const Ue=T(Le);if(Ue!==be){if(Z===0&&Le){N=Le,be=Ue;continue}return g?.("Task details changed while loading. Please open the task again."),null}if(N.updatedAt&&ne.updatedAt&&Date.parse(ne.updatedAt)<Date.parse(N.updatedAt))return g?.("Task details changed while loading. Please open the task again."),null;const st={...ne,detailRevision:ne.detailRevision||be};return $?.shouldCommit&&!$.shouldCommit()?null:(D.current.set(st.id,{detail:st,summaryRevision:be}),_(ft=>{if(!Object.prototype.hasOwnProperty.call(ft,st.id))return ft;const xe={...ft};return delete xe[st.id],xe}),z(),st)}return null}catch(Z){return M(Z,q.signal)||(console.error("[Taskforce] Failed to fetch task detail:",Z),g?.("Unable to load task details.")),null}finally{E.current===q&&(E.current=null,h?.(!1))}},[i,T,m,M,z,g,h]),ge=o.useCallback(async me=>{const $=me?.isSilent!==!1,V=me?.ignoreAuthGuard===!0,B=me?.includeActive!==!1,N=me?.includeArchive!==!1;await Promise.all([B?$e($,{ignoreAuthGuard:V,highlightChangedTaskIds:me?.highlightChangedTaskIds}):Promise.resolve(!1),N?Ye($,{ignoreAuthGuard:V}):Promise.resolve(!1)])},[Ye,$e]),se=o.useCallback(async me=>{await ge({isSilent:!0,includeActive:me?.includeActive!==!1,includeArchive:me?.includeArchive!==!1,highlightChangedTaskIds:me?.highlightChangedTaskIds})},[ge]),ie=o.useCallback(me=>{const $=H(Qs(me)),V=[...A.current,...b.current].find(q=>q.id===$.id),B=$.isSummary?$:zb({...$,detailRevision:void 0,commentCount:$.commentCount??($.comments?void 0:V?.commentCount),checklistCount:$.checklistCount??($.checklistItems?void 0:V?.checklistCount),completedChecklistCount:$.completedChecklistCount??($.checklistItems?void 0:V?.completedChecklistCount),attachmentCount:$.attachmentCount??($.attachments?void 0:V?.attachmentCount),relationshipCount:$.relationshipCount??V?.relationshipCount??0});$.isSummary||(D.current.set($.id,{detail:$,summaryRevision:T(B)}),z(),_(q=>{if(!Object.prototype.hasOwnProperty.call(q,$.id))return q;const Z={...q};return delete Z[$.id],Z}));const N=Gx(B,A.current,b.current),be=N.tasks!==A.current,Ae=N.archivedTasks!==b.current;A.current=N.tasks,b.current=N.archivedTasks,be&&r(N.tasks),Ae&&n(N.archivedTasks)},[T,H,z,r,n]);return{tasksRef:A,archivedTasksRef:b,taskDetails:j,staleTaskDetailRevisions:L,recentlyChangedTaskIds:oe,markRecentlyChangedTasks:ee,fetchTasks:$e,fetchArchive:Ye,loadTaskDetail:ye,cancelTaskDetailLoad:_e,refreshTaskCollections:ge,refreshTaskCollectionsFromInvalidation:se,mergeTaskFromServer:ie,getTaskRevisionKey:Y}}function qE(e){const{editingTaskId:t,relationshipTasks:r,initiatives:n=[],workstreams:s=[],workstreamInput:i="",resolveWorkstreamIdInput:l,supplementalTasks:c=[],assignee:d,setAssignee:m,setChecklistItems:f,setComments:g}=e,h=o.useRef(null),y=o.useMemo(()=>{if(c.length===0)return r;const b=new Map;return r.forEach(w=>b.set(w.id,w)),c.forEach(w=>b.set(w.id,w)),Array.from(b.values())},[r,c]),k=o.useMemo(()=>{if(t)return y.find(b=>b.id===t)},[y,t]);o.useEffect(()=>{t&&(f(k?.checklistItems||[]),g(k?.comments||[]))},[t,k?.id,k?.updatedAt,k?.checklistItems,k?.comments,f,g]),o.useEffect(()=>{if(!t||!k){h.current=null;return}const b=k.assignee||"unassigned",w=h.current;if(!w||w.taskId!==t){h.current={taskId:t,assignee:b},d!==b&&m(b);return}w.assignee!==b&&(d===w.assignee&&m(b),h.current={taskId:t,assignee:b})},[d,k?.assignee,k?.id,t,m]);const v=o.useMemo(()=>{if(k?.workstreamId)return s.find(b=>b.id===k.workstreamId);if(!(t||!i.trim()))return l?.(i)||void 0},[k,t,l,i,s]),A=o.useMemo(()=>{if(v?.initiativeId)return n.find(b=>b.id===v.initiativeId)},[v,n]);return{currentTask:k,currentTaskWorkstream:v,currentTaskInitiative:A}}const Uw="WS-",zw="IN-";function Go(e){return af(Uw,e)}function KI(e){return sy(Uw,e)}function lf(e){return mp(Uw,e)}function ws(e){return af(zw,e)}function YE(e){return sy(zw,e)}function qI(e){return mp(zw,e)}function $v(e,t){const r=String(t||"").trim();if(!r)return null;const n=YE(r);return e.find(s=>s.id===r||ws(s)===r||n!==null&&s.referenceNumber===n)||null}function ZE(e){const t={};return e.forEach(r=>{const n=r.defaultValue;if(n!=null){if(Array.isArray(n)){n.length>0&&(t[r.id]=n.map(s=>typeof s=="number"?s:String(s)));return}t[r.id]=typeof n=="number"?n:String(n)}}),t}function JE(e,t){return e.filter(r=>{const n=t[r.id],s=Array.isArray(n)?n.length>0:n!=null&&n!=="";return r.status==="retired"&&!s?!1:r.formEnabled!==!1||r.isRequired===!0||s})}function XE(e){const{activeCategories:t,activeTypes:r,activeTab:n,attachments:s,checklistItems:i,comments:l,cancelTaskDetailLoad:c,description:d,editingTaskId:m,flushPendingAutoSave:f,getDescriptionDraft:g,getPreferredCategoryValue:h,getTitleDraft:y,lastUsedCategory:k,loadTaskDetail:v,newCommentText:A,onTaskApplied:b,relationshipTasks:w,workstreams:P,showArchive:E,taxonomies:D,setActiveTab:j,setAssignee:S,setAttachments:L,setAttachmentsDirty:_,setCategory:T,setChecklistItems:z,setComments:Y,setComplexity:H,setDescription:M,setDueDate:oe,setEditingTaskId:K,setError:Q,setFormTaxonomies:ee,setIsOpen:fe,setNewCommentText:_e,setPendingNavigation:$e,setWorkstreamInput:Ye,setPriority:ye,setScheduledDate:ge,setShowArchive:se,setStatus:ie,setTaskReturnTrail:me,setTitle:$,setType:V,setUnsavedModalOpen:B,taskReturnTrail:N,title:be}=e,Ae=o.useRef(0),q=o.useCallback(()=>{Ae.current+=1,c?.()},[c]),Z=o.useCallback(()=>r.find(de=>String(de.value||"").trim().length>0)?.value||bo,[r]),G=o.useCallback(async de=>{const x=()=>{q(),de()};if(m){await f()&&x();return}if(!((y?.()??be).trim()!==""||(g?.()??d).trim()!==""||i.length>0||A.trim()!==""||l.length>0||s.length>0)){x();return}$e(()=>x),B(!0)},[s,l.length,d,m,f,g,y,i,q,A,$e,B,be]),ne=o.useCallback(()=>{q(),fe(!1)},[q,fe]),Te=o.useCallback(()=>{q(),K(null),$(""),M("");const de=k,x=t.some(le=>le.label===de||le.value===de);if(de&&x){const le=t.find(Ie=>Ie.label===de||Ie.value===de);T(le?.value||de)}else T(h(t));V(Z()),ye(2),H(3),ie("task"),S("unassigned"),ge(""),oe(""),Ye(""),z([]),ee(ZE(D)),Y([]),_e(""),L([]),_(!1),Q("")},[t,h,Z,q,k,S,L,_,T,z,Y,H,M,oe,K,Q,ee,_e,ye,ge,ie,$,V,D]),Le=o.useCallback(de=>{const x=de.trim();if(!x)return null;const le=oy(x);if(le){const J=w.find(Ze=>Ze.referenceNumber===le);if(J)return J}const Ie=w.find(J=>J.id===x);if(Ie)return Ie;const Je=w.find(J=>Ss(J)===x);return Je||null},[w]),Ue=o.useCallback(de=>{const x=de.trim();if(!x)return null;const le=x.toLowerCase(),Ie=KI(x);if(Ie){const Ze=P.find(te=>te.referenceNumber===Ie);if(Ze)return Ze}const Je=P.find(Ze=>Ze.id===x);if(Je)return Je;const J=P.find(Ze=>Ze.title.trim().toLowerCase()===le);return J||null},[P]),st=o.useCallback((de,x)=>{x?.preserveReturnTrail||me([]),K(de.id),$(de.title),M(de.description||""),T(de.category||h(t)),V(de.type||Z()),ye(typeof de.priority=="number"?de.priority:2),H(typeof de.complexity=="number"?de.complexity:3),ie(de.status||"task"),S(de.assignee||"unassigned"),ge(de.scheduledDate||""),oe(de.dueDate||"");const le=de.workstreamId&&P.find(Ie=>Ie.id===de.workstreamId)||null;Ye(le?Go(le)||le.id:""),z(de.checklistItems||[]),Y(de.comments||[]),ee(de.taxonomies||{}),L(de.attachments||[]),_(!1),j("add"),x?.adoptAsBaseline!==!1&&b?.(de)},[t,h,Z,j,S,L,_,T,z,Y,H,M,oe,K,ee,ye,ge,ie,me,$,V,b,P]),ft=o.useCallback(async(de,x)=>{const le=Ae.current+1;if(Ae.current=le,!v)return c?.(),st(de,{preserveReturnTrail:x?.preserveReturnTrail}),de;if(!de.isSummary){c?.();const Je=x?.shouldApply?await v(de,{shouldCommit:x.shouldApply}):await v(de);if(Ae.current===le){const J=Je||de;return st(J,{preserveReturnTrail:x?.preserveReturnTrail}),J}return null}const Ie=x?.shouldApply?await v(de,{shouldCommit:x.shouldApply}):await v(de);return Ie&&Ae.current===le?(st(Ie,{preserveReturnTrail:x?.preserveReturnTrail}),Ie):null},[st,c,v]),xe=o.useCallback((de,x)=>{ft(de,x)},[ft]),ke=o.useCallback((de,x)=>ft(de,x),[ft]),ve=o.useCallback(de=>{const x=w.find(Ie=>Ie.id===de);if(!x)return;const le=()=>{n==="add"&&m&&m!==x.id&&me(Ie=>Ie[Ie.length-1]===m?Ie:[...Ie,m]),x.isArchived&&!E&&se(!0),xe(x,{preserveReturnTrail:!0})};if(n==="add"&&m&&m!==x.id){G(le);return}le()},[n,m,xe,G,w,se,me,E]),He=o.useCallback(()=>{if(n!=="add"||!m||N.length===0)return!1;const de=[...N];for(;de.length>0;){const x=de.pop();if(!x)continue;const le=w.find(Ie=>Ie.id===x);if(le)return le.isArchived&&!E&&se(!0),me(de),xe(le,{preserveReturnTrail:!0}),!0}return me([]),!1},[n,m,xe,w,se,me,E,N]),Ee=o.useCallback(()=>{me([])},[me]);return{handleNavigation:G,handleClose:ne,resetForm:Te,resolveTaskIdInput:Le,resolveWorkstreamIdInput:Ue,handleEdit:xe,refreshTaskDetail:ke,applyTaskToEditor:st,handleOpenTaskById:ve,returnToPreviousTask:He,clearReturnToParentTask:Ee}}function QE(e){return e.map(t=>({...t}))}function eN(e){return e.map(t=>({...t}))}function tN(e){return e.map(t=>({...t}))}const rN={id:"software-development",label:"Software Development",description:"A software-oriented starter pack with developer-focused work types and a 4-level priority scale.",isDefaultStarter:!0,categories:[{value:"default",label:"General",icon:"Inbox"},{value:"product",label:"Product",icon:"Layers",color:"blue-500"},{value:"ui-ux",label:"UI/UX",icon:"Palette",color:"violet-500"},{value:"backend",label:"Backend",icon:"Server",color:"emerald-500"}],types:[{value:"feature",label:"Feature",icon:"Star",color:"teal-500",status:"active"},{value:"bug",label:"Bug",icon:"Bug",color:"red-500",status:"active"},{value:"chore",label:"Chore",icon:"Zap",color:"amber-500",status:"active"},{value:"refactor",label:"Refactor",icon:"Code",color:"blue-500",status:"active"},{value:"documentation",label:"Docs",icon:"Book",color:"sky-500",status:"active"}],priorities:[{value:1,label:"Low",color:"amber-200",icon:"ArrowDown"},{value:2,label:"Medium",color:"yellow-500",icon:"Minus"},{value:3,label:"High",color:"orange-500",icon:"ArrowUp"},{value:4,label:"Critical",color:"red-500",icon:"AlertTriangle"}]},nN=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",categories:[{value:rf,label:ay,icon:"Inbox"}],types:[{value:"task",label:"Task",icon:"CheckSquare",color:"blue-500",status:"active"},{value:"deliverable",label:"Deliverable",icon:"Package",color:"teal-500",status:"active"},{value:"issue",label:"Issue",icon:"AlertCircle",color:"red-500",status:"active"},{value:"idea",label:"Idea",icon:"Lightbulb",color:"amber-500",status:"active"},{value:"review",label:"Review",icon:"Search",color:"violet-500",status:"active"}],priorities:[{value:1,label:"Low",color:"teal-500",icon:"ArrowDown"},{value:2,label:"Medium",color:"blue-500",icon:"Minus"},{value:3,label:"High",color:"amber-500",icon:"ArrowUp"}]},rN];function YI(){return nN.map(e=>({...e,categories:QE(e.categories),types:eN(e.types),priorities:tN(e.priorities)}))}const aN={"red-200":"#eb7a7a","orange-200":"#eba87a","amber-200":"#ebc17a","yellow-200":"#ebd07a","green-200":"#7aeba4","teal-200":"#7aebdf","sky-200":"#7ac8eb","blue-200":"#7aa5eb","indigo-200":"#7a7ceb","violet-200":"#9c7aeb","red-500":"#e42525","orange-500":"#e47325","amber-500":"#e49d25","yellow-500":"#e4b625","green-500":"#25e46b","teal-500":"#25e4cf","sky-500":"#25a9e4","blue-500":"#256ee4","indigo-500":"#2529e4","violet-500":"#5f25e4","red-700":"#951818","orange-700":"#954b18","amber-700":"#956718","yellow-700":"#957718","green-700":"#189546","teal-700":"#189587","sky-700":"#186e95","blue-700":"#184895","indigo-700":"#181b95","violet-700":"#3e1895"},tne=["red-200","orange-200","amber-200","yellow-200","green-200","teal-200","sky-200","blue-200","indigo-200","violet-200","red-500","orange-500","amber-500","yellow-500","green-500","teal-500","sky-500","blue-500","indigo-500","violet-500","red-700","orange-700","amber-700","yellow-700","green-700","teal-700","sky-700","blue-700","indigo-700","violet-700"];function aa(e){if(e)return aN[e]||e}const Td=[{value:"task",label:"To Do",shortLabel:"To Do",icon:"Square",color:"blue-200"},{value:"on-hold",label:"Blocked",shortLabel:"Blocked",icon:"Pause",color:"amber-500"},{value:"in-progress",label:"Working",shortLabel:"Working",icon:"Play",color:"blue-500"},{value:"review",label:"Review",shortLabel:"Review",icon:"ClipboardCheck",color:"violet-500"},{value:"done",label:"Done",shortLabel:"Done",icon:"SquareCheck",color:"green-500"},{value:"cancelled",label:"Cancelled",shortLabel:"Cancelled",icon:"Ban",color:"var(--status-cancelled)"}],fc=Td.map(({value:e,label:t,icon:r,color:n})=>({value:e,label:t,icon:r,color:n}));function Vo(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?Td.find(r=>r.value==="done")||Td[0]:Td.find(r=>r.value===t)||Td[0]}const ZI=["Folder","Code","FileText","Terminal","Database","Cpu","Globe","Layout","Server","Search","Settings","Zap","Shield","Star","Layers","Bug","Box","Book","MessageSquare","Image","Music","Video","Map","Mail","Camera","Heart","Anchor","Rocket","Target","Flag","Bookmark","Briefcase","Puzzle","SquareUserRound","Users","User","Unplug","Clock","Lock","Pencil","TrafficCone","CircleDollarSign","Activity","Wrench","Microscope","Palette","Webhook","FlaskConical","Route","Compass","Landmark","BookOpen","Bot","Cloud","Kanban","Infinity","Monitor","Smartphone","History","Brain","Calendar","Play","Pause","Sparkles","Check","Ban","Circle","CheckCircle","Wind","Github","Square","SquareCheck","CheckSquare","Package","AlertCircle","Lightbulb","ClipboardCheck","ScanSearch","Inbox","HelpCircle","Gauge","FileCode","ArrowDown","Minus","ArrowUp","AlertTriangle","CircleQuestionMark","TriangleAlert"],df=ZI.reduce((e,t)=>(e[t]=Xs[t]||Md,e),{}),rne=ZI,Fg=Object.fromEntries(YI().flatMap(e=>e.types).filter(e=>e.icon&&e.color).reduce((e,t)=>(e.some(([r])=>r===t.value)||e.push([t.value,{icon:t.icon,color:t.color}]),e),[])),sN={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"};function oN(e){const t=String(e||"").trim().toLowerCase();return aa(Fg[t]?.color)||aa("violet-200")||"#9c7aeb"}function nne(e){switch(Number(e)){case 1:return"var(--text-muted)";case 2:return"var(--text-secondary)";case 3:return"var(--priority-high)";case 4:return"var(--priority-critical)";default:return"var(--text-secondary)"}}function iN(e){const t=String(e||"").trim().toUpperCase();return aa(sN[t])||"var(--text-muted)"}const cN=/[\u2010-\u2015\u2212]/g;function Hw(e){return String(e??"").trim().replace(cN,"-").replace(/\s+/g," ").toLowerCase()}function my(e){const t=Hw(e);if(!t)return null;const r=t.match(/^(l\s*t|t)\s*(?:-\s*)?(\d+)$/i);return r?`${r[1].replace(/\s+/g,"").toLowerCase()}-${r[2]}`:null}function yp(e){const t=Hw(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:my(e)}}function Ho(e,t){const r=String(t??"").trim();r&&e.push(r)}function Fu(e,t,r){const n=String(r??"").trim();if(!n)return;const s=t?.find(i=>String(i.value)===n);Ho(e,s?.label)}function lN(e,t={}){const r=[];return Ho(r,e.title),Ho(r,e.description),Ho(r,e.id),Ho(r,Ss(e)),Ho(r,e.category),Ho(r,e.type),Ho(r,e.priority),Ho(r,e.status),Ho(r,e.assignee||"unassigned"),Ho(r,e.canceledReason),Fu(r,t.categories,e.category),Fu(r,t.types,e.type),Fu(r,t.priorities,e.priority),Fu(r,fc,e.status),Fu(r,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([n,s])=>{const i=t.taxonomies?.find(c=>c.id===n);Ho(r,i?.label),(Array.isArray(s)?s:[s]).forEach(c=>{Ho(r,c),Fu(r,i?.options,c)})}),r}function Ug(e,t,r={}){const n=typeof t=="string"?yp(t):t;if(!n.raw)return!0;const s=lN(e,r),l=s.map(Hw).filter(Boolean).join(" ");return l.includes(n.raw)||n.referenceToken&&s.map(my).some(d=>d?.includes(n.referenceToken))?!0:n.tokens.length>0&&n.tokens.every(c=>l.includes(c))}function dN(e,t){const r=e.taxonomies?.[t];return r==null||r===""?!1:Array.isArray(r)?r.some(n=>String(n).trim().length>0):String(r).trim().length>0}function kp(e,t){const r=e.filter(s=>s.status!=="retired"),n=e.filter(s=>s.status==="retired"&&t.some(i=>dN(i,s.id)));return[...r,...n.filter(s=>!r.some(i=>i.id===s.id))]}function JI(e,t=[]){return kp(e,t).filter(r=>r.sortEnabled===!0).map(r=>({value:`taxonomy:${r.id}`,label:r.status==="retired"?`${r.label} (Retired)`:r.label}))}function WS(e,t){const r=e.taxonomies?.[t.id];if(r==null||r==="")return null;const n=Array.isArray(r)?r.map(s=>String(s)):[String(r)];for(let s=0;s<t.options.length;s+=1)if(n.includes(String(t.options[s]?.value)))return s;return null}function gd(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}function zg(e,t,r,n,s=[]){let i=0;if(r==="created")return i=gd(e,t),n==="desc"?i:-i;if(r==="updated"){const l=e.updatedAt||e.createdAt,c=t.updatedAt||t.createdAt;return i=new Date(c).getTime()-new Date(l).getTime(),n==="desc"?i:-i}if(r==="priority"){const l=Eg(e.priority),c=Eg(t.priority);return i=l!==c?c-l:gd(e,t),n==="desc"?i:-i}if(r==="complexity"){const l=typeof e.complexity=="number"?e.complexity:3,c=typeof t.complexity=="number"?t.complexity:3;return i=l!==c?c-l:gd(e,t),n==="desc"?i:-i}if(r.startsWith("taxonomy:")){const l=r.slice(9),c=s.find(f=>f.id===l);if(!c)return i=gd(e,t),n==="desc"?i:-i;const d=WS(e,c),m=WS(t,c);return d===null&&m===null?gd(e,t):d===null?1:m===null?-1:d!==m?n==="desc"?m-d:d-m:gd(e,t)}return i=gd(e,t),n==="desc"?i:-i}function uN(e,t,r){const n=e.taxonomies?.[t];return n==null||n===""?!1:Array.isArray(n)?n.some(s=>String(s)===String(r)):String(n)===String(r)}function Vw(e,t){const r=e.options.filter(s=>s.status!=="retired"),n=e.options.filter(s=>s.status==="retired"&&t.some(i=>uN(i,e.id,s.value)));return[...r,...n.filter(s=>!r.some(i=>String(i.value)===String(s.value)))]}function fN({query:e,runtimeMode:t,workspaceId:r,enabled:n,scope:s,debounceMs:i=250,pageSize:l=50,maxMatches:c=500}){const[d,m]=o.useState(()=>new Set),f=o.useRef(0),g=o.useMemo(()=>yp(e).raw,[e]);return o.useEffect(()=>{f.current+=1;const h=f.current;if(!n||t!=="cloud"||!g||!r.trim()){m(v=>v.size===0?v:new Set);return}m(v=>v.size===0?v:new Set);const y=new AbortController,k=window.setTimeout(()=>{(async()=>{const v=new Set;let A=0,b=0;const w=Math.max(1,Math.min(50,Math.trunc(l))),P=Math.max(1,Math.trunc(c));try{for(;b<P;){const E=Math.min(w,P-b),D=new URLSearchParams({query:e.trim(),scope:s,limit:String(E),offset:String(A)}),j=await fetch(`/api/taskforce/tasks/search?${D.toString()}`,{signal:y.signal});if(!j.ok)throw new Error(`Task search failed (${j.status}).`);const S=await j.json(),L=S.matches||[];b+=L.length;for(const T of L){const z=String(T?.id||"").trim();z&&v.add(z)}if(S.pagination?.hasMore!==!0)break;const _=Number(S.pagination?.nextOffset);if(!Number.isInteger(_)||_<=A)break;A=_}!y.signal.aborted&&f.current===h&&m(v)}catch{if(y.signal.aborted||f.current!==h)return;m(new Set)}})()},Math.max(0,i));return()=>{window.clearTimeout(k),y.abort("superseded")}},[i,n,c,g,l,e,t,s,r]),d}function mN({tasks:e,archivedTasks:t,activeCategories:r,activeTypes:n,priorities:s,taxonomies:i,configLoaded:l,referenceDataLoaded:c,assigneeOptionsLoaded:d,assigneeOptions:m,runtimeMode:f="local",workspaceId:g="",cloudTaskSearchEnabled:h=!1,cloudTaskSearchScope:y="active"}){const k=o.useMemo(()=>[...e,...t],[t,e]),v=o.useMemo(()=>BC(m),[m]),A=o.useMemo(()=>kp(i,k).filter(ke=>ke.filterEnabled!==!1).map(ke=>({...ke,options:Vw(ke,k)})),[k,i]),b=o.useMemo(()=>new Map(A.map(ke=>[ke.id,ke])),[A]),w=o.useMemo(()=>v.map(ke=>ke.value),[v]),[P,E]=o.useState(""),D=fN({query:P,runtimeMode:f,workspaceId:g,enabled:h,scope:y}),[j,S]=o.useState([]),[L,_]=o.useState([]),[T,z]=o.useState([]),[Y,H]=o.useState(!1),[M,oe]=o.useState(fc.map(ke=>ke.value)),[K,Q]=o.useState(w),[ee,fe]=o.useState(!0),[_e,$e]=o.useState({}),Ye=o.useRef(d),[ye,ge]=o.useState("created"),[se,ie]=o.useState("desc"),me=o.useCallback(()=>{ie(ke=>ke==="asc"?"desc":"asc")},[]),[$,V]=o.useState("status"),[B,N]=o.useState("show"),[be,Ae]=o.useState({}),q=o.useCallback((ke,ve)=>ve.length===0?!0:ve.every(He=>ke.includes(He)),[]),Z=o.useCallback((ke,ve)=>ke.length===ve.length&&ke.every((He,Ee)=>He===ve[Ee]),[]);o.useEffect(()=>{if(!(!l||!c)&&d&&!Y&&r.length>0&&n.length>0&&s.length>0){S(r.map(ve=>ve.value)),_(s.map(ve=>ve.value)),z(n.map(ve=>ve.value)),Q(w),fe(!0);const ke={};A.forEach(ve=>{ke[ve.id]=ve.options.map(He=>He.value)}),$e(ke),H(!0)}},[l,c,d,r,n,s,A,Y,w]),o.useEffect(()=>{if(!Y||!d)return;const ke=new Set(w),ve=K.filter(de=>ke.has(de)),He=ee?w:ve.length>0||K.length===0?ve:w;(He.length!==K.length||He.some((de,x)=>de!==K[x]))&&Q(He)},[w,K,ee,Y,d]),o.useEffect(()=>{if(!Y||!d)return;const ke=K.filter(He=>w.includes(He)),ve=w.length>0&&w.every(He=>ke.includes(He));ee&&!ve&&d&&!Ye.current||ve!==ee&&fe(ve)},[w,K,ee,Y,d]),o.useEffect(()=>{Ye.current=d},[d]),o.useEffect(()=>{if(!l||!c||!Y||r.length===0)return;const ke=qx(j,r);(ke.length!==j.length||ke.some((He,Ee)=>He!==j[Ee]))&&S(ke)},[l,c,r,Y,j]),o.useEffect(()=>{if(!l||!c||!Y||s.length===0||L.length===0)return;const ke=Kx(L,s),ve=Array.from(new Set(L.map(Ee=>Number(Ee)).filter(Ee=>Number.isFinite(Ee))));(ke.length!==ve.length||ke.some((Ee,de)=>Ee!==ve[de]))&&_(ke)},[l,c,Y,s,L]),o.useEffect(()=>{if(!l||!c||!Y||n.length===0)return;const ke=new Set(n.map(Ee=>Ee.value)),ve=T.filter(Ee=>ke.has(Ee)),He=ve.length>0||T.length===0?ve:n.map(Ee=>Ee.value);Z(He,T)||z(He)},[n,l,T,Y,Z,c]),o.useEffect(()=>{if(!l||!c||!Y)return;const ke={};A.forEach(x=>{const le=x.options.map(J=>J.value);if(le.length===0)return;const Ie=Array.isArray(_e[x.id])?_e[x.id]:[],Je=Ie.filter(J=>le.includes(J));ke[x.id]=Je.length>0||Ie.length===0?Je:le});const ve=Object.keys(_e).sort(),He=Object.keys(ke).sort(),Ee=ve.length!==He.length||ve.some((x,le)=>x!==He[le]),de=He.some(x=>!Z(_e[x]||[],ke[x]||[]));(Ee||de)&&$e(ke)},[l,_e,A,Y,Z,c]);const G=o.useCallback(()=>{E(""),S(r.map(ve=>ve.value)),_(s.map(ve=>ve.value)),z(n.map(ve=>ve.value)),oe(fc.map(ve=>ve.value)),Q(w),fe(!0);const ke={};A.forEach(ve=>{ke[ve.id]=ve.options.map(He=>He.value)}),$e(ke),ge("created"),ie("desc")},[r,s,n,A,w]),ne=o.useCallback(ke=>{Q(ve=>{const He=typeof ke=="function"?ke(ve):ke,Ee=Array.from(new Set(He.filter(x=>typeof x=="string"&&x.trim().length>0))),de=w.length>0&&w.every(x=>Ee.includes(x));return fe(de),Ee})},[w]),Te=o.useMemo(()=>yp(P),[P]),Le=o.useMemo(()=>({categories:r,types:n,priorities:s,assigneeOptions:v,taxonomies:i}),[r,n,s,v,i]),Ue=o.useMemo(()=>{const ke=q(j,r.map(de=>de.value)),ve=q(T,n.map(de=>de.value)),He=q(Array.from(new Set(L.map(de=>Number(de)).filter(de=>Number.isFinite(de)))),s.map(de=>Number(de.value)).filter(de=>Number.isFinite(de))),Ee=q(M,fc.map(de=>de.value));return e.filter(de=>{const x=Ug(de,Te,Le)||!!Te.raw&&D.has(de.id),le=!Y||ke||j.includes(de.category),Ie=!Y||He||Ek(de.priority,L),Je=!Y||ve||T.includes(de.type||bo),J=!Y||Ee||M.includes(de.status),Ze=!Y||ee||K.includes(de.assignee||"unassigned"),te=Object.entries(_e).every(([Ne,je])=>{const Re=b.get(Ne);if(!Re)return!0;const Ce=Re?.options.every(he=>je.includes(he.value))??!0;if(Ce)return!0;const Pe=de.taxonomies?.[Ne];return Pe?Array.isArray(Pe)?Pe.some(he=>je.includes(he)):je.includes(Pe):Ce||je.includes("")});return x&&le&&Ie&&Je&&J&&Ze&&te}).sort((de,x)=>zg(de,x,ye,se,i))},[e,Te,Le,D,j,L,T,M,K,ee,_e,ye,se,Y,A,b,r,n,s,q,i]),st=o.useMemo(()=>{const ke=q(j,r.map(de=>de.value)),ve=q(T,n.map(de=>de.value)),He=q(Array.from(new Set(L.map(de=>Number(de)).filter(de=>Number.isFinite(de)))),s.map(de=>Number(de.value)).filter(de=>Number.isFinite(de))),Ee=q(M,fc.map(de=>de.value));return e.filter(de=>{const x=!Y||ke||j.includes(de.category),le=!Y||He||Ek(de.priority,L),Ie=!Y||ve||T.includes(de.type||bo),Je=!Y||Ee||M.includes(de.status),J=!Y||ee||K.includes(de.assignee||"unassigned"),Ze=Object.entries(_e).every(([te,Ne])=>{const je=b.get(te);if(!je)return!0;const Re=je?.options.every(Pe=>Ne.includes(Pe.value))??!0;if(Re)return!0;const Ce=de.taxonomies?.[te];return Ce?Array.isArray(Ce)?Ce.some(Pe=>Ne.includes(Pe)):Ne.includes(Ce):Re||Ne.includes("")});return x&&le&&Ie&&Je&&J&&Ze})},[e,j,L,T,M,K,ee,_e,Y,A,b,r,n,s,q]),ft=o.useMemo(()=>{const ke=r.every(Ee=>j.includes(Ee.value)),ve=q(T,n.map(Ee=>Ee.value)),He=q(Array.from(new Set(L.map(Ee=>Number(Ee)).filter(Ee=>Number.isFinite(Ee)))),s.map(Ee=>Number(Ee.value)).filter(Ee=>Number.isFinite(Ee)));return t.filter(Ee=>{const de=Ug(Ee,Te,Le)||!!Te.raw&&D.has(Ee.id),x=!Y||ke||j.includes(Ee.category),le=!Y||He||Ek(Ee.priority,L),Ie=!Y||ve||T.includes(Ee.type||bo),Je=!Y||ee||K.includes(Ee.assignee||"unassigned"),J=Object.entries(_e).every(([Ze,te])=>{const Ne=b.get(Ze);if(!Ne)return!0;const je=Ne?.options.every(Ce=>te.includes(Ce.value))??!0;if(je)return!0;const Re=Ee.taxonomies?.[Ze];return Re?Array.isArray(Re)?Re.some(Ce=>te.includes(Ce)):te.includes(Re):je||te.includes("")});return de&&x&&le&&Ie&&Je&&J}).sort((Ee,de)=>zg(Ee,de,ye,se,i))},[t,Te,Le,D,j,L,T,K,ee,_e,ye,se,Y,r,n,s,A,b,q,i]),xe=o.useMemo(()=>{const ke={};return Ue.forEach(ve=>{const He=r.find(de=>de.value===ve.category),Ee=He?He.label:ve.category||"General";ke[Ee]||(ke[Ee]=[]),ke[Ee].push(ve)}),ke},[Ue,r]);return{searchQuery:P,setSearchQuery:E,filterCategories:j,setFilterCategories:S,filterPriorities:L,setFilterPriorities:_,filterTypes:T,setFilterTypes:z,filterStatus:M,setFilterStatus:oe,filterAssignees:K,setFilterAssignees:ne,filterAssigneesAllSelected:ee,setFilterAssigneesAllSelected:fe,filterTaxonomies:_e,setFilterTaxonomies:$e,hasInitedFilters:Y,setHasInitedFilters:H,sortBy:ye,setSortBy:ge,sortOrder:se,setSortOrder:ie,toggleSortOrder:me,groupBy:$,setGroupBy:V,emptyColumnMode:B,setEmptyColumnMode:N,collapsedCategories:be,setCollapsedCategories:Ae,clearFilters:G,filteredTasks:Ue,searchAgnosticTasks:st,filteredArchive:ft,groupedTasks:xe}}const pN=mN,Gw="taskforce-workspace-sync-v3",hN=3,Xu="operation-identities",oc="task-create-attempts",Qu="workstream-create-attempts";function Hh(e){if(!e)return[];const t=Array.isArray(e.attempts)?[...e.attempts]:[];return e.active&&!t.some(r=>r.operationId===e.active?.operationId)&&t.push(e.active),t}function $S(e,t){delete e.active,e.attempts=t}function cs(e,t){const r=String(e||"").trim();if(!r)throw new Error(`${t} is required.`);return r}function Xc(e,t){return e.error||new Error(t)}function gN(e){e.objectStoreNames.contains(Xu)||e.createObjectStore(Xu,{keyPath:"fingerprint"}),e.objectStoreNames.contains(oc)||e.createObjectStore(oc,{keyPath:"workspaceId"}),e.objectStoreNames.contains(Qu)||e.createObjectStore(Qu,{keyPath:"fingerprint"})}function Kw(e,t){return e?new Promise((r,n)=>{const s=e.open(t,hN);let i=!1;s.onupgradeneeded=()=>gN(s.result),s.onsuccess=()=>{const l=s.result;if(i){l.close();return}i=!0,l.onversionchange=()=>l.close(),r(l)},s.onerror=()=>{i||(i=!0,n(Xc(s,"Failed to open the local operation identity database.")))},s.onblocked=()=>{}}):Promise.reject(new Error("IndexedDB is unavailable."))}class qw{constructor(t=globalThis.indexedDB,r=Gw){this.indexedDb=t,this.databaseName=r}async getOrCreate(t,r){const n=cs(t,"fingerprint"),s=await this.open();try{return await new Promise((i,l)=>{const c=s.transaction(Xu,"readwrite"),d=c.objectStore(Xu),m=d.get(n);let f="",g=!1;m.onsuccess=()=>{try{const h=m.result;if(h){f=cs(h.operationId,"stored operationId");return}f=cs(r(),"operationId"),g=!0,d.add({fingerprint:n,operationId:f})}catch(h){c.abort(),l(h)}},m.onerror=()=>l(Xc(m,"Failed to read the local operation identity.")),c.oncomplete=()=>i({operationId:f,created:g}),c.onerror=()=>l(c.error||new Error("Failed to persist the local operation identity.")),c.onabort=()=>l(c.error||new Error("Persisting the local operation identity was aborted."))})}finally{s.close()}}async deleteIfMatches(t,r){const n=cs(t,"fingerprint"),s=cs(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(Xu,"readwrite"),m=d.objectStore(Xu),f=m.get(n);f.onsuccess=()=>{f.result?.operationId===s&&m.delete(n)},f.onerror=()=>c(Xc(f,"Failed to read the local operation identity.")),d.oncomplete=()=>l(),d.onerror=()=>c(d.error||new Error("Failed to delete the local operation identity.")),d.onabort=()=>c(d.error||new Error("Deleting the local operation identity was aborted."))})}finally{i.close()}}open(){return Kw(this.indexedDb,this.databaseName)}}class XI{constructor(t=globalThis.indexedDB,r=Gw){this.indexedDb=t,this.databaseName=r}async getForParticipant(t,r){const n=cs(t,"workspaceId"),s=cs(r,"participantId"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(oc,"readonly"),f=d.objectStore(oc).get(n);let g=null;f.onsuccess=()=>{const h=f.result,y=Hh(h).find(k=>k.participantId===s);y&&(g={...y,created:!1,resolved:!1})},f.onerror=()=>c(Xc(f,"Failed to read the local task-create attempt.")),d.oncomplete=()=>l(g),d.onerror=()=>c(d.error||new Error("Failed to claim the local task-create attempt.")),d.onabort=()=>c(d.error||new Error("Claiming the local task-create attempt was aborted."))})}finally{i.close()}}async listPending(t){const r=cs(t,"workspaceId"),n=await this.open();try{return await new Promise((s,i)=>{const l=n.transaction(oc,"readonly"),d=l.objectStore(oc).get(r);let m=[];d.onsuccess=()=>{m=Hh(d.result).map(f=>({...f,created:!1,resolved:!1}))},d.onerror=()=>i(Xc(d,"Failed to list local task-create attempts.")),l.oncomplete=()=>s(m),l.onerror=()=>i(l.error||new Error("Failed to list local task-create attempts.")),l.onabort=()=>i(l.error||new Error("Listing local task-create attempts was aborted."))})}finally{n.close()}}async claim(t,r,n,s){const i=cs(t,"workspaceId"),l=cs(r,"participantId"),c=await this.open();try{return await new Promise((d,m)=>{const f=c.transaction(oc,"readwrite"),g=f.objectStore(oc),h=g.get(i);let y=null,k=!1;h.onsuccess=()=>{try{const v=h.result||{workspaceId:i},A=Hh(v),b=A.find(P=>P.participantId===l);if(b){y={...b,created:!1,resolved:!1};return}const w={workspaceId:i,operationId:cs(s(),"operationId"),task:n,participantId:l};k=!0,A.push(w),$S(v,A),g.put(v),y={...w,created:!0,resolved:!1}}catch(v){f.abort(),m(v)}},h.onerror=()=>m(Xc(h,"Failed to read the local task-create attempt.")),f.oncomplete=()=>{if(!y)return m(new Error("Local task-create attempt was not prepared."));d({...y,created:k})},f.onerror=()=>m(f.error||new Error("Failed to persist the local task-create attempt.")),f.onabort=()=>m(f.error||new Error("Persisting the local task-create attempt was aborted."))})}finally{c.close()}}async markResolved(t,r){const n=cs(r,"operationId");await this.mutateState(t,s=>s.filter(i=>i.operationId!==n))}async abandonIfMatches(t,r){await this.mutateState(t,n=>{const s=cs(r,"operationId");return n.filter(i=>i.operationId!==s)})}async mutateState(t,r){const n=cs(t,"workspaceId"),s=await this.open();try{await new Promise((i,l)=>{const c=s.transaction(oc,"readwrite"),d=c.objectStore(oc),m=d.get(n);m.onsuccess=()=>{const f=m.result||{workspaceId:n},g=r(Hh(f));g.length===0?d.delete(n):($S(f,g),d.put(f))},m.onerror=()=>l(Xc(m,"Failed to read the local task-create state.")),c.oncomplete=()=>i(),c.onerror=()=>l(c.error||new Error("Failed to update the local task-create state.")),c.onabort=()=>l(c.error||new Error("Updating the local task-create state was aborted."))})}finally{s.close()}}open(){return Kw(this.indexedDb,this.databaseName)}}class yN{constructor(t=globalThis.indexedDB,r=Gw){this.indexedDb=t,this.databaseName=r}async claim(t,r,n){const s=cs(t,"fingerprint"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(Qu,"readwrite"),m=d.objectStore(Qu),f=m.get(s);let g=null,h=!1;f.onsuccess=()=>{try{const y=f.result;if(y){g=y;return}g={fingerprint:s,operationId:cs(n(),"operationId"),workstream:r},h=!0,m.add(g)}catch(y){d.abort(),c(y)}},f.onerror=()=>c(Xc(f,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>{if(!g)return c(new Error("Workstream-create attempt was not prepared."));l({...g,created:h})},d.onerror=()=>c(d.error||new Error("Failed to persist the workstream-create attempt.")),d.onabort=()=>c(d.error||new Error("Persisting the workstream-create attempt was aborted."))})}finally{i.close()}}async deleteIfMatches(t,r){const n=cs(t,"fingerprint"),s=cs(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(Qu,"readwrite"),m=d.objectStore(Qu),f=m.get(n);f.onsuccess=()=>{f.result?.operationId===s&&m.delete(n)},f.onerror=()=>c(Xc(f,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>l(),d.onerror=()=>c(d.error||new Error("Failed to delete the workstream-create attempt.")),d.onabort=()=>c(d.error||new Error("Deleting the workstream-create attempt was aborted."))})}finally{i.close()}}open(){return Kw(this.indexedDb,this.databaseName)}}function Qc(e){return pn(e)}async function Yw(e,t=globalThis.crypto){if(!t?.subtle)throw new Error("Web Crypto is unavailable.");const r=new TextEncoder().encode(Qc(e)),n=await t.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(n),s=>s.toString(16).padStart(2,"0")).join("")}function Wm(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}function kN(){return{operationId:Wm(),taskId:`task-${globalThis.crypto.randomUUID()}`}}async function Fv(e,t,r){const n={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}};try{return await fetch(e,n)}catch{return fetch(e,n)}}async function Hg(e){if(e.ok||![400,404,409,422].includes(e.status))return!1;const t=await e.clone().json().catch(()=>null),r=String(t?.code||"").trim();return new Set(["TASK_CREATE_UNSUPPORTED_INPUT","DURABLE_TASK_HTTP_PATCH_UNSUPPORTED","DURABLE_TASK_PATCH_INVALID","WORKSPACE_SYNC_OPERATION_ID_REQUIRED","TASK_NOT_FOUND","TASK_ARCHIVED_READ_ONLY","TASK_CHECKLIST_INVALID","TASK_ATTACHMENT_LINKS_INVALID","TASK_COMMENT_INVALID","TASK_COMMENT_IDENTITY_CONFLICT","TASK_DETAIL_REVISION_CONFLICT"]).has(r)}function qk(e){const{id:t,createdAt:r,updatedAt:n,...s}=e;return s}function FS(e){return`taskforce.sync.v3.cloud-task-create-participant-v1:${e}`}function Uv(e){const t=new XI,r=new qw,n=new Map,s=c=>{const d=globalThis.sessionStorage?.getItem(FS(c));if(d)try{const f=JSON.parse(d);if(typeof f.participantId=="string"&&f.participantId.trim())return{participantId:f.participantId.trim(),draftFingerprint:typeof f.draftFingerprint=="string"?f.draftFingerprint:null}}catch{}const m=n.get(c);return m||{participantId:Wm(),draftFingerprint:null}},i=(c,d)=>{n.set(c,d),globalThis.sessionStorage?.setItem(FS(c),JSON.stringify(d))},l=c=>{i(c,{participantId:Wm(),draftFingerprint:null})};return{async prepareCreate(c,d){const m=kN(),f={...d,id:m.taskId},g=await Yw({workspaceId:c,task:qk(d)});let h=s(c);h.draftFingerprint&&h.draftFingerprint!==g?h={participantId:Wm(),draftFingerprint:g}:h={...h,draftFingerprint:g},i(c,h);const y=await t.claim(c,h.participantId,f,()=>m.operationId),k=qk(y.task);return{operationId:y.operationId,body:y.task,recoveredChangedInput:pn(k)!==pn(qk(d))}},async confirmCreate(c,d){await t.markResolved(c,d),l(c)},resetCreateDraft(c){l(c)},async prepareUpdate(c,d,m,f){const g=pn({workspaceId:c,url:d,body:m,observedPrecondition:f}),h=await r.getOrCreate(g,Wm);return{fingerprint:g,operationId:h.operationId}},confirmUpdate(c,d){return r.deleteIfMatches(c,d)}}}function vN(e){const{activeCategories:t,activeTab:r,apiEndpoint:n,assignee:s,attachments:i,attachmentsDirty:l,category:c,checklistItems:d,comments:m,complexity:f,description:g,dueDate:h,createTaskDurably:y,durableTaskHttpRootActivationEnabled:k=!1,workspaceId:v,taskHttpMutationClient:A,updateTask:b,editingTaskId:w,editorBaselineDraft:P=null,revisionConflict:E=!1,fetchTasks:D,formTaxonomies:j,getAttachmentsDraft:S,getDescriptionDraft:L,getPreferredCategoryValue:_,getTitleDraft:T,awaitPendingDescriptionImageUpload:z,mergeTaskFromServer:Y,onTaskCreated:H,onTaskCreateAccepted:M,workstreamInput:oe,priority:K,pushNotice:Q,queueWorkspaceSyncFromAuthoritativeTaskState:ee,relationshipTasks:fe,supplementalTasks:_e=[],resetForm:$e,resolveWorkstreamIdInput:Ye,scheduledDate:ye,setActiveTab:ge,setAttachmentsDirty:se,setComments:ie,setError:me,setLastUsedCategory:$,setLoading:V,setNewCommentText:B,status:N,title:be,taxonomies:Ae,textDraftOccupied:q,type:Z}=e,G=T||(()=>be),ne=L||(()=>g),Te=S||(()=>i),Le=o.useRef(G),Ue=o.useRef(ne),st=o.useRef(Te),ft=o.useRef(z);Le.current=G,Ue.current=ne,st.current=Te,ft.current=z;const xe=o.useCallback(()=>({title:Le.current(),description:Ue.current()}),[]),[ke,ve]=o.useState(null),[He,Ee]=o.useState("idle"),[de,x]=o.useState(null),le=o.useRef(null),Ie=o.useRef(null),Je=o.useRef(null),J=o.useRef(null),Ze=o.useRef(!1),te=o.useRef(null),Ne=o.useRef(null),je=o.useRef(!1),Re=o.useRef(null),Ce=w&&(fe.find(U=>U.id===w)||_e.find(U=>U.id===w))||null,Pe=Ce?.isDeleted?"deleted":Ce?.isArchived?"archived":null,he=r==="add"&&!w&&((q??(be.trim()!==""||g.trim()!==""))||d.length>0||(m?.length||0)>0||i.length>0);o.useEffect(()=>{je.current&&!he&&(Ne.current?.resetCreateDraft(v),y?.resetDraft?.()),je.current=he},[he,y,v]);const De=o.useCallback(U=>JSON.stringify({title:U.title.trim(),description:U.description,category:U.category,type:U.type,priority:Number(U.priority),complexity:Number(U.complexity)||3,assignee:U.assignee||"agent",scheduledDate:U.scheduledDate||"",dueDate:U.dueDate||"",workstreamId:U.workstreamId||"",checklistItems:U.checklistItems,taxonomies:U.taxonomies,attachments:U.attachments}),[]),et=o.useCallback((U=xe(),pe=st.current())=>De({title:U.title,description:U.description,category:typeof c=="string"?c:c.label||_(t),type:typeof Z=="string"?Z:Z.label||bo,priority:K,complexity:Number(f)||3,status:N,assignee:s||"agent",scheduledDate:ye,dueDate:h,workstreamId:oe.trim()?Ye(oe)?.id||oe.trim():"",checklistItems:d,taxonomies:j,attachments:pe}),[t,s,De,c,d,f,g,h,j,_,K,xe,Ye,ye,N,be,Z,oe]),Fe=o.useCallback(()=>{le.current!==null&&(window.clearTimeout(le.current),le.current=null)},[]),yt=o.useCallback(()=>!!(w&&de!==null&&et()!==de),[et,w,de]),Oe=yt();o.useEffect(()=>{E&&(Fe(),Ie.current=null,Ee("idle"))},[Fe,E]);const mt=o.useCallback(U=>{if(Je.current===U.signature&&Ie.current===null&&J.current||(Ie.current=U,J.current))return J.current;const Ke=(async()=>{let Et=!0;for(;Ie.current;){const kt=Ie.current;Ie.current=null,Je.current=kt.signature,Et=await kt.save(),Et&&x(kt.signature)}return Je.current=null,Et})().finally(()=>{Je.current=null,J.current=null});return J.current=Ke,Ke},[]),vt=o.useCallback(async U=>{const pe=U?.quiet??!1,Ke=U?.source??"manual";if(w&&E)return me(""),Ee("idle"),!1;if(!w&&Ke==="manual")try{await ft.current?.()}catch(pr){console.error("Description image upload did not settle before task creation.",pr);const Bt="Wait for the Description image upload to finish, then try again.";return me(Bt),pe||Q(Bt,"error"),!1}const Et=U?.textDraft??xe(),kt=Et.title,Ot=Et.description,dr=st.current();if(w||(te.current=null),Pe)return me(Pe==="deleted"?"Deleted tasks are read-only. Restore first to make changes.":"Archived tasks are read-only. Unarchive first to make changes."),Ee(Ke==="autosave"?"error":"idle"),!1;if(!kt.trim())return me("Title is required"),w&&Ee(Ke==="autosave"?"error":"idle"),!1;const tr=Ae.filter(pr=>pr.isRequired).filter(pr=>{const Bt=j[pr.id];return Array.isArray(Bt)?Bt.filter(wr=>String(wr).trim().length>0).length===0:typeof Bt!="string"&&typeof Bt!="number"||String(Bt).trim().length===0}).map(pr=>pr.label);if(tr.length>0)return me(`Required taxonomy values are missing: ${tr.join(", ")}`),w&&Ee(Ke==="autosave"?"error":"idle"),!1;V(!0),me(""),w&&Ee("saving");try{const pr=w?`/api/taskforce/task/${w}`:n.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),Bt=w?"PATCH":"POST",wr=typeof c=="string"?c:c.label||_(t),or=typeof Z=="string"?Z:Z.label||bo,$r=oe.trim()?Ye(oe):null,Dr=w?fe.find(Ct=>Ct.id===w):null,Me=!w||!Dr||pn(Dr.checklistItems||[])!==pn(d),nt={title:kt,description:Ot||null,category:wr||_(t),type:or,priority:K,complexity:Number(f)||3,status:w?void 0:N,completedAt:w?void 0:N==="done"?new Date().toISOString():null,assignee:s||"agent",scheduledDate:ye||null,dueDate:h||null,workstreamId:oe.trim()?$r?.id||oe.trim():null,taxonomies:j,...w?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};if(w&&Dr)for(const[Ct,Ht]of Object.entries(nt))(Ht===void 0||pn(Ht??null)===pn(Dr[Ct]??null))&&delete nt[Ct];if(Me&&(nt.checklistItems=d),w||(nt.comments=m),(!w||l)&&(nt.attachments=dr),w&&Object.keys(nt).length>0&&(nt.saveSource=Ke,Dr?.detailRevision&&(nt.expectedDetailRevision=Dr.detailRevision)),w&&b){const Ct=await b(w,nt);return V(!1),Ee(Ct===!1?"error":"saved"),Ct===!1?!1:($(wr),se(!1),!0)}if(!w&&y){let Ct;try{Ct=await y(nt)}catch(Ht){console.error("Durable task create failed before a conclusive result.",Ht);const Ft="Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return me(Ft),pe||Q(Ft,"error"),V(!1),!1}if(Ct){if(Ct.state==="failed"||Ct.state==="rejected"||Ct.state==="ambiguous"||Ct.state==="disabled"){const Ht=Ct.state==="disabled"?"Task was not created because durable capture became unavailable. Reload before retrying.":Ct.state==="failed"?"Task was not created because durable local preparation failed. Retry the task.":Ct.state==="rejected"?`Task was not created because durable capture rejected it${Ct.errorCode?` (${Ct.errorCode})`:""}.`:"Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return me(Ht),pe||Q(Ht,"error"),V(!1),!1}if(Ct.task){const Ht=Qs(Ct.task);te.current=Ht,Y(Ht)}if(Ct.recoveredChangedInput&&(Ze.current=!0,Q("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),Ct.state==="pending")Ct.pendingReason!=="queued"&&(Ze.current=!0,Q(Ct.pendingReason==="auth"?"Task created locally. Sign in to finish cloud sync.":Ct.pendingReason==="sync-disabled"?"Task created locally. Turn on sync to send it to cloud.":"Task created locally. Cloud sync will retry automatically.","info")),me("");else if(Ct.state==="blocked"){Ze.current=!0;const Ht=`Task created locally, but cloud sync is blocked${Ct.errorCode?` (${Ct.errorCode})`:""}.`;me(Ht),Q(Ht,"error")}else me("");return $(wr),se(!1),V(!1),!0}}let pt=!1,lt=null,xt=nt;if(k&&!w){Ne.current||(Ne.current=A||Uv());const Ct=await Ne.current.prepareCreate(v,nt);lt=Ct.operationId,xt=Ct.body,pt=Ct.recoveredChangedInput}const Yt={method:Bt,headers:{"Content-Type":"application/json"},body:JSON.stringify(xt)},Nt=lt?await Fv(pr,Yt,lt):await fetch(pr,Yt);if(!Nt.ok){!w&<&&await Hg(Nt)&&await Ne.current?.confirmCreate(v,lt);const Ct=await Nt.json(),Ht=Ct.error||Ct.message||`Failed to ${w?"update":"save"} task`;return me(Ht),pe||Q(Ht,"error"),V(!1),w&&Ee("error"),!1}const Qt=await Nt.json().catch(()=>null);if(!w&<&&(!Qt||typeof Qt!="object"||String(Qt.id||"")!==String(xt.id||"")))throw new Error("Durable cloud task create returned an invalid authoritative task identity.");if(!w&<&&await Ne.current?.confirmCreate(v,lt),pt&&(Ze.current=!0,Q("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),Qt&&typeof Qt=="object"){const Ct=Qs(Qt);Y(Ct),w?ee():te.current=Ct}return $(wr),se(!1),V(!1),w&&Ee("saved"),!0}catch(pr){return console.error("Failed to save task.",pr),me("Failed to connect to server"),pe||Q("Failed to connect to server","error"),V(!1),w&&Ee("error"),!1}},[t,n,s,l,c,d,m,f,h,y,k,v,A,b,w,E,Pe,j,_,Y,oe,K,Q,ee,xe,Ye,se,me,$,V,ye,N,Ae,Z]),Ve=o.useCallback(async()=>{if(await vt({source:"manual"})&&(!w&&!Ze.current&&Q("Task added successfully","success"),Ze.current=!1,r==="add"&&!w)){const pe=te.current;if(pe&&M)try{await M(pe)}catch(Ke){console.warn("Task create draft upload promotion failed.",Ke),Q("Task created successfully. Temporary image cleanup will retry automatically.","info")}if(pe&&H){H(pe);return}$e(),ge("tasks"),await D()}},[r,w,D,M,H,Q,$e,vt,ge]);o.useEffect(()=>{if(Fe(),Ie.current=null,!w){x(null),Ee("idle");return}x(P?De(P):et()),Ee("idle")},[De,Fe,w,P]);const tt=o.useCallback(async()=>{if(Fe(),Pe)return!0;if(E)return!1;if(!w||de===null)return!0;const U=xe(),pe=et(U);return pe===de?!0:!U.title.trim()||h&&ye&&h<ye?!1:await mt({signature:pe,save:()=>vt({quiet:!0,source:"autosave",textDraft:U})})&&et()===pe},[et,Fe,h,w,Pe,mt,de,xe,E,vt,ye]);o.useEffect(()=>{if(!w||Pe||E||de===null)return;const U=xe(),pe=et(U);if(pe===de)return;if(!U.title.trim()){Ee("idle");return}if(h&&ye&&h<ye){Ee("error");return}Ee(kt=>kt==="error"?"error":"idle"),Fe();const Et=(()=>{try{return String(JSON.parse(de).assignee||"")}catch{return""}})()!==String(s||"agent")?0:1400;return le.current=window.setTimeout(async()=>{await mt({signature:pe,save:()=>vt({quiet:!0,source:"autosave",textDraft:U})})},Et),()=>{Fe()}},[et,s,Fe,h,w,Pe,mt,de,xe,E,vt,ye]);const It=o.useCallback(async U=>{if(U.preventDefault(),h&&ye&&h<ye){ve({dueDate:h,scheduledDate:ye});return}await Ve()},[h,Ve,ye]),Xe=o.useCallback(async()=>{ve(null),await Ve()},[Ve]),bt=o.useCallback(()=>{ve(null)},[]),at=o.useCallback(async U=>{if(!w||!U.trim())return;const pe=U.trim(),Ke=Re.current,Et=Ke?.taskId===w&&Ke.text===pe?Ke:{taskId:w,text:pe,operationId:globalThis.crypto?.randomUUID?.()||`comment-operation-${Date.now()}`,commentId:`comment-${globalThis.crypto?.randomUUID?.()||Date.now()}`,timestamp:new Date().toISOString()};Re.current=Et;try{const kt=await fetch(`/api/taskforce/task/${w}/comment`,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-operation-id":Et.operationId},body:JSON.stringify({text:pe,commentId:Et.commentId,timestamp:Et.timestamp})});if(!kt.ok){const dr=await Hg(kt),pr=(await kt.json().catch(()=>({}))).error||"Failed to add comment.";dr&&(Re.current=null),me(pr),Q(pr,"error");return}const Ot=await kt.json().catch(()=>null);if(Re.current=null,B(""),Ot&&typeof Ot=="object"){const dr=Qs(Ot);ie(dr.comments||[]),Y(Ot),x(et()),Ee("saved")}else await D(!0);ee()}catch(kt){console.error("Failed to add comment",kt),me("Failed to add comment."),Q("Failed to add comment.","error")}},[w,D,et,Y,Q,ee,ie,me,B]);return{autoSaveState:He,hasUnsavedChanges:Oe,hasUnsavedChangesNow:yt,hasPendingAutoSave:He==="saving",flushAutoSave:tt,scheduleWarningPrompt:ke,saveTask:vt,handleSubmit:It,confirmScheduleWarning:Xe,cancelScheduleWarning:bt,handleAddComment:at}}const wN=(e,t)=>globalThis.fetch(e,t),Vg="taskforce.task-description-image-draft-recovery.v1",US=[1e3,5e3,15e3,6e4],bN=8,zS=Number.MAX_SAFE_INTEGER;function SN(e){const t=Math.max(0,Math.min(US.length-1,Math.floor(e)-1));return US[t]}function Ku(e){return`${e.workspaceId}\0${e.createdByUserId}\0${e.draftUploadId}`}function AN(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.workspaceId=="string"&&!!t.workspaceId.trim()&&typeof t.createdByUserId=="string"&&!!t.createdByUserId.trim()&&typeof t.draftUploadId=="string"&&!!t.draftUploadId.trim()&&(t.resolution==="promote"||t.resolution==="discard")&&Number.isFinite(t.attempts)&&Number.isFinite(t.nextAttemptAt)&&Number.isFinite(t.createdAt)}function zv(e){if(!e)return[];try{const t=JSON.parse(e.getItem(Vg)||"[]");if(!Array.isArray(t))return[];const r=new Map;return t.filter(AN).forEach(n=>{r.set(Ku(n),n)}),[...r.values()]}catch{return[]}}function CN(e,t){if(e)try{if(t.length===0){e.removeItem(Vg);return}e.setItem(Vg,JSON.stringify(t))}catch{}}function Yk(e,t){const r=t(zv(e));return CN(e,r),r}function IN(){try{return globalThis.localStorage||null}catch{return null}}function _N(e,t,r={}){const n=r.fetchImpl||wN,s=r.storage===void 0?IN():r.storage,i=r.now||Date.now,l=o.useRef(null),c=o.useRef(new Map),d=o.useRef(async()=>{}),m=o.useCallback(()=>{l.current!==null&&(clearTimeout(l.current),l.current=null)},[]),f=o.useCallback(()=>{m();const k=zv(s).filter(A=>A.workspaceId===e&&A.createdByUserId===t&&A.nextAttemptAt<zS).sort((A,b)=>A.nextAttemptAt-b.nextAttemptAt)[0];if(!k)return;const v=Math.max(0,k.nextAttemptAt-i());l.current=setTimeout(()=>{l.current=null,d.current(!1)},v)},[m,t,i,s,e]),g=o.useCallback(k=>{const v=Ku(k),A=c.current.get(v);if(A)return A;const b=(async()=>{await Promise.resolve();try{const w=await n(`/api/taskforce/context-upload/draft/${k.resolution}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:k.workspaceId,draftUploadId:k.draftUploadId,uploadPurpose:"task-description-draft"})});if(!w.ok)throw new Error(`Draft upload ${k.resolution} was rejected (${w.status}).`);Yk(s,P=>P.filter(E=>Ku(E)!==v))}catch(w){throw Yk(s,P=>P.map(E=>{if(Ku(E)!==v)return E;const D=Math.min(Number.MAX_SAFE_INTEGER,E.attempts+1);return{...E,attempts:D,nextAttemptAt:D>=bN?zS:i()+SN(D)}})),w}finally{c.current.delete(v),f()}})();return c.current.set(v,b),b},[n,i,f,s]),h=o.useCallback(async(k=!1)=>{const v=i(),A=zv(s).filter(b=>b.workspaceId===e&&b.createdByUserId===t&&(k||b.nextAttemptAt<=v));await Promise.allSettled(A.map(b=>g(b))),f()},[g,t,i,f,s,e]);return d.current=h,o.useEffect(()=>{h(!0);const k=()=>{h(!0)},v=()=>{document.visibilityState==="visible"&&h(!0)},A=b=>{b.key===Vg&&h(!1)};return window.addEventListener("online",k),window.addEventListener("storage",A),document.addEventListener("visibilitychange",v),()=>{m(),window.removeEventListener("online",k),window.removeEventListener("storage",A),document.removeEventListener("visibilitychange",v)}},[m,h]),{resolveDraft:o.useCallback(async k=>{const v=k.draftUploadId.trim();if(!e||!t||!v)return;const A=i(),b={workspaceId:e,createdByUserId:t,draftUploadId:v,resolution:k.resolution,attempts:0,nextAttemptAt:A,createdAt:A};Yk(s,w=>[...w.filter(P=>Ku(P)!==Ku(b)),b]),await g(b)},[g,t,i,s,e])}}function TN(e){const{editingTaskId:t,workstreamInput:r,pushNotice:n,relationshipTasks:s,resolveWorkstreamIdInput:i,setError:l,updateTask:c}=e;return{handleSetWorkstreamForCurrentTask:o.useCallback(async m=>{if(!t)return;const f=s.find(k=>k.id===t);if(!f)return;const g=typeof m=="string"?m.trim():m===null?"":r.trim(),h=g?i(g):null,y=g.length>0?h?.id||g:null;if((f.workstreamId||null)===y){n(y?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{if(await c(t,{workstreamId:y})===!1)return;l(""),n(y?"Workstream set":"Workstream removed","info")}catch{l("Failed to set workstream."),n("Failed to set workstream.","error")}},[t,r,n,s,i,l,c])}}const Zw=new Set(["title","description","priority","complexity","type","category","createdBy","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function xN(e){const t={};for(const r of Zw)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}class vg extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskMetadataMutationError"}}function QI(e){const t=e&&typeof e=="object"&&!Array.isArray(e)?e:null;if(!t)throw new vg("Task metadata patch must be an object.","DURABLE_TASK_PATCH_INVALID",400);const r=Object.keys(t);if(r.length===0)throw new vg("Task metadata patch cannot be empty.","DURABLE_TASK_PATCH_INVALID",400);const n=r.filter(s=>!Zw.has(s));if(n.length>0)throw new vg(`Task metadata patch contains unsupported fields: ${n.sort().join(", ")}.`,"DURABLE_TASK_PATCH_INVALID",400);return{...t}}const Wd="taskforce:tasks-mutated";function RN(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Wd,{detail:e}))}const Vh=Zw,PN=new Set(["status","assignee","canceledReason","completedAt","completed","inProgress","readyForReview","cancelled"]);function jN(e,t){return e===void 0||t===void 0?e===t:pn(e)===pn(t)}function xn(e,t,r,n){return t?e.map(s=>{if(s.id!==r)return s;const i={...s};for(const l of Object.keys(n))Object.prototype.hasOwnProperty.call(t,l)?i[l]=t[l]:delete i[l];return i}):e}function Im(e,t){return{taskId:t,updatedAt:e?.updatedAt??null,detailRevision:e?.detailRevision??null,status:e?.status??null,isArchived:e?.isArchived===!0}}function EN({tasks:e,archivedTasks:t,editingTaskId:r,editingTaskDetailRevision:n=null,setTasks:s,setArchivedTasks:i,setDeletedTasks:l,setError:c,resetForm:d,setActiveTab:m,fetchTasks:f,fetchArchive:g,fetchDeletedTasks:h,mergeTaskFromServer:y,pushNotice:k,cloudAuthConfigured:v,runtimeMode:A,isAuthenticated:b,workspaceCloudSyncEnabled:w,buildWorkspaceSyncSignature:P,pushWorkspaceChangesToCloud:E,workspacePendingSignatureRef:D,workspaceDeletedTaskIdsRef:j,workspaceDeletedTaskWatermarksRef:S,mutateTaskMetadata:L,mutateTaskStatus:_,mutateTaskLifecycle:T,mutateTaskDelete:z,mutateTaskRestore:Y,durableTaskMetadataActivationEnabled:H=!1,durableTaskStatusActivationEnabled:M=!1,durableTaskDeleteActivationEnabled:oe=!1,durableTaskHttpRootActivationEnabled:K=!1,workspaceId:Q="default",taskHttpMutationClient:ee,onTaskRevisionConflict:fe,onTaskMutationAccepted:_e,pendingTaskMetadataOverlaysRef:$e}){const Ye=o.useRef(new Map);o.useEffect(()=>{if(typeof window>"u")return;const x=le=>{const Ie=le.detail,Je=Ie?.authoritativeTask,J=String(Ie?.workspaceId||"").trim()||"default";!Je||J!==Q||(Ye.current.set(Je.id,Je),y(Je))};return window.addEventListener(Wd,x),()=>window.removeEventListener(Wd,x)},[y,Q]);const[ye,ge]=o.useState(null),se=o.useRef(null),ie=o.useRef(null),me=o.useRef(null),$=o.useRef(null),V=o.useCallback(async(x,le,Ie,Je,J)=>{const Ze=["checklistItems","attachments","comments"].some(je=>Object.prototype.hasOwnProperty.call(Ie,je));if(!K&&!Ze)return fetch(x,le);$.current||($.current=ee||Uv());const te=await $.current.prepareUpdate(Q,x,Ie,Je),Ne=await Fv(x,le,te.operationId);if(Ne.ok){const je=await Ne.clone().json().catch(()=>null);if(!J(je))throw new Error("Durable cloud task mutation returned an invalid authoritative response.");await $.current.confirmUpdate(te.fingerprint,te.operationId)}else await Hg(Ne)&&await $.current.confirmUpdate(te.fingerprint,te.operationId);return Ne},[K,ee,Q]),B=o.useCallback((x,le,Ie,Je,J)=>V(x,le,Ie,J,Ze=>!!Ze&&typeof Ze=="object"&&String(Ze.id||"")===Je),[V]);o.useEffect(()=>()=>{typeof window>"u"||(ie.current!==null&&(window.clearTimeout(ie.current),ie.current=null),me.current=null)},[]);const N=o.useCallback((x=0)=>{if(!(v&&A==="local"&&b&&w)||typeof window>"u")return;const le=Math.max(0,x),Ie=Date.now()+le,Je=me.current;if(ie.current!==null){if(le<=0||Je!==null&&Je>=Ie)return;window.clearTimeout(ie.current),ie.current=null}me.current=Ie,ie.current=window.setTimeout(()=>{ie.current=null,me.current=null;const J=P();J&&(D.current=J,E(J))},le)},[v,A,b,w,P,D,E]),be=o.useCallback(async(x,le)=>{let Ie=await fetch(`/api/taskforce/deleted${x}`,le);return Ie.status===404&&(Ie=await fetch(`/api/taskforce/trash${x}`,le)),Ie},[]),Ae=async(x,le=!1,Ie={})=>{if(!Ie.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const Je=le||t.some(J=>J.id===x);try{let J=null;if(oe){const Ne=await z?.(x);if(!Ne){const je="Task was not deleted because durable capture was unavailable.";return c(je),k(je,"error"),!1}if(Ne.state!=="disabled"){if(Ne.state==="rejected"||Ne.state==="failed"||Ne.state==="ambiguous"){const je=Ne.state==="ambiguous"?"Task delete confirmation was interrupted. Retry the same delete to confirm it safely.":`Task was not deleted because durable capture rejected it${Ne.errorCode?` (${Ne.errorCode})`:""}.`;return c(je),k(je,"error"),!1}if(J=Ne.deleted||null,!J){const je="Task delete was captured, but its Trash record was unavailable.";return c(je),k(je,"error"),!1}}}let Ze=J?{deleted:J}:{};if(!J){const Ne=`/api/taskforce/task/${x}`,je=e.find(Ce=>Ce.id===x)||t.find(Ce=>Ce.id===x),Re=await V(Ne,{method:"DELETE"},{},Im(je,x),Ce=>!!Ce&&typeof Ce=="object"&&Ce.success===!0&&!!Ce.deleted&&typeof Ce.deleted=="object"&&String(Ce.deleted.taskId||"")===x);if(!Re.ok){const Pe=(await Re.json().catch(()=>({}))).error||"Failed to delete task.";return c(Pe),k(Pe,"error"),!1}Ze=await Re.json().catch(()=>({}))}const te=Ze?.deleted&&typeof Ze.deleted=="object"&&Ze.deleted.taskSnapshot?{...Ze.deleted,taskSnapshot:Qs(Ze.deleted.taskSnapshot)}:null;if(window.location.search.includes(x)){const Ne=new URL(window.location.href);Ne.searchParams.delete("task"),window.history.pushState({},"",Ne.toString())}if(Je?i(Ne=>Ne.filter(je=>je.id!==x)):s(Ne=>Ne.filter(je=>je.id!==x)),te){l(je=>[te,...je.filter(Re=>Re.taskId!==x)]);const Ne=String(te.deletedAt||"").trim();Number.isFinite(Date.parse(Ne))&&S.current.set(x,Ne)}else await h(!0),S.current.set(x,new Date().toISOString());if(j.current.add(x),!J&&v&&A==="local"&&b&&w){const Ne=P();D.current=Ne,E(Ne)}return r===x&&(d(),m("tasks")),c(""),k("Task moved to Trash.","info"),!0}catch(J){return console.error("Failed to delete task:",J),c("Failed to delete task."),k("Failed to delete task.","error"),!1}},q=o.useCallback(async(x,le,Ie={})=>{try{const Je=`/api/taskforce/deleted/${x}/restore`,J=String(le||"").trim();if(oe){if(!J||!Y)throw new Error("Durable local task restore requires the expected task identity and capture client.");const Re=await Y(x,J,Ie.restoreDestination||"previous");if(!Re||Re.state==="failed"||Re.state==="ambiguous"||Re.state==="rejected"||Re.state==="disabled"){const Pe="Failed to capture task restore durably.";return c(Pe),Ie.silent||k(Pe,"error"),null}const Ce=Re.task;if(!Ce||Ce.id!==J)throw new Error("Durable local task restore did not return the restored task.");return y(Ce),l(Pe=>Pe.filter(he=>he.id!==x&&he.taskId!==J)),j.current.delete(x),j.current.delete(J),S.current.delete(x),S.current.delete(J),c(""),Ie.silent||k(Re.state==="accepted"?"Task restored from Trash.":"Task restored locally; cloud sync is pending.","info"),Qs(Ce)}if(K&&!J)throw new Error("Durable cloud task restore requires the expected task identity.");const Ze=S.current.get(J)||S.current.get(x)||null,te=K?await V(Je,{method:"POST"},{},{taskId:J,updatedAt:Ze,status:"deleted",isArchived:!1},Re=>!Re||typeof Re!="object"?!1:String(Re.id||"").trim()===J):await be(`/${x}/restore`,{method:"POST"});if(!te.ok){const Ce=(await te.json().catch(()=>({}))).error||"Failed to restore deleted task.";return c(Ce),Ie.silent||k(Ce,"error"),null}const Ne=await te.json().catch(()=>null);Ne?y(Ne):await f(!0);const je=String(Ne?.id||"").trim();return l(Re=>Re.filter(Ce=>Ce.id!==x&&Ce.taskId!==J&&Ce.taskId!==je)),j.current.delete(x),S.current.delete(x),je&&(j.current.delete(je),S.current.delete(je)),N(),c(""),Ie.silent||k(Ne?.isArchived===!0?"Task restored to Archived.":"Task restored to Active.","info"),Ne?Qs(Ne):null}catch(Je){return console.error("Failed to restore deleted task:",Je),c("Failed to restore deleted task."),Ie.silent||k("Failed to restore deleted task.","error"),null}},[K,oe,V,f,y,Y,k,N,be,l,c]),Z=o.useCallback(async x=>{try{const le=await be(`/${x}`,{method:"DELETE"});if(!le.ok){const Je=(await le.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return c(Je),k(Je,"error"),!1}return l(Ie=>Ie.filter(Je=>Je.id!==x&&Je.taskId!==x)),N(),c(""),k("Deleted task permanently removed.","info"),!0}catch(le){return console.error("Failed to permanently delete deleted task:",le),c("Failed to permanently delete deleted task."),k("Failed to permanently delete deleted task.","error"),!1}},[k,N,be,l,c]),G=o.useCallback(async()=>{try{const x=await be("/empty",{method:"POST"});if(!x.ok){const J=(await x.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return c(J),k(J,"error"),null}const le=await x.json().catch(()=>({})),Ie=Number(le?.deleted||0);return l([]),N(),c(""),k(Ie===1?"Deleted task permanently removed.":`${Ie} deleted tasks permanently removed.`,"info"),Ie}catch(x){return console.error("Failed to empty deleted tasks:",x),c("Failed to permanently delete deleted tasks."),k("Failed to permanently delete deleted tasks.","error"),null}},[k,N,be,l,c]),ne=o.useCallback((x,le,Ie,Je,J)=>{if(x.state==="disabled")return!1;if(x.state==="rejected"||x.state==="failed"){const Ze=Je.find(Ne=>Ne.id===le)||J.find(Ne=>Ne.id===le);s(Ne=>xn(Ne,Ze,le,Ie)),i(Ne=>xn(Ne,Ze,le,Ie));const te=x.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":x.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${x.errorCode?` (${x.errorCode})`:""}.`;return c(te),k(te,"error"),!0}if("task"in x&&x.task&&(y(x.task),_e?.(x.task)),x.state==="accepted")c("");else if(x.state==="pending")c(""),x.pendingReason!=="queued"&&k(x.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":x.pendingReason==="sync-disabled"?"Task saved locally. Turn on sync to send it to cloud.":"Task saved locally. Cloud sync will retry automatically.","info");else{const Ze=x.state==="blocked"?`Task saved locally, but cloud sync is blocked${x.errorCode?` (${x.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(Ze),k(Ze,"error")}return!0},[y,_e,k,i,c,s]),Te=o.useCallback(async(x,le,Ie={},Je)=>{const J=Je??(x.id===r?n:null),Ze=Object.keys(Ie).some(Pe=>Vh.has(Pe)),te=Object.keys(Ie).filter(Pe=>!PN.has(Pe)&&!Vh.has(Pe));if(M&&te.length>0){const Pe=`Task status was not saved because the combined update contains unsupported fields: ${te.sort().join(", ")}.`;c(Pe),k(Pe,"error");return}const Ne=new Date().toISOString(),je={...Ie,status:le,completedAt:le==="done"||le==="cancelled"?Ie.completedAt||Ne:null,completed:le==="done",inProgress:le==="in-progress",readyForReview:le==="review",cancelled:le==="cancelled"},Re=e,Ce=t;if(s(Pe=>Pe.map(he=>he.id===x.id?{...he,...je}:he)),i(Pe=>Pe.map(he=>he.id===x.id?{...he,...je}:he)),_)try{const Pe=(De,et,Fe)=>{const yt=Object.prototype.hasOwnProperty.call(et,"assignee")?{kind:"set",value:et.assignee??null}:{kind:"preserve"},Oe=xN(et);return delete Oe.assignee,{status:De,assigneeIntent:yt,canceledReason:De==="cancelled"?et.canceledReason??null:null,metadataPatch:Oe,...Fe?{expectedDetailRevision:Fe}:{}}};let he=await _(x.id,Pe(le,Ie,J));if(he&&(he.state==="rejected"||he.state==="failed")&&he.errorCode==="TASK_DETAIL_REVISION_CONFLICT"){const De=Re.find(Fe=>Fe.id===x.id)||Ce.find(Fe=>Fe.id===x.id);s(Fe=>xn(Fe,De,x.id,je)),i(Fe=>xn(Fe,De,x.id,je));const et=await fe?.(x.id,null);if(et?.retryDetailRevision){const Fe=Object.fromEntries(Object.entries(Ie).map(([Oe,mt])=>[Oe,et.retryPatch&&Object.prototype.hasOwnProperty.call(et.retryPatch,Oe)?et.retryPatch[Oe]:mt])),yt=et.retryPatch?.status||le;if(he=await _(x.id,Pe(yt,Fe,et.retryDetailRevision)),he&&(he.state==="rejected"||he.state==="failed")&&he.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await fe?.(x.id,null))?.handled){c("");return}}else if(et?.handled){c("");return}}if(he&&ne(he,x.id,je,Re,Ce))return;if(!he&&M){const De=Re.find(Fe=>Fe.id===x.id)||Ce.find(Fe=>Fe.id===x.id);s(Fe=>xn(Fe,De,x.id,je)),i(Fe=>xn(Fe,De,x.id,je));const et="Task status was not saved because durable capture was unavailable.";c(et),k(et,"error");return}}catch(Pe){console.error("Durable task status update failed before a conclusive result.",Pe);const he=Re.find(et=>et.id===x.id)||Ce.find(et=>et.id===x.id);s(et=>xn(et,he,x.id,je)),i(et=>xn(et,he,x.id,je));const De="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(De),k(De,"error");return}if(H&&Ze){const Pe=Re.find(De=>De.id===x.id)||Ce.find(De=>De.id===x.id);s(De=>xn(De,Pe,x.id,je)),i(De=>xn(De,Pe,x.id,je));const he="Task was not saved because durable status capture is required for this combined metadata update.";c(he),k(he,"error");return}try{const Pe={...Ie,status:le,completedAt:je.completedAt,...J?{expectedDetailRevision:J}:{}};let he=Pe,De,et={};for(let yt=0;De=await B(`/api/taskforce/task/${x.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(he)},he,x.id,Im(x,x.id)),!(De.ok||(et=await De.json().catch(()=>({})),et.code!=="TASK_DETAIL_REVISION_CONFLICT"));yt+=1){s(Re),i(Ce);const Oe=typeof et?.details?.currentDetailRevision=="string"?et.details.currentDetailRevision:null,mt=await fe?.(x.id,Oe);if(yt===0&&mt?.retryDetailRevision){he={...Object.fromEntries(Object.entries(Pe).map(([Ve,tt])=>[Ve,mt.retryPatch&&Object.prototype.hasOwnProperty.call(mt.retryPatch,Ve)?mt.retryPatch[Ve]:tt])),expectedDetailRevision:mt.retryDetailRevision};continue}if(mt?.handled){c("");return}break}if(!De.ok){Object.keys(et).length===0&&(et=await De.json().catch(()=>({})));const yt=et.error||"Failed to update task status.";c(yt),k(yt,"error"),s(Re),i(Ce);return}const Fe=await De.json().catch(()=>null);Fe?(y(Fe),_e?.(Fe)):await f(!0),N(),c("")}catch(Pe){console.error("Failed to update task status.",Pe),c("Failed to update task status."),k("Failed to update task status.","error"),s(Re),i(Ce)}},[t,H,n,r,K,M,f,B,ne,y,_,_e,fe,k,N,i,c,s,e]),Le=o.useCallback(async(x,le)=>{const Ie=le,Je=Ie.saveSource,J=typeof Ie.expectedDetailRevision=="string"?Ie.expectedDetailRevision:x===r?n:null;if(le=Object.fromEntries(Object.entries(le).filter(([Oe])=>Oe!=="saveSource"&&Oe!=="expectedDetailRevision")),Object.keys(le).length===0)return!0;const Ze=Ye.current.get(x),te=e.find(Oe=>Oe.id===x)||t.find(Oe=>Oe.id===x),Ne=Date.parse(String(Ze?.updatedAt||"")),je=Date.parse(String(te?.updatedAt||"")),Re=Ze&&(!te||Number.isFinite(Ne)&&(!Number.isFinite(je)||Ne>=je))?Ze:te;if(te&&Re===te&&Ze&&Ye.current.delete(x),Re&&(le=Object.fromEntries(Object.entries(le).filter(([Oe,mt])=>!jN(Re[Oe],mt))),Object.keys(le).length===0))return!0;if(le.status){const Oe=e.find(mt=>mt.id===x)||t.find(mt=>mt.id===x);if(Oe){await Te(Oe,le.status,le,J);return}if(M){const mt="Task status was not saved because the current task could not be resolved safely.";c(mt),k(mt,"error");return}}const Ce=e,Pe=t;s(Oe=>Oe.map(mt=>mt.id===x?{...mt,...le}:mt)),i(Oe=>Oe.map(mt=>mt.id===x?{...mt,...le}:mt));const he=Object.fromEntries(Object.entries(le).filter(([Oe])=>Vh.has(Oe)));let De=Object.fromEntries(Object.entries(le).filter(([Oe])=>!Vh.has(Oe)));const et=Object.keys(he).length>0;let Fe=Object.keys(De).length>0,yt=!1;if(et&&L){const Oe={patch:he,observedUpdatedAt:Re?.updatedAt||null};$e?.current.set(x,Oe);const mt=()=>{$e?.current.get(x)===Oe&&$e.current.delete(x)},vt=()=>!$e||$e.current.get(x)===Oe;try{const Ve={...Je?{saveSource:Je}:{},...J?{expectedDetailRevision:J}:{}};let tt=Object.keys(Ve).length>0?await L(x,he,Ve):await L(x,he);if(!vt())return!1;if(tt&&tt.state!=="disabled"){if((tt.state==="rejected"||tt.state==="failed")&&tt.errorCode==="TASK_DETAIL_REVISION_CONFLICT"){const It=Ce.find(bt=>bt.id===x)||Pe.find(bt=>bt.id===x);s(bt=>xn(bt,It,x,le)),i(bt=>xn(bt,It,x,le));const Xe=await fe?.(x,null);if(!vt())return!1;if(Xe?.retryDetailRevision){const bt=Xe.retryPatch,at=Object.fromEntries(Object.entries(he).map(([U,pe])=>[U,bt&&Object.prototype.hasOwnProperty.call(bt,U)?bt[U]:pe]));if(Oe.patch=at,tt=await L(x,at,{...Je?{saveSource:Je}:{},expectedDetailRevision:Xe.retryDetailRevision}),!vt())return!1;if(tt&&(tt.state==="rejected"||tt.state==="failed")&&tt.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await fe?.(x,null))?.handled)return c(""),!1}else if(Xe?.handled)return c(""),!1}if(!tt||tt.state==="disabled"){const It=Ce.find(bt=>bt.id===x)||Pe.find(bt=>bt.id===x);s(bt=>xn(bt,It,x,le)),i(bt=>xn(bt,It,x,le));const Xe="Task was not saved because durable metadata capture became unavailable during retry.";return c(Xe),k(Xe,"error"),!1}if(tt.state==="rejected"||tt.state==="failed"){mt();const It=Ce.find(bt=>bt.id===x)||Pe.find(bt=>bt.id===x);s(bt=>xn(bt,It,x,le)),i(bt=>xn(bt,It,x,le));const Xe=tt.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":tt.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${tt.errorCode?` (${tt.errorCode})`:""}.`;return c(Xe),k(Xe,"error"),!1}if(yt=!0,"task"in tt&&tt.task?.updatedAt&&$e?.current.get(x)===Oe&&(Oe.observedUpdatedAt=tt.task.updatedAt),"task"in tt&&tt.task&&(!$e||$e.current.get(x)===Oe)&&(y(tt.task),_e?.(tt.task)),tt.state==="accepted")c("");else if(tt.state==="pending")c(""),tt.pendingReason!=="queued"&&k(tt.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":tt.pendingReason==="sync-disabled"?"Task saved locally. Turn on sync to send it to cloud.":"Task saved locally. Cloud sync will retry automatically.","info");else{const It=tt.state==="blocked"?`Task saved locally, but cloud sync is blocked${tt.errorCode?` (${tt.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(It),k(It,"error")}if(tt.state==="ambiguous"){if(Fe){const It=Ce.find(Xe=>Xe.id===x)||Pe.find(Xe=>Xe.id===x);s(Xe=>xn(Xe,It,x,De)),i(Xe=>xn(Xe,It,x,De))}return!1}if(!Fe)return!0}else if(mt(),H){const It=Ce.find(bt=>bt.id===x)||Pe.find(bt=>bt.id===x);s(bt=>xn(bt,It,x,le)),i(bt=>xn(bt,It,x,le));const Xe="Task was not saved because durable metadata capture was unavailable.";return c(Xe),k(Xe,"error"),!1}}catch(Ve){if(!vt())return!1;if(mt(),console.error("Durable task metadata update failed before a conclusive result.",Ve),Fe){const It=Ce.find(Xe=>Xe.id===x)||Pe.find(Xe=>Xe.id===x);s(Xe=>xn(Xe,It,x,De)),i(Xe=>xn(Xe,It,x,De))}const tt="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";return c(tt),k(tt,"error"),!1}}else if(et&&H){const Oe=Ce.find(vt=>vt.id===x)||Pe.find(vt=>vt.id===x);s(vt=>xn(vt,Oe,x,le)),i(vt=>xn(vt,Oe,x,le));const mt="Task was not saved because durable metadata capture was unavailable.";return c(mt),k(mt,"error"),!1}if(et&&!yt&&(De={...he,...De},Fe=!0),!Fe)return!0;try{const Oe={...De,...Je?{saveSource:Je}:{},...J?{expectedDetailRevision:J}:{}},mt={method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(Oe)};let vt=Oe;for(let Ve=0;Ve<2;Ve+=1){const tt=Ve===0?mt:{...mt,body:JSON.stringify(vt)},It=await B(`/api/taskforce/task/${x}`,tt,vt,x,Im(Ce.find(U=>U.id===x)||Pe.find(U=>U.id===x),x));if(It.ok){const U=await It.json().catch(()=>null);return y(U),U&&typeof U=="object"&&typeof U.id=="string"&&_e?.(U),N(le.attachments!==void 0?150:0),c(""),!0}const Xe=await It.json().catch(()=>({})),bt=Ce.find(U=>U.id===x)||Pe.find(U=>U.id===x);if(s(U=>xn(U,bt,x,De)),i(U=>xn(U,bt,x,De)),Xe.code==="TASK_DETAIL_REVISION_CONFLICT"){const U=typeof Xe?.details?.currentDetailRevision=="string"?Xe.details.currentDetailRevision:null,pe=await fe?.(x,U);if(Ve===0&&pe?.retryDetailRevision){const Ke=pe.retryPatch;vt={...Object.fromEntries(Object.entries(Oe).map(([kt,Ot])=>[kt,Ke&&Object.prototype.hasOwnProperty.call(Ke,kt)?Ke[kt]:Ot])),expectedDetailRevision:pe.retryDetailRevision};continue}if(pe?.handled)return c(""),!1}const at=Xe.error||`Failed to update task ${x}.`;return c(at),k(at,"error"),!1}return!1}catch(Oe){console.error("Failed to update task",Oe);const mt=`Failed to update task ${x}.`;c(mt),k(mt,"error");const vt=Ce.find(Ve=>Ve.id===x)||Pe.find(Ve=>Ve.id===x);return s(Ve=>xn(Ve,vt,x,De)),i(Ve=>xn(Ve,vt,x,De)),!1}},[e,t,n,r,k,y,L,_e,fe,$e,N,Te,H,M,B]),Ue=async x=>{const le=x.status==="done"?"task":"done";await Te(x,le)},st=async x=>{const le=x.status==="cancelled"?"task":"cancelled";await Te(x,le)},ft=async x=>{const le=x.status==="in-progress"?"task":"in-progress";await Te(x,le)},xe=async x=>{const le=x.status==="review"?"task":"review";await Te(x,le)},ke=async x=>{if(T)try{const le=await T(x.id,{mutationKind:"archive",cancellation:x.status==="cancelled",reason:x.status==="cancelled"?x.canceledReason??null:null});if(le&&ne(le,x.id,{},e,t)){const Ie=le.state!=="rejected"&&le.state!=="failed"&&le.state!=="ambiguous";return r===x.id&&Ie&&(d(),m("tasks")),Ie}if(!le&&M)throw new Error("Durable task archive activation returned no result.")}catch(le){console.error("Durable task archive failed before a conclusive result.",le);const Ie="Task archive confirmation was interrupted. Retry the same action to confirm it safely.";return c(Ie),k(Ie,"error"),!1}try{const Ie=x.status==="cancelled"?"cancel":"complete",Je=`/api/taskforce/task/${x.id}/${Ie}`,J=await V(Je,{method:"POST"},{},Im(x,x.id),Ze=>!!Ze&&typeof Ze=="object"&&String(Ze.id||"")===x.id);if(J.ok){const Ze=await J.json().catch(()=>null),te=[];if(Ze&&typeof Ze=="object"&&te.push(Ze),te.length>0){for(const je of te)y(je);N()}else g();const Ne=new Set(te.map(je=>String(je?.id||"").trim()).filter(je=>je.length>0));return r&&Ne.has(r)&&(d(),m("tasks")),!0}else{const te=(await J.json().catch(()=>({}))).error||"Failed to archive task.";return c(te),k(te,"error"),!1}}catch(le){return console.error("Failed to archive",le),c("Failed to archive task."),k("Failed to archive task.","error"),!1}},ve=async()=>{const x=e.filter(le=>le.status==="done"||le.status==="cancelled");if(x.length!==0&&confirm(`Archive ${x.length} completed/cancelled tasks?`)){if(T){let le=!1,Ie=0;for(const Je of x)try{const J=await T(Je.id,{mutationKind:"archive",cancellation:Je.status==="cancelled",reason:Je.status==="cancelled"?Je.canceledReason??null:null});if(!J||J.state==="disabled"){if(!le&&(!M||J?.state==="disabled"))break;const Ze="Bulk archive stopped safely because durable capture became unavailable.";c(Ze),k(Ze,"error");return}if(le=!0,ne(J,Je.id,{},e,t)){if(J.state==="rejected"||J.state==="failed")return;Ie+=1}}catch(J){console.error("Durable bulk archive confirmation was interrupted.",J);const Ze="Bulk archive stopped safely. Retry to confirm the remaining tasks.";c(Ze),k(Ze,"error");return}if(le){k(`${Ie} tasks archived`,"info"),c("");return}}try{const le=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:x.map(Ie=>Ie.id)})});if(le.ok){const Ie=await le.json(),Je=Array.isArray(Ie?.results?.archived)?Ie.results.archived:[];if(Je.length>0){for(const J of Je)y(J);N()}else s(J=>J.filter(Ze=>!["done","cancelled"].includes(Ze.status))),g();k(`${Ie.archived||x.length} tasks archived`,"info"),c("")}else{const Je=(await le.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";c(Je),k(Je,"error")}}catch(le){console.error("Failed to bulk archive",le),c("Failed to bulk archive tasks."),k("Failed to bulk archive tasks.","error")}}},He=async x=>{if(T)try{const le=await T(x,{mutationKind:"unarchive"});if(le&&ne(le,x,{},e,t)){le.state!=="rejected"&&le.state!=="failed"&&k("Task restored from archive.","info");return}if(!le&&M)throw new Error("Durable task unarchive activation returned no result.")}catch(le){console.error("Durable task unarchive failed before a conclusive result.",le);const Ie="Task restore confirmation was interrupted. Retry the same action to confirm it safely.";c(Ie),k(Ie,"error");return}try{const le=`/api/taskforce/task/${x}/unarchive`,Ie=t.find(J=>J.id===x)||e.find(J=>J.id===x),Je=await V(le,{method:"POST"},{},Im(Ie,x),J=>!!J&&typeof J=="object"&&String(J.id||"")===x);if(Je.ok){const J=await Je.json().catch(()=>null);J?(y(J),N()):(i(Ze=>Ze.filter(te=>te.id!==x)),await f(!0),N()),c(""),k("Task restored from archive.","info")}}catch(le){console.error("Failed to unarchive",le),c("Failed to unarchive task."),k("Failed to unarchive task.","error")}},Ee=o.useCallback(async(x,le="previous",Ie)=>{const Je=Array.from(new Map(x.map(je=>[je.id,je])).values()),J={requested:Je.length,completed:0,succeeded:[],failed:[]},Ze=()=>Ie?.({...J,succeeded:[...J.succeeded],failed:[...J.failed]}),te=(je,Re,Ce)=>{J.failed.push({deletedRecordId:je.id,taskId:je.taskId,title:je.taskSnapshot.title,message:Re,...Ce?{code:Ce}:{}}),J.completed+=1,Ze()},Ne=(je,Re)=>{y(Re),l(Ce=>Ce.filter(Pe=>Pe.id!==je.id&&Pe.taskId!==Re.id)),j.current.delete(je.id),j.current.delete(je.taskId),S.current.delete(je.id),S.current.delete(je.taskId),J.succeeded.push(je),J.completed+=1,Ze()};if(oe)for(const je of Je){const Re=await q(je.id,je.taskId,{silent:!0,restoreDestination:le});Re?Ne(je,Re):te(je,"Failed to capture or confirm the durable restore.")}else{for(let je=0;je<Je.length;je+=50){const Re=Je.slice(je,je+50),Ce=Re.map(he=>he.id),Pe=le==="archive"?{ids:Ce,restoreDestination:le}:{ids:Ce};try{let he,De=null;K?($.current||($.current=ee||Uv()),De=await $.current.prepareUpdate(Q,"/api/taskforce/deleted/restore-batch",Pe,le==="archive"?{deletedRecordIds:Ce,restoreDestination:le}:{deletedRecordIds:Ce}),he=await Fv("/api/taskforce/deleted/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Pe)},De.operationId)):he=await be("/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Pe)});const et=await he.json().catch(()=>({}));if(De&&(he.ok||await Hg(he))&&await $.current?.confirmUpdate(De.fingerprint,De.operationId),!he.ok){const Oe=String(et.error||"Failed to restore the selected Trash records.");Re.forEach(mt=>te(mt,Oe));continue}const Fe=new Map(Re.map(Oe=>[Oe.id,Oe])),yt=new Set;for(const Oe of et.results||[]){const mt=String(Oe.deletedRecordId||"").trim(),vt=Fe.get(mt);if(!vt||!Oe.task)continue;const Ve=Qs(Oe.task);Ve.id===vt.taskId&&(yt.add(mt),Ne(vt,Ve))}for(const Oe of et.errors||[]){const mt=String(Oe.id||"").trim(),vt=Fe.get(mt);!vt||yt.has(mt)||(yt.add(mt),te(vt,String(Oe.message||"Failed to restore the deleted task."),Oe.code?String(Oe.code):void 0))}for(const Oe of Re)yt.has(Oe.id)||te(Oe,"The restore response did not include this deleted record.")}catch(he){const De=he instanceof Error?he.message:"The restore request was interrupted.";Re.forEach(et=>te(et,De))}}N()}if(J.failed.length>0){const je=`${J.succeeded.length} restored; ${J.failed.length} failed and remain selected.`;c(je),k(je,"error")}else J.succeeded.length>0&&(c(""),k(le==="archive"?`${J.succeeded.length} task${J.succeeded.length===1?"":"s"} restored to Archive.`:`${J.succeeded.length} task${J.succeeded.length===1?"":"s"} restored from Trash.`,"info"));return J},[oe,K,q,y,k,N,be,l,c,ee,j,S,Q]);return{copiedId:ye,handleDelete:Ae,handleUpdateTask:Le,handleSetStatus:Te,handleToggleComplete:Ue,handleToggleCancel:st,handleToggleInProgress:ft,handleToggleReview:xe,handleArchiveTask:ke,handleBulkArchive:ve,handleUnarchive:He,handleRestoreDeletedTask:q,handleRestoreSelectedDeletedTasks:Ee,handlePermanentlyDeleteDeletedTask:Z,handleEmptyDeletedTasks:G,handleCopyId:(x,le)=>{x.stopPropagation(),navigator.clipboard.writeText(le),ge(le),se.current!==null&&window.clearTimeout(se.current),se.current=window.setTimeout(()=>{se.current=null,ge(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:N}}const NN=EN;function Gh(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function DN(e){try{return typeof window>"u"?null:typeof e=="string"?new URL(e,window.location.origin):e instanceof URL?e:typeof Request<"u"&&e instanceof Request?new URL(e.url,window.location.origin):null}catch{return null}}function MN({currentWorkspaceIdRef:e,resolveApiUrl:t,runtimeMode:r}){o.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const n=window.fetch.bind(window),s=i=>{if(typeof i=="string")return r!=="cloud"?i:i.startsWith("/api/taskforce")&&!Gh(i)?t(i):i;if(i instanceof URL)return r!=="cloud"?i:i.origin===window.location.origin&&i.pathname.startsWith("/api/taskforce")?Gh(i.pathname)?i:new URL(t(`${i.pathname}${i.search}${i.hash}`)):i;if(typeof Request<"u"&&i instanceof Request){if(r!=="cloud")return i;const l=new URL(i.url,window.location.origin);if(l.origin===window.location.origin&&l.pathname.startsWith("/api/taskforce"))return Gh(l.pathname)?i:t(`${l.pathname}${l.search}${l.hash}`)}return i};return window.fetch=((i,l)=>{const c=s(i),d=DN(c);if(!!!(d&&d.pathname.startsWith("/api/taskforce")&&!Gh(d.pathname)))return n(c,l);const f=String(e.current||"").trim();if(typeof Request<"u"&&c instanceof Request){const h=new Headers(c.headers);l?.headers&&new Headers(l.headers).forEach((v,A)=>h.set(A,v)),f&&f!=="default"&&!h.has("x-taskforce-workspace-id")&&(h.set("x-taskforce-workspace-id",f),h.set("x-taskforce-workspace-authoritative","1"));const y=new Request(c,{...l,headers:h});return n(y)}const g=new Headers(l?.headers);return f&&f!=="default"&&!g.has("x-taskforce-workspace-id")&&(g.set("x-taskforce-workspace-id",f),g.set("x-taskforce-workspace-authoritative","1")),n(c,{...l,headers:g})}),()=>{window.fetch=n}},[e,t,r])}const $m=12e3,LN=3e4,ON=2e4;function Kh(e){return e==="cloud"?LN:$m}function HS(){return typeof performance<"u"?performance.now():Date.now()}function BN({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:r,resolveCloudAuthUrl:n,authOnlyCloudMode:s,authRequiredError:i,runtimeMode:l,workspaceSelectionScope:c,markBootstrapPhase:d,markBootstrapStalled:m,setRuntimeMode:f,setAuthRequiredForApi:g,setIsAuthenticated:h,setAuthUserId:y,setAuthWorkspaceId:k,setAuthUserEmail:v,setAuthUserDisplayName:A,setAuthUserAvatarUrl:b,setUserGlobalSyncStatus:w,setUserGlobalSyncError:P,setHasBetaAccess:E,setAvailableWorkspaces:D,setHydratedWorkspaceRole:j,setAssigneeOptions:S,setAuthBlocked:L,setAuthSessionResolved:_,setError:T,applyResolvedWorkspaceId:z,readPersistedWorkspaceId:Y,authSessionRequestRef:H,authSessionEpochRef:M,authSessionLastCheckedAtRef:oe,authSessionLastResultRef:K,isLoopbackHost:Q,setAuthStateReadyRefs:ee}){const fe=o.useCallback(async $e=>{const Ye=$e?.force===!0;if(d("auth"),!e)return K.current;if(!t)return f("local"),g(!1),h(!1),y("anonymous"),k(""),Nm(null),v(""),A(""),b(""),w("disconnected"),P(null),E(!0),D([]),j(null),S(El()),L(!1),_(!0),ee(!1,!0,!1),K.current=!1,oe.current=Date.now(),!1;const ye=n("/api/taskforce/auth/session"),ge=Date.now();if(!Ye&&H.current)return H.current;if(!Ye&&r&&ge-oe.current<1500)return K.current;const se=++M.current;let ie=null;return ie=(async()=>{const me=HS(),$=new AbortController,V=typeof window<"u"?window.setTimeout(()=>$.abort(),ON):null,B=()=>M.current!==se,N=(be,Ae)=>{Cr(be,{durationMs:Math.max(0,Math.round(HS()-me)),force:Ye,sessionUrl:ye,...Ae})};try{const be=await fetch(ye,{method:"GET",credentials:"include",mode:"cors",signal:$.signal});if(B())return K.current;if(be.status===429)return _(!0),ee(K.current,!0,!1),N("auth_session_rate_limited",{status:be.status}),K.current;if(!be.ok)return B()?K.current:(Q&&Nm(null),_(!0),ee(!1,!0,!1),K.current=!1,N("auth_session_request_failed",{status:be.status}),!1);const Ae=await be.json();if(B())return K.current;const q=!!Ae.authRequiredForApi,Z=!!Ae.authenticated,G=Z?Ae.betaAccess!==!1:!0,ne=typeof Ae.workspaceId=="string"&&Ae.workspaceId.trim().length>0?Ae.workspaceId.trim():"",Te=typeof Ae.userId=="string"&&Ae.userId.trim().length>0?Ae.userId.trim():"anonymous",Le=typeof Ae.email=="string"&&Ae.email.trim().length>0?Ae.email.trim().toLowerCase():"",Ue=typeof Ae.displayName=="string"?Ae.displayName.trim():"",st=typeof Ae.avatarUrl=="string"?Ae.avatarUrl.trim():"",ft=l==="local",xe=l==="local"||s,ke=s||ft?!1:q;return g(ke),h(Z),y(Z?Te:"anonymous"),k(Z?ne:""),Q&&Nm(Z?Te:null),v(Z?Le:""),A(Z?Ue:""),b(Z?st:""),Z&&T(ve=>ve===i?"":ve),w(Z?"idle":"disconnected"),P(null),E(G),xe||z(ne||Y(c)||"default",{preserveNonDefaultDefault:!0}),L(s||ft?!1:q&&!Z),_(!0),ee(Z,!0,ke),K.current=Z,Z&&d("ready"),N("auth_session_resolved",{status:be.status,authenticated:Z,workspaceId:Z?ne:"",userId:Z?Te:"anonymous",authRequiredForApi:ke}),Z}catch(be){return B()||(Q&&Nm(null),_(!0),ee(!1,!0,!1),K.current=!1,m("Unable to verify your session."),N("auth_session_exception",{error:be instanceof Error?be.message:String(be)})),K.current}finally{V!==null&&typeof window<"u"&&window.clearTimeout(V),B()||(oe.current=Date.now()),ie&&H.current===ie&&(H.current=null)}})(),H.current=ie,ie},[e,t,r,n,s,i,l,c,d,m,f,g,h,y,k,v,A,b,w,P,E,D,j,S,L,_,T,z,Y,H,M,oe,K,Q,ee]),_e=l==="local"&&Q&&t?xw():"";return o.useEffect(()=>{_e&&(h(!0),_(!0),y(_e),ee(!0,!0,!1),K.current=!0)},[_e,_,ee,y,h,K]),o.useEffect(()=>{if(l!=="local"||!t||typeof window>"u")return;const $e=()=>{fe()},Ye=()=>{document.visibilityState==="visible"&&$e()};window.addEventListener("focus",$e),window.addEventListener("online",$e),document.addEventListener("visibilitychange",Ye);const ye=window.setInterval($e,3e4);return()=>{window.removeEventListener("focus",$e),window.removeEventListener("online",$e),document.removeEventListener("visibilitychange",Ye),window.clearInterval(ye)}},[l,t,fe]),{checkAuthSession:fe}}function WN(e){const t=e.runtimeMode==="cloud",r=!!(e.shouldGateProtectedApiCalls&&t&&!e.authSessionResolved),n=!!(e.shouldGateProtectedApiCalls&&t&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:r,shouldBlockProtectedApiCalls:n,canCallProtectedApi:!(r||n)}}function $N(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function FN(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function Nn(){return typeof performance<"u"?performance.now():Date.now()}function UN(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:r,getWorkspaceRequestState:n,isWorkspaceRequestStale:s,isWorkspaceEpochStale:i,isAbortError:l,isBootstrapTimeoutError:c,fetchWithTimeout:d,handleUnauthorized:m,applyBootstrapConfig:f,loadPersistedUiState:g,fetchBuildInfo:h,markBootstrapPhase:y,markBootstrapStalled:k,fetchInitiativeTemplates:v,setReferenceDataLoaded:A,setCustomCategories:b,setCustomTypes:w,setPriorities:P,setTaxonomies:E,setTaxonomyDisplayLabels:D,setConfigLoaded:j,hasLoadedUiStateRef:S,currentWorkspaceIdRef:L,referenceDataRequestRef:_,referenceDataAbortRef:T,bootstrapConfigAbortRef:z,workspaceListAbortRef:Y,assigneeOptionsAbortRef:H,workspaceListHydratedRef:M,setAvailableWorkspaces:oe,runtimeMode:K,applyResolvedWorkspaceId:Q,workspaceSwitchingEnabled:ee,authSessionResolved:fe,isAuthenticated:_e,authUserId:$e,authUserAvatarUrl:Ye,setHydratedWorkspaceRole:ye,setAssigneeOptions:ge,setAssigneeOptionsLoaded:se,commitCurrentWorkspaceId:ie,currentWorkspaceId:me,workspaceSelectionScope:$,abortWorkspaceScopedRequests:V,setWorkspaceBootstrapPending:B,checkAuthSession:N,lastConfigRefreshKeyRef:be,lastAssigneeOptionsLoadKeyRef:Ae,lastWorkspaceSyncStateLoadKeyRef:q,lastTaskSurfaceLoadKeyRef:Z,lastSettingsSurfaceLoadKeyRef:G,isOpen:ne,activeTab:Te,showArchive:Le,taskScope:Ue,settingsSection:st,workspaceBootstrapPending:ft,fetchTasks:xe,fetchPlanningEntities:ke,refreshTaskCollections:ve,loadWorkspaceSyncState:He,switchLocalCoordinatorWorkspace:Ee,hasBootstrappedDataRef:de}=e,x=o.useCallback(async Re=>{const Ce=Re?.ignoreAuthGuard===!0,Pe=Re?.force===!0;if(!Ce&&(t||r)){Cr("bootstrap_reference_data_skipped",{reason:r?"auth_blocked":"auth_deferred",runtimeMode:K,workspaceId:String(n().workspaceId||"").trim()||"default",force:Pe});return}const he=n(),De=String(he.workspaceId||"").trim()||"default";if(!(K!=="cloud"||!fe||!_e||De!==""&&De!=="default")){Cr("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:K,workspaceId:De,force:Pe});return}if(!Pe&&_.current?.workspaceId===he.workspaceId){Cr("bootstrap_reference_data_reused",{workspaceId:De,force:Pe}),await _.current.promise;return}A(!1);const Fe=Nn(),yt=new AbortController;T.current=yt;const Oe=(async()=>{await Promise.allSettled([(async()=>{let mt="empty-taxonomy-state";const vt=await fetch("/api/taskforce/taxonomy-state",{signal:yt.signal});if(!vt.ok)return;const Ve=await vt.json().catch(()=>({}));if(CI(Ve))mt="taxonomy-state";else{mt="fallback-endpoints";const[It,Xe,bt,at]=await Promise.all([fetch("/api/taskforce/categories",{signal:yt.signal}),fetch("/api/taskforce/types",{signal:yt.signal}),fetch("/api/taskforce/priorities",{signal:yt.signal}),fetch("/api/taskforce/taxonomies",{signal:yt.signal})]),[U,pe,Ke,Et]=await Promise.all([It.ok?It.json().catch(()=>({})):Promise.resolve({}),Xe.ok?Xe.json().catch(()=>({})):Promise.resolve({}),bt.ok?bt.json().catch(()=>({})):Promise.resolve({}),at.ok?at.json().catch(()=>({})):Promise.resolve({})]);Ve.categories=U.categories,Ve.types=pe.types,Ve.priorities=Ke.priorities,Ve.taxonomies=Et.taxonomies}const tt=IP(Ve);if(s(he)){Cr("bootstrap_reference_data_stale_drop",{workspaceId:De,source:mt});return}tt.categories.length>0&&b(tt.categories),tt.types.length>0&&w(tt.types),tt.priorities.length>0&&P(tt.priorities),E(tt.taxonomies),D(tt.displayLabels||{}),Cr("bootstrap_reference_data_source",{workspaceId:De,source:mt,categories:tt.categories.length,types:tt.types.length,priorities:tt.priorities.length,taxonomies:tt.taxonomies.length})})(),v()]),!s(he)&&(A(!0),Cr("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(Nn()-Fe)),workspaceId:De,force:Pe}))})();_.current={workspaceId:he.workspaceId,promise:Oe};try{await Oe}finally{_.current?.promise===Oe&&(_.current=null),T.current===yt&&(T.current=null)}},[fe,v,n,_e,s,T,_,K,b,w,P,A,E,D,r,t]),le=o.useCallback(async Re=>{if(!(Re?.ignoreAuthGuard===!0)&&(t||r))return;y("config");const Pe=n(),he=Nn(),De=new AbortController;z.current=De;try{const et=await d("/api/taskforce/config",void 0,Kh(K),{signal:De.signal});if(i(Pe))return;if(et.status===401){m(),j(!0);return}let Fe="";if(et.ok){const yt=await et.json();if(i(Pe))return;Fe=typeof yt?.workspaceId=="string"&&yt.workspaceId.trim().length>0?yt.workspaceId.trim():"",f(yt)}if(i(Pe)){const yt=String(L.current||"default").trim()||"default";if(!Fe||yt!==Fe)return}if(S.current||(S.current=!0,await g(Fe||Pe.workspaceId)),i(Pe)){const yt=String(L.current||"default").trim()||"default";if(!Fe||yt!==Fe)return}j(!0),y("ready"),Cr("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(Nn()-he)),status:et.status,workspaceId:Fe||Pe.workspaceId}),h()}catch(et){if(l(et)||i(Pe))return;S.current||(S.current=!0,await g(Pe.workspaceId)),k(c(et)?"Startup checks timed out.":"Unable to finish startup checks."),j(!0),Cr("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(Nn()-he)),workspaceId:Pe.workspaceId,error:et instanceof Error?et.message:String(et)})}finally{z.current===De&&(z.current=null)}},[f,z,L,h,d,n,m,S,l,c,i,g,y,k,K,j,r,t]),Ie=o.useCallback(async Re=>{await le(Re),await x(Re)},[le,x]),Je=o.useCallback(async()=>{if(!ee)return oe([]),M.current=!1,{success:!0,workspaces:[]};const Re=n(),Ce=Nn(),Pe=new AbortController;Y.current=Pe;try{const he=await d("/api/taskforce/workspaces",{method:"GET",credentials:"include"},Kh(K),{signal:Pe.signal});if(i(Re))return{success:!1,error:"Workspace changed while loading workspaces."};if(he.status===401)return oe([]),M.current=!1,{success:!1,error:"Authentication required."};const De=await he.json().catch(()=>({}));if(i(Re))return{success:!1,error:"Workspace changed while loading workspaces."};if(!he.ok||De?.success===!1)return oe([]),M.current=!1,{success:!1,error:De?.error||`Failed to load workspaces (${he.status})`};const et=Array.isArray(De?.workspaces)?De.workspaces.map(Fe=>({id:String(Fe?.id||"").trim(),name:String(Fe?.name||"").trim(),role:String(Fe?.role||"member").trim().toLowerCase(),slug:typeof Fe?.slug=="string"?Fe.slug:null,description:typeof Fe?.description=="string"?Fe.description:null,status:typeof Fe?.status=="string"?Fe.status:"",betaAccess:Fe?.betaAccess===!0})).filter(Fe=>Fe.id&&Fe.name):[];return oe(et),M.current=!0,K!=="local"&&typeof De?.currentWorkspaceId=="string"&&De.currentWorkspaceId.trim().length>0&&Q(De.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),Cr("bootstrap_workspaces_loaded",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Re.workspaceId,count:et.length,status:he.status}),{success:!0,workspaces:et}}catch(he){return c(he)&&k("Startup checks timed out."),oe([]),M.current=!1,Cr("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Re.workspaceId,error:he instanceof Error?he.message:String(he)}),{success:!1,error:l(he)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{Y.current===Pe&&(Y.current=null)}},[Q,d,n,l,c,i,k,K,oe,Y,M,ee]),J=o.useCallback(async()=>{const Re=n(),Ce=Nn(),Pe=new AbortController;H.current=Pe,se(!1);try{const[he,De]=await Promise.all([d("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},Kh(K),{signal:Pe.signal}),fe&&_e?d("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},Kh(K),{signal:Pe.signal}).catch(()=>null):Promise.resolve(null)]);if(s(Re))return{success:!1,error:"Workspace changed while loading assignee options."};if(he.status===401)return ge(El()),se(!0),{success:!1,error:"Authentication required."};const et=await he.json().catch(()=>({}));if(s(Re))return{success:!1,error:"Workspace changed while loading assignee options."};if(!he.ok)return ge(El()),se(!0),{success:!1,error:et?.error||`Failed to load assignee options (${he.status})`};const Fe=String($e||"").trim(),yt=String(Ye||"").trim(),Oe=(Xe,bt)=>{const at=typeof Xe?.avatarUrl=="string"&&Xe.avatarUrl.trim().length>0?Xe.avatarUrl.trim():"";if(at)return at;const U=String(Xe?.userId||bt||"").trim();return Fe&&U===Fe&&yt?yt:null},mt=Array.isArray(et?.assignees)?et.assignees:[],vt=mt.map(Xe=>{const bt=String(Xe?.value||"").trim(),at=String(Xe?.kind||"").trim().toLowerCase();return bt?at==="agent"||at==="ai"?{value:bt,label:String(Xe?.label||bt).trim()||bt,icon:String(Xe?.icon||"Bot"),color:String(Xe?.color||"#8b5cf6"),kind:"agent",avatarUrl:typeof Xe?.avatarUrl=="string"&&Xe.avatarUrl.trim().length>0?Xe.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(Xe?.avatarRevision))?Math.max(0,Math.floor(Number(Xe.avatarRevision))):null,avatarUpdatedAt:typeof Xe?.avatarUpdatedAt=="string"&&Xe.avatarUpdatedAt.trim().length>0?Xe.avatarUpdatedAt.trim():null,username:typeof Xe?.username=="string"&&Xe.username.trim().length>0?Xe.username.trim():null,surfaceType:typeof Xe?.surfaceType=="string"&&Xe.surfaceType.trim().length>0?Xe.surfaceType.trim():null,providerMetadata:Xe?.providerMetadata&&typeof Xe.providerMetadata=="object"&&!Array.isArray(Xe.providerMetadata)?Xe.providerMetadata:null,archivedAt:typeof Xe?.archivedAt=="string"&&Xe.archivedAt.trim().length>0?Xe.archivedAt.trim():null,createdAt:typeof Xe?.createdAt=="string"&&Xe.createdAt.trim().length>0?Xe.createdAt.trim():null,updatedAt:typeof Xe?.updatedAt=="string"&&Xe.updatedAt.trim().length>0?Xe.updatedAt.trim():null}:at==="member"||at==="human"?{value:bt,label:String(Xe?.label||bt).trim()||bt,icon:String(Xe?.icon||"User"),color:String(Xe?.color||"#22c55e"),kind:"member",avatarUrl:Oe(Xe,bt)}:null:null}).filter(Boolean),Ve=mt.map(Xe=>({userId:String(Xe?.userId||"").trim(),email:String(Xe?.email||"").trim().toLowerCase(),displayName:typeof Xe?.displayName=="string"?Xe.displayName:null,avatarUrl:Oe(Xe)})).filter(Xe=>Xe.userId);let tt=Ve;if(De?.ok){const Xe=await De.json().catch(()=>({})),bt=Array.isArray(Xe?.users)?Xe.users:[],at=bt.find(Ke=>String(Ke?.userId||"").trim()===Fe),U=String(at?.role||"").trim().toLowerCase();U==="owner"||U==="admin"||U==="member"||U==="read-only"?ye(U):!ee&&bt.length===0&&ye(null);const pe=bt.map(Ke=>({userId:String(Ke?.userId||"").trim(),email:String(Ke?.email||"").trim().toLowerCase(),displayName:typeof Ke?.displayName=="string"?Ke.displayName:null,avatarUrl:Oe(Ke)})).filter(Ke=>Ke.userId);tt=Array.from(new Map([...Ve,...pe].map(Ke=>[Ke.userId,Ke])).values())}else!ee&&!Ve.length&&ye(null);const It=sf([...vt,...ER(tt).filter(Xe=>Xe.kind==="member")]);return s(Re)?{success:!1,error:"Workspace changed while loading assignee options."}:(ge(It),se(!0),Cr("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Re.workspaceId,count:It.length}),{success:!0})}catch(he){return s(Re)||(ge(El()),se(!0)),Cr("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Re.workspaceId,error:he instanceof Error?he.message:String(he)}),{success:!1,error:l(he)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{H.current===Pe&&(H.current=null)}},[H,fe,Ye,$e,d,n,l,_e,s,K,ge,se,ye,ee]),Ze=o.useCallback(async(Re,Ce)=>{if(!ee)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Pe=String(Re||"").trim();if(!Pe)return{success:!1,error:"workspaceId is required."};const he=String(L.current||"").trim()||"default",De=Nn();try{Cr("bootstrap_workspace_switch_started",{fromWorkspaceId:he,toWorkspaceId:Pe,hydrate:Ce?.hydrate!==!1});const et=K==="local"?"/api/taskforce/session/workspace?taskforceCloud=1":"/api/taskforce/session/workspace",Fe=await fetch(et,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Pe})}),yt=await Fe.json().catch(()=>({}));if(!Fe.ok||yt?.success===!1)return{success:!1,error:yt?.error||`Failed to switch workspace (${Fe.status})`,code:yt?.code};try{he!=="default"&&await Ee(Pe)}catch(mt){return he&&he!=="default"&&(await fetch(et,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:he})}).catch(()=>null),await N({force:!0}).catch(()=>!1)),{success:!1,error:mt instanceof Error?mt.message:"The local sync coordinator rejected the workspace switch.",code:String(mt?.code||"SYNC_COORDINATOR_WORKSPACE_SWITCH_FAILED")}}ie(Pe,{clearExplicitSelection:!1}),V(),B(!0),y("workspace");const Oe=await N({force:!0});return Ce?.hydrate===!1?await Je():(be.current=`${K}:${Pe}:${$}`,Ae.current=`${K}:${Oe?"auth":"guest"}:${Pe}`,q.current=Pe,ne&&Te==="tasks"&&!(Le||Ue==="archived"||Ue==="deleted")&&(Z.current=`${Pe}:${Te}:active:${Ue}`),ne&&Te==="settings"&&(G.current=`${Pe}:${Te}:${st}`),await Promise.all([Ie(),Je(),ve({isSilent:!1}),He()]),ke({ignoreAuthGuard:!0})),Cr("bootstrap_workspace_switch_completed",{fromWorkspaceId:he,toWorkspaceId:Pe,hydrate:Ce?.hydrate!==!1,durationMs:Math.max(0,Math.round(Nn()-De))}),{success:!0}}catch(et){return Cr("bootstrap_workspace_switch_failed",{fromWorkspaceId:he,toWorkspaceId:Pe,hydrate:Ce?.hydrate!==!1,durationMs:Math.max(0,Math.round(Nn()-De)),error:et instanceof Error?et.message:String(et)}),{success:!1,error:"Failed to switch workspace."}}finally{B(!1)}},[V,Te,N,ie,L,Ie,ke,Je,ne,Ae,be,G,Z,q,He,y,ve,K,st,B,Le,Ee,Ue,$,ee]),te=o.useCallback(async Re=>{y("workspace"),B(!0);try{if(!ee){const Oe=String(me||"").trim()||"default";return ie(Oe),{success:!0,workspaceSetupRequired:!1,workspaceId:Oe}}const Ce=String(Re?.preferredWorkspaceId||"").trim(),Pe=Cv($),he=await Je();if(!he.success)return{success:!1,workspaceSetupRequired:!1,error:he.error||"Failed to load workspaces after authentication."};const De=Array.isArray(he.workspaces)?he.workspaces:[];if(De.length===0)return ie("default"),{success:!0,workspaceSetupRequired:!0};const et=new Set(De.map(Oe=>String(Oe.id||"").trim()).filter(Boolean)),Fe=String(L.current||"").trim(),yt=(Ce&&et.has(Ce)?Ce:"")||(Fe&&et.has(Fe)?Fe:"")||(Pe&&et.has(Pe)?Pe:"")||String(De[0]?.id||"").trim();if(!yt)return ie("default"),{success:!0,workspaceSetupRequired:!0};if(Fe!==yt){const Oe=await Ze(yt,{hydrate:!1});if(!Oe.success)return{success:!1,workspaceSetupRequired:!1,error:Oe.error||"Failed to set workspace after authentication.",code:Oe.code}}else ie(yt);return{success:!0,workspaceSetupRequired:!1,workspaceId:yt}}catch{return k("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{B(!1)}},[ie,me,L,Je,y,k,B,Ze,$,ee]),Ne=o.useCallback(async()=>{y("auth");const Re=Nn();Cr("bootstrap_retry_started",{workspaceId:String(L.current||"default").trim()||"default"});const Ce=await N({force:!0});let Pe=!1;if(ee&&Ce){const he=await te();if(!he.success||he.workspaceSetupRequired){await Ie({ignoreAuthGuard:!0}),Cr("bootstrap_retry_completed",{workspaceId:String(L.current||"default").trim()||"default",authenticated:Ce,workspaceSetupRequired:he.workspaceSetupRequired===!0,success:he.success,durationMs:Math.max(0,Math.round(Nn()-Re))});return}}B(!0);try{await Ie({ignoreAuthGuard:!0}),Ce&&!Pe&&(await Promise.all([xe(!0,{ignoreAuthGuard:!0}),x({ignoreAuthGuard:!0,force:!0})]),ke({ignoreAuthGuard:!0})),Cr("bootstrap_retry_completed",{workspaceId:String(L.current||"default").trim()||"default",authenticated:Ce,workspaceSetupRequired:Pe,success:!0,durationMs:Math.max(0,Math.round(Nn()-Re))})}finally{B(!1)}},[N,L,Ie,ke,x,xe,y,te,B,ee]),je=o.useCallback(async Re=>{const Ce=Re?.reason||"initial-load",Pe=Re?.ignoreAuthGuard===!0,he=Re?.tasksSilent!==!1,De=Nn();if(y("auth"),!await N({force:!0}))return await Ie({ignoreAuthGuard:!0}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-De)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(ee){const Fe=await te();if(!Fe.success)return await Ie({ignoreAuthGuard:!0}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-De)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:Fe.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:Fe.error||"Unable to resolve workspace access.",code:Fe.code};if(Fe.workspaceSetupRequired)return await Ie({ignoreAuthGuard:!0}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-De)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}B(!0);try{await le({ignoreAuthGuard:Pe});const Fe=String(L.current||"default").trim()||"default",yt=Nn();return xe(he,{ignoreAuthGuard:Pe}).then(()=>{Cr("cloud_bootstrap_tasks_loaded_deferred",{reason:Ce,workspaceId:Fe,durationMs:Math.max(0,Math.round(Nn()-yt))})}).catch(Oe=>{Cr("cloud_bootstrap_tasks_deferred_failed",{reason:Ce,workspaceId:Fe,error:Oe instanceof Error?Oe.message:String(Oe)})}),x({ignoreAuthGuard:Pe}).then(()=>{Cr("cloud_bootstrap_reference_data_loaded_deferred",{reason:Ce,workspaceId:Fe,durationMs:Math.max(0,Math.round(Nn()-yt))})}).catch(Oe=>{Cr("cloud_bootstrap_reference_data_deferred_failed",{reason:Ce,workspaceId:Fe,error:Oe instanceof Error?Oe.message:String(Oe)})}),ke({ignoreAuthGuard:Pe}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-De)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:Fe}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{B(!1)}},[N,L,le,ke,x,xe,y,te,B,ee]);return o.useEffect(()=>{!t&&!r&&!de.current&&(de.current=!0,(async()=>{const Re=Nn();if(K==="cloud"&&fe&&_e){const Ce=await je({reason:"initial-load",tasksSilent:!1});if(!Ce.success||Ce.workspaceSetupRequired)return}else await le(),await Promise.all([xe(!1),x()]),ke();Cr("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(Nn()-Re)),runtimeMode:K,workspaceId:String(L.current||"default").trim()||"default"})})())},[fe,L,le,ke,x,xe,de,_e,je,K,r,t]),o.useEffect(()=>{if(t||r||ft||$==="bootstrap"||!de.current)return;const Re=`${K}:${me}:${$}`;be.current!==Re&&(be.current=Re,Ie())},[me,Ie,de,be,K,r,t,ft,$]),o.useEffect(()=>{if(t||r||ft)return;const Re=me;q.current!==Re&&(q.current=Re,He())},[me,q,He,r,t,ft]),o.useEffect(()=>{if(K!=="cloud"||!fe||!_e){K!=="cloud"&&oe([]),M.current=!1;return}ft||!de.current||M.current||Je()},[fe,Je,de,_e,K,oe,ft,M]),{fetchReferenceData:x,fetchBootstrapConfig:le,fetchConfig:Ie,fetchWorkspaces:Je,fetchAssigneeOptions:J,switchWorkspace:Ze,resolveWorkspaceAfterAuth:te,retryBootstrapChecks:Ne,runCloudBootstrap:je}}function zN(e){const{runtimeMode:t,workspaceUiStateScope:r,currentWorkspaceId:n,currentWorkspaceIdRef:s,referenceDataLoaded:i,activeCategories:l,activeTypes:c,priorities:d,taxonomies:m,activeWorkspaceModule:f,setActiveWorkspaceModuleState:g,groupBy:h,setGroupBy:y,emptyColumnMode:k,setEmptyColumnMode:v,taskScope:A,setTaskScope:b,openTaskId:w,setPendingOpenTaskId:P,compressedCards:E,setCompressedCards:D,zenMode:j,setZenModeState:S,searchQuery:L,setSearchQuery:_,collapsedCategories:T,setCollapsedCategories:z,filterCategories:Y,setFilterCategories:H,filterPriorities:M,setFilterPriorities:oe,filterTypes:K,setFilterTypes:Q,filterStatus:ee,setFilterStatus:fe,filterAssignees:_e,setFilterAssignees:$e,filterAssigneesAllSelected:Ye,setFilterAssigneesAllSelected:ye,filterTaxonomies:ge,setFilterTaxonomies:se,sortBy:ie,setSortBy:me,sortOrder:$,setSortOrder:V,hasInitedFilters:B,setHasInitedFilters:N,lastUsedCategory:be,setLastUsedCategory:Ae,taskforceAgentId:q,setTaskforceAgentId:Z,taskforceAgentConversationId:G,setTaskforceAgentConversationId:ne,taskforceAgentConversationByAgentId:Te,setTaskforceAgentConversationByAgentId:Le}=e,Ue=o.useRef(!1),st=o.useRef(""),ft=o.useRef(!1),xe=o.useRef(!1),ke=o.useRef(null),[ve,He]=o.useState(!1),Ee=o.useMemo(()=>i?WR({categories:l,types:c,priorities:d,taxonomies:m}):null,[l,c,d,i,m]),de=o.useCallback(J=>{ve||(xe.current=!0),g(J)},[g,ve]),x=o.useCallback((J,Ze)=>{if(!J){ke.current=null,Z(""),ne(""),Le({}),P(null);return}const te=Array.isArray(J.filterCategories)||Array.isArray(J.filterPriorities)||Array.isArray(J.filterTypes)||J.filterTaxonomies&&typeof J.filterTaxonomies=="object";te||(ke.current=null);const Ne=Array.isArray(J.filterCategories)||Array.isArray(J.filterPriorities)||Array.isArray(J.filterTypes)||Array.isArray(J.filterStatus)||Array.isArray(J.filterAssignees)||typeof J.filterAssigneesAllSelected=="boolean"||J.filterTaxonomies&&typeof J.filterTaxonomies=="object",je=i,Re=!!(J.filterTaxonomySignature&&Ee);te&&!je&&(ke.current={state:J,skipActiveWorkspaceModule:Ze?.skipActiveWorkspaceModule});const Ce=te&&je&&(!Re||$R(J.filterTaxonomySignature,Ee)),Pe=te&&Re&&!Ce,he=!te||Ce||Pe;if(Ze?.skipActiveWorkspaceModule||(J.activeWorkspaceModule?g(J.activeWorkspaceModule):J.groupBy==="docs"&&g("docs")),J.groupBy&&J.groupBy!=="docs"&&y(J.groupBy),J.emptyColumnMode&&v(J.emptyColumnMode),J.taskScope&&b(J.taskScope),(typeof J.openTaskId=="string"||J.openTaskId===null)&&P(J.openTaskId),typeof J.compressedCards=="boolean"&&D(J.compressedCards),typeof J.zenMode=="boolean"&&S(J.zenMode),typeof J.searchQuery=="string"&&_(J.searchQuery),J.collapsedCategories&&typeof J.collapsedCategories=="object"&&z(J.collapsedCategories),Ce?(H(Array.isArray(J.filterCategories)?J.filterCategories:l.map(De=>De.value)),oe(Array.isArray(J.filterPriorities)?J.filterPriorities:d.map(De=>De.value)),Q(Array.isArray(J.filterTypes)?J.filterTypes:c.map(De=>De.value)),J.filterTaxonomies&&typeof J.filterTaxonomies=="object"&&se(J.filterTaxonomies)):Pe&&(H(l.map(De=>De.value)),oe(d.map(De=>De.value)),Q(c.map(De=>De.value)),se({})),Array.isArray(J.filterStatus)&&fe(J.filterStatus),Array.isArray(J.filterAssignees)){const De=J.filterAssigneesAllSelected===!0&&!J.filterAssignees.includes("unassigned")?["unassigned",...J.filterAssignees]:J.filterAssignees;$e(De)}typeof J.filterAssigneesAllSelected=="boolean"&&ye(J.filterAssigneesAllSelected),(J.sortBy==="created"||J.sortBy==="priority"||J.sortBy==="updated"||J.sortBy==="complexity")&&me(J.sortBy),(J.sortOrder==="asc"||J.sortOrder==="desc")&&V(J.sortOrder),Pe?N(!0):typeof J.hasInitedFilters=="boolean"&&he?N(J.hasInitedFilters):Ne&&he&&N(!0),typeof J.lastCategory=="string"&&Ae(J.lastCategory),Z(typeof J.taskforceAgentId=="string"?J.taskforceAgentId.trim():""),ne(typeof J.taskforceAgentConversationId=="string"?J.taskforceAgentConversationId.trim():""),Le(J.taskforceAgentConversationByAgentId||{})},[l,c,Ee,d,i,g,z,D,v,$e,ye,H,oe,fe,se,Q,y,N,Ae,_,me,V,b,P,Le,ne,Z,S]);o.useEffect(()=>{if(!i||!ke.current)return;const J=ke.current;ke.current=null,x(J.state,{skipActiveWorkspaceModule:J.skipActiveWorkspaceModule})},[x,i]);const le=o.useRef(x);o.useEffect(()=>{le.current=x},[x]);const Ie=o.useCallback(async J=>{const Ze=String(J||s.current||n||"default").trim()||"default",te=`${t}:${r}:${Ze}`;try{const Ne=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(Ze)}`,{method:"GET",credentials:"include"}),je=Ne.ok?await Ne.json().catch(()=>({})):{},Re=$C(je?.state),Ce=eS(r),Pe=Re||Ce?{...Ce||{},...Re||{},version:Sv}:null;if(s.current!==Ze)return;le.current(Pe,{skipActiveWorkspaceModule:xe.current}),st.current=te}catch{const Ne=eS(r);s.current===Ze&&(le.current(Ne,{skipActiveWorkspaceModule:xe.current}),st.current=te)}finally{if(s.current!==Ze)return;xe.current=!1,ft.current=!0,He(!0)}},[n,s,t,r]);o.useEffect(()=>{const J=`${t}:${r}:${n}`;Ue.current&&st.current!==J&&(He(!1),Ie(n))},[n,Ie,t,r]),o.useEffect(()=>{if(!ve)return;if(ft.current){ft.current=!1;return}const J={version:Sv,groupBy:h,activeWorkspaceModule:f,emptyColumnMode:k,taskScope:A,openTaskId:w||null,compressedCards:E,zenMode:j,searchQuery:L,collapsedCategories:T,filterCategories:Y,filterPriorities:M,filterTypes:K,filterStatus:ee,filterAssignees:_e,filterAssigneesAllSelected:Ye,filterTaxonomies:ge,...Ee?{filterTaxonomySignature:Ee}:{},sortBy:ie,sortOrder:$,hasInitedFilters:B,lastCategory:be||"",taskforceAgentId:q,taskforceAgentConversationId:G,taskforceAgentConversationByAgentId:Te};HR(J,r);const Ze=window.setTimeout(async()=>{try{await Hm({stateKey:"app",workspaceId:s.current,patch:J})}catch{}},250);return()=>window.clearTimeout(Ze)},[f,T,E,Ee,s,k,_e,Ye,Y,M,ee,ge,K,h,B,be,w,L,ie,$,A,Te,G,q,ve,r,j]);const Je=o.useCallback(J=>{st.current="",ke.current=null,xe.current=!1,ft.current=!1,J?.clearLoaded&&(Ue.current=!1),He(!1)},[]);return{hasLoadedUiStateRef:Ue,loadPersistedUiState:Ie,resetPersistedUiStateLoad:Je,setActiveWorkspaceModule:de,uiStateReady:ve}}const HN="taskforce:workspace-resources-invalidated";function e_(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(HN,{detail:e}))}function VN({workspaceId:e,isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i,shouldGateProtectedApiCalls:l,authSessionResolvedRef:c,authRequiredForApiRef:d,isAuthenticatedRef:m,dataVersionRef:f,refreshTaskCollectionsForDataVersion:g,coordinatorDataVersion:h=null}){const y=o.useRef(g);y.current=g;const k=o.useRef({scopeKey:null,workspaceId:"",scopeEpoch:0,renderedVersion:null,pendingVersion:null,sourceVersions:new Map,inFlight:null}),v=o.useRef(!0);o.useEffect(()=>(v.current=!0,()=>{v.current=!1}),[]);const A=!!(h&&Number.isSafeInteger(h.coordinatorGeneration)&&h.coordinatorGeneration>0&&Number.isSafeInteger(h.localDataVersion)&&h.localDataVersion>=0),b=()=>{const P=k.current;if(!v.current||P.inFlight||P.pendingVersion===null||typeof document>"u"||document.visibilityState!=="visible")return;const E=P.pendingVersion;if(P.renderedVersion!==null&&E<=P.renderedVersion)return;const D=P.scopeKey,j=P.scopeEpoch;let S=!1,L=!1;const _=y.current().then(()=>{if(!v.current||k.current.scopeKey!==D||k.current.scopeEpoch!==j){L=!0;return}S=!0,k.current.renderedVersion=E,f.current=E,e_({workspaceId:k.current.workspaceId,source:"data-version",dataVersion:E})}).catch(()=>{}).finally(()=>{k.current.inFlight===_&&(k.current.inFlight=null),(S||L)&&b()});P.inFlight=_},w=(P,E,D)=>{if(!Number.isSafeInteger(E)||E<0)return;const j=k.current,S=e;j.scopeKey!==S&&(j.scopeKey=S,j.workspaceId=e,j.scopeEpoch+=1,j.renderedVersion=null,j.pendingVersion=null,j.sourceVersions=new Map,f.current=null);const L=j.sourceVersions.get(P);if(L!==void 0&&(D.monotonic?E<=L:E===L)){b();return}if(j.sourceVersions.set(P,E),D.establishBaseline&&L===void 0){j.renderedVersion===null&&j.pendingVersion===null&&!j.inFlight&&(j.renderedVersion=E,j.pendingVersion=E,f.current=E);return}const _=Math.max(j.renderedVersion??0,j.pendingVersion??0);j.pendingVersion=_===0?E:Math.max(_+1,E),b()};o.useEffect(()=>{!A||!h||w(`${e}:coordinator:${h.coordinatorGeneration}`,h.localDataVersion,{monotonic:!0,establishBaseline:!1})},[h,A,e]),o.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||$N({isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i}))return;let P=!1;const E=async()=>{if(!(P||document.visibilityState!=="visible")&&!FN({shouldGateProtectedApiCalls:l,authSessionResolved:c.current,authRequiredForApi:d.current,isAuthenticated:m.current}))try{const _=await fetch("/api/taskforce/data-version");if(!_.ok)return;const T=await _.json(),z=Number(T?.dataVersion);if(P)return;w(`${e}:legacy`,z,{monotonic:!1,establishBaseline:!0})}catch{}},D=()=>{document.visibilityState==="visible"&&E()},j=()=>{E()},S=()=>{E()},L=window.setInterval(()=>{E()},3e3);return document.addEventListener("visibilitychange",D),window.addEventListener("focus",j),window.addEventListener("online",S),E(),()=>{P=!0,window.clearInterval(L),document.removeEventListener("visibilitychange",D),window.removeEventListener("focus",j),window.removeEventListener("online",S)}},[t,e,r,n,s,i,l,c,d,m,f])}const GN="/api/taskforce/sync/v3/local/operations",KN="/api/taskforce/sync/v3/local/dispatch";function wg(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}async function VS(e,t,r){const n=await e(t,{method:"POST",credentials:"include",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r)});let s;try{s=JSON.parse(await n.text())}catch{s=null}return{response:n,body:wg(s)}}function Ga(e,t){const r=String(e||"").trim();if(!r||r.length>200)throw new Error(`${t} is invalid.`);return r}function qN(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure operation ID generation is unavailable.");return globalThis.crypto.randomUUID()}function YN(e){return e===400||e===401||e===403||e===404||e===405||e===409||e===413||e===422||e===429}function mf(e={}){const t=e.identityStore||new qw,r=e.fetchImpl||fetch,n=e.createOperationId||qN,s=e.fingerprint||Yw;return{async execute(i){const l=Ga(i.workspaceId,"workspaceId");let c,d,m,f;try{i.preparedIdentity?(c=i.preparedIdentity.key,d={operationId:i.preparedIdentity.operationId,created:i.preparedIdentity.created},m=i.preparedIdentity.abandonIfMatches,f=i.preparedIdentity.markCaptureConfirmed):(c=await s(i.fingerprintValue),d=await t.getOrCreate(c,n),m=(S,L)=>t.deleteIfMatches(S,L),f=m)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const g=Ga(d.operationId,"operationId"),h=i.buildOperation(g),y=Ga(h.entityId,"entityId");let k;try{k=await VS(r,GN,{contractVersion:3,workspaceId:l,operationId:g,operation:h})}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g}}if(k.response.status===404&&k.body?.success===!1&&typeof k.body.code=="string"&&i.disabledCodes.has(k.body.code))return d.created?(await m(c,g),{state:"disabled",fallbackEligible:!0,operationId:g}):{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:k.body.code};const v=wg(k.body?.task),A=wg(k.body?.deleted),b=typeof k.body?.clientId=="string"?k.body.clientId.trim():"";if(!k.response.ok||k.body?.success!==!0||k.body.contractVersion!==3||k.body.state!=="pending"||k.body.workspaceId!==l||k.body.operationId!==g||!b||(h.mutationKind==="delete"?!A||A.taskId!==y:!v||v.id!==y)){if(!k.response.ok&&YN(k.response.status)){try{await m(c,g)}catch{}return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:g,retryable:k.response.status===429,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}try{await f(c,g)}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:"LOCAL_OPERATION_IDENTITY_CLEANUP_FAILED"}}const w=h.mutationKind==="delete"?{deleted:A}:{task:v};if(!i.isAuthenticated)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"auth"};if(i.dispatchEnabled===!1)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"sync-disabled"};let P;try{P=await VS(r,KN,{workspaceId:l,limit:1})}catch{return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"}}if(!P.response.ok)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:P.response.status===401?"auth":"retry",errorCode:typeof P.body?.code=="string"?P.body.code:void 0};if(P.body?.success!==!0||!Array.isArray(P.body.outcomes))return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"};const E=P.body.outcomes.map(wg).find(S=>S?.clientId===b&&S?.operationId===g);if(!E)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"queued"};const D=E.disposition;if(D!=="accepted"&&D!=="retry"&&D!=="blocked"&&D!=="lease-lost")return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"};const j=typeof E.errorCode=="string"?E.errorCode:void 0;return D==="accepted"?{state:"accepted",fallbackEligible:!1,operationId:g,...w,dispatchDisposition:D}:{state:D==="blocked"?"blocked":"pending",fallbackEligible:!1,operationId:g,...w,dispatchDisposition:D,pendingReason:D==="retry"||D==="lease-lost"?j==="WORKSPACE_SYNC_TRANSPORT_401"?"auth":"retry":void 0,errorCode:j}}}}const ZN=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED"]);function JN(e={}){const t=mf(e);return{async update(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=QI(r.patch),l={domain:"task",entityId:s,mutationKind:"metadata-update",payload:{patch:i,...r.saveSource?{saveSource:r.saveSource}:{},...r.expectedDetailRevision?{expectedDetailRevision:r.expectedDetailRevision}:{}}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:l},buildOperation:()=>l,disabledCodes:ZN,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}const XN=new Set(["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function QN(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=Object.keys(e);return t.length>0&&t.every(r=>XN.has(r))}function eD(e){const t=o.useRef(null);return o.useCallback(async(r,n,s)=>{if(!e.enabled||!QN(n))return null;const i=String(e.workspaceId||"").trim(),l=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l?null:(t.current||(t.current=e.client||JN()),t.current.update({workspaceId:i,entityId:l,patch:n,...s?.saveSource?{saveSource:s.saveSource}:{},...s?.expectedDetailRevision?{expectedDetailRevision:s.expectedDetailRevision}:{},isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const tD=new Set(["title","description","priority","complexity","type","category","assignee","status","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"]),rD=new Set(["task","on-hold","in-progress","review","done","cancelled"]);class qh extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskCreateMutationError"}}function nD(e){if(!e||typeof e!="object"||Array.isArray(e))throw new qh("Task create input must be an object.","TASK_CREATE_INVALID",400);const t=e;for(const n of Object.keys(t))if(!tD.has(n))throw new qh(`Task create field is not supported by this contract: ${n}`,"TASK_CREATE_INVALID",400);const r=typeof t.title=="string"?t.title.trim():"";if(!r)throw new qh("Task title is required.","TASK_CREATE_INVALID",400);if(t.status!==void 0&&!rD.has(t.status))throw new qh(`Task create status is not supported by this contract: ${String(t.status)}`,"TASK_CREATE_INVALID",400);return{...t,title:r}}const aD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_CREATE_CAPTURE_DISABLED"]),sD="/api/taskforce/sync/v3/local/operations";function qu(e){return JSON.parse(Qc(nD(e)))}function Yh(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local task create input must be an object.");const r=e,{attachments:n=[],checklistItems:s=[],comments:i=[],...l}=r;if(!Array.isArray(n)||!Array.isArray(s)||!Array.isArray(i))throw new Error("Local task create carriers must be arrays.");const c=qu(l);if(Qc(c)!==Qc(t))throw new Error("Local task create root does not match its durable task.");return JSON.parse(Qc({...c,attachments:n,checklistItems:s,comments:i}))}function GS(e={}){const t=mf(e),r=e.attemptStore||new XI,n=e.fetchImpl||globalThis.fetch,s=async(l,c)=>{let d,m;try{d=await n(`${sD}?workspaceId=${encodeURIComponent(l)}&operationId=${encodeURIComponent(c)}`,{method:"GET",headers:{Accept:"application/json"}}),m=await d.json()}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c}}if(d.status===404&&m?.success===!1&&m?.code==="WORKSPACE_SYNC_LOCAL_OPERATION_NOT_FOUND")return null;const f=m?.operation,g=f?.payload?.task,h=f?.payload?.localCarriers;if(!d.ok||m?.success!==!0||m?.contractVersion!==3||m?.workspaceId!==l||m?.operationId!==c||f?.domain!=="task"||f?.entityId!==`task-${c}`||f?.mutationKind!=="create")return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c,errorCode:typeof m?.code=="string"?m.code:void 0};try{const y=qu(g);return{workspaceId:l,operationId:c,task:Yh({...y,...h&&typeof h=="object"?h:{}},y)}}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c,errorCode:"WORKSPACE_SYNC_LOCAL_REPLAY_INVALID"}}},i=async(l,c,d,m)=>{const f=await t.execute({workspaceId:l.workspaceId,preparedIdentity:{key:l.workspaceId,operationId:l.operationId,created:!1,abandonIfMatches:(g,h)=>r.abandonIfMatches(g,h),markCaptureConfirmed:(g,h)=>r.markResolved(g,h)},buildOperation:()=>{const{attachments:g,checklistItems:h,comments:y,...k}=l.task;return{domain:"task",entityId:`task-${l.operationId}`,mutationKind:"create",payload:{task:qu(k),localCarriers:{attachments:g,checklistItems:h,comments:y}}}},disabledCodes:aD,isAuthenticated:c,dispatchEnabled:d});return m&&(f.state==="accepted"||f.state==="pending"||f.state==="blocked")?{...f,recoveredChangedInput:!0}:f};return{async recoverPending(l){const c=Ga(l.workspaceId,"workspaceId");let d;try{d=await r.listPending(c)}catch{return[]}const m=[];for(const f of d)m.push(await i(f,l.isAuthenticated,l.dispatchEnabled,!1));return m},async create(l){const c=Ga(l.workspaceId,"workspaceId"),d=qu(l.task),m=Yh(l.localTask||{...d,attachments:[],checklistItems:[],comments:[]},d),f=Ga(l.participantId,"participantId"),g=await s(c,f);if(g&&"state"in g)return g;if(g){const k=Qc(g.task)!==Qc(m);return i({...g},l.isAuthenticated,l.dispatchEnabled,k)}let h;try{h=await r.claim(c,f,m,()=>f)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}try{const{attachments:k,checklistItems:v,comments:A,...b}=h.task;h={...h,task:Yh({...b,attachments:k,checklistItems:v,comments:A},qu(b))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const y=!h.created&&Qc(h.task)!==Qc(m);return i(h,l.isAuthenticated,l.dispatchEnabled,y)},async resumePending(l){const c=Ga(l.workspaceId,"workspaceId"),d=Ga(l.participantId,"participantId"),m=await s(c,d);if(m&&"state"in m)return m;if(m)return i({...m},l.isAuthenticated,l.dispatchEnabled,!0);let f;try{f=await r.getForParticipant(c,d)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}if(!f)return null;try{const{attachments:g,checklistItems:h,comments:y,...k}=f.task;f={...f,task:Yh({...k,attachments:g,checklistItems:h,comments:y},qu(k))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}return i(f,l.isAuthenticated,l.dispatchEnabled,!0)}}}const t_=["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"],oD=new Set([...t_,"status","completedAt","workstreamId","checklistItems","comments","attachments","createdAt","createdBy"]);function iD(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e;if(Object.keys(t).some(s=>!oD.has(s))||t.status!=="task"||t.completedAt!==null||!Array.isArray(t.checklistItems)||!Array.isArray(t.comments)||!Array.isArray(t.attachments)||t.createdBy!=="user")return null;const r=String(t.createdAt||"").trim();if(!Number.isFinite(Date.parse(r))||new Date(r).toISOString()!==r)return null;const n={};for(const s of t_)Object.prototype.hasOwnProperty.call(t,s)&&(n[s]=t[s]);return{task:n,localTask:{...n,checklistItems:t.checklistItems,comments:t.comments,attachments:t.attachments}}}function Hv(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task-create participant ID generation is unavailable.");return globalThis.crypto.randomUUID()}function r_(e){return`taskforce.sync.v3.task-create-participant-v2:${e}`}function Vv(e,t){globalThis.sessionStorage?.setItem(r_(e),JSON.stringify(t))}function cD(e){const t=r_(e),r=globalThis.sessionStorage?.getItem(t)?.trim();if(r)try{const s=JSON.parse(r);if(typeof s.participantId=="string"&&s.participantId.trim())return{participantId:s.participantId.trim(),draftFingerprint:typeof s.draftFingerprint=="string"?s.draftFingerprint:null}}catch{}const n={participantId:Hv(),draftFingerprint:null};return Vv(e,n),n}async function lD(e){let t=cD(e);return{get participantId(){return t.participantId},prepareForDraft(r){return t.draftFingerprint&&t.draftFingerprint!==r?t={participantId:Hv(),draftFingerprint:r}:t={...t,draftFingerprint:r},Vv(e,t),t.participantId},rotate(){return t={participantId:Hv(),draftFingerprint:null},Vv(e,t),t.participantId},close(){}}}async function dD(e){const{createdAt:t,updatedAt:r,...n}=e;return Yw(n)}function uD(e){const t=o.useRef(null),r=o.useRef(null),n=o.useCallback(i=>(r.current?.workspaceId!==i&&(r.current?.promise.then(l=>l.close()),r.current={workspaceId:i,promise:lD(i)}),r.current.promise),[]);o.useEffect(()=>{if(!e.localRuntime)return;const i=String(e.workspaceId||"").trim();return i&&i.toLowerCase()!=="default"&&(n(i),e.enabled&&(t.current||(t.current=e.client||GS()),typeof t.current.recoverPending=="function"&&t.current.recoverPending({workspaceId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))),()=>{const l=r.current;r.current=null,l?.promise.then(c=>c.close())}},[n,e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.localRuntime,e.workspaceId]);const s=o.useCallback(async i=>{if(!e.localRuntime)return null;const l=String(e.workspaceId||"").trim();if(!l||l.toLowerCase()==="default")return null;t.current||(t.current=e.client||GS());const c=await n(l),d=iD(i),m=e.enabled&&d?c.prepareForDraft(await dD(d.localTask)):c.participantId;let f;if(!e.enabled||!d){if(f=await t.current.resumePending({workspaceId:l,participantId:m,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}),!f&&!e.enabled)return null;if(!f&&e.enabled&&!d)return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:m,retryable:!1,errorCode:"TASK_CREATE_UNSUPPORTED_INPUT"}}else f=await t.current.create({workspaceId:l,participantId:m,task:d.task,localTask:d.localTask,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled});return f?((f.state==="accepted"||f.state==="pending"||f.state==="blocked")&&c.rotate(),f):null},[n,e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.localRuntime,e.workspaceId]);return s.resetDraft=()=>{const i=String(e.workspaceId||"").trim();!i||i.toLowerCase()==="default"||n(i).then(l=>l.rotate())},s}const KS=["task","on-hold","in-progress","review","done","cancelled"];class fD extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskStatusMutationError"}}const qS=2e3;function Ms(e){throw new fD(e,"TASK_STATUS_INVALID_PAYLOAD",400)}function mD(e){return typeof e!="string"||!KS.includes(e)?Ms(`Task status must be one of: ${KS.join(", ")}.`):e}function pD(e,t){if(e!==null&&typeof e!="string")return Ms("Task cancellation reason must be a string or null.");const r=typeof e=="string"?e.trim():null;return r!==null&&(r.length===0||r.length>qS)?Ms(`Task cancellation reason must contain 1-${qS} characters.`):t!=="cancelled"&&r!==null?Ms("Task cancellation reason must be null unless status is cancelled."):r}function hD(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0)return{};let t;try{t=QI(e)}catch(r){if(r instanceof vg)return Ms(r.message);throw r}return Object.prototype.hasOwnProperty.call(t,"assignee")?Ms("Task status metadataPatch cannot contain assignee; use assigneeIntent."):t}function gD(e,t){if(!e||typeof e!="object"||Array.isArray(e))return Ms("Task status assigneeIntent must be an object.");const r=e;return r.kind==="preserve"?Object.keys(r).length!==1?Ms("Preserve assignee intent must contain exactly kind."):{kind:"preserve"}:r.kind==="set"?Object.keys(r).sort().join(",")!=="kind,value"?Ms("Set assignee intent must contain exactly kind and value."):r.value!==null&&typeof r.value!="string"?Ms("Set assignee intent value must be a string or null."):{kind:"set",value:(typeof r.value=="string"?r.value.trim():"")||null}:r.kind==="claim-if-unassigned"?Object.keys(r).sort().join(",")!=="kind,value"?Ms("Claim-if-unassigned intent must contain exactly kind and value."):t!=="in-progress"?Ms("Claim-if-unassigned is valid only when status is in-progress."):typeof r.value!="string"||!r.value.trim()?Ms("Claim-if-unassigned value must be a nonblank string."):{kind:"claim-if-unassigned",value:r.value.trim()}:Ms("Task status assigneeIntent kind is invalid.")}function yD(e){if(!e||typeof e!="object"||Array.isArray(e))return Ms("Task status payload must be an object.");const t=e;if(Object.keys(t).sort().join(",")!=="assigneeIntent,canceledReason,metadataPatch,status")return Ms("Task status payload must contain exactly status, assigneeIntent, canceledReason, and metadataPatch.");const r=mD(t.status);return{status:r,assigneeIntent:gD(t.assigneeIntent,r),canceledReason:pD(t.canceledReason,r),metadataPatch:hD(t.metadataPatch)}}const kD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_STATUS_CAPTURE_DISABLED"]);function vD(e={}){const t=mf(e);return{async setStatus(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=yD({status:r.status,assigneeIntent:r.assigneeIntent,canceledReason:r.canceledReason,metadataPatch:r.metadataPatch??{}}),l={domain:"task",entityId:s,mutationKind:"set-status",payload:{...i,...r.expectedDetailRevision?{expectedDetailRevision:r.expectedDetailRevision}:{}}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:l},buildOperation:()=>l,disabledCodes:kD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function wD(e){const t=o.useRef(null);return o.useCallback(async(r,n)=>{if(!e.enabled)return null;const s=String(e.workspaceId||"").trim(),i=String(r||"").trim();return!s||s.toLowerCase()==="default"||!i?null:(t.current||(t.current=e.client||vD()),t.current.setStatus({workspaceId:s,entityId:i,...n,metadataPatch:n.metadataPatch,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}class Uu extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskLifecycleMutationError"}}const YS=2e3;function ZS(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Uu("Task lifecycle payload must be an object.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const r=t,n=Object.keys(r).sort();if(e==="unarchive"){if(n.length!==0)throw new Uu("Unarchive payload must be empty.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:!1,reason:null}}if(n.length!==2||n[0]!=="cancellation"||n[1]!=="reason"||typeof r.cancellation!="boolean")throw new Uu("Archive payload must contain exactly cancellation and reason.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(r.reason!==null&&typeof r.reason!="string")throw new Uu("Archive reason must be a string or null.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const s=typeof r.reason=="string"?r.reason.trim():null;if(s!==null&&(s.length===0||s.length>YS))throw new Uu(`Archive reason must contain 1-${YS} characters.`,"TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(!r.cancellation&&s!==null)throw new Uu("Archive reason must be null when cancellation is false.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:r.cancellation,reason:s}}class Zh extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskWorkflowMutationError"}}function JS(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Zh("Task workflow payload must be an object.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const r=t,n=Object.keys(r).sort();if(e==="complete"){if(n.length!==0)throw new Zh("Complete payload must be empty.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:null}}if(n.length!==1||n[0]!=="assignee"||r.assignee!==null&&typeof r.assignee!="string")throw new Zh("Reopen payload must contain exactly assignee as a string or null.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const s=typeof r.assignee=="string"?r.assignee.trim():null;if(typeof r.assignee=="string"&&!s)throw new Zh("Reopen assignee cannot be blank.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:s}}const bD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_LIFECYCLE_CAPTURE_DISABLED"]);function SD(e){return e.mutationKind==="archive"?ZS("archive",{cancellation:e.cancellation,reason:e.reason}):e.mutationKind==="unarchive"?(ZS("unarchive",{}),{}):e.mutationKind==="complete"?(JS("complete",{}),{}):JS("reopen",{assignee:e.assignee})}function AD(e={}){const t=mf(e),r=async n=>{const s=Ga(n.workspaceId,"workspaceId"),i=Ga(n.entityId,"entityId"),l=SD(n),c=n.mutationKind,d={domain:"task",entityId:i,mutationKind:c,payload:l};return t.execute({workspaceId:s,fingerprintValue:{contractVersion:3,workspaceId:s,operation:d},buildOperation:()=>d,disabledCodes:bD,isAuthenticated:n.isAuthenticated,dispatchEnabled:n.dispatchEnabled})};return{mutate:r,archive(n){return r({...n,mutationKind:"archive"})},unarchive(n){return r({...n,mutationKind:"unarchive"})},complete(n){return r({...n,mutationKind:"complete"})},reopen(n){return r({...n,mutationKind:"reopen"})}}}function CD(e){const t=o.useRef(null);return o.useCallback(async(r,n)=>{if(!e.enabled)return null;const s=String(e.workspaceId||"").trim(),i=String(r||"").trim();return!s||s.toLowerCase()==="default"||!i?null:(t.current||(t.current=e.client||AD()),t.current.mutate({workspaceId:s,entityId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled,...n}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const ID=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function _D(e={}){const t=mf(e);return{delete(r){const n=Ga(r.workspaceId,"workspaceId"),i={domain:"task",entityId:Ga(r.entityId,"entityId"),mutationKind:"delete",payload:{}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:i},buildOperation:()=>i,disabledCodes:ID,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function TD(e){const t=o.useRef(null);return o.useCallback(async r=>{if(!e.enabled)return null;const n=String(e.workspaceId||"").trim(),s=String(r||"").trim();return!n||n.toLowerCase()==="default"||!s?null:(t.current||(t.current=e.client||_D()),t.current.delete({workspaceId:n,entityId:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const xD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function RD(e={}){const t=mf(e);return{restore(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=Ga(r.deletedRecordId,"deletedRecordId"),l=r.restoreDestination||"previous",c={domain:"task",entityId:s,mutationKind:"restore",payload:l==="archive"?{deletedRecordId:i,restoreDestination:l}:{deletedRecordId:i}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:c},buildOperation:()=>c,disabledCodes:xD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function PD(e){const t=o.useRef(null);return o.useCallback(async(r,n,s="previous")=>{if(!e.enabled)return null;const i=String(e.workspaceId||"").trim(),l=String(n||"").trim(),c=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l||!c?null:(t.current||(t.current=e.client||RD()),t.current.restore({workspaceId:i,entityId:l,deletedRecordId:c,restoreDestination:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const n_=["active","archive","deleted","planning"];function a_(e){const t=new Set(e||[]);return n_.filter(r=>t.has(r))}function jD(e){return Array.from(new Set((e||[]).map(t=>String(t||"").trim()).filter(Boolean)))}function Nd(e,t){return{collections:a_(e),taskIds:jD(t?.taskIds),ambiguous:t?.ambiguous===!0}}function s_(e,t){return e?Nd([...e.collections,...t.collections],{taskIds:[...e.taskIds||[],...t.taskIds||[]],ambiguous:e.ambiguous||t.ambiguous}):Nd(t.collections,{taskIds:t.taskIds,ambiguous:t.ambiguous})}function ED(e){return e.ambiguous?[]:[...e.taskIds||[]]}function ND(e,t){if(e==="taskforce:update"||e==="taskforce:replay-gap"||e==="taskforce:replay-reset"||!t?.length)return Nd(n_,{ambiguous:!0});let r=null;for(const n of t){const s=String(n.entityType||"").trim(),i=a_(n.affectedCollections);let l;i.length>0?l=i:s==="task"?l=String(n.changeType||"").trim()==="delete"?["active","archive","deleted"]:["active","archive","deleted","planning"]:s==="taxonomy"?l=["active","archive","planning"]:s==="initiative"||s==="workstream"?l=["planning"]:l=[],r=s_(r,Nd(l,{taskIds:n.entityIds}))}return r||Nd([])}class DD{values=new Map;async getOrCreate(t,r){const n=this.values.get(t);if(n)return{operationId:n,created:!1};const s=r();return this.values.set(t,s),{operationId:s,created:!0}}async deleteIfMatches(t,r){this.values.get(t)===r&&this.values.delete(t)}}class MD{values=new Map;async claim(t,r,n){const s=this.values.get(t);if(s)return{...s,created:!1};const i={fingerprint:t,operationId:n(),workstream:r};return this.values.set(t,i),{...i,created:!0}}async deleteIfMatches(t,r){this.values.get(t)?.operationId===r&&this.values.delete(t)}}const LD=new Set(["WORKSTREAM_MUTATION_INVALID","WORKSTREAM_MUTATION_IDENTITY_REQUIRED","WORKSTREAM_NOT_FOUND","WORKSTREAM_ID_CONFLICT","WORKSTREAM_STATE_CONFLICT","WORKSTREAM_INITIATIVE_INVALID","WORKSTREAM_OWNER_INVALID","WORKSTREAM_COMMENT_AUTHOR_INVALID","WORKSTREAM_ATTACHMENT_INVALID","WORKSTREAM_HAS_ACTIVE_TASKS","WORKSTREAM_TASK_ORDER_INVALID","WORKSTREAM_TASK_ORDER_MEMBERSHIP_MISMATCH","WORKSTREAM_TASK_ORDER_IDENTITY_CONFLICT","ENTITY_EVENT_IDENTITY_COLLISION","WORKSPACE_SYNC_REVISION_CONFLICT","WORKSPACE_SYNC_IDEMPOTENCY_CONFLICT"]);function OD(e,t){return e.find(n=>n.id===t.id)?null:t}function XS(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}async function _m(e){if(e.ok||e.status<400||e.status>=500)return!1;const t=await e.clone().json().catch(()=>null);return LD.has(String(t?.code||"").trim())}function BD(e){const t=globalThis.indexedDB?new qw:new DD,r=globalThis.indexedDB?new yN:new MD;return{async prepareCreate(n,s){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream identity generation is unavailable.");const i=pn({workspaceId:n,candidate:s}),l=await r.claim(i,{...s,id:s.id||`workstream-${globalThis.crypto.randomUUID()}`,createdAt:s.createdAt||new Date().toISOString()},XS);return{fingerprint:i,operationId:l.operationId,body:l.workstream}},confirmCreate(n,s){return r.deleteIfMatches(n,s)},abandonCreate(n,s){return r.deleteIfMatches(n,s)},async prepareMutation(n,s,i,l=null){const c=pn({workspaceId:n,url:s,body:i,observedState:l}),d=await t.getOrCreate(c,XS);return{fingerprint:c,operationId:d.operationId}},confirmMutation(n,s){return t.deleteIfMatches(n,s)},abandonMutation(n,s){return t.deleteIfMatches(n,s)}}}async function Tm(e,t,r){const n={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}},s=()=>fetch(e,n);let i;try{i=await s()}catch{i=await s()}if(i.status!==409)return i;const l=await i.clone().json().catch(()=>({}));if(l?.code!=="WORKSPACE_SYNC_OPERATION_IN_PROGRESS")return i;const c=Date.parse(String(l?.retryAt||"")),d=Number.isFinite(c)?Math.max(0,c-Date.now()):Number.NaN;return!Number.isFinite(d)||d>2e3?i:(await new Promise(m=>setTimeout(m,d)),s())}const WD={};function $D(e,t,r,n){const s=new Map;for(const i of t)s.set(i.id,i);for(const i of e)s.set(i.id,i);if(n&&s.has(n)){const i=r.find(l=>l.id===n);i&&s.set(n,i)}return Array.from(s.values())}function oi(e,t){const r=e.findIndex(n=>n.id===t.id);return r===-1?[...e,t]:e.map((n,s)=>s===r?t:n)}function Zk(){return{status:"loading",error:null,isRefreshing:!1,collections:{initiatives:"loading",workstreams:"loading"}}}const Jc=Iw(WD),Jk=(()=>{const e=Jc.baseUrl,t=Jc.cloudAuthBaseUrl;if(t)return t;const r=Jc.apiBaseUrl;return r||e||"https://app.taskforcehq.ai"})(),Jh=2e4,FD=new Set(["external-abort","superseded","workspace-reset","workspace-transition"]);function bg(e){return typeof DOMException<"u"&&e instanceof DOMException?e.name==="AbortError":String(e?.name||"").toLowerCase()==="aborterror"}function Gv(e){return typeof e=="string"&&FD.has(e)}function Xk(e,t){return t.aborted?e===t.reason||Gv(e)||Gv(t.reason)?!0:bg(e):!1}function QS(e){const t=new Error(`Startup checks timed out after ${e}ms.`);return t.name="BootstrapTimeoutError",t}function eA(e){const t=e&&typeof e=="object"?e:{},r=Array.isArray(t.initiatives)?t.initiatives.filter(i=>!!(i&&typeof i=="object"&&typeof i.id=="string")):[],n=Array.isArray(t.workstreams)?t.workstreams.filter(i=>!!(i&&typeof i=="object"&&typeof i.id=="string")):[],s=Array.isArray(t.workstreamTaskSummaries)?t.workstreamTaskSummaries.flatMap(i=>{if(!i||typeof i!="object")return[];const l=String(i.workstreamId||"").trim();if(!l)return[];const c=Array.isArray(i.tasks)?i.tasks:[],d=Math.max(0,Number(i.taskCount)||0),m=Math.max(0,Number(i.completedTaskCount)||0);return[{workstreamId:l,taskCount:d,completedTaskCount:m,tasks:c.filter(f=>!!(f&&typeof f=="object"&&typeof f.id=="string")).map(f=>({id:String(f.id||"").trim(),referenceNumber:typeof f.referenceNumber=="number"?f.referenceNumber:null,localReferenceNumber:typeof f.localReferenceNumber=="number"?f.localReferenceNumber:null,referenceLabel:typeof f.referenceLabel=="string"&&f.referenceLabel.trim()||void 0,title:String(f.title||"").trim()||"Untitled Task",status:typeof f.status=="string"?f.status:null,assignee:typeof f.assignee=="string"?f.assignee:null,attachmentCount:Math.max(0,Number(f.attachmentCount)||0),isArchived:!!f.isArchived}))}]}):[];return{initiatives:r,workstreams:n,workstreamTaskSummaries:s}}function UD({config:e={},initialTaskId:t,initialActivityEntryId:r,requestedWorkspaceId:n,onTaskCountChange:s,onClose:i}){const l={...wx,...e},{categories:c,types:d,apiEndpoint:m,apiBaseUrl:f,cloudAuthBaseUrl:g,cloudMcpBaseUrl:h,wsBaseUrl:y,shortcut:k}=l,v=typeof window<"u"?String(window.location.hostname||"").trim().toLowerCase():"",A=v==="localhost"||v==="127.0.0.1"||v==="::1",b=typeof window<"u"&&!A,[w,P]=o.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null,appGates:void 0,syncV3TaskMetadataActivation:!1,syncV3TaskCreateActivation:!1,syncV3TaskStatusActivation:!1,syncV3TaskDeleteActivation:!1,syncV3TaskCloudHttpRootActivation:!1,syncV3LocalOutboxDispatch:!1,localCoordinatorBrowserAuthorityGate:!1,syncV3InitiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:void 0,syncV3CombinedFeedActivation:void 0,syncV3CombinedFeedCoverage:void 0}),[E,D]=o.useState(!1),j=o.useCallback(C=>typeof C=="string"?C.trim().replace(/\/+$/,""):"",[]);o.useEffect(()=>{if(typeof window>"u"){D(!0);return}let C=!1;return(async()=>{try{const ae=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include",cache:"no-store"});if(!ae.ok)return;const ce=await ae.json().catch(()=>({})),X=ce?.config&&typeof ce.config=="object"?ce.config:{};if(C)return;const qe=String(X.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",rt=String(X.workspaceMode||"").trim(),Kt=rt==="single-local"||rt==="multi-cloud"?rt:qe==="cloud"?"multi-cloud":"single-local";be(qe);const mr=Nl(X.syncV3?.combinedFeed?.coverage||{});P({cloudEnvironment:typeof X.cloudEnvironment=="string"?String(X.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:j(X.cloudBaseUrl),cloudMcpBaseUrl:j(X.cloudMcpBaseUrl),baseUrl:j(X.baseUrl),apiBaseUrl:j(X.apiBaseUrl),cloudAuthBaseUrl:j(X.cloudAuthBaseUrl),wsBaseUrl:j(X.wsBaseUrl),cloudAuthViaLocalProxy:!!X.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:Kt,workspaceSwitchingEnabled:typeof X.workspaceSwitchingEnabled=="boolean"?!!X.workspaceSwitchingEnabled:Kt==="multi-cloud",appGates:DC(X.appGates)?X.appGates:void 0,syncV3TaskMetadataActivation:X.syncV3?.taskMetadataActivation===!0,syncV3TaskCreateActivation:X.syncV3?.taskCreateActivation===!0,syncV3TaskStatusActivation:X.syncV3?.taskStatusActivation===!0,syncV3TaskDeleteActivation:X.syncV3?.taskDeleteActivation===!0,syncV3TaskCloudHttpRootActivation:X.syncV3?.taskCloudHttpRootActivation===!0,syncV3LocalOutboxDispatch:X.syncV3?.localOutboxDispatch===!0,localCoordinatorBrowserAuthorityGate:X.syncV3?.localCoordinatorBrowserAuthorityGate===!0,syncV3InitiativeFeedActivation:typeof X.syncV3?.initiativeFeedActivation=="boolean"?X.syncV3.initiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:typeof X.syncV3?.combinedFeed?.routeAvailable=="boolean"?X.syncV3.combinedFeed.routeAvailable:void 0,syncV3CombinedFeedActivation:typeof X.syncV3?.combinedFeed?.activationReady=="boolean"?X.syncV3.combinedFeed.activationReady:void 0,syncV3CombinedFeedCoverage:mr?.coverage})}catch{}finally{C||D(!0)}})(),()=>{C=!0}},[j]);const S=typeof window>"u"?"":A?Jk:"",L=j(Jc.baseUrl),_=j(Jc.apiBaseUrl),T=j(Jc.cloudBaseUrl),z=j(Jc.cloudMcpBaseUrl),Y=j(Jc.cloudAuthBaseUrl),H=j(Jc.wsBaseUrl),M=j(f),oe=j(g),K=j(h),Q=w.apiBaseUrl||w.baseUrl,fe=M||Q||(A?"":_||L)||"",_e=oe||Y||L,$e=w.cloudAuthBaseUrl||w.baseUrl,ye=((A?$e||_e:_e||$e)||fe||S).trim().replace(/\/+$/,""),ge=j(dR(w.cloudMcpBaseUrl||w.cloudAuthBaseUrl||w.cloudBaseUrl||K||oe||z||Y||T||ye)),se=(w.cloudMcpBaseUrl||K||ge||w.cloudBaseUrl||z||T||ye||S).trim().replace(/\/+$/,""),ie=!b&&!!ye&&!fe,me=b||E&&!!(ye||fe),$=me&&!ie,V=!!(ye||fe||b),B=b?"cloud":"local",[N,be]=o.useState(()=>B),Ae=B==="local"&&A&&V?xw():"",q=Ae.length>0,Z=o.useCallback(C=>!C||/^https?:\/\//i.test(C)||!fe||!C.startsWith("/")?C:`${fe}${C}`,[fe]),G=o.useCallback(C=>{if(!C||/^https?:\/\//i.test(C)||!C.startsWith("/"))return C;const ae=C.startsWith("/api/taskforce/auth/")||C.startsWith("/api/taskforce/account/")||C.startsWith("/api/taskforce/billing/")||/^\/api\/taskforce\/model-connections(?:[/?]|$)/i.test(C)||/^\/api\/taskforce\/agents\/model-catalog(?:\?|$)/i.test(C)||/^\/api\/taskforce\/agents\/[^/]+\/connection-binding(?:\?|$)/i.test(C)||C.startsWith("/api/taskforce/sync/")||C.startsWith("/api/taskforce/settings/mcp/");if(!b&&ae&&(N==="cloud"||!E||w.cloudAuthViaLocalProxy||w.workspaceMode==="multi-cloud"))return C;const ce=ye||fe;if(ce){const X=`${ce}${C}`;if(typeof window<"u"&&!b&&ae)try{if(new URL(X,window.location.origin).origin===window.location.origin)return`${Jk}${C}`}catch{return`${Jk}${C}`}return X}return C},[E,w.cloudAuthViaLocalProxy,w.workspaceMode,ye,fe,b,N]),ne=o.useCallback(C=>{const ae=String(C||"").trim()||"/taskforce-ws",ce=ae.startsWith("/")?ae:`/${ae}`,X=String(y||w.wsBaseUrl||H||fe||"").trim().replace(/\/+$/,""),Be=typeof window<"u"?window.location.origin:"",qe=X||Be;if(!qe)return"";try{const rt=new URL(ce,qe);return rt.protocol==="https:"&&(rt.protocol="wss:"),rt.protocol==="http:"&&(rt.protocol="ws:"),rt.toString()}catch{return""}},[y,w.wsBaseUrl,H,fe]),[Te,Le]=o.useState("tasks"),[Ue,st]=o.useState(!1),[ft,xe]=o.useState(!1),[ke,ve]=o.useState("open"),[He,Ee]=o.useState(!1),[de,x]=o.useState(Zu(l.theme)||xg),[le,Ie]=o.useState(Zu(l.theme)||xg),[Je,J]=o.useState(!0),[Ze]=o.useState(".taskforce"),te=!1,[Ne,je]=o.useState(!1),[Re,Ce]=o.useState([]),[Pe,he]=o.useState([]),[De,et]=o.useState(""),[Fe,yt]=o.useState(null),[Oe,mt]=o.useState(null),[vt,Ve]=o.useState(""),[tt,It]=o.useState(""),Xe=o.useMemo(()=>nR({projectRoot:vt,runtimeMode:B}),[vt,B]),[bt,at]=o.useState(""),[U,pe]=o.useState(""),Ke=iR(N),Et=w.workspaceMode==="single-local"||w.workspaceMode==="multi-cloud"?w.workspaceMode:Ke.workspaceMode,kt=typeof w.workspaceSwitchingEnabled=="boolean"?w.workspaceSwitchingEnabled:Ke.workspaceSwitchingEnabled,[Ot,dr]=o.useState(!1),[tr,pr]=o.useState(!1),[Bt,wr]=o.useState(q),[or,$r]=o.useState(q?Ae:"anonymous"),[Dr,Me]=o.useState(""),[nt,pt]=o.useState(""),[lt,xt]=o.useState(""),[Yt,Nt]=o.useState([]),[Qt,Ct]=o.useState(""),[Ht,Ft]=o.useState(!0),[ir,cr]=o.useState(null),[it,Zt]=o.useState(()=>{if(B==="local")return"default";const C=Cv(Xe);return C&&C.toLowerCase()!=="default"?C:"default"}),Lr=o.useMemo(()=>aR({projectRoot:vt,runtimeMode:N,workspaceId:it}),[vt,N,it]),[lr,$n]=o.useState([]),[br,ur]=o.useState(()=>El()),[u,St]=o.useState(!1),[gt,Fr]=o.useState(q),[xr,er]=o.useState("idle"),[jr,qr]=o.useState(null),[An,cn]=o.useState(null),Hr=o.useRef(null),Ge=o.useRef(0),Xr=o.useRef(0),hr=o.useRef(q),Jt=o.useRef(it),Xt=o.useRef(null),bn=o.useRef(0),$t=o.useRef((typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`).replace(/[^A-Za-z0-9_-]+/g,"").slice(0,12)||"session"),[Ut,Ur]=o.useState(0),Fn=o.useRef(null),Yn=o.useRef(null),Ca=o.useRef(null),yn=o.useRef(null),Vr=o.useRef(null),rn=o.useRef(null),Mn=o.useRef(null),sn=o.useCallback((C,ae)=>{const ce=String(C||"").trim();if(!ce)return;const X=String(Jt.current||"").trim();!ae?.skipTransitionReset&&X&&X!==ce&&(bn.current+=1,Ur(bn.current)),Jt.current=ce,ae?.clearExplicitSelection!==!1&&(Xt.current=null),Zt(ce)},[]);o.useEffect(()=>{Jt.current=it},[it]);const Sn=o.useCallback(C=>{const ae=String(C||"").trim();ae&&Zt(()=>{const ce=String(Xt.current||"").trim();let X=ae;return ce&&ce!==ae&&(X=ce),Jt.current=X,X})},[]),Ir=o.useCallback(()=>({workspaceId:String(Jt.current||"default").trim()||"default",epoch:bn.current}),[]),Wr=o.useCallback(()=>Jt.current,[]),Yr=o.useCallback(C=>(String(Jt.current||"default").trim()||"default")!==C.workspaceId||bn.current!==C.epoch,[]),Zn=o.useCallback(C=>bn.current!==C.epoch,[]),Ln=o.useCallback(C=>bg(C)||Gv(C),[]),fn=o.useCallback(()=>{[Fn,Yn,Ca,yn,Vr,rn].forEach(C=>{C.current?.abort("workspace-transition"),C.current=null}),Mn.current!==null&&typeof window<"u"&&(window.clearTimeout(Mn.current),Mn.current=null),du.current=null},[]),Rn=o.useMemo(()=>WN({shouldGateProtectedApiCalls:$,runtimeMode:N,authSessionResolved:gt,authRequiredForApi:Ot,isAuthenticated:Bt}),[$,N,gt,Ot,Bt]),hn=Rn.shouldDeferProtectedApiCalls,dt=Rn.shouldBlockProtectedApiCalls,[On,Wt]=o.useState(null),[ue,ot]=o.useState(null),[_t,Pt]=o.useState(!1),[nr,fr]=o.useState("unknown"),[ln,Tt]=o.useState(null),[Rr,Qr]=o.useState(l.shortcut||"Alt+T"),[on,Jn]=o.useState(l.priorities||[]),[Zr,Er]=o.useState(""),[Xn,Ia]=o.useState(!1),[Un,Cs]=o.useState(!1),[ga,Bs]=o.useState(!0),[eo,to]=o.useState(()=>eR()),Qn=o.useMemo(()=>Qx(),[]),[Ws,sa]=o.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[hi,ea]=o.useState(!1),[gi,_a]=o.useState(!0),[oa,Ta]=o.useState(!1),[Ka,ls]=o.useState(!0),[ds,La]=o.useState(!0),[qa,xa]=o.useState(!0),[Ra,zn]=o.useState(!0),[us,ut]=o.useState(!1),[vr,en]=o.useState(""),[In,Pn]=o.useState(null);MN({currentWorkspaceIdRef:Jt,resolveApiUrl:Z,runtimeMode:N});const{initiativeTemplates:ro,fetchInitiativeTemplates:Is}=VE({shouldDeferProtectedApiCalls:hn,shouldBlockProtectedApiCalls:dt}),{zenMode:$s,setZenModeState:Pa,toggleZenMode:ya}=GE(),[jn,Nr]=o.useState(!1),[Oa,Ya]=o.useState(null),{uiNotice:ia,pushNotice:Hn,clearNotice:Vn}=FE(),Za=o.useRef(ia);Za.current=ia;const[Ao,yi]=o.useState([]),_s=o.useRef(null),[ki,we]=o.useState(0),At=o.useCallback(C=>!C||!vt?C:C.startsWith(vt)?C.slice(vt.length).replace(/^[/\\]+/,""):C,[vt]),[qt,ar]=o.useState([]),[Sr,gn]=o.useState([]),[fa,ta]=o.useState([]),[mn,fs]=o.useState([]),[Ui,no]=o.useState([]),[zi,Fs]=o.useState(Zk),[sr,Gn]=o.useState([]),[En,ms]=o.useState(null),[_n,ja]=o.useState(null),[ao,Ts]=o.useState(()=>new Set),Ba=o.useRef(null),Wa=o.useRef(null),[ka,$a]=o.useState(!1),[Ar,vi]=o.useState(null),ps=o.useRef(null),[Co,Us]=o.useState(null),[Ja,va]=o.useState(null),Fa=o.useRef(null),so=o.useRef(()=>null),Ua=o.useRef(null),[Xa,wa]=o.useState(null),Yo=o.useCallback(C=>{String(t||"").trim()||wa(C)},[t]),[ba,pc]=o.useState(!1),[hs,wi]=o.useState([]),[dn,Hi]=o.useState(!1),[ma,zs]=o.useState({}),Ea=o.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});o.useEffect(()=>{Ea.current={authSessionResolved:gt,configLoaded:dn,workspaceBootstrapPending:u}},[gt,dn,u]);const hc=o.useCallback(C=>{er(C),C!=="ready"&&(qr(null),cn(Date.now()))},[]),gs=o.useCallback(C=>{const ae=Ea.current;ae.authSessionResolved&&ae.configLoaded&&!ae.workspaceBootstrapPending||(er("stalled"),qr(C),cn(ce=>ce??Date.now()))},[]),bi=o.useCallback(async(C,ae,ce=$m,X)=>{const Be=new AbortController,qe=X?.signal,rt=Number(ce)>0?Number(ce):$m,Kt=Ir(),mr=C.startsWith("/api/taskforce/")?Bk(ae,Jb({workspaceId:Kt.workspaceId,epoch:Kt.epoch,seed:$t.current})):ae,Tr=typeof window<"u"?window.setTimeout(()=>Be.abort("bootstrap-timeout"),rt):null,Or=()=>{Be.abort(qe?.reason||"external-abort")};qe&&(qe.aborted?Or():qe.addEventListener("abort",Or,{once:!0}));try{return await fetch(C,{...mr||{},signal:Be.signal})}catch(Br){throw qe?.aborted&&Xk(Br,qe)?qe.reason||Br:bg(Br)||Br==="bootstrap-timeout"?QS(rt):Br}finally{qe&&qe.removeEventListener("abort",Or),Tr!==null&&typeof window<"u"&&window.clearTimeout(Tr)}},[Ir]),Zo=o.useMemo(()=>{const C=!gt,ae=xr==="stalled",ce=gt&&(!dn||u||ae);let X="Checking account, workspace access, and setup status...";return xr==="auth"?X="Verifying session...":xr==="workspace"?X="Resolving workspace access...":xr==="config"&&(X="Loading configuration..."),{phase:xr,auth:{resolved:gt,pending:C},config:{loaded:dn},workspace:{pending:u},pending:C||ce,authPending:C,appPending:ce,ready:gt&&dn&&!u&&xr==="ready",stalled:ae,subtitle:X,error:jr,startedAt:An}},[gt,jr,xr,An,dn,u]),Io=o.useCallback(C=>String(C?.name||"")==="BootstrapTimeoutError",[]),[_o,gc]=o.useState([]),[Jo,ys]=o.useState({}),[pa,oo]=o.useState(l.taxonomies||[]),un=o.useMemo(()=>(hs.length>0?hs:c||[]).map(ae=>typeof ae=="string"?{value:ae.toLowerCase().replace(/\s+/g,"-"),label:ae}:ae).sort((ae,ce)=>ae.label.localeCompare(ce.label)),[hs,c]),To=o.useMemo(()=>({categories:un,types:_o,priorities:on,taxonomies:pa,displayLabels:Jo}),[un,_o,on,pa,Jo]);o.useMemo(()=>un.filter(C=>!C.disabled),[un]);const Qa=o.useCallback(C=>C.find(ce=>ce.value==="default"||ce.value==="general"||ce.label==="General"||ce.value==="Taskforce"||ce.label==="Taskforce")?.value||C[0]?.value||"default",[]),ra=_o.length>0?_o:d,[yc,Dl]=o.useState(!1),[rl,ca]=o.useState(""),Ml=o.useCallback(()=>ca(""),[]),Si="Authentication required. Sign in to continue.",[xo,kc]=o.useState(!1),[Ai,Xo]=o.useState(!1),Ro=o.useCallback(()=>{pr(N==="cloud"),wr(!1),pt(""),xt(""),Ct(""),ca(Si)},[Si,N]),vc=o.useRef(new Map),{taskDetails:Cn,staleTaskDetailRevisions:Qo,recentlyChangedTaskIds:Hs,fetchTasks:F,fetchArchive:O,loadTaskDetail:Vt,cancelTaskDetailLoad:Mt,refreshTaskCollections:Rt,refreshTaskCollectionsFromInvalidation:ht,mergeTaskFromServer:nn}=KE({tasks:qt,archivedTasks:Sr,setTasks:ar,setArchivedTasks:gn,setLoadingTasks:$a,getCurrentWorkspaceId:Wr,workspaceResetKey:`${it}:${Ut}`,shouldDeferProtectedApiCalls:hn,shouldBlockProtectedApiCalls:dt,handleUnauthorized:Ro,authRequiredForApi:Ot,setError:ca,setLoading:Dl,pendingTaskMetadataOverlaysRef:vc});o.useEffect(()=>{Ut!==0&&(du.current=null,uo.current="",Vs.current="",ni.current="",Ni.current="",ul.current="",kc(!1),ur(El()),Xo(!1),Gn([]),ms(null),ja(null),Ts(new Set),Ba.current=null,Wa.current=null,ar([]),gn([]),vc.current.clear(),ta([]),fs([]),no([]),Fs(Zk()),wa(null),$a(!1))},[gn,$a,ar,Ut]);const rr=o.useCallback(async(C=!1,ae)=>{if(!(ae?.ignoreAuthGuard===!0)&&(hn||dt))return!1;C||$a(!0);const X=Ir();Vr.current?.abort("superseded");const Be=new AbortController;Vr.current=Be;try{let qe=await fetch("/api/taskforce/deleted",{signal:Be.signal});if(qe.status===404&&(qe=await fetch("/api/taskforce/trash",{signal:Be.signal})),qe.status===401)return Ro(),Gn([]),!1;if(qe.status===404)return Yr(X)?!1:(Gn([]),ja(X.workspaceId),!0);if(qe.ok){const rt=await qe.json();if(Yr(X))return!1;const Kt=Array.isArray(rt?.deleted)?rt.deleted.map(mr=>{const Tr=mr?.taskSnapshot&&typeof mr.taskSnapshot=="object"?Qs(mr.taskSnapshot):null;return Tr?{...mr,taskSnapshot:Tr}:null}).filter(mr=>!!mr):[];return Gn(Kt),ja(X.workspaceId),!0}return!1}catch(qe){return Xk(qe,Be.signal)||Ln(qe)||console.error("[Taskforce] Failed to fetch deleted tasks:",qe),!1}finally{Vr.current===Be&&(Vr.current=null),C||$a(!1)}},[Ir,Ro,Ln,Yr,hn,dt]),Pr=o.useCallback(async C=>{if(!(C?.ignoreAuthGuard===!0)&&(hn||dt))return;const ce=Ir();rn.current?.abort("superseded"),Mn.current!==null&&typeof window<"u"&&(window.clearTimeout(Mn.current),Mn.current=null);const X=new AbortController;rn.current=X,Fs(Be=>({...Be,isRefreshing:!0}));try{const Be=Jb({workspaceId:ce.workspaceId,epoch:ce.epoch,seed:$t.current}),qe=async Br=>{if(typeof window>"u")return fetch(Br,Bk({signal:X.signal},Be));const Kn=new AbortController,Ns=window.setTimeout(()=>Kn.abort("planning-timeout"),Jh),go=()=>Kn.abort(X.signal.reason||"external-abort");X.signal.aborted?go():X.signal.addEventListener("abort",go,{once:!0});try{return await fetch(Br,Bk({signal:Kn.signal},Be))}catch(Ys){if(X.signal.aborted)throw X.signal.reason||Ys;if(bg(Ys)||Ys==="planning-timeout")return null;throw Ys}finally{window.clearTimeout(Ns),X.signal.removeEventListener("abort",go)}};let rt=null,Kt={initiatives:"ready",workstreams:"ready"};const mr=await qe("/api/taskforce/planning/bootstrap");if(mr?.status===401){Ro(),ta([]),fs([]),no([]),Fs({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}if(mr===null)throw QS(Jh);if(mr.ok){const Br=await mr.json().catch(()=>null);if(!Br||!Array.isArray(Br.initiatives)||!Array.isArray(Br.workstreams))throw new Error("Planning returned an incomplete response.");rt=eA(Br)}else{const[Br,Kn]=await Promise.all([qe("/api/taskforce/initiatives"),qe("/api/taskforce/workstreams")]);if(!Br||!Kn)throw new Error("Planning endpoints timed out during startup.");if(Br.status===401||Kn.status===401){Ro(),ta([]),fs([]),no([]),Fs({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}const Ns=async(pm,Ch)=>{if(!pm.ok)return{items:[],status:"error"};const Vc=await pm.json().catch(()=>null),Sl=Array.isArray(Vc)?Vc:Vc&&typeof Vc=="object"&&Array.isArray(Vc[Ch])?Vc[Ch]:null;return Sl?{items:Sl,status:"ready"}:{items:[],status:"error"}},[go,Ys]=await Promise.all([Ns(Br,"initiatives"),Ns(Kn,"workstreams")]);if(Kt={initiatives:go.status,workstreams:Ys.status},Kt.initiatives==="error"&&Kt.workstreams==="error")throw new Error("Planning could not be loaded.");rt=eA({initiatives:go.items,workstreams:Ys.items,workstreamTaskSummaries:[]})}if(Yr(ce))return;ta(rt.initiatives),fs(rt.workstreams),no(rt.workstreamTaskSummaries);const Tr=Kt.initiatives==="error"||Kt.workstreams==="error",Or=rt.initiatives.length===0&&rt.workstreams.length===0;Fs({status:Tr?"partial":Or?"empty":"ready",error:Tr?"Some planning data could not be loaded.":null,isRefreshing:!1,collections:Kt})}catch(Be){if(Xk(Be,X.signal)||Ln(Be))return;if(Io(Be)?(Cr("planning_bootstrap_timeout",{workspaceId:ce.workspaceId,epoch:ce.epoch,timeoutMs:Jh}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",Be),!Yr(ce)){const rt=fa.length>0||mn.length>0;Fs(Kt=>({status:rt?"partial":"error",error:Be instanceof Error&&Be.message?Be.message:"Planning could not be loaded.",isRefreshing:!1,collections:rt?Kt.collections:{initiatives:"error",workstreams:"error"}}))}typeof window<"u"&&!Yr(ce)&&fa.length===0&&mn.length===0&&(Mn.current=window.setTimeout(()=>{Mn.current=null,Pr(C)},3e3))}finally{rn.current===X&&(rn.current=null)}},[$m,Jh,fa.length,Ir,Ro,Ln,Yr,hn,dt,mn.length]),Dt=o.useCallback(async(C,ae)=>{const ce=String(ae||"").trim();if(!ce)throw new Error(`Cannot load ${C} details without an id.`);const X=Ir(),Be=await fetch(`/api/taskforce/${C}/${encodeURIComponent(ce)}`),qe=await Be.json().catch(()=>({}));if(!Be.ok)throw new Error(qe?.error||`Failed to load ${C} details (${Be.status})`);const rt=qe;return Yr(X)||(C==="initiative"?ta(Kt=>oi(Kt,rt)):fs(Kt=>oi(Kt,rt))),rt},[Ir,Yr]),kn=o.useCallback(async(C=!1,ae)=>{await F(C,ae)},[F]),Tn=o.useCallback(async(C=!1,ae)=>{const ce=String(Jt.current||"default").trim()||"default",X=await O(C,ae),Be=String(Jt.current||"default").trim()||"default";return X&&Be===ce&&ms(ce),X},[O]),la=o.useCallback((C=!0,ae)=>{const ce=String(Jt.current||"default").trim()||"default";if(En===ce)return Promise.resolve(!0);const X=Ba.current;if(X?.workspaceId===ce)return X.promise;const Be=Tn(C,ae).finally(()=>{Ba.current?.promise===Be&&(Ba.current=null)});return Ba.current={workspaceId:ce,promise:Be},Be},[En,Tn]),Po=o.useCallback((C=!0,ae)=>{const ce=String(Jt.current||"default").trim()||"default";if(_n===ce)return Promise.resolve(!0);const X=Wa.current;if(X?.workspaceId===ce)return X.promise;const Be=rr(C,ae).finally(()=>{Wa.current?.promise===Be&&(Wa.current=null)});return Wa.current={workspaceId:ce,promise:Be},Be},[_n,rr]),wc=o.useCallback(()=>{const C=String(Jt.current||"default").trim()||"default";return En!==C?Promise.resolve(!1):Tn(!0)},[En,Tn]),bc=o.useCallback((C=!0)=>{const ae=String(Jt.current||"default").trim()||"default";return _n!==ae?Promise.resolve(!1):rr(C)},[_n,rr]),Ci=o.useCallback(async C=>{const ae=C?.isSilent!==!1,ce=C?.ignoreAuthGuard===!0,X=String(Jt.current||"default").trim()||"default",Be=En===X,qe=_n===X;await Promise.all([Rt({isSilent:ae,ignoreAuthGuard:ce,includeArchive:Be,highlightChangedTaskIds:C?.highlightChangedTaskIds}),qe?rr(ae,{ignoreAuthGuard:ce}):Promise.resolve(!1),Pr({ignoreAuthGuard:ce})])},[En,_n,rr,Pr,Rt]),Ll=o.useRef(!1),jo=o.useRef(null),io=o.useRef(En),ei=o.useRef(_n),Sc=o.useRef(ht),nl=o.useRef(rr),Ac=o.useRef(Pr);io.current=En,ei.current=_n,Sc.current=ht,nl.current=rr,Ac.current=Pr;const Eo=o.useCallback(async C=>{const ae=String(Jt.current||"default").trim()||"default",ce=jo.current;if(jo.current={workspaceId:ae,scope:ce?.workspaceId===ae?s_(ce.scope,C):C},!Ll.current){Ll.current=!0;try{for(;jo.current;){const X=jo.current;jo.current=null;const Be=String(Jt.current||"default").trim()||"default";if(X.workspaceId!==Be)continue;const qe=new Set(X.scope.collections),rt=qe.has("active"),Kt=qe.has("archive")&&io.current===Be,mr=qe.has("deleted")&&ei.current===Be,Tr=ED(X.scope);await Promise.all([rt||Kt?Sc.current({includeActive:rt,includeArchive:Kt,highlightChangedTaskIds:Tr}):Promise.resolve(),mr?nl.current(!0):Promise.resolve(!1),qe.has("planning")?Ac.current():Promise.resolve()])}}finally{Ll.current=!1}}},[]),wp=o.useRef(()=>{}),Ii=o.useRef(()=>{}),Ol=o.useRef(async()=>!1),Jr=o.useCallback(C=>Ol.current(C),[]),{userGlobalSyncStatus:Bn,setUserGlobalSyncStatus:es,userGlobalSyncError:bp,setUserGlobalSyncError:hf,workspaceLastPullAt:Sp,workspaceLastPushAt:Ud,workspaceLastErrorAt:gf,workspaceLastErrorMessage:Ap,workspaceLastSuccessfulSyncAt:yf,workspaceCloudSyncEnabled:No,workspaceSyncPhase:kf,workspaceSyncSetupIntent:Cp,workspaceSyncStatus:vf,workspaceSyncSummary:Ip,workspaceSyncRecommendedAction:wf,workspaceSyncBusy:_p,workspaceSyncPendingChanges:bf,workspaceTaskRelationships:Tp,localCoordinatorDataVersion:Sf,localCoordinatorStatus:xp,switchLocalCoordinatorWorkspace:Af,transferLocalCoordinatorOwnership:Rp,clearLocalCoordinatorCredential:zd,workspacePendingSignatureRef:Pp,workspaceDeletedTaskIdsRef:ky,workspaceDeletedTaskWatermarksRef:Hd,loadWorkspaceSyncState:vy,applyWorkspaceSyncStateSnapshot:Vd,syncUserGlobalSettings:Gd,buildWorkspaceSyncSignature:Vi,pushWorkspaceChangesToCloud:Cf,saveWorkspaceCloudSyncSettings:al,retryUserGlobalSettingsSync:If,retryWorkspaceCloudSync:Kd,resetWorkspaceSyncCursorAndPull:_f,getWorkspaceSyncDiagnostics:Bl}=WE({currentWorkspaceId:it,cloudAuthConfigured:V,runtimeMode:N,authSessionResolved:gt,isAuthenticated:Bt,authUserId:or,projectName:tt,resolveCloudAuthUrl:G,resolveWebSocketUrl:ne,realtimeSyncEnabled:_t,localOutboxDispatchEnabled:w.syncV3LocalOutboxDispatch,localCoordinatorBrowserAuthorityGateEnabled:w.localCoordinatorBrowserAuthorityGate,initiativeFeedActivationEnabled:w.syncV3InitiativeFeedActivation,combinedFeedActivationEnabled:w.syncV3CombinedFeedActivation,combinedFeedCoverage:w.syncV3CombinedFeedCoverage,tasks:qt,archivedTasks:Sr,deletedTasks:sr,initiatives:fa,workstreams:mn,taxonomies:pa,taxonomyState:xo?To:void 0,setupState:On,globalTheme:le,locale:eo,globalWeekStartsOn:Ws,themeUseGlobalDefault:Je,setTasks:ar,setArchivedTasks:gn,setAuthBlocked:pr,setIsAuthenticated:wr,checkAuthSession:Jr,setGlobalTheme:Ie,setCurrentTheme:x,setSetupState:Wt,setLocale:to,setGlobalWeekStartsOn:sa,fetchPlanningEntities:Pr}),sl=o.useCallback((C=ra)=>C.find(ae=>String(ae.value||"").trim().length>0)?.value||bo,[ra]),[xs,ol]=o.useState(()=>Qa(un)),[ts,Do]=o.useState(()=>sl(ra)),[Mo,qd]=o.useState(2),[il,Yd]=o.useState(3),[ti,ri]=o.useState("task"),[Cc,Zd]=o.useState("unassigned"),[Rs,Jd]=o.useState(""),[Lo,Xd]=o.useState(""),[Oo,Qd]=o.useState(""),[_i,Ti]=o.useState(""),[Ps,Gi]=o.useState(""),_r=o.useRef(_i),Wl=o.useRef(Ps),co=o.useRef(!1),[$l,Ic]=o.useState(!1),lo=o.useCallback(()=>{const C=_r.current.trim()!==""||Wl.current.trim()!=="";C!==co.current&&(co.current=C,Ic(C))},[]),wy=o.useCallback(C=>{_r.current=C,lo()},[lo]),Tf=o.useCallback(C=>{Wl.current=C,lo()},[lo]),eu=o.useCallback(()=>_r.current,[]),Fl=o.useCallback(()=>Wl.current,[]);o.useEffect(()=>{_r.current=_i,lo()},[lo,_i]),o.useEffect(()=>{Wl.current=Ps,lo()},[Ps,lo]);const[Ul,tu]=o.useState([]),[xi,_c]=o.useState([]),[zl,ru]=o.useState(""),[Hl,Bo]=o.useState({}),by=o.useRef(null),[nu,au]=o.useState(""),[Tc,Vl]=o.useState(""),[Sy,xf]=o.useState(""),[Gl,ks]=o.useState({});o.useEffect(()=>{if(Ar)return;const C=String(ts||"").trim();ra.some(ce=>String(ce.value||"").trim()===C)||Do(sl(ra))},[ra,Ar,sl,ts]);const{searchQuery:Ri,setSearchQuery:jp,filterCategories:Rf,setFilterCategories:Wo,filterPriorities:Ki,setFilterPriorities:su,filterTypes:Kl,setFilterTypes:Pf,filterStatus:jf,setFilterStatus:Ef,filterAssignees:xc,setFilterAssignees:Rc,filterAssigneesAllSelected:Nf,setFilterAssigneesAllSelected:Ep,filterTaxonomies:Df,setFilterTaxonomies:Pc,hasInitedFilters:jc,setHasInitedFilters:Mf,sortBy:zt,setSortBy:Lf,sortOrder:ou,setSortOrder:Of,toggleSortOrder:iu,groupBy:Bf,setGroupBy:cu,emptyColumnMode:Wf,setEmptyColumnMode:Np,collapsedCategories:Dp,setCollapsedCategories:Mp,clearFilters:Ay,filteredTasks:Cy,searchAgnosticTasks:Iy,filteredArchive:$o,groupedTasks:$f}=pN({tasks:qt,archivedTasks:Sr,activeCategories:un,activeTypes:ra,priorities:on,taxonomies:pa,configLoaded:dn,referenceDataLoaded:xo,assigneeOptionsLoaded:Ai,assigneeOptions:br,runtimeMode:N,workspaceId:it,cloudTaskSearchEnabled:N==="cloud"&&Bt&&ke!=="deleted"&&!hn&&!dt,cloudTaskSearchScope:ke==="archived"?"archive":"active"});wp.current=es,Ii.current=hf;const{checkAuthSession:Lp}=BN({runtimeConfigReady:E,shouldProbeCloudAuth:me,authSessionResolved:gt,resolveCloudAuthUrl:G,authOnlyCloudMode:ie,authRequiredError:Si,runtimeMode:N,workspaceSelectionScope:Xe,markBootstrapPhase:hc,markBootstrapStalled:gs,setRuntimeMode:be,setAuthRequiredForApi:dr,setIsAuthenticated:wr,setAuthUserId:$r,setAuthWorkspaceId:Me,setAuthUserEmail:pt,setAuthUserDisplayName:xt,setAuthUserAvatarUrl:Ct,setUserGlobalSyncStatus:C=>wp.current(C),setUserGlobalSyncError:C=>Ii.current(C),setHasBetaAccess:Ft,setAvailableWorkspaces:$n,setHydratedWorkspaceRole:cr,setAssigneeOptions:ur,setAuthBlocked:pr,setAuthSessionResolved:Fr,setError:ca,applyResolvedWorkspaceId:Sn,readPersistedWorkspaceId:Cv,authSessionRequestRef:Hr,authSessionEpochRef:Ge,authSessionLastCheckedAtRef:Xr,authSessionLastResultRef:hr,isLoopbackHost:A,setAuthStateReadyRefs:(C,ae,ce)=>{lu.current=ae,Vf.current=ce,dl.current=C}});Ol.current=Lp;const[Pi,_y]=o.useState("tasks"),[Ty,xy]=o.useState(!1),[Ry,Py]=o.useState(!1),Ff=o.useRef([]),[Ec,jy]=o.useState([]),Op=o.useCallback(C=>{const ae=typeof C=="function"?C(Ff.current):C;Ff.current=ae,jy(ae)},[]),ql=o.useCallback(()=>[...Ff.current],[]),ji=o.useRef(null),[Bp,cl]=o.useState(!1),Nc=o.useCallback(()=>`task-description-${globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random().toString(16).slice(2)}`}`,[]),Dc=o.useRef(Nc()),[Wp,Yl]=o.useState(Dc.current),ll=o.useCallback(()=>{const C=Nc();Dc.current=C,Yl(C)},[Nc]),Uf=o.useCallback(C=>{ji.current=C,cl(!0),C.then(()=>{ji.current===C&&(ji.current=null,cl(!1))},()=>{ji.current===C&&(ji.current=null,cl(!1))})},[]),qi=o.useCallback(async()=>{const C=ji.current;C&&await C},[]),[$p,Ei]=o.useState(!1),zf=o.useRef(null),Yi=o.useRef(null),Hf=o.useRef(!1),lu=o.useRef(gt),Vf=o.useRef(Ot),dl=o.useRef(Bt),uo=o.useRef(""),Vs=o.useRef(""),ni=o.useRef(""),Ni=o.useRef(""),ul=o.useRef(""),du=o.useRef(null),Zl=o.useRef(!1),Jl=o.useRef(!1),{handleSaveSettings:Gf,handleSaveTheme:Fp,handleSaveGlobalTheme:Kf,handleUseGlobalThemeDefault:Ey,handleJsonBackupEnabledChange:qf,handleSaveGlobalJsonBackupEnabled:Ny,handleUseGlobalJsonBackupDefault:Up,handleSaveGlobalWeekStartsOn:Dy,handleSaveLocale:Xl,handleManualComplexityEnabledChange:uu,handleChecklistDropdownEnabledChange:fu,handleShowTaskCardStatusLabelChange:zp,handleShowTaskCardDescriptionChange:mu,handleShowTaskCardAttachmentsChange:My,handleShowTaskCardChecklistProgressChange:Yf,handleShowTaskCardLatestActivityChange:Ly,handleTintTaskCardActivityBackgroundChange:Ql}=zE({keyShortcut:Rr,themeUseGlobalDefault:Je,runtimeMode:N,jsonBackupUseGlobalDefault:ga,globalTheme:le,globalJsonBackupEnabled:Un,setCurrentTheme:x,setThemeUseGlobalDefault:J,setGlobalTheme:Ie,setJsonBackupEnabled:Ia,setJsonBackupUseGlobalDefault:Bs,setGlobalJsonBackupEnabled:Cs,setGlobalWeekStartsOn:sa,setLocale:to,setManualComplexityEnabled:ea,setChecklistDropdownEnabled:_a,setShowTaskCardStatusLabel:Ta,setShowTaskCardDescription:ls,setShowTaskCardAttachments:La,setShowTaskCardChecklistProgress:xa,setShowTaskCardLatestActivity:zn,setTintTaskCardActivityBackground:ut});o.useEffect(()=>{N==="cloud"&&Xe!==Bd&&zR(it,Xe)},[N,it,Xe]),o.useEffect(()=>{lu.current=gt,Vf.current=Ot,dl.current=Bt},[gt,Ot,Bt]);const{hasLoadedUiStateRef:Oy,loadPersistedUiState:fo,resetPersistedUiStateLoad:Zf,setActiveWorkspaceModule:Hp,uiStateReady:Mc}=zN({runtimeMode:N,workspaceUiStateScope:Lr,currentWorkspaceId:it,currentWorkspaceIdRef:Jt,referenceDataLoaded:xo,activeCategories:un,activeTypes:ra,priorities:on,taxonomies:pa,activeWorkspaceModule:Pi,setActiveWorkspaceModuleState:_y,groupBy:Bf,setGroupBy:cu,emptyColumnMode:Wf,setEmptyColumnMode:Np,taskScope:ke,setTaskScope:ve,openTaskId:Ar,setPendingOpenTaskId:Yo,compressedCards:He,setCompressedCards:Ee,zenMode:$s,setZenModeState:Pa,searchQuery:Ri,setSearchQuery:jp,collapsedCategories:Dp,setCollapsedCategories:Mp,filterCategories:Rf,setFilterCategories:Wo,filterPriorities:Ki,setFilterPriorities:su,filterTypes:Kl,setFilterTypes:Pf,filterStatus:jf,setFilterStatus:Ef,filterAssignees:xc,setFilterAssignees:Rc,filterAssigneesAllSelected:Nf,setFilterAssigneesAllSelected:Ep,filterTaxonomies:Df,setFilterTaxonomies:Pc,sortBy:zt,setSortBy:Lf,sortOrder:ou,setSortOrder:Of,hasInitedFilters:jc,setHasInitedFilters:Mf,lastUsedCategory:nu,setLastUsedCategory:au,taskforceAgentId:Tc,setTaskforceAgentId:Vl,taskforceAgentConversationId:Sy,setTaskforceAgentConversationId:xf,taskforceAgentConversationByAgentId:Gl,setTaskforceAgentConversationByAgentId:ks}),By=o.useCallback(C=>{const ae=C.runtimeMode==="cloud"?"cloud":"local",ce=!!C.authRequiredForApi,X=typeof C.userId=="string"&&C.userId.trim().length>0?C.userId.trim():"anonymous",Be=ae==="cloud"&&X!=="anonymous",qe=Be||dl.current,rt=lu.current;if(be(ae),dr(ce),Be&&(wr(!0),$r(X),pr(!1),rt||Fr(!0)),typeof C.workspaceId=="string"&&C.workspaceId.trim().length>0){const Ns=C.workspaceId.trim();if(ae==="local"){const go=String(Jt.current||"").trim()||"default";sn(Ns,{skipTransitionReset:!dn&&go==="default"})}else Sn(Ns)}pr(ae==="cloud"&&ce?!qe:!1),C.setupState&&typeof C.setupState=="object"?Wt(C.setupState):Wt(null),C.runtimeCapabilities&&typeof C.runtimeCapabilities=="object"?ot(C.runtimeCapabilities):ot(null),Pt(!!C.realtimeSyncEnabled);const Kt=String(C.realtimeSyncFlagSource||"").trim().toLowerCase();fr(Kt==="env"||Kt==="settings"||Kt==="default"?Kt:"unknown"),typeof C.shortcut=="string"&&C.shortcut.trim().length>0&&Qr(C.shortcut);const mr=Zu(C.theme);mr&&x(mr);const Tr=Zu(C.globalTheme);Tr&&Ie(Tr),typeof C.themeUseGlobalDefault=="boolean"&&J(C.themeUseGlobalDefault);const Or=C.runtimeMode==="cloud"?"cloud":"local";typeof C.projectRoot=="string"?Ve(C.projectRoot):Or==="cloud"&&Ve(""),typeof C.tenantId=="string"?pe(C.tenantId.trim()):Or==="cloud"&&pe("");const Br=Or==="cloud"?String(C.projectName||"").trim():C.projectName||C.paths?.projectName||"";(String(Br||"").trim().length>0||Or==="cloud")&&It(Br),typeof C.mcpScript=="string"?at(C.mcpScript):Or==="cloud"&&at(""),typeof C.hostRoot=="string"?en(C.hostRoot):Or==="cloud"&&en(""),typeof C.jsonBackupEnabled=="boolean"&&Ia(C.jsonBackupEnabled),typeof C.globalJsonBackupEnabled=="boolean"&&Cs(C.globalJsonBackupEnabled),typeof C.jsonBackupUseGlobalDefault=="boolean"&&Bs(C.jsonBackupUseGlobalDefault);const Kn=C?.schedulePreferences?.weekStartsOn;(Kn==="sunday"||Kn==="monday")&&sa(Kn),typeof C.manualComplexityEnabled=="boolean"&&ea(C.manualComplexityEnabled),typeof C.checklistDropdownEnabled=="boolean"?_a(C.checklistDropdownEnabled):_a(!0),typeof C.showTaskCardStatusLabel=="boolean"?Ta(C.showTaskCardStatusLabel):Ta(!1),typeof C.showTaskCardDescription=="boolean"?ls(C.showTaskCardDescription):ls(!0),typeof C.showTaskCardAttachments=="boolean"?La(C.showTaskCardAttachments):La(!0),typeof C.showTaskCardChecklistProgress=="boolean"?xa(C.showTaskCardChecklistProgress):xa(!0),typeof C.showTaskCardLatestActivity=="boolean"?zn(C.showTaskCardLatestActivity):zn(!0),typeof C.tintTaskCardActivityBackground=="boolean"?ut(C.tintTaskCardActivityBackground):ut(!1)},[Sn,sn,dn,Jt]),Wy=o.useCallback(async()=>{const C=typeof performance<"u"?performance.now():Date.now();try{const ae=await bi("/api/taskforce/version",void 0,$m);if(!ae.ok)return;const ce=await ae.json().catch(()=>({}));ce?.build&&typeof ce.build=="object"&&Tt({version:String(ce.build.version||""),gitSha:ce.build.gitSha?String(ce.build.gitSha):null,buildTime:ce.build.buildTime?String(ce.build.buildTime):null,deployId:ce.build.deployId?String(ce.build.deployId):null}),Cr("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}catch(ae){Io(ae)&&Cr("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}},[bi,Io]),{fetchReferenceData:Jf,fetchConfig:js,fetchWorkspaces:fl,fetchAssigneeOptions:ml,switchWorkspace:Fo,resolveWorkspaceAfterAuth:pu,retryBootstrapChecks:$y,runCloudBootstrap:hu}=UN({shouldDeferProtectedApiCalls:hn,shouldBlockProtectedApiCalls:dt,getWorkspaceRequestState:Ir,isWorkspaceRequestStale:Yr,isWorkspaceEpochStale:Zn,isAbortError:Ln,isBootstrapTimeoutError:Io,fetchWithTimeout:bi,handleUnauthorized:Ro,applyBootstrapConfig:By,loadPersistedUiState:fo,fetchBuildInfo:Wy,markBootstrapPhase:hc,markBootstrapStalled:gs,fetchInitiativeTemplates:Is,setReferenceDataLoaded:kc,setCustomCategories:wi,setCustomTypes:gc,setPriorities:Jn,setTaxonomies:oo,setTaxonomyDisplayLabels:ys,setConfigLoaded:Hi,hasLoadedUiStateRef:Oy,currentWorkspaceIdRef:Jt,referenceDataRequestRef:du,referenceDataAbortRef:Yn,bootstrapConfigAbortRef:Fn,workspaceListAbortRef:Ca,assigneeOptionsAbortRef:yn,workspaceListHydratedRef:Zl,setAvailableWorkspaces:$n,runtimeMode:N,applyResolvedWorkspaceId:Sn,workspaceSwitchingEnabled:kt,authSessionResolved:gt,isAuthenticated:Bt,authUserId:or,authUserAvatarUrl:Qt,setHydratedWorkspaceRole:cr,setAssigneeOptions:ur,setAssigneeOptionsLoaded:Xo,commitCurrentWorkspaceId:(C,ae)=>{Xt.current=C,sn(C,ae),ae?.clearExplicitSelection!==!1&&(Xt.current=null)},currentWorkspaceId:it,workspaceSelectionScope:Xe,abortWorkspaceScopedRequests:fn,setWorkspaceBootstrapPending:St,checkAuthSession:Jr,lastConfigRefreshKeyRef:Vs,lastAssigneeOptionsLoadKeyRef:uo,lastWorkspaceSyncStateLoadKeyRef:ni,lastTaskSurfaceLoadKeyRef:Ni,lastSettingsSurfaceLoadKeyRef:ul,isOpen:Ue,activeTab:Te,showArchive:ft,taskScope:ke,settingsSection:Oe,workspaceBootstrapPending:u,fetchTasks:kn,fetchPlanningEntities:Pr,refreshTaskCollections:Ci,loadWorkspaceSyncState:vy,switchLocalCoordinatorWorkspace:Af,hasBootstrappedDataRef:Jl}),pl=o.useCallback(async()=>{await Jr(),await js()},[Jr,js]);o.useEffect(()=>{if(!dn||u)return;const C=`${N}:${Bt?"auth":"guest"}:${it}:${Qt||"no-avatar"}`;Ai&&uo.current===C||(uo.current=C,ml())},[Ai,Qt,dn,it,ml,Bt,N,u]),o.useEffect(()=>{if(!gt||!Bt)return;const C=String(or||"").trim();if(!C||C==="anonymous")return;const ae=String(Qt||"").trim()||null;ur(ce=>{let X=!1;const Be=ce.map(qe=>qe.kind!=="member"||String(qe.value||"").trim()!==C||(typeof qe.avatarUrl=="string"&&qe.avatarUrl.trim().length>0?qe.avatarUrl.trim():null)===ae?qe:(X=!0,{...qe,avatarUrl:ae}));return X?Be:ce})},[gt,Qt,or,Bt]);const Fy=o.useMemo(()=>kt?lr.find(ae=>ae.id===it)?.role??null:ir,[lr,it,ir,kt]);o.useEffect(()=>{Bt||cr(null)},[Bt]);const Xf=o.useCallback(async()=>{qr(null);const C=await hu({reason:"post-plans",ignoreAuthGuard:!0,tasksSilent:!0});return C.authenticated?C.success?C.workspaceSetupRequired?{success:!0,destination:"setup"}:{success:!0,destination:"app"}:{success:!1,destination:"app",error:C.error||"Unable to resolve workspace after plan selection.",code:C.code}:{success:!1,destination:"login",error:C.error||"Sign in required.",code:C.code||"AUTH_REQUIRED"}},[hu]),Gs=o.useCallback(async C=>{const ae=C?.reason||"retry",ce=typeof C?.preferredWorkspaceId=="string"?C.preferredWorkspaceId.trim():"",X=C?.allowCommercialGate===!0;if(ce&&kt){if(!await Jr({force:!0}))return await js({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const rt=await pu({preferredWorkspaceId:ce});if(!rt.success)return await js({ignoreAuthGuard:!0}),{success:!1,error:rt.error||"Unable to resolve workspace access.",code:rt.code};if(rt.workspaceSetupRequired)return await js({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const Be=await hu({reason:ae,ignoreAuthGuard:!0,tasksSilent:!0});return Be.authenticated?Be.success?Be.workspaceSetupRequired?X?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(X||Gd({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:Be.error||"Unable to resolve workspace access.",code:Be.code}:{success:!1,error:Be.error||"Sign in required.",code:Be.code||"AUTH_REQUIRED"}},[Jr,js,pu,hu,Gd,kt]),Uy=o.useCallback(async(C,ae)=>{if(!kt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const ce=String(C||"").trim();if(!ce)return{success:!1,error:"Workspace name is required."};try{const X=await fetch("/api/taskforce/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:ce,description:typeof ae=="string"?ae:void 0})}),Be=await X.json().catch(()=>({}));if(!X.ok||Be?.success===!1)return{success:!1,error:Be?.error||`Failed to create workspace (${X.status})`,code:Be?.code};const qe=Be?.workspace;if(await fl(),qe?.id){const rt=await Fo(qe.id);if(!rt.success)return{success:!1,error:rt.error||"Workspace created but failed to activate.",code:rt.code}}return{success:!0,workspace:qe}}catch{return{success:!1,error:"Failed to create workspace."}}},[fl,Fo,kt]),Vp=o.useCallback(async C=>{if(!kt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const ae=String(C||"").trim();if(!ae)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const ce=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(ae)}`,{method:"DELETE",credentials:"include"}),X=await ce.json().catch(()=>({}));if(!ce.ok||X?.success===!1)return{success:!1,error:X?.error||`Failed to delete workspace (${ce.status})`,code:X?.code};await Jr({force:!0}),await Promise.all([js(),fl()]);const Be=typeof X?.nextWorkspaceId=="string"?X.nextWorkspaceId.trim():"";return Be&&sn(Be),{success:!0,nextWorkspaceId:Be||void 0,workspaceSetupRequired:X?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(X?.cleanupWarnings)?X.cleanupWarnings.map(qe=>String(qe||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[Jr,sn,js,fl,kt]),Gp=o.useCallback(async C=>{const ae=C==="operations"?"operations":"core";try{const ce=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:ae}})}),X=await ce.json().catch(()=>({}));return!ce.ok||X?.success===!1?!1:(await pl(),!0)}catch{return!1}},[pl]),Kp=o.useCallback(async C=>{const ae=String(C?.name||"").trim(),ce=typeof C?.workspaceId=="string"?C.workspaceId.trim():"";if(!ae)return{success:!1,error:"Workspace name is required.",code:"WORKSPACE_NAME_REQUIRED"};try{const X=await fetch("/api/taskforce/workspace-profile",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-runtime-mode":N},credentials:"include",body:JSON.stringify({workspaceId:ce&&ce!=="default"?ce:void 0,name:ae,description:typeof C.description=="string"?C.description:void 0,allowCreate:!0})}),Be=await X.json().catch(()=>({}));if(!X.ok||Be?.success===!1)return{success:!1,error:Be?.error||`Failed to save workspace (${X.status})`,code:Be?.code};const qe=String(Be?.workspace?.id||"").trim();if(qe&&(sn(qe),await new Promise(rt=>window.setTimeout(rt,0)),N==="cloud"&&Bt&&qe!==it)){const rt=await Fo(qe);if(!rt.success)return{success:!1,error:rt.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await pl(),{success:!0,workspaceId:qe||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[sn,pl,N,Bt,it,Fo]),zy=o.useCallback(async(C,ae)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ce=C.trim().toLowerCase(),X=ae;if(!ce||!X)return{success:!1,error:"Email and password are required."};try{const Be=await fetch(G("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(xR({email:ce,password:X,activeWorkspaceId:Jt.current}))}),qe=await Be.json().catch(()=>({}));if(!Be.ok||!qe?.success)return{success:!1,error:qe?.error||"Sign in failed.",code:qe?.code};ca("");const rt=await Gs();return rt.success?(NS(),{success:!0,workspaceSetupRequired:rt.workspaceSetupRequired===!0}):{success:!1,error:rt.error||"Unable to resolve workspace after sign in.",code:rt.code}}catch{return{success:!1,error:"Sign in failed."}}},[G,V,Jt,Gs]),Hy=o.useCallback((C,ae,ce)=>{let X="/";try{const qe=new URL(String(ae||"/"),"https://taskforce.local");qe.origin==="https://taskforce.local"&&String(ae||"/").startsWith("/")&&!String(ae||"/").startsWith("//")&&(X=`${qe.pathname}${qe.search}${qe.hash}`)}catch{X="/"}let Be=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?return_to=${encodeURIComponent(X)}`;ce&&(Be+=`&invite_token=${encodeURIComponent(ce)}`),window.location.href=G(Be)},[G]),Vy=o.useCallback(async(C,ae,ce)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const X=C.trim().toLowerCase(),Be=ae;if(!X||!Be)return{success:!1,error:"Email and password are required."};try{const qe=await fetch(G("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:X,password:Be,...typeof ce?.displayName=="string"&&ce.displayName.trim()?{displayName:ce.displayName.trim()}:{},...typeof ce?.planId=="string"&&ce.planId.trim()?{planId:ce.planId.trim()}:{},...typeof ce?.planVersionId=="string"&&ce.planVersionId.trim()?{planVersionId:ce.planVersionId.trim()}:{},...typeof ce?.interval=="string"&&ce.interval.trim()?{interval:ce.interval.trim()}:{}})}),rt=await qe.json().catch(()=>({}));if(!qe.ok||!rt?.success)return{success:!1,error:rt?.error||"Create account failed.",code:rt?.code,verificationRequired:!!rt?.verificationRequired,verificationToken:typeof rt?.verificationToken=="string"?rt.verificationToken:void 0,emailSent:rt?.emailSent!==!1,emailError:typeof rt?.emailError=="string"?rt.emailError:void 0};const Kt=rt?.planSelectionRequired===!0,mr=rt?.checkoutPending===!0,Tr=typeof rt?.commercialState=="string"?rt.commercialState:null,Or=!!rt?.verificationRequired;if(!Or){if(ca(""),!!(Kt||mr||Tr==="pending_plan_selection"||Tr==="checkout_pending"))return await Jr({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:Kt,checkoutPending:mr,commercialState:Tr,verificationRequired:Or,verificationToken:typeof rt?.verificationToken=="string"?rt.verificationToken:void 0,emailSent:rt?.emailSent!==!1,emailError:typeof rt?.emailError=="string"?rt.emailError:void 0}:{success:!1,error:"Unable to resolve workspace after registration.",code:"AUTH_REQUIRED"};const Kn=await Gs({allowCommercialGate:!1});return Kn.success?{success:!0,workspaceSetupRequired:Kn.workspaceSetupRequired===!0,planSelectionRequired:Kt,checkoutPending:mr,commercialState:Tr,verificationRequired:Or,verificationToken:typeof rt?.verificationToken=="string"?rt.verificationToken:void 0,emailSent:rt?.emailSent!==!1,emailError:typeof rt?.emailError=="string"?rt.emailError:void 0}:{success:!1,error:Kn.error||"Unable to resolve workspace after registration.",code:Kn.code}}return{success:!0,workspaceSetupRequired:!!rt?.workspaceSetupRequired,planSelectionRequired:Kt,checkoutPending:mr,commercialState:Tr,verificationRequired:Or,verificationToken:typeof rt?.verificationToken=="string"?rt.verificationToken:void 0,emailSent:rt?.emailSent!==!1,emailError:typeof rt?.emailError=="string"?rt.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[Jr,G,V,Gs]),Gy=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ae=String(C.displayName||"").trim(),ce=typeof C.avatarDraftId=="string"?C.avatarDraftId.trim():"",X=C.clearAvatar===!0;if(!ae)return{success:!1,error:"Display name is required."};try{const Be=await fetch(G("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:ae,...ce?{avatarDraftId:ce}:{},...X?{clearAvatar:!0}:{}})}),qe=await Be.json().catch(()=>({}));if(!Be.ok||!qe?.success)return{success:!1,error:qe?.error||"Failed to update profile.",code:qe?.code};const rt={userId:typeof qe?.profile?.userId=="string"?qe.profile.userId:or,email:typeof qe?.profile?.email=="string"?qe.profile.email:nt,displayName:typeof qe?.profile?.displayName=="string"?qe.profile.displayName:null,avatarUrl:typeof qe?.profile?.avatarUrl=="string"?qe.profile.avatarUrl:null};return xt(rt.displayName||""),Ct(rt.avatarUrl||""),{success:!0,profile:rt}}catch{return{success:!1,error:"Failed to update profile."}}},[G,V,nt,or]),Ky=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ae=C.trim().toLowerCase();if(!ae)return{success:!1,error:"Email is required."};try{const ce=await fetch(G("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:ae})}),X=await ce.json().catch(()=>({}));return!ce.ok||!X?.success?{success:!1,error:X?.error||"Failed to request verification email.",code:X?.code}:{success:!0,verificationToken:X?.verificationToken??null,emailSent:X?.emailSent!==!1,deliveryAttempted:X?.deliveryAttempted===!0||typeof X?.verificationToken=="string"&&X.verificationToken.trim().length>0,emailError:typeof X?.emailError=="string"?X.emailError:void 0}}catch{return{success:!1,error:"Failed to request verification email."}}},[G,V]),Na=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ae=C.trim();if(!ae)return{success:!1,error:"Token is required."};try{const ce=await fetch(G("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ae})}),X=await ce.json().catch(()=>({}));return!ce.ok||!X?.success?{success:!1,error:X?.error||"Verification failed.",code:X?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[G,V]),Qf=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ae=C.trim().toLowerCase();if(!ae)return{success:!1,error:"Email is required."};try{const ce=await fetch(G("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:ae})}),X=await ce.json().catch(()=>({}));return!ce.ok||!X?.success?{success:!1,error:X?.error||"Failed to request password reset.",code:X?.code}:{success:!0,resetToken:X?.resetToken??null,emailSent:X?.emailSent!==!1,deliveryAttempted:X?.deliveryAttempted===!0||typeof X?.resetToken=="string"&&X.resetToken.trim().length>0,emailError:typeof X?.emailError=="string"?X.emailError:void 0}}catch{return{success:!1,error:"Failed to request password reset."}}},[G,V]),qp=o.useCallback(async(C,ae)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ce=C.trim(),X=ae;if(!ce||!X)return{success:!1,error:"Token and password are required."};try{const Be=await fetch(G("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ce,password:X})}),qe=await Be.json().catch(()=>({}));return!Be.ok||!qe?.success?{success:!1,error:qe?.error||"Failed to reset password.",code:qe?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[G,V]),Yp=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ae=C.trim();if(!ae)return{success:!1,error:"Token is required."};try{const ce=await fetch(G("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ae})}),X=await ce.json().catch(()=>({}));return!ce.ok||!X?.success?{success:!1,error:X?.error||"Invite inspection failed.",code:X?.code,state:X?.state}:{success:!0,state:X?.state,email:typeof X?.email=="string"?X.email:void 0,workspaceId:typeof X?.workspaceId=="string"?X.workspaceId:void 0,inviteeKind:X?.inviteeKind==="existing_user"?"existing_user":"new_user",passwordRequired:X?.passwordRequired===!0,inviteeState:X?.inviteeState==="existing_account"?"existing_account":"pending_setup",availableMethods:Array.isArray(X?.availableMethods)?X.availableMethods:[]}}catch{return{success:!1,error:"Invite inspection failed."}}},[G,V]),Zp=o.useCallback(async(C,ae)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ce=C.trim(),X=ae;if(!ce||!X)return{success:!1,error:"Token and password are required."};try{const Be=await fetch(G("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ce,password:X})}),qe=await Be.json().catch(()=>({}));if(!Be.ok||!qe?.success)return{success:!1,error:qe?.error||"Invite acceptance failed.",code:qe?.code};ca("");const rt=typeof qe?.workspaceId=="string"?qe.workspaceId:null;if(rt&&kt){const mr=await Fo(rt,{hydrate:!1});if(!mr.success)return{success:!1,error:mr.error||"Unable to resolve workspace after invite acceptance.",code:mr.code}}const Kt=await Gs({preferredWorkspaceId:rt});return Kt.success?(rt&&Jt.current!==rt&&sn(rt,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Kt.workspaceSetupRequired===!0}):{success:!1,error:Kt.error||"Unable to resolve workspace after invite acceptance.",code:Kt.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[sn,G,V,Jt,Gs,Fo,kt]),em=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ae=C.trim();if(!ae)return{success:!1,error:"Token is required."};try{const ce=await fetch(G("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ae})}),X=await ce.json().catch(()=>({}));if(!ce.ok||!X?.success)return{success:!1,error:X?.error||"Invite join failed.",code:X?.code};ca("");const Be=typeof X?.workspaceId=="string"?X.workspaceId:null;if(Be&&kt){const rt=await Fo(Be,{hydrate:!1});if(!rt.success)return{success:!1,error:rt.error||"Unable to resolve workspace after invite join.",code:rt.code}}const qe=await Gs({preferredWorkspaceId:Be});return qe.success?(Be&&Jt.current!==Be&&sn(Be,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:qe.workspaceSetupRequired===!0}):{success:!1,error:qe.error||"Unable to resolve workspace after invite join.",code:qe.code}}catch{return{success:!1,error:"Invite join failed."}}},[sn,G,V,Jt,Gs,Fo,kt]),Jp=o.useCallback(async()=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const C=await fetch(G("/api/taskforce/auth/login-methods"),{credentials:"include"}),ae=await C.json().catch(()=>({}));return!C.ok||!ae?.success?{success:!1,error:ae?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(ae?.methods)?ae.methods:[]}}catch{return{success:!1,error:"Failed to fetch login methods."}}},[G,V]),gu=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const ae=await fetch(G(`/api/taskforce/auth/login-methods/${encodeURIComponent(C)}`),{method:"DELETE",credentials:"include"}),ce=await ae.json().catch(()=>({}));return!ae.ok||!ce?.success?{success:!1,error:ce?.error||"Unlink failed.",code:ce?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[G,V]),qy=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const ae=await fetch(G("/api/taskforce/auth/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:C})}),ce=await ae.json().catch(()=>({}));return!ae.ok||!ce?.success?{success:!1,error:ce?.error||"Failed to add password.",code:ce?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[G,V]),Zi=o.useCallback(async(C,ae)=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const ce=await fetch(G("/api/taskforce/auth/password/change"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({currentPassword:C,newPassword:ae})}),X=await ce.json().catch(()=>({}));return!ce.ok||!X?.success?{success:!1,error:X?.error||"Failed to change password.",code:X?.code}:(await Jr({force:!0}),NS(),{success:!0})}catch{return{success:!1,error:"Failed to change password."}}},[G,V,Jr]),yu=o.useCallback((C,ae)=>{const ce=ae&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(ae)?ae:"/",X=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?flow=link&return_to=${encodeURIComponent(ce)}`;window.location.href=G(X)},[G]),ed=o.useCallback(()=>{fn(),du.current=null,uo.current="",Vs.current="",ni.current="",Ni.current="",ul.current="",Zf({clearLoaded:!0}),kc(!1),ur(El()),Xo(!1),Gn([]),ar([]),gn([]),ta([]),fs([]),no([]),Fs(Zk()),$a(!1)},[fn,Zf,gn,ar]),Yy=o.useCallback(async()=>{try{await zd().catch(()=>!1),V&&await fetch(G("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if(fn(),Ge.current+=1,Hr.current=null,hr.current=!1,Xr.current=Date.now(),wr(!1),Fr(!0),$r("anonymous"),Me(""),Nm(null),pt(""),xt(""),Ct(""),es("disconnected"),hf(null),Ft(!0),It(""),Hi(!1),kc(!1),Wt(null),er("idle"),qr(null),Zf({clearLoaded:!0}),N!=="local"&&Qb(Xe),pr(N==="cloud"&&Ot),sn("default"),$n([]),Zl.current=!1,cr(null),N==="local"){await Promise.allSettled([js({ignoreAuthGuard:!0}),kn(!0,{ignoreAuthGuard:!0}),Pr({ignoreAuthGuard:!0}),Jf({ignoreAuthGuard:!0,force:!0})]);return}Jl.current=!1,ed()}},[fn,Ot,zd,Qb,sn,G,V,Xe,N,js,Pr,Jf,kn,ed]),hl=o.useRef(null),rs=o.useCallback(async(C,ae,ce)=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");const X=ce||`operation-${globalThis.crypto.randomUUID()}`,Be={...ae,headers:{...ae.headers||{},"x-taskforce-operation-id":X}};try{return await fetch(C,Be)}catch{return fetch(C,Be)}},[]),ha=o.useMemo(()=>BD(),[]),ku=o.useCallback(async C=>{try{const ae=JSON.stringify(C);if(hl.current?.requestBody!==ae){if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");hl.current={requestBody:ae,operationId:`operation-${globalThis.crypto.randomUUID()}`}}const ce=await rs("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:ae},hl.current.operationId),X=await ce.json().catch(()=>({}));return!ce.ok||!X?.success?{success:!1,error:X?.error||`Create failed (${ce.status})`}:(hl.current=null,await kn(!0),{success:!0,result:X?.results})}catch(ae){return{success:!1,error:ae.message}}},[kn,rs]),Xp=o.useCallback(async C=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative identity generation is unavailable.");const ae={...C||{},id:C?.id||`initiative-${globalThis.crypto.randomUUID()}`,createdAt:C?.createdAt||new Date().toISOString()},ce=await rs("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ae)}),X=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(X?.error||`Failed to create initiative (${ce.status})`);return await Pr(),ta(Be=>oi(Be,X)),X},[Pr,rs]),tm=o.useCallback(async(C,ae)=>{const ce=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ae||{})}),X=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(X?.error||`Failed to update initiative (${ce.status})`);return await Pr(),ta(Be=>oi(Be,X)),X},[Pr,rs]),gl=o.useCallback(async(C,ae,ce)=>{const X=await rs(`/api/taskforce/${C}/${encodeURIComponent(ae)}/identity`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ce)}),Be=await X.json().catch(()=>({}));if(!X.ok)throw new Error(Be?.error||`Failed to update ${C} identity (${X.status})`);return C==="initiative"?ta(qe=>oi(qe,Be)):fs(qe=>oi(qe,Be)),Pr(),Be},[Pr,rs]),ns=o.useCallback(()=>{Pr()},[Pr]),yl=o.useCallback(async C=>{const ae=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}/archive`,{method:"POST"}),ce=await ae.json().catch(()=>({}));if(!ae.ok)throw new Error(ce?.error||`Failed to archive initiative (${ae.status})`);return ta(X=>oi(X,ce)),ns(),ce},[ns,rs]),Qp=o.useCallback(async C=>{const ae=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}/unarchive`,{method:"POST"}),ce=await ae.json().catch(()=>({}));if(!ae.ok)throw new Error(ce?.error||`Failed to unarchive initiative (${ae.status})`);return ta(X=>oi(X,ce)),ns(),ce},[ns,rs]),eh=o.useCallback(async C=>{const ae=await ha.prepareCreate(Jt.current||"default",C||{}),ce=await Tm("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ae.body)},ae.operationId),X=!ce.ok&&await _m(ce),Be=await ce.json().catch(()=>({}));if(!ce.ok){X&&await ha.abandonCreate(ae.fingerprint,ae.operationId);const qe=Be?.retryAt?` Retry after ${Be.retryAt}.`:"";throw new Error(`${Be?.error||`Failed to create workstream (${ce.status})`}${qe}`)}if(Be?.id!==ae.body.id)throw new Error("Created workstream identity did not match the retained request identity.");return await ha.confirmCreate(ae.fingerprint,ae.operationId),await Pr(),fs(qe=>{const rt=OD(qe,Be);return rt?oi(qe,rt):qe}),Be},[Jt,Pr,ha]),Zy=o.useCallback(async(C,ae)=>{const ce=`/api/taskforce/workstream/${encodeURIComponent(C)}`,X=ae||{},Be=mn.find(Or=>Or.id===C),qe=Be?{updatedAt:Be.updatedAt||null,initiativeId:Be.initiativeId||null,ownerId:Be.ownerId||null,isArchived:!!Be.isArchived}:null,rt=await ha.prepareMutation(Jt.current||"default",ce,X,qe),Kt=await Tm(ce,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(X)},rt.operationId),mr=!Kt.ok&&await _m(Kt),Tr=await Kt.json().catch(()=>({}));if(!Kt.ok){mr&&await ha.abandonMutation(rt.fingerprint,rt.operationId);const Or=Tr?.retryAt?` Retry after ${Tr.retryAt}.`:"";throw new Error(`${Tr?.error||`Failed to update workstream (${Kt.status})`}${Or}`)}if(Tr?.id!==C)throw new Error("Updated workstream identity did not match the requested workstream.");return await ha.confirmMutation(rt.fingerprint,rt.operationId),await Pr(),fs(Or=>oi(Or,Tr)),Tr},[Jt,Pr,ha,mn]),rm=o.useCallback(async(C,ae)=>{const ce=`/api/taskforce/workstream/${encodeURIComponent(C)}/task-order`,X={taskIds:ae},Be=mn.find(Or=>Or.id===C),qe=await ha.prepareMutation(Jt.current||"default",ce,X,{updatedAt:Be?.updatedAt||null,workstreamId:C}),rt=await Tm(ce,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(X)},qe.operationId),Kt=!rt.ok&&await _m(rt),mr=await rt.json().catch(()=>({}));if(!rt.ok){Kt&&await ha.abandonMutation(qe.fingerprint,qe.operationId);const Or=mr?.retryAt?` Retry after ${mr.retryAt}.`:"";throw new Error(`${mr?.error||`Failed to reorder workstream tasks (${rt.status})`}${Or}`)}if(mr?.workstreamId!==C||!Array.isArray(mr?.taskIds))throw new Error("Reordered workstream task response did not match the request.");await ha.confirmMutation(qe.fingerprint,qe.operationId);const Tr=new Map(mr.taskIds.map((Or,Br)=>[Or,(Br+1)*1024]));ar(Or=>Or.map(Br=>Tr.has(Br.id)?{...Br,workstreamOrder:Tr.get(Br.id)}:Br)),await Pr()},[Jt,Pr,ha,mn]),th=o.useCallback(async C=>{const ae=`/api/taskforce/workstream/${encodeURIComponent(C)}/archive`,ce=mn.find(Kt=>Kt.id===C),X=await ha.prepareMutation(Jt.current||"default",ae,{},ce?{updatedAt:ce.updatedAt||null,isArchived:!!ce.isArchived}:null),Be=await Tm(ae,{method:"POST"},X.operationId),qe=!Be.ok&&await _m(Be),rt=await Be.json().catch(()=>({}));if(!Be.ok){qe&&await ha.abandonMutation(X.fingerprint,X.operationId);const Kt=rt?.retryAt?` Retry after ${rt.retryAt}.`:"";throw new Error(`${rt?.error||`Failed to archive workstream (${Be.status})`}${Kt}`)}if(rt?.id!==C)throw new Error("Archived workstream identity did not match the requested workstream.");return await ha.confirmMutation(X.fingerprint,X.operationId),await Pr(),fs(Kt=>oi(Kt,rt)),rt},[Jt,Pr,ha,mn]),Uo=o.useCallback(async C=>{const ae=`/api/taskforce/workstream/${encodeURIComponent(C)}/unarchive`,ce=mn.find(Kt=>Kt.id===C),X=await ha.prepareMutation(Jt.current||"default",ae,{},ce?{updatedAt:ce.updatedAt||null,isArchived:!!ce.isArchived}:null),Be=await Tm(ae,{method:"POST"},X.operationId),qe=!Be.ok&&await _m(Be),rt=await Be.json().catch(()=>({}));if(!Be.ok){qe&&await ha.abandonMutation(X.fingerprint,X.operationId);const Kt=rt?.retryAt?` Retry after ${rt.retryAt}.`:"";throw new Error(`${rt?.error||`Failed to unarchive workstream (${Be.status})`}${Kt}`)}if(rt?.id!==C)throw new Error("Unarchived workstream identity did not match the requested workstream.");return await ha.confirmMutation(X.fingerprint,X.operationId),await Pr(),fs(Kt=>oi(Kt,rt)),rt},[Jt,Pr,ha,mn]),nm=o.useRef(!1);o.useEffect(()=>{st(!0),!nm.current&&(nm.current=!0,Jr())},[Jr]),o.useEffect(()=>{E&&Jr()},[E,Jr]),o.useEffect(()=>{if(!V)return;let C=!1;const ae=new AbortController,ce=typeof window<"u"?window.setTimeout(()=>ae.abort(),5e3):null;return fetch(G("/api/taskforce/auth/providers"),{credentials:"include",signal:ae.signal}).then(X=>X.ok?X.json():null).then(X=>{!C&&Array.isArray(X?.providers)&&Nt(X.providers)}).catch(()=>{}).finally(()=>{ce!==null&&typeof window<"u"&&window.clearTimeout(ce)}),()=>{C=!0,ae.abort()}},[V,G]),o.useEffect(()=>{if(N!=="local"||!me||typeof window>"u")return;const C=()=>{Jr()},ae=()=>{document.visibilityState==="visible"&&C()};window.addEventListener("focus",C),window.addEventListener("online",C),document.addEventListener("visibilitychange",ae);const ce=window.setInterval(C,3e4);return()=>{window.removeEventListener("focus",C),window.removeEventListener("online",C),document.removeEventListener("visibilitychange",ae),window.clearInterval(ce)}},[N,me,Jr]),o.useEffect(()=>{s&&s(qt.length)},[qt.length,s]);const vn=o.useMemo(()=>{const C=String(t||"").trim();return C?[String(n||"").trim(),C,String(r||"").trim()].join(":"):""},[r,t,n]),Lc=o.useRef(vn);Lc.current=vn;const td=o.useRef(null),Es=o.useRef(null),Oc=o.useRef(null),ai=o.useRef(null),rd=o.useRef(null),Ji=o.useRef(new Set),vu=o.useRef(new Set),Bc=o.useRef(new Map),mo=o.useRef(null),Di=o.useRef(null),[rh,kl]=o.useState(0);o.useEffect(()=>{const C=ai.current;C&&Za.current?.ownerKey===C&&Vn(),ai.current=null,td.current=null,Es.current=null,Oc.current=null,rd.current=null,Ji.current.clear(),vu.current.clear(),Bc.current.clear(),mo.current!==null&&typeof window<"u"&&(window.clearTimeout(mo.current),mo.current=null),Di.current!==null&&typeof window<"u"&&(window.clearTimeout(Di.current),Di.current=null),kl(ae=>ae+1)},[Vn,vn]),o.useEffect(()=>()=>{mo.current!==null&&typeof window<"u"&&(window.clearTimeout(mo.current),mo.current=null),Di.current!==null&&typeof window<"u"&&(window.clearTimeout(Di.current),Di.current=null)},[]);const nh=o.useRef(!1);o.useEffect(()=>{if(!dn)return;if(!nh.current&&un.length>0){nh.current=!0;const ae=nu,ce=un.some(X=>X.label===ae||X.value===ae);if(ae&&ce){const X=un.find(Be=>Be.label===ae||Be.value===ae);ol(X?.value||ae)}else ol(Qa(un));return}const C=un.some(ae=>ae.value===xs);un.length>0&&!C&&ol(Qa(un))},[dn,un,xs,Qa,nu]),o.useEffect(()=>{if(!dn||!xo||un.length===0)return;const C=X=>!un.some(Be=>Be.value===X.category),ae=qt.some(C),ce=Sr.some(C);if(ae||ce){const X=Qa(un);ae&&ar(Be=>Be.map(qe=>C(qe)?{...qe,category:X}:qe)),ce&&gn(Be=>Be.map(qe=>C(qe)?{...qe,category:X}:qe))}},[dn,xo,un,qt,Sr,Qa]),o.useEffect(()=>{},[Ci]);const Jy=o.useCallback(async()=>{await Eo(Nd(["active","archive","deleted","planning"],{ambiguous:!0}))},[Eo]);o.useEffect(()=>{if(typeof window>"u")return;const C=ae=>{const ce=ae.detail;(String(ce?.workspaceId||"").trim()||"default")===it&&(ce?.authoritativeTask||Eo(Nd(ce?.affectedCollections?.length?ce.affectedCollections:["active","archive"],{taskIds:ce?.taskId?[ce.taskId]:[]})))};return window.addEventListener(Wd,C),()=>{window.removeEventListener(Wd,C)}},[it,Eo]);const nd=String(it||"").trim(),am=String(or||"").trim(),wu=ne("/taskforce-ws"),Xy=!!(V&&N==="cloud"&>&&Bt&&am&&am!=="anonymous"&&nd&&!Aw(nd)&&wu);o.useEffect(()=>()=>{Yi.current!==null&&typeof window<"u"&&(window.clearTimeout(Yi.current),Yi.current=null)},[it]);const Qy=o.useCallback(C=>{if(N!=="cloud")return;e_({workspaceId:nd,source:"realtime"});const ae=ND(C.type,C.invalidations);ae.collections.length!==0&&(Eo(ae),!(!ae.ambiguous||typeof window>"u")&&(Yi.current!==null&&window.clearTimeout(Yi.current),Yi.current=window.setTimeout(()=>{Yi.current=null,Eo(ae)},250)))},[nd,N,Eo]);II({enabled:Xy,workspaceId:nd,websocketUrl:wu,onSignal:Qy,userId:am||void 0}),VN({workspaceId:it,isOpen:Ue,authBlocked:tr,authRequiredForApi:Ot,isAuthenticated:Bt,canCallProtectedApi:Rn.canCallProtectedApi,shouldGateProtectedApiCalls:$,authSessionResolvedRef:lu,authRequiredForApiRef:Vf,isAuthenticatedRef:dl,dataVersionRef:zf,refreshTaskCollectionsForDataVersion:Jy,coordinatorDataVersion:Sf});const Xi=o.useMemo(()=>$D(qt,Sr,Cn,Ar),[qt,Sr,Cn,Ar]),Mi=o.useMemo(()=>sr.map(C=>({...C.taskSnapshot,isDeleted:!0,deletedRecordId:C.id})),[sr]);o.useEffect(()=>{if(!(hn||dt)&&Ue&&!u){if(Te==="tasks"){const C=`${it}:${Te}:${ft?"archive":"active"}:${ke}`,ae=ft||ke==="archived",ce=ke==="deleted";if(!Hf.current){Hf.current=!0,Ni.current=C,ae&&la(!1),ce&&Po(!1);return}if(Ni.current===C)return;Ni.current=C,!ae&&!ce&&kn(),Pr(),ae&&la(!1),ce&&Po(!1);return}if(Te==="settings"){const C=`${it}:${Te}:${Oe}`;if(ul.current===C)return;ul.current=C,js()}}},[it,Ue,Te,Oe,ft,ke,kn,Pr,la,Po,js,hn,dt,u]);const ad=o.useCallback(async(C="")=>{try{const ae=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(C)}`);if(ae.ok){const ce=await ae.json();Ce(ce.folders||[]),he(ce.files||[]),et(C)}}catch(ae){console.error("[Taskforce] Failed to fetch folders:",ae)}},[]),vl=o.useCallback(C=>{const ae=[];if(C.path&&ae.push(C.path),C.paths&&C.paths.length>0)for(const ce of C.paths)ae.includes(ce)||ae.push(ce);return ae},[]),{validatePaths:bu,handleUpdateCategory:Ks,handleSaveCategory:Qi,handleAddPath:wl,handleUpdateCategoryIcon:ah,handleUpdateCategoryColor:sh,handleRemovePath:oh,handleSelectPath:ih,handleRemoveCategory:ek,handleSaveType:sd,handleRemoveType:sm,handleUpdateType:ch,handleUpdateTaxonomies:Su,handleUpdatePriorities:Au,analyzeSystemTaxonomyPack:tk,handleApplySystemTaxonomyPack:ec}=HE({activeCategories:un,activeTab:Te,activeTypes:ra,archivedTasks:Sr,browserTarget:Fe,category:xs,configLoaded:dn,customCategories:hs,refreshTaskCollections:Ci,fetchTasks:kn,filterCategories:Rf,getCategoryPaths:vl,normalizePath:At,pathValidation:ma,setBrowserTarget:yt,setCategory:ol,setCustomCategories:wi,setCustomTypes:gc,setFilterCategories:Wo,setPathValidation:zs,setPriorities:Jn,setShowFolderBrowser:je,setTaxonomies:oo,tasks:qt}),lh=o.useCallback(async C=>{const ae=Jo,ce={...ae,...C};ys(ce);try{const X=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:C})});if(!X.ok)throw new Error(`Failed to save taxonomy display labels (${X.status})`);const Be=await X.json().catch(()=>({}));Be?.displayLabels&&typeof Be.displayLabels=="object"&&ys({...ce,...Be.displayLabels})}catch(X){console.error("[Taskforce] Failed to update taxonomy display labels",X),ys(ae)}},[Jo]),od=o.useCallback(C=>{Te==="tasks"&&_s.current&&we(_s.current.scrollTop),Le(C)},[Te]),dh=o.useRef(async()=>!0),Cu=o.useCallback(C=>{const ae={taskId:C.id,task:C,draft:Lk(C)};ps.current=ae,Us(ae),Fa.current=null,va(null)},[]),{handleNavigation:tc,handleClose:rk,resetForm:om,resolveWorkstreamIdInput:id,handleEdit:Wc,applyTaskToEditor:Iu,handleOpenTaskById:qs,returnToPreviousTask:uh,clearReturnToParentTask:cd}=XE({activeCategories:un,activeTypes:ra,activeTab:Te,attachments:Ec,checklistItems:Ul,comments:xi,cancelTaskDetailLoad:Mt,description:Ps,editingTaskId:Ar,flushPendingAutoSave:()=>dh.current(),getDescriptionDraft:Fl,getPreferredCategoryValue:Qa,getTitleDraft:eu,lastUsedCategory:nu,loadTaskDetail:Vt,newCommentText:zl,onTaskApplied:Cu,relationshipTasks:Xi,workstreams:mn,showArchive:ft,taxonomies:pa,setActiveTab:od,setAssignee:Zd,setAttachments:Op,setAttachmentsDirty:Ei,setCategory:ol,setChecklistItems:tu,setComments:_c,setComplexity:Yd,setDescription:Gi,setDueDate:Xd,setEditingTaskId:vi,setError:ca,setFormTaxonomies:Bo,setIsOpen:st,setNewCommentText:ru,setPendingNavigation:Ya,setWorkstreamInput:Qd,setPriority:qd,setScheduledDate:Jd,setShowArchive:xe,setStatus:ri,setTaskReturnTrail:yi,setTitle:Ti,setType:Do,setUnsavedModalOpen:Nr,taskReturnTrail:Ao,title:_i}),po=o.useCallback(()=>{const C=Oo.trim()?id(Oo):null;return{title:eu(),description:Fl(),category:typeof xs=="string"?xs:String(xs.label||""),type:typeof ts=="string"?ts:String(ts.label||""),priority:Mo,complexity:Number(il)||3,status:ti,assignee:Cc,scheduledDate:Rs,dueDate:Lo,workstreamId:C?.id||Oo.trim(),taxonomies:{...Hl},checklistItems:[...Ul],attachments:ql()}},[Cc,xs,Ul,il,Lo,Hl,ql,Fl,eu,Mo,id,Rs,ti,ts,Oo]);o.useEffect(()=>{const C=String(Xa||"").trim();if(!Mc||!C)return;if(Ar===C){wa(null);return}if(ka||u)return;const ae=rt=>rt.id===C||rt.id.endsWith(C);if(Xi.find(ae)){qs(C),wa(null);return}const X=String(Jt.current||"default").trim()||"default",Be=`${X}:${C}`;if(En!==X&&!ao.has(Be)){la(!0).finally(()=>{(String(Jt.current||"default").trim()||"default")===X&&Ts(Kt=>Kt.has(Be)?Kt:new Set(Kt).add(Be))});return}const qe=Mi.find(ae);if(qe){Wc(qe),wa(null);return}if(_n!==X){Po(!0);return}wa(null)},[En,ao,_n,Mi,Ar,la,Po,Wc,qs,ka,Xa,Xi,Mc,u]),o.useEffect(()=>{const C=String(t||"").trim();if(!C||!vn||td.current===vn||!E||!dn||!Mc||ka||u)return;const ae=String(n||"").trim(),ce=String(Jt.current||"default").trim()||"default",X=()=>{const mr=ai.current;mr&&Za.current?.ownerKey===mr&&Vn(),ai.current=null};if(ae&&ae!==ce){if(Es.current===vn)return;if(N!=="cloud"||!kt){Es.current!==vn&&(Es.current=vn,Hn("This task is unavailable or you do not have access to it.","info",12e3));return}if(!gt||!Bt||tr||Oc.current===vn||Di.current!==null)return;const mr=vn,Tr=`${mr}:workspace`;Oc.current=mr,Fo(ae).then(Or=>{if(Lc.current===mr&&!Or.success){const Br=(Bc.current.get(Tr)||0)+1;if(Bc.current.set(Tr,Br),Br<2&&typeof window<"u"){Di.current=window.setTimeout(()=>{Di.current=null,Lc.current===mr&&kl(Ns=>Ns+1)},500);return}Es.current=mr;const Kn=`deep-link-workspace:${mr}`;ai.current=Kn,Hn("This task is unavailable or you do not have access to it.","info",12e3,{label:"Retry",onAction:()=>{Lc.current===mr&&(ai.current=null,Es.current=null,Bc.current.delete(Tr),Vn(),kl(Ns=>Ns+1))},ownerKey:Kn})}}).finally(()=>{Oc.current===mr&&(Oc.current=null)});return}const Be=mr=>{const Tr=mr.find(Br=>Br.id===C);if(Tr||ae)return Tr;const Or=mr.filter(Br=>Br.id.endsWith(C));return Or.length===1?Or[0]:void 0},qe=Be(Xi);if(qe){X(),td.current=vn,Es.current=null,Ar!==qe.id&&(qe.isArchived&&xe(!0),Wc(qe));return}const rt=(mr,Tr,Or)=>{const Br=`${vn}:${mr}`;if(rd.current===Br||mo.current!==null)return;rd.current=Br;const Kn=vn;Tr().then(Ns=>{if(Lc.current!==Kn)return;if(Ns){kl(Ys=>Ys+1);return}const go=(Bc.current.get(Br)||0)+1;if(Bc.current.set(Br,go),go>=2){Or.add(Kn),kl(Ys=>Ys+1);return}typeof window<"u"&&(mo.current=window.setTimeout(()=>{mo.current=null,Lc.current===Kn&&kl(Ys=>Ys+1)},500))}).finally(()=>{rd.current===Br&&(rd.current=null)})};if(En!==ce&&!Ji.current.has(vn)){rt("archive",()=>la(!0),Ji.current);return}const Kt=Be(Mi);if(Kt){X(),td.current=vn,Es.current=null,Wc(Kt);return}if(_n!==ce&&!vu.current.has(vn)){rt("deleted",()=>Po(!0),vu.current);return}Es.current!==vn&&(Es.current=vn,Hn("This task is unavailable or you do not have access to it.","info",12e3))},[En,tr,gt,Vn,dn,Jt,rh,vn,_n,Mi,Ar,la,Po,Wc,t,Bt,ka,Hn,Xi,n,E,N,xe,Fo,Mc,u,kt]);const nk=eD({enabled:w.syncV3TaskMetadataActivation&&N==="local",workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),im=uD({localRuntime:N==="local",enabled:w.syncV3TaskCreateActivation&&N==="local",workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),fh=w.syncV3TaskStatusActivation&&N==="local",mh=wD({enabled:fh,workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),ak=CD({enabled:N==="local",workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),$c=w.syncV3TaskDeleteActivation&&N==="local",Fc=TD({enabled:$c,workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),_u=PD({enabled:$c,workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),cm=o.useCallback(async(C,ae)=>{if(C!==Ar)return{handled:!1};const ce=[...qt,...Sr].find(qe=>qe.id===C);if(!ce)return{handled:!1};const X=await Vt(ce,{force:!0,shouldCommit:()=>ps.current?.taskId===C});if(!X||ps.current?.taskId!==C)return{handled:!1};const Be=so.current(X,"save");return{handled:!0,retryDetailRevision:Be?.conflicts.length===0?X.detailRevision:void 0,retryPatch:Be?.conflicts.length===0?Ok(X,Be.merged):void 0}},[Sr,Ar,Vt,qt]),ld=o.useCallback(C=>{if(C.id===Ar){if(Fa.current?.taskId===C.id){so.current(C,"refresh");return}Cu(C)}},[Cu,Ar]),{copiedId:Tu,handleDelete:lm,handleUpdateTask:bl,handleSetStatus:xu,handleToggleComplete:dm,handleToggleCancel:Uc,handleToggleInProgress:um,handleToggleReview:zc,handleArchiveTask:fm,handleBulkArchive:Ru,handleUnarchive:ph,handleRestoreDeletedTask:Hc,handleRestoreSelectedDeletedTasks:hh,handlePermanentlyDeleteDeletedTask:gh,handleEmptyDeletedTasks:yh,handleCopyId:sk,queueWorkspaceSyncFromAuthoritativeTaskState:ok}=NN({tasks:qt,archivedTasks:Sr,editingTaskId:Ar,editingTaskDetailRevision:Co?.taskId===Ar&&Co.task.detailRevision||null,setTasks:ar,setArchivedTasks:gn,setDeletedTasks:Gn,setError:ca,resetForm:om,setActiveTab:od,fetchTasks:kn,fetchArchive:wc,fetchDeletedTasks:bc,mergeTaskFromServer:nn,pushNotice:Hn,cloudAuthConfigured:V,runtimeMode:N,isAuthenticated:Bt,workspaceCloudSyncEnabled:No,buildWorkspaceSyncSignature:Vi,pushWorkspaceChangesToCloud:Cf,workspacePendingSignatureRef:Pp,workspaceDeletedTaskIdsRef:ky,workspaceDeletedTaskWatermarksRef:Hd,mutateTaskMetadata:nk,mutateTaskStatus:mh,mutateTaskLifecycle:ak,mutateTaskDelete:Fc,mutateTaskRestore:_u,durableTaskMetadataActivationEnabled:w.syncV3TaskMetadataActivation&&N==="local",durableTaskStatusActivationEnabled:fh,durableTaskDeleteActivationEnabled:$c,durableTaskHttpRootActivationEnabled:w.syncV3TaskCloudHttpRootActivation,workspaceId:it,onTaskRevisionConflict:cm,onTaskMutationAccepted:ld,pendingTaskMetadataOverlaysRef:vc}),{resolveDraft:Pu}=_N(it,or),ik=o.useCallback(async()=>{const C=Dc.current;ll(),await Pu({draftUploadId:C,resolution:"promote"})},[Pu,ll]),{autoSaveState:Li,flushAutoSave:kh,scheduleWarningPrompt:vh,handleSubmit:si,confirmScheduleWarning:dd,cancelScheduleWarning:ck,handleAddComment:Da}=vN({activeCategories:un,activeTab:Te,apiEndpoint:m,assignee:Cc,attachments:Ec,attachmentsDirty:$p,category:xs,checklistItems:Ul,comments:xi,complexity:il,description:Ps,dueDate:Lo,createTaskDurably:im,durableTaskHttpRootActivationEnabled:w.syncV3TaskCloudHttpRootActivation,workspaceId:it,updateTask:bl,editingTaskId:Ar,editorBaselineDraft:Co?.taskId===Ar?Co.draft:null,revisionConflict:Ja?.taskId===Ar,fetchTasks:kn,formTaxonomies:Hl,getAttachmentsDraft:ql,getDescriptionDraft:Fl,getPreferredCategoryValue:Qa,getTitleDraft:eu,awaitPendingDescriptionImageUpload:qi,onTaskCreateAccepted:ik,mergeTaskFromServer:nn,onTaskCreated:Wc,workstreamInput:Oo,priority:Mo,pushNotice:Hn,queueWorkspaceSyncFromAuthoritativeTaskState:ok,relationshipTasks:Xi,supplementalTasks:Mi,resetForm:om,resolveWorkstreamIdInput:id,scheduledDate:Rs,setActiveTab:od,setAttachmentsDirty:Ei,setComments:_c,setError:ca,setLastUsedCategory:au,setLoading:Dl,setNewCommentText:ru,status:ti,title:_i,taxonomies:pa,textDraftOccupied:$l,type:ts}),ho=o.useCallback((C,ae)=>{if(!Ar||C.id!==Ar)return null;const ce=ps.current?.taskId===Ar?ps.current:{draft:Lk(C)},X=po(),Be=Lk(C),qe=gR(ce.draft,X,Be),rt=Fa.current?.taskId===Ar?Fa.current.reconciliation.conflicts:[],Kt={...qe,conflicts:wR(rt,qe.conflicts,X,Be)},mr=Ok(C,Kt.merged),Tr={taskId:Ar,task:C,draft:Be};if(ps.current=Tr,Us(Tr),Iu(mr,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Ei(JSON.stringify(Kt.merged.attachments)!==JSON.stringify(Be.attachments)),ca(""),Kt.conflicts.length>0){const Or={taskId:Ar,detailRevision:C.detailRevision||"unknown",source:ae,reconciliation:Kt,remoteTask:C,remoteDraft:Be};Fa.current=Or,va(Or)}else Fa.current=null,va(null),Kt.remoteChangedFields.length>0&&Hn("Task updated","info",2200);return Kt},[Iu,Ar,Hn,po,Ei,ca]);so.current=ho;const ud=o.useCallback(C=>{const ae=Ja;if(!ae||ae.taskId!==Ar)return;const ce=yR(ae.reconciliation,ae.remoteDraft,C,po()),X=Ok(ae.remoteTask,ce);Iu(X,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Ei(JSON.stringify(ce.attachments)!==JSON.stringify(ae.remoteDraft.attachments)),Fa.current=null,va(null),ca(""),Vn();const Be=ae.reconciliation.conflicts.some(qe=>qe.field==="status");C==="local"&&Be&&ce.status!==ae.remoteDraft.status&&xu(ae.remoteTask,ce.status)},[Iu,Vn,Ar,Ja,xu,po,Ei,ca]);o.useEffect(()=>{const C=Ja;if(!C||C.taskId!==Ar)return;const ae=bR(C.reconciliation.conflicts),ce=ae.length>0?ae.join(", "):"task fields";Hn(`${ce.charAt(0).toUpperCase()}${ce.slice(1)} also changed elsewhere.`,"info",void 0,{label:"Use latest",primary:!0,onAction:()=>ud("latest"),secondaryLabel:"Keep mine",onSecondaryAction:()=>ud("local"),dismissible:!1,ownerKey:`task-editor-conflict:${C.taskId}:${C.detailRevision}`})},[Ar,Ja,Hn,ud]),o.useEffect(()=>{if(!Ar){Ua.current=null,va(null),Fa.current=null,ps.current=null,Us(null);return}const C=Qo[Ar];if(!C){Ua.current=null;return}const ae=[...qt,...Sr].find(X=>X.id===Ar);if(!ae)return;const ce=`${Ar}:${C}`;Ua.current!==ce&&(Ua.current=ce,Vt(ae,{shouldCommit:()=>ps.current?.taskId===Ar}).then(X=>{if(ps.current?.taskId===Ar){if(!X){ca("The latest task update could not be loaded. Your local draft has been preserved.");return}ho(X,"refresh")}}).finally(()=>{Ua.current===ce&&(Ua.current=null)}))},[Sr,Ar,Vt,ho,ca,Qo,qt]);const lk=o.useCallback(async()=>{const C=Dc.current;ll();try{await qi()}catch(ae){console.warn("[Taskforce] Description image upload failed while the draft was being discarded.",ae)}try{await Pu({draftUploadId:C,resolution:"discard"})}catch(ae){console.warn("[Taskforce] Failed to clean discarded Description image uploads.",ae)}},[qi,Pu,ll]);o.useEffect(()=>{dh.current=kh},[kh]);const{handleSetWorkstreamForCurrentTask:dk}=TN({editingTaskId:Ar,workstreamInput:Oo,pushNotice:Hn,relationshipTasks:Xi,resolveWorkstreamIdInput:id,setError:ca,updateTask:bl}),{currentTask:uk,currentTaskWorkstream:wh,currentTaskInitiative:bh}=qE({editingTaskId:Ar,relationshipTasks:Xi,initiatives:fa,workstreams:mn,workstreamInput:Oo,resolveWorkstreamIdInput:id,supplementalTasks:Mi,assignee:Cc,setAssignee:Zd,setChecklistItems:tu,setComments:_c}),Sh=UE({resolveCloudAuthUrl:G,currentWorkspaceId:it,normalizedCloudAuthBaseUrl:ye,normalizedCloudMcpBaseUrl:se,mergedConfig:l,availableWorkspaces:lr,currentTheme:de,configLoaded:dn,globalTheme:le,themeUseGlobalDefault:Je,keyShortcut:Rr,jsonBackupEnabled:Xn,globalJsonBackupEnabled:Un,globalWeekStartsOn:Ws,locale:eo,supportedLocales:Qn,jsonBackupUseGlobalDefault:ga,manualComplexityEnabled:hi,checklistDropdownEnabled:gi,showTaskCardStatusLabel:oa,showTaskCardDescription:Ka,showTaskCardAttachments:ds,showTaskCardChecklistProgress:qa,showTaskCardLatestActivity:Ra,tintTaskCardActivityBackground:us,pathSaved:te,settingsSection:Oe,setupState:On,buildInfo:ln,saveSetupMode:Gp,saveWorkspaceProfile:Kp,setCurrentTheme:x,handleSaveTheme:Fp,handleSaveGlobalTheme:Kf,handleUseGlobalThemeDefault:Ey,setKeyShortcut:Qr,handleJsonBackupEnabledChange:qf,handleSaveGlobalJsonBackupEnabled:Ny,handleUseGlobalJsonBackupDefault:Up,handleSaveGlobalWeekStartsOn:Dy,handleSaveLocale:Xl,handleManualComplexityEnabledChange:uu,handleChecklistDropdownEnabledChange:fu,handleShowTaskCardStatusLabelChange:zp,handleShowTaskCardDescriptionChange:mu,handleShowTaskCardAttachmentsChange:My,handleShowTaskCardChecklistProgressChange:Yf,handleShowTaskCardLatestActivityChange:Ly,handleTintTaskCardActivityBackgroundChange:Ql,handleSaveSettings:Gf,initiativeTemplates:ro,fetchInitiativeTemplates:Is,createInitiativeFromTemplate:ku,setShowFolderBrowser:je,setBrowserTarget:yt,fetchFolders:ad,activeCategories:un,pathValidation:ma,taxonomyDisplayLabels:Jo,handleUpdateCategory:Ks,handleRemoveCategory:ek,handleSaveCategory:Qi,handleAddPath:wl,handleRemovePath:oh,handleUpdateCategoryIcon:ah,handleUpdateCategoryColor:sh,activeTypes:ra,handleSaveType:sd,handleRemoveType:sm,handleUpdateType:ch,taxonomies:pa,handleUpdateTaxonomies:Su,priorities:on,handleUpdatePriorities:Au,analyzeSystemTaxonomyPack:tk,handleApplySystemTaxonomyPack:ec,handleUpdateTaxonomyDisplayLabels:lh,projectRoot:vt,projectName:tt,mcpHostRoot:Zr,serverHostRoot:vr,mcpScriptPath:bt,tenantId:U,runtimeMode:N,workspaceSwitchingEnabled:kt,deleteWorkspace:Vp,setMcpHostRoot:Er,isAuthenticated:Bt});o.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:qt,archivedTasks:Sr,runtimeMode:N,currentWorkspaceId:it,isAuthenticated:Bt,workspaceCloudSyncEnabled:No,realtimeSyncEnabled:_t,fetchTasks:kn,fetchArchive:Tn,retryWorkspaceCloudSync:Kd,resetWorkspaceSyncCursorAndPull:_f,getSyncDiagnostics:Bl,__dispatch:{handleUpdateTask:bl,handleToggleComplete:dm,handleArchiveTask:fm,handleToggleCancel:Uc,handleToggleInProgress:um,handleToggleReview:zc,handleSubmit:si,handleDelete:lm}})},[qt,Sr,N,it,Bt,No,_t,kn,Tn,Kd,_f,Bl,bl,dm,fm,Uc,um,zc,si,lm]);const Ah=ia&&ia.tone!=="error"?{message:ia.message,type:"info"}:null,mm=String(y||w.wsBaseUrl||fe||"").trim().replace(/\/+$/,"");return{config:{...l,cloudEnvironment:w.cloudEnvironment||l.cloudEnvironment||"",appGates:w.appGates||l.appGates,apiBaseUrl:fe||l.apiBaseUrl,cloudAuthBaseUrl:ye||l.cloudAuthBaseUrl,wsBaseUrl:mm||l.wsBaseUrl},isOpen:Ue,setIsOpen:st,activeTab:Te,setActiveTab:od,currentTheme:de,setCurrentTheme:x,configLoaded:dn,storagePath:Ze,saveSettings:Gf,pathSaved:te,keyShortcut:Rr,setKeyShortcut:Qr,globalWeekStartsOn:Ws,locale:eo,supportedLocales:Qn,saveLocale:Xl,jsonBackupEnabled:Xn,setJsonBackupEnabled:Ia,manualComplexityEnabled:hi,checklistDropdownEnabled:gi,showTaskCardStatusLabel:oa,showTaskCardDescription:Ka,showTaskCardAttachments:ds,showTaskCardChecklistProgress:qa,showTaskCardLatestActivity:Ra,tintTaskCardActivityBackground:us,setManualComplexityEnabled:ea,mcpHostRoot:Zr,setMcpHostRoot:Er,settingsSection:Oe,setSettingsSection:mt,runtimeMode:N,workspaceMode:Et,workspaceSwitchingEnabled:kt,cloudAuthConfigured:V,authRequiredForApi:Ot,authBlocked:tr,isAuthenticated:Bt,authUserId:or,authUserEmail:nt,authUserDisplayName:lt,authUserAvatarUrl:Qt,authWorkspaceId:Dr,userGlobalSyncStatus:Bn,workspaceLastPullAt:Sp,workspaceLastPushAt:Ud,workspaceLastErrorAt:gf,userGlobalSyncError:bp,workspaceLastErrorMessage:Ap,workspaceLastSuccessfulSyncAt:yf,workspaceSyncPhase:kf,workspaceSyncSetupIntent:Cp,workspaceSyncStatus:vf,workspaceSyncSummary:Ip,workspaceSyncRecommendedAction:wf,workspaceSyncBusy:_p,workspaceSyncPendingChanges:bf,localCoordinatorStatus:xp,transferLocalCoordinatorOwnership:Rp,retryUserGlobalSettingsSync:If,retryWorkspaceCloudSync:Kd,resetWorkspaceSyncCursorAndPull:_f,getWorkspaceSyncDiagnostics:Bl,hasBetaAccess:Ht,realtimeSyncEnabled:_t,realtimeSyncFlagSource:nr,currentWorkspaceId:it,currentWorkspaceRole:Fy,availableWorkspaces:lr,assigneeOptions:br,workspaceCloudSyncEnabled:No,saveWorkspaceCloudSyncSettings:al,applyWorkspaceSyncStateSnapshot:Vd,bootstrapState:Zo,authSessionResolved:gt,workspaceBootstrapPending:u,bootstrapPhase:xr,bootstrapError:jr,bootstrapStartedAt:An,setupState:On,runtimeCapabilities:ue,refreshSetupContext:pl,retryBootstrapChecks:$y,continueAfterCommercialOnboarding:Xf,saveWorkspaceProfile:Kp,fetchWorkspaces:fl,createWorkspace:Uy,deleteWorkspace:Vp,switchWorkspace:Fo,loginWithCredentials:zy,beginOAuthLogin:Hy,availableAuthProviders:Yt,fetchLoginMethods:Jp,unlinkLoginMethod:gu,addPasswordToAccount:qy,changePassword:Zi,beginOAuthLink:yu,registerWithCredentials:Vy,updateCurrentUserProfile:Gy,requestEmailVerification:Ky,confirmEmailVerification:Na,requestPasswordReset:Qf,confirmPasswordReset:qp,inspectInviteAcceptance:Yp,acceptInviteWithToken:Zp,joinInviteWithToken:em,logout:Yy,showFolderBrowser:Ne,setShowFolderBrowser:je,folders:Re,files:Pe,currentBrowsePath:De,fetchFolders:ad,browserTarget:Fe,setBrowserTarget:yt,groupBy:Bf,setGroupBy:cu,activeWorkspaceModule:Pi,setActiveWorkspaceModule:Hp,emptyColumnMode:Wf,setEmptyColumnMode:Np,zenMode:$s,setZenMode:ya,handleSelectPath:ih,handleAddPath:wl,handleRemovePath:oh,tasks:qt,loadingTasks:ka,archivedTasks:Sr,archiveHydratedWorkspaceId:En,initiatives:fa,workstreams:mn,planningBootstrapTaskSummaries:Ui,planningLoadState:zi,workspaceTaskRelationships:Tp,deletedTasks:sr,activeCategories:un,activeTypes:ra,priorities:on,taxonomyDisplayLabels:Jo,taxonomies:pa,searchQuery:Ri,setSearchQuery:jp,filterCategories:Rf,setFilterCategories:Wo,filterTypes:Kl,setFilterTypes:Pf,filterPriorities:Ki,setFilterPriorities:su,filterStatus:jf,setFilterStatus:Ef,filterAssignees:xc,setFilterAssignees:Rc,filterTaxonomies:Df,setFilterTaxonomies:Pc,hasInitedFilters:jc,sortBy:zt,setSortBy:Lf,sortOrder:ou,setSortOrder:Of,toggleSortOrder:iu,showArchive:ft,setShowArchive:xe,taskScope:ke,setTaskScope:ve,compressedCards:He,setCompressedCards:Ee,clearFilters:Ay,filteredTasks:Cy,searchAgnosticTasks:Iy,filteredArchive:$o,groupedTasks:$f,collapsedCategories:Dp,setCollapsedCategories:Mp,fetchTasks:kn,fetchArchive:Tn,ensureArchiveHydrated:la,fetchDeletedTasks:rr,fetchPlanningEntities:Pr,fetchPlanningEntityDetail:Dt,fetchAssigneeOptions:ml,createInitiative:Xp,updateInitiative:tm,updatePlanningIdentity:gl,archiveInitiative:yl,unarchiveInitiative:Qp,createWorkstream:eh,updateWorkstream:Zy,archiveWorkstream:th,unarchiveWorkstream:Uo,reorderWorkstreamTasks:rm,handleEdit:Wc,handleDelete:lm,handleCopyId:sk,handleToggleComplete:dm,handleToggleCancel:Uc,handleToggleInProgress:um,handleToggleReview:zc,handleArchiveTask:fm,handleBulkArchive:Ru,handleUnarchive:ph,handleRestoreDeletedTask:Hc,handleRestoreSelectedDeletedTasks:hh,handlePermanentlyDeleteDeletedTask:gh,handleEmptyDeletedTasks:yh,handleUpdateTask:bl,handleSetStatus:xu,editingTaskId:Ar,loading:yc,error:rl,clearTaskError:Ml,title:_i,setTitle:Ti,setTitleDraft:wy,description:Ps,setDescription:Gi,setDescriptionDraft:Tf,checklistItems:Ul,setChecklistItems:tu,category:xs,setCategory:ol,type:ts,setType:Do,priority:Mo,setPriority:qd,complexity:il,setComplexity:Yd,status:ti,setStatus:ri,assignee:Cc,setAssignee:Zd,scheduledDate:Rs,setScheduledDate:Jd,dueDate:Lo,setDueDate:Xd,workstreamInput:Oo,setWorkstreamInput:Qd,formTaxonomies:Hl,setFormTaxonomies:Bo,comments:xi,newCommentText:zl,setNewCommentText:ru,attachments:Ec,setAttachments:Op,attachmentsDirty:$p,setAttachmentsDirty:Ei,descriptionImageUploadPending:Bp,descriptionImageDraftId:Wp,registerDescriptionImageUpload:Uf,descriptionFocused:Ty,setDescriptionFocused:xy,showMarkdownHelp:ba,setShowMarkdownHelp:pc,isCapturingScreenshot:Ry,setIsCapturingScreenshot:Py,handleSubmit:si,resetForm:om,discardDescriptionImageDraft:lk,handleAddComment:Da,handleSetWorkstreamForCurrentTask:dk,handleOpenTaskById:qs,returnToPreviousTask:uh,autoSaveState:Li,unsavedModalOpen:jn,setUnsavedModalOpen:Nr,pendingNavigation:Oa,handleNavigation:tc,handleClose:rk,uiNotice:ia,pushNotice:Hn,clearNotice:Vn,successBanner:Ah,taskReturnTrail:Ao,clearReturnToParentTask:cd,copiedId:Tu,recentlyChangedTaskIds:Hs,scheduleWarningPrompt:vh,confirmScheduleWarning:dd,cancelScheduleWarning:ck,tasksScrollRef:_s,setTasksScrollPos:we,taskforceAgentId:Tc,setTaskforceAgentId:Vl,taskforceAgentConversationId:Sy,setTaskforceAgentConversationId:xf,taskforceAgentConversationByAgentId:Gl,setTaskforceAgentConversationByAgentId:ks,uiStateReady:Mc,handleUpdateCategory:Ks,handleRemoveCategory:ek,handleSaveCategory:Qi,handleUpdateCategoryIcon:ah,handleUpdateCategoryColor:sh,handleSaveType:sd,handleRemoveType:sm,handleUpdateType:ch,handleUpdateTaxonomies:Su,handleUpdatePriorities:Au,handleUpdateTaxonomyDisplayLabels:lh,pathValidation:ma,validatePaths:bu,getCategoryPaths:vl,customCategories:hs,setCustomCategories:wi,projectRoot:vt,projectName:tt,mcpScriptPath:bt,serverHostRoot:vr,commentsEndRef:by,currentTask:uk,currentTaskWorkstream:wh,currentTaskInitiative:bh,initiativeTemplates:ro,fetchInitiativeTemplates:Is,createInitiativeFromTemplate:ku,settingsModel:Sh}}const zD="modulepreload",HD=function(e){return"/taskforce/"+e},tA={},qo=function(t,r,n){let s=Promise.resolve();if(r&&r.length>0){let d=function(m){return Promise.all(m.map(f=>Promise.resolve(f).then(g=>({status:"fulfilled",value:g}),g=>({status:"rejected",reason:g}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=l?.nonce||l?.getAttribute("nonce");s=d(r.map(m=>{if(m=HD(m),m in tA)return;tA[m]=!0;const f=m.endsWith(".css"),g=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${g}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":zD,f||(h.as="script"),h.crossOrigin="",h.href=m,c&&h.setAttribute("nonce",c),document.head.appendChild(h),f)return new Promise((y,k)=>{h.addEventListener("load",y),h.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${m}`)))})}))}function i(l){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l}return s.then(l=>{for(const c of l||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},VD="_filterGlow_1ijmf_8",GD="_floatingButton_1ijmf_18",KD="_badge_1ijmf_49",qD="_configBadge_1ijmf_66",YD="_configBadgeActive_1ijmf_76",ZD="_configBadgeRevoked_1ijmf_82",JD="_configBadgeExpired_1ijmf_88",XD="_coreModal_1ijmf_97",QD="_header_1ijmf_103",eM="_headerTitle_1ijmf_118",tM="_brandIcon_1ijmf_136",rM="_brandHomeButton_1ijmf_142",nM="_brandHomeStatic_1ijmf_143",aM="_brandCloudSuffix_1ijmf_169",sM="_projectSlash_1ijmf_174",oM="_projectNameGroup_1ijmf_180",iM="_projectNameGroupHidden_1ijmf_188",cM="_projectName_1ijmf_180",lM="_projectNameCopied_1ijmf_232",dM="_projectNameCopyFeedback_1ijmf_236",uM="_taskCountBadge_1ijmf_248",fM="_taskCountBadgeIcon_1ijmf_265",mM="_taskCountBadgeButton_1ijmf_269",pM="_taskCountBadgeActive_1ijmf_287",hM="_taskCountBadgeAlert_1ijmf_293",gM="_headerActions_1ijmf_299",yM="_sortDirectionBtn_1ijmf_306",kM="_sortDirectionBtnWidget_1ijmf_313",vM="_form_1ijmf_321",wM="_topRow_1ijmf_333",bM="_field_1ijmf_339",SM="_labelRow_1ijmf_345",AM="_label_1ijmf_345",CM="_manageLink_1ijmf_359",IM="_input_1ijmf_378",_M="_select_1ijmf_379",TM="_textarea_1ijmf_380",xM="_taskIdInlineLink_1ijmf_414",RM="_readOnly_1ijmf_433",PM="_selectWithConfig_1ijmf_441",jM="_configBtn_1ijmf_451",EM="_configBtnActive_1ijmf_481",NM="_hasPath_1ijmf_489",DM="_pathIndicator_1ijmf_494",MM="_formActions_1ijmf_500",LM="_hasCancel_1ijmf_507",OM="_submitBtn_1ijmf_511",BM="_cancelBtn_1ijmf_527",WM="_successMessage_1ijmf_559",$M="_errorMessage_1ijmf_565",FM="_successIcon_1ijmf_577",UM="_spinner_1ijmf_597",zM="_spin_1ijmf_597",HM="_boardRefreshIndicator_1ijmf_601",VM="_destructiveBtn_1ijmf_631",GM="_warningBtn_1ijmf_654",KM="_viewTab_1ijmf_677",qM="_loading_1ijmf_688",YM="_emptyState_1ijmf_694",ZM="_taskList_1ijmf_704",JM="_referenceBadge_1ijmf_710",XM="_referenceBadgeLabel_1ijmf_731",QM="_referenceBadgeStatic_1ijmf_740",e2="_provisionalReferenceBadge_1ijmf_754",t2="_copiedReference_1ijmf_776",r2="_highlight_1ijmf_788",n2="_modal_1ijmf_800",a2="_priorityEmoji_1ijmf_808",s2="_metaItem_1ijmf_812",o2="_taskFormDateInput_1ijmf_826",i2="_metaBadge_1ijmf_836",c2="_complexityPill_1ijmf_851",l2="_complexityDots_1ijmf_855",d2="_dot_1ijmf_861",u2="_dotFilled_1ijmf_869",f2="_typePill_1ijmf_875",m2="_type_bug_1ijmf_879",p2="_type_feature_1ijmf_883",h2="_type_chore_1ijmf_887",g2="_type_refactor_1ijmf_891",y2="_type_documentation_1ijmf_895",k2="_type_research_1ijmf_899",v2="_type_security_1ijmf_907",w2="_statusActionsGroup_1ijmf_911",b2="_statusActionsGroupCompact_1ijmf_917",S2="_statusSelectWrap_1ijmf_921",A2="_statusTaxonomyDropdownWrap_1ijmf_927",C2="_statusTaxonomyDropdown_1ijmf_927",I2="_statusTaxonomyDropdownCompact_1ijmf_935",_2="_statusTaxonomyDropdownIconOnly_1ijmf_939",T2="_taxonomyDropdownButton_1ijmf_944",x2="_taxonomyDropdownButtonContent_1ijmf_961",R2="_statusTaxonomyDropdownIconOnlyPanel_1ijmf_965",P2="_actionBtn_1ijmf_971",j2="_restoreTaskBtn_1ijmf_995",E2="_startWorkBtn_1ijmf_1004",N2="_workingBtn_1ijmf_1013",D2="_pulse_1ijmf_1",M2="_reviewBtn_1ijmf_1019",L2="_reviewActiveBtn_1ijmf_1029",O2="_reviewPill_1ijmf_1035",B2="_bulkArchiveBtn_1ijmf_1042",W2="_bulkDeleteBtn_1ijmf_1064",$2="_deleteBtn_1ijmf_1093",F2="_completeBtn_1ijmf_1105",U2="_completeActiveBtn_1ijmf_1115",z2="_deleteActiveBtn_1ijmf_1121",H2="_disabledBtn_1ijmf_1127",V2="_archiveList_1ijmf_1134",G2="_archiveHeader_1ijmf_1142",K2="_settingsTab_1ijmf_1153",q2="_settingsTabMcpOnly_1ijmf_1162",Y2="_settingsTabs_1ijmf_1171",Z2="_settingsLayout_1ijmf_1204",J2="_settingsLayoutMcpOnly_1ijmf_1211",X2="_settingsSidebar_1ijmf_1217",Q2="_settingsSidebarHeader_1ijmf_1227",eL="_settingsSidebarNav_1ijmf_1236",tL="_settingsSidebarBtn_1ijmf_1245",rL="_settingsSidebarBtnActive_1ijmf_1269",nL="_settingsSidebarGroup_1ijmf_1276",aL="_settingsSidebarGroupBtn_1ijmf_1282",sL="_settingsSidebarGroupLabel_1ijmf_1286",oL="_settingsSidebarGroupChevron_1ijmf_1290",iL="_settingsSidebarSubnav_1ijmf_1296",cL="_settingsSidebarSubBtn_1ijmf_1303",lL="_appScrollbar_1ijmf_1326",dL="_settingsTabBtn_1ijmf_1330",uL="_settingsTabBtnActive_1ijmf_1355",fL="_settingsContent_1ijmf_1384",mL="_mcpRegistrationHint_1ijmf_1408",pL="_mcpRegistrationPrompt_1ijmf_1419",hL="_mcpCodexTrustNote_1ijmf_1438",gL="_mcpCodexTrustHeader_1ijmf_1449",yL="_mcpCodexTrustTitle_1ijmf_1456",kL="_mcpCodexTrustCode_1ijmf_1462",vL="_mcpAuthRequiredCard_1ijmf_1477",wL="_mcpAuthRequiredIcon_1ijmf_1489",bL="_mcpAuthRequiredBody_1ijmf_1502",SL="_mcpAuthRequiredActions_1ijmf_1509",AL="_settingsToast_1ijmf_1553",CL="_settingsToastSuccess_1ijmf_1570",IL="_settingsToastError_1ijmf_1576",_L="_inputWithPrefix_1ijmf_1582",TL="_pathHint_1ijmf_1589",xL="_settingGroup_1ijmf_1602",RL="_taskCardSettingsLayout_1ijmf_1608",PL="_taskCardDependentSetting_1ijmf_1616",jL="_taskCardSettingWithHelp_1ijmf_1620",EL="_taskCardSettingHelp_1ijmf_1626",NL="_taskCardSettingsPreview_1ijmf_1633",DL="_taskCardSettingsPreviewFrame_1ijmf_1640",ML="_workspaceIdentity_1ijmf_1657",LL="_workspaceIdentityValueRow_1ijmf_1666",OL="_workspaceIdentityValue_1ijmf_1666",BL="_workspaceProfileForm_1ijmf_1682",WL="_workspaceProfileTextareaLabel_1ijmf_1689",$L="_workspaceProfileActions_1ijmf_1694",FL="_settingTitle_1ijmf_1718",UL="_settingTitleRow_1ijmf_1727",zL="_settingTitleActionBtn_1ijmf_1734",HL="_themeOptions_1ijmf_1754",VL="_buttonGrid_1ijmf_1759",GL="_themeBtn_1ijmf_1771",KL="_activeTheme_1ijmf_1795",qL="_pathInputGroup_1ijmf_1803",YL="_saveSettingsBtn_1ijmf_1812",ZL="_shortcutInputWrapper_1ijmf_1833",JL="_inputIcon_1ijmf_1838",XL="_settingHelper_1ijmf_1847",QL="_browseBtn_1ijmf_1854",eO="_inlineCategoryManager_1ijmf_1873",tO="_categoryManager_1ijmf_1884",rO="_categoryList_1ijmf_1890",nO="_categoryChip_1ijmf_1902",aO="_categoryChipLabel_1ijmf_1915",sO="_chipActionBtn_1ijmf_1923",oO="_removeCategoryBtn_1ijmf_1943",iO="_addCategoryForm_1ijmf_1963",cO="_addCategoryBtn_1ijmf_1968",lO="_filesList_1ijmf_1993",dO="_helpLink_1ijmf_2020",uO="_taskChildrenSummaryBadges_1ijmf_2039",fO="_taskChildrenProgressBar_1ijmf_2047",mO="_taskChildrenProgressBarSegmentDone_1ijmf_2058",pO="_taskChildrenProgressBarSegmentReview_1ijmf_2064",hO="_taskChildrenProgressBarSegmentInProgress_1ijmf_2070",gO="_taskChildrenProgressBarSegmentBlocked_1ijmf_2076",yO="_taskChildrenProgressText_1ijmf_2082",kO="_taskChildUnlinkBtn_1ijmf_2091",vO="_aboutText_1ijmf_2109",wO="_versionInfo_1ijmf_2116",bO="_filterBar_1ijmf_2124",SO="_kanbanHintText_1ijmf_2138",AO="_searchContainer_1ijmf_2144",CO="_searchIcon_1ijmf_2151",IO="_searchInput_1ijmf_2159",_O="_searchActive_1ijmf_2185",TO="_searchCount_1ijmf_2190",xO="_clearSearchBtn_1ijmf_2206",RO="_filterRow_1ijmf_2228",PO="_sortLabel_1ijmf_2234",jO="_archiveToggle_1ijmf_2242",EO="_filterContainer_1ijmf_2279",NO="_filterButton_1ijmf_2284",DO="_filterActive_1ijmf_2309",MO="_filterDropdown_1ijmf_2315",LO="_filterSearch_1ijmf_2330",OO="_filterSearchIcon_1ijmf_2338",BO="_filterSearchInput_1ijmf_2347",WO="_filterEmpty_1ijmf_2359",$O="_filterOption_1ijmf_2366",FO="_filterDivider_1ijmf_2396",UO="_filterSelect_1ijmf_2402",zO="_filterToggleBtn_1ijmf_2443",HO="_inProgressToggle_1ijmf_2465",VO="_activeInProgress_1ijmf_2483",GO="_activeFilter_1ijmf_2492",KO="_resetFiltersBtn_1ijmf_2502",qO="_categoryChip_disabled_1ijmf_2535",YO="_categoryVisibilityToggle_1ijmf_2545",ZO="_editCategoryInput_1ijmf_2558",JO="_categoryChipActionBtn_1ijmf_2569",XO="_categoryChipActionBtn_active_1ijmf_2587",QO="_categoryGroup_1ijmf_2592",eB="_categoryHeader_1ijmf_2600",tB="_categoryTitle_1ijmf_2614",rB="_categoryCount_1ijmf_2624",nB="_categoryItems_1ijmf_2630",aB="_selectPriority_low_1ijmf_2647",sB="_selectPriority_medium_1ijmf_2652",oB="_selectPriority_high_1ijmf_2657",iB="_selectPriority_critical_1ijmf_2662",cB="_levelSelect_1ijmf_2671",lB="_levelOption_1ijmf_2684",dB="_levelOptionFilled_1ijmf_2701",uB="_levelOption_priority_low_1ijmf_2708",fB="_levelOption_priority_medium_1ijmf_2713",mB="_levelOption_priority_high_1ijmf_2718",pB="_levelOption_priority_critical_1ijmf_2723",hB="_levelOption_complexity_tiny_1ijmf_2730",gB="_levelOption_complexity_low_1ijmf_2735",yB="_levelOption_complexity_medium_1ijmf_2740",kB="_levelOption_complexity_high_1ijmf_2745",vB="_levelOption_complexity_epic_1ijmf_2750",wB="_levelOptionActive_1ijmf_2757",bB="_levelOptionSelected_1ijmf_2762",SB="_levelLabel_1ijmf_2770",AB="_levelLabelFadeIn_1ijmf_1",CB="_closeConfigBtn_1ijmf_2795",IB="_configItem_1ijmf_2817",_B="_settingsLabel_1ijmf_2823",TB="_settingsHint_1ijmf_2832",xB="_pathList_1ijmf_2839",RB="_pathChip_1ijmf_2846",PB="_pathValid_1ijmf_2859",jB="_pathInvalid_1ijmf_2864",EB="_pathValidIcon_1ijmf_2869",NB="_pathInvalidIcon_1ijmf_2874",DB="_pathText_1ijmf_2879",MB="_removePathBtn_1ijmf_2886",LB="_pathCount_1ijmf_2908",OB="_specialistSection_1ijmf_2919",BB="_toggleHeading_1ijmf_2927",WB="_dropdownList_1ijmf_2967",$B="_specialistBadge_1ijmf_2976",FB="_iconGrid_1ijmf_3006",UB="_iconPickerBtn_1ijmf_3017",zB="_iconPickerBtnActive_1ijmf_3036",HB="_categorySubConfig_1ijmf_3043",VB="_colorPickerRow_1ijmf_3051",GB="_colorPickerGrid_1ijmf_3057",KB="_colorSwatch_1ijmf_3064",qB="_colorSwatchActive_1ijmf_3083",YB="_categoryChipIcon_1ijmf_3089",ZB="_fieldIconWrapper_1ijmf_3094",JB="_fieldIcon_1ijmf_3094",XB="_field_dynamic_1ijmf_3116",QB="_fieldIcon_dynamic_1ijmf_3122",eW="_categoryTitleIcon_1ijmf_3126",tW="_editActionsGroup_1ijmf_3131",rW="_stickyActionHeader_1ijmf_3138",nW="_taskNoticeAnchor_1ijmf_3155",aW="_taskHierarchyHeader_1ijmf_3161",sW="_taskHierarchyBadgeRow_1ijmf_3168",oW="_taskHierarchyDivider_1ijmf_3176",iW="_taskHierarchySegment_1ijmf_3182",cW="_taskHierarchyMeta_1ijmf_3189",lW="_taskHierarchyActionBtn_1ijmf_3202",dW="_taskWorkstreamPicker_1ijmf_3208",uW="_taskWorkstreamPickerIcon_1ijmf_3263",fW="_taskWorkstreamPickerPanel_1ijmf_3269",mW="_taskWorkstreamPickerOption_1ijmf_3273",pW="_taskSaveStatus_1ijmf_3295",hW="_taskSaveStatusCenter_1ijmf_3306",gW="_taskSaveStatusError_1ijmf_3314",yW="_primaryUpdateBtn_1ijmf_3318",kW="_secondaryHeaderBtn_1ijmf_3346",vW="_secondaryHeaderBtnDestructive_1ijmf_3367",wW="_attachmentCaptureContainer_1ijmf_3379",bW="_capturePrompt_1ijmf_3387",SW="_previewContainer_1ijmf_3401",AW="_previewHeader_1ijmf_3407",CW="_attachmentCapturePreview_1ijmf_3417",IW="_actions_1ijmf_3424",_W="_primaryButton_1ijmf_3430",TW="_secondaryButton_1ijmf_3445",xW="_iconButton_1ijmf_3460",RW="_attachmentGrid_1ijmf_3482",PW="_attachmentCard_1ijmf_3488",jW="_attachmentPreviewContainer_1ijmf_3502",EW="_attachmentPreviewButton_1ijmf_3519",NW="_contextFileLink_1ijmf_3537",DW="_attachmentActions_1ijmf_3563",MW="_attachmentActionBtn_1ijmf_3578",LW="_attachmentActionBtnActive_1ijmf_3600",OW="_attachmentCaptionInput_1ijmf_3606",BW="_documentAttachmentCaptionInput_1ijmf_3607",WW="_hiddenInput_1ijmf_3627",$W="_contextMenuControl_1ijmf_3631",FW="_contextMenu_1ijmf_3631",UW="_contextAddMenu_1ijmf_3677",zW="_contextActionsMenu_1ijmf_3682",HW="_attachmentImageActionsMenu_1ijmf_3686",VW="_contextDestructiveMenuItem_1ijmf_3695",GW="_contextContent_1ijmf_3699",KW="_contextContentDropActive_1ijmf_3709",qW="_contextDropOverlay_1ijmf_3713",YW="_contextLinkComposer_1ijmf_3730",ZW="_contextEmptyState_1ijmf_3737",JW="_contextGroupLabel_1ijmf_3747",XW="_contextNotice_1ijmf_3756",QW="_contextCaptionEditor_1ijmf_3761",e$="_attachmentCaptionLabel_1ijmf_3769",t$="_documentAttachmentList_1ijmf_3795",r$="_documentAttachmentItem_1ijmf_3801",n$="_documentAttachmentRow_1ijmf_3807",a$="_documentAttachmentLink_1ijmf_3816",s$="_documentAttachmentMain_1ijmf_3830",o$="_documentAttachmentReference_1ijmf_3838",i$="_documentAttachmentName_1ijmf_3843",c$="_brokenImage_1ijmf_3852",l$="_brokenImagePlaceholder_1ijmf_3860",d$="_regionOverlay_1ijmf_3874",u$="_selectionBox_1ijmf_3885",f$="_exportRow_1ijmf_3893",m$="_exportItem_1ijmf_3898",p$="_taxonomyDrillDown_1ijmf_3907",h$="_drillDownList_1ijmf_3917",g$="_drillDownSection_1ijmf_3925",y$="_drillDownSectionHeader_1ijmf_3931",k$="_drillDownSectionTitle_1ijmf_3938",v$="_drillDownItem_1ijmf_3947",w$="_drillDownItemDimmed_1ijmf_3969",b$="_drillDownItemActive_1ijmf_3977",S$="_drillDownItemInfo_1ijmf_3982",A$="_drillDownItemText_1ijmf_3988",C$="_drillDownItemLabel_1ijmf_3993",I$="_drillDownItemSubtext_1ijmf_3998",_$="_addTaxonomyBtnSmall_1ijmf_4003",T$="_taxonomyDetailView_1ijmf_4025",x$="_slideIn_1ijmf_1",R$="_detailHeader_1ijmf_4045",P$="_detailTitle_1ijmf_4054",j$="_detailContent_1ijmf_4061",E$="_createOverlay_1ijmf_4068",N$="_createDialog_1ijmf_4080",D$="_zoomIn_1ijmf_1",M$="_dialogActions_1ijmf_4108",L$="_settingsGroup_1ijmf_4126",O$="_settingsItem_1ijmf_4132",B$="_mcpHealthCompactAlert_1ijmf_4138",W$="_mcpHealthUpdateRow_1ijmf_4139",$$="_mcpHealthBlockingAlert_1ijmf_4140",F$="_mcpHealthUpdateIcon_1ijmf_4168",U$="_mcpHealthCompactBody_1ijmf_4174",z$="_mcpHealthCompactActions_1ijmf_4191",H$="_mcpHealthStableAction_1ijmf_4197",V$="_mcpUpdateDialog_1ijmf_4202",G$="_mcpUpdateDialogIntro_1ijmf_4211",K$="_mcpUpdateRestartGuidance_1ijmf_4212",q$="_mcpUpdateVersionGrid_1ijmf_4219",Y$="_mcpUpdateDiagnostics_1ijmf_4235",Z$="_mcpUpdateLoading_1ijmf_4251",J$="_mcpUpdateNotice_1ijmf_4252",X$="_mcpUpdateCommands_1ijmf_4267",Q$="_mcpUpdateSectionLabel_1ijmf_4273",e3="_mcpHealthCommandRow_1ijmf_4279",t3="_mcpHealthCommand_1ijmf_4279",r3="_mcpUpdateDialogActions_1ijmf_4322",n3="_mcpHealthCopyError_1ijmf_4328",a3="_settingLabelGroup_1ijmf_4362",s3="_settingLabel_1ijmf_4362",o3="_settingDescription_1ijmf_4374",i3="_settingInput_1ijmf_4381",c3="_codeBlockWrapper_1ijmf_4404",l3="_codeHeader_1ijmf_4413",d3="_codeHeaderActions_1ijmf_4424",u3="_codeLabel_1ijmf_4431",f3="_codeHeaderDescription_1ijmf_4439",m3="_mcpTokenCardBody_1ijmf_4447",p3="_mcpTokenFormGrid_1ijmf_4455",h3="_mcpTokenOutputWrap_1ijmf_4462",g3="_mcpTokenValueField_1ijmf_4469",y3="_mcpTokenValueText_1ijmf_4479",k3="_mcpTokenValueInput_1ijmf_4492",v3="_mcpTokenActionRow_1ijmf_4497",w3="_settingsCodeBlock_1ijmf_4505",b3="_copyBtn_1ijmf_4523",S3="_copyBtnActive_1ijmf_4544",A3="_copyBtnNeutralActive_1ijmf_4550",C3="_headerDivider_1ijmf_4568",I3="_groupByContainer_1ijmf_4574",_3="_groupByLabel_1ijmf_4582",T3="_groupBySelect_1ijmf_4587",x3="_viewSwitcher_1ijmf_4609",R3="_selectWithIcon_1ijmf_4617",P3="_marginBottom16_1ijmf_4621",j3="_headerDraggable_1ijmf_4626",E3="_headerDragging_1ijmf_4630",N3="_filterSelectSort_1ijmf_4638",D3="_archiveRow_1ijmf_4642",M3="_taskScopeToggle_1ijmf_4648",L3="_taskScopeTabs_1ijmf_4661",O3="_taskScopeTab_1ijmf_4661",B3="_taskScopeTabActive_1ijmf_4706",W3="_taskToolbarAction_1ijmf_4714",$3="_overlayHighZ_1ijmf_4730",F3="_savedText_1ijmf_4740",U3="_shortcutInput_1ijmf_1833",z3="_saveSettingsBtnWrapper_1ijmf_4748",H3="_marginBottom12_1ijmf_4752",V3="_exportRowGrid_1ijmf_4756",G3="_settingSubtitleCustom_1ijmf_4761",K3="_capitalize_1ijmf_4767",q3="_marginTop12_1ijmf_4771",Y3="_marginTop16_1ijmf_4775",Z3="_labelGroupFlex_1ijmf_4779",J3="_codeBlockWrapperCustom_1ijmf_4785",X3="_kanbanWrapper_1ijmf_4791",Q3="_kanbanContainer_1ijmf_4799",eF="_kanbanTopScroll_1ijmf_4821",tF="_kanbanTopScrollSpacer_1ijmf_4830",rF="_kanbanColumn_1ijmf_4834",nF="_kanbanColumnSticky_1ijmf_4850",aF="_kanbanColumnCollapsed_1ijmf_4856",sF="_kanbanColumnPast_1ijmf_4861",oF="_kanbanColumnSelectedDay_1ijmf_4866",iF="_kanbanHeader_1ijmf_4873",cF="_kanbanCount_1ijmf_4883",lF="_kanbanHeaderDraggable_1ijmf_4903",dF="_kanbanHeaderPanning_1ijmf_4907",uF="_kanbanQuickAdd_1ijmf_4911",fF="_kanbanColorDot_1ijmf_4932",mF="_kanbanDroppable_1ijmf_4944",pF="_kanbanDroppableScroll_1ijmf_4953",hF="_kanbanDroppableScrollVirtualized_1ijmf_4963",gF="_kanbanVirtualCanvas_1ijmf_4969",yF="_kanbanVirtualRow_1ijmf_4974",kF="_kanbanEmpty_1ijmf_4980",vF="_kanbanCard_1ijmf_4990",wF="_kanbanCardWrapper_1ijmf_5000",bF="_taxonomyDropdownActive_1ijmf_5008",SF="_kanbanCardWrapperRaised_1ijmf_5012",AF="_kanbanCardTitle_1ijmf_5016",CF="_kanbanBadges_1ijmf_5020",IF="_kanbanBadge_1ijmf_5020",_F="_headerFlex_1ijmf_5036",TF="_marginBottom8_1ijmf_5043",xF="_marginBottom20_1ijmf_5047",RF="_configPanel_1ijmf_5051",PF="_configPanelLarge_1ijmf_5060",jF="_subLabelBlock_1ijmf_5064",EF="_subLabelBlock12_1ijmf_5071",NF="_flexBetween_1ijmf_5075",DF="_flexBetweenCenter_1ijmf_5082",MF="_deleteBtnSmall_1ijmf_5087",LF="_deleteBtnMedium_1ijmf_5093",OF="_trashIcon_1ijmf_5100",BF="_gridConfig_1ijmf_5104",WF="_flexColGap4_1ijmf_5111",$F="_flexColGap4Center_1ijmf_5117",FF="_flex1_1ijmf_5124",UF="_flexCol_1ijmf_5111",zF="_flexGrow1_1ijmf_5134",HF="_inputLabel_1ijmf_5138",VF="_inputLabelBlock_1ijmf_5142",GF="_checkboxInput_1ijmf_5148",KF="_configDividerMargin_1ijmf_5154",qF="_configDividerMargin24_1ijmf_5159",YF="_pathListMargin_1ijmf_5164",ZF="_cancelBtnRed_1ijmf_5168",JF="_code_1ijmf_4404",XF="_workflowList_1ijmf_5195",QF="_workflowActions_1ijmf_5203",e4="_textBtn_1ijmf_5212",t4="_workflowGrid_1ijmf_5226",r4="_checkboxLabel_1ijmf_5234",n4="_checkboxSmall_1ijmf_5248",a4="_docWorkspace_1ijmf_5267",s4="_docIndexPanel_1ijmf_5278",o4="_docWorkspaceTrayMode_1ijmf_5290",i4="_docViewerPanel_1ijmf_5290",c4="_docWorkspaceTrayOpen_1ijmf_5295",l4="_docTrayPanel_1ijmf_5299",d4="_docTrayPanelOpen_1ijmf_5323",u4="_docSpinning_1ijmf_5331",f4="_docSpin_1ijmf_5331",m4="_docViewerEmpty_1ijmf_5350",p4="_agentsModuleRoot_1ijmf_5365",h4="_agentsModuleWithTray_1ijmf_5377",g4="_agentsModuleTrayOpen_1ijmf_5381",y4="_agentTrayPanel_1ijmf_5385",k4="_agentTrayPanelOpen_1ijmf_5408",v4="_agentTrayHeader_1ijmf_5416",w4="_agentTrayTitle_1ijmf_5431",b4="_agentTrayContent_1ijmf_5443",S4="_agentTrayContentInner_1ijmf_5451",A4="_agentsModuleContent_1ijmf_5455",C4="_taskforceAgentsModuleRoot_1ijmf_5463",I4="_taskforceAgentsModuleMain_1ijmf_5474",_4="_taskforceAgentsModuleTrayOpen_1ijmf_5482",T4="_taskforceAgentRosterHeader_1ijmf_5486",x4="_taskforceAgentRosterTitle_1ijmf_5499",R4="_taskforceAgentRosterContent_1ijmf_5511",P4="_taskforceAgentLibraryPortal_1ijmf_5519",j4="_taskforceAgentBuilderNavigation_1ijmf_5525",E4="_taskforceAgentBuilderTabs_1ijmf_5548",N4="_taskforceAgentBuilderCreateBtn_1ijmf_5565",D4="_taskforceAgentBuilderTab_1ijmf_5548",M4="_taskforceAgentBuilderTabActive_1ijmf_5606",L4="_taskforceAgentBuilderPanel_1ijmf_5624",O4="_taskforceModelConnectionsRoot_1ijmf_5632",B4="_taskforceModelConnectionsRootExternalLibrary_1ijmf_5639",W4="_taskforceModelConnectionsWorkspace_1ijmf_5643",$4="_taskforceModelConnectionsHeader_1ijmf_5653",F4="_taskforceModelConnectionCardHeader_1ijmf_5654",U4="_taskforceModelConnectionActions_1ijmf_5655",z4="_taskforceModelConnectionCodeRow_1ijmf_5656",H4="_taskforceAgentConnectionControlHeader_1ijmf_5657",V4="_taskforceAgentConnectionBindingRow_1ijmf_5658",G4="_taskforceAgentConnectionCallout_1ijmf_5659",K4="_taskforceModelConnectionNameRow_1ijmf_5679",q4="_taskforceModelConnectionNameEditor_1ijmf_5680",Y4="_taskforceModelConnectionIdentity_1ijmf_5687",Z4="_taskforceModelConnectionIdentityText_1ijmf_5693",J4="_taskforceModelConnectionLogo_1ijmf_5699",X4="_taskforceModelConnectionCard_1ijmf_5654",Q4="_taskforceAgentConnectionControl_1ijmf_5657",e5="_taskforceModelConnectionLogin_1ijmf_5739",t5="_taskforceModelConnectionsEmpty_1ijmf_5754",r5="_taskforceModelConnectionMeta_1ijmf_5760",n5="_taskforceModelConnectionsLoading_1ijmf_5788",a5="_taskforceAgentTestError_1ijmf_5851",s5="_taskforceAgentTestNotice_1ijmf_5852",o5="_taskforceAgentBuilderEmpty_1ijmf_5872",i5="_taskforceAgentBuilderEmptyIcon_1ijmf_5881",c5="_taskforceAgentTestGrid_1ijmf_5893",l5="_taskforceAgentContextBanner_1ijmf_5900",d5="_taskforceAgentContextActions_1ijmf_5919",u5="_taskforceAssistantWorkspace_1ijmf_5943",f5="_taskforceAssistantWorkspaceContent_1ijmf_5953",m5="_taskforceAssistantWorkspaceOpen_1ijmf_5962",p5="_taskforceAssistantWorkspaceCollapsed_1ijmf_5966",h5="_taskforceModalWithAssistantPanel_1ijmf_5970",g5="_taskforceModalWithAssistantPanelCollapsed_1ijmf_5975",y5="_taskforceTaskModalOverlay_1ijmf_5979",k5="_taskforceAgentDrawerOverlay_1ijmf_6000",v5="_taskforceAgentDrawerOverlayCollapsed_1ijmf_6010",w5="_taskforceAgentDrawerPanel_1ijmf_6014",b5="_taskforceAgentDrawerHeader_1ijmf_6026",S5="_taskforceAgentDrawerAgentHeader_1ijmf_6036",A5="_taskforceAgentDrawerHeaderFallback_1ijmf_6037",C5="_taskforceAgentDrawerAgentAvatar_1ijmf_6045",I5="_taskforceAgentDrawerFallbackAvatar_1ijmf_6046",_5="_taskforceAgentDrawerAgentAvatarButton_1ijmf_6068",T5="_taskforceAgentDrawerAgentPicker_1ijmf_6092",x5="_taskforceAgentDrawerHeaderActions_1ijmf_6112",R5="_taskforceAgentDrawerLoading_1ijmf_6118",P5="_taskforceAgentDrawerSurface_1ijmf_6126",j5="_taskforceAgentDrawerControls_1ijmf_6136",E5="_taskforceAgentProfileTray_1ijmf_6143",N5="_taskforceAgentProfileTrayIn_1ijmf_1",D5="_taskforceAgentProfileTrayHeader_1ijmf_6155",M5="_taskforceAgentProfileTrayIdentity_1ijmf_6163",L5="_taskforceAgentProfileTrayDetails_1ijmf_6171",O5="_taskforceAgentDrawerChatControls_1ijmf_6237",B5="_taskforceAgentConversationRename_1ijmf_6245",W5="_taskforceAgentConversationRenameError_1ijmf_6257",$5="_taskforceAgentDrawerConversationList_1ijmf_6264",F5="_taskforceAgentDrawerPrompt_1ijmf_6270",U5="_taskforceAgentDrawerPromptStatus_1ijmf_6290",z5="_taskforceAgentDrawerMetrics_1ijmf_6298",H5="_taskforceAgentOutputStack_1ijmf_6323",V5="_taskforceAgentHeaderTestPanel_1ijmf_6330",G5="_taskforceAgentTestComposer_1ijmf_6341",K5="_taskforceAgentTestSendButton_1ijmf_6353",q5="_taskforceAgentTestPending_1ijmf_6361",Y5="_taskforceAgentRetryButton_1ijmf_6390",Z5="_taskforceAgentTestRestriction_1ijmf_6399",J5="_taskforceAgentTestResult_1ijmf_6406",X5="_taskforceAgentTestResultHeader_1ijmf_6416",Q5="_taskforceAgentTestResponse_1ijmf_6434",eU="_taskforceAgentReadonlyField_1ijmf_6450",tU="_taskforceAgentAvatarPanel_1ijmf_6463",rU="_taskforceAgentAvatarEditControl_1ijmf_6475",nU="_taskforceAgentAvatarPreview_1ijmf_6481",aU="_taskforceAgentListAvatar_1ijmf_6482",sU="_taskforceAgentAvatarSyncing_1ijmf_6507",oU="_taskforceAgentAvatarSyncIcon_1ijmf_6511",iU="_taskforceAgentAvatarCopy_1ijmf_6524",cU="_taskforceAgentAvatarRole_1ijmf_6542",lU="_taskforceAgentToolbar_1ijmf_6562",dU="_taskforceAgentConversationSelect_1ijmf_6572",uU="_taskforceAgentList_1ijmf_6482",fU="_taskforceAgentListEmpty_1ijmf_6589",mU="_taskforceAgentSignatureColorField_1ijmf_6596",pU="_aiProfileColorPicker_1ijmf_6604",hU="_taskforceAgentBehaviorGrid_1ijmf_6609",gU="_taskforceAgentBehaviorWide_1ijmf_6615",yU="_taskforceAgentFieldHelper_1ijmf_6619",kU="_taskforceAgentPresentationGroup_1ijmf_6626",vU="_taskforceAgentLogList_1ijmf_6641",wU="_taskforceAgentLogEntry_1ijmf_6647",bU="_taskforceAgentToolDetails_1ijmf_6658",SU="_taskforceAgentToolActivity_1ijmf_6672",AU="_taskforceAgentToolActivityList_1ijmf_6700",CU="_taskforceAgentToolCall_1ijmf_6707",IU="_taskforceAgentToolCallFailed_1ijmf_6723",_U="_taskforceAgentToolCallName_1ijmf_6727",TU="_taskforceAgentToolCallStatus_1ijmf_6737",xU="_taskforceAgentToolDetailsGrid_1ijmf_6743",RU="_taskforceAgentToolCopyButton_1ijmf_6754",PU="_taskforceAgentLogSuccess_1ijmf_6806",jU="_taskforceAgentLogError_1ijmf_6810",EU="_taskforceAgentLogTime_1ijmf_6814",NU="_taskforceAgentConversationList_1ijmf_6820",DU="_taskforceAgentConversationBody_1ijmf_6839",MU="_taskforceAgentConversationMessage_1ijmf_6840",LU="_taskforceAgentConversationEmpty_1ijmf_6845",OU="_taskforceAgentConversationMessageUser_1ijmf_6886",BU="_taskforceAgentConversationMessageAssistant_1ijmf_6898",WU="_taskforceAgentMetaGrid_1ijmf_6913",$U="_marginTop24_1ijmf_6941",FU="_settingSubTitle_1ijmf_6945",UU="_dangerBtn_1ijmf_6954",zU="_aiProfilesExplorer_1ijmf_6970",HU="_aiProfilesRosterPanel_1ijmf_6979",VU="_aiProfilesRosterSummary_1ijmf_6990",GU="_aiProfileSeatSummary_1ijmf_6999",KU="_aiProfilesRosterState_1ijmf_7003",qU="_aiProfilesListPane_1ijmf_7015",YU="_aiProfilesList_1ijmf_7015",ZU="_aiProfilesDetailViewport_1ijmf_7035",JU="_aiProfilesSection_1ijmf_7042",XU="_aiProfilesSectionHeader_1ijmf_7048",QU="_aiProfileGroup_1ijmf_7056",e6="_aiProfileGroupSelected_1ijmf_7079",t6="_aiProfileGroupDuplicate_1ijmf_7086",r6="_aiProfileGroupHeader_1ijmf_7091",n6="_aiProfileGroupAvatar_1ijmf_7099",a6="_aiProfileGroupAvatarLogo_1ijmf_7121",s6="_aiProfileGroupIdentity_1ijmf_7133",o6="_aiProfileName_1ijmf_7142",i6="_aiProfileHandle_1ijmf_7150",c6="_aiProfileRole_1ijmf_7151",l6="_aiProfileSeatScopeIcon_1ijmf_7171",d6="_aiProfileGroupSignatureSwatch_1ijmf_7182",u6="_aiProfileSeatScopeIconDetail_1ijmf_7188",f6="_aiProfileSeatScopeIconCloud_1ijmf_7193",m6="_aiProfileSeatScopeIconLocal_1ijmf_7197",p6="_aiProfileDuplicateBadge_1ijmf_7201",h6="_aiProfileMergeSection_1ijmf_7213",g6="_aiProfileMergeRow_1ijmf_7220",y6="_aiProfileIdChip_1ijmf_7227",k6="_aiProfileKeepBadge_1ijmf_7239",v6="_aiProfileMergeActions_1ijmf_7253",w6="_aiProfileDetailPane_1ijmf_7260",b6="_aiProfileDetailCard_1ijmf_7266",S6="_aiProfileDetailHero_1ijmf_7279",A6="_aiProfileDetailIcon_1ijmf_7285",C6="_aiProfileDetailAvatar_1ijmf_7299",I6="_aiProfileDetailAvatarLogo_1ijmf_7303",_6="_aiProfileDetailHeading_1ijmf_7321",T6="_aiProfileDetailTitleRow_1ijmf_7326",x6="_aiProfileDetailTitle_1ijmf_7326",R6="_aiProfileDetailMetaRow_1ijmf_7341",P6="_aiProfileDetailHandle_1ijmf_7349",j6="_aiProfileDetailRole_1ijmf_7354",E6="_aiProfileDetailLinkedCount_1ijmf_7361",N6="_aiProfileDetailDescription_1ijmf_7366",D6="_aiProfileSignatureColor_1ijmf_7373",M6="_aiProfileSignatureSwatch_1ijmf_7383",L6="_aiProfileSignatureColorButton_1ijmf_7401",O6="_aiProfileColorOption_1ijmf_7428",B6="_aiProfileDetailDataList_1ijmf_7442",W6="_aiProfileDetailDataGroup_1ijmf_7451",$6="_aiProfileDetailDateGroup_1ijmf_7458",F6="_aiProfileDetailDataRow_1ijmf_7463",U6="_aiProfileDetailDataLabel_1ijmf_7472",z6="_aiProfileDetailDataValue_1ijmf_7479",H6="_aiProfileStatusSelect_1ijmf_7485",V6="_aiProfileInstanceSection_1ijmf_7527",G6="_aiProfileInstanceSectionHeader_1ijmf_7533",K6="_aiProfileInstanceList_1ijmf_7543",q6="_aiProfileInstanceCard_1ijmf_7549",Y6="_aiProfileIdFooter_1ijmf_7562",Z6="_aiProfileIdFooterValue_1ijmf_7572",J6="_aiProfileDangerTextButton_1ijmf_7582",X6="_aiProfileInstanceTopRow_1ijmf_7614",Q6="_aiProfileInstanceName_1ijmf_7621",ez="_aiProfileInstanceMeta_1ijmf_7628",tz="_aiProfileInlineError_1ijmf_7636",R={filterGlow:VD,floatingButton:GD,badge:KD,configBadge:qD,configBadgeActive:YD,configBadgeRevoked:ZD,configBadgeExpired:JD,coreModal:XD,header:QD,headerTitle:eM,brandIcon:tM,brandHomeButton:rM,brandHomeStatic:nM,brandCloudSuffix:aM,projectSlash:sM,projectNameGroup:oM,projectNameGroupHidden:iM,projectName:cM,projectNameCopied:lM,projectNameCopyFeedback:dM,taskCountBadge:uM,taskCountBadgeIcon:fM,taskCountBadgeButton:mM,taskCountBadgeActive:pM,taskCountBadgeAlert:hM,headerActions:gM,sortDirectionBtn:yM,sortDirectionBtnWidget:kM,form:vM,topRow:wM,field:bM,labelRow:SM,label:AM,manageLink:CM,input:IM,select:_M,textarea:TM,taskIdInlineLink:xM,readOnly:RM,selectWithConfig:PM,configBtn:jM,configBtnActive:EM,hasPath:NM,pathIndicator:DM,formActions:MM,hasCancel:LM,submitBtn:OM,cancelBtn:BM,successMessage:WM,errorMessage:$M,successIcon:FM,spinner:UM,spin:zM,boardRefreshIndicator:HM,destructiveBtn:VM,warningBtn:GM,viewTab:KM,loading:qM,emptyState:YM,taskList:ZM,referenceBadge:JM,referenceBadgeLabel:XM,referenceBadgeStatic:QM,provisionalReferenceBadge:e2,copiedReference:t2,highlight:r2,modal:n2,priorityEmoji:a2,metaItem:s2,taskFormDateInput:o2,metaBadge:i2,complexityPill:c2,complexityDots:l2,dot:d2,dotFilled:u2,typePill:f2,type_bug:m2,type_feature:p2,type_chore:h2,type_refactor:g2,type_documentation:y2,type_research:k2,"type_ui-ux":"_type_ui-ux_1ijmf_903",type_security:v2,statusActionsGroup:w2,statusActionsGroupCompact:b2,statusSelectWrap:S2,statusTaxonomyDropdownWrap:A2,statusTaxonomyDropdown:C2,statusTaxonomyDropdownCompact:I2,statusTaxonomyDropdownIconOnly:_2,taxonomyDropdownButton:T2,taxonomyDropdownButtonContent:x2,statusTaxonomyDropdownIconOnlyPanel:R2,actionBtn:P2,restoreTaskBtn:j2,startWorkBtn:E2,workingBtn:N2,pulse:D2,reviewBtn:M2,reviewActiveBtn:L2,reviewPill:O2,bulkArchiveBtn:B2,bulkDeleteBtn:W2,deleteBtn:$2,completeBtn:F2,completeActiveBtn:U2,deleteActiveBtn:z2,disabledBtn:H2,archiveList:V2,archiveHeader:G2,settingsTab:K2,settingsTabMcpOnly:q2,settingsTabs:Y2,settingsLayout:Z2,settingsLayoutMcpOnly:J2,settingsSidebar:X2,settingsSidebarHeader:Q2,settingsSidebarNav:eL,settingsSidebarBtn:tL,settingsSidebarBtnActive:rL,settingsSidebarGroup:nL,settingsSidebarGroupBtn:aL,settingsSidebarGroupLabel:sL,settingsSidebarGroupChevron:oL,settingsSidebarSubnav:iL,settingsSidebarSubBtn:cL,appScrollbar:lL,settingsTabBtn:dL,settingsTabBtnActive:uL,settingsContent:fL,mcpRegistrationHint:mL,mcpRegistrationPrompt:pL,mcpCodexTrustNote:hL,mcpCodexTrustHeader:gL,mcpCodexTrustTitle:yL,mcpCodexTrustCode:kL,mcpAuthRequiredCard:vL,mcpAuthRequiredIcon:wL,mcpAuthRequiredBody:bL,mcpAuthRequiredActions:SL,settingsToast:AL,settingsToastSuccess:CL,settingsToastError:IL,inputWithPrefix:_L,pathHint:TL,settingGroup:xL,taskCardSettingsLayout:RL,taskCardDependentSetting:PL,taskCardSettingWithHelp:jL,taskCardSettingHelp:EL,taskCardSettingsPreview:NL,taskCardSettingsPreviewFrame:DL,workspaceIdentity:ML,workspaceIdentityValueRow:LL,workspaceIdentityValue:OL,workspaceProfileForm:BL,workspaceProfileTextareaLabel:WL,workspaceProfileActions:$L,settingTitle:FL,settingTitleRow:UL,settingTitleActionBtn:zL,themeOptions:HL,buttonGrid:VL,themeBtn:GL,activeTheme:KL,pathInputGroup:qL,saveSettingsBtn:YL,shortcutInputWrapper:ZL,inputIcon:JL,settingHelper:XL,browseBtn:QL,inlineCategoryManager:eO,categoryManager:tO,categoryList:rO,categoryChip:nO,categoryChipLabel:aO,chipActionBtn:sO,removeCategoryBtn:oO,addCategoryForm:iO,addCategoryBtn:cO,filesList:lO,helpLink:dO,taskChildrenSummaryBadges:uO,taskChildrenProgressBar:fO,taskChildrenProgressBarSegmentDone:mO,taskChildrenProgressBarSegmentReview:pO,taskChildrenProgressBarSegmentInProgress:hO,taskChildrenProgressBarSegmentBlocked:gO,taskChildrenProgressText:yO,taskChildUnlinkBtn:kO,aboutText:vO,versionInfo:wO,filterBar:bO,kanbanHintText:SO,searchContainer:AO,searchIcon:CO,searchInput:IO,searchActive:_O,searchCount:TO,clearSearchBtn:xO,filterRow:RO,sortLabel:PO,archiveToggle:jO,filterContainer:EO,filterButton:NO,filterActive:DO,filterDropdown:MO,filterSearch:LO,filterSearchIcon:OO,filterSearchInput:BO,filterEmpty:WO,filterOption:$O,filterDivider:FO,filterSelect:UO,filterToggleBtn:zO,inProgressToggle:HO,activeInProgress:VO,activeFilter:GO,resetFiltersBtn:KO,categoryChip_disabled:qO,categoryVisibilityToggle:YO,editCategoryInput:ZO,categoryChipActionBtn:JO,categoryChipActionBtn_active:XO,categoryGroup:QO,categoryHeader:eB,categoryTitle:tB,categoryCount:rB,categoryItems:nB,selectPriority_low:aB,selectPriority_medium:sB,selectPriority_high:oB,selectPriority_critical:iB,"critical-glow":"_critical-glow_1ijmf_1",levelSelect:cB,levelOption:lB,levelOptionFilled:dB,levelOption_priority_low:uB,levelOption_priority_medium:fB,levelOption_priority_high:mB,levelOption_priority_critical:pB,levelOption_complexity_tiny:hB,levelOption_complexity_low:gB,levelOption_complexity_medium:yB,levelOption_complexity_high:kB,levelOption_complexity_epic:vB,levelOptionActive:wB,levelOptionSelected:bB,levelLabel:SB,levelLabelFadeIn:AB,closeConfigBtn:CB,configItem:IB,settingsLabel:_B,settingsHint:TB,pathList:xB,pathChip:RB,pathValid:PB,pathInvalid:jB,pathValidIcon:EB,pathInvalidIcon:NB,pathText:DB,removePathBtn:MB,pathCount:LB,specialistSection:OB,toggleHeading:BB,dropdownList:WB,specialistBadge:$B,iconGrid:FB,iconPickerBtn:UB,iconPickerBtnActive:zB,categorySubConfig:HB,colorPickerRow:VB,colorPickerGrid:GB,colorSwatch:KB,colorSwatchActive:qB,categoryChipIcon:YB,fieldIconWrapper:ZB,fieldIcon:JB,field_dynamic:XB,fieldIcon_dynamic:QB,categoryTitleIcon:eW,editActionsGroup:tW,stickyActionHeader:rW,taskNoticeAnchor:nW,taskHierarchyHeader:aW,taskHierarchyBadgeRow:sW,taskHierarchyDivider:oW,taskHierarchySegment:iW,taskHierarchyMeta:cW,taskHierarchyActionBtn:lW,taskWorkstreamPicker:dW,taskWorkstreamPickerIcon:uW,taskWorkstreamPickerPanel:fW,taskWorkstreamPickerOption:mW,taskSaveStatus:pW,taskSaveStatusCenter:hW,taskSaveStatusError:gW,primaryUpdateBtn:yW,secondaryHeaderBtn:kW,secondaryHeaderBtnDestructive:vW,attachmentCaptureContainer:wW,capturePrompt:bW,previewContainer:SW,previewHeader:AW,attachmentCapturePreview:CW,actions:IW,primaryButton:_W,secondaryButton:TW,iconButton:xW,attachmentGrid:RW,attachmentCard:PW,attachmentPreviewContainer:jW,attachmentPreviewButton:EW,contextFileLink:NW,attachmentActions:DW,attachmentActionBtn:MW,attachmentActionBtnActive:LW,attachmentCaptionInput:OW,documentAttachmentCaptionInput:BW,hiddenInput:WW,contextMenuControl:$W,contextMenu:FW,contextAddMenu:UW,contextActionsMenu:zW,attachmentImageActionsMenu:HW,contextDestructiveMenuItem:VW,contextContent:GW,contextContentDropActive:KW,contextDropOverlay:qW,contextLinkComposer:YW,contextEmptyState:ZW,contextGroupLabel:JW,contextNotice:XW,contextCaptionEditor:QW,attachmentCaptionLabel:e$,documentAttachmentList:t$,documentAttachmentItem:r$,documentAttachmentRow:n$,documentAttachmentLink:a$,documentAttachmentMain:s$,documentAttachmentReference:o$,documentAttachmentName:i$,brokenImage:c$,brokenImagePlaceholder:l$,regionOverlay:d$,selectionBox:u$,exportRow:f$,exportItem:m$,taxonomyDrillDown:p$,drillDownList:h$,drillDownSection:g$,drillDownSectionHeader:y$,drillDownSectionTitle:k$,drillDownItem:v$,drillDownItemDimmed:w$,drillDownItemActive:b$,drillDownItemInfo:S$,drillDownItemText:A$,drillDownItemLabel:C$,drillDownItemSubtext:I$,addTaxonomyBtnSmall:_$,taxonomyDetailView:T$,slideIn:x$,detailHeader:R$,detailTitle:P$,detailContent:j$,createOverlay:E$,createDialog:N$,zoomIn:D$,dialogActions:M$,settingsGroup:L$,settingsItem:O$,mcpHealthCompactAlert:B$,mcpHealthUpdateRow:W$,mcpHealthBlockingAlert:$$,mcpHealthUpdateIcon:F$,mcpHealthCompactBody:U$,mcpHealthCompactActions:z$,mcpHealthStableAction:H$,mcpUpdateDialog:V$,mcpUpdateDialogIntro:G$,mcpUpdateRestartGuidance:K$,mcpUpdateVersionGrid:q$,mcpUpdateDiagnostics:Y$,mcpUpdateLoading:Z$,mcpUpdateNotice:J$,mcpUpdateCommands:X$,mcpUpdateSectionLabel:Q$,mcpHealthCommandRow:e3,mcpHealthCommand:t3,mcpUpdateDialogActions:r3,mcpHealthCopyError:n3,settingLabelGroup:a3,settingLabel:s3,settingDescription:o3,settingInput:i3,codeBlockWrapper:c3,codeHeader:l3,codeHeaderActions:d3,codeLabel:u3,codeHeaderDescription:f3,mcpTokenCardBody:m3,mcpTokenFormGrid:p3,mcpTokenOutputWrap:h3,mcpTokenValueField:g3,mcpTokenValueText:y3,mcpTokenValueInput:k3,mcpTokenActionRow:v3,settingsCodeBlock:w3,copyBtn:b3,copyBtnActive:S3,copyBtnNeutralActive:A3,headerDivider:C3,groupByContainer:I3,groupByLabel:_3,groupBySelect:T3,viewSwitcher:x3,selectWithIcon:R3,marginBottom16:P3,headerDraggable:j3,headerDragging:E3,filterSelectSort:N3,archiveRow:D3,taskScopeToggle:M3,taskScopeTabs:L3,taskScopeTab:O3,taskScopeTabActive:B3,taskToolbarAction:W3,overlayHighZ:$3,savedText:F3,shortcutInput:U3,saveSettingsBtnWrapper:z3,marginBottom12:H3,exportRowGrid:V3,settingSubtitleCustom:G3,capitalize:K3,marginTop12:q3,marginTop16:Y3,labelGroupFlex:Z3,codeBlockWrapperCustom:J3,kanbanWrapper:X3,kanbanContainer:Q3,kanbanTopScroll:eF,kanbanTopScrollSpacer:tF,kanbanColumn:rF,kanbanColumnSticky:nF,kanbanColumnCollapsed:aF,kanbanColumnPast:sF,kanbanColumnSelectedDay:oF,kanbanHeader:iF,kanbanCount:cF,kanbanHeaderDraggable:lF,kanbanHeaderPanning:dF,kanbanQuickAdd:uF,kanbanColorDot:fF,kanbanDroppable:mF,kanbanDroppableScroll:pF,kanbanDroppableScrollVirtualized:hF,kanbanVirtualCanvas:gF,kanbanVirtualRow:yF,kanbanEmpty:kF,kanbanCard:vF,kanbanCardWrapper:wF,taxonomyDropdownActive:bF,kanbanCardWrapperRaised:SF,kanbanCardTitle:AF,kanbanBadges:CF,kanbanBadge:IF,headerFlex:_F,marginBottom8:TF,marginBottom20:xF,configPanel:RF,configPanelLarge:PF,subLabelBlock:jF,subLabelBlock12:EF,flexBetween:NF,flexBetweenCenter:DF,deleteBtnSmall:MF,deleteBtnMedium:LF,trashIcon:OF,gridConfig:BF,flexColGap4:WF,flexColGap4Center:$F,flex1:FF,flexCol:UF,flexGrow1:zF,inputLabel:HF,inputLabelBlock:VF,checkboxInput:GF,configDividerMargin:KF,configDividerMargin24:qF,pathListMargin:YF,cancelBtnRed:ZF,code:JF,workflowList:XF,workflowActions:QF,textBtn:e4,workflowGrid:t4,checkboxLabel:r4,checkboxSmall:n4,docWorkspace:a4,docIndexPanel:s4,docWorkspaceTrayMode:o4,docViewerPanel:i4,docWorkspaceTrayOpen:c4,docTrayPanel:l4,docTrayPanelOpen:d4,docSpinning:u4,docSpin:f4,docViewerEmpty:m4,agentsModuleRoot:p4,agentsModuleWithTray:h4,agentsModuleTrayOpen:g4,agentTrayPanel:y4,agentTrayPanelOpen:k4,agentTrayHeader:v4,agentTrayTitle:w4,agentTrayContent:b4,agentTrayContentInner:S4,agentsModuleContent:A4,taskforceAgentsModuleRoot:C4,taskforceAgentsModuleMain:I4,taskforceAgentsModuleTrayOpen:_4,taskforceAgentRosterHeader:T4,taskforceAgentRosterTitle:x4,taskforceAgentRosterContent:R4,taskforceAgentLibraryPortal:P4,taskforceAgentBuilderNavigation:j4,taskforceAgentBuilderTabs:E4,taskforceAgentBuilderCreateBtn:N4,taskforceAgentBuilderTab:D4,taskforceAgentBuilderTabActive:M4,taskforceAgentBuilderPanel:L4,taskforceModelConnectionsRoot:O4,taskforceModelConnectionsRootExternalLibrary:B4,taskforceModelConnectionsWorkspace:W4,taskforceModelConnectionsHeader:$4,taskforceModelConnectionCardHeader:F4,taskforceModelConnectionActions:U4,taskforceModelConnectionCodeRow:z4,taskforceAgentConnectionControlHeader:H4,taskforceAgentConnectionBindingRow:V4,taskforceAgentConnectionCallout:G4,taskforceModelConnectionNameRow:K4,taskforceModelConnectionNameEditor:q4,taskforceModelConnectionIdentity:Y4,taskforceModelConnectionIdentityText:Z4,taskforceModelConnectionLogo:J4,taskforceModelConnectionCard:X4,taskforceAgentConnectionControl:Q4,taskforceModelConnectionLogin:e5,taskforceModelConnectionsEmpty:t5,taskforceModelConnectionMeta:r5,taskforceModelConnectionsLoading:n5,taskforceAgentTestError:a5,taskforceAgentTestNotice:s5,taskforceAgentBuilderEmpty:o5,taskforceAgentBuilderEmptyIcon:i5,taskforceAgentTestGrid:c5,taskforceAgentContextBanner:l5,taskforceAgentContextActions:d5,taskforceAssistantWorkspace:u5,taskforceAssistantWorkspaceContent:f5,taskforceAssistantWorkspaceOpen:m5,taskforceAssistantWorkspaceCollapsed:p5,taskforceModalWithAssistantPanel:h5,taskforceModalWithAssistantPanelCollapsed:g5,taskforceTaskModalOverlay:y5,taskforceAgentDrawerOverlay:k5,taskforceAgentDrawerOverlayCollapsed:v5,taskforceAgentDrawerPanel:w5,taskforceAgentDrawerHeader:b5,taskforceAgentDrawerAgentHeader:S5,taskforceAgentDrawerHeaderFallback:A5,taskforceAgentDrawerAgentAvatar:C5,taskforceAgentDrawerFallbackAvatar:I5,taskforceAgentDrawerAgentAvatarButton:_5,taskforceAgentDrawerAgentPicker:T5,taskforceAgentDrawerHeaderActions:x5,taskforceAgentDrawerLoading:R5,taskforceAgentDrawerSurface:P5,taskforceAgentDrawerControls:j5,taskforceAgentProfileTray:E5,taskforceAgentProfileTrayIn:N5,taskforceAgentProfileTrayHeader:D5,taskforceAgentProfileTrayIdentity:M5,taskforceAgentProfileTrayDetails:L5,taskforceAgentDrawerChatControls:O5,taskforceAgentConversationRename:B5,taskforceAgentConversationRenameError:W5,taskforceAgentDrawerConversationList:$5,taskforceAgentDrawerPrompt:F5,taskforceAgentDrawerPromptStatus:U5,taskforceAgentDrawerMetrics:z5,taskforceAgentOutputStack:H5,taskforceAgentHeaderTestPanel:V5,taskforceAgentTestComposer:G5,taskforceAgentTestSendButton:K5,taskforceAgentTestPending:q5,taskforceAgentRetryButton:Y5,taskforceAgentTestRestriction:Z5,taskforceAgentTestResult:J5,taskforceAgentTestResultHeader:X5,taskforceAgentTestResponse:Q5,taskforceAgentReadonlyField:eU,taskforceAgentAvatarPanel:tU,taskforceAgentAvatarEditControl:rU,taskforceAgentAvatarPreview:nU,taskforceAgentListAvatar:aU,taskforceAgentAvatarSyncing:sU,taskforceAgentAvatarSyncIcon:oU,taskforceAgentAvatarCopy:iU,taskforceAgentAvatarRole:cU,taskforceAgentToolbar:lU,taskforceAgentConversationSelect:dU,taskforceAgentList:uU,taskforceAgentListEmpty:fU,taskforceAgentSignatureColorField:mU,aiProfileColorPicker:pU,taskforceAgentBehaviorGrid:hU,taskforceAgentBehaviorWide:gU,taskforceAgentFieldHelper:yU,taskforceAgentPresentationGroup:kU,taskforceAgentLogList:vU,taskforceAgentLogEntry:wU,taskforceAgentToolDetails:bU,taskforceAgentToolActivity:SU,taskforceAgentToolActivityList:AU,taskforceAgentToolCall:CU,taskforceAgentToolCallFailed:IU,taskforceAgentToolCallName:_U,taskforceAgentToolCallStatus:TU,taskforceAgentToolDetailsGrid:xU,taskforceAgentToolCopyButton:RU,taskforceAgentLogSuccess:PU,taskforceAgentLogError:jU,taskforceAgentLogTime:EU,taskforceAgentConversationList:NU,taskforceAgentConversationBody:DU,taskforceAgentConversationMessage:MU,taskforceAgentConversationEmpty:LU,taskforceAgentConversationMessageUser:OU,taskforceAgentConversationMessageAssistant:BU,taskforceAgentMetaGrid:WU,marginTop24:$U,settingSubTitle:FU,dangerBtn:UU,aiProfilesExplorer:zU,aiProfilesRosterPanel:HU,aiProfilesRosterSummary:VU,aiProfileSeatSummary:GU,aiProfilesRosterState:KU,aiProfilesListPane:qU,aiProfilesList:YU,aiProfilesDetailViewport:ZU,aiProfilesSection:JU,aiProfilesSectionHeader:XU,aiProfileGroup:QU,aiProfileGroupSelected:e6,aiProfileGroupDuplicate:t6,aiProfileGroupHeader:r6,aiProfileGroupAvatar:n6,aiProfileGroupAvatarLogo:a6,aiProfileGroupIdentity:s6,aiProfileName:o6,aiProfileHandle:i6,aiProfileRole:c6,aiProfileSeatScopeIcon:l6,aiProfileGroupSignatureSwatch:d6,aiProfileSeatScopeIconDetail:u6,aiProfileSeatScopeIconCloud:f6,aiProfileSeatScopeIconLocal:m6,aiProfileDuplicateBadge:p6,aiProfileMergeSection:h6,aiProfileMergeRow:g6,aiProfileIdChip:y6,aiProfileKeepBadge:k6,aiProfileMergeActions:v6,aiProfileDetailPane:w6,aiProfileDetailCard:b6,aiProfileDetailHero:S6,aiProfileDetailIcon:A6,aiProfileDetailAvatar:C6,aiProfileDetailAvatarLogo:I6,aiProfileDetailHeading:_6,aiProfileDetailTitleRow:T6,aiProfileDetailTitle:x6,aiProfileDetailMetaRow:R6,aiProfileDetailHandle:P6,aiProfileDetailRole:j6,aiProfileDetailLinkedCount:E6,aiProfileDetailDescription:N6,aiProfileSignatureColor:D6,aiProfileSignatureSwatch:M6,aiProfileSignatureColorButton:L6,aiProfileColorOption:O6,aiProfileDetailDataList:B6,aiProfileDetailDataGroup:W6,aiProfileDetailDateGroup:$6,aiProfileDetailDataRow:F6,aiProfileDetailDataLabel:U6,aiProfileDetailDataValue:z6,aiProfileStatusSelect:H6,aiProfileInstanceSection:V6,aiProfileInstanceSectionHeader:G6,aiProfileInstanceList:K6,aiProfileInstanceCard:q6,aiProfileIdFooter:Y6,aiProfileIdFooterValue:Z6,aiProfileDangerTextButton:J6,aiProfileInstanceTopRow:X6,aiProfileInstanceName:Q6,aiProfileInstanceMeta:ez,aiProfileInlineError:tz},rz="_standaloneWrapper_128c3_1",nz="_standalonePage_128c3_11",az="_standaloneHeader_128c3_21",sz="_standaloneTitle_128c3_27",oz="_standaloneContent_128c3_31",iz="_workspaceToolRail_128c3_37",cz="_workspaceToolRailLeft_128c3_48",lz="_workspaceToolRailRight_128c3_57",dz="_workspaceToolRailMain_128c3_64",uz="_workspaceToolRailBottom_128c3_72",fz="_workspaceToolRailDivider_128c3_82",mz="_workspaceToolButton_128c3_89",pz="_headerTitleWidget_128c3_124",tn={standaloneWrapper:rz,standalonePage:nz,standaloneHeader:az,standaloneTitle:sz,standaloneContent:oz,workspaceToolRail:iz,workspaceToolRailLeft:cz,workspaceToolRailRight:lz,workspaceToolRailMain:dz,workspaceToolRailBottom:uz,workspaceToolRailDivider:fz,workspaceToolButton:mz,headerTitleWidget:pz},hz="_overlay_11v7l_1",gz="_browser_11v7l_16",yz="_header_11v7l_27",kz="_pathInfo_11v7l_36",vz="_actions_11v7l_52",wz="_list_11v7l_57",bz="_item_11v7l_63",Sz="_itemCurrent_11v7l_80",Az="_itemFile_11v7l_86",Cz="_empty_11v7l_90",Dn={overlay:hz,browser:gz,header:yz,pathInfo:kz,actions:vz,list:wz,item:bz,itemCurrent:Sz,itemFile:Az,empty:Cz},Iz="_overlay_1hk7m_2",_z="_overlayHighZ_1hk7m_15",Tz="_modal_1hk7m_20",xz="_draggableModal_1hk7m_46",Rz="_draggableHeader_1hk7m_53",Pz="_headerActions_1hk7m_61",jz="_modalContent_1hk7m_69",Ez="_form_1hk7m_80",Nz="_formActions_1hk7m_91",Dz="_modalFooter_1hk7m_98",Mz="_modalSizeSm_1hk7m_104",Lz="_modalSizeMd_1hk7m_108",Oz="_modalSizeMdWide_1hk7m_112",Bz="_modalSizeLg_1hk7m_116",Wz="_modalSizeXl_1hk7m_120",$z="_modalSizeFull_1hk7m_124",Fz="_settingsViewModal_1hk7m_129",Uz="_unsavedOverlay_1hk7m_148",zz="_unsavedModal_1hk7m_153",Hz="_unsavedHeader_1hk7m_159",Vz="_unsavedTitle_1hk7m_164",Gz="_unsavedContent_1hk7m_168",Kz="_unsavedText_1hk7m_172",qz="_unsavedActions_1hk7m_177",yr={overlay:Iz,overlayHighZ:_z,modal:Tz,draggableModal:xz,draggableHeader:Rz,headerActions:Pz,modalContent:jz,form:Ez,formActions:Nz,modalFooter:Dz,modalSizeSm:Mz,modalSizeMd:Lz,modalSizeMdWide:Oz,modalSizeLg:Bz,modalSizeXl:Wz,modalSizeFull:$z,settingsViewModal:Fz,unsavedOverlay:Uz,unsavedModal:zz,unsavedHeader:Hz,unsavedTitle:Vz,unsavedContent:Gz,unsavedText:Kz,unsavedActions:qz},Yz=90;function o_(e){const t=Date.parse(String(e||"").trim());return Number.isFinite(t)?new Date(t+Yz*24*60*60*1e3).toISOString():null}function i_(e,t){const r=o.useRef(t);o.useLayoutEffect(()=>{r.current=t},[t]);const n=o.useMemo(()=>Ex(e),[e]),s=o.useMemo(()=>n,[n.revision]);return o.useMemo(()=>({resolve:s.resolve,activate:i=>r.current(i)}),[s])}function c_(e,t,r){const[n,s]=o.useState(()=>new Set),i=o.useMemo(()=>new Map(e.map(h=>[h.taskId,h])),[e]),l=o.useMemo(()=>t.map(h=>i.get(h)).filter(h=>!!h),[t,i]),c=o.useMemo(()=>new Set(l.map(h=>h.id)),[l]);o.useEffect(()=>{s(h=>{const y=r?new Set(Array.from(h).filter(k=>c.has(k))):new Set;return y.size===h.size&&Array.from(y).every(k=>h.has(k))?h:y})},[r,c]);const d=o.useMemo(()=>l.filter(h=>n.has(h.id)),[l,n]),m=o.useCallback((h,y)=>{s(k=>{const v=new Set(k);return y?v.add(h):v.delete(h),v})},[]),f=o.useCallback(()=>{s(new Set(l.map(h=>h.id)))},[l]),g=o.useCallback(()=>s(new Set),[]);return{selectedIds:n,selectedRecords:d,matchingRecords:l,selectedCount:d.length,allMatchingSelected:l.length>0&&d.length===l.length,someMatchingSelected:d.length>0&&d.length<l.length,toggle:m,selectAllMatching:f,clear:g}}const Kv="taskforce:preview-context-attachment";function ip(e,t){const r=new CustomEvent(Kv,{detail:{attachment:e,...t},cancelable:!0});return!window.dispatchEvent(r)}async function l_(e,t){const r=t.fetcher||fetch,n=new URLSearchParams({workspaceId:t.workspaceId});if(e.kind==="image"){const c=await r(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(e.token)}?${n.toString()}`,{credentials:"include",headers:t.headers});if(!c.ok)throw new Error("Image not found");const m=(await c.json()).target;if(!m?.assetId||!m.path)throw new Error("Image target is unavailable");return{path:m.path,assetId:m.assetId,displayName:m.displayName,referenceNumber:e.referenceNumber,referenceLabel:m.imageReferenceLabel||e.token,linkRole:"image"}}const s=await r(`/api/taskforce/documents?${n.toString()}`,{credentials:"include",headers:t.headers});if(!s.ok)throw new Error("Document list unavailable");const l=(await s.json()).documents?.find(c=>c.referenceNumber===e.referenceNumber||String(c.referenceLabel||"").toUpperCase()===e.token);if(!l?.apiUrl)throw new Error("Document not found");return{path:l.apiUrl,fsPath:l.fsPath,assetId:l.assetId,displayName:l.title,originalFilename:l.originalFilename||void 0,referenceNumber:e.referenceNumber,referenceLabel:l.referenceLabel||e.token,linkRole:"reference"}}const Wi={workspaceId:"workspaceId",task:"task",activity:"activity",comment:"comment",initiative:"initiative",workstream:"workstream",image:"image",document:"document"};function Zz(e){const t=String(e||"").trim();if(!t)return null;try{const r=new URL(t);return r.protocol!=="http:"&&r.protocol!=="https:"?null:r.origin}catch{return null}}function Jz(e){const t=Zz(e.applicationBaseUrl),r=String(e.workspaceId).trim(),n=String(e.id||"").trim();if(!t||!r||!n)return null;const s=new URL("/",t);s.searchParams.set(Wi.workspaceId,r),s.searchParams.set(Wi[e.target],n);const i=String(e.activityId||"").trim();return e.target==="task"&&i&&s.searchParams.set(Wi.activity,i),s.toString()}function Xz(e){const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),r={Category:"Categories",Priority:"Priorities",Status:"Statuses"};return r[t]?r[t]:`${e}s`}function Sd({label:e,options:t,selected:r,onChange:n,variant:s="label",containerStyle:i,renderOptionContent:l,searchable:c=!1,searchPlaceholder:d="Search options...",noResultsText:m="No matching options."}){const[f,g]=o.useState(!1),[h,y]=o.useState(""),k=o.useRef(null),v=o.useRef(null),A=o.useRef(null),b=c&&h.trim()?t.filter(T=>T.label.toLocaleLowerCase().includes(h.trim().toLocaleLowerCase())):t;o.useEffect(()=>{const T=z=>{k.current&&!k.current.contains(z.target)&&g(!1)};return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[]),o.useEffect(()=>{f&&c&&A.current?.focus()},[f,c]);const w=T=>{r.includes(T)?n(r.filter(z=>z!==T)):n([...r,T])},P=t.length>0&&t.every(T=>{const z=s==="label"?T.label:T.value;return r.includes(z)}),E=!t.some(T=>{const z=s==="label"?T.label:T.value;return r.includes(z)}),D=()=>{n(P?[]:t.map(T=>s==="label"?T.label:T.value))},j=t.filter(T=>{const z=s==="label"?T.label:T.value;return r.includes(z)}).length,S=Xz(e),L=P?`All ${S}`:E?`No ${S}`:j===1?`1 ${e}`:`${j} ${S}`,_=()=>{y(""),g(T=>!T)};return a.jsxs("div",{className:R.filterContainer,ref:k,style:i,children:[a.jsxs("button",{ref:v,type:"button",className:`${R.filterButton} ${P?"":R.filterActive}`,onClick:_,title:`Filter by ${e}`,"aria-expanded":f,children:[a.jsx("span",{children:L}),a.jsx(Fd,{size:14,style:{transform:f?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),f&&a.jsxs("div",{className:`${R.filterDropdown} ${R.appScrollbar} tf-scrollbar`,onKeyDown:T=>{T.key==="Escape"&&(T.preventDefault(),g(!1),v.current?.focus())},children:[c?a.jsxs("div",{className:R.filterSearch,children:[a.jsx(ry,{size:14,className:R.filterSearchIcon,"aria-hidden":"true"}),a.jsx("input",{ref:A,type:"search",role:"searchbox",className:`tf-field-shell ${R.filterSearchInput}`,value:h,placeholder:d,"aria-label":d,onChange:T=>y(T.target.value)})]}):null,a.jsxs("label",{className:R.filterOption,children:[a.jsx("input",{type:"checkbox",checked:P,onChange:D}),a.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),a.jsx("div",{className:R.filterDivider}),b.map(T=>{const z=s==="label"?T.label:T.value,Y=r.includes(z);return a.jsxs("label",{className:R.filterOption,children:[a.jsx("input",{type:"checkbox",checked:Y,onChange:()=>w(z)}),l?l(T):a.jsx("span",{children:T.label})]},T.value)}),b.length===0?a.jsx("div",{className:R.filterEmpty,role:"status",children:m}):null]})]})}const Qz="_taskItem_17iu4_1",e7="_compressed_17iu4_25",t7="_taskHeader_17iu4_30",r7="_taskReferenceCluster_17iu4_34",n7="_taskMeta_17iu4_38",a7="_taskTitle_17iu4_43",s7="_taskCover_17iu4_59",o7="_taskItemRecentlyChanged_17iu4_103",i7="_assigneeAvatarShared_17iu4_143",c7="_assigneePicker_17iu4_156",l7="_inProgress_17iu4_216",d7="_onHold_17iu4_217",u7="_readyForReview_17iu4_218",f7="_completed_17iu4_219",m7="_cancelled_17iu4_232",p7="_readOnly_17iu4_243",h7="_archived_17iu4_252",g7="_taskContent_17iu4_262",y7="_kanbanCardOverlay_17iu4_271",k7="_deletedExpiry_17iu4_292",v7="_taskReferenceDivider_17iu4_315",w7="_taskReferenceSegment_17iu4_322",b7="_taskActions_17iu4_329",S7="_taskMetaCompact_17iu4_352",A7="_taskMetaRow_17iu4_359",C7="_taskMetaBadgeGroup_17iu4_369",I7="_taskMetaIdentityGroup_17iu4_382",_7="_taskDescription_17iu4_390",T7="_taskLatestComment_17iu4_399",x7="_taskLatestCommentTinted_17iu4_414",R7="_taskLatestCommentHeader_17iu4_418",P7="_taskLatestActivityHeading_17iu4_435",j7="_taskLatestActivityActor_17iu4_443",E7="_taskCommentCount_17iu4_454",N7="_taskLatestCommentText_17iu4_464",D7="_taskMetaCategory_17iu4_474",M7="_taskMetaType_17iu4_480",L7="_taskMetaPriority_17iu4_486",O7="_taskComplexityLabel_17iu4_490",B7="_taskCancellationReason_17iu4_495",W7="_archiveBadge_17iu4_648",$7="_attachmentThumbnails_17iu4_653",F7="_attachmentImageRow_17iu4_660",U7="_attachmentDocumentList_17iu4_667",z7="_attachmentThumbnail_17iu4_653",H7="_contextDocThumb_17iu4_702",V7="_contextDocMain_17iu4_728",G7="_contextDocName_17iu4_735",K7="_taskSpecialists_17iu4_745",q7="_taxonomiesList_17iu4_754",Y7="_selected_17iu4_815",Z7="_selectionControl_17iu4_820",kr={taskItem:Qz,compressed:e7,taskHeader:t7,taskReferenceCluster:r7,taskMeta:n7,taskTitle:a7,taskCover:s7,taskItemRecentlyChanged:o7,assigneeAvatarShared:i7,assigneePicker:c7,inProgress:l7,onHold:d7,readyForReview:u7,completed:f7,cancelled:m7,readOnly:p7,archived:h7,taskContent:g7,kanbanCardOverlay:y7,deletedExpiry:k7,taskReferenceDivider:v7,taskReferenceSegment:w7,taskActions:b7,taskMetaCompact:S7,taskMetaRow:A7,taskMetaBadgeGroup:C7,taskMetaIdentityGroup:I7,taskDescription:_7,taskLatestComment:T7,taskLatestCommentTinted:x7,taskLatestCommentHeader:R7,taskLatestActivityHeading:P7,taskLatestActivityActor:j7,taskCommentCount:E7,taskLatestCommentText:N7,taskMetaCategory:D7,taskMetaType:M7,taskMetaPriority:L7,taskComplexityLabel:O7,taskCancellationReason:B7,archiveBadge:W7,attachmentThumbnails:$7,attachmentImageRow:F7,attachmentDocumentList:U7,attachmentThumbnail:z7,contextDocThumb:H7,contextDocMain:V7,contextDocName:G7,taskSpecialists:K7,taxonomiesList:q7,selected:Y7,selectionControl:Z7};function J7(e){return function(t){return ax(t,e)}}const X7="I-",Q7=new RegExp("(?<![\\w-])(I-\\d+)(?![\\w-])","gi");function cp(e){return mp(X7,e)}const e8="_prose_1rd59_1",t8="_taskReference_1rd59_56",r8="_tableScroll_1rd59_72",n8="_blockScroll_1rd59_99",a8="_compactCodePreview_1rd59_115",s8="_taskList_1rd59_194",o8="_taskListItem_1rd59_198",i8="_taskCheckbox_1rd59_202",c8="_compact_1rd59_115",l8="_compactHeading_1rd59_231",d8="_codeLanguage_1rd59_262",u8="_contentIndicator_1rd59_271",f8="_detail_1rd59_277",m8="_conversation_1rd59_300",p8="_conversationHeading_1rd59_313",h8="_document_1rd59_321",os={prose:e8,taskReference:t8,tableScroll:r8,blockScroll:n8,compactCodePreview:a8,taskList:s8,taskListItem:o8,taskCheckbox:i8,compact:c8,compactHeading:l8,codeLanguage:d8,contentIndicator:u8,detail:f8,conversation:m8,conversationHeading:p8,document:h8};function g8(e){const t=e.trim();if(!t)return"";if(/^(?:#|\/|\.\/|\.\.\/)/.test(t))return t;const r=t.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();return r?r==="http"||r==="https"||r==="mailto"?t:"":t}function rA(e){return/^(?:https?:)?\/\//i.test(String(e||""))}function y8(e){return String(e||"").match(/(?:^|\s)language-([\w-]+)/)?.[1]||""}const k8=({children:e,variant:t,className:r,taskReferences:n,imageReferences:s,documentOverrides:i})=>{if(!e)return null;if(i&&t!=="document")throw new Error("documentOverrides are only supported by the document Markdown variant.");const l=g=>{if(typeof g=="string"){const k=(A,b,w,P)=>{const E=Array.from(A.matchAll(b));if(!E.length)return[A];const D=[];let j=0;return E.forEach((S,L)=>{const _=S[1],T=S.index??-1;if(T<j)return;T>j&&D.push(A.slice(j,T));const z=w(_);D.push(z?P(z,_,`${_}-${T}-${L}`):_),j=T+_.length}),j<A.length&&D.push(A.slice(j)),D};let v=[g];if(n&&(v=v.flatMap(A=>typeof A=="string"?k(A,Px,n.resolve,(b,w,P)=>a.jsx("button",{type:"button",className:os.taskReference,onClick:E=>{E.preventDefault(),E.stopPropagation(),n.activate(b)},children:w},`task-${P}`)):[A])),s&&(v=v.flatMap(A=>typeof A=="string"?k(A,Q7,s.resolve,(b,w,P)=>a.jsx("button",{type:"button",className:os.taskReference,onClick:E=>{E.preventDefault(),E.stopPropagation(),s.activate(b)},children:w},`image-${P}`)):[A])),n?.entityReferences){const A=n.entityReferences;v=v.flatMap(b=>typeof b=="string"?k(b,_x,A.resolve,(w,P,E)=>a.jsx("button",{type:"button",className:os.taskReference,title:`Open ${w.kind} ${w.token}`,onClick:D=>{D.preventDefault(),D.stopPropagation(),A.activate(w)},children:P},`entity-${E}`)):[b])}return v.length===1?v[0]:v}if(Array.isArray(g))return g.map(l);if(!re.isValidElement(g))return g;const h=g.props,y=typeof g.type=="string"?g.type:h.node?.tagName||"";return y==="a"||y==="button"||y==="code"||y==="pre"||y==="p"||h.children===void 0?g:re.cloneElement(g,void 0,re.Children.map(h.children,l))},c=(g,h)=>{const y=l(h);return t==="compact"?a.jsx("div",{className:os.compactHeading,children:y}):t==="conversation"?a.jsx("h3",{className:os.conversationHeading,children:y}):re.createElement(`h${g}`,void 0,y)},d={h1:({children:g})=>c(1,g),h2:({children:g})=>c(2,g),h3:({children:g})=>c(3,g),h4:({children:g})=>c(4,g),h5:({children:g})=>c(5,g),h6:({children:g})=>c(6,g),p:({children:g})=>a.jsx("p",{children:l(g)}),ul:({children:g,className:h,node:y,...k})=>a.jsx("ul",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?os.taskList:""}`.trim(),children:g}),ol:({children:g,className:h,node:y,...k})=>a.jsx("ol",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?os.taskList:""}`.trim(),children:g}),li:({children:g,className:h,node:y,...k})=>{const v=String(h||"").includes("task-list-item");return a.jsx("li",{...k,className:`${h||""} ${v?os.taskListItem:""}`.trim(),children:l(g)})},input:({type:g,checked:h,node:y,...k})=>g!=="checkbox"?a.jsx("input",{type:g,checked:h,readOnly:!0,...k}):a.jsx("input",{...k,type:"checkbox",checked:!!h,readOnly:!0,className:os.taskCheckbox}),a:({href:g,children:h,node:y,...k})=>{if(!g)return a.jsx("span",{children:h});const v=rA(g);return a.jsx("a",{...k,href:g,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:A=>A.stopPropagation(),children:h})},strong:({children:g})=>a.jsx("strong",{children:g}),em:({children:g})=>a.jsx("em",{children:g}),code:({children:g,className:h,node:y,...k})=>a.jsx("code",{className:h,...k,children:g}),pre:({children:g})=>{const h=re.Children.toArray(g).find(re.isValidElement),y=y8(h?.props.className);return t==="compact"?a.jsxs("div",{className:os.compactCodePreview,children:[y?a.jsx("span",{className:os.codeLanguage,children:y}):null,a.jsx("pre",{children:g})]}):a.jsx("div",{className:os.blockScroll,children:a.jsx("pre",{children:g})})},blockquote:({children:g})=>a.jsx("blockquote",{children:g}),table:({children:g,node:h,...y})=>t==="compact"?a.jsx("span",{className:os.contentIndicator,children:"[Table]"}):a.jsx("div",{className:os.tableScroll,role:"region","aria-label":"Scrollable table",tabIndex:0,children:a.jsx("table",{...y,children:g})}),img:({src:g,alt:h})=>{const y=String(h||"").trim();if(t==="compact"||t==="conversation"){if(!y)return null;const k=`[Image: ${y}]`;if(!g)return a.jsx("span",{className:os.contentIndicator,children:k});const v=rA(g);return a.jsx("a",{href:g,className:os.contentIndicator,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:A=>A.stopPropagation(),children:k})}return a.jsx("img",{src:g,alt:y})},hr:()=>t==="compact"?null:a.jsx("hr",{})},m=t==="document"&&i?{...d,...i}:d,f=t==="document"?[Ob]:[Ob,ox];return a.jsx("div",{className:`${os.prose} ${os[t]} ${r||""}`.trim(),"data-markdown-surface":t,children:a.jsx(sx,{skipHtml:!0,remarkPlugins:f,rehypePlugins:[J7],urlTransform:g8,components:m,children:e})})},py=re.memo(k8);function Jw({label:e,title:t,ariaLabel:r,copied:n=!1,disabled:s=!1,className:i="",onClick:l,children:c}){return a.jsx("button",{type:"button",className:`${R.referenceBadge} ${n?R.copiedReference:""} ${i}`.trim(),onClick:l,disabled:s,title:t,"aria-label":r,children:a.jsx("span",{className:R.referenceBadgeLabel,children:c??e})})}function nf({copied:e,disabled:t=!1,label:r,onClick:n,title:s="Copy task reference",ariaLabel:i,className:l="",provisional:c=!1}){return a.jsx(Jw,{copied:e,disabled:t,label:"",onClick:n,title:s,ariaLabel:i,className:`${c?R.provisionalReferenceBadge:""} ${l}`.trim(),children:r})}const v8=(e,t=10)=>{const r=Fg[e?.toLowerCase()]||{icon:"FileCode"},n=Xs[r.icon]||i0;return a.jsx(n,{size:t})},Xh=(e,t)=>{if(!e)return null;const r=t.trim();if(!r)return e;const s=my(r)?.match(/^(lt|t)-(\d+)$/),i=s?`${s[1]==="lt"?"l\\s*t":"t"}\\s*(?:-|\\s)?\\s*${s[2]}`:r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),l=new RegExp(`^${i}$`,"i"),c=e.split(new RegExp(`(${i})`,"gi"));return a.jsx(a.Fragment,{children:c.map((d,m)=>l.test(d)?a.jsx("mark",{className:R.highlight,children:d},m):d)})};function lp(e){return e.trim().replace(/\\/g,"/")}function d_(e){return e.split("?")[0].split("#")[0]}function hy(e){return typeof e=="string"?e:String(e.path||"").trim()}function u_(e){const r=d_(lp(e)).match(/\/api\/taskforce\/documents\/([^/]+)\/content$/i);if(!r?.[1])return null;try{return decodeURIComponent(r[1]).trim()||null}catch{return r[1].trim()||null}}function f_(e){if(!e.includes("/api/taskforce/context-link?path="))return null;try{const r=new URL(e,window.location.origin).searchParams.get("path");return r?lp(r):null}catch{return null}}function w8(e,t){const r=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(r)return lp(r);const n=hy(e),s=f_(n);return s?lp(s):null}function b8(e,t){const r=String(typeof e=="string"?"":e.assetId||"").trim();if(r)return r;const n=hy(e);return u_(n)}function m_(e,t){const r=hy(e);return u_(r)?!0:[(t||(typeof e=="string"?"":e.fsPath||"")).trim(),typeof e=="string"?"":String(e.originalFilename||"").trim(),typeof e=="string"?"":String(e.displayName||"").trim(),typeof e=="string"?"":String(e.caption||"").trim(),f_(r)||"",r].some(s=>{if(!s)return!1;const i=d_(lp(s)).toLowerCase();return i.endsWith(".md")||i.endsWith(".markdown")})}function p_(e,t){const r=hy(e),n=w8(e,t),s=b8(e);if(!n&&!s||!m_(e,n||void 0))return!1;const i=new CustomEvent("taskforce:open-markdown-document",{detail:{path:r,...n?{fsPath:n}:{},...s?{assetId:s}:{},...typeof e!="string"&&e.taskId?{taskId:e.taskId}:{}},cancelable:!0});return!window.dispatchEvent(i)}function h_(e,t){return e?JSON.stringify([String(e.taskId||"").trim(),String(e.assetId||"").trim(),String(t||"").trim()]):""}function S8(e){const t=h_(e.currentTarget,e.currentSessionId);return!t||t===e.lastHydratedIdentity}function A8(e){return e.trim().replace(/\\/g,"/")}function g_(e){return typeof e=="string"?e:String(e.path||"").trim()}function C8(e){return/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(e)}function I8(e){return typeof e=="string"?A8(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function y_(e,t){if(typeof e=="string")return!1;const r=String(e.assetId||"").trim(),n=g_(e);return!!(r&&n&&C8(n))}function qv(e,t){if(!y_(e))return!1;const r=e,n=String(t?.taskId||r.taskId||"").trim(),s=String(t?.taskReferenceLabel||"").trim(),i=String(r.assetId||"").trim(),l=cp(r),c=String(t?.sessionId||"").trim(),d=g_(e),m=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...n?{taskId:n}:{},...s?{taskReferenceLabel:s}:{},assetId:i,...l?{imageReferenceLabel:l}:{},...c?{sessionId:c}:{},path:d,displayName:I8(e)},cancelable:!0});return!window.dispatchEvent(m)}function nA(e,t){if(!e)return null;const r=String(e.taskId||"").trim(),n=String(e.assetId||"").trim(),s=String(e.path||"").trim(),i=String(e.displayName||"").trim()||"Image attachment";if(!n||!s)return null;const l=String(e.taskReferenceLabel||"").trim(),c=r?t.find(m=>m.id===r):void 0,d=r?l||Ss(c)||r:void 0;return{...r?{taskId:r}:{},...d?{taskReferenceLabel:d}:{},assetId:n,imageReferenceLabel:String(e.imageReferenceLabel||"").trim()||void 0,sessionId:String(e.sessionId||"").trim()||void 0,path:s,displayName:i}}function Gg(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t)return"";const r=t.split("/").filter(Boolean);return r[r.length-1]||""}function Xw(e){const t=String(e||"").trim(),r=t.lastIndexOf(".");return r<=0?{stem:t,ext:""}:{stem:t.slice(0,r),ext:t.slice(r)}}function k_(e,t){const r=String(e||"").trim(),n=String(t||"").trim();return r?n&&r.startsWith(`${n}-`)?r.slice(n.length+1):r.replace(/^asset-[a-z0-9-]+-/i,""):""}function _8(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function aA(e,t){const{stem:r,ext:n}=Xw(Gg(e)),s=k_(r,t),i=_8(s||r);return i?`${i}${n}`:Gg(e)||"Untitled document"}function Qk(e,t){const r=String(e||"").trim();if(!r)return!0;const n=Gg(r),{stem:s}=Xw(n),i=String(t||"").trim();if(i&&s.toLowerCase()===i.toLowerCase())return!0;const l=k_(s,t);return l?l!==s:!0}function T8(e){const t=String(e.title||"").trim();if(t&&!Qk(t,e.assetId))return t;const r=String(e.logicalName||"").trim();if(r&&!Qk(r,e.assetId))return r;const n=String(e.displayName||"").trim();if(n&&!Qk(n,e.assetId))return n;const s=String(e.originalFilename||"").trim();if(s)return aA(s,e.assetId);const i=String(e.fsPath||"").trim();return i?aA(i,e.assetId):"Untitled document"}function x8(e){return T8(e)}function R8(e){const t=x8(e),r=String(e.originalFilename||e.fsPath||"").trim(),n=Xw(Gg(r)).ext;return n?t.toLowerCase().endsWith(n.toLowerCase())?t:`${t}${n}`:t}const P8="_taxonomyDropdown_1qrdm_1",j8="_taxonomyDropdownActive_1qrdm_6",E8="_taxonomyDropdownButton_1qrdm_11",N8="_taxonomyDropdownOpen_1qrdm_50",D8="_taxonomyDropdownButtonContent_1qrdm_56",M8="_taxonomyDropdownIcon_1qrdm_64",L8="_taxonomyDropdownLabel_1qrdm_72",O8="_taxonomyDropdownChevron_1qrdm_81",B8="_taxonomyDropdownChevronOpen_1qrdm_87",W8="_taxonomyDropdownPanel_1qrdm_91",$8="_taxonomyDropdownOptions_1qrdm_111",F8="_taxonomyDropdownSearch_1qrdm_117",U8="_taxonomyDropdownSearchIcon_1qrdm_125",z8="_taxonomyDropdownSearchInput_1qrdm_134",H8="_taxonomyDropdownEmpty_1qrdm_148",V8="_taxonomyDropdownActions_1qrdm_155",G8="_taxonomyDropdownAction_1qrdm_155",K8="_taxonomyDropdownPanelPortal_1qrdm_195",q8="_taxonomyDropdownOption_1qrdm_111",Y8="_taxonomyDropdownOptionHighlighted_1qrdm_245",Z8="_taxonomyDropdownOptionSelected_1qrdm_251",da={taxonomyDropdown:P8,taxonomyDropdownActive:j8,taxonomyDropdownButton:E8,taxonomyDropdownOpen:N8,taxonomyDropdownButtonContent:D8,taxonomyDropdownIcon:M8,taxonomyDropdownLabel:L8,taxonomyDropdownChevron:O8,taxonomyDropdownChevronOpen:B8,taxonomyDropdownPanel:W8,taxonomyDropdownOptions:$8,taxonomyDropdownSearch:F8,taxonomyDropdownSearchIcon:U8,taxonomyDropdownSearchInput:z8,taxonomyDropdownEmpty:H8,taxonomyDropdownActions:V8,taxonomyDropdownAction:G8,taxonomyDropdownPanelPortal:K8,taxonomyDropdownOption:q8,taxonomyDropdownOptionHighlighted:Y8,taxonomyDropdownOptionSelected:Z8};function ev(e,t){const r=e||"var(--brand-primary)";return/^#[0-9a-f]{6}$/i.test(r)?`${r}${Math.round(t*255).toString(16).padStart(2,"0")}`:`color-mix(in srgb, ${r} ${Math.round(t*100)}%, transparent)`}function fi({value:e,options:t,onChange:r,placeholder:n="Select...",required:s=!1,disabled:i=!1,className:l="",ariaLabelledBy:c,ariaLabel:d,title:m,hideSelectedLabel:f=!1,hideChevron:g=!1,panelClassName:h="",portalPanel:y=!1,panelMinWidth:k,panelAlign:v="end",renderOptionContent:A,triggerContent:b,optionLabelColor:w,searchable:P=!1,searchPlaceholder:E="Search options...",noResultsText:D="No matching options.",panelActions:j=[]}){const[S,L]=o.useState(!1),[_,T]=o.useState(-1),[z,Y]=o.useState({}),[H,M]=o.useState(),[oe,K]=o.useState(""),Q=o.useRef(null),ee=o.useRef(null),fe=o.useRef(null),_e=o.useRef(null),$e=o.useRef([]),Ye=o.useRef([]),ye=o.useRef(null),ge=`taxonomy-listbox-${re.useId().replace(/:/g,"")}`,se=t.find(Z=>String(Z.value)===String(e)),ie=re.useMemo(()=>{const Z=oe.trim().toLocaleLowerCase();return!P||!Z?t:t.filter(G=>G.label.toLocaleLowerCase().includes(Z))},[t,oe,P]);o.useEffect(()=>{if(!S)return;const Z=G=>{const ne=G.target,Te=!!Q.current?.contains(ne),Le=!!fe.current?.contains(ne);!Te&&!Le&&(L(!1),T(-1))};return document.addEventListener("mousedown",Z),()=>document.removeEventListener("mousedown",Z)},[S]),o.useEffect(()=>{if(!S)T(-1);else{const Z=ie.findIndex(G=>String(G.value)===String(e));T(Z>=0?Z:ie.length>0?0:-1)}},[S,e,ie]),o.useEffect(()=>{S&&P&&ye.current?.focus()},[S,P]),o.useEffect(()=>{!S||_<0||$e.current[_]?.scrollIntoView?.({block:"nearest"})},[_,S]),o.useEffect(()=>{if(!S||!y)return;const Z=Te=>{const Le=ee.current;if(!Le)return;const Ue=Le.getBoundingClientRect(),st=8,ft=window.innerWidth,xe=window.innerHeight,ke=Math.max(0,ft-st*2);(Te||_e.current===null)&&(_e.current=Math.min(Math.max(k||0,Ue.width),ke));const ve=Math.min(_e.current,ke),He=v==="start"?Ue.left:Ue.right-ve,Ee=Math.min(Math.max(st,He),Math.max(st,ft-ve-st)),de=Math.max(0,xe-Ue.bottom-st),x=Math.max(0,Ue.top-st),le=Math.min(fe.current?.scrollHeight||280,280),Ie=de>=le||de>=x,Je=Ie?de:x;Y({position:"fixed",top:Ie?Ue.bottom:void 0,bottom:Ie?void 0:xe-Ue.top,left:Ee,width:ve,minWidth:ve,maxWidth:ke,maxHeight:Math.min(le,Je),zIndex:2e3})},G=Te=>{const Le=Te.target;Le instanceof Node&&fe.current?.contains(Le)||Z(!1)},ne=()=>Z(!0);return _e.current=null,Z(!0),window.addEventListener("resize",ne),window.addEventListener("scroll",G,!0),()=>{window.removeEventListener("resize",ne),window.removeEventListener("scroll",G,!0),_e.current=null}},[S,v,y,k]);const me=()=>{if(P&&K(""),y){const Z=Q.current?.closest("[data-theme]");M(Z?.dataset.theme)}L(!0)},$=()=>{if(!i){if(S){L(!1);return}me()}},V=Z=>{r(Z.value),K(""),L(!1),ee.current?.focus()},B=Z=>{Z.disabled||(Z.onSelect(),K(""),L(!1),ee.current?.focus())},N=Z=>{if(i)return;const G=Z.currentTarget===ye.current;switch(Z.key){case"Enter":if(Z.preventDefault(),!S)me();else if(_>=0){const ne=ie[_];ne&&V(ne)}break;case" ":if(G)return;if(Z.preventDefault(),!S)me();else if(_>=0){const ne=ie[_];ne&&V(ne)}break;case"Escape":Z.preventDefault(),L(!1),ee.current?.focus();break;case"ArrowDown":Z.preventDefault(),S?ie.length===0?T(-1):T(ne=>ne<ie.length-1?ne+1:0):me();break;case"ArrowUp":Z.preventDefault(),S?ie.length===0?T(-1):T(ne=>ne>0?ne-1:ie.length-1):me();break;case"Home":if(G)return;Z.preventDefault(),S&&T(ie.length>0?0:-1);break;case"End":if(G)return;Z.preventDefault(),S&&T(ie.length>0?ie.length-1:-1);break;case"Tab":if(S&&!Z.shiftKey&&j.length>0){Z.preventDefault(),Ye.current[0]?.focus();break}L(!1);break}},be=(Z,G)=>{const ne=Z.icon&&Xs[Z.icon]?Xs[Z.icon]:Md,Te=Z.color?aa(Z.color):"var(--text-secondary)",Le=G?.hideLabel===!0;return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${da.taxonomyDropdownIcon}`,style:{color:Te},children:a.jsx(ne,{size:16})}),!Le&&a.jsx("span",{className:`taxonomyDropdownLabel ${da.taxonomyDropdownLabel}`,style:G?.labelColor?{color:G.labelColor}:void 0,children:Z.label})]})},Ae=(Z,G)=>!G?.hideLabel&&A?A(Z):be(Z,G),q=S?a.jsxs("div",{ref:fe,id:`${ge}-panel`,className:`taxonomyDropdownPanel ${da.taxonomyDropdownPanel} ${y?da.taxonomyDropdownPanelPortal:""} ${h}`,"data-theme":y?H:void 0,style:y?z:void 0,children:[P?a.jsxs("div",{className:da.taxonomyDropdownSearch,children:[a.jsx(ry,{size:15,className:da.taxonomyDropdownSearchIcon,"aria-hidden":"true"}),a.jsx("input",{ref:ye,type:"search",role:"searchbox",className:`tf-field-shell ${da.taxonomyDropdownSearchInput}`,value:oe,placeholder:E,"aria-label":E,"aria-controls":ge,"aria-activedescendant":_>=0?`${ge}-option-${_}`:void 0,onChange:Z=>K(Z.target.value),onKeyDown:N})]}):null,a.jsx("div",{id:ge,className:`tf-scrollbar tf-scrollbar--compact ${da.taxonomyDropdownOptions}`,role:"listbox","aria-labelledby":c,"aria-label":d,children:ie.map((Z,G)=>{const ne=String(Z.value)===String(e),Te=G===_;return a.jsx("div",{ref:Le=>{$e.current[G]=Le},id:`${ge}-option-${G}`,className:`taxonomyDropdownOption ${da.taxonomyDropdownOption} ${ne?`taxonomyDropdownOptionSelected ${da.taxonomyDropdownOptionSelected}`:""} ${Te?`taxonomyDropdownOptionHighlighted ${da.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":ne,onClick:()=>V(Z),onMouseEnter:()=>T(G),style:(()=>{const Le=Z.color,st=aa(Le)||"var(--brand-primary)";return{"--option-color":st,"--option-border":ev(st,.18),"--option-bg":ev(st,.06)}})(),children:Ae(Z,{labelColor:w})},String(Z.value))})}),ie.length===0?a.jsx("div",{className:da.taxonomyDropdownEmpty,role:"status",children:D}):null,j.length>0?a.jsx("div",{className:da.taxonomyDropdownActions,role:"group","aria-label":"Actions",children:j.map((Z,G)=>{const ne=Z.icon&&Xs[Z.icon]?Xs[Z.icon]:null;return a.jsxs("button",{ref:Te=>{Ye.current[G]=Te},type:"button",className:da.taxonomyDropdownAction,disabled:Z.disabled,onClick:()=>B(Z),onKeyDown:Te=>{Te.key==="Escape"?(Te.preventDefault(),L(!1),ee.current?.focus()):Te.key==="Tab"&&!Te.shiftKey&&L(!1)},children:[ne?a.jsx(ne,{size:16,"aria-hidden":"true"}):null,a.jsx("span",{children:Z.label})]},Z.id)})}):null]}):null;return a.jsxs("div",{ref:Q,className:`taxonomyDropdown ${da.taxonomyDropdown} ${S?`taxonomyDropdownActive ${da.taxonomyDropdownActive}`:""} ${l}`,children:[a.jsxs("button",{ref:ee,type:"button",className:`taxonomyDropdownButton ${da.taxonomyDropdownButton} ${S?`taxonomyDropdownOpen ${da.taxonomyDropdownOpen}`:""}`,onClick:$,onKeyDown:N,disabled:i,role:"combobox","aria-haspopup":"listbox","aria-expanded":S,"aria-controls":ge,"aria-activedescendant":S&&_>=0?`${ge}-option-${_}`:void 0,"aria-labelledby":c,"aria-label":d,title:m,style:(()=>{if(!se)return{};const Z=se.color,G=aa(Z);return{"--field-bg":ev(G,.06)}})(),children:[a.jsx("span",{className:`taxonomyDropdownButtonContent ${da.taxonomyDropdownButtonContent}`,children:b??(se?Ae(se,{hideLabel:f}):a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${da.taxonomyDropdownIcon}`,children:a.jsx(Md,{size:16})}),a.jsx("span",{className:`taxonomyDropdownLabel ${da.taxonomyDropdownLabel}`,children:n})]}))}),!g&&a.jsx(Fd,{size:16,className:`taxonomyDropdownChevron ${da.taxonomyDropdownChevron} ${S?`taxonomyDropdownChevronOpen ${da.taxonomyDropdownChevronOpen}`:""}`})]}),y?q?uc.createPortal(q,document.body):null:q]})}function Kg({task:e,status:t,disabled:r=!1,actionDisabled:n,statusDisabled:s,compressed:i=!1,shortLabels:l=!1,showLabel:c=!0,onSetStatus:d,onStatusChange:m,onArchiveTask:f,onUnarchiveTask:g,archiveActionMode:h="auto"}){const y=e?.status||t||"task",v=h==="auto"?!!e&&(y==="done"||y==="cancelled")?"archive":"none":h,A=n??r,b=s??r,w=Td.map(j=>({...j,label:(i||l)&&j.shortLabel||j.label})),P=aa(Td.find(j=>j.value===y)?.color)||"var(--text-secondary)",E={"--field-border":P,"--field-text":P,"--field-hover-border":P,"--field-focus-border":P,"--field-focus-ring":`color-mix(in srgb, ${P} 18%, transparent)`},D=v==="archive"&&e?[{id:"archive-task",label:"Archive task",icon:"Archive",disabled:A||!f,onSelect:()=>f?.(e)}]:[];return a.jsxs("div",{className:`${R.statusActionsGroup} ${i?R.statusActionsGroupCompact:""}`,children:[v==="unarchive"&&a.jsx("button",{type:"button",className:`${R.actionBtn} ${R.restoreTaskBtn}`,onClick:()=>e&&!A&&g?.(e),disabled:A,title:"Unarchive task","aria-label":"Unarchive task",children:a.jsx($i,{size:i?12:16})}),a.jsx("div",{className:`${R.statusSelectWrap} ${R.statusTaxonomyDropdownWrap}`,style:E,children:a.jsx(fi,{value:y,options:w,disabled:b||!e&&!m,ariaLabel:"Status",optionLabelColor:"var(--text-primary)",hideSelectedLabel:!c,hideChevron:!c,className:`${R.statusTaxonomyDropdown} ${i?R.statusTaxonomyDropdownCompact:""} ${c?"":R.statusTaxonomyDropdownIconOnly}`,panelClassName:c?"":R.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!c,panelMinWidth:c?void 0:144,panelActions:D,onChange:j=>{const S=j;if(e){d?.(e,S);return}m?.(S)}})})]})}const Qw={general:{id:"general",label:"General",generatedOption:!0},antigravity:{id:"antigravity",label:"Antigravity",logoKey:"antigravity",surfaceHint:"coding_tool",generatedOption:!0,signatureColor:"#e49d25"},"claude-code":{id:"claude-code",label:"Claude Code CLI",logoKey:"claude-code",surfaceHint:"cli",generatedOption:!0,signatureColor:"#d97757"},"claude-chat":{id:"claude-chat",label:"Claude Chat",logoKey:"claude-chat",surfaceHint:"chat_app",signatureColor:"#d97757"},cline:{id:"cline",label:"Cline",logoKey:"cline",surfaceHint:"ide",generatedOption:!0,signatureColor:"#25a9e4"},codex:{id:"codex",label:"Codex",logoKey:"codex",surfaceHint:"cli",generatedOption:!0,signatureColor:"#6366f1"},cursor:{id:"cursor",label:"Cursor",logoKey:"cursor",surfaceHint:"ide",generatedOption:!0,signatureColor:"#186e95"},"gemini-cli":{id:"gemini-cli",label:"Gemini CLI",logoKey:"gemini-cli",surfaceHint:"cli",generatedOption:!0,signatureColor:"#4285f4"},grok:{id:"grok",label:"Grok CLI",logoKey:"grok",surfaceHint:"cli",generatedOption:!0,signatureColor:"#181b95"},"grok-chat":{id:"grok-chat",label:"Grok",logoKey:"grok-chat",surfaceHint:"chat_app",signatureColor:"#181b95"},"gemini-chat":{id:"gemini-chat",label:"Gemini Spark",logoKey:"gemini-chat",surfaceHint:"chat_app",signatureColor:"#4285f4"},"mistral-chat":{id:"mistral-chat",label:"Mistral Vibe",logoKey:"mistral-chat",surfaceHint:"chat_app",signatureColor:"#fa520f"},"perplexity-chat":{id:"perplexity-chat",label:"Perplexity",logoKey:"perplexity-chat",surfaceHint:"chat_app",signatureColor:"#1fb8cd"},kiro:{id:"kiro",label:"Kiro",logoKey:"kiro",surfaceHint:"ide",generatedOption:!0,signatureColor:"#7c3aed"},openclaw:{id:"openclaw",label:"OpenClaw",surfaceHint:"agent",generatedOption:!0},vscode:{id:"vscode",label:"VS Code / Copilot",logoKey:"vscode",surfaceHint:"ide",generatedOption:!0,signatureColor:"#256ee4"},windsurf:{id:"windsurf",label:"Windsurf",logoKey:"windsurf",surfaceHint:"ide",generatedOption:!0,signatureColor:"#189587"},"chatgpt-desktop":{id:"chatgpt-desktop",label:"ChatGPT Desktop",logoKey:"chatgpt",surfaceHint:"chat_app",signatureColor:"#10a37f"}};function J8(e){const t=String(e||"").trim().toLowerCase();return t==="claude-desktop"?"claude-chat":Object.prototype.hasOwnProperty.call(Qw,t)?t:null}function v_(e){const t=J8(e);return t?Qw[t]:null}function ane(){return Object.values(Qw).filter(e=>e.generatedOption).map(({id:e,label:t})=>({id:e,label:t}))}function X8(e){const t=e?.providerMetadata?.taskforce;return!t||typeof t!="object"||Array.isArray(t)?"":String(t.taskforceAgentId||"").trim()}function w_(e){return!!X8(e)}function sne(e){if(!e||e.archivedAt||e.mergedIntoProfileId||w_(e)||e.surfaceType!=="agent")return!1;const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,n=v_(r);return!(n?.logoKey||n?.surfaceHint&&n.surfaceHint!=="agent")}const Q8="/taskforce/assets/antigravity-DRKQga2U.png",e9="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%202406%202406'%3e%3cpath%20d='M1%20578.4C1%20259.5%20259.5%201%20578.4%201h1249.1c319%200%20577.5%20258.5%20577.5%20577.4V2406H578.4C259.5%202406%201%202147.5%201%201828.6V578.4z'%20fill='%2374aa9c'/%3e%3cpath%20id='a'%20d='M1107.3%20299.1c-197.999%200-373.9%20127.3-435.2%20315.3L650%20743.5v427.9c0%2021.4%2011%2040.4%2029.4%2051.4l344.5%20198.515V833.3h.1v-27.9L1372.7%20604c33.715-19.52%2070.44-32.857%20108.47-39.828L1447.6%20450.3C1361%20353.5%201237.1%20298.5%201107.3%20299.1zm0%20117.5-.6.6c79.699%200%20156.3%2027.5%20217.6%2078.4-2.5%201.2-7.4%204.3-11%206.1L952.8%20709.3c-18.4%2010.4-29.4%2030-29.4%2051.4V1248l-155.1-89.4V755.8c-.1-187.099%20151.601-338.9%20339-339.2z'%20fill='%23fff'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(60%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(120%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(180%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(240%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(300%201203%201203)'/%3e%3c/svg%3e",t9="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e",r9="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiByb2xlPSJpbWciIGFyaWEtbGFiZWxsZWRieT0idGl0bGUiPgogIDx0aXRsZSBpZD0idGl0bGUiPkNsYXVkZSBDb2RlIENsYXcnZCBtYXNjb3Q8L3RpdGxlPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjZDk3NzU3Ii8+CiAgPGcKICAgIGZpbGw9IiNmN2YzZWUiCiAgICBmb250LWZhbWlseT0iTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2UiCiAgICBmb250LXNpemU9IjM1IgogICAgZm9udC13ZWlnaHQ9IjcwMCIKICAgIHRleHQtYW5jaG9yPSJtaWRkbGUiCiAgPgogICAgPHRleHQgeD0iMTI4IiB5PSIxMDIiPiYjeDI1OTA7JiN4MjU5QjsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTlDOyYjeDI1OEM7PC90ZXh0PgogICAgPHRleHQgeD0iMTI4IiB5PSIxMzciPiYjeDI1OUQ7JiN4MjU5QzsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTg4OyYjeDI1ODg7JiN4MjU5QjsmI3gyNTk4OzwvdGV4dD4KICAgIDx0ZXh0IHg9IjEyOCIgeT0iMTcyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4gICYjeDI1OTg7JiN4MjU5ODsgJiN4MjU5RDsmI3gyNTlEOyAgPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",n9="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='92px'%20height='96px'%20viewBox='0%200%2092%2096'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eGroup%20Copy%202%3c/title%3e%3cg%20id='Page-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='icon-copy'%20transform='translate(-34,%20-40)'%20fill='%2324292F'%3e%3cg%20id='Group-Copy-2'%20transform='translate(34,%2040.5)'%3e%3cg%20id='Group-3-Copy-4'%20transform='translate(0,%200)'%3e%3cpath%20d='M65.4492701,16.3%20C76.3374701,16.3%2085.1635558,25.16479%2085.1635558,36.1%20L85.1635558,42.7%20L90.9027661,54.1647464%20C91.4694141,55.2966923%2091.4668177,56.6300535%2090.8957658,57.7597839%20L85.1635558,69.1%20L85.1635558,75.7%20C85.1635558,86.63554%2076.3374701,95.5%2065.4492701,95.5%20L26.0206986,95.5%20C15.1328272,95.5%206.30641291,86.63554%206.30641291,75.7%20L6.30641291,69.1%20L0.448507752,57.7954874%20C-0.14693501,56.6464093%20-0.149634367,55.2802504%200.441262896,54.1288283%20L6.30641291,42.7%20L6.30641291,36.1%20C6.30641291,25.16479%2015.1328272,16.3%2026.0206986,16.3%20L65.4492701,16.3%20Z%20M62.9301895,22%20L29.189529,22%20C19.8723267,22%2012.3191987,29.5552188%2012.3191987,38.875%20L12.3191987,44.5%20L7.44288578,53.9634655%20C6.84794449,55.1180686%206.85066096,56.4896598%207.45017099,57.6418974%20L12.3191987,67%20L12.3191987,72.625%20C12.3191987,81.9450625%2019.8723267,89.5%2029.189529,89.5%20L62.9301895,89.5%20C72.2476729,89.5%2079.8005198,81.9450625%2079.8005198,72.625%20L79.8005198,67%20L84.5682187,57.6061395%20C85.1432011,56.473244%2085.1458141,55.1345713%2084.5752587,53.9994398%20L79.8005198,44.5%20L79.8005198,38.875%20C79.8005198,29.5552188%2072.2476729,22%2062.9301895,22%20Z'%20id='Combined-Shape'%20fill-rule='nonzero'%3e%3c/path%3e%3ccircle%20id='Oval'%20cx='45.7349843'%20cy='11'%20r='11'%3e%3c/circle%3e%3c/g%3e%3crect%20id='Rectangle-Copy'%20stroke='%2324292F'%20stroke-width='8'%20x='31'%20y='44.5'%20width='5'%20height='22'%20rx='2.5'%3e%3c/rect%3e%3crect%20id='Rectangle-Copy-2'%20stroke='%2324292F'%20stroke-width='8'%20x='55'%20y='44.5'%20width='5'%20height='22'%20rx='2.5'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",a9="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eCodex%3c/title%3e%3cpath%20d='M19.503%200H4.496A4.496%204.496%200%20000%204.496v15.007A4.496%204.496%200%20004.496%2024h15.007A4.496%204.496%200%200024%2019.503V4.496A4.496%204.496%200%200019.503%200z'%20fill='%23fff'%3e%3c/path%3e%3cpath%20d='M9.064%203.344a4.578%204.578%200%20012.285-.312c1%20.115%201.891.54%202.673%201.275.01.01.024.017.037.021a.09.09%200%2000.043%200%204.55%204.55%200%20013.046.275l.047.022.116.057a4.581%204.581%200%20012.188%202.399c.209.51.313%201.041.315%201.595a4.24%204.24%200%2001-.134%201.223.123.123%200%2000.03.115c.594.607.988%201.33%201.183%202.17.289%201.425-.007%202.71-.887%203.854l-.136.166a4.548%204.548%200%2001-2.201%201.388.123.123%200%2000-.081.076c-.191.551-.383%201.023-.74%201.494-.9%201.187-2.222%201.846-3.711%201.838-1.187-.006-2.239-.44-3.157-1.302a.107.107%200%2000-.105-.024c-.388.125-.78.143-1.204.138a4.441%204.441%200%2001-1.945-.466%204.544%204.544%200%2001-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81%205.81%200%2001-.37-.961%204.582%204.582%200%2001-.014-2.298.124.124%200%2000.006-.056.085.085%200%2000-.027-.048%204.467%204.467%200%2001-1.034-1.651%203.896%203.896%200%2001-.251-1.192%205.189%205.189%200%2001.141-1.6c.337-1.112.982-1.985%201.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098%200%2000.065-.066%204.51%204.51%200%2001.829-1.615%204.535%204.535%200%20011.837-1.388zm3.482%2010.565a.637.637%200%20000%201.272h3.636a.637.637%200%20100-1.272h-3.636zM8.462%209.23a.637.637%200%2000-1.106.631l1.272%202.224-1.266%202.136a.636.636%200%20101.095.649l1.454-2.455a.636.636%200%2000.005-.64L8.462%209.23z'%20fill='url(%23lobe-icons-codex-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-codex-_R_0_'%20x1='12'%20x2='12'%20y1='3'%20y2='21'%3e%3cstop%20stop-color='%23B1A7FF'%3e%3c/stop%3e%3cstop%20offset='.5'%20stop-color='%237A9DFF'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%233941FF'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",s9="/taskforce/assets/cursor-BM_3k4Y4.svg",o9="/taskforce/assets/gemini-cli-icon-dBAVjCcn.png",i9="data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%2028C14%2026.0633%2013.6267%2024.2433%2012.88%2022.54C12.1567%2020.8367%2011.165%2019.355%209.905%2018.095C8.645%2016.835%207.16333%2015.8433%205.46%2015.12C3.75667%2014.3733%201.93667%2014%200%2014C1.93667%2014%203.75667%2013.6383%205.46%2012.915C7.16333%2012.1683%208.645%2011.165%209.905%209.905C11.165%208.645%2012.1567%207.16333%2012.88%205.46C13.6267%203.75667%2014%201.93667%2014%200C14%201.93667%2014.3617%203.75667%2015.085%205.46C15.8317%207.16333%2016.835%208.645%2018.095%209.905C19.355%2011.165%2020.8367%2012.1683%2022.54%2012.915C24.2433%2013.6383%2026.0633%2014%2028%2014C26.0633%2014%2024.2433%2014.3733%2022.54%2015.12C20.8367%2015.8433%2019.355%2016.835%2018.095%2018.095C16.835%2019.355%2015.8317%2020.8367%2015.085%2022.54C14.3617%2024.2433%2014%2026.0633%2014%2028Z'%20fill='url(%23gemini-gradient)'/%3e%3cdefs%3e%3cradialGradient%20id='gemini-gradient'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(2.77876%2011.3795)%20rotate(18.6832)%20scale(29.8025%20238.737)'%3e%3cstop%20offset='0.0671246'%20stop-color='%239168C0'/%3e%3cstop%20offset='0.342551'%20stop-color='%235684D1'/%3e%3cstop%20offset='0.672076'%20stop-color='%231BA1E3'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e",sA="/taskforce/assets/grok-BuodbWaG.svg",c9="data:image/svg+xml,%3csvg%20width='1200'%20height='1200'%20viewBox='0%200%201200%201200'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='1200'%20height='1200'%20rx='260'%20fill='%239046FF'/%3e%3cmask%20id='mask0_1106_4856'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='272'%20y='202'%20width='655'%20height='796'%3e%3cpath%20d='M926.578%20202.793H272.637V997.857H926.578V202.793Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1106_4856)'%3e%3cpath%20d='M398.554%20818.914C316.315%201001.03%20491.477%201046.74%20620.672%20940.156C658.687%201059.66%20801.052%20970.473%20852.234%20877.795C964.787%20673.567%20919.318%20465.357%20907.64%20422.374C827.637%20129.443%20427.623%20128.946%20358.8%20423.865C342.651%20475.544%20342.402%20534.18%20333.458%20595.051C328.986%20625.86%20325.507%20645.488%20313.83%20677.785C306.873%20696.424%20297.68%20712.819%20282.773%20740.645C259.915%20783.881%20269.604%20867.113%20387.87%20823.883L399.051%20818.914H398.554Z'%20fill='white'/%3e%3cpath%20d='M636.123%20549.353C603.328%20549.353%20598.359%20510.097%20598.359%20486.742C598.359%20465.623%20602.086%20448.977%20609.293%20438.293C615.504%20428.852%20624.697%20424.131%20636.123%20424.131C647.555%20424.131%20657.492%20428.852%20664.447%20438.541C672.398%20449.474%20676.623%20466.12%20676.623%20486.742C676.623%20525.998%20661.471%20549.353%20636.375%20549.353H636.123Z'%20fill='black'/%3e%3cpath%20d='M771.24%20549.353C738.445%20549.353%20733.477%20510.097%20733.477%20486.742C733.477%20465.623%20737.203%20448.977%20744.41%20438.293C750.621%20428.852%20759.814%20424.131%20771.24%20424.131C782.672%20424.131%20792.609%20428.852%20799.564%20438.541C807.516%20449.474%20811.74%20466.12%20811.74%20486.742C811.74%20525.998%20796.588%20549.353%20771.492%20549.353H771.24Z'%20fill='black'/%3e%3c/g%3e%3c/svg%3e",l9="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMistral%3c/title%3e%3cpath%20d='M3.428%203.4h3.429v3.428H3.428V3.4zm13.714%200h3.43v3.428h-3.43V3.4z'%20fill='gold'%3e%3c/path%3e%3cpath%20d='M3.428%206.828h6.857v3.429H3.429V6.828zm10.286%200h6.857v3.429h-6.857V6.828z'%20fill='%23FFAF00'%3e%3c/path%3e%3cpath%20d='M3.428%2010.258h17.144v3.428H3.428v-3.428z'%20fill='%23FF8205'%3e%3c/path%3e%3cpath%20d='M3.428%2013.686h3.429v3.428H3.428v-3.428zm6.858%200h3.429v3.428h-3.429v-3.428zm6.856%200h3.43v3.428h-3.43v-3.428z'%20fill='%23FA500F'%3e%3c/path%3e%3cpath%20d='M0%2017.114h10.286v3.429H0v-3.429zm13.714%200H24v3.429H13.714v-3.429z'%20fill='%23E10500'%3e%3c/path%3e%3c/svg%3e",d9="data:image/svg+xml,%3csvg%20fill='%231FB8CD'%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3ePerplexity%3c/title%3e%3cpath%20d='M22.3977%207.0896h-2.3106V.0676l-7.5094%206.3542V.1577h-1.1554v6.1966L4.4904%200v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318%206.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676%204.8691%204.4634H5.6458V2.6262zM2.7576%2016.332V8.245h7.8476l-6.1149%206.1147v1.9723H2.7576zm2.8882%205.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764%205.2993zm12.7086.0248-5.7766-5.1509V9.0618l5.7766%205.7766v6.5588zm2.8882-5.0652h-1.733v-1.9723L13.3948%208.245h7.8478v8.087z'/%3e%3c/svg%3e",u9="/taskforce/assets/vscode-C_7wk1WI.svg",f9="data:image/svg+xml,%3csvg%20width='1024'%20height='1024'%20viewBox='0%200%201024%201024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_109_63)'%3e%3crect%20width='1024'%20height='1024'%20fill='%23F9F3E9'/%3e%3cpath%20d='M897.246%20286.869H889.819C850.735%20286.808%20819.017%20318.46%20819.017%20357.539V515.589C819.017%20547.15%20792.93%20572.716%20761.882%20572.716C743.436%20572.716%20725.02%20563.433%20714.093%20547.85L552.673%20317.304C539.28%20298.16%20517.486%20286.747%20493.895%20286.747C457.094%20286.747%20423.976%20318.034%20423.976%20356.657V515.619C423.976%20547.181%20398.103%20572.746%20366.842%20572.746C348.335%20572.746%20329.949%20563.463%20319.021%20547.881L138.395%20289.882C134.316%20284.038%20125.154%20286.93%20125.154%20294.052V431.892C125.154%20438.862%20127.285%20445.619%20131.272%20451.34L309.037%20705.2C319.539%20720.204%20335.033%20731.344%20352.9%20735.392C397.616%20745.557%20438.77%20711.135%20438.77%20667.278V508.406C438.77%20476.845%20464.339%20451.279%20495.904%20451.279H495.995C515.02%20451.279%20532.857%20460.562%20543.785%20476.145L705.235%20706.661C718.659%20725.835%20739.327%20737.218%20763.983%20737.218C801.606%20737.218%20833.841%20705.9%20833.841%20667.308V508.376C833.841%20476.815%20859.41%20451.249%20890.975%20451.249H897.276C901.233%20451.249%20904.43%20448.053%20904.43%20444.097V294.021C904.43%20290.065%20901.233%20286.869%20897.276%20286.869H897.246Z'%20fill='%230B100F'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_109_63'%3e%3crect%20width='1024'%20height='1024'%20rx='100'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",m9={antigravity:Q8,chatgpt:e9,"claude-chat":t9,"claude-code":r9,cline:n9,codex:a9,cursor:s9,"gemini-chat":i9,"gemini-cli":o9,grok:sA,"grok-chat":sA,kiro:c9,"mistral-chat":l9,"perplexity-chat":d9,vscode:u9,windsurf:f9};function Zs(e){return e?m9[e]:""}function p9(e){if(!e||w_(e))return"";const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,n=v_(r);if(n?.logoKey)return Zs(n.logoKey);if(!["chat_app","ide","cli","coding_tool"].includes(String(e.surfaceType||"")))return"";const s=[e.username,e.name].map(i=>String(i||"").toLowerCase()).join(" ");return!s.trim()||s.includes("openclaw")||s.includes("hermes agent")?"":s.includes("chatgpt")?Zs("chatgpt"):s.includes("claude code")?Zs("claude-code"):s.includes("claude desktop")?Zs("claude-chat"):s.includes("cline")?Zs("cline"):s.includes("codex")?Zs("codex"):s.includes("cursor")?Zs("cursor"):s.includes("cascade")||s.includes("windsurf")?Zs("windsurf"):s.includes("antigravity")?Zs("antigravity"):s.includes("gemini")?Zs("gemini-cli"):s.includes("grok")?Zs("grok"):s.includes("mistral")||s.includes("le chat")?Zs("mistral-chat"):s.includes("perplexity")?Zs("perplexity-chat"):s.includes("kiro")?Zs("kiro"):s.includes("visual studio code")||s.includes("vs code")||s.includes("vscode")?Zs("vscode"):""}function h9(e,t,r){const n=typeof e=="string"?e.trim():"";if(!n||n.startsWith("data:")||n.startsWith("blob:"))return n;const s=Number(t),i=Number.isFinite(s)&&s>0?String(Math.floor(s)):typeof r=="string"&&r.trim().length>0?r.trim():"";if(!i)return n;const[l,c=""]=n.split("#"),d=l.includes("?")?"&":"?";return`${l}${d}v=${encodeURIComponent(i)}${c?`#${c}`:""}`}function b_(e,t){const r=String(e||"").trim(),n=String(t||"").trim(),[s,i]=o.useState(r||n);return o.useEffect(()=>{i(r||n)},[r,n]),{activeImageUrl:s,handleImageError:()=>{if(s&&n&&s!==n){i(n);return}i("")}}}const g9="_identity_1owqe_1",y9="_avatar_1owqe_9",k9="_person_1owqe_17",v9="_provider_1owqe_21",w9="_unassigned_1owqe_25",b9="_card_1owqe_31",S9="_label_1owqe_51",Ad={identity:g9,avatar:y9,person:k9,provider:v9,unassigned:w9,card:b9,label:S9};function gy({option:e,size:t=22,variant:r="default",unassignedIcon:n}){const s=_w(e.value),i=s?"":h9(e.avatarUrl,e.avatarRevision,e.avatarUpdatedAt),l=!s&&e.kind==="agent"?p9({name:e.label,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata}):"",{activeImageUrl:c,handleImageError:d}=b_(i,l),m=Xs,f=s?hp:e.icon,g=s&&n?n:f&&m[f]?m[f]:Md,h=s?Math.max(13,Math.round(t*.56)):Math.max(14,t-6),y=aa(e.color)||(e.kind==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)");return a.jsx("span",{className:`${Ad.avatar} ${l?Ad.provider:Ad.person} ${s?Ad.unassigned:""} ${r==="card"?Ad.card:""}`.trim(),style:{width:t,height:t,color:c?void 0:y,"--assignee-avatar-color":y},"data-assignee-avatar":r,"aria-hidden":"true",children:c?a.jsx("img",{src:c,alt:"",onError:d}):a.jsx(g,{size:h,strokeWidth:s?1.6:void 0})})}function pf({option:e,size:t=22}){return a.jsxs("span",{className:Ad.identity,children:[a.jsx(gy,{option:e,size:t}),a.jsx("span",{className:Ad.label,children:e.label})]})}const S_=Object.freeze(["Target","Route","Flag","Rocket","Briefcase","Folder","Layers","Map","Compass","Landmark","BookOpen","Lightbulb","Wrench","Shield","Bug","Palette","Camera","Music","Heart","Globe","Users","Sparkles","FlaskConical","Code"]),A_=Object.freeze(["red","orange","amber","green","teal","sky","blue","indigo","violet"]),A9=new Set(S_),C9=new Set(A_);function I9(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim():"";return A9.has(t)?t:null}function _9(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim().toLowerCase():"";return C9.has(t)?t:null}function T9(e){const t=I9(e.icon),r=_9(e.color);return{icon:t||(e.entityType==="initiative"?"Target":"Route"),color:r,customized:!!(t||r)}}function oA(e){return e?`var(--planning-identity-${e})`:"var(--planning-identity-default)"}const x9="_root_kfvfr_1",R9="_trigger_kfvfr_6",P9="_marker_kfvfr_20",j9="_card_kfvfr_31",E9="_inline_kfvfr_32",N9="_detail_kfvfr_33",D9="_disabled_kfvfr_34",M9="_popover_kfvfr_36",L9="_colorGrid_kfvfr_48",O9="_colorOption_kfvfr_55",B9="_iconOption_kfvfr_66",W9="_iconGrid_kfvfr_70",$9="_selected_kfvfr_91",F9="_divider_kfvfr_100",U9="_reset_kfvfr_106",Js={root:x9,trigger:R9,marker:P9,card:j9,inline:E9,detail:N9,disabled:D9,popover:M9,colorGrid:L9,colorOption:O9,iconOption:B9,iconGrid:W9,selected:$9,divider:F9,reset:U9},iA={Target:T0,Route:_0,Flag:I0,Rocket:C0,Briefcase:A0,Folder:cc,Layers:Tg,Map:S0,Compass:b0,Landmark:w0,BookOpen:v0,Lightbulb:k0,Wrench:y0,Shield:g0,Bug:h0,Palette:p0,Camera:m0,Music:f0,Heart:u0,Globe:d0,Users:pg,Sparkles:XA,FlaskConical:l0,Code:c0};function vp({entityType:e,entityId:t,icon:r,color:n,disabled:s=!1,size:i="card",onChange:l}){const[c,d]=re.useState(!1),[m,f]=re.useState(!1),[g,h]=re.useState(null),[y,k]=re.useState(),[v,A]=re.useState({top:0,left:0}),b=re.useRef(null),w=re.useRef(null),P=re.useRef(null),E=g&&Object.prototype.hasOwnProperty.call(g,"icon")?g.icon:r,D=g&&Object.prototype.hasOwnProperty.call(g,"color")?g.color:n,j=T9({entityType:e,icon:E,color:D}),S=iA[j.icon],L=!s&&!!l;re.useEffect(()=>{if(!c)return;const z=Y=>{const H=Y.target;!b.current?.contains(H)&&!P.current?.contains(H)&&d(!1)};return document.addEventListener("pointerdown",z),()=>document.removeEventListener("pointerdown",z)},[c]),re.useLayoutEffect(()=>{if(!c)return;const z=()=>{const Y=w.current?.getBoundingClientRect();if(!Y)return;k(w.current?.closest("[data-theme]")?.dataset.theme);const H=P.current?.getBoundingClientRect(),M=H?.width||248,oe=H?.height||320,K=8,Q=8,ee=Math.max(Q,Math.min(Y.left,window.innerWidth-M-Q)),fe=Y.bottom+K,_e=fe+oe<=window.innerHeight-Q?fe:Math.max(Q,Y.top-oe-K);A({top:_e,left:ee})};return z(),window.addEventListener("resize",z),window.addEventListener("scroll",z,!0),()=>{window.removeEventListener("resize",z),window.removeEventListener("scroll",z,!0)}},[c]),re.useEffect(()=>{if(!g)return;const z=!Object.prototype.hasOwnProperty.call(g,"icon")||(g.icon??null)===(r??null),Y=!Object.prototype.hasOwnProperty.call(g,"color")||(g.color??null)===(n??null);z&&Y&&h(null)},[n,r,g]);const _=async z=>{if(!(!l||m)){h(Y=>({...Y,...z})),f(!0);try{await l(z)}catch{h(null)}finally{f(!1)}}},T=a.jsx("span",{className:`${Js.marker} ${Js[i]} ${s?Js.disabled:""}`.trim(),style:{color:oA(j.color)},"aria-hidden":"true",children:a.jsx(S,{size:i==="detail"?26:i==="inline"?18:24,strokeWidth:1.9})});return L?a.jsxs("div",{ref:b,className:Js.root,onClick:z=>z.stopPropagation(),children:[a.jsx("button",{ref:w,type:"button",className:Js.trigger,onClick:()=>d(z=>!z),onKeyDown:z=>z.stopPropagation(),"aria-label":`Change ${e} icon and color`,"aria-expanded":c,disabled:m,children:T}),c?uc.createPortal(a.jsxs("div",{ref:P,className:Js.popover,role:"dialog","aria-label":`${e} icon and color`,"aria-busy":m,"data-theme":y,style:v,onClick:z=>z.stopPropagation(),onKeyDown:z=>z.stopPropagation(),children:[a.jsx("div",{className:Js.colorGrid,"aria-label":"Colors",children:A_.map(z=>a.jsx("button",{type:"button",className:`${Js.colorOption} ${j.color===z?Js.selected:""}`.trim(),style:{backgroundColor:oA(z)},onClick:()=>{_({color:z})},"aria-label":`${z} color`,"aria-pressed":j.color===z,disabled:m},z))}),a.jsx("div",{className:Js.divider}),a.jsx("div",{className:Js.iconGrid,"aria-label":"Icons",children:S_.map(z=>{const Y=iA[z];return a.jsx("button",{type:"button",className:`${Js.iconOption} ${j.icon===z?Js.selected:""}`.trim(),onClick:()=>{_({icon:z})},"aria-label":z,"aria-pressed":j.icon===z,disabled:m,children:a.jsx(Y,{size:18,strokeWidth:1.8})},z)})}),a.jsx("div",{className:Js.divider}),a.jsx("button",{type:"button",className:Js.reset,onClick:()=>{_({icon:null,color:null})},disabled:!j.customized||m,children:"Reset to default"})]}),document.body):null]}):T}function C_({workstreams:e,onSelect:t,disabled:r=!1}){const n=re.useMemo(()=>e.filter(l=>!l.isArchived),[e]),s=re.useMemo(()=>new Map(n.map(l=>[l.id,l])),[n]),i=re.useMemo(()=>n.map(l=>({value:l.id,label:`${lf(l)||l.id} — ${l.title}`})),[n]);return a.jsx(fi,{value:"",options:i,onChange:l=>{const c=s.get(String(l));c&&t(c)},placeholder:"Select workstream…",ariaLabel:"Link task to workstream",title:i.length>0?"Link to workstream":"No workstreams available",disabled:r||i.length===0,className:R.taskWorkstreamPicker,panelClassName:R.taskWorkstreamPickerPanel,portalPanel:!0,panelAlign:"start",panelMinWidth:280,searchable:!0,searchPlaceholder:"Search workstreams…",noResultsText:"No matching workstreams.",hideChevron:!0,triggerContent:a.jsx("span",{className:R.taskWorkstreamPickerIcon,children:a.jsx(Jm,{size:13,"aria-hidden":"true"})}),renderOptionContent:l=>{const c=s.get(String(l.value));return c?a.jsxs("span",{className:R.taskWorkstreamPickerOption,children:[a.jsx(vp,{entityType:"workstream",entityId:c.id,icon:c.icon,color:c.color,size:"inline",disabled:!0}),a.jsx("span",{children:lf(c)||c.id}),a.jsx("span",{children:c.title})]}):l.label}})}const z9="_root_evk0k_1",H9="_compact_evk0k_21",V9="_outline_evk0k_26",G9="_foldFill_evk0k_47",K9="_foldLine_evk0k_56",q9="_label_evk0k_60",zu={root:z9,compact:H9,outline:V9,foldFill:G9,foldLine:K9,label:q9};function Y9({label:e,compact:t=!1,accentColor:r}){const n=r?{"--document-type-accent":r}:void 0;return a.jsxs("span",{className:`${zu.root} ${t?zu.compact:""}`.trim(),style:n,"aria-hidden":"true",children:[a.jsxs("svg",{className:zu.outline,viewBox:"0 0 28 28",focusable:"false",children:[a.jsx("path",{d:"M2 0.75h18.25l7 7V26q0 1.25-1.25 1.25H2Q0.75 27.25 0.75 26V2Q0.75 0.75 2 0.75Z"}),a.jsx("path",{className:zu.foldFill,d:"M20.25 0.75v7h7Z"}),a.jsx("path",{className:zu.foldLine,d:"M20.25 0.75v7h7"})]}),a.jsx("span",{className:zu.label,children:e})]})}const{MessageSquare:Z9,Gauge:J9,ClipboardList:X9,HelpCircle:Q9}=Xs;function eH(e,t){if(!e)return null;const r=String(e.type==="comment"?e.comment.author:e.event.actor).trim(),n=e.type==="comment"?e.comment.actor:e.event.actorProfile;if(!r&&!n)return null;const s=r.toLowerCase(),i=t.find(v=>String(v.value||"").trim().toLowerCase()===s),l=e.type==="comment"?n?.kind==="ai"?"ai":n?.kind==="human"?"human":i?.kind==="agent"?"ai":i?.kind==="member"?"human":null:e.event.actorType,c=l==="system"||s==="system"?"system":l==="ai"||n?.kind==="ai"||i?.kind==="agent"?"agent":"member";if(c==="system")return{label:"System"};const d=String(n?.label||"").trim(),m=String(i?.label||"").trim(),f=!s||s==="user"||s==="human"||s==="ai",g=/^(?:ai-profile|user|member)-[0-9a-f-]{8,}$/i.test(r)||/^[0-9a-f]{16,}$/i.test(r),h=r.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,v=>v.toUpperCase()),y=d||m||(c==="agent"&&(f||g)?"AI Agent":"")||(f||g?"Workspace member":h)||(c==="agent"?"AI Agent":"Workspace member"),k=aa(n?.color||i?.color);return{label:y,color:k}}const tH=({task:e,searchQuery:t="",copiedId:r=null,taxonomies:n=[],types:s=[],priorities:i=[],categories:l=[],assigneeOptions:c=[],workstreams:d=[],taskWorkstream:m=null,taskInitiative:f=null,workspaceId:g=null,isOverlay:h=!1,isArchived:y=!1,readOnlyMode:k=null,isRecentlyChanged:v=!1,selectable:A=!1,selected:b=!1,onSelectionChange:w,onClick:P,onCopyId:E,onToggleInProgress:D,onToggleReview:j,onToggleComplete:S,onToggleCancel:L,onSetStatus:_,onArchiveTask:T,onUnarchive:z,onDelete:Y,deleteActionTitle:H,taskReferences:M,onAssigneeChange:oe,onWorkstreamChange:K,compressed:Q=!1,showStatusLabel:ee=!1,showDescription:fe=!0,showAttachments:_e=!0,showChecklistProgress:$e=!0,showLatestActivity:Ye=!0,tintActivityBackground:ye=!1})=>{const ge=vw(e),se=ge.label||(ge.isProvisional?"Pending":""),ie=ge.isProvisional,me=!!ge.label,$=lf(m)||m?.id||"",V=qI(f)||f?.id||"",B=i.find(U=>String(U.value)===String(e.priority)),N=Vo(e.status),be=aa(N.color),Ae=l.find(U=>U.value===e.category||U.label===e.category),q=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),Z=Number.isFinite(q)?Math.max(1,Math.min(5,Math.round(q))):3,G={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},ne={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},Te=G[Z],Le=`var(--complexity-${ne[Z]})`,Ue=np(e.assignee,c),st=re.useMemo(()=>{const U=String(e.assignee||"").trim();if(!U||U===Ed.value)return Ed;const pe=OC(c,e.assignee).find(Et=>String(Et.value||"").trim()===U);if(pe)return pe;const Ke=bv(U);return{...Ed,value:U,label:Ue,icon:Ke==="agent"?"Bot":"User",color:Ke==="agent"?"#8b5cf6":"#22c55e",kind:Ke}},[Ue,c,e.assignee]),ft=re.useMemo(()=>e.latestActivity??IC(e),[e]),xe=re.useMemo(()=>eH(ft,c),[c,ft]),ke=k||(e.isDeleted?"deleted":y?"archived":null),ve=ke!==null,He=re.useMemo(()=>{if(ke!=="deleted"||!e.deletedExpiresAt)return"";const U=new Date(e.deletedExpiresAt);return Number.isNaN(U.getTime())?"":`Trash expires ${U.toLocaleString()}`},[ke,e.deletedExpiresAt]),Ee=!ve&&!h&&!!oe&&c.length>0,de=!ve&&!h&&!!K,[x,le]=re.useState(!1),Ie=re.useCallback((U,pe)=>{const Ke=String(pe||"").trim();if(Ke){if(U==="assignee")return np(Ke,c);if(U==="workstreamId"&&Ke===m?.id)return $||m.id;if(U==="initiativeId"&&Ke===f?.id)return V||f.id}},[c,V,f,m,$]),Je=re.useMemo(()=>zx(ft,Ie),[Ie,ft]),J=re.useMemo(()=>e.commentCount??bw(e).filter(U=>U.type==="comment").length,[e]),Ze=[kr.taskItem,e.status==="on-hold"?kr.onHold:"",e.status==="in-progress"?kr.inProgress:"",e.status==="review"?kr.readyForReview:"",e.status==="done"?kr.completed:"",e.status==="cancelled"?kr.cancelled:"",v?kr.taskItemRecentlyChanged:"",h?kr.kanbanCardOverlay:"",ve?kr.readOnly:"",y?kr.archived:"",Q?kr.compressed:"",b?kr.selected:""].filter(Boolean).join(" "),te=aa(B?.color),Ne=s.find(U=>U.value===e.type),je=aa(Ne?.color)||oN(e.type),Re=U=>{const pe=typeof U=="string"?U:U.path,Ke=typeof U=="string"?"":(U.fsPath||"").trim(),Et=typeof U=="string"?"":(U.displayName||"").trim(),kt=typeof U=="string"?"":(U.originalFilename||"").trim(),Ot=typeof U=="string"?"":(U.caption||"").trim();return[Ke,kt,Et,Ot,pe].some(tr=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(tr))},Ce=U=>{const pe=typeof U=="string"?U:U.path,Ke=pe.includes("/api/taskforce/documents/"),Et=typeof U=="string"?"":(U.displayName||"").trim();if(Ke&&typeof U!="string")return R8({displayName:U.displayName,originalFilename:U.originalFilename,fsPath:U.fsPath,assetId:U.assetId||null});const kt=typeof U=="string"?"":(U.caption||"").trim();if(kt)return kt;if(Et)return Et;const Ot=typeof U=="string"?"":(U.originalFilename||"").trim();return Ot||pe.split("?")[0].split("#")[0].split("/").pop()||"Context file"},Pe=U=>{const pe=typeof U=="string"?U:U.path,Ke=typeof U=="string"?"":(U.fsPath||"").trim(),Et=typeof U=="string"?"":(U.caption||"").trim(),kt=typeof U=="string"?"":(U.originalFilename||"").trim(),Ot=[];if(Ke&&Ot.push(Ke),kt&&Ot.push(kt),Et&&Ot.push(Et),pe.includes("/api/taskforce/context-link?path="))try{const tr=new URL(pe,"http://localhost").searchParams.get("path");tr&&Ot.push(tr)}catch{}Ot.push(pe);for(const dr of Ot){const pr=dr.split("?")[0].split("#")[0].split("/").pop()||"",Bt=pr.lastIndexOf(".");if(Bt<=0||Bt===pr.length-1)continue;const wr=pr.slice(Bt+1);if(wr)return wr.slice(0,5).toUpperCase()}return"FILE"},he={"--task-status-color":be||"var(--border-primary)","--task-card-tint-color":ve?"transparent":be||"transparent","--task-change-glow-color":be||"var(--brand-primary)",...be?{borderColor:be}:{}},De=U=>U.replace(/\b\w/g,pe=>pe.toUpperCase()),et=kp(n,[e]),Fe=e.checklistItems||[],yt=e.checklistCount??Fe.length,Oe=e.completedChecklistCount??(yt>0?Fe.filter(U=>U.isCompleted).length:0),mt=(U,pe)=>{U.stopPropagation(),E?.(U,pe)},vt=async U=>{if(!K||x)return!1;le(!0);try{return await K(e,U)!==!1}finally{le(!1)}},Ve=U=>{const pe=typeof U=="string"?U:U.path;return/^https?:\/\//i.test(pe)?(window.open(pe,"_blank"),!0):ip(U,{ownerType:"task",ownerId:e.id,ownerReferenceLabel:se,workspaceId:g})},tt=Q||h||!e.cardCoverAssetId?null:e.cardCoverAttachment&&typeof e.cardCoverAttachment!="string"&&e.cardCoverAttachment.assetId===e.cardCoverAssetId?e.cardCoverAttachment:(e.attachments||[]).find(U=>typeof U!="string"&&String(U.assetId||"").trim()===e.cardCoverAssetId&&U.linkRole==="image"&&Re(U))||null,It=tt?`${tt.assetId||""}:${tt.path}`:"",Xe=(e.attachments||[]).filter(U=>!tt||typeof U=="string"||U.assetId!==tt.assetId),[bt,at]=re.useState(!1);return re.useEffect(()=>{at(!1)},[It]),a.jsxs("div",{className:Ze,onClick:()=>P?.(e),style:he,"data-task-card":"true",children:[a.jsxs("div",{className:kr.taskHeader,children:[A&&a.jsx("label",{className:kr.selectionControl,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),children:a.jsx("input",{type:"checkbox",checked:b,onChange:U=>w?.(U.target.checked),"aria-label":`Select ${se||e.title} for restore`})}),a.jsxs("div",{className:kr.taskReferenceCluster,children:[f?a.jsxs(a.Fragment,{children:[a.jsx(nf,{copied:r===V,onClick:U=>mt(U,V),disabled:!V,title:f.title,ariaLabel:`Copy initiative reference ${V}: ${f.title}`,className:y?kr.archiveBadge:"",label:V}),a.jsx("span",{className:kr.taskReferenceDivider,children:"/"})]}):null,m?a.jsxs(a.Fragment,{children:[a.jsx(nf,{copied:r===$,onClick:U=>mt(U,$),disabled:!$,title:m.title,ariaLabel:`Copy workstream reference ${$}: ${m.title}`,className:y?kr.archiveBadge:"",label:$}),a.jsx("span",{className:kr.taskReferenceDivider,children:"/"})]}):null,de&&!m?a.jsx("div",{className:kr.taskReferenceSegment,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),onKeyDown:U=>U.stopPropagation(),children:a.jsx(C_,{workstreams:d,disabled:x,onSelect:U=>{vt(U.id)}})}):null,se?a.jsx("div",{className:kr.taskReferenceSegment,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),onKeyDown:U=>U.stopPropagation(),children:a.jsx(nf,{copied:me&&r===ge.label,onClick:U=>mt(U,ge.label),disabled:!me,title:ie?"Temporary identifier — replaced after synchronization.":"Copy task reference",ariaLabel:ie?`Copy temporary task reference ${se}`:void 0,className:y?kr.archiveBadge:"",label:Xh(se,t),provisional:ie})}):null]}),a.jsx("div",{className:kr.taskActions,onClick:U=>U.stopPropagation(),children:ve?z||Y?a.jsxs(a.Fragment,{children:[z&&a.jsx("button",{type:"button",className:R.actionBtn,onClick:()=>z(e.id),title:ke==="deleted"?`Restore to ${e.isArchived===!0?"Archived":"Active"}`:"Restore archived task",children:a.jsx($i,{size:16})}),Y&&a.jsx("button",{type:"button",className:`${R.actionBtn} ${R.deleteBtn}`,onClick:()=>Y(e.id),title:H||(ke==="deleted"?"Delete Permanently":"Move to Trash"),children:a.jsx(fp,{size:16})})]}):null:a.jsx(Kg,{task:e,compressed:Q,shortLabels:!0,showLabel:ee,onSetStatus:(U,pe)=>{if(_){_(U,pe);return}if(pe==="in-progress"){D?.(U);return}if(pe==="review"){j?.(U);return}if(pe==="done"){S?.(U);return}pe==="cancelled"&&L?.(U)},onArchiveTask:T})})]}),tt&&!bt&&a.jsx("button",{type:"button",className:kr.taskCover,"aria-label":`Preview ${Ce(tt)}`,onPointerDown:U=>U.stopPropagation(),onClick:U=>{U.stopPropagation(),!Ve(tt)&&(qv(tt,{taskId:e.id,taskReferenceLabel:se})||window.open(tt.path,"_blank"))},children:a.jsx("img",{src:tt.path,alt:tt.caption||tt.displayName||tt.originalFilename||e.title,loading:"lazy",decoding:"async",onError:()=>at(!0)})}),a.jsxs("div",{className:kr.taskContent,children:[ve&&a.jsx("div",{className:`${kr.taskMeta} ${kr.taskMetaCompact}`}),a.jsxs("div",{children:[a.jsxs("div",{className:kr.taskTitle,style:Q?{fontSize:"13px",lineHeight:"1.4"}:{},children:[ke==="archived"&&"✓ ",ke==="deleted"&&"Deleted: ",Xh(e.title,t)]}),He&&a.jsx("div",{className:kr.deletedExpiry,title:"Trash items are permanently deleted 90 days after deletion.",children:He}),fe&&e.description&&!ve&&!Q&&a.jsx("div",{className:kr.taskDescription,children:a.jsx(py,{variant:"compact",taskReferences:M,children:e.description})})]}),_e&&Xe.length>0&&!ve&&!Q&&a.jsxs("div",{className:kr.attachmentThumbnails,children:[a.jsx("div",{className:kr.attachmentImageRow,children:Xe.map((U,pe)=>{const Ke=typeof U=="string"?U:U.path;return Re(U)?a.jsx("button",{type:"button",className:kr.attachmentThumbnail,"aria-label":`Preview ${Ce(U)}`,onPointerDown:Et=>Et.stopPropagation(),onClick:Et=>{Et.stopPropagation(),!Ve(U)&&(qv(typeof U=="string"?{path:Ke}:U,{taskId:e.id,taskReferenceLabel:se})||window.open(Ke,"_blank"))},children:a.jsx("img",{src:Ke,alt:`Attachment ${pe}`})},pe):null})}),a.jsx("div",{className:kr.attachmentDocumentList,children:Xe.map((U,pe)=>{const Ke=typeof U=="string"?U:U.path,Et=typeof U=="string"?void 0:U.fsPath,kt=Ce(U);if(Re(U))return null;const Ot=Pe(U),dr=iN(Ot);return a.jsxs("button",{type:"button",className:kr.contextDocThumb,onPointerDown:tr=>tr.stopPropagation(),onClick:tr=>{if(tr.stopPropagation(),Ve(U))return;const pr=typeof U=="string"?{path:U,taskId:e.id}:{...U,taskId:e.id};p_(pr,Et)||window.open(Ke,"_blank")},title:kt,"aria-label":`${kt} ${Ot}`,style:{"--context-doc-accent":dr},children:[a.jsx(Y9,{label:Ot,accentColor:dr,compact:!0}),a.jsx("span",{className:kr.contextDocMain,children:a.jsx("span",{className:kr.contextDocName,children:kt})})]},pe)})})]}),e.status==="cancelled"&&e.canceledReason&&!Q&&a.jsxs("div",{className:kr.taskCancellationReason,children:[a.jsx("strong",{children:"Cancellation Reason:"})," ",Xh(e.canceledReason,t)]}),Ye&&(Je||J>0)&&!ve&&!Q&&a.jsxs("div",{className:`${kr.taskLatestComment} ${ye&&xe?.color?kr.taskLatestCommentTinted:""}`,"data-task-activity-summary":"true",style:xe?.color?{"--task-activity-accent":xe.color}:void 0,children:[a.jsxs("div",{className:kr.taskLatestCommentHeader,children:[a.jsxs("div",{className:kr.taskLatestActivityHeading,children:[a.jsx("strong",{children:Je?"Latest Activity:":"Activity:"}),Je&&xe?a.jsx("span",{className:kr.taskLatestActivityActor,title:xe.label,children:xe.label}):null]}),J>0&&a.jsxs("span",{className:`${R.metaBadge} ${kr.taskCommentCount}`,title:`${J} ${J===1?"comment":"comments"}`,"aria-label":`${J} ${J===1?"comment":"comments"}`,children:[a.jsx(Z9,{size:12,"aria-hidden":"true"}),a.jsx("span",{children:J})]})]}),Je&&a.jsx("div",{className:kr.taskLatestCommentText,title:Je,children:Xh(Je,t)})]}),!ve&&et.length>0&&!Q&&a.jsx("div",{className:`${kr.taskSpecialists} ${kr.taxonomiesList}`,children:et.map(U=>{const pe=e.taxonomies?.[U.id];return pe?(Array.isArray(pe)?pe:[pe]).map(Et=>{const kt=U.options.find(Bt=>Bt.value===Et);if(!kt)return null;const Ot=Xs[kt.icon||"Layers"]||Tg,dr=aa(kt.color)||"var(--text-primary)",tr=U.status==="retired"?`${U.label} (Retired)`:U.label,pr=kt.status==="retired"?`${kt.label} (Retired)`:kt.label;return a.jsx("span",{className:R.specialistBadge,style:{borderColor:`${dr}50`,backgroundColor:`${dr}15`,color:dr},title:`${tr}: ${De(pr)}`,children:a.jsx(Ot,{size:10})},`${U.id}-${Et}`)}):null})}),a.jsx("div",{className:kr.taskMeta,children:ve?a.jsx("span",{children:e.category}):a.jsx(a.Fragment,{children:a.jsxs("div",{className:kr.taskMetaRow,style:Q?{marginBottom:0}:void 0,children:[a.jsxs("div",{className:kr.taskMetaBadgeGroup,"data-task-meta-primary":"true",children:[(()=>{const U=aa(Ae?.color),pe=Ae?.icon||"Folder",Ke=Xs[pe]||cc;return a.jsx("span",{className:`${R.metaBadge} ${kr.taskMetaCategory}`,title:De(e.category),style:{color:U||"var(--text-secondary)",backgroundColor:U?`${U}15`:"var(--bg-tertiary)",borderColor:U?`${U}40`:"transparent"},children:a.jsx(Ke,{size:14})})})(),a.jsx("span",{className:`${R.metaBadge} ${kr.taskMetaType} ${R[`type_${e.type}`]||""}`,title:De(e.type||bo),style:{color:`var(--type-color, ${je})`,backgroundColor:`color-mix(in srgb, var(--type-color, ${je}), transparent 90%)`,borderColor:`color-mix(in srgb, var(--type-color, ${je}), transparent 75%)`},children:Ne?.icon?(()=>{const U=Xs[Ne.icon]||Q9;return a.jsx(U,{size:14})})():v8(e.type,14)}),B&&a.jsx("span",{className:`${R.metaBadge} ${kr.taskMetaPriority}`,style:{color:te||"var(--text-secondary)",backgroundColor:te?`${te}15`:"var(--bg-tertiary)",borderColor:te?`${te}40`:"var(--border-color)"},title:`${B.label}`,children:(()=>{const U=B.icon||"AlertCircle",pe=Xs[U]||x0;return a.jsx(pe,{size:14})})()}),$e&&yt>0&&a.jsxs("span",{className:R.metaBadge,title:`${Oe}/${yt} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[a.jsx(X9,{size:14}),a.jsx("span",{children:`${Oe}/${yt}`})]})]}),a.jsxs("div",{className:kr.taskMetaIdentityGroup,"data-task-meta-identity":"true",children:[a.jsxs("span",{className:R.metaBadge,title:`AI-estimated complexity: ${Te} (${Z}/5)`,style:{color:Le,backgroundColor:`color-mix(in srgb, ${Le}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Le}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[a.jsx(J9,{size:14}),!Q&&a.jsx("span",{className:kr.taskComplexityLabel,children:Te})]}),(()=>{const U=st.kind==="unassigned",pe=a.jsx("span",{className:kr.assigneeAvatarShared,"data-task-assignee":"true","aria-hidden":Ee?"true":void 0,"aria-label":Ee?void 0:U?"Unassigned":`Assigned to ${Ue}`,children:a.jsx(gy,{option:st,size:Q?32:36,variant:"card",unassignedIcon:Ee?ui:void 0})});return Ee?a.jsx("div",{className:kr.assigneePicker,title:U?"Assign task":Ue,onClick:Ke=>Ke.stopPropagation(),onPointerDown:Ke=>Ke.stopPropagation(),onKeyDown:Ke=>Ke.stopPropagation(),children:a.jsx(fi,{value:e.assignee||"unassigned",options:c,onChange:Ke=>oe?.(e,String(Ke)),ariaLabel:U?"Assign task":`Reassign task currently assigned to ${Ue}`,hideChevron:!0,portalPanel:!0,panelMinWidth:240,searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:Ke=>{const Et=c.find(kt=>String(kt.value)===String(Ke.value));return Et?a.jsx(pf,{option:Et}):Ke.label},triggerContent:pe})}):a.jsx("span",{title:Ue,children:pe})})()]})]})})})]})]})},dp=re.memo(tH),qg="168px",Hu=[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}];function rH(){return a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:jt("standalone.filtersCaps")})}function xm({label:e,options:t,selected:r,onChange:n,variant:s="label",renderOptionContent:i,searchable:l=!1,searchPlaceholder:c,noResultsText:d}){return a.jsx(Sd,{label:e,options:t,selected:r,onChange:n,variant:s,renderOptionContent:i,searchable:l,searchPlaceholder:c,noResultsText:d,containerStyle:{flex:`0 0 ${qg}`,maxWidth:qg}})}function nH({onClick:e,disabled:t,label:r="Reset filters"}){return a.jsx("button",{type:"button",className:"tf-control-icon",onClick:e,disabled:t,"aria-label":r,title:r,children:a.jsx($i,{size:14,"aria-hidden":"true"})})}function cA({label:e,options:t,selected:r,onChange:n,allLabel:s,title:i}){const[l,c]=re.useState(!1),d=re.useRef(null),m=t.find(h=>h.value===r),f=m?.selectedLabel||m?.label||s;re.useEffect(()=>{const h=y=>{d.current&&!d.current.contains(y.target)&&c(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[]);const g=h=>{n(h),c(!1)};return a.jsxs("div",{className:R.filterContainer,ref:d,style:{flex:`0 0 ${qg}`,maxWidth:qg},children:[a.jsxs("button",{type:"button",className:`${R.filterButton} ${r?R.filterActive:""}`,onClick:()=>c(h=>!h),title:i||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":l,children:[a.jsx("span",{children:f}),a.jsx(Fd,{size:14,style:{transform:l?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),l&&a.jsxs("div",{className:`${R.filterDropdown} ${R.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[a.jsxs("button",{type:"button",className:R.filterOption,onClick:()=>g(""),"aria-selected":!r,children:[a.jsx(Fi,{size:14,style:{opacity:r?0:1}}),a.jsx("span",{style:{fontWeight:r?500:600},children:s})]}),a.jsx("div",{className:R.filterDivider}),t.map(h=>{const y=h.value===r;return a.jsxs("button",{type:"button",className:R.filterOption,onClick:()=>g(h.value),"aria-selected":y,children:[a.jsx(Fi,{size:14,style:{opacity:y?1:0}}),a.jsx("span",{style:{fontWeight:y?600:500},children:h.label})]},h.value)})]})]})}function I_({scope:e,onScopeChange:t,className:r,labelClassName:n}){const s=re.useRef([]),i=(l,c)=>{let d;l.key==="ArrowRight"?d=(c+1)%Hu.length:l.key==="ArrowLeft"?d=(c-1+Hu.length)%Hu.length:l.key==="Home"?d=0:l.key==="End"&&(d=Hu.length-1),d!==void 0&&(l.preventDefault(),s.current[d]?.focus(),t(Hu[d].value))};return a.jsxs("div",{className:[R.taskScopeToggle,r].filter(Boolean).join(" "),children:[a.jsx("span",{className:n,children:"Scope"}),a.jsx("div",{className:R.taskScopeTabs,role:"tablist","aria-label":"Task scope",children:Hu.map((l,c)=>{const d=e===l.value;return a.jsx("button",{ref:m=>{s.current[c]=m},type:"button",className:`${R.taskScopeTab} ${d?R.taskScopeTabActive:""}`,onClick:()=>t(l.value),onKeyDown:m=>i(m,c),role:"tab","aria-selected":d,tabIndex:d?0:-1,title:`Show ${l.label.toLowerCase()} tasks`,children:l.label},l.value)})})]})}function aH({onClick:e,disabled:t=!1,className:r,title:n="Permanently delete all deleted tasks",children:s="Delete All Permanently"}){return a.jsxs("button",{type:"button",className:r,onClick:e,disabled:t,title:n,children:[a.jsx(fp,{size:14}),s]})}const{Search:lA,ClipboardList:sH,ChevronRight:oH,ChevronDown:iH,Folder:cH,Archive:lH,RotateCcw:dH,X:uH,Plus:fH,ArrowUpDown:mH,Trash2:pH}=Xs,hH=new Map,gH=new Set,__=o.forwardRef((e,t)=>{const{tasks:r,archivedTasks:n,categories:s,types:i,priorities:l,taxonomyDisplayLabels:c,assigneeOptions:d=[],workstreams:m=[],initiatives:f=[],workspaceId:g=null,searchQuery:h,filterCategories:y,filterTypes:k,filterPriorities:v,filterStatus:A,filterAssignees:b=[],filterTaxonomies:w,sortBy:P,sortOrder:E,showArchive:D,taskScope:j,collapsedCategories:S,loadingTasks:L,filteredTasks:_,filteredArchive:T,groupedTasks:z,filteredDeletedTasks:Y=[],groupedDeletedTasks:H={},copiedId:M,recentlyChangedTaskIds:oe=[],showTaskCardStatusLabel:K=!1,showTaskCardDescription:Q=!0,showTaskCardAttachments:ee=!0,showTaskCardChecklistProgress:fe=!0,showTaskCardLatestActivity:_e=!0,tintTaskCardActivityBackground:$e=!1,deletedTaskRecordByTaskId:Ye=hH,selectedDeletedRecordIds:ye=gH,onDeletedSelectionChange:ge,trashControls:se,onSearchChange:ie,onFilterCategoriesChange:me,onFilterTypesChange:$,onFilterPrioritiesChange:V,onFilterStatusChange:B,onFilterAssigneesChange:N,onTaxonomyFilterChange:be,onSortByChange:Ae,onSortOrderChange:q,onShowArchiveChange:Z,onTaskScopeChange:G,onClearFilters:ne,onToggleCategory:Te,onEditTask:Le,onUpdateTask:Ue,taskReferences:st,onCopyId:ft,onToggleInProgress:xe,onToggleReview:ke,onToggleComplete:ve,onToggleCancel:He,onSetStatus:Ee,onArchiveTask:de,onBulkArchive:x,onUnarchive:le,onDelete:Ie,onFetchArchive:Je,onAddTaskToCategory:J,supplementalTasks:Ze=[],taxonomies:te}=e,Ne=re.useMemo(()=>new Set(oe),[oe]),je=re.useMemo(()=>new Map(m.map(at=>[at.id,at])),[m]),Re=re.useMemo(()=>new Map(f.map(at=>[at.id,at])),[f]),Ce=re.useCallback(at=>{const U=at.workstreamId&&je.get(at.workstreamId)||null,pe=U?.initiativeId&&Re.get(U.initiativeId)||null;return{taskWorkstream:U,taskInitiative:pe}},[Re,je]),Pe=re.useMemo(()=>[...r,...n,...Ze],[n,Ze,r]),he=re.useCallback((at,U)=>Ue(at.id,{assignee:U}),[Ue]),De=!!G,et=G,Fe=j??(D?"archived":"open"),yt=De?Fe==="archived"?T:Fe==="deleted"?Y:_:_,Oe=De?Fe==="archived"?{Archived:T}:Fe==="deleted"?H:z:z,mt=De?Fe==="deleted"?"deleted":Fe==="archived"?"archived":null:null,vt=my(h),Ve=h?vt?`No task found for ${vt.toUpperCase()}`:jt("taskList.noMatchingTasks"):Fe==="archived"?"No archived tasks found.":Fe==="deleted"?"No deleted tasks found.":jt("taskList.noActiveTasks"),tt=re.useMemo(()=>{const at=s.filter(pe=>!pe.disabled),U=s.filter(pe=>pe.disabled&&Pe.some(Ke=>Ke.category===pe.value));return[...at,...U.filter(pe=>!at.some(Ke=>Ke.value===pe.value))].map(pe=>({value:pe.value,label:pe.disabled?`${pe.label} (Legacy)`:pe.label}))},[s,Pe]),It=re.useMemo(()=>{const at=i.filter(pe=>pe.status!=="retired"),U=i.filter(pe=>pe.status==="retired"&&Pe.some(Ke=>Ke.type===pe.value));return[...at,...U.filter(pe=>!at.some(Ke=>Ke.value===pe.value))].map(pe=>({value:pe.value,label:pe.status==="retired"?`${pe.label} (Retired)`:pe.label}))},[Pe,i]),Xe=re.useMemo(()=>kp(te,Pe).filter(at=>at.filterEnabled!==!1).map(at=>({...at,options:Vw(at,Pe)})),[Pe,te]),bt=re.useMemo(()=>[{value:"created",label:jt("taskList.sortCreated")},{value:"updated",label:jt("taskList.sortUpdated")},{value:"priority",label:jt("taskList.sortPriority")},...JI(te,Pe)],[Pe,jt,te]);return a.jsxs("div",{className:R.viewTab,ref:t,children:[a.jsxs("div",{className:R.filterBar,children:[a.jsxs("div",{className:R.searchContainer,children:[a.jsx(lA,{size:16,className:R.searchIcon}),a.jsx("input",{type:"text",className:R.searchInput,placeholder:jt("taskList.searchPlaceholder"),value:h,onChange:at=>ie(at.target.value)}),h&&a.jsx("button",{className:R.clearSearchBtn,onClick:()=>ie(""),title:jt("taskList.clearSearchTitle"),children:a.jsx(uH,{size:14})})]}),a.jsxs("div",{className:R.filterRow,children:[a.jsx(Sd,{label:c?.category||jt("taskList.categoryLabel"),options:tt,selected:y,onChange:me,variant:"value"}),a.jsx(Sd,{label:c?.type||jt("taskList.typeLabel"),options:It,selected:k,onChange:$,variant:"value"})]}),a.jsxs("div",{className:R.filterRow,children:[a.jsx(Sd,{label:c?.priority||jt("taskList.priorityLabel"),options:l,selected:v,onChange:V,variant:"value"}),a.jsx(Sd,{label:jt("taskList.statusLabel"),options:fc,selected:A,onChange:B,variant:"value"}),a.jsx(Sd,{label:jt("taskList.assigneeLabel"),options:d,selected:b,onChange:at=>N?.(at),variant:"value",renderOptionContent:at=>{const U=d.find(pe=>String(pe.value)===String(at.value));return U?a.jsx(pf,{option:U,size:20}):at.label}})]}),Xe.map(at=>a.jsx(Sd,{label:at.status==="retired"?`${at.label} (Retired)`:at.label,options:at.options.map(U=>({...U,label:U.status==="retired"?`${U.label} (Retired)`:U.label})),selected:w[at.id]||[],onChange:U=>be(at.id,U),variant:"value"},at.id)),a.jsxs("div",{className:R.filterRow,children:[a.jsxs("div",{className:R.sortLabel,children:[a.jsx(mH,{size:14,style:{marginRight:"4px"}})," ",jt("taskList.sortByLabel")]}),a.jsx("select",{value:P,onChange:at=>Ae(at.target.value),className:`${R.filterSelect} ${R.filterSelectSort} `,children:bt.map(at=>a.jsx("option",{value:at.value,children:at.label},at.value))}),a.jsx("button",{className:`${R.resetFiltersBtn} ${R.sortDirectionBtnWidget}`,onClick:q,title:jt(E==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:E==="desc"?a.jsx(ow,{size:14}):a.jsx(QA,{size:14})}),a.jsx("button",{className:R.resetFiltersBtn,onClick:ne,title:jt("taskList.resetFiltersTitle"),children:a.jsx(dH,{size:14})})]}),a.jsxs("div",{className:`${R.filterRow} ${R.archiveRow} `,children:[Fe==="open"?a.jsxs("button",{className:`${R.bulkArchiveBtn} ${r.some(at=>at.status==="done"||at.status==="cancelled")?"":R.disabledBtn} `,onClick:()=>r.some(at=>at.status==="done"||at.status==="cancelled")&&x(),disabled:!r.some(at=>at.status==="done"||at.status==="cancelled"),title:r.some(at=>at.status==="done"||at.status==="cancelled")?jt("taskList.archiveAllTitle"):jt("taskList.noTasksToArchiveTitle"),children:[a.jsx(lH,{size:12}),a.jsx("span",{children:jt("taskList.archiveFinished")})]}):Fe==="deleted"?a.jsx("div",{}):a.jsx("div",{}),De?a.jsx(I_,{scope:Fe,onScopeChange:at=>{et?.(at),at==="archived"?Z(!0):D&&Z(!1)},className:R.archiveToggle}):a.jsxs("label",{className:R.archiveToggle,children:[a.jsx("input",{type:"checkbox","aria-label":"Archived",checked:D,onChange:at=>{Z(at.target.checked),at.target.checked&&Je()}}),a.jsx("span",{children:"Include Archive"})]})]}),Fe==="deleted"&&se]}),L&&r.length===0?a.jsx("div",{className:R.loading,children:a.jsx(na,{size:24,className:R.spinner})}):yt.length===0&&!L?a.jsxs("div",{className:R.emptyState,children:[h?a.jsx(lA,{size:48}):Fe==="deleted"?a.jsx(pH,{size:48}):a.jsx(sH,{size:48}),a.jsx("p",{children:Ve})]}):a.jsx("div",{className:R.taskList,style:{opacity:L?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(Oe).map(([at,U])=>{if(U.length===0)return null;const pe=S[at];return a.jsxs("div",{className:R.categoryGroup,children:[a.jsx("div",{className:R.categoryHeader,onClick:()=>Te(at),children:a.jsxs("div",{className:R.categoryTitle,children:[pe?a.jsx(oH,{size:16}):a.jsx(iH,{size:16}),(()=>{const Ke=s.find(Ot=>Ot.label===at),Et=Ke?.icon&&df[Ke.icon]?df[Ke.icon]:cH,kt=aa(Ke?.color)||"var(--color-purple, #8b5cf6)";return a.jsx(Et,{size:16,className:R.categoryTitleIcon,style:{color:kt}})})(),at,a.jsxs("span",{className:R.categoryCount,children:["(",U.length,")"]}),J&&a.jsx("button",{className:R.kanbanQuickAdd,onClick:Ke=>{Ke.stopPropagation(),J(at)},title:jt("taskList.addTaskToCategoryTitle",{category:at}),style:{marginLeft:"auto"},disabled:mt!==null,children:a.jsx(fH,{size:14})})]})}),!pe&&a.jsx("div",{className:R.categoryItems,children:U.map(Ke=>(()=>{const{taskWorkstream:Et,taskInitiative:kt}=Ce(Ke),Ot=mt==="deleted"?Ye.get(Ke.id):void 0;return a.jsx(dp,{task:Ke,taskWorkstream:Et,taskInitiative:kt,workspaceId:g,searchQuery:h,copiedId:M,taxonomies:te,types:i,priorities:l,assigneeOptions:d,workstreams:m,onClick:Le,onAssigneeChange:he,onWorkstreamChange:(dr,tr)=>Ue(dr.id,{workstreamId:tr}),taskReferences:st,onCopyId:ft,onToggleInProgress:xe,onToggleReview:ke,onToggleComplete:ve,onToggleCancel:He,onSetStatus:Ee,onArchiveTask:de,onUnarchive:mt?le:void 0,onDelete:mt?Ie:void 0,categories:s,isRecentlyChanged:Ne.has(Ke.id),readOnlyMode:mt,selectable:!!(Ot&&ge),selected:!!(Ot&&ye.has(Ot.id)),onSelectionChange:Ot?dr=>ge?.(Ot.id,dr):void 0,showStatusLabel:K,showDescription:Q,showAttachments:ee,showChecklistProgress:fe,showLatestActivity:_e,tintActivityBackground:$e},Ke.id)})())})]},at)})}),!De&&D&&T.length>0&&a.jsxs("div",{className:R.archiveList,children:[a.jsx("div",{className:R.archiveHeader,children:"Archived"}),T.map(at=>(()=>{const{taskWorkstream:U,taskInitiative:pe}=Ce(at);return a.jsx(dp,{task:at,taskWorkstream:U,taskInitiative:pe,workspaceId:g,searchQuery:h,copiedId:M,isArchived:!0,types:i,assigneeOptions:d,workstreams:m,onClick:Le,onCopyId:ft,onSetStatus:Ee,onUnarchive:le,onDelete:Ie,deleteActionTitle:"Delete Permanently",taskReferences:st,categories:s,showStatusLabel:K,showDescription:Q,showAttachments:ee,showChecklistProgress:fe,showLatestActivity:_e,tintActivityBackground:$e},at.id)})())]})]})});__.displayName="TaskList";const yH="_formNotice_1h100_1",kH="_markdownPreview_1h100_12",vH="_descriptionField_1h100_18",wH="_descriptionImageStatus_1h100_22",bH="_descriptionImageError_1h100_23",SH="_taskFormLifecycle_1h100_46",AH="_taskFormMetaDivider_1h100_51",CH="_taskFormMetaGrid_1h100_58",IH="_compactMetaGrid_1h100_59",_H="_compactMetaSection_1h100_65",TH="_compactMetaField_1h100_71",xH="_compactMetaFieldHint_1h100_85",RH="_workflowAssignmentField_1h100_89",PH="_workflowAssignmentLabels_1h100_93",jH="_workflowAssignmentControls_1h100_94",EH="_workflowAssignmentSelector_1h100_101",NH="_workflowAssignmentError_1h100_110",DH="_workflowExecutionToggle_1h100_121",MH="_workflowExecutionVersion_1h100_147",LH="_workflowExecutionPanel_1h100_168",OH="_workflowExecutionHeader_1h100_176",BH="_workflowExecutionEyebrow_1h100_195",WH="_workflowExecutionSummary_1h100_196",$H="_workflowExecutionSpinner_1h100_206",FH="_workflowExecutionSteps_1h100_239",UH="_workflowExecutionStepCurrent_1h100_261",zH="_workflowExecutionStepMarker_1h100_266",HH="_workflowExecutionStepCompleted_1h100_277",VH="_workflowExecutionStepState_1h100_278",GH="_workflowExecutionStepBody_1h100_282",KH="_workflowExecutionStepTitle_1h100_286",qH="_workflowExecutionStepMeta_1h100_308",YH="_workflowExecutionEmpty_1h100_310",ZH="_formFieldsetReset_1h100_350",JH="_formLayoutWithSidebar_1h100_357",XH="_formMainColumn_1h100_365",QH="_activitySidebar_1h100_372",eV="_activitySidebarHeader_1h100_382",tV="_activitySidebarTitle_1h100_389",rV="_taskFormDateRow_1h100_398",nV="_taskFormDateLabel_1h100_405",aV="_taskFormDateValue_1h100_413",sV="_taskFormMetaStack_1h100_421",oV="_taskFormMetaActor_1h100_427",iV="_taskFormDateWarning_1h100_433",cV="_taskFormDateError_1h100_439",lV="_helpHeader_1h100_445",dV="_helpClose_1h100_456",uV="_markdownHelp_1h100_470",fV="_helpGrid_1h100_479",mV="_helpGridItem_1h100_485",pV="_settingsHint_1h100_497",hV="_sectionBlock_1h100_503",gV="_specialistSectionWithoutTaxonomies_1h100_509",yV="_softSectionSurface_1h100_514",kV="_stackedList_1h100_521",vV="_stackedListSpaced_1h100_526",wV="_checklistInputGroup_1h100_530",bV="_checklistRow_1h100_537",SV="_checklistRowDragging_1h100_546",AV="_checklistHandleBtn_1h100_550",CV="_checklistCheckboxBtn_1h100_573",IV="_checklistCheckboxBtnChecked_1h100_593",_V="_checklistItemText_1h100_598",TV="_checklistItemTextCompleted_1h100_606",xV="_checklistRemoveBtn_1h100_611",RV="_specialistChip_1h100_643",PV="_specialistChipActive_1h100_666",jV="_commentPanel_1h100_676",EV="_activitySidebarPanel_1h100_690",NV="_commentThread_1h100_698",DV="_activityTimelineRegion_1h100_702",MV="_activityLoadingThread_1h100_711",LV="_newActivityNotice_1h100_715",OV="_newActivityButton_1h100_723",BV="_emptyComments_1h100_767",WV="_activitySkeletonItem_1h100_781",$V="_activitySkeletonMeta_1h100_787",FV="_activitySkeletonBody_1h100_788",UV="_commentInputArea_1h100_912",zV="_commentInput_1h100_912",HV="_sendCommentBtn_1h100_955",VV="_taxonomyFieldsGrid_1h100_998",GV="_markdownPreviewContainer_1h100_1005",KV="_descriptionSurface_1h100_1010",wt={formNotice:yH,markdownPreview:kH,descriptionField:vH,descriptionImageStatus:wH,descriptionImageError:bH,taskFormLifecycle:SH,taskFormMetaDivider:AH,taskFormMetaGrid:CH,compactMetaGrid:IH,compactMetaSection:_H,compactMetaField:TH,compactMetaFieldHint:xH,workflowAssignmentField:RH,workflowAssignmentLabels:PH,workflowAssignmentControls:jH,workflowAssignmentSelector:EH,workflowAssignmentError:NH,workflowExecutionToggle:DH,workflowExecutionVersion:MH,workflowExecutionPanel:LH,workflowExecutionHeader:OH,workflowExecutionEyebrow:BH,workflowExecutionSummary:WH,workflowExecutionSpinner:$H,workflowExecutionSteps:FH,workflowExecutionStepCurrent:UH,workflowExecutionStepMarker:zH,workflowExecutionStepCompleted:HH,workflowExecutionStepState:VH,workflowExecutionStepBody:GH,workflowExecutionStepTitle:KH,workflowExecutionStepMeta:qH,workflowExecutionEmpty:YH,formFieldsetReset:ZH,formLayoutWithSidebar:JH,formMainColumn:XH,activitySidebar:QH,activitySidebarHeader:eV,activitySidebarTitle:tV,taskFormDateRow:rV,taskFormDateLabel:nV,taskFormDateValue:aV,taskFormMetaStack:sV,taskFormMetaActor:oV,taskFormDateWarning:iV,taskFormDateError:cV,helpHeader:lV,helpClose:dV,markdownHelp:uV,helpGrid:fV,helpGridItem:mV,settingsHint:pV,sectionBlock:hV,specialistSectionWithoutTaxonomies:gV,softSectionSurface:yV,stackedList:kV,stackedListSpaced:vV,checklistInputGroup:wV,checklistRow:bV,checklistRowDragging:SV,checklistHandleBtn:AV,checklistCheckboxBtn:CV,checklistCheckboxBtnChecked:IV,checklistItemText:_V,checklistItemTextCompleted:TV,checklistRemoveBtn:xV,specialistChip:RV,specialistChipActive:PV,commentPanel:jV,activitySidebarPanel:EV,commentThread:NV,activityTimelineRegion:DV,activityLoadingThread:MV,newActivityNotice:LV,newActivityButton:OV,emptyComments:BV,activitySkeletonItem:WV,activitySkeletonMeta:$V,activitySkeletonBody:FV,commentInputArea:UV,commentInput:zV,sendCommentBtn:HV,taxonomyFieldsGrid:VV,markdownPreviewContainer:GV,descriptionSurface:KV};function tv({label:e,value:t,options:r,onChange:n,type:s="priority",hideLabel:i=!1,showSelectedLabel:l=!0}){const c=r.find(d=>String(d.value)===String(t));return a.jsxs("div",{className:R.field,children:[!i&&a.jsxs("div",{className:R.labelRow,children:[a.jsx("label",{className:R.label,children:e}),l&&c&&a.jsx("span",{className:R.levelLabel,style:{color:aa(c.color)||(s==="priority"?`var(--priority-${t})`:s==="complexity"?`var(--complexity-${t})`:"var(--text-secondary)"),backgroundColor:(aa(c.color)?`${aa(c.color)}25`:void 0)||(s==="priority"?`color-mix(in srgb, var(--priority-${t}), transparent 85%)`:s==="complexity"?`color-mix(in srgb, var(--complexity-${t}), transparent 85%)`:"rgba(255,255,255,0.05)")},children:c.label})]}),a.jsx("div",{className:R.levelSelect,children:r.map((d,m)=>{const f=r.findIndex(y=>String(y.value)===String(t)),g=m<=f,h=String(d.value)===String(t);return a.jsx("button",{type:"button",className:`${R.levelOption} ${g?R.levelOptionFilled:""} ${g?R[`levelOption_${s}_${d.value}`]:""} ${h?R.levelOptionSelected:""}`,onClick:()=>n(d.value),title:d.label,style:{opacity:g?1:.15,backgroundColor:g?aa(d.color)||(s==="priority"?`var(--priority-${d.value})`:s==="complexity"?`var(--complexity-${d.value})`:"var(--text-primary)"):void 0,color:g?s==="priority"&&String(d.value).toLowerCase()==="medium"?"black":"white":void 0,boxShadow:g&&(s==="priority"&&(String(d.value).toLowerCase()==="critical"||d.value===4)||s==="complexity"&&(String(d.value).toLowerCase()==="epic"||d.value===5))?`0 0 12px ${s==="priority"?"rgba(239, 68, 68, 0.6)":"rgba(217, 70, 239, 0.6)"}`:void 0}},String(d.value))})})]})}const dA=new Map;function qV(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function YV(e,t){const r=Object.entries(t).sort(([n],[s])=>n.localeCompare(s));return JSON.stringify([e,r])}function Yg(e,t,r){const n=qV(e);if(!n)return"";const s=r??RC(),i=YV(s,t);let l=dA.get(i);return l||(l=new Intl.DateTimeFormat(s,t),dA.set(i,l)),l.format(n)}function ZV(e){return new Promise((t,r)=>{const n=new FileReader;n.onload=()=>t(String(n.result||"")),n.onerror=()=>r(n.error||new Error("Failed to read file")),n.readAsDataURL(e)})}async function Qh(e,t){try{const n=await(typeof e.clone=="function"?e.clone():e).json().catch(()=>null),s=String(n?.error||n?.message||"").trim();if(s)return s}catch{}try{const n=(await(typeof e.clone=="function"?e.clone():e).text().catch(()=>"")).trim();if(n)return n}catch{}return t}async function JV(e,t){const r=String(t.workspaceId||"").trim(),n=String(t.ownerId||"").trim(),s={ownerType:t.ownerType,ownerId:n||null,taskId:t.ownerType==="task"&&n||null},i=String(t.draftUploadId||"").trim(),l=i&&t.uploadPurpose?{draftUploadId:i,uploadPurpose:t.uploadPurpose}:{},c=globalThis.crypto?.randomUUID?.()||`context-upload-${Date.now()}-${Math.random().toString(16).slice(2)}`,d=()=>({"Content-Type":"application/json",...r?{"x-taskforce-workspace-id":r}:{},"x-taskforce-operation-id":c});let m=null,f=null;const g=await fetch("/api/taskforce/context-upload/init",{method:"POST",headers:d(),body:JSON.stringify({originalName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...s,...l,workspaceId:r||null})});if(g.ok){const h=await g.json();if(h?.success&&typeof h?.uploadUrl=="string"&&typeof h?.path=="string"){let y=!1;try{const k=await fetch(h.uploadUrl,{method:String(h.method||"PUT"),headers:h.headers||{"Content-Type":e.type||"application/octet-stream"},body:e});if(!k.ok)f=await Qh(k,`Upload failed for ${e.name}`);else{y=!0;const v=await fetch("/api/taskforce/context-upload/finalize",{method:"POST",headers:d(),body:JSON.stringify({relativePath:h.relativePath,mimeType:e.type||"application/octet-stream",originalName:e.name,size:e.size,...s,...l,workspaceId:r||null})});if(!v.ok)throw new Error(await Qh(v,`Upload failed for ${e.name}`));m=await v.json().catch(()=>null)}}catch(k){if(y)throw k;f=k instanceof Error?k.message:`Upload failed for ${e.name}`}}else h?.success&&typeof h?.path=="string"&&(m=h)}else f=await Qh(g,`Upload failed for ${e.name}`);if(!m){const h=await ZV(e),y=await fetch("/api/taskforce/context-upload",{method:"POST",headers:d(),body:JSON.stringify({file:h,originalName:e.name,...s,...l,workspaceId:r||null})});if(!y.ok){const k=await Qh(y,`Upload failed for ${e.name}`);throw new Error(f&&f!==k?`${k} (${f})`:k)}m=await y.json()}if(!m?.success||!m?.path)throw new Error(`Upload failed for ${e.name}`);return{path:m.path,fsPath:m.fsPath,caption:typeof m.caption=="string"&&m.caption.trim().length>0?m.caption:e.name,displayName:typeof m.displayName=="string"?m.displayName:void 0,originalFilename:typeof m.originalFilename=="string"?m.originalFilename:e.name,assetId:typeof m.assetId=="string"?m.assetId:void 0,referenceNumber:typeof m.referenceNumber=="number"?m.referenceNumber:null,referenceLabel:typeof m.referenceLabel=="string"?m.referenceLabel:void 0,taskId:t.ownerType==="task"&&typeof m.taskId=="string"?m.taskId:null,timestamp:typeof m.timestamp=="string"&&m.timestamp.trim().length>0?m.timestamp:new Date().toISOString()}}class tl extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkflowManagerApiError"}}async function pi(e,t,r){const n=new Headers(t?.headers||void 0);t?.body&&n.set("Content-Type","application/json");const s=String(r?.workspaceId||"").trim();s&&s!=="default"&&n.set("x-taskforce-workspace-id",s);const i=await YR(e,{credentials:"include",...t,headers:n},r?.apiBaseUrl),l=await i.json().catch(()=>({}));if(!i.ok||l.success===!1)throw new tl(String(l.error||`Workflow request failed (${i.status}).`),l.code);return l}async function XV(e){const t=await pi("/api/taskforce/workflows",void 0,e);return Array.isArray(t.workflows)?t.workflows:[]}async function eg(e,t){return(await pi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,void 0,t)).assignment||null}async function QV(e,t){if(t?.runtimeMode!=="local"||!e.assignmentSnapshot)return e.taskSnapshot||null;try{return(await pi(`/api/taskforce/workflow-executions/${encodeURIComponent(e.executionId)}/apply-cloud-state`,{method:"POST",body:JSON.stringify({assignment:e.assignmentSnapshot,taskAuthoritative:e.taskAuthoritative})},{workspaceId:t?.workspaceId})).task||null}catch{return null}}async function eG(e,t,r,n,s){const i=await pi(`/api/taskforce/workflow-executions/${encodeURIComponent(e)}/complete-step?taskforceCloud=1`,{method:"POST",body:JSON.stringify({idempotencyKey:t,...n?{evidenceCommentId:n}:{},...s?{expectedStepId:s}:{}})},r);if(!i.result)throw new tl("The workflow step result was not returned.");let l=i.result.taskSnapshot||null;return i.result.assignmentSnapshot&&i.result.route!=="local-outbox"&&(l=await QV({executionId:e,taskId:i.result.execution.taskId,assignmentSnapshot:i.result.assignmentSnapshot,taskSnapshot:i.result.taskSnapshot,taskAuthoritative:i.result.taskAuthoritative},r)),i.result.taskSnapshot&&RN({workspaceId:r?.workspaceId,taskId:i.result.taskSnapshot.id,reason:"workflow-step",...l?{authoritativeTask:l}:{},...i.result.assignmentSnapshot?{authoritativeWorkflowAssignment:i.result.assignmentSnapshot}:{}}),i.result}async function uA(e,t,r){const n=await pi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"POST",body:JSON.stringify(t)},r);if(!n.assignment)throw new tl("The workflow assignment was not returned.");return n.assignment}async function tG(e,t,r){const n=await pi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"PUT",body:JSON.stringify(t)},r);if(!n.assignment)throw new tl("The workflow assignment was not returned.");return n.assignment}async function rG(e,t){await pi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"DELETE"},t)}async function one(e){const t=await pi(`/api/taskforce/workflows/${encodeURIComponent(e)}`);if(!t.workflow)throw new tl("Workflow details were not returned.");return t.workflow}async function ine(e){const t=await pi("/api/taskforce/workflows",{method:"POST",body:JSON.stringify(e)});if(!t.workflow)throw new tl("The new workflow was not returned.");return t.workflow}async function cne(e,t){const r=await pi(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"PUT",body:JSON.stringify(t)});if(!r.workflow)throw new tl("The saved workflow draft was not returned.");return r.workflow}async function lne(e){const t=await pi(`/api/taskforce/workflows/${encodeURIComponent(e)}/publish`,{method:"POST"});if(!t.workflow)throw new tl("The published workflow was not returned.");return t.workflow}async function dne(e){const t=await pi(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"POST"});if(!t.workflow)throw new tl("The new workflow draft was not returned.");return t.workflow}const rv="__none__";function nG(e){return e.charAt(0).toUpperCase()+e.slice(1)}function aG(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e;return!r.execution||r.execution.taskId!==t||!r.template||!r.version||!Array.isArray(r.steps)||!Array.isArray(r.events)?null:r}function fA(e){return Math.max(0,...(e?.events||[]).map(t=>t.sequenceNumber||0))}function mA(e){const t=Date.parse(e.execution.createdAt);return Number.isFinite(t)?t:0}function sG(e,t){return t?e?e.execution.id!==t.execution.id?mA(t)>mA(e)?t:e:fA(t)>=fA(e)?t:e:t:e}function oG({taskId:e,workspaceId:t,taskStatus:r,taskUpdatedAt:n,comments:s=[],assigneeOptions:i=[],currentActorId:l,apiBaseUrl:c,runtimeMode:d="local",disabled:m=!1,onActivatePendingWorkflow:f,onActiveOwnerChange:g}){const[h,y]=re.useState([]),[k,v]=re.useState(null),[A,b]=re.useState(!0),[w,P]=re.useState(!1),[E,D]=re.useState(!1),[j,S]=re.useState(!1),[L,_]=re.useState(0),[T,z]=re.useState(""),Y=re.useRef(0),H=re.useRef(0),M=re.useRef(null),oe=re.useRef({taskId:e,revision:`${e}:${n||""}`}),K=re.useMemo(()=>({workspaceId:t,apiBaseUrl:c,runtimeMode:d}),[c,d,t]);re.useEffect(()=>{const xe=++Y.current,ke=++H.current;return b(!0),P(!1),D(!1),z(""),y([]),v(null),S(!1),_(0),M.current=null,Promise.allSettled([XV(K),eg(e,K)]).then(([ve,He])=>{xe===Y.current&&(ve.status==="fulfilled"&&y(ve.value.filter(Ee=>Ee.template.status==="active"&&!!Ee.latestPublishedVersion)),ke===H.current&&(He.status==="fulfilled"?(v(He.value),!He.value&&ve.status==="rejected"&&z(String(ve.reason?.message||"Unable to load workflows."))):z(String(He.reason?.message||"Unable to load workflow assignment."))),b(!1))}),()=>{Y.current+=1,H.current+=1}},[K,e]);const Q=k?.execution.taskId===e?k:null,ee=Q?["pending","running","paused"].includes(Q.execution.status):!1,fe=ee?Q:null,_e=Q&&!h.some(({template:xe})=>xe.id===Q.template.id)?[{template:Q.template,draftVersionId:null,latestPublishedVersion:{id:Q.version.id,versionNumber:Q.version.versionNumber,publishedAt:Q.version.publishedAt}},...h]:h,$e=[...!Q||ee?[{value:rv,label:"None"}]:[],..._e.map(({template:xe})=>({value:xe.id,label:xe.name}))],Ye=fe?.execution.status==="pending",ye=!m&&!A&&!w&&(!fe||Ye),ge=Q?.template.id||rv,se=re.useMemo(()=>[...Q?.steps||[]].sort((xe,ke)=>xe.position-ke.position),[Q?.steps]),ie=Q?.execution.currentStepId&&se.find(xe=>xe.id===Q.execution.currentStepId)||null,me=Q?.execution.currentStepId?se.findIndex(xe=>xe.id===Q.execution.currentStepId):-1,$=Q?.execution.status==="completed",V=re.useMemo(()=>new Set((Q?.events||[]).filter(xe=>xe.eventType==="step-completed"&&xe.stepId).map(xe=>xe.stepId)),[Q?.events]),B=fe?.execution.status==="pending"?(se.find(xe=>xe.isRequired)||se[0])?.id:null,N=`task-workflow-execution-${e}`,be=A?"Loading...":T&&!Q?"Unavailable":Q?nG(Q.execution.status):"Not assigned",Ae=Q?.version.versionNumber?`V${Q.version.versionNumber}`:null,q=be.replace(/\.+$/,""),Z=Q?`Status: ${q}${Ae?`, ${Ae}`:""}. ${j?"Hide":"View"} workflow execution.`:`Status: ${q}.`,G=!m&&!E&&fe?.execution.status==="running"&&ie?.ownerType==="user"&&!!l&&ie.ownerId===l,ne=$&&h.find(({template:xe})=>xe.id===Q?.template.id)||null,Te=!!(!m&&!w&&ne?.latestPublishedVersion);re.useEffect(()=>{const xe=fe?.execution.id||null;if(!xe||fe?.execution.status!=="pending"||r!=="in-progress"||!f||M.current===xe)return;M.current=xe;const ke=Y.current;P(!0),z(""),Promise.resolve(f()).then(async()=>{const ve=await eg(e,K);if(ke!==Y.current)return;if(ve?.execution.status==="pending")throw new Error("Workflow is still pending. Retry to start it.");const He=ve?.steps.find(Ee=>Ee.id===ve.execution.currentStepId);He?.ownerId&&g?.(He.ownerId),v(ve)}).catch(ve=>{ke===Y.current&&(M.current=null,z(String(ve?.message||"Unable to start workflow.")))}).finally(()=>{ke===Y.current&&P(!1)})},[L,fe,f,g,K,e,r]);const Le=re.useCallback(xe=>xe?np(xe,i):"Unassigned",[i]);re.useEffect(()=>{oe.current.taskId!==e&&(oe.current={taskId:e,revision:`${e}:${n||""}`})},[e,n]),re.useEffect(()=>{const xe=`${e}:${n||""}`;if(xe===oe.current.revision||r!=="in-progress"||!Ye)return;oe.current={taskId:e,revision:xe};const ke=Y.current,ve=++H.current;eg(e,K).then(He=>{ke===Y.current&&ve===H.current&&v(He)}).catch(He=>{ke===Y.current&&ve===H.current&&z(String(He?.message||"Unable to refresh workflow assignment."))})},[Ye,K,e,r,n]),re.useEffect(()=>{if(typeof window>"u")return;const xe=ke=>{const ve=ke.detail;if(ve?.reason!=="workflow-step")return;const He=String(ve.workspaceId||"").trim(),Ee=String(t||"").trim();if(Ee&&He!==Ee||String(ve.taskId||"").trim()!==e)return;const x=aG(ve.authoritativeWorkflowAssignment,e);if(x){++H.current,v(Je=>sG(Je,x)),z("");return}const le=Y.current,Ie=++H.current;eg(e,K).then(Je=>{le===Y.current&&Ie===H.current&&(v(Je),z(""))}).catch(Je=>{le===Y.current&&Ie===H.current&&z(String(Je?.message||"Unable to refresh workflow assignment."))})};return window.addEventListener(Wd,xe),()=>window.removeEventListener(Wd,xe)},[K,e,t]);const Ue=async xe=>{const ke=String(xe);if(!ye||ke===ge)return;const ve=Y.current;P(!0),z("");try{if(ke===rv){if(await rG(e,K),ve!==Y.current)return;v(null);return}const He=h.find(({template:le})=>le.id===ke),Ee=He?.latestPublishedVersion;if(!He||!Ee)return;const de={workflowTemplateId:He.template.id,workflowVersionId:Ee.id},x=fe?await tG(e,de,K):await uA(e,de,K);if(ve!==Y.current)return;v(x)}catch(He){if(ve!==Y.current)return;z(String(He?.message||"Unable to assign workflow."))}finally{ve===Y.current&&P(!1)}},st=async()=>{if(!fe||!G)return;const xe=[...fe.events||[]].reverse().find(He=>He.eventType==="step-started"&&He.stepId===ie?.id)?.createdAt||fe.execution.startedAt||fe.execution.createdAt,ke=ie?.requiresCommentEvidence&&[...s].reverse().find(He=>He.author===l&&He.text.trim().length>0&&Date.parse(He.timestamp)>=Date.parse(xe))||null;if(ie?.requiresCommentEvidence&&!ke){z("Add a task comment for this workflow step before completing it.");return}const ve=Y.current;D(!0),z("");try{const He=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,Ee=await eG(fe.execution.id,He,K,ke?.id,ie?.id);if(ve!==Y.current)return;v(de=>de&&{...de,execution:Ee.execution,events:Ee.events})}catch(He){if(ve!==Y.current)return;z(String(He?.message||"Unable to complete workflow step."))}finally{ve===Y.current&&D(!1)}},ft=async()=>{const xe=ne?.latestPublishedVersion;if(!Te||!ne||!xe)return;const ke=Y.current;P(!0),z("");try{const ve=await uA(e,{workflowTemplateId:ne.template.id,workflowVersionId:xe.id},K);if(ke!==Y.current)return;v(ve)}catch(ve){if(ke!==Y.current)return;z(String(ve?.message||"Unable to run workflow again."))}finally{ke===Y.current&&P(!1)}};return a.jsxs("div",{className:`${R.field} ${wt.compactMetaField} ${wt.workflowAssignmentField}`,children:[a.jsxs("div",{className:wt.workflowAssignmentLabels,children:[a.jsx("label",{id:"task-workflow-label",className:R.label,children:"Workflow"}),a.jsx("span",{id:"task-workflow-status-label",className:R.label,children:"Status"})]}),a.jsxs("div",{className:wt.workflowAssignmentControls,children:[a.jsx(fi,{value:ge,options:$e,onChange:xe=>{Ue(xe)},placeholder:A?"Loading workflows...":"None",ariaLabelledBy:"task-workflow-label",disabled:!ye||$e.length===1&&!fe,portalPanel:!0,panelMinWidth:280,panelAlign:"start",className:wt.workflowAssignmentSelector}),a.jsxs("button",{type:"button",className:wt.workflowExecutionToggle,onClick:()=>S(xe=>!xe),"aria-expanded":Q?j:void 0,"aria-controls":Q?N:void 0,"aria-label":Z,disabled:!Q,children:[a.jsxs("span",{children:[be,Ae?a.jsxs("span",{className:wt.workflowExecutionVersion,children:[" · ",Ae]}):null]}),Q?j?a.jsx(Fd,{size:13,"aria-hidden":"true"}):a.jsx(Ld,{size:13,"aria-hidden":"true"}):null]})]}),Q&&j?a.jsxs("section",{id:N,className:wt.workflowExecutionPanel,"aria-label":"Workflow execution",children:[a.jsxs("div",{className:wt.workflowExecutionHeader,children:[a.jsxs("div",{children:[a.jsx("span",{className:wt.workflowExecutionEyebrow,children:"Workflow execution"}),a.jsx("strong",{children:Q.version.name||Q.template.name})]}),$&&ne?a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{ft()},disabled:!Te,children:[w?a.jsx(na,{size:14,className:wt.workflowExecutionSpinner,"aria-hidden":"true"}):a.jsx($i,{size:14,"aria-hidden":"true"}),"Run again"]}):null]}),a.jsxs("dl",{className:wt.workflowExecutionSummary,children:[a.jsxs("div",{children:[a.jsx("dt",{children:"Current step"}),a.jsx("dd",{children:$?"Completed":ie?.name||(Q.execution.status==="pending"?"Not started":"Not available")})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Owner"}),a.jsx("dd",{children:!$&&ie?Le(ie.ownerId):"Unassigned"})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Version"}),a.jsx("dd",{children:Q.version.versionNumber?`V${Q.version.versionNumber}`:"Published"})]})]}),a.jsx("ol",{className:`${wt.workflowExecutionSteps} tf-scrollbar`,children:se.map((xe,ke)=>{const ve=V.has(xe.id),He=!$&&xe.id===Q.execution.currentStepId,Ee=!ve&&!He&&me>=0&&ke<me,de=[ve?wt.workflowExecutionStepCompleted:"",He?wt.workflowExecutionStepCurrent:""].filter(Boolean).join(" ")||void 0;return a.jsxs("li",{className:de,"aria-current":He?"step":void 0,children:[a.jsx("span",{className:wt.workflowExecutionStepMarker,"aria-hidden":"true",children:ve?a.jsx(R0,{size:16}):He?a.jsx(P0,{size:17}):a.jsx(j0,{size:15})}),a.jsxs("span",{className:wt.workflowExecutionStepBody,children:[a.jsxs("span",{className:wt.workflowExecutionStepTitle,children:[a.jsx("span",{children:ke+1}),a.jsx("strong",{children:xe.name})]}),a.jsxs("span",{className:wt.workflowExecutionStepMeta,children:[Le(xe.ownerId)," · ",xe.isRequired?"Required":"Optional"]})]}),a.jsx("span",{className:wt.workflowExecutionStepState,children:ve?"Completed":Ee?"Skipped":He&&(G||E)?a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{st()},disabled:E,children:[E?a.jsx(na,{size:14,className:wt.workflowExecutionSpinner,"aria-hidden":"true"}):a.jsx(Fi,{size:14,"aria-hidden":"true"}),"Complete Step"]}):He?"Current":xe.id===B?"Starts here":"Upcoming"})]},xe.id)})}),se.length===0?a.jsx("p",{className:wt.workflowExecutionEmpty,children:"No steps are available for this workflow version."}):null]}):null,T?a.jsxs("span",{className:wt.workflowAssignmentError,role:"alert",children:[T,Ye&&r==="in-progress"&&f?a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>_(xe=>xe+1),disabled:w,children:"Retry"}):null]}):null]})}const iG="_header_g17dz_1",cG="_title_g17dz_15",lG="_actions_g17dz_24",dG="_toggle_g17dz_30",tg={header:iG,title:cG,actions:lG,toggle:dG};function Km({label:e,count:t,showZeroCount:r=!1,actions:n,expanded:s,expandedTitle:i,collapsedTitle:l,onToggle:c,className:d="",controlsId:m}){const f=typeof t=="number"&&(r||t>0),g=s?Fd:Ld;return a.jsxs("div",{className:`${tg.header} ${d}`.trim(),children:[a.jsxs("span",{className:tg.title,children:[e,f?` (${t})`:""]}),n?a.jsx("span",{className:tg.actions,children:n}):null,a.jsx("button",{type:"button",className:`tf-control-icon ${tg.toggle}`.trim(),onClick:c,"aria-expanded":s,"aria-controls":m,"aria-label":s?i:l,title:s?i:l,children:a.jsx(g,{size:14,"aria-hidden":"true"})})]})}const uG="system:unverified-comment-import",T_="Imported comment",x_="This comment was recovered during synchronization, but its author could not be verified.";function R_(e){return String(e||"").trim().toLowerCase()===uG}const nv=280,fG=48,mG=re.lazy(()=>qo(()=>import("./EntityActivityTimeline-_V0zfMuh.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),pG=re.lazy(()=>qo(()=>import("./TaskContextUpload-C00NVUpn.js"),__vite__mapDeps([7,1,8,2,3,4,5,9])).then(e=>({default:e.TaskContextUpload})));function hG({count:e}){const t=Math.max(2,Math.min(e||3,4));return a.jsx("div",{className:`${wt.commentThread} ${wt.activityLoadingThread}`.trim(),"aria-busy":"true","aria-live":"polite","aria-label":"Loading activity",children:Array.from({length:t},(r,n)=>a.jsxs("div",{className:wt.activitySkeletonItem,children:[a.jsx("div",{className:wt.activitySkeletonMeta}),a.jsx("div",{className:wt.activitySkeletonBody})]},n))})}function gG({id:e,item:t,onToggle:r,onRemove:n}){const{attributes:s,listeners:i,setNodeRef:l,transform:c,transition:d,isDragging:m}=hw({id:e}),f={transform:ny.Transform.toString(c),transition:d,opacity:m?.88:1};return a.jsxs("div",{ref:l,style:f,className:`${wt.checklistRow} ${m?wt.checklistRowDragging:""}`.trim(),children:[a.jsx("button",{type:"button",className:wt.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...s,...i,children:a.jsx(iw,{size:14})}),a.jsx("button",{type:"button",className:`${wt.checklistCheckboxBtn} ${t.isCompleted?wt.checklistCheckboxBtnChecked:""}`.trim(),onClick:r,title:t.isCompleted?"Mark incomplete":"Mark complete","aria-label":t.isCompleted?"Mark checklist item incomplete":"Mark checklist item complete",children:t.isCompleted?a.jsx(Fi,{size:14,strokeWidth:2.1}):null}),a.jsx("span",{className:`${wt.checklistItemText} ${t.isCompleted?wt.checklistItemTextCompleted:""}`.trim(),children:t.title}),a.jsx("button",{type:"button",className:wt.checklistRemoveBtn,onClick:n,title:"Remove checklist item","aria-label":"Remove checklist item",children:a.jsx(mi,{size:15,strokeWidth:1.9})})]})}function P_(e){const{editingTaskId:t,initialActivityEntryId:r,title:n,description:s,category:i,type:l,priority:c,complexity:d,manualComplexityEnabled:m=!1,assignee:f,scheduledDate:g,dueDate:h,checklistItems:y,comments:k,newCommentText:v,contextFiles:A,currentWorkspaceId:b,descriptionImageDraftId:w,currentActorId:P,apiBaseUrl:E,runtimeMode:D="local",showImageReviews:j=!1,descriptionFocused:S,showMarkdownHelp:L,checklistEnabled:_=!0,formTaxonomies:T,onTaxonomyChange:z,onOpenSettings:Y,categories:H,types:M,priorities:oe,taxonomyDisplayLabels:K,assigneeOptions:Q,taxonomies:ee,workstreams:fe=[],initiatives:_e=[],copiedId:$e,onTitleChange:Ye,onTitleDraftChange:ye,onDescriptionChange:ge,onDescriptionDraftChange:se,onCategoryChange:ie,onTypeChange:me,onPriorityChange:$,onComplexityChange:V,onAssigneeChange:B,onScheduledDateChange:N,onDueDateChange:be,onChecklistItemsChange:Ae,onNewCommentTextChange:q,onDescriptionFocusedChange:Z,onShowMarkdownHelpChange:G,onSubmit:ne,onAddComment:Te,onDescriptionImageUploadStart:Le,onAddContextFile:Ue,onRemoveContextFile:st,onUpdateContextCaption:ft,onSetCardCover:xe,cardCoverDisabled:ke,onOpenContextImage:ve,onCopyId:He,onToggleInProgress:Ee,onToggleReview:de,onToggleComplete:x,onToggleCancel:le,onSetStatus:Ie,onArchiveTask:Je,onUnarchive:J,taskReferences:Ze,currentTask:te,commentsEndRef:Ne}=e,je=ye||Ye,Re=se||ge,Ce=Ss(te),Pe=re.useRef(null),he=re.useRef(null),De=re.useRef(s),et=re.useRef(t),Fe=`${String(b||"").trim()}\0${t||""}`,yt=re.useRef(Fe),Oe=re.useRef(0);yt.current!==Fe&&(yt.current=Fe,Oe.current+=1);const[mt,vt]=re.useState(!1),Ve=re.useRef(null),[tt,It]=re.useState(null);re.useLayoutEffect(()=>{const ue=et.current!==t;Pe.current&&(ue||document.activeElement!==Pe.current)&&(Pe.current.value=n),he.current&&(ue||document.activeElement!==he.current)&&(he.current.value=s,De.current=s),et.current=t},[s,t,n]),re.useEffect(()=>(Ve.current=null,vt(!1),It(null),()=>{Oe.current+=1}),[Fe]);const Xe=re.useMemo(()=>{if(!ve)return;const ue=new Map;return A.forEach(ot=>{if(typeof ot=="string")return;const _t=cp(ot);_t&&ue.set(_t.toLowerCase(),ot)}),{resolve:ot=>ue.get(ot.toLowerCase())||null,activate:ve}},[A,ve]),bt=re.useMemo(()=>JE(ee,T),[ee,T]),at=re.useMemo(()=>{const ue=H.find(fr=>fr.value===rf),ot={value:rf,label:ue?.label||ay,icon:ue?.icon||"HelpCircle",color:ue?.color||"var(--text-secondary)"},_t=H.find(fr=>fr.value===i),nr=H.filter(fr=>!fr.disabled||fr.value===_t?.value).filter(fr=>fr.value!==rf).map(fr=>({value:fr.value,label:fr.disabled?`${fr.label} (Legacy)`:fr.label,icon:fr.icon,color:fr.color}));return[ot,...nr]},[H,i]),U=re.useMemo(()=>{const ue=M.find(_t=>_t.value===l);return M.filter(_t=>_t.status!=="retired"||_t.value===ue?.value).map(_t=>({value:_t.value,label:_t.status==="retired"?`${_t.label} (Retired)`:_t.label,icon:_t.icon||"Box",color:_t.color||"violet-500"}))},[M,l]),pe=ue=>ue&&Yg(ue,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,Ke=pe(te?.createdAt),Et=pe(te?.updatedAt||te?.createdAt),kt=pe(te?.completedAt),Ot=re.useMemo(()=>{const ue=new Date,ot=ue.getFullYear(),_t=String(ue.getMonth()+1).padStart(2,"0"),Pt=String(ue.getDate()).padStart(2,"0");return`${ot}-${_t}-${Pt}`},[]),dr=!!(h&&g&&h<g),tr=!!(h&&h<Ot&&(!te||te.status!=="done"&&te.status!=="cancelled")),pr=y.filter(ue=>ue.isCompleted).length,[Bt,wr]=re.useState(""),[or,$r]=re.useState(!0),[Dr,Me]=re.useState(!1),nt=re.useRef(null),pt=re.useRef(null),lt=!!te?.isArchived,xt=!!te?.isDeleted,Yt=lt||xt,Nt=re.useRef(null),Qt=re.useRef(null),Ct=re.useRef(null),Ht=re.useRef(null),Ft=re.useRef(null),ir=re.useRef(null),cr=re.useRef(null),it=re.useRef(!0),[Zt,Lr]=re.useState(!1),lr=re.useRef(new Map),$n=re.useRef(void 0),br=re.useRef(0),ur=dw(ep(uw,{activationConstraint:{distance:6}}));re.useLayoutEffect(()=>{const ue=Nt.current;if(!ue)return;const ot=$n.current;if(ot===t)return;ot!==void 0&&lr.current.set(ot,br.current);const _t=lr.current.get(t)??0;ue.scrollTop=_t,br.current=_t,$n.current=t},[t]),re.useLayoutEffect(()=>{$r(!0)},[t]),re.useEffect(()=>{Dr&&nt.current?.focus()},[Dr]),re.useEffect(()=>{Me(!1),wr("")},[t]),re.useEffect(()=>{or||(Me(!1),wr(""))},[or]);const u=re.useCallback(ue=>{const ot=ue.currentTarget.scrollTop;br.current=ot,lr.current.set(t,ot)},[t]),St=()=>{const ue=Bt.trim();if(!ue)return;const ot=new Date().toISOString();Ae([...y,{id:`checklist-draft-${ot}-${y.length}`,taskId:t||"",title:ue,isCompleted:!1,order:y.length,createdAt:ot,updatedAt:ot}]),wr(""),Me(!1),window.requestAnimationFrame(()=>pt.current?.focus())},gt=()=>{if(Dr){nt.current?.focus();return}or||$r(!0),Me(!0)},Fr=(ue=!0)=>{Me(!1),wr(""),ue&&window.requestAnimationFrame(()=>pt.current?.focus())},xr=async(ue,ot,_t)=>{const Pt=Oe.current,nr=t,fr=()=>Oe.current===Pt&&yt.current===Fe;It(null);const ln=[];let Tt=0,Rr=null;for(const Qr of ue){if(Qr.size>10*1024*1024){Tt+=1,Rr="Images must be 10 MB or smaller.";continue}try{const on=await JV(Qr,{ownerType:"task",ownerId:nr,workspaceId:b,...!nr&&w?{draftUploadId:w,uploadPurpose:"task-description-draft"}:{}});if(!fr())return;const Jn=cp(on);if(!Jn)throw new Error("The uploaded image did not receive an image reference.");Ue(on),zP({workspaceId:String(b||"").trim()||"default",ownerType:"task",ownerId:nr,taskId:nr,reason:"upload"}),ln.push(Jn)}catch(on){Tt+=1,Rr=on instanceof Error?on.message:"The image could not be added."}}if(fr()){if(ln.length>0){const Qr=De.current,on=Math.min(ot,Qr.length),Jn=Math.min(Math.max(_t,on),Qr.length),Zr=Qr.slice(0,on),Er=Qr.slice(Jn),Xn=Zr&&!/\s$/.test(Zr)?`
|
|
3
|
-
`:"",Ia=Er&&!/^\s/.test(Er)?`
|
|
4
|
-
`:"",Un=`${Xn}${ln.join(`
|
|
5
|
-
`)}${Ia}`,Cs=`${Zr}${Un}${Er}`,ga=Zr.length+Un.length;De.current=Cs,he.current&&(he.current.value=Cs),Re(Cs),ge(Cs),window.requestAnimationFrame(()=>{he.current?.focus(),he.current?.setSelectionRange(ga,ga)})}if(Tt>0){const Qr=ln.length>0?`${Tt} image${Tt===1?"":"s"} could not be added.`:Rr||(ue.length===1?"The image could not be added.":"The images could not be added.");It(Qr)}}},er=(ue,ot,_t)=>{if(ue.length===0||Ve.current)return Ve.current||Promise.resolve();vt(!0);const Pt=xr(ue,ot,_t);return Ve.current=Pt,Le?.(Pt),Pt.then(()=>{Ve.current===Pt&&(Ve.current=null,vt(!1))},()=>{Ve.current===Pt&&(Ve.current=null,vt(!1))}),Pt},jr=ue=>Array.from(ue.items).filter(ot=>ot.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(ot.type)).map(ot=>ot.getAsFile()).filter(ot=>!!ot),qr=ue=>Array.from(ue.files).filter(ot=>/^(?:image\/(?:png|jpeg|webp))$/i.test(ot.type)),An=ue=>Array.from(ue.items||[]).some(ot=>ot.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(ot.type))||qr(ue).length>0,cn=ue=>{An(ue.dataTransfer)&&(ue.preventDefault(),ue.dataTransfer.dropEffect="copy")},Hr=re.useCallback(ue=>{const{active:ot,over:_t}=ue;if(!_t||ot.id===_t.id)return;const Pt=y.findIndex(Tt=>Tt.id===ot.id),nr=y.findIndex(Tt=>Tt.id===_t.id);if(Pt<0||nr<0)return;const fr=new Date().toISOString(),ln=lC(y,Pt,nr).map((Tt,Rr)=>({...Tt,order:Rr,updatedAt:fr}));Ae(ln)},[y,Ae]),Ge=ue=>{const ot=String(ue||"").trim(),_t=ue.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!_t||_t==="ai"||ot.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${_t.split(" ").map(nr=>nr.charAt(0).toUpperCase()+nr.slice(1)).join(" ")}`},Xr=OC(Q,f),hr=re.useMemo(()=>new Map(Xr.map(ue=>[String(ue.value),ue])),[Xr]),Jt=re.useMemo(()=>{const ue=[te?.assigneeActor,te?.createdByActor].filter(Boolean);return new Map(ue.map(ot=>[String(ot.id),ot]))},[te?.assigneeActor,te?.createdByActor]),Xt=re.useMemo(()=>new Map(fe.map(ue=>[ue.id,lf(ue)||ue.id])),[fe]),bn=re.useMemo(()=>new Map(_e.map(ue=>[ue.id,qI(ue)||ue.id])),[_e]),$t=re.useMemo(()=>bw({activity:te?.activity,comments:k}),[k,te?.activity]),Ut=(ue,ot)=>{const _t=String(ot||"").trim();if(_t){if(ue==="assignee")return np(_t,Xr);if(ue==="workstreamId")return Xt.get(_t);if(ue==="initiativeId")return bn.get(_t)}},Ur=re.useCallback((ue,ot,_t)=>{if(_t&&_t.trim())return _t.trim();const Pt=String(ue||"").trim();if(!Pt)return ot==="ai"?"AI Agent":jt("taskForm.you");const nr=Jt.get(Pt);if(nr?.label)return nr.label;const fr=hr.get(Pt)||hr.get(Pt.toLowerCase());return fr?.label?fr.label:ot==="ai"?Ge(Pt):np(Pt,Xr)||Pt},[Jt,hr,Ge,Xr]),Fn=re.useCallback(({actorId:ue,actorType:ot,actorProfile:_t,fallbackKind:Pt})=>{const nr=String(ue||"").trim();if(R_(nr))return{kind:"system",label:T_,ActorIcon:eC,description:x_};const fr=nr.toLowerCase(),ln=Jt.get(nr),Tt=hr.get(nr)||hr.get(fr),Rr=_t||ln||Tt||null,Qr=ot==="system"?"system":ot==="ai"||Rr?.kind==="ai"?"agent":ot==="human"||Rr?.kind==="human"?"member":Tt?.kind==="agent"?"agent":Tt?.kind==="member"?"member":Pt||(fr===""||fr==="user"||fr==="human"?"member":"agent"),on=Qr==="system"?"System":Ur(nr,Qr==="agent"?"ai":"human",Rr?.label||null),Jn=Rr?.color,Zr=String(Rr?.icon||(Qr==="agent"?"Bot":Qr==="member"?"User":"ClipboardList")),Er=df[Zr]||(Qr==="agent"?Cd:Qr==="member"?tf:tC);return{kind:Qr,label:on,color:Jn,ActorIcon:Er,isCurrentActorHint:Qr==="member"&&(fr===""||fr==="user"||fr==="human")}},[Jt,hr,Ur]),Yn=re.useMemo(()=>{const ue=$t[$t.length-1];if(!ue)return null;if(ue.type==="comment"){const _t=ue.comment;return Ur(_t.author,_t.actor?.kind==="ai"?"ai":_t.actor?.kind==="human"?"human":null,_t.actor?.label||null)}const ot=ue.event;return Ur(ot.actor,ot.actorType,ot.actorProfile?.label||null)},[Ur,$t]),Ca=re.useMemo(()=>{if(!te?.completedAt)return null;for(const ot of $t){if(ot.type!=="event")continue;const _t=ot.event,Pt=_t.details?.changes?.status?.to;if(Pt==="done"||Pt==="cancelled")return Ur(_t.actor,_t.actorType,_t.actorProfile?.label||null)}return Yn},[te?.completedAt,Yn,Ur,$t]),yn=te?.createdByActor?.label||Ur(te?.createdBy||null,te?.createdByActor?.kind==="ai"?"ai":te?.createdByActor?.kind==="human"?"human":null,te?.createdByActor?.label||null),Vr=Yn,rn=$t.length,Mn=$t.filter(ue=>ue.type==="comment").length,sn=$t[0]?.id||null,Sn=$t[rn-1]?.id||null,Ir=String(r||"").trim(),Wr=t&&Ir?`${t}\0${Ir}`:null,Yr=re.useCallback(ue=>({taskId:t,count:rn,firstItemId:sn,lastItemId:Sn,scrollHeight:ue.scrollHeight,scrollTop:ue.scrollTop}),[rn,t,sn,Sn]),Zn=re.useCallback(()=>{const ue=Qt.current;ue&&(ue.scrollTop=ue.scrollHeight,it.current=!0,Lr(!1),cr.current=Yr(ue))},[Yr]),Ln=re.useCallback(()=>{const ue=Qt.current,ot=Ct.current;return!ue||!ot||!Wr||Ht.current===Wr?!1:(ot.scrollIntoView?.({block:"center",inline:"nearest"}),ot.focus({preventScroll:!0}),it.current=!1,Lr(!1),Ht.current=Wr,cr.current=Yr(ue),!0)},[Wr,Yr]),fn=re.useCallback(ue=>{Ct.current=ue,ue&&Ln()},[Ln]),Rn=re.useCallback(ue=>{ir.current?.(ue.currentTarget)},[]),hn=re.useCallback(ue=>{const _t=ue.scrollHeight-ue.scrollTop-ue.clientHeight<=fG;it.current=_t,_t&&Lr(!1),cr.current=Yr(ue)},[Yr]);re.useLayoutEffect(()=>{ir.current=hn},[hn]);const dt=re.useCallback(ue=>{if(Ft.current?.disconnect(),Ft.current=null,Qt.current=ue,!!ue&&(Wr&&Ht.current!==Wr?it.current=!1:(ue.scrollTop=ue.scrollHeight,it.current=!0),Lr(!1),typeof ResizeObserver<"u")){const ot=new ResizeObserver(()=>{const _t=Qt.current;_t&&ir.current?.(_t)});ot.observe(ue),Ft.current=ot}},[Wr,t]);re.useLayoutEffect(()=>{Ht.current=null},[Wr]),re.useLayoutEffect(()=>{if(!t)return;const ue=Qt.current;if(!ue)return;const ot=cr.current,_t=ot?.taskId!==t,Pt=!!(ot&&rn>ot.count),nr=!!(ot&&Pt&&ot.lastItemId===Sn&&ot.firstItemId!==sn);if(Wr&&Ln()){cr.current=Yr(ue);return}_t||it.current?Zn():nr&&ot?ue.scrollTop=ot.scrollTop+(ue.scrollHeight-ot.scrollHeight):Pt&&Lr(!0),cr.current=Yr(ue);const fr=window.requestAnimationFrame(()=>{_t||it.current?Zn():cr.current=Yr(ue)});return()=>window.cancelAnimationFrame(fr)},[rn,Wr,Yr,t,sn,Sn,Zn,Ln]);const On=re.useCallback(()=>{Zn(),Te()},[Te,Zn]),Wt=a.jsxs("aside",{className:wt.activitySidebar,"aria-label":jt("taskForm.commentsSectionTitle"),children:[a.jsx("div",{className:wt.activitySidebarHeader,children:a.jsxs("h2",{className:wt.activitySidebarTitle,children:[jt("taskForm.commentsSectionTitle")," (",Mn,")"]})}),a.jsxs("div",{className:`${wt.commentPanel} ${wt.activitySidebarPanel} tf-surface-panel`.trim(),children:[a.jsxs("div",{className:wt.activityTimelineRegion,children:[a.jsx(re.Suspense,{fallback:a.jsx(hG,{count:rn}),children:a.jsx(mG,{activity:te?.activity,comments:k,formatFieldValue:Ut,resolveActorPresentation:Fn,currentActorId:P,taskReferences:Ze,emptyMessage:jt(t?"taskForm.noComments":"taskForm.noActivity"),listClassName:wt.commentThread,emptyClassName:wt.emptyComments,listRef:dt,endRef:Ne,onScroll:Rn,targetEntryId:Ir,targetEntryRef:fn})}),Zt?a.jsx("div",{className:wt.newActivityNotice,role:"status","aria-live":"polite",children:a.jsxs("button",{type:"button",className:wt.newActivityButton,onClick:Zn,"aria-label":jt("taskForm.newActivityAriaLabel"),children:[a.jsx(ow,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:jt("taskForm.newActivity")})]})}):null]}),a.jsxs("div",{className:wt.commentInputArea,children:[a.jsx("textarea",{className:`${wt.commentInput} tf-field-shell`,placeholder:t?jt("taskForm.commentPlaceholder"):"Comments become available after saving",value:v,onChange:ue=>q(ue.target.value),disabled:!t||Yt,onKeyDown:ue=>{ue.key==="Enter"&&!ue.shiftKey&&(ue.preventDefault(),On())},rows:3}),a.jsx("button",{type:"button",className:`${wt.sendCommentBtn} tf-control-icon`,onClick:On,disabled:!t||Yt||!v.trim(),"aria-label":"Send comment",title:"Send comment",children:a.jsx(E0,{size:16,"aria-hidden":"true"})})]})]})]});return a.jsxs("form",{ref:Nt,onSubmit:ne,onScroll:u,className:`${R.form} ${R.appScrollbar} tf-scrollbar`,children:[Yt&&a.jsx("div",{className:`${wt.formNotice} tf-text-helper`,children:xt?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),a.jsxs("div",{className:wt.formLayoutWithSidebar,children:[a.jsx("fieldset",{disabled:Yt,className:wt.formFieldsetReset,children:a.jsxs("div",{className:wt.formMainColumn,children:[a.jsxs("div",{className:R.field,children:[a.jsx("label",{className:R.label,children:"Title"}),a.jsx("input",{ref:Pe,type:"text",defaultValue:n,onChange:ue=>{const ot=ue.target.value;je(ot)},onBlur:ue=>{ue.currentTarget.value!==n&&Ye(ue.currentTarget.value)},placeholder:"What needs to be done?",className:R.input,required:!0,maxLength:255,autoFocus:!0})]}),a.jsxs("div",{className:`${R.field} ${wt.descriptionField}`,children:[a.jsxs("div",{className:R.labelRow,children:[a.jsx("label",{className:R.label,children:"Description"}),a.jsx("button",{type:"button",className:R.helpLink,onClick:()=>G(!L),title:"Markdown Help",tabIndex:-1,children:a.jsx(Md,{size:14})})]}),L&&a.jsxs("div",{className:wt.markdownHelp,children:[a.jsxs("div",{className:wt.helpHeader,children:[a.jsx("span",{children:"Markdown Guide"}),a.jsx("button",{onClick:()=>G(!1),className:wt.helpClose,children:a.jsx(mi,{size:12})})]}),a.jsxs("div",{className:wt.helpGrid,children:[a.jsx("div",{children:a.jsx("code",{children:"**bold**"})}),a.jsx("div",{children:a.jsx("code",{children:"_italic_"})}),a.jsx("div",{children:a.jsx("code",{children:"- list"})}),a.jsx("div",{children:a.jsx("code",{children:"1. list"})}),a.jsx("div",{className:wt.helpGridItem,children:a.jsx("code",{children:"`inline code`"})}),a.jsxs("div",{className:wt.helpGridItem,children:[a.jsx("code",{children:"```"}),a.jsx("br",{}),a.jsx("code",{children:"code block"}),a.jsx("br",{}),a.jsx("code",{children:"```"})]}),a.jsx("div",{children:a.jsx("code",{children:"[link](url)"})})]})]}),S||!s?a.jsx("textarea",{ref:he,className:`${R.textarea} ${wt.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",defaultValue:s,onChange:ue=>{const ot=ue.target.value;De.current=ot,Re(ot)},onFocus:()=>Z(!0),onBlur:ue=>{ue.currentTarget.value!==s&&ge(ue.currentTarget.value),Z(!1)},onPaste:ue=>{const ot=jr(ue.clipboardData);if(ot.length===0)return;ue.preventDefault();const _t=ue.currentTarget;er(ot,_t.selectionStart,_t.selectionEnd)},onDragOver:cn,onDrop:ue=>{const ot=qr(ue.dataTransfer);if(ot.length===0)return;ue.preventDefault(),ue.stopPropagation();const _t=ue.currentTarget;er(ot,_t.selectionStart,_t.selectionEnd)},rows:9,autoFocus:S}):a.jsx("div",{className:`${R.textarea} ${wt.descriptionSurface} ${wt.markdownPreview} ${wt.markdownPreviewContainer}`,onClick:()=>Z(!0),onDragOver:cn,onDrop:ue=>{const ot=qr(ue.dataTransfer);ot.length!==0&&(ue.preventDefault(),ue.stopPropagation(),Z(!0),er(ot,s.length,s.length))},children:a.jsx(py,{variant:"detail",taskReferences:Ze,imageReferences:Xe,children:s})}),mt&&a.jsx("div",{className:wt.descriptionImageStatus,role:"status",children:"Adding image to Context…"}),tt&&a.jsx("div",{className:wt.descriptionImageError,role:"alert",children:tt})]}),a.jsxs("div",{className:wt.compactMetaSection,children:[a.jsxs("div",{className:wt.compactMetaGrid,children:[a.jsxs("div",{className:`${R.field} ${wt.compactMetaField}`,children:[a.jsx("label",{id:"category-label",className:R.label,children:K?.category||"Category"}),a.jsx(fi,{value:i,options:at,onChange:ue=>ie(String(ue)),required:!0,ariaLabelledBy:"category-label",portalPanel:!0,panelMinWidth:nv,panelAlign:"start"})]}),a.jsxs("div",{className:`${R.field} ${wt.compactMetaField}`,children:[a.jsx("label",{id:"type-label",className:R.label,children:K?.type||"Type"}),a.jsx(fi,{value:l,options:U,onChange:ue=>me(String(ue)),ariaLabelledBy:"type-label",portalPanel:!0,panelMinWidth:nv,panelAlign:"start"})]}),a.jsxs("div",{className:`${R.field} ${wt.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-scheduled-date",className:R.label,children:jt("taskForm.scheduledLabel")}),a.jsx("input",{id:"task-form-scheduled-date",type:"date",value:g,onChange:ue=>N(ue.target.value),className:`${R.input} ${R.taskFormDateInput}`})]}),a.jsxs("div",{className:`${R.field} ${wt.compactMetaField}`,children:[a.jsx("label",{id:"assignee-label",className:R.label,children:"Assigned To"}),a.jsx(fi,{value:f||"unassigned",options:Xr,onChange:ue=>B(String(ue)),ariaLabelledBy:"assignee-label",portalPanel:!0,panelMinWidth:nv,panelAlign:"start",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:ue=>{const ot=hr.get(String(ue.value));return ot?a.jsx(pf,{option:ot}):ue.label}})]}),a.jsx("div",{className:wt.compactMetaField,children:a.jsx(tv,{label:K?.priority||"Priority",options:oe,value:c,onChange:$,type:"priority",showSelectedLabel:!1})}),a.jsxs("div",{className:`${R.field} ${wt.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-due-date",className:R.label,children:jt("taskForm.dueLabel")}),a.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:ue=>be(ue.target.value),className:`${R.input} ${R.taskFormDateInput}`}),dr&&a.jsx("span",{className:`${wt.taskFormDateWarning} ${wt.compactMetaFieldHint}`,children:jt("taskForm.dueBeforeScheduled")}),tr&&a.jsx("span",{className:`${wt.taskFormDateError} ${wt.compactMetaFieldHint}`,children:jt("taskForm.overdue")})]}),m&&a.jsx("div",{className:wt.compactMetaField,children:a.jsx(tv,{label:"Complexity",options:[{value:1,label:"Tiny",color:"#10b981",icon:"Gauge"},{value:2,label:"Low",color:"#14b8a6",icon:"Gauge"},{value:3,label:"Medium",color:"#3b82f6",icon:"Gauge"},{value:4,label:"High",color:"#8b5cf6",icon:"Gauge"},{value:5,label:"Epic",color:"#d946ef",icon:"Gauge"}],value:d,onChange:V,type:"general"})})]}),t&&a.jsx(oG,{taskId:t,workspaceId:b,taskStatus:te?.status,taskUpdatedAt:te?.updatedAt,comments:k,assigneeOptions:Xr,currentActorId:P,apiBaseUrl:E,runtimeMode:D,disabled:!!(te?.isArchived||te?.isDeleted),onActivatePendingWorkflow:te&&Ie?()=>Ie(te,"in-progress",{allowSameStatus:!0}):void 0,onActiveOwnerChange:B})]}),a.jsxs("div",{className:wt.sectionBlock,children:[bt.length>0&&a.jsx("div",{className:wt.taxonomyFieldsGrid,children:bt.map(ue=>{const ot=T[ue.id],_t=Array.isArray(ot)?ot.map(nr=>String(nr)):ot!=null&&ot!==""?[String(ot)]:[],Pt=ue.options.filter(nr=>nr.status!=="retired"||_t.includes(String(nr.value)));return a.jsxs("div",{className:R.field,children:[a.jsx("label",{className:R.label,children:ue.label}),ue.description&&a.jsx("div",{className:`${wt.settingsHint} tf-text-helper`,children:ue.description}),ue.widgetType==="level"?a.jsx(tv,{label:ue.label,options:Pt.map(nr=>({...nr,label:nr.status==="retired"?`${nr.label} (Retired)`:nr.label})),value:T[ue.id]||"",onChange:nr=>z(ue.id,nr),type:"general",hideLabel:!0}):ue.multiSelect?a.jsx("div",{className:`${R.dropdownList} ${wt.softSectionSurface}`,children:Pt.map(nr=>{const fr=String(nr.value),ln=_t.includes(fr);return a.jsxs("button",{type:"button",className:`${wt.specialistChip} ${ln?wt.specialistChipActive:""}`,onClick:()=>{const Tt=ln?_t.filter(Rr=>Rr!==fr):[..._t,fr];z(ue.id,Tt)},title:ln?"Click to remove":"Click to add",children:[ln&&a.jsx(Fi,{size:12}),nr.status==="retired"?`${nr.label} (Retired)`:nr.label]},fr)})}):a.jsxs("div",{className:R.fieldIconWrapper,style:{"--field-color":"var(--text-primary)","--field-border":"rgba(255, 255, 255, 0.1)","--field-bg":"rgba(255, 255, 255, 0.02)"},children:[(()=>{const nr=ue.options.find(Tt=>String(Tt.value)===String(T[ue.id])),fr=nr?.icon&&Xs[nr.icon]?Xs[nr.icon]:Md,ln=nr?.color||"var(--text-secondary)";return a.jsx("div",{className:R.fieldIcon,style:{color:aa(ln)},children:a.jsx(fr,{size:16})})})(),a.jsxs("select",{value:T[ue.id]||"",onChange:nr=>z(ue.id,nr.target.value),className:`${R.select} ${R.field_dynamic}`,required:ue.isRequired,children:[a.jsxs("option",{value:"",children:["Select ",ue.label,"..."]}),Pt.map(nr=>a.jsx("option",{value:nr.value,children:nr.status==="retired"?`${nr.label} (Retired)`:nr.label},nr.value))]})]})]},ue.id)})}),_&&a.jsxs("div",{className:`${R.specialistSection} ${bt.length===0?wt.specialistSectionWithoutTaxonomies:""}`.trim(),children:[a.jsx(Km,{label:`Checklist${y.length>0?` (${pr}/${y.length})`:""}`,expanded:or,expandedTitle:"Hide checklist",collapsedTitle:"Show checklist",onToggle:()=>{const ue=!or;$r(ue),ue||Fr(!1)},actions:a.jsx("div",{className:R.contextMenuControl,children:a.jsx("button",{ref:pt,type:"button",className:"tf-control-icon","aria-label":"Add checklist item",title:"Add checklist item","aria-expanded":Dr,onClick:gt,children:a.jsx(ui,{size:14,"aria-hidden":"true"})})})}),or&&(Dr||y.length>0)&&a.jsxs("div",{className:`${R.dropdownList} ${wt.stackedList} ${wt.stackedListSpaced}`,children:[Dr&&a.jsxs("div",{className:`${R.pathInputGroup} ${wt.checklistInputGroup}`,children:[a.jsx("input",{ref:nt,type:"text",className:R.input,placeholder:"Add checklist item",value:Bt,onChange:ue=>wr(ue.target.value),onKeyDown:ue=>{ue.key==="Enter"&&(ue.preventDefault(),ue.stopPropagation(),St()),ue.key==="Escape"&&(ue.preventDefault(),ue.stopPropagation(),Fr())}}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:St,disabled:!Bt.trim(),"aria-label":"Confirm checklist item",title:"Add checklist item",children:a.jsx(Fi,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>Fr(),"aria-label":"Cancel checklist item",title:"Cancel",children:a.jsx(mi,{size:14,"aria-hidden":"true"})})]}),y.length>0&&a.jsx(fw,{sensors:ur,collisionDetection:dC,onDragEnd:Hr,children:a.jsx(mw,{items:y.map(ue=>ue.id),strategy:pw,children:y.map((ue,ot)=>a.jsx(gG,{id:ue.id||`checklist-${ot}`,item:ue,onToggle:()=>{const _t=new Date().toISOString();Ae(y.map((Pt,nr)=>nr===ot?{...Pt,isCompleted:!Pt.isCompleted,updatedAt:_t}:Pt))},onRemove:()=>Ae(y.filter((_t,Pt)=>Pt!==ot).map((_t,Pt)=>({..._t,order:Pt})))},ue.id||`checklist-${ot}`))})})]})]})]}),a.jsxs("div",{children:[a.jsx(re.Suspense,{fallback:null,children:a.jsx(pG,{taskId:t,taskReferenceLabel:Ce,workspaceId:b,apiBaseUrl:E,showImageReviews:j&&!!te,contextFiles:A,onAddContextFile:Ue,onRemoveContextFile:st,onUpdateContextCaption:ft,cardCoverAssetId:te?.cardCoverAssetId,onSetCardCover:xe,cardCoverDisabled:ke})}),a.jsx("div",{className:`${wt.taskFormLifecycle} ${wt.taskFormMetaDivider}`,children:a.jsx("div",{className:wt.taskFormMetaGrid,children:te&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:wt.taskFormDateRow,children:[a.jsx("span",{className:wt.taskFormDateLabel,children:jt("taskForm.createdLabel")}),a.jsxs("span",{className:wt.taskFormMetaStack,children:[a.jsx("span",{className:wt.taskFormDateValue,children:Ke||jt("taskForm.emptyValue")}),a.jsx("span",{className:wt.taskFormMetaActor,children:yn?`by ${yn}`:jt("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:wt.taskFormDateRow,children:[a.jsx("span",{className:wt.taskFormDateLabel,children:jt("taskForm.updatedLabel")}),a.jsxs("span",{className:wt.taskFormMetaStack,children:[a.jsx("span",{className:wt.taskFormDateValue,children:Et||jt("taskForm.emptyValue")}),a.jsx("span",{className:wt.taskFormMetaActor,children:Vr?`by ${Vr}`:jt("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:wt.taskFormDateRow,children:[a.jsx("span",{className:wt.taskFormDateLabel,children:jt("taskForm.completedLabel")}),a.jsxs("span",{className:wt.taskFormMetaStack,children:[a.jsx("span",{className:wt.taskFormDateValue,children:kt||jt("taskForm.emptyValue")}),a.jsx("span",{className:wt.taskFormMetaActor,children:Ca?`by ${Ca}`:jt("taskForm.emptyValue")})]})]})]})})})]})]})}),Wt]})]})}function Sg({ariaExpanded:e,ariaLabel:t,children:r,disabled:n=!1,onClick:s,title:i}){return a.jsx("button",{type:"button",className:`${R.referenceBadge} ${R.taskHierarchyActionBtn}`,onClick:s,disabled:n,title:i,"aria-label":t,"aria-expanded":e,children:r})}function j_({editingTaskId:e,loading:t,submitDisabled:r=!1,autoSaveState:n="idle",title:s,status:i="task",onStatusChange:l,showCreateSubmit:c=!0,handleSubmit:d,handleCopyId:m,copiedId:f,tasks:g,currentTask:h,currentTaskWorkstream:y,currentTaskInitiative:k,workstreams:v=[],onWorkstreamInputChange:A,onSetWorkstreamForCurrentTask:b,handleToggleInProgress:w,handleToggleReview:P,handleToggleComplete:E,handleToggleCancel:D,handleSetStatus:j,handleArchiveTask:S,handleUnarchiveTask:L,handleRestoreDeletedTask:_,handlePermanentlyDeleteDeletedTask:T,onAskAgent:z}){const Y=h??(e&&g.find(ie=>ie.id===e)||null),H=!!Y?.isArchived,M=!!Y?.isDeleted,oe=re.useMemo(()=>{if(!M||!Y?.deletedExpiresAt)return"";const ie=new Date(Y.deletedExpiresAt);return Number.isNaN(ie.getTime())?"":`Trash expires ${ie.toLocaleString()}`},[Y?.deletedExpiresAt,M]),K=vw(Y),Q=K.label||(K.isProvisional?"Pending":""),ee=K.isProvisional,fe=!!K.label,_e=y?lf(y)||y.id:"",$e=k?ws(k)||k.id:"",Ye=re.useCallback(ie=>{A?.(lf(ie)||ie.id),e&&b?.(ie.id)},[e,b,A]),ye=re.useCallback(()=>{A?.(""),e&&b?.(null)},[e,b,A]),ge=y?a.jsx(Sg,{onClick:ye,disabled:t||H||M,title:"Unlink task from workstream",ariaLabel:"Unlink task from workstream",children:a.jsx(Um,{size:13})}):null,se=a.jsx("div",{className:R.taskHierarchyHeader,children:a.jsxs("div",{className:R.taskHierarchyBadgeRow,children:[k?a.jsx("span",{className:R.taskHierarchySegment,children:a.jsx(nf,{copied:f===$e,onClick:ie=>m(ie,$e),disabled:t,title:k.title,ariaLabel:`Copy initiative reference ${$e}: ${k.title}`,label:$e})}):null,y?a.jsxs("span",{className:R.taskHierarchySegment,children:[k?a.jsx("span",{className:R.taskHierarchyDivider,children:"/"}):null,a.jsx(nf,{copied:f===_e,onClick:ie=>m(ie,_e),disabled:t,title:y.title,ariaLabel:`Copy workstream reference ${_e}: ${y.title}`,label:_e})]}):a.jsx(C_,{workstreams:v,onSelect:Ye,disabled:t||H||M}),!Q&&ge?a.jsxs("span",{className:R.taskHierarchySegment,children:[a.jsx("span",{className:R.taskHierarchyDivider,children:"/"}),ge]}):null,Q?a.jsxs("span",{className:R.taskHierarchySegment,children:[y?a.jsx("span",{className:R.taskHierarchyDivider,children:"/"}):null,ge,a.jsx(nf,{copied:fe&&f===K.label,onClick:ie=>m(ie,K.label),disabled:t||!fe,title:ee?"Temporary identifier — replaced after synchronization.":jt("actionHeader.copyTaskIdTitle"),ariaLabel:ee?`Copy temporary task reference ${Q}`:void 0,label:Q,provisional:ee})]}):null,oe?a.jsx("span",{className:R.taskHierarchyMeta,title:"Trash items are permanently deleted 90 days after deletion.",children:oe}):null]})});return a.jsxs("div",{className:R.stickyActionHeader,children:[se,e?a.jsxs(a.Fragment,{children:[a.jsx("div",{className:R.taskSaveStatusCenter,children:a.jsx("div",{className:`${R.taskSaveStatus} ${n==="error"?R.taskSaveStatusError:""}`,"aria-live":"polite",children:n==="saving"?a.jsxs(a.Fragment,{children:[a.jsx(na,{size:14,className:R.spinner}),a.jsx("span",{children:"Saving…"})]}):n==="saved"?a.jsx("span",{children:"Saved"}):n==="error"?a.jsx("span",{children:"Save failed"}):null})}),a.jsxs("div",{className:R.editActionsGroup,children:[z&&Y?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>z(Y),disabled:t,title:"Ask a Taskforce Agent about this task","aria-label":"Ask a Taskforce Agent about this task",children:a.jsx(Cd,{size:16})}):null,M&&Y?.deletedRecordId?a.jsxs(a.Fragment,{children:[_&&a.jsx("button",{type:"button",className:R.actionBtn,onClick:()=>_(Y.deletedRecordId||""),disabled:t,title:"Restore deleted task","aria-label":"Restore deleted task",children:a.jsx($i,{size:16})}),T&&a.jsx("button",{type:"button",className:`${R.actionBtn} ${R.deleteBtn}`,onClick:()=>T(Y.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task","aria-label":"Permanently delete deleted task",children:a.jsx(fp,{size:16})})]}):a.jsx(Kg,{task:Y,disabled:t,statusDisabled:t||H,archiveActionMode:H?"unarchive":"auto",onSetStatus:(ie,me)=>{if(j){j(ie,me);return}if(me==="in-progress"){w(ie);return}if(me==="review"){P(ie);return}if(me==="done"){E(ie);return}me==="cancelled"&&D(ie)},onArchiveTask:S,onUnarchiveTask:ie=>L?.(ie.id)})]})]}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:R.taskSaveStatusCenter}),a.jsxs("div",{className:R.editActionsGroup,children:[a.jsx(Kg,{status:i,disabled:t,archiveActionMode:"none",onStatusChange:l}),c?a.jsxs("button",{type:"button",onClick:ie=>d(ie),disabled:t||r||!s.trim(),className:R.primaryUpdateBtn,title:jt("actionHeader.addTaskTitle"),children:[t?a.jsx(na,{size:16,className:R.spinner}):a.jsx(ui,{size:16}),jt("actionHeader.addTask")]}):null]})]})]})}function yG(e={x:0,y:0}){const[t,r]=o.useState(e),[n,s]=o.useState(!1),[i,l]=o.useState({x:0,y:0}),[c,d]=o.useState(0),m=o.useRef(null),f=o.useCallback(y=>{const k=y.target;if(!(k.closest("button")||k.closest("input")||k.closest("select")||k.closest("textarea")||k.closest('[role="button"]')||k.closest(".no-drag"))){if(m.current){const v=m.current.getBoundingClientRect();d(v.top-t.y)}s(!0),l({x:y.clientX-t.x,y:y.clientY-t.y})}},[t]),g=o.useCallback(y=>{if(n){let k=y.clientX-i.x,v=y.clientY-i.y;v<-c&&(v=-c),r({x:k,y:v})}},[n,i,c]),h=o.useCallback(()=>{s(!1)},[]);return o.useEffect(()=>(n?(window.addEventListener("mousemove",g),window.addEventListener("mouseup",h)):(window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)),()=>{window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)}),[n,g,h]),{position:t,isDragging:n,handleMouseDown:f,modalRef:m,setPosition:r}}const qm=[];let Rm=0,av="";function kG(e){return qm.push(e),()=>{const t=qm.lastIndexOf(e);t>=0&&qm.splice(t,1)}}function vG(){return Rm===0&&(av=document.body.style.overflow,document.body.style.overflow="hidden"),Rm+=1,()=>{Rm=Math.max(0,Rm-1),Rm===0&&(document.body.style.overflow=av,av="")}}function Ko({isOpen:e,onClose:t,title:r,children:n,footer:s,size:i="md",theme:l=xg,className:c,overlayStyle:d,headerActions:m,draggable:f=!1,isSettings:g=!1,closeOnOverlayClick:h=!0,closeDisabled:y=!1}){const k=o.useRef(null),v=o.useRef(null),A=o.useRef(t),b=o.useRef(y),w=o.useRef(Symbol("taskforce-modal")),P=o.useId(),{position:E,isDragging:D,handleMouseDown:j,modalRef:S}=yG();if(A.current=t,b.current=y,o.useEffect(()=>{if(e)return kG(w.current)},[e]),o.useEffect(()=>{const _=T=>{if(qm[qm.length-1]!==w.current)return;if(T.key==="Escape"&&e&&!b.current){A.current();return}if(T.key!=="Tab"||!e||!S.current)return;const z=Array.from(S.current.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(z.length===0){T.preventDefault(),S.current.focus();return}const Y=z[0],H=z[z.length-1];T.shiftKey&&document.activeElement===Y?(T.preventDefault(),H.focus()):!T.shiftKey&&document.activeElement===H&&(T.preventDefault(),Y.focus())};return e&&(v.current=document.activeElement instanceof HTMLElement?document.activeElement:null,window.requestAnimationFrame(()=>{(S.current?.querySelector("[data-modal-initial-focus]")??S.current?.querySelector("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled])")??S.current)?.focus()})),window.addEventListener("keydown",_),()=>{window.removeEventListener("keydown",_),v.current?.focus()}},[e,S]),o.useEffect(()=>{if(e)return vG()},[e]),!e)return null;const L={sm:yr.modalSizeSm,md:yr.modalSizeMd,mdWide:yr.modalSizeMdWide,lg:yr.modalSizeLg,xl:yr.modalSizeXl,full:yr.modalSizeFull};return uc.createPortal(a.jsx("div",{className:`${yr.overlay} ${c||""} ${yr.overlayHighZ}`,style:d,ref:k,onClick:_=>{h&&!y&&_.target===k.current&&t()},children:a.jsxs("div",{ref:S,className:`tf-surface-modal tf-modal-shell ${yr.modal} tf-scrollbar-scope ${L[i]} ${f?yr.draggableModal:""} ${g?yr.settingsViewModal:""}`,role:"dialog","aria-modal":"true","aria-labelledby":P,tabIndex:-1,"data-theme":l,style:{transform:f?`translate(${E.x}px, ${E.y}px)`:void 0,transition:D?"none":"transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease-out"},children:[a.jsxs("div",{className:`tf-modal-header ${f?yr.draggableHeader:""}`,onMouseDown:f?j:void 0,style:{cursor:f?D?"grabbing":"grab":"default"},children:[a.jsx("div",{className:"tf-modal-title",id:P,children:r}),a.jsxs("div",{className:yr.headerActions,children:[m,a.jsx("button",{className:"tf-control-icon",onClick:t,disabled:y,title:"Close","aria-label":"Close",children:a.jsx(mi,{size:20})})]})]}),a.jsx("div",{className:yr.modalContent,children:n}),s&&a.jsx("div",{className:`${yr.formActions} ${yr.modalFooter}`,children:s})]})}),document.body)}const wG="_toolbar_1nqyq_1",bG="_masterSelection_1nqyq_13",SG="_selectedCount_1nqyq_32",AG="_actionButton_1nqyq_36",CG="_emptyButton_1nqyq_47",IG="_dialogBody_1nqyq_52",_G="_destinationSummary_1nqyq_62",TG="_hint_1nqyq_66",xG="_progress_1nqyq_70",RG="_failures_1nqyq_77",PG="_spinner_1nqyq_102",zo={toolbar:wG,masterSelection:bG,selectedCount:SG,actionButton:AG,emptyButton:CG,dialogBody:IG,destinationSummary:_G,hint:TG,progress:xG,failures:RG,spinner:PG};function E_({theme:e,selectedRecords:t,matchingCount:r,allMatchingSelected:n,someMatchingSelected:s,fullTrashCount:i,onSelectAllMatching:l,onClearSelection:c,onRestore:d,onEmptyEntireTrash:m}){const f=o.useRef(null),[g,h]=o.useState(!1),[y,k]=o.useState("previous"),[v,A]=o.useState(!1),[b,w]=o.useState(null),P=o.useMemo(()=>t.filter(T=>T.taskSnapshot.isArchived===!0).length,[t]),E=t.length-P;o.useEffect(()=>{f.current&&(f.current.indeterminate=s)},[s]);const D=async()=>{if(t.length===0||v)return;A(!0),w({requested:t.length,completed:0,succeeded:[],failed:[]});const T=await d(t,y,w);w(T),A(!1),T.failed.length===0&&(h(!1),w(null))},j=T=>{k(T),w(null),h(!0)},S=y==="archive",L=S?t.length:P,_=S?0:E;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:zo.toolbar,"aria-label":"Trash restore selection",children:[a.jsxs("label",{className:zo.masterSelection,children:[a.jsx("input",{ref:f,type:"checkbox",checked:n,disabled:r===0||v,onChange:T=>{T.target.checked?l():c()},"aria-label":"Select all matching deleted tasks"}),a.jsxs("span",{className:zo.selectedCount,children:[t.length," selected"]})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:c,disabled:t.length===0||v,"aria-label":"Clear selected tasks",title:"Clear selection",children:a.jsx(mi,{size:15,"aria-hidden":"true"})}),a.jsxs("button",{type:"button",className:`tf-control-icon ${zo.actionButton}`,onClick:()=>j("previous"),disabled:t.length===0||v,children:[a.jsx($i,{size:15,"aria-hidden":"true"}),"Restore"]}),a.jsxs("button",{type:"button",className:`tf-control-icon ${zo.actionButton}`,onClick:()=>j("archive"),disabled:t.length===0||v,title:"Restore selected tasks directly to Archive",children:[a.jsx(Pd,{size:15,"aria-hidden":"true"}),"Restore to archive"]}),m&&a.jsxs("button",{type:"button",className:`tf-control-icon ${zo.actionButton} ${zo.emptyButton}`,onClick:m,disabled:i===0||v,title:i>0?`Permanently delete all ${i} tasks in Trash; filters and selection do not limit this action.`:"Trash is already empty",children:[a.jsx(fp,{size:14,"aria-hidden":"true"}),"Empty Trash"]})]}),a.jsx(Ko,{isOpen:g,onClose:()=>{v||(h(!1),w(null))},closeDisabled:v,closeOnOverlayClick:!v,size:"sm",theme:e,title:S?"Restore selected tasks to Archive?":"Restore selected tasks?",footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{h(!1),w(null)},disabled:v,children:"Cancel"}),a.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact","data-modal-initial-focus":!0,onClick:()=>{D()},disabled:v||t.length===0,children:[v?a.jsx(na,{size:15,className:zo.spinner}):S?a.jsx(Pd,{size:15}):a.jsx($i,{size:15}),b?.failed.length?"Retry failed":S?"Restore to archive":"Restore"]})]}),children:a.jsxs("div",{className:zo.dialogBody,children:[a.jsxs("p",{children:["Restore ",t.length," task",t.length===1?"":"s","?"]}),a.jsxs("p",{className:zo.destinationSummary,children:[L," to Archived · ",_," to Active"]}),a.jsx("p",{className:zo.hint,children:S?"Active tasks will be marked Done and restored directly to Archive. Cancelled tasks remain Cancelled.":"Each task returns to the lifecycle state it had before deletion."}),b&&a.jsxs("div",{className:zo.progress,"aria-live":"polite",children:[a.jsxs("strong",{children:[b.completed," / ",b.requested," completed"]}),b.failed.length>0&&a.jsxs("div",{className:zo.failures,children:[a.jsxs("p",{children:[b.failed.length," failed and remain selected:"]}),a.jsx("ul",{children:b.failed.slice(0,8).map(T=>a.jsxs("li",{children:[a.jsx("span",{children:T.title||T.taskId}),a.jsx("span",{children:T.message})]},T.deletedRecordId))}),b.failed.length>8&&a.jsxs("p",{children:["And ",b.failed.length-8," more."]})]})]})]})})]})}const jG="_topNoticeLayer_1yiif_1",EG="_taskNoticeLayer_1yiif_13",NG="_topNotice_1yiif_1",DG="_topNoticeMessage_1yiif_37",MG="_topNoticeSuccess_1yiif_43",LG="_topNoticeError_1yiif_44",OG="_topNoticeInfo_1yiif_45",BG="_topNoticeDismiss_1yiif_63",Yc={topNoticeLayer:jG,taskNoticeLayer:EG,topNotice:NG,topNoticeMessage:DG,topNoticeSuccess:MG,topNoticeError:LG,topNoticeInfo:OG,topNoticeDismiss:BG};function Zg({notice:e,onDismiss:t,placement:r="top"}){if(!e)return null;const n=e.tone==="error"?Yc.topNoticeError:e.tone==="success"?Yc.topNoticeSuccess:Yc.topNoticeInfo,s=e.tone==="error"?"alert":"status",i=r==="task"?`${Yc.topNoticeLayer} ${Yc.taskNoticeLayer}`:Yc.topNoticeLayer;return a.jsx("div",{className:i,children:a.jsxs("div",{className:`${Yc.topNotice} ${n}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?a.jsx(Od,{size:14}):e.tone==="success"?a.jsx(Fi,{size:14}):a.jsx(N0,{size:14}),a.jsx("span",{className:Yc.topNoticeMessage,children:e.message}),e.actionLabel&&e.onAction&&a.jsx("button",{type:"button",className:`${e.actionPrimary?"tf-button-primary":"tf-button-ghost"} tf-button-compact`,onClick:e.onAction,children:e.actionLabel}),e.secondaryActionLabel&&e.onSecondaryAction&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:e.onSecondaryAction,children:e.secondaryActionLabel}),t&&e.dismissible!==!1&&a.jsx("button",{type:"button",className:Yc.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:a.jsx(mi,{size:14})})]})})}const WG="D-";function $G(e){return mp(WG,e)}const FG="_overlay_ey7rx_1",UG="_dialog_ey7rx_13",zG="_header_ey7rx_32",HG="_footer_ey7rx_33",VG="_titleGroup_ey7rx_53",GG="_secondaryActions_ey7rx_54",KG="_typeIcon_ey7rx_61",qG="_titleText_ey7rx_66",YG="_title_ey7rx_53",ZG="_referenceBadge_ey7rx_79",JG="_content_ey7rx_83",XG="_image_ey7rx_93",QG="_pdf_ey7rx_100",eK="_textPreview_ey7rx_107",tK="_codePreview_ey7rx_108",rK="_message_ey7rx_125",nK="_unavailable_ey7rx_126",aK="_secondaryLink_ey7rx_145",Ma={overlay:FG,dialog:UG,header:zG,footer:HG,titleGroup:VG,secondaryActions:GG,typeIcon:KG,titleText:qG,title:YG,referenceBadge:ZG,content:JG,image:XG,pdf:QG,textPreview:eK,codePreview:tK,message:rK,unavailable:nK,secondaryLink:aK},sK=/\.(?:md|markdown|txt|csv|json|js|ts|tsx|css|py|java|go|rs|sh)(?:[?#]|$)/i,oK=/\.(?:png|jpe?g|webp|gif)(?:[?#]|$)/i,iK=/\.pdf(?:[?#]|$)/i;function cK(e){return typeof e=="string"?e:e.path}function lK(e){return typeof e=="string"?e.split("/").pop()||"Context attachment":e.caption||e.displayName||e.originalFilename||e.fsPath?.split("/").pop()||e.path.split("/").pop()||"Context attachment"}function dK(e){return typeof e=="string"?[e]:[e.path,e.fsPath,e.originalFilename,e.displayName,e.caption].filter(t=>!!t)}function uK(e,t){const r=e.includes("?")?"&":"?";return`${e}${r}download=1&filename=${encodeURIComponent(t)}`}function fK(e){return e.ownerType!=="task"?e.attachment:typeof e.attachment=="string"?{path:e.attachment,taskId:e.ownerId||null}:{...e.attachment,taskId:e.ownerId||e.attachment.taskId||null}}function N_({theme:e}){const[t,r]=o.useState(null),[n,s]=o.useState(""),[i,l]=o.useState(!1),[c,d]=o.useState(null),[m,f]=o.useState(!1),g=o.useRef(null),h=o.useRef(null),y=o.useRef(null),k=o.useRef(0),v=o.useId();o.useEffect(()=>{const oe=K=>{const Q=K;Q.detail?.attachment&&(Q.preventDefault(),k.current+=1,y.current!==null&&(window.clearTimeout(y.current),y.current=null),f(!1),r(Q.detail))};return window.addEventListener(Kv,oe),()=>window.removeEventListener(Kv,oe)},[]),o.useEffect(()=>()=>{k.current+=1,y.current!==null&&window.clearTimeout(y.current)},[]),o.useEffect(()=>{if(!t)return;h.current=document.activeElement instanceof HTMLElement?document.activeElement:null;const oe=K=>{if(K.key==="Escape"){K.preventDefault(),K.stopPropagation(),r(null);return}if(K.key!=="Tab"||!g.current)return;const Q=Array.from(g.current.querySelectorAll('button:not([disabled]), [href], iframe, [tabindex]:not([tabindex="-1"])'));if(Q.length===0){K.preventDefault(),g.current.focus();return}const ee=Q[0],fe=Q[Q.length-1];K.shiftKey&&document.activeElement===ee?(K.preventDefault(),fe.focus()):!K.shiftKey&&document.activeElement===fe&&(K.preventDefault(),ee.focus())};return window.addEventListener("keydown",oe,!0),window.requestAnimationFrame(()=>g.current?.focus()),()=>{window.removeEventListener("keydown",oe,!0),h.current?.focus()}},[t]);const A=t?cK(t.attachment):"",b=t?dK(t.attachment):[],w=/^https?:\/\//i.test(A),P=b.some(oe=>oK.test(oe)),E=b.some(oe=>iK.test(oe)),D=b.some(oe=>sK.test(oe))&&!w,j=b.some(oe=>/\.(?:md|markdown)(?:[?#]|$)/i.test(oe));if(o.useEffect(()=>{if(s(""),d(null),!t||!D){l(!1);return}const oe=new AbortController;return l(!0),fetch(A,{signal:oe.signal,headers:t.workspaceId?{"x-taskforce-workspace-id":t.workspaceId}:void 0}).then(async K=>{if(!K.ok)throw new Error("Preview unavailable");s(await K.text())}).catch(K=>{K instanceof DOMException&&K.name==="AbortError"||d(K instanceof Error?K.message:"Preview unavailable")}).finally(()=>{oe.signal.aborted||l(!1)}),()=>oe.abort()},[D,A,t]),!t)return null;const S=lK(t.attachment),L=typeof t.attachment=="string"?null:t.attachment,_=P?cp(L):$G(L),T=fK(t),z=P&&y_(T,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}),Y=!P&&m_(T,typeof T=="string"?void 0:T.fsPath),H=async()=>{if(!_)return;const oe=k.current;try{await navigator.clipboard.writeText(_)}catch{if(k.current!==oe)return;const K=document.createElement("textarea");K.value=_,document.body.appendChild(K),K.select(),document.execCommand("copy"),K.remove()}k.current===oe&&(f(!0),y.current!==null&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>{k.current===oe&&(f(!1),y.current=null)},1200))},M=()=>{if(z?qv(T,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}):p_(T,typeof T=="string"?void 0:T.fsPath)){r(null);return}window.open(A,"_blank","noopener,noreferrer")};return uc.createPortal(a.jsx("div",{className:Ma.overlay,"data-theme":e,onMouseDown:oe=>{oe.target===oe.currentTarget&&r(null)},children:a.jsxs("div",{ref:g,className:Ma.dialog,role:"dialog","aria-modal":"true","aria-labelledby":v,tabIndex:-1,children:[a.jsxs("header",{className:Ma.header,children:[a.jsxs("div",{className:Ma.titleGroup,children:[a.jsx("span",{className:Ma.typeIcon,"aria-hidden":"true",children:P?a.jsx(rC,{size:16}):a.jsx(Xm,{size:16})}),a.jsxs("div",{className:Ma.titleText,children:[a.jsx("div",{className:Ma.title,id:v,children:S}),_&&a.jsx(Jw,{label:_,copied:m,onClick:()=>{H()},title:S,ariaLabel:m?`Copied ${_}`:`Copy ${_}`,className:Ma.referenceBadge})]})]}),a.jsx("button",{type:"button",className:"tf-control-icon","aria-label":"Close preview",title:"Close preview",onClick:()=>r(null),children:a.jsx(mi,{size:18})})]}),a.jsxs("div",{className:Ma.content,children:[P&&a.jsx("img",{className:Ma.image,src:A,alt:S}),E&&a.jsx("iframe",{className:Ma.pdf,src:A,title:`Preview ${S}`}),D&&i&&a.jsx("div",{className:Ma.message,children:"Loading preview…"}),D&&c&&a.jsx("div",{className:Ma.message,children:c}),D&&!i&&!c&&(j?a.jsx("div",{className:Ma.textPreview,children:a.jsx(py,{variant:"detail",children:n})}):a.jsx("pre",{className:Ma.codePreview,children:n})),!P&&!E&&!D&&a.jsxs("div",{className:Ma.unavailable,children:[a.jsx(Xm,{size:34,"aria-hidden":"true"}),a.jsx("strong",{children:"Preview unavailable"}),a.jsx("span",{children:"This file type can be opened or downloaded instead."})]})]}),a.jsxs("footer",{className:Ma.footer,children:[a.jsxs("div",{className:Ma.secondaryActions,children:[!w&&a.jsxs("a",{className:Ma.secondaryLink,href:uK(A,S),target:"_blank",rel:"noreferrer",children:[a.jsx(D0,{size:14})," Download"]}),(w||!z&&!Y)&&a.jsxs("a",{className:Ma.secondaryLink,href:A,target:"_blank",rel:"noreferrer",children:[a.jsx(Nb,{size:14})," Open original"]})]}),(z||Y)&&a.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:M,children:[z?a.jsx(M0,{size:14}):a.jsx(Nb,{size:14}),z?"Open in Image Notes":"Open"]})]})]})}),document.body)}const mK=re.lazy(()=>qo(()=>import("./TaskSettings-Cp-L-4xh.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function pK(e){const{activeTab:t,setActiveTab:r,isOpen:n,setIsOpen:s,currentTheme:i,setCurrentTheme:l,saveSettings:c,pathSaved:d,keyShortcut:m,setKeyShortcut:f,jsonBackupEnabled:g,setJsonBackupEnabled:h,mcpHostRoot:y,setMcpHostRoot:k,settingsSection:v,setSettingsSection:A,projectRoot:b,projectName:w,mcpScriptPath:P,serverHostRoot:E,showFolderBrowser:D,setShowFolderBrowser:j,folders:S,files:L,currentBrowsePath:_,fetchFolders:T,browserTarget:z,setBrowserTarget:Y,handleSelectPath:H,handleAddPath:M,handleRemovePath:oe,tasks:K,loadingTasks:Q,archivedTasks:ee,deletedTasks:fe,activeCategories:_e,activeTypes:$e,priorities:Ye,taxonomyDisplayLabels:ye,taxonomies:ge,searchQuery:se,setSearchQuery:ie,filterCategories:me,setFilterCategories:$,filterTypes:V,setFilterTypes:B,filterPriorities:N,setFilterPriorities:be,filterStatus:Ae,setFilterStatus:q,filterAssignees:Z,setFilterAssignees:G,assigneeOptions:ne,filterTaxonomies:Te,setFilterTaxonomies:Le,sortBy:Ue,setSortBy:st,sortOrder:ft,toggleSortOrder:xe,showArchive:ke,setShowArchive:ve,taskScope:He,setTaskScope:Ee,clearFilters:de,filteredTasks:x,filteredArchive:le,groupedTasks:Ie,collapsedCategories:Je,setCollapsedCategories:J,handleEdit:Ze,handleDelete:te,handleCopyId:Ne,handleUpdateTask:je,handleToggleComplete:Re,handleToggleCancel:Ce,handleToggleInProgress:Pe,handleToggleReview:he,handleSetStatus:De,handleArchiveTask:et,handleBulkArchive:Fe,handleUnarchive:yt,handleRestoreDeletedTask:Oe,handleRestoreSelectedDeletedTasks:mt,handlePermanentlyDeleteDeletedTask:vt,handleEmptyDeletedTasks:Ve,fetchArchive:tt,editingTaskId:It,loading:Xe,error:bt,clearTaskError:at,title:U,setTitle:pe,setTitleDraft:Ke,description:Et,setDescription:kt,setDescriptionDraft:Ot,checklistItems:dr,setChecklistItems:tr,category:pr,setCategory:Bt,type:wr,setType:or,priority:$r,setPriority:Dr,complexity:Me,setComplexity:nt,status:pt,setStatus:lt,manualComplexityEnabled:xt,checklistDropdownEnabled:Yt,showTaskCardStatusLabel:Nt,showTaskCardDescription:Qt,showTaskCardAttachments:Ct,showTaskCardChecklistProgress:Ht,showTaskCardLatestActivity:Ft,tintTaskCardActivityBackground:ir,assignee:cr,setAssignee:it,scheduledDate:Zt,setScheduledDate:Lr,dueDate:lr,setDueDate:$n,workstreamInput:br,setWorkstreamInput:ur,formTaxonomies:u,setFormTaxonomies:St,comments:gt,newCommentText:Fr,setNewCommentText:xr,attachments:er,setAttachments:jr,setAttachmentsDirty:qr,descriptionImageUploadPending:An,descriptionImageDraftId:cn,registerDescriptionImageUpload:Hr,descriptionFocused:Ge,setDescriptionFocused:Xr,showMarkdownHelp:hr,setShowMarkdownHelp:Jt,handleSubmit:Xt,resetForm:bn,discardDescriptionImageDraft:$t,handleAddComment:Ut,handleSetWorkstreamForCurrentTask:Ur,handleOpenTaskById:Fn,autoSaveState:Yn,unsavedModalOpen:Ca,setUnsavedModalOpen:yn,pendingNavigation:Vr,handleNavigation:rn,handleClose:Mn,scheduleWarningPrompt:sn,confirmScheduleWarning:Sn,cancelScheduleWarning:Ir,uiNotice:Wr,pushNotice:Yr,clearNotice:Zn,taskReturnTrail:Ln,clearReturnToParentTask:fn,returnToPreviousTask:Rn,copiedId:hn,recentlyChangedTaskIds:dt,tasksScrollRef:On,setTasksScrollPos:Wt,currentTask:ue,currentTaskWorkstream:ot,currentTaskInitiative:_t,handleUpdateCategory:Pt,handleRemoveCategory:nr,handleSaveCategory:fr,handleUpdateCategoryIcon:ln,handleUpdateCategoryColor:Tt,handleSaveType:Rr,handleRemoveType:Qr,handleUpdateTaxonomies:on,handleUpdatePriorities:Jn,pathValidation:Zr,validatePaths:Er,getCategoryPaths:Xn,commentsEndRef:Ia,currentWorkspaceId:Un,authUserId:Cs,runtimeMode:ga,settingsModel:Bs,onHeaderMouseDown:eo,isDragging:to}=e,Qn=i_(K,Fn),Ws=o.useCallback(ut=>{if(ut.kind==="initiative"||ut.kind==="workstream"){const en=ut.kind==="initiative"?e.initiatives.find(Pn=>Pn.referenceNumber===ut.referenceNumber):e.workstreams.find(Pn=>Pn.referenceNumber===ut.referenceNumber);if(!en){Yr(`${ut.token} could not be found.`,"error");return}const In=Jz({applicationBaseUrl:window.location.origin,workspaceId:String(Un||"default").trim()||"default",target:ut.kind,id:en.id});if(!In){Yr(`${ut.token} could not be opened.`,"error");return}window.open(In,"_blank","noopener,noreferrer");return}const vr=String(Un||"default").trim()||"default";l_(ut,{workspaceId:vr}).then(en=>{ip(en,{ownerType:"task",ownerId:ue?.id||null,ownerReferenceLabel:Ss(ue),workspaceId:vr})}).catch(()=>{Yr(`${ut.token} could not be opened.`,"error")})},[ue,Un,e.initiatives,e.workstreams,Yr]),sa=o.useMemo(()=>({...Qn,entityReferences:{resolve:vC,activate:Ws}}),[Ws,Qn]),hi=o.useRef(null),[ea,gi]=re.useState(0);o.useLayoutEffect(()=>{if(t==="tasks"&&On.current&&ea>0){const ut=setTimeout(()=>{On.current&&(On.current.scrollTop=ea)},50);return()=>clearTimeout(ut)}},[t,ea,K]);const _a=ut=>{st(ut)},oa=()=>{rn(()=>{if(t==="add"||t==="settings"){if(t==="add"&&Rn())return;t==="add"&&Ln.length>0&&fn(),t==="add"&&bn(),r("tasks")}else e.onClose?e.onClose():Mn()})},Ta=()=>{yn(!1),t==="add"&&!It&&$t(),Vr?(t==="add"&&bn(),Vr()):r("tasks")},Ka=async()=>{await Xt({preventDefault:()=>{}}),yn(!1),Vr&&Vr()},ls=(ut,vr)=>{St(en=>({...en,[ut]:vr}))},ds=o.useCallback(ut=>{bn(),Bt(ut),rn(()=>{r("add")})},[bn,Bt,r,rn]),La=re.useMemo(()=>fe.map(ut=>({...ut.taskSnapshot,isDeleted:!0,deletedRecordId:ut.id,deletedAt:ut.deletedAt,deletedExpiresAt:o_(ut.deletedAt)})),[fe]),qa=re.useMemo(()=>new globalThis.Map(fe.map(ut=>[ut.taskId,ut])),[fe]),xa=re.useMemo(()=>{const ut=yp(se),vr={categories:_e,types:$e,priorities:Ye,assigneeOptions:ne,taxonomies:ge},en=_e.every(Nr=>me.includes(Nr.value)),In=$e.every(Nr=>V.includes(Nr.value)),Pn=Array.from(new Set(N.map(Nr=>Number(Nr)).filter(Nr=>Number.isFinite(Nr)))),Is=Ye.map(Nr=>Number(Nr.value)).filter(Nr=>Number.isFinite(Nr)).every(Nr=>Pn.includes(Nr)),Pa=["task","in-progress","review","done","cancelled","on-hold"].every(Nr=>Ae.includes(Nr)),ya=ne.length>0&&ne.every(Nr=>Z.includes(Nr.value)),jn=kp(ge,La);return La.filter(Nr=>{const Oa=Ug(Nr,ut,vr),Ya=en||me.includes(Nr.category),ia=Is||Pn.includes(Eg(Nr.priority)),Hn=In||V.includes(Nr.type||bo),Vn=Pa||Ae.includes(Nr.status),Za=ya||Z.includes(Nr.assignee||"unassigned"),Ao=Object.entries(Te).every(([yi,_s])=>{const ki=jn.find(ar=>ar.id===yi);if(!ki||Vw(ki,La).every(ar=>_s.includes(ar.value)))return!0;const qt=Nr.taxonomies?.[yi];return qt?Array.isArray(qt)?qt.some(ar=>_s.includes(ar)):_s.includes(qt):_s.includes("")});return Oa&&Ya&&ia&&Hn&&Vn&&Za&&Ao}).sort((Nr,Oa)=>zg(Nr,Oa,Ue,ft,ge))},[_e,$e,ee,ne,La,Z,me,N,Ae,Te,V,Ye,se,Ue,ft,ge,K]),Ra=re.useMemo(()=>{const ut={};return xa.forEach(vr=>{const In=_e.find(Pn=>Pn.value===vr.category||Pn.label===vr.category)?.label||vr.category||"General";ut[In]||(ut[In]=[]),ut[In].push(vr)}),ut},[_e,xa]),zn=c_(fe,xa.map(ut=>ut.id),He==="deleted"),us=He==="archived"?le.length:He==="deleted"?xa.length:x.length;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{ref:hi,className:`${yr.modal} ${R.coreModal} ${t==="settings"?yr.settingsViewModal:""}`,"data-theme":i,children:[a.jsxs("div",{className:"tf-modal-header",onMouseDown:eo,style:{cursor:eo?to?"grabbing":"grab":"default"},children:[a.jsxs("div",{className:`tf-modal-title ${tn.headerTitleWidget}`,children:["Taskforce",w&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:R.projectSlash,children:"/"}),a.jsx("span",{className:R.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:w})]}),a.jsx("span",{className:R.taskCountBadge,title:He==="deleted"?"Trash tasks — automatically deleted after 90 days":`${He.charAt(0).toUpperCase()+He.slice(1)} tasks`,children:us})]}),a.jsxs("div",{className:yr.headerActions,children:[t==="tasks"&&a.jsx(a.Fragment,{children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{rn(()=>{bn(),r("add")})},title:"Add New Task","aria-label":"Add New Task",children:a.jsx(ui,{size:18})})}),a.jsx("button",{className:`tf-control-icon ${t==="settings"?"tf-control-icon-active":""}`,onClick:()=>{t!=="settings"&&rn(()=>{r("settings")})},title:"Settings","aria-label":"Settings",children:a.jsx(Qm,{size:18})}),a.jsx("button",{className:"tf-control-icon",onClick:oa,title:t==="tasks"?"Close":"Back to Tasks","aria-label":t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?a.jsx(mi,{size:20}):a.jsx(L0,{size:20})})]})]}),a.jsx(Zg,{notice:t==="add"?null:Wr,onDismiss:Zn}),a.jsx(N_,{theme:i}),t==="add"&&a.jsxs("div",{className:R.taskNoticeAnchor,children:[a.jsx(j_,{editingTaskId:It,loading:Xe,submitDisabled:An,autoSaveState:Yn,title:U,status:pt,onStatusChange:lt,currentTask:ue,currentTaskWorkstream:ot,currentTaskInitiative:_t,workstreams:e.workstreams,onWorkstreamInputChange:ur,onSetWorkstreamForCurrentTask:Ur,handleSubmit:Xt,handleCopyId:Ne,copiedId:hn,tasks:K,handleToggleInProgress:Pe,handleToggleReview:he,handleToggleComplete:Re,handleToggleCancel:Ce,handleSetStatus:De,handleArchiveTask:et,handleUnarchiveTask:ut=>{if(ue?.isDeleted){const vr=qa.get(ut);vr&&Oe(vr.id,vr.taskId);return}yt(ut)},handleRestoreDeletedTask:ut=>{const vr=fe.find(en=>en.id===ut);Oe(ut,vr?.taskId)},handlePermanentlyDeleteDeletedTask:ut=>{vt(ut)}}),a.jsx(Zg,{notice:bt?{message:bt,tone:"error"}:Wr,onDismiss:()=>{at(),Zn()},placement:"task"})]}),t==="tasks"&&a.jsx(__,{ref:On,tasks:K,archivedTasks:ee,categories:_e,types:$e,priorities:Ye,workspaceId:Un,taxonomyDisplayLabels:ye,taxonomies:ge,searchQuery:se,filterCategories:me,filterTypes:V,filterPriorities:N,filterStatus:Ae,filterAssignees:Z,assigneeOptions:ne,filterTaxonomies:Te,sortBy:Ue,sortOrder:ft,showArchive:ke,taskScope:He,collapsedCategories:Je,loadingTasks:Q,filteredTasks:x,filteredArchive:le,groupedTasks:Ie,filteredDeletedTasks:xa,groupedDeletedTasks:Ra,deletedTaskRecordByTaskId:qa,selectedDeletedRecordIds:zn.selectedIds,onDeletedSelectionChange:zn.toggle,trashControls:a.jsx(E_,{theme:i,selectedRecords:zn.selectedRecords,matchingCount:zn.matchingRecords.length,allMatchingSelected:zn.allMatchingSelected,someMatchingSelected:zn.someMatchingSelected,fullTrashCount:fe.length,onSelectAllMatching:zn.selectAllMatching,onClearSelection:zn.clear,onRestore:mt,onEmptyEntireTrash:()=>{confirm(`Permanently delete all ${fe.length} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&Ve()}}),copiedId:hn,recentlyChangedTaskIds:dt,showTaskCardStatusLabel:Nt,showTaskCardDescription:ga!=="cloud"&&Qt,showTaskCardAttachments:Ct,showTaskCardChecklistProgress:Ht,showTaskCardLatestActivity:Ft,tintTaskCardActivityBackground:ir,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:ie,onFilterCategoriesChange:ut=>$(ut),onFilterTypesChange:ut=>B(ut),onFilterPrioritiesChange:be,onFilterStatusChange:q,onFilterAssigneesChange:ut=>G(ut),onTaxonomyFilterChange:(ut,vr)=>Le(en=>({...en,[ut]:vr})),onSortByChange:_a,onSortOrderChange:xe,onShowArchiveChange:ve,onTaskScopeChange:Ee,onClearFilters:de,onToggleCategory:ut=>J(vr=>({...vr,[ut]:!vr[ut]})),onEditTask:Ze,onUpdateTask:je,taskReferences:sa,onCopyId:Ne,onToggleInProgress:Pe,onToggleReview:he,onToggleComplete:Re,onToggleCancel:Ce,onSetStatus:De,onArchiveTask:et,onBulkArchive:Fe,onUnarchive:ut=>{const vr=qa.get(ut);if(vr){Oe(vr.id,vr.taskId);return}yt(ut)},onDelete:ut=>{const vr=qa.get(ut);if(vr){vt(vr.id);return}te(ut)},onDeleteAllDeleted:()=>{Ve()},onFetchArchive:tt,onAddTaskToCategory:ds,supplementalTasks:La}),t==="add"&&a.jsx(P_,{editingTaskId:It,initialActivityEntryId:e.initialActivityEntryId,title:U,description:Et,checklistItems:dr,category:pr,type:wr,priority:$r,complexity:Me,manualComplexityEnabled:xt,assignee:cr,scheduledDate:Zt,dueDate:lr,formTaxonomies:u,onTaxonomyChange:ls,taxonomies:ge,comments:gt,newCommentText:Fr,contextFiles:er,currentWorkspaceId:Un,descriptionImageDraftId:cn,currentActorId:Cs,apiBaseUrl:"",descriptionFocused:Ge,showMarkdownHelp:hr,checklistEnabled:Yt,categories:_e,types:$e,priorities:Ye,taxonomyDisplayLabels:ye,assigneeOptions:ne,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:hn,onTitleChange:pe,onTitleDraftChange:Ke,onDescriptionChange:kt,onDescriptionDraftChange:Ot,onChecklistItemsChange:tr,onCategoryChange:Bt,onTypeChange:or,onPriorityChange:Dr,onComplexityChange:nt,onAssigneeChange:it,onScheduledDateChange:Lr,onDueDateChange:$n,onNewCommentTextChange:xr,onDescriptionFocusedChange:Xr,onShowMarkdownHelpChange:Jt,onOpenSettings:ut=>{rn(()=>{A(ut),r("settings")})},onSubmit:Xt,onDescriptionImageUploadStart:Hr,commentsEndRef:Ia,onAddComment:()=>Ut(Fr),taskReferences:sa,onAddContextFile:ut=>{qr(!0),jr(vr=>[...vr,ut])},onRemoveContextFile:async ut=>{qr(!0),jr(vr=>vr.filter((en,In)=>In!==ut))},onUpdateContextCaption:(ut,vr)=>{qr(!0),jr(en=>en.map((In,Pn)=>Pn!==ut?In:typeof In=="string"?{path:In,caption:vr,timestamp:new Date().toISOString()}:{...In,caption:vr}))},onOpenContextImage:ut=>{ip(ut,{ownerType:"task",ownerId:It,ownerReferenceLabel:Ss(ue),workspaceId:Un})},onCopyId:Ne,onToggleInProgress:Pe,onToggleReview:he,onToggleComplete:Re,onToggleCancel:Ce,onArchiveTask:et,onUnarchive:ut=>{if(ue?.isDeleted){const vr=qa.get(ut);vr&&Oe(vr.id,vr.taskId);return}yt(ut)},currentTask:ue}),t==="settings"&&a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(mK,{settingsModel:Bs,onSectionChange:A})})]}),D&&uc.createPortal(a.jsx("div",{className:Dn.overlay,children:a.jsxs("div",{className:Dn.browser,children:[a.jsxs("div",{className:Dn.header,children:[a.jsxs("div",{className:Dn.pathInfo,children:[a.jsx(cc,{size:14}),a.jsx("span",{children:_||"Project Root"})]}),a.jsxs("div",{className:Dn.actions,children:[_&&a.jsx("button",{className:R.helpLink,onClick:()=>{const ut=_.split("/").filter(Boolean);ut.pop(),T(ut.length?ut.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:R.helpLink,onClick:()=>j(!1),children:"Close"})]})]}),a.jsxs("div",{className:Dn.list,children:[z&&typeof z=="object"&&a.jsxs("div",{className:`${Dn.item} ${Dn.itemCurrent}`,onClick:()=>H(_),children:[a.jsx(Fi,{size:14})," Select Current: ./",_||"(root)"]}),S.map(ut=>a.jsxs("div",{className:Dn.item,onClick:()=>T(_+ut+"/"),children:[a.jsx(cc,{size:14})," ",ut,"/"]},ut)),L.map(ut=>a.jsxs("div",{className:`${Dn.item} ${Dn.itemFile}`,onClick:()=>H(_+ut),children:[a.jsx(Xm,{size:14})," ",ut]},ut)),S.length===0&&L.length===0&&a.jsx("div",{className:`${Dn.item} ${Dn.empty}`,children:"No items found"})]})]})}),document.body),Ca&&a.jsx("div",{className:`${yr.overlay} ${yr.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${yr.modal} ${yr.unsavedModal}`,"data-theme":i,children:[a.jsx("div",{className:`tf-modal-header ${yr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${yr.unsavedTitle}`,children:[a.jsx(Od,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${yr.form} ${yr.unsavedContent}`,children:a.jsx("p",{className:yr.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${yr.formActions} ${yr.unsavedActions}`,children:[a.jsx("button",{className:R.cancelBtn,onClick:()=>yn(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:R.destructiveBtn,onClick:Ta,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:R.submitBtn,onClick:Ka,disabled:Xe,title:"Save changes and leave",children:[Xe?a.jsx(na,{size:16,className:R.spinner}):a.jsx(nC,{size:16}),"Save"]})]})]})}),sn&&a.jsx("div",{className:`${yr.overlay} ${yr.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${yr.modal} ${yr.unsavedModal}`,"data-theme":i,children:[a.jsx("div",{className:`tf-modal-header ${yr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${yr.unsavedTitle}`,children:[a.jsx(Od,{size:20}),"Date Warning"]})}),a.jsxs("div",{className:`${yr.form} ${yr.unsavedContent}`,children:[a.jsx("p",{className:yr.unsavedText,children:"Due date is before scheduled date."}),a.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",sn.dueDate," · Scheduled: ",sn.scheduledDate]})]}),a.jsxs("div",{className:`${yr.formActions} ${yr.unsavedActions}`,children:[a.jsx("button",{className:R.cancelBtn,onClick:Ir,children:"Go Back"}),a.jsx("button",{className:R.submitBtn,onClick:Sn,children:"Save Anyway"})]})]})})]})}const hK="_accountMenuWrap_1mocf_1",gK="_avatarBtn_1mocf_5",yK="_avatarBadge_1mocf_9",kK="_avatarImage_1mocf_24",vK="_avatarIcon_1mocf_30",wK="_accountMenu_1mocf_1",bK="_accountMenuItem_1mocf_48",SK="_accountMenuItemActive_1mocf_68",AK="_accountMenuSection_1mocf_73",CK="_accountMenuSectionLabel_1mocf_79",IK="_accountMenuMeta_1mocf_88",_K="_accountMenuHint_1mocf_93",TK="_accountIdentityEmail_1mocf_99",xK="_accountIdentityBlock_1mocf_104",RK="_accountIdentityMetaLine_1mocf_109",PK="_accountIdentityMetaAction_1mocf_116",jK="_accountIdentityMetaValue_1mocf_125",EK="_accountIdentityMetaLabel_1mocf_130",NK="_accountMenuError_1mocf_159",DK="_accountHubCard_1mocf_165",MK="_profileAvatarEditor_1mocf_172",LK="_profileEditLayout_1mocf_178",OK="_profileFieldStack_1mocf_185",BK="_profileFieldLabel_1mocf_191",gr={accountMenuWrap:hK,avatarBtn:gK,avatarBadge:yK,avatarImage:kK,avatarIcon:vK,accountMenu:wK,accountMenuItem:bK,accountMenuItemActive:SK,accountMenuSection:AK,accountMenuSectionLabel:CK,accountMenuMeta:IK,accountMenuHint:_K,accountIdentityEmail:TK,accountIdentityBlock:xK,accountIdentityMetaLine:RK,accountIdentityMetaAction:PK,accountIdentityMetaValue:jK,accountIdentityMetaLabel:EK,accountMenuError:NK,accountHubCard:DK,profileAvatarEditor:MK,profileEditLayout:LK,profileFieldStack:OK,profileFieldLabel:BK},WK="_authBlockedBanner_1virb_1",$K="_loginView_1virb_10",FK="_loginCard_1virb_20",UK="_loginCloseBtn_1virb_34",zK="_loginLogo_1virb_56",HK="_authBrandRow_1virb_62",VK="_setupHeaderRow_1virb_68",GK="_runtimeIconBadge_1virb_75",KK="_loginTitle_1virb_94",qK="_loginTitleAccent_1virb_105",YK="_loginSubtitle_1virb_109",ZK="_loginError_1virb_115",JK="_loginField_1virb_121",XK="_loginFieldLabel_1virb_126",QK="_loginInput_1virb_133",eq="_loginPrimaryBtn_1virb_149",tq="_authPrimaryActions_1virb_154",rq="_registerConsent_1virb_159",nq="_registerConsentLink_1virb_167",aq="_authModeSwitch_1virb_177",sq="_authModeSwitchLink_1virb_184",oq="_authModeLinks_1virb_199",iq="_authSecondaryActions_1virb_207",cq="_authModeLink_1virb_199",lq="_optionGrid_1virb_236",dq="_optionGroup_1virb_242",uq="_optionRow_1virb_247",fq="_inlineHint_1virb_254",mq="_actionRowEnd_1virb_260",pq="_oauthProviders_1virb_267",hq="_oauthDivider_1virb_274",gq="_oauthButtons_1virb_290",yq="_oauthButton_1virb_290",Qe={authBlockedBanner:WK,loginView:$K,loginCard:FK,loginCloseBtn:UK,loginLogo:zK,authBrandRow:HK,setupHeaderRow:VK,runtimeIconBadge:GK,loginTitle:KK,loginTitleAccent:qK,loginSubtitle:YK,loginError:ZK,loginField:JK,loginFieldLabel:XK,loginInput:QK,loginPrimaryBtn:eq,authPrimaryActions:tq,registerConsent:rq,registerConsentLink:nq,authModeSwitch:aq,authModeSwitchLink:sq,authModeLinks:oq,authSecondaryActions:iq,authModeLink:cq,optionGrid:lq,optionGroup:dq,optionRow:uq,inlineHint:fq,actionRowEnd:mq,oauthProviders:pq,oauthDivider:hq,oauthButtons:gq,oauthButton:yq},kq="_modalBody_xo2lt_1",vq="_mutedText_xo2lt_5",wq="_sectionText_xo2lt_10",bq="_modalActionsEnd_xo2lt_50",Sq="_helpModalBody_xo2lt_56",Aq="_helpHero_xo2lt_60",Cq="_helpHeroIcon_xo2lt_67",Iq="_helpHeroCopy_xo2lt_79",_q="_supportContactCard_xo2lt_84",Tq="_supportContactHeader_xo2lt_90",xq="_supportEmailAddress_xo2lt_97",Rq="_supportActionRow_xo2lt_112",Pq="_supportAction_xo2lt_112",jq="_supportPanel_xo2lt_123",Eq="_supportPanelHeader_xo2lt_132",Nq="_memberRow_xo2lt_150",Dq="_memberTitle_xo2lt_156",Mq="_memberActions_xo2lt_160",Lq="_selectRole_xo2lt_167",Oq="_selectPermission_xo2lt_171",Bq="_inviteRow_xo2lt_175",Wq="_listHeading_xo2lt_179",$q="_auditList_xo2lt_184",Fq="_auditPager_xo2lt_190",Uq="_labelFixed_xo2lt_197",Kr={modalBody:kq,mutedText:vq,sectionText:wq,modalActionsEnd:bq,helpModalBody:Sq,helpHero:Aq,helpHeroIcon:Cq,helpHeroCopy:Iq,supportContactCard:_q,supportContactHeader:Tq,supportEmailAddress:xq,supportActionRow:Rq,supportAction:Pq,supportPanel:jq,supportPanelHeader:Eq,memberRow:Nq,memberTitle:Dq,memberActions:Mq,selectRole:Lq,selectPermission:Oq,inviteRow:Bq,listHeading:Wq,auditList:$q,auditPager:Fq,labelFixed:Uq};function zq({isOpen:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Ko,{isOpen:e,onClose:r,title:"New Workspace",size:"sm",theme:t,draggable:!0,footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:R.cancelBtn,onClick:r,children:"Cancel"}),a.jsx("button",{type:"button",className:R.submitBtn,onClick:n,children:"Start Setup"})]}),children:a.jsx("div",{className:`${yr.form} ${Kr.modalBody}`,children:a.jsx("p",{className:Kr.sectionText,children:"Create and configure a new workspace."})})})}const Hq="_editableAvatarButton_1qp11_1",Vq="_editableAvatarImage_1qp11_47",Gq="_editableAvatarFallback_1qp11_54",Kq="_editableAvatarBadge_1qp11_65",qq="_editableAvatarProgress_1qp11_91",Yq="_editableAvatarProgressError_1qp11_108",yd={editableAvatarButton:Hq,editableAvatarImage:Vq,editableAvatarFallback:Gq,editableAvatarBadge:Kq,editableAvatarProgress:qq,editableAvatarProgressError:Yq};function Zq({label:e,imageUrl:t,fallbackImageUrl:r,fallback:n,accentColor:s,size:i=52,width:l,height:c,radius:d,editBadgeSize:m,editIconSize:f=16,disabled:g=!1,loading:h=!1,loadingLabel:y="Updating profile photo",error:k=!1,errorLabel:v="Profile photo update failed",className:A="",onClick:b}){const{activeImageUrl:w,handleImageError:P}=b_(t,r),E=l??i,D=c??i,j=typeof d=="number"?`${d}px`:d,S=typeof m=="number"?`${m}px`:m;return a.jsxs("button",{type:"button",className:`${yd.editableAvatarButton} ${A}`.trim(),"aria-label":e,"aria-busy":h,title:e,onClick:b,disabled:g,style:{"--editable-avatar-size":`${i}px`,"--editable-avatar-width":`${E}px`,"--editable-avatar-height":`${D}px`,...j?{"--editable-avatar-radius":j}:{},...S?{"--editable-avatar-badge-size":S}:{},...s?{"--editable-avatar-accent":s}:{}},children:[w?a.jsx("img",{src:w,alt:"",className:yd.editableAvatarImage,onError:P}):a.jsx("span",{className:yd.editableAvatarFallback,children:n}),a.jsx("span",{className:yd.editableAvatarBadge,"aria-hidden":"true",children:a.jsx(aC,{size:f})}),h?a.jsx("span",{className:yd.editableAvatarProgress,role:"status","aria-label":y,children:a.jsx(na,{size:Math.max(16,Math.round(i*.24))})}):k?a.jsx("span",{className:`${yd.editableAvatarProgress} ${yd.editableAvatarProgressError}`,role:"status","aria-label":v,children:a.jsx(Od,{size:Math.max(16,Math.round(i*.24))})}):null]})}const Jq="_modalBody_1t6q4_1",Xq="_layout_1t6q4_5",Qq="_sectionTabs_1t6q4_11",eY="_sectionTab_1t6q4_11",tY="_sectionPanel_1t6q4_55",rY="_section_1t6q4_11",nY="_sectionHeader_1t6q4_65",aY="_cardHeader_1t6q4_66",sY="_planSummary_1t6q4_67",oY="_intervalRow_1t6q4_68",iY="_sectionCard_1t6q4_81",cY="_sectionActions_1t6q4_87",lY="_inlineActions_1t6q4_88",dY="_loginMethodList_1t6q4_96",uY="_loginMethodRow_1t6q4_101",fY="_loginMethodIcon_1t6q4_110",mY="_loginMethodCopy_1t6q4_122",pY="_addPasswordForm_1t6q4_137",hY="_linkProviderBlock_1t6q4_138",gY="_fieldLabel_1t6q4_145",yY="_planName_1t6q4_157",an={modalBody:Jq,layout:Xq,sectionTabs:Qq,sectionTab:eY,sectionPanel:tY,section:rY,sectionHeader:nY,cardHeader:aY,planSummary:sY,intervalRow:oY,sectionCard:iY,sectionActions:cY,inlineActions:lY,loginMethodList:dY,loginMethodRow:uY,loginMethodIcon:fY,loginMethodCopy:mY,addPasswordForm:pY,linkProviderBlock:hY,fieldLabel:gY,planName:yY},kY=new Set(["active","trialing","grace"]),pA={CHECKOUT_SESSION_EXPIRED:"Your previous checkout expired. Choose a plan to continue.",CHECKOUT_SESSION_SUPERSEDED:"A newer checkout replaced your previous checkout. Choose a plan to continue."},rg={planSelectionRequired:"Choose a plan to continue.",checkoutPending:"Complete checkout to continue.",misconfigured:"Onboarding policy is misconfigured. Contact support or a system administrator.",missingEntitlement:"No entitlement is linked to this account."};function $d(e){return String(e||"").trim()}function D_(e){return $d(e).toLowerCase()}function vY(e){return $d(e).toLowerCase()}function wY(e){return!!($d(e?.stripeCustomerId)||$d(e?.stripeSubscriptionId))}function bY(e){const t=$d(e?.trialEnd||e?.effectiveUntil);if(t){const r=new Date(t);if(!Number.isNaN(r.getTime()))return r.getTime()<=Date.now()?"Your trial end date has passed. Billing status is updating.":`Your trial is active through ${r.toLocaleString()}.`}return"Your trial is active. Continue to Taskforce or manage billing anytime."}function SY(e){return kY.has(D_(e))}function Yv(e,t){const r=D_(e?.entitlementState),n=vY(e?.gate||t),s=$d(e?.billingConflictCode).toUpperCase(),i=$d(e?.message),l=SY(r),c=wY(e);return s==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:pA.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:s==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:pA.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="trialing"?{entitlementState:r,gate:n||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:bY(e),primaryAction:c?"manage_billing":"none",primaryLabel:c?"Manage Billing":null,showManageBilling:c,markCurrentPlan:!0}:l?{entitlementState:r||null,gate:n||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!0}:r==="suspended"?{entitlementState:r,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access is suspended because billing needs attention. Update billing to restore access.",primaryAction:c?"manage_billing":"open_plans",primaryLabel:c?"Manage Billing":"Open Plans",showManageBilling:c,markCurrentPlan:!1}:r==="canceled"?{entitlementState:r,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access has ended. Choose a plan to reactivate your workspace.",primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="pending_plan_selection"||e?.planSelectionRequired===!0||n==="plan_selection_required"?{entitlementState:r||"pending_plan_selection",gate:n||"plan_selection_required",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||rg.planSelectionRequired,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:r==="checkout_pending"||n==="checkout_pending"?{entitlementState:r||"checkout_pending",gate:n||"checkout_pending",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||rg.checkoutPending,primaryAction:"open_plans",primaryLabel:"Open Plans",showManageBilling:c,markCurrentPlan:!1}:n==="misconfigured"?{entitlementState:r||null,gate:n,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:rg.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:n==="missing_entitlement"?{entitlementState:r||null,gate:n,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:rg.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:i?"error":"info",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!1}}const Zv=12,Jv=256,AY=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),CY=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function IY(e){const t=new Set,r=String(e?.email||"").trim().toLowerCase(),n=String(e?.displayName||"").trim().toLowerCase();if(r.includes("@")){const s=r.split("@")[0]||"",i=s.replace(/[^a-z0-9]/g,"");i.length>=4&&t.add(i);for(const l of s.split(/[^a-z0-9]+/))l.length>=4&&t.add(l)}for(const s of n.split(/[^a-z0-9]+/))s.length>=4&&t.add(s);return[...t]}function M_(){return[`Use at least ${Zv} characters.`,`Use no more than ${Jv} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function Xv(e,t){const r=String(e||"");if(!r)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(r.length<Zv)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${Zv} characters.`};if(r.length>Jv)return{ok:!1,code:"PASSWORD_TOO_LONG",message:`Password must be no more than ${Jv} characters.`};const n=CY(r);return AY.has(n)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:IY(t).some(i=>n.includes(i))?{ok:!1,code:"PASSWORD_CONTAINS_PERSONAL_INFO",message:"Password cannot contain your email or display name."}:{ok:!0}}const _Y="_wrapper_1g3s7_1",TY="_input_1g3s7_7",xY="_toggle_1g3s7_11",sv={wrapper:_Y,input:TY,toggle:xY},ef=o.forwardRef(function({className:t,disabled:r,visibilityLabel:n="password",visibilityToggleTestId:s,...i},l){const[c,d]=o.useState(!1),m=`${c?"Hide":"Show"} ${n}`;return a.jsxs("span",{className:sv.wrapper,children:[a.jsx("input",{...i,ref:l,className:`${t||""} ${sv.input}`.trim(),type:c?"text":"password",disabled:r}),a.jsx("button",{type:"button",className:sv.toggle,"aria-label":m,title:m,"data-testid":s,disabled:r,onClick:()=>d(f=>!f),children:c?a.jsx(cw,{size:18,"aria-hidden":"true"}):a.jsx(sC,{size:18,"aria-hidden":"true"})})]})}),hA={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},RY=[{id:"profile",label:"Profile",icon:tf},{id:"security",label:"Sign-in & Security",icon:O0},{id:"billing",label:"Plan & Billing",icon:B0}];function PY(e){const t=String(e||"").trim();return t?t.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase()):"Not available"}function jY({isOpen:e,theme:t,displayName:r,email:n,avatarDisplayUrl:s,accountBadgeInitial:i,profileSaveBusy:l,profileAvatarBusy:c,profileSaveError:d,profileSaveNotice:m,cloudAuthEnabled:f,availableAuthProviders:g,billingLoading:h,billingError:y,billingActionError:k,billingNotice:v,billingActionBusy:A,billingIntervalChoice:b,accountProfileSummary:w,onClose:P,onSaveProfile:E,onDisplayNameChange:D,onOpenAvatarManager:j,onFetchLoginMethods:S,onUnlinkLoginMethod:L,onAddPassword:_,onChangePassword:T,onLinkProvider:z,onBillingIntervalChange:Y,onRefreshBilling:H,onUpdateInterval:M,onManageBilling:oe,onOpenPlans:K}){const[Q,ee]=o.useState("profile"),[fe,_e]=o.useState([]),[$e,Ye]=o.useState(!1),[ye,ge]=o.useState(null),[se,ie]=o.useState(null),[me,$]=o.useState(null),[V,B]=o.useState(!1),[N,be]=o.useState(""),[Ae,q]=o.useState(!1),[Z,G]=o.useState(null),[ne,Te]=o.useState(!1),[Le,Ue]=o.useState(!1),[st,ft]=o.useState(""),[xe,ke]=o.useState(""),[ve,He]=o.useState(""),[Ee,de]=o.useState(!1),[x,le]=o.useState(null),[Ie,Je]=o.useState(!1),J=Yv(w),Ze=M_(),te=String(w?.planName||w?.planId||"No plan selected").trim()||"No plan selected",Ne=new Set(fe.map(Ve=>Ve.provider)),je=Ne.has("password"),Re=g.filter(Ve=>Ve!=="password"&&!Ne.has(Ve)),Ce=o.useCallback(()=>{B(!1),be(""),G(null),Te(!1),Ue(!1),ft(""),ke(""),He(""),le(null),Je(!1)},[]),Pe=()=>{Ce(),P()},he=Ve=>{Ve!=="security"&&Ce(),ee(Ve)};o.useEffect(()=>{$(null),Ce(),e&&ee("profile")},[Ce,e]),o.useEffect(()=>{Q!=="security"&&Ce()},[Q,Ce]),o.useEffect(()=>{if(!e||Q!=="security"||!f)return;let Ve=!1;return Ye(!0),ge(null),S().then(tt=>{Ve||(Ye(!1),tt.success&&tt.methods?_e(tt.methods):ge(tt.error||"Failed to load login methods."))}),()=>{Ve=!0}},[Q,f,e,S]);const De=async Ve=>{ie(Ve),$(null);const tt=await L(Ve);if(ie(null),!tt.success){$(tt.error||"Unable to remove this login method.");return}_e(It=>It.filter(Xe=>Xe.provider!==Ve))},et=async()=>{const Ve=Xv(N,{email:n,displayName:r});if(!Ve.ok){G(Ve.message||"Password does not meet the password policy.");return}q(!0),G(null);const tt=await _(N);if(q(!1),!tt.success){G(tt.code==="IDENTITY_ALREADY_EXISTS"?"A password login already exists. Use Forgot Password from sign-in to recover it.":tt.error||"Failed to add password.");return}Te(!0),be(""),B(!1);const It=await S();It.success&&It.methods&&_e(It.methods)},Fe=async()=>{if(xe!==ve){le("New passwords do not match.");return}const Ve=Xv(xe,{email:n,displayName:r});if(!Ve.ok){le(Ve.message||"Password does not meet the password policy.");return}de(!0),le(null),Je(!1);const tt=await T(st,xe);if(de(!1),!tt.success){le(tt.error||"Failed to change password.");return}ft(""),ke(""),He(""),Ue(!1),Je(!0);const It=await S();It.success&&It.methods&&_e(It.methods)},yt=()=>{if(J.primaryAction==="manage_billing"){oe();return}K()},Oe=()=>a.jsxs("section",{className:an.section,"aria-labelledby":"account-profile-heading",children:[a.jsx("div",{className:an.sectionHeader,children:a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-profile-heading",children:"Profile"}),a.jsx("p",{className:"tf-text-secondary",children:"Manage how you appear across Taskforce."})]})}),a.jsxs("div",{className:`${an.sectionCard} tf-surface-panel`,children:[a.jsxs("div",{className:gr.profileEditLayout,children:[a.jsx("div",{className:gr.profileAvatarEditor,children:a.jsx(Zq,{label:"Edit profile photo",imageUrl:s,fallback:i,disabled:l||c,onClick:j})}),a.jsxs("div",{className:gr.profileFieldStack,children:[a.jsxs("label",{className:gr.profileFieldLabel,children:[a.jsx("span",{children:"Display name"}),a.jsx("input",{className:R.input,type:"text",value:r,onChange:Ve=>D(Ve.target.value),placeholder:"Display name",disabled:l})]}),a.jsxs("label",{className:gr.profileFieldLabel,children:[a.jsx("span",{children:"Email"}),a.jsx("input",{className:R.input,type:"email",value:n,readOnly:!0,disabled:!0})]})]})]}),d&&a.jsx("p",{className:"tf-text-error",role:"alert",children:d}),m&&!d&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:m}),a.jsx("div",{className:an.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:E,disabled:l||c||!r.trim(),children:l?"Saving…":"Save profile"})})]})]}),mt=()=>a.jsxs("section",{className:an.section,"aria-labelledby":"account-security-heading",children:[a.jsx("div",{className:an.sectionHeader,children:a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-security-heading",children:"Sign-in & Security"}),a.jsx("p",{className:"tf-text-secondary",children:"Manage the methods you use to sign in to your account."})]})}),a.jsxs("div",{className:`${an.sectionCard} tf-surface-panel`,children:[a.jsx("div",{className:an.cardHeader,children:a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",children:"Login methods"}),a.jsx("p",{className:"tf-text-secondary",children:"Keep at least one sign-in method connected."})]})}),$e&&a.jsx("p",{className:"tf-text-secondary",children:"Loading login methods…"}),ye&&a.jsx("p",{className:"tf-text-error",role:"alert",children:ye}),me&&a.jsx("p",{className:"tf-text-error",role:"alert",children:me}),ne&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password login added."}),Ie&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password changed."}),!$e&&fe.length>0&&a.jsx("div",{className:an.loginMethodList,children:fe.map(Ve=>a.jsxs("div",{className:an.loginMethodRow,children:[a.jsx("span",{className:an.loginMethodIcon,"aria-hidden":"true",children:Ve.provider==="password"?a.jsx(W0,{size:16}):a.jsx(Jm,{size:16})}),a.jsxs("span",{className:an.loginMethodCopy,children:[a.jsx("strong",{children:hA[Ve.provider]||Ve.provider}),Ve.providerEmail&&a.jsx("span",{children:Ve.providerEmail})]}),fe.length>1&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:se===Ve.provider,onClick:()=>{De(Ve.provider)},children:se===Ve.provider?"Removing…":"Remove"})]},Ve.provider))}),!$e&&!ye&&je&&!Le&&a.jsx("div",{className:an.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Ue(!0),Je(!1),le(null)},children:"Change password"})}),Le&&a.jsxs("div",{className:an.addPasswordForm,children:[a.jsxs("div",{className:an.fieldLabel,children:[a.jsx("label",{htmlFor:"account-current-password",children:"Current password"}),a.jsx(ef,{id:"account-current-password",className:R.input,value:st,onChange:Ve=>ft(Ve.target.value),disabled:Ee,autoComplete:"current-password",visibilityLabel:"current password"})]}),a.jsxs("div",{className:an.fieldLabel,children:[a.jsx("label",{htmlFor:"account-new-password",children:"New password"}),a.jsx(ef,{id:"account-new-password",className:R.input,value:xe,onChange:Ve=>ke(Ve.target.value),disabled:Ee,autoComplete:"new-password",visibilityLabel:"new password"})]}),a.jsxs("div",{className:an.fieldLabel,children:[a.jsx("label",{htmlFor:"account-confirm-password",children:"Confirm new password"}),a.jsx(ef,{id:"account-confirm-password",className:R.input,value:ve,onChange:Ve=>He(Ve.target.value),disabled:Ee,autoComplete:"new-password",visibilityLabel:"confirm new password"})]}),a.jsx("p",{className:"tf-text-helper",children:Ze.join(" ")}),x&&a.jsx("p",{className:"tf-text-error",role:"alert",children:x}),a.jsxs("div",{className:an.inlineActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Ue(!1),ft(""),ke(""),He(""),le(null)},disabled:Ee,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{Fe()},disabled:Ee||!st||!xe||!ve,children:Ee?"Changing…":"Change password"})]})]}),!$e&&!ye&&!je&&!V&&a.jsx("div",{className:an.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{B(!0),Te(!1),G(null)},children:"Add password login"})}),V&&a.jsxs("div",{className:an.addPasswordForm,children:[a.jsxs("div",{className:an.fieldLabel,children:[a.jsx("label",{htmlFor:"account-add-password",children:"New password"}),a.jsx(ef,{id:"account-add-password",className:R.input,placeholder:"Use 12+ characters",value:N,onChange:Ve=>be(Ve.target.value),disabled:Ae,autoComplete:"new-password",visibilityLabel:"new password"})]}),a.jsx("p",{className:"tf-text-helper",children:Ze.join(" ")}),Z&&a.jsx("p",{className:"tf-text-error",role:"alert",children:Z}),a.jsxs("div",{className:an.inlineActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{B(!1),be(""),G(null)},disabled:Ae,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{et()},disabled:Ae||!N,children:Ae?"Saving…":"Save password"})]})]}),!$e&&!ye&&Re.length>0&&a.jsxs("div",{className:an.linkProviderBlock,children:[a.jsx("p",{className:"tf-label-micro",children:"Link another account"}),a.jsx("div",{className:an.inlineActions,children:Re.map(Ve=>a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>z(Ve),children:[a.jsx(Jm,{size:15}),hA[Ve]||Ve]},Ve))})]})]})]}),vt=()=>a.jsxs("section",{className:an.section,"aria-labelledby":"account-billing-heading",children:[a.jsxs("div",{className:an.sectionHeader,children:[a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-billing-heading",children:"Plan & Billing"}),a.jsx("p",{className:"tf-text-secondary",children:"Review your plan and open the secure billing portal."})]}),a.jsxs("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:H,disabled:A||h,children:[a.jsx($0,{size:14}),"Refresh"]})]}),a.jsxs("div",{className:`${an.sectionCard} tf-surface-panel`,children:[h&&a.jsx("p",{className:"tf-text-secondary",children:"Loading billing status…"}),y&&a.jsx("p",{className:"tf-text-error",role:"alert",children:y}),k&&a.jsx("p",{className:"tf-text-error",role:"alert",children:k}),v&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:v}),a.jsxs("div",{className:an.planSummary,children:[a.jsxs("div",{children:[a.jsx("p",{className:"tf-label-micro",children:"Current plan"}),a.jsx("strong",{className:an.planName,children:te})]}),a.jsx("span",{className:`tf-chip ${J.isActive?"tf-chip-success":"tf-chip-neutral"}`,children:PY(w?.entitlementState)})]}),J.message&&a.jsx("p",{className:J.statusTone==="error"?"tf-text-error":"tf-text-secondary",children:J.message}),w?.stripeSubscriptionId&&a.jsxs("div",{className:an.intervalRow,children:[a.jsxs("label",{className:an.fieldLabel,children:[a.jsx("span",{children:"Billing interval"}),a.jsxs("select",{className:R.input,value:b,onChange:Ve=>Y(Ve.target.value==="year"?"year":"month"),disabled:A,children:[a.jsx("option",{value:"month",children:"Monthly"}),a.jsx("option",{value:"year",children:"Yearly"})]})]}),a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:M,disabled:A,children:"Update interval"})]}),a.jsxs("div",{className:an.sectionActions,children:[(J.primaryAction==="manage_billing"||J.primaryAction==="none")&&a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:K,disabled:A,children:"View plans"}),J.showManageBilling&&J.primaryAction!=="manage_billing"&&a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:oe,disabled:A,children:"Manage billing"}),J.primaryLabel&&a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:yt,disabled:A,children:A?"Working…":J.primaryLabel})]})]})]});return a.jsx(Ko,{isOpen:e,onClose:Pe,title:"Account Settings",size:"mdWide",theme:t,draggable:!0,children:a.jsx("div",{className:`${yr.form} ${an.modalBody}`,children:a.jsxs("div",{className:an.layout,children:[a.jsx("div",{className:an.sectionTabs,role:"tablist","aria-label":"Account settings sections","aria-orientation":"vertical",children:RY.map(Ve=>{const tt=Ve.icon,It=Ve.id===Q;return a.jsxs("button",{type:"button",role:"tab",id:`account-settings-tab-${Ve.id}`,"aria-controls":`account-settings-panel-${Ve.id}`,"aria-selected":It,className:an.sectionTab,onClick:()=>he(Ve.id),children:[a.jsx(tt,{size:16}),a.jsx("span",{children:Ve.label})]},Ve.id)})}),a.jsxs("div",{className:an.sectionPanel,role:"tabpanel",id:`account-settings-panel-${Q}`,"aria-labelledby":`account-settings-tab-${Q}`,children:[Q==="profile"&&Oe(),Q==="security"&&mt(),Q==="billing"&&vt()]})]})})})}var gA=(e,t,r,n,s,i)=>{if(i===0)e.rect(t,r,n,s);else{let l=n-i,c=s-i;e.translate(t,r),e.arc(i,i,i,Math.PI,Math.PI*1.5),e.lineTo(l,0),e.arc(l,i,i,Math.PI*1.5,Math.PI*2),e.lineTo(n,c),e.arc(l,c,i,Math.PI*2,Math.PI*.5),e.lineTo(i,s),e.arc(i,c,i,Math.PI*.5,Math.PI),e.closePath(),e.translate(-t,-r)}},EY=(e,t,r,n,s,i)=>{e.fillStyle=i;let l=n/3,c=s/3;e.fillRect(t,r,1,s),e.fillRect(l+t,r,1,s),e.fillRect(l*2+t,r,1,s),e.fillRect(l*3+t,r,1,s),e.fillRect(l*4+t,r,1,s),e.fillRect(t,r,n,1),e.fillRect(t,c+r,n,1),e.fillRect(t,c*2+r,n,1),e.fillRect(t,c*3+r,n,1),e.fillRect(t,c*4+r,n,1)},NY=e=>!!e.match(/^\s*data:([a-z]+\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\-._~:@/?%\s]*\s*$/i),L_=(e,t)=>new Promise((r,n)=>{let s=new Image;s.addEventListener("load",()=>r(s)),s.addEventListener("error",n),!NY(e)&&t&&(s.crossOrigin=t),s.src=e}),DY=e=>new Promise((t,r)=>{let n=new FileReader;n.addEventListener("load",s=>{try{if(!s?.target?.result)throw Error("No image data");t(L_(s.target.result))}catch(i){r(i)}}),n.readAsDataURL(e)}),MY=typeof File<"u",yA=e=>Math.PI/180*e,kA={x:.5,y:.5},LY=class{constructor(e){this.imageState=kA,this.config={border:25,borderRadius:0,scale:1,rotate:0,color:[0,0,0,.5],backgroundColor:"",borderColor:void 0,showGrid:!1,gridColor:"#666",disableBoundaryChecks:!1,disableHiDPIScaling:!1,disableCanvasRotation:!0,crossOrigin:void 0,...e},this.pixelRatio=typeof window<"u"&&window.devicePixelRatio&&!this.config.disableHiDPIScaling?window.devicePixelRatio:1}getPixelRatio(){return this.pixelRatio}getImageState(){return this.imageState}setImageState(e){this.imageState=e}updateConfig(e){this.config={...this.config,...e}}isVertical(){return!this.config.disableCanvasRotation&&this.config.rotate%180!=0}getBorders(e){let t=e??this.config.border;return Array.isArray(t)?t:[t,t]}getDimensions(){let{width:e,height:t,rotate:r,border:n}=this.config,s={width:0,height:0},[i,l]=this.getBorders(n);return this.isVertical()?(s.width=t,s.height=e):(s.width=e,s.height=t),s.width+=i*2,s.height+=l*2,{canvas:s,rotate:r,width:e,height:t,border:n}}getXScale(){if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let e=this.config.width/this.config.height,t=this.imageState.width/this.imageState.height;return Math.min(1,e/t)}getYScale(){if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let e=this.config.height/this.config.width,t=this.imageState.height/this.imageState.width;return Math.min(1,e/t)}getCroppingRect(e){if(!this.imageState.width||!this.imageState.height)return{x:0,y:0,width:1,height:1};let t=e||{x:this.imageState.x,y:this.imageState.y},r=1/this.config.scale*this.getXScale(),n=1/this.config.scale*this.getYScale(),s={x:t.x-r/2,y:t.y-n/2,width:r,height:n},i=0,l=1-s.width,c=0,d=1-s.height;return(this.config.disableBoundaryChecks||r>1||n>1)&&(i=-s.width,l=1,c=-s.height,d=1),{...s,x:Math.max(i,Math.min(s.x,l)),y:Math.max(c,Math.min(s.y,d))}}getInitialSize(e,t){let r,n,s=this.getDimensions();return s.height/s.width>t/e?(r=s.height,n=r/t*e):(n=s.width,r=n/e*t),{height:r,width:n}}async loadImage(e){let t;if(MY&&e instanceof File)t=await DY(e);else if(typeof e=="string")t=await L_(e,this.config.crossOrigin);else throw Error("Invalid image source");let r={...this.getInitialSize(t.width,t.height),resource:t,x:.5,y:.5};return this.imageState=r,r}clearImage(){this.imageState=kA}calculatePosition(e=this.imageState,t){let[r,n]=this.getBorders(t);if(!e.width||!e.height)throw Error("Image dimension is unknown.");let s=this.getCroppingRect(),i=e.width*this.config.scale,l=e.height*this.config.scale,c=-s.x*i,d=-s.y*l;return this.isVertical()?(c+=n,d+=r):(c+=r,d+=n),{x:c,y:d,height:l,width:i}}paint(e){e.save(),e.scale(this.pixelRatio,this.pixelRatio),e.translate(0,0),e.fillStyle="rgba("+this.config.color.slice(0,4).join(",")+")";let t=this.config.borderRadius,r=this.getDimensions(),[n,s]=this.getBorders(r.border),i=r.canvas.height,l=r.canvas.width;t=Math.max(t,0),t=Math.min(t,l/2-n,i/2-s),e.beginPath(),gA(e,n,s,l-n*2,i-s*2,t),e.rect(l,0,-l,i),e.fill("evenodd"),this.config.borderColor&&(e.strokeStyle="rgba("+this.config.borderColor.slice(0,4).join(",")+")",e.lineWidth=1,e.beginPath(),gA(e,n+.5,s+.5,l-n*2-1,i-s*2-1,t),e.stroke()),this.config.showGrid&&EY(e,n,s,l-n*2,i-s*2,this.config.gridColor),e.restore()}paintImage(e,t,r,n=this.pixelRatio){if(!t.resource)return;let s=this.calculatePosition(t,r);e.save(),e.translate(e.canvas.width/2,e.canvas.height/2),e.rotate(this.config.rotate*Math.PI/180),e.translate(-(e.canvas.width/2),-(e.canvas.height/2)),this.isVertical()&&e.translate((e.canvas.width-e.canvas.height)/2,(e.canvas.height-e.canvas.width)/2),e.scale(n,n),e.globalCompositeOperation="destination-over",e.drawImage(t.resource,s.x,s.y,s.width,s.height),this.config.backgroundColor&&(e.fillStyle=this.config.backgroundColor,e.fillRect(0,0,e.canvas.width,e.canvas.height)),e.restore()}getImage(){let e=this.getCroppingRect(),t=this.imageState;if(!t.resource)throw Error("No image resource available, please report this to: https://github.com/mosch/react-avatar-editor/issues");e.x*=t.resource.width,e.y*=t.resource.height,e.width*=t.resource.width,e.height*=t.resource.height;let r=document.createElement("canvas");this.isVertical()?(r.width=Math.round(e.height),r.height=Math.round(e.width)):(r.width=Math.round(e.width),r.height=Math.round(e.height));let n=r.getContext("2d");if(!n)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return n.translate(r.width/2,r.height/2),n.rotate(this.config.rotate*Math.PI/180),n.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&n.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(n.fillStyle=this.config.backgroundColor,n.fillRect(0,0,r.width,r.height)),n.drawImage(t.resource,-e.x,-e.y),r}getImageScaledToCanvas(){let e=this.getDimensions(),t=this.imageState,r=document.createElement("canvas");if(this.isVertical()?(r.width=e.height,r.height=e.width):(r.width=e.width,r.height=e.height),!t.resource)return r;let n=r.getContext("2d");if(!n)return r;let s=this.calculatePosition(t,0);return n.save(),n.translate(r.width/2,r.height/2),n.rotate(this.config.rotate*Math.PI/180),n.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&n.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(n.fillStyle=this.config.backgroundColor,n.fillRect(0,0,r.width,r.height)),n.drawImage(t.resource,s.x,s.y,s.width,s.height),n.restore(),r}calculateDragPosition(e,t,r,n){let s=r-e,i=n-t;if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let l=this.imageState.width*this.config.scale,c=this.imageState.height*this.config.scale,{x:d,y:m}=this.getCroppingRect();d*=l,m*=c;let f=this.config.rotate;f%=360,f=f<0?f+360:f;let g=Math.cos(yA(f)),h=Math.sin(yA(f)),y=d+s*g+i*h,k=m+-s*h+i*g,v=1/this.config.scale*this.getXScale(),A=1/this.config.scale*this.getYScale();return{x:y/l+v/2,y:k/c+A/2}}},vA=()=>{},OY=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",vA,t),window.removeEventListener("test",vA,t)}catch{e=!1}return e},O_=o.forwardRef((e,t)=>{let{scale:r=1,rotate:n=0,border:s=25,borderRadius:i=0,width:l=200,height:c=200,color:d=[0,0,0,.5],showGrid:m=!1,gridColor:f="#666",disableBoundaryChecks:g=!1,disableHiDPIScaling:h=!1,disableCanvasRotation:y=!0,image:k,position:v,backgroundColor:A,crossOrigin:b,onLoadStart:w,onLoadFailure:P,onLoadSuccess:E,onImageReady:D,onImageChange:j,onMouseUp:S,onMouseMove:L,onPositionChange:_,borderColor:T,style:z}=e,Y=o.useRef(null),H=o.useRef(new LY({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:A,borderColor:T,showGrid:m,gridColor:f,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:b})),M=o.useRef(!1),oe=o.useRef(void 0),K=o.useRef(void 0),[Q,ee]=o.useState(!1),[fe,_e]=o.useState(!1),[$e,Ye]=o.useState(H.current.getImageState()),ye=o.useRef(S);ye.current=S;let ge=o.useRef(L);ge.current=L;let se=o.useRef(_);se.current=_,o.useEffect(()=>{H.current.updateConfig({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:A,borderColor:T,showGrid:m,gridColor:f,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:b})},[l,c,s,i,r,n,d,A,T,m,f,g,h,y,b]);let ie=o.useCallback(()=>{if(!Y.current)throw Error("No canvas found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return Y.current},[]),me=o.useCallback(()=>{let ne=ie().getContext("2d");if(!ne)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ne},[ie]),$=o.useCallback(async ne=>{_e(!0),w?.();try{let Te=await H.current.loadImage(ne);M.current=!1,ee(!1),Ye(Te),D?.(),E?.(Te)}catch{P?.()}finally{_e(!1)}},[w,D,E,P]),V=o.useCallback(()=>{let ne=ie();me().clearRect(0,0,ne.width,ne.height),H.current.clearImage(),Ye(H.current.getImageState())},[ie,me]),B=o.useCallback(()=>{let ne=me(),Te=ie();ne.clearRect(0,0,Te.width,Te.height),H.current.paint(ne),H.current.paintImage(ne,$e,s)},[me,ie,$e,s,l,c,i,r,n,d,A,T,m,f,g,h,y,b]),N=o.useCallback(ne=>{ne.preventDefault(),M.current=!0,oe.current=void 0,K.current=void 0,ee(!0)},[]),be=o.useCallback(()=>{M.current=!0,oe.current=void 0,K.current=void 0,ee(!0)},[]);o.useImperativeHandle(t,()=>({getImage:()=>H.current.getImage(),getImageScaledToCanvas:()=>H.current.getImageScaledToCanvas(),getCroppingRect:()=>H.current.getCroppingRect()}),[]),o.useEffect(()=>{let ne=me();k&&$(k),H.current.paint(ne);let Te=st=>{if(!M.current)return;st.cancelable&&st.preventDefault();let ft="targetTouches"in st?st.targetTouches[0].pageX:st.clientX,xe="targetTouches"in st?st.targetTouches[0].pageY:st.clientY,ke=oe.current,ve=K.current;if(oe.current=ft,K.current=xe,ke!==void 0&&ve!==void 0){let He=H.current.getImageState();if(He.width&&He.height){let Ee=H.current.calculateDragPosition(ft,xe,ke,ve);se.current?.(Ee);let de={...He,...Ee};H.current.setImageState(de),Ye(de)}}ge.current?.(st)},Le=()=>{M.current&&(M.current=!1,ee(!1),ye.current?.())},Ue=OY()?{passive:!1}:!1;return document.addEventListener("mousemove",Te,Ue),document.addEventListener("mouseup",Le,Ue),document.addEventListener("touchmove",Te,Ue),document.addEventListener("touchend",Le,Ue),()=>{document.removeEventListener("mousemove",Te,!1),document.removeEventListener("mouseup",Le,!1),document.removeEventListener("touchmove",Te,!1),document.removeEventListener("touchend",Le,!1)}},[]),o.useEffect(()=>{k?$(k):!k&&$e.x!==.5&&$e.y!==.5&&V()},[k,l,c,A]),o.useEffect(()=>{B()},[B]),o.useEffect(()=>{if(!fe)return;let ne=Y.current;if(!ne)return;let Te=ne.getContext("2d");if(!Te)return;let Le,Ue=performance.now(),st=ft=>{let xe=(ft-Ue)/1e3,ke=.03+Math.sin(xe*2.5)*.02+.02;Te.save(),Te.clearRect(0,0,ne.width,ne.height),Te.fillStyle=`rgba(255,255,255,${ke})`,Te.fillRect(0,0,ne.width,ne.height),Te.restore(),Le=requestAnimationFrame(st)};return Le=requestAnimationFrame(st),()=>cancelAnimationFrame(Le)},[fe]);let Ae=o.useRef({image:k,width:l,height:c,position:v,scale:r,rotate:n,imageX:$e.x,imageY:$e.y});o.useEffect(()=>{let ne=Ae.current;(ne.image!==k||ne.width!==l||ne.height!==c||ne.position!==v||ne.scale!==r||ne.rotate!==n||ne.imageX!==$e.x||ne.imageY!==$e.y)&&(j?.(),Ae.current={image:k,width:l,height:c,position:v,scale:r,rotate:n,imageX:$e.x,imageY:$e.y})},[k,l,c,v,r,n,$e.x,$e.y,j]);let q=H.current.getDimensions(),Z=H.current.getPixelRatio(),G={width:q.canvas.width,height:q.canvas.height,cursor:Q?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return re.createElement("canvas",{width:q.canvas.width*Z,height:q.canvas.height*Z,onMouseDown:N,onTouchStart:be,style:{...G,...z},ref:Y})});O_.displayName="AvatarEditor";const BY="_avatarManagerBody_1bfoi_1",WY="_editorPanel_1bfoi_7",$Y="_editorFrame_1bfoi_13",FY="_gifPreviewImage_1bfoi_21",UY="_emptyPreview_1bfoi_28",zY="_controlPanel_1bfoi_41",HY="_zoomField_1bfoi_47",VY="_zoomSlider_1bfoi_52",GY="_actionGrid_1bfoi_57",KY="_fileInput_1bfoi_71",qY="_messageStack_1bfoi_75",YY="_footerActions_1bfoi_80",ii={avatarManagerBody:BY,editorPanel:WY,editorFrame:$Y,gifPreviewImage:FY,emptyPreview:UY,controlPanel:zY,zoomField:HY,zoomSlider:VY,actionGrid:GY,fileInput:KY,messageStack:qY,footerActions:YY},ov=512,ZY=48,ng=512;function wA(e,t,r){return new Promise(n=>{e.toBlob(n,t,r)})}function JY(e,t){const r=String(e).trim()||"avatar",n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}async function XY(e,t){const r=e.getImageScaledToCanvas(),n=document.createElement("canvas");n.width=ng,n.height=ng;const s=n.getContext("2d");if(!s)throw new Error("Image editing requires a 2D canvas context.");s.drawImage(r,0,0,ng,ng);const l=await wA(n,"image/webp",.9)||await wA(n,"image/jpeg",.9);if(!l)throw new Error("Unable to prepare profile photo.");const c=l.type||"image/jpeg",d=c==="image/webp"?".webp":".jpg";return new File([l],JY(t,d),{type:c,lastModified:Date.now()})}function QY({isOpen:e,theme:t,title:r="Edit Photo",currentImageUrl:n,editorImageUrl:s="",fallbackInitial:i,accept:l,busy:c,generating:d=!1,generateLabel:m="Generate",hasPendingImage:f,canRemove:g,error:h,notice:y,onClose:k,onApplyImage:v,onGenerateImage:A,onRemoveImage:b,onDiscardPendingImage:w}){const P=o.useRef(null),E=o.useRef(null),D=o.useRef(!1),j=o.useRef(!1),[S,L]=o.useState(null),[_,T]=o.useState(""),[z,Y]=o.useState(1.1),[H,M]=o.useState(!1),[oe,K]=o.useState(null),[Q,ee]=o.useState(null);o.useEffect(()=>{e||(L(null),T(""),Y(1.1),M(!1),j.current=!1,K(null),ee(null))},[e]),o.useEffect(()=>{e&&(M(!1),j.current=!1)},[n,s,e]),o.useEffect(()=>{if(!S){T("");return}const B=URL.createObjectURL(S);return T(B),()=>URL.revokeObjectURL(B)},[S]);const fe=_||s||n,_e=S?.name||"avatar",$e=String(i||"").trim().charAt(0).toUpperCase(),Ye=oe||h,ye=Q||y,ge=c||d,se=o.useCallback(B=>{if(K(null),ee(null),!!B){if(!B.type.startsWith("image/")){K("Profile photo must be an image file.");return}B.type==="image/gif"&&ee("Animated GIFs will upload without repositioning."),L(B),Y(1.1),M(!1),j.current=!1}},[]),ie=o.useCallback(async()=>{K(null);const B=P.current;if(S?.type==="image/gif"){await v(S)&&k();return}if(!B||!fe){K("Choose a profile photo first.");return}try{const N=await XY(B,_e);await v(N,S,{preserveExistingSource:!S&&!!s})&&k()}catch(N){K(N instanceof Error?N.message:"Unable to prepare profile photo.")}},[n,fe,s,v,k,S,_e]),me=o.useCallback(async()=>{if(!(!A||ge||D.current)){D.current=!0,K(null),ee(null);try{await A()&&(L(null),Y(1.1),M(!1),j.current=!1)}catch(B){K(B instanceof Error?B.message:"Unable to generate profile photo.")}finally{D.current=!1}}},[ge,A]),$=f||!!S||H,V=o.useMemo(()=>a.jsxs("div",{className:ii.footerActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:k,disabled:c,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{ie()},disabled:ge||!$,children:c?"Applying...":"Apply Changes"})]}),[c,$,ie,ge,k]);return a.jsx(Ko,{isOpen:e,onClose:k,title:r,size:"md",theme:t,draggable:!0,footer:V,children:a.jsxs("div",{className:ii.avatarManagerBody,children:[a.jsxs("div",{className:ii.editorPanel,children:[a.jsx("div",{className:`tf-surface-inset ${ii.editorFrame}`,onPointerDown:()=>{fe&&S?.type!=="image/gif"&&(j.current=!0)},children:S?.type==="image/gif"&&_?a.jsx("img",{src:_,alt:"",className:ii.gifPreviewImage}):fe?a.jsx(O_,{ref:P,image:fe,width:ov,height:ov,border:ZY,borderRadius:ov/2,scale:z,color:[15,15,26,.72],backgroundColor:"transparent",onPositionChange:()=>{j.current&&M(!0)},style:{width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",display:"block",borderRadius:"var(--radius-lg)",boxShadow:"var(--box-shadow-sm)"},disableCanvasRotation:!0}):a.jsx("div",{className:ii.emptyPreview,"aria-hidden":"true",children:$e})}),a.jsxs("div",{className:ii.controlPanel,children:[a.jsx("input",{ref:E,type:"file","aria-label":"Choose profile photo",accept:l,className:ii.fileInput,onChange:B=>se(B.target.files?.[0]||null),disabled:ge}),a.jsxs("div",{className:ii.actionGrid,children:[a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>E.current?.click(),disabled:ge,children:[a.jsx(F0,{size:16}),"Choose"]}),f&&w&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:w,disabled:ge,children:[a.jsx($i,{size:16}),"Discard"]}),A&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{me()},disabled:ge,"aria-busy":d,children:[d?a.jsx(na,{size:16,className:R.spinner}):a.jsx(XA,{size:16}),d?"Generating":m]}),g&&b&&a.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:b,disabled:ge,children:[a.jsx(fp,{size:16}),"Remove"]})]}),a.jsxs("label",{className:`tf-field-stack ${ii.zoomField}`,children:[a.jsx("span",{className:"tf-field-label",children:"Zoom"}),a.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:z,onChange:B=>{Y(Number(B.target.value)),M(!0)},className:ii.zoomSlider,disabled:ge||!fe||S?.type==="image/gif"})]})]})]}),(Ye||ye)&&a.jsxs("div",{className:ii.messageStack,children:[Ye&&a.jsx("p",{className:"tf-text-error",children:Ye}),ye&&!Ye&&a.jsx("p",{className:"tf-text-helper",children:ye})]})]})})}const Qv="support@taskforcehq.ai";function ag(e){return String(e||"").trim()}function eZ(e={}){const t=ag(e.workspaceName),r=ag(e.workspaceId),n=ag(e.accountLabel),s=ag(e.runtimeMode),i=[t?`Workspace: ${t}`:"",r?`Workspace ID: ${r}`:"",n?`Account: ${n}`:"",s?`Runtime: ${s}`:""].filter(Boolean),l=["Hi Taskforce team,","","I need help with:","",i.length>0?"Context:":"",...i,(i.length>0,""),"What happened:",""].filter((d,m,f)=>d!==""||f[m-1]!==""),c=new URLSearchParams({subject:"Taskforce support request",body:l.join(`
|
|
6
|
-
`)});return`mailto:${Qv}?${c.toString()}`}function tZ({isOpen:e,theme:t,onClose:r,onOpenSettings:n,supportMailtoHref:s}){const[i,l]=o.useState("idle"),c=async()=>{try{await navigator.clipboard.writeText(Qv),l("copied"),window.setTimeout(()=>l("idle"),1600)}catch{l("failed"),window.setTimeout(()=>l("idle"),2200)}};return a.jsx(Ko,{isOpen:e,onClose:r,title:"Help & Support",size:"sm",theme:t,draggable:!0,children:a.jsxs("div",{className:`${yr.form} ${Kr.modalBody} ${Kr.helpModalBody}`,children:[a.jsxs("div",{className:Kr.helpHero,children:[a.jsx("span",{className:Kr.helpHeroIcon,"aria-hidden":"true",children:a.jsx(U0,{size:20})}),a.jsxs("div",{className:Kr.helpHeroCopy,children:[a.jsx("h2",{className:"tf-heading-card",children:"How can we help?"}),a.jsx("p",{className:"tf-text-secondary",children:"Tell us what you were trying to do, what happened, and any workspace context that could help us reproduce it."})]})]}),a.jsxs("section",{className:`${Kr.supportContactCard} tf-surface-panel`,"aria-labelledby":"support-email-heading",children:[a.jsx("div",{className:Kr.supportContactHeader,children:a.jsxs("div",{children:[a.jsx("h3",{className:"tf-label-micro",id:"support-email-heading",children:"Email support"}),a.jsx("a",{className:Kr.supportEmailAddress,href:s,children:Qv})]})}),a.jsxs("div",{className:Kr.supportActionRow,children:[a.jsxs("a",{className:`tf-button-primary tf-button-compact ${Kr.supportAction}`,href:s,children:[a.jsx(z0,{size:15}),"Email Support"]}),a.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Kr.supportAction}`,onClick:()=>{c()},type:"button",children:[i==="copied"?a.jsx(Fi,{size:15}):a.jsx(oC,{size:15}),i==="copied"?"Copied":i==="failed"?"Copy failed":"Copy address"]})]})]}),a.jsxs("section",{className:Kr.supportPanel,"aria-labelledby":"support-settings-heading",children:[a.jsxs("div",{className:Kr.supportPanelHeader,children:[a.jsx(Qm,{size:17,"aria-hidden":"true"}),a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",id:"support-settings-heading",children:"Check workspace settings"}),a.jsx("p",{className:"tf-text-secondary",children:"Common workspace, appearance, and setup options are available in Settings."})]})]}),a.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Kr.supportAction}`,onClick:n,type:"button",children:[a.jsx(Qm,{size:15}),"Open Settings"]})]})]})})}function rZ({prompt:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Ko,{isOpen:!!e,onClose:r,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${R.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[a.jsx("p",{className:"tf-text-body",children:"Due date is before scheduled date."}),e&&a.jsxs("p",{className:"tf-text-helper",children:["Due: ",e.dueDate," · Scheduled: ",e.scheduledDate]}),a.jsxs("div",{className:R.formActions,children:[a.jsx("button",{className:R.cancelBtn,onClick:r,children:"Go Back"}),a.jsx("button",{className:R.submitBtn,onClick:n,children:"Save Anyway"})]})]})})}function nZ({isOpen:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Ko,{isOpen:e,onClose:r,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${R.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[a.jsx("p",{className:"tf-text-body",children:"Turning on cloud sync can renumber task, document, and image references to match the cloud workspace."}),a.jsxs("p",{className:"tf-text-helper",children:["Labels like ",a.jsx("code",{children:"T-12"}),", ",a.jsx("code",{children:"D-4"}),", and ",a.jsx("code",{children:"IMG-2"})," may change. Plain file attachments are not renumbered."]}),a.jsxs("div",{className:R.formActions,children:[a.jsx("button",{className:R.cancelBtn,onClick:r,children:"Go Back"}),a.jsx("button",{className:R.submitBtn,onClick:n,children:"Enable Sync Anyway"})]})]})})}const aZ="_syncStatusOverlay_b2fe8_1",sZ="_syncStatusModal_b2fe8_5",oZ="_syncStatusTop_b2fe8_10",iZ="_syncStatusMetaHeader_b2fe8_19",cZ="_syncStatusBadge_b2fe8_26",lZ="_syncStatusLabel_b2fe8_40",dZ="_syncToggle_b2fe8_51",uZ="_syncToggleTransition_b2fe8_59",fZ="_syncToggleControl_b2fe8_66",mZ="_syncToggleControlEnabled_b2fe8_82",pZ="_syncToggleControlDisabled_b2fe8_88",hZ="_syncToggleControlBusy_b2fe8_92",gZ="_syncToggleControlBlocked_b2fe8_97",yZ="_syncToggleInput_b2fe8_102",kZ="_syncToggleState_b2fe8_115",vZ="_syncToggleStateOn_b2fe8_129",wZ="_syncToggleStateOff_b2fe8_133",bZ="_syncToggleThumb_b2fe8_142",SZ="_syncStatusOverview_b2fe8_153",AZ="_syncStatusEventsPanel_b2fe8_154",CZ="_syncStatusAdvanced_b2fe8_155",IZ="_syncStatusOverviewRow_b2fe8_166",_Z="_syncStatusSummaryValue_b2fe8_180",TZ="_syncStatusValue_b2fe8_181",xZ="_syncStatusIssueRow_b2fe8_189",RZ="_syncStatusIssueRowError_b2fe8_193",PZ="_syncStatusValueMuted_b2fe8_197",jZ="_syncStatusValueError_b2fe8_204",EZ="_syncStatusKeyMetrics_b2fe8_211",NZ="_syncStatusCompactGrid_b2fe8_212",DZ="_syncStatusCompactItem_b2fe8_225",MZ="_syncStatusAdvancedContent_b2fe8_266",LZ="_syncStatusDiagnosticsList_b2fe8_273",OZ="_syncStatusOwnershipControl_b2fe8_279",BZ="_syncStatusDiagnosticRow_b2fe8_300",WZ="_syncStatusPanelHeader_b2fe8_322",$Z="_syncStatusPanelMeta_b2fe8_329",FZ="_syncStatusMismatchPanel_b2fe8_335",UZ="_syncStatusMismatchItem_b2fe8_345",zZ="_syncStatusEventFilters_b2fe8_364",HZ="_syncStatusEventFilterActive_b2fe8_391",VZ="_syncStatusEventsList_b2fe8_396",GZ="_syncStatusEventItem_b2fe8_406",KZ="_syncStatusEventItemError_b2fe8_413",qZ="_syncStatusEventItemMuted_b2fe8_418",YZ="_syncStatusEventLine_b2fe8_422",ZZ="_syncStatusFooter_b2fe8_432",JZ="_syncStatusFooterPrimary_b2fe8_441",Lt={syncStatusOverlay:aZ,syncStatusModal:sZ,syncStatusTop:oZ,syncStatusMetaHeader:iZ,syncStatusBadge:cZ,syncStatusLabel:lZ,syncToggle:dZ,syncToggleTransition:uZ,syncToggleControl:fZ,syncToggleControlEnabled:mZ,syncToggleControlDisabled:pZ,syncToggleControlBusy:hZ,syncToggleControlBlocked:gZ,syncToggleInput:yZ,syncToggleState:kZ,syncToggleStateOn:vZ,syncToggleStateOff:wZ,syncToggleThumb:bZ,syncStatusOverview:SZ,syncStatusEventsPanel:AZ,syncStatusAdvanced:CZ,syncStatusOverviewRow:IZ,syncStatusSummaryValue:_Z,syncStatusValue:TZ,syncStatusIssueRow:xZ,syncStatusIssueRowError:RZ,syncStatusValueMuted:PZ,syncStatusValueError:jZ,syncStatusKeyMetrics:EZ,syncStatusCompactGrid:NZ,syncStatusCompactItem:DZ,syncStatusAdvancedContent:MZ,syncStatusDiagnosticsList:LZ,syncStatusOwnershipControl:OZ,syncStatusDiagnosticRow:BZ,syncStatusPanelHeader:WZ,syncStatusPanelMeta:$Z,syncStatusMismatchPanel:FZ,syncStatusMismatchItem:UZ,syncStatusEventFilters:zZ,syncStatusEventFilterActive:HZ,syncStatusEventsList:VZ,syncStatusEventItem:GZ,syncStatusEventItemError:KZ,syncStatusEventItemMuted:qZ,syncStatusEventLine:YZ,syncStatusFooter:ZZ,syncStatusFooterPrimary:JZ};function XZ(e){const t=e?.preparedPlan,r=e?.settledBatchOperationIdentities;if(e?.settlementVersion!==1||!t||!Array.isArray(r)||t.batches.length!==t.batchOperationIdentities.length||new Set(t.batchOperationIdentities).size!==t.batchOperationIdentities.length||new Set(r).size!==r.length||r.some(c=>!t.batchOperationIdentities.includes(c)))return null;const n=new Set(r),s=t.batches.reduce((c,d)=>c+d.length,0),i=t.batches.reduce((c,d,m)=>n.has(t.batchOperationIdentities[m])?c+d.length:c,0),l=t.batchOperationIdentities.findIndex(c=>!n.has(c));return{effectiveTotalBatches:t.batches.length,settledBatches:n.size,effectiveTotalChanges:s,settledChanges:i,remainingChanges:s-i,firstUnsettledBatchIndex:l<0?null:l}}function B_(e){return/\btaskforce session is invalid\b|\bauthenticated taskforce session is required\b/i.test(e||"")}function QZ(e){if(!e)return null;const t=e.snapshot;if(e.phase!=="ready"){const Ye=e.phase==="error",ye=B_(e.errorMessage);return{header:{actionable:Ye,status:Ye?"attention":"checking",syncEnabledLabel:"unknown",summary:Ye?"The shared sync coordinator status is unavailable.":"Reading shared sync coordinator status.",recommendedAction:Ye?ye?"Sign out and sign back in so automatic sync can resume.":"Wait for automatic recovery. If the coordinator remains unavailable, restart the local server.":"Wait for the coordinator status check to finish.",lastError:e.errorMessage||(Ye?"Coordinator status unavailable.":"None")},pendingLocalChanges:"Unknown",incomingCloudChanges:"Not checked",stage:Ye?"unavailable":"checking coordinator",lastPullAt:null,lastPushAt:null,lastSyncedAt:null,busy:e.phase==="attaching",repairBusy:!1,diagnostics:[{label:"Coordinator",value:e.errorMessage||e.phase}]}}if(!t||t.state.ownershipMode!=="server")return null;const r=t.workspace,n=r?.runner||null,s=n?.checkpoint?.checkpoint||null,i=r?.outbox||null,l=i?.operationStates,c=l?.stale||0,d=l?.blocked??i?.blocked??0,m=l?.retryScheduled||0,f=!!(i?.recovery&&i.recovery.state!=="completed"),g=i?.attachmentApplyObligations?.open||0,h=t.credential.status!=="ready",y=t.state.transitionState!=="idle",k=!n||!n.running||!n.acceptingWork||!s,v=s?.controlState==="error"||!!s?.lastError,A=s?.controlState==="retry-wait"||m>0,b=t.permits.recoveryObligations,w=s?.pendingV2Push||null,P=w?.lastBatchProgress||null,E=XZ(w),D=E?.remainingChanges??Math.max(0,(w?.frozenPayload.changes.length||0)-(P?.completedChanges||0)),j=E?.settledBatches??P?.completedBatches??0,S=E?.effectiveTotalBatches??P?.totalBatches??0,L=!!(P&&(P.failureDomain==="content"||P.failureDomain==="mixed")&&D>0),_=!!(s?.syncEnabled&&s.syncPhase==="attach-cloud"&&!s.lastPullAt),T=!!(n?.queuedCommandCount||["starting","pulling","pushing","repairing","stopping"].includes(s?.controlState||"")||(l?.inFlight??i?.inFlight??0)>0),z=T||(i?.pending||0)>0,Y=L&&!T,H=T,M=s?.controlState==="repairing";let oe="healthy",K="Sync is healthy.",Q="No action needed.",ee=s?.lastError||"None";if(h)oe="attention",K="Sync is paused because the coordinator credential is unavailable.",Q="Sign in again, then retry sync.";else if(y)oe="syncing",K="Sync ownership is changing safely.",Q="Wait for the coordinator transition to finish.";else if(k)oe="attention",K="The shared sync runner is unavailable.",Q="Wait for automatic recovery. If the runner does not recover, restart the local server.";else if(g>0)oe="attention",K=`${g} incoming attachment ${g===1?"change is":"changes are"} waiting for content.`,Q=s&&!s.syncEnabled?"Turn on sync to resume automatic attachment hydration.":"Wait for the scheduled attachment hydration retry.",ee=i?.attachmentApplyObligations?.lastError||ee;else if(b>0||d>0||c>0||f)oe="attention",K="Durable local changes need reconciliation.",Q=s&&!s.syncEnabled?"Turn on sync, then press Repair to reconcile and replay supported changes.":"Press Repair to reconcile and replay supported changes.";else if(Y){oe="attention";const Ye=P.failureDomain==="content"?"content":"push";K=`${P.failedChangeCount} ${Ye} ${P.failedChangeCount===1?"change is":"changes are"} waiting to retry; ${D} total push ${D===1?"change remains":"changes remain"}.`,Q=s&&!s.syncEnabled?"Turn on sync to resume the bounded content retry.":"Wait for the scheduled content retry."}else s&&!s.syncEnabled?(oe="off",K="Workspace sync is turned off.",Q="Turn on sync when you are ready to connect this workspace.",ee="None"):v&&!T?(oe="attention",K=s?.lastError||"The shared sync runner reported an error.",Q="Wait for the automatic retry. If the same issue returns, press Repair."):A?(oe="attention",K="Sync is waiting for a scheduled retry.",Q="Wait for the scheduled retry."):_?(oe="attention",K="The initial cloud baseline has not completed.",Q="Keep sync enabled until the first cloud check completes."):z&&(oe="syncing",K="The shared sync runner is processing workspace changes.",Q="Wait for the current transfer to finish.");const fe=s?.lastPullAt?s.controlState==="pulling"?"Checking — total unknown":"No known backlog at last check":s?.controlState==="pulling"?"Checking — total unknown":"Not checked",_e=i?i.activeDepth+D:w?D:"Unknown",$e=s?.controlState||"unavailable";return{header:{actionable:!0,status:oe,syncEnabledLabel:s?.syncEnabled?"yes":"no",summary:K,recommendedAction:Q,lastError:ee},pendingLocalChanges:_e,incomingCloudChanges:fe,stage:$e,lastPullAt:s?.lastPullAt||null,lastPushAt:s?.lastPushAt||null,lastSyncedAt:s?.lastSyncedAt||null,busy:H,repairBusy:M,diagnostics:[{label:"Coordinator",value:`Generation ${t.state.coordinatorGeneration}; server-owned`},{label:"Durable outbox",value:i?`${l?.pending??i.pending} pending, ${m} retry scheduled, ${l?.inFlight??i.inFlight} in flight, ${c} stale, ${d} blocked`:"Unavailable"},{label:"Recovery obligations",value:String(b)},{label:"Attachment apply obligations",value:i?.attachmentApplyObligations?`${i.attachmentApplyObligations.open} open, ${i.attachmentApplyObligations.due} due, ${i.attachmentApplyObligations.totalAttempts} attempts`:"Unavailable"},{label:"Content push backlog",value:L?`${P.failedChangeCount} blocked ${P.failureDomain==="content"?"content":"push"} ${P.failedChangeCount===1?"change":"changes"}; ${D} total push ${D===1?"change remains":"changes remain"}; ${j}/${S} batches settled`:"None"},{label:"Oldest actionable change",value:i?.oldestActionableAt||"None"},{label:"Local data version",value:String(t.state.localDataVersion)}]}}function eJ(e){switch(e){case"auth-required":return{summary:"Sync is paused until you sign in again.",recommendedAction:"Sign in so automatic sync can resume."};case"attach-cloud":return{summary:"This workspace still needs its first cloud pull before local pushes can run.",recommendedAction:"Keep this window open for the first cloud pull. If it seems stuck, press Repair."};case"provision-local":return{summary:"This workspace is still doing its first cloud upload before normal pulls can run.",recommendedAction:"Keep this window open until the first cloud upload finishes."};case"repair-active":return{summary:"Repair is already running for this workspace.",recommendedAction:"Wait for repair to finish."};case"retry-pending":return{summary:"Sync hit a temporary problem and is waiting for its scheduled retry.",recommendedAction:"Wait for the automatic retry."};case"lease-held":return{summary:"Another local window is already syncing this workspace.",recommendedAction:"Use a single local window for sync, or close the other syncing window."};case"invalid-workspace":return{summary:"Workspace setup is required before sync can run.",recommendedAction:"Open or create a named workspace before retrying sync."};case"cloud-auth-unconfigured":return{summary:"Cloud sync is unavailable because cloud authentication is not configured.",recommendedAction:"Configure cloud authentication before turning on sync."};case"runtime-not-local":return{summary:"Workspace sync controls are only available in the local runtime.",recommendedAction:"Open this workspace in the local app to manage sync."};case"sync-disabled":return{summary:"Workspace sync is currently turned off.",recommendedAction:"Turn on sync when you are ready to connect this workspace to cloud."};default:return null}}function tJ(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const r=Math.max(0,Number(e.coordinatorRecoveryObligations||0)),n=eJ(e.retryBlockedReason||e.pullBlockedReason||e.pushBlockedReason||null);return r>0&&e.retryBlockedReason!=="auth-required"&&e.pullBlockedReason!=="auth-required"&&e.pushBlockedReason!=="auth-required"&&e.retryBlockedReason!=="repair-active"&&e.pullBlockedReason!=="repair-active"&&e.pushBlockedReason!=="repair-active"?{actionable:t,status:"attention",syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:`${r} durable sync recovery obligation${r===1?"":"s"} remain.`,recommendedAction:e.workspaceCloudSyncEnabled?"Press Repair to reconcile the durable sync ledger.":"Turn on sync, then press Repair to reconcile the durable sync ledger.",lastError:e.workspaceSyncError}:{actionable:t,status:e.workspaceSyncStatus,syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:n?.summary||e.workspaceSyncSummary,recommendedAction:n?.recommendedAction||e.workspaceSyncRecommendedAction,lastError:e.workspaceSyncError}}return{actionable:t,status:"off",syncEnabledLabel:"no",summary:"Sign in to enable workspace sync controls on this device.",recommendedAction:"Sign in to manage workspace sync for this workspace.",lastError:"Sign in to enable workspace sync controls on this device."}}function rJ({isOpen:e,theme:t,currentWorkspaceLabel:r,syncStatus:n,syncStatusMeta:s,workspaceCloudSyncEnabled:i,syncControlBusy:l,syncControlIntent:c,canManageWorkspaceSync:d,workspaceSyncSummary:m,workspaceSyncRecommendedAction:f,workspaceSyncRepairBusy:g,referenceMismatchCount:h,syncStageLabel:y,workspaceSyncPendingChanges:k,incomingCloudChanges:v,formattedLastSyncTime:A,formattedLastPullTime:b,formattedLastPushTime:w,syncLastError:P,activeReferenceMismatchSummaries:E,syncDiagnosticsSummary:D,syncEventRows:j,syncEventsListRef:S,workspaceSyncRepairQueued:L,workspaceSyncBusy:_,workspaceSyncCopied:T,coordinatorOwnershipMode:z,coordinatorOwnershipTransferBusy:Y,coordinatorOwnershipTransferDisabled:H,onClose:M,onToggleWorkspaceSync:oe,onRepairSync:K,onCopyReport:Q,onTransferCoordinatorOwnership:ee}){const[fe,_e]=o.useState("all");o.useEffect(()=>{e&&_e("all")},[e]);const $e=n==="attention",Ye=c==="enabling"?!0:c==="disabling"?!1:i,ye=c==="enabling"?"Turning on…":c==="disabling"?"Turning off…":null,ge=g?h>0?`Repair is reconciling cloud state, including ${h} reference mismatch${h===1?"":"es"}.`:"Repair is reconciling workspace state from the cloud.":$e&&P!=="None"?P:$e?m:"No active issue.",se=!g&&$e&&P!=="None",ie=/\banother local taskforce process owns workspace synchronization\b/i.test(P),me=B_(P),$=i&&n!=="checking"&&!ie&&!me&&($e||_||g||L),V=o.useMemo(()=>fe==="issues"?j.filter(N=>N.tone==="error"):j,[fe,j]),B=a.jsxs("div",{className:Lt.syncStatusFooter,children:[a.jsxs("button",{className:R.cancelBtn,onClick:Q,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[a.jsx(oC,{size:14}),a.jsx("span",{children:T?"Copied":"Copy Report"})]}),a.jsx("div",{className:Lt.syncStatusFooterPrimary,children:a.jsx("button",{className:R.cancelBtn,onClick:K,disabled:!$||g||L,title:g?"Repair is running now.":L?"Repair is queued and will start when the current sync finishes.":i?ie?"Repair is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":me?"Sign out and sign back in before running Repair.":_?"Queue a repair to start automatically when the current sync finishes.":$?"Advanced recovery: clear the saved pull cursor and re-fetch cloud state from the beginning.":"Repair is available when sync needs attention.":"Turn on workspace sync before running Repair.",children:g?a.jsxs(a.Fragment,{children:[a.jsx(na,{size:14,className:R.spinner}),"Repairing..."]}):L?"Repair Queued":"Repair"})})]});return a.jsx(Ko,{isOpen:e,onClose:M,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,className:Lt.syncStatusOverlay,footer:B,children:a.jsxs("div",{className:`${yr.form} ${Lt.syncStatusModal}`,children:[a.jsxs("div",{className:Lt.syncStatusTop,children:[a.jsxs("div",{className:Lt.syncStatusMetaHeader,children:[a.jsx("div",{className:Lt.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),a.jsxs("span",{className:Lt.syncStatusLabel,children:["Workspace: ",a.jsx("code",{children:r})]})]}),a.jsxs("label",{className:Lt.syncToggle,children:[ye?a.jsx("span",{className:Lt.syncToggleTransition,"aria-live":"polite",children:ye}):null,a.jsxs("span",{className:[Lt.syncToggleControl,Ye?Lt.syncToggleControlEnabled:Lt.syncToggleControlDisabled,l?Lt.syncToggleControlBusy:"",d?"":Lt.syncToggleControlBlocked].filter(Boolean).join(" "),children:[a.jsx("input",{className:Lt.syncToggleInput,type:"checkbox",role:"switch","aria-label":ye||"Enable Sync",checked:Ye,disabled:!d||l,onChange:N=>oe(N.target.checked)}),a.jsx("span",{className:`${Lt.syncToggleState} ${Lt.syncToggleStateOn}`,children:"On"}),a.jsx("span",{className:`${Lt.syncToggleState} ${Lt.syncToggleStateOff}`,children:"Off"}),a.jsx("span",{className:Lt.syncToggleThumb})]})]})]}),a.jsxs("section",{className:Lt.syncStatusOverview,"aria-label":"Sync status",children:[a.jsxs("div",{className:Lt.syncStatusOverviewRow,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Health"}),a.jsx("span",{className:Lt.syncStatusSummaryValue,children:m})]}),a.jsxs("div",{className:Lt.syncStatusOverviewRow,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Next step"}),a.jsx("span",{className:Lt.syncStatusSummaryValue,children:f})]}),a.jsxs("div",{className:[Lt.syncStatusOverviewRow,Lt.syncStatusIssueRow,se?Lt.syncStatusIssueRowError:""].filter(Boolean).join(" "),children:[a.jsxs("span",{className:Lt.syncStatusLabel,children:[se?a.jsx(Od,{size:12}):null,"Current issue"]}),a.jsx("span",{className:se?Lt.syncStatusValueError:Lt.syncStatusValueMuted,children:ge})]})]}),a.jsxs("div",{className:Lt.syncStatusKeyMetrics,children:[a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Outgoing local changes"}),a.jsx("span",{className:Lt.syncStatusValue,children:k})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Incoming cloud changes"}),a.jsx("span",{className:Lt.syncStatusValue,children:v})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Last cloud check"}),a.jsx("span",{className:Lt.syncStatusValue,children:b})]})]}),a.jsxs("details",{className:Lt.syncStatusAdvanced,children:[a.jsxs("summary",{children:[a.jsx("span",{children:"Advanced diagnostics"}),a.jsx(Fd,{size:16,"aria-hidden":"true"})]}),a.jsxs("div",{className:Lt.syncStatusAdvancedContent,children:[a.jsxs("div",{className:Lt.syncStatusCompactGrid,children:[a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Stage"}),a.jsx("span",{className:Lt.syncStatusValue,children:y})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Last upload"}),a.jsx("span",{className:Lt.syncStatusValue,children:w})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Last successful transfer"}),a.jsx("span",{className:Lt.syncStatusValue,children:A})]})]}),a.jsx("div",{className:Lt.syncStatusDiagnosticsList,children:D.map(N=>a.jsxs("div",{className:Lt.syncStatusDiagnosticRow,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:N.label}),a.jsx("span",{className:Lt.syncStatusValue,children:N.value})]},N.label))}),z?a.jsxs("div",{className:Lt.syncStatusOwnershipControl,children:[a.jsxs("div",{children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Sync coordinator"}),a.jsx("span",{className:Lt.syncStatusValue,children:z==="server"?"Local server owns background synchronization.":"This browser owns background synchronization."})]}),a.jsx("button",{className:R.cancelBtn,type:"button",onClick:ee,disabled:Y||H,title:Y?"Sync ownership is transferring.":H?"Finish active sync or recovery work before transferring ownership.":z==="server"?"Return background synchronization to this browser.":"Move background synchronization to the local Taskforce server.",children:Y?a.jsxs(a.Fragment,{children:[a.jsx(na,{size:14,className:R.spinner}),"Transferring..."]}):z==="server"?"Use browser sync":"Use server sync"})]}):null,h>0&&a.jsxs("div",{className:Lt.syncStatusMismatchPanel,children:[a.jsxs("div",{className:Lt.syncStatusPanelHeader,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Identifier integrity"}),a.jsxs("span",{className:Lt.syncStatusPanelMeta,children:[h," mismatch",h===1?"":"es"," detected"]})]}),a.jsx("span",{className:Lt.syncStatusValue,children:"Cloud-backed sync preserved the incoming cloud reference and renumbered the displaced local item."}),E.map(N=>a.jsxs("div",{className:Lt.syncStatusMismatchItem,children:[a.jsx("span",{className:Lt.syncStatusValue,children:N.pathLabel}),N.refsLabel?a.jsx("span",{className:Lt.syncStatusPanelMeta,children:N.refsLabel}):null]},N.key))]})]})]}),a.jsxs("section",{className:Lt.syncStatusEventsPanel,"aria-label":"Recent sync events",children:[a.jsxs("div",{className:Lt.syncStatusPanelHeader,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Recent events"}),a.jsxs("div",{className:Lt.syncStatusEventFilters,"aria-label":"Filter recent events",children:[a.jsx("button",{type:"button",className:fe==="all"?Lt.syncStatusEventFilterActive:"","aria-pressed":fe==="all",onClick:()=>_e("all"),children:"All"}),a.jsx("button",{type:"button",className:fe==="issues"?Lt.syncStatusEventFilterActive:"","aria-pressed":fe==="issues",onClick:()=>_e("issues"),children:"Issues"})]})]}),a.jsx("div",{ref:S,className:Lt.syncStatusEventsList,children:V.length>0?V.map(N=>a.jsx("div",{className:[Lt.syncStatusEventItem,N.tone==="error"?Lt.syncStatusEventItemError:"",N.tone==="muted"?Lt.syncStatusEventItemMuted:""].filter(Boolean).join(" "),children:a.jsx("span",{className:Lt.syncStatusEventLine,children:N.text})},N.key)):a.jsx("div",{className:`${Lt.syncStatusEventItem} ${Lt.syncStatusEventItemMuted}`,children:a.jsx("span",{className:Lt.syncStatusEventLine,children:"No issues in recent events."})})})]})]})})}function nJ({isOpen:e,theme:t,teamPlanMode:r,teamMgmtError:n,teamManagementTab:s,teamUsersLoading:i,teamUsers:l,teamActionBusyUserId:c,teamInviteFeedback:d,teamInviteEmail:m,teamInviteRole:f,teamInvitePermissionMode:g,teamInviteBusy:h,pendingInvites:y,teamAuditLoading:k,teamAuditEvents:v,teamAuditPage:A,teamAuditPages:b,teamAuditHasMore:w,onClose:P,onOpenMembersTab:E,onOpenInvitesTab:D,onOpenAuditTab:j,onMemberRoleChange:S,onMemberPermissionChange:L,onToggleMemberDisabled:_,onRevokeInvite:T,onRemoveMember:z,onInviteEmailChange:Y,onInviteRoleChange:H,onInvitePermissionModeChange:M,onSubmitInvite:oe,onLoadAuditPrevious:K,onLoadAuditNext:Q}){return a.jsx(Ko,{isOpen:e,onClose:P,title:"Team Management",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${yr.form} ${Kr.modalBody}`,children:[r==="personal"&&a.jsx("p",{className:Qe.loginError,children:"Team management is only available in TEAM accounts."}),n&&a.jsx("p",{className:Qe.loginError,children:n}),a.jsxs("div",{className:`${R.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[a.jsx("button",{className:`${R.settingsTabBtn} ${s==="members"?R.settingsTabBtnActive:""}`,onClick:E,children:"Members"}),a.jsx("button",{className:`${R.settingsTabBtn} ${s==="invites"?R.settingsTabBtnActive:""}`,onClick:D,children:"Invites"}),a.jsx("button",{className:`${R.settingsTabBtn} ${s==="audit"?R.settingsTabBtnActive:""}`,onClick:j,children:"Audit Log"})]}),s==="members"&&a.jsxs("div",{className:gr.accountHubCard,children:[i&&a.jsx("p",{className:Kr.mutedText,children:"Loading members..."}),!i&&l.length===0&&a.jsx("p",{className:Kr.mutedText,children:"No users found."}),!i&&l.map(ee=>a.jsxs("div",{className:Kr.memberRow,children:[a.jsx("div",{className:Kr.memberTitle,children:ee.displayName||ee.email}),a.jsxs("div",{className:gr.accountMenuMeta,children:[ee.email," · ",ee.status,ee.disabled?" · deactivated":""]}),a.jsxs("div",{className:Kr.memberActions,children:[a.jsxs("select",{className:`${R.input} ${Kr.selectRole}`,value:ee.role,onChange:fe=>S(ee.userId,fe.target.value),disabled:c===ee.userId,children:[a.jsx("option",{value:"owner",children:"Owner"}),a.jsx("option",{value:"admin",children:"Admin"}),a.jsx("option",{value:"member",children:"Member"})]}),ee.role==="member"&&a.jsxs("select",{className:`${R.input} ${Kr.selectPermission}`,value:ee.permissionMode,onChange:fe=>L(ee.userId,fe.target.value),disabled:c===ee.userId,children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:R.cancelBtn,disabled:c===ee.userId,onClick:()=>_(ee.userId,!ee.disabled),children:ee.disabled?"Reactivate":"Deactivate"}),ee.status==="invited"&&a.jsx("button",{className:R.cancelBtn,disabled:c===ee.userId,onClick:()=>T(ee.userId),children:"Revoke Invite"}),a.jsx("button",{className:R.cancelBtn,disabled:c===ee.userId,onClick:()=>z(ee.userId),children:"Remove"})]})]},ee.userId))]}),s==="invites"&&a.jsxs("div",{className:gr.accountHubCard,children:[d&&a.jsx("p",{className:Kr.sectionText,children:d}),a.jsxs("div",{className:R.pathInputGroup,children:[a.jsx("label",{className:`${R.label} ${Kr.labelFixed}`,children:"Email"}),a.jsx("input",{className:R.input,value:m,onChange:ee=>Y(ee.target.value),placeholder:"name@example.com"})]}),a.jsxs("div",{className:R.pathInputGroup,children:[a.jsx("label",{className:`${R.label} ${Kr.labelFixed}`,children:"Role"}),a.jsxs("select",{className:`${R.input} ${Kr.selectRole}`,value:f,onChange:ee=>H(ee.target.value==="admin"?"admin":"member"),children:[a.jsx("option",{value:"member",children:"Member"}),a.jsx("option",{value:"admin",children:"Admin"})]}),f==="member"&&a.jsxs("select",{className:`${R.input} ${Kr.selectPermission}`,value:g,onChange:ee=>M(ee.target.value==="read-only"?"read-only":"read-write"),children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:R.submitBtn,disabled:h||!m.trim()||r!=="team",onClick:oe,children:h?"Sending...":"Send Invite"})]}),a.jsxs("div",{className:Kr.inviteRow,children:[a.jsx("div",{className:Kr.listHeading,children:"Pending Invites"}),y.length===0&&a.jsx("p",{className:Kr.mutedText,children:"No pending invites."}),y.map(ee=>a.jsxs("div",{className:Kr.memberRow,children:[a.jsx("div",{className:Kr.memberTitle,children:ee.displayName||ee.email}),a.jsxs("div",{className:gr.accountMenuMeta,children:[ee.email," · ",ee.role]})]},ee.userId))]})]}),s==="audit"&&a.jsxs("div",{className:gr.accountHubCard,children:[k&&a.jsx("p",{className:Kr.mutedText,children:"Loading audit entries..."}),!k&&v.length===0&&a.jsx("p",{className:Kr.mutedText,children:"No audit events for this workspace."}),!k&&a.jsx("div",{className:Kr.auditList,children:v.map(ee=>a.jsxs("div",{className:Kr.memberRow,children:[a.jsx("div",{className:gr.accountMenuMeta,children:new Date(ee.createdAt).toLocaleString()}),a.jsx("div",{className:Kr.memberTitle,children:ee.action}),a.jsxs("div",{className:gr.accountMenuMeta,children:[ee.actorUserId," (",ee.actorRole,")"]})]},ee.id))}),a.jsxs("div",{className:Kr.auditPager,children:[a.jsx("button",{className:R.cancelBtn,disabled:k||A===0,onClick:K,children:"Previous"}),a.jsxs("span",{className:gr.accountMenuMeta,children:["Page ",A+1," of ",b]}),a.jsx("button",{className:R.cancelBtn,disabled:k||!w||A+1>=b,onClick:Q,children:"Next"})]})]}),a.jsx("div",{className:`${yr.formActions} ${Kr.modalActionsEnd}`,children:a.jsx("button",{className:R.cancelBtn,onClick:P,children:"Close"})})]})})}const aJ="_title_j8q8h_1",sJ="_message_j8q8h_8",oJ="_actions_j8q8h_14",iv={title:aJ,message:sJ,actions:oJ};function iJ({isOpen:e,onKeepEditing:t,onDiscard:r,title:n="Unsaved Changes",message:s="Discard your unsaved workflow changes?",theme:i}){return a.jsx(Ko,{isOpen:e,onClose:t,title:a.jsxs("span",{className:iv.title,children:[a.jsx(Od,{size:18})," ",n]}),size:"sm",closeOnOverlayClick:!1,theme:i,footer:a.jsxs("div",{className:iv.actions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary",onClick:t,"data-modal-initial-focus":!0,children:"Keep Editing"}),a.jsx("button",{type:"button",className:"tf-button-destructive",onClick:r,children:"Discard"})]}),children:a.jsx("p",{className:iv.message,children:s})})}const W_=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},cJ=(e,t,r)=>{if(W_(e)===t)return null;const s={status:t};return t==="task"||t==="on-hold"?(s.inProgress=!1,s.readyForReview=!1,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="in-progress"?(s.inProgress=!0,s.readyForReview=!1,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="review"?(s.inProgress=!1,s.readyForReview=!0,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="done"||t==="completed"?(s.status="done",s.inProgress=!1,s.readyForReview=!1,s.completed=!0,s.cancelled=!1,s.completedAt=r,s):(t==="cancelled"&&(s.status="cancelled"),s)},lJ=({targetTasks:e,overTaskId:t,isBelowOverItem:r})=>{if(!t)return e.length;const n=e.findIndex(s=>s.id===t);return n<0?e.length:n+(r?1:0)},$_=(e,t=new Map)=>{const r=new Map(t);return e.forEach((n,s)=>{r.set(n.id,{...r.get(n.id)||{},orderInDay:s})}),r},eb=e=>Array.from(e.entries()).map(([t,r])=>({taskId:t,updates:r})),F_=({sourceColumnId:e,targetColumnId:t,sourceTasks:r,updates:n})=>!e||e===t?n:$_(r,n),dJ=({activeTask:e,sourceColumnId:t,targetTasks:r,sourceTasks:n,insertAt:s})=>{const i=[...r];i.splice(s,0,e);let l=new Map;return i.forEach((c,d)=>{if(c.id===e.id){l.set(c.id,{...l.get(c.id)||{},...e.scheduledDate?{scheduledDate:null,scheduledWeekKey:null}:{},orderInDay:d});return}l.set(c.id,{...l.get(c.id)||{},orderInDay:d})}),l=F_({sourceColumnId:t,targetColumnId:"backlog",sourceTasks:n,updates:l}),eb(l)},uJ=({activeTask:e,targetTasks:t,insertAt:r})=>{const n=[...t];return n.splice(r,0,e),eb($_(n))},fJ=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:i,scheduledDate:l,scheduledWeekKey:c})=>{const d=[...n];d.splice(i,0,e);let m=new Map;return d.forEach((f,g)=>{if(f.id===e.id){m.set(f.id,{...m.get(f.id)||{},scheduledDate:l,scheduledWeekKey:c,orderInDay:g});return}m.set(f.id,{...m.get(f.id)||{},orderInDay:g})}),m=F_({sourceColumnId:t,targetColumnId:r,sourceTasks:s,updates:m}),eb(m)},mJ=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,overTaskId:i,isBelowOverItem:l,scheduleDates:c,parseToIsoWeekKey:d,todayDate:m})=>{const f=["mon","tue","wed","thu","fri","sat","sun"];if(!(r==="backlog"||r==="expired"||f.includes(r)))return null;const h=lJ({targetTasks:n,overTaskId:i,isBelowOverItem:l});if(r==="expired")return t!=="expired"?null:{kind:"updates",updates:uJ({activeTask:e,targetTasks:n,insertAt:h})};if(r==="backlog")return{kind:"updates",updates:dJ({activeTask:e,sourceColumnId:t,targetTasks:n,sourceTasks:s,insertAt:h})};if(!f.includes(r))return null;const y=c[r];return y?!(e.status==="done"||e.status==="cancelled")&&y<m?{kind:"blocked",reason:"Only completed work can be scheduled in the past."}:{kind:"updates",updates:fJ({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:h,scheduledDate:y,scheduledWeekKey:d(y)}),selectedDate:y}:null},Ag="expired::",pJ=new Map,hJ=new Set,gJ=250,yJ=24,sg=180,bA=8,SA=600,AA=720;function kJ({tasks:e,enabled:t,scrollRef:r,initialScrollTop:n,onScrollTopChange:s}){const i=o.useRef(new Map),[l,c]=o.useState(0),[d,m]=o.useState(()=>({scrollTop:n,height:AA})),f=o.useCallback((y,k)=>{if(!Number.isFinite(k)||k<=0)return;const v=Math.ceil(k),A=i.current.get(y)??sg;if(A===v)return;const b=e.findIndex(j=>j.id===y);let w=0;for(let j=0;j<b;j+=1)w+=i.current.get(e[j].id)??sg,w+=bA;i.current.set(y,v);const P=r.current,E=v-A,D=w+A;if(P&&b>=0&&D<=P.scrollTop&&E!==0){const j=Math.max(0,P.scrollTop+E);P.scrollTop=j,m(S=>({...S,scrollTop:j})),s(j)}c(j=>j+1)},[s,r,e]),g=o.useMemo(()=>{let y=0;return{rows:e.map((v,A)=>{const b={task:v,index:A,top:y},w=i.current.get(v.id)??sg;return y+=w,A<e.length-1&&(y+=bA),b}),totalHeight:y}},[l,e]);o.useEffect(()=>{const y=r.current;if(!y)return;n>0&&y.scrollTop!==n&&(y.scrollTop=n);const k=(w=!1)=>{const P=Math.max(0,y.scrollTop),E=y.clientHeight||AA,D=()=>m(j=>j.scrollTop===P&&j.height===E?j:{scrollTop:P,height:E});w?o.startTransition(D):D(),s(P)},v=()=>k(!0),A=()=>k(!1);A(),y.addEventListener("scroll",v,{passive:!0});const b=typeof ResizeObserver>"u"?null:new ResizeObserver(A);return b?.observe(y),window.addEventListener("resize",A),()=>{y.removeEventListener("scroll",v),b?.disconnect(),window.removeEventListener("resize",A)}},[n,s,r]);const h=o.useMemo(()=>{if(!t)return g.rows;const y=Math.max(0,d.scrollTop-SA),k=d.scrollTop+d.height+SA;return g.rows.filter(v=>{const A=i.current.get(v.task.id)??sg;return v.top+A>=y&&v.top<=k})},[t,g.rows,l,d.height,d.scrollTop]);return{measureRow:f,rows:h,totalHeight:g.totalHeight}}function vJ({tasks:e,columns:t,groupBy:r,searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,assigneeOptions:d=[],onUpdateTask:m,onTaskClick:f,taskReferences:g,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:A,onSetStatus:b,onArchiveTask:w,onUnarchive:P,onDelete:E,allTasks:D=[],onAddTaskToColumn:j,emptyColumnMode:S="show",filterCategories:L=[],filterTypes:_=[],filterPriorities:T=[],filterStatus:z=[],filterAssignees:Y=[],filtersReady:H=!0,scheduleFilteredTaskIds:M,categories:oe=[],compressed:K=!1,readOnlyMode:Q=null,recentlyChangedTaskIds:ee=[],scheduleDates:fe,onScheduleDaySelected:_e,persistedScrollLeft:$e,onScrollLeftChange:Ye,sortBy:ye="created",sortOrder:ge="desc",planningDropTargets:se=null,onAssignTaskToWorkstream:ie,onAssignWorkstreamToInitiative:me,showTaskCardStatusLabel:$=!1,showTaskCardDescription:V=!0,showTaskCardAttachments:B=!0,showTaskCardChecklistProgress:N=!0,showTaskCardLatestActivity:be=!0,tintTaskCardActivityBackground:Ae=!1,workstreams:q=[],initiatives:Z=[],workspaceId:G=null,deletedTaskRecordByTaskId:ne=pJ,selectedDeletedRecordIds:Te=hJ,onDeletedSelectionChange:Le}){const[Ue,st]=o.useState(null),[ft,xe]=o.useState(!1),[ke,ve]=o.useState(!1),He=o.useMemo(()=>new Set(ee),[ee]),Ee=o.useMemo(()=>new Map(q.map(Me=>[Me.id,Me])),[q]),de=o.useMemo(()=>new Map(Z.map(Me=>[Me.id,Me])),[Z]),x=o.useCallback(Me=>{const nt=Me.workstreamId&&Ee.get(Me.workstreamId)||null,pt=nt?.initiativeId&&de.get(nt.initiativeId)||null;return{taskWorkstream:nt,taskInitiative:pt}},[de,Ee]),le=o.useMemo(()=>new Set(e.map(Me=>Me.id)),[e]),Ie=o.useCallback(Me=>Me.startsWith(Ag)?Me.slice(Ag.length):Me,[]),Je=o.useCallback(Me=>le.has(Ie(Me)),[le,Ie]),J=o.useMemo(()=>new Set(M||[]),[M]),Ze=o.useRef(null),te=o.useRef(new Map),Ne=o.useCallback((Me,nt)=>{te.current.set(Me,nt)},[]),je=o.useCallback(Me=>{const nt=Me?.data?.current||{},pt=String(Me?.id||"");let lt=String(nt.taskId||""),xt=String(nt.workstreamId||"");!lt&&pt&&Je(pt)&&(lt=Ie(pt)),!xt&&pt.startsWith("planning-workstream:")&&(xt=pt.slice(20));let Yt=String(nt.type||"");return Yt||(lt?Yt="task-card":xt&&(Yt="planning-workstream")),{activeId:pt,type:Yt,taskId:lt,workstreamId:xt}},[Ie,Je]),Re=dw(ep(uw,{activationConstraint:{distance:10}}),ep(fC,{coordinateGetter:uC})),Ce=W_,Pe=o.useMemo(()=>{const Me=new Date,nt=Me.getFullYear(),pt=String(Me.getMonth()+1).padStart(2,"0"),lt=String(Me.getDate()).padStart(2,"0");return`${nt}-${pt}-${lt}`},[]),he=o.useMemo(()=>{const Me=lt=>{const xt=lt.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!xt)return null;const Yt=new Date(Date.UTC(Number(xt[1]),Number(xt[2])-1,Number(xt[3]))),Nt=Yt.getUTCDay()||7;Yt.setUTCDate(Yt.getUTCDate()+4-Nt);const Qt=new Date(Date.UTC(Yt.getUTCFullYear(),0,1)),Ct=Math.ceil(((Yt.getTime()-Qt.getTime())/864e5+1)/7);return`${Yt.getUTCFullYear()}-W${String(Ct).padStart(2,"0")}`};return{dates:{...(()=>{const lt=new Date,xt=lt.getDay(),Yt=xt===0?-6:1-xt,Nt=new Date(lt);Nt.setDate(lt.getDate()+Yt);const Qt=Ft=>{const ir=Ft.getFullYear(),cr=String(Ft.getMonth()+1).padStart(2,"0"),it=String(Ft.getDate()).padStart(2,"0");return`${ir}-${cr}-${it}`},Ct={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Ft,ir)=>{const cr=new Date(Nt);cr.setDate(Nt.getDate()+ir),Ct[Ft]=Qt(cr)}),Ct})(),...fe||{}},parseToIsoWeekKey:Me}},[fe]),De=Me=>{const nt=Me.scheduledDate||null;return nt?new Map([[he.dates.mon,"mon"],[he.dates.tue,"tue"],[he.dates.wed,"wed"],[he.dates.thu,"thu"],[he.dates.fri,"fri"],[he.dates.sat,"sat"],[he.dates.sun,"sun"]]).get(nt)||"__offweek":"backlog"},et=o.useMemo(()=>{if(r==="schedule")return[];const Me=new Set(t.map(xt=>String(xt.value))),nt=new Set(t.map(xt=>xt.label)),pt=[],lt=xt=>{const Yt=r==="status"?Ce(xt):xt[r],Nt=String(Yt??"");if(!Nt||Me.has(Nt)||nt.has(Nt))return null;if(r==="category"){const Qt=oe.find(Ct=>Ct.value===Nt||Ct.label===Nt);return{value:Nt,label:Qt?.label||Nt,icon:Qt?.icon||"Folder",color:Qt?.color}}if(r==="type"){const Qt=l?.find(Ct=>Ct.value===Nt||Ct.label===Nt);return{value:Nt,label:Qt?.label||Nt,icon:Qt?.icon||"CheckSquare",color:Qt?.color}}if(r==="priority"){const Qt=c?.find(Ct=>Number(Ct.value)===Number(Nt));return{value:Number.isFinite(Number(Nt))?Number(Nt):Nt,label:Qt?.label||Nt,icon:Qt?.icon||"Flag",color:Qt?.color}}if(r==="complexity")return{value:Number.isFinite(Number(Nt))?Number(Nt):Nt,label:Nt,icon:"Gauge"};if(r==="status")return{value:Nt,label:Nt,icon:"Circle"};if(r==="assignee"){const Qt=d.find(Ct=>Ct.value===Nt);return{value:Nt,label:Qt?.label||Nt,icon:Qt?.icon==="HelpCircle"?"Circle":Qt?.icon,color:Qt?.color}}return{value:Nt,label:Nt}};for(const xt of e){const Yt=lt(xt);Yt&&(pt.push(Yt),Me.add(String(Yt.value)),nt.add(Yt.label))}return pt},[d,oe,r,t,c,e,l]),Fe=o.useMemo(()=>[...t,...et],[et,t]),yt=o.useMemo(()=>{const Me=new Map;for(const nt of Fe)Me.set(String(nt.value),nt),Me.has(nt.label)||Me.set(nt.label,nt);return Me},[Fe]),Oe=o.useMemo(()=>{const Me={};return Fe.forEach(pt=>{Me[String(pt.value)]=0}),(D.length>0?D:e).forEach(pt=>{let lt="";if(r==="status")lt=Ce(pt);else if(r==="schedule")lt=De(pt);else{const Yt=pt[r];lt=String(Yt??"")}const xt=yt.get(lt);if(xt&&Me[String(xt.value)]++,r==="schedule"){const Yt=pt.status==="done"||pt.status==="cancelled";pt.scheduledDate&&!Yt&&pt.scheduledDate<Pe&&yt.has("expired")&&(Me.expired=(Me.expired||0)+1)}}),Me},[D,e,Fe,r,yt,Pe]),mt=o.useMemo(()=>{const Me={};if(Fe.forEach(nt=>{Me[String(nt.value)]=[]}),e.forEach(nt=>{let pt="";if(r==="status")pt=Ce(nt);else if(r==="schedule")pt=De(nt);else{const xt=nt[r];pt=String(xt??"")}const lt=yt.get(pt);if(lt){if(r==="schedule"&&String(lt.value)==="backlog"&&!J.has(nt.id))return;Me[String(lt.value)].push(nt)}if(r==="schedule"){const xt=nt.status==="done"||nt.status==="cancelled";nt.scheduledDate&&!xt&&nt.scheduledDate<Pe&&Me.expired&&Me.expired.push(nt)}}),r==="schedule"){const nt=(lt,xt)=>{const Yt=typeof lt.orderInDay=="number"?lt.orderInDay:Number.MAX_SAFE_INTEGER,Nt=typeof xt.orderInDay=="number"?xt.orderInDay:Number.MAX_SAFE_INTEGER;return Yt!==Nt?Yt-Nt:String(lt.createdAt||"").localeCompare(String(xt.createdAt||""))},pt=(lt,xt)=>zg(lt,xt,ye,ge,i);Object.keys(Me).forEach(lt=>{if(lt==="backlog"||lt==="expired"){Me[lt].sort(pt);return}Me[lt].sort(nt)})}return Me},[e,Fe,r,yt,J,Pe,ye,ge,i]),vt=Ue?Ie(Ue):null,Ve=vt?e.find(Me=>Me.id===vt):null,tt=e.length>gJ&&r!=="schedule"&&!Q,It=o.useRef(null),Xe=o.useRef(null),bt=o.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),at=o.useRef(-1),U=(Me,nt)=>H?r==="category"?!L.includes(String(Me)):r==="type"?!_.includes(String(Me)):r==="priority"?!T.some(pt=>Number(pt)===Number(Me)):r==="status"?String(Me)==="completed"?!z.includes("done")&&!z.includes("cancelled"):!z.includes(String(Me)):r==="assignee"?!Y.includes(String(Me)):!1:!1,pe=o.useMemo(()=>{let lt=0;return Fe.forEach((xt,Yt)=>{const Nt=mt[String(xt.value)]||[],Qt=U(xt.value,xt.label),Ct=r!=="schedule"&&S==="hide"&&Nt.length===0;if(Qt||Ct)return;const Ht=S==="collapse"&&Nt.length===0;lt+=Ht?72:320,lt+=4}),lt},[Fe,mt,S,r,L,_,T,z,Y,H]),Ke=o.useCallback(Me=>{if(!Ye)return;const nt=Math.max(0,Math.round(Me));nt!==at.current&&(at.current=nt,Ye(nt))},[Ye]);o.useEffect(()=>{const Me=It.current,nt=Xe.current;if(!Me||!nt)return;let pt=!1,lt=!1;const xt=()=>{!Me||lt||(pt=!0,Me.scrollLeft=nt.scrollLeft,Ke(nt.scrollLeft),setTimeout(()=>pt=!1,0))},Yt=()=>{!nt||pt||(lt=!0,nt.scrollLeft=Me.scrollLeft,Ke(Me.scrollLeft),setTimeout(()=>lt=!1,0))};return nt.addEventListener("scroll",xt),Me.addEventListener("scroll",Yt),()=>{nt.removeEventListener("scroll",xt),Me.removeEventListener("scroll",Yt)}},[Ke]);const Et=o.useRef(!1);o.useEffect(()=>{if(Et.current)return;if(typeof $e!="number"||!Number.isFinite($e)){Et.current=!0;return}const Me=It.current,nt=Xe.current;if(!Me||!nt)return;const pt=Math.max(0,Me.scrollWidth-Me.clientWidth),lt=Math.min(Math.max(0,$e),pt);Me.scrollLeft=lt,nt.scrollLeft=lt,Et.current=!0},[$e,pe]),o.useEffect(()=>{const Me=()=>{const nt=It.current;if(!nt){ve(!1);return}ve(nt.scrollWidth>nt.clientWidth+4)};return Me(),window.addEventListener("resize",Me),()=>{window.removeEventListener("resize",Me)}},[pe,Fe.length,mt]),o.useEffect(()=>{const Me=pt=>{const lt=bt.current;if(lt.pointerId===null||lt.pointerId!==pt.pointerId)return;const xt=pt.clientX-lt.startX,Yt=pt.clientY-lt.startY;if(!lt.didPan){if(Math.abs(xt)<7||Math.abs(xt)<Math.abs(Yt))return;lt.didPan=!0,xe(!0),document.body.style.userSelect="none"}const Nt=lt.startScrollLeft-xt;It.current&&(It.current.scrollLeft=Nt),Xe.current&&(Xe.current.scrollLeft=Nt),pt.preventDefault()},nt=()=>{const pt=bt.current;pt.pointerId!==null&&(pt.pointerId=null,pt.didPan=!1,ft&&(xe(!1),document.body.style.userSelect=""))};return window.addEventListener("pointermove",Me),window.addEventListener("pointerup",nt),window.addEventListener("pointercancel",nt),()=>{window.removeEventListener("pointermove",Me),window.removeEventListener("pointerup",nt),window.removeEventListener("pointercancel",nt),document.body.style.userSelect=""}},[ft]);const kt=Me=>{!ke||Me.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(bt.current.pointerId=Me.pointerId,bt.current.startX=Me.clientX,bt.current.startY=Me.clientY,bt.current.startScrollLeft=It.current?.scrollLeft||0,bt.current.didPan=!1)},Ot=Me=>{st(Me.active.id)},dr=Me=>{const nt=je(Me.active),pt=String(Me.over?.data?.current?.type||"");nt.type==="task-card"&&pt.startsWith("planning-")?Ze.current=`${String(Me.over?.id||"")}:${pt}`:Ze.current&&(Ze.current=null)},tr=Me=>{const{active:nt,over:pt}=Me;Ze.current=null,st(null);const lt=je(nt),xt=lt.type,Yt=String(pt?.data?.current?.type||""),Nt=lt.taskId,Qt=lt.workstreamId,Ct=String(pt?.data?.current?.workstreamId||""),Ht=String(pt?.data?.current?.initiativeId||"");if(xt==="task-card"&&Yt==="planning-workstream-target"&&Nt&&Ct){ie?.(Nt,Ct);return}if(xt==="planning-workstream"){if(Yt==="planning-initiative-target"&&Qt&&Ht){me?.(Qt,Ht);return}return}const Ft=String(nt.id),ir=pt?String(pt.id):null,cr=Ie(Ft);ir&&Ie(ir);const it=e.find(u=>u.id===cr);if(!it||!ir)return;const Zt=pr(Ft),lr=String(nt?.data?.current?.sortable?.containerId||"")||Zt,br=String(pt?.data?.current?.sortable?.containerId||"")||pr(ir);if(!br)return;const ur=yt.get(br)||Fe.find(u=>String(u.value)===br||u.label===br);if(ur){if(r==="schedule"){const gt=String(ur.value),Fr=ir&&Je(ir)?Ie(ir):null,xr=pt?.rect,jr=nt.rect.current.translated||nt.rect.current.initial,qr=!!(xr&&jr&&jr.top+jr.height/2>xr.top+xr.height/2),An=(mt[gt]||[]).filter(Ge=>Ge.id!==cr),cn=(mt[String(lr)]||[]).filter(Ge=>Ge.id!==cr),Hr=mJ({activeTask:it,sourceColumnId:lr,targetColumnId:gt,targetTasks:An,sourceTasks:cn,overTaskId:Fr,isBelowOverItem:qr,scheduleDates:he.dates,parseToIsoWeekKey:he.parseToIsoWeekKey,todayDate:Pe});if(!Hr)return;if(Hr.kind==="blocked"){window.alert(Hr.reason);return}Hr.updates.forEach(({taskId:Ge,updates:Xr})=>m(Ge,Xr)),Hr.selectedDate&&_e?.(Hr.selectedDate);return}let u=ur.value;if(r==="status"){const gt=String(u),Fr=cJ(it,gt,new Date().toISOString());Fr&&m(it.id,Fr);return}(r==="priority"||r==="complexity")&&(u=Number(u));const St=it[r];if(String(St??"")!==String(u??"")){const gt={[r]:u};m(it.id,gt)}}},pr=Me=>{if(yt.has(Me)){const lt=yt.get(Me);return lt?String(lt.value):Me}if(r==="schedule"&&Me.startsWith(Ag))return"expired";const nt=Ie(Me),pt=e.find(lt=>lt.id===nt);if(pt){let lt="";r==="status"?lt=Ce(pt):r==="schedule"?lt=De(pt):lt=String(pt[r]??"");const xt=yt.get(lt);return xt?String(xt.value):null}return null},Bt={sideEffects:lx({styles:{active:{opacity:"0"}}})},wr=Me=>{try{const nt=cx(Me);if(nt.length>0){const pt=nt.find(Ct=>String(Ct.id).startsWith("planning-"));if(pt)return[pt];const lt=Me.pointerCoordinates;if(!lt)return[nt[0]];const xt=nt.filter(Ct=>{const Ht=String(Ct.id);return Je(Ht)&&Ht!==Ue});if(xt.length===0){const Ht=nt.filter(cr=>{const it=String(cr.id);return!Je(it)}).find(cr=>!!pr(String(cr.id)))||null,Ft=Ht?pr(String(Ht.id)):null,ir=(Me.droppableContainers||[]).filter(cr=>{const it=String(cr.id);return!Je(it)||it===Ue?!1:Ft?pr(it)===Ft:!0});if(ir.length>0){const cr=Bb({...Me,droppableContainers:ir});if(cr.length>0)return[cr[0]]}return Ht?[Ht]:[nt[0]]}const Yt=xt;let Nt=Yt[0],Qt=Number.POSITIVE_INFINITY;for(const Ct of Yt){const Ht=Me.droppableRects?.get(Ct.id);if(!Ht)continue;const Ft=Ht.left+Ht.width/2,ir=Ht.top+Ht.height/2,cr=lt.x-Ft,it=lt.y-ir,Zt=cr*cr+it*it;Zt<Qt&&(Qt=Zt,Nt=Ct)}return[Nt]}return Bb(Me)}catch(nt){return console.error("[TaskKanban] collision detection error",nt),[]}},or=o.useCallback((Me,nt)=>m(Me.id,{assignee:nt}),[m]),$r=o.useCallback((Me,nt)=>ie?ie(Me.id,nt):m(Me.id,{workstreamId:nt}),[ie,m]),Dr=o.useMemo(()=>({searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,workspaceId:G,assigneeOptions:d,workstreams:q,onAssigneeChange:or,onWorkstreamChange:$r,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:A,onSetStatus:b,onArchiveTask:w,onUnarchive:P,onDelete:E,taskReferences:g,categories:oe,readOnlyMode:Q,resolveTaskHierarchy:x,groupBy:r,showStatusLabel:$,showDescription:V,showAttachments:B,showChecklistProgress:N,showLatestActivity:be,tintActivityBackground:Ae,deletedTaskRecordByTaskId:ne,selectedDeletedRecordIds:Te,onDeletedSelectionChange:Le}),[d,oe,s,ne,r,or,$r,w,h,E,Le,b,A,v,y,k,P,c,Q,x,n,Te,B,N,V,$,be,Ae,g,i,l,G,q]);return a.jsxs(fw,{sensors:Re,collisionDetection:wr,onDragStart:Ot,onDragOver:dr,onDragEnd:tr,onDragCancel:Me=>{Ze.current=null,st(null)},children:[se,a.jsxs("div",{className:R.kanbanWrapper,children:[a.jsx("div",{ref:Xe,className:`${R.kanbanTopScroll} tf-scrollbar`,children:a.jsx("div",{className:R.kanbanTopScrollSpacer,style:{width:`${pe}px`}})}),a.jsx("div",{className:R.kanbanContainer,ref:It,children:Fe.map(Me=>{const nt=mt[String(Me.value)]||[],pt=U(Me.value,Me.label),lt=r!=="schedule"&&S==="hide"&&nt.length===0,xt=r==="schedule",Yt=xt&&Fe.some(it=>String(it.value)==="backlog"),Nt=xt&&String(Me.value)==="backlog",Qt=xt&&String(Me.value)==="expired",Ct=mt.backlog||[],Ft=S==="collapse"&&Ct.length===0?72:320,ir=Nt?0:Qt?Yt?Ft+4:0:void 0,cr=Nt?6:Qt?5:void 0;return pt||lt?null:a.jsx(wJ,{id:String(Me.value),title:Me.label,color:Me.color,icon:Me.icon,assigneeOption:r==="assignee"?d.find(it=>String(it.value)===String(Me.value)):void 0,tasks:nt,activeId:Ue,activeTaskId:vt,totalCount:Oe[String(Me.value)],onAddTask:()=>j?.(r,Me.value),onTaskClick:f,commonCardProps:Dr,changedTaskIdSet:He,collapseEmpty:S==="collapse",compressed:K,onHeaderPointerDown:kt,isHeaderPanning:ft,headerPanEnabled:ke,stickyLeft:ir,stickyZIndex:cr,isPast:!!Me.isPast,isSelected:!!Me.isSelected,isWeekend:!!Me.isWeekend,disableSorting:!1,scheduleDate:r==="schedule"?he.dates[String(Me.value)]:void 0,onScheduleDaySelected:_e,virtualize:tt,initialScrollTop:te.current.get(String(Me.value))||0,onScrollTopChange:Ne},String(Me.value))})})]}),uc.createPortal(a.jsx(ix,{dropAnimation:Bt,children:Ve?(()=>{const{taskWorkstream:Me,taskInitiative:nt}=x(Ve);return a.jsx(dp,{task:Ve,taskWorkstream:Me,taskInitiative:nt,isOverlay:!0,...Dr,isArchived:Ve.isArchived,categories:oe,compressed:K,isRecentlyChanged:He.has(Ve.id)})})():null}),document.body)]})}const wJ=re.memo(function({id:t,title:r,color:n,icon:s,assigneeOption:i,tasks:l,activeId:c=null,activeTaskId:d=null,totalCount:m,onAddTask:f,onTaskClick:g,commonCardProps:h,changedTaskIdSet:y,collapseEmpty:k,compressed:v,onHeaderPointerDown:A,isHeaderPanning:b=!1,headerPanEnabled:w=!1,stickyLeft:P,stickyZIndex:E,isPast:D=!1,isSelected:j=!1,isWeekend:S=!1,disableSorting:L=!1,scheduleDate:_,onScheduleDaySelected:T,virtualize:z=!1,initialScrollTop:Y=0,onScrollTopChange:H}){const{setNodeRef:M}=gw({id:t,data:{type:"Column"}}),oe=k&&l.length===0,K=d?l.filter(ge=>ge.id!==d):l,Q=typeof P=="number",ee=o.useRef(null),fe=z&&!L&&K.length>yJ,_e=o.useCallback(ge=>{H?.(t,ge)},[t,H]),$e=kJ({tasks:K,enabled:fe,scrollRef:ee,initialScrollTop:Y,onScrollTopChange:_e}),Ye=ge=>t==="expired"?`${Ag}${ge}`:ge,ye=ge=>{if(!_||!T)return;const se=ge.target;se&&(se.closest('[data-task-card="true"]')||se.closest(`.${R.kanbanCardWrapper}`)||T(_))};return a.jsxs("div",{ref:M,className:`${R.kanbanColumn} ${oe?R.kanbanColumnCollapsed:""} ${Q?R.kanbanColumnSticky:""} ${D?R.kanbanColumnPast:""} ${j?R.kanbanColumnSelectedDay:""} ${S?R.kanbanColumnWeekend:""}`,style:Q?{left:`${P}px`,zIndex:E??4}:void 0,onClick:ye,children:[a.jsxs("div",{className:`${R.kanbanHeader} ${w?R.kanbanHeaderDraggable:""} ${b?R.kanbanHeaderPanning:""}`,style:{borderTopColor:aa(n)||"var(--color-purple)"},onPointerDown:A,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[i?a.jsx(gy,{option:i,size:20}):(()=>{const ge=s&&df[s]?df[s]:cc,se=aa(n)||"var(--color-purple)";return a.jsx(ge,{size:16,style:{color:se}})})(),!oe&&a.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:r})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!oe||m>0)&&a.jsx("span",{className:R.kanbanCount,children:oe?m:`${l.length} / ${m}`}),!h.readOnlyMode&&a.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:ge=>{ge.stopPropagation(),f()},title:`Add task to ${r}`,"aria-label":`Add task to ${r}`,"data-no-header-pan":"true",children:a.jsx(ui,{size:14})})]})]}),a.jsx("div",{className:R.kanbanDroppable,children:a.jsx("div",{className:`${R.kanbanDroppableScroll} ${fe?R.kanbanDroppableScrollVirtualized:""} ${R.appScrollbar} tf-scrollbar`,ref:ee,"data-kanban-column-scroll":t,children:L?K.map(ge=>a.jsx("div",{className:R.kanbanCardWrapper,children:(()=>{const{taskWorkstream:se,taskInitiative:ie}=h.resolveTaskHierarchy?.(ge)||{},me=h.deletedTaskRecordByTaskId?.get(ge.id);return a.jsx(dp,{task:ge,taskWorkstream:se,taskInitiative:ie,onClick:g,...h,isArchived:ge.isArchived,readOnlyMode:h.readOnlyMode||null,compressed:v,isRecentlyChanged:!1,selectable:!!(me&&h.onDeletedSelectionChange),selected:!!(me&&h.selectedDeletedRecordIds?.has(me.id)),onSelectionChange:me?$=>h.onDeletedSelectionChange?.(me.id,$):void 0})})()},ge.id)):a.jsx(mw,{id:t,items:K.map(ge=>Ye(ge.id)),strategy:pw,children:fe?a.jsx("div",{className:R.kanbanVirtualCanvas,style:{height:`${$e.totalHeight}px`},children:$e.rows.map(ge=>a.jsx(bJ,{top:ge.top,sortableId:Ye(ge.task.id),task:ge.task,onClick:g,commonCardProps:h,compressed:v,isRecentlyChanged:y.has(ge.task.id),onMeasure:$e.measureRow},Ye(ge.task.id)))}):K.map(ge=>a.jsx(U_,{sortableId:Ye(ge.id),task:ge,onClick:g,commonCardProps:h,compressed:v,isRecentlyChanged:y.has(ge.id)},Ye(ge.id)))})})})]})}),bJ=re.memo(function({top:t,onMeasure:r,...n}){const s=o.useRef(null);return o.useEffect(()=>{const i=s.current;if(!i)return;const l=()=>r(n.task.id,i.getBoundingClientRect().height);if(l(),typeof ResizeObserver>"u")return;const c=new ResizeObserver(l);return c.observe(i),()=>c.disconnect()},[n.task.id,r]),a.jsx("div",{ref:s,className:R.kanbanVirtualRow,style:{top:`${t}px`},"data-kanban-virtual-index":n.task.id,children:a.jsx(U_,{...n})})}),U_=re.memo(function({sortableId:t,task:r,onClick:n,commonCardProps:s,compressed:i,isRecentlyChanged:l=!1}){const c=!!s?.readOnlyMode,{attributes:d,listeners:m,setNodeRef:f,transform:g,transition:h,isDragging:y}=hw({id:t,disabled:c,data:{type:"task-card",taskId:r.id}}),k={transform:ny.Transform.toString(g),transition:h,opacity:y?0:1,pointerEvents:y?"none":"auto"},v=s?.groupBy==="schedule",A=!v&&l;return a.jsx("div",{ref:f,style:k,...c?{}:d,...c?{}:m,className:`${R.kanbanCardWrapper} ${A?R.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:b,taskInitiative:w}=s.resolveTaskHierarchy?.(r)||{},P=s.deletedTaskRecordByTaskId?.get(r.id);return a.jsx(dp,{task:r,taskWorkstream:b,taskInitiative:w,onClick:n,...s,isArchived:r.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:i,isRecentlyChanged:v?!1:l,selectable:!!(P&&s.onDeletedSelectionChange),selected:!!(P&&s.selectedDeletedRecordIds?.has(P.id)),onSelectionChange:P?E=>s.onDeletedSelectionChange?.(P.id,E):void 0})})()})});function SJ(e,t,r){const n=String(t);if(e==="category"){const s=r.categories.find(i=>String(i.value)===n||i.label===n);return s?{category:s.label}:{}}return e==="type"?{type:n}:e==="priority"?Number.isFinite(Number(t))?{priority:Number(t)}:{}:e==="complexity"?Number.isFinite(Number(t))?{complexity:Number(t)}:{}:e==="assignee"?n.trim().length>0?{assignee:n}:{}:e==="status"?n==="completed"?{status:"done"}:n==="task"||n==="on-hold"||n==="in-progress"||n==="review"||n==="done"||n==="cancelled"?{status:n}:{}:e==="schedule"?n==="backlog"||n==="expired"?{}:{scheduledDate:n}:{}}function AJ({authUserId:e,taskScope:t,workspaceId:r}){const[n,s]=o.useState(null);o.useEffect(()=>{s(null)},[e,r]),o.useEffect(()=>{t!=="open"&&s(null)},[t]);const i=o.useCallback(c=>{s(d=>d===c?null:c)},[]),l=o.useCallback(()=>{s(null)},[]);return{taskHeaderQuickFilter:n,toggleTaskHeaderQuickFilter:i,clearTaskHeaderQuickFilter:l}}function CJ(e,t,r,n){return e.status==="done"||e.status==="cancelled"||String(e.assignee||"").trim()!==r?!1:t==="overdue"?!!(e.dueDate&&e.dueDate<n):!0}function Jg(e,t){return e==="deleted"?!1:e==="archived"?t:!t}function CA(e,t){return t===null?e:e.filter(r=>t.has(r.id))}function IJ(e,t,r){const n=t.filter(c=>Jg(r,!!c.isArchived)),s=r==="deleted"?[]:e.filter(c=>Jg(r,!!c.isArchived)?!0:r!=="archived"?!1:n.some(d=>d.initiativeId===c.id)).map(c=>({...c,workstreams:n.filter(d=>d.initiativeId===c.id)})),i=n.filter(c=>!c.initiativeId),l=[...s.flatMap(c=>c.workstreams),...i];return{initiatives:s,standaloneWorkstreams:i,visibleWorkstreams:l,initiativeById:new Map(s.map(c=>[c.id,c])),workstreamById:new Map(l.map(c=>[c.id,c]))}}function z_(e){return typeof e.occurredAt=="string"&&e.occurredAt.trim().length>0?e.occurredAt:"unknown-time"}function _J(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function TJ(e){const t=uy(e.details),r=t?t.source:null;return typeof r=="string"?r.trim():""}function IA(e){const t=String(e||"").trim();switch(t){case"auth-required":return"sign in required";case"lease-held":return"another window is already syncing";case"sync-disabled":return"sync is turned off";case"attach-cloud":return"initial cloud pull required";case"provision-local":return"initial cloud upload required";default:return t.length>0?t.replace(/-/g," "):"blocked"}}function _A(e){const t=String(e||"").trim();switch(t){case"attach-cloud":return"initial cloud pull";case"provision-local":return"initial cloud upload";case"active":return"active sync";case"error":return"error recovery";case"idle":return"idle sync";default:return t.length>0?t.replace(/-/g," "):"sync"}}function Xg(e){if(e==null)return null;const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):null}function TA(e,t,r){const n=Xg(e);if(n===null)return null;const s=Xg(t),i=n===1&&(s===null||s===1)?r:`${r}s`;return`${n}${s===null?"":`/${s}`} ${i}`}function xJ(e,t){const r=Xg(e);if(r===null)return null;const n=r>=1024*1024?`${(r/(1024*1024)).toFixed(1)} MiB`:r>=1024?`${(r/1024).toFixed(1)} KiB`:`${r} B`;return String(t||"")==="content-bodies"?`${n} content`:n}function RJ(e){const t=z_(e),r=uy(e.details),n=TJ(e);if(n==="server-runner.transfer"){const s=r?.transfer&&typeof r.transfer=="object"?r.transfer:{},i=String(s.direction||"").trim(),l=String(s.operation||e.eventType||"sync").trim(),c=String(s.outcome||e.status||"").trim()==="error"?"failed":"succeeded",d=[TA(s.processedChanges,s.knownTotalChanges,"change"),TA(s.processedPages,s.knownTotalPages,"page"),xJ(s.transferredBytes,s.transferredBytesScope)].filter(g=>!!g),m=Xg(s.durationMs),f=c==="failed"&&typeof e.errorMessage=="string"&&e.errorMessage.trim()?`: ${e.errorMessage.trim()}`:"";return`${t} ${i?`${i} `:""}${l} ${c}${d.length>0?` (${d.join(", ")})`:""}${m===null?"":` in ${m}ms`}${f}`}return n==="retry.blocked"?`${t} manual retry blocked: ${IA(r?.reason)} during ${_A(r?.phase)}`:n==="repair.started"?`${t} manual repair started: ${_A(r?.repairPhase)} selected`:n==="repair.blocked"?`${t} manual repair blocked: ${IA(r?.reason)}`:null}function uf(e,t=0){const r=String(e.id??"").trim();return r?`id:${r}`:[String(e.occurredAt||"").trim()||"unknown-time",String(e.eventType||"").trim()||"sync",String(e.status||"").trim()||"unknown-status",String(e.statusCode??""),String(e.changeCount??""),String(e.requestMs??""),String(e.errorMessage||"").trim(),RI(e.details),String(t)].join("|")}function PJ(e,t,r=15){const n=new Map;for(const[s,i]of e.entries())n.set(uf(i,s),i);for(const[s,i]of t.entries())n.set(uf(i,s),i);return Array.from(n.values()).sort((s,i)=>String(i.occurredAt||"").localeCompare(String(s.occurredAt||""))).slice(0,Math.max(1,r))}function jJ(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(uf(e[r],r)!==uf(t[r],r))return!1;return!0}function H_(e){const t=RJ(e);if(t)return t;const r=z_(e),n=_J(e),s=e.status==="error"?"failed":"succeeded",i=Number(e.changeCount),l=Number.isFinite(i)?` (${Math.max(0,Math.floor(i))} change${Math.floor(i)===1?"":"s"})`:"",c=Number(e.requestMs),d=Number.isFinite(c)?` in ${Math.max(0,Math.floor(c))}ms`:"",m=Number(e.statusCode),f=Number.isFinite(m)?` [${Math.floor(m)}]`:"",g=typeof e.errorMessage=="string"&&e.errorMessage.trim().length>0?`: ${e.errorMessage.trim()}`:"";return`${r} ${n} ${s}${l}${d}${f}${g}`}function EJ(e){const t=H_(e),r=String(e.occurredAt||"").trim();if(!r||!t.startsWith(r))return t;const n=new Date(r);return Number.isNaN(n.getTime())?t:`${n.toLocaleString()}${t.slice(r.length)}`}function NJ(e){return e.status==="error"?null:[String(e.eventType||"").trim()||"sync",String(e.status||"").trim()||"unknown-status",String(e.statusCode??""),String(e.changeCount??""),String(e.errorMessage||"").trim(),RI(e.details)].join("|")}function DJ(e,t){return t?{...e,durableOutbox:t.outbox,coordinatorRecoveryObligations:t.recoveryObligations}:e}function Cg(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function V_(e){switch(e){case"off":return{label:"Off",icon:"off",color:"#94a3b8",border:"rgba(148, 163, 184, 0.35)",background:"rgba(148, 163, 184, 0.12)"};case"syncing":return{label:"Syncing",icon:"cloud",color:"#60a5fa",border:"rgba(96, 165, 250, 0.35)",background:"rgba(59, 130, 246, 0.12)"};case"checking":return{label:"Checking",icon:"cloud",color:"#94a3b8",border:"rgba(148, 163, 184, 0.35)",background:"rgba(148, 163, 184, 0.12)"};case"attention":return{label:"Needs Attention",icon:"cloud",color:"#fda4af",border:"rgba(253, 164, 175, 0.4)",background:"rgba(239, 68, 68, 0.12)"};default:return{label:"Healthy",icon:"cloud",color:"#86efac",border:"rgba(134, 239, 172, 0.4)",background:"rgba(34, 197, 94, 0.12)"}}}function MJ(e,t){return V_(t?e:"off")}function G_(e,t,r){if(t)return"Repairing";if(r&&e==="error")return"Recovering";switch(e){case"provision-local":return"Initial cloud upload";case"attach-cloud":return"Initial cloud pull";case"active":return"Active";case"error":return"Error";default:return"Idle"}}function LJ(e){return[{label:"AI profile snapshot",value:`${e.aiProfileSnapshotCount} local profile${e.aiProfileSnapshotCount===1?"":"s"}`},{label:"AI profile raw response",value:`${e.aiProfileSnapshotRawCount} from route`},{label:"Last pushed AI profiles",value:`${e.lastPushedAiProfileCount} tracked`},{label:"AI watermark map",value:`${e.lastPushedAiProfileWatermarkCount} tracked`},{label:"Document snapshot",value:`${e.documentSnapshotCount} local doc${e.documentSnapshotCount===1?"":"s"}`},{label:"Asset snapshot",value:`${e.assetSnapshotCount} local asset${e.assetSnapshotCount===1?"":"s"}`},{label:"Queued full AI sync",value:e.forceFullAiProfilePushQueued?"Yes":"No"},{label:"Durable outbox",value:e.durableOutbox?e.durableOutbox.operationStates?`${e.durableOutbox.operationStates.pending} pending, ${e.durableOutbox.operationStates.retryScheduled} retry scheduled, ${e.durableOutbox.operationStates.inFlight} in flight, ${e.durableOutbox.operationStates.stale} stale, ${e.durableOutbox.operationStates.blocked} blocked`:`${e.durableOutbox.pending} pending, ${e.durableOutbox.inFlight} in flight, ${e.durableOutbox.blocked} blocked`:"Unavailable"},{label:"Durable recovery",value:(()=>{const t=e.durableOutbox?.recovery?`${e.durableOutbox.recovery.state}; ${e.durableOutbox.recovery.replayAccepted}/${e.durableOutbox.recovery.replayTotal} replayed`:null,r=e.coordinatorRecoveryObligations||0,n=r>0?`${r} coordinator obligations open`:null;return[t,n].filter(Boolean).join(", ")||"None"})()},{label:"AI snapshot last fetch",value:Cg(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function OJ({syncRecentEvents:e,syncRecentEventsError:t,syncRecentEventsLoading:r}){if(r&&e.length===0)return[{key:"loading",text:"Loading recent sync events...",tone:"muted"}];if(t)return[{key:"error",text:t,tone:"error"}];if(e.length===0)return[{key:"empty",text:"No recent sync events recorded.",tone:"muted"}];const n=[];for(const[s,i]of e.entries()){const l=NJ(i),c=n[n.length-1];if(l&&c?.signature===l){c.repeatCount+=1,c.text=`${c.baseText} × ${c.repeatCount}`;continue}const d=EJ(i);n.push({key:uf(i,s),text:d,tone:i.status==="error"?"error":"default",signature:l,repeatCount:1,baseText:d})}return n.map(({signature:s,repeatCount:i,baseText:l,...c})=>c)}function K_(e){const t=[];for(const r of e){if(String(r.errorMessage||"").toLowerCase().includes("reference number mismatch")){t.push(r);continue}if(String(r.status||"").toLowerCase()==="success")break}return t}function BJ(e){return K_(e).length}function WJ(e){return K_(e).map((t,r)=>{const n=t.details&&typeof t.details=="object"?t.details:null,s=String(n?.path||"").trim(),i=String(n?.referenceLabel||"").trim(),l=String(n?.taskTitle||n?.existingTaskTitle||"").trim(),c=Number(n?.existingReferenceNumber),d=Number(n?.incomingReferenceNumber),m=s||l||i||`Mismatch ${r+1}`,f=Number.isFinite(c)||Number.isFinite(d)?`Existing ${Number.isFinite(c)?c:"?"} vs incoming ${Number.isFinite(d)?d:"?"}`:i?`Both claimed ${i}`:null;return{key:uf(t,r),pathLabel:m,refsLabel:f}})}function $J({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,syncStageLabel:f,referenceMismatchCount:g,syncRecentEvents:h}){const y=["Taskforce Sync Manager",`Workspace ID: ${e}`,`Status: ${t}`,`Summary: ${r}`,`Recommended action: ${n}`,`Last successful sync: ${s}`,`Last pull from cloud: ${i}`,`Last push to cloud: ${l}`,`Last error at: ${Cg(c.lastErrorAt)}`,`Pending local changes: ${d}`,`Last error: ${m}`,`Sync stage: ${f}`,`Push blocked reason: ${c.pushBlockedReason||"None"}`,`Pull blocked reason: ${c.pullBlockedReason||"None"}`,`Retry blocked reason: ${c.retryBlockedReason||"None"}`,`Repair active: ${c.repairActive?"Yes":"No"}`,`Push in flight: ${c.pushInFlight?"Yes":"No"}`,`Pull in flight: ${c.pullInFlight?"Yes":"No"}`,`Retry pending: ${c.retryPending?"Yes":"No"}`,`AI profile snapshot: ${c.aiProfileSnapshotCount}`,`AI profile raw response: ${c.aiProfileSnapshotRawCount}`,`Last pushed AI profiles tracked: ${c.lastPushedAiProfileCount}`,`AI profile watermarks tracked: ${c.lastPushedAiProfileWatermarkCount}`,`AI snapshot last fetch: ${Cg(c.aiProfileSnapshotLastFetchAt)}`,`AI snapshot fetch error: ${c.aiProfileSnapshotLastFetchError||"None"}`,`AI snapshot skip reason: ${c.aiProfileSnapshotLastSkipReason||"None"}`,`Document snapshot: ${c.documentSnapshotCount}`,`Asset snapshot: ${c.assetSnapshotCount}`,`Reference mismatches detected: ${g}`,`Queued full AI sync: ${c.forceFullAiProfilePushQueued?"Yes":"No"}`,`Durable outbox pending: ${c.durableOutbox?.pending??"Unavailable"}`,`Durable outbox in flight: ${c.durableOutbox?.inFlight??"Unavailable"}`,`Durable outbox blocked: ${c.durableOutbox?.blocked??"Unavailable"}`,`Durable outbox retry scheduled: ${c.durableOutbox?.operationStates?.retryScheduled??"Unavailable"}`,`Durable outbox stale: ${c.durableOutbox?.operationStates?.stale??"Unavailable"}`,`Durable outbox oldest active: ${Cg(c.durableOutbox?.oldestActiveCreatedAt)}`,`Durable outbox blocked error code: ${c.durableOutbox?.blockedErrorCode||"None"}`,`Durable recovery state: ${c.durableOutbox?.recovery?.state||"None"}`,`Durable recovery replay total: ${c.durableOutbox?.recovery?.replayTotal??0}`,`Durable recovery replay pending: ${c.durableOutbox?.recovery?.replayPending??0}`,`Durable recovery replay in flight: ${c.durableOutbox?.recovery?.replayInFlight??0}`,`Durable recovery replay blocked: ${c.durableOutbox?.recovery?.replayBlocked??0}`,`Durable recovery replay accepted: ${c.durableOutbox?.recovery?.replayAccepted??0}`,`Durable recovery obligations (coordinator): ${c.coordinatorRecoveryObligations??"Unavailable"}`],k=h.map(v=>H_(v));return[...y,"","Recent sync events",...k.length>0?k:["No recent sync events recorded."]].join(`
|
|
7
|
-
`)}const xA="/api/taskforce/account/profile-summary",FJ=9e4,Yu=new Map;function og(){return typeof performance<"u"?performance.now():Date.now()}function q_(e,t){const r=String(e||"").trim();if(!r)return"";const n=String(t||"").trim();return n?`${r}::${n}`:r}function RA(e,t){Yu.delete(q_(e,t?.identityKey))}async function UJ(e,t){const r=String(e||"").trim(),n=q_(e,t?.identityKey);if(!n||!r)return null;const s=t?.force===!0,i=Date.now(),l=Yu.get(n);if(!s&&l?.payload!==void 0&&i-l.fetchedAt<FJ)return Cr("account_profile_summary_cache_hit",{url:r,cacheKey:n,ageMs:i-l.fetchedAt}),l.payload;if(!s&&l?.promise)return Cr("account_profile_summary_request_reused",{url:r,cacheKey:n}),l.promise;const c=og(),d=(async()=>{const m=await fetch(r,{method:"GET",credentials:"include"});if(!m.ok)throw new Error(String((await m.json().catch(()=>({})))?.error||"Failed to load account summary."));const g=await m.json().catch(()=>({}))||null;return Yu.set(n,{payload:g,fetchedAt:Date.now(),promise:null}),Cr("account_profile_summary_loaded",{url:r,cacheKey:n,durationMs:Math.round(og()-c),fromCache:!1}),g})().catch(m=>{const f=l?.payload??null;if(f)return Yu.set(n,{payload:f,fetchedAt:l?.fetchedAt??Date.now(),promise:null}),Cr("account_profile_summary_failed",{url:r,cacheKey:n,durationMs:Math.round(og()-c),error:m instanceof Error?m.message:String(m||"Unknown error"),returnedStale:!0}),f;throw Yu.delete(n),Cr("account_profile_summary_failed",{url:r,cacheKey:n,durationMs:Math.round(og()-c),error:m instanceof Error?m.message:String(m||"Unknown error"),returnedStale:!1}),m});return Yu.set(n,{payload:l?.payload??null,fetchedAt:l?.fetchedAt??0,promise:d}),d}const zJ=512,HJ=5*1024*1024,VJ=[.9,.82,.74,.66,.58],GJ=[.9,.82,.74,.66,.58],KJ=[1,.85,.7,.55,.4],qJ=new Set(["image/png","image/jpeg","image/webp"]);function YJ(e,t){const r=document.createElement("canvas");return r.width=Math.max(1,Math.round(e)),r.height=Math.max(1,Math.round(t)),r}async function ZJ(e){const t=URL.createObjectURL(e);try{const r=await new Promise((n,s)=>{const i=new Image;i.onload=()=>n(i),i.onerror=()=>s(new Error("Failed to load image.")),i.src=t});return{width:r.naturalWidth||r.width,height:r.naturalHeight||r.height,source:r}}finally{URL.revokeObjectURL(t)}}async function JJ(e){const t=YJ(e.width,e.height),r=t.getContext("2d");if(!r)throw new Error("Image optimization requires a 2D canvas context.");return r.drawImage(e.image.source,0,0,t.width,t.height),await new Promise((n,s)=>{t.toBlob(i=>{if(i){n(i);return}s(new Error("Failed to encode resized image."))},e.type,e.quality)})}const XJ={loadImage:ZJ,renderToBlob:JJ};function PA(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function jA(e,t){const r=String(e||"").trim();if(!r)return`avatar${t}`;const n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}function QJ(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function eX(e){return e==="image/webp"?VJ:e==="image/jpeg"?GJ:[void 0]}async function tX(e,t,r=XJ){const n=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):HJ,s=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):zJ;if(!qJ.has(e.type))return{file:e,optimized:!1,exceededLimit:e.size>n};const i=await r.loadImage(e),l=Math.max(i.width,i.height,1);if(e.size<=n&&l<=s)return{file:e,optimized:!1,exceededLimit:!1};const c=Math.min(1,s/l);let d=null;for(const f of KJ){const g=Math.min(1,c*f),h=Math.max(1,Math.round(i.width*g)),y=Math.max(1,Math.round(i.height*g));for(const k of QJ(e.type))for(const v of eX(k)){const A=await r.renderToBlob({image:i,width:h,height:y,type:k,quality:v});if((!d||A.size<d.size)&&(d=A),A.size<=n)return{file:new File([A],jA(e.name,PA(A.type||k,e.name)),{type:A.type||k,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!d)return{file:e,optimized:!1,exceededLimit:!0};const m=new File([d],jA(e.name,PA(d.type||e.type,e.name)),{type:d.type||e.type,lastModified:e.lastModified});return{file:m,optimized:m.size<e.size,exceededLimit:m.size>n}}function rX(e,t){return Array.from([...e,...t].reduce((r,n)=>r.set(n.id,n),new Map).values())}function Y_(e){return e.status==="done"||e.status==="cancelled"}function nX({isArchived:e,tasks:t,dataReady:r}){return{archiveReady:r&&!e&&t.length>0&&t.every(Y_),activeTaskCount:t.filter(n=>!n.isArchived).length,activeWorkstreamCount:0}}function aX({isArchived:e,workstreams:t,dataReady:r}){const n=t.flatMap(s=>s.tasks||[]);return{archiveReady:r&&!e&&t.length>0&&n.length>0&&n.every(Y_),activeTaskCount:n.filter(s=>!s.isArchived).length,activeWorkstreamCount:t.filter(s=>!s.isArchived).length}}async function Z_({workstream:e,allowEmpty:t=!1,archiveTask:r,archiveWorkstream:n}){if(e.isArchived)return!0;const s=e.tasks||[];if(!t&&s.length===0||s.some(i=>i.status!=="done"&&i.status!=="cancelled"))return!1;for(const i of s)if(!i.isArchived&&!await r(i.id))return!1;return await n(e.id),!0}async function sX({workstreams:e,archiveTask:t,archiveWorkstream:r,archiveInitiative:n,initiativeId:s}){const i=e.flatMap(l=>l.tasks||[]);if(e.length===0||i.length===0||i.some(l=>l.status!=="done"&&l.status!=="cancelled"))return!1;for(const l of e)if(!await Z_({workstream:l,allowEmpty:!0,archiveTask:t,archiveWorkstream:r}))return!1;return await n(s),!0}function J_({isArchived:e,taskCount:t,completedTaskCount:r,archiveReady:n,entityType:s,activeWorkstreamCount:i=0}){return e?{mode:"archived"}:t===0?s==="initiative"&&i>0?{mode:"blocked",remainingKind:"workstream"}:{mode:"empty"}:Math.max(0,t-r)>0?{mode:"blocked",remainingKind:"task"}:n?{mode:"ready"}:{mode:"checking"}}const ew="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",X_="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",EA="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function oX({projectName:e,currentWorkspaceId:t,brandLabel:r="TaskForce",brandHomeLabel:n="Go to Kanban",onBrandClick:s,runtimeMode:i="local",theme:l=xg,meta:c,actions:d}){const m=o.useRef(null),f=o.useRef(null),[g,h]=o.useState(!0),[y,k]=o.useState("idle"),v=kC(l)?X_:ew,A=String(e||"").trim(),b=String(t||"").trim(),w=b.toLowerCase(),P=!!(A&&(i!=="cloud"||w&&w!=="default")),E=o.useCallback(()=>{if(!P){h(!0);return}const L=m.current,_=f.current;if(!L||!_)return;const T=L.getBoundingClientRect().width,z=_.getBoundingClientRect().width;if(T<=0||z<=0)return;const Y=window.getComputedStyle(L),H=Number.parseFloat(Y.columnGap||Y.gap||"0")||0,M=Array.from(L.children).filter(Q=>{if(Q===_)return!1;const ee=Q.getBoundingClientRect();return ee.width>0&&ee.height>0}),K=M.reduce((Q,ee)=>Q+ee.getBoundingClientRect().width,0)+z+H*M.length;h(K<=T)},[P]);o.useLayoutEffect(()=>{E();const L=m.current,_=f.current;if(!L||!_)return;if(typeof ResizeObserver>"u")return window.addEventListener("resize",E),()=>window.removeEventListener("resize",E);const T=new ResizeObserver(E);return T.observe(L),T.observe(_),()=>T.disconnect()},[E,A,c]),o.useEffect(()=>{if(y==="idle")return;const L=window.setTimeout(()=>k("idle"),1600);return()=>window.clearTimeout(L)},[y]);const D=P&&g,j=async()=>{if(!b||typeof navigator>"u")return;const L=navigator.clipboard;if(!L?.writeText){k("failed");return}try{await L.writeText(b),k("copied")}catch{k("failed")}},S=a.jsxs(a.Fragment,{children:[a.jsx("img",{src:v,alt:"Taskforce Logo",className:R.brandIcon,onError:L=>{const _=L.currentTarget;_.src!==EA?_.src=EA:_.style.display="none"}}),a.jsx("span",{children:r}),i==="cloud"&&a.jsx("span",{className:R.brandCloudSuffix,children:"HQ"})]});return a.jsxs("div",{className:`${R.header} ${tn.standaloneHeader}`,children:[a.jsxs("div",{ref:m,className:`${R.headerTitle} ${tn.standaloneTitle}`,children:[s?a.jsx("button",{type:"button",className:R.brandHomeButton,onClick:s,title:n,"aria-label":n,children:S}):a.jsx("span",{className:R.brandHomeStatic,children:S}),P&&a.jsxs("span",{ref:f,className:`${R.projectNameGroup} ${D?"":R.projectNameGroupHidden}`.trim(),"aria-hidden":D?void 0:!0,children:[a.jsx("span",{className:R.projectSlash,children:"/"}),b?a.jsx("button",{type:"button",className:`${R.projectName} ${y==="copied"?R.projectNameCopied:""}`.trim(),title:y==="copied"?"Workspace ID copied":y==="failed"?"Unable to copy workspace ID":`Workspace ID: ${b}`,"aria-label":`${A}. ${y==="copied"?"Workspace ID copied.":y==="failed"?"Unable to copy workspace ID.":"Copy workspace ID."}`,disabled:!D,onClick:()=>{j()},children:A}):a.jsx("span",{className:R.projectName,children:A}),a.jsx("span",{className:R.projectNameCopyFeedback,"aria-live":"polite",children:y==="copied"?"Workspace ID copied.":y==="failed"?"Unable to copy workspace ID.":""})]}),c]}),a.jsx("div",{className:R.headerActions,style:{gap:"16px"},children:d})]})}function ic(e){return`${e.type}:${e.id}`}function iX(e){if(!Array.isArray(e))return;const t=new Set,r=[];for(const n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;const s=n.type,i=n.id;if(s!=="initiative"&&s!=="workstream"||typeof i!="string")continue;const l=i.trim();if(!l)continue;const c={type:s,id:l},d=ic(c);t.has(d)||(t.add(d),r.push(c))}return r}function cX(e,t){const r=ic(t);return e.some(s=>ic(s)===r)?e.filter(s=>ic(s)!==r):[...e,t]}const lX="taskforce.uiState.layout.v1",dX=/^\d{4}-\d{2}-\d{2}$/,uX=/^\d{4}-\d{2}$/;function fX(e){const t=String(e.workspaceId||"default").trim()||"default",r=String(e.userId||"anonymous").trim()||"anonymous",n=iy(`user:${r}`);return`${e.runtimeMode}:${t}:user:${n}`}function ff(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function ig(e){if(!Array.isArray(e))return;const t=Array.from(new Set(e.filter(r=>typeof r=="string").map(r=>r.trim()).filter(Boolean)));return t.length>0?t:[]}function up(e){if(!(typeof e!="number"||!Number.isFinite(e)||e<0))return Math.round(e)}function mX(e,t){if(!ff(e))return;const r=Object.entries(e).map(([n,s])=>{const i=n.trim(),l=up(s);return i&&l!==void 0?[i,l]:null}).filter(n=>n!==null).slice(-50);return Object.fromEntries(r)}function pX(e){if(!ff(e))return null;const t=typeof e.zoomLevel=="number"&&Number.isFinite(e.zoomLevel)?Math.min(4,Math.max(.25,e.zoomLevel)):void 0,r=up(e.scrollLeft),n=up(e.scrollTop);return t===void 0||r===void 0||n===void 0?null:{zoomLevel:t,scrollLeft:r,scrollTop:n}}function hX(e){if(!ff(e))return;const t=Object.entries(e).map(([r,n])=>{const s=r.trim(),i=pX(n);return s&&i?[s,i]:null}).filter(r=>r!==null).slice(-50);return Object.fromEntries(t)}function gX(e){if(e===null)return null;if(!ff(e)||e.type!=="initiative"&&e.type!=="workstream"||typeof e.id!="string")return;const t=e.id.trim();return t?{type:e.type,id:t}:null}function Q_(e){if(!ff(e))return null;const t={},r=y=>{typeof e[y]=="boolean"&&(t[y]=e[y])};["scheduleShowWeekends","scheduleShowBacklog","scheduleOnlyExpired","scheduleSidebarOpen","showFilters","documentTrayOpen","imageTrayOpen","agentTrayOpen","taskforceAgentRosterTrayOpen","taskforceAgentDrawerOpen","taskforceAgentPanelCollapsed","planningDrawerOpen","planningTreeCollapsed","planningPrimaryCollapsed","planningSecondaryCollapsed","planningFavoritesSectionCollapsed","planningInitiativesSectionCollapsed","planningWorkstreamsSectionCollapsed"].forEach(y=>r(y)),(e.planningNavigatorSort==="default"||e.planningNavigatorSort==="title"||e.planningNavigatorSort==="owner"||e.planningNavigatorSort==="progress")&&(t.planningNavigatorSort=e.planningNavigatorSort),(e.planningTaskArrangeMode==="execution"||e.planningTaskArrangeMode==="ready"||e.planningTaskArrangeMode==="priority")&&(t.planningTaskArrangeMode=e.planningTaskArrangeMode);const n=iX(e.planningFavorites);n&&(t.planningFavorites=n),typeof e.scheduleSelectedDate=="string"&&dX.test(e.scheduleSelectedDate)&&(t.scheduleSelectedDate=e.scheduleSelectedDate),typeof e.scheduleCalendarMonth=="string"&&uX.test(e.scheduleCalendarMonth)&&(t.scheduleCalendarMonth=e.scheduleCalendarMonth);const s=up(e.scheduleScrollLeft);s!==void 0&&(t.scheduleScrollLeft=s);const i=ig(e.documentTypeFilters);i&&(t.documentTypeFilters=i);const l=ig(e.documentAttachmentFilters);l&&(t.documentAttachmentFilters=l),typeof e.documentSortField=="string"&&(t.documentSortField=e.documentSortField),(e.documentSortOrder==="asc"||e.documentSortOrder==="desc")&&(t.documentSortOrder=e.documentSortOrder);const c=ig(e.documentPinnedDocIds)?.slice(-50);c&&(t.documentPinnedDocIds=c),typeof e.documentSearchQuery=="string"&&(t.documentSearchQuery=e.documentSearchQuery),typeof e.documentSelectedDocId=="string"?t.documentSelectedDocId=e.documentSelectedDocId.trim()||null:e.documentSelectedDocId===null&&(t.documentSelectedDocId=null);const d=mX(e.documentScrollByDocId);d&&(t.documentScrollByDocId=d);const m=up(e.documentListScrollTop);m!==void 0&&(t.documentListScrollTop=m);const f=ig(e.planningExpandedInitiativeIds);f&&(t.planningExpandedInitiativeIds=f);const g=gX(e.planningDrawerDetail);g!==void 0&&(t.planningDrawerDetail=g),typeof e.planningNestedWorkstreamDetailId=="string"?t.planningNestedWorkstreamDetailId=e.planningNestedWorkstreamDetailId.trim()||null:e.planningNestedWorkstreamDetailId===null&&(t.planningNestedWorkstreamDetailId=null),ff(e.annotatedTarget)?t.annotatedTarget=e.annotatedTarget:e.annotatedTarget===null&&(t.annotatedTarget=null),typeof e.annotatedSessionId=="string"?t.annotatedSessionId=e.annotatedSessionId.trim()||null:e.annotatedSessionId===null&&(t.annotatedSessionId=null);const h=hX(e.annotatedViewportByContextKey);return h&&(t.annotatedViewportByContextKey=h),t}function yX(e,t){if(!e)return{state:t,localFallbackPatch:{}};const r={},n=r;for(const[s,i]of Object.entries(e))Object.prototype.hasOwnProperty.call(t,s)||(n[s]=i);return{state:{...e,...t},localFallbackPatch:r}}function yy(e,t){return Object.is(e,t)?!0:JSON.stringify(e)===JSON.stringify(t)}function kX(e,t){const r={},n=r;for(const[s,i]of Object.entries(t))yy(e[s],i)||(n[s]=i);return r}function vX(e,t){return Object.entries(t).every(([r,n])=>Object.prototype.hasOwnProperty.call(e,r)&&yy(e[r],n))}function NA(e,t){const r=e;for(const[n,s]of Object.entries(t))yy(r[n],s)&&delete r[n]}function eT(e){const t=Sw(e);return`${lX}.${t}`}function cg(e){const t=String(e.currentWorkspaceId||"").trim();return!e.useCloudProxy||!t||t==="default"?e.headers:{...e.headers||{},"x-taskforce-workspace-id":t}}function wX(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(eT(e));return t?Q_(JSON.parse(t)):null}catch{return null}}function DA(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(eT(t),JSON.stringify(e))}catch{}}function bX(e){const{currentWorkspaceId:t,loadKey:r,enabled:n=!0,headers:s,useCloudProxy:i=!1,remotePlanningFavoritesAuthoritative:l=!1,snapshot:c,onApplyState:d}=e,[m,f]=o.useState(""),g=o.useRef(""),h=o.useRef(0),y=o.useRef(c),k=o.useRef(c),v=o.useRef({}),A=o.useRef(null),b=o.useRef(d);return o.useEffect(()=>{b.current=d},[d]),o.useEffect(()=>{y.current=c},[c]),o.useEffect(()=>{if(!n){g.current="",h.current=0,k.current=y.current,v.current={},A.current=null,f("");return}if(g.current===r)return;g.current=r,h.current=0,k.current=y.current,v.current={},A.current=null,f("");let w=!1;const P=h.current,E=wX(r),D=!!E;return E&&(A.current={source:y.current,target:E},b.current(E),f(r)),(async()=>{try{const S=new URLSearchParams({key:"layout"});t&&S.set("workspaceId",t),i&&S.set("taskforceCloud","1");const L=await fetch(`/api/taskforce/ui-state?${S.toString()}`,{method:"GET",credentials:"include",headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i})}),_=L.ok?await L.json().catch(()=>({})):{},T=Q_(_?.state),z=T&&l?{...T,planningFavorites:T.planningFavorites??[]}:T;if(!w&&z&&h.current===P){const{state:Y,localFallbackPatch:H}=yX(E,z);A.current={source:y.current,target:Y},b.current(Y),DA(Y,r),Object.keys(H).length>0&&await Hm({stateKey:"layout",workspaceId:t,headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:H,dedupeScope:r,useCloudProxy:i})}}catch{}finally{!w&&!D&&(A.current||(k.current=y.current),f(r))}})(),()=>{w=!0}},[t,n,s,r,l,i]),o.useEffect(()=>{if(m!==r)return;const w=A.current;if(w){if(vX(c,w.target)){k.current=c,A.current=null;return}if(yy(c,w.source))return;A.current=null}const P=kX(k.current,c);if(k.current=c,Object.keys(P).length===0)return;h.current+=1,DA(c,r),Object.assign(v.current,P);const E=window.setTimeout(async()=>{const D={...v.current};if(Object.keys(D).length!==0)try{const j=await Hm({stateKey:"layout",workspaceId:t,headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:D,dedupeScope:r,useCloudProxy:i});(j.skipped&&j.reason==="unchanged"||!j.skipped&&j.response?.ok&&j.payload?.success!==!1)&&NA(v.current,D)}catch{}},250);return()=>window.clearTimeout(E)},[t,s,r,m,c,i]),o.useEffect(()=>{if(typeof window>"u"||m!==r)return;const w=()=>{const E={...v.current};Object.keys(E).length!==0&&Hm({stateKey:"layout",workspaceId:t,headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:E,keepalive:!0,dedupeScope:r,useCloudProxy:i}).then(D=>{(D.skipped&&D.reason==="unchanged"||!D.skipped&&D.response?.ok&&D.payload?.success!==!1)&&NA(v.current,E)}).catch(()=>{})},P=()=>{document.visibilityState==="hidden"&&w()};return window.addEventListener("pagehide",w),document.addEventListener("visibilitychange",P),()=>{window.removeEventListener("pagehide",w),document.removeEventListener("visibilitychange",P)}},[t,s,r,m,i]),{ready:n&&m===r}}function SX({value:e,placeholder:t,active:r=!1,onChange:n,onClear:s,clearTitle:i}){return a.jsxs("div",{className:R.searchContainer,style:{width:"240px"},children:[a.jsx(ry,{size:16,className:R.searchIcon}),a.jsx("input",{type:"text",className:`${R.searchInput} ${r?R.searchActive:""}`,placeholder:t,value:e,onChange:l=>n(l.target.value)}),e&&s&&a.jsx("button",{className:R.clearSearchBtn,onClick:s,title:i,children:a.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function MA({label:e,value:t,options:r,onChange:n,trailingAction:s,width:i}){return a.jsxs("div",{className:R.groupByContainer,style:i?{width:i}:void 0,children:[a.jsx("span",{className:R.groupByLabel,children:e}),a.jsx("select",{className:`${R.select} ${R.groupBySelect}`,value:t,onChange:l=>n(l.target.value),children:r.map(l=>a.jsx("option",{value:l.value,children:l.label},String(l.value)))}),s]})}function lg({actions:e}){return a.jsx(a.Fragment,{children:e.map(t=>a.jsx("button",{className:`tf-control-icon ${t.active?"tf-control-icon-active":""} ${t.className||""}`.trim(),onClick:t.onClick,title:t.title,disabled:t.disabled,"aria-disabled":t.ariaDisabled,"aria-expanded":t.ariaExpanded,"aria-controls":t.ariaControls,children:t.icon},t.key))})}function LA(){return a.jsx("div",{className:R.headerDivider})}function AX({icon:e,label:t,onClick:r,disabled:n=!1}){return a.jsxs("button",{className:R.primaryUpdateBtn,onClick:r,disabled:n,children:[e," ",t]})}function CX({children:e,id:t}){return a.jsx("div",{id:t,className:R.filterToolbar,style:{padding:"8px 24px",borderBottom:"1px solid var(--border-primary)",background:"var(--bg-secondary)",boxShadow:"0 4px 18px rgba(8, 10, 24, 0.12)",display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap",position:"relative",zIndex:50},children:e})}function IX({categoryFilterOptions:e,typeFilterOptions:t,priorities:r,taxonomyDisplayLabels:n,filterCategories:s,setFilterCategories:i,filterTypes:l,setFilterTypes:c,filterPriorities:d,setFilterPriorities:m,filterStatus:f,setFilterStatus:g,filterAssignees:h,setFilterAssignees:y,assigneeOptions:k,initiativeFilterOptions:v=[],selectedInitiativeId:A="",setSelectedInitiativeId:b=()=>{},workstreamFilterOptions:w=[],selectedWorkstreamId:P="",setSelectedWorkstreamId:E=()=>{},taskScope:D,setTaskScope:j,showArchive:S,setShowArchive:L,onDeleteAllDeleted:_,clearFilters:T,clearFiltersDisabled:z=!1}){return a.jsxs(a.Fragment,{children:[a.jsx(rH,{}),a.jsx(xm,{label:n?.category||jt("standalone.categoryLabel"),options:e,selected:s,onChange:Y=>i(Y),variant:"value"}),a.jsx(xm,{label:n?.type||jt("standalone.typeLabel"),options:t,selected:l,onChange:Y=>c(Y),variant:"value"}),a.jsx(xm,{label:n?.priority||jt("standalone.priorityLabel"),options:r,selected:d,onChange:Y=>m(Y),variant:"value"}),a.jsx(xm,{label:jt("standalone.statusLabel"),options:fc,selected:f,onChange:Y=>g(Y),variant:"value"}),a.jsx(xm,{label:jt("standalone.assigneeLabel"),options:k,selected:h,onChange:Y=>y(Y),variant:"value",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:Y=>{const H=k.find(M=>String(M.value)===String(Y.value));return H?a.jsx(pf,{option:H,size:20}):Y.label}}),a.jsx("div",{className:R.headerDivider,style:{height:"16px",margin:"0 8px"}}),a.jsx(cA,{label:"Initiative",options:v,selected:A,onChange:b,allLabel:"All Initiatives",title:"Filter by initiative"}),a.jsx(cA,{label:"Workstream",options:w,selected:P,onChange:E,allLabel:"All Workstreams",title:"Filter by workstream"}),a.jsx(nH,{onClick:T,disabled:z,label:"Reset task filters and sort"}),a.jsx("div",{style:{flex:1}}),D==="deleted"&&_&&a.jsx(aH,{onClick:_,className:`${R.bulkArchiveBtn} ${R.taskToolbarAction} ${R.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),a.jsx(I_,{scope:D,onScopeChange:Y=>{j(Y),Y==="archived"?L(!0):S&&L(!1)},className:R.groupByContainer,labelClassName:R.groupByLabel})]})}function _X(e){return a.jsx(CX,{id:e.id,children:a.jsx(IX,{...e})})}const TX="_drawer_1llbr_1",xX="_drawerBody_1llbr_5",RX="_paneShell_1llbr_13",PX="_collapsedPaneShell_1llbr_22",jX="_collapsedPaneHeader_1llbr_31",EX="_collapsedPaneLabel_1llbr_43",NX="_collapsedPaneMuted_1llbr_53",DX="_treePane_1llbr_66",MX="_treePaneSplit_1llbr_76",LX="_detailPane_1llbr_80",OX="_paneHeader_1llbr_90",BX="_paneHeaderLabel_1llbr_104",WX="_paneContent_1llbr_118",$X="_sectionTitle_1llbr_132",FX="_sectionHeaderRow_1llbr_141",UX="_headerActionGroup_1llbr_148",zX="_toggleActive_1llbr_155",HX="_archiveVisibilityToggle_1llbr_161",VX="_sectionGroup_1llbr_167",GX="_navigatorControls_1llbr_173",KX="_navigatorSearchRow_1llbr_179",qX="_navigatorSearch_1llbr_179",YX="_navigatorClearSearch_1llbr_223",ZX="_navigatorOptions_1llbr_244",JX="_navigatorOptionField_1llbr_255",XX="_navigatorOptionLabel_1llbr_262",QX="_navigatorDropdown_1llbr_268",eQ="_navigatorDropdownTrigger_1llbr_282",tQ="_navigatorEmpty_1llbr_295",rQ="_scopeSummary_1llbr_324",nQ="_treeList_1llbr_361",aQ="_treeChildren_1llbr_374",sQ="_treeWorkstreamChildren_1llbr_384",oQ="_treeTaskChildren_1llbr_388",iQ="_visuallyHidden_1llbr_392",cQ="_treeRow_1llbr_412",lQ="_detailChildCard_1llbr_413",dQ="_treeRowShell_1llbr_433",uQ="_treeRowShellDraggable_1llbr_438",fQ="_treeRowArchived_1llbr_445",mQ="_rowButton_1llbr_450",pQ="_treeRowDetailOpen_1llbr_455",hQ="_treeRowDropReady_1llbr_473",gQ="_treeRowDropActive_1llbr_477",yQ="_treeRowDropMode_1llbr_483",kQ="_treeChevron_1llbr_483",vQ="_scopeButton_1llbr_485",wQ="_favoriteButton_1llbr_486",bQ="_treeRowShellDropMode_1llbr_487",SQ="_dragHandle_1llbr_487",AQ="_treeRowDragging_1llbr_491",CQ="_rowDragGutter_1llbr_499",IQ="_rowBody_1llbr_506",_Q="_rowContent_1llbr_529",TQ="_rowTopRow_1llbr_539",xQ="_rowReferenceActions_1llbr_548",RQ="_rowActions_1llbr_563",PQ="_emptyPanel_1llbr_607",jQ="_emptyPanelTitle_1llbr_616",EQ="_emptyPanelText_1llbr_622",NQ="_loadingState_1llbr_628",DQ="_loadingRow_1llbr_634",MQ="_loadingBadge_1llbr_646",LQ="_loadingTitle_1llbr_647",OQ="_loadingMeta_1llbr_648",BQ="_failureState_1llbr_669",WQ="_failureStateCompact_1llbr_678",$Q="_failureCopy_1llbr_682",FQ="_relationshipState_1llbr_708",UQ="_relationshipStateTitle_1llbr_719",zQ="_relationshipStateText_1llbr_725",HQ="_relationshipPaneContentEmpty_1llbr_732",VQ="_relationshipStateEmpty_1llbr_742",GQ="_detailHero_1llbr_756",KQ="_detailReferenceRow_1llbr_763",qQ="_detailTitle_1llbr_770",YQ="_detailTopRow_1llbr_777",ZQ="_detailTopActions_1llbr_784",JQ="_detailDescription_1llbr_792",XQ="_detailDescriptionMarkdown_1llbr_805",QQ="_detailOwnerField_1llbr_815",eee="_detailOwnerLabel_1llbr_821",tee="_detailSummaryMeta_1llbr_827",ree="_passiveGuidance_1llbr_831",nee="_editorCard_1llbr_846",aee="_inlineEditorCard_1llbr_853",see="_editorSelect_1llbr_858",oee="_ownerSelect_1llbr_862",iee="_editorField_1llbr_866",cee="_editorLabel_1llbr_872",lee="_editorActions_1llbr_878",dee="_listCard_1llbr_898",uee="_activityTimelineList_1llbr_907",fee="_activityTimelineEmpty_1llbr_913",mee="_sectionDropReady_1llbr_917",pee="_sectionDropActive_1llbr_922",hee="_sectionDropMode_1llbr_928",gee="_linkPickerRow_1llbr_932",yee="_editorRelationshipRow_1llbr_933",kee="_relationshipRecovery_1llbr_940",vee="_listItem_1llbr_956",wee="_listItemButton_1llbr_965",bee="_detailCardButton_1llbr_974",See="_listItemText_1llbr_980",Aee="_detailChildCardSelected_1llbr_1004",Cee="_detailChildCardArchived_1llbr_1012",Iee="_detailChildReferenceRow_1llbr_1017",_ee="_detailChildCardTopRow_1llbr_1023",Tee="_detailChildActions_1llbr_1039",xee="_detailTitleRow_1llbr_1053",Ree="_editorIdentityField_1llbr_1060",ze={drawer:TX,drawerBody:xX,paneShell:RX,collapsedPaneShell:PX,collapsedPaneHeader:jX,collapsedPaneLabel:EX,collapsedPaneMuted:NX,treePane:DX,treePaneSplit:MX,detailPane:LX,paneHeader:OX,paneHeaderLabel:BX,paneContent:WX,sectionTitle:$X,sectionHeaderRow:FX,headerActionGroup:UX,toggleActive:zX,archiveVisibilityToggle:HX,sectionGroup:VX,navigatorControls:GX,navigatorSearchRow:KX,navigatorSearch:qX,navigatorClearSearch:YX,navigatorOptions:ZX,navigatorOptionField:JX,navigatorOptionLabel:XX,navigatorDropdown:QX,navigatorDropdownTrigger:eQ,navigatorEmpty:tQ,scopeSummary:rQ,treeList:nQ,treeChildren:aQ,treeWorkstreamChildren:sQ,treeTaskChildren:oQ,visuallyHidden:iQ,treeRow:cQ,detailChildCard:lQ,treeRowShell:dQ,treeRowShellDraggable:uQ,treeRowArchived:fQ,rowButton:mQ,treeRowDetailOpen:pQ,treeRowDropReady:hQ,treeRowDropActive:gQ,treeRowDropMode:yQ,treeChevron:kQ,scopeButton:vQ,favoriteButton:wQ,treeRowShellDropMode:bQ,dragHandle:SQ,treeRowDragging:AQ,rowDragGutter:CQ,rowBody:IQ,rowContent:_Q,rowTopRow:TQ,rowReferenceActions:xQ,rowActions:RQ,emptyPanel:PQ,emptyPanelTitle:jQ,emptyPanelText:EQ,loadingState:NQ,loadingRow:DQ,loadingBadge:MQ,loadingTitle:LQ,loadingMeta:OQ,failureState:BQ,failureStateCompact:WQ,failureCopy:$Q,relationshipState:FQ,relationshipStateTitle:UQ,relationshipStateText:zQ,relationshipPaneContentEmpty:HQ,relationshipStateEmpty:VQ,detailHero:GQ,detailReferenceRow:KQ,detailTitle:qQ,detailTopRow:YQ,detailTopActions:ZQ,detailDescription:JQ,detailDescriptionMarkdown:XQ,detailOwnerField:QQ,detailOwnerLabel:eee,detailSummaryMeta:tee,passiveGuidance:ree,editorCard:nee,inlineEditorCard:aee,editorSelect:see,ownerSelect:oee,editorField:iee,editorLabel:cee,editorActions:lee,listCard:dee,activityTimelineList:uee,activityTimelineEmpty:fee,sectionDropReady:mee,sectionDropActive:pee,sectionDropMode:hee,linkPickerRow:gee,editorRelationshipRow:yee,relationshipRecovery:kee,listItem:vee,listItemButton:wee,detailCardButton:bee,listItemText:See,detailChildCardSelected:Aee,detailChildCardArchived:Cee,detailChildReferenceRow:Iee,detailChildCardTopRow:_ee,detailChildActions:Tee,detailTitleRow:xee,editorIdentityField:Ree},Pee="_description_ued10_1",jee="_visuallyHidden_ued10_6",Qg={description:Pee,visuallyHidden:jee},Eee=re.lazy(()=>qo(()=>import("./EntityActivityTimeline-_V0zfMuh.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),Nee=re.lazy(()=>qo(()=>import("./ContextAttachmentManager-T-cEVcOZ.js"),__vite__mapDeps([8,1,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager})));function tT(){return a.jsx("span",{className:Qg.visuallyHidden,"aria-hidden":"true",children:"Loading planning details"})}function Dee({description:e,label:t,taskReferences:r,className:n,markdownClassName:s}){const i=String(e||"").trim();return i?a.jsx("div",{className:`${Qg.description} ${n||""}`.trim(),role:"region",tabIndex:0,"aria-label":`${t} description`,children:a.jsx(py,{variant:"detail",className:s,taskReferences:r,children:i})}):null}function Mee({entityType:e,entityId:t,referenceLabel:r,workspaceId:n,attachments:s,onAddAttachment:i,onRemoveAttachment:l,onUpdateAttachmentCaption:c,readOnly:d=!1,defaultExpanded:m=!0}){return a.jsx(re.Suspense,{fallback:a.jsx(tT,{}),children:a.jsx(Nee,{ownerType:e,ownerId:t,ownerReferenceLabel:r,workspaceId:n,attachments:s||[],onAddAttachment:f=>i?.(f),onRemoveAttachment:f=>l?.(f),onUpdateAttachmentCaption:(f,g)=>c?.(f,g),readOnly:d,defaultExpanded:m})})}function Lee({entityType:e,item:t,assigneeOptions:r,currentActorId:n,taskReferences:s,parentInitiative:i=null,defaultExpanded:l=!1,listClassName:c,emptyClassName:d,hydrationState:m,onRetryHydration:f}){const[g,h]=re.useState(l);re.useEffect(()=>{h(l)},[l,e,t.id]),re.useEffect(()=>{if(!(m?.status!=="error"||!f))return window.addEventListener("online",f),()=>window.removeEventListener("online",f)},[m?.status,f]);const y=re.useMemo(()=>{const E=new Map;for(const D of r){const j=String(D.value||"").trim();j&&(E.set(j,D),E.set(j.toLowerCase(),D))}return E},[r]),k=re.useCallback((E,D,j)=>{if(j&&j.trim())return j.trim();const S=String(E||"").trim();return S?y.get(S)?.label||y.get(S.toLowerCase())?.label||S:D==="ai"?"AI Agent":"You"},[y]),v=re.useCallback(E=>{const D=String(E.actorId||"").trim();if(R_(D))return{kind:"system",label:T_,ActorIcon:eC,description:x_};const j=y.get(D)||y.get(D.toLowerCase()),S=E.actorProfile||j||null,L=E.actorType==="system"?"system":E.actorType==="ai"||S?.kind==="ai"||j?.kind==="agent"?"agent":E.actorType==="human"||S?.kind==="human"||j?.kind==="member"?"member":E.fallbackKind||"member",_=String(S&&"icon"in S&&S.icon?S.icon:L==="agent"?"Bot":L==="member"?"User":"ClipboardList"),T=df[_]||(L==="agent"?Cd:L==="member"?tf:tC);return{kind:L,label:L==="system"?"System":k(D,L==="agent"?"ai":"human",S&&"label"in S&&S.label||null),color:S&&"color"in S&&S.color||void 0,ActorIcon:T,isCurrentActorHint:L==="member"&&(D===""||D.toLowerCase()==="user"||D.toLowerCase()==="human")}},[y,k]),A=re.useCallback((E,D)=>{const j=String(D||"").trim();if(j){if(E==="ownerId")return y.get(j)?.label||y.get(j.toLowerCase())?.label||j;if(E==="initiativeId"&&i&&j===i.id)return ws(i)||i.title}},[y,i]),b=re.useMemo(()=>CC({activity:t.activity,comments:t.comments}).length,[t.activity,t.comments]),w=re.useCallback(()=>{h(E=>{const D=!E;return D&&m?.status==="error"&&f?.(),D})},[m?.status,f]),P=m?.error?`${m.error} Retry activity refresh`:"Retry activity refresh";return a.jsxs(a.Fragment,{children:[a.jsx(Km,{label:"Activity",count:b,showZeroCount:!0,expanded:g,expandedTitle:"Hide activity",collapsedTitle:"Show activity",onToggle:w,actions:m?.status==="error"&&f?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:f,"aria-label":"Retry activity refresh",title:P,children:a.jsx($i,{size:13,"aria-hidden":"true"})}):null}),m?.status==="loading"?a.jsx("span",{className:Qg.visuallyHidden,role:"status","aria-live":"polite",children:"Loading latest activity…"}):null,m?.status==="error"?a.jsx("span",{className:Qg.visuallyHidden,role:"status","aria-live":"polite",children:"Activity could not be refreshed. Existing activity is still shown."}):null,g?a.jsx(re.Suspense,{fallback:a.jsx(tT,{}),children:a.jsx(Eee,{activity:t.activity,comments:t.comments,formatFieldValue:A,resolveActorPresentation:v,currentActorId:n,taskReferences:s,emptyMessage:`No ${e} activity yet.`,listClassName:c,emptyClassName:d})}):null]})}const Oee="_identity_1yyv1_1",Bee="_avatar_1yyv1_9",Wee="_picker_1yyv1_16",$ee="_identityDropdown_1yyv1_17",dg={identity:Oee,avatar:Bee,picker:Wee,identityDropdown:$ee};function rT({role:e,option:t,label:r,value:n,options:s=[],onChange:i,disabled:l=!1}){const[c,d]=re.useState(!1),m=String(t?.label||r||"").trim(),f=t||(m?{...Ed,value:m,label:m,icon:"User",kind:"member"}:Ed),g=e==="owner"?`Owner: ${f.label}`:`Assigned to ${f.label}`,h=e==="owner"?`Change owner currently set to ${f.label}`:`Reassign task currently assigned to ${f.label}`,y=re.useMemo(()=>sf(s),[s]),k=re.useMemo(()=>new Map(y.map(b=>[b.value,b])),[y]),v=a.jsx("span",{className:dg.identity,title:i&&!l?h:g,"aria-label":g,children:a.jsx("span",{className:dg.avatar,children:a.jsx(gy,{option:f,size:22,variant:"card"})})});if(!i||l)return v;const A=String(n||t?.value||Ed.value);return a.jsx("span",{className:dg.picker,onClick:b=>b.stopPropagation(),onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>b.stopPropagation(),children:a.jsx(fi,{value:A,options:y,onChange:async b=>{d(!0);try{await i(String(b))}catch{}finally{d(!1)}},disabled:c,ariaLabel:h,className:dg.identityDropdown,hideChevron:!0,portalPanel:!0,panelAlign:"end",panelMinWidth:240,searchable:!0,searchPlaceholder:e==="owner"?"Search owners...":"Search assignees...",noResultsText:e==="owner"?"No owners found.":"No assignees found.",renderOptionContent:b=>{const w=k.get(String(b.value));return w?a.jsx(pf,{option:w}):b.label},triggerContent:v})})}const Fee="_referenceBadgeButton_1ko1c_1",Uee="_referenceBadgeStatic_1ko1c_2",zee="_summaryLayout_1ko1c_8",Hee="_summaryContent_1ko1c_17",Vee="_title_1ko1c_29",Gee="_meta_1ko1c_43",Kee="_cardFooter_1ko1c_54",qee="_cardFooterMeta_1ko1c_63",Yee="_noTasks_1ko1c_71",Zee="_scopeCount_1ko1c_79",Jee="_contextCount_1ko1c_84",Xee="_progressTrack_1ko1c_91",Qee="_progressSegment_1ko1c_100",ete="_progressSegmentCancelled_1ko1c_106",tte="_progressSegmentTodo_1ko1c_110",rte="_progressFill_1ko1c_114",Ls={referenceBadgeButton:Fee,referenceBadgeStatic:Uee,summaryLayout:zee,summaryContent:Hee,title:Vee,meta:Gee,cardFooter:Kee,cardFooterMeta:qee,noTasks:Yee,scopeCount:Zee,contextCount:Jee,progressTrack:Xee,progressSegment:Qee,progressSegmentCancelled:ete,progressSegmentTodo:tte,progressFill:rte},nte=["done","review","in-progress","on-hold","cancelled","task"];function Dd({label:e,entityType:t,entityName:r,interactive:n=!0,provisional:s=!1,pending:i=!1}){const[l,c]=re.useState(!1),d=s||i?R.provisionalReferenceBadge:"",m=r?.trim(),f=re.useCallback(async g=>{g.stopPropagation();try{await navigator.clipboard.writeText(e),c(!0),window.setTimeout(()=>c(!1),1200)}catch{c(!1)}},[e]);return!n||i?a.jsx("span",{className:`${R.referenceBadge} ${R.referenceBadgeStatic} ${Ls.referenceBadgeStatic} ${d}`.trim(),title:i?"Canonical reference pending synchronization.":m||(s?"Temporary identifier — replaced after synchronization.":void 0),children:a.jsx("span",{children:e})}):a.jsx(Jw,{copied:l,label:e,onClick:f,title:m||(s?"Temporary identifier — replaced after synchronization.":`Copy ${t} reference`),ariaLabel:l?`Copied ${s?"temporary ":""}${t} reference`:s?`Copy temporary ${t} reference ${e}`:`Copy ${t} reference`,className:`${Ls.referenceBadgeButton} ${d}`.trim(),children:e})}function nT({children:e}){return a.jsx("span",{className:Ls.title,"data-planning-card-title":"true",children:e})}function aT({children:e,className:t=""}){return a.jsx("span",{className:`${Ls.meta} ${t}`.trim(),children:e})}function sT(){return a.jsx("span",{className:Ls.noTasks,children:"No tasks yet"})}function oT({children:e,identity:t}){return a.jsxs("div",{className:Ls.cardFooter,children:[a.jsx("div",{className:Ls.cardFooterMeta,children:e}),t]})}function iT({count:e}){const t=Math.max(0,Number(e)||0),r=`${t} context ${t===1?"item":"items"}`;return a.jsxs("span",{className:Ls.contextCount,"aria-label":r,title:r,children:[a.jsx(H0,{size:12,"aria-hidden":"true"}),a.jsx("span",{"aria-hidden":"true",children:t})]})}function cT({value:e,label:t,statusCounts:r}){const n=Math.min(100,Math.max(0,Number(e)||0)),s=nte.map(d=>{const m=Math.max(0,Number(r?.[d])||0),f=Vo(d);return{status:d,count:m,label:f.shortLabel||f.label,color:d==="task"||d==="cancelled"?void 0:aa(f.color)}}),i=s.reduce((d,m)=>d+m.count,0),l=s.filter(d=>d.count>0).map(d=>`${d.label}: ${d.count}`).join(", "),c=l?`${t}. ${l}`:t;return a.jsx("div",{className:Ls.progressTrack,role:"progressbar","aria-label":c,title:l||void 0,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,children:i>0?s.map(d=>d.count>0?a.jsx("span",{"aria-hidden":"true","data-progress-status":d.status,className:`${Ls.progressSegment} ${d.status==="cancelled"?Ls.progressSegmentCancelled:""} ${d.status==="task"?Ls.progressSegmentTodo:""}`.trim(),style:{width:`${d.count/i*100}%`,backgroundColor:d.color}},d.status):null):a.jsx("span",{className:Ls.progressFill,style:{width:`${n}%`},"aria-hidden":"true"})})}function lT({item:e,workstreamCount:t,className:r=""}){const n=e.taskCount>0,s=Math.max(0,Number(t)||0);return a.jsxs(aT,{className:r,children:[t!==void 0?a.jsxs(a.Fragment,{children:[a.jsxs("span",{className:Ls.scopeCount,children:[s," ",s===1?"workstream":"workstreams"]}),a.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,n?a.jsxs(a.Fragment,{children:[a.jsxs("span",{children:[e.completedTaskCount," of ",e.taskCount," complete"]}),a.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,a.jsx(iT,{count:e.attachmentCount})]})}function dT({item:e,entityType:t,workstreamCount:r,ownerOption:n,ownerOptions:s,onChangeOwner:i,onChangeIdentity:l}){const c=e.taskCount>0;return a.jsxs("div",{className:Ls.summaryLayout,children:[a.jsx(vp,{entityType:t,entityId:e.id,icon:e.icon,color:e.color,disabled:!!e.isArchived,onChange:l}),a.jsxs("div",{className:Ls.summaryContent,children:[a.jsx(nT,{children:e.title}),c?a.jsx(cT,{value:e.progressPercent,label:`${e.title}: ${e.progressPercent}% resolved`,statusCounts:e.statusCounts}):null,a.jsxs(oT,{identity:a.jsx(rT,{role:"owner",option:n,label:e.ownerLabel,value:e.ownerId,options:s,onChange:i,disabled:!!e.isArchived}),children:[c?null:a.jsx(sT,{}),a.jsx(lT,{item:e,workstreamCount:t==="initiative"?r:void 0})]})]})]})}const ate="_card_6phn6_1",ste="_content_6phn6_34",ote="_compact_6phn6_52",ite="_archived_6phn6_57",cte="_referenceRow_6phn6_75",lte="_topRow_6phn6_85",dte="_actions_6phn6_101",kd={card:ate,content:ste,compact:ote,archived:ite,referenceRow:cte,topRow:lte,actions:dte};function uT({task:e,assigneeOption:t,assigneeOptions:r,showStatusLabel:n,onOpen:s,onAssigneeChange:i,onStatusChange:l,referenceAction:c,actions:d,feedback:m,referenceInteractive:f=!0,compact:g=!1}){const h=vw(e),y=h.label,k=Vo(e.status),v=k.value==="task"?"":k.shortLabel||k.label,A=aa(k.color),b=y?`Open task ${y}: ${e.title}`:`Open task ${e.title}`,w=P=>{!s||P.key!=="Enter"&&P.key!==" "||(P.preventDefault(),s())};return a.jsxs("div",{className:`${kd.card} ${g?kd.compact:""} ${e.isArchived?kd.archived:""}`.trim(),"data-task-status":k.value,style:{"--planning-task-status-color":A},children:[a.jsxs("div",{className:kd.topRow,children:[a.jsxs("div",{className:kd.referenceRow,children:[c,y?a.jsx(Dd,{label:y,entityType:"task",interactive:f,provisional:h.isProvisional}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsxs("div",{className:kd.actions,onClick:P=>P.stopPropagation(),children:[d,a.jsx(Kg,{status:k.value,disabled:!!e.isArchived||!l,compressed:!0,shortLabels:!0,showLabel:n,archiveActionMode:"none",onStatusChange:l})]})]}),m,a.jsxs("div",{role:s?"button":void 0,tabIndex:s?0:void 0,className:kd.content,onClick:s,onKeyDown:w,"aria-label":s?b:void 0,children:[a.jsx(nT,{children:e.title}),a.jsx(oT,{identity:a.jsx(rT,{role:"assignee",option:t,value:e.assignee,options:r,onChange:i,disabled:!!e.isArchived}),children:a.jsxs(aT,{children:[v?a.jsxs(a.Fragment,{children:[v,a.jsx("span",{"aria-hidden":"true",children:" • "})]}):null,a.jsx(iT,{count:e.attachmentCount}),e.isArchived?a.jsxs(a.Fragment,{children:[a.jsx("span",{"aria-hidden":"true",children:" • "}),"archived"]}):null]})})]})]})}const cv=Object.freeze([{value:"execution",label:"Execution order",description:"Shared order planned for this workstream."},{value:"ready",label:"Ready first",description:"Shows tasks with completed prerequisites first."},{value:"priority",label:"Priority",description:"Shows higher-priority tasks first."}]);function ute(e){return e==="ready"||e==="priority"?e:"execution"}function fte(e,t){const r=new Set(t);if(r.size!==t.length)throw new Error("Visible task order contains duplicate task ids.");if(e.filter(i=>r.has(i.id)).length!==r.size)throw new Error("Visible task order contains tasks outside this workstream.");let s=0;return e.map(i=>r.has(i.id)?t[s++]:i.id)}function xd(e){const t=Vo(e.status).value;return t==="done"||t==="cancelled"}function tb(e,t){const r=typeof e.workstreamOrder=="number"&&Number.isFinite(e.workstreamOrder)?e.workstreamOrder:Number.POSITIVE_INFINITY,n=typeof t.workstreamOrder=="number"&&Number.isFinite(t.workstreamOrder)?t.workstreamOrder:Number.POSITIVE_INFINITY;return r!==n?r-n:String(e.createdAt||"").localeCompare(String(t.createdAt||""))||e.id.localeCompare(t.id)}function OA(e,t){return e.dependencyState?e.dependencyState==="ready":(e.prerequisiteTaskIds||[]).every(r=>Vo(t.get(r)?.status).value==="done")}function ey(e){return e.map((t,r)=>({task:t,index:r})).sort((t,r)=>tb(t.task,r.task)||t.index-r.index).map(({task:t})=>t)}function mte(e,t){const r=new Set(e.map(m=>m.id)),n=new Map,s=new Map(e.map(m=>[m.id,0]));for(const m of e)for(const f of m.prerequisiteTaskIds||[]){const g=t.get(f);!g||xd(g)||!r.has(f)||(n.set(f,[...n.get(f)||[],m.id]),s.set(m.id,(s.get(m.id)||0)+1))}const i=new Map(e.map(m=>[m.id,m])),l=ey(e.filter(m=>s.get(m.id)===0)),c=[];for(;l.length>0;){const m=l.shift();c.push(m);for(const f of n.get(m.id)||[]){const g=(s.get(f)||0)-1;if(s.set(f,g),g===0){const h=i.get(f);h&&(l.push(h),l.sort(tb))}}}if(c.length===e.length)return c;const d=new Set(c.map(m=>m.id));return[...c,...ey(e.filter(m=>!d.has(m.id)))]}function tw(e,t){const r=new Map(e.map(n=>[n.id,n]));if(t==="ready"){const n=e.filter(l=>!xd(l)),s=ey(n.filter(l=>OA(l,r))),i=mte(n.filter(l=>!OA(l,r)),r);return[...s,...i,...ey(e.filter(xd))]}return e.map((n,s)=>({task:n,index:s})).sort((n,s)=>{const i=n.task,l=s.task,c=Number(xd(i))-Number(xd(l));if(c)return c;if(t==="priority"){const d=Number(l.priority||0)-Number(i.priority||0);if(d)return d}return tb(i,l)||n.index-s.index}).map(({task:n})=>n)}const pte="_control_1n99m_1",rb={control:pte},hte="_trigger_11iyx_1",gte={trigger:hte};function yte({value:e,onChange:t}){const r=cv.find(n=>n.value===e)||cv[0];return a.jsx(fi,{value:e,options:[...cv],onChange:n=>t(n),ariaLabel:"Arrange workstream tasks",className:rb.control,portalPanel:!0,panelAlign:"end",triggerContent:a.jsxs("span",{className:gte.trigger,title:r.description,children:[a.jsx(lw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:r.label})]})})}const kte="_list_oepxi_1",vte="_item_oepxi_6",wte="_grip_oepxi_13",bte="_card_oepxi_40",Ym={list:kte,item:vte,grip:wte,card:bte};function Ste(e){const t=hw({id:e.task.id,disabled:e.disabled}),r=e.disabledReason?`Reorder ${e.task.title} — ${e.disabledReason}`:`Reorder ${e.task.title}`;return a.jsxs("div",{ref:t.setNodeRef,className:Ym.item,style:{transform:ny.Transform.toString(t.transform),transition:t.transition},children:[a.jsx("button",{ref:t.setActivatorNodeRef,type:"button",className:Ym.grip,disabled:e.disabled,"aria-label":r,title:e.disabledReason||"Drag to change execution order",...t.attributes,...t.listeners,children:a.jsx(iw,{size:15,"aria-hidden":"true"})}),a.jsx("div",{className:Ym.card,children:e.children})]})}function Ate(e){const[t,r]=re.useState(()=>e.tasks.map(h=>h.id)),[n,s]=re.useState(!1),i=e.tasks.map(h=>h.id).join("\0");re.useEffect(()=>r(e.tasks.map(h=>h.id)),[i]);const l=dw(ep(uw,{activationConstraint:{distance:6}}),ep(fC,{coordinateGetter:uC})),c=re.useMemo(()=>{const h=new Map(e.tasks.map(y=>[y.id,y]));return t.map(y=>h.get(y)).filter(y=>!!y)},[t,e.tasks]),d=!!e.onReorder,m=e.mode==="execution"&&d,f=re.useCallback(async h=>{if(!m||n||!h.over||h.active.id===h.over.id)return;const y=t,k=y.indexOf(String(h.active.id)),v=y.indexOf(String(h.over.id));if(k<0||v<0)return;const A=new Map(c.map(E=>[E.id,E])),b=A.get(y[k]),w=A.get(y[v]);if(!b||!w||xd(b)!==xd(w))return;const P=lC(y,k,v);r(P),s(!0);try{await e.onReorder?.(P)}catch{r(y)}finally{s(!1)}},[m,t,c,e,n]);if(!d)return a.jsx("div",{className:`${Ym.list} ${e.className||""}`.trim(),children:e.tasks.map(h=>a.jsx(re.Fragment,{children:e.children(h)},h.id))});const g=e.mode==="execution"?void 0:"Switch to Execution order to reorder tasks";return a.jsx(fw,{sensors:l,collisionDetection:dC,onDragEnd:h=>{f(h)},children:a.jsx(mw,{items:t,strategy:pw,children:a.jsx("div",{className:`${Ym.list} ${e.className||""}`.trim(),"aria-busy":n||void 0,children:c.map(h=>a.jsx(Ste,{task:h,disabled:!m||n,disabledReason:g||(n?"Saving execution order":void 0),children:e.children(h)},h.id))})})})}const Cte="_prompt_16ixe_1",Ite="_actions_16ixe_20",BA={prompt:Cte,actions:Ite};function rw({entityType:e,title:t,activeTaskCount:r=0,activeWorkstreamCount:n=0,busy:s,onCancel:i,onConfirm:l}){const c=[r>0?`${r} completed/cancelled ${r===1?"task":"tasks"}`:"",e==="initiative"&&n>0?`${n} ${n===1?"workstream":"workstreams"}`:""].filter(Boolean),d=c.length===0?"":c.length===1?`${c[0]} and `:`${c.join(", ")}, and `;return a.jsxs("div",{className:`${BA.prompt} tf-surface-inset`,role:"group","aria-label":`Confirm archive ${e} ${t}`,children:[a.jsxs("span",{children:["Archive ",d,"this ",e,"?"]}),a.jsxs("div",{className:BA.actions,children:[a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:i,title:"Cancel archive","aria-label":"Cancel archive",children:a.jsx(mi,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:l,title:"Confirm archive","aria-label":s?"Archiving":"Confirm archive",children:a.jsx(Fi,{size:14,"aria-hidden":"true"})})]})]})}const _te="_title_sy4bx_1",Tte="_content_sy4bx_7",xte="_help_sy4bx_17",Rte="_actions_sy4bx_22",ug={title:_te,content:Tte,help:xte,actions:Rte};function Pte({item:e,busy:t,theme:r,onCancel:n,onConfirm:s}){return a.jsx(Ko,{isOpen:!!e,onClose:n,closeDisabled:t,closeOnOverlayClick:!1,size:"sm",theme:r,title:a.jsxs("span",{className:ug.title,children:[a.jsx(Um,{size:17,"aria-hidden":"true"}),"Unlink ",e?.entityType||"item"]}),footer:a.jsxs("div",{className:ug.actions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary",disabled:t,onClick:n,"data-modal-initial-focus":!0,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-destructive",disabled:t,onClick:s,children:t?"Unlinking…":"Unlink"})]}),children:e?a.jsxs("div",{className:ug.content,children:[a.jsxs("p",{children:["Unlink ",a.jsx("strong",{children:e.referenceLabel})," ",e.title," from ",e.parentLabel,"?"]}),a.jsx("p",{className:ug.help,children:"The item will remain available and can be linked again later."})]}):null})}const jte="_triggerAction_ssrgo_1",Ete="_triggerSelection_ssrgo_2",Nte="_iconPicker_ssrgo_9",Dte="_option_ssrgo_20",Mte="_optionTopRow_ssrgo_27",Lte="_optionTitle_ssrgo_38",Ote="_optionMeta_ssrgo_47",vd={triggerAction:jte,triggerSelection:Ete,iconPicker:Nte,option:Dte,optionTopRow:Mte,optionTitle:Lte,optionMeta:Ote};function ty({options:e,selectedId:t="",entityLabel:r,onSelect:n,disabled:s=!1,className:i="",iconTrigger:l=!1,triggerTitle:c}){const d=re.useMemo(()=>new Map(e.map(h=>[h.id,h])),[e]),m=re.useMemo(()=>e.map(h=>({value:h.id,label:[h.referenceLabel,h.title,h.meta].filter(Boolean).join(" ")})),[e]),f=d.get(t),g=`Link ${r}`;return a.jsx(fi,{value:t,options:m,onChange:h=>{const y=d.get(String(h));y&&n(y)},disabled:s||e.length===0,className:`${l?`${vd.iconPicker} ${R.taskWorkstreamPicker}`:rb.control} ${i}`.trim(),portalPanel:!0,panelAlign:"start",panelMinWidth:320,searchable:!0,searchPlaceholder:`Search ${r}s by title or reference`,noResultsText:`No matching ${r}s.`,ariaLabel:g,title:l?c||g:void 0,hideChevron:l,triggerContent:l?a.jsx(Jm,{size:14,"aria-hidden":"true"}):f?a.jsxs("span",{className:vd.triggerSelection,children:[a.jsx(Dd,{label:f.referenceLabel,entityType:r,entityName:f.title}),a.jsx("span",{children:f.title})]}):a.jsxs("span",{className:vd.triggerAction,children:[a.jsx(Jm,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:g})]}),renderOptionContent:h=>{const y=d.get(String(h.value));return y?a.jsxs("span",{className:vd.option,children:[a.jsxs("span",{className:vd.optionTopRow,children:[r!=="task"?a.jsx(vp,{entityType:r,entityId:y.id,icon:y.icon,color:y.color,size:"inline",disabled:!0}):null,a.jsx(Dd,{label:y.referenceLabel,entityType:r,entityName:y.title}),a.jsx("span",{className:vd.optionTitle,children:y.title})]}),y.meta?a.jsx("span",{className:vd.optionMeta,children:y.meta}):null]}):h.label},placeholder:g})}function fT(e,t){const r=String(t||"").trim(),n=new Map;for(const s of e){const i=String(s?.value||"").trim();if(!i||i==="unassigned"||typeof s.archivedAt=="string"&&s.archivedAt.trim().length>0)continue;const l=String(s.label||i).trim()||i,c=String(s.kind||"").trim().toLowerCase(),d=String(s.username||"").trim().toLowerCase(),m=c==="agent"?`agent:${d||l.toLowerCase()}`:`value:${i}`;(!n.has(m)||i===r)&&n.set(m,{...s,value:i,label:l})}return Array.from(n.values()).sort((s,i)=>s.label.localeCompare(i.label,void 0,{sensitivity:"base"}))}function dc(e){const t=e.kind==="agent"?"agent":e.kind==="member"?"member":"unassigned";return{value:e.value,label:e.label,icon:e.icon||(t==="agent"?"Bot":t==="member"?"User":hp),color:e.color||(t==="agent"?"var(--brand-primary)":t==="member"?"var(--status-success)":cy),kind:t,avatarUrl:e.avatarUrl,avatarRevision:e.avatarRevision,avatarUpdatedAt:e.avatarUpdatedAt,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata,archivedAt:e.archivedAt}}function nb({value:e,options:t,leadingOptions:r=[],includeUnassigned:n=!0,onChange:s,disabled:i,ariaLabel:l,className:c}){const d=re.useMemo(()=>{const f=r.map(y=>({...y,value:String(y.value||"").trim(),label:String(y.label||y.value||"").trim()})).filter(y=>y.value&&y.label),g=new Set(f.map(y=>y.value)),h=fT(t,e).filter(y=>!g.has(y.value));return[...f,...n?[{value:"",label:"Unassigned",icon:hp,color:cy,kind:"unassigned"}]:[],...h]},[n,r,t,e]),m=re.useMemo(()=>new Map(d.map(f=>[f.value,dc(f)])),[d]);return a.jsx(fi,{value:e,options:d.map(f=>({value:f.value,label:f.label,icon:f.icon||void 0,color:f.color||void 0})),onChange:f=>s(String(f)),disabled:i,ariaLabel:l,className:c,portalPanel:!0,panelAlign:"start",panelMinWidth:240,searchable:!0,searchPlaceholder:"Search owners...",noResultsText:"No owners found.",renderOptionContent:f=>{const g=m.get(String(f.value));return g?a.jsx(pf,{option:g}):f.label}})}const WA=[{value:"default",label:"Default order"},{value:"title",label:"Title"},{value:"owner",label:"Owner"},{value:"progress",label:"Progress"}];function Ig(e,t,r){if(t==="all")return!0;const n=String(e.ownerId||"").trim();return t==="unassigned"?!n:t==="mine"?!!r&&n===r:n===t}function _g(e,t,r){if(!r)return!0;const n=t==="initiative"?ws(e):Go(e);return e.title.toLocaleLowerCase().includes(r)||n.toLocaleLowerCase().includes(r)}function lv({item:e,entityType:t,showArchivedPlanning:r,searchQuery:n,ownerFilter:s,currentOwnerId:i}){return(r||!e.isArchived)&&Ig(e,s,i.trim())&&_g(e,t,n.trim().toLocaleLowerCase())}function fg(e,t){return t==="default"?e:e.map((r,n)=>({item:r,index:n})).sort((r,n)=>{let s=0;if(t==="title")s=r.item.title.localeCompare(n.item.title,void 0,{sensitivity:"base"});else if(t==="owner"){const i=String(r.item.ownerLabel||"").trim(),l=String(n.item.ownerLabel||"").trim();!i&&l?s=1:i&&!l?s=-1:s=i.localeCompare(l,void 0,{sensitivity:"base"})}else s=n.item.progressPercent-r.item.progressPercent;return s||r.index-n.index}).map(({item:r})=>r)}function Bte({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:r,searchQuery:n,ownerFilter:s,currentOwnerId:i,sort:l}){const c=n.trim().toLocaleLowerCase(),d=!!c||s!=="all",m=i.trim(),g=e.filter(A=>r||!A.isArchived).flatMap(A=>{const b=(A.allWorkstreams||A.workstreams).filter(L=>r||!L.isArchived);if(!d)return[{initiative:A,workstreams:fg(b,l)}];const w=Ig(A,s,m),P=_g(A,"initiative",c),E=w&&P,D=b.filter(L=>Ig(L,s,m)),j=D.filter(L=>_g(L,"workstream",c)),S=E&&c?D:j;return!E&&S.length===0?[]:[{initiative:A,workstreams:fg(S,l)}]}),h=new Map(g.map(A=>[A.initiative.id,A])),y=fg(g.map(({initiative:A})=>A),l).map(A=>h.get(A.id)),k=t.filter(A=>(r||!A.isArchived)&&Ig(A,s,m)&&_g(A,"workstream",c)),v=fg(k,l);return{initiatives:y,standaloneWorkstreams:v,hasCriteria:d,resultCount:y.length+y.reduce((A,b)=>A+b.workstreams.length,0)+v.length}}const Zm=392,mc=392,dv=56,mT=1280,Wte=Zm+mc;function $te(e,t=0){const r=Math.max(0,e-t);return r>=mT?"wide":r>=Wte?"medium":"narrow"}function Fte(e){const t=re.useCallback(()=>typeof window>"u"?mT+e:window.innerWidth,[e]),[r,n]=re.useState(t);return re.useEffect(()=>{const s=()=>n(t());return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[t]),{viewportWidth:r,availableWidth:Math.max(0,r-e),layoutMode:$te(r,e)}}function pT(e,t,r,n,s){return(e?dv:Zm)+(t?r?dv:mc:0)+(n?s?dv:mc:0)}function uv({visible:e,disabled:t,disabledLabel:r,itemLabel:n,onToggle:s}){const i=e?`Hide archived ${n}`:`Show archived ${n}`,l=t?r||`No archived ${n}`:i;return a.jsx("button",{type:"button",className:`tf-control-icon ${ze.archiveVisibilityToggle} ${e?ze.toggleActive:""}`.trim(),title:l,"aria-label":l,"aria-pressed":e,disabled:t,onClick:s,children:e?a.jsx(cw,{size:15,"aria-hidden":"true"}):a.jsx(sC,{size:15,"aria-hidden":"true"})})}function $A(e){return e.type==="initiative"?(e.item.allWorkstreams||e.item.workstreams).filter(t=>!!t.isArchived).length:(e.item.tasks||[]).filter(t=>!!t.isArchived).length}function Pm({rowId:e,rowType:t,referenceLabel:r,item:n,ownerOption:s,ownerOptions:i,workstreamCount:l,active:c,isArchived:d=!1,detailOpen:m=!1,canExpand:f=!1,expanded:g=!1,controlsId:h,onToggleExpand:y,onToggleScope:k,onOpenDetails:v,onChangeOwner:A,onChangeIdentity:b,initiativeLinkOptions:w=[],onLinkInitiative:P,favorite:E,favoriteReady:D,onToggleFavorite:j,onArchiveReady:S,hierarchyInteractions:L=!0}){const{title:_}=n,[T,z]=re.useState(!1),[Y,H]=re.useState(!1),[M,oe]=re.useState(!1),{active:K}=mC(),Q=String(K?.data?.current?.type||""),ee=L&&t==="workstream"&&Q==="task-card",fe=L&&t==="initiative"&&Q==="planning-workstream",_e=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:$e,isOver:Ye}=gw({id:`${_e}:${e}`,data:t==="workstream"?{type:_e,workstreamId:e}:{type:_e,initiativeId:e},disabled:!L}),ye=L&&t==="workstream",{attributes:ge,listeners:se,setNodeRef:ie,setActivatorNodeRef:me,transform:$,isDragging:V}=dx({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!ye}),B=ye&&$?{transform:ny.Translate.toString($)}:void 0,N=ee||fe,be=t==="initiative"?"workstreams":"tasks",Ae=f&&!!y,q=f?`${g?"Collapse":"Expand"} ${be} for ${_}`:`No ${be} for ${_}`,Z=!!(n.archiveReady&&!d&&S),G=re.useRef({}),[ne,Te]=re.useState("favorite"),Le=re.useMemo(()=>[...D?["favorite"]:[],...Z?["archive"]:[],"scope",...Ae?["disclosure"]:[]],[Z,Ae,D]),Ue=Le.includes(ne)?ne:Le[0];re.useEffect(()=>{Ue&&Ue!==ne&&Te(Ue)},[ne,Ue]);const st=re.useCallback(de=>{Te(de)},[]),ft=re.useCallback(de=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(de.key))return;const le=de.target.closest("[data-planning-row-action]")?.dataset.planningRowAction;if(!le||!Le.includes(le))return;de.preventDefault();const Ie=Le.indexOf(le),Je=de.key==="Home"?0:de.key==="End"?Le.length-1:de.key==="ArrowRight"?(Ie+1)%Le.length:(Ie-1+Le.length)%Le.length,J=Le[Je];Te(J),G.current[J]?.focus()},[Le]),xe=async()=>{if(!(!S||Y)){H(!0);try{await S()&&z(!1)}finally{H(!1)}}},ke=async de=>{if(!(!P||M)){oe(!0);try{await P(de)}finally{oe(!1)}}},ve=t==="workstream"&&!!P,He=d||M||w.length===0,Ee=d?"Unarchive this workstream before linking an initiative":w.length===0?"No initiatives available":"Link initiative";return a.jsxs("div",{ref:ie,style:B,className:`${ze.treeRowShell} ${ye?ze.treeRowShellDraggable:""} ${V?ze.treeRowDragging:""} ${N?ze.treeRowShellDropMode:""}`.trim(),"data-planning-draggable-row":ye||void 0,children:[ye?a.jsx("div",{className:ze.rowDragGutter,"data-planning-drag-gutter":"true",children:a.jsx("button",{type:"button",ref:me,className:ze.dragHandle,title:"Drag onto an initiative to move this workstream","aria-label":`Move workstream ${_} to an initiative`,"data-planning-drag-handle":"true",...ge,...se,children:a.jsx(iw,{size:15,"aria-hidden":"true"})})}):null,a.jsx("div",{ref:$e,className:`${ze.treeRow} ${d?ze.treeRowArchived:""} ${m?ze.treeRowDetailOpen:""} ${N?ze.treeRowDropReady:""} ${Ye?ze.treeRowDropActive:""} ${N?ze.treeRowDropMode:""}`,"data-board-scoped":c||void 0,children:a.jsxs("div",{className:ze.rowContent,children:[a.jsxs("div",{className:ze.rowTopRow,children:[a.jsxs("div",{className:ze.rowReferenceActions,children:[ve?a.jsx(ty,{options:w,entityLabel:"initiative",onSelect:de=>{ke(de)},disabled:He,iconTrigger:!0,triggerTitle:Ee}):null,a.jsx(Dd,{label:r||"Reference pending",entityType:t,entityName:_,pending:!r})]}),a.jsxs("div",{className:ze.rowActions,role:"toolbar","aria-label":`${t==="initiative"?"Initiative":"Workstream"} actions for ${_}`,"aria-orientation":"horizontal",onKeyDown:ft,children:[a.jsx("button",{type:"button",ref:de=>{G.current.favorite=de},className:`tf-control-icon tf-control-icon-compact ${ze.favoriteButton} ${E?"tf-control-icon-active":""}`.trim(),onClick:j,onFocus:()=>st("favorite"),disabled:!D,tabIndex:Ue==="favorite"?0:-1,"data-planning-row-action":"favorite",title:D?E?`Remove ${t} from Favorites`:`Add ${t} to Favorites`:"Loading Favorites","aria-label":D?E?`Remove ${t} ${_} from Favorites`:`Add ${t} ${_} to Favorites`:`Loading Favorites for ${t} ${_}`,"aria-pressed":E,children:a.jsx(V0,{size:14,fill:E?"currentColor":"none","aria-hidden":"true"})}),Z?a.jsx("button",{type:"button",ref:de=>{G.current.archive=de},className:"tf-control-icon tf-control-icon-compact",onClick:()=>z(!0),onFocus:()=>st("archive"),tabIndex:Ue==="archive"?0:-1,"data-planning-row-action":"archive",title:`Archive completed ${t}`,"aria-label":`Archive completed ${t} ${_}`,"aria-expanded":T,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):null,a.jsx("button",{type:"button",ref:de=>{G.current.scope=de},className:`tf-control-icon tf-control-icon-compact ${ze.scopeButton} ${c?"tf-control-icon-active":""}`.trim(),onClick:k,onFocus:()=>st("scope"),tabIndex:Ue==="scope"?0:-1,"data-planning-row-action":"scope",title:c?"Clear board scope":"Scope board to this item","aria-label":c?`Clear board scope for ${_}`:`Scope board to ${_}`,"aria-pressed":c,children:a.jsx(G0,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",ref:de=>{G.current.disclosure=de},className:`tf-control-icon tf-control-icon-compact ${ze.treeChevron}`.trim(),onClick:Ae?y:void 0,onFocus:()=>st("disclosure"),tabIndex:Ue==="disclosure"?0:-1,"data-planning-row-action":"disclosure",title:q,"aria-label":q,"aria-expanded":Ae?g:!1,"aria-controls":Ae&&g?h:void 0,disabled:!Ae,children:g&&Ae?a.jsx(Fd,{size:14,"aria-hidden":"true"}):a.jsx(Ld,{size:14,"aria-hidden":"true"})})]})]}),a.jsx("div",{className:ze.rowBody,children:a.jsx("div",{role:"button",tabIndex:0,className:ze.rowButton,onClick:v,onKeyDown:de=>{de.key!=="Enter"&&de.key!==" "||(de.preventDefault(),v())},"aria-label":`View ${t} details for ${_}`,"aria-pressed":m,children:a.jsx(dT,{item:n,entityType:t,workstreamCount:l,ownerOption:s?dc(s):void 0,ownerOptions:i.map(dc),onChangeOwner:A,onChangeIdentity:b})})}),T?a.jsx(rw,{entityType:t,title:_,activeTaskCount:n.archiveActiveTaskCount,activeWorkstreamCount:n.archiveActiveWorkstreamCount,busy:Y,onCancel:()=>z(!1),onConfirm:()=>{xe()}}):null]})})]})}function Ute({task:e,assigneeOption:t,assigneeOptions:r,showTaskCardStatusLabel:n,onOpenTaskById:s,onChangeTaskAssignee:i,onSetTaskStatus:l,onArchivePlanningTask:c}){const[d,m]=re.useState(!1),f=Vo(e.status).value,g=!e.isArchived&&(f==="done"||f==="cancelled")&&!!c;return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsx(uT,{task:e,assigneeOption:t?dc(t):void 0,assigneeOptions:r.map(dc),showStatusLabel:n,onOpen:s?()=>s(e.id):void 0,onAssigneeChange:i?h=>i(e.id,h):void 0,onStatusChange:l?h=>l(e.id,h):void 0,actions:g?a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:d,onClick:async h=>{h.stopPropagation(),m(!0);try{await c?.(e.id)}finally{m(!1)}},title:"Archive task","aria-label":`Archive task ${Ss(e)||e.title}`,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):void 0,compact:!0})})}function jm({label:e,onExpand:t,muted:r=!1}){return a.jsx("div",{className:`${ze.paneShell} ${ze.collapsedPaneShell} ${r?ze.collapsedPaneMuted:""}`.trim(),"data-relationship-state":r?"missing":void 0,children:a.jsxs("div",{className:ze.collapsedPaneHeader,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,"aria-label":`Expand ${e} pane`,children:a.jsx(Ld,{size:16,"aria-hidden":"true"})}),a.jsx("span",{className:ze.collapsedPaneLabel,children:e})]})})}function FA({label:e,title:t,description:r,onCollapse:n,action:s,paneRef:i}){const l=!r&&!s;return a.jsxs("div",{ref:i,"data-planning-pane":`${e.toLowerCase()}-relationship`,className:`${ze.paneShell} ${R.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:{flex:`0 0 ${mc}px`,width:`${mc}px`,minWidth:`${mc}px`,maxWidth:`${mc}px`},children:[a.jsxs("div",{className:ze.paneHeader,children:[a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:e}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:n,"aria-label":`Collapse ${e} pane`,title:`Collapse ${e} pane`,children:a.jsx(wo,{size:16,"aria-hidden":"true"})})]}),a.jsx("div",{className:`${ze.paneContent} ${l?ze.relationshipPaneContentEmpty:""}`.trim(),children:a.jsxs("div",{className:`${ze.relationshipState} ${l?ze.relationshipStateEmpty:""}`.trim(),"data-relationship-display":l?"empty":"detail",children:[a.jsx("span",{className:ze.relationshipStateTitle,children:t}),r?a.jsx("p",{className:ze.relationshipStateText,children:r}):null,s?a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:s.onClick,children:s.label}):null]})})]})}function zte({initiatives:e,standaloneWorkstreams:t,planningLoadState:r,taskScope:n,showArchivedPlanning:s,currentOwnerId:i,assigneeOptions:l,showTaskCardStatusLabel:c=!1,taskArrangeMode:d="execution",activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:k,onTogglePlanningFavorite:v,favoritesSectionCollapsed:A,initiativesSectionCollapsed:b,workstreamsSectionCollapsed:w,onToggleFavoritesSection:P,onToggleInitiativesSection:E,onToggleWorkstreamsSection:D,expandedInitiativeIds:j,detail:S,secondaryPane:L,onCreateInitiative:_,onCreateWorkstream:T,onToggleInitiative:z,onSelectInitiative:Y,onSelectWorkstream:H,onOpenInitiativeDetails:M,onOpenWorkstreamDetails:oe,onOpenNestedWorkstreamDetails:K,onOpenTaskById:Q,onSetTaskStatus:ee,onChangePlanningOwner:fe,onChangePlanningIdentity:_e=()=>{},onChangeTaskAssignee:$e,onArchivePlanningTask:Ye,onArchiveResolvedWorkstream:ye,onArchiveResolvedInitiative:ge,linkOptions:se,onAssignInitiativeToWorkstream:ie,onRetryPlanning:me}){const[$,V]=re.useState(""),[B,N]=re.useState("all"),[be,Ae]=re.useState(!1),[q,Z]=re.useState(()=>new Set),[G,ne]=re.useState(()=>new Set),Te=re.useMemo(()=>new Map(l.filter(te=>!String(te.archivedAt||"").trim()).map(te=>[String(te.value||"").trim(),te])),[l]),Le=re.useMemo(()=>{const te=String(i||"").trim(),Ne=te?fT(l,te).find(je=>je.value===te):void 0;return[{value:"all",label:"All owners",icon:"Users",color:"var(--text-secondary)",kind:"unassigned"},...te?[{...Ne,value:"mine",label:"Owned by me",icon:Ne?.icon||"User",color:Ne?.color||"var(--text-secondary)",kind:Ne?.kind||"member"}]:[],{value:"unassigned",label:"Unassigned",icon:hp,color:cy,kind:"unassigned"}]},[l,i]),Ue=re.useMemo(()=>Bte({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:s,searchQuery:$,ownerFilter:B,currentOwnerId:String(i||""),sort:g}),[i,e,g,B,$,s,t]),st=re.useMemo(()=>new Set(k.map(ic)),[k]),ft=re.useMemo(()=>{const te=new Map(e.filter(je=>lv({item:je,entityType:"initiative",showArchivedPlanning:s,searchQuery:$,ownerFilter:B,currentOwnerId:String(i||"")})).map(je=>[je.id,je])),Ne=new Map;return e.forEach(je=>{(je.allWorkstreams||je.workstreams).forEach(Re=>{lv({item:Re,entityType:"workstream",showArchivedPlanning:s,searchQuery:$,ownerFilter:B,currentOwnerId:String(i||"")})&&Ne.set(Re.id,{item:Re,parentInitiativeId:je.id})})}),t.forEach(je=>{lv({item:je,entityType:"workstream",showArchivedPlanning:s,searchQuery:$,ownerFilter:B,currentOwnerId:String(i||"")})&&Ne.set(je.id,{item:je,parentInitiativeId:null})}),k.reduce((je,Re)=>{if(Re.type==="initiative"){const Pe=te.get(Re.id);return Pe&&je.push({favorite:Re,item:Pe,parentInitiativeId:null}),je}const Ce=Ne.get(Re.id);return Ce&&je.push({favorite:Re,...Ce}),je},[])},[i,e,B,k,$,s,t]);if(n==="deleted")return a.jsxs("div",{className:ze.scopeSummary,role:"status",children:[a.jsx("strong",{children:"Planning is not shown in Trash"}),a.jsx("span",{children:"Switch the task scope away from Trash to manage initiatives and workstreams."})]});if(r.status==="loading")return a.jsx(Hte,{});if(r.status==="error")return a.jsx(mg,{title:"Planning unavailable",message:r.error||"Planning could not be loaded.",retrying:r.isRefreshing,onRetry:me});const xe=e.filter(te=>!!te.isArchived).length,ke=t.filter(te=>!!te.isArchived).length,ve=e.length>0||t.length>0,He=Ue.hasCriteria||g!=="default",Ee=()=>{V(""),N("all"),h&&y("default")},de=te=>{Z(Ne=>{const je=new Set(Ne);return je.has(te)?je.delete(te):je.add(te),je})},x=te=>{ne(Ne=>{const je=new Set(Ne);return je.has(te)?je.delete(te):je.add(te),je})},le=(te,Ne=q.has(te.id),je=`planning-tasks-${te.id}`,Re=`Tasks in ${te.title}`)=>{if(!Ne)return null;const Ce=te.tasks||[],Pe=tw(s?Ce:Ce.filter(he=>!he.isArchived),d);return a.jsx("ul",{id:je,className:`${ze.treeChildren} ${ze.treeTaskChildren}`.trim(),"aria-label":Re,children:Pe.length>0?Pe.map(he=>a.jsx("li",{children:a.jsx(Ute,{task:he,assigneeOption:he.assignee?Te.get(he.assignee):void 0,assigneeOptions:l,showTaskCardStatusLabel:c,onOpenTaskById:Q,onSetTaskStatus:ee,onChangeTaskAssignee:$e,onArchivePlanningTask:Ye})},he.id)):a.jsx("li",{className:ze.passiveGuidance,children:"Archived tasks are hidden."})})},Ie=Ue.hasCriteria?"No matching initiatives":xe>0?"No active initiatives":"No initiatives yet",Je=Ue.hasCriteria?"No initiatives match the current planning search and owner filter.":xe>0?`${xe} archived ${xe===1?"initiative is":"initiatives are"} hidden. Use the archive visibility control above to view ${xe===1?"it":"them"}.`:a.jsxs(a.Fragment,{children:["Initiatives give larger efforts a clear home without crowding the task board. Use the ",a.jsx("code",{children:"+"})," action above to create the first one."]}),J=Ue.hasCriteria?"No matching standalone workstreams":ke>0?"No active standalone workstreams":"No standalone workstreams yet",Ze=Ue.hasCriteria?"No standalone workstreams match the current planning search and owner filter.":ke>0?`${ke} archived standalone ${ke===1?"workstream is":"workstreams are"} hidden. Use the archive visibility control above to view ${ke===1?"it":"them"}.`:a.jsxs(a.Fragment,{children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",a.jsx("code",{children:"+"})," action above to add one."]});return a.jsxs(a.Fragment,{children:[r.status==="partial"&&r.collections.initiatives==="ready"&&r.collections.workstreams==="ready"?a.jsx(mg,{compact:!0,title:"Planning may be incomplete",message:r.error||"The latest planning refresh did not finish. Existing data is still shown.",retrying:r.isRefreshing,onRetry:me}):null,ve?a.jsxs("div",{className:ze.navigatorControls,children:[a.jsxs("div",{className:ze.navigatorSearchRow,children:[a.jsxs("div",{className:ze.navigatorSearch,children:[a.jsx(ry,{size:14,"aria-hidden":"true"}),a.jsx("span",{className:ze.visuallyHidden,children:"Search planning"}),a.jsx("input",{type:"search",value:$,onChange:te=>V(te.target.value),placeholder:"Search initiatives and workstreams","aria-label":"Search planning"}),$?a.jsx("button",{type:"button",className:ze.navigatorClearSearch,onClick:()=>V(""),"aria-label":"Clear planning search",title:"Clear search",children:a.jsx(mi,{size:13,"aria-hidden":"true"})}):null]}),a.jsx("button",{type:"button",className:`tf-control-icon ${be||B!=="all"||g!=="default"?ze.toggleActive:""}`.trim(),"aria-label":"Filter and sort planning",title:"Filter and sort planning","aria-expanded":be,"aria-controls":"planning-navigator-options",onClick:()=>Ae(te=>!te),children:a.jsx(iC,{size:15,"aria-hidden":"true"})})]}),be?a.jsxs("div",{id:"planning-navigator-options",className:ze.navigatorOptions,children:[a.jsxs("div",{className:ze.navigatorOptionField,children:[a.jsx("span",{className:ze.navigatorOptionLabel,children:"Owner"}),a.jsx(nb,{value:B,options:l,leadingOptions:Le,includeUnassigned:!1,onChange:N,disabled:!1,ariaLabel:"Filter planning by owner",className:ze.navigatorDropdown})]}),a.jsxs("div",{className:ze.navigatorOptionField,children:[a.jsx("span",{className:ze.navigatorOptionLabel,children:"Sort"}),a.jsx(fi,{value:g,options:WA,onChange:te=>y(String(te)),disabled:!h,ariaLabel:"Sort planning",className:ze.navigatorDropdown,portalPanel:!0,panelAlign:"start",triggerContent:a.jsxs("span",{className:ze.navigatorDropdownTrigger,children:[a.jsx(lw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:WA.find(te=>te.value===g)?.label})]}),renderOptionContent:te=>te.label})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Ee,disabled:!He,"aria-label":"Reset planning filters and sort",title:"Reset planning filters and sort",children:a.jsx($i,{size:14,"aria-hidden":"true"})})]}):null,a.jsxs("span",{className:ze.visuallyHidden,role:"status","aria-live":"polite",children:[Ue.resultCount," planning ",Ue.resultCount===1?"result":"results"]})]}):null,Ue.hasCriteria&&Ue.resultCount===0?a.jsxs("div",{className:ze.navigatorEmpty,role:"status",children:[a.jsx("strong",{children:"No planning matches"}),a.jsx("span",{children:"Try another title or reference, or clear the owner filter."}),a.jsx("button",{type:"button",onClick:Ee,children:"Clear search and filters"})]}):a.jsxs(a.Fragment,{children:[ft.length>0?a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Km,{label:"Favorites",count:ft.length,expanded:!A,expandedTitle:"Collapse favorites",collapsedTitle:"Expand favorites",onToggle:P,controlsId:"planning-favorites-section"}),a.jsx("ul",{id:"planning-favorites-section",className:ze.treeList,"aria-label":"Favorite planning items",hidden:A,children:ft.map(({favorite:te,item:Ne,parentInitiativeId:je})=>{const Re=te.type==="initiative"?S?.type==="initiative"&&S.item.id===Ne.id:S?.type==="workstream"&&S.item.id===Ne.id||L?.kind==="detail"&&L.detail.item.id===Ne.id,Ce=te.type==="initiative"?Ne:null,Pe=te.type==="workstream"?Ne:null,he=Ce?Ce.allWorkstreams||Ce.workstreams:[],De=he.filter(Oe=>s||!Oe.isArchived),et=`favorite:${te.type}:${Ne.id}`,Fe=G.has(et),yt=`planning-${et.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Pm,{rowId:`favorite:${te.type}:${Ne.id}`,rowType:te.type,referenceLabel:te.type==="initiative"?ws(Ne):Go(Ne),item:Ne,ownerOption:Ne.ownerId?Te.get(Ne.ownerId):void 0,ownerOptions:l,onChangeOwner:Oe=>fe(te.type,Ne.id,Oe==="unassigned"?"":Oe),onChangeIdentity:Oe=>_e(te.type,Ne.id,Oe),workstreamCount:Ce?De.length:void 0,active:te.type==="initiative"?m===Ne.id&&!f:f===Ne.id,isArchived:!!Ne.isArchived,detailOpen:Re,canExpand:te.type==="initiative"?he.length>0:!!Pe?.tasks?.length,expanded:Fe,controlsId:yt,onToggleExpand:()=>x(et),onToggleScope:()=>{te.type==="initiative"?Y(Ne.id):H(Ne.id,je)},favoriteReady:h,onOpenDetails:()=>{te.type==="initiative"?M(Ne.id):je?(M(je),K(Ne.id)):oe(Ne.id)},favorite:!0,onToggleFavorite:()=>v(te),onArchiveReady:te.type==="initiative"?ge?()=>ge(Ne.id):void 0:ye?()=>ye(Ne.id):void 0,hierarchyInteractions:!1,initiativeLinkOptions:te.type==="workstream"&&!je?se.initiatives:void 0,onLinkInitiative:te.type==="workstream"&&!je?Oe=>ie(Ne.id,Oe.referenceLabel):void 0}),Ce&&Fe?a.jsx("ul",{id:yt,className:ze.treeChildren,"aria-label":`Workstreams in favorite ${Ce.title}`,children:De.length>0?De.map(Oe=>{const mt=`${et}:workstream:${Oe.id}`,vt=G.has(mt),Ve=`planning-${mt.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Pm,{rowId:mt,rowType:"workstream",referenceLabel:Go(Oe),item:Oe,ownerOption:Oe.ownerId?Te.get(Oe.ownerId):void 0,ownerOptions:l,onChangeOwner:tt=>fe("workstream",Oe.id,tt==="unassigned"?"":tt),onChangeIdentity:tt=>_e("workstream",Oe.id,tt),active:f===Oe.id,isArchived:!!Oe.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===Oe.id||L?.kind==="detail"&&L.detail.item.id===Oe.id,canExpand:!!Oe.tasks?.length,expanded:vt,controlsId:Ve,onToggleExpand:()=>x(mt),onToggleScope:()=>H(Oe.id,Ce.id),onOpenDetails:()=>{M(Ce.id),K(Oe.id)},favorite:st.has(ic({type:"workstream",id:Oe.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:Oe.id}),onArchiveReady:ye?()=>ye(Oe.id):void 0,hierarchyInteractions:!1}),le(Oe,vt,Ve,`Tasks in favorite ${Ce.title} / ${Oe.title}`)]},Oe.id)}):a.jsx("li",{className:ze.passiveGuidance,children:"Archived workstreams are hidden."})}):null,Pe?le(Pe,Fe,yt,`Tasks in favorite ${Pe.title}`):null]},ic(te))})})]}):null,a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Km,{label:"Initiatives",count:Ue.initiatives.length,showZeroCount:!0,actions:r.collections.initiatives==="ready"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:_,children:a.jsx(ui,{size:15})}):null,expanded:!b,expandedTitle:"Collapse initiatives",collapsedTitle:"Expand initiatives",onToggle:E,controlsId:b?void 0:"planning-initiatives-section"}),b?null:a.jsx("ul",{id:"planning-initiatives-section",className:ze.treeList,"aria-label":"Initiatives",children:r.collections.initiatives==="error"?a.jsx("li",{children:a.jsx(mg,{compact:!0,title:"Initiatives unavailable",message:"Initiatives could not be loaded.",retrying:r.isRefreshing,onRetry:me})}):Ue.initiatives.length===0?a.jsxs("li",{className:ze.emptyPanel,children:[a.jsx("div",{className:ze.emptyPanelTitle,children:Ie}),a.jsx("div",{className:ze.emptyPanelText,children:Je})]}):Ue.initiatives.map(({initiative:te,workstreams:Ne})=>{const je=te.allWorkstreams||te.workstreams,Re=s?je:je.filter(he=>!he.isArchived),Ce=Ne,Pe=Ue.hasCriteria?Ce.length>0:j.has(te.id);return a.jsxs("li",{children:[a.jsx(Pm,{rowId:te.id,rowType:"initiative",referenceLabel:ws(te),item:te,ownerOption:te.ownerId?Te.get(te.ownerId):void 0,ownerOptions:l,onChangeOwner:he=>fe("initiative",te.id,he==="unassigned"?"":he),onChangeIdentity:he=>_e("initiative",te.id,he),workstreamCount:Re.length,active:m===te.id&&!f,isArchived:!!te.isArchived,detailOpen:S?.type==="initiative"&&S.item.id===te.id,canExpand:je.length>0,expanded:Pe,controlsId:`planning-children-${te.id}`,onToggleExpand:()=>z(te.id),onToggleScope:()=>Y(te.id),onOpenDetails:()=>M(te.id),favorite:st.has(ic({type:"initiative",id:te.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"initiative",id:te.id}),onArchiveReady:ge?()=>ge(te.id):void 0}),Pe&&Ce.length>0&&a.jsx("ul",{id:`planning-children-${te.id}`,className:`${ze.treeChildren} ${ze.treeWorkstreamChildren}`.trim(),"aria-label":`Workstreams in ${te.title}`,children:Ce.map(he=>a.jsxs("li",{children:[a.jsx(Pm,{rowId:he.id,rowType:"workstream",referenceLabel:Go(he),item:he,ownerOption:he.ownerId?Te.get(he.ownerId):void 0,ownerOptions:l,onChangeOwner:De=>fe("workstream",he.id,De==="unassigned"?"":De),onChangeIdentity:De=>_e("workstream",he.id,De),active:f===he.id,isArchived:!!he.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===he.id||L?.kind==="detail"&&L.detail.item.id===he.id,canExpand:(he.tasks||[]).length>0,expanded:q.has(he.id),controlsId:`planning-tasks-${he.id}`,onToggleExpand:()=>de(he.id),onToggleScope:()=>H(he.id,te.id),onOpenDetails:()=>{M(te.id),K(he.id)},favorite:st.has(ic({type:"workstream",id:he.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:he.id}),onArchiveReady:ye?()=>ye(he.id):void 0}),le(he)]},he.id))})]},te.id)})})]}),a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Km,{label:"Workstreams",count:Ue.standaloneWorkstreams.length,showZeroCount:!0,actions:r.collections.workstreams==="ready"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:T,children:a.jsx(ui,{size:15})}):null,expanded:!w,expandedTitle:"Collapse workstreams",collapsedTitle:"Expand workstreams",onToggle:D,controlsId:w?void 0:"planning-workstreams-section"}),w?null:a.jsx("ul",{id:"planning-workstreams-section",className:ze.treeList,"aria-label":"Standalone workstreams",children:r.collections.workstreams==="error"?a.jsx("li",{children:a.jsx(mg,{compact:!0,title:"Workstreams unavailable",message:"Workstreams could not be loaded.",retrying:r.isRefreshing,onRetry:me})}):Ue.standaloneWorkstreams.length===0?a.jsxs("li",{className:ze.emptyPanel,children:[a.jsx("div",{className:ze.emptyPanelTitle,children:J}),a.jsx("div",{className:ze.emptyPanelText,children:Ze})]}):Ue.standaloneWorkstreams.map(te=>a.jsxs("li",{children:[a.jsx(Pm,{rowId:te.id,rowType:"workstream",referenceLabel:Go(te),item:te,ownerOption:te.ownerId?Te.get(te.ownerId):void 0,ownerOptions:l,onChangeOwner:Ne=>fe("workstream",te.id,Ne==="unassigned"?"":Ne),onChangeIdentity:Ne=>_e("workstream",te.id,Ne),active:f===te.id,isArchived:!!te.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===te.id||L?.kind==="detail"&&L.detail.item.id===te.id,canExpand:(te.tasks||[]).length>0,expanded:q.has(te.id),controlsId:`planning-tasks-${te.id}`,onToggleExpand:()=>de(te.id),onToggleScope:()=>H(te.id,null),onOpenDetails:()=>oe(te.id),favorite:st.has(ic({type:"workstream",id:te.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:te.id}),onArchiveReady:ye?()=>ye(te.id):void 0,initiativeLinkOptions:se.initiatives,onLinkInitiative:Ne=>ie(te.id,Ne.referenceLabel)}),le(te)]},te.id))})]})]})]})}function Hte(){return a.jsxs("div",{className:ze.loadingState,role:"status","aria-live":"polite",children:[a.jsx("span",{className:ze.visuallyHidden,children:"Loading planning"}),[0,1,2].map(e=>a.jsxs("div",{className:ze.loadingRow,"aria-hidden":"true",children:[a.jsx("span",{className:ze.loadingBadge}),a.jsx("span",{className:ze.loadingTitle}),a.jsx("span",{className:ze.loadingMeta})]},e))]})}function mg({title:e,message:t,retrying:r,onRetry:n,compact:s=!1}){return a.jsxs("div",{className:`${ze.failureState} ${s?ze.failureStateCompact:""} tf-surface-inset`.trim(),role:"alert",children:[a.jsxs("div",{className:ze.failureCopy,children:[a.jsx("strong",{children:e}),a.jsx("span",{children:t})]}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:r,onClick:n,children:r?"Retrying…":"Retry"})]})}function UA({detail:e,showArchivedChildren:t,inlineEditor:r,selectedChildWorkstreamId:n,currentWorkspaceId:s,currentActorId:i,theme:l,onOpenNestedWorkstreamDetails:c,onArchivePlanningTask:d,onArchiveResolvedWorkstream:m,onArchiveResolvedEntity:f,onEdit:g,onChangeOwner:h,onChangePlanningOwner:y,onChangePlanningIdentity:k,onArchive:v,onUnarchive:A,onCreateTaskInWorkstream:b,onCreateWorkstreamInInitiative:w,onOpenTaskById:P,onChangeTaskAssignee:E,taskReferences:D,onAssignTaskToWorkstream:j,onAssignInitiativeToWorkstream:S,onAttachTaskToWorkstreamByReference:L,onAttachWorkstreamToInitiativeByReference:_,onAddPlanningContextFile:T,onRemovePlanningContextFile:z,onUpdatePlanningContextCaption:Y,parentInitiative:H=null,assigneeOptions:M,linkOptions:oe,showTaskCardStatusLabel:K=!1,taskArrangeMode:Q="execution",onTaskArrangeModeChange:ee=()=>{},onReorderWorkstreamTasks:fe,onSetTaskStatus:_e,hydrationState:$e,onRetryHydration:Ye}){const ye=re.useId(),[ge,se]=re.useState(!1),[ie,me]=re.useState(null),[$,V]=re.useState(null),[B,N]=re.useState(!1),[be,Ae]=re.useState(null),[q,Z]=re.useState(!1),[G,ne]=re.useState(!1),[Te,Le]=re.useState(!1),[Ue,st]=re.useState(null),[ft,xe]=re.useState(String(e.item.ownerId||"")),[ke,ve]=re.useState(!1),{active:He}=mC(),Ee=String(He?.data?.current?.type||""),de=e.type==="workstream"&&Ee==="task-card",x=e.type==="initiative"&&Ee==="planning-workstream",le=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:Ie,isOver:Je}=gw({id:`${le}:detail:${e.item.id}`,data:e.type==="initiative"?{type:le,initiativeId:e.item.id}:{type:le,workstreamId:e.item.id}}),J=e.type==="initiative"?"Workstreams":"Tasks",Ze=re.useMemo(()=>{if(e.type!=="initiative")return[];const pe=new Set(e.item.workstreams.map(Et=>Et.id)),Ke=(e.item.allWorkstreams||[]).filter(Et=>!!Et.isArchived&&!pe.has(Et.id));return[...e.item.workstreams,...Ke]},[e.item,e.type]),te=re.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),Ne=re.useMemo(()=>new Map(M.filter(pe=>!String(pe.archivedAt||"").trim()).map(pe=>[String(pe.value||"").trim(),pe])),[M]),je=t?Ze:Ze.filter(pe=>!pe.isArchived),Re=tw(t?te:te.filter(pe=>!pe.isArchived),Q),Ce=e.type==="initiative"?je.length:Re.length,Pe=e.type==="initiative"?"Initiative":"Workstream",he=e.type==="initiative"?ws(e.item):Go(e.item),De=J_({entityType:e.type,isArchived:e.item.isArchived,taskCount:e.item.taskCount,completedTaskCount:e.item.completedTaskCount,archiveReady:e.item.archiveReady,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount}),et=De.mode==="archived"?`Unarchive ${Pe.toLowerCase()}`:De.mode==="blocked"?`Archive unavailable — active ${De.remainingKind==="task"?"tasks":"workstreams"} remain`:De.mode==="checking"?"Archive availability is still loading":`Archive ${Pe.toLowerCase()}`;re.useEffect(()=>{se(!1),me(null),V(null),N(!1),ne(!1)},[e.item.id,e.type]),re.useEffect(()=>{xe(String(e.item.ownerId||""))},[e.item.id,e.item.ownerId,e.type]);const Fe=re.useCallback(async pe=>{if(!h||ke||pe===ft)return;const Ke=ft;xe(pe),ve(!0);try{await h(pe)}catch{xe(Ke)}finally{ve(!1)}},[ke,h,ft]),yt=re.useCallback(async()=>{if(!(!f||Te)){Le(!0);try{await f(e.item.id)&&ne(!1)}finally{Le(!1)}}},[Te,e.item.id,f]),Oe=e.type==="initiative"?!!_:!!L,mt=re.useCallback(async pe=>{if(ge)return;const Ke=e.type==="initiative"?_:L;if(Ke){se(!0);try{await Ke(e.item.id,pe.referenceLabel)}finally{se(!1)}}},[e.item.id,e.type,ge,L,_]),vt=re.useCallback(async pe=>{if(!(!S||e.type!=="workstream"||B)){N(!0);try{await S(e.item.id,pe.referenceLabel)}finally{N(!1)}}},[e.item.id,e.type,B,S]),Ve=e.type==="workstream"&&H?ws(H):"",tt=re.useMemo(()=>new Set(e.type==="initiative"?Ze.map(pe=>pe.id):te.map(pe=>pe.id)),[Ze,e.type,te]),It=re.useMemo(()=>(e.type==="initiative"?oe.workstreams:oe.tasks).filter(pe=>!tt.has(pe.id)),[e.type,oe.tasks,oe.workstreams,tt]),Xe=re.useCallback(async()=>{if(!(!ie||B)){N(!0);try{if(ie.entityType==="workstream"){if(!S)return;const pe=e.type==="initiative"?he:Ve;if(await S?.(ie.id,null)===!1)return;V({entityType:ie.entityType,id:ie.id,message:`${ie.referenceLabel} removed from its initiative.`,onUndo:async()=>{if(!pe)return;await S?.(ie.id,pe)!==!1&&V(null)}})}else{if(!j||await j(ie.id,null)===!1)return;V({entityType:ie.entityType,id:ie.id,message:`${ie.referenceLabel} removed from this workstream.`,onUndo:async()=>{await j(ie.id,e.item.id)!==!1&&V(null)}})}me(null)}finally{N(!1)}}},[e.item.id,e.type,he,B,S,j,Ve,ie]),bt=re.useCallback(async()=>{if(!(!$||B)){N(!0);try{await $.onUndo()}finally{N(!1)}}},[B,$]),at=re.useCallback((pe,Ke)=>$?.entityType===pe&&$.id===Ke?a.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[a.jsx("span",{children:$.message}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:B,onClick:()=>{bt()},children:B?"Restoring…":"Undo"})]}):null,[bt,B,$]),U=$&&!tt.has($.id)?a.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[a.jsx("span",{children:$.message}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:B,onClick:()=>{bt()},children:B?"Restoring…":"Undo"})]}):null;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ze.detailHero,children:[a.jsxs("div",{className:ze.detailTopRow,children:[a.jsxs("div",{className:ze.detailReferenceRow,children:[e.type==="workstream"?a.jsx(a.Fragment,{children:Ve?a.jsxs(a.Fragment,{children:[a.jsx(Dd,{label:Ve,entityType:"initiative",entityName:H?.title}),a.jsx("span",{className:R.taskHierarchyDivider,children:"/"}),r?null:a.jsx(Sg,{disabled:!S,onClick:()=>{me({entityType:"workstream",id:e.item.id,referenceLabel:he,title:e.item.title,parentLabel:H?`${ws(H)} ${H.title}`.trim():Ve})},title:"Unlink workstream from initiative",ariaLabel:"Unlink workstream from initiative",children:a.jsx(Um,{size:14,"aria-hidden":"true"})})]}):null}):null,e.type==="workstream"&&!Ve&&!r?a.jsx(ty,{options:oe.initiatives,entityLabel:"initiative",onSelect:vt,disabled:!S||B,iconTrigger:!0,triggerTitle:"Link initiative"}):null,a.jsx(Dd,{label:he||"Reference pending",entityType:e.type,entityName:e.item.title,pending:!he})]}),a.jsx("div",{className:ze.detailTopActions,children:r?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:r.onCancel,disabled:r.isSubmitting,children:"Cancel"}),a.jsx("button",{type:"submit",form:ye,className:"tf-button-primary tf-button-compact",disabled:r.isSubmitting||r.isSubmitDisabled,children:r.isSubmitting?"Saving…":"Save"})]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-control-icon",disabled:De.mode==="blocked"||De.mode==="checking",onClick:()=>{De.mode==="archived"?A?.():De.mode==="empty"?v?.():De.mode==="ready"&&ne(!0)},title:et,"aria-label":et,"aria-expanded":De.mode==="ready"?G:void 0,children:De.mode==="archived"?a.jsx($i,{size:14,"aria-hidden":"true"}):a.jsx(Pd,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:g,title:`Edit ${Pe.toLowerCase()} details`,"aria-label":`Edit ${Pe.toLowerCase()} details`,children:a.jsx(aC,{size:14,"aria-hidden":"true"})})]})})]}),G&&De.mode==="ready"?a.jsx(rw,{entityType:e.type,title:e.item.title,activeTaskCount:e.item.archiveActiveTaskCount,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount,busy:Te,onCancel:()=>ne(!1),onConfirm:()=>{yt()}}):null,e.type==="workstream"?at("workstream",e.item.id):null,r?a.jsx(nw,{editor:r.editor,draftTitle:r.draftTitle,draftDescription:r.draftDescription,draftOwner:r.draftOwner,draftInitiativeId:r.draftInitiativeId,assigneeOptions:M,initiativeLinkOptions:oe.initiatives,draftInitiativeSummary:r.draftInitiativeSummary,onChangeDraftTitle:r.onChangeDraftTitle,onChangeDraftDescription:r.onChangeDraftDescription,onChangeDraftOwner:r.onChangeDraftOwner,onChangeDraftInitiativeId:r.onChangeDraftInitiativeId,onCancel:r.onCancel,onSubmit:r.onSubmit,isSubmitting:r.isSubmitting,isSubmitDisabled:r.isSubmitDisabled,inline:!0,formId:ye}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ze.detailTitleRow,children:[a.jsx(vp,{entityType:e.type,entityId:e.item.id,icon:e.item.icon,color:e.item.color,size:"detail",disabled:!!e.item.isArchived,onChange:k?pe=>k(e.type,e.item.id,pe):void 0}),a.jsx("h3",{className:ze.detailTitle,children:e.item.title})]}),a.jsx(Dee,{description:e.item.description,label:Pe,taskReferences:D,className:`${ze.detailDescription} ${R.appScrollbar} tf-scrollbar`.trim(),markdownClassName:ze.detailDescriptionMarkdown})]}),a.jsxs("div",{className:ze.detailOwnerField,children:[a.jsx("span",{className:ze.detailOwnerLabel,children:"Owner"}),a.jsx(nb,{value:ft,disabled:!h||ke,onChange:pe=>{Fe(pe)},ariaLabel:`${Pe} owner`,options:M,className:`${rb.control} ${ze.ownerSelect}`})]}),e.item.taskCount>0?a.jsx(cT,{value:e.item.progressPercent,label:`${e.item.progressPercent}% resolved`,statusCounts:e.item.statusCounts}):a.jsx(sT,{}),a.jsx(lT,{item:e.item,workstreamCount:e.type==="initiative"?e.item.workstreamCount??e.item.workstreams.length:void 0,className:ze.detailSummaryMeta}),e.item.taskCount>0?a.jsx("span",{className:ze.passiveGuidance,children:"Lifetime progress includes archived tasks."}):null]}),a.jsxs("div",{ref:Ie,className:`${ze.listCard} ${de||x?ze.sectionDropReady:""} ${Je?ze.sectionDropActive:""} ${de||x?ze.sectionDropMode:""}`.trim(),children:[a.jsxs("div",{className:ze.sectionHeaderRow,children:[a.jsxs("div",{className:ze.sectionTitle,children:[J," (",Ce,")"]}),a.jsx("div",{className:ze.headerActionGroup,children:e.type==="initiative"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream in this initiative","aria-label":"Create workstream in this initiative",onClick:()=>w?.(e.item.id),children:a.jsx(ui,{size:15})}):a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create task in this workstream","aria-label":"Create task in this workstream",onClick:()=>b?.(e.item.id),children:a.jsx(ui,{size:15})})})]}),a.jsx("div",{className:ze.linkPickerRow,children:a.jsx(ty,{options:It,entityLabel:e.type==="initiative"?"workstream":"task",onSelect:mt,disabled:!Oe||ge})}),e.type==="workstream"?a.jsx(yte,{value:Q,onChange:ee}):null,e.type==="initiative"?je.length>0?je.map(pe=>{const Ke=Go(pe),Et=()=>c?.(pe.id),kt=n===pe.id,Ot=be===pe.id,dr=async()=>{if(!(!m||q)){Z(!0);try{await m(pe.id)&&Ae(null)}finally{Z(!1)}}};return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${ze.listItem} ${ze.detailChildCard} ${kt?ze.detailChildCardSelected:""} ${pe.isArchived?ze.detailChildCardArchived:""}`.trim(),children:[a.jsxs("div",{className:ze.detailChildCardTopRow,children:[a.jsxs("div",{className:ze.detailChildReferenceRow,children:[a.jsx(Sg,{disabled:!S,onClick:tr=>{tr.stopPropagation(),me({entityType:"workstream",id:pe.id,referenceLabel:Ke,title:pe.title,parentLabel:`${he} ${e.item.title}`.trim()})},title:`Unlink ${Ke||pe.title} from initiative`,ariaLabel:`Unlink ${Ke||pe.title} from initiative`,children:a.jsx(Um,{size:14,"aria-hidden":"true"})}),Ke?a.jsx(Dd,{label:Ke,entityType:"workstream",entityName:pe.title}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsx("div",{className:ze.detailChildActions,onClick:tr=>tr.stopPropagation(),children:pe.archiveReady&&!pe.isArchived&&m?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>Ae(pe.id),title:"Archive completed workstream","aria-label":`Archive completed workstream ${pe.title}`,"aria-expanded":Ot,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):null})]}),at("workstream",pe.id),Ot?a.jsx(rw,{entityType:"workstream",title:pe.title,activeTaskCount:pe.archiveActiveTaskCount,busy:q,onCancel:()=>Ae(null),onConfirm:()=>{dr()}}):null,a.jsx("div",{role:"button",tabIndex:0,"aria-current":kt?"true":void 0,className:ze.listItemText,onClick:Et,onKeyDown:tr=>{tr.key!=="Enter"&&tr.key!==" "||(tr.preventDefault(),Et())},children:a.jsx(dT,{item:pe,entityType:"workstream",ownerOption:pe.ownerId&&Ne.has(pe.ownerId)?dc(Ne.get(pe.ownerId)):void 0,ownerOptions:M.map(dc),onChangeOwner:y?tr=>y("workstream",pe.id,tr==="unassigned"?"":tr):void 0,onChangeIdentity:k?tr=>k("workstream",pe.id,tr):void 0})})]})},pe.id)}):a.jsx("div",{className:ze.passiveGuidance,children:"No workstreams are linked to this initiative."}):Re.length>0?a.jsx(Ate,{tasks:Re,mode:Q,onReorder:fe?pe=>fe(e.item.id,fte(tw(te,"execution"),pe)):void 0,children:pe=>{const Ke=Ss(pe)||pe.id,Et=Vo(pe.status);return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsx(uT,{task:pe,assigneeOption:pe.assignee&&Ne.has(pe.assignee)?dc(Ne.get(pe.assignee)):void 0,assigneeOptions:M.map(dc),showStatusLabel:K,onOpen:P?()=>P(pe.id):void 0,onAssigneeChange:E?kt=>E(pe.id,kt):void 0,onStatusChange:_e?kt=>_e(pe.id,kt):void 0,feedback:at("task",pe.id),referenceAction:a.jsx(Sg,{disabled:!j,onClick:kt=>{kt.stopPropagation(),me({entityType:"task",id:pe.id,referenceLabel:Ke,title:pe.title,parentLabel:`${he} ${e.item.title}`.trim()})},title:`Unlink ${Ke||pe.title} from workstream`,ariaLabel:`Unlink ${Ke||pe.title} from workstream`,children:a.jsx(Um,{size:14,"aria-hidden":"true"})}),actions:!pe.isArchived&&(Et.value==="done"||Et.value==="cancelled")&&d?a.jsx("button",{type:"button",className:"tf-control-icon",disabled:Ue===pe.id,onClick:async kt=>{kt.stopPropagation(),st(pe.id);try{await d(pe.id)}finally{st(null)}},title:"Archive task","aria-label":`Archive task ${Ke||pe.title}`,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):void 0})},pe.id)}}):a.jsx("div",{className:ze.passiveGuidance,children:"No tasks are linked to this workstream."}),U]}),a.jsx("div",{className:ze.listCard,children:a.jsx(Mee,{entityType:e.type,entityId:e.item.id,referenceLabel:he,workspaceId:s,attachments:e.item.attachments,readOnly:!!e.item.isArchived,onAddAttachment:pe=>T?.(e.type,e.item.id,pe),onRemoveAttachment:pe=>z?.(e.type,e.item.id,pe),onUpdateAttachmentCaption:(pe,Ke)=>Y?.(e.type,e.item.id,pe,Ke)})}),a.jsx("div",{className:ze.listCard,children:a.jsx(Lee,{entityType:e.type,item:e.item,assigneeOptions:M.map(dc),currentActorId:i,taskReferences:D,parentInitiative:H,listClassName:ze.activityTimelineList,emptyClassName:ze.activityTimelineEmpty,hydrationState:$e,onRetryHydration:Ye})}),a.jsx(Pte,{item:ie,busy:B,theme:l,onCancel:()=>me(null),onConfirm:()=>{Xe()}})]})}function nw({editor:e,draftTitle:t,draftDescription:r,draftOwner:n,draftInitiativeId:s,draftIcon:i,draftColor:l,assigneeOptions:c,initiativeLinkOptions:d,draftInitiativeSummary:m,onChangeDraftTitle:f,onChangeDraftDescription:g,onChangeDraftOwner:h,onChangeDraftInitiativeId:y,onChangeDraftIcon:k,onChangeDraftColor:v,onCancel:A,onSubmit:b,isSubmitting:w,isSubmitDisabled:P=!1,inline:E=!1,formId:D}){const j=e.entityType==="initiative"?"Initiative":"Workstream",S=re.useId(),L=re.useId(),_=re.useId(),T=re.useRef(null),[z,Y]=re.useState(null),H=w?e.mode==="create"?`Creating ${j}...`:`Saving ${j}...`:e.mode==="create"?`Create ${j}`:`Save ${j}`,M=re.useCallback(K=>{if(K.preventDefault(),!t.trim()){Y(`${j} title is required.`),T.current?.focus();return}P||(Y(null),b())},[t,j,P,b]),oe=re.useCallback(K=>{!E||K.key!=="Escape"||w||(K.preventDefault(),A())},[E,w,A]);return a.jsxs("form",{id:D,className:`${ze.editorCard} ${E?ze.inlineEditorCard:""}`.trim(),onSubmit:M,onKeyDown:oe,noValidate:!0,children:[e.mode==="create"&&k&&v?a.jsxs("div",{className:ze.editorIdentityField,children:[a.jsx(vp,{entityType:e.entityType,entityId:"create-preview",icon:i,color:l||"blue",size:"detail",onChange:K=>{Object.prototype.hasOwnProperty.call(K,"icon")&&k(K.icon??null),Object.prototype.hasOwnProperty.call(K,"color")&&v(K.color??null)}}),a.jsx("span",{children:"Choose an icon and color"})]}):null,a.jsxs("div",{className:ze.editorField,children:[a.jsxs("label",{className:ze.editorLabel,htmlFor:S,children:[j," title"]}),a.jsx("input",{ref:T,id:S,"data-planning-editor-title":!0,className:R.input,disabled:w,required:!0,"aria-invalid":z?"true":void 0,"aria-describedby":z?L:void 0,value:t,onChange:K=>{z&&Y(null),f(K.target.value)},placeholder:e.entityType==="initiative"?"Enter initiative title":"Enter workstream title"}),z?a.jsx("p",{id:L,className:"tf-text-error",children:z}):null]}),a.jsxs("div",{className:ze.editorField,children:[a.jsxs("label",{className:ze.editorLabel,htmlFor:_,children:[j," description"]}),a.jsx("textarea",{id:_,className:R.textarea,disabled:w,value:r,onChange:K=>g(K.target.value),placeholder:e.entityType==="initiative"?"Describe the broader outcome this initiative is meant to achieve.":"Describe the lane of work this workstream will coordinate.",rows:5})]}),e.entityType==="workstream"&&a.jsxs("div",{className:ze.editorField,children:[a.jsx("span",{className:ze.editorLabel,children:"Initiative"}),a.jsxs("div",{className:ze.editorRelationshipRow,children:[a.jsx(ty,{options:d,selectedId:m?.id||"",entityLabel:"initiative",disabled:w,onSelect:K=>y(K.referenceLabel)}),s.trim()?a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:w,onClick:()=>y(""),children:"Remove"}):null]})]}),E?null:a.jsxs("div",{className:ze.editorField,children:[a.jsxs("span",{className:ze.editorLabel,children:[j," owner"]}),a.jsx(nb,{disabled:w,value:n,onChange:h,ariaLabel:`${j} owner`,options:c,className:ze.editorSelect})]}),E?null:a.jsxs("div",{className:ze.editorActions,children:[a.jsx("button",{type:"button",className:R.secondaryHeaderBtn,onClick:A,disabled:w,children:"Cancel"}),a.jsx("button",{type:"submit",className:R.primaryUpdateBtn,disabled:w||P,children:H})]})]})}function Vte({open:e,leftOffset:t=0,returnFocusRef:r,onWidthChange:n,initiatives:s,standaloneWorkstreams:i,planningLoadState:l,onRetryPlanning:c,taskScope:d,activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,taskArrangeMode:k="execution",onTaskArrangeModeChange:v=()=>{},onReorderWorkstreamTasks:A,planningFavorites:b,onTogglePlanningFavorite:w,favoritesSectionCollapsed:P,initiativesSectionCollapsed:E,workstreamsSectionCollapsed:D,onToggleFavoritesSection:j,onToggleInitiativesSection:S,onToggleWorkstreamsSection:L,expandedInitiativeIds:_,detail:T,editor:z,secondaryEditor:Y=null,secondaryPane:H,primaryHydrationState:M,secondaryHydrationState:oe,onRetryPrimaryHydration:K,onRetrySecondaryHydration:Q,currentWorkspaceId:ee,currentOwnerId:fe,theme:_e,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye=!1,draftInitiativeSummary:ge,draftTitle:se,draftDescription:ie,draftOwner:me,draftInitiativeId:$,draftIcon:V=null,draftColor:B=null,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onChangeDraftIcon:Z=()=>{},onChangeDraftColor:G=()=>{},onCollapseTreePane:ne,onExpandTreePane:Te,onCollapsePrimaryPane:Le,onExpandPrimaryPane:Ue,onCollapseSecondaryPane:st,onExpandSecondaryPane:ft,onBackFromSecondary:xe,treeCollapsed:ke,primaryCollapsed:ve,secondaryCollapsed:He,onCancelEditor:Ee,onCancelSecondaryEditor:de,onSubmitEditor:x,isSubmittingEditor:le,isEditorSubmitDisabled:Ie=!1,onCreateInitiative:Je,onCreateWorkstream:J,onToggleInitiative:Ze,onSelectInitiative:te,onSelectWorkstream:Ne,onOpenInitiativeDetails:je,onOpenWorkstreamDetails:Re,onOpenNestedWorkstreamDetails:Ce,onEditInitiative:Pe,onEditWorkstream:he,onChangePlanningOwner:De,onChangePlanningIdentity:et=()=>{},onChangeTaskAssignee:Fe,onArchiveInitiative:yt,onUnarchiveInitiative:Oe,onArchiveWorkstream:mt,onUnarchiveWorkstream:vt,onArchivePlanningTask:Ve,onArchiveResolvedWorkstream:tt,onArchiveResolvedInitiative:It,onCreateTaskInWorkstream:Xe,onCreateWorkstreamInInitiative:bt,onAssignInitiativeToWorkstream:at,onOpenTaskById:U,onSetTaskStatus:pe,taskReferences:Ke,onAssignTaskToWorkstream:Et,onAttachTaskToWorkstreamByReference:kt,onAttachWorkstreamToInitiativeByReference:Ot,onAddPlanningContextFile:dr,onRemovePlanningContextFile:tr,onUpdatePlanningContextCaption:pr}){const Bt=z?.mode==="edit"&&T&&z.entityType===T.type&&z.targetId===T.item.id?z:null,wr=Y?.mode==="edit"&&H?.kind==="detail"&&Y.entityType===H.detail.type&&Y.targetId===H.detail.item.id?Y:null,or=z&&!Bt?z:null,$r=!!(T||or),Dr=!!H,Me=or?.entityType||T?.type||null,nt=Me==="initiative",pt=Me==="workstream",[lt,xt]=re.useState(!1),[Yt,Nt]=re.useState(!1),[Qt,Ct]=re.useState(!1),[Ht,Ft]=re.useState({initiative:!1,workstream:!1}),ir=re.useMemo(()=>{const Ir=[...s.flatMap(Wr=>Wr.allWorkstreams||Wr.workstreams),...i];return s.filter(Wr=>!!Wr.isArchived).length+Ir.filter(Wr=>!!Wr.isArchived).length+Ir.reduce((Wr,Yr)=>Wr+(Yr.tasks||[]).filter(Zn=>!!Zn.isArchived).length,0)},[s,i]),{availableWidth:cr,layoutMode:it}=Fte(t),Zt=it==="wide",Lr=Zt&&ke,lr=Zt&&ve,$n=Zt&&He,u=pT(Lr,!0,nt?lr:!lt,!0,pt?lr:Dr?$n:!Yt),St=it!=="narrow"||!$r&&!Dr,gt=$r&&(Zt||!Dr),Fr=Dr,er=Zt?u:it==="medium"?Zm+(gt||Fr?mc:0):cr,jr=Math.max(0,Math.min(er,cr)),qr=Math.max(0,jr-(St?Zm:0)),An=or?or.entityType==="initiative"?or.mode==="create"?"New Initiative":"Edit Initiative":or.mode==="create"?"New Workstream":"Edit Workstream":T?.type==="initiative"?"Initiative":"Workstream",cn=H?.kind==="editor"?H.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",Hr=or?null:T,Ge=H?.kind==="detail"?H.detail:null,Xr=re.useCallback(Ir=>{Ft(Wr=>({...Wr,[Ir]:!Wr[Ir]}))},[]),hr=re.useCallback(Ir=>{const Wr=String(Ir.initiativeId||"").trim();return Wr&&s.find(Yr=>Yr.id===Wr)||null},[s]),Jt=re.useRef(null),Xt=re.useRef(null),bn=re.useRef(null),$t=re.useRef(null),Ut=re.useRef(null),Ur=re.useRef(e),Fn=re.useRef(""),Yn=wr?`secondary:inline-editor:${wr.targetId}`:H?`secondary:${H.kind}:${H.kind==="detail"?H.detail.item.id:`${H.editor.mode}:${H.editor.entityType}:${H.editor.mode==="edit"?H.editor.targetId:""}`}`:Bt?`primary:inline-editor:${Bt.targetId}`:or?`primary:editor:${or.mode}:${or.entityType}:${or.mode==="edit"?or.targetId:""}`:T?`primary:detail:${T.type}:${T.item.id}`:"tree";re.useEffect(()=>{const Ir=Ur.current;if(Ur.current=e,Ir&&!e){r?.current?.focus(),Fn.current="";return}if(!e||Ir&&Fn.current===Yn)return;Fn.current=Yn;const Wr=Fr?bn.current:gt?Xt.current:Jt.current,Yr=window.requestAnimationFrame(()=>{(Wr?.querySelector("[data-planning-editor-title]")||Wr?.querySelector("[data-planning-pane-heading]"))?.focus()});return()=>window.cancelAnimationFrame(Yr)},[Yn,e,r,gt,Fr]);const Ca=re.useCallback(()=>{if(z){Ee();return}T?.type==="initiative"&&je(""),T?.type==="workstream"&&Re("")},[T,z,Ee,je,Re]),yn=re.useCallback(Ir=>({flex:`0 0 ${Ir}px`,width:`${Ir}px`,minWidth:`${Ir}px`,maxWidth:`${Ir}px`}),[]);re.useEffect(()=>{n?.(jr)},[jr,n]),re.useEffect(()=>{lt&&$t.current?.querySelector("[data-planning-pane-heading]")?.focus()},[lt]),re.useEffect(()=>{Yt&&Ut.current?.querySelector("[data-planning-pane-heading]")?.focus()},[Yt]);const Vr=T?.type==="workstream"?T.item:null,rn=Vr?hr(Vr):ge,Mn=!!(rn||String(Vr?.initiativeId||"").trim()),sn=rn?{title:rn.title,description:Vr?`${Vr.title} belongs to this initiative.`:"This workstream will belong to the selected initiative.",action:Vr?{label:"Open initiative",onClick:()=>je(rn.id)}:void 0}:Vr&&Mn?{title:"Initiative unavailable",description:`${Vr.title} is assigned to an initiative that is not available in the current planning data.`}:Vr?{title:"Not linked to an initiative"}:{title:"No initiative selected"},Sn={title:"No workstream selected"};return a.jsx("aside",{className:ze.drawer,"aria-label":"Planning","aria-hidden":!e,inert:!e,"data-layout":it,style:{position:"absolute",top:0,left:e?`${t}px`:`${t-jr-24}px`,bottom:0,width:`${jr}px`,minWidth:0,maxWidth:`calc(100vw - ${t}px)`,borderRight:"1px solid var(--border-color)",background:"var(--bg-secondary)",boxSizing:"border-box",display:"flex",flexDirection:"column",zIndex:35,overflow:"hidden",pointerEvents:e?"auto":"none",transition:"left 220ms cubic-bezier(0.4, 0, 0.2, 1)",willChange:"left"},children:a.jsxs("div",{className:ze.drawerBody,children:[St&&(Lr?a.jsx(jm,{label:"Planning",onExpand:Te}):a.jsxs("div",{ref:Jt,"data-planning-pane":"tree",className:`${ze.paneShell} ${R.appScrollbar} tf-scrollbar ${ze.treePane} ${$r&&!ve?ze.treePaneSplit:""}`.trim(),style:yn(it==="narrow"?jr:Zm),children:[a.jsxs("div",{className:ze.paneHeader,children:[a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:"Planning"}),a.jsxs("div",{className:ze.headerActionGroup,children:[a.jsx(uv,{visible:Qt,disabled:d==="deleted"||ir===0,disabledLabel:d==="deleted"?"Archive visibility unavailable in Trash":void 0,itemLabel:"planning items",onToggle:()=>Ct(Ir=>!Ir)}),Zt?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ne,"aria-label":"Collapse Planning pane",title:"Collapse Planning pane",children:a.jsx(wo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":l.status==="loading"||l.isRefreshing,children:a.jsx(zte,{initiatives:s,standaloneWorkstreams:i,planningLoadState:l,taskScope:d,showArchivedPlanning:Qt,currentOwnerId:fe,assigneeOptions:$e,showTaskCardStatusLabel:ye,taskArrangeMode:k,activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:b,onTogglePlanningFavorite:w,favoritesSectionCollapsed:P,initiativesSectionCollapsed:E,workstreamsSectionCollapsed:D,onToggleFavoritesSection:j,onToggleInitiativesSection:S,onToggleWorkstreamsSection:L,expandedInitiativeIds:_,detail:T,secondaryPane:H,onCreateInitiative:Je,onCreateWorkstream:J,onToggleInitiative:Ze,onSelectInitiative:te,onSelectWorkstream:Ne,onOpenInitiativeDetails:je,onOpenWorkstreamDetails:Re,onOpenNestedWorkstreamDetails:Ce,onOpenTaskById:U,onSetTaskStatus:pe,onChangePlanningOwner:De,onChangePlanningIdentity:et,onChangeTaskAssignee:Fe,onArchivePlanningTask:Ve,onArchiveResolvedWorkstream:tt,onArchiveResolvedInitiative:It,linkOptions:Ye,onAssignInitiativeToWorkstream:at,onRetryPlanning:c})})]})),Zt&&!nt&&(lt?a.jsx(FA,{label:"Initiative",title:sn.title,description:sn.description,action:sn.action,onCollapse:()=>xt(!1),paneRef:$t}):a.jsx(jm,{label:"Initiative",muted:!Mn,onExpand:()=>xt(!0)})),gt&&(lr?a.jsx(jm,{label:Me==="initiative"?"Initiative":"Workstream",onExpand:Ue}):a.jsxs("div",{ref:Xt,"data-planning-pane":"primary",className:`${ze.paneShell} ${R.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:yn(Zt?mc:qr),children:[a.jsxs("div",{className:ze.paneHeader,children:[it==="narrow"?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Ca,"aria-label":"Back to Planning",title:"Back to Planning",children:a.jsx(wo,{size:16,"aria-hidden":"true"})}):null,a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:An}),a.jsxs("div",{className:ze.headerActionGroup,children:[Hr?a.jsx(uv,{visible:Ht[Hr.type],disabled:$A(Hr)===0,itemLabel:Hr.type==="initiative"?"workstreams":"tasks",onToggle:()=>Xr(Hr.type)}):null,Zt?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Le,"aria-label":`Collapse ${An} pane`,title:`Collapse ${An} pane`,children:a.jsx(wo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":M?.status==="loading",children:or?a.jsx(nw,{editor:or,draftTitle:se,draftDescription:ie,draftOwner:me,draftInitiativeId:$,draftIcon:V,draftColor:B,assigneeOptions:$e,initiativeLinkOptions:Ye.initiatives,draftInitiativeSummary:ge,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onChangeDraftIcon:Z,onChangeDraftColor:G,onCancel:Ee,onSubmit:x,isSubmitting:le,isSubmitDisabled:Ie}):T?a.jsx(UA,{detail:T,showArchivedChildren:Ht[T.type],inlineEditor:Bt?{editor:Bt,draftTitle:se,draftDescription:ie,draftOwner:me,draftInitiativeId:$,draftInitiativeSummary:ge,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onCancel:Ee,onSubmit:x,isSubmitting:le,isSubmitDisabled:Ie}:null,selectedChildWorkstreamId:H?.kind==="detail"?H.detail.item.id:null,currentWorkspaceId:ee,currentActorId:fe,theme:_e,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:A,hydrationState:M,onRetryHydration:K,onSetTaskStatus:T.type==="workstream"?pe:void 0,onArchivePlanningTask:T.type==="workstream"?Ve:void 0,onArchiveResolvedWorkstream:T.type==="initiative"?tt:void 0,onArchiveResolvedEntity:T.type==="initiative"?It:tt,onOpenNestedWorkstreamDetails:T.type==="initiative"?Ce:void 0,onCreateTaskInWorkstream:T.type==="workstream"?Xe:void 0,onCreateWorkstreamInInitiative:T.type==="initiative"?bt:void 0,onOpenTaskById:T.type==="workstream"?U:void 0,onChangeTaskAssignee:T.type==="workstream"?Fe:void 0,taskReferences:Ke,onAssignTaskToWorkstream:T.type==="workstream"?Et:void 0,onAssignInitiativeToWorkstream:at,onAttachTaskToWorkstreamByReference:T.type==="workstream"?kt:void 0,onAttachWorkstreamToInitiativeByReference:T.type==="initiative"?Ot:void 0,parentInitiative:T.type==="workstream"?hr(T.item):null,onEdit:()=>T.type==="initiative"?Pe(T.item.id):he(T.item.id),onChangeOwner:Ir=>De(T.type,T.item.id,Ir),onChangePlanningOwner:De,onChangePlanningIdentity:et,onArchive:()=>T.type==="initiative"?yt(T.item.id):mt(T.item.id),onUnarchive:()=>T.type==="initiative"?Oe(T.item.id):vt(T.item.id),onAddPlanningContextFile:dr,onRemovePlanningContextFile:tr,onUpdatePlanningContextCaption:pr}):null})]})),Zt&&!pt&&!Dr&&(Yt?a.jsx(FA,{label:"Workstream",title:Sn.title,description:Sn.description,action:Sn.action,onCollapse:()=>Nt(!1),paneRef:Ut}):a.jsx(jm,{label:"Workstream",muted:!0,onExpand:()=>Nt(!0)})),Fr&&($n?a.jsx(jm,{label:"Workstream",onExpand:ft}):a.jsxs("div",{ref:bn,"data-planning-pane":"secondary",className:`${ze.paneShell} ${R.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:yn(Zt?mc:qr),children:[a.jsxs("div",{className:ze.paneHeader,children:[Zt?null:a.jsx("button",{type:"button",className:"tf-control-icon",onClick:wr&&de||xe,"aria-label":wr?"Cancel workstream editing":`Back to ${An}`,title:wr?"Cancel workstream editing":`Back to ${An}`,children:a.jsx(wo,{size:16,"aria-hidden":"true"})}),a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:cn}),a.jsxs("div",{className:ze.headerActionGroup,children:[Ge?a.jsx(uv,{visible:Ht.workstream,disabled:$A(Ge)===0,itemLabel:"tasks",onToggle:()=>Xr("workstream")}):null,Zt?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:st,"aria-label":`Collapse ${cn} pane`,title:`Collapse ${cn} pane`,children:a.jsx(wo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":oe?.status==="loading",children:H?.kind==="editor"?a.jsx(nw,{editor:H.editor,draftTitle:se,draftDescription:ie,draftOwner:me,draftInitiativeId:$,draftIcon:V,draftColor:B,assigneeOptions:$e,initiativeLinkOptions:Ye.initiatives,draftInitiativeSummary:ge,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onChangeDraftIcon:Z,onChangeDraftColor:G,onCancel:xe,onSubmit:x,isSubmitting:le,isSubmitDisabled:Ie}):H?a.jsx(UA,{detail:H.detail,showArchivedChildren:Ht.workstream,inlineEditor:wr?{editor:wr,draftTitle:se,draftDescription:ie,draftOwner:me,draftInitiativeId:$,draftInitiativeSummary:ge,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onCancel:de||xe,onSubmit:x,isSubmitting:le,isSubmitDisabled:Ie}:null,currentWorkspaceId:ee,currentActorId:fe,theme:_e,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:A,hydrationState:oe,onRetryHydration:Q,onSetTaskStatus:pe,onArchivePlanningTask:Ve,onArchiveResolvedEntity:tt,onCreateTaskInWorkstream:Xe,onOpenTaskById:U,onChangeTaskAssignee:Fe,taskReferences:Ke,onAssignTaskToWorkstream:Et,onAssignInitiativeToWorkstream:at,onAttachTaskToWorkstreamByReference:kt,parentInitiative:hr(H.detail.item),onEdit:()=>he(H.detail.item.id),onChangeOwner:Ir=>De("workstream",H.detail.item.id,Ir),onChangePlanningOwner:De,onChangePlanningIdentity:et,onArchive:()=>mt(H.detail.item.id),onUnarchive:()=>vt(H.detail.item.id),onAddPlanningContextFile:dr,onRemovePlanningContextFile:tr,onUpdatePlanningContextCaption:pr}):null})]}))]})})}function zA(e,t,r){const n=String(t||"").trim();if(n)return e.some(l=>l.id===n)?{initiativeId:n,invalid:!1}:{initiativeId:null,invalid:!0};const s=r.trim();if(!s)return{initiativeId:null,invalid:!1};const i=$v(e,s);return i?{initiativeId:i.id,invalid:!1}:{initiativeId:null,invalid:!0}}function hT(e,t){return t.title.trim()!==e.title.trim()||(t.description?.trim()||null)!==(e.description?.trim()||null)}function Gte(e,t){return hT(e,t)||(t.initiativeId||null)!==(e.initiativeId||null)}function Kte(e){return e.taskScope==="open"&&e.summaryCount>0&&(e.loadingTasks||e.activeTaskCount===0||!e.archiveHydrated)}const wd={tasks:"Tasks",planning:"Planning",docs:"Documents",annotate:"Image Notes",workflowManager:"Workflow Manager",taskforceAgents:"Taskforce Agents",aiProfiles:"AI Profiles"},qte=["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"];function Yte(e){const t=e?.featureAccess||{},r={tasks:{id:"tasks",label:wd.tasks,featureKey:null,enabled:!0,fallbackModuleId:"tasks"},planning:{id:"planning",label:wd.planning,featureKey:Zb,enabled:t[Zb]?.allowed??!1,fallbackModuleId:"tasks"},docs:{id:"docs",label:wd.docs,featureKey:wv,enabled:t[wv]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:wd.annotate,featureKey:vv,enabled:t[vv]?.allowed??!1,fallbackModuleId:"tasks"},workflowManager:{id:"workflowManager",label:wd.workflowManager,featureKey:qb,enabled:t[qb]?.allowed??!1,fallbackModuleId:"tasks"},taskforceAgents:{id:"taskforceAgents",label:wd.taskforceAgents,featureKey:zm,enabled:t[zm]?.allowed??!1,fallbackModuleId:"tasks"},aiProfiles:{id:"aiProfiles",label:wd.aiProfiles,featureKey:Yb,enabled:t[Yb]?.allowed??!1,fallbackModuleId:"tasks"}};return qte.map(n=>r[n])}function Zte(e){switch(e){case"planning":return{mode:e,moduleId:"planning",layoutVariant:"planning-module",headerSections:[],primaryAction:null};case"docs":return{mode:e,moduleId:"docs",layoutVariant:"docs-minimal",headerSections:[],primaryAction:null};case"annotate":return{mode:e,moduleId:"annotate",layoutVariant:"annotated-module",headerSections:[],primaryAction:null};case"workflowManager":return{mode:e,moduleId:"workflowManager",layoutVariant:"workflow-manager-module",headerSections:[],primaryAction:null};case"taskforceAgents":return{mode:e,moduleId:"taskforceAgents",layoutVariant:"taskforce-agents-module",headerSections:[],primaryAction:null};case"aiProfiles":return{mode:e,moduleId:"aiProfiles",layoutVariant:"ai-profiles-module",headerSections:[],primaryAction:null};default:return{mode:"tasks",moduleId:"tasks",layoutVariant:"tasks-default",headerSections:["search","sort","divider-primary","grouping","divider-secondary","task-display-actions"],primaryAction:"add-task"}}}function HA(e,t){const r=e==="agents"?"aiProfiles":e,n=t.find(s=>s.id===r);return n?n.enabled?n.id:n.fallbackModuleId:"tasks"}const Jte="_weekLabel_vet2o_1",Xte="_sectionTitle_vet2o_6",Qte="_calendarHeader_vet2o_11",ere="_monthLabel_vet2o_18",tre="_weekdayGrid_vet2o_23",rre="_weekdayLabel_vet2o_30",nre="_calendarGrid_vet2o_36",are="_calendarDay_vet2o_42",sre="_calendarDayDot_vet2o_55",ore="_jumpRow_vet2o_67",ire="_displaySection_vet2o_73",cre="_toggleLabel_vet2o_79",lre="_expiredSummary_vet2o_87",dre="_actionButton_vet2o_95",is={weekLabel:Jte,sectionTitle:Xte,calendarHeader:Qte,monthLabel:ere,weekdayGrid:tre,weekdayLabel:rre,calendarGrid:nre,calendarDay:are,calendarDayDot:sre,jumpRow:ore,displaySection:ire,toggleLabel:cre,expiredSummary:lre,actionButton:dre},VA=["mon","tue","wed","thu","fri","sat","sun"],ure={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Rd(e){const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${n}`}function Fm(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const r=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(r.getTime())?null:r}function aw(e,t){const r=e.getDay(),n=t==="sunday"?-r:r===0?-6:1-r,s=new Date(e);return s.setHours(0,0,0,0),s.setDate(s.getDate()+n),s}function fre(e,t){return t==="sunday"?{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}[e]:{mon:0,tue:1,wed:2,thu:3,fri:4,sat:5,sun:6}[e]}function gT(e,t){const r=new Date(e);return r.setDate(e.getDate()+t),r}function mre(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const r=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]))),n=r.getUTCDay()||7;r.setUTCDate(r.getUTCDate()+4-n);const s=new Date(Date.UTC(r.getUTCFullYear(),0,1)),i=Math.ceil(((r.getTime()-s.getTime())/864e5+1)/7);return`${r.getUTCFullYear()}-W${String(i).padStart(2,"0")}`}const sw=320;function pre({open:e,onClose:t,scheduleSelectedDate:r,setScheduleSelectedDate:n,scheduleCalendarMonth:s,setScheduleCalendarMonth:i,scheduleShowWeekends:l,setScheduleShowWeekends:c,scheduleShowBacklog:d,setScheduleShowBacklog:m,scheduleOnlyExpired:f,setScheduleOnlyExpired:g,expiredScheduledCount:h,overdueDueCount:y,expiredLeafCandidates:k,expiredRecoveryCandidates:v,onMoveExpiredToSelectedWeek:A,onMoveExpiredToBacklog:b,scheduleBulkBusy:w,globalWeekStartsOn:P,resolvedLocale:E,todayDateOnly:D,scheduleBaseTasks:j,scheduleWeekStart:S,scheduleWeekLabel:L}){const _=re.useMemo(()=>{const[M,oe]=s.split("-"),K=Number(M),Q=Number(oe);if(!Number.isInteger(K)||!Number.isInteger(Q)||Q<1||Q>12){const ee=Fm(r)||new Date;return new Date(ee.getFullYear(),ee.getMonth(),1)}return new Date(K,Q-1,1)},[s,r]),T=re.useMemo(()=>Yg(_,{month:"long",year:"numeric"},E),[_,E]),z=re.useMemo(()=>{const M=aw(_,P);return Array.from({length:42},(oe,K)=>gT(M,K))},[_,P]),Y=re.useMemo(()=>{const M=new Map;for(const oe of j){const K=oe.scheduledDate||"";if(!K)continue;const ee=!(oe.status==="done"||oe.status==="cancelled")&&K<D,fe=M.get(K);fe?(fe.count+=1,ee&&(fe.hasExpired=!0)):M.set(K,{count:1,hasExpired:ee})}return M},[j,D]),H=re.useMemo(()=>P==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[P]);return a.jsxs("aside",{className:`${R.appScrollbar} tf-scrollbar tf-sidebar-shell`,style:{transform:e?"translateX(0)":"translateX(108%)",pointerEvents:e?"auto":"none",transition:"transform 220ms cubic-bezier(0.4, 0, 0.2, 1)",willChange:"transform",width:`${sw}px`,minWidth:`${sw}px`},children:[a.jsxs("div",{className:"tf-sidebar-header",children:[a.jsxs("div",{className:"tf-sidebar-title",children:[a.jsx(K0,{size:16}),a.jsx("span",{children:"Schedule Controls"})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:"Hide Schedule Sidebar",children:a.jsx(Ld,{size:16})})]}),a.jsxs("div",{className:is.weekLabel,children:["Week of ",L]}),a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsxs("div",{className:is.calendarHeader,children:[a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(_);M.setMonth(_.getMonth()-1),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:a.jsx(wo,{size:14})}),a.jsx("div",{className:is.monthLabel,children:T}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(_);M.setMonth(_.getMonth()+1),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:a.jsx(Ld,{size:14})})]}),a.jsx("div",{className:is.weekdayGrid,children:H.map(M=>a.jsx("div",{className:is.weekdayLabel,children:M},M))}),a.jsx("div",{className:is.calendarGrid,children:z.map(M=>{const oe=Rd(M),K=M.getMonth()!==_.getMonth(),Q=aw(M,P),ee=Rd(Q)===Rd(S),fe=oe===r,_e=oe===D,$e=oe<D,Ye=Y.get(oe),ye=!!Ye,ge=!!Ye?.hasExpired;return a.jsxs("button",{onClick:()=>{n(oe),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},className:is.calendarDay,style:{"--calendar-day-border":fe?"1px solid #2563eb":_e?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":fe?"rgba(59,130,246,0.22)":_e?"rgba(245,158,11,0.16)":ee?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":K?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":fe||_e?700:500,"--calendar-day-opacity":$e?.42:1},title:`${_e?`${oe} (Today)`:oe}`+(ye?` • ${Ye?.count} scheduled`:"")+(ge?" • includes expired":""),children:[M.getDate(),ye&&a.jsx("span",{className:is.calendarDayDot,style:{"--calendar-dot-background":ge?"#ef4444":"#3b82f6","--calendar-dot-opacity":K?.6:.95}})]},oe)})}),a.jsx("div",{className:is.jumpRow,children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date;n(Rd(M)),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Jump to current week",children:"Today"})})]}),a.jsxs("div",{className:`tf-sidebar-section tf-surface-panel ${is.displaySection}`,children:[a.jsx("div",{className:is.sectionTitle,children:"Display"}),a.jsxs("label",{className:is.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:l,onChange:M=>c(M.target.checked)}),"Show weekends"]}),a.jsxs("label",{className:is.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:d,onChange:M=>m(M.target.checked)}),"Show backlog"]}),a.jsxs("label",{className:is.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:f,onChange:M=>g(M.target.checked)}),"Only expired/overdue"]})]}),h>0&&a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsx("div",{className:is.sectionTitle,children:"Expired Tasks"}),a.jsxs("div",{className:is.expiredSummary,children:[a.jsxs("span",{children:[h," expired"]}),a.jsxs("span",{children:[y," overdue"]})]}),a.jsx("button",{className:`tf-control-icon ${is.actionButton}`,onClick:A,disabled:w||k.length===0,title:"Move expired leaf tasks to the selected week while keeping weekday alignment",children:w?"Working...":"Schedule to selected week"}),a.jsx("button",{className:`tf-control-icon ${is.actionButton}`,onClick:b,disabled:w||v.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:w?"Working...":"Unschedule to backlog"})]})]})}const hre=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],gre=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function yT(e,t){return e&&(t==="owner"||t==="admin")}function yre(e,t,r){return yT(e,t)&&r==="team"}function kre({isOpen:e,workspaceId:t,refreshKeys:r}){const[n,s]=o.useState([]),[i,l]=o.useState(!1),[c,d]=o.useState(null),m=o.useRef(null),f=o.useRef(null);o.useLayoutEffect(()=>{f.current=wre(m.current,f.current)},[n]);const g=o.useCallback(async()=>{const h=await fetch(`/api/taskforce/sync/events?workspace_id=${encodeURIComponent(t)}&limit=15`,{method:"GET",credentials:"include"});if(!h.ok)throw new Error(`Failed to load sync events (${h.status})`);const y=await h.json().catch(()=>({}));return Array.isArray(y?.events)?y.events.filter(k=>k&&typeof k=="object"):[]},[t]);return o.useEffect(()=>{if(!e)return;let h=!1;const y=n.length===0;return y&&l(!0),g().then(k=>{h||(f.current=vre(m.current),s(v=>{const A=v.length===0?k:PJ(v,k,15);return jJ(v,A)?v:A}),d(null))}).catch(k=>{if(h)return;const v=k instanceof Error&&k.message.trim().length>0?k.message.trim():"Unable to load recent sync events.";d(v),y&&s([])}).finally(()=>{h||y&&l(!1)}),()=>{h=!0}},[e,g,...r]),{syncRecentEvents:n,syncRecentEventsLoading:i,syncRecentEventsError:c,syncEventsListRef:m,loadRecentSyncEvents:g}}function vre(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function wre(e,t){if(!t||!e)return null;const r=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,r),null}function bre({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,workspaceSyncPhase:f,referenceMismatchCount:g,syncRecentEvents:h,loadRecentSyncEvents:y,pushNotice:k,resetWorkspaceSyncCursorAndPull:v,workspaceSyncBusy:A,durableRepairQueueAvailable:b=!1}){const[w,P]=o.useState(!1),[E,D]=o.useState(!1),[j,S]=o.useState(!1),L=o.useCallback(async()=>{try{const z=h.length>0?h:await y(),Y=$J({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,syncStageLabel:G_(f,w,A),referenceMismatchCount:g,syncRecentEvents:z});await navigator.clipboard.writeText(Y),S(!0),window.setTimeout(()=>{S(!1)},1800),k("Sync details copied to clipboard.","success")}catch{S(!1),k("Failed to copy sync details.","error")}},[e,i,l,s,y,k,g,m,h,t,c,f,d,n,r,A,w]),_=o.useCallback(async()=>{D(!1),P(!0);try{await v()}finally{P(!1)}},[v]),T=o.useCallback(()=>{if(!w){if(A&&!b){D(!0);return}_()}},[b,_,A,w]);return o.useEffect(()=>{E&&(A||w||_())},[_,A,w,E]),{workspaceSyncRepairBusy:w,workspaceSyncRepairQueued:E,workspaceSyncCopied:j,handleCopySyncDetails:L,handleQueueOrRunRepairSync:T}}function Sre({canManageWorkspaceSync:e,workspaceCloudSyncEnabled:t,persistedToggleIntent:r=null,saveWorkspaceCloudSyncSettings:n}){const[s,i]=o.useState(!1),[l,c]=o.useState(!1),[d,m]=o.useState(!1),[f,g]=o.useState(null),[h,y]=o.useState(null),k=o.useRef(null),A=(h===null?null:h?"enabling":"disabling")||r;o.useEffect(()=>{h!==null&&h===t&&y(null)},[h,t]);const b=o.useCallback(async S=>{if(!e)return;for(g(null),y(S),m(!0);k.current;){const _=k.current;if(_.enabled===S)return _.promise;await _.promise}y(S),m(!0);let L;return L=(async()=>{try{const _=await n({enabled:S});_.success||(y(null),g(_.error||(S?"Failed to enable sync.":"Failed to disable sync.")))}catch(_){y(null),g(_ instanceof Error&&_.message.trim()?_.message:S?"Failed to enable sync.":"Failed to disable sync.")}finally{k.current?.promise===L&&(k.current=null,m(!1))}})(),k.current={enabled:S,promise:L},L},[e,n]),w=o.useCallback(async S=>{if(S&&!t){c(!0);return}await b(S)},[b,t]),P=o.useCallback(()=>{c(!1)},[]),E=o.useCallback(()=>{c(!1),b(!0)},[b]),D=o.useCallback(()=>{i(!0)},[]),j=o.useCallback(()=>{i(!1)},[]);return{showSyncStatusModal:s,showSyncEnableWarning:l,workspaceSyncToggleBusy:d,workspaceSyncError:f,syncControlBusy:d||A!==null,syncControlIntent:A,openSyncStatusModal:D,closeSyncStatusModal:j,handleWorkspaceSyncToggle:w,cancelSyncEnableWarning:P,confirmSyncEnableWarning:E}}const GA=re.lazy(()=>qo(()=>import("./TaskSettings-Cp-L-4xh.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),Are=re.lazy(()=>qo(()=>import("./AnnotatedAttachmentWorkspace-Dt9TKYSH.js"),__vite__mapDeps([12,1,4,13,2,14,3,5,15])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),Cre=re.lazy(()=>qo(()=>import("./DocumentWorkspace-HD4MUjAZ.js"),__vite__mapDeps([16,1,13,2,14,3,4,5,17])).then(e=>({default:e.DocumentWorkspaceShell}))),KA=re.lazy(()=>qo(()=>import("./TaskforceAgentsModule-Coq9-PUp.js"),__vite__mapDeps([18,1,19,2,3,4,5,20])).then(e=>({default:e.TaskforceAgentsModule}))),Ire=re.lazy(()=>qo(()=>import("./WorkflowManagerModule-CuqRzMmM.js"),__vite__mapDeps([21,1,2,3,4,5,22])).then(e=>({default:e.WorkflowManagerModule}))),_re=re.lazy(()=>qo(()=>import("./AiProfilesModule-Cww85C4E.js"),__vite__mapDeps([23,1,19,2,3,4,5])).then(e=>({default:e.AiProfilesModule}))),Tre=re.lazy(()=>qo(()=>import("./PlanningModule-mTkBygsB.js"),__vite__mapDeps([24,1,2,3,4,5,25])).then(e=>({default:e.PlanningModule}))),xre=re.lazy(()=>qo(()=>import("./PlansPage-Btiq06VO.js"),__vite__mapDeps([26,1,2,5,3,4,27])).then(e=>({default:e.PlansPage})));function qA(e,t,r){const n=t.trim();if(!n)return e;const s={...e};return delete s[n],s[n]=r,Object.fromEntries(Object.entries(s).slice(-50))}const Rre="image/png,image/jpeg,image/webp,image/gif",Pre=5*1024*1024,fv=56,jre=e=>e;function Ere(e,t){const r=pp(e);if(r)return Vb(r).label.toUpperCase();for(const n of t){const s=String(n||"").trim();if(!s)continue;const i=Cw(s);if(i)return Vb(i).label.toUpperCase();let l=s.toLowerCase();try{l=new URL(s.includes("://")?s:`https://${s}`).hostname.toLowerCase()}catch{l=s.toLowerCase()}if(!(l.includes("localhost")||l.includes("127.0.0.1")||l.includes("::1")))return l.toUpperCase()}return"UNKNOWN"}function Em(){return typeof performance<"u"?performance.now():Date.now()}function Nre(e){const n=pC(),s=hC(),i=o.useMemo(()=>new URLSearchParams(s.search),[s.search]),l=String(i.get("screen")||"").trim().toLowerCase()==="plans",c=o.useCallback(p=>{const I=new URLSearchParams(s.search);I.set("screen","plans");for(const[W,Se]of Object.entries(p||{}))Se==null||String(Se).trim()===""?I.delete(W):I.set(W,String(Se));n(`/?${I.toString()}${s.hash||""}`)},[s.hash,s.search,n]),d=o.useCallback(()=>{const p=new URLSearchParams(s.search);p.delete("screen"),p.delete("gate"),p.delete("checkout"),p.delete("planId"),p.delete("planVersionId"),p.delete("interval");const I=p.toString();n(`${s.pathname==="/"?"/":s.pathname}${I?`?${I}`:""}${s.hash||""}`)},[s.hash,s.pathname,s.search,n]),{activeTab:m,setActiveTab:f,activeCategories:g,groupBy:h,setGroupBy:y,activeWorkspaceModule:k,setActiveWorkspaceModule:v,emptyColumnMode:A,setEmptyColumnMode:b,zenMode:w,setZenMode:P,filterStatus:E,setFilterStatus:D,tasks:j,handleEdit:S,handleSubmit:L,resetForm:_,discardDescriptionImageDraft:T,handleUpdateTask:z,handleSetStatus:Y,editingTaskId:H,loading:M,error:oe,title:K,setTitle:Q,setTitleDraft:ee,description:fe,setDescription:_e,setDescriptionDraft:$e,checklistItems:Ye,setChecklistItems:ye,category:ge,setCategory:se,type:ie,setType:me,priority:$,setPriority:V,complexity:B,setComplexity:N,status:be,setStatus:Ae,assignee:q,setAssignee:Z,scheduledDate:G,setScheduledDate:ne,dueDate:Te,setDueDate:Le,workstreamInput:Ue,setWorkstreamInput:st,manualComplexityEnabled:ft,checklistDropdownEnabled:xe,showTaskCardStatusLabel:ke,showTaskCardDescription:ve,showTaskCardAttachments:He,showTaskCardChecklistProgress:Ee,showTaskCardLatestActivity:de,tintTaskCardActivityBackground:x,formTaxonomies:le,setFormTaxonomies:Ie,comments:Je,newCommentText:J,setNewCommentText:Ze,attachments:te,setAttachments:Ne,attachmentsDirty:je,setAttachmentsDirty:Re,descriptionImageUploadPending:Ce,descriptionImageDraftId:Pe,registerDescriptionImageUpload:he,descriptionFocused:De,setDescriptionFocused:et,showMarkdownHelp:Fe,setShowMarkdownHelp:yt,handleAddComment:Oe,handleSetWorkstreamForCurrentTask:mt,handleOpenTaskById:vt,taxonomies:Ve,activeTypes:tt,priorities:It,taxonomyDisplayLabels:Xe,copiedId:bt,handleCopyId:at,handleToggleInProgress:U,handleToggleComplete:pe,handleToggleReview:Ke,handleToggleCancel:Et,handleArchiveTask:kt,handleDelete:Ot,handleUnarchive:dr,handleRestoreDeletedTask:tr,handleRestoreSelectedDeletedTasks:pr,handlePermanentlyDeleteDeletedTask:Bt,handleEmptyDeletedTasks:wr,fetchTasks:or,searchQuery:$r,setSearchQuery:Dr,filterCategories:Me,setFilterCategories:nt,filterTypes:pt,setFilterTypes:lt,filterPriorities:xt,setFilterPriorities:Yt,filterAssignees:Nt,setFilterAssignees:Qt,hasInitedFilters:Ct,assigneeOptions:Ht,taskScope:Ft,setTaskScope:ir,compressedCards:cr,setCompressedCards:it,sortBy:Zt,setSortBy:Lr,clearFilters:lr,settingsModel:$n,configLoaded:br,currentTheme:ur,setCurrentTheme:u,pathSaved:St,saveSettings:gt,keyShortcut:Fr,setKeyShortcut:xr,globalWeekStartsOn:er,locale:jr,jsonBackupEnabled:qr,setJsonBackupEnabled:An,mcpHostRoot:cn,setMcpHostRoot:Hr,settingsSection:Ge,setSettingsSection:Xr,runtimeMode:hr,workspaceSwitchingEnabled:Jt,cloudAuthConfigured:Xt,authRequiredForApi:bn,authBlocked:$t,isAuthenticated:Ut,authUserId:Ur,authWorkspaceId:Fn,authUserEmail:Yn,authUserDisplayName:Ca,authUserAvatarUrl:yn,authSessionResolved:Vr,realtimeSyncEnabled:rn,realtimeSyncFlagSource:Mn,workspaceCloudSyncEnabled:sn,workspaceSyncPhase:Sn,workspaceSyncStatus:Ir,workspaceSyncSummary:Wr,workspaceSyncRecommendedAction:Yr,workspaceSyncBusy:Zn,workspaceSyncPendingChanges:Ln,localCoordinatorStatus:fn,transferLocalCoordinatorOwnership:Rn,saveWorkspaceCloudSyncSettings:hn,pushNotice:dt,userGlobalSyncStatus:On,workspaceLastSuccessfulSyncAt:Wt,workspaceLastPullAt:ue,workspaceLastPushAt:ot,workspaceLastErrorAt:_t,userGlobalSyncError:Pt,workspaceLastErrorMessage:nr,resetWorkspaceSyncCursorAndPull:fr,getWorkspaceSyncDiagnostics:ln,currentWorkspaceId:Tt,currentWorkspaceRole:Rr,availableWorkspaces:Qr,switchWorkspace:on,updateCurrentUserProfile:Jn,resolveCloudAuthUrl:Zr=jre,logout:Er,fetchLoginMethods:Xn,unlinkLoginMethod:Ia,addPasswordToAccount:Un,changePassword:Cs,beginOAuthLogin:ga,beginOAuthLink:Bs,availableAuthProviders:eo,projectRoot:to,projectName:Qn,mcpScriptPath:Ws,serverHostRoot:sa,showFolderBrowser:hi,setShowFolderBrowser:ea,folders:gi,files:_a,currentBrowsePath:oa,fetchFolders:Ta,browserTarget:Ka,setBrowserTarget:ls,handleSelectPath:ds,handleAddPath:La,handleRemovePath:qa,handleUpdateCategory:xa,handleRemoveCategory:Ra,handleSaveCategory:zn,handleUpdateCategoryIcon:us,handleUpdateCategoryColor:ut,handleSaveType:vr,handleRemoveType:en,handleUpdateTaxonomies:In,handleUpdatePriorities:Pn,pathValidation:ro,taskforceAgentId:Is,setTaskforceAgentId:$s,taskforceAgentConversationId:Pa,setTaskforceAgentConversationId:ya,taskforceAgentConversationByAgentId:jn,setTaskforceAgentConversationByAgentId:Nr,uiStateReady:Oa,initiativeTemplates:Ya,fetchInitiativeTemplates:ia,createInitiativeFromTemplate:Hn,uiNotice:Vn,clearNotice:Za,clearTaskError:Ao,taskReturnTrail:yi,clearReturnToParentTask:_s,returnToPreviousTask:ki,tasksScrollRef:we,setTasksScrollPos:At,commentsEndRef:qt,autoSaveState:ar,unsavedModalOpen:Sr,setUnsavedModalOpen:gn,pendingNavigation:fa,handleNavigation:ta,currentTask:mn,currentTaskWorkstream:fs,currentTaskInitiative:Ui,scheduleWarningPrompt:no,confirmScheduleWarning:zi,cancelScheduleWarning:Fs}=e,sr=i_(j,vt),Gn=jr||RC();o.useEffect(()=>{const p=String(Qn||"").trim();document.title=p?`Taskforce - ${p}`:"Taskforce"},[Qn]);const En=()=>{gn(!1),m==="add"&&!H&&T(),fa?(m==="add"&&_(),fa()):(m==="add"&&_(),f("tasks"))},ms=async()=>{await L({preventDefault:()=>{}}),gn(!1),fa&&fa()},[_n,ja]=o.useState(!1),[ao,Ts]=o.useState(!0),[Ba,Wa]=o.useState(!1),[ka,$a]=o.useState(!0),[Ar,vi]=o.useState(Rd(new Date)),[ps,Co]=o.useState(()=>{const p=new Date;return`${p.getFullYear()}-${String(p.getMonth()+1).padStart(2,"0")}`}),[Us,Ja]=o.useState(0),[va,Fa]=o.useState(!1),[so,Ua]=o.useState(!1),[Xa,wa]=o.useState(!1),Yo=o.useRef(null),[ba,pc]=o.useState(!0),[hs,wi]=o.useState(!0),[dn,Hi]=o.useState(!0),[ma,zs]=o.useState(!0),[Ea,hc]=o.useState(!0),[gs,bi]=o.useState(!1),[Zo,Io]=o.useState(null),_o=o.useRef(!1),gc=o.useRef(null),[Jo,ys]=o.useState(fv),[pa,oo]=o.useState(!1),[un,To]=o.useState(!1),[Qa,ra]=o.useState(!1),[yc,Dl]=o.useState(!1),[rl,ca]=o.useState(!1),[Ml,Si]=o.useState(!1),[xo,kc]=o.useState("default"),[Ai,Xo]=o.useState("execution"),[Ro,vc]=o.useState([]),[Cn,Qo]=o.useState(""),[Hs,F]=o.useState(""),[O,Vt]=o.useState(new Set),[Mt,Rt]=o.useState(null),[ht,nn]=o.useState(null),[rr,Pr]=o.useState({}),[Dt,kn]=o.useState(null),[Tn,la]=o.useState(null),[Po,wc]=o.useState(""),[bc,Ci]=o.useState(""),[Ll,jo]=o.useState(""),[io,ei]=o.useState(""),[Sc,nl]=o.useState(null),[Ac,Eo]=o.useState(null),[wp,Ii]=o.useState(!1),Ol=o.useRef({taskId:null,attachments:[]}),Jr=o.useMemo(()=>Rd(new Date),[]),Bn=String(Ur||"").trim(),{taskHeaderQuickFilter:es,toggleTaskHeaderQuickFilter:bp,clearTaskHeaderQuickFilter:hf}=AJ({authUserId:Bn,workspaceId:Tt,taskScope:Ft}),Sp=o.useRef(new Map),Ud=o.useRef(new Map),[gf,Ap]=o.useState(()=>hre.map(p=>p.value)),[yf,No]=o.useState(()=>gre.map(p=>p.value)),[kf,Cp]=o.useState("updated"),[vf,Ip]=o.useState("desc"),[wf,_p]=o.useState([]),[bf,Tp]=o.useState(""),[Sf,xp]=o.useState(null),[Af,Rp]=o.useState({}),[zd,Pp]=o.useState(0),[ky,Hd]=o.useState(null),[vy,Vd]=o.useState(null),[Gd,Vi]=o.useState(null),[Cf,al]=o.useState(null),[If,Kd]=o.useState({}),[_f,Bl]=o.useState(0),sl=o.useRef(null),[xs,ol]=o.useState({}),ts=o.useRef(!1),Do=o.useRef(null),Mo=o.useRef(null),qd=o.useRef(null),il=o.useRef(new Set);o.useEffect(()=>{Ol.current={taskId:H||null,attachments:te}},[H,te]);const Yd=o.useCallback(p=>{const I=H||null,W=Ol.current,Se=W.taskId===I?W.attachments:te,We=p(Se);Ol.current={taskId:I,attachments:We},Ne(We),Re(!0),I&&z(I,{attachments:We}).then(Gt=>{const Mr=Ol.current;Gt!==!1&&Mr.taskId===I&&Mr.attachments===We&&Re(!1)}).catch(()=>{})},[te,H,z,Ne,Re]),ti=o.useMemo(()=>{const p={},I=String(Tt||"").trim();return hr==="cloud"&&I&&I!=="default"&&(p["x-taskforce-workspace-id"]=I),p},[hr,Tt]),ri=o.useMemo(()=>fX({runtimeMode:hr,workspaceId:Tt,userId:Bn}),[Tt,Bn,hr]),Cc=o.useRef(ri),Zd=Cc.current===ri,Rs=Zd?Gd:null,Jd=Zd?Cf:null,Lo=o.useMemo(()=>`taskforce:task-origin-workspace-module:${ri}`,[ri]),Xd=o.useMemo(()=>hr==="cloud"?Vr:br,[Vr,br,hr]),Oo=o.useRef(!1),Qd=o.useRef(!1),_i=o.useCallback(p=>{const I=String(p||"").trim();if(!(!I||typeof window>"u")){Oo.current=!0;try{window.sessionStorage.setItem(Lo,I)}catch{}}},[Lo]),Ti=o.useCallback(()=>{if(Oo.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(Lo)}catch{}},[Lo]);o.useEffect(()=>{Do.current=Gd},[Gd]),o.useEffect(()=>{Mo.current=Cf},[Cf]),o.useEffect(()=>{Cc.current!==ri&&(Cc.current=ri,Do.current=null,Mo.current=null,qd.current=null,Vi(null),al(null))},[ri]);const Ps=o.useMemo(()=>TR(e.config?.appGates,e.config?.cloudEnvironment),[e.config?.appGates,e.config?.cloudEnvironment]),Gi=o.useMemo(()=>Yte({featureAccess:Ps}),[Ps]),_r=o.useMemo(()=>HA(k,Gi),[k,Gi]),Wl=Xa||_r==="planning";o.useEffect(()=>{Wl&&e.ensureArchiveHydrated(!0)},[Wl,e.ensureArchiveHydrated,Tt]);const[co,$l]=o.useState(!1),[Ic,lo]=o.useState(!1),[wy,Tf]=o.useState(null),[eu,Fl]=o.useState(null),Ul=o.useCallback(p=>{Fl(p)},[]),tu=o.useCallback(p=>{const I=String(p.agentId||"").trim(),W=String(p.conversationId||"").trim();$s(I),ya(W),I&&Nr(Se=>{if(W)return Se[I]===W?Se:{...Se,[I]:W};if(!Se[I])return Se;const We={...Se};return delete We[I],We})},[Nr,ya,$s]),xi=Ps[wv]?.allowed??!1,_c=Ps[vv]?.allowed??!1,zl=Ps[zm]?.allowed??!1,ru="Documents is not available in this build yet.",Hl="Annotate is not available in this build yet.",Bo=o.useCallback(p=>{if(m!=="add"){p();return}ta(()=>{Ua(!1),_(),f("tasks"),p()})},[m,ta,_,f]);o.useEffect(()=>{const p=I=>{const W=I,Se=W.detail?.fsPath,We=String(W.detail?.assetId||"").trim()||null;if(!(!Se&&!We)){if(W.preventDefault(),!xi){dt(ru,"error");return}Bo(()=>{_i(W.detail?.taskId),Hd(Se||null),Vd(We),v("docs")})}};return window.addEventListener("taskforce:open-markdown-document",p),()=>{window.removeEventListener("taskforce:open-markdown-document",p)}},[xi,ru,Bo,dt,_i,v]),o.useEffect(()=>{_r!==k&&v(_r)},[k,_r,v]),o.useEffect(()=>{_r==="docs"&&xi||(Hd(null),Vd(null))},[xi,_r]),o.useEffect(()=>{if(!Qd.current&&!(_r!=="docs"&&_r!=="annotate")&&(Qd.current=!0,!(Oo.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(Lo)||"").trim())return;window.sessionStorage.removeItem(Lo),v("tasks")}catch{}},[_r,v,Lo]),o.useEffect(()=>{Qd.current=!1,Oo.current=!1},[Lo]);const by=o.useCallback(p=>{typeof p.scheduleShowWeekends=="boolean"&&ja(p.scheduleShowWeekends),typeof p.scheduleShowBacklog=="boolean"&&Ts(p.scheduleShowBacklog),typeof p.scheduleOnlyExpired=="boolean"&&Wa(p.scheduleOnlyExpired),typeof p.scheduleSidebarOpen=="boolean"&&$a(p.scheduleSidebarOpen),typeof p.scheduleSelectedDate=="string"&&vi(p.scheduleSelectedDate),typeof p.scheduleCalendarMonth=="string"&&Co(p.scheduleCalendarMonth),typeof p.scheduleScrollLeft=="number"&&Ja(p.scheduleScrollLeft),typeof p.showFilters=="boolean"&&Fa(p.showFilters),Array.isArray(p.documentTypeFilters)&&Ap(p.documentTypeFilters),Array.isArray(p.documentAttachmentFilters)&&No(p.documentAttachmentFilters),(p.documentSortField==="updated"||p.documentSortField==="reference"||p.documentSortField==="name"||p.documentSortField==="size"||p.documentSortField==="created")&&Cp(p.documentSortField),(p.documentSortOrder==="asc"||p.documentSortOrder==="desc")&&Ip(p.documentSortOrder),Array.isArray(p.documentPinnedDocIds)&&_p(p.documentPinnedDocIds),typeof p.documentSearchQuery=="string"&&Tp(p.documentSearchQuery),(typeof p.documentSelectedDocId=="string"||p.documentSelectedDocId===null)&&xp(p.documentSelectedDocId),Rp(p.documentScrollByDocId&&typeof p.documentScrollByDocId=="object"?p.documentScrollByDocId:{}),typeof p.documentListScrollTop=="number"&&Pp(p.documentListScrollTop),typeof p.planningDrawerOpen=="boolean"&&wa(p.planningDrawerOpen),typeof p.documentTrayOpen=="boolean"&&pc(p.documentTrayOpen),typeof p.imageTrayOpen=="boolean"&&wi(p.imageTrayOpen),typeof p.agentTrayOpen=="boolean"&&Hi(p.agentTrayOpen),typeof p.taskforceAgentRosterTrayOpen=="boolean"&&zs(p.taskforceAgentRosterTrayOpen),typeof p.taskforceAgentDrawerOpen=="boolean"&&$l(p.taskforceAgentDrawerOpen),typeof p.taskforceAgentPanelCollapsed=="boolean"&&lo(p.taskforceAgentPanelCollapsed),typeof p.planningTreeCollapsed=="boolean"&&oo(p.planningTreeCollapsed),typeof p.planningPrimaryCollapsed=="boolean"&&To(p.planningPrimaryCollapsed),typeof p.planningSecondaryCollapsed=="boolean"&&ra(p.planningSecondaryCollapsed),Dl(!!p.planningFavoritesSectionCollapsed),ca(!!p.planningInitiativesSectionCollapsed),Si(!!p.planningWorkstreamsSectionCollapsed),(p.planningNavigatorSort==="default"||p.planningNavigatorSort==="title"||p.planningNavigatorSort==="owner"||p.planningNavigatorSort==="progress")&&kc(p.planningNavigatorSort),Xo(ute(p.planningTaskArrangeMode)),vc(Array.isArray(p.planningFavorites)?p.planningFavorites:[]),Array.isArray(p.planningExpandedInitiativeIds)&&Vt(new Set(p.planningExpandedInitiativeIds)),p.planningDrawerDetail!==void 0&&Rt(p.planningDrawerDetail),(typeof p.planningNestedWorkstreamDetailId=="string"||p.planningNestedWorkstreamDetailId===null)&&nn(p.planningNestedWorkstreamDetailId);const I=p.annotatedTarget&&typeof p.annotatedTarget=="object"?p.annotatedTarget:null,W=I&&typeof p.annotatedSessionId=="string"?p.annotatedSessionId:null;S8({currentTarget:Do.current,currentSessionId:Mo.current,lastHydratedIdentity:qd.current})&&(Do.current=I,Mo.current=W,qd.current=h_(I,W),Vi(I),al(W)),Kd(p.annotatedViewportByContextKey&&typeof p.annotatedViewportByContextKey=="object"?p.annotatedViewportByContextKey:{})},[]),nu=o.useMemo(()=>({scheduleShowWeekends:_n,scheduleShowBacklog:ao,scheduleOnlyExpired:Ba,scheduleSidebarOpen:ka,scheduleSelectedDate:Ar,scheduleCalendarMonth:ps,scheduleScrollLeft:Us,showFilters:va,documentTypeFilters:gf,documentAttachmentFilters:yf,documentSortField:kf,documentSortOrder:vf,documentPinnedDocIds:wf,documentSearchQuery:bf,documentSelectedDocId:Sf,documentScrollByDocId:Af,documentListScrollTop:zd,documentTrayOpen:ba,imageTrayOpen:hs,agentTrayOpen:dn,taskforceAgentRosterTrayOpen:ma,taskforceAgentDrawerOpen:co,taskforceAgentPanelCollapsed:Ic,planningDrawerOpen:Xa,planningTreeCollapsed:pa,planningPrimaryCollapsed:un,planningSecondaryCollapsed:Qa,planningFavoritesSectionCollapsed:yc,planningInitiativesSectionCollapsed:rl,planningWorkstreamsSectionCollapsed:Ml,planningNavigatorSort:xo,planningTaskArrangeMode:Ai,planningFavorites:Ro,planningExpandedInitiativeIds:Array.from(O),planningDrawerDetail:Mt,planningNestedWorkstreamDetailId:ht,annotatedTarget:Rs,annotatedSessionId:Jd,annotatedViewportByContextKey:If}),[_n,ao,Ba,ka,Ar,ps,Us,va,gf,yf,kf,vf,wf,bf,Sf,Af,zd,ba,hs,dn,ma,co,Ic,Xa,pa,un,Qa,yc,rl,Ml,xo,Ai,Ro,O,Mt,ht,Rs,Jd,If]);o.useEffect(()=>{vc([])},[ri]);const{ready:au}=bX({currentWorkspaceId:Tt,loadKey:ri,enabled:hr!=="cloud"||Vr,headers:ti,remotePlanningFavoritesAuthoritative:!!Bn&&Bn!=="anonymous",useCloudProxy:hr==="local"&&!!Bn&&Bn!=="anonymous",snapshot:nu,onApplyState:by});o.useEffect(()=>{h==="schedule"&&$a(!0)},[h]);const{showArchive:Tc,setShowArchive:Vl,fetchArchive:Sy,filteredArchive:xf}=e,Gl=o.useMemo(()=>xf.map(p=>({...p,isArchived:!0})),[xf]),ks=o.useMemo(()=>e.archivedTasks.map(p=>({...p,isArchived:!0})),[e.archivedTasks]),Ri=o.useMemo(()=>[...e.searchAgnosticTasks,...ks],[ks,e.searchAgnosticTasks]),jp=o.useCallback(p=>{const I=String(p||"").trim();if(!I)return"";const W=Ri.find(Se=>Se.id===I);return Ss(W)||""},[Ri]),Rf=o.useCallback(p=>{const I=String(p||"").trim();if(!I)return"";const W=String(xs[I]||"").trim();if(W)return W;for(const Se of Ri)for(const We of Se.attachments||[]){if(!We||typeof We!="object"||String(We.assetId||"").trim()!==I)continue;const Gt=cp({referenceNumber:typeof We.referenceNumber=="number"?We.referenceNumber:null,referenceLabel:String(We.referenceLabel||"").trim()||null});if(Gt)return Gt}return""},[Ri,xs]);o.useEffect(()=>{const p=I=>{const W=I,Se=nA(W.detail,Ri);if(Se){if(W.preventDefault(),!_c){dt(Hl,"error");return}Bo(()=>{Do.current=Se;const We=String(Se.sessionId||"").trim()||null;Mo.current=We,Vi(Se),al(We),Bl(Gt=>Gt+1),_i(Se.taskId),v("annotate")})}};return window.addEventListener("taskforce:open-annotated-attachment",p),()=>{window.removeEventListener("taskforce:open-annotated-attachment",p)}},[Ri,_c,Hl,Bo,dt,_i,v]),o.useEffect(()=>{if(!Rs)return;const p=nA(Rs,Ri);p&&(p.taskReferenceLabel===Rs.taskReferenceLabel&&p.imageReferenceLabel===Rs.imageReferenceLabel||Vi(p))},[Ri,Rs]),o.useEffect(()=>{const p=Do.current,I=String(p?.assetId||"").trim();if(!I)return;const W=String(xs[I]||"").trim();W&&W!==String(p?.imageReferenceLabel||"").trim()&&Vi(Se=>!Se||String(Se.assetId||"").trim()!==I?Se:{...Se,imageReferenceLabel:W})},[xs,Rs]),o.useEffect(()=>{if(!Xd)return;const I=String(Rs?.assetId||"").trim();if(!I||il.current.has(I)||String(xs[I]||"").trim())return;let W=!1;il.current.add(I);const Se=String(Tt||"default").trim()||"default",We=new URLSearchParams({workspaceId:Se});return(async()=>{try{const Mr=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(I)}?${We.toString()}`,{method:"GET",credentials:"include",headers:ti});if(!Mr.ok)return;const Gr=await Mr.json().catch(()=>({})),za=String(Gr?.target?.imageReferenceLabel||"").trim();if(!za||W)return;ol(wn=>wn[I]===za?wn:{...wn,[I]:za})}catch{}finally{il.current.delete(I)}})(),()=>{W=!0}},[Xd,xs,Tt,Rs,ti]);const Wo=o.useMemo(()=>e.deletedTasks.map(p=>({...p.taskSnapshot,isDeleted:!0,deletedRecordId:p.id,deletedAt:p.deletedAt,deletedExpiresAt:o_(p.deletedAt)})),[e.deletedTasks]),Ki=o.useMemo(()=>{const p=new Map;return e.deletedTasks.forEach(I=>{p.set(I.taskSnapshot.id,I)}),p},[e.deletedTasks]),su=o.useMemo(()=>{const p=Wo,I=yp($r),W={categories:g,types:tt,priorities:It,assigneeOptions:e.assigneeOptions,taxonomies:Ve},Se=g.every(wn=>Me.includes(wn.value)),We=tt.every(wn=>pt.includes(wn.value)),Gt=new Set(xt.map(wn=>String(wn))),Mr=It.every(wn=>Gt.has(String(wn.value))),Gr=new Set(E.map(wn=>String(wn))),za=fc.every(wn=>Gr.has(String(wn.value)));return p.filter(wn=>{const Al=Ug(wn,I,W),Bu=Se||Me.includes(wn.category),Wu=We||pt.includes(wn.type||bo),_h=Mr||Gt.has(String(wn.priority)),Th=za||Gr.has(String(wn.status)),xh=Nt.length===0||Nt.includes(wn.assignee||"unassigned");return Al&&Bu&&Wu&&_h&&Th&&xh})},[g,tt,Wo,Nt,Me,xt,E,pt,It,$r]),Kl=o.useMemo(()=>[...e.tasks,...ks,...Wo],[ks,Wo,e.tasks]),Pf=o.useMemo(()=>{const p=g.filter(W=>!W.disabled).map(W=>({value:W.value,label:W.label})),I=g.filter(W=>W.disabled&&Kl.some(Se=>Se.category===W.value)).map(W=>({value:W.value,label:`${W.label} (Legacy)`}));return[...p,...I]},[g,Kl]),jf=o.useMemo(()=>{const p=tt.filter(W=>W.status!=="retired").map(W=>({value:W.value,label:W.label})),I=tt.filter(W=>W.status==="retired"&&Kl.some(Se=>(Se.type||bo)===W.value)).map(W=>({value:W.value,label:`${W.label} (Retired)`}));return[...p,...I]},[tt,Kl]),Ef=o.useCallback(p=>es?p.filter(I=>CJ(I,es,Bn,Jr)):p,[Bn,es,Jr]),xc=o.useMemo(()=>Ef(e.filteredTasks),[Ef,e.filteredTasks]),Rc=o.useMemo(()=>Ft==="archived"?Gl:Ft==="deleted"?su:Tc?[...xc,...Gl]:xc,[Gl,su,xc,Tc,Ft]),Nf=o.useMemo(()=>Ft==="open"?es?xc:e.tasks.filter(p=>!p.isArchived):Rc,[Rc,e.tasks,xc,es,Ft]),Ep=o.useMemo(()=>new Set(Rc.map(p=>p.id)),[Rc]),Df=o.useMemo(()=>Ft==="archived"?ks:Ft==="deleted"?Wo:Tc?[...e.tasks,...ks]:e.tasks,[ks,Wo,e.tasks,Tc,Ft]),Pc=o.useMemo(()=>{const p=new Map;for(const I of ks)p.set(I.id,I);for(const I of Wo)p.set(I.id,I);for(const I of e.tasks)p.set(I.id,I);return Array.from(p.values())},[ks,Wo,e.tasks]),jc=o.useMemo(()=>{const p=new Map;return Pc.forEach(I=>p.set(I.id,I)),p},[Pc]),Mf=o.useMemo(()=>{const p=new Map;Ht.forEach(Se=>{p.set(String(Se.value),Se.label)});const I=String(Ur||"").trim(),W=String(Ca||Yn||"").trim();return I&&W&&p.set(I,W),p},[Ht,Ca,Yn,Ur]),zt=o.useMemo(()=>{const p=new Map;e.workspaceTaskRelationships.forEach(ct=>{if(ct.deletedAt||ct.kind!=="dependency")return;const zr=p.get(ct.sourceTaskId)||[];zr.push(ct.targetTaskId),p.set(ct.sourceTaskId,zr)});const I=rX(e.tasks,ks),W=new Map(I.map(ct=>[ct.id,ct])),Se=ct=>{const zr=p.get(ct)||[];if(zr.length===0)return"ready";let Wn=!1;for(const rc of zr){const nc=W.get(rc);if(!nc||Vo(nc.status).value==="cancelled"){Wn=!0;continue}if(Vo(nc.status).value!=="done")return"blocked"}return Wn?"invalid":"ready"},We=I,Gt=I,Mr=(ct,zr)=>({progressPercent:ct>0?Math.round(zr/ct*100):0,taskCount:ct,completedTaskCount:zr}),Gr=ct=>{const zr={task:0,"on-hold":0,"in-progress":0,review:0,done:0,cancelled:0};return ct.forEach(Wn=>{zr[Vo(Wn.status).value]+=1}),zr},za=ct=>{const zr=Gr([]);return ct.forEach(Wn=>{Object.entries(Wn.statusCounts||{}).forEach(([rc,nc])=>{zr[rc]+=Number(nc)||0})}),zr},wn=Kte({taskScope:Ft,summaryCount:e.planningBootstrapTaskSummaries.length,loadingTasks:e.loadingTasks,activeTaskCount:e.tasks.length,archiveHydrated:e.archiveHydratedWorkspaceId===Tt}),Al=new Map,Bu=new Map,Wu=new Map;wn?e.planningBootstrapTaskSummaries.forEach(ct=>{const zr=(ct.tasks||[]).map(Wn=>({...Wn,prerequisiteTaskIds:p.get(Wn.id)||[],dependencyState:Se(Wn.id)}));Al.set(ct.workstreamId,{...ct,tasks:zr}),Bu.set(ct.workstreamId,zr),Wu.set(ct.workstreamId,Gr(zr))}):(We.forEach(ct=>{const zr=String(ct.workstreamId||"").trim();if(!zr)return;const Wn=Al.get(zr)||{workstreamId:zr,taskCount:0,completedTaskCount:0,tasks:[]};Wn.taskCount+=1,(ct.status==="done"||ct.status==="cancelled")&&(Wn.completedTaskCount+=1);const rc=Wu.get(zr)||Gr([]);rc[Vo(ct.status).value]+=1,Wu.set(zr,rc),Al.set(zr,Wn)}),Gt.forEach(ct=>{const zr=String(ct.workstreamId||"").trim();if(!zr)return;const Wn=Bu.get(zr)||[];Wn.push({id:ct.id,referenceNumber:ct.referenceNumber??null,localReferenceNumber:ct.localReferenceNumber??null,referenceLabel:ct.referenceLabel,title:ct.title,createdAt:ct.createdAt,status:ct.status||null,priority:Number(ct.priority)||0,workstreamOrder:ct.workstreamOrder??null,prerequisiteTaskIds:p.get(ct.id)||[],dependencyState:Se(ct.id),assignee:ct.assignee||null,attachmentCount:ct.attachmentCount??(Array.isArray(ct.attachments)?ct.attachments.length:0),isArchived:!!ct.isArchived}),Bu.set(zr,Wn)}));const _h=new Map,Th=new Map,xh=new Map,Tk=new Map,e0=ct=>{const zr=Al.get(ct.id),Wn=Bu.get(ct.id)||zr?.tasks||[],rc=Mr(zr?.taskCount||0,zr?.completedTaskCount||0),nc=nX({isArchived:!!ct.isArchived,tasks:Wn,dataReady:!wn}),Rh={id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,description:String(ct.description||"").trim()||void 0,ownerId:ct.ownerId?String(ct.ownerId):null,ownerLabel:ct.ownerId?Mf.get(String(ct.ownerId))||String(ct.ownerId):null,icon:ct.icon??null,color:ct.color??null,...rc,statusCounts:Wu.get(ct.id)||Gr([]),initiativeId:ct.initiativeId||null,commentCount:Array.isArray(ct.comments)?ct.comments.length:0,comments:Array.isArray(ct.comments)?ct.comments:[],activity:Array.isArray(ct.activity)?ct.activity:[],entityEvents:Array.isArray(ct.entityEvents)?ct.entityEvents:[],attachmentCount:Array.isArray(ct.attachments)?ct.attachments.length:0,attachments:Array.isArray(ct.attachments)?ct.attachments:[],isArchived:!!ct.isArchived,archiveReady:nc.archiveReady,archiveActiveTaskCount:nc.activeTaskCount,tasks:Wn};if(_h.set(ct.id,Wn.map(Cl=>Cl.id)),ct.initiativeId){Th.set(ct.id,ct.initiativeId);const Cl=Tk.get(ct.initiativeId)||[];Cl.push(Rh),Tk.set(ct.initiativeId,Cl)}return Rh},xk=e.workstreams.map(e0),t0=xk.filter(ct=>Jg(Ft,!!ct.isArchived)),Rk=e.initiatives.map(ct=>{const zr=Tk.get(ct.id)||[],Wn=zr.filter(km=>Jg(Ft,!!km.isArchived)),rc=zr.reduce((km,Pk)=>km+Pk.taskCount,0),nc=zr.reduce((km,Pk)=>km+Pk.completedTaskCount,0),Rh=Mr(rc,nc),Cl=aX({isArchived:!!ct.isArchived,workstreams:zr,dataReady:!wn});return{id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,description:String(ct.description||"").trim()||void 0,ownerId:ct.ownerId?String(ct.ownerId):null,ownerLabel:ct.ownerId?Mf.get(String(ct.ownerId))||String(ct.ownerId):null,icon:ct.icon??null,color:ct.color??null,...Rh,statusCounts:za(zr),workstreamCount:Wn.length,workstreams:Wn,allWorkstreams:zr,commentCount:Array.isArray(ct.comments)?ct.comments.length:0,comments:Array.isArray(ct.comments)?ct.comments:[],activity:Array.isArray(ct.activity)?ct.activity:[],entityEvents:Array.isArray(ct.entityEvents)?ct.entityEvents:[],attachmentCount:Array.isArray(ct.attachments)?ct.attachments.length:0,attachments:Array.isArray(ct.attachments)?ct.attachments:[],isArchived:!!ct.isArchived,archiveReady:Cl.archiveReady,archiveActiveTaskCount:Cl.activeTaskCount,archiveActiveWorkstreamCount:Cl.activeWorkstreamCount}}),{initiatives:Eb,standaloneWorkstreams:r0,initiativeById:n0,workstreamById:a0}=IJ(Rk,t0,Ft),s0=xk.filter(ct=>!ct.initiativeId);return Eb.forEach(ct=>{xh.set(ct.id,ct.workstreams.flatMap(zr=>(zr.tasks||[]).map(Wn=>Wn.id)))}),{initiatives:Eb,standaloneWorkstreams:r0,allInitiatives:Rk,allStandaloneWorkstreams:s0,allInitiativeById:new Map(Rk.map(ct=>[ct.id,ct])),allWorkstreamById:new Map(xk.map(ct=>[ct.id,ct])),workstreamTaskIds:_h,workstreamInitiativeIds:Th,initiativeTaskIds:xh,workstreamById:a0,initiativeById:n0}},[ks,Tt,e.archiveHydratedWorkspaceId,Mf,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.workspaceTaskRelationships,e.tasks,e.workstreams,Ft]),Lf=o.useMemo(()=>zt.initiatives.map(p=>{const I=ws(p);return{value:p.id,label:I||p.title}}),[zt.initiatives]),ou=o.useMemo(()=>{const p=(We,Gt)=>We.title.localeCompare(Gt.title,void 0,{sensitivity:"base"}),I=Array.from(zt.allInitiativeById.values()).filter(We=>!We.isArchived).map(We=>({id:We.id,referenceLabel:ws(We)||We.id,title:We.title,icon:We.icon,color:We.color,meta:`${We.workstreamCount||0} workstream${We.workstreamCount===1?"":"s"}`})).sort(p),W=Array.from(zt.allWorkstreamById.values()).filter(We=>!We.isArchived).map(We=>({id:We.id,referenceLabel:Go(We)||We.id,title:We.title,icon:We.icon,color:We.color,meta:We.initiativeId?`In ${zt.allInitiativeById.get(We.initiativeId)?.title||"another initiative"}`:"Standalone workstream"})).sort(p),Se=Pc.filter(We=>!We.isArchived&&!We.isDeleted).map(We=>({id:We.id,referenceLabel:Ss(We)||We.id,title:We.title,meta:We.workstreamId?`In ${zt.allWorkstreamById.get(We.workstreamId)?.title||"another workstream"}`:"Unassigned to a workstream"})).sort(p);return{initiatives:I,workstreams:W,tasks:Se}},[Pc,zt.allInitiativeById,zt.allWorkstreamById]),Of=o.useMemo(()=>{const I=(Cn?zt.initiativeById.get(Cn)?.workstreams||[]:zt.initiatives.flatMap(Se=>Se.workstreams)).map(Se=>{const We=Go(Se);return{value:Se.id,label:We||Se.title}}),W=Cn?[]:zt.standaloneWorkstreams.map(Se=>{const We=Go(Se);return{value:Se.id,label:We||Se.title}});return[...I,...W]},[zt.initiativeById,zt.initiatives,zt.standaloneWorkstreams,Cn]),iu=o.useMemo(()=>Hs?new Set(zt.workstreamTaskIds.get(Hs)||[]):Cn?new Set(zt.initiativeTaskIds.get(Cn)||[]):null,[zt.initiativeTaskIds,zt.workstreamTaskIds,Cn,Hs]),Bf=o.useMemo(()=>{if(!Mt)return null;if(Mt.type==="initiative"){const I=zt.allInitiativeById.get(Mt.id);return I?{type:"initiative",item:I}:null}const p=zt.allWorkstreamById.get(Mt.id);return p?{type:"workstream",item:p}:null},[Mt,zt.allInitiativeById,zt.allWorkstreamById]),cu=o.useMemo(()=>{if(!ht)return null;const p=zt.allWorkstreamById.get(ht);return p?{type:"workstream",item:p}:null},[ht,zt.allWorkstreamById]),Wf=o.useMemo(()=>Tn?.mode==="create"?{kind:"editor",editor:Tn}:cu?{kind:"detail",detail:cu}:null,[cu,Tn]),Np=Mt?rr[`${Mt.type}:${Mt.id}`]:void 0,Dp=ht?rr[`workstream:${ht}`]:void 0,Mp=pT(pa,!!(Bf||Dt),un,!!Wf,Qa),[Ay,Cy]=o.useState(Mp),Iy=o.useMemo(()=>{if(!io.trim())return null;const p=zt.allInitiativeById.get(io);return p||$v(zt.allInitiatives,io)},[io,zt.allInitiativeById,zt.allInitiatives]);o.useEffect(()=>{Cn&&!zt.initiativeById.has(Cn)&&Qo(""),Hs&&!zt.workstreamById.has(Hs)&&F("")},[zt.initiativeById,zt.workstreamById,Cn,Hs]);const $o=o.useMemo(()=>h==="schedule"?Nf:Rc,[h,Rc,Nf]),$f=o.useMemo(()=>h!=="schedule"||!Ba?$o:$o.filter(p=>{if(p.status==="done"||p.status==="cancelled")return!1;const W=!!p.scheduledDate&&p.scheduledDate<Jr,Se=!!p.dueDate&&p.dueDate<Jr;return W||Se}),[h,Ba,$o,Jr]),Lp=o.useMemo(()=>CA($f,iu),[$f,iu]),Pi=c_(e.deletedTasks,Lp.map(p=>p.id),Ft==="deleted"),_y=o.useMemo(()=>CA(Df,iu),[Df,iu]),Ty=o.useMemo(()=>Array.from(Ep),[Ep]),xy=o.useCallback(p=>{vi(p);const I=Fm(p);I&&Co(`${I.getFullYear()}-${String(I.getMonth()+1).padStart(2,"0")}`)},[]),Ry=o.useCallback(p=>{h==="schedule"&&Ja(p)},[h]),Py=o.useCallback(p=>{if(Ft==="deleted"){const I=Ki.get(p);if(!I)return;tr(I.id,I.taskId);return}dr(p)},[Ki,tr,dr,Ft]),Ff=o.useCallback(p=>{if(Ft==="deleted"){const I=Ki.get(p);if(!I||!window.confirm("Permanently delete this task? This cannot be undone."))return;Bt(I.id);return}Ot(p)},[Ki,Ot,Bt,Ft]),Ec=o.useMemo(()=>h!=="schedule"?[]:$o.filter(p=>{if(p.status==="done"||p.status==="cancelled")return!1;const W=!!p.scheduledDate&&p.scheduledDate<Jr,Se=!!p.dueDate&&p.dueDate<Jr;return W||Se}),[h,$o,Jr]),jy=o.useMemo(()=>h!=="schedule"?0:$o.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.scheduledDate&&p.scheduledDate<Jr).length,[h,$o,Jr]),Op=o.useMemo(()=>h!=="schedule"?0:$o.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.dueDate&&p.dueDate<Jr).length,[h,$o,Jr]),ql=o.useMemo(()=>!Bn||Bn==="anonymous"?0:j.filter(p=>p.status==="done"||p.status==="cancelled"?!1:String(p.assignee||"").trim()===Bn).length,[Bn,j]),ji=o.useMemo(()=>!Bn||Bn==="anonymous"?0:j.filter(p=>p.status==="done"||p.status==="cancelled"||String(p.assignee||"").trim()!==Bn?!1:!!p.dueDate&&p.dueDate<Jr).length,[Bn,j,Jr]),Bp=o.useMemo(()=>h!=="schedule"?[]:$o.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.scheduledDate&&p.scheduledDate<Jr),[h,$o,Jr]),cl=Ec,[Nc,Dc]=o.useState(!1),Wp=()=>{ta(()=>{ki()||(m==="add"&&yi.length>0&&_s(),Ua(!1),m==="add"&&_(),f("tasks"))})};o.useEffect(()=>{m!=="add"&&Ua(!1)},[m]);const Yl=o.useCallback(async(p,I,W)=>{p.status===I&&!W?.allowSameStatus||await Y(p,I)},[Y]),ll=o.useCallback(async(p,I)=>{const W=jc.get(p);if(!W){dt("Task details are still loading.","info");return}await Yl(W,I),await e.fetchPlanningEntities()},[Yl,jc,e.fetchPlanningEntities,dt]),Uf=o.useCallback(async(p,I)=>{await z(p,{assignee:I})!==!1&&await e.fetchPlanningEntities()},[z,e.fetchPlanningEntities]),qi=o.useCallback(async p=>{const I=jc.get(p);return I?I.isArchived?!0:I.status!=="done"&&I.status!=="cancelled"?(dt("Only completed or cancelled tasks can be archived from Planning.","error"),!1):kt(I):(dt("Task details are still loading.","info"),!1)},[kt,jc,dt]),$p=o.useCallback(async p=>{const I=await qi(p);return I&&(await e.fetchPlanningEntities(),dt("Task archived","success")),I},[qi,e.fetchPlanningEntities,dt]),Ei=o.useCallback(async p=>{const I=zt.allWorkstreamById.get(p);if(!I?.archiveReady)return dt("This workstream is no longer ready to archive.","error"),!1;try{return await Z_({workstream:I,archiveTask:qi,archiveWorkstream:e.archiveWorkstream})?(dt("Completed tasks and workstream archived","success"),!0):(dt("Workstream archive stopped safely. Resolve any remaining tasks and retry.","error"),!1)}catch(W){return dt(W instanceof Error?`Workstream archive stopped safely: ${W.message}`:"Workstream archive stopped safely. Retry to archive the remaining items.","error"),!1}},[qi,zt.allWorkstreamById,e.archiveWorkstream,dt]),zf=o.useCallback(async p=>{const I=zt.allInitiativeById.get(p);if(!I?.archiveReady)return dt("This initiative is no longer ready to archive.","error"),!1;try{return await sX({initiativeId:I.id,workstreams:I.allWorkstreams||I.workstreams,archiveTask:qi,archiveWorkstream:e.archiveWorkstream,archiveInitiative:e.archiveInitiative})?(dt("Completed tasks, workstreams, and initiative archived","success"),!0):(dt("Initiative archive stopped safely. Resolve any remaining tasks and retry.","error"),!1)}catch(W){return dt(W instanceof Error?`Initiative archive stopped safely: ${W.message}`:"Initiative archive stopped safely. Retry to archive the remaining items.","error"),!1}},[qi,zt.allInitiativeById,e.archiveInitiative,e.archiveWorkstream,dt]),Yi=o.useCallback(async(p,I)=>{const W=p==="initiative"?zt.allInitiativeById.get(I):zt.allWorkstreamById.get(I);if(!W)return dt(`${p==="initiative"?"Initiative":"Workstream"} not found.`,"error"),!1;const Se=J_({entityType:p,isArchived:W.isArchived,taskCount:W.taskCount,completedTaskCount:W.completedTaskCount,archiveReady:W.archiveReady,activeWorkstreamCount:W.archiveActiveWorkstreamCount});if(Se.mode==="archived")return!0;if(Se.mode==="ready")return p==="initiative"?zf(I):Ei(I);if(Se.mode!=="empty")return dt(Se.mode==="blocked"?`Archive unavailable while active ${Se.remainingKind==="task"?"tasks":"workstreams"} remain.`:"Archive availability is still loading.","error"),!1;try{return p==="initiative"?await e.archiveInitiative(I):await e.archiveWorkstream(I),dt(`${p==="initiative"?"Initiative":"Workstream"} archived`,"success"),!0}catch(We){return dt(We instanceof Error?We.message:`Failed to archive ${p}.`,"error"),!1}},[zf,Ei,zt.allInitiativeById,zt.allWorkstreamById,e.archiveInitiative,e.archiveWorkstream,dt]),Hf=o.useCallback(async(p,I)=>{try{return p==="initiative"?await e.unarchiveInitiative(I):await e.unarchiveWorkstream(I),dt(`${p==="initiative"?"Initiative":"Workstream"} unarchived`,"success"),!0}catch(W){return dt(W instanceof Error?W.message:`Failed to unarchive ${p}.`,"error"),!1}},[e.unarchiveInitiative,e.unarchiveWorkstream,dt]),lu=o.useCallback((p,I)=>{_();const W=SJ(p,I,{categories:g});W.category&&se(W.category),W.type&&me(W.type),typeof W.priority=="number"&&V(W.priority),typeof W.complexity=="number"&&N(W.complexity),W.assignee&&Z(W.assignee),W.status&&Ae(W.status),W.scheduledDate&&ne(W.scheduledDate),f("add")},[_,g,se,me,V,N,Ae,Z,ne,f]);re.useEffect(()=>{E&&!E.includes("done")&&D(p=>[...p,"done"])},[]);const[Vf,dl]=o.useState(!1),[uo,Vs]=o.useState(!1),[ni,Ni]=o.useState(!1),ul=o.useRef(!1),[du,Zl]=o.useState(!1),[Jl,Gf]=o.useState(!1),[Fp,Kf]=o.useState(""),[Ey,qf]=o.useState(!1),[Ny,Up]=o.useState(!1),[Dy,Xl]=o.useState("members"),[uu,fu]=o.useState(null),[zp,mu]=o.useState("unknown"),[My,Yf]=o.useState(!1),[Ly,Ql]=o.useState(null),[Oy,fo]=o.useState(null),[Zf,Hp]=o.useState(!1),[Mc,By]=o.useState([]),[Wy,Jf]=o.useState(null),[js,fl]=o.useState(""),[ml,Fo]=o.useState("member"),[pu,$y]=o.useState("read-write"),[hu,pl]=o.useState(!1),[Fy,Xf]=o.useState(null),[Gs,Uy]=o.useState(0),[Vp,Gp]=o.useState(!1),[Kp,zy]=o.useState([]),[Hy,Vy]=o.useState(!1),[Gy,Ky]=o.useState(1),[Na,Qf]=o.useState(null),[qp,Yp]=o.useState(!1),[Zp,em]=o.useState(null),[Jp,gu]=o.useState(!1),[qy,Zi]=o.useState(null),[yu,ed]=o.useState(!1),[Yy,hl]=o.useState(null),[rs,ha]=o.useState("month"),[ku,Xp]=o.useState(""),[tm,gl]=o.useState(""),[ns,yl]=o.useState(null),[Qp,eh]=o.useState(!1),[Zy,rm]=o.useState(!1),[th,Uo]=o.useState(null),[nm,vn]=o.useState(null),Lc=25,td=o.useRef(null),Es=o.useRef(null),Oc=o.useRef({billing:!1,teamManagement:!1}),ai=o.useRef(null);o.useEffect(()=>{ai.current=Na},[Na]),o.useEffect(()=>{if(!uo)return;const p=I=>{td.current?.contains(I.target)||Vs(!1)};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[uo]);const rd=hr==="cloud"&&Jt&&Ut,Ji=Ut&&(hr==="cloud"||Xt),vu=hr==="local"&&Ut,Bc=fn?.phase==="ready"&&fn.snapshot?.state.ownershipMode==="server"?fn.snapshot.workspace?.runner?.checkpoint?.checkpoint.syncEnabled:null,mo=typeof Bc=="boolean"?Bc:sn,Di=fn?.activePriorityCommandType==="DisableSync"?"disabling":fn?.activeCommandType==="EnableSync"?"enabling":null,{showSyncStatusModal:rh,showSyncEnableWarning:kl,workspaceSyncError:nh,syncControlBusy:Jy,syncControlIntent:nd,openSyncStatusModal:am,closeSyncStatusModal:wu,handleWorkspaceSyncToggle:Xy,cancelSyncEnableWarning:Qy,confirmSyncEnableWarning:Xi}=Sre({canManageWorkspaceSync:vu,workspaceCloudSyncEnabled:mo,persistedToggleIntent:Di,saveWorkspaceCloudSyncSettings:hn}),Mi=o.useMemo(()=>{const p=Qr.find(Se=>Se.id===Tt),I=String(p?.name||"").trim();if(I)return I;if(hr==="local"){const Se=String(Qn||"").trim();if(Se)return Se}return String(Tt||"").trim()||"Workspace"},[Qr,Tt,Qn,hr]),ad=yT(Ji,uu),vl=yre(Ji,uu,zp),bu=String(Ca||"").trim(),Ks=String(yn||"").trim(),Qi=String(Yn||"").trim(),wl=bu||Qi,ah=wl.length>0,sh=Qi.length>0,oh=o.useMemo(()=>eZ({workspaceName:Mi,workspaceId:Tt,accountLabel:wl||Qi,runtimeMode:hr}),[Qi,wl,Tt,Mi,hr]),ih=(wl||Qi||"").trim(),sd=Ut&&Vr&&ih.length>0?ih.charAt(0).toUpperCase():"",sm=Ks,ch=Ut&&Vr&&sm.length>0,Su=String(tm||Ks).trim(),Au=String(Na?.planName||Na?.planId||"").trim(),tk=Au.length>0,ec=String(Na?.workspaceId||Fn||Tt||"").trim(),lh=hr==="cloud"?"CLOUD":"LOCAL",od=e.config?.apiBaseUrl||"",dh=o.useMemo(()=>Ere(e.config?.cloudEnvironment,[String(e.config?.cloudBaseUrl||""),String(e.config?.cloudAuthBaseUrl||""),String(e.config?.apiBaseUrl||""),String(e.config?.baseUrl||"")]),[e.config?.cloudEnvironment,e.config?.cloudBaseUrl,e.config?.cloudAuthBaseUrl,e.config?.apiBaseUrl,e.config?.baseUrl]),Cu=Xt&&!Vr;o.useEffect(()=>{ni&&!ul.current&&(Xp(bu),gl(Ks),yl(null),Uo(null),vn(null)),ul.current=ni},[Ks,bu,ni]);const tc=o.useCallback(async p=>{const I=String(p||"").trim();if(!(!I||!Xt))try{await fetch(Zr("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:I})})}catch{}},[Xt,Zr]),rk=o.useCallback(()=>{const p=ns;Ni(!1),Zl(!1),Uo(null),vn(null),yl(null),gl(Ks),p&&tc(p)},[Ks,tc,ns]),om=o.useCallback(async p=>{if(!p||!Xt)return!1;if(!p.type.startsWith("image/"))return Uo("Profile photo must be an image file."),vn(null),!1;eh(!0),Uo(null),vn(null);try{const I=await tX(p,{maxBytes:Pre});if(I.exceededLimit){const wn=p.type==="image/gif"?"Animated GIF profile photos must be 5 MB or smaller.":"Profile photo must be 5 MB or smaller.";throw new Error(wn)}const W=I.file,Se=await fetch(Zr("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:W.name,mimeType:W.type,size:W.size})}),We=await Se.json().catch(()=>({}));if(!Se.ok||!We?.success||typeof We?.draftId!="string"||typeof We?.relativePath!="string")throw new Error(We?.error||"Failed to start avatar upload.");if(!(await fetch(Zr("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":W.type||"application/octet-stream","x-taskforce-avatar-draft-id":We.draftId},credentials:"include",body:W})).ok)throw new Error("Failed to upload avatar.");const Mr=await fetch(Zr("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:We.draftId,relativePath:We.relativePath})}),Gr=await Mr.json().catch(()=>({}));if(!Mr.ok||!Gr?.success||typeof Gr?.draftId!="string")throw new Error(Gr?.error||"Failed to finalize avatar upload.");const za=ns;return yl(Gr.draftId),gl(typeof Gr?.avatarUrl=="string"?Gr.avatarUrl:""),vn(null),za&&za!==Gr.draftId&&tc(za),!0}catch(I){return Uo(I instanceof Error?I.message:"Failed to upload profile photo."),!1}finally{eh(!1)}},[Xt,tc,ns,Zr]),id=o.useCallback(()=>{if(!ns)return;const p=ns;yl(null),gl(Ks),vn(null),Uo(null),tc(p)},[Ks,tc,ns]),Wc=o.useCallback(()=>{const p=ns;yl(null),gl(""),vn(Ks?"Profile photo will be removed when you save.":null),Uo(null),p&&tc(p)},[Ks,tc,ns]),Iu=o.useCallback(async()=>{const p=ku.trim();if(!p){Uo("Display name is required."),vn(null);return}rm(!0),Uo(null),vn(null);const I=await Jn({displayName:p,avatarDraftId:ns,clearAvatar:!ns&&!tm&&!!Ks});if(!I.success){Uo(I.error||"Failed to update profile."),rm(!1);return}vn("Profile updated."),yl(null),gl(""),rm(!1),Zl(!1)},[Ks,ns,tm,ku,Jn]),qs=o.useCallback(()=>{const p={},I=String(ec||"").trim();I&&(p["x-taskforce-workspace-id"]=I);const W=uu||Rr;return(W==="owner"||W==="admin"||W==="member"||W==="read-only")&&(p["x-taskforce-workspace-role"]=W),p},[Rr,ec,uu]),uh=o.useCallback(p=>{const I=Ut,W=p==="account_menu"&&Ji;Es.current=Em(),Oc.current={billing:I,teamManagement:W},Cr("account_surface_opened",{surface:p,expectsBilling:I,expectsTeamManagement:W}),!I&&!W&&(Cr("account_surface_ready",{surface:p,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Es.current=null)},[Ji,Ut]),cd=o.useCallback(p=>{const I=Oc.current;if(I[p]=!1,I.billing||I.teamManagement)return;const W=Es.current;W!==null&&(Cr("account_surface_ready",{surface:ni?"account_settings":uo?"account_menu":"closed",durationMs:Math.round(Em()-W),teamManagementVisible:vl,billingPlanId:String(Na?.planId||"").trim()||null}),Es.current=null)},[Na?.planId,vl,uo,ni]),po=o.useCallback(async p=>{const I=Zr(xA);if(!Ut)return Qf(null),em(null),fu(null),mu("unknown"),Yf(!1),Ql(null),RA(I,{identityKey:Ur}),cd("billing"),cd("teamManagement"),null;const W=Em();Yp(!0),em(null),Yf(Ji),Ql(null);try{const Se=await UJ(I,{identityKey:Ur,force:p?.force===!0}),We=Se?.workspaceRole==="owner"||Se?.workspaceRole==="admin"||Se?.workspaceRole==="member"||Se?.workspaceRole==="read-only"?Se.workspaceRole:null,Gt=Se?.teamPlanMode==="team"||Se?.teamPlanMode==="personal"?Se.teamPlanMode:"unknown";return Qf(Se),fu(We),mu(Gt),Ql(null),Cr("account_profile_summary_resolved",{durationMs:Math.round(Em()-W),planId:String(Se?.planId||"").trim()||null,gate:String(Se?.gate||"").trim()||null,teamManagementAllowed:Se?.teamManagementAllowed===!0}),Se}catch(Se){const We=Se instanceof Error?Se.message:"Failed to load account summary.",Gt=!!ai.current;return em(We),Gt?Ql(null):(fu(null),mu("unknown"),Ql(We)),Cr("account_profile_summary_failed",{durationMs:Math.round(Em()-W),error:We,preservedSummary:Gt}),ai.current}finally{Yp(!1),Yf(!1),cd("billing"),cd("teamManagement")}},[Ur,Ji,Ut,cd,Zr]),nk=o.useCallback(p=>{Qf(p);const I=p?.workspaceRole==="owner"||p?.workspaceRole==="admin"||p?.workspaceRole==="member"||p?.workspaceRole==="read-only"?p.workspaceRole:null,W=p?.teamPlanMode==="team"||p?.teamPlanMode==="personal"?p.teamPlanMode:"unknown";fu(I),mu(W)},[]),im=o.useMemo(()=>Yv(Na).allowReturnToApp,[Na]),fh=o.useCallback(async()=>{const p=new URLSearchParams;p.set("screen","plans"),p.set("interval",rs);const I=String(Na?.planId||"").trim(),W=String(Na?.planVersionId||"").trim();I&&p.set("planId",I),W&&p.set("planVersionId",W),n(`/?${p.toString()}`)},[Na?.planId,Na?.planVersionId,rs,n]),mh=o.useCallback(async()=>{Zi(null),hl(null),gu(!0);try{const p=await fetch(Zr("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),I=await p.json().catch(()=>({}));if(!p.ok){Zi(String(I?.error||"Failed to create portal session."));return}const W=String(I?.url||"").trim();if(!W){Zi("Portal session did not return a redirect URL.");return}window.location.assign(W)}catch{Zi("Failed to open billing portal.")}finally{gu(!1)}},[Zr]),ak=o.useCallback(async()=>{Zi(null),hl(null),gu(!0);try{const p=String(Na?.planVersionId||"").trim();if(!p){Zi("No active plan version is linked to this account.");return}const I=await fetch(Zr("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:p,interval:rs})}),W=await I.json().catch(()=>({}));if(!I.ok){Zi(String(W?.error||"Failed to update subscription interval."));return}hl("Subscription updated."),RA(Zr(xA),{identityKey:Ur}),await po()}catch{Zi("Failed to update subscription interval.")}finally{gu(!1)}},[Na?.planVersionId,Ur,rs,po,Zr]);o.useEffect(()=>{!Ut||!Vr||po()},[Vr,Ut,po]),o.useEffect(()=>{!ni&&!uo||po()},[po,uo,ni]);const $c=o.useCallback(async()=>{if(ad){Hp(!0),fo(null);try{const p=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:qs()}),I=await p.json().catch(()=>({}));if(!p.ok){fo(I?.error||"Failed to load workspace users.");return}const W=Array.isArray(I?.users)?I.users:[],Se={owner:0,admin:1,member:2,"read-only":3},We=W.map(Gt=>({userId:String(Gt?.userId||""),email:String(Gt?.email||""),displayName:typeof Gt?.displayName=="string"?Gt.displayName:null,role:Gt?.role==="owner"||Gt?.role==="admin"||Gt?.role==="member"||Gt?.role==="read-only"?Gt.role:"member",permissionMode:Gt?.permissionMode==="read-only"?"read-only":"read-write",status:String(Gt?.status||"active"),disabled:Gt?.disabled===!0}));We.sort((Gt,Mr)=>{const Gr=(Se[Gt.role]??99)-(Se[Mr.role]??99);return Gr!==0?Gr:(Gt.displayName||Gt.email).localeCompare(Mr.displayName||Mr.email,void 0,{sensitivity:"base"})}),By(We)}catch{fo("Failed to load workspace users.")}finally{Hp(!1)}}},[ad,qs]),Fc=o.useCallback(async p=>{if(!ad)return;const I=Math.max(0,Math.floor(p));Gp(!0),fo(null);try{const W=I*Lc,Se=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${Lc}&offset=${W}`,{method:"GET",credentials:"include",headers:qs()}),We=await Se.json().catch(()=>({}));if(!Se.ok){fo(We?.error||"Failed to load workspace audit log.");return}const Gt=Array.isArray(We?.events)?We.events:[];zy(Gt.map(Gr=>({id:String(Gr?.id||""),action:String(Gr?.action||""),actorUserId:String(Gr?.actorUserId||""),actorRole:String(Gr?.actorRole||""),createdAt:String(Gr?.createdAt||Gr?.ts||"")}))),Uy(I);const Mr=Math.max(1,Number(We?.pages||1));Ky(Mr),Vy(I+1<Mr)}catch{fo("Failed to load workspace audit log.")}finally{Gp(!1)}},[ad,qs]),_u=o.useCallback(async()=>{await Promise.all([$c(),Fc(Gs)])},[$c,Fc,Gs]),cm=o.useCallback((p="login")=>{const I=`${s.pathname}${s.search}${s.hash}`,W=!I||I==="/login"||!I.startsWith("/")?"/":I;Vs(!1),Ni(!1),wu(),n(`/login?mode=${p}&next=${encodeURIComponent(W)}`)},[wu,s.hash,s.pathname,s.search,n]),ld=o.useCallback(p=>{Vs(!1),qf(!1);const I=new URLSearchParams({step:"workspace"});p?.intent==="create-workspace"&&I.set("intent","create-workspace"),n(`/setup?${I.toString()}`,{replace:!0})},[n]),Tu=o.useCallback(async()=>{if(yu)return;if(ed(!0),!Ut){try{d()}finally{ed(!1)}return}const p=ai.current;if(p&&!Yv(p).allowReturnToApp){ed(!1);return}d(),(async()=>{try{const I=await e.continueAfterCommercialOnboarding();if(!I.success){dt(I.error||"Unable to finish onboarding.","error"),I.destination==="login"&&n("/login",{replace:!0});return}I.destination==="setup"&&ld()}finally{ed(!1)}})()},[ai,d,Ut,n,ld,yu,e,dt]),lm=o.useCallback(()=>{if(l){Tu();return}ta(()=>{Ti(),v("tasks"),wa(!1),Rt(null),nn(null),kn(null),Ua(!1),m==="add"&&_(),f("tasks"),(s.pathname!=="/"||s.search)&&n("/")})},[m,Ti,ta,Tu,l,s.pathname,s.search,n,_,f,v]),bl=o.useCallback(p=>{bp(p),ir("open"),Vl(!1),v("tasks"),l&&d()},[d,l,v,Vl,ir,bp]),xu=o.useCallback(async p=>{if(!(!p||Jl)){if(gs&&!_o.current){Io(()=>()=>{xu(p)});return}Kf(""),Gf(!0);try{const I=await on(p);if(!I.success){if(I.code==="WORKSPACE_NOT_FOUND"||I.code==="WORKSPACE_ID_REQUIRED"){ld();return}Kf(I.error||"Failed to switch workspace.");return}await or(!0),Vs(!1)}finally{Gf(!1)}}},[on,Jl,or,ld,gs]),dm=o.useCallback(async()=>{Vs(!1),Up(!0),Xl("members"),((await po())?.teamManagementAllowed??vl)&&(await $c(),await Fc(0))},[vl,po,Fc,$c]),Uc=o.useCallback(async(p,I)=>{fo(null),Jf(p);try{const W=await I(),Se=await W.json().catch(()=>({}));if(!W.ok){fo(Se?.error||"Team management action failed.");return}await _u()}catch{fo("Team management action failed.")}finally{Jf(null)}},[_u]),um=o.useCallback(async()=>{const p=js.trim();if(p){pl(!0),fo(null),Xf(null);try{const I=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,email:p,role:ml,permissionMode:ml==="member"?pu:"read-write"})}),W=await I.json().catch(()=>({}));if(!I.ok){fo(W?.error||"Failed to send invite.");return}fl(""),W?.inviteEmailSent===!1?Xf(`Invite created, but email delivery failed${W?.inviteEmailError?`: ${String(W.inviteEmailError)}`:"."}`):Xf("Invite sent."),await _u()}catch{fo("Failed to send invite.")}finally{pl(!1)}}},[Tt,_u,qs,js,pu,ml]),zc=o.useMemo(()=>$r.trim().length>0,[$r]),fm=o.useMemo(()=>Mc.filter(p=>p.status==="invited"),[Mc]),Ru=o.useMemo(()=>{const p=Me.length!==g.length,I=pt.length!==tt.length,W=xt.length!==It.length,Se=E.length!==fc.length,We=Nt.length!==Ht.length,Gt=es!==null,Mr=Cn.length>0,Gr=Hs.length>0;return p||I||W||Se||We||Gt||Mr||Gr},[g.length,tt.length,Ht.length,Nt.length,Me.length,xt.length,E.length,pt.length,It.length,Cn,Hs,es]),ph=_r,Hc=o.useMemo(()=>Zte(ph),[ph]);o.useLayoutEffect(()=>{if(!co&&m!=="add")return;const p=()=>{const Se=gc.current,We=Se?Math.ceil(Se.getBoundingClientRect().bottom):fv;ys(Math.max(fv,We))};p(),window.addEventListener("resize",p);const I=gc.current,W=typeof ResizeObserver<"u"?new ResizeObserver(p):null;return W&&I&&W.observe(I),()=>{window.removeEventListener("resize",p),W?.disconnect()}},[m,co]),o.useEffect(()=>{zl||$l(!1)},[zl]);const hh=Hc.moduleId==="tasks"&&Ru,gh=zc||Ru,yh=Ft==="archived"?ks.length:Ft==="deleted"?Wo.length:j.length,sk=Ft==="archived"?Gl.length:Ft==="deleted"?su.length:xc.length,ok=gh?`${sk}/${yh}`:`${yh}`,Pu=gh?`${Ft.charAt(0).toUpperCase()+Ft.slice(1)} tasks matching current filters`:Ft==="deleted"?"Trash tasks — automatically deleted after 90 days":`${Ft.charAt(0).toUpperCase()+Ft.slice(1)} tasks`,ik=hr==="local"&&Ut,Li=o.useCallback(p=>{if(!p)return"Never";const I=new Date(p);return Number.isNaN(I.getTime())?"Never":I.toLocaleString()},[]),kh=o.useMemo(()=>Li(Wt),[Li,Wt]);o.useMemo(()=>Li(ue),[Li,ue]),o.useMemo(()=>Li(ot),[Li,ot]);const vh=nh||nr||Pt||"None",si=ln(),dd=fn?.snapshot?.permits.recoveryObligations||0,ck=o.useMemo(()=>tJ({runtimeMode:hr,isAuthenticated:Ut,workspaceSyncStatus:Ir,workspaceCloudSyncEnabled:sn,workspaceSyncSummary:Wr,workspaceSyncRecommendedAction:Yr,workspaceSyncError:vh,coordinatorRecoveryObligations:dd,pushBlockedReason:si.pushBlockedReason||null,pullBlockedReason:si.pullBlockedReason||null,retryBlockedReason:si.retryBlockedReason||null}),[hr,Ut,Ir,sn,Wr,Yr,vh,dd,si.pushBlockedReason,si.pullBlockedReason,si.retryBlockedReason]),Da=o.useMemo(()=>QZ(fn),[fn]),ho=Da?.header||ck,ud=Da?Da.pendingLocalChanges:Ln,lk=Da?Da.lastPullAt:ue,dk=Da?Da.lastPushAt:ot,uk=Da?Da.lastSyncedAt:Wt,wh=Li(lk),bh=Li(dk),Sh=Li(uk),Ah=Da?Da.busy:Zn,mm=fn?.snapshot?.state.ownershipMode||null,ju=mm==="server"||mm==="browser-gateway"?mm:null,[C,ae]=o.useState(!1),ce=fn?.phase!=="ready"||!fn.snapshot||fn.snapshot.state.transitionState!=="idle"||fn.snapshot.permits.active>0||dd>0,X=o.useCallback(async()=>{if(!(!ju||C)){ae(!0);try{const p=ju==="server"?"browser-gateway":"server";await Rn(p),dt(p==="server"?"The local Taskforce server now owns background synchronization.":"This browser now owns background synchronization.","success")}catch(p){dt(p instanceof Error&&p.message.trim()?p.message:"Sync ownership could not be transferred.","error")}finally{ae(!1)}}},[ju,C,dt,Rn]),Be=ho.lastError,[qe,rt]=o.useState(ho.status),Kt=o.useMemo(()=>DJ(si,fn?.phase==="ready"&&fn.snapshot?.state.ownershipMode==="server"?{recoveryObligations:dd,outbox:fn.snapshot.workspace?.outbox||null}:null),[dd,fn,si]),mr=o.useMemo(()=>Da?.diagnostics||LJ(Kt),[Da,Kt]),{syncRecentEvents:Tr,syncRecentEventsLoading:Or,syncRecentEventsError:Br,syncEventsListRef:Kn,loadRecentSyncEvents:Ns}=kre({isOpen:rh,workspaceId:Tt,refreshKeys:[ot,ue,_t,Ir]}),go=ho.actionable&&Ir==="syncing"&&Sn==="active"&&ud===0;o.useEffect(()=>{if(!go){rt(ho.status);return}const p=window.setTimeout(()=>{rt(ho.status)},1200);return()=>window.clearTimeout(p)},[ho.status,go]);const Ys=o.useMemo(()=>OJ({syncRecentEvents:Tr,syncRecentEventsError:Br,syncRecentEventsLoading:Or}),[Tr,Br,Or]),pm=o.useMemo(()=>BJ(Tr),[Tr]),Ch=o.useMemo(()=>WJ(Tr),[Tr]),Vc=o.useMemo(()=>V_(qe),[qe]),Sl=o.useMemo(()=>MJ(qe,mo),[mo,qe]),{workspaceSyncRepairBusy:fk,workspaceSyncRepairQueued:vT,workspaceSyncCopied:wT,handleCopySyncDetails:bT,handleQueueOrRunRepairSync:ST}=bre({currentWorkspaceId:Tt,syncStatusLabel:Vc.label,workspaceSyncSummary:ho.summary,workspaceSyncRecommendedAction:ho.recommendedAction,formattedLastSyncTime:Sh,formattedLastPullTime:wh,formattedLastPushTime:bh,workspaceSyncDiagnostics:Kt,workspaceSyncPendingChanges:ud,syncLastError:Be,workspaceSyncPhase:Sn,referenceMismatchCount:pm,syncRecentEvents:Tr,loadRecentSyncEvents:Ns,pushNotice:dt,resetWorkspaceSyncCursorAndPull:fr,workspaceSyncBusy:Ah,durableRepairQueueAvailable:ju==="server"}),AT=Da?Da.repairBusy:fk,CT=o.useMemo(()=>Da?.stage||G_(Sn,fk,Zn),[Da,Zn,Sn,fk]),ab=o.useMemo(()=>Fm(Ar)||new Date,[Ar]),fd=o.useMemo(()=>aw(ab,er),[ab,er]),Gc=o.useMemo(()=>{const p={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return VA.forEach(I=>{const W=fre(I,er);p[I]=Rd(gT(fd,W))}),p},[fd,er]),sb=o.useCallback(p=>{const I=Fm(p);if(!I)return Gc.mon;const W=I.getDay();return Gc[W===1?"mon":W===2?"tue":W===3?"wed":W===4?"thu":W===5?"fri":W===6?_n?"sat":"fri":_n?"sun":"fri"]||Gc.mon},[Gc,_n]),IT=o.useCallback(async()=>{if(!(Nc||cl.length===0)){Dc(!0);try{for(const p of cl){const I=p.scheduledDate||p.dueDate||Jr,W=sb(I);await z(p.id,{scheduledDate:W,scheduledWeekKey:mre(W),orderInDay:null})}await or(!0)}finally{Dc(!1)}}},[Nc,cl,Jr,sb,z,or]),_T=o.useCallback(async()=>{if(!(Nc||Ec.length===0)){Dc(!0);try{for(const p of Ec)await z(p.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await or(!0)}finally{Dc(!1)}}},[Nc,Ec,z,or]),TT=o.useMemo(()=>Yg(fd,{month:"short",day:"numeric",year:"numeric"},Gn),[fd,Gn]),ob=o.useMemo(()=>{const W=(_n?er==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:VA:["mon","tue","wed","thu","fri"]).map(We=>{const Gt=Fm(Gc[We])||fd,Mr=Gc[We],Gr=We==="sat"||We==="sun";return{value:We,label:`${ure[We]} ${Yg(Gt,{month:"short",day:"numeric"},Gn)}`,color:Gr?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Mr,isPast:Mr<Jr,isSelected:Mr===Ar,isWeekend:Gr}}),Se=Bp.length>0;return[...ao?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...Se?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...W]},[_n,ao,Gc,fd,Bp.length,Jr,Ar,er,Gn]),ib=o.useMemo(()=>{switch(h){case"category":return g;case"type":return(tt||[]).map(p=>({...p,icon:p.icon||Fg[p.value]?.icon,color:p.color||Fg[p.value]?.color}));case"priority":return It;case"complexity":return[{value:1,label:"Tiny",icon:"Gauge",color:"#10b981"},{value:2,label:"Low",icon:"Gauge",color:"#14b8a6"},{value:3,label:"Medium",icon:"Gauge",color:"#3b82f6"},{value:4,label:"High",icon:"Gauge",color:"#8b5cf6"},{value:5,label:"Epic",icon:"Gauge",color:"#d946ef"}];case"assignee":return Ht.map(p=>({value:p.value,label:p.label,icon:p.icon==="HelpCircle"?"Circle":p.icon,color:p.color}));case"status":return[...fc.filter(p=>p.value!=="done"&&p.value!=="cancelled"),{value:"completed",label:"Completed",icon:Vo("done").icon,color:Vo("done").color}];case"schedule":return ob;default:return g}},[h,g,tt,It,Ht,ob]),xT=a.jsxs("div",{className:gr.accountMenuWrap,ref:td,children:[a.jsx("button",{className:`tf-control-icon ${gr.avatarBtn}`,onClick:()=>{Vs(p=>{const I=!p;return I?uh("account_menu"):(Es.current=null,Oc.current={billing:!1,teamManagement:!1}),I})},title:Ut?"Account":"Account (Not signed in)","aria-label":Ut?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":uo,children:a.jsx("span",{className:gr.avatarBadge,"aria-hidden":"true",children:ch?a.jsx("img",{src:sm,alt:"",className:gr.avatarImage}):sd||a.jsx(tf,{size:14,className:gr.avatarIcon})})}),uo&&a.jsxs("div",{className:gr.accountMenu,role:"menu","aria-label":"Account menu",children:[a.jsxs("div",{className:gr.accountMenuSection,children:[a.jsx("div",{className:gr.accountMenuSectionLabel,children:"Account"}),a.jsx("div",{className:gr.accountMenuHint,children:Cu?"Checking sign-in status...":Ut?a.jsx(a.Fragment,{children:ah?a.jsx(a.Fragment,{children:a.jsxs("span",{className:gr.accountIdentityBlock,children:[a.jsx("span",{className:gr.accountIdentityEmail,children:wl}),sh&&bu&&a.jsxs("span",{className:gr.accountIdentityMetaLine,children:[a.jsx("span",{className:gr.accountIdentityMetaLabel,children:"Email"}),a.jsx("span",{className:gr.accountIdentityMetaValue,children:Qi})]}),qp?a.jsxs("span",{className:gr.accountIdentityMetaLine,children:[a.jsx("span",{className:gr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:gr.accountIdentityMetaValue,children:"Loading…"})]}):tk?a.jsxs("button",{"aria-label":`Subscription ${Au}`,className:`${gr.accountIdentityMetaLine} ${gr.accountIdentityMetaAction}`,onClick:()=>{Vs(!1),c()},type:"button",children:[a.jsx("span",{className:gr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:gr.accountIdentityMetaValue,children:Au})]}):Zp?a.jsxs("span",{className:gr.accountIdentityMetaLine,children:[a.jsx("span",{className:gr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:gr.accountIdentityMetaValue,children:"Unavailable"})]}):null,a.jsxs("span",{className:gr.accountIdentityMetaLine,children:[a.jsx("span",{className:gr.accountIdentityMetaLabel,children:"Runtime"}),a.jsx("span",{className:gr.accountIdentityMetaValue,children:lh})]}),a.jsxs("span",{className:gr.accountIdentityMetaLine,children:[a.jsx("span",{className:gr.accountIdentityMetaLabel,children:"Environment"}),a.jsx("span",{className:gr.accountIdentityMetaValue,children:dh})]})]})}):"Signed in"}):"Not signed in"})]}),rd&&a.jsxs("div",{className:gr.accountMenuSection,children:[a.jsx("div",{className:gr.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),Qr.length===0&&a.jsx("div",{className:gr.accountMenuHint,children:"No workspaces found for this account yet."}),Qr.map(p=>a.jsxs("button",{className:`${gr.accountMenuItem} ${p.id===Tt?gr.accountMenuItemActive:""}`,onClick:()=>xu(p.id),role:"menuitem",disabled:Jl||p.id===Tt,title:p.description||p.name,children:[a.jsx(cc,{size:15}),a.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[a.jsx("span",{children:p.name}),a.jsx("span",{className:gr.accountMenuMeta,children:p.role})]})]},p.id)),a.jsxs("button",{className:gr.accountMenuItem,onClick:()=>{Kf(""),qf(!0),Vs(!1)},role:"menuitem",disabled:Jl,children:[a.jsx(ui,{size:15}),"Create Workspace"]}),Fp&&a.jsx("div",{className:gr.accountMenuError,children:Fp})]}),My?a.jsx("div",{className:gr.accountMenuHint,children:"Resolving team management access..."}):vl?a.jsxs("button",{className:gr.accountMenuItem,onClick:()=>{dm()},role:"menuitem",children:[a.jsx(pg,{size:15}),"Team Management"]}):Ly?a.jsx("div",{className:gr.accountMenuHint,children:"Team Management unavailable right now."}):null,Ut&&a.jsxs("button",{className:gr.accountMenuItem,onClick:()=>{Vs(!1),uh("account_settings"),Ni(!0)},role:"menuitem",children:[a.jsx(Qm,{size:15}),"Account Settings"]}),a.jsxs("button",{className:gr.accountMenuItem,onClick:()=>{Vs(!1),dl(!0)},role:"menuitem",children:[a.jsx(Md,{size:15}),"Help & Support"]}),hr==="local"&&!Ut&&!Cu&&a.jsxs("button",{className:gr.accountMenuItem,onClick:()=>{cm("login")},role:"menuitem",children:[a.jsx(tf,{size:15}),"Sign In / Register"]}),Ut&&a.jsxs("button",{className:gr.accountMenuItem,onClick:async()=>{Vs(!1),await Er(),hr==="cloud"&&n("/login",{replace:!0})},role:"menuitem",children:[a.jsx(q0,{size:15}),"Sign Out"]})]})]}),cb=o.useCallback(()=>{b(p=>p==="show"?"collapse":p==="collapse"?"hide":"show")},[b]),lb=o.useCallback(()=>{_(),v("tasks"),f("add")},[_,f,v]),RT=o.useCallback(p=>{const I=e.workstreams.find(W=>W.id===p);_(),st(Go(I)||p),v("tasks"),f("add")},[e.workstreams,_,f,v,st]),db=o.useCallback(p=>{ts.current=!1,Ii(!1),kn(p),To(!1),la(null),ra(!1),wc(""),Ci(""),jo(""),nl(null),Eo(null);const I=p.entityType==="workstream"&&Cn&&zt.initiativeById.get(Cn)||null;ei(I?ws(I):""),nn(null)},[zt.initiativeById,Cn]),ub=o.useCallback((p,I)=>{ts.current=!1,Ii(!1),la(p),ra(!1),wc(""),Ci(""),jo(""),nl(null),Eo(null);const W=p.entityType==="workstream"&&((I?zt.initiativeById.get(I):null)||Cn&&zt.initiativeById.get(Cn))||null;ei(W?ws(W):""),nn(null)},[zt.initiativeById,Cn]),mk=o.useCallback(()=>{ts.current=!1,Ii(!1),kn(null),wc(""),Ci(""),jo(""),nl(null),Eo(null),ei("")},[]),pk=o.useCallback(()=>{ts.current=!1,Ii(!1),la(null),wc(""),Ci(""),jo(""),nl(null),Eo(null),ei("")},[]),hk=o.useMemo(()=>{const p=Tn||Dt;if(!p||p.mode==="create")return!0;const I={title:Po,description:bc};if(p.entityType==="initiative"){const We=zt.allInitiativeById.get(p.targetId);return!We||hT(We,I)}const W=zt.allWorkstreamById.get(p.targetId);if(!W)return!0;const Se=zA(zt.allInitiatives,null,io);return Se.invalid||Gte(W,{...I,initiativeId:Se.initiativeId})},[bc,io,Po,Dt,Tn,zt.allInitiativeById,zt.allInitiatives,zt.allWorkstreamById]),PT=o.useCallback(async()=>{const p=Tn||Dt;if(!p||ts.current)return;const I=Po.trim();if(!I||p.mode==="edit"&&!hk)return;ts.current=!0,Ii(!0);const W=!!Tn,Se=Ll.trim()||null;try{if(p.entityType==="initiative")if(p.mode==="edit")await e.updateInitiative(p.targetId,{title:I,description:bc.trim()||null}),Rt({type:"initiative",id:p.targetId}),dt("Initiative updated","success");else{const We=await e.createInitiative({title:I,description:bc.trim()||null,ownerId:Se,...Sc||Ac?{icon:Sc,color:Ac}:{}});Rt({type:"initiative",id:We.id}),nn(null),dt("Initiative created","success")}else{const We=zA(zt.allInitiatives,p.mode==="create"?p.initiativeId:null,io);if(We.invalid){dt("Initiative not found by that reference.","error");return}const Gt={title:I,description:bc.trim()||null,initiativeId:We.initiativeId,...p.mode==="create"?{ownerId:Se}:{}};if(p.mode==="edit")await e.updateWorkstream(p.targetId,Gt),W?nn(p.targetId):(Rt({type:"workstream",id:p.targetId}),nn(null)),dt("Workstream updated","success");else{const Mr=await e.createWorkstream({...Gt,...Sc||Ac?{icon:Sc,color:Ac}:{}});W?nn(Mr.id):(Rt({type:"workstream",id:Mr.id}),nn(null)),dt("Workstream created","success")}}W?pk():mk()}catch(We){dt(We instanceof Error?We.message:"Failed to save planning item.","error")}finally{ts.current=!1,Ii(!1)}},[mk,pk,bc,io,Sc,Ac,Ll,Po,Dt,hk,Tn,zt.allInitiatives,e,dt]),jT=o.useCallback(p=>{Vt(I=>{const W=new Set(I);return W.has(p)?W.delete(p):W.add(p),W})},[]),ET=o.useCallback(p=>{Qo(I=>I===p?"":p),F("")},[]),NT=o.useCallback((p,I)=>{F(W=>{const Se=W===p?"":p;return Qo(Se&&I||""),Se})},[]),hm=o.useCallback(p=>{kn(null),la(null),To(!1),ra(!1),Rt(p?{type:"initiative",id:p}:null),nn(null)},[]),gm=o.useCallback(p=>{kn(null),la(null),To(!1),ra(!1),Rt(p?{type:"workstream",id:p}:null),nn(null)},[]),DT=o.useCallback(p=>{la(null),ra(!1),nn(p)},[]),fb=o.useCallback(p=>{if(p.kind==="initiative"||p.kind==="workstream"){const Se=p.kind==="initiative"?e.initiatives.find(We=>We.referenceNumber===p.referenceNumber):e.workstreams.find(We=>We.referenceNumber===p.referenceNumber);if(!Se){dt(`${p.token} could not be found.`,"error");return}Bo(()=>{v("planning"),wa(!0),p.kind==="initiative"?hm(Se.id):gm(Se.id)});return}const I=String(Tt||"default").trim()||"default",W=Se=>{ip(Se,{ownerType:"task",ownerId:H,ownerReferenceLabel:Ss(mn),workspaceId:I})};l_(p,{workspaceId:I,headers:ti}).then(W).catch(()=>{dt(`${p.token} could not be opened.`,"error")})},[mn,Tt,H,Bo,hm,gm,e.initiatives,e.workstreams,dt,v,ti]),mb=o.useMemo(()=>({...sr,entityReferences:{resolve:vC,activate:fb}}),[fb,sr]);o.useEffect(()=>{const p=String(i.get(Wi.initiative)||"").trim(),I=String(i.get(Wi.workstream)||"").trim(),W=String(i.get(Wi.document)||"").trim(),Se=String(i.get(Wi.image)||"").trim(),We=p?`initiative:${p}`:I?`workstream:${I}`:W?`document:${W}`:Se?`image:${Se}`:"";if(!We||sl.current===We)return;if(p||I){const Gr=p?e.initiatives.find(za=>za.id===p):e.workstreams.find(za=>za.id===I);if(!Gr)return;sl.current=We,Bo(()=>{v("planning"),wa(!0),p?hm(Gr.id):gm(Gr.id)});return}if(W){if(!xi)return;sl.current=We,Bo(()=>{Hd(null),Vd(W),v("docs")});return}if(!_c)return;sl.current=We;const Gt=String(Tt||"default").trim()||"default",Mr=new URLSearchParams({workspaceId:Gt});fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(Se)}?${Mr.toString()}`,{credentials:"include",headers:ti}).then(async Gr=>{if(!Gr.ok)throw new Error("Image not found");const za=await Gr.json();if(!za.target?.assetId||!za.target.path)throw new Error("Image target is unavailable");Bo(()=>{const wn=za.target;Do.current=wn,Mo.current=null,Vi(wn),al(null),Bl(Al=>Al+1),v("annotate")})}).catch(()=>{dt(`Image ${Se} could not be opened.`,"error")})},[_c,Tt,xi,Bo,hm,gm,e.initiatives,e.workstreams,dt,i,v,ti]);const Eu=o.useCallback(async p=>{const I=`${p.type}:${p.id}`;Pr(W=>({...W,[I]:{status:"loading",error:null}}));try{await e.fetchPlanningEntityDetail(p.type,p.id),Pr(W=>({...W,[I]:{status:"ready",error:null}}))}catch(W){Pr(Se=>({...Se,[I]:{status:"error",error:W instanceof Error?W.message:"Failed to load the latest planning details."}}))}},[e.fetchPlanningEntityDetail]);o.useEffect(()=>{const p=new Map;if(Mt?.id&&p.set(`${Mt.type}:${Mt.id}`,Mt),ht&&p.set(`workstream:${ht}`,{type:"workstream",id:ht}),p.size!==0)for(const I of p.values())Eu(I)},[Eu,Mt?.id,Mt?.type,ht]);const gk=o.useCallback((p,I)=>{if(p==="workstream"&&I){ub({mode:"create",entityType:"workstream",initiativeId:I},I);return}if(db({mode:"create",entityType:p}),p==="workstream"){const W=(I?zt.initiativeById.get(I):null)||(Cn?zt.initiativeById.get(Cn):null)||null;ei(W?ws(W):"")}},[db,ub,zt.initiativeById,Cn]),pb=o.useCallback((p,I)=>{if(ts.current=!1,Ii(!1),p==="initiative"){const W=zt.allInitiativeById.get(I);if(!W)return;la(null),kn({mode:"edit",entityType:"initiative",targetId:I}),wc(W.title),Ci(W.description||""),jo(W.ownerId?String(W.ownerId):""),ei("");return}else{const W=zt.allWorkstreamById.get(I);if(!W)return;const Se=ht===I;Se?(kn(null),la({mode:"edit",entityType:"workstream",targetId:I})):(la(null),kn({mode:"edit",entityType:"workstream",targetId:I})),wc(W.title),Ci(W.description||""),jo(W.ownerId?String(W.ownerId):"");const We=W.initiativeId&&zt.allInitiativeById.get(W.initiativeId)||null;if(ei(We?ws(We):""),Se)return}nn(null)},[ht,zt.allInitiativeById,zt.allWorkstreamById]),yk=o.useCallback(async(p,I,W)=>{const Se=W.trim()||null;try{p==="initiative"?await e.updateInitiative(I,{ownerId:Se}):await e.updateWorkstream(I,{ownerId:Se}),dt(`${p==="initiative"?"Initiative":"Workstream"} owner updated`,"success")}catch(We){throw dt(We instanceof Error?We.message:"Failed to update owner.","error"),We}},[e,dt]),kk=o.useCallback(async(p,I,W)=>{try{await e.updatePlanningIdentity(p,I,W)}catch(Se){throw dt(Se instanceof Error?Se.message:"Failed to update visual identity.","error"),Se}},[e.updatePlanningIdentity,dt]),Nu=o.useCallback(async(p,I)=>{const W=e.workstreams.find(Mr=>Mr.id===p);if(!W)return dt("Workstream not found.","error"),!1;const Se=typeof I=="string"?I.trim():I===null?"":io.trim(),We=Se.length===0?null:$v(zt.allInitiatives,Se);if(Se.length>0&&!We)return dt("Initiative not found by that reference.","error"),!1;const Gt=We?.id||null;if((W.initiativeId||null)===Gt)return dt(Gt?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info"),!1;try{return await e.updateWorkstream(p,{initiativeId:Gt}),ei(We?ws(We):""),dt(Gt?"Initiative set":"Initiative removed","success"),!0}catch{return dt("Failed to set initiative.","error"),!1}},[io,zt.allInitiatives,e,dt]),Du=o.useCallback(async(p,I)=>{const W=jc.get(p);if(!W)return dt("Task not found.","error"),!1;const Se=I||null;if(zt.initiativeById.has(p)||zt.workstreamById.has(p))return dt("Only execution tasks can be moved into workstreams.","error"),!1;if(Se&&!zt.workstreamById.has(Se))return dt("Workstream not found.","error"),!1;if((W.workstreamId||null)===Se)return dt(Se?"Task already belongs to that workstream.":"Task is already standalone.","info"),!1;try{return await e.handleUpdateTask(p,{workstreamId:Se})===!1?!1:(await e.fetchPlanningEntities(),dt(Se?"Workstream set":"Workstream removed","success"),!0)}catch{return dt("Failed to set workstream.","error"),!1}},[jc,zt.initiativeById,zt.workstreamById,e,dt]),vk=o.useCallback(async(p,I)=>{const W=I.trim();if(!W)return dt("Enter a task reference.","error"),!1;const Se=oy(W),We=Pc.find(Gt=>Gt.id===W||Ss(Gt)===W||Se!==null&&Gt.referenceNumber===Se);return We?Du(We.id,p):(dt("Task not found by that reference.","error"),!1)},[Du,Pc,dt]),wk=o.useCallback(async(p,I)=>{const W=I.trim();if(!W)return dt("Enter a workstream reference.","error"),!1;const Se=zt.allInitiativeById.get(p);if(!Se)return dt("Initiative not found.","error"),!1;const We=KI(W),Gt=e.workstreams.find(Mr=>Mr.id===W||Go(Mr)===W||We!==null&&Mr.referenceNumber===We);return Gt?Nu(Gt.id,ws(Se)):(dt("Workstream not found by that reference.","error"),!1)},[Nu,zt.allInitiativeById,e.workstreams,dt]),Mu=o.useCallback((p,I)=>{const W=`${p}:${I}`,Se=Sp.current.get(W);if(Se)return Se;const We=p==="initiative"?e.initiatives.find(Gt=>Gt.id===I):e.workstreams.find(Gt=>Gt.id===I);return Array.isArray(We?.attachments)?We.attachments:[]},[e.initiatives,e.workstreams]),Lu=o.useCallback((p,I,W)=>{const Se=`${p}:${I}`;Sp.current.set(Se,W);const Gt=(Ud.current.get(Se)||Promise.resolve()).catch(()=>{}).then(()=>p==="initiative"?e.updateInitiative(I,{attachments:W}):e.updateWorkstream(I,{attachments:W}));Ud.current.set(Se,Gt),Gt.catch(Mr=>{dt(Mr instanceof Error?Mr.message:"Failed to update planning context.","error")}).finally(()=>{Ud.current.get(Se)===Gt&&Ud.current.delete(Se)})},[e,dt]),bk=o.useCallback((p,I,W)=>{const Se=Mu(p,I);Lu(p,I,[...Se,W])},[Mu,Lu]),Sk=o.useCallback((p,I,W)=>{const Se=Mu(p,I);Lu(p,I,Se.filter((We,Gt)=>Gt!==W))},[Mu,Lu]),Ak=o.useCallback((p,I,W,Se)=>{const Gt=Mu(p,I).map((Mr,Gr)=>Gr!==W?Mr:typeof Mr=="string"?{path:Mr,caption:Se,timestamp:new Date().toISOString()}:{...Mr,caption:Se});Lu(p,I,Gt)},[Mu,Lu]),hb=o.useCallback(p=>{Qo(p),F("")},[]),gb=o.useCallback(p=>{F(p),Qo(p&&zt.workstreamInitiativeIds.get(p)||"")},[zt.workstreamInitiativeIds]),Ih=o.useCallback(p=>{const I=HA(p,Gi);if(I!==p){const W=Gi.find(Se=>Se.id===p)?.label||"That module";dt(`${W} is not available in this build yet.`,"error");return}if(_r==="workflowManager"&&I!=="workflowManager"&&gs&&!_o.current){Io(()=>()=>Ih(p));return}Ti(),v(I)},[Ti,dt,_r,v,gs,Gi]),yb=o.useCallback(()=>{if(_r==="tasks"&&Xa){wa(!1),Rt(null),nn(null),kn(null);return}if(_r!=="tasks"){v("tasks"),wa(!0);return}wa(p=>!p)},[Xa,_r,v]),kb=o.useCallback(()=>{if(_r!=="docs"){v("docs"),pc(!0);return}pc(p=>!p)},[_r,v]),vb=o.useCallback(()=>{if(_r!=="annotate"){v("annotate"),wi(!0);return}wi(p=>!p)},[_r,v]),wb=o.useCallback(()=>{if(_r!=="aiProfiles"){v("aiProfiles"),Hi(!0);return}Hi(p=>!p)},[_r,v]),bb=o.useCallback(()=>{if(_r!=="taskforceAgents"){v("taskforceAgents"),zs(!0);return}zs(p=>!p)},[_r,v]),Sb=o.useCallback(()=>{if(_r!=="workflowManager"){v("workflowManager"),hc(!0);return}hc(p=>!p)},[_r,v]),ym=o.useCallback(()=>{$l(!1),Tf(null),Fl(null)},[]),Ck=o.useCallback(p=>{if(!Ps[zm]?.allowed){dt("Taskforce Agents are unavailable for this workspace.","error");return}const I=Ss(p)||p.id;Tf({taskId:p.id,taskReference:I,taskTitle:p.title}),lo(!1),$l(!0),Ua(!1)},[dt,Ps]),Ab=o.useCallback(()=>{if(mn&&H){Ck(mn);return}if(!Ps[zm]?.allowed){dt("Taskforce Agents are unavailable for this workspace.","error");return}Tf(null),lo(!1),$l(!0)},[mn,H,Ck,dt,Ps]),MT=o.useCallback(p=>{vt(p),Ua(!1)},[vt]),LT=o.useCallback(p=>{Ti(),v("tasks"),vt(p)},[Ti,vt,v]),OT=o.useCallback(p=>{Ti(),v("tasks"),vt(p)},[Ti,vt,v]),BT=o.useCallback((p,I)=>{const W=I?.sessionId??null;Do.current=p,Mo.current=W,Vi(p),al(W),Bl(Se=>Se+1),v("annotate")},[v]),WT=o.useCallback(({target:p,sessionId:I})=>{Do.current=p,Mo.current=I,Vi(W=>!W&&!p||W&&p&&W.taskId===p.taskId&&W.taskReferenceLabel===p.taskReferenceLabel&&W.assetId===p.assetId&&W.imageReferenceLabel===p.imageReferenceLabel&&W.path===p.path&&W.displayName===p.displayName?W:p),al(W=>W===I?W:I)},[]),$T=o.useCallback((p,I)=>{const W=p.trim(),Se=Math.max(0,Math.round(I));W&&Rp(We=>We[W]===Se?We:qA(We,W,Se))},[]),FT=o.useCallback(p=>{const I=Math.max(0,Math.round(p));Pp(W=>W===I?W:I)},[]),UT=o.useCallback((p,I)=>{const W=p.trim();if(!W)return;const Se={zoomLevel:Math.min(4,Math.max(.25,I.zoomLevel)),scrollLeft:Math.max(0,Math.round(I.scrollLeft)),scrollTop:Math.max(0,Math.round(I.scrollTop))};Kd(We=>{const Gt=We[W];return Gt&&Gt.zoomLevel===Se.zoomLevel&&Gt.scrollLeft===Se.scrollLeft&&Gt.scrollTop===Se.scrollTop?We:qA(We,W,Se)})},[]),Cb=o.useMemo(()=>[{value:"created",label:jt("standalone.sortCreated")},{value:"updated",label:jt("standalone.sortUpdated")},{value:"priority",label:jt("standalone.sortPriority")},{value:"complexity",label:jt("standalone.sortComplexity")},...JI(Ve,[...e.searchAgnosticTasks,...ks])],[ks,e.searchAgnosticTasks,Ve]),Ib=o.useMemo(()=>[{value:"status",label:jt("standalone.groupStatus")},{value:"category",label:jt("standalone.groupCategory")},{value:"type",label:jt("standalone.groupType")},{value:"priority",label:jt("standalone.groupPriority")},{value:"complexity",label:jt("standalone.groupComplexity")},{value:"assignee",label:jt("standalone.groupAssignee")},{value:"schedule",label:jt("standalone.groupSchedule")}],[]),_b=o.useMemo(()=>Gi.filter(p=>p.enabled),[Gi]),Tb=o.useMemo(()=>[{key:"empty-columns",icon:A==="show"?a.jsx(Db,{size:16}):A==="collapse"?a.jsx(Mb,{size:16}):a.jsx(cw,{size:16}),title:jt(A==="show"?"standalone.showEmptyColumns":A==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:cb,active:A!=="show"},{key:"compressed-cards",icon:cr?a.jsx(Y0,{size:16}):a.jsx(Z0,{size:16}),title:jt(cr?"standalone.expandCards":"standalone.compressCards"),onClick:()=>it(!cr),active:cr}],[cr,cb,A]),zT=o.useMemo(()=>Hc.moduleId!=="tasks"?[]:[{key:"filter-toggle",icon:a.jsx(iC,{size:16}),title:jt("standalone.toggleFilters"),onClick:()=>Fa(!va),active:va,ariaExpanded:va,ariaControls:"task-workspace-filters",className:hh?R.filterGlow:""}],[hh,Fa,va,Hc.moduleId]),HT=o.useMemo(()=>{const p=[];return zl&&p.push({key:"ask-agent",icon:a.jsx(Cd,{size:16}),title:co?"Close Taskforce Agent":"Ask Taskforce Agent",onClick:co?ym:Ab,active:co}),p},[ym,Ab,co,zl]),VT=o.useMemo(()=>a.jsx(_X,{id:"task-workspace-filters",categoryFilterOptions:Pf,typeFilterOptions:jf,priorities:It,taxonomyDisplayLabels:Xe,filterCategories:Me,setFilterCategories:nt,filterTypes:pt,setFilterTypes:lt,filterPriorities:xt,setFilterPriorities:Yt,filterStatus:E,setFilterStatus:D,filterAssignees:Nt,setFilterAssignees:Qt,assigneeOptions:Ht,initiativeFilterOptions:Lf,selectedInitiativeId:Cn,setSelectedInitiativeId:hb,workstreamFilterOptions:Of,selectedWorkstreamId:Hs,setSelectedWorkstreamId:gb,taskScope:Ft,setTaskScope:ir,showArchive:Tc,setShowArchive:Vl,clearFiltersDisabled:!zc&&!Ru&&Zt==="created"&&e.sortOrder==="desc",clearFilters:()=>{lr(),hf(),Qo(""),F("")}}),[Ht,Pf,lr,Nt,Me,xt,E,pt,Ru,zc,hb,gb,Lf,It,e.sortOrder,Cn,Hs,Qt,nt,Yt,D,lt,Qo,F,Vl,ir,Zt,hf,Tc,Ft,Xe,jf,Of]),GT=o.useMemo(()=>[{key:"zen-toggle",icon:a.jsx(J0,{size:16,fill:w?"currentColor":"none"}),title:jt(w?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>P(),active:w}],[P,w]),KT=o.useMemo(()=>({search:a.jsx(SX,{value:$r,placeholder:jt("standalone.searchPlaceholder"),active:zc,onChange:Dr,onClear:()=>Dr(""),clearTitle:jt("standalone.clearSearchTitle")}),sort:a.jsx(MA,{label:a.jsxs(a.Fragment,{children:[a.jsx(lw,{size:12})," ",jt("standalone.sortLabel")]}),value:Zt,options:Cb,onChange:p=>Lr(p),trailingAction:a.jsx("button",{className:`tf-control-icon ${R.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?jt("standalone.sortDirectionDescTitle"):jt("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?a.jsx(ow,{size:14}):a.jsx(QA,{size:14})})}),"divider-primary":a.jsx(LA,{}),grouping:a.jsx(MA,{label:a.jsxs(a.Fragment,{children:[a.jsx(Tg,{size:12})," ",jt("standalone.groupLabel")]}),value:h,options:Ib,onChange:p=>y(p)}),"divider-secondary":a.jsx(LA,{}),"task-display-actions":a.jsx(lg,{actions:Tb})}),[h,Ib,Ih,zc,e,$r,y,Dr,Lr,Zt,Cb,Tb,Hc.moduleId]),qT=o.useMemo(()=>({"add-task":a.jsx(AX,{icon:a.jsx(ui,{size:16}),label:jt("standalone.addTask"),onClick:lb}),"add-document":null}),[lb]),md=o.useMemo(()=>{const p=`${tn.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,I=`${p} tf-control-icon-active`,W={tasks:a.jsx(rx,{size:18}),planning:a.jsx(Tg,{size:18}),docs:a.jsx(Xm,{size:18}),annotate:a.jsx(rC,{size:18}),workflowManager:a.jsx(Lb,{size:18}),taskforceAgents:a.jsx(Cd,{size:18}),aiProfiles:a.jsx(pg,{size:18})},Se=_r==="planning"?a.jsx("span",{className:tn.workspaceToolButton,"aria-hidden":"true"}):_r==="docs"?a.jsx("button",{type:"button",className:ba?I:p,onClick:kb,title:ba?"Collapse document tray":"Document tray","aria-label":ba?"Collapse document tray":"Document tray",children:ba?a.jsx(wo,{size:18}):a.jsx(cc,{size:18})}):_r==="annotate"?a.jsx("button",{type:"button",className:hs?I:p,onClick:vb,title:hs?"Collapse image tray":"Image tray","aria-label":hs?"Collapse image tray":"Image tray",children:hs?a.jsx(wo,{size:18}):a.jsx(cc,{size:18})}):_r==="aiProfiles"?a.jsx("button",{type:"button",className:dn?I:p,onClick:wb,title:dn?"Collapse AI Profile tray":"MCP settings tray","aria-label":dn?"Collapse AI Profile tray":"MCP settings tray",children:dn?a.jsx(wo,{size:18}):a.jsx(ex,{size:18})}):_r==="taskforceAgents"?a.jsx("button",{type:"button",className:ma?I:p,onClick:bb,title:ma?"Collapse builder library":"Builder library","aria-label":ma?"Collapse builder library":"Builder library",children:ma?a.jsx(wo,{size:18}):a.jsx(pg,{size:18})}):_r==="workflowManager"?a.jsx("button",{type:"button",className:Ea?I:p,onClick:Sb,title:Ea?"Collapse workflow library":"Workflow library","aria-label":Ea?"Collapse workflow library":"Workflow library",children:Ea?a.jsx(wo,{size:18}):a.jsx(Lb,{size:18})}):a.jsx("button",{ref:Yo,type:"button",className:_r==="tasks"&&Xa?I:p,onClick:yb,title:_r==="tasks"&&Xa?"Collapse planning trays":"Planning","aria-label":_r==="tasks"&&Xa?"Collapse planning trays":"Planning",children:_r==="tasks"&&Xa?a.jsx(wo,{size:18}):a.jsx(tx,{size:18})});return a.jsxs("aside",{className:`${tn.workspaceToolRail} ${tn.workspaceToolRailLeft}`,"aria-label":"Workspace tools",children:[a.jsxs("div",{className:tn.workspaceToolRailMain,children:[Se&&a.jsxs(a.Fragment,{children:[Se,a.jsx("div",{className:tn.workspaceToolRailDivider})]}),_b.map(We=>a.jsx("button",{type:"button",className:_r===We.id?I:p,onClick:()=>Ih(We.id),title:We.label,"aria-label":We.label,children:W[We.id]},We.id))]}),a.jsxs("div",{className:tn.workspaceToolRailBottom,children:[a.jsx("div",{className:tn.workspaceToolRailDivider}),a.jsx("button",{type:"button",className:m==="settings"?I:p,onClick:()=>{if(_r==="workflowManager"&&gs&&!_o.current){Io(()=>()=>{Xr("general"),f("settings")});return}Xr("general"),f("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:a.jsx(Qm,{size:18})})]})]})},[m,dn,ba,wb,kb,vb,Ih,yb,bb,Sb,hs,Xa,_r,Xr,f,ma,Ea,gs,_b]),[xb,YT]=o.useState(null),ZT=o.useCallback(p=>{YT(p)},[]),Rb=o.useCallback((p,I)=>Eu({type:p,id:I}),[Eu]),Pb=o.useCallback(async(p,I)=>{const W=I.title.trim();if(!W)throw new Error(`${p==="initiative"?"Initiative":"Workstream"} title is required.`);try{if(p==="initiative"){const We=await e.createInitiative({title:W,description:I.description?.trim()||null,ownerId:I.ownerId?.trim()||null,...I.icon||I.color?{icon:I.icon??null,color:I.color??null}:{}});return dt("Initiative created","success"),{id:We.id}}const Se=await e.createWorkstream({title:W,description:I.description?.trim()||null,ownerId:I.ownerId?.trim()||null,initiativeId:I.initiativeId?.trim()||null,...I.icon||I.color?{icon:I.icon??null,color:I.color??null}:{}});return dt("Workstream created","success"),{id:Se.id}}catch(Se){throw dt(Se instanceof Error?Se.message:"Failed to create planning item.","error"),Se}},[e.createInitiative,e.createWorkstream,dt]),jb=o.useCallback(async(p,I,W)=>{const Se=W.title.trim();if(!Se)throw new Error(`${p==="initiative"?"Initiative":"Workstream"} title is required.`);try{const We={title:Se,description:W.description?.trim()||null};if(p==="initiative"){await e.updateInitiative(I,We),dt("Initiative updated","success");return}await e.updateWorkstream(I,We),dt("Workstream updated","success")}catch(We){throw dt(We instanceof Error?We.message:"Failed to update planning item.","error"),We}},[e.updateInitiative,e.updateWorkstream,dt]),Ik=o.useCallback(async(p,I)=>{try{await e.reorderWorkstreamTasks(p,I)}catch(W){throw dt(W instanceof Error?W.message:"Failed to reorder workstream tasks.","error"),W}},[e.reorderWorkstreamTasks,dt]),Ou=o.useMemo(()=>({initiatives:zt.allInitiatives,standaloneWorkstreams:zt.allStandaloneWorkstreams,assigneeOptions:Ht,currentOwnerId:Bn==="anonymous"?null:Bn,currentWorkspaceId:Tt,theme:ur,taskReferences:sr,loadState:e.planningLoadState,hydrationStateByEntity:rr,hydrateEntity:Rb,retry:()=>{e.fetchPlanningEntities()},openTask:vt,setTaskStatus:ll,setTaskAssignee:Uf,linkOptions:ou,assignWorkstreamToInitiative:Nu,assignTaskToWorkstream:Du,attachWorkstreamToInitiative:wk,attachTaskToWorkstream:vk,archiveEntity:Yi,unarchiveEntity:Hf,changeOwner:yk,changeIdentity:kk,createEntity:Pb,updateEntity:jb,addContextFile:bk,removeContextFile:Sk,updateContextCaption:Ak,showTaskCardStatusLabel:ke,taskArrangeMode:Ai,setTaskArrangeMode:Xo,reorderWorkstreamTasks:Ik}),[Tt,ur,yk,kk,Nu,Du,vk,wk,Yi,Hf,Pb,bk,vt,Sk,ll,Uf,Ak,Rb,Ht,Bn,zt.allInitiatives,zt.allStandaloneWorkstreams,ou,rr,e.fetchPlanningEntities,e.planningLoadState,ke,Ai,Ik,sr,jb]),JT=a.jsx(Vte,{open:Xa,leftOffset:56,returnFocusRef:Yo,theme:ur,initiatives:Ou.initiatives,standaloneWorkstreams:Ou.standaloneWorkstreams,planningLoadState:Ou.loadState,onRetryPlanning:Ou.retry,taskScope:Ft,activeInitiativeId:Cn,activeWorkstreamId:Hs,navigatorSort:xo,navigatorSortReady:au,onNavigatorSortChange:kc,taskArrangeMode:Ai,onTaskArrangeModeChange:Xo,onReorderWorkstreamTasks:Ik,planningFavorites:au?Ro:[],onTogglePlanningFavorite:p=>{vc(I=>cX(I,p))},favoritesSectionCollapsed:yc,initiativesSectionCollapsed:rl,workstreamsSectionCollapsed:Ml,onToggleFavoritesSection:()=>Dl(p=>!p),onToggleInitiativesSection:()=>ca(p=>!p),onToggleWorkstreamsSection:()=>Si(p=>!p),expandedInitiativeIds:O,detail:Bf,editor:Dt,secondaryEditor:Tn,secondaryPane:Wf,primaryHydrationState:Np,secondaryHydrationState:Dp,onRetryPrimaryHydration:Mt?()=>{Eu(Mt)}:void 0,onRetrySecondaryHydration:ht?()=>{Eu({type:"workstream",id:ht})}:void 0,onWidthChange:Cy,currentWorkspaceId:Tt,currentOwnerId:Bn==="anonymous"?"":Bn,linkOptions:ou,showTaskCardStatusLabel:ke,assigneeOptions:Ht.map(p=>({value:String(p.value),label:p.label,icon:p.icon,color:p.color,kind:p.kind,avatarUrl:p.avatarUrl??null,avatarRevision:p.avatarRevision??null,avatarUpdatedAt:p.avatarUpdatedAt??null,username:p.username??null,surfaceType:p.surfaceType??null,providerMetadata:p.providerMetadata??null,archivedAt:p.archivedAt??null})),draftInitiativeSummary:Iy,draftTitle:Po,draftDescription:bc,draftOwner:Ll,draftInitiativeId:io,draftIcon:Sc,draftColor:Ac,onChangeDraftTitle:wc,onChangeDraftDescription:Ci,onChangeDraftOwner:jo,onChangeDraftInitiativeId:ei,onChangeDraftIcon:nl,onChangeDraftColor:Eo,onCollapseTreePane:()=>oo(!0),onExpandTreePane:()=>oo(!1),onCollapsePrimaryPane:()=>To(!0),onExpandPrimaryPane:()=>To(!1),onCollapseSecondaryPane:()=>ra(!0),onExpandSecondaryPane:()=>ra(!1),onBackFromSecondary:()=>{ts.current=!1,Ii(!1),la(null),nn(null)},treeCollapsed:pa,primaryCollapsed:un,secondaryCollapsed:Qa,onCancelEditor:mk,onCancelSecondaryEditor:pk,onSubmitEditor:PT,isSubmittingEditor:wp,isEditorSubmitDisabled:(Tn||Dt)?.mode==="edit"&&!hk,onCreateInitiative:()=>gk("initiative"),onCreateWorkstream:()=>gk("workstream"),onCreateTaskInWorkstream:RT,onCreateWorkstreamInInitiative:p=>gk("workstream",p),onAssignInitiativeToWorkstream:Nu,onOpenTaskById:Ou.openTask,onSetTaskStatus:ll,onChangeTaskAssignee:Uf,onArchivePlanningTask:$p,onArchiveResolvedWorkstream:Ei,onArchiveResolvedInitiative:zf,taskReferences:sr,onAssignTaskToWorkstream:Du,onAttachTaskToWorkstreamByReference:vk,onAttachWorkstreamToInitiativeByReference:wk,onAddPlanningContextFile:bk,onRemovePlanningContextFile:Sk,onUpdatePlanningContextCaption:Ak,onToggleInitiative:jT,onSelectInitiative:ET,onSelectWorkstream:NT,onOpenInitiativeDetails:hm,onOpenWorkstreamDetails:gm,onOpenNestedWorkstreamDetails:DT,onEditInitiative:p=>pb("initiative",p),onEditWorkstream:p=>pb("workstream",p),onChangePlanningOwner:yk,onChangePlanningIdentity:kk,onArchiveInitiative:p=>{e.archiveInitiative(p).then(()=>{dt("Initiative archived","success")}).catch(I=>{dt(I instanceof Error?I.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:p=>{e.unarchiveInitiative(p).then(()=>{dt("Initiative unarchived","success")}).catch(I=>{dt(I instanceof Error?I.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:p=>{e.archiveWorkstream(p).then(()=>{dt("Workstream archived","success")}).catch(I=>{dt(I instanceof Error?I.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:p=>{e.unarchiveWorkstream(p).then(()=>{dt("Workstream unarchived","success")}).catch(I=>{dt(I instanceof Error?I.message:"Failed to unarchive workstream.","error")})}}),XT=Hc.headerSections.map(p=>{const I=KT[p];return I?a.jsx(re.Fragment,{children:I},p):null}).filter(Boolean),QT=Hc.primaryAction?qT[Hc.primaryAction]:null,_k=co?a.jsx("div",{className:`${R.taskforceAgentDrawerOverlay} ${Ic?R.taskforceAgentDrawerOverlayCollapsed:""}`.trim(),style:{top:`${Jo}px`},"data-theme":ur,"aria-label":"Taskforce Agent chat",children:a.jsx("aside",{className:Ic?`${tn.workspaceToolRail} ${tn.workspaceToolRailRight}`:R.taskforceAgentDrawerPanel,children:Ic?a.jsxs("div",{className:tn.workspaceToolRailMain,children:[a.jsx("button",{type:"button",className:`${tn.workspaceToolButton} tf-control-icon tf-control-icon-quiet tf-control-icon-active`,onClick:()=>lo(!1),title:"Expand agent chat","aria-label":"Expand agent chat",children:a.jsx(Cd,{size:16})}),a.jsx("button",{type:"button",className:`${tn.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,onClick:ym,title:"Close agent chat","aria-label":"Close agent chat",children:a.jsx(mi,{size:16})})]}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:R.taskforceAgentDrawerHeader,children:[eu||a.jsxs("div",{className:R.taskforceAgentDrawerHeaderFallback,children:[a.jsx("span",{className:R.taskforceAgentDrawerFallbackAvatar,"aria-hidden":"true",children:a.jsx(Cd,{size:16})}),a.jsx("strong",{children:"Loading agent..."})]}),a.jsxs("div",{className:R.taskforceAgentDrawerHeaderActions,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>lo(!0),title:"Collapse agent chat","aria-label":"Collapse agent chat",children:a.jsx(Ld,{size:16})}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ym,title:"Close agent chat","aria-label":"Close agent chat",children:a.jsx(mi,{size:16})})]})]}),a.jsx(o.Suspense,{fallback:a.jsx("div",{className:R.taskforceAgentDrawerLoading,children:a.jsx(na,{size:18,className:R.spinner})}),children:a.jsx(KA,{workspaceId:Tt,launchContext:wy,onClearLaunchContext:ym,onOpenTaskContext:MT,taskReferences:sr,surface:"taskDrawer",runtimeMode:hr,cloudAuthConfigured:Xt,authSessionResolved:Vr,isAuthenticated:Ut,resolveCloudAuthUrl:Zr,theme:ur,rememberedAgentId:Is,rememberedConversationId:Pa,rememberedConversationByAgentId:jn,rememberedSelectionReady:Oa,onRememberSelection:tu,onRenderDrawerHeader:Ul})})]})})}):null;return a.jsxs("div",{className:`${tn.standaloneWrapper} ${w?R.zenModeEnabled:""}`,"data-theme":ur,children:[a.jsx("div",{ref:gc,style:{flexShrink:0},children:a.jsx(oX,{projectName:Mi,currentWorkspaceId:Tt,runtimeMode:hr,theme:ur,onBrandClick:lm,meta:a.jsxs(a.Fragment,{children:[a.jsx("span",{className:R.taskCountBadge,title:Pu,children:ok}),Bn&&Bn!=="anonymous"&&a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",className:`${R.taskCountBadge} ${R.taskCountBadgeButton} ${es==="assigned-to-me"?R.taskCountBadgeActive:""}`.trim(),onClick:()=>bl("assigned-to-me"),title:es==="assigned-to-me"?"Clear assigned-to-me quick filter":"Filter to my open tasks","aria-label":`${es==="assigned-to-me"?"Clear":"Apply"} assigned to me quick filter (${ql} task${ql===1?"":"s"})`,"aria-pressed":es==="assigned-to-me",children:[a.jsx(tf,{size:13,className:R.taskCountBadgeIcon,"aria-hidden":"true"}),ql]}),a.jsxs("button",{type:"button",className:`${R.taskCountBadge} ${R.taskCountBadgeButton} ${ji>0?R.taskCountBadgeAlert:""} ${es==="overdue"?R.taskCountBadgeActive:""}`.trim(),onClick:()=>bl("overdue"),title:es==="overdue"?"Clear my-overdue-tasks quick filter":"Filter to my overdue tasks","aria-label":`${es==="overdue"?"Clear":"Apply"} my overdue tasks quick filter (${ji} task${ji===1?"":"s"})`,"aria-pressed":es==="overdue",children:[a.jsx(X0,{size:13,className:R.taskCountBadgeIcon,"aria-hidden":"true"}),ji]})]}),ik&&a.jsx("button",{className:"tf-control-icon",onClick:am,title:`Sync manager: ${Sl.label} | Last success: ${kh}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${Sl.border}`,background:Sl.background,color:Sl.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:Sl.icon==="off"?a.jsx(Q0,{size:16}):a.jsx(cC,{size:16})})]}),actions:a.jsxs(a.Fragment,{children:[l&&a.jsxs(a.Fragment,{children:[Ut&&Na?.stripeCustomerId&&a.jsx("button",{className:"tf-control-icon",onClick:()=>{mh()},title:"Manage billing",disabled:Jp,children:"Manage billing"}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{if(im){Tu();return}d()},title:im?"Continue to Taskforce":"Back",disabled:yu,children:im?"Take Me to Taskforce":"Back"})]}),!l&&a.jsxs(a.Fragment,{children:[XT,a.jsx(lg,{actions:zT}),QT]}),a.jsx(lg,{actions:GT}),!l&&a.jsx(lg,{actions:HT}),xT]})})}),a.jsx(Zg,{notice:m==="add"?null:Vn,onDismiss:Za}),a.jsx(N_,{theme:ur}),$t&&a.jsx("div",{className:Qe.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),a.jsx("div",{className:`${R.taskforceAssistantWorkspace} ${co?R.taskforceAssistantWorkspaceOpen:""} ${Ic?R.taskforceAssistantWorkspaceCollapsed:""}`.trim(),children:a.jsx("div",{className:R.taskforceAssistantWorkspaceContent,children:l?a.jsx("div",{className:`${tn.standalonePage} ${tn.standaloneContent} ${R.appScrollbar} tf-scrollbar`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflowY:"auto",overflowX:"hidden",scrollbarGutter:"stable",background:"var(--surface-page)"},children:a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(xre,{...e,currentTheme:ur,projectName:Qn,currentWorkspaceId:Tt,authUserId:Ur,apiBaseUrl:od,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:Zr,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:nk,onContinueToTaskforce:Tu,continueBusy:yu})})}):_r==="planning"?a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(Tre,{model:Ou})})]}):_r==="docs"&&xi?a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(Cre,{taskReferences:sr,tasks:j,runtimeMode:hr,workspaceId:Tt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:gf,attachmentFilters:yf,onTypeFiltersChange:Ap,onAttachmentFiltersChange:No,sortField:kf,sortOrder:vf,onSortFieldChange:Cp,onSortOrderChange:Ip,pinnedDocIds:wf,onPinnedDocIdsChange:_p,searchQuery:bf,onSearchQueryChange:Tp,selectedDocId:Sf,onSelectedDocIdChange:xp,selectionReady:au,documentScrollByDocId:Af,onDocumentScrollChange:$T,documentListScrollTop:zd,onDocumentListScrollChange:FT,documentTrayOpen:ba,onCloseDocumentTray:()=>pc(!1),requestedDocPath:ky,requestedDocAssetId:vy,onRequestedDocHandled:()=>{Hd(null),Vd(null)},onBackToTask:OT,enableTaskGeneration:!0})})]}):_r==="annotate"&&_c?a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(Are,{runtimeMode:hr,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:Tt,sessionLoadReady:Xd,requestedTarget:Rs,requestedSessionId:Jd,requestedOpenVersion:_f,imageTrayOpen:hs,onCloseImageTray:()=>wi(!1),resolveTaskReferenceLabel:jp,resolveImageReferenceLabel:Rf,onOpenTarget:BT,onContextChange:WT,viewportByContextKey:If,onViewportChange:UT,onBackToTask:LT})})]}):_r==="workflowManager"?a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(Ire,{workspaceId:Tt,libraryTrayOpen:Ea,onCloseLibraryTray:()=>hc(!1),assigneeOptions:Ht,theme:ur,onUnsavedChangesChange:bi})})]}):_r==="taskforceAgents"?a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(KA,{workspaceId:Tt,taskReferences:sr,agentRosterTrayOpen:ma,onCloseAgentRosterTray:()=>zs(!1),runtimeMode:hr,cloudAuthConfigured:Xt,authSessionResolved:Vr,isAuthenticated:Ut,resolveCloudAuthUrl:Zr,theme:ur,rememberedAgentId:Is,rememberedConversationId:Pa,rememberedConversationByAgentId:jn,rememberedSelectionReady:Oa,onRememberSelection:tu})})]}):_r==="aiProfiles"?a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(_re,{workspaceId:Tt,runtimeMode:hr,cloudAuthConfigured:Xt,authSessionResolved:Vr,isAuthenticated:Ut,cloudAiProfileSeatUsage:Na?.aiProfileSeatUsage??null,agentTrayOpen:dn,onCloseAgentTray:()=>Hi(!1),resolveCloudAuthUrl:Zr,theme:ur,onNotice:dt,mcpSettingsNode:a.jsx(GA,{settingsModel:{...$n,initialSection:"mcp",onOpenCloudAuth:cm},renderMode:"mcp-only"})})})]}):a.jsxs("div",{className:`${tn.standalonePage} ${tn.standaloneContent} `,style:{position:"relative",opacity:e.loadingTasks?.7:1,transition:"opacity 0.2s ease, padding 220ms cubic-bezier(0.4, 0, 0.2, 1)",display:"flex",flex:1,minHeight:0,paddingLeft:"56px"},children:[md,a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[va&&VT,a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden",transition:"padding 220ms cubic-bezier(0.4, 0, 0.2, 1)",paddingLeft:Xa?`${Ay+6}px`:"6px",paddingRight:h==="schedule"&&ka?`${sw}px`:0},children:[a.jsx("div",{ref:ZT,style:{position:"absolute",top:0,right:0,bottom:0,left:"-56px",zIndex:35,pointerEvents:"none"}}),e.loadingTasks&&$f.length>0&&a.jsx("div",{className:R.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:a.jsx(na,{size:14,className:R.spinner})}),Ft==="deleted"&&a.jsx(E_,{theme:ur,selectedRecords:Pi.selectedRecords,matchingCount:Pi.matchingRecords.length,allMatchingSelected:Pi.allMatchingSelected,someMatchingSelected:Pi.someMatchingSelected,fullTrashCount:e.deletedTasks.length,onSelectAllMatching:Pi.selectAllMatching,onClearSelection:Pi.clear,onRestore:pr,onEmptyEntireTrash:()=>{const p=e.deletedTasks.length;p>0&&window.confirm(`Permanently delete all ${p} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&wr()}}),a.jsx(vJ,{tasks:Lp,allTasks:_y,columns:ib,groupBy:h,scheduleDates:Gc,searchQuery:$r,filterCategories:Me,filterTypes:pt,filterPriorities:xt,filterStatus:E,filterAssignees:Nt,filtersReady:Ct,assigneeOptions:Ht,scheduleFilteredTaskIds:Ty,copiedId:bt,taxonomies:Ve,types:tt,priorities:It,workspaceId:Tt,deletedTaskRecordByTaskId:Ki,selectedDeletedRecordIds:Pi.selectedIds,onDeletedSelectionChange:Pi.toggle,onUpdateTask:z,onTaskClick:S,taskReferences:mb,onCopyId:at,onToggleInProgress:U,onToggleReview:Ke,onToggleComplete:pe,onToggleCancel:Et,onSetStatus:Yl,onArchiveTask:kt,onAddTaskToColumn:lu,showTaskCardStatusLabel:ke,showTaskCardDescription:hr!=="cloud"&&ve,showTaskCardAttachments:He,showTaskCardChecklistProgress:Ee,showTaskCardLatestActivity:de,tintTaskCardActivityBackground:x,onScheduleDaySelected:xy,persistedScrollLeft:h==="schedule"?Us:void 0,onScrollLeftChange:Ry,emptyColumnMode:A,categories:g,compressed:cr,readOnlyMode:Ft==="deleted"?"deleted":Ft==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:Zt,sortOrder:e.sortOrder,planningDropTargets:xb?uc.createPortal(JT,xb):null,onAssignTaskToWorkstream:Du,onAssignWorkstreamToInitiative:Nu,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:Py,onDelete:Ff},`${h}-${ib.map(p=>String(p.value)).join("|")}-${Gc.mon}`),h==="schedule"&&!ka&&a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{Rt(null),$a(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:a.jsx(wo,{size:16})}),h==="schedule"&&a.jsx(pre,{open:ka,onClose:()=>$a(!1),scheduleSelectedDate:Ar,setScheduleSelectedDate:vi,scheduleCalendarMonth:ps,setScheduleCalendarMonth:Co,scheduleShowWeekends:_n,setScheduleShowWeekends:ja,scheduleShowBacklog:ao,setScheduleShowBacklog:Ts,scheduleOnlyExpired:Ba,setScheduleOnlyExpired:Wa,expiredScheduledCount:jy,overdueDueCount:Op,expiredLeafCandidates:cl,expiredRecoveryCandidates:Ec,onMoveExpiredToSelectedWeek:IT,onMoveExpiredToBacklog:_T,scheduleBulkBusy:Nc,globalWeekStartsOn:er,resolvedLocale:Gn,todayDateOnly:Jr,scheduleBaseTasks:Nf,scheduleWeekStart:fd,scheduleWeekLabel:TT})]})]})]})})}),_k&&typeof document<"u"?uc.createPortal(_k,document.body):_k,a.jsxs(Ko,{isOpen:m==="add",onClose:Wp,title:H?mn?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:so?"full":"xl",theme:ur,className:`${R.taskforceTaskModalOverlay} ${co?R.taskforceModalWithAssistantPanel:""} ${Ic?R.taskforceModalWithAssistantPanelCollapsed:""}`.trim(),overlayStyle:{"--taskforce-task-modal-backdrop-top":`${Jo}px`,"--taskforce-task-modal-backdrop-left":"56px"},headerActions:a.jsxs(a.Fragment,{children:[H?null:a.jsxs("button",{type:"button",onClick:p=>L(p),disabled:M||!K.trim(),className:R.primaryUpdateBtn,title:jt("actionHeader.addTaskTitle"),children:[M?a.jsx(na,{size:16,className:R.spinner}):a.jsx(ui,{size:16}),jt("actionHeader.addTask")]}),a.jsx("button",{className:"tf-control-icon",onClick:()=>Ua(p=>!p),title:so?"Exit full screen":"Enter full screen","aria-label":so?"Exit full screen":"Enter full screen",children:so?a.jsx(Mb,{size:18}):a.jsx(Db,{size:18})})]}),draggable:!so,closeOnOverlayClick:!1,children:[a.jsxs("div",{className:R.taskNoticeAnchor,children:[a.jsx(j_,{editingTaskId:H,loading:M,submitDisabled:Ce,autoSaveState:ar,title:K,status:be,onStatusChange:Ae,showCreateSubmit:!1,currentTask:mn,currentTaskWorkstream:fs,currentTaskInitiative:Ui,workstreams:e.workstreams,onWorkstreamInputChange:st,onSetWorkstreamForCurrentTask:mt,handleSubmit:L,handleCopyId:at,copiedId:bt,tasks:j,handleToggleInProgress:U,handleToggleReview:Ke,handleToggleComplete:pe,handleToggleCancel:Et,handleSetStatus:Yl,handleArchiveTask:kt,handleUnarchiveTask:p=>{if(mn?.isDeleted){const I=Ki.get(p);if(!I)return;tr(I.id,I.taskId);return}dr(p)},handleRestoreDeletedTask:mn?.deletedRecordId?p=>{const I=e.deletedTasks.find(W=>W.id===p);tr(p,I?.taskId)}:void 0,handlePermanentlyDeleteDeletedTask:mn?.deletedRecordId?p=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(Bt(p),_(),f("tasks"))}:void 0,onAskAgent:Ck}),a.jsx(Zg,{notice:oe?{message:oe,tone:"error"}:Vn,onDismiss:()=>{Ao(),Za()},placement:"task"})]}),a.jsx(P_,{editingTaskId:H,initialActivityEntryId:e.initialActivityEntryId,title:K,description:fe,checklistItems:Ye,category:ge,type:ie,priority:$,complexity:B,manualComplexityEnabled:ft,assignee:q,scheduledDate:G,dueDate:Te,formTaxonomies:le,onTaxonomyChange:(p,I)=>Ie(W=>({...W,[p]:I})),taxonomies:Ve,comments:Je,newCommentText:J,contextFiles:te,currentWorkspaceId:Tt,descriptionImageDraftId:Pe,currentActorId:Ur,apiBaseUrl:od,runtimeMode:hr,showImageReviews:!0,descriptionFocused:De,showMarkdownHelp:Fe,checklistEnabled:xe,categories:g,types:tt,priorities:It,taxonomyDisplayLabels:Xe,assigneeOptions:Ht,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:bt,onTitleChange:Q,onTitleDraftChange:ee,onDescriptionChange:_e,onDescriptionDraftChange:$e,onChecklistItemsChange:ye,onCategoryChange:se,onTypeChange:me,onPriorityChange:V,onComplexityChange:N,onAssigneeChange:Z,onScheduledDateChange:ne,onDueDateChange:Le,onNewCommentTextChange:Ze,onDescriptionFocusedChange:et,onShowMarkdownHelpChange:yt,onOpenSettings:p=>{Xr(p),f("settings")},onSubmit:L,onDescriptionImageUploadStart:he,commentsEndRef:qt,onAddComment:()=>Oe(J),taskReferences:mb,onAddContextFile:p=>{Yd(I=>[...I,p])},onRemoveContextFile:async p=>{Yd(I=>I.filter((W,Se)=>Se!==p))},onUpdateContextCaption:(p,I)=>{Yd(W=>W.map((Se,We)=>We!==p?Se:typeof Se=="string"?{path:Se,caption:I,timestamp:new Date().toISOString()}:{...Se,caption:I}))},onSetCardCover:async p=>{if(!H)return;if(await z(H,{cardCoverAssetId:p})===!1)throw new Error("Unable to update the task card image.")},cardCoverDisabled:je,onOpenContextImage:p=>{ip(p,{ownerType:"task",ownerId:H,ownerReferenceLabel:Ss(mn),workspaceId:Tt})},onCopyId:at,onToggleInProgress:U,onToggleReview:Ke,onToggleComplete:pe,onToggleCancel:Et,onSetStatus:Yl,onArchiveTask:kt,onUnarchive:p=>{if(mn?.isDeleted){const I=Ki.get(p);if(!I)return;tr(I.id,I.taskId);return}dr(p)},currentTask:mn})]}),a.jsx(Ko,{isOpen:m==="settings",onClose:Wp,title:"Settings",size:"xl",theme:ur,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(na,{size:20,className:R.spinner})}),children:a.jsx(GA,{settingsModel:{...$n,onOpenCloudAuth:cm},onSectionChange:Xr})})}),a.jsx(rZ,{prompt:no,theme:ur,onClose:Fs,onConfirm:zi}),a.jsx(nZ,{isOpen:kl,theme:ur,onClose:Qy,onConfirm:Xi}),a.jsx(tZ,{isOpen:Vf,theme:ur,onClose:()=>dl(!1),supportMailtoHref:oh,onOpenSettings:()=>{dl(!1),f("settings"),Xr("general")}}),a.jsx(jY,{isOpen:ni,theme:ur,displayName:ku,email:Qi,avatarDisplayUrl:Su,accountBadgeInitial:sd,profileSaveBusy:Zy,profileAvatarBusy:Qp,profileSaveError:th,profileSaveNotice:nm,cloudAuthEnabled:Xt,availableAuthProviders:eo,billingLoading:qp,billingError:Zp,billingActionError:qy,billingNotice:Yy,billingActionBusy:Jp,billingIntervalChoice:rs,accountProfileSummary:Na,onClose:rk,onSaveProfile:()=>{Iu()},onDisplayNameChange:Xp,onOpenAvatarManager:()=>{Uo(null),vn(null),Zl(!0)},onFetchLoginMethods:Xn,onUnlinkLoginMethod:Ia,onAddPassword:Un,onChangePassword:Cs,onLinkProvider:p=>Bs(p),onBillingIntervalChange:ha,onRefreshBilling:()=>{po()},onUpdateInterval:()=>{ak()},onManageBilling:()=>{mh()},onOpenPlans:()=>{Ni(!1),fh()}}),a.jsx(QY,{isOpen:du,theme:ur,title:"Edit Profile Photo",currentImageUrl:Su,fallbackInitial:sd,accept:Rre,busy:Qp,hasPendingImage:!!ns,canRemove:!!Su,error:th,notice:nm,onClose:()=>Zl(!1),onApplyImage:om,onRemoveImage:Wc,onDiscardPendingImage:id}),a.jsx(nJ,{isOpen:Ny,theme:ur,teamPlanMode:zp,teamMgmtError:Oy,teamManagementTab:Dy,teamUsersLoading:Zf,teamUsers:Mc,teamActionBusyUserId:Wy,teamInviteFeedback:Fy,teamInviteEmail:js,teamInviteRole:ml,teamInvitePermissionMode:pu,teamInviteBusy:hu,pendingInvites:fm,teamAuditLoading:Vp,teamAuditEvents:Kp,teamAuditPage:Gs,teamAuditPages:Gy,teamAuditHasMore:Hy,onClose:()=>Up(!1),onOpenMembersTab:()=>{Xl("members"),$c()},onOpenInvitesTab:()=>Xl("invites"),onOpenAuditTab:()=>{Xl("audit"),Fc(Gs)},onMemberRoleChange:(p,I)=>{Uc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,role:I})}))},onMemberPermissionChange:(p,I)=>{Uc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,mode:I})}))},onToggleMemberDisabled:(p,I)=>{Uc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,disabled:I})}))},onRevokeInvite:p=>{Uc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec})}))},onRemoveMember:p=>{Uc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}?workspaceId=${encodeURIComponent(ec)}`,{method:"DELETE",headers:qs(),credentials:"include"}))},onInviteEmailChange:fl,onInviteRoleChange:Fo,onInvitePermissionModeChange:$y,onSubmitInvite:()=>{um()},onLoadAuditPrevious:()=>{Fc(Gs-1)},onLoadAuditNext:()=>{Fc(Gs+1)}}),a.jsx(zq,{isOpen:Ey,theme:ur,onClose:()=>qf(!1),onConfirm:()=>ld({intent:"create-workspace"})}),a.jsx(rJ,{isOpen:rh,theme:ur,currentWorkspaceLabel:Mi,syncStatus:qe,syncStatusMeta:Vc,workspaceCloudSyncEnabled:mo,syncControlBusy:Jy,syncControlIntent:nd,canManageWorkspaceSync:vu,workspaceSyncSummary:ho.summary,workspaceSyncRecommendedAction:ho.recommendedAction,workspaceSyncRepairBusy:AT,referenceMismatchCount:pm,syncStageLabel:CT,workspaceSyncPendingChanges:ud,incomingCloudChanges:Da?.incomingCloudChanges||"Unknown",formattedLastSyncTime:Sh,formattedLastPullTime:wh,formattedLastPushTime:bh,syncLastError:Be,activeReferenceMismatchSummaries:Ch,syncDiagnosticsSummary:mr,syncEventRows:Ys,syncEventsListRef:Kn,workspaceSyncRepairQueued:vT,workspaceSyncBusy:Ah,workspaceSyncCopied:wT,coordinatorOwnershipMode:ju,coordinatorOwnershipTransferBusy:C,coordinatorOwnershipTransferDisabled:ce,onClose:wu,onToggleWorkspaceSync:p=>{Xy(p)},onRepairSync:ST,onCopyReport:()=>{bT()},onTransferCoordinatorOwnership:()=>{X()}}),a.jsx(iJ,{isOpen:!!Zo,onKeepEditing:()=>Io(null),onDiscard:()=>{const p=Zo;Io(null),_o.current=!0,p?.(),window.setTimeout(()=>{_o.current=!1},0)},theme:ur}),Sr&&uc.createPortal(a.jsx("div",{className:`${yr.overlay} ${yr.unsavedOverlay}`,style:{zIndex:2e3},children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${yr.modal} ${yr.unsavedModal}`,"data-theme":ur,children:[a.jsx("div",{className:`tf-modal-header ${yr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${yr.unsavedTitle}`,children:[a.jsx(Od,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${yr.form} ${yr.unsavedContent}`,children:a.jsx("p",{className:yr.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${yr.formActions} ${yr.unsavedActions}`,children:[a.jsx("button",{className:R.cancelBtn,onClick:()=>gn(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:R.destructiveBtn,onClick:En,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:R.submitBtn,onClick:ms,disabled:M,title:"Save changes and leave",children:[M?a.jsx(na,{size:16,className:R.spinner}):a.jsx(nC,{size:16}),"Save"]})]})]})}),document.body),hi&&uc.createPortal(a.jsx("div",{className:Dn.overlay,children:a.jsxs("div",{className:Dn.browser,children:[a.jsxs("div",{className:Dn.header,children:[a.jsxs("div",{className:Dn.pathInfo,children:[a.jsx(cc,{size:14}),a.jsx("span",{children:oa||"Project Root"})]}),a.jsxs("div",{className:Dn.actions,children:[oa&&a.jsx("button",{className:R.helpLink,onClick:()=>{const p=oa.split("/").filter(Boolean);p.pop(),Ta(p.length?p.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:R.helpLink,onClick:()=>ea(!1),children:"Close"})]})]}),a.jsxs("div",{className:Dn.list,children:[Ka&&typeof Ka=="object"&&a.jsxs("div",{className:`${Dn.item} ${Dn.itemFile} ${Dn.itemCurrent}`,onClick:()=>ds(oa),children:[a.jsx(Fi,{size:14})," Select Current: ./",oa||"(root)"]}),gi.map(p=>a.jsxs("div",{className:Dn.item,onClick:()=>Ta(oa+p+"/"),children:[a.jsx(cc,{size:14})," ",p,"/"]},p)),_a.map(p=>a.jsxs("div",{className:`${Dn.item} ${Dn.itemFile}`,onClick:()=>ds(oa+p),children:[a.jsx(Xm,{size:14})," ",p]},p)),gi.length===0&&_a.length===0&&a.jsx("div",{className:`${Dn.item} ${Dn.empty}`,children:"No items found"})]})]})}),document.body)]})}function Dre(e){const t=e.setupState,r=e.runtimeMode,n=e.isAuthenticated,s=!!(t&&r==="cloud"&&n&&t.globalSetupState==="missing"),i=!!(t&&r==="local"&&t.globalSetupState==="missing"),l=!!(t&&r==="cloud"&&n&&t.workspaceSetupState==="missing"),c=!!(t&&r==="local"&&t.workspaceSetupState==="missing"),d=!!(t&&(t.forceSetup||t.forceGlobalSetup||t.forceWorkspaceSetup||s||l||i||c));if(!d)return{setupGateActive:!1,needsGlobalSetup:!1,needsWorkspaceSetup:!1,hasSetupReadError:!1,phase:"ready"};const m=!!(t&&(t.forceSetup||t.forceGlobalSetup||s||i)),f=!!(t&&(t.forceSetup||t.forceWorkspaceSetup||l||c)),g=!!(m&&t?.globalSetupState==="missing"),h=!!(f&&t?.workspaceSetupState==="missing"),y=!!(m&&t?.globalSetupState==="unreadable"),k=!!(f&&t?.workspaceSetupState==="unreadable"),v=y||k;return{setupGateActive:d,needsGlobalSetup:g,needsWorkspaceSetup:h,hasSetupReadError:v,phase:v?"setup-read-error":g?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const mv="/taskforce/assets/taskforce-BxLPokNB.png";function YA(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function pv(e){return(Array.isArray(e)?e:[]).map(t=>String(t.label||t.value||"").trim()).filter(Boolean).join(", ")}function hv(e={}){const t=new URLSearchParams;t.set("screen","plans");for(const[r,n]of Object.entries(e)){const s=String(n||"").trim();s&&t.set(r,s)}return`/?${t.toString()}`}function bd(e,t){const r=String(t||"").trim();if(!r.startsWith("/")||r==="/")return e;try{const n=new URL(e,"https://taskforce.local");return n.searchParams.set("next",r),`${n.pathname}${n.search}${n.hash}`}catch{return e}}function ZA({config:e={},initialTaskId:t,initialActivityEntryId:r,onTaskCountChange:n,onHeaderMouseDown:s,isDragging:i,onClose:l,mode:c="standalone"}){const d=hC(),m=o.useMemo(()=>new URLSearchParams(d.search),[d.search]),f=String(m.get(Wi.workspaceId)||"").trim()||void 0,g=String(t||m.get(Wi.task)||"").trim()||void 0,h=String(r||m.get(Wi.activity)||m.get(Wi.comment)||"").trim()||void 0,y=String(m.get("planId")||"").trim(),k=String(m.get("planVersionId")||"").trim(),v=String(m.get("interval")||"").trim(),A=d.pathname==="/pricing",b=d.pathname==="/plans",w=d.pathname==="/"&&String(m.get("screen")||"").trim().toLowerCase()==="plans",P=hv(),E=hv({gate:"plan_selection_required"}),D=pC(),[j,S]=o.useState(""),[L,_]=o.useState(""),[T,z]=o.useState(""),[Y,H]=o.useState(""),[M,oe]=o.useState("login"),[K,Q]=o.useState(""),[ee,fe]=o.useState(!1),[_e,$e]=o.useState(null),[Ye,ye]=o.useState(null),[ge,se]=o.useState(null),[ie,me]=o.useState(!1),[$,V]=o.useState(""),[B,N]=o.useState(""),[be,Ae]=o.useState(null),[q,Z]=o.useState(null),[G,ne]=o.useState("unknown"),[Te,Le]=o.useState(!1),[Ue,st]=o.useState([]),[ft,xe]=o.useState(null),[ke,ve]=o.useState(null),[He,Ee]=o.useState(null),[de,x]=o.useState(!1),[le,Ie]=o.useState(0),[Je,J]=o.useState(0),[Ze,te]=o.useState(()=>Date.now()),[Ne,je]=o.useState("core"),[Re,Ce]=o.useState(!1),[Pe,he]=o.useState(null),[De,et]=o.useState(null),[Fe,yt]=o.useState(""),[Oe,mt]=o.useState(""),[vt,Ve]=o.useState("local"),[tt,It]=o.useState("details"),[Xe,bt]=o.useState([]),[at,U]=o.useState(""),[pe,Ke]=o.useState(!1),[Et,kt]=o.useState(null),[Ot,dr]=o.useState(!1),[tr,pr]=o.useState(null),[Bt,wr]=o.useState(!1),or=o.useRef(!1),$r=o.useMemo(()=>YI(),[]),[Dr,Me]=o.useState($r),[nt,pt]=o.useState(()=>$r.find(we=>we.isDefaultStarter)?.id||$r[0]?.id||""),[lt,xt]=o.useState(()=>YA($r.find(we=>we.isDefaultStarter)||$r[0]||null)),[Yt,Nt]=o.useState(!1),[Qt,Ct]=o.useState(null),[Ht,Ft]=o.useState(!1),[ir,cr]=o.useState(null),[it,Zt]=o.useState(!1),Lr=UD({config:e,initialTaskId:g,initialActivityEntryId:h,requestedWorkspaceId:f,onTaskCountChange:n,onClose:l}),{runtimeMode:lr,workspaceSwitchingEnabled:$n,currentWorkspaceId:br,cloudAuthConfigured:ur,authRequiredForApi:u,authBlocked:St,isAuthenticated:gt,hasBetaAccess:Fr,authSessionResolved:xr,setupState:er,runtimeCapabilities:jr,refreshSetupContext:qr,retryBootstrapChecks:An,createWorkspace:cn,saveWorkspaceProfile:Hr,fetchWorkspaces:Ge,applyWorkspaceSyncStateSnapshot:Xr,workspaceCloudSyncEnabled:hr,workspaceSyncPhase:Jt,workspaceSyncSetupIntent:Xt,workspaceSyncSummary:bn,workspaceSyncRecommendedAction:$t,workspaceSyncBusy:Ut,workspaceLastErrorMessage:Ur,retryWorkspaceCloudSync:Fn,settingsModel:Yn,fetchTasks:Ca,bootstrapState:yn,loginWithCredentials:Vr,beginOAuthLogin:rn,availableAuthProviders:Mn,registerWithCredentials:sn,requestEmailVerification:Sn,confirmEmailVerification:Ir,requestPasswordReset:Wr,confirmPasswordReset:Yr,inspectInviteAcceptance:Zn,acceptInviteWithToken:Ln,joinInviteWithToken:fn,authUserEmail:Rn,currentTheme:hn,logout:dt}=Lr,On=o.useCallback(async(we,At)=>{const qt=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:we,stateKey:"workspace-sync",patch:At})}),ar=await qt.json().catch(()=>({}));if(!qt.ok||ar?.success===!1)throw new Error(ar?.error||`Failed to configure workspace sync (${qt.status})`);return ar},[]),Wt=o.useMemo(()=>Dr.find(we=>we.id===nt)||Dr.find(we=>we.isDefaultStarter)||Dr[0]||null,[nt,Dr]);kC(hn);const ue=ew,ot=o.useMemo(()=>{const we=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return we?we.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),_t=lr==="cloud"||jr?.runtimeMode==="cloud",Pt=!_t&&ur&&!!ot,nr=typeof window<"u"&&/^app\./i.test(window.location.hostname),fr=lr==="cloud"&&u,ln=lr==="cloud"&&St,Tt=d.pathname==="/login",Rr=d.pathname==="/setup",Qr=d.pathname==="/coming-soon",on="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",Jn=!_t&&vt==="cloud",Zr=Jn&&Pt,Er=o.useMemo(()=>{if(tr)return tr;if(Xt!=="attach-cloud-import")return null;const we=String(br||"").trim();if(!we||we.toLowerCase()==="default")return null;const At=Xe.find(qt=>qt.id===we);return{workspaceId:we,name:At?.name||we}},[Xe,br,tr,Xt]),Xn=!!(Er&&br===Er.workspaceId),Ia=!!(Er&&Xn&&Jt==="error"),Un=!!(Er&&Xn&&hr&&Jt==="active"&&!Ut),Cs=o.useMemo(()=>{if(!Er)return[];const we=Re?"In progress":"Complete",At=Ia?"Needs attention":Ut||Jt==="attach-cloud"?"In progress":Jt==="active"?"Complete":"Waiting",qt=Bt?"In progress":Un?"Ready":"Waiting";return[`Connect workspace: ${we}`,`Import cloud data: ${At}`,`Open local workspace: ${qt}`]},[Er,Re,Ia,Ut,Jt,Bt,Un]),ga=nr?(!gt||St)&&!A&&!b&&!w:(fr&&!gt||ln)&&!A&&!b&&!w,Bs=lr==="cloud"&>&&!Fr&&!A&&!b&&!w,eo=lr==="cloud"&>&&xr&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1&&!A&&!b&&!w,to=lr==="cloud"&>&&(!xr||!it),Qn=ur,Ws=o.useMemo(()=>{switch(M){case"register":return"Create Account | Taskforce";case"verify":return"Verify Email | Taskforce";case"forgot":return"Reset Password | Taskforce";case"reset":return"Set New Password | Taskforce";case"invite":return"Accept Invite | Taskforce";default:return"Sign In | Taskforce"}},[M]),sa=o.useMemo(()=>String(new URLSearchParams(d.search).get("step")||"").trim().toLowerCase(),[d.search]),hi=o.useMemo(()=>String(new URLSearchParams(d.search).get("intent")||"").trim().toLowerCase(),[d.search]),ea=Rr&&sa==="workspace"&&hi==="create-workspace",gi=c!=="widget"&&yn.authPending&&!Tt&&!Rr&&!A&&!b&&!w&&(lr==="cloud"||nr),_a=o.useMemo(()=>Dre({setupState:er?{globalSetupState:er.globalSetupState,workspaceSetupState:er.workspaceSetupState,runtimeMode:er.runtimeMode,workspaceId:er.workspaceId,mode:er.mode,forceSetup:er.forceSetup,forceGlobalSetup:er.forceGlobalSetup,forceWorkspaceSetup:er.forceWorkspaceSetup}:null,runtimeMode:lr,isAuthenticated:gt}),[er,lr,gt]),oa=_a.setupGateActive,Ta=_a.needsGlobalSetup,Ka=_a.needsWorkspaceSetup,ls=_a.hasSetupReadError,ds=c!=="widget"&&yn.auth.resolved&&!ga&&!Bs&&!A&&!b&&!w&&!Tt&&yn.appPending&&(Rr||lr==="cloud"||nr),La=lr==="cloud"&&ie&&!w,qa=yn.subtitle,xa=ea||Rr&&!!Er||Rr&&oa&&(ls||Ta||Ka),Ra=o.useMemo(()=>gi?"auth-bootstrap":La||ds?"app-bootstrap":Tt?"login":ga&&!Tt?"login-redirect":Qr&&Bs?"coming-soon":xa?"guided-setup":"app",[Qr,Tt,Bs,ga,La,gi,ds,xa]),zn=o.useCallback((we,At,qt)=>{const ar=String(we||"").trim().toLowerCase(),Sr=String(At||"").trim().toLowerCase();return!!(!ar||ar==="system default workspace"||Sr&&ar===Sr)},[]);o.useEffect(()=>{const we=er?.mode==="operations"?"operations":"core";je(we)},[er?.mode]),o.useEffect(()=>{if(lr!=="cloud"||!gt){cr(null),Zt(!1);return}if(!xr){cr(null),Zt(!1);return}cr(null),Zt(!1);let we=!1;return(async()=>{try{const At=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),qt=await At.json().catch(()=>({}));if(we)return;if(!At.ok){cr(null),Zt(!0);return}const ar=String(qt?.gate||"").trim().toLowerCase();if(ar!=="ok"&&ar!=="plan_selection_required"&&ar!=="checkout_pending"&&ar!=="misconfigured"&&ar!=="missing_entitlement"){cr(null),Zt(!0);return}cr({gate:ar,canAccessApp:qt?.canAccessApp===!0,canAccessPlans:qt?.canAccessPlans!==!1,message:typeof qt?.message=="string"?qt.message:null}),Zt(!0)}catch{we||(cr(null),Zt(!0))}})(),()=>{we=!0}},[xr,gt,lr,d.pathname,d.search]),o.useEffect(()=>{if(ea){yt(""),mt("");return}if(!er)return;const we=String(er.workspace?.name||"").trim(),At=String(er.suggestedWorkspaceName||"").trim(),qt=zn(we,er.workspaceId,er.workspace?.description)?At:we;yt(qt||At||we),mt(String(er.workspace?.description||""))},[er?.workspace?.name,er?.workspace?.description,er?.suggestedWorkspaceName,er?.workspaceId,ea,zn]),o.useEffect(()=>{if(!Rr||sa!=="workspace")return;if(It("details"),Er&&Pt){Ve("cloud"),dr(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&Pt){Ve("cloud"),dr(!1);return}Ve("local")},[Er,Pt,Rr,d.search,sa]);const us=o.useCallback(async()=>{if(!Pt||!gt){bt([]),U("");return}Ke(!0),kt(null);try{const we=await fetch(`${ot}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),At=await we.json().catch(()=>({}));if(!we.ok||At?.success===!1){bt([]),U(""),kt(At?.error||`Failed to load cloud projects (${we.status})`);return}const qt=Array.isArray(At?.workspaces)?At.workspaces.map(ar=>({id:String(ar?.id||"").trim(),name:String(ar?.name||ar?.id||"").trim(),description:typeof ar?.description=="string"?ar.description:null})).filter(ar=>ar.id.length>0):[];bt(qt),U(ar=>ar&&qt.some(Sr=>Sr.id===ar)?ar:qt[0]?.id||"")}catch{bt([]),U(""),kt("Failed to load cloud projects.")}finally{Ke(!1)}},[Pt,gt,ot]);o.useEffect(()=>{vt==="cloud"&&us()},[us,vt]),o.useEffect(()=>{if(!Rr||sa!=="workspace"||vt==="cloud")return;let we=!1;return Nt(!0),Ct(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async At=>{if(!At.ok)throw new Error(`Failed to load setup libraries (${At.status})`);const qt=await At.json().catch(()=>({})),ar=Array.isArray(qt?.packs)?qt.packs:[];we||ar.length===0||(Me(ar),pt(Sr=>ar.some(gn=>gn.id===Sr)?Sr:ar.find(gn=>gn.isDefaultStarter)?.id||ar[0]?.id||""))}).catch(At=>{we||(Me($r),Ct(At instanceof Error?At.message:"Failed to load setup libraries."))}).finally(()=>{we||Nt(!1)}),()=>{we=!0}},[$r,Rr,sa,vt]),o.useEffect(()=>{xt(YA(Wt))},[nt,Wt]),o.useEffect(()=>{vt==="cloud"&&It("details")},[vt]),o.useEffect(()=>{Zr||(pr(null),wr(!1),or.current=!1)},[Zr]),o.useEffect(()=>{!Ia||!Er||(et(null),he(Ur||`Failed to import "${Er.name}" from cloud. Retry import to continue.`))},[Er,Ia,Ur]),o.useEffect(()=>{if(!Un||!Er||or.current)return;let we=!1;return or.current=!0,wr(!0),he(null),et(`Workspace import complete. Opening ${Er.name}...`),(async()=>{try{if(await qr(),await Promise.all([Ge(),Ca(!0)]),we)return;await On(Er.workspaceId,{setupIntent:null}),Xr({enabled:hr,phase:Jt,setupIntent:null}),pr(null),D("/",{replace:!0})}catch{if(we)return;et(null),he(`Imported "${Er.name}" but failed to finish opening it.`),wr(!1),or.current=!1}})(),()=>{we=!0}},[Er,Xr,Ca,Ge,Un,D,On,qr]);const ut=o.useMemo(()=>{const we=new URLSearchParams(d.search).get("next")||"/";if(we.startsWith("/"))return we==="/login"?"/":we;try{const At=new URL(we),qt=At.hostname.toLowerCase(),ar=qt==="localhost"||qt==="127.0.0.1"||qt==="::1",Sr=qt==="taskforcehq.ai"||qt.endsWith(".taskforcehq.ai");if((At.protocol==="http:"||At.protocol==="https:")&&(ar||Sr))return At.toString()}catch{return"/"}return"/"},[d.search]),vr=o.useMemo(()=>ut.startsWith("/")?ut:"/",[ut]),en=o.useCallback((we,At)=>{if(we){if(we.startsWith("/")){D(we,{replace:At?.replace===!0});return}typeof window<"u"&&(At?.replace===!0?window.location.replace(we):window.location.assign(we))}},[D]),In=o.useMemo(()=>{try{const we=new URL(vr,"https://taskforce.local");return we.pathname==="/setup"&&we.searchParams.get("step")==="workspace"&&we.searchParams.get("source")==="cloud"&&we.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[vr]),Pn=o.useCallback((we=ut)=>{const At=In?on:"/setup?step=workspace";return In?At:bd(At,we)},[ut,In]),ro=v==="year"?"year":"month",Is=o.useCallback(we=>!!(we?.planSelectionRequired||we?.checkoutPending||we?.commercialState==="pending_plan_selection"||we?.commercialState==="checkout_pending"),[]),$s=o.useCallback(we=>we?.planSelectionRequired||we?.commercialState==="pending_plan_selection"?bd(E,ut):we?.checkoutPending||we?.commercialState==="checkout_pending"?bd(hv({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?ro:null}),ut):ut,[ut,E,ro,y,k]),Pa=o.useMemo(()=>{const we=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return we==="register"?Qn?"register":"login":we==="verify"||we==="forgot"||we==="reset"||we==="invite"?we:"login"},[Qn,d.search]),ya=o.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),jn=o.useCallback(we=>{const At=new URLSearchParams(d.search),qt=we==="register"&&!Qn?"login":we;qt==="login"?At.delete("mode"):At.set("mode",qt);const ar=At.toString();D(`/login${ar?`?${ar}`:""}`,{replace:!0})},[Qn,d.search,D]);o.useEffect(()=>{Tt&&(oe(Pa),Pa==="verify"&&ya&&Q(ya),Pa==="reset"&&ya&&V(ya),Pa==="invite"&&ya&&N(ya))},[Tt,Pa,ya]),o.useEffect(()=>{M!=="verify"&&(Tt&&Pa==="verify"||(fe(!1),$e(null),ye(null)))},[M,Tt,Pa]),o.useEffect(()=>{M==="register"||M==="reset"||M==="invite"&&Te||H("")},[M,Te]),o.useEffect(()=>{if(!ge||!gt||!ge.commercialOnboardingGate&&(!xr||to))return;const we=!ge.commercialOnboardingGate&&ge.workspaceSetupRequired?Pn():ge.path,At=`${d.pathname}${d.search}${d.hash||""}`;if(we.startsWith("/")){At!==we&&D(we,{replace:!0});return}en(we,{replace:!0})},[xr,to,gt,d.hash,d.pathname,d.search,D,en,ge,Pn]),o.useEffect(()=>{if(!ie||!xr)return;if(!gt){me(!1),se(null);return}if(it&&ir?.canAccessApp===!0){S(""),_(""),z(""),H(""),se(null),me(!1);return}const we=ge?.commercialOnboardingGate?ge.path:E,At=`${d.pathname}${d.search}${d.hash||""}`;if(we.startsWith("/")){At!==we&&D(we,{replace:!0});return}en(we,{replace:!0})},[ir?.canAccessApp,it,xr,ie,gt,d.hash,d.pathname,d.search,D,en,ge,E]),o.useEffect(()=>{if(!ge||!gt)return;const we=!ge.commercialOnboardingGate&&ge.workspaceSetupRequired?Pn():ge.path;`${d.pathname}${d.search}${d.hash||""}`===we&&(ge.commercialOnboardingGate||(S(""),_(""),z(""),H(""),se(null)))},[d.hash,d.pathname,d.search,gt,ge,Pn,lr]),o.useEffect(()=>{Tt&&(document.title=Ws)},[Ws,Tt]),o.useEffect(()=>{if(!Tt||M!=="invite"||!B.trim())return;let we=!0;return(async()=>{const At=await Zn(B);if(we)if(At.success){Ae(At.email||null),Z(At.workspaceId||null),Le(At.passwordRequired===!0);const qt=(At.availableMethods||[]).filter(gn=>gn==="google"||gn==="github"||gn==="apple");st(At.inviteeState==="pending_setup"?qt:[]);const ar=!!(gt&&Rn&&At.email&&Rn.trim().toLowerCase()===At.email.trim().toLowerCase()),Sr=At.passwordRequired===!0?"new_user":ar?"existing_user_ready":"existing_user_signed_out";ne(Sr),xe(Sr==="new_user"?"Create your account password to join this workspace.":Sr==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),ve(null),Ee(null)}else Ae(null),Z(null),ne("invalid"),Le(!1),st([]),ve(Vn(At)),Ee(At.code||At.state||null)})(),()=>{we=!1}},[Tt,M,B,Zn,gt,Rn]),o.useEffect(()=>{M==="invite"&&G==="existing_user_signed_out"&&be&&S(we=>we.trim()?we:be)},[M,G,be]),o.useEffect(()=>{if(!(le>Date.now()||Je>Date.now()))return;const At=window.setInterval(()=>te(Date.now()),1e3);return()=>window.clearInterval(At)},[le,Je]);const Nr=Math.max(0,Math.ceil((le-Ze)/1e3)),Oa=Math.max(0,Math.ceil((Je-Ze)/1e3)),Ya=Nr>0,ia=Oa>0,Hn=o.useMemo(()=>M_(),[]),Vn=we=>{const At=we.error||"Request failed.",qt=we.code||we.state;return qt?`[${qt}] ${At}`:At},Za=we=>we?.deliveryAttempted===!1?we?.intro||"If that account exists and still needs verification, we sent an email.":we?.emailSent===!1?`Verification email failed to send. ${we?.emailError||"Try Resend Verification again."}`:"Verification email resent.",Ao=we=>we?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":we?.emailSent===!1?`Password reset email failed to send. ${we?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";o.useEffect(()=>{if(c==="widget"||Tt&&de)return;const we=`${d.pathname}${d.search}${d.hash||""}`,At=Rr?ut:we,qt=lr==="cloud"&>&&it&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1;if(yn.workspace.pending&&!qt)return;if(Bs){Qr||D("/coming-soon",{replace:!0});return}if(Qr&&!Bs){D("/",{replace:!0});return}if(ga){if(!Tt){const Sr=`${d.pathname}${d.search}${d.hash}`;D(`/login?next=${encodeURIComponent(Sr||"/")}`,{replace:!0});return}return}else{const Sr=Tt&&M==="invite"&&B.trim().length>0;if(Tt&>&&!Sr&&(!!ge||yn.workspace.pending||M==="register"||M==="verify"||!yn.config.loaded||to))return;Tt&>&&!Sr&&en(ut,{replace:!0})}if(!(Tt&&!gt||ge&>||Tt&>&&(M==="register"||M==="verify"||M==="invite"&&B.trim().length>0))&&!ie&&!w){if(eo){if(!w){const Sr=encodeURIComponent(String(ir?.gate||"plan_selection_required"));D(bd(`/?screen=plans&gate=${Sr}`,we),{replace:!0})}return}if(Er){Rr&&sa==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||D(on,{replace:!0});return}if(!(w&&to)&&!(w&&lr==="cloud"&&it&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1)){if(oa){if(ls){(!Rr||sa!=="error")&&D(bd("/setup?step=error",At),{replace:!0});return}if(Ta){(!Rr||sa!=="global")&&D(bd("/setup?step=global",At),{replace:!0});return}if(Ka){(!Rr||sa!=="workspace")&&D(Pn(At),{replace:!0});return}Rr&&en(ut,{replace:!0});return}Rr&&er&&!ea&&en(ut,{replace:!0})}}},[c,ga,Bs,eo,Tt,Rr,Qr,b,w,ir,ir?.gate,it,M,ie,to,oa,er,ls,ea,Er,Ta,Ka,sa,yn,lr,de,gt,it,B,d.pathname,d.search,d.hash,D,en,vr,ut,ge,on]),o.useEffect(()=>{if(c==="widget"||lr!=="local"||!yn.config.loaded||Tt||Rr)return;const we=String(br||"").trim().toLowerCase();if(!we||we==="default"){const At=`${d.pathname}${d.search}${d.hash||""}`;D(bd("/setup?step=workspace",At),{replace:!0})}},[c,lr,yn.config.loaded,Tt,Rr,br,d.hash,d.pathname,d.search,D]);const yi=o.useCallback(async()=>{Ft(!0);try{await An()}finally{Ft(!1)}},[An]),_s=o.useCallback(async()=>{await dt(),D("/login",{replace:!0})},[dt,D]);if(c==="widget")return a.jsx(pK,{...Lr,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l});if(A){const we=new URLSearchParams(d.search);return we.set("screen","plans"),a.jsx(Wb,{to:`/?${we.toString()}${d.hash||""}`,replace:!0})}if(b){const we=new URLSearchParams(d.search);return we.set("screen","plans"),a.jsx(Wb,{to:`/?${we.toString()}${d.hash||""}`,replace:!0})}if(Ra==="auth-bootstrap")return a.jsx("div",{className:tn.standaloneWrapper,"data-theme":hn,children:a.jsx("div",{className:Qe.loginView,children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:"Checking your session..."})]})})});if(Ra==="app-bootstrap")return a.jsx("div",{className:tn.standaloneWrapper,"data-theme":hn,children:a.jsx("div",{className:Qe.loginView,children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:qa}),yn.stalled&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Qe.loginError,children:yn.error||"Startup checks timed out."}),a.jsx("button",{className:R.submitBtn,disabled:Ht,onClick:yi,children:Ht?"Retrying...":"Retry checks"}),_t&&a.jsx("button",{className:R.cancelBtn,disabled:Ht,onClick:_s,children:"Go to sign-in"})]})]})})});const ki=async()=>{if(x(!0),xe(null),ve(null),Ee(null),M==="register"&&!L.trim()){ve("Display name is required."),x(!1);return}if(M==="register"||M==="reset"||M==="invite"&&Te){const At=Xv(T,{email:j,displayName:L});if(!At.ok){ve(At.message||"Password does not meet the password policy."),Ee(At.code||null),x(!1);return}if(T!==Y){ve("Passwords do not match."),Ee("PASSWORD_CONFIRMATION_MISMATCH"),x(!1);return}}let we={success:!1};if(M==="login"?we=await Vr(j,T):M==="register"?we=await sn(j,T,{displayName:L,planId:y||void 0,planVersionId:k||void 0,interval:v||void 0}):M==="verify"?we=await Ir(K):M==="forgot"?we=await Wr(j):M==="reset"?we=await Yr($,T):M==="invite"&&(G==="existing_user_signed_out"?we=await Vr(j,T):we=Te?await Ln(B,T):await fn(B)),we.success)if(M==="register"){const At=$s(we),qt=Is(we);we.verificationRequired?(fe(!!we.workspaceSetupRequired),$e(qt?String(we.commercialState||"").trim()||(we.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),ye(At),we.verificationToken&&Q(we.verificationToken),Ie(Date.now()+3e4),jn("verify"),xe(we.emailSent===!1?`Account created, but verification email failed to send. ${we.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(me(qt),se({path:At,workspaceSetupRequired:!!we.workspaceSetupRequired,commercialOnboardingGate:qt}))}else if(M==="verify"){await An();const At=_e==="pending_plan_selection"||_e==="checkout_pending";me(At),se({path:Ye||ut,workspaceSetupRequired:ee,commercialOnboardingGate:At})}else if(M==="forgot"){const At=we.deliveryAttempted===!0&&we.emailSent===!1;we.resetToken&&V(we.resetToken),xe(Ao(we)),At||(J(Date.now()+3e4),jn("reset"))}else if(M==="reset")jn("login"),xe("Password updated. Sign in with your new password.");else if(M==="invite"){if(G==="existing_user_signed_out"){const At=String(be||"").trim().toLowerCase(),qt=j.trim().toLowerCase();if(At&&qt===At){oe("invite"),ne("existing_user_ready"),z(""),H(""),xe("Signed in. Review the invite details to continue."),ve(null),Ee(null),x(!1);return}At&&S(be||""),ne("existing_user_signed_out"),z(""),H(""),xe(At?`Signed in, but this invite is for ${be}. Sign in with that account to continue.`:"Signed in, but this invite requires the invited account. Sign in with that account to continue."),ve("Sign in with the invited account to join this workspace."),Ee("INVITE_ACCOUNT_MISMATCH"),x(!1);return}if(we.workspaceSetupRequired){D(Pn(),{replace:!0}),x(!1);return}en(ut,{replace:!0})}else if(M==="login"){if(B.trim()){oe("invite"),z(""),H(""),xe("Signed in. Review the invite details to continue."),x(!1);return}if(we.workspaceSetupRequired){D(Pn(),{replace:!0}),x(!1);return}S(""),_(""),z(""),H(""),en(ut,{replace:!0})}else S(""),_(""),z(""),H(""),en(ut,{replace:!0});else{if(M==="register"&&(we.code==="SIGNUP_PLAN_NOT_ENABLED"||we.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||we.code==="SIGNUP_PLAN_VERSION_REQUIRED")){D(E,{replace:!0}),x(!1);return}if(ve(Vn(we)),Ee(we.code||null),M==="login"&&(we.code==="WORKSPACE_NOT_FOUND"||we.code==="WORKSPACE_ID_REQUIRED")){D("/setup?step=workspace",{replace:!0}),x(!1);return}if(M==="login"&&we.code==="EMAIL_NOT_VERIFIED"&&j.trim()){const At=await Sn(j);At.success&&(Ie(Date.now()+3e4),jn("verify"),At.verificationToken&&Q(At.verificationToken),xe(Za({...At,intro:"If that account exists and still needs verification, we sent an email."})),ve(null),Ee(null))}M==="register"&&we.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&j.trim()&&(Ie(Date.now()+3e4),jn("verify"),we.verificationToken&&Q(we.verificationToken),xe(we.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${we.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),ve(null),Ee(null))}x(!1)};if(Ra==="login")return a.jsx("div",{className:tn.standaloneWrapper,"data-theme":hn,children:a.jsx("div",{className:Qe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${mv})`},children:a.jsxs("form",{className:Qe.loginCard,onSubmit:we=>{we.preventDefault(),ki()},children:[!_t&&!ga&&a.jsx("button",{type:"button",className:Qe.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>D(vr,{replace:!0}),children:"×"}),a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsxs("h1",{className:Qe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:Qe.loginTitleAccent,children:"HQ"})]})]}),a.jsxs("p",{className:Qe.loginSubtitle,children:[M==="login"&&"Sign in with your account credentials.",M==="register"&&"Create your Taskforce account.",M==="verify"&&"Enter your verification token.",M==="forgot"&&"Request a password reset link.",M==="reset"&&"Set a new password using your reset token.",M==="invite"&&(G==="existing_user_ready"?`You've been invited to join ${q||"this workspace"}.`:G==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(M==="login"||M==="register"||M==="verify"||M==="forgot"||M==="invite"&&G==="existing_user_signed_out")&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Email"}),a.jsx("input",{className:`${R.input} ${Qe.loginInput}`,type:"email",value:j,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:we=>S(we.target.value)})]}),M==="register"&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Display name"}),a.jsx("input",{className:`${R.input} ${Qe.loginInput}`,type:"text",value:L,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:we=>_(we.target.value)})]}),(M==="login"||M==="register"||M==="reset"||M==="invite"&&(Te||G==="existing_user_signed_out"))&&a.jsxs("div",{className:Qe.loginField,children:[a.jsx("label",{className:Qe.loginFieldLabel,htmlFor:"auth-password-input",children:M==="reset"?"New password":M==="invite"&&Te?"Create password":"Password"}),a.jsx(ef,{id:"auth-password-input",className:`${R.input} ${Qe.loginInput}`,value:T,placeholder:M==="reset"?"New password":M==="invite"&&Te?"Create password":"Password",autoComplete:M==="register"||M==="reset"||M==="invite"&&Te?"new-password":"current-password",visibilityLabel:M==="reset"||M==="invite"&&Te?"new password":"password","data-testid":"auth-password-input",visibilityToggleTestId:"auth-password-visibility-toggle",onChange:we=>z(we.target.value)},`${M}-${Te?"new":"current"}`)]}),(M==="register"||M==="reset"||M==="invite"&&Te)&&a.jsxs("div",{className:Qe.loginField,children:[a.jsx("label",{className:Qe.loginFieldLabel,htmlFor:"auth-confirm-password-input",children:"Confirm password"}),a.jsx(ef,{id:"auth-confirm-password-input",className:`${R.input} ${Qe.loginInput}`,value:Y,placeholder:"Confirm password",autoComplete:"new-password",visibilityLabel:"confirm password","data-testid":"auth-confirm-password-input",visibilityToggleTestId:"auth-confirm-password-visibility-toggle",onChange:we=>H(we.target.value)},`${M}-confirm`)]}),(M==="register"||M==="reset"||M==="invite"&&Te)&&a.jsx("p",{className:Qe.loginSubtitle,children:Hn.join(" ")}),M==="verify"&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Verification token"}),a.jsx("input",{className:`${R.input} ${Qe.loginInput}`,type:"text",value:K,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:we=>Q(we.target.value)})]}),M==="reset"&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Reset token"}),a.jsx("input",{className:`${R.input} ${Qe.loginInput}`,type:"text",value:$,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:we=>V(we.target.value)})]}),M==="invite"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Invite token"}),a.jsx("input",{className:`${R.input} ${Qe.loginInput}`,type:"text",value:B,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:we=>N(we.target.value)})]}),be&&a.jsxs("p",{className:Qe.loginSubtitle,children:["Invite for: ",a.jsx("strong",{children:be}),q?` · Workspace: ${q}`:""]})]}),ft&&a.jsx("p",{className:Qe.loginSubtitle,children:ft}),ke&&a.jsx("p",{className:Qe.loginError,role:"alert",children:ke}),M==="login"&&He==="EMAIL_NOT_VERIFIED"&&j.trim()&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||Ya,onClick:async()=>{x(!0),xe(null);const we=await Sn(j);we.success?(Ie(Date.now()+3e4),jn("verify"),we.verificationToken&&Q(we.verificationToken),xe(Za(we)),ve(null),Ee(null)):ve(Vn(we)),x(!1)},children:Ya?`Resend in ${Nr}s`:"Resend Verification Email"}),a.jsx("div",{className:Qe.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:a.jsx("button",{type:"submit",className:`${R.submitBtn} ${Qe.loginPrimaryBtn}`,disabled:de||M==="forgot"&&ia,"data-testid":"auth-submit-button",children:de?"Working...":M==="login"?"Sign In":M==="register"?"Create Account":M==="verify"?"Verify Email":M==="forgot"?ia?`Retry in ${Oa}s`:"Send Reset Link":M==="reset"?"Reset Password":G==="existing_user_signed_out"?"Sign In to Continue":Te?"Create Account and Join":"Join Workspace"})}),(M==="login"||M==="register")&&Mn.length>0&&a.jsxs("div",{className:Qe.oauthProviders,children:[a.jsx("div",{className:Qe.oauthDivider,children:a.jsx("span",{children:"or continue with"})}),a.jsxs("div",{className:Qe.oauthButtons,children:[Mn.includes("google")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>rn("google",ut),"aria-label":"Continue with Google",children:"Google"}),Mn.includes("github")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>rn("github",ut),"aria-label":"Continue with GitHub",children:"GitHub"}),Mn.includes("apple")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>rn("apple",ut),"aria-label":"Continue with Apple",children:"Apple"})]})]}),M==="invite"&&G==="new_user"&&Ue.length>0&&a.jsxs("div",{className:Qe.oauthProviders,children:[a.jsx("div",{className:Qe.oauthDivider,children:a.jsx("span",{children:"or join with"})}),a.jsxs("div",{className:Qe.oauthButtons,children:[Ue.includes("google")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>rn("google","/",B),"aria-label":"Join with Google",children:"Google"}),Ue.includes("github")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>rn("github","/",B),"aria-label":"Join with GitHub",children:"GitHub"}),Ue.includes("apple")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>rn("apple","/",B),"aria-label":"Join with Apple",children:"Apple"})]})]}),M==="register"&&a.jsxs("p",{className:Qe.registerConsent,children:["By creating an account, you agree to the"," ",a.jsx("a",{className:Qe.registerConsentLink,href:"https://taskforcehq.ai/legal/terms/",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",a.jsx("a",{className:Qe.registerConsentLink,href:"https://taskforcehq.ai/legal/privacy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),a.jsxs("div",{className:Qe.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Qn&&(M==="login"||M==="register")&&a.jsxs("p",{className:Qe.authModeSwitch,children:[M==="login"?"Need an account?":"Already have an account?"," ",a.jsx("button",{type:"button",className:Qe.authModeSwitchLink,disabled:de,"data-testid":"auth-switch-mode-button",onClick:()=>{ve(null),Ee(null),xe(null),jn(M==="login"?"register":"login")},children:M==="login"?"Register":"Sign In"})]}),a.jsxs("div",{className:Qe.authModeLinks,children:[(M==="login"||M==="register")&&a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||ia,"data-testid":"auth-forgot-password-button",onClick:()=>{ve(null),Ee(null),xe(null),jn("forgot")},children:ia?`Forgot Password (${Oa}s)`:"Forgot Password"}),a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||Ya,"data-testid":"auth-resend-verification-button",onClick:()=>{ve(null),Ee(null),xe(null),jn("verify")},children:Ya?`Resend Verification (${Nr}s)`:"Resend Verification"}),a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de,"data-testid":"auth-accept-invite-button",onClick:()=>{ve(null),Ee(null),xe(null),jn("invite")},children:"Accept Invite"})]}),M!=="login"&&M!=="register"&&a.jsxs(a.Fragment,{children:[M==="verify"&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||Ya||!j.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{x(!0),xe(null),ve(null),Ee(null);const we=await Sn(j);we.success?(Ie(Date.now()+3e4),we.verificationToken&&Q(we.verificationToken),xe(Za(we))):ve(Vn(we)),x(!1)},children:Ya?`Resend Verification (${Nr}s)`:"Resend Verification"}),a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de,"data-testid":"auth-return-sign-in-button",onClick:()=>{ve(null),Ee(null),xe(null),jn("login")},children:M==="verify"?"Back to Sign In":"Sign In"}),Qn&&M!=="verify"&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de,"data-testid":"auth-return-register-button",onClick:()=>{ve(null),Ee(null),xe(null),jn("register")},children:"Register"}),M==="reset"&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||ia,"data-testid":"auth-return-forgot-password-button",onClick:()=>{ve(null),Ee(null),xe(null),jn("forgot")},children:ia?`Forgot Password (${Oa}s)`:"Forgot Password"})]})]})]})]})})});if(Ra==="login-redirect")return a.jsx("div",{className:tn.standaloneWrapper,"data-theme":hn,children:a.jsx("div",{className:Qe.loginView,children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(Ra==="coming-soon")return a.jsx("div",{className:tn.standaloneWrapper,"data-theme":hn,children:a.jsx("div",{className:Qe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${mv})`},children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Beta Access"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:"You are signed in, but your account does not have beta access yet."}),a.jsx("p",{className:Qe.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),a.jsx("button",{className:R.cancelBtn,onClick:async()=>{await Lr.logout(),D("/login",{replace:!0})},children:"Sign Out"})]})})});if(Ra==="guided-setup"){const we=!ea&&(ls||sa==="error"),At=!ea&&!we&&(Ta||sa==="global"),qt=jt(we?"setup.headingCheckFailed":At?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),ar=we?jt("setup.subtitleUnreadable"):At?jt("setup.subtitleGlobalRequired"):null,Sr="Workspace",gn=_t||vt!=="cloud",fa=gn&&tt==="details",ta=gn&&tt==="library",mn=!_t&&Pt&&fa&&!Er,fs=jr?.runtimeMode==="cloud"?cC:nx,Ui=Wt?pv(Wt.categories):"",no=Wt?pv(Wt.types):"",zi=Wt?pv(Wt.priorities):"",Fs=Re?jt("setup.saving"):Jn?Er?Ia?"Retry Import":"Importing Workspace...":"Connect Workspace":fa?"Continue":ta?"Create Workspace":"Connect Workspace";return a.jsx("div",{className:tn.standaloneWrapper,"data-theme":hn,children:a.jsx("div",{className:Qe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${mv})`},children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.setupHeaderRow,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsxs("h1",{className:Qe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:Qe.loginTitleAccent,children:"HQ"})]})]}),jr&&a.jsx("span",{className:Qe.runtimeIconBadge,title:jr.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":jr.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:re.createElement(fs,{size:16,"aria-hidden":!0})})]}),a.jsx("p",{className:Qe.loginSubtitle,children:a.jsx("strong",{children:qt})}),ar?a.jsx("p",{className:Qe.loginSubtitle,children:ar}):null,De&&a.jsx("p",{className:Qe.loginSubtitle,children:De}),Pe&&a.jsx("p",{className:Qe.loginError,children:Pe}),At&&a.jsxs("div",{className:Qe.optionGrid,children:[a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:Ne==="core",onChange:()=>je("core"),disabled:Re}),a.jsx("span",{children:jt("setup.coreModeOption",{workspaceLabel:Sr})})]}),a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:Ne==="operations",onChange:()=>je("operations"),disabled:Re}),a.jsx("span",{children:jt("setup.operationsModeOption")})]})]}),!we&&!At&&a.jsxs("div",{className:Qe.optionGrid,children:[mn&&a.jsxs("div",{className:Qe.optionGroup,children:[a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:vt==="local",onChange:()=>Ve("local"),disabled:Re}),a.jsxs("span",{children:["Create new local ",Sr.toLowerCase()]})]}),a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:vt==="cloud",onChange:()=>Ve("cloud"),disabled:Re}),a.jsxs("span",{children:["Sync existing cloud ",Sr.toLowerCase()]})]})]}),Jn?a.jsxs("div",{className:Qe.optionGroup,children:[!Er&&!Pt&&a.jsx("p",{className:Qe.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!Er&&Pt&&!gt&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Qe.inlineHint,children:"Sign in to choose one of your cloud projects."}),a.jsxs("div",{className:Qe.actionRowEnd,children:[a.jsx("button",{className:R.cancelBtn,disabled:Re,onClick:()=>{D(`/login?mode=login&next=${encodeURIComponent(on)}`,{replace:!0})},children:"Sign In"}),Qn&&a.jsx("button",{className:R.submitBtn,disabled:Re,onClick:()=>{D(`/login?mode=register&next=${encodeURIComponent(on)}`,{replace:!0})},children:"Register"})]})]}),!Er&&Pt&>&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:R.input,value:at,onChange:sr=>U(sr.target.value),disabled:Re||pe||Xe.length===0,children:[Xe.length===0&&a.jsx("option",{value:"",children:pe?"Loading cloud projects...":"No cloud projects found"}),Xe.map(sr=>a.jsxs("option",{value:sr.id,children:[sr.name," (",sr.id,")"]},sr.id))]}),a.jsx("div",{className:Qe.actionRowEnd,children:a.jsx("button",{className:R.cancelBtn,disabled:Re||pe,onClick:()=>{us()},children:"Refresh Cloud Projects"})}),Et&&a.jsx("p",{className:Qe.loginError,children:Et})]}),Er&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:Qe.inlineHint,children:['Importing "',Er.name,'" from cloud into local.']}),a.jsx("div",{className:Qe.optionGroup,children:Cs.map(sr=>a.jsx("p",{className:Qe.inlineHint,children:sr},sr))}),a.jsx("p",{className:Qe.inlineHint,children:Bt?"Finishing setup and opening your workspace.":bn||"Pulling tasks, taxonomies, and settings into local."}),!Bt&&$t&&a.jsx("p",{className:Qe.inlineHint,children:$t})]})]}):a.jsxs(a.Fragment,{children:[fa&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Qe.loginSubtitle,children:"Workspace name"}),a.jsx("input",{className:R.input,type:"text",value:Fe,placeholder:"Workspace name",onChange:sr=>yt(sr.target.value),disabled:Re}),a.jsx("p",{className:Qe.loginSubtitle,children:"Workspace description"}),a.jsx("textarea",{className:R.textarea,value:Oe,placeholder:"Workspace description (optional)",onChange:sr=>mt(sr.target.value),disabled:Re,rows:4})]}),ta&&a.jsxs("div",{className:Qe.optionGroup,children:[a.jsx("p",{className:Qe.loginSubtitle,children:"What are you working on?"}),a.jsxs("select",{className:R.input,value:nt,onChange:sr=>pt(sr.target.value),disabled:Re||Yt||Dr.length===0,children:[Dr.length===0&&a.jsx("option",{value:"",children:Yt?"Loading setup options...":"No setup options available"}),Dr.map(sr=>a.jsx("option",{value:sr.id,children:sr.label},sr.id))]}),Wt?a.jsx(a.Fragment,{children:Wt.description?a.jsx("p",{className:Qe.inlineHint,children:Wt.description}):null}):null,a.jsxs("div",{className:Qe.optionGroup,children:[a.jsx("p",{className:Qe.loginSubtitle,children:"Apply Setup Sections"}),a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:lt.categories,onChange:()=>xt(sr=>({...sr,categories:!sr.categories})),disabled:Re||!Wt?.categories.length}),a.jsx("span",{children:"Categories"})]}),Ui?a.jsx("p",{className:Qe.inlineHint,children:Ui}):null,a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:lt.types,onChange:()=>xt(sr=>({...sr,types:!sr.types})),disabled:Re||!Wt?.types.length}),a.jsx("span",{children:"Task Types"})]}),no?a.jsx("p",{className:Qe.inlineHint,children:no}):null,a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:lt.priorities,onChange:()=>xt(sr=>({...sr,priorities:!sr.priorities})),disabled:Re||!Wt?.priorities.length}),a.jsx("span",{children:"Priorities"})]}),zi?a.jsx("p",{className:Qe.inlineHint,children:zi}):null]}),Yt?a.jsx("p",{className:Qe.inlineHint,children:"Loading setup options…"}):null,Qt?a.jsx("p",{className:Qe.loginError,children:Qt}):null]}),!_t&&Pt&>&&fa&&a.jsxs("div",{className:Qe.optionGroup,children:[a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Ot,onChange:sr=>dr(sr.target.checked),disabled:Re}),a.jsx("span",{children:"Sync to cloud after setup"})]}),a.jsx("p",{className:Qe.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),a.jsxs("div",{className:Qe.authModeLinks,children:[ta?a.jsx("button",{className:R.cancelBtn,onClick:()=>{he(null),et(null),It("details")},children:"Back"}):ea?a.jsx("button",{className:R.cancelBtn,onClick:()=>{he(null),et(null),D("/",{replace:!0})},children:"Cancel"}):lr==="cloud"?a.jsx("button",{className:R.cancelBtn,onClick:async()=>{await Lr.logout(),D("/login",{replace:!0})},children:jt("setup.signOut")}):null,At?a.jsx("button",{className:R.submitBtn,disabled:Re||Zr&&!!Er&&!Ia,onClick:async()=>{Ce(!0),et(null),he(null);try{const sr=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:Ne}})}),Gn=await sr.json().catch(()=>({}));!sr.ok||Gn?.success===!1?he(Gn?.error||jt("setup.saveFailedWithStatus",{status:sr.status})):(et(jt("setup.globalSetupSaved")),await qr())}catch{he(jt("setup.saveFailed"))}finally{Ce(!1)}},children:jt(Re?"setup.saving":"setup.saveGlobalSetup")}):we?a.jsx("button",{className:R.submitBtn,disabled:Re,onClick:qr,children:jt("setup.retrySetupCheck")}):a.jsx("button",{className:R.submitBtn,disabled:Re||Zr&&!Er&&!gt,onClick:async()=>{if(Zr&&Er){if(!Ia)return;Ce(!0),et(`Retrying import for ${Er.name}...`),he(null);try{await Fn()}catch{et(null),he(`Failed to retry import for "${Er.name}".`)}finally{Ce(!1)}return}if(Jn){if(!Pt){he("Cloud workspace sync is unavailable right now."),Ce(!1);return}if(!gt){he("Sign in is required before syncing a cloud project."),Ce(!1);return}const sr=Xe.find(ms=>ms.id===at);if(!sr){he("Select a cloud project to sync."),Ce(!1);return}const Gn=await Hr({workspaceId:sr.id,name:sr.name||sr.id,description:sr.description||void 0});if(!Gn.success){he(Gn.error||jt("setup.saveWorkspaceFailed")),Ce(!1);return}const En=String(Gn.workspaceId||sr.id||"").trim();if(!En){he("Failed to resolve workspace id for sync setup."),Ce(!1);return}try{await On(En,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(ms){he(ms instanceof Error?ms.message:"Failed to configure workspace sync."),Ce(!1);return}Xr({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await qr(),pr({workspaceId:En,name:sr.name||sr.id}),wr(!1),et(`Importing ${sr.name||sr.id} from cloud...`),Ce(!1);return}if(fa){if(!Fe.trim()){he("Workspace name is required before continuing.");return}he(null),et(null),It("library");return}Ce(!0),et(null),he(null);{const sr=ea||er?.workspaceSetupState==="missing",Gn=ea||$n&&sr,En=Gn?await cn(Fe,Oe||void 0):null,ms=Gn?null:await Hr({workspaceId:sr?void 0:er?.workspaceId,name:Fe,description:Oe}),_n=En||ms;if(_n?.success){const ja=String(En?.workspace?.id||ms?.workspaceId||er?.workspaceId||"").trim();if(!ja){he("Failed to resolve workspace id for setup."),Ce(!1);return}if(!!Wt&&(lt.categories||lt.types||lt.priorities)&&Wt){const $a=await Yn.onApplySystemTaxonomyPack({pack:Wt,sections:lt,remapExistingValuesToDefault:!0,workspaceIdOverride:ja});if(!$a?.success){he($a?.error||"Failed to apply setup library."),Ce(!1);return}}const Ts=!!(!_t&&Ot&&Pt&>),Wa=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:ja,stateKey:"workspace-sync",patch:{version:2,enabled:Ts,phase:Ts?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),ka=await Wa.json().catch(()=>({}));if(!Wa.ok||ka?.success===!1){he(ka?.error||`Failed to configure workspace sync (${Wa.status})`),Ce(!1);return}Xr({enabled:Ts,phase:Ts?"provision-local":"idle",setupIntent:null,pullCursor:null}),et(Ts?`${Sr} setup saved. Cloud sync enabled.`:jt("setup.workspaceSetupSaved",{workspaceLabel:Sr})),ea&&(await qr(),await Ca(!0),en(ut,{replace:!0}))}else{if(_n?.code==="WORKSPACE_LIMIT_REACHED"){Ce(!1),D(P,{replace:!0});return}he(_n?.error||jt("setup.saveWorkspaceFailed"))}}Ce(!1)},children:Fs})]})]})})})}return a.jsx(Nre,{...Lr,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l})}function Mre(e){return ux()?a.jsx(ZA,{...e}):a.jsx(fx,{children:a.jsx(ZA,{...e})})}const kT={},JA="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=JA,console.info(`[Taskforce] Build marker: ${JA}`));function Lre(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return Iw(kT).apiBaseUrl||void 0}function Ore(e){const t=Iw(kT),r=t.cloudAuthBaseUrl;if(r)if(typeof window<"u"){const n=window.location.hostname.toLowerCase(),s=n==="localhost"||n==="127.0.0.1"||n==="::1",i="".trim().toLowerCase()==="true";if(!s&&!i)try{const l=new URL(r,window.location.origin);if(l.origin!==window.location.origin)console.warn(`[Taskforce] Ignoring cross-origin cloud auth base in hosted runtime: ${l.origin}`);else return r}catch{}else return r}else return r;if(t.baseUrl)return t.baseUrl;if(e)return e}function Bre(){const e=Lre(),t=Ore(e);return a.jsx(mx,{children:a.jsx(Mre,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}o0.createRoot(document.getElementById("root")).render(a.jsx(re.StrictMode,{children:a.jsx(Bre,{})}));export{RN as $,rne as A,jv as B,Ev as C,rf as D,TI as E,Xre as F,xI as G,Zs as H,df as I,Lw as J,KP as K,PI as L,Ko as M,VP as N,Qre as O,tne as P,jI as Q,Jw as R,Ow as S,fi as T,Pv as U,ene as V,Zq as W,QY as X,h9 as Y,b_ as Z,QV as _,ay as a,Km as a$,_I as a0,tX as a1,XV as a2,one as a3,ine as a4,cne as a5,lne as a6,dne as a7,BC as a8,np as a9,Ss as aA,uT as aB,fte as aC,Pte as aD,hT as aE,vp as aF,rb as aG,Dd as aH,dT as aI,J_ as aJ,rw as aK,Dee as aL,Mee as aM,Lee as aN,SY as aO,Cw as aP,Yv as aQ,xA as aR,RA as aS,UJ as aT,oX as aU,CC as aV,Yg as aW,Kre as aX,Gre as aY,Pg as aZ,qv as a_,OC as aa,pf as ab,iJ as ac,kI as ad,yI as ae,Jre as af,p9 as ag,J1 as ah,qre as ai,sne as aj,X8 as ak,Yre as al,Zre as am,fT as an,cy as ao,hp as ap,Bte as aq,tw as ar,nb as as,WA as at,ty as au,Sg as av,Go as aw,ws as ax,yte as ay,Ate as az,bo as b,y_ as b0,ip as b1,p_ as b2,m_ as b3,w8 as b4,b8 as b5,Y9 as b6,JV as b7,zP as b8,dR as c,dp as d,Sx as e,YR as f,ane as g,Cr as h,nf as i,x8 as j,hre as k,YI as l,gre as m,Zz as n,Sd as o,oN as p,nne as q,aa as r,Wm as s,R as t,R8 as u,$G as v,py as w,qR as x,Rv as y,HN as z};
|