@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.
Files changed (32) hide show
  1. package/dist/server/routes/localService.js +1 -0
  2. package/dist/server/routes/syncPushRoutes.d.ts +3 -0
  3. package/dist/server/routes/syncPushRoutes.js +8 -2
  4. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +1 -0
  5. package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +7 -6
  6. package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +2 -2
  7. package/dist/sync/engine/workspaceSyncEngineLocalApply.d.ts +1 -0
  8. package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +6 -0
  9. package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +34 -1
  10. package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +2 -2
  11. package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +4 -1
  12. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
  13. package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +53 -10
  14. package/dist/sync/syncService.d.ts +1 -0
  15. package/dist/sync/syncService.js +5 -2
  16. package/dist/ui/assets/{AiIdentityRosterCard-CDMPtnbC.js → AiIdentityRosterCard-Cfvb9Nuv.js} +1 -1
  17. package/dist/ui/assets/{AiProfilesModule-Cww85C4E.js → AiProfilesModule-0oR70eFG.js} +1 -1
  18. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-Dt9TKYSH.js → AnnotatedAttachmentWorkspace-C33iH_r_.js} +1 -1
  19. package/dist/ui/assets/{AssetTraySortControl-CKgapnxu.js → AssetTraySortControl-BAqxUtke.js} +1 -1
  20. package/dist/ui/assets/{ContextAttachmentManager-T-cEVcOZ.js → ContextAttachmentManager-BudIbOR9.js} +1 -1
  21. package/dist/ui/assets/{DocumentWorkspace-HD4MUjAZ.js → DocumentWorkspace-A8dFQyId.js} +1 -1
  22. package/dist/ui/assets/{EntityActivityTimeline-_V0zfMuh.js → EntityActivityTimeline-g7vtdsx1.js} +1 -1
  23. package/dist/ui/assets/{PlanningModule-mTkBygsB.js → PlanningModule-D-DeQs4F.js} +1 -1
  24. package/dist/ui/assets/{PlansPage-Btiq06VO.js → PlansPage-BWmfGi0Z.js} +1 -1
  25. package/dist/ui/assets/{TaskContextUpload-C00NVUpn.js → TaskContextUpload-BA_lQmS9.js} +1 -1
  26. package/dist/ui/assets/{TaskSettings-Cp-L-4xh.js → TaskSettings-DAlH4YIP.js} +1 -1
  27. package/dist/ui/assets/{TaskforceAgentsModule-Coq9-PUp.js → TaskforceAgentsModule-DmeCf6pJ.js} +1 -1
  28. package/dist/ui/assets/{WorkflowManagerModule-CuqRzMmM.js → WorkflowManagerModule-p08eDOaa.js} +1 -1
  29. package/dist/ui/assets/index-GHJgcW3j.js +7 -0
  30. package/dist/ui/index.html +1 -1
  31. package/package.json +1 -1
  32. package/dist/ui/assets/index-DSQINwt9.js +0 -7
@@ -0,0 +1,7 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-g7vtdsx1.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-BA_lQmS9.js","assets/ContextAttachmentManager-BudIbOR9.js","assets/TaskContextUpload-qmBeUw3u.css","assets/TaskSettings-DAlH4YIP.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-C33iH_r_.js","assets/AssetTraySortControl-BAqxUtke.js","assets/AssetTraySortControl-B9k5caQW.css","assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css","assets/DocumentWorkspace-A8dFQyId.js","assets/DocumentWorkspace-BIBGBfd7.css","assets/TaskforceAgentsModule-DmeCf6pJ.js","assets/AiIdentityRosterCard-Cfvb9Nuv.js","assets/TaskforceAgentsModule-b-8R25cJ.css","assets/WorkflowManagerModule-p08eDOaa.js","assets/WorkflowManagerModule-DF10XENz.css","assets/AiProfilesModule-0oR70eFG.js","assets/PlanningModule-D-DeQs4F.js","assets/PlanningModule-CoIR9hbV.css","assets/PlansPage-BWmfGi0Z.js","assets/PlansPage-C2nkK2Bp.css"])))=>i.map(i=>d[i]);
2
+ import{r as o,j as a,R as ne,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(g=>String(g||"").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),h=f.some(g=>Ox(g))?"image":c.startsWith("D-")||f.some(g=>Bx(g))?"document":"attachment";return[{key:m,label:d,kind:h}]}):[]}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 Kre(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 qre(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,""),h=e.commentCount??r?.length??0,g=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:h,checklistCount:g,completedChecklistCount:y,attachmentCount:k,relationshipCount:v,latestActivity:A,detailRevision:e.detailRevision||JSON.stringify([String(e.updatedAt||e.createdAt||""),h,f(r?.map(b=>b.timestamp)||[]),g,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(g=>g.id===s),d=(i?t:r).some(g=>g.id===s);if(c&&!d&&tp(c)===tp(l))return{tasks:t,archivedTasks:r};const m=g=>[...g].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(g=>g.id===s)?t.filter(g=>g.id!==s):t,h=r.some(g=>g.id===s)?r.filter(g=>g.id!==s):r;return i?{tasks:f,archivedTasks:m([...h,l])}:{tasks:m([...f,l]),archivedTasks:h}}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")),h=$u(ac(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),g=$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,h,f,m,v),w=Kc(g,A,b),P=Kc(d,m,f,h,b),E=Kc(d,f,m,b),D=Kc(h,m,f,b),j=s==="local"?Kc(k,d,f,m,y,h,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(h=>[n(h),h])),i=new Map(t.map(h=>[n(h),h])),l=new Map(r.map(h=>[n(h),h])),c=new Set([...s.keys(),...l.keys(),...i.keys()]),d=new Map,m=[];for(const h of c){const g=s.get(h),y=i.get(h),k=l.get(h),v=kv(g,y,k);v.value!==void 0&&d.set(h,v.value),v.conflict&&m.push(h)}return{items:[...r.map(n),...t.map(n).filter(h=>!l.has(h))].filter((h,g,y)=>y.indexOf(h)===g&&d.has(h)).map(h=>d.get(h)),conflictKeys:m,remoteChanged:!Rl(e,r)}}function gR(e,t,r){const n={...r},s=[],i=new Set;for(const f of hR){const h=kv(e[f],t[f],r[f]);n[f]=h.value,h.conflict&&s.push({field:f}),h.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 h=kv(e.taxonomies[f],t.taxonomies[f],r.taxonomies[f]);h.value!==void 0&&(c[f]=h.value),h.conflict&&s.push({field:"taxonomies",key:f}),h.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"?h=>h.id:h=>Dg(h),c=s[i.field],m=t[i.field].find(h=>l(h)===i.key),f=c.filter(h=>l(h)!==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 h=MR(e.filterTaxonomies);h&&(t.filterTaxonomies=h);const g=BR(e.filterTaxonomySignature);if(g&&(t.filterTaxonomySignature=g),(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 h=f?Nl({coverageProfileId:f.coverageProfileId,coverageVersion:f.coverageVersion,coverageDigest:f.coverageDigest}):null;if(f?.owner==="v3"&&!h)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 g=[];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"}};g.push({entry:S,taskId:L})}const y=g.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"&&h?h.coverage:void 0,combinedExcludedProjections:f?.owner==="v3"&&h?[...h.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,h=new Set,g=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),h=new Set(_.data.activeDeleteTaskIds),g=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)&&!h.has(T)}return _.op==="delete"?!h.has(String(_.taskId||"").trim()):_.op==="task-relationship-upsert"||_.op==="task-relationship-delete"?!g.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 h=await d.json().catch(()=>({}));return{ok:!0,status:d.status,data:h,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 g1(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 fI(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("The V2 push authoritative echo response is invalid.");const r=e,n=r.settledTaskDeleteIds===void 0?[]:r.settledTaskDeleteIds;if(!Array.isArray(n)||n.some(i=>typeof i!="string"||i.trim().length===0||i!==i.trim())||new Set(n).size!==n.length||n.some(i=>!t.includes(i)))throw new TypeError("The V2 push terminal task settlement identities are invalid.");const s=new Set(n);return{appliedTaskUpserts:g1(e,t.filter(i=>!s.has(i))),settledTaskDeleteIds:[...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 y1(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(h=>h.op==="upsert"),n=r.map(h=>String(h.task.id||"").trim()),s=[...e.settledTaskDeleteIds||[]];if(s.length>0&&!e.excludedProjections?.includes("task/root-v1")||s.some(h=>!n.includes(h))||new Set(s).size!==s.length)throw new TypeError("The V2 push terminal task settlement identities are invalid.");const i=new Set(s),l=r.filter(h=>!i.has(String(h.task.id||"").trim()));if(l.length!==e.appliedTaskUpserts.length)throw new TypeError("The V2 push authoritative settlement projection is incomplete.");const c=l.map(h=>({archived:h.archived,task:mI(h.task,h.task.referenceNumber!==void 0&&h.task.referenceNumber!==null)})),d=new Set(e.excludedProjections||[]),m=l.map(h=>rS({archived:h.archived,task:h.task,preserveReferenceNumber:h.task.referenceNumber!==void 0&&h.task.referenceNumber!==null,excludedProjections:d})),f=e.appliedTaskUpserts.map((h,g)=>rS({archived:h.archived,task:h.task,preserveReferenceNumber:l[g]?.task.referenceNumber!==void 0&&l[g]?.task.referenceNumber!==null,excludedProjections:d}));if(pn(f)!==pn(m))throw new TypeError("The V2 push authoritative settlement does not match the canonical request state.");return{version:1,operationIdentity:t,taskUpserts:c,...s.length>0?{settledTaskDeleteIds:s}:{}}}const _v="V1:AESGCM:",Dw="AES-GCM",k1=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(k1)),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 v1(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 w1=3e4,b1=60*6e4;function S1(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(b1,w1*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 A1(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 C1(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(A1(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 I1(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 _1(e,t,r){return hI({contractVersion:1,workspaceId:e,repairMode:r,changes:t},e)}const T1=64,dS=4*1024*1024,x1=45*1024*1024,R1=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 P1(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 j1(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 E1(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 R1+new TextEncoder().encode(JSON.stringify({workspaceId:e.workspaceId,idempotencyKey:"0".repeat(64),changes:t,repairMode:e.repairMode===!0,repair:e.repairMode===!0})).byteLength}function N1(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>x1)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(h=>h.safe))>dS;(d||i.length>=T1||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 D1(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=j1(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=I1(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 g=n;if(typeof process<"u"&&Tl?.TASKFORCE_SYNC_KEY){const H=Tl.TASKFORCE_SYNC_KEY,M=[];for(const oe of g)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);g=M}let y=N1(e,n,g);if(i){let H=0;y={oversizedChangeIndex:null,batches:i.map(M=>M.map(oe=>{const K={plain:oe,safe:g[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=>_1(e.workspaceId,M.map(oe=>oe.plain),e.repairMode===!0)));const H=P1(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(Q=>Q.plain),K=M.map(Q=>Q.safe),ee=hg(oe),te=A[H];if(S.has(te)||D.has(te)){L+=1,_+=oe.length;continue}z.length>0&&await t.retainTransferReceipts?.({workspaceId:e.workspaceId,receipts:z});const me=async()=>{const Q=Date.now(),ce=await t.pushWorkspaceChanges({workspaceId:e.workspaceId,idempotencyKey:te,pushBoundary:b,changes:K,ownership:r,repairMode:e.repairMode===!0});return f+=Date.now()-Q,ce};let _e=await me(),$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 me(),$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 Q=Sa(_e.data),ce=Array.from(new Set(oe.map(N=>N.op))),$=oe.filter(E1).length,V=$===oe.length?"content":$===0?"metadata":"mixed",B={success:!1,status:_e.status,error:typeof Q.error=="string"?Q.error:void 0,code:typeof Q.code=="string"?Q.code:void 0,batchProgress:{totalBatches:y.batches.length,completedBatches:L,completedChanges:_,failedBatchIndex:H,failedChangeCount:oe.length,failedOperations:ce,failureDomain:V},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||=B,V!=="content")return B;continue}const ye=Sa(_e.data);if(Array.isArray(ye.emittedEventIds))for(const Q of ye.emittedEventIds.map(ce=>String(ce||"").trim()).filter(Boolean))k.add(Q);const ge=fI(ye,ee),le=ge.appliedTaskUpserts;if(v.push(...le),e.onAcceptedBatchSettled){if(!_e.transferReceipt)throw new Error("Accepted V2 push batch is missing its atomic settlement receipt.");await e.onAcceptedBatchSettled({operationIdentity:te,settlementIdentityFingerprint:await hI(y1({operationIdentity:te,changes:oe,appliedTaskUpserts:le,settledTaskDeleteIds:ge.settledTaskDeleteIds,excludedProjections:d})),appliedTaskUpserts:le,settledTaskDeleteIds:ge.settledTaskDeleteIds,transferReceipt:_e.transferReceipt,pushBoundary:b,excludedProjections:d});const Q=z.indexOf(_e.transferReceipt);Q>=0&&z.splice(Q,1),S.add(te)}else if(_e.transferReceipt&&le.length===0){await t.acknowledgeNonApplyingTransferReceipts({workspaceId:e.workspaceId,receipts:[_e.transferReceipt]});const Q=z.indexOf(_e.transferReceipt);Q>=0&&z.splice(Q,1),D.add(te),await e.onNonApplyingBatchAcknowledged?.({operationIdentity:te,acknowledgedOperationIdentities:A.filter(ce=>D.has(ce))})}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 M1(e){const t=e.remoteServices||Nw(e.resolveCloudAuthUrl);let r=[];const n=ee=>{ee.transferReceipt&&r.push(ee.transferReceipt)},s=async ee=>{if(r.length===0)return;const te=r;await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:te,errorCode:ee}),r=[]},i=e.localServices?.readContentManifest||oI,l=e.localServices?.applyV2Batch||lI,c=e.localServices?.listContentPullObligations||KC,d=e.localServices?.recordContentPullObligationFailures||qC,m=async(ee,te)=>{const me=await d(e.workspaceId,ee,te);if(!me.ok)throw new Error(String(me.data?.error||"Failed to persist content-pull retry state."))};let f=e.cursor,h=!0,g=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 ee=await c(e.workspaceId,100);if(!ee.ok)throw new Error(String(ee.data?.error||`Local content-pull obligation read failed (${ee.status}).`));const te=Array.isArray(ee.data?.obligations)?ee.data.obligations:[];te.forEach(_e=>{K.add(qc(_e))});const me=te.filter(_e=>S1(_e));if(H.obligationsAttempted=me.length,me.length>0){const _e=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:me.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}`,$])),le=new Map(me.map($=>[qc($),$]));if(ge.size!==ye.length||ye.some($=>!le.has(`${$.kind}:${$.path}`)))throw await m(me.map(qc),"Content response contained duplicate or unexpected authoritative metadata."),new Error("Workspace content obligation response contained invalid authoritative metadata.");const Q=[],ce=[];for(const $ of Ye){if($.op!=="document-upsert"&&$.op!=="asset-upsert")throw await m(me.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(!le.has(B))throw await m(me.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(Q.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(le.get(B)?.sourceWatermark||"")||String($.updatedAt||"")<String(le.get(B)?.sourceWatermark||""))throw await m([B],"Authoritative content response was stale or failed verification."),new Error(`Workspace content obligation verification failed: ${B}.`);Q.push(B);const Ae=le.get(B);ce.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:ce,...$?{completionGroup:$}:{}})}catch(N){throw await m(Q,String(N?.message||"Content obligation apply failed.")),N}if(!V.ok||Sa(V.data).success===!1)throw await m(Q,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=Q.length;const B=me.map(qc).filter(N=>!Q.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(me.map(qc),"Authoritative content body remains unavailable.")}}else await s("WORKSPACE_SYNC_CONTENT_OBLIGATION_RETRY"),await m(me.map(qc),String(Sa(_e.data).error||`Content pull failed (${_e.status}).`))}H.obligationsRemaining=Math.max(0,te.length-H.obligationsResolved)}if(e.contentMode==="manifest"){const ee=await i(e.workspaceId);if(!ee.ok)throw new Error(`Local workspace content manifest failed (${ee.status||0}).`);const te=Array.isArray(ee.data?.entries)?ee.data.entries:[];oe=new Map(te.map(me=>[`${me.kind}:${me.path}`,me]))}for(;h&&g<M;){const ee=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 te=await ee();if(n(te),!te.ok&&te.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(await s("WORKSPACE_SYNC_V2_PULL_RETRY"),te=await ee(),n(te)),!te.ok){await s("WORKSPACE_SYNC_V2_PULL_REJECTED");const B=Sa(te.data);return{success:!1,kind:"pull_http",status:te.status,errorCode:typeof B.code=="string"?B.code:void 0,error:typeof B.error=="string"?B.error:void 0,retryAfterMs:te.retryAfterMs,transient:di(te.status),cursor:f,pages:g,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 me=te.data||{};if(!n1(me.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:g,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(me?.changes)?me.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=v1(q,oe.get(Z));G.shouldFetch?G.reasons.every(ae=>ae==="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:[],ae=Array.isArray(Z.missing)?Z.missing:[];if(ae.length>0){const Le="path"in ae[0]?ae[0].path:ae[0].assetId;throw new Error(`Workspace content changed or disappeared during reconciliation: ${ae[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=me?.diagnostics&&typeof me.diagnostics=="object"?me.diagnostics:null;Y=ye;const ge=Array.isArray(me?.workspaceMembers),le=ge?me.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 Q=me&&"nextCursor"in me&&(me.nextCursor===null||typeof me.nextCursor=="string")?me.nextCursor:f,ce=_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&&!me?.hasMore,V=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:Q,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:le}:{},repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,...$?{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(z)}}:{},...V?{completionGroup:V}:{},...Ye.length>0?{contentPullObligations:Ye}:{},...ce.length>0?{contentPullResolutionClaims:ce}:{}}),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(ae=>ae.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:be,cursor:f,pages:g,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(ae=>{if(ae.endsWith(":network"))return!0;const Te=ae.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:g,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:g,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),ce.forEach(q=>{K.delete(qc(q))})}r=[],me&&"nextCursor"in me&&(me.nextCursor===null||typeof me.nextCursor=="string")&&(f=me.nextCursor),h=!!me?.hasMore,g+=1}return{success:!0,hasMore:h,syncedAt:new Date().toISOString(),cursor:f||null,pages:g,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(ee){let te=ee;try{await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED")}catch(me){te=me}return{success:!1,kind:"exception",status:0,transient:!0,error:String(te?.message||te||"Workspace sync pull failed unexpectedly."),cursor:f||null,pages:g,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 L1(e){const t=await c1(e.resolveCloudAuthUrl);if(!t.ok){const g=Number(t.status||0);return{success:!1,error:`Sync pull failed (${t.status})`,statusCode:t.status,retryAfterMs:t.retryAfterMs,transient:di(g)}}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 g=Number(m.status||0);return{success:!1,error:`Sync push failed (${m.status})`,statusCode:m.status,retryAfterMs:m.retryAfterMs,transient:di(g)}}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 O1(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 B1(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 W1(e){const t=B1(e);return!t||!["users/","workspaces/","system/","tmp/","quarantine/"].some(n=>t.startsWith(n))?null:t}function $1(e){return String(e||"").trim()}function F1(e,t){return $1(e).replace(/[^a-zA-Z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||t}function U1(e,t){const r=F1(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 z1(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 H1(e,t){return U1(e,t)}function V1(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 G1(e){return String(e||"").match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i)?.[2]}function K1(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=z1(l,r);!c||!H1(c,t)||n.has(c)||n.set(c,{updatedAt:i,assetId:G1(c),originalFilename:c.split("/").pop()||c,mimeType:V1(c)})}}return n}const q1=new Set(["assetId","path","caption","displayName","originalFilename","referenceNumber","referenceLabel","linkRole"]);[...q1];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 g=t.trim();if(!g)throw new Error(`Planning attachment ${r} path is required.`);return g}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),h=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}:{},...h?{linkRole:h}:{}}})}}function Y1(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 Z1(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 J1(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=Z1(r.toolActivity);return n==="assistant"&&l.length>0&&(i.toolActivity=l),[i]}):[]}const X1=["chat_app","ide","cli","coding_tool","agent"],Q1={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},eP={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function tP(e){return typeof e=="string"&&X1.includes(e)}function yI(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":tP(t)?t:null}function Yre(e){return Q1[e]}function Zre(e){return e??"unclassified"}function Jre(e){return eP[e]}const rP=["cloud_metered","local_unmetered"],nP={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function aP(e){return typeof e=="string"&&rP.includes(e)}function kI(e){if(typeof e!="string")return null;const t=e.trim();return aP(t)?t:null}function Xre(e){return nP[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 sP(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 oP(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 iP(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 cP(e){return Array.isArray(e)?e:void 0}function lP(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:sP(t.isArchived),taxonomies:oP(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:iP(t.comments),attachments:cP(t.attachments),...r?{cardCoverAssetId:wm(t.cardCoverAssetId)}:{},checklistItems:lP(t.checklistItems)}}function dP(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 uP(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 fP(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 mP(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 pP(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:dP(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:fP(r.comments),attachments:mP(r.attachments),checklistItems:uP(r.checklistItems),isArchived:t?"1":"0"})}function hP(...e){return e.reduce((t,r)=>{const n=bs(r)||"";return t?n&&n>t?n:t:n},"")}function gP(e){const t=e||{};return hP(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 yP(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=>pP(e,!!e?.isArchived)},Vm={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>gP(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 kP(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 vP(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||[]),h=new Map,g=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),h.set(St,ci.getWatermark(u)),g.set(St,ci.getChangeKey({...u,isArchived:!1})))}for(const u of e.archivedTasks||[]){const St=String(u?.id||"").trim();St&&(b.add(St),h.set(St,ci.getWatermark(u)),g.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,ee=(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),te=e.lastPushedPlanningIdentityWatermarks,me=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 me.set(St,u.updatedAt),{op:"planning-identity-upsert",identity:u,identityKey:St}}).filter(u=>te?.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,le=e.lastPushedAiProfileChangeKeys,Q=!ge||ge.size===0,ce=(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=>Q?!0:mS(Vm,u.profile,{watermarks:ge,changeKeys:le})),$=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())),ae=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,ue=!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=>ue?!0:Ee.get(u.session.id)!==u.session.updatedAt),de=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=>ue?!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})),...de],J=new Set([...Ie,...de.map(u=>u.sessionId)]),Ze=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],re=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&&!re.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:J1(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=kP(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,...ee,..._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}]:[],...ce,...q,...Array.from(B).map(u=>({op:"document-delete",path:u,deletedAt:t})),...st,...Array.from(ae).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(h.entries()).filter(([u])=>!r.has(u))),currentTaskChangeKeys:new Map(Array.from(g.entries()).filter(([u])=>!r.has(u))),currentTaskRelationshipChangeKeys:j,currentTaxonomyChangeKey:Zt,deleteTaskIds:E,currentInitiativeIds:L,currentInitiativeWatermarks:_,currentWorkstreamIds:H,currentWorkstreamWatermarks:M,currentPlanningIdentityWatermarks:me,currentAiProfileIds:$e,currentAiProfileWatermarks:Ye,currentAiProfileChangeKeys:ye,currentDocumentPaths:$,deleteDocumentPaths:B,currentDocumentWatermarks:N,currentAssetPaths:Z,deleteAssetPaths:ae,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:ee.length}),planningIdentities:br({currentCount:me.size,baselineCount:te?.size||0,upsertCount:_e.length}),aiProfiles:br({currentCount:$e.size,baselineCount:ge?.size||0,upsertCount:ce.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:ae.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 wP(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(),h=String(c?.createdAt||"").trim();if(!d||!m||!f||!h)continue;const g={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:h},y=s.get(d);(!y||g.createdAt>y.createdAt)&&s.set(d,g)}}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(),h=String(c?.createdAt||"").trim();if(!d||!m||!f||!h)continue;const g={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:h},y=s.get(d);(!y||g.createdAt>y.createdAt)&&s.set(d,g)}}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(),h=String(c?.createdAt||"").trim();if(!d||!m||!f||!h)continue;const g={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:h},y=s.get(d);(!y||g.createdAt>y.createdAt)&&s.set(d,g)}}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 bP(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 h of n){const g=String(h?.taskId||"").trim(),y=String(h?.deletedAt||"").trim();g&&(d.add(g),Number.isFinite(Date.parse(y))&&m.set(g,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(h=>h.path)),currentAssetPaths:yS(e.currentAssetPaths,c.map(h=>h.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 SP(e,t){return new Set(K1(Array.from(e),t,r=>W1(String(r||"").trim())).keys())}function AP(e){const{snapshot:t,baseline:r}=e,n=e.forceAllAiProfiles===!0,s=n?SP(t.aiProfiles,t.workspaceId):new Set,i=ko(r.lastPushedAssetPaths),l=ss(r.lastPushedAssetWatermarks),c=ko(r.lastPushedDocumentPaths),d=ss(r.lastPushedDocumentWatermarks);for(const h of[...s,...e.forceAssetPaths||[]])i.delete(h),l.delete(h);for(const h of e.forceDocumentPaths||[])c.delete(h),d.delete(h);const m=structuredClone(vP({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 wP({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 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=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 IP(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 _P(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 TP(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 xP(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 RP(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 PP(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=>RP(s)).filter(s=>Array.isArray(s)):[];return{taskIds:PP(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 jP(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=jP(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 EP="taskforce.sync.lease.v1",NP="taskforce.sync.completed.v1",DP="taskforce.sync.lease.v1",MP=2500,LP=9e3,OP=()=>!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`${EP}.${e}`}function SS(e,t){return`${NP}.${e}.${t}`}function BP(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 WP(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 $P(e,t,r,n){return{ownerId:e,workspaceId:t,operation:r,heartbeatAt:new Date(n).toISOString(),expiresAt:new Date(n+LP).toISOString()}}function FP(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 UP(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:r,setWorkspaceSyncPhase:n,setWorkspaceSyncSetupIntent:s,setWorkspaceLastPullAt:i,setWorkspaceLastPushAt:l,setWorkspaceLastErrorMessage:c,isWorkspaceOperationAuthorized:d=OP}=e,[m,f]=o.useState(null),h=o.useRef(null),g=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,g.current=null,h.current!==null&&typeof window<"u"&&(window.clearTimeout(h.current),h.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 ae=O1(G),Te=Number(Z?.minDelayMs),Le=Number.isFinite(Te)&&Te>0?Math.max(ae,Math.floor(Te)):ae,Ue=Date.now()+Le;g.current=Ue,f(new Date(Ue).toISOString()),h.current!==null&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>{h.current=null,g.current=null,f(null),d()&&q()},Le)},[d]),M=o.useCallback(()=>{const q=g.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)?WP(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 ae=BP(window.localStorage.getItem(SS(G,Z)));return ae?.workspaceId===G&&ae.operation===Z?ae:null}catch{return null}},[]),ee=o.useCallback(q=>{const Z=String(q||"").trim();if(Z)try{z.current?.postMessage({workspaceId:Z})}catch{}},[]),te=o.useCallback((q,Z)=>{const G=String(q||"").trim();if(Il(G))try{z.current?.postMessage({kind:"state",workspaceId:G,state:AS(Z)})}catch{}},[]),me=o.useCallback((q,Z,G=new Date().toISOString())=>{if(typeof window>"u")return;const ae=String(q||"").trim();if(!(!Il(ae)||!Number.isFinite(Date.parse(G))))try{window.localStorage.setItem(SS(ae,Z),JSON.stringify({workspaceId:ae,operation:Z,completedAt:new Date(G).toISOString()}))}catch{return}},[]),_e=o.useCallback((q,Z,G,ae=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<=ae&&ae-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 ae=$P(S.current,G,Z,Date.now());try{window.localStorage.setItem(Fk(G),JSON.stringify(ae))}catch{return null}return ee(G),ae},[ee]),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 ae=oe(G),Te=ae?.ownerId===S.current;if(!(!Z?.force&&ae&&!Te)){Ye();try{window.localStorage.removeItem(Fk(G))}catch{}L.current=null,_.current=null,ee(G)}},[ee,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(),ae=_.current;if(!G||!ae){Ye();return}if(oe(G)?.ownerId!==S.current){Ye(),L.current=null,_.current=null;return}$e(G,ae)},MP),L.current=q,_.current=Z)},[d,oe,Ye,$e]),le=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 ae=oe(G);if(ae?.ownerId===S.current)return $e(G,Z)?(ge(G,Z),!0):!1;if(ae&&!FP(ae)||!$e(G,Z))return!1;const Ue=oe(G);return!Ue||Ue.ownerId!==S.current?!1:(ge(G,Z),!0)},[d,oe,ge,$e]),Q=o.useCallback(q=>{ye(q,{force:!0})},[ye]),ce=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,ae=q.revision;if(ae){const Te=TP(ae,G);if(Te<0||Te===0&&!Z?.allowEqualRevision)return!1}else if(G||!Z?.allowUnversioned)return!1;return j.current=q,ce(q),!0},[ce]),V=o.useCallback(q=>{const Z=Uk(j.current,q);return ce(Z),Z},[ce]),B=o.useCallback(()=>j.current,[]),N=o.useCallback(async q=>{const Z=Uk(j.current,{...q,revision:xP(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}),ae=G.response,Te=G.payload;if(G.skipped)return $(Z,{allowEqualRevision:!0})&&te(t,Z),j.current;if(!ae)throw new Error("Failed to persist workspace sync state (missing response)");if(!ae.ok||Te?.success===!1)throw new Error(Te?.error||`Failed to persist workspace sync state (${ae.status})`);const Le=Te?.state&&typeof Te.state=="object"&&!Array.isArray(Te.state)?$k(Te.state).state:Z;return $(Le,{allowEqualRevision:!0})&&te(t,Le),j.current},[$,te,t]),be=o.useCallback(async()=>{if(!Il(t)){const q=yg();j.current=q,ce(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(DP);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 ae=$k(G.state);$(ae.state)},()=>{q.onmessage=null,q.close(),z.current===q&&(z.current=null)}},[$,t]),o.useEffect(()=>()=>{h.current!==null&&typeof window<"u"&&(window.clearTimeout(h.current),h.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:ce,saveWorkspaceCloudSyncSettings:Ae,acquireWorkspaceSyncLease:le,releaseWorkspaceSyncLease:ye,forceClearWorkspaceSyncLease:Q,readWorkspaceSyncLease:oe,readWorkspaceSyncCompletion:K,recordWorkspaceSyncCompletion:me,wasWorkspaceSyncOperationCompletedRecently:_e}}class zP{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,[h,g]=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 zP),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 le=M(ge.type),Q=M(ye.type);if(Q<le)return;Q===le&&(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 le=D.current;if(!P.current||typeof le!="function")return;const Q=P.current;P.current=null,le(Q)},80)},K=ye=>{try{const ge=JSON.parse(String(ye.data||""));return!ge||typeof ge!="object"?null:ge}catch{return null}},ee=ye=>{const ge=typeof ye.serverEpoch=="string"?ye.serverEpoch.trim():"",le=Number(ye.seq);!ge||!Number.isFinite(le)||le<0||(A.current=`${ge}:${Math.floor(le)}`,b.current=!1)},te=ye=>{const ge=typeof ye.entityType=="string"?ye.entityType.trim():"";if(!ge)return null;const le=Array.isArray(ye.affectedCollections)?ye.affectedCollections.map(ce=>typeof ce=="string"?ce.trim():"").filter(Boolean):void 0,Q=Number(ye.dataVersion);return{entityType:ge,changeType:typeof ye.changeType=="string"?ye.changeType.trim():void 0,entityIds:Array.isArray(ye.entityIds)?ye.entityIds.map(ce=>typeof ce=="string"?ce.trim():"").filter(Boolean):[],affectedCollections:le,lifecycleTransition:typeof ye.lifecycleTransition=="string"?ye.lifecycleTransition.trim():void 0,dataVersion:Number.isFinite(Q)?Q:void 0}},me=()=>{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},le=A.current;le&&(ge.cursor=le),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)),le=Math.max(ge,Math.floor(i)),Q=Math.min(le,ge*Math.pow(2,Math.max(0,ye-1)));g(ye>=l?"degraded-fallback":"reconnecting"),k.current=window.setTimeout(()=>{z||(k.current=null,Ye())},Q)},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,g("connected"),ye.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:_,userId:f||void 0})),_e(ye)}),ye.addEventListener("message",ge=>{const le=K(ge);if(!le||typeof le.type!="string")return;const Q=typeof le.workspaceId=="string"?le.workspaceId.trim():_;if(!(!Q||Q!==_)){if(le.type==="taskforce:update"){oe({type:"taskforce:update",workspaceId:_,eventId:typeof le.eventId=="string"?le.eventId.trim():void 0});return}if(le.type==="taskforce:mutation"){const ce=E.current.process({eventId:le.eventId,serverEpoch:le.serverEpoch,seq:le.seq});if(!ce.accepted){me(),ce.shouldRecover&&(A.current="",b.current||(b.current=!0,oe({type:"taskforce:replay-gap",workspaceId:_})));return}ee(le),me();const $=te(le);oe({type:le.type,workspaceId:_,eventId:typeof le.eventId=="string"?le.eventId.trim():void 0,invalidations:$?[$]:void 0});return}if(le.type==="taskforce:replay"){const ce=Array.isArray(le.events)?le.events:[];let $=0;const V=[],B=[];for(const N of ce){if(!E.current.process({eventId:N.eventId,serverEpoch:N.serverEpoch,seq:N.seq}).accepted)continue;$+=1,ee(N);const Ae=te(N);Ae&&V.push(Ae),typeof N.eventId=="string"&&N.eventId.trim()&&B.push(N.eventId.trim())}b.current=!1,me(),($>0||le.truncated===!0)&&oe({type:"taskforce:replay",workspaceId:_,eventIds:B,invalidations:V}),le.truncated===!0&&_e(ye);return}if(le.type==="taskforce:replay-gap"||le.type==="taskforce:replay-reset"){if(A.current="",b.current)return;b.current=!0,oe({type:le.type,workspaceId:_})}}}),ye.addEventListener("close",ge=>{if(y.current===ye&&(y.current=null),!z&&t){const le=Number(ge?.code||0),Q=String(ge?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${_} user=${String(f||"anonymous").trim()||"anonymous"} code=${le}${Q?` reason=${Q}`:""}`)}$e()}),ye.addEventListener("error",()=>{try{ye.close()}catch{}})};return!t||!_||!T?(g("degraded-fallback"),Y(),H(),()=>{Y(),H()}):(g("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:h,telemetry:S}}const Rv="taskforce:context-assets-mutated";function HP(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 VP=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>=VP)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",GP="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:GP,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 KP(){const e=globalThis;return CS(e.__TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS__)||CS(e.process?.env?.TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS)}function qP(e){return e.visible&&e.availability!=="account_unavailable"&&(!e.devOnly||KP())}function Qre(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 YP(e){const t=Ow(e);return Lw.filter(r=>r.providerKey===t&&JP(r))}function ZP(e,t){const r=String(e||"").trim(),n=YP(t??PI);return n.some(s=>s.key===r)?r:n[0]?.key||""}function JP(e){return qP(e)}function ene(e){const t=Ow(e);return jI.find(r=>r.key===t)?.label||"Anthropic"}function tne(e){const t=String(e||"").trim();return Lw.find(r=>r.key===t)?.label||t||"No configured model"}const EI="taskforce.userGlobalSyncMeta.v1",XP="taskforce.syncDebug.v1",QP=12e4,NI="taskforce.syncWatermarks.v3",ej=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 tj(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(XP)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Ds(e,t){if(!tj())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function rj(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 nj(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:ZP(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 aj(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 sj(e){if(!(typeof window>"u"))try{window.localStorage.setItem(EI,JSON.stringify(e))}catch{}}function oj(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function ij(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 cj({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:r,setWorkspaceSyncBusy:n,setUserGlobalSyncStatus:s,setUserGlobalSyncError:i,setWorkspaceLastErrorMessage:l,setWorkspaceLastErrorAt:c,reportSyncEvent:d,setAuthBlocked:m,setIsAuthenticated:f,checkAuthSession:h,ensureCloudWorkspaceReadyForSync:g,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 h()};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 g();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 lj({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:h}){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((h?.blocked||0)>0){const A=h?.blocked||0,b=h?.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(h?.recovery&&h.recovery.state!=="completed")return h.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."}:h.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||(h?.pending||0)>0||(h?.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 g=Hk(l),y=Hk(c),k=Hk(i);return g===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>g?{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-g>Math.max(0,m)?{status:"attention",summary:y!==null&&y>g?"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 dj(e){return gp(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function uj(e){return gp(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function fj(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 mj(e){return gp(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function pj(e){return gp(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function hj(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 gj({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 yj({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspacePullInFlightRef:n,workspacePushInFlightRef:s,bootstrapPhaseStartedAtRef:i,bootstrapLastProgressAtRef:l,isExecutionAuthorized:c=()=>!0,setWorkspaceLastErrorMessage:d,setWorkspaceLastErrorAt:m,setUserGlobalSyncStatus:f,setUserGlobalSyncError:h,setWorkspaceSyncBusy:g,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<QP)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"),h(b),g(!1),y({phase:"error",lastErrorMessage:b}),Ds("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:r})},1e4);return()=>window.clearInterval(k)}function kj(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)&&!kj(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 vj(e){return As("lease-held",{retainPendingSignature:e==="push"})}const wj=512;function bj({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:h,pullWorkspaceChangesFromCloud:g}){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,h?.(_).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>=wj&&(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()&&g()},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 Sj(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 Aj(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 Cj({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspaceLastPullAt:n,runtime:s,localServices:i,acquireWorkspaceSyncLease:l,releaseWorkspaceSyncLease:c,forceClearWorkspaceSyncLease:d,clearWorkspaceRetry:m,clearWorkspaceIssue:f,reportWorkspaceWindowContention:h,reportSyncEvent:g,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,ee=s.pendingSignature,te=s.pendingPushReplay,me=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 le=Mv({cloudAuthConfigured:w,runtimeMode:P,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:E});if(!le.allowed&&le.reason==="auth-required"){if(!await D())return g(e,{eventType:Ye,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:r}}),!1;le=Mv({cloudAuthConfigured:w,runtimeMode:P,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!le.allowed)return g(e,{eventType:Ye,status:"error",errorMessage:`Manual sync retry blocked: ${le.reason}.`,details:{source:"retry.blocked",reason:le.reason,phase:r}}),!1;if(T.current=!0,r==="provision-local"){const V=v();return V?b(V,{forceAllAiProfiles:!0}):!1}const Q=te.current;if(r==="active"&&Q)return ee.current=Q.signature,b(Q.signature,{forceAllAiProfiles:Q.forceAllAiProfiles,repairMode:Q.repairMode});const ce=await A();if(r==="attach-cloud")return ce;const $=v();if($){ee.current=$;const V=await b($,{forceAllAiProfiles:T.current===!0});return ce||V}return ce},resetWorkspaceSyncCursorAndPull:async()=>{if(!j())return;if(!await l(e,"repair")&&(d(e),!await l(e,"repair"))){h("repair"),g(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 Q=hj({workspaceSyncPhase:r,lastBootstrapPhase:L.current,workspaceLastPullAt:n}),ce=Q==="provision-local",$=Q==="active"||Q==="attach-cloud";m(),f();try{if(!t){g(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(Q!=="provision-local")try{V=await i.prepareOutboxRecovery(e)}catch(Ae){g(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,ee.current="",me.current="",T.current=!1,z.current=!1,Y.current=!1,H.current=!1,ce&&(Sj(s),k()),_.current=!0,g(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:r,repairPhase:Q,lastBootstrapPhase:L.current}}),await y({phase:Q,pullCursor:null,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),Q==="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(Q!=="active"&&Q!=="attach-cloud"||!B)return;$&&(OI(s),k());const N=v();if(!N)return;if(ee.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 Aj(N)});(!Ae.ok||Ae.data?.success!==!0)&&g(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 Ij({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 _j({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 Tj(e){return BI(e)??null}function xj(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 Rj(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.floor(t):null}function Pj(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 jj(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=Pj(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:xj(r.referenceNumber),referenceLabel:BI(r.referenceLabel),title:String(r.title||"").trim(),description:typeof r.description=="string"?r.description:null,ownerId:Tj(r.ownerId),...i?{comments:i}:{},createdAt:String(r.createdAt||t||"").trim(),updatedAt:String(r.updatedAt||t||r.createdAt||"").trim(),order:Rj(r.order),attachments:sp(r.attachments),isArchived:!!r.isArchived,...s?{durableRevision:s}:{}}}function Ej(e){const t=jj(e);if(!t||!t.createdAt||!t.updatedAt)throw new Error("Initiative is missing canonical sync identity or watermarks.");return{...t,attachments:Y1(e.attachments)}}const WI=["create","metadata-update","append-comment","archive","unarchive"],Nj={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(Nj)}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=Ej(e.payload);if(r.id!==e.entityId||pn(r)!==pn(e.payload))throw new Error("Workspace sync v3 initiative payload is not canonical.")}const Dj={getLocalProjection:JC,applyLocalProjection:XC,pullFeed:YC,pullInitiativeRepair:aI};function Mj(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 Lj(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 Oj(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 Oj(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={...Dj,...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=Mj(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 h=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:null,page:f}),g=Gm(h);if(!h.ok||!g)return xl(h,"v3","Initiative repair could not be applied locally.");if(i=g,i.repair)return Ov({...e,dependencies:t});continue}const c=Lj(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([]),Bj=960*1e3,Wj="coverage/task-planning-metadata-v1",$j={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 Fj(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===Wj&&(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 Uj(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 zj(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 Hj(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+Bj;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||!zj(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 Vj(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 Gj(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 Kj(e,t,r){const n=String(e.data?.code||"").trim();return n&&!["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(n)?zI(e,t,r):Gj(e)}function qj(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,Fj({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={...$j,...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=Uj(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,h=!1,g=t;const y=kg(d);if(!y)return vs(d,"Persisted combined workspace sync coverage is unsupported.");if(h=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(g)return vs(E,"A refreshed combined repair snapshot still predates authoritative local state.");d=E,f=!0,g=!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(g)return vs(d,"A refreshed combined repair snapshot still predates authoritative local state.");f=!0,g=!0}}let k=!1,v=!1;for(;d.owner==="v2"||d.repair||f||h;){const b=k||f||h?null:d.repair?.cursor||null,w=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...k||f||h?{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&&qj(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,Kj(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,h=!1,Sm(E)){if(g)return vs(d,"A refreshed combined repair snapshot still predates authoritative local state.");g=!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 g?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},g);continue}const w=Vj(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 Hj({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 Yj={};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:[],h=f.filter(D=>(D.op==="document-upsert"||D.op==="asset-upsert")&&String(D.assetId||"").trim()===e.assetId);if(f.length!==1||h.length!==1)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected payload: ${e.assetId}`};try{await gg(h[0],typeof process<"u"?Yj?.TASKFORCE_SYNC_KEY:void 0)}catch{return{success:!1,error:`Workspace attachment asset hydration decryption failed: ${e.assetId}`}}const g=Array.isArray(d.contentMetadata)?d.contentMetadata:[],y=h[0].op==="document-upsert"?"document":"asset",k=g.filter(D=>D.kind===y&&D.assetId===e.assetId&&D.path===h[0].path);if(g.length!==1||k.length!==1)return{success:!1,error:`Workspace attachment asset hydration metadata is unavailable: ${e.assetId}`};const v=k[0],A=h[0].op==="document-upsert"?await Og("document",h[0].content):await Og("asset",h[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,h,{completionGroup:b}):await r(e.workspaceId,h);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:h.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 Zj="/api/taskforce/sync/v3/local/recovery";async function Jj(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)(Zj,{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 Xj(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 Qj(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=>Jj({workspaceId:t,...e.recoveryFetchImpl?{fetchImpl:e.recoveryFetchImpl}:{}}),completeAuthoritativeRepair:m1}}function eE(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 tE(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 rE(e){const t=new WeakMap,r=new Set,n=m=>{const f=tE(m.data);return m.transferReceipt&&(r.add(m.transferReceipt),f&&t.set(f,m.transferReceipt)),m},s=(m,f)=>{const h=t.get(m);if(!h)return;const g=e.remoteServices.buildV3ApplyCompletionGroup({workspaceId:e.workspaceId,apply:f,receipts:[h]});if(!g)throw new Error("A v3 sync transfer receipt did not produce an apply completion group.");return g},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,h)=>{let g=!1;try{const y=s(m,f),k=await h(y);if(y&&(!k||typeof k!="object"||!("ok"in k)||k.ok!==!0))g=!0,await l(m);else if(y){const v=t.get(m);t.delete(m),v&&r.delete(v)}return k}catch(y){throw g||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 h={projection:"initiative",kind:f.kind,epoch:f.epoch,previousCursor:f.previousCursor,nextCursor:PS({kind:f.kind,page:f.page})};return c(f.page,h,g=>e.localServices.applyInitiativeProjection(m,f,g?{completionGroup:g}: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,h)=>{const g={projection:"combined",kind:f.kind,epoch:f.epoch,previousCursor:f.previousCursor,nextCursor:PS({kind:f.kind,page:f.page})};return c(f.page,g,y=>e.localServices.applyCombinedProjection(m,f,h,y?{completionGroup:y}:void 0))},getLocalTaskCommentAudit:e.localServices.readTaskCommentAuditCursor,applyLocalTaskCommentAudit:(m,f)=>{const h={projection:"task-comment-audit",kind:"audit",previousCursor:f.previousCursor,nextCursor:f.nextCursor};return c(f,h,g=>e.localServices.applyTaskCommentAuditPage(m,f,g?{completionGroup:g}: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 nE({cloudAuthConfigured:e,runtimeMode:t,initiativeFeedActivationEnabled:r,combinedFeedActivationEnabled:n,combinedFeedCoverage:s,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,checkAuthSession:m,resolveCloudAuthUrl:f,ensureCloudWorkspaceReadyForSync:h,ensureWorkspaceSyncReady:g,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:ee,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:te,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:me,refreshWorkspaceSyncTaskforceAgentsSnapshot:_e,refreshLocalWorkspaceTaskCollections:$e,buildWorkspaceSyncPayload:Ye,buildWorkspaceSyncSignature:ye,seedWorkspaceSnapshotPushBaseline:ge,shouldSuppressAttachBootstrapPush:le,recordSuppressedEventIds:Q,runtime:ce,localServices:$,remoteServices:V,setWorkspaceSyncBusy:B,setUserGlobalSyncStatus:N,setUserGlobalSyncError:be,setWorkspaceLastErrorMessage:Ae,setWorkspaceLastErrorAt:q,setWorkspaceLastPullAt:Z,setWorkspaceLastPushAt:G,setWorkspaceSyncPendingChanges:ae,setTasks:Te,setArchivedTasks:Le,now:Ue,scheduleTask:st,logDebug:ft=()=>{},notifyAiProfilesMutated:xe=()=>{},notifyAgentsMutated:ke=()=>{},notifyAgentSkillsMutated:ve=()=>{}}){const{repairMode:He,forceFullAiProfilePush:Ee,pushInFlight:ue,pullInFlight:x,pullAfterPushRequested:de,pendingPushReplay:Ie,blockedPushSignature:Je,lastPushedSignature:J,pendingSignature:Ze,lastPushedTaskIds:re,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}=ce,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:ue.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:ue.current,pullInFlight:x.current})}if(!Lr.allowed)return Lr.retainPendingSignature&&(Ze.current=it),!1;if(le(it))return!1;if(!await _(l,"push")){const xr=vj("push");return!xr.allowed&&xr.retainPendingSignature&&(Ze.current=it),Y("push"),!1}ue.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 ee(),await te(),await me(),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 g()||!w())return!1;const jr=ye();if(jr&&(gt=jr),le(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,ae(Hr.changes.length);const Ge=await D1({resolveCloudAuthUrl:f,workspaceId:l,payload:Hr,ensureCloudWorkspaceReadyForSync:h,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(Xj($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,re.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&&Q(Ge.emittedEventIds,{queueRef:Yt,maxQueueSize:2048}),k();const Jt=Ge.syncedAt||Ue().toISOString();return J.current=ye(),G(Jt),ae(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{ue.current=!1,B(x.current),T(l),de.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:ue.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:ue.current})}if(!lr.allowed)return lr.reason==="push-in-flight"&&!Zt&&(de.current=!0),!1;if(de.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 g())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=rE({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"?eE(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&&Q($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=Ij({workspaceSyncPhase:c,forceCursorNull:it?.forceCursorNull===!0,currentCursor:Re.current}),Ge=await M1({resolveCloudAuthUrl:f,workspaceId:l,cursor:Zt?null:Hr.cursor,bootstrap:Hr.bootstrap,ensureCloudWorkspaceReadyForSync:h,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)&&Q(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),ae(0),N("idle");const Xt=_j({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 te(),await me()),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(ue.current),ur&&z(l,"pull"),T(l)}};return{pushWorkspaceChangesToCloud:Ft,pullWorkspaceChangesFromCloud:ir,resumeDeferredWork:()=>{w()&&(de.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 aE(e){return nE({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 sE="/api/taskforce/sync/v3/local/dispatch",oE=20,iE=1e5;function cE(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"),h=d("blockedErrorCode"),g=t.recovery;let y=null;if(g!==null){if(!g||typeof g!="object"||Array.isArray(g))throw new Error("Local outbox dispatch returned an invalid recovery status.");const v=g,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||h===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:h,recovery:y,...k?{attachmentApplyObligations:k}:{}}}function lE(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:cE(t.outbox)}}async function dE(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??oE))),s=Math.max(1,Math.floor(e.requestTimeoutMs??iE));let i=0;const l=new Set;let c;for(;i<n;){const d=new AbortController;let m,f;const h=new Promise((y,k)=>{f=k,m=setTimeout(()=>{d.abort(),k(new Error("Local outbox dispatch timed out."))},s)}),g=()=>{d.abort(e.signal?.reason),f?.(new DOMException("Local outbox dispatch aborted.","AbortError"))};e.signal?.aborted?g():e.signal?.addEventListener("abort",g,{once:!0});try{const y=(async()=>{const b=await r(sE,{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 lE(await b.json())})(),k=await Promise.race([y,h]);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",g)}}return{processed:i,retryRecommended:!0,budgetExhausted:!0,...c?{outbox:c}:{}}}const uE=3e4,fE=1e3,mE=3e4;function pE(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,h=s.current;if(h?.key===m&&h.authorityScope===d.authorityScope&&h.at>Date.now()){n.current===null&&(n.current=window.setTimeout(()=>{n.current=null,c()},h.at-Date.now()));return}(h?.key!==m||h.authorityScope!==d.authorityScope||h.at<=Date.now())&&(s.current=null);const g=t.current;if(g?.key===m&&g.authorityScope===d.authorityScope){r.current=m;return}g&&g.controller.abort(),l();const y={key:m,authorityScope:d.authorityScope,controller:new AbortController};t.current=y;let k=0;try{const v=await dE({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?fE:mE,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()},uE);return window.addEventListener("online",d),document.addEventListener("visibilitychange",m),()=>{window.removeEventListener("online",d),document.removeEventListener("visibilitychange",m),window.clearInterval(f);const h=t.current;h?.key===e.workspaceId&&(h.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 hE(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 hE(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",gE=500,yE=240,kE=8,vE=600*1e3;function Fw(e,t="default"){return t==="priority"?`${jS}.priority:${e}`:`${jS}:${e}`}function wE(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>vE?(Ju(e,t,n),null):d}catch{return Ju(e,t,n),null}}function bE(e,t,r="default"){e.removeItem(Fw(t,r))}async function Vk(e){const{client:t,envelope:r,storage:n=null,pollIntervalMs:s=gE,maxPollAttempts:i=yE,delay:l=_E,recoverExisting:c=!1,storageLane:d="default"}=e;if(n&&!c)try{wE(n,r,void 0,d)}catch{}try{let m=c?await SE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i}):await AE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i});const f=new Set;for(let h=0;h<i;h+=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 g=CE(m);if(!g)return Ju(n,r.workspaceId,d),m;if(f.size>=kE)throw new Va("The local sync coordinator command reference chain is too long.","SYNC_COORDINATOR_COMMAND_REFERENCE_LIMIT",409);m=await Bg(t,r,g);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&&IE(f)&&Ju(n,r.workspaceId,d),f}}function Ju(e,t,r){if(e)try{bE(e,t,r)}catch{}}async function SE(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 AE(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 CE(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 IE(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 _E(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 TE=new VI;function xE(e){const t=e.client||TE,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),[h,g]=o.useState(null),y=o.useRef(null);y.current=n.snapshot,o.useEffect(()=>{f(null),g(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,g(T.type),z.catch(()=>{}).finally(()=>{d.current===Y&&(d.current=null,g(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 te=d.current;if(te?.workspaceId===e.workspaceId){if(te.type===S)return te.promise;await te.promise}const me=v(i.current);if(me){if(d.current?.type===S)return me;await me}}const z=c.current;if(z?.workspaceId===e.workspaceId){if(z.type===S)return z.promise;const te=z.type==="EnableSync"||z.type==="DisableSync";(!T||te)&&await z.promise}const Y=k(i.current);if(Y){const te=c.current?.type;if(te===S)return Y;(!T||(te==="EnableSync"||te==="DisableSync"))&&await Y}if(!T){const te=d.current;if(te?.workspaceId===e.workspaceId){if(te.type===S)return te.promise;await te.promise}const me=v(i.current);if(me){if(d.current?.type===S)return me;await me}}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?g(S):f(S);const ee=()=>{K.current===oe&&(K.current=null,T?g(null):f(null)),i.current===oe.scope&&e.workspaceId===oe.workspaceId&&b()};return M.then(ee,ee),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:h,refresh:b,issueCommand:w,signalWake:P,clearCredential:E,switchWorkspace:D,transferOwnership:j}),[m,h,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 RE(e){return e.serverCommandMode}function PE(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 jE extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkspaceSyncTransportGatewayError"}}function EE(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 NE("The requested sync gateway operation is not supported.")}function NE(e){return new jE(e,"SYNC_COORDINATOR_GATEWAY_OPERATION_INVALID")}function DE(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 ME=5e3;function MS(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function LE(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 OE(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 BE(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,h="SYNC_COORDINATOR_BROWSER_ABANDONED",g)=>{const k=(await e.client.abandonPermit({permitId:f,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,errorCode:h}))?.permit;if(!k||k.permitId!==f||k.workspaceId!==e.workspaceId||k.coordinatorGeneration!==e.coordinatorGeneration||k.serverInstanceId!==e.serverInstanceId||k.ownerMode!=="browser-gateway"||g&&(k.operationClass!==g.operationClass||k.operationIdentity!==g.operationIdentity)||!["released","abandoned-clean","abandoned-reconcile-required"].includes(k.state)||g?.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,h,g)=>{try{await i(f,void 0,g)}catch{}throw h},c=async f=>{if(e.isExecutionAuthorized?.()===!1)throw new Error("The browser-gateway sync authority selection was revoked.");s(f.operation.workspaceId);const h=t(),g=Math.max(1,Math.floor(e.permitDeadlineMs??DE(f.operation)+ME)),y=EE(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(h.getTime()+g).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 OE(w,h.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,h,g)=>{if(s(f),!Array.isArray(h)||h.length===0)throw new TypeError("A browser-gateway apply completion group requires transfer receipts.");const y=h.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(g&&pn(A.previousBoundary)!==pn(g))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,h,g,y)=>{const k=d(f,h,g);return{version:GC,workspaceId:f,coordinatorGeneration:e.coordinatorGeneration,ownerMode:"browser-gateway",serverInstanceId:e.serverInstanceId,permitIds:k.map(v=>v.permitId),previousBoundary:g,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:h}=f,g=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}:{},...h.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:h.activeV3TaskMetadataIds}:{},...h.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:h.activeV3TaskLifecycleIds}:{},...h.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:h.activeV3TaskReopenAssigneeIds}:{},...h.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:h.activeV3InitiativeIds}:{},...h.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...h.combinedCoverage?{combinedCoverage:h.combinedCoverage,excludedProjections:h.combinedExcludedProjections||[]}:{}},operationIdentity:f.idempotencyKey,previousBoundary:g,applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:k=>{try{return fI(k,y),!0}catch{return!1}}})},pullWorkspaceChanges:f=>{const h=f.excludedProjections?.length?Rw(f.excludedProjections):null;return c({operation:{type:"pull",...f,...h?{coverage:h}:{},excludedProjections:f.excludedProjections?[...f.excludedProjections]:void 0},previousBoundary:zh(f.cursor),applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:g=>LE(g,f.workspaceId)})},pullWorkspaceContent:f=>{const{previousCursor:h,independentCompletionIdentity:g,...y}=f;return c({operation:{type:"content-pull",...y},previousBoundary:g?LS(g):zh(h),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:h,errorCode:g})=>{const y=d(f,h);await Promise.all(y.map(k=>i(k.permitId,g,{operationClass:k.operationClass,operationIdentity:k.operationIdentity,acceptedReceipt:!0})))},acknowledgeNonApplyingTransferReceipts:async({workspaceId:f,receipts:h})=>{const g=d(f,h);await Promise.all(g.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:h,nextCursor:g,receipts:y})=>m(f,y,zh(h),zh(g)),buildIndependentContentApplyCompletionGroup:({workspaceId:f,identity:h,receipts:g})=>{const y=LS(h);return m(f,g,y,y)},buildV2PushApplyCompletionGroup:({workspaceId:f,pushBoundary:h,receipts:g})=>m(f,g,Mh(h),Mh(h)),buildV3ApplyCompletionGroup:({workspaceId:f,apply:h,receipts:g})=>{const y=d(f,g),k=y[0].previousBoundary;if(!("projection"in k)||k.projection!==h.projection||y.some(b=>pn(b.previousBoundary)!==pn(k)))throw new TypeError("The v3 transfer receipts do not match the applied projection.");const v=h.kind==="repair"&&h.previousCursor===null&&y.every(b=>b.operationClass==="pull");if(k.cursor!==h.previousCursor&&!v)throw new TypeError("The v3 apply does not start at the receipt boundary.");const A=h.kind==="delta"||h.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,g,k,{...k,cursor:h.nextCursor})}}}function OS(e){const t=e.current===e.captured&&e.current.mode!=="blocked"&&e.browserSchedulingAllowed;return t||e.onDenied?.(),t}function WE(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||BE;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 $E(e){const{currentWorkspaceId:t,cloudAuthConfigured:r,runtimeMode:n,authSessionResolved:s,isAuthenticated:i,authUserId:l,projectName:c,resolveCloudAuthUrl:d,resolveWebSocketUrl:m,realtimeSyncEnabled:f,localOutboxDispatchEnabled:h,localCoordinatorBrowserAuthorityGateEnabled:g=!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:ee,setGlobalTheme:te,setCurrentTheme:me,setSetupState:_e,setLocale:$e,setGlobalWeekStartsOn:Ye,fetchPlanningEntities:ye}=e,ge=o.useMemo(()=>oj(S),[S]),[le,Q]=o.useState("disconnected"),[ce,$]=o.useState(null),[V,B]=o.useState(null),[N,be]=o.useState(null),[Ae,q]=o.useState(null),[Z,G]=o.useState(null),[ae,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,ue]=o.useState(null),x=o.useRef(null),de=o.useCallback(F=>{x.current=F,ue(F)},[]),[Ie,Je]=o.useState([]),[J,Ze]=o.useState(""),re=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=PE({runtimeMode:n}),Wt=xE({enabled:On,workspaceId:t,client:dt}),fe=o.useMemo(()=>DS({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot}),[t,Wt.phase,Wt.snapshot,g]),ot=o.useMemo(()=>DS({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot}),[t,Wt.phase,Wt.snapshot]),_t=o.useRef(fe);o.useLayoutEffect(()=>{_t.current=fe},[fe]);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}=UP({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"||!ae||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,ae,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=lj({enabled:ae,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},sj(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&&(te(Vt),Y&&me(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,te,me,_e,$e,Ye]),ja=o.useCallback(async F=>{const O=F?.preferCloudOnFirstSync!==!1;if(!r)return;if(n!=="local"||!i){Ln(),jr.current=0,Q("disconnected");return}const Vt=String(l||"").trim();if(!Vt||Vt==="anonymous"){Ln(),jr.current=0,Q("disconnected");return}if(!Fr.current){Q("syncing"),$(null),Fr.current=!0;try{const Mt=await L1({resolveCloudAuthUrl:d,userId:Vt,preferCloudOnFirstSync:O,getLocalUpdatedAt:Gn,buildLocalSettings:ms,applyRemoteSettings:_n});if(!Mt.success){Q("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),Q("idle"),$(null),An.current.add(Vt),Mt.mode==="pulled"&&(cn.current="")}catch{Q("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()),Q("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,ae,Le]),o.useEffect(()=>{ki.current=!!ga().startupFullReconcileCompletedAt},[t,ga,V,Le]);const $a=o.useCallback(F=>{Ia(()=>Ca.current(),{minDelayMs:F})},[Ia]);o.useEffect(()=>{gj({workspaceSyncPhase:Le,lastBootstrapPhaseRef:sn,bootstrapPhaseStartedAtRef:rn,bootstrapLastProgressAtRef:Mn})},[Le]),o.useEffect(()=>yj({currentWorkspaceId:t,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Le,workspacePullInFlightRef:Tt,workspacePushInFlightRef:ln,bootstrapPhaseStartedAtRef:rn,bootstrapLastProgressAtRef:Mn,isExecutionAuthorized:Pt,setWorkspaceLastErrorMessage:F=>G(F),setWorkspaceLastErrorAt:F=>q(F),setUserGlobalSyncStatus:Q,setUserGlobalSyncError:F=>$(F),setWorkspaceSyncBusy:ke,persistWorkspaceSyncPatchSafely:Wa}),[t,ae,Le,Wa,Tt,ln,fe.authorityEpoch,Pt]),o.useEffect(()=>{re.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(()=>Qj(),[]),Us=o.useRef(null),Ja=o.useMemo(()=>WE({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot,authority:fe,client:dt,isSelectionAuthorized:F=>Us.current===F&&Pt()}),[fe.authorityEpoch,fe.browserSchedulingAllowed,fe.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,g]),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."}:C1({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(()=>bP({workspaceId:so.current,tasks:re.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 AP({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]);pE({enabled:h===!0&&n==="local"&&ot.browserSchedulingAllowed&&ae,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:de});const hs=o.useCallback(()=>{if(h!==!0)return!1;const F=x.current;return F===null||F.recovery!==null&&F.recovery.state!=="completed"},[h]),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=>rj(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:yP(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):ij(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=>nj(rr)).filter(rr=>rr.id.length>0&&rr.workspaceId.length>0):[],Mt=Array.isArray(O?.conversations)?O.conversations.map(rr=>aj(rr)).filter(rr=>rr.id.length>0&&rr.workspaceId.length>0&&rr.agentId.length>0):[],Rt=Array.isArray(O?.roles)?O.roles.map(rr=>CP(rr,t)).filter(rr=>!!rr):[],ht=O.skills.map(rr=>IP(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([...re.current,...Ne.current].map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),_a.current=new Map([...re.current,...Ne.current].map(O=>[String(O?.id||"").trim(),ci.getWatermark(O)]).filter(([O])=>O.length>0)),oa.current=new Map([...re.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(re.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}));re.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(()=>cj({currentWorkspaceId:t,workspaceSyncPhase:Le,clearWorkspaceRetry:Xn,setWorkspaceSyncBusy:ke,setUserGlobalSyncStatus:Q,setUserGlobalSyncError:F=>$(F),setWorkspaceLastErrorMessage:F=>G(F),setWorkspaceLastErrorAt:F=>q(F),reportSyncEvent:Yo,setAuthBlocked:oe,setIsAuthenticated:K,checkAuthSession:ee,ensureCloudWorkspaceReadyForSync:Fa,scheduleWorkspaceSyncRetry:$a,persistWorkspaceSyncPatchSafely:Wa}),[t,Le,Xn,Yo,oe,K,ee,Fa,$a,Wa]),ys=o.useMemo(()=>{const F=Ja;return va?aE({cloudAuthConfigured:r,runtimeMode:n,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:A,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Le,isAuthenticated:i,checkAuthSession:ee,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:Q,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,ae,t,Le,ge,i,ee,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()},[fe.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(()=>bj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Le,workspacePullInFlightRef:Tt,realtimePullDebounceRef:$t,realtimeSuppressedEventIdsRef:Ut,clearWorkspaceRetry:Xn,isWorkspaceRetryPending:fr,isExecutionAuthorized:Pt,isServerOwned:()=>RE(_t.current),signalServerWake:F=>Wt.signalWake("realtime",F),pullWorkspaceChangesFromCloud:oo}),[r,n,ae,Le,Xn,fr,Pt,Wt.signalWake,oo]);To.current=Qa;const ra=m("/taskforce-ws"),yc=String(l||"").trim(),Dl=!!(f&&(Pt()||fe.serverCommandMode)&&r&&n==="local"&&ae&&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(()=>{fe.browserSchedulingAllowed||(Xn(),To.current.clearRealtimePullDebounce())},[fe.authorityEpoch,fe.browserSchedulingAllowed,Xn]);const ca=o.useCallback(async F=>fe.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,fe.serverCommandMode,Pt,Wt]),Ml=o.useCallback(async()=>{await ja({preferCloudOnFirstSync:!1})},[ja]),Si=o.useMemo(()=>Cj({currentWorkspaceId:t,workspaceCloudSyncEnabled:ae,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:ee,isExecutionAuthorized:Pt,coordinatorGeneration:Wt.snapshot?.state?.coordinatorGeneration??null}),[t,ge,ae,Le,V,ps,Co,Qn,Ws,sa,Xn,ao,Ts,Yo,Un,ka,ba,oo,pa,r,n,i,ee,Pt,Wt.snapshot?.state?.coordinatorGeneration]),xo=o.useCallback(async()=>{if(fe.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},[fe.serverCommandMode,Pt,Wt,Si]),kc=o.useCallback(async()=>{if(fe.serverCommandMode){Wt.issueCommand("Repair").catch(()=>{});return}Pt()&&await Si.resetWorkspaceSyncCursorAndPull()},[fe.serverCommandMode,Pt,Wt,Si]),Ai=o.useCallback(()=>{const F=Nv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,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:ae,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:ae,currentWorkspaceId:t,isAuthenticated:i});return{workspaceId:t,enabled:ae,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,ae,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"||!ae||!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,ae,s,i,t,Xo,ma,zs,Ea,gs,bi,Zo,gn]),o.useEffect(()=>{!r||n!=="local"||!ae||!s||!i||wi&&Xo()},[r,n,ae,s,i,wi,Xo]),o.useEffect(()=>{if(!Pt()||!dj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,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,ae,s,Le,hn,ba,dn,wa,pc,tt,J,pr,Me,Nt,ir,pa,ln,Tt,fe.authorityEpoch,Pt]),o.useEffect(()=>{if(!Pt()||!uj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,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,ae,s,Le,hn,ba,wa,pa,fr,ta,fe.authorityEpoch,Pt]),o.useEffect(()=>{r&&n==="local"&&ae||(Xn(),ke(!1))},[r,n,ae,Xn]),o.useEffect(()=>{if(!Pt())return;const F=fj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,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,ae,s,Le,V,t,fr,ea,fa,fe.authorityEpoch,Pt]),o.useEffect(()=>{if(!Pt()||!mj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,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})))},ej);return()=>window.clearInterval(F)},[r,n,ae,s,i,Le,fe.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()&&pj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,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,ae,s,i,Le,t,ma,zs,Ea,gs,fe.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(ae?"EnableSync":"DisableSync"),ae&&Wt.issueCommand("Sync").catch(()=>{})),!0},[Wt,On,n,ae]),Hs=o.useCallback(async()=>n!=="local"||!On?!1:Wt.clearCredential(),[Wt,On,n]);return{userGlobalSyncStatus:le,setUserGlobalSyncStatus:Q,userGlobalSyncError:ce,setUserGlobalSyncError:$,workspaceLastPullAt:V,workspaceLastPushAt:N,workspaceLastErrorAt:Ae,workspaceLastErrorMessage:Z,workspaceLastSuccessfulSyncAt:Ui,workspaceCloudSyncEnabled:ae,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 FE(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?12e3:2600}function UE(){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=FE(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 zE(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:r,normalizedCloudAuthBaseUrl:n,normalizedCloudMcpBaseUrl:s,mergedConfig:i,availableWorkspaces:l,currentTheme:c,configLoaded:d,globalTheme:m,themeUseGlobalDefault:f,keyShortcut:h,jsonBackupEnabled:g,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:ee,handleSaveGlobalTheme:te,handleUseGlobalThemeDefault:me,setKeyShortcut:_e,handleJsonBackupEnabledChange:$e,handleSaveGlobalJsonBackupEnabled:Ye,handleUseGlobalJsonBackupDefault:ye,handleSaveGlobalWeekStartsOn:ge,handleSaveLocale:le,handleManualComplexityEnabledChange:Q,handleChecklistDropdownEnabledChange:ce,handleShowTaskCardStatusLabelChange:$,handleShowTaskCardDescriptionChange:V,handleShowTaskCardAttachmentsChange:B,handleShowTaskCardChecklistProgressChange:N,handleShowTaskCardLatestActivityChange:be,handleTintTaskCardActivityBackgroundChange:Ae,handleSaveSettings:q,initiativeTemplates:Z,fetchInitiativeTemplates:G,createInitiativeFromTemplate:ae,setShowFolderBrowser:Te,setBrowserTarget:Le,fetchFolders:Ue,activeCategories:st,pathValidation:ft,taxonomyDisplayLabels:xe,handleUpdateCategory:ke,handleRemoveCategory:ve,handleSaveCategory:He,handleAddPath:Ee,handleRemovePath:ue,handleUpdateCategoryIcon:x,handleUpdateCategoryColor:de,activeTypes:Ie,handleSaveType:Je,handleRemoveType:J,handleUpdateType:Ze,taxonomies:re,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:h,jsonBackupEnabled:g,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:ee,onSaveGlobalTheme:te,onUseGlobalThemeDefault:me,onKeyShortcutChange:_e,onJsonBackupEnabledChange:$e,onSaveGlobalJsonBackupEnabled:Ye,onUseGlobalJsonBackupDefault:ye,onSaveGlobalWeekStartsOn:ge,onSaveLocale:le,onManualComplexityEnabledChange:Q,onChecklistDropdownEnabledChange:ce,onShowTaskCardStatusLabelChange:$,onShowTaskCardDescriptionChange:V,onShowTaskCardAttachmentsChange:B,onShowTaskCardChecklistProgressChange:N,onShowTaskCardLatestActivityChange:be,onTintTaskCardActivityBackgroundChange:Ae,onSaveSettings:q,initiativeTemplates:Z,onRefreshInitiativeTemplates:G,onCreateInitiativeFromTemplate:ae,onShowFolderBrowserChange:Te,onBrowserTargetChange:Le,onFetchFolders:Ue,categories:st,pathValidation:ft,taxonomyDisplayLabels:xe,onUpdateCategory:ke,onRemoveCategory:ve,onSaveCategory:He,onAddPath:Ee,onRemovePath:ue,onUpdateCategoryIcon:x,onUpdateCategoryColor:de,types:Ie,onSaveType:Je,onRemoveType:J,onUpdateType:Ze,taxonomies:re,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 HE(e){const{keyShortcut:t,themeUseGlobalDefault:r,runtimeMode:n,jsonBackupUseGlobalDefault:s,globalTheme:i,globalJsonBackupEnabled:l,setCurrentTheme:c,setThemeUseGlobalDefault:d,setGlobalTheme:m,setJsonBackupEnabled:f,setJsonBackupUseGlobalDefault:h,setGlobalJsonBackupEnabled:g,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 le=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!le.ok)throw new Error(`Failed to save global settings (${le.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),L=o.useCallback(async le=>{c(le),d(!1);try{const Q=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:le})});if(!Q.ok)throw new Error(`Failed to save config (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[c,d]),_=o.useCallback(async le=>{m(le),r&&c(le);try{const Q=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:le})});if(!Q.ok)throw new Error(`Failed to save global settings (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[m,r,c]),T=o.useCallback(async()=>{try{const le=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null})});if(!le.ok)throw new Error(`Failed to save config (${le.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 le=>{if(n==="cloud")return f(!1),h(!1),!1;f(le),h(!1);try{const Q=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:le})});if(!Q.ok)throw new Error(`Failed to save config (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[n,f,h]),Y=o.useCallback(async le=>{if(n==="cloud")return g(!1),s&&f(!1),!1;g(le),s&&f(le);try{const Q=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:le})});if(!Q.ok)throw new Error(`Failed to save global settings (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[n,g,s,f]),H=o.useCallback(async()=>{try{const le=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:null})});if(!le.ok)throw new Error(`Failed to save config (${le.status})`);return h(!0),f(l),!0}catch{return console.error("[Taskforce] Failed to use global backup default"),!1}},[l,f,h]),M=o.useCallback(async le=>{y(le);try{const Q=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:le}})});if(!Q.ok)throw new Error(`Failed to save global settings (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[y]),oe=o.useCallback(async le=>{const Q=PC(le);return k(Q),!0},[k]),K=o.useCallback(async le=>{v(le);try{const Q=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:le})});if(!Q.ok)throw new Error(`Failed to save config (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[v]),ee=o.useCallback(async le=>{A(le);try{const Q=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:le})});if(!Q.ok)throw new Error(`Failed to save config (${Q.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[A]),te=o.useCallback(async(le,Q,ce)=>{try{const $=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[le]:Q})});if(!$.ok)throw new Error(`Failed to save config (${$.status})`);return!0}catch{return console.error(`[Taskforce] ${ce}`),!1}},[]),me=o.useCallback(async le=>(b(le),te("showTaskCardStatusLabel",le,"Failed to save task card status label setting")),[te,b]),_e=o.useCallback(async le=>(w(le),te("showTaskCardDescription",le,"Failed to save task card description setting")),[te,w]),$e=o.useCallback(async le=>(P(le),te("showTaskCardAttachments",le,"Failed to save task card attachments setting")),[te,P]),Ye=o.useCallback(async le=>(E(le),te("showTaskCardChecklistProgress",le,"Failed to save task card checklist progress setting")),[te,E]),ye=o.useCallback(async le=>(D(le),te("showTaskCardLatestActivity",le,"Failed to save task card latest activity setting")),[te,D]),ge=o.useCallback(async le=>(j(le),te("tintTaskCardActivityBackground",le,"Failed to save task card activity background setting")),[te,j]);return{handleSaveSettings:S,handleSaveTheme:L,handleSaveGlobalTheme:_,handleUseGlobalThemeDefault:T,handleJsonBackupEnabledChange:z,handleSaveGlobalJsonBackupEnabled:Y,handleUseGlobalJsonBackupDefault:H,handleSaveGlobalWeekStartsOn:M,handleSaveLocale:oe,handleManualComplexityEnabledChange:K,handleChecklistDropdownEnabledChange:ee,handleShowTaskCardStatusLabelChange:me,handleShowTaskCardDescriptionChange:_e,handleShowTaskCardAttachmentsChange:$e,handleShowTaskCardChecklistProgressChange:Ye,handleShowTaskCardLatestActivityChange:ye,handleTintTaskCardActivityBackgroundChange:ge}}function VE(e){const{activeCategories:t,activeTab:r,activeTypes:n,archivedTasks:s,browserTarget:i,category:l,configLoaded:c,customCategories:d,refreshTaskCollections:m,fetchTasks:f,filterCategories:h,getCategoryPaths:g,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=>{g(B).forEach(be=>{$.includes(be)||$.push(be)})});const V=$.filter(B=>!k[B]);V.length>0&&Y(V)},[t,r,c,g,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),h.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,h,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=g(B),be=V.trim();if(N.includes(be))return;const Ae=[...N,be];H({...B,path:void 0,paths:Ae}),Y(Ae)},[t,g,H,Y]),K=o.useCallback(($,V)=>{const B=t.find(N=>N.value===$);B&&H({...B,icon:V})},[t,H]),ee=o.useCallback(($,V)=>{const B=t.find(N=>N.value===$);B&&H({...B,color:V})},[t,H]),te=o.useCallback(($,V)=>{const B=t.find(Ae=>Ae.value===$);if(!B)return;const be=g(B).filter(Ae=>Ae!==V);H({...B,path:void 0,paths:be})},[t,g,H]),me=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=g(B);if(!N.includes(V)){const be=[...N,V];H({...B,path:void 0,paths:be})}}}j(!1),v(null)},[t,i,g,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(ae=>ae.value!==$);return G.some(ae=>ae.value===V)||(G=[N,...G]),G}),Ae&&((l===Ae.label||l===Ae.value)&&A(V),(h.includes(Ae.label)||h.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,h,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]),le=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]),Q=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,ae)=>G-ae);return{unmatchedCategoryValues:Ae,unmatchedTypeValues:q,incompatiblePriorityValues:Z}},[T]),ce=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)}`},ae=()=>{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:ae(),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:ae(),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:ae(),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:ae(),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:ae(),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:ae(),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:g,validatePaths:Y,handleUpdateCategory:H,handleSaveCategory:M,handleAddPath:oe,handleUpdateCategoryIcon:K,handleUpdateCategoryColor:ee,handleRemovePath:te,handleSelectPath:me,handleRemoveCategory:_e,handleSaveType:$e,handleRemoveType:Ye,handleUpdateType:ye,handleUpdateTaxonomies:ge,handleUpdatePriorities:le,analyzeSystemTaxonomyPack:Q,handleApplySystemTaxonomyPack:ce}}function GE({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 KE(){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 qE({tasks:e,archivedTasks:t,setTasks:r,setArchivedTasks:n,setLoadingTasks:s,getCurrentWorkspaceId:i,workspaceResetKey:l,shouldDeferProtectedApiCalls:c,shouldBlockProtectedApiCalls:d,handleUnauthorized:m,authRequiredForApi:f,setError:h,setLoading:g,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(ce=>String(ce.detailRevision||JSON.stringify([ce.updatedAt||ce.createdAt||"",ce.commentCount||0,ce.checklistCount||0,ce.completedChecklistCount||0,ce.attachmentCount||0,ce.relationshipCount||0])),[]),z=o.useCallback(()=>{S(Array.from(D.current.values(),ce=>ce.detail))},[]);o.useEffect(()=>{A.current=e},[e]),o.useEffect(()=>{b.current=t},[t]);const Y=o.useCallback(ce=>tp(ce),[]),H=o.useCallback(ce=>{const $=y?.current.get(ce.id);if(!$)return ce;const V=Object.entries($.patch).every(([be,Ae])=>{const q=ce[be];return q===void 0||Ae===void 0?q===Ae:pn(q)===pn(Ae)}),B=Date.parse(String(ce.updatedAt||"")),N=Date.parse(String($.observedUpdatedAt||""));return V||Number.isFinite(B)&&Number.isFinite(N)&&B>N?(y?.current.delete(ce.id),ce):{...ce,...$.patch}},[y]),M=o.useCallback((ce,$)=>$.aborted?ce===$.reason?!0:ce instanceof DOMException?ce.name==="AbortError":String(ce?.name||"").toLowerCase()==="aborterror":!1,[]),[oe,K]=o.useState([]),ee=o.useRef(new Map),te=o.useCallback(ce=>{!ce.length||typeof window>"u"||(K($=>Array.from(new Set([...$,...ce]))),ce.forEach($=>{const V=ee.current.get($);V&&window.clearTimeout(V);const B=window.setTimeout(()=>{ee.current.delete($),K(N=>N.filter(be=>be!==$))},2e3);ee.current.set($,B)}))},[]);o.useEffect(()=>()=>{typeof window>"u"||(ee.current.forEach(ce=>window.clearTimeout(ce)),ee.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 ce=E.current!==null;E.current?.abort("workspace-reset"),E.current=null,ce&&g?.(!1),D.current=new Map,S([]),_({}),typeof window<"u"&&(ee.current.forEach($=>window.clearTimeout($)),ee.current.clear()),K([])},[g,l]),o.useEffect(()=>()=>{E.current?.abort("unmount")},[]);const me=o.useCallback((ce,$)=>{const V=new Map(ce.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),ae=!!Z.detail.isArchived===$;if(ae&&Ae.add(q),!G&&ae){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},ae=Object.entries(q),Te=Object.entries(G);return ae.length===Te.length&&ae.every(([Le,Ue])=>G[Le]===Ue)?q:G}),B&&(D.current=N,z())},[T,z]),_e=o.useCallback(()=>{const ce=E.current!==null;E.current?.abort("navigation"),E.current=null,ce&&g?.(!1)},[g]),$e=o.useCallback(async(ce=!1,$)=>{if(!($?.ignoreAuthGuard===!0)&&(c||d))return;s(!ce);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([]),ce||s(!1);return}if(be.ok){const q=((await be.json()).tasks||[]).map(st=>H(Qs(st)));if(String(i()||"").trim()!==B)return;me(q,!1);const G=new Map,ae=[],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))&&ae.push(st.id)}k.current=G,v.current?te(ae):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,te,m,r,s,f,c,d,me,H]),Ye=o.useCallback(async(ce=!1,$)=>{if(!($?.ignoreAuthGuard===!0)&&(c||d))return!1;ce||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}));me(Z,!0);const G=b.current,ae=Hb(G,Z);return b.current=ae,ae!==G&&n(ae),!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,ce||s(!1))}},[i,M,H,me,n,s,c,d]),ye=o.useCallback(async(ce,$)=>{const V=$?.force===!0;if(!V&&!ce.isSummary){const Z=zb(ce);return D.current.set(ce.id,{detail:ce,summaryRevision:T(Z)}),_(G=>{if(!Object.prototype.hasOwnProperty.call(G,ce.id))return G;const ae={...G};return delete ae[ce.id],ae}),z(),ce}const B=D.current.get(ce.id);let N=ce,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,g?.(!0),h?.("");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 h?.("Task not found. It may have moved or been deleted."),null;if(!G.ok)return h?.("Unable to load task details."),null;const ae=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 h?.("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 h?.("Task details changed while loading. Please open the task again."),null}if(N.updatedAt&&ae.updatedAt&&Date.parse(ae.updatedAt)<Date.parse(N.updatedAt))return h?.("Task details changed while loading. Please open the task again."),null;const st={...ae,detailRevision:ae.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),h?.("Unable to load task details.")),null}finally{E.current===q&&(E.current=null,g?.(!1))}},[i,T,m,M,z,h,g]),ge=o.useCallback(async ce=>{const $=ce?.isSilent!==!1,V=ce?.ignoreAuthGuard===!0,B=ce?.includeActive!==!1,N=ce?.includeArchive!==!1;await Promise.all([B?$e($,{ignoreAuthGuard:V,highlightChangedTaskIds:ce?.highlightChangedTaskIds}):Promise.resolve(!1),N?Ye($,{ignoreAuthGuard:V}):Promise.resolve(!1)])},[Ye,$e]),le=o.useCallback(async ce=>{await ge({isSilent:!0,includeActive:ce?.includeActive!==!1,includeArchive:ce?.includeArchive!==!1,highlightChangedTaskIds:ce?.highlightChangedTaskIds})},[ge]),Q=o.useCallback(ce=>{const $=H(Qs(ce)),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:te,fetchTasks:$e,fetchArchive:Ye,loadTaskDetail:ye,cancelTaskDetailLoad:_e,refreshTaskCollections:ge,refreshTaskCollectionsFromInvalidation:le,mergeTaskFromServer:Q,getTaskRevisionKey:Y}}function YE(e){const{editingTaskId:t,relationshipTasks:r,initiatives:n=[],workstreams:s=[],workstreamInput:i="",resolveWorkstreamIdInput:l,supplementalTasks:c=[],assignee:d,setAssignee:m,setChecklistItems:f,setComments:h}=e,g=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||[]),h(k?.comments||[]))},[t,k?.id,k?.updatedAt,k?.checklistItems,k?.comments,f,h]),o.useEffect(()=>{if(!t||!k){g.current=null;return}const b=k.assignee||"unassigned",w=g.current;if(!w||w.taskId!==t){g.current={taskId:t,assignee:b},d!==b&&m(b);return}w.assignee!==b&&(d===w.assignee&&m(b),g.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 ZE(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=ZE(r);return e.find(s=>s.id===r||ws(s)===r||n!==null&&s.referenceNumber===n)||null}function JE(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 XE(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 QE(e){const{activeCategories:t,activeTypes:r,activeTab:n,attachments:s,checklistItems:i,comments:l,cancelTaskDetailLoad:c,description:d,editingTaskId:m,flushPendingAutoSave:f,getDescriptionDraft:h,getPreferredCategoryValue:g,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:ee,setFormTaxonomies:te,setIsOpen:me,setNewCommentText:_e,setPendingNavigation:$e,setWorkstreamInput:Ye,setPriority:ye,setScheduledDate:ge,setShowArchive:le,setStatus:Q,setTaskReturnTrail:ce,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(ue=>String(ue.value||"").trim().length>0)?.value||bo,[r]),G=o.useCallback(async ue=>{const x=()=>{q(),ue()};if(m){await f()&&x();return}if(!((y?.()??be).trim()!==""||(h?.()??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,h,y,i,q,A,$e,B,be]),ae=o.useCallback(()=>{q(),me(!1)},[q,me]),Te=o.useCallback(()=>{q(),K(null),$(""),M("");const ue=k,x=t.some(de=>de.label===ue||de.value===ue);if(ue&&x){const de=t.find(Ie=>Ie.label===ue||Ie.value===ue);T(de?.value||ue)}else T(g(t));V(Z()),ye(2),H(3),Q("task"),S("unassigned"),ge(""),oe(""),Ye(""),z([]),te(JE(D)),Y([]),_e(""),L([]),_(!1),ee("")},[t,g,Z,q,k,S,L,_,T,z,Y,H,M,oe,K,ee,te,_e,ye,ge,Q,$,V,D]),Le=o.useCallback(ue=>{const x=ue.trim();if(!x)return null;const de=oy(x);if(de){const J=w.find(Ze=>Ze.referenceNumber===de);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(ue=>{const x=ue.trim();if(!x)return null;const de=x.toLowerCase(),Ie=KI(x);if(Ie){const Ze=P.find(re=>re.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()===de);return J||null},[P]),st=o.useCallback((ue,x)=>{x?.preserveReturnTrail||ce([]),K(ue.id),$(ue.title),M(ue.description||""),T(ue.category||g(t)),V(ue.type||Z()),ye(typeof ue.priority=="number"?ue.priority:2),H(typeof ue.complexity=="number"?ue.complexity:3),Q(ue.status||"task"),S(ue.assignee||"unassigned"),ge(ue.scheduledDate||""),oe(ue.dueDate||"");const de=ue.workstreamId&&P.find(Ie=>Ie.id===ue.workstreamId)||null;Ye(de?Go(de)||de.id:""),z(ue.checklistItems||[]),Y(ue.comments||[]),te(ue.taxonomies||{}),L(ue.attachments||[]),_(!1),j("add"),x?.adoptAsBaseline!==!1&&b?.(ue)},[t,g,Z,j,S,L,_,T,z,Y,H,M,oe,K,te,ye,ge,Q,ce,$,V,b,P]),ft=o.useCallback(async(ue,x)=>{const de=Ae.current+1;if(Ae.current=de,!v)return c?.(),st(ue,{preserveReturnTrail:x?.preserveReturnTrail}),ue;if(!ue.isSummary){c?.();const Je=x?.shouldApply?await v(ue,{shouldCommit:x.shouldApply}):await v(ue);if(Ae.current===de){const J=Je||ue;return st(J,{preserveReturnTrail:x?.preserveReturnTrail}),J}return null}const Ie=x?.shouldApply?await v(ue,{shouldCommit:x.shouldApply}):await v(ue);return Ie&&Ae.current===de?(st(Ie,{preserveReturnTrail:x?.preserveReturnTrail}),Ie):null},[st,c,v]),xe=o.useCallback((ue,x)=>{ft(ue,x)},[ft]),ke=o.useCallback((ue,x)=>ft(ue,x),[ft]),ve=o.useCallback(ue=>{const x=w.find(Ie=>Ie.id===ue);if(!x)return;const de=()=>{n==="add"&&m&&m!==x.id&&ce(Ie=>Ie[Ie.length-1]===m?Ie:[...Ie,m]),x.isArchived&&!E&&le(!0),xe(x,{preserveReturnTrail:!0})};if(n==="add"&&m&&m!==x.id){G(de);return}de()},[n,m,xe,G,w,le,ce,E]),He=o.useCallback(()=>{if(n!=="add"||!m||N.length===0)return!1;const ue=[...N];for(;ue.length>0;){const x=ue.pop();if(!x)continue;const de=w.find(Ie=>Ie.id===x);if(de)return de.isArchived&&!E&&le(!0),ce(ue),xe(de,{preserveReturnTrail:!0}),!0}return ce([]),!1},[n,m,xe,w,le,ce,E,N]),Ee=o.useCallback(()=>{ce([])},[ce]);return{handleNavigation:G,handleClose:ae,resetForm:Te,resolveTaskIdInput:Le,resolveWorkstreamIdInput:Ue,handleEdit:xe,refreshTaskDetail:ke,applyTaskToEditor:st,handleOpenTaskById:ve,returnToPreviousTask:He,clearReturnToParentTask:Ee}}function eN(e){return e.map(t=>({...t}))}function tN(e){return e.map(t=>({...t}))}function rN(e){return e.map(t=>({...t}))}const nN={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"}]},aN=[{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"}]},nN];function YI(){return aN.map(e=>({...e,categories:eN(e.categories),types:tN(e.types),priorities:rN(e.priorities)}))}const sN={"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"},rne=["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 sN[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),{}),nne=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),[])),oN={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"};function iN(e){const t=String(e||"").trim().toLowerCase();return aa(Fg[t]?.color)||aa("violet-200")||"#9c7aeb"}function ane(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 cN(e){const t=String(e||"").trim().toUpperCase();return aa(oN[t])||"var(--text-muted)"}const lN=/[\u2010-\u2015\u2212]/g;function Hw(e){return String(e??"").trim().replace(lN,"-").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 dN(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=dN(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 uN(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=>uN(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 fN(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=>fN(i,e.id,s.value)));return[...r,...n.filter(s=>!r.some(i=>String(i.value)===String(s.value)))]}function mN({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),h=o.useMemo(()=>yp(e).raw,[e]);return o.useEffect(()=>{f.current+=1;const g=f.current;if(!n||t!=="cloud"||!h||!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===g&&m(v)}catch{if(y.signal.aborted||f.current!==g)return;m(new Set)}})()},Math.max(0,i));return()=>{window.clearTimeout(k),y.abort("superseded")}},[i,n,c,h,l,e,t,s,r]),d}function pN({tasks:e,archivedTasks:t,activeCategories:r,activeTypes:n,priorities:s,taxonomies:i,configLoaded:l,referenceDataLoaded:c,assigneeOptionsLoaded:d,assigneeOptions:m,runtimeMode:f="local",workspaceId:h="",cloudTaskSearchEnabled:g=!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=mN({query:P,runtimeMode:f,workspaceId:h,enabled:g,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,ee]=o.useState(w),[te,me]=o.useState(!0),[_e,$e]=o.useState({}),Ye=o.useRef(d),[ye,ge]=o.useState("created"),[le,Q]=o.useState("desc"),ce=o.useCallback(()=>{Q(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)),ee(w),me(!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(ue=>ke.has(ue)),He=te?w:ve.length>0||K.length===0?ve:w;(He.length!==K.length||He.some((ue,x)=>ue!==K[x]))&&ee(He)},[w,K,te,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));te&&!ve&&d&&!Ye.current||ve!==te&&me(ve)},[w,K,te,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,ue)=>Ee!==ve[ue]))&&_(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 de=x.options.map(J=>J.value);if(de.length===0)return;const Ie=Array.isArray(_e[x.id])?_e[x.id]:[],Je=Ie.filter(J=>de.includes(J));ke[x.id]=Je.length>0||Ie.length===0?Je:de});const ve=Object.keys(_e).sort(),He=Object.keys(ke).sort(),Ee=ve.length!==He.length||ve.some((x,de)=>x!==He[de]),ue=He.some(x=>!Z(_e[x]||[],ke[x]||[]));(Ee||ue)&&$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)),ee(w),me(!0);const ke={};A.forEach(ve=>{ke[ve.id]=ve.options.map(He=>He.value)}),$e(ke),ge("created"),Q("desc")},[r,s,n,A,w]),ae=o.useCallback(ke=>{ee(ve=>{const He=typeof ke=="function"?ke(ve):ke,Ee=Array.from(new Set(He.filter(x=>typeof x=="string"&&x.trim().length>0))),ue=w.length>0&&w.every(x=>Ee.includes(x));return me(ue),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(ue=>ue.value)),ve=q(T,n.map(ue=>ue.value)),He=q(Array.from(new Set(L.map(ue=>Number(ue)).filter(ue=>Number.isFinite(ue)))),s.map(ue=>Number(ue.value)).filter(ue=>Number.isFinite(ue))),Ee=q(M,fc.map(ue=>ue.value));return e.filter(ue=>{const x=Ug(ue,Te,Le)||!!Te.raw&&D.has(ue.id),de=!Y||ke||j.includes(ue.category),Ie=!Y||He||Ek(ue.priority,L),Je=!Y||ve||T.includes(ue.type||bo),J=!Y||Ee||M.includes(ue.status),Ze=!Y||te||K.includes(ue.assignee||"unassigned"),re=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=ue.taxonomies?.[Ne];return Pe?Array.isArray(Pe)?Pe.some(he=>je.includes(he)):je.includes(Pe):Ce||je.includes("")});return x&&de&&Ie&&Je&&J&&Ze&&re}).sort((ue,x)=>zg(ue,x,ye,le,i))},[e,Te,Le,D,j,L,T,M,K,te,_e,ye,le,Y,A,b,r,n,s,q,i]),st=o.useMemo(()=>{const ke=q(j,r.map(ue=>ue.value)),ve=q(T,n.map(ue=>ue.value)),He=q(Array.from(new Set(L.map(ue=>Number(ue)).filter(ue=>Number.isFinite(ue)))),s.map(ue=>Number(ue.value)).filter(ue=>Number.isFinite(ue))),Ee=q(M,fc.map(ue=>ue.value));return e.filter(ue=>{const x=!Y||ke||j.includes(ue.category),de=!Y||He||Ek(ue.priority,L),Ie=!Y||ve||T.includes(ue.type||bo),Je=!Y||Ee||M.includes(ue.status),J=!Y||te||K.includes(ue.assignee||"unassigned"),Ze=Object.entries(_e).every(([re,Ne])=>{const je=b.get(re);if(!je)return!0;const Re=je?.options.every(Pe=>Ne.includes(Pe.value))??!0;if(Re)return!0;const Ce=ue.taxonomies?.[re];return Ce?Array.isArray(Ce)?Ce.some(Pe=>Ne.includes(Pe)):Ne.includes(Ce):Re||Ne.includes("")});return x&&de&&Ie&&Je&&J&&Ze})},[e,j,L,T,M,K,te,_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 ue=Ug(Ee,Te,Le)||!!Te.raw&&D.has(Ee.id),x=!Y||ke||j.includes(Ee.category),de=!Y||He||Ek(Ee.priority,L),Ie=!Y||ve||T.includes(Ee.type||bo),Je=!Y||te||K.includes(Ee.assignee||"unassigned"),J=Object.entries(_e).every(([Ze,re])=>{const Ne=b.get(Ze);if(!Ne)return!0;const je=Ne?.options.every(Ce=>re.includes(Ce.value))??!0;if(je)return!0;const Re=Ee.taxonomies?.[Ze];return Re?Array.isArray(Re)?Re.some(Ce=>re.includes(Ce)):re.includes(Re):je||re.includes("")});return ue&&x&&de&&Ie&&Je&&J}).sort((Ee,ue)=>zg(Ee,ue,ye,le,i))},[t,Te,Le,D,j,L,T,K,te,_e,ye,le,Y,r,n,s,A,b,q,i]),xe=o.useMemo(()=>{const ke={};return Ue.forEach(ve=>{const He=r.find(ue=>ue.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:ae,filterAssigneesAllSelected:te,setFilterAssigneesAllSelected:me,filterTaxonomies:_e,setFilterTaxonomies:$e,hasInitedFilters:Y,setHasInitedFilters:H,sortBy:ye,setSortBy:ge,sortOrder:le,setSortOrder:Q,toggleSortOrder:ce,groupBy:$,setGroupBy:V,emptyColumnMode:B,setEmptyColumnMode:N,collapsedCategories:be,setCollapsedCategories:Ae,clearFilters:G,filteredTasks:Ue,searchAgnosticTasks:st,filteredArchive:ft,groupedTasks:xe}}const hN=pN,Gw="taskforce-workspace-sync-v3",gN=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 yN(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,gN);let i=!1;s.onupgradeneeded=()=>yN(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="",h=!1;m.onsuccess=()=>{try{const g=m.result;if(g){f=cs(g.operationId,"stored operationId");return}f=cs(r(),"operationId"),h=!0,d.add({fingerprint:n,operationId:f})}catch(g){c.abort(),l(g)}},m.onerror=()=>l(Xc(m,"Failed to read the local operation identity.")),c.oncomplete=()=>i({operationId:f,created:h}),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 h=null;f.onsuccess=()=>{const g=f.result,y=Hh(g).find(k=>k.participantId===s);y&&(h={...y,created:!1,resolved:!1})},f.onerror=()=>c(Xc(f,"Failed to read the local task-create attempt.")),d.oncomplete=()=>l(h),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"),h=f.objectStore(oc),g=h.get(i);let y=null,k=!1;g.onsuccess=()=>{try{const v=g.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),h.put(v),y={...w,created:!0,resolved:!1}}catch(v){f.abort(),m(v)}},g.onerror=()=>m(Xc(g,"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},h=r(Hh(f));h.length===0?d.delete(n):($S(f,h),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 kN{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 h=null,g=!1;f.onsuccess=()=>{try{const y=f.result;if(y){h=y;return}h={fingerprint:s,operationId:cs(n(),"operationId"),workstream:r},g=!0,m.add(h)}catch(y){d.abort(),c(y)}},f.onerror=()=>c(Xc(f,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>{if(!h)return c(new Error("Workstream-create attempt was not prepared."));l({...h,created:g})},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 vN(){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=vN(),f={...d,id:m.taskId},h=await Yw({workspaceId:c,task:qk(d)});let g=s(c);g.draftFingerprint&&g.draftFingerprint!==h?g={participantId:Wm(),draftFingerprint:h}:g={...g,draftFingerprint:h},i(c,g);const y=await t.claim(c,g.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 h=pn({workspaceId:c,url:d,body:m,observedPrecondition:f}),g=await r.getOrCreate(h,Wm);return{fingerprint:h,operationId:g.operationId}},confirmUpdate(c,d){return r.deleteIfMatches(c,d)}}}function wN(e){const{activeCategories:t,activeTab:r,apiEndpoint:n,assignee:s,attachments:i,attachmentsDirty:l,category:c,checklistItems:d,comments:m,complexity:f,description:h,dueDate:g,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:ee,queueWorkspaceSyncFromAuthoritativeTaskState:te,relationshipTasks:me,supplementalTasks:_e=[],resetForm:$e,resolveWorkstreamIdInput:Ye,scheduledDate:ye,setActiveTab:ge,setAttachmentsDirty:le,setComments:Q,setError:ce,setLastUsedCategory:$,setLoading:V,setNewCommentText:B,status:N,title:be,taxonomies:Ae,textDraftOccupied:q,type:Z}=e,G=T||(()=>be),ae=L||(()=>h),Te=S||(()=>i),Le=o.useRef(G),Ue=o.useRef(ae),st=o.useRef(Te),ft=o.useRef(z);Le.current=G,Ue.current=ae,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"),[ue,x]=o.useState(null),de=o.useRef(null),Ie=o.useRef(null),Je=o.useRef(null),J=o.useRef(null),Ze=o.useRef(!1),re=o.useRef(null),Ne=o.useRef(null),je=o.useRef(!1),Re=o.useRef(null),Ce=w&&(me.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()!==""||h.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:g,workstreamId:oe.trim()?Ye(oe)?.id||oe.trim():"",checklistItems:d,taxonomies:j,attachments:pe}),[t,s,De,c,d,f,h,g,j,_,K,xe,Ye,ye,N,be,Z,oe]),Fe=o.useCallback(()=>{de.current!==null&&(window.clearTimeout(de.current),de.current=null)},[]),yt=o.useCallback(()=>!!(w&&ue!==null&&et()!==ue),[et,w,ue]),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 ce(""),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 ce(Bt),pe||ee(Bt,"error"),!1}const Et=U?.textDraft??xe(),kt=Et.title,Ot=Et.description,dr=st.current();if(w||(re.current=null),Pe)return ce(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 ce("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 ce(`Required taxonomy values are missing: ${tr.join(", ")}`),w&&Ee(Ke==="autosave"?"error":"idle"),!1;V(!0),ce(""),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?me.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:g||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),le(!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 ce(Ft),pe||ee(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 ce(Ht),pe||ee(Ht,"error"),V(!1),!1}if(Ct.task){const Ht=Qs(Ct.task);re.current=Ht,Y(Ht)}if(Ct.recoveredChangedInput&&(Ze.current=!0,ee("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),Ct.state==="pending")Ct.pendingReason!=="queued"&&(Ze.current=!0,ee(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")),ce("");else if(Ct.state==="blocked"){Ze.current=!0;const Ht=`Task created locally, but cloud sync is blocked${Ct.errorCode?` (${Ct.errorCode})`:""}.`;ce(Ht),ee(Ht,"error")}else ce("");return $(wr),le(!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&&lt&&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 ce(Ht),pe||ee(Ht,"error"),V(!1),w&&Ee("error"),!1}const Qt=await Nt.json().catch(()=>null);if(!w&&lt&&(!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&&lt&&await Ne.current?.confirmCreate(v,lt),pt&&(Ze.current=!0,ee("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?te():re.current=Ct}return $(wr),le(!1),V(!1),w&&Ee("saved"),!0}catch(pr){return console.error("Failed to save task.",pr),ce("Failed to connect to server"),pe||ee("Failed to connect to server","error"),V(!1),w&&Ee("error"),!1}},[t,n,s,l,c,d,m,f,g,y,k,v,A,b,w,E,Pe,j,_,Y,oe,K,ee,te,xe,Ye,le,ce,$,V,ye,N,Ae,Z]),Ve=o.useCallback(async()=>{if(await vt({source:"manual"})&&(!w&&!Ze.current&&ee("Task added successfully","success"),Ze.current=!1,r==="add"&&!w)){const pe=re.current;if(pe&&M)try{await M(pe)}catch(Ke){console.warn("Task create draft upload promotion failed.",Ke),ee("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,ee,$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||ue===null)return!0;const U=xe(),pe=et(U);return pe===ue?!0:!U.title.trim()||g&&ye&&g<ye?!1:await mt({signature:pe,save:()=>vt({quiet:!0,source:"autosave",textDraft:U})})&&et()===pe},[et,Fe,g,w,Pe,mt,ue,xe,E,vt,ye]);o.useEffect(()=>{if(!w||Pe||E||ue===null)return;const U=xe(),pe=et(U);if(pe===ue)return;if(!U.title.trim()){Ee("idle");return}if(g&&ye&&g<ye){Ee("error");return}Ee(kt=>kt==="error"?"error":"idle"),Fe();const Et=(()=>{try{return String(JSON.parse(ue).assignee||"")}catch{return""}})()!==String(s||"agent")?0:1400;return de.current=window.setTimeout(async()=>{await mt({signature:pe,save:()=>vt({quiet:!0,source:"autosave",textDraft:U})})},Et),()=>{Fe()}},[et,s,Fe,g,w,Pe,mt,ue,xe,E,vt,ye]);const It=o.useCallback(async U=>{if(U.preventDefault(),g&&ye&&g<ye){ve({dueDate:g,scheduledDate:ye});return}await Ve()},[g,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),ce(pr),ee(pr,"error");return}const Ot=await kt.json().catch(()=>null);if(Re.current=null,B(""),Ot&&typeof Ot=="object"){const dr=Qs(Ot);Q(dr.comments||[]),Y(Ot),x(et()),Ee("saved")}else await D(!0);te()}catch(kt){console.error("Failed to add comment",kt),ce("Failed to add comment."),ee("Failed to add comment.","error")}},[w,D,et,Y,ee,te,Q,ce,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 bN=(e,t)=>globalThis.fetch(e,t),Vg="taskforce.task-description-image-draft-recovery.v1",US=[1e3,5e3,15e3,6e4],SN=8,zS=Number.MAX_SAFE_INTEGER;function AN(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 CN(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(CN).forEach(n=>{r.set(Ku(n),n)}),[...r.values()]}catch{return[]}}function IN(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 IN(e,r),r}function _N(){try{return globalThis.localStorage||null}catch{return null}}function TN(e,t,r={}){const n=r.fetchImpl||bN,s=r.storage===void 0?_N():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]),h=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>=SN?zS:i()+AN(D)}})),w}finally{c.current.delete(v),f()}})();return c.current.set(v,b),b},[n,i,f,s]),g=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=>h(b))),f()},[h,t,i,f,s,e]);return d.current=g,o.useEffect(()=>{g(!0);const k=()=>{g(!0)},v=()=>{document.visibilityState==="visible"&&g(!0)},A=b=>{b.key===Vg&&g(!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,g]),{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 h(b)},[h,t,i,s,e])}}function xN(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 h=typeof m=="string"?m.trim():m===null?"":r.trim(),g=h?i(h):null,y=h.length>0?g?.id||h: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 RN(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 PN(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Wd,{detail:e}))}const Vh=Zw,jN=new Set(["status","assignee","canceledReason","completedAt","completed","inProgress","readyForReview","cancelled"]);function EN(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 NN({tasks:e,archivedTasks:t,editingTaskId:r,editingTaskDetailRevision:n=null,setTasks:s,setArchivedTasks:i,setDeletedTasks:l,setError:c,resetForm:d,setActiveTab:m,fetchTasks:f,fetchArchive:h,fetchDeletedTasks:g,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:ee="default",taskHttpMutationClient:te,onTaskRevisionConflict:me,onTaskMutationAccepted:_e,pendingTaskMetadataOverlaysRef:$e}){const Ye=o.useRef(new Map);o.useEffect(()=>{if(typeof window>"u")return;const x=de=>{const Ie=de.detail,Je=Ie?.authoritativeTask,J=String(Ie?.workspaceId||"").trim()||"default";!Je||J!==ee||(Ye.current.set(Je.id,Je),y(Je))};return window.addEventListener(Wd,x),()=>window.removeEventListener(Wd,x)},[y,ee]);const[ye,ge]=o.useState(null),le=o.useRef(null),Q=o.useRef(null),ce=o.useRef(null),$=o.useRef(null),V=o.useCallback(async(x,de,Ie,Je,J)=>{const Ze=["checklistItems","attachments","comments"].some(je=>Object.prototype.hasOwnProperty.call(Ie,je));if(!K&&!Ze)return fetch(x,de);$.current||($.current=te||Uv());const re=await $.current.prepareUpdate(ee,x,Ie,Je),Ne=await Fv(x,de,re.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(re.fingerprint,re.operationId)}else await Hg(Ne)&&await $.current.confirmUpdate(re.fingerprint,re.operationId);return Ne},[K,te,ee]),B=o.useCallback((x,de,Ie,Je,J)=>V(x,de,Ie,J,Ze=>!!Ze&&typeof Ze=="object"&&String(Ze.id||"")===Je),[V]);o.useEffect(()=>()=>{typeof window>"u"||(Q.current!==null&&(window.clearTimeout(Q.current),Q.current=null),ce.current=null)},[]);const N=o.useCallback((x=0)=>{if(!(v&&A==="local"&&b&&w)||typeof window>"u")return;const de=Math.max(0,x),Ie=Date.now()+de,Je=ce.current;if(Q.current!==null){if(de<=0||Je!==null&&Je>=Ie)return;window.clearTimeout(Q.current),Q.current=null}ce.current=Ie,Q.current=window.setTimeout(()=>{Q.current=null,ce.current=null;const J=P();J&&(D.current=J,E(J))},de)},[v,A,b,w,P,D,E]),be=o.useCallback(async(x,de)=>{let Ie=await fetch(`/api/taskforce/deleted${x}`,de);return Ie.status===404&&(Ie=await fetch(`/api/taskforce/trash${x}`,de)),Ie},[]),Ae=async(x,de=!1,Ie={})=>{if(!Ie.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const Je=de||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 re=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)),re){l(je=>[re,...je.filter(Re=>Re.taskId!==x)]);const Ne=String(re.deletedAt||"").trim();Number.isFinite(Date.parse(Ne))&&S.current.set(x,Ne)}else await g(!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,de,Ie={})=>{try{const Je=`/api/taskforce/deleted/${x}/restore`,J=String(de||"").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,re=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(!re.ok){const Ce=(await re.json().catch(()=>({}))).error||"Failed to restore deleted task.";return c(Ce),Ie.silent||k(Ce,"error"),null}const Ne=await re.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 de=await be(`/${x}`,{method:"DELETE"});if(!de.ok){const Je=(await de.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(de){return console.error("Failed to permanently delete deleted task:",de),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 de=await x.json().catch(()=>({})),Ie=Number(de?.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]),ae=o.useCallback((x,de,Ie,Je,J)=>{if(x.state==="disabled")return!1;if(x.state==="rejected"||x.state==="failed"){const Ze=Je.find(Ne=>Ne.id===de)||J.find(Ne=>Ne.id===de);s(Ne=>xn(Ne,Ze,de,Ie)),i(Ne=>xn(Ne,Ze,de,Ie));const re=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(re),k(re,"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,de,Ie={},Je)=>{const J=Je??(x.id===r?n:null),Ze=Object.keys(Ie).some(Pe=>Vh.has(Pe)),re=Object.keys(Ie).filter(Pe=>!jN.has(Pe)&&!Vh.has(Pe));if(M&&re.length>0){const Pe=`Task status was not saved because the combined update contains unsupported fields: ${re.sort().join(", ")}.`;c(Pe),k(Pe,"error");return}const Ne=new Date().toISOString(),je={...Ie,status:de,completedAt:de==="done"||de==="cancelled"?Ie.completedAt||Ne:null,completed:de==="done",inProgress:de==="in-progress",readyForReview:de==="review",cancelled:de==="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=RN(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(de,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 me?.(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||de;if(he=await _(x.id,Pe(yt,Fe,et.retryDetailRevision)),he&&(he.state==="rejected"||he.state==="failed")&&he.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await me?.(x.id,null))?.handled){c("");return}}else if(et?.handled){c("");return}}if(he&&ae(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:de,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 me?.(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,ae,y,_,_e,me,k,N,i,c,s,e]),Le=o.useCallback(async(x,de)=>{const Ie=de,Je=Ie.saveSource,J=typeof Ie.expectedDetailRevision=="string"?Ie.expectedDetailRevision:x===r?n:null;if(de=Object.fromEntries(Object.entries(de).filter(([Oe])=>Oe!=="saveSource"&&Oe!=="expectedDetailRevision")),Object.keys(de).length===0)return!0;const Ze=Ye.current.get(x),re=e.find(Oe=>Oe.id===x)||t.find(Oe=>Oe.id===x),Ne=Date.parse(String(Ze?.updatedAt||"")),je=Date.parse(String(re?.updatedAt||"")),Re=Ze&&(!re||Number.isFinite(Ne)&&(!Number.isFinite(je)||Ne>=je))?Ze:re;if(re&&Re===re&&Ze&&Ye.current.delete(x),Re&&(de=Object.fromEntries(Object.entries(de).filter(([Oe,mt])=>!EN(Re[Oe],mt))),Object.keys(de).length===0))return!0;if(de.status){const Oe=e.find(mt=>mt.id===x)||t.find(mt=>mt.id===x);if(Oe){await Te(Oe,de.status,de,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,...de}:mt)),i(Oe=>Oe.map(mt=>mt.id===x?{...mt,...de}:mt));const he=Object.fromEntries(Object.entries(de).filter(([Oe])=>Vh.has(Oe)));let De=Object.fromEntries(Object.entries(de).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,de)),i(bt=>xn(bt,It,x,de));const Xe=await me?.(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 me?.(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,de)),i(bt=>xn(bt,It,x,de));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,de)),i(bt=>xn(bt,It,x,de));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,de)),i(bt=>xn(bt,It,x,de));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,de)),i(vt=>xn(vt,Oe,x,de));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(de.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 me?.(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,me,$e,N,Te,H,M,B]),Ue=async x=>{const de=x.status==="done"?"task":"done";await Te(x,de)},st=async x=>{const de=x.status==="cancelled"?"task":"cancelled";await Te(x,de)},ft=async x=>{const de=x.status==="in-progress"?"task":"in-progress";await Te(x,de)},xe=async x=>{const de=x.status==="review"?"task":"review";await Te(x,de)},ke=async x=>{if(T)try{const de=await T(x.id,{mutationKind:"archive",cancellation:x.status==="cancelled",reason:x.status==="cancelled"?x.canceledReason??null:null});if(de&&ae(de,x.id,{},e,t)){const Ie=de.state!=="rejected"&&de.state!=="failed"&&de.state!=="ambiguous";return r===x.id&&Ie&&(d(),m("tasks")),Ie}if(!de&&M)throw new Error("Durable task archive activation returned no result.")}catch(de){console.error("Durable task archive failed before a conclusive result.",de);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),re=[];if(Ze&&typeof Ze=="object"&&re.push(Ze),re.length>0){for(const je of re)y(je);N()}else h();const Ne=new Set(re.map(je=>String(je?.id||"").trim()).filter(je=>je.length>0));return r&&Ne.has(r)&&(d(),m("tasks")),!0}else{const re=(await J.json().catch(()=>({}))).error||"Failed to archive task.";return c(re),k(re,"error"),!1}}catch(de){return console.error("Failed to archive",de),c("Failed to archive task."),k("Failed to archive task.","error"),!1}},ve=async()=>{const x=e.filter(de=>de.status==="done"||de.status==="cancelled");if(x.length!==0&&confirm(`Archive ${x.length} completed/cancelled tasks?`)){if(T){let de=!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(!de&&(!M||J?.state==="disabled"))break;const Ze="Bulk archive stopped safely because durable capture became unavailable.";c(Ze),k(Ze,"error");return}if(de=!0,ae(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(de){k(`${Ie} tasks archived`,"info"),c("");return}}try{const de=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:x.map(Ie=>Ie.id)})});if(de.ok){const Ie=await de.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))),h();k(`${Ie.archived||x.length} tasks archived`,"info"),c("")}else{const Je=(await de.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";c(Je),k(Je,"error")}}catch(de){console.error("Failed to bulk archive",de),c("Failed to bulk archive tasks."),k("Failed to bulk archive tasks.","error")}}},He=async x=>{if(T)try{const de=await T(x,{mutationKind:"unarchive"});if(de&&ae(de,x,{},e,t)){de.state!=="rejected"&&de.state!=="failed"&&k("Task restored from archive.","info");return}if(!de&&M)throw new Error("Durable task unarchive activation returned no result.")}catch(de){console.error("Durable task unarchive failed before a conclusive result.",de);const Ie="Task restore confirmation was interrupted. Retry the same action to confirm it safely.";c(Ie),k(Ie,"error");return}try{const de=`/api/taskforce/task/${x}/unarchive`,Ie=t.find(J=>J.id===x)||e.find(J=>J.id===x),Je=await V(de,{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(re=>re.id!==x)),await f(!0),N()),c(""),k("Task restored from archive.","info")}}catch(de){console.error("Failed to unarchive",de),c("Failed to unarchive task."),k("Failed to unarchive task.","error")}},Ee=o.useCallback(async(x,de="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]}),re=(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:de});Re?Ne(je,Re):re(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=de==="archive"?{ids:Ce,restoreDestination:de}:{ids:Ce};try{let he,De=null;K?($.current||($.current=te||Uv()),De=await $.current.prepareUpdate(ee,"/api/taskforce/deleted/restore-batch",Pe,de==="archive"?{deletedRecordIds:Ce,restoreDestination:de}:{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=>re(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),re(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)||re(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=>re(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(de==="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,te,j,S,ee]);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,de)=>{x.stopPropagation(),navigator.clipboard.writeText(de),ge(de),le.current!==null&&window.clearTimeout(le.current),le.current=window.setTimeout(()=>{le.current=null,ge(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:N}}const DN=NN;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 MN(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 LN({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=MN(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 g=new Headers(c.headers);l?.headers&&new Headers(l.headers).forEach((v,A)=>g.set(A,v)),f&&f!=="default"&&!g.has("x-taskforce-workspace-id")&&(g.set("x-taskforce-workspace-id",f),g.set("x-taskforce-workspace-authoritative","1"));const y=new Request(c,{...l,headers:g});return n(y)}const h=new Headers(l?.headers);return f&&f!=="default"&&!h.has("x-taskforce-workspace-id")&&(h.set("x-taskforce-workspace-id",f),h.set("x-taskforce-workspace-authoritative","1")),n(c,{...l,headers:h})}),()=>{window.fetch=n}},[e,t,r])}const $m=12e3,ON=3e4,BN=2e4;function Kh(e){return e==="cloud"?ON:$m}function HS(){return typeof performance<"u"?performance.now():Date.now()}function WN({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:r,resolveCloudAuthUrl:n,authOnlyCloudMode:s,authRequiredError:i,runtimeMode:l,workspaceSelectionScope:c,markBootstrapPhase:d,markBootstrapStalled:m,setRuntimeMode:f,setAuthRequiredForApi:h,setIsAuthenticated:g,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:ee,setAuthStateReadyRefs:te}){const me=o.useCallback(async $e=>{const Ye=$e?.force===!0;if(d("auth"),!e)return K.current;if(!t)return f("local"),h(!1),g(!1),y("anonymous"),k(""),Nm(null),v(""),A(""),b(""),w("disconnected"),P(null),E(!0),D([]),j(null),S(El()),L(!1),_(!0),te(!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 le=++M.current;let Q=null;return Q=(async()=>{const ce=HS(),$=new AbortController,V=typeof window<"u"?window.setTimeout(()=>$.abort(),BN):null,B=()=>M.current!==le,N=(be,Ae)=>{Cr(be,{durationMs:Math.max(0,Math.round(HS()-ce)),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),te(K.current,!0,!1),N("auth_session_rate_limited",{status:be.status}),K.current;if(!be.ok)return B()?K.current:(ee&&Nm(null),_(!0),te(!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,ae=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 h(ke),g(Z),y(Z?Te:"anonymous"),k(Z?ae:""),ee&&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(ae||Y(c)||"default",{preserveNonDefaultDefault:!0}),L(s||ft?!1:q&&!Z),_(!0),te(Z,!0,ke),K.current=Z,Z&&d("ready"),N("auth_session_resolved",{status:be.status,authenticated:Z,workspaceId:Z?ae:"",userId:Z?Te:"anonymous",authRequiredForApi:ke}),Z}catch(be){return B()||(ee&&Nm(null),_(!0),te(!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()),Q&&H.current===Q&&(H.current=null)}})(),H.current=Q,Q},[e,t,r,n,s,i,l,c,d,m,f,h,g,y,k,v,A,b,w,P,E,D,j,S,L,_,T,z,Y,H,M,oe,K,ee,te]),_e=l==="local"&&ee&&t?xw():"";return o.useEffect(()=>{_e&&(g(!0),_(!0),y(_e),te(!0,!0,!1),K.current=!0)},[_e,_,te,y,g,K]),o.useEffect(()=>{if(l!=="local"||!t||typeof window>"u")return;const $e=()=>{me()},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,me]),{checkAuthSession:me}}function $N(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 FN(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function UN(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function Nn(){return typeof performance<"u"?performance.now():Date.now()}function zN(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:r,getWorkspaceRequestState:n,isWorkspaceRequestStale:s,isWorkspaceEpochStale:i,isAbortError:l,isBootstrapTimeoutError:c,fetchWithTimeout:d,handleUnauthorized:m,applyBootstrapConfig:f,loadPersistedUiState:h,fetchBuildInfo:g,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:ee,workspaceSwitchingEnabled:te,authSessionResolved:me,isAuthenticated:_e,authUserId:$e,authUserAvatarUrl:Ye,setHydratedWorkspaceRole:ye,setAssigneeOptions:ge,setAssigneeOptionsLoaded:le,commitCurrentWorkspaceId:Q,currentWorkspaceId:ce,workspaceSelectionScope:$,abortWorkspaceScopedRequests:V,setWorkspaceBootstrapPending:B,checkAuthSession:N,lastConfigRefreshKeyRef:be,lastAssigneeOptionsLoadKeyRef:Ae,lastWorkspaceSyncStateLoadKeyRef:q,lastTaskSurfaceLoadKeyRef:Z,lastSettingsSurfaceLoadKeyRef:G,isOpen:ae,activeTab:Te,showArchive:Le,taskScope:Ue,settingsSection:st,workspaceBootstrapPending:ft,fetchTasks:xe,fetchPlanningEntities:ke,refreshTaskCollections:ve,loadWorkspaceSyncState:He,switchLocalCoordinatorWorkspace:Ee,hasBootstrappedDataRef:ue}=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"||!me||!_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=_P(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)}},[me,v,n,_e,s,T,_,K,b,w,P,A,E,D,r,t]),de=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 h(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}),g()}catch(et){if(l(et)||i(Pe))return;S.current||(S.current=!0,await h(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,g,d,n,m,S,l,c,i,h,y,k,K,j,r,t]),Ie=o.useCallback(async Re=>{await de(Re),await x(Re)},[de,x]),Je=o.useCallback(async()=>{if(!te)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&&ee(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)}},[ee,d,n,l,c,i,k,K,oe,Y,M,te]),J=o.useCallback(async()=>{const Re=n(),Ce=Nn(),Pe=new AbortController;H.current=Pe,le(!1);try{const[he,De]=await Promise.all([d("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},Kh(K),{signal:Pe.signal}),me&&_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()),le(!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()),le(!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):!te&&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!te&&!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),le(!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()),le(!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,me,Ye,$e,d,n,l,_e,s,K,ge,le,ye,te]),Ze=o.useCallback(async(Re,Ce)=>{if(!te)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")}}Q(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,ae&&Te==="tasks"&&!(Le||Ue==="archived"||Ue==="deleted")&&(Z.current=`${Pe}:${Te}:active:${Ue}`),ae&&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,Q,L,Ie,ke,Je,ae,Ae,be,G,Z,q,He,y,ve,K,st,B,Le,Ee,Ue,$,te]),re=o.useCallback(async Re=>{y("workspace"),B(!0);try{if(!te){const Oe=String(ce||"").trim()||"default";return Q(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 Q("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 Q("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 Q(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)}},[Q,ce,L,Je,y,k,B,Ze,$,te]),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(te&&Ce){const he=await re();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,re,B,te]),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(te){const Fe=await re();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 de({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,de,ke,x,xe,y,re,B,te]);return o.useEffect(()=>{!t&&!r&&!ue.current&&(ue.current=!0,(async()=>{const Re=Nn();if(K==="cloud"&&me&&_e){const Ce=await je({reason:"initial-load",tasksSilent:!1});if(!Ce.success||Ce.workspaceSetupRequired)return}else await de(),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"})})())},[me,L,de,ke,x,xe,ue,_e,je,K,r,t]),o.useEffect(()=>{if(t||r||ft||$==="bootstrap"||!ue.current)return;const Re=`${K}:${ce}:${$}`;be.current!==Re&&(be.current=Re,Ie())},[ce,Ie,ue,be,K,r,t,ft,$]),o.useEffect(()=>{if(t||r||ft)return;const Re=ce;q.current!==Re&&(q.current=Re,He())},[ce,q,He,r,t,ft]),o.useEffect(()=>{if(K!=="cloud"||!me||!_e){K!=="cloud"&&oe([]),M.current=!1;return}ft||!ue.current||M.current||Je()},[me,Je,ue,_e,K,oe,ft,M]),{fetchReferenceData:x,fetchBootstrapConfig:de,fetchConfig:Ie,fetchWorkspaces:Je,fetchAssigneeOptions:J,switchWorkspace:Ze,resolveWorkspaceAfterAuth:re,retryBootstrapChecks:Ne,runCloudBootstrap:je}}function HN(e){const{runtimeMode:t,workspaceUiStateScope:r,currentWorkspaceId:n,currentWorkspaceIdRef:s,referenceDataLoaded:i,activeCategories:l,activeTypes:c,priorities:d,taxonomies:m,activeWorkspaceModule:f,setActiveWorkspaceModuleState:h,groupBy:g,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:ee,filterStatus:te,setFilterStatus:me,filterAssignees:_e,setFilterAssignees:$e,filterAssigneesAllSelected:Ye,setFilterAssigneesAllSelected:ye,filterTaxonomies:ge,setFilterTaxonomies:le,sortBy:Q,setSortBy:ce,sortOrder:$,setSortOrder:V,hasInitedFilters:B,setHasInitedFilters:N,lastUsedCategory:be,setLastUsedCategory:Ae,taskforceAgentId:q,setTaskforceAgentId:Z,taskforceAgentConversationId:G,setTaskforceAgentConversationId:ae,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]),ue=o.useCallback(J=>{ve||(xe.current=!0),h(J)},[h,ve]),x=o.useCallback((J,Ze)=>{if(!J){ke.current=null,Z(""),ae(""),Le({}),P(null);return}const re=Array.isArray(J.filterCategories)||Array.isArray(J.filterPriorities)||Array.isArray(J.filterTypes)||J.filterTaxonomies&&typeof J.filterTaxonomies=="object";re||(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);re&&!je&&(ke.current={state:J,skipActiveWorkspaceModule:Ze?.skipActiveWorkspaceModule});const Ce=re&&je&&(!Re||$R(J.filterTaxonomySignature,Ee)),Pe=re&&Re&&!Ce,he=!re||Ce||Pe;if(Ze?.skipActiveWorkspaceModule||(J.activeWorkspaceModule?h(J.activeWorkspaceModule):J.groupBy==="docs"&&h("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)),ee(Array.isArray(J.filterTypes)?J.filterTypes:c.map(De=>De.value)),J.filterTaxonomies&&typeof J.filterTaxonomies=="object"&&le(J.filterTaxonomies)):Pe&&(H(l.map(De=>De.value)),oe(d.map(De=>De.value)),ee(c.map(De=>De.value)),le({})),Array.isArray(J.filterStatus)&&me(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")&&ce(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():""),ae(typeof J.taskforceAgentConversationId=="string"?J.taskforceAgentConversationId.trim():""),Le(J.taskforceAgentConversationByAgentId||{})},[l,c,Ee,d,i,h,z,D,v,$e,ye,H,oe,me,le,ee,y,N,Ae,_,ce,V,b,P,Le,ae,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 de=o.useRef(x);o.useEffect(()=>{de.current=x},[x]);const Ie=o.useCallback(async J=>{const Ze=String(J||s.current||n||"default").trim()||"default",re=`${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;de.current(Pe,{skipActiveWorkspaceModule:xe.current}),st.current=re}catch{const Ne=eS(r);s.current===Ze&&(de.current(Ne,{skipActiveWorkspaceModule:xe.current}),st.current=re)}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:g,activeWorkspaceModule:f,emptyColumnMode:k,taskScope:A,openTaskId:w||null,compressedCards:E,zenMode:j,searchQuery:L,collapsedCategories:T,filterCategories:Y,filterPriorities:M,filterTypes:K,filterStatus:te,filterAssignees:_e,filterAssigneesAllSelected:Ye,filterTaxonomies:ge,...Ee?{filterTaxonomySignature:Ee}:{},sortBy:Q,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,te,ge,K,g,B,be,w,L,Q,$,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:ue,uiStateReady:ve}}const VN="taskforce:workspace-resources-invalidated";function e_(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(VN,{detail:e}))}function GN({workspaceId:e,isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i,shouldGateProtectedApiCalls:l,authSessionResolvedRef:c,authRequiredForApiRef:d,isAuthenticatedRef:m,dataVersionRef:f,refreshTaskCollectionsForDataVersion:h,coordinatorDataVersion:g=null}){const y=o.useRef(h);y.current=h;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=!!(g&&Number.isSafeInteger(g.coordinatorGeneration)&&g.coordinatorGeneration>0&&Number.isSafeInteger(g.localDataVersion)&&g.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||!g||w(`${e}:coordinator:${g.coordinatorGeneration}`,g.localDataVersion,{monotonic:!0,establishBaseline:!1})},[g,A,e]),o.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||FN({isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i}))return;let P=!1;const E=async()=>{if(!(P||document.visibilityState!=="visible")&&!UN({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 KN="/api/taskforce/sync/v3/local/operations",qN="/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 YN(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure operation ID generation is unavailable.");return globalThis.crypto.randomUUID()}function ZN(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||YN,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 h=Ga(d.operationId,"operationId"),g=i.buildOperation(h),y=Ga(g.entityId,"entityId");let k;try{k=await VS(r,KN,{contractVersion:3,workspaceId:l,operationId:h,operation:g})}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:h}}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,h),{state:"disabled",fallbackEligible:!0,operationId:h}):{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:h,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!==h||!b||(g.mutationKind==="delete"?!A||A.taskId!==y:!v||v.id!==y)){if(!k.response.ok&&ZN(k.response.status)){try{await m(c,h)}catch{}return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:h,retryable:k.response.status===429,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:h,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}try{await f(c,h)}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:h,errorCode:"LOCAL_OPERATION_IDENTITY_CLEANUP_FAILED"}}const w=g.mutationKind==="delete"?{deleted:A}:{task:v};if(!i.isAuthenticated)return{state:"pending",fallbackEligible:!1,operationId:h,...w,pendingReason:"auth"};if(i.dispatchEnabled===!1)return{state:"pending",fallbackEligible:!1,operationId:h,...w,pendingReason:"sync-disabled"};let P;try{P=await VS(r,qN,{workspaceId:l,limit:1})}catch{return{state:"pending",fallbackEligible:!1,operationId:h,...w,pendingReason:"retry"}}if(!P.response.ok)return{state:"pending",fallbackEligible:!1,operationId:h,...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:h,...w,pendingReason:"retry"};const E=P.body.outcomes.map(wg).find(S=>S?.clientId===b&&S?.operationId===h);if(!E)return{state:"pending",fallbackEligible:!1,operationId:h,...w,pendingReason:"queued"};const D=E.disposition;if(D!=="accepted"&&D!=="retry"&&D!=="blocked"&&D!=="lease-lost")return{state:"pending",fallbackEligible:!1,operationId:h,...w,pendingReason:"retry"};const j=typeof E.errorCode=="string"?E.errorCode:void 0;return D==="accepted"?{state:"accepted",fallbackEligible:!1,operationId:h,...w,dispatchDisposition:D}:{state:D==="blocked"?"blocked":"pending",fallbackEligible:!1,operationId:h,...w,dispatchDisposition:D,pendingReason:D==="retry"||D==="lease-lost"?j==="WORKSPACE_SYNC_TRANSPORT_401"?"auth":"retry":void 0,errorCode:j}}}}const JN=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED"]);function XN(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:JN,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}const QN=new Set(["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function eD(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=Object.keys(e);return t.length>0&&t.every(r=>QN.has(r))}function tD(e){const t=o.useRef(null);return o.useCallback(async(r,n,s)=>{if(!e.enabled||!eD(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||XN()),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 rD=new Set(["title","description","priority","complexity","type","category","assignee","status","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"]),nD=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 aD(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(!rD.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&&!nD.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 sD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_CREATE_CAPTURE_DISABLED"]),oD="/api/taskforce/sync/v3/local/operations";function qu(e){return JSON.parse(Qc(aD(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(`${oD}?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,h=f?.payload?.task,g=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(h);return{workspaceId:l,operationId:c,task:Yh({...y,...g&&typeof g=="object"?g:{}},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:(h,g)=>r.abandonIfMatches(h,g),markCaptureConfirmed:(h,g)=>r.markResolved(h,g)},buildOperation:()=>{const{attachments:h,checklistItems:g,comments:y,...k}=l.task;return{domain:"task",entityId:`task-${l.operationId}`,mutationKind:"create",payload:{task:qu(k),localCarriers:{attachments:h,checklistItems:g,comments:y}}}},disabledCodes:sD,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"),h=await s(c,f);if(h&&"state"in h)return h;if(h){const k=Qc(h.task)!==Qc(m);return i({...h},l.isAuthenticated,l.dispatchEnabled,k)}let g;try{g=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}=g.task;g={...g,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=!g.created&&Qc(g.task)!==Qc(m);return i(g,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:h,checklistItems:g,comments:y,...k}=f.task;f={...f,task:Yh({...k,attachments:h,checklistItems:g,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"],iD=new Set([...t_,"status","completedAt","workstreamId","checklistItems","comments","attachments","createdAt","createdBy"]);function cD(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e;if(Object.keys(t).some(s=>!iD.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 lD(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 dD(e){let t=lD(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 uD(e){const{createdAt:t,updatedAt:r,...n}=e;return Yw(n)}function fD(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:dD(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=cD(i),m=e.enabled&&d?c.prepareForDraft(await uD(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 mD 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 mD(e,"TASK_STATUS_INVALID_PAYLOAD",400)}function pD(e){return typeof e!="string"||!KS.includes(e)?Ms(`Task status must be one of: ${KS.join(", ")}.`):e}function hD(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 gD(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 yD(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 kD(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=pD(t.status);return{status:r,assigneeIntent:yD(t.assigneeIntent,r),canceledReason:hD(t.canceledReason,r),metadataPatch:gD(t.metadataPatch)}}const vD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_STATUS_CAPTURE_DISABLED"]);function wD(e={}){const t=mf(e);return{async setStatus(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=kD({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:vD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function bD(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||wD()),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 SD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_LIFECYCLE_CAPTURE_DISABLED"]);function AD(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 CD(e={}){const t=mf(e),r=async n=>{const s=Ga(n.workspaceId,"workspaceId"),i=Ga(n.entityId,"entityId"),l=AD(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:SD,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 ID(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||CD()),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 _D=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function TD(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:_D,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function xD(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||TD()),t.current.delete({workspaceId:n,entityId:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const RD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function PD(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:RD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function jD(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||PD()),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 ED(e){return Array.from(new Set((e||[]).map(t=>String(t||"").trim()).filter(Boolean)))}function Nd(e,t){return{collections:a_(e),taskIds:ED(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 ND(e){return e.ambiguous?[]:[...e.taskIds||[]]}function DD(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 MD{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 LD{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 OD=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 BD(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 OD.has(String(t?.code||"").trim())}function WD(e){const t=globalThis.indexedDB?new qw:new MD,r=globalThis.indexedDB?new kN:new LD;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 $D={};function FD(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($D),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,UD=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"&&UD.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 zD({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:h,cloudMcpBaseUrl:g,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 se=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include",cache:"no-store"});if(!se.ok)return;const ie=await se.json().catch(()=>({})),X=ie?.config&&typeof ie.config=="object"?ie.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(h),K=j(g),ee=w.apiBaseUrl||w.baseUrl,me=M||ee||(A?"":_||L)||"",_e=oe||Y||L,$e=w.cloudAuthBaseUrl||w.baseUrl,ye=((A?$e||_e:_e||$e)||me||S).trim().replace(/\/+$/,""),ge=j(dR(w.cloudMcpBaseUrl||w.cloudAuthBaseUrl||w.cloudBaseUrl||K||oe||z||Y||T||ye)),le=(w.cloudMcpBaseUrl||K||ge||w.cloudBaseUrl||z||T||ye||S).trim().replace(/\/+$/,""),Q=!b&&!!ye&&!me,ce=b||E&&!!(ye||me),$=ce&&!Q,V=!!(ye||me||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)||!me||!C.startsWith("/")?C:`${me}${C}`,[me]),G=o.useCallback(C=>{if(!C||/^https?:\/\//i.test(C)||!C.startsWith("/"))return C;const se=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&&se&&(N==="cloud"||!E||w.cloudAuthViaLocalProxy||w.workspaceMode==="multi-cloud"))return C;const ie=ye||me;if(ie){const X=`${ie}${C}`;if(typeof window<"u"&&!b&&se)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,me,b,N]),ae=o.useCallback(C=>{const se=String(C||"").trim()||"/taskforce-ws",ie=se.startsWith("/")?se:`/${se}`,X=String(y||w.wsBaseUrl||H||me||"").trim().replace(/\/+$/,""),Be=typeof window<"u"?window.location.origin:"",qe=X||Be;if(!qe)return"";try{const rt=new URL(ie,qe);return rt.protocol==="https:"&&(rt.protocol="wss:"),rt.protocol==="http:"&&(rt.protocol="ws:"),rt.toString()}catch{return""}},[y,w.wsBaseUrl,H,me]),[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),[ue,x]=o.useState(Zu(l.theme)||xg),[de,Ie]=o.useState(Zu(l.theme)||xg),[Je,J]=o.useState(!0),[Ze]=o.useState(".taskforce"),re=!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,se)=>{const ie=String(C||"").trim();if(!ie)return;const X=String(Jt.current||"").trim();!se?.skipTransitionReset&&X&&X!==ie&&(bn.current+=1,Ur(bn.current)),Jt.current=ie,se?.clearExplicitSelection!==!1&&(Xt.current=null),Zt(ie)},[]);o.useEffect(()=>{Jt.current=it},[it]);const Sn=o.useCallback(C=>{const se=String(C||"").trim();se&&Zt(()=>{const ie=String(Xt.current||"").trim();let X=se;return ie&&ie!==se&&(X=ie),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(()=>$N({shouldGateProtectedApiCalls:$,runtimeMode:N,authSessionResolved:gt,authRequiredForApi:Ot,isAuthenticated:Bt}),[$,N,gt,Ot,Bt]),hn=Rn.shouldDeferProtectedApiCalls,dt=Rn.shouldBlockProtectedApiCalls,[On,Wt]=o.useState(null),[fe,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);LN({currentWorkspaceIdRef:Jt,resolveApiUrl:Z,runtimeMode:N});const{initiativeTemplates:ro,fetchInitiativeTemplates:Is}=GE({shouldDeferProtectedApiCalls:hn,shouldBlockProtectedApiCalls:dt}),{zenMode:$s,setZenModeState:Pa,toggleZenMode:ya}=KE(),[jn,Nr]=o.useState(!1),[Oa,Ya]=o.useState(null),{uiNotice:ia,pushNotice:Hn,clearNotice:Vn}=UE(),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 se=Ea.current;se.authSessionResolved&&se.configLoaded&&!se.workspaceBootstrapPending||(er("stalled"),qr(C),cn(ie=>ie??Date.now()))},[]),bi=o.useCallback(async(C,se,ie=$m,X)=>{const Be=new AbortController,qe=X?.signal,rt=Number(ie)>0?Number(ie):$m,Kt=Ir(),mr=C.startsWith("/api/taskforce/")?Bk(se,Jb({workspaceId:Kt.workspaceId,epoch:Kt.epoch,seed:$t.current})):se,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,se=xr==="stalled",ie=gt&&(!dn||u||se);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||ie,authPending:C,appPending:ie,ready:gt&&dn&&!u&&xr==="ready",stalled:se,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(se=>typeof se=="string"?{value:se.toLowerCase().replace(/\s+/g,"-"),label:se}:se).sort((se,ie)=>se.label.localeCompare(ie.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(ie=>ie.value==="default"||ie.value==="general"||ie.label==="General"||ie.value==="Taskforce"||ie.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}=qE({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,se)=>{if(!(se?.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 ie=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:ie.workspaceId,epoch:ie.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(ie))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:ie.workspaceId,epoch:ie.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(ie)){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(ie)&&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,se)=>{const ie=String(se||"").trim();if(!ie)throw new Error(`Cannot load ${C} details without an id.`);const X=Ir(),Be=await fetch(`/api/taskforce/${C}/${encodeURIComponent(ie)}`),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,se)=>{await F(C,se)},[F]),Tn=o.useCallback(async(C=!1,se)=>{const ie=String(Jt.current||"default").trim()||"default",X=await O(C,se),Be=String(Jt.current||"default").trim()||"default";return X&&Be===ie&&ms(ie),X},[O]),la=o.useCallback((C=!0,se)=>{const ie=String(Jt.current||"default").trim()||"default";if(En===ie)return Promise.resolve(!0);const X=Ba.current;if(X?.workspaceId===ie)return X.promise;const Be=Tn(C,se).finally(()=>{Ba.current?.promise===Be&&(Ba.current=null)});return Ba.current={workspaceId:ie,promise:Be},Be},[En,Tn]),Po=o.useCallback((C=!0,se)=>{const ie=String(Jt.current||"default").trim()||"default";if(_n===ie)return Promise.resolve(!0);const X=Wa.current;if(X?.workspaceId===ie)return X.promise;const Be=rr(C,se).finally(()=>{Wa.current?.promise===Be&&(Wa.current=null)});return Wa.current={workspaceId:ie,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 se=String(Jt.current||"default").trim()||"default";return _n!==se?Promise.resolve(!1):rr(C)},[_n,rr]),Ci=o.useCallback(async C=>{const se=C?.isSilent!==!1,ie=C?.ignoreAuthGuard===!0,X=String(Jt.current||"default").trim()||"default",Be=En===X,qe=_n===X;await Promise.all([Rt({isSilent:se,ignoreAuthGuard:ie,includeArchive:Be,highlightChangedTaskIds:C?.highlightChangedTaskIds}),qe?rr(se,{ignoreAuthGuard:ie}):Promise.resolve(!1),Pr({ignoreAuthGuard:ie})])},[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 se=String(Jt.current||"default").trim()||"default",ie=jo.current;if(jo.current={workspaceId:se,scope:ie?.workspaceId===se?s_(ie.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=ND(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}=$E({currentWorkspaceId:it,cloudAuthConfigured:V,runtimeMode:N,authSessionResolved:gt,isAuthenticated:Bt,authUserId:or,projectName:tt,resolveCloudAuthUrl:G,resolveWebSocketUrl:ae,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:de,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(se=>String(se.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(ie=>String(ie.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}=hN({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}=WN({runtimeConfigReady:E,shouldProbeCloudAuth:ce,authSessionResolved:gt,resolveCloudAuthUrl:G,authOnlyCloudMode:Q,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,se,ie)=>{lu.current=se,Vf.current=ie,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 se=typeof C=="function"?C(Ff.current):C;Ff.current=se,jy(se)},[]),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}=HE({keyShortcut:Rr,themeUseGlobalDefault:Je,runtimeMode:N,jsonBackupUseGlobalDefault:ga,globalTheme:de,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}=HN({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 se=C.runtimeMode==="cloud"?"cloud":"local",ie=!!C.authRequiredForApi,X=typeof C.userId=="string"&&C.userId.trim().length>0?C.userId.trim():"anonymous",Be=se==="cloud"&&X!=="anonymous",qe=Be||dl.current,rt=lu.current;if(be(se),dr(ie),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(se==="local"){const go=String(Jt.current||"").trim()||"default";sn(Ns,{skipTransitionReset:!dn&&go==="default"})}else Sn(Ns)}pr(se==="cloud"&&ie?!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 se=await bi("/api/taskforce/version",void 0,$m);if(!se.ok)return;const ie=await se.json().catch(()=>({}));ie?.build&&typeof ie.build=="object"&&Tt({version:String(ie.build.version||""),gitSha:ie.build.gitSha?String(ie.build.gitSha):null,buildTime:ie.build.buildTime?String(ie.build.buildTime):null,deployId:ie.build.deployId?String(ie.build.deployId):null}),Cr("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}catch(se){Io(se)&&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}=zN({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,se)=>{Xt.current=C,sn(C,se),se?.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 se=String(Qt||"").trim()||null;ur(ie=>{let X=!1;const Be=ie.map(qe=>qe.kind!=="member"||String(qe.value||"").trim()!==C||(typeof qe.avatarUrl=="string"&&qe.avatarUrl.trim().length>0?qe.avatarUrl.trim():null)===se?qe:(X=!0,{...qe,avatarUrl:se}));return X?Be:ie})},[gt,Qt,or,Bt]);const Fy=o.useMemo(()=>kt?lr.find(se=>se.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 se=C?.reason||"retry",ie=typeof C?.preferredWorkspaceId=="string"?C.preferredWorkspaceId.trim():"",X=C?.allowCommercialGate===!0;if(ie&&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:ie});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:se,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,se)=>{if(!kt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const ie=String(C||"").trim();if(!ie)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:ie,description:typeof se=="string"?se: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 se=String(C||"").trim();if(!se)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const ie=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(se)}`,{method:"DELETE",credentials:"include"}),X=await ie.json().catch(()=>({}));if(!ie.ok||X?.success===!1)return{success:!1,error:X?.error||`Failed to delete workspace (${ie.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 se=C==="operations"?"operations":"core";try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:se}})}),X=await ie.json().catch(()=>({}));return!ie.ok||X?.success===!1?!1:(await pl(),!0)}catch{return!1}},[pl]),Kp=o.useCallback(async C=>{const se=String(C?.name||"").trim(),ie=typeof C?.workspaceId=="string"?C.workspaceId.trim():"";if(!se)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:ie&&ie!=="default"?ie:void 0,name:se,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,se)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ie=C.trim().toLowerCase(),X=se;if(!ie||!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:ie,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,se,ie)=>{let X="/";try{const qe=new URL(String(se||"/"),"https://taskforce.local");qe.origin==="https://taskforce.local"&&String(se||"/").startsWith("/")&&!String(se||"/").startsWith("//")&&(X=`${qe.pathname}${qe.search}${qe.hash}`)}catch{X="/"}let Be=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?return_to=${encodeURIComponent(X)}`;ie&&(Be+=`&invite_token=${encodeURIComponent(ie)}`),window.location.href=G(Be)},[G]),Vy=o.useCallback(async(C,se,ie)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const X=C.trim().toLowerCase(),Be=se;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 ie?.displayName=="string"&&ie.displayName.trim()?{displayName:ie.displayName.trim()}:{},...typeof ie?.planId=="string"&&ie.planId.trim()?{planId:ie.planId.trim()}:{},...typeof ie?.planVersionId=="string"&&ie.planVersionId.trim()?{planVersionId:ie.planVersionId.trim()}:{},...typeof ie?.interval=="string"&&ie.interval.trim()?{interval:ie.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 se=String(C.displayName||"").trim(),ie=typeof C.avatarDraftId=="string"?C.avatarDraftId.trim():"",X=C.clearAvatar===!0;if(!se)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:se,...ie?{avatarDraftId:ie}:{},...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 se=C.trim().toLowerCase();if(!se)return{success:!1,error:"Email is required."};try{const ie=await fetch(G("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:se})}),X=await ie.json().catch(()=>({}));return!ie.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 se=C.trim();if(!se)return{success:!1,error:"Token is required."};try{const ie=await fetch(G("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se})}),X=await ie.json().catch(()=>({}));return!ie.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 se=C.trim().toLowerCase();if(!se)return{success:!1,error:"Email is required."};try{const ie=await fetch(G("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:se})}),X=await ie.json().catch(()=>({}));return!ie.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,se)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ie=C.trim(),X=se;if(!ie||!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:ie,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 se=C.trim();if(!se)return{success:!1,error:"Token is required."};try{const ie=await fetch(G("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se})}),X=await ie.json().catch(()=>({}));return!ie.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,se)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ie=C.trim(),X=se;if(!ie||!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:ie,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 se=C.trim();if(!se)return{success:!1,error:"Token is required."};try{const ie=await fetch(G("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se})}),X=await ie.json().catch(()=>({}));if(!ie.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"}),se=await C.json().catch(()=>({}));return!C.ok||!se?.success?{success:!1,error:se?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(se?.methods)?se.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 se=await fetch(G(`/api/taskforce/auth/login-methods/${encodeURIComponent(C)}`),{method:"DELETE",credentials:"include"}),ie=await se.json().catch(()=>({}));return!se.ok||!ie?.success?{success:!1,error:ie?.error||"Unlink failed.",code:ie?.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 se=await fetch(G("/api/taskforce/auth/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:C})}),ie=await se.json().catch(()=>({}));return!se.ok||!ie?.success?{success:!1,error:ie?.error||"Failed to add password.",code:ie?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[G,V]),Zi=o.useCallback(async(C,se)=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const ie=await fetch(G("/api/taskforce/auth/password/change"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({currentPassword:C,newPassword:se})}),X=await ie.json().catch(()=>({}));return!ie.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,se)=>{const ie=se&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(se)?se:"/",X=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?flow=link&return_to=${encodeURIComponent(ie)}`;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,se,ie)=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");const X=ie||`operation-${globalThis.crypto.randomUUID()}`,Be={...se,headers:{...se.headers||{},"x-taskforce-operation-id":X}};try{return await fetch(C,Be)}catch{return fetch(C,Be)}},[]),ha=o.useMemo(()=>WD(),[]),ku=o.useCallback(async C=>{try{const se=JSON.stringify(C);if(hl.current?.requestBody!==se){if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");hl.current={requestBody:se,operationId:`operation-${globalThis.crypto.randomUUID()}`}}const ie=await rs("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:se},hl.current.operationId),X=await ie.json().catch(()=>({}));return!ie.ok||!X?.success?{success:!1,error:X?.error||`Create failed (${ie.status})`}:(hl.current=null,await kn(!0),{success:!0,result:X?.results})}catch(se){return{success:!1,error:se.message}}},[kn,rs]),Xp=o.useCallback(async C=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative identity generation is unavailable.");const se={...C||{},id:C?.id||`initiative-${globalThis.crypto.randomUUID()}`,createdAt:C?.createdAt||new Date().toISOString()},ie=await rs("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(se)}),X=await ie.json().catch(()=>({}));if(!ie.ok)throw new Error(X?.error||`Failed to create initiative (${ie.status})`);return await Pr(),ta(Be=>oi(Be,X)),X},[Pr,rs]),tm=o.useCallback(async(C,se)=>{const ie=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(se||{})}),X=await ie.json().catch(()=>({}));if(!ie.ok)throw new Error(X?.error||`Failed to update initiative (${ie.status})`);return await Pr(),ta(Be=>oi(Be,X)),X},[Pr,rs]),gl=o.useCallback(async(C,se,ie)=>{const X=await rs(`/api/taskforce/${C}/${encodeURIComponent(se)}/identity`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ie)}),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 se=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}/archive`,{method:"POST"}),ie=await se.json().catch(()=>({}));if(!se.ok)throw new Error(ie?.error||`Failed to archive initiative (${se.status})`);return ta(X=>oi(X,ie)),ns(),ie},[ns,rs]),Qp=o.useCallback(async C=>{const se=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}/unarchive`,{method:"POST"}),ie=await se.json().catch(()=>({}));if(!se.ok)throw new Error(ie?.error||`Failed to unarchive initiative (${se.status})`);return ta(X=>oi(X,ie)),ns(),ie},[ns,rs]),eh=o.useCallback(async C=>{const se=await ha.prepareCreate(Jt.current||"default",C||{}),ie=await Tm("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(se.body)},se.operationId),X=!ie.ok&&await _m(ie),Be=await ie.json().catch(()=>({}));if(!ie.ok){X&&await ha.abandonCreate(se.fingerprint,se.operationId);const qe=Be?.retryAt?` Retry after ${Be.retryAt}.`:"";throw new Error(`${Be?.error||`Failed to create workstream (${ie.status})`}${qe}`)}if(Be?.id!==se.body.id)throw new Error("Created workstream identity did not match the retained request identity.");return await ha.confirmCreate(se.fingerprint,se.operationId),await Pr(),fs(qe=>{const rt=BD(qe,Be);return rt?oi(qe,rt):qe}),Be},[Jt,Pr,ha]),Zy=o.useCallback(async(C,se)=>{const ie=`/api/taskforce/workstream/${encodeURIComponent(C)}`,X=se||{},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",ie,X,qe),Kt=await Tm(ie,{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,se)=>{const ie=`/api/taskforce/workstream/${encodeURIComponent(C)}/task-order`,X={taskIds:se},Be=mn.find(Or=>Or.id===C),qe=await ha.prepareMutation(Jt.current||"default",ie,X,{updatedAt:Be?.updatedAt||null,workstreamId:C}),rt=await Tm(ie,{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 se=`/api/taskforce/workstream/${encodeURIComponent(C)}/archive`,ie=mn.find(Kt=>Kt.id===C),X=await ha.prepareMutation(Jt.current||"default",se,{},ie?{updatedAt:ie.updatedAt||null,isArchived:!!ie.isArchived}:null),Be=await Tm(se,{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 se=`/api/taskforce/workstream/${encodeURIComponent(C)}/unarchive`,ie=mn.find(Kt=>Kt.id===C),X=await ha.prepareMutation(Jt.current||"default",se,{},ie?{updatedAt:ie.updatedAt||null,isArchived:!!ie.isArchived}:null),Be=await Tm(se,{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 se=new AbortController,ie=typeof window<"u"?window.setTimeout(()=>se.abort(),5e3):null;return fetch(G("/api/taskforce/auth/providers"),{credentials:"include",signal:se.signal}).then(X=>X.ok?X.json():null).then(X=>{!C&&Array.isArray(X?.providers)&&Nt(X.providers)}).catch(()=>{}).finally(()=>{ie!==null&&typeof window<"u"&&window.clearTimeout(ie)}),()=>{C=!0,se.abort()}},[V,G]),o.useEffect(()=>{if(N!=="local"||!ce||typeof window>"u")return;const C=()=>{Jr()},se=()=>{document.visibilityState==="visible"&&C()};window.addEventListener("focus",C),window.addEventListener("online",C),document.addEventListener("visibilitychange",se);const ie=window.setInterval(C,3e4);return()=>{window.removeEventListener("focus",C),window.removeEventListener("online",C),document.removeEventListener("visibilitychange",se),window.clearInterval(ie)}},[N,ce,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(se=>se+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 se=nu,ie=un.some(X=>X.label===se||X.value===se);if(se&&ie){const X=un.find(Be=>Be.label===se||Be.value===se);ol(X?.value||se)}else ol(Qa(un));return}const C=un.some(se=>se.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),se=qt.some(C),ie=Sr.some(C);if(se||ie){const X=Qa(un);se&&ar(Be=>Be.map(qe=>C(qe)?{...qe,category:X}:qe)),ie&&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=se=>{const ie=se.detail;(String(ie?.workspaceId||"").trim()||"default")===it&&(ie?.authoritativeTask||Eo(Nd(ie?.affectedCollections?.length?ie.affectedCollections:["active","archive"],{taskIds:ie?.taskId?[ie.taskId]:[]})))};return window.addEventListener(Wd,C),()=>{window.removeEventListener(Wd,C)}},[it,Eo]);const nd=String(it||"").trim(),am=String(or||"").trim(),wu=ae("/taskforce-ws"),Xy=!!(V&&N==="cloud"&&gt&&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 se=DD(C.type,C.invalidations);se.collections.length!==0&&(Eo(se),!(!se.ambiguous||typeof window>"u")&&(Yi.current!==null&&window.clearTimeout(Yi.current),Yi.current=window.setTimeout(()=>{Yi.current=null,Eo(se)},250)))},[nd,N,Eo]);II({enabled:Xy,workspaceId:nd,websocketUrl:wu,onSignal:Qy,userId:am||void 0}),GN({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(()=>FD(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}`,se=ft||ke==="archived",ie=ke==="deleted";if(!Hf.current){Hf.current=!0,Ni.current=C,se&&la(!1),ie&&Po(!1);return}if(Ni.current===C)return;Ni.current=C,!se&&!ie&&kn(),Pr(),se&&la(!1),ie&&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 se=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(C)}`);if(se.ok){const ie=await se.json();Ce(ie.folders||[]),he(ie.files||[]),et(C)}}catch(se){console.error("[Taskforce] Failed to fetch folders:",se)}},[]),vl=o.useCallback(C=>{const se=[];if(C.path&&se.push(C.path),C.paths&&C.paths.length>0)for(const ie of C.paths)se.includes(ie)||se.push(ie);return se},[]),{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}=VE({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 se=Jo,ie={...se,...C};ys(ie);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({...ie,...Be.displayLabels})}catch(X){console.error("[Taskforce] Failed to update taxonomy display labels",X),ys(se)}},[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 se={taskId:C.id,task:C,draft:Lk(C)};ps.current=se,Us(se),Fa.current=null,va(null)},[]),{handleNavigation:tc,handleClose:rk,resetForm:om,resolveWorkstreamIdInput:id,handleEdit:Wc,applyTaskToEditor:Iu,handleOpenTaskById:qs,returnToPreviousTask:uh,clearReturnToParentTask:cd}=QE({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 se=rt=>rt.id===C||rt.id.endsWith(C);if(Xi.find(se)){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(se);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 se=String(n||"").trim(),ie=String(Jt.current||"default").trim()||"default",X=()=>{const mr=ai.current;mr&&Za.current?.ownerKey===mr&&Vn(),ai.current=null};if(se&&se!==ie){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(se).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||se)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!==ie&&!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!==ie&&!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=tD({enabled:w.syncV3TaskMetadataActivation&&N==="local",workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),im=fD({localRuntime:N==="local",enabled:w.syncV3TaskCreateActivation&&N==="local",workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),fh=w.syncV3TaskStatusActivation&&N==="local",mh=bD({enabled:fh,workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),ak=ID({enabled:N==="local",workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),$c=w.syncV3TaskDeleteActivation&&N==="local",Fc=xD({enabled:$c,workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),_u=jD({enabled:$c,workspaceId:it,isAuthenticated:Bt,dispatchEnabled:No}),cm=o.useCallback(async(C,se)=>{if(C!==Ar)return{handled:!1};const ie=[...qt,...Sr].find(qe=>qe.id===C);if(!ie)return{handled:!1};const X=await Vt(ie,{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}=DN({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}=TN(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}=wN({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,se)=>{if(!Ar||C.id!==Ar)return null;const ie=ps.current?.taskId===Ar?ps.current:{draft:Lk(C)},X=po(),Be=Lk(C),qe=gR(ie.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:se,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 se=Ja;if(!se||se.taskId!==Ar)return;const ie=yR(se.reconciliation,se.remoteDraft,C,po()),X=Ok(se.remoteTask,ie);Iu(X,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Ei(JSON.stringify(ie.attachments)!==JSON.stringify(se.remoteDraft.attachments)),Fa.current=null,va(null),ca(""),Vn();const Be=se.reconciliation.conflicts.some(qe=>qe.field==="status");C==="local"&&Be&&ie.status!==se.remoteDraft.status&&xu(se.remoteTask,ie.status)},[Iu,Vn,Ar,Ja,xu,po,Ei,ca]);o.useEffect(()=>{const C=Ja;if(!C||C.taskId!==Ar)return;const se=bR(C.reconciliation.conflicts),ie=se.length>0?se.join(", "):"task fields";Hn(`${ie.charAt(0).toUpperCase()}${ie.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 se=[...qt,...Sr].find(X=>X.id===Ar);if(!se)return;const ie=`${Ar}:${C}`;Ua.current!==ie&&(Ua.current=ie,Vt(se,{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===ie&&(Ua.current=null)}))},[Sr,Ar,Vt,ho,ca,Qo,qt]);const lk=o.useCallback(async()=>{const C=Dc.current;ll();try{await qi()}catch(se){console.warn("[Taskforce] Description image upload failed while the draft was being discarded.",se)}try{await Pu({draftUploadId:C,resolution:"discard"})}catch(se){console.warn("[Taskforce] Failed to clean discarded Description image uploads.",se)}},[qi,Pu,ll]);o.useEffect(()=>{dh.current=kh},[kh]);const{handleSetWorkstreamForCurrentTask:dk}=xN({editingTaskId:Ar,workstreamInput:Oo,pushNotice:Hn,relationshipTasks:Xi,resolveWorkstreamIdInput:id,setError:ca,updateTask:bl}),{currentTask:uk,currentTaskWorkstream:wh,currentTaskInitiative:bh}=YE({editingTaskId:Ar,relationshipTasks:Xi,initiatives:fa,workstreams:mn,workstreamInput:Oo,resolveWorkstreamIdInput:id,supplementalTasks:Mi,assignee:Cc,setAssignee:Zd,setChecklistItems:tu,setComments:_c}),Sh=zE({resolveCloudAuthUrl:G,currentWorkspaceId:it,normalizedCloudAuthBaseUrl:ye,normalizedCloudMcpBaseUrl:le,mergedConfig:l,availableWorkspaces:lr,currentTheme:ue,configLoaded:dn,globalTheme:de,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:re,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||me||"").trim().replace(/\/+$/,"");return{config:{...l,cloudEnvironment:w.cloudEnvironment||l.cloudEnvironment||"",appGates:w.appGates||l.appGates,apiBaseUrl:me||l.apiBaseUrl,cloudAuthBaseUrl:ye||l.cloudAuthBaseUrl,wsBaseUrl:mm||l.wsBaseUrl},isOpen:Ue,setIsOpen:st,activeTab:Te,setActiveTab:od,currentTheme:ue,setCurrentTheme:x,configLoaded:dn,storagePath:Ze,saveSettings:Gf,pathSaved:re,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:fe,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 HD="modulepreload",VD=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(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=l?.nonce||l?.getAttribute("nonce");s=d(r.map(m=>{if(m=VD(m),m in tA)return;tA[m]=!0;const f=m.endsWith(".css"),h=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${h}`))return;const g=document.createElement("link");if(g.rel=f?"stylesheet":HD,f||(g.as="script"),g.crossOrigin="",g.href=m,c&&g.setAttribute("nonce",c),document.head.appendChild(g),f)return new Promise((y,k)=>{g.addEventListener("load",y),g.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)})},GD="_filterGlow_1ijmf_8",KD="_floatingButton_1ijmf_18",qD="_badge_1ijmf_49",YD="_configBadge_1ijmf_66",ZD="_configBadgeActive_1ijmf_76",JD="_configBadgeRevoked_1ijmf_82",XD="_configBadgeExpired_1ijmf_88",QD="_coreModal_1ijmf_97",eM="_header_1ijmf_103",tM="_headerTitle_1ijmf_118",rM="_brandIcon_1ijmf_136",nM="_brandHomeButton_1ijmf_142",aM="_brandHomeStatic_1ijmf_143",sM="_brandCloudSuffix_1ijmf_169",oM="_projectSlash_1ijmf_174",iM="_projectNameGroup_1ijmf_180",cM="_projectNameGroupHidden_1ijmf_188",lM="_projectName_1ijmf_180",dM="_projectNameCopied_1ijmf_232",uM="_projectNameCopyFeedback_1ijmf_236",fM="_taskCountBadge_1ijmf_248",mM="_taskCountBadgeIcon_1ijmf_265",pM="_taskCountBadgeButton_1ijmf_269",hM="_taskCountBadgeActive_1ijmf_287",gM="_taskCountBadgeAlert_1ijmf_293",yM="_headerActions_1ijmf_299",kM="_sortDirectionBtn_1ijmf_306",vM="_sortDirectionBtnWidget_1ijmf_313",wM="_form_1ijmf_321",bM="_topRow_1ijmf_333",SM="_field_1ijmf_339",AM="_labelRow_1ijmf_345",CM="_label_1ijmf_345",IM="_manageLink_1ijmf_359",_M="_input_1ijmf_378",TM="_select_1ijmf_379",xM="_textarea_1ijmf_380",RM="_taskIdInlineLink_1ijmf_414",PM="_readOnly_1ijmf_433",jM="_selectWithConfig_1ijmf_441",EM="_configBtn_1ijmf_451",NM="_configBtnActive_1ijmf_481",DM="_hasPath_1ijmf_489",MM="_pathIndicator_1ijmf_494",LM="_formActions_1ijmf_500",OM="_hasCancel_1ijmf_507",BM="_submitBtn_1ijmf_511",WM="_cancelBtn_1ijmf_527",$M="_successMessage_1ijmf_559",FM="_errorMessage_1ijmf_565",UM="_successIcon_1ijmf_577",zM="_spinner_1ijmf_597",HM="_spin_1ijmf_597",VM="_boardRefreshIndicator_1ijmf_601",GM="_destructiveBtn_1ijmf_631",KM="_warningBtn_1ijmf_654",qM="_viewTab_1ijmf_677",YM="_loading_1ijmf_688",ZM="_emptyState_1ijmf_694",JM="_taskList_1ijmf_704",XM="_referenceBadge_1ijmf_710",QM="_referenceBadgeLabel_1ijmf_731",e2="_referenceBadgeStatic_1ijmf_740",t2="_provisionalReferenceBadge_1ijmf_754",r2="_copiedReference_1ijmf_776",n2="_highlight_1ijmf_788",a2="_modal_1ijmf_800",s2="_priorityEmoji_1ijmf_808",o2="_metaItem_1ijmf_812",i2="_taskFormDateInput_1ijmf_826",c2="_metaBadge_1ijmf_836",l2="_complexityPill_1ijmf_851",d2="_complexityDots_1ijmf_855",u2="_dot_1ijmf_861",f2="_dotFilled_1ijmf_869",m2="_typePill_1ijmf_875",p2="_type_bug_1ijmf_879",h2="_type_feature_1ijmf_883",g2="_type_chore_1ijmf_887",y2="_type_refactor_1ijmf_891",k2="_type_documentation_1ijmf_895",v2="_type_research_1ijmf_899",w2="_type_security_1ijmf_907",b2="_statusActionsGroup_1ijmf_911",S2="_statusActionsGroupCompact_1ijmf_917",A2="_statusSelectWrap_1ijmf_921",C2="_statusTaxonomyDropdownWrap_1ijmf_927",I2="_statusTaxonomyDropdown_1ijmf_927",_2="_statusTaxonomyDropdownCompact_1ijmf_935",T2="_statusTaxonomyDropdownIconOnly_1ijmf_939",x2="_taxonomyDropdownButton_1ijmf_944",R2="_taxonomyDropdownButtonContent_1ijmf_961",P2="_statusTaxonomyDropdownIconOnlyPanel_1ijmf_965",j2="_actionBtn_1ijmf_971",E2="_restoreTaskBtn_1ijmf_995",N2="_startWorkBtn_1ijmf_1004",D2="_workingBtn_1ijmf_1013",M2="_pulse_1ijmf_1",L2="_reviewBtn_1ijmf_1019",O2="_reviewActiveBtn_1ijmf_1029",B2="_reviewPill_1ijmf_1035",W2="_bulkArchiveBtn_1ijmf_1042",$2="_bulkDeleteBtn_1ijmf_1064",F2="_deleteBtn_1ijmf_1093",U2="_completeBtn_1ijmf_1105",z2="_completeActiveBtn_1ijmf_1115",H2="_deleteActiveBtn_1ijmf_1121",V2="_disabledBtn_1ijmf_1127",G2="_archiveList_1ijmf_1134",K2="_archiveHeader_1ijmf_1142",q2="_settingsTab_1ijmf_1153",Y2="_settingsTabMcpOnly_1ijmf_1162",Z2="_settingsTabs_1ijmf_1171",J2="_settingsLayout_1ijmf_1204",X2="_settingsLayoutMcpOnly_1ijmf_1211",Q2="_settingsSidebar_1ijmf_1217",eL="_settingsSidebarHeader_1ijmf_1227",tL="_settingsSidebarNav_1ijmf_1236",rL="_settingsSidebarBtn_1ijmf_1245",nL="_settingsSidebarBtnActive_1ijmf_1269",aL="_settingsSidebarGroup_1ijmf_1276",sL="_settingsSidebarGroupBtn_1ijmf_1282",oL="_settingsSidebarGroupLabel_1ijmf_1286",iL="_settingsSidebarGroupChevron_1ijmf_1290",cL="_settingsSidebarSubnav_1ijmf_1296",lL="_settingsSidebarSubBtn_1ijmf_1303",dL="_appScrollbar_1ijmf_1326",uL="_settingsTabBtn_1ijmf_1330",fL="_settingsTabBtnActive_1ijmf_1355",mL="_settingsContent_1ijmf_1384",pL="_mcpRegistrationHint_1ijmf_1408",hL="_mcpRegistrationPrompt_1ijmf_1419",gL="_mcpCodexTrustNote_1ijmf_1438",yL="_mcpCodexTrustHeader_1ijmf_1449",kL="_mcpCodexTrustTitle_1ijmf_1456",vL="_mcpCodexTrustCode_1ijmf_1462",wL="_mcpAuthRequiredCard_1ijmf_1477",bL="_mcpAuthRequiredIcon_1ijmf_1489",SL="_mcpAuthRequiredBody_1ijmf_1502",AL="_mcpAuthRequiredActions_1ijmf_1509",CL="_settingsToast_1ijmf_1553",IL="_settingsToastSuccess_1ijmf_1570",_L="_settingsToastError_1ijmf_1576",TL="_inputWithPrefix_1ijmf_1582",xL="_pathHint_1ijmf_1589",RL="_settingGroup_1ijmf_1602",PL="_taskCardSettingsLayout_1ijmf_1608",jL="_taskCardDependentSetting_1ijmf_1616",EL="_taskCardSettingWithHelp_1ijmf_1620",NL="_taskCardSettingHelp_1ijmf_1626",DL="_taskCardSettingsPreview_1ijmf_1633",ML="_taskCardSettingsPreviewFrame_1ijmf_1640",LL="_workspaceIdentity_1ijmf_1657",OL="_workspaceIdentityValueRow_1ijmf_1666",BL="_workspaceIdentityValue_1ijmf_1666",WL="_workspaceProfileForm_1ijmf_1682",$L="_workspaceProfileTextareaLabel_1ijmf_1689",FL="_workspaceProfileActions_1ijmf_1694",UL="_settingTitle_1ijmf_1718",zL="_settingTitleRow_1ijmf_1727",HL="_settingTitleActionBtn_1ijmf_1734",VL="_themeOptions_1ijmf_1754",GL="_buttonGrid_1ijmf_1759",KL="_themeBtn_1ijmf_1771",qL="_activeTheme_1ijmf_1795",YL="_pathInputGroup_1ijmf_1803",ZL="_saveSettingsBtn_1ijmf_1812",JL="_shortcutInputWrapper_1ijmf_1833",XL="_inputIcon_1ijmf_1838",QL="_settingHelper_1ijmf_1847",eO="_browseBtn_1ijmf_1854",tO="_inlineCategoryManager_1ijmf_1873",rO="_categoryManager_1ijmf_1884",nO="_categoryList_1ijmf_1890",aO="_categoryChip_1ijmf_1902",sO="_categoryChipLabel_1ijmf_1915",oO="_chipActionBtn_1ijmf_1923",iO="_removeCategoryBtn_1ijmf_1943",cO="_addCategoryForm_1ijmf_1963",lO="_addCategoryBtn_1ijmf_1968",dO="_filesList_1ijmf_1993",uO="_helpLink_1ijmf_2020",fO="_taskChildrenSummaryBadges_1ijmf_2039",mO="_taskChildrenProgressBar_1ijmf_2047",pO="_taskChildrenProgressBarSegmentDone_1ijmf_2058",hO="_taskChildrenProgressBarSegmentReview_1ijmf_2064",gO="_taskChildrenProgressBarSegmentInProgress_1ijmf_2070",yO="_taskChildrenProgressBarSegmentBlocked_1ijmf_2076",kO="_taskChildrenProgressText_1ijmf_2082",vO="_taskChildUnlinkBtn_1ijmf_2091",wO="_aboutText_1ijmf_2109",bO="_versionInfo_1ijmf_2116",SO="_filterBar_1ijmf_2124",AO="_kanbanHintText_1ijmf_2138",CO="_searchContainer_1ijmf_2144",IO="_searchIcon_1ijmf_2151",_O="_searchInput_1ijmf_2159",TO="_searchActive_1ijmf_2185",xO="_searchCount_1ijmf_2190",RO="_clearSearchBtn_1ijmf_2206",PO="_filterRow_1ijmf_2228",jO="_sortLabel_1ijmf_2234",EO="_archiveToggle_1ijmf_2242",NO="_filterContainer_1ijmf_2279",DO="_filterButton_1ijmf_2284",MO="_filterActive_1ijmf_2309",LO="_filterDropdown_1ijmf_2315",OO="_filterSearch_1ijmf_2330",BO="_filterSearchIcon_1ijmf_2338",WO="_filterSearchInput_1ijmf_2347",$O="_filterEmpty_1ijmf_2359",FO="_filterOption_1ijmf_2366",UO="_filterDivider_1ijmf_2396",zO="_filterSelect_1ijmf_2402",HO="_filterToggleBtn_1ijmf_2443",VO="_inProgressToggle_1ijmf_2465",GO="_activeInProgress_1ijmf_2483",KO="_activeFilter_1ijmf_2492",qO="_resetFiltersBtn_1ijmf_2502",YO="_categoryChip_disabled_1ijmf_2535",ZO="_categoryVisibilityToggle_1ijmf_2545",JO="_editCategoryInput_1ijmf_2558",XO="_categoryChipActionBtn_1ijmf_2569",QO="_categoryChipActionBtn_active_1ijmf_2587",eB="_categoryGroup_1ijmf_2592",tB="_categoryHeader_1ijmf_2600",rB="_categoryTitle_1ijmf_2614",nB="_categoryCount_1ijmf_2624",aB="_categoryItems_1ijmf_2630",sB="_selectPriority_low_1ijmf_2647",oB="_selectPriority_medium_1ijmf_2652",iB="_selectPriority_high_1ijmf_2657",cB="_selectPriority_critical_1ijmf_2662",lB="_levelSelect_1ijmf_2671",dB="_levelOption_1ijmf_2684",uB="_levelOptionFilled_1ijmf_2701",fB="_levelOption_priority_low_1ijmf_2708",mB="_levelOption_priority_medium_1ijmf_2713",pB="_levelOption_priority_high_1ijmf_2718",hB="_levelOption_priority_critical_1ijmf_2723",gB="_levelOption_complexity_tiny_1ijmf_2730",yB="_levelOption_complexity_low_1ijmf_2735",kB="_levelOption_complexity_medium_1ijmf_2740",vB="_levelOption_complexity_high_1ijmf_2745",wB="_levelOption_complexity_epic_1ijmf_2750",bB="_levelOptionActive_1ijmf_2757",SB="_levelOptionSelected_1ijmf_2762",AB="_levelLabel_1ijmf_2770",CB="_levelLabelFadeIn_1ijmf_1",IB="_closeConfigBtn_1ijmf_2795",_B="_configItem_1ijmf_2817",TB="_settingsLabel_1ijmf_2823",xB="_settingsHint_1ijmf_2832",RB="_pathList_1ijmf_2839",PB="_pathChip_1ijmf_2846",jB="_pathValid_1ijmf_2859",EB="_pathInvalid_1ijmf_2864",NB="_pathValidIcon_1ijmf_2869",DB="_pathInvalidIcon_1ijmf_2874",MB="_pathText_1ijmf_2879",LB="_removePathBtn_1ijmf_2886",OB="_pathCount_1ijmf_2908",BB="_specialistSection_1ijmf_2919",WB="_toggleHeading_1ijmf_2927",$B="_dropdownList_1ijmf_2967",FB="_specialistBadge_1ijmf_2976",UB="_iconGrid_1ijmf_3006",zB="_iconPickerBtn_1ijmf_3017",HB="_iconPickerBtnActive_1ijmf_3036",VB="_categorySubConfig_1ijmf_3043",GB="_colorPickerRow_1ijmf_3051",KB="_colorPickerGrid_1ijmf_3057",qB="_colorSwatch_1ijmf_3064",YB="_colorSwatchActive_1ijmf_3083",ZB="_categoryChipIcon_1ijmf_3089",JB="_fieldIconWrapper_1ijmf_3094",XB="_fieldIcon_1ijmf_3094",QB="_field_dynamic_1ijmf_3116",eW="_fieldIcon_dynamic_1ijmf_3122",tW="_categoryTitleIcon_1ijmf_3126",rW="_editActionsGroup_1ijmf_3131",nW="_stickyActionHeader_1ijmf_3138",aW="_taskNoticeAnchor_1ijmf_3155",sW="_taskHierarchyHeader_1ijmf_3161",oW="_taskHierarchyBadgeRow_1ijmf_3168",iW="_taskHierarchyDivider_1ijmf_3176",cW="_taskHierarchySegment_1ijmf_3182",lW="_taskHierarchyMeta_1ijmf_3189",dW="_taskHierarchyActionBtn_1ijmf_3202",uW="_taskWorkstreamPicker_1ijmf_3208",fW="_taskWorkstreamPickerIcon_1ijmf_3263",mW="_taskWorkstreamPickerPanel_1ijmf_3269",pW="_taskWorkstreamPickerOption_1ijmf_3273",hW="_taskSaveStatus_1ijmf_3295",gW="_taskSaveStatusCenter_1ijmf_3306",yW="_taskSaveStatusError_1ijmf_3314",kW="_primaryUpdateBtn_1ijmf_3318",vW="_secondaryHeaderBtn_1ijmf_3346",wW="_secondaryHeaderBtnDestructive_1ijmf_3367",bW="_attachmentCaptureContainer_1ijmf_3379",SW="_capturePrompt_1ijmf_3387",AW="_previewContainer_1ijmf_3401",CW="_previewHeader_1ijmf_3407",IW="_attachmentCapturePreview_1ijmf_3417",_W="_actions_1ijmf_3424",TW="_primaryButton_1ijmf_3430",xW="_secondaryButton_1ijmf_3445",RW="_iconButton_1ijmf_3460",PW="_attachmentGrid_1ijmf_3482",jW="_attachmentCard_1ijmf_3488",EW="_attachmentPreviewContainer_1ijmf_3502",NW="_attachmentPreviewButton_1ijmf_3519",DW="_contextFileLink_1ijmf_3537",MW="_attachmentActions_1ijmf_3563",LW="_attachmentActionBtn_1ijmf_3578",OW="_attachmentActionBtnActive_1ijmf_3600",BW="_attachmentCaptionInput_1ijmf_3606",WW="_documentAttachmentCaptionInput_1ijmf_3607",$W="_hiddenInput_1ijmf_3627",FW="_contextMenuControl_1ijmf_3631",UW="_contextMenu_1ijmf_3631",zW="_contextAddMenu_1ijmf_3677",HW="_contextActionsMenu_1ijmf_3682",VW="_attachmentImageActionsMenu_1ijmf_3686",GW="_contextDestructiveMenuItem_1ijmf_3695",KW="_contextContent_1ijmf_3699",qW="_contextContentDropActive_1ijmf_3709",YW="_contextDropOverlay_1ijmf_3713",ZW="_contextLinkComposer_1ijmf_3730",JW="_contextEmptyState_1ijmf_3737",XW="_contextGroupLabel_1ijmf_3747",QW="_contextNotice_1ijmf_3756",e$="_contextCaptionEditor_1ijmf_3761",t$="_attachmentCaptionLabel_1ijmf_3769",r$="_documentAttachmentList_1ijmf_3795",n$="_documentAttachmentItem_1ijmf_3801",a$="_documentAttachmentRow_1ijmf_3807",s$="_documentAttachmentLink_1ijmf_3816",o$="_documentAttachmentMain_1ijmf_3830",i$="_documentAttachmentReference_1ijmf_3838",c$="_documentAttachmentName_1ijmf_3843",l$="_brokenImage_1ijmf_3852",d$="_brokenImagePlaceholder_1ijmf_3860",u$="_regionOverlay_1ijmf_3874",f$="_selectionBox_1ijmf_3885",m$="_exportRow_1ijmf_3893",p$="_exportItem_1ijmf_3898",h$="_taxonomyDrillDown_1ijmf_3907",g$="_drillDownList_1ijmf_3917",y$="_drillDownSection_1ijmf_3925",k$="_drillDownSectionHeader_1ijmf_3931",v$="_drillDownSectionTitle_1ijmf_3938",w$="_drillDownItem_1ijmf_3947",b$="_drillDownItemDimmed_1ijmf_3969",S$="_drillDownItemActive_1ijmf_3977",A$="_drillDownItemInfo_1ijmf_3982",C$="_drillDownItemText_1ijmf_3988",I$="_drillDownItemLabel_1ijmf_3993",_$="_drillDownItemSubtext_1ijmf_3998",T$="_addTaxonomyBtnSmall_1ijmf_4003",x$="_taxonomyDetailView_1ijmf_4025",R$="_slideIn_1ijmf_1",P$="_detailHeader_1ijmf_4045",j$="_detailTitle_1ijmf_4054",E$="_detailContent_1ijmf_4061",N$="_createOverlay_1ijmf_4068",D$="_createDialog_1ijmf_4080",M$="_zoomIn_1ijmf_1",L$="_dialogActions_1ijmf_4108",O$="_settingsGroup_1ijmf_4126",B$="_settingsItem_1ijmf_4132",W$="_mcpHealthCompactAlert_1ijmf_4138",$$="_mcpHealthUpdateRow_1ijmf_4139",F$="_mcpHealthBlockingAlert_1ijmf_4140",U$="_mcpHealthUpdateIcon_1ijmf_4168",z$="_mcpHealthCompactBody_1ijmf_4174",H$="_mcpHealthCompactActions_1ijmf_4191",V$="_mcpHealthStableAction_1ijmf_4197",G$="_mcpUpdateDialog_1ijmf_4202",K$="_mcpUpdateDialogIntro_1ijmf_4211",q$="_mcpUpdateRestartGuidance_1ijmf_4212",Y$="_mcpUpdateVersionGrid_1ijmf_4219",Z$="_mcpUpdateDiagnostics_1ijmf_4235",J$="_mcpUpdateLoading_1ijmf_4251",X$="_mcpUpdateNotice_1ijmf_4252",Q$="_mcpUpdateCommands_1ijmf_4267",e3="_mcpUpdateSectionLabel_1ijmf_4273",t3="_mcpHealthCommandRow_1ijmf_4279",r3="_mcpHealthCommand_1ijmf_4279",n3="_mcpUpdateDialogActions_1ijmf_4322",a3="_mcpHealthCopyError_1ijmf_4328",s3="_settingLabelGroup_1ijmf_4362",o3="_settingLabel_1ijmf_4362",i3="_settingDescription_1ijmf_4374",c3="_settingInput_1ijmf_4381",l3="_codeBlockWrapper_1ijmf_4404",d3="_codeHeader_1ijmf_4413",u3="_codeHeaderActions_1ijmf_4424",f3="_codeLabel_1ijmf_4431",m3="_codeHeaderDescription_1ijmf_4439",p3="_mcpTokenCardBody_1ijmf_4447",h3="_mcpTokenFormGrid_1ijmf_4455",g3="_mcpTokenOutputWrap_1ijmf_4462",y3="_mcpTokenValueField_1ijmf_4469",k3="_mcpTokenValueText_1ijmf_4479",v3="_mcpTokenValueInput_1ijmf_4492",w3="_mcpTokenActionRow_1ijmf_4497",b3="_settingsCodeBlock_1ijmf_4505",S3="_copyBtn_1ijmf_4523",A3="_copyBtnActive_1ijmf_4544",C3="_copyBtnNeutralActive_1ijmf_4550",I3="_headerDivider_1ijmf_4568",_3="_groupByContainer_1ijmf_4574",T3="_groupByLabel_1ijmf_4582",x3="_groupBySelect_1ijmf_4587",R3="_viewSwitcher_1ijmf_4609",P3="_selectWithIcon_1ijmf_4617",j3="_marginBottom16_1ijmf_4621",E3="_headerDraggable_1ijmf_4626",N3="_headerDragging_1ijmf_4630",D3="_filterSelectSort_1ijmf_4638",M3="_archiveRow_1ijmf_4642",L3="_taskScopeToggle_1ijmf_4648",O3="_taskScopeTabs_1ijmf_4661",B3="_taskScopeTab_1ijmf_4661",W3="_taskScopeTabActive_1ijmf_4706",$3="_taskToolbarAction_1ijmf_4714",F3="_overlayHighZ_1ijmf_4730",U3="_savedText_1ijmf_4740",z3="_shortcutInput_1ijmf_1833",H3="_saveSettingsBtnWrapper_1ijmf_4748",V3="_marginBottom12_1ijmf_4752",G3="_exportRowGrid_1ijmf_4756",K3="_settingSubtitleCustom_1ijmf_4761",q3="_capitalize_1ijmf_4767",Y3="_marginTop12_1ijmf_4771",Z3="_marginTop16_1ijmf_4775",J3="_labelGroupFlex_1ijmf_4779",X3="_codeBlockWrapperCustom_1ijmf_4785",Q3="_kanbanWrapper_1ijmf_4791",eF="_kanbanContainer_1ijmf_4799",tF="_kanbanTopScroll_1ijmf_4821",rF="_kanbanTopScrollSpacer_1ijmf_4830",nF="_kanbanColumn_1ijmf_4834",aF="_kanbanColumnSticky_1ijmf_4850",sF="_kanbanColumnCollapsed_1ijmf_4856",oF="_kanbanColumnPast_1ijmf_4861",iF="_kanbanColumnSelectedDay_1ijmf_4866",cF="_kanbanHeader_1ijmf_4873",lF="_kanbanCount_1ijmf_4883",dF="_kanbanHeaderDraggable_1ijmf_4903",uF="_kanbanHeaderPanning_1ijmf_4907",fF="_kanbanQuickAdd_1ijmf_4911",mF="_kanbanColorDot_1ijmf_4932",pF="_kanbanDroppable_1ijmf_4944",hF="_kanbanDroppableScroll_1ijmf_4953",gF="_kanbanDroppableScrollVirtualized_1ijmf_4963",yF="_kanbanVirtualCanvas_1ijmf_4969",kF="_kanbanVirtualRow_1ijmf_4974",vF="_kanbanEmpty_1ijmf_4980",wF="_kanbanCard_1ijmf_4990",bF="_kanbanCardWrapper_1ijmf_5000",SF="_taxonomyDropdownActive_1ijmf_5008",AF="_kanbanCardWrapperRaised_1ijmf_5012",CF="_kanbanCardTitle_1ijmf_5016",IF="_kanbanBadges_1ijmf_5020",_F="_kanbanBadge_1ijmf_5020",TF="_headerFlex_1ijmf_5036",xF="_marginBottom8_1ijmf_5043",RF="_marginBottom20_1ijmf_5047",PF="_configPanel_1ijmf_5051",jF="_configPanelLarge_1ijmf_5060",EF="_subLabelBlock_1ijmf_5064",NF="_subLabelBlock12_1ijmf_5071",DF="_flexBetween_1ijmf_5075",MF="_flexBetweenCenter_1ijmf_5082",LF="_deleteBtnSmall_1ijmf_5087",OF="_deleteBtnMedium_1ijmf_5093",BF="_trashIcon_1ijmf_5100",WF="_gridConfig_1ijmf_5104",$F="_flexColGap4_1ijmf_5111",FF="_flexColGap4Center_1ijmf_5117",UF="_flex1_1ijmf_5124",zF="_flexCol_1ijmf_5111",HF="_flexGrow1_1ijmf_5134",VF="_inputLabel_1ijmf_5138",GF="_inputLabelBlock_1ijmf_5142",KF="_checkboxInput_1ijmf_5148",qF="_configDividerMargin_1ijmf_5154",YF="_configDividerMargin24_1ijmf_5159",ZF="_pathListMargin_1ijmf_5164",JF="_cancelBtnRed_1ijmf_5168",XF="_code_1ijmf_4404",QF="_workflowList_1ijmf_5195",e4="_workflowActions_1ijmf_5203",t4="_textBtn_1ijmf_5212",r4="_workflowGrid_1ijmf_5226",n4="_checkboxLabel_1ijmf_5234",a4="_checkboxSmall_1ijmf_5248",s4="_docWorkspace_1ijmf_5267",o4="_docIndexPanel_1ijmf_5278",i4="_docWorkspaceTrayMode_1ijmf_5290",c4="_docViewerPanel_1ijmf_5290",l4="_docWorkspaceTrayOpen_1ijmf_5295",d4="_docTrayPanel_1ijmf_5299",u4="_docTrayPanelOpen_1ijmf_5323",f4="_docSpinning_1ijmf_5331",m4="_docSpin_1ijmf_5331",p4="_docViewerEmpty_1ijmf_5350",h4="_agentsModuleRoot_1ijmf_5365",g4="_agentsModuleWithTray_1ijmf_5377",y4="_agentsModuleTrayOpen_1ijmf_5381",k4="_agentTrayPanel_1ijmf_5385",v4="_agentTrayPanelOpen_1ijmf_5408",w4="_agentTrayHeader_1ijmf_5416",b4="_agentTrayTitle_1ijmf_5431",S4="_agentTrayContent_1ijmf_5443",A4="_agentTrayContentInner_1ijmf_5451",C4="_agentsModuleContent_1ijmf_5455",I4="_taskforceAgentsModuleRoot_1ijmf_5463",_4="_taskforceAgentsModuleMain_1ijmf_5474",T4="_taskforceAgentsModuleTrayOpen_1ijmf_5482",x4="_taskforceAgentRosterHeader_1ijmf_5486",R4="_taskforceAgentRosterTitle_1ijmf_5499",P4="_taskforceAgentRosterContent_1ijmf_5511",j4="_taskforceAgentLibraryPortal_1ijmf_5519",E4="_taskforceAgentBuilderNavigation_1ijmf_5525",N4="_taskforceAgentBuilderTabs_1ijmf_5548",D4="_taskforceAgentBuilderCreateBtn_1ijmf_5565",M4="_taskforceAgentBuilderTab_1ijmf_5548",L4="_taskforceAgentBuilderTabActive_1ijmf_5606",O4="_taskforceAgentBuilderPanel_1ijmf_5624",B4="_taskforceModelConnectionsRoot_1ijmf_5632",W4="_taskforceModelConnectionsRootExternalLibrary_1ijmf_5639",$4="_taskforceModelConnectionsWorkspace_1ijmf_5643",F4="_taskforceModelConnectionsHeader_1ijmf_5653",U4="_taskforceModelConnectionCardHeader_1ijmf_5654",z4="_taskforceModelConnectionActions_1ijmf_5655",H4="_taskforceModelConnectionCodeRow_1ijmf_5656",V4="_taskforceAgentConnectionControlHeader_1ijmf_5657",G4="_taskforceAgentConnectionBindingRow_1ijmf_5658",K4="_taskforceAgentConnectionCallout_1ijmf_5659",q4="_taskforceModelConnectionNameRow_1ijmf_5679",Y4="_taskforceModelConnectionNameEditor_1ijmf_5680",Z4="_taskforceModelConnectionIdentity_1ijmf_5687",J4="_taskforceModelConnectionIdentityText_1ijmf_5693",X4="_taskforceModelConnectionLogo_1ijmf_5699",Q4="_taskforceModelConnectionCard_1ijmf_5654",e5="_taskforceAgentConnectionControl_1ijmf_5657",t5="_taskforceModelConnectionLogin_1ijmf_5739",r5="_taskforceModelConnectionsEmpty_1ijmf_5754",n5="_taskforceModelConnectionMeta_1ijmf_5760",a5="_taskforceModelConnectionsLoading_1ijmf_5788",s5="_taskforceAgentTestError_1ijmf_5851",o5="_taskforceAgentTestNotice_1ijmf_5852",i5="_taskforceAgentBuilderEmpty_1ijmf_5872",c5="_taskforceAgentBuilderEmptyIcon_1ijmf_5881",l5="_taskforceAgentTestGrid_1ijmf_5893",d5="_taskforceAgentContextBanner_1ijmf_5900",u5="_taskforceAgentContextActions_1ijmf_5919",f5="_taskforceAssistantWorkspace_1ijmf_5943",m5="_taskforceAssistantWorkspaceContent_1ijmf_5953",p5="_taskforceAssistantWorkspaceOpen_1ijmf_5962",h5="_taskforceAssistantWorkspaceCollapsed_1ijmf_5966",g5="_taskforceModalWithAssistantPanel_1ijmf_5970",y5="_taskforceModalWithAssistantPanelCollapsed_1ijmf_5975",k5="_taskforceTaskModalOverlay_1ijmf_5979",v5="_taskforceAgentDrawerOverlay_1ijmf_6000",w5="_taskforceAgentDrawerOverlayCollapsed_1ijmf_6010",b5="_taskforceAgentDrawerPanel_1ijmf_6014",S5="_taskforceAgentDrawerHeader_1ijmf_6026",A5="_taskforceAgentDrawerAgentHeader_1ijmf_6036",C5="_taskforceAgentDrawerHeaderFallback_1ijmf_6037",I5="_taskforceAgentDrawerAgentAvatar_1ijmf_6045",_5="_taskforceAgentDrawerFallbackAvatar_1ijmf_6046",T5="_taskforceAgentDrawerAgentAvatarButton_1ijmf_6068",x5="_taskforceAgentDrawerAgentPicker_1ijmf_6092",R5="_taskforceAgentDrawerHeaderActions_1ijmf_6112",P5="_taskforceAgentDrawerLoading_1ijmf_6118",j5="_taskforceAgentDrawerSurface_1ijmf_6126",E5="_taskforceAgentDrawerControls_1ijmf_6136",N5="_taskforceAgentProfileTray_1ijmf_6143",D5="_taskforceAgentProfileTrayIn_1ijmf_1",M5="_taskforceAgentProfileTrayHeader_1ijmf_6155",L5="_taskforceAgentProfileTrayIdentity_1ijmf_6163",O5="_taskforceAgentProfileTrayDetails_1ijmf_6171",B5="_taskforceAgentDrawerChatControls_1ijmf_6237",W5="_taskforceAgentConversationRename_1ijmf_6245",$5="_taskforceAgentConversationRenameError_1ijmf_6257",F5="_taskforceAgentDrawerConversationList_1ijmf_6264",U5="_taskforceAgentDrawerPrompt_1ijmf_6270",z5="_taskforceAgentDrawerPromptStatus_1ijmf_6290",H5="_taskforceAgentDrawerMetrics_1ijmf_6298",V5="_taskforceAgentOutputStack_1ijmf_6323",G5="_taskforceAgentHeaderTestPanel_1ijmf_6330",K5="_taskforceAgentTestComposer_1ijmf_6341",q5="_taskforceAgentTestSendButton_1ijmf_6353",Y5="_taskforceAgentTestPending_1ijmf_6361",Z5="_taskforceAgentRetryButton_1ijmf_6390",J5="_taskforceAgentTestRestriction_1ijmf_6399",X5="_taskforceAgentTestResult_1ijmf_6406",Q5="_taskforceAgentTestResultHeader_1ijmf_6416",eU="_taskforceAgentTestResponse_1ijmf_6434",tU="_taskforceAgentReadonlyField_1ijmf_6450",rU="_taskforceAgentAvatarPanel_1ijmf_6463",nU="_taskforceAgentAvatarEditControl_1ijmf_6475",aU="_taskforceAgentAvatarPreview_1ijmf_6481",sU="_taskforceAgentListAvatar_1ijmf_6482",oU="_taskforceAgentAvatarSyncing_1ijmf_6507",iU="_taskforceAgentAvatarSyncIcon_1ijmf_6511",cU="_taskforceAgentAvatarCopy_1ijmf_6524",lU="_taskforceAgentAvatarRole_1ijmf_6542",dU="_taskforceAgentToolbar_1ijmf_6562",uU="_taskforceAgentConversationSelect_1ijmf_6572",fU="_taskforceAgentList_1ijmf_6482",mU="_taskforceAgentListEmpty_1ijmf_6589",pU="_taskforceAgentSignatureColorField_1ijmf_6596",hU="_aiProfileColorPicker_1ijmf_6604",gU="_taskforceAgentBehaviorGrid_1ijmf_6609",yU="_taskforceAgentBehaviorWide_1ijmf_6615",kU="_taskforceAgentFieldHelper_1ijmf_6619",vU="_taskforceAgentPresentationGroup_1ijmf_6626",wU="_taskforceAgentLogList_1ijmf_6641",bU="_taskforceAgentLogEntry_1ijmf_6647",SU="_taskforceAgentToolDetails_1ijmf_6658",AU="_taskforceAgentToolActivity_1ijmf_6672",CU="_taskforceAgentToolActivityList_1ijmf_6700",IU="_taskforceAgentToolCall_1ijmf_6707",_U="_taskforceAgentToolCallFailed_1ijmf_6723",TU="_taskforceAgentToolCallName_1ijmf_6727",xU="_taskforceAgentToolCallStatus_1ijmf_6737",RU="_taskforceAgentToolDetailsGrid_1ijmf_6743",PU="_taskforceAgentToolCopyButton_1ijmf_6754",jU="_taskforceAgentLogSuccess_1ijmf_6806",EU="_taskforceAgentLogError_1ijmf_6810",NU="_taskforceAgentLogTime_1ijmf_6814",DU="_taskforceAgentConversationList_1ijmf_6820",MU="_taskforceAgentConversationBody_1ijmf_6839",LU="_taskforceAgentConversationMessage_1ijmf_6840",OU="_taskforceAgentConversationEmpty_1ijmf_6845",BU="_taskforceAgentConversationMessageUser_1ijmf_6886",WU="_taskforceAgentConversationMessageAssistant_1ijmf_6898",$U="_taskforceAgentMetaGrid_1ijmf_6913",FU="_marginTop24_1ijmf_6941",UU="_settingSubTitle_1ijmf_6945",zU="_dangerBtn_1ijmf_6954",HU="_aiProfilesExplorer_1ijmf_6970",VU="_aiProfilesRosterPanel_1ijmf_6979",GU="_aiProfilesRosterSummary_1ijmf_6990",KU="_aiProfileSeatSummary_1ijmf_6999",qU="_aiProfilesRosterState_1ijmf_7003",YU="_aiProfilesListPane_1ijmf_7015",ZU="_aiProfilesList_1ijmf_7015",JU="_aiProfilesDetailViewport_1ijmf_7035",XU="_aiProfilesSection_1ijmf_7042",QU="_aiProfilesSectionHeader_1ijmf_7048",e6="_aiProfileGroup_1ijmf_7056",t6="_aiProfileGroupSelected_1ijmf_7079",r6="_aiProfileGroupDuplicate_1ijmf_7086",n6="_aiProfileGroupHeader_1ijmf_7091",a6="_aiProfileGroupAvatar_1ijmf_7099",s6="_aiProfileGroupAvatarLogo_1ijmf_7121",o6="_aiProfileGroupIdentity_1ijmf_7133",i6="_aiProfileName_1ijmf_7142",c6="_aiProfileHandle_1ijmf_7150",l6="_aiProfileRole_1ijmf_7151",d6="_aiProfileSeatScopeIcon_1ijmf_7171",u6="_aiProfileGroupSignatureSwatch_1ijmf_7182",f6="_aiProfileSeatScopeIconDetail_1ijmf_7188",m6="_aiProfileSeatScopeIconCloud_1ijmf_7193",p6="_aiProfileSeatScopeIconLocal_1ijmf_7197",h6="_aiProfileDuplicateBadge_1ijmf_7201",g6="_aiProfileMergeSection_1ijmf_7213",y6="_aiProfileMergeRow_1ijmf_7220",k6="_aiProfileIdChip_1ijmf_7227",v6="_aiProfileKeepBadge_1ijmf_7239",w6="_aiProfileMergeActions_1ijmf_7253",b6="_aiProfileDetailPane_1ijmf_7260",S6="_aiProfileDetailCard_1ijmf_7266",A6="_aiProfileDetailHero_1ijmf_7279",C6="_aiProfileDetailIcon_1ijmf_7285",I6="_aiProfileDetailAvatar_1ijmf_7299",_6="_aiProfileDetailAvatarLogo_1ijmf_7303",T6="_aiProfileDetailHeading_1ijmf_7321",x6="_aiProfileDetailTitleRow_1ijmf_7326",R6="_aiProfileDetailTitle_1ijmf_7326",P6="_aiProfileDetailMetaRow_1ijmf_7341",j6="_aiProfileDetailHandle_1ijmf_7349",E6="_aiProfileDetailRole_1ijmf_7354",N6="_aiProfileDetailLinkedCount_1ijmf_7361",D6="_aiProfileDetailDescription_1ijmf_7366",M6="_aiProfileSignatureColor_1ijmf_7373",L6="_aiProfileSignatureSwatch_1ijmf_7383",O6="_aiProfileSignatureColorButton_1ijmf_7401",B6="_aiProfileColorOption_1ijmf_7428",W6="_aiProfileDetailDataList_1ijmf_7442",$6="_aiProfileDetailDataGroup_1ijmf_7451",F6="_aiProfileDetailDateGroup_1ijmf_7458",U6="_aiProfileDetailDataRow_1ijmf_7463",z6="_aiProfileDetailDataLabel_1ijmf_7472",H6="_aiProfileDetailDataValue_1ijmf_7479",V6="_aiProfileStatusSelect_1ijmf_7485",G6="_aiProfileInstanceSection_1ijmf_7527",K6="_aiProfileInstanceSectionHeader_1ijmf_7533",q6="_aiProfileInstanceList_1ijmf_7543",Y6="_aiProfileInstanceCard_1ijmf_7549",Z6="_aiProfileIdFooter_1ijmf_7562",J6="_aiProfileIdFooterValue_1ijmf_7572",X6="_aiProfileDangerTextButton_1ijmf_7582",Q6="_aiProfileInstanceTopRow_1ijmf_7614",ez="_aiProfileInstanceName_1ijmf_7621",tz="_aiProfileInstanceMeta_1ijmf_7628",rz="_aiProfileInlineError_1ijmf_7636",R={filterGlow:GD,floatingButton:KD,badge:qD,configBadge:YD,configBadgeActive:ZD,configBadgeRevoked:JD,configBadgeExpired:XD,coreModal:QD,header:eM,headerTitle:tM,brandIcon:rM,brandHomeButton:nM,brandHomeStatic:aM,brandCloudSuffix:sM,projectSlash:oM,projectNameGroup:iM,projectNameGroupHidden:cM,projectName:lM,projectNameCopied:dM,projectNameCopyFeedback:uM,taskCountBadge:fM,taskCountBadgeIcon:mM,taskCountBadgeButton:pM,taskCountBadgeActive:hM,taskCountBadgeAlert:gM,headerActions:yM,sortDirectionBtn:kM,sortDirectionBtnWidget:vM,form:wM,topRow:bM,field:SM,labelRow:AM,label:CM,manageLink:IM,input:_M,select:TM,textarea:xM,taskIdInlineLink:RM,readOnly:PM,selectWithConfig:jM,configBtn:EM,configBtnActive:NM,hasPath:DM,pathIndicator:MM,formActions:LM,hasCancel:OM,submitBtn:BM,cancelBtn:WM,successMessage:$M,errorMessage:FM,successIcon:UM,spinner:zM,spin:HM,boardRefreshIndicator:VM,destructiveBtn:GM,warningBtn:KM,viewTab:qM,loading:YM,emptyState:ZM,taskList:JM,referenceBadge:XM,referenceBadgeLabel:QM,referenceBadgeStatic:e2,provisionalReferenceBadge:t2,copiedReference:r2,highlight:n2,modal:a2,priorityEmoji:s2,metaItem:o2,taskFormDateInput:i2,metaBadge:c2,complexityPill:l2,complexityDots:d2,dot:u2,dotFilled:f2,typePill:m2,type_bug:p2,type_feature:h2,type_chore:g2,type_refactor:y2,type_documentation:k2,type_research:v2,"type_ui-ux":"_type_ui-ux_1ijmf_903",type_security:w2,statusActionsGroup:b2,statusActionsGroupCompact:S2,statusSelectWrap:A2,statusTaxonomyDropdownWrap:C2,statusTaxonomyDropdown:I2,statusTaxonomyDropdownCompact:_2,statusTaxonomyDropdownIconOnly:T2,taxonomyDropdownButton:x2,taxonomyDropdownButtonContent:R2,statusTaxonomyDropdownIconOnlyPanel:P2,actionBtn:j2,restoreTaskBtn:E2,startWorkBtn:N2,workingBtn:D2,pulse:M2,reviewBtn:L2,reviewActiveBtn:O2,reviewPill:B2,bulkArchiveBtn:W2,bulkDeleteBtn:$2,deleteBtn:F2,completeBtn:U2,completeActiveBtn:z2,deleteActiveBtn:H2,disabledBtn:V2,archiveList:G2,archiveHeader:K2,settingsTab:q2,settingsTabMcpOnly:Y2,settingsTabs:Z2,settingsLayout:J2,settingsLayoutMcpOnly:X2,settingsSidebar:Q2,settingsSidebarHeader:eL,settingsSidebarNav:tL,settingsSidebarBtn:rL,settingsSidebarBtnActive:nL,settingsSidebarGroup:aL,settingsSidebarGroupBtn:sL,settingsSidebarGroupLabel:oL,settingsSidebarGroupChevron:iL,settingsSidebarSubnav:cL,settingsSidebarSubBtn:lL,appScrollbar:dL,settingsTabBtn:uL,settingsTabBtnActive:fL,settingsContent:mL,mcpRegistrationHint:pL,mcpRegistrationPrompt:hL,mcpCodexTrustNote:gL,mcpCodexTrustHeader:yL,mcpCodexTrustTitle:kL,mcpCodexTrustCode:vL,mcpAuthRequiredCard:wL,mcpAuthRequiredIcon:bL,mcpAuthRequiredBody:SL,mcpAuthRequiredActions:AL,settingsToast:CL,settingsToastSuccess:IL,settingsToastError:_L,inputWithPrefix:TL,pathHint:xL,settingGroup:RL,taskCardSettingsLayout:PL,taskCardDependentSetting:jL,taskCardSettingWithHelp:EL,taskCardSettingHelp:NL,taskCardSettingsPreview:DL,taskCardSettingsPreviewFrame:ML,workspaceIdentity:LL,workspaceIdentityValueRow:OL,workspaceIdentityValue:BL,workspaceProfileForm:WL,workspaceProfileTextareaLabel:$L,workspaceProfileActions:FL,settingTitle:UL,settingTitleRow:zL,settingTitleActionBtn:HL,themeOptions:VL,buttonGrid:GL,themeBtn:KL,activeTheme:qL,pathInputGroup:YL,saveSettingsBtn:ZL,shortcutInputWrapper:JL,inputIcon:XL,settingHelper:QL,browseBtn:eO,inlineCategoryManager:tO,categoryManager:rO,categoryList:nO,categoryChip:aO,categoryChipLabel:sO,chipActionBtn:oO,removeCategoryBtn:iO,addCategoryForm:cO,addCategoryBtn:lO,filesList:dO,helpLink:uO,taskChildrenSummaryBadges:fO,taskChildrenProgressBar:mO,taskChildrenProgressBarSegmentDone:pO,taskChildrenProgressBarSegmentReview:hO,taskChildrenProgressBarSegmentInProgress:gO,taskChildrenProgressBarSegmentBlocked:yO,taskChildrenProgressText:kO,taskChildUnlinkBtn:vO,aboutText:wO,versionInfo:bO,filterBar:SO,kanbanHintText:AO,searchContainer:CO,searchIcon:IO,searchInput:_O,searchActive:TO,searchCount:xO,clearSearchBtn:RO,filterRow:PO,sortLabel:jO,archiveToggle:EO,filterContainer:NO,filterButton:DO,filterActive:MO,filterDropdown:LO,filterSearch:OO,filterSearchIcon:BO,filterSearchInput:WO,filterEmpty:$O,filterOption:FO,filterDivider:UO,filterSelect:zO,filterToggleBtn:HO,inProgressToggle:VO,activeInProgress:GO,activeFilter:KO,resetFiltersBtn:qO,categoryChip_disabled:YO,categoryVisibilityToggle:ZO,editCategoryInput:JO,categoryChipActionBtn:XO,categoryChipActionBtn_active:QO,categoryGroup:eB,categoryHeader:tB,categoryTitle:rB,categoryCount:nB,categoryItems:aB,selectPriority_low:sB,selectPriority_medium:oB,selectPriority_high:iB,selectPriority_critical:cB,"critical-glow":"_critical-glow_1ijmf_1",levelSelect:lB,levelOption:dB,levelOptionFilled:uB,levelOption_priority_low:fB,levelOption_priority_medium:mB,levelOption_priority_high:pB,levelOption_priority_critical:hB,levelOption_complexity_tiny:gB,levelOption_complexity_low:yB,levelOption_complexity_medium:kB,levelOption_complexity_high:vB,levelOption_complexity_epic:wB,levelOptionActive:bB,levelOptionSelected:SB,levelLabel:AB,levelLabelFadeIn:CB,closeConfigBtn:IB,configItem:_B,settingsLabel:TB,settingsHint:xB,pathList:RB,pathChip:PB,pathValid:jB,pathInvalid:EB,pathValidIcon:NB,pathInvalidIcon:DB,pathText:MB,removePathBtn:LB,pathCount:OB,specialistSection:BB,toggleHeading:WB,dropdownList:$B,specialistBadge:FB,iconGrid:UB,iconPickerBtn:zB,iconPickerBtnActive:HB,categorySubConfig:VB,colorPickerRow:GB,colorPickerGrid:KB,colorSwatch:qB,colorSwatchActive:YB,categoryChipIcon:ZB,fieldIconWrapper:JB,fieldIcon:XB,field_dynamic:QB,fieldIcon_dynamic:eW,categoryTitleIcon:tW,editActionsGroup:rW,stickyActionHeader:nW,taskNoticeAnchor:aW,taskHierarchyHeader:sW,taskHierarchyBadgeRow:oW,taskHierarchyDivider:iW,taskHierarchySegment:cW,taskHierarchyMeta:lW,taskHierarchyActionBtn:dW,taskWorkstreamPicker:uW,taskWorkstreamPickerIcon:fW,taskWorkstreamPickerPanel:mW,taskWorkstreamPickerOption:pW,taskSaveStatus:hW,taskSaveStatusCenter:gW,taskSaveStatusError:yW,primaryUpdateBtn:kW,secondaryHeaderBtn:vW,secondaryHeaderBtnDestructive:wW,attachmentCaptureContainer:bW,capturePrompt:SW,previewContainer:AW,previewHeader:CW,attachmentCapturePreview:IW,actions:_W,primaryButton:TW,secondaryButton:xW,iconButton:RW,attachmentGrid:PW,attachmentCard:jW,attachmentPreviewContainer:EW,attachmentPreviewButton:NW,contextFileLink:DW,attachmentActions:MW,attachmentActionBtn:LW,attachmentActionBtnActive:OW,attachmentCaptionInput:BW,documentAttachmentCaptionInput:WW,hiddenInput:$W,contextMenuControl:FW,contextMenu:UW,contextAddMenu:zW,contextActionsMenu:HW,attachmentImageActionsMenu:VW,contextDestructiveMenuItem:GW,contextContent:KW,contextContentDropActive:qW,contextDropOverlay:YW,contextLinkComposer:ZW,contextEmptyState:JW,contextGroupLabel:XW,contextNotice:QW,contextCaptionEditor:e$,attachmentCaptionLabel:t$,documentAttachmentList:r$,documentAttachmentItem:n$,documentAttachmentRow:a$,documentAttachmentLink:s$,documentAttachmentMain:o$,documentAttachmentReference:i$,documentAttachmentName:c$,brokenImage:l$,brokenImagePlaceholder:d$,regionOverlay:u$,selectionBox:f$,exportRow:m$,exportItem:p$,taxonomyDrillDown:h$,drillDownList:g$,drillDownSection:y$,drillDownSectionHeader:k$,drillDownSectionTitle:v$,drillDownItem:w$,drillDownItemDimmed:b$,drillDownItemActive:S$,drillDownItemInfo:A$,drillDownItemText:C$,drillDownItemLabel:I$,drillDownItemSubtext:_$,addTaxonomyBtnSmall:T$,taxonomyDetailView:x$,slideIn:R$,detailHeader:P$,detailTitle:j$,detailContent:E$,createOverlay:N$,createDialog:D$,zoomIn:M$,dialogActions:L$,settingsGroup:O$,settingsItem:B$,mcpHealthCompactAlert:W$,mcpHealthUpdateRow:$$,mcpHealthBlockingAlert:F$,mcpHealthUpdateIcon:U$,mcpHealthCompactBody:z$,mcpHealthCompactActions:H$,mcpHealthStableAction:V$,mcpUpdateDialog:G$,mcpUpdateDialogIntro:K$,mcpUpdateRestartGuidance:q$,mcpUpdateVersionGrid:Y$,mcpUpdateDiagnostics:Z$,mcpUpdateLoading:J$,mcpUpdateNotice:X$,mcpUpdateCommands:Q$,mcpUpdateSectionLabel:e3,mcpHealthCommandRow:t3,mcpHealthCommand:r3,mcpUpdateDialogActions:n3,mcpHealthCopyError:a3,settingLabelGroup:s3,settingLabel:o3,settingDescription:i3,settingInput:c3,codeBlockWrapper:l3,codeHeader:d3,codeHeaderActions:u3,codeLabel:f3,codeHeaderDescription:m3,mcpTokenCardBody:p3,mcpTokenFormGrid:h3,mcpTokenOutputWrap:g3,mcpTokenValueField:y3,mcpTokenValueText:k3,mcpTokenValueInput:v3,mcpTokenActionRow:w3,settingsCodeBlock:b3,copyBtn:S3,copyBtnActive:A3,copyBtnNeutralActive:C3,headerDivider:I3,groupByContainer:_3,groupByLabel:T3,groupBySelect:x3,viewSwitcher:R3,selectWithIcon:P3,marginBottom16:j3,headerDraggable:E3,headerDragging:N3,filterSelectSort:D3,archiveRow:M3,taskScopeToggle:L3,taskScopeTabs:O3,taskScopeTab:B3,taskScopeTabActive:W3,taskToolbarAction:$3,overlayHighZ:F3,savedText:U3,shortcutInput:z3,saveSettingsBtnWrapper:H3,marginBottom12:V3,exportRowGrid:G3,settingSubtitleCustom:K3,capitalize:q3,marginTop12:Y3,marginTop16:Z3,labelGroupFlex:J3,codeBlockWrapperCustom:X3,kanbanWrapper:Q3,kanbanContainer:eF,kanbanTopScroll:tF,kanbanTopScrollSpacer:rF,kanbanColumn:nF,kanbanColumnSticky:aF,kanbanColumnCollapsed:sF,kanbanColumnPast:oF,kanbanColumnSelectedDay:iF,kanbanHeader:cF,kanbanCount:lF,kanbanHeaderDraggable:dF,kanbanHeaderPanning:uF,kanbanQuickAdd:fF,kanbanColorDot:mF,kanbanDroppable:pF,kanbanDroppableScroll:hF,kanbanDroppableScrollVirtualized:gF,kanbanVirtualCanvas:yF,kanbanVirtualRow:kF,kanbanEmpty:vF,kanbanCard:wF,kanbanCardWrapper:bF,taxonomyDropdownActive:SF,kanbanCardWrapperRaised:AF,kanbanCardTitle:CF,kanbanBadges:IF,kanbanBadge:_F,headerFlex:TF,marginBottom8:xF,marginBottom20:RF,configPanel:PF,configPanelLarge:jF,subLabelBlock:EF,subLabelBlock12:NF,flexBetween:DF,flexBetweenCenter:MF,deleteBtnSmall:LF,deleteBtnMedium:OF,trashIcon:BF,gridConfig:WF,flexColGap4:$F,flexColGap4Center:FF,flex1:UF,flexCol:zF,flexGrow1:HF,inputLabel:VF,inputLabelBlock:GF,checkboxInput:KF,configDividerMargin:qF,configDividerMargin24:YF,pathListMargin:ZF,cancelBtnRed:JF,code:XF,workflowList:QF,workflowActions:e4,textBtn:t4,workflowGrid:r4,checkboxLabel:n4,checkboxSmall:a4,docWorkspace:s4,docIndexPanel:o4,docWorkspaceTrayMode:i4,docViewerPanel:c4,docWorkspaceTrayOpen:l4,docTrayPanel:d4,docTrayPanelOpen:u4,docSpinning:f4,docSpin:m4,docViewerEmpty:p4,agentsModuleRoot:h4,agentsModuleWithTray:g4,agentsModuleTrayOpen:y4,agentTrayPanel:k4,agentTrayPanelOpen:v4,agentTrayHeader:w4,agentTrayTitle:b4,agentTrayContent:S4,agentTrayContentInner:A4,agentsModuleContent:C4,taskforceAgentsModuleRoot:I4,taskforceAgentsModuleMain:_4,taskforceAgentsModuleTrayOpen:T4,taskforceAgentRosterHeader:x4,taskforceAgentRosterTitle:R4,taskforceAgentRosterContent:P4,taskforceAgentLibraryPortal:j4,taskforceAgentBuilderNavigation:E4,taskforceAgentBuilderTabs:N4,taskforceAgentBuilderCreateBtn:D4,taskforceAgentBuilderTab:M4,taskforceAgentBuilderTabActive:L4,taskforceAgentBuilderPanel:O4,taskforceModelConnectionsRoot:B4,taskforceModelConnectionsRootExternalLibrary:W4,taskforceModelConnectionsWorkspace:$4,taskforceModelConnectionsHeader:F4,taskforceModelConnectionCardHeader:U4,taskforceModelConnectionActions:z4,taskforceModelConnectionCodeRow:H4,taskforceAgentConnectionControlHeader:V4,taskforceAgentConnectionBindingRow:G4,taskforceAgentConnectionCallout:K4,taskforceModelConnectionNameRow:q4,taskforceModelConnectionNameEditor:Y4,taskforceModelConnectionIdentity:Z4,taskforceModelConnectionIdentityText:J4,taskforceModelConnectionLogo:X4,taskforceModelConnectionCard:Q4,taskforceAgentConnectionControl:e5,taskforceModelConnectionLogin:t5,taskforceModelConnectionsEmpty:r5,taskforceModelConnectionMeta:n5,taskforceModelConnectionsLoading:a5,taskforceAgentTestError:s5,taskforceAgentTestNotice:o5,taskforceAgentBuilderEmpty:i5,taskforceAgentBuilderEmptyIcon:c5,taskforceAgentTestGrid:l5,taskforceAgentContextBanner:d5,taskforceAgentContextActions:u5,taskforceAssistantWorkspace:f5,taskforceAssistantWorkspaceContent:m5,taskforceAssistantWorkspaceOpen:p5,taskforceAssistantWorkspaceCollapsed:h5,taskforceModalWithAssistantPanel:g5,taskforceModalWithAssistantPanelCollapsed:y5,taskforceTaskModalOverlay:k5,taskforceAgentDrawerOverlay:v5,taskforceAgentDrawerOverlayCollapsed:w5,taskforceAgentDrawerPanel:b5,taskforceAgentDrawerHeader:S5,taskforceAgentDrawerAgentHeader:A5,taskforceAgentDrawerHeaderFallback:C5,taskforceAgentDrawerAgentAvatar:I5,taskforceAgentDrawerFallbackAvatar:_5,taskforceAgentDrawerAgentAvatarButton:T5,taskforceAgentDrawerAgentPicker:x5,taskforceAgentDrawerHeaderActions:R5,taskforceAgentDrawerLoading:P5,taskforceAgentDrawerSurface:j5,taskforceAgentDrawerControls:E5,taskforceAgentProfileTray:N5,taskforceAgentProfileTrayIn:D5,taskforceAgentProfileTrayHeader:M5,taskforceAgentProfileTrayIdentity:L5,taskforceAgentProfileTrayDetails:O5,taskforceAgentDrawerChatControls:B5,taskforceAgentConversationRename:W5,taskforceAgentConversationRenameError:$5,taskforceAgentDrawerConversationList:F5,taskforceAgentDrawerPrompt:U5,taskforceAgentDrawerPromptStatus:z5,taskforceAgentDrawerMetrics:H5,taskforceAgentOutputStack:V5,taskforceAgentHeaderTestPanel:G5,taskforceAgentTestComposer:K5,taskforceAgentTestSendButton:q5,taskforceAgentTestPending:Y5,taskforceAgentRetryButton:Z5,taskforceAgentTestRestriction:J5,taskforceAgentTestResult:X5,taskforceAgentTestResultHeader:Q5,taskforceAgentTestResponse:eU,taskforceAgentReadonlyField:tU,taskforceAgentAvatarPanel:rU,taskforceAgentAvatarEditControl:nU,taskforceAgentAvatarPreview:aU,taskforceAgentListAvatar:sU,taskforceAgentAvatarSyncing:oU,taskforceAgentAvatarSyncIcon:iU,taskforceAgentAvatarCopy:cU,taskforceAgentAvatarRole:lU,taskforceAgentToolbar:dU,taskforceAgentConversationSelect:uU,taskforceAgentList:fU,taskforceAgentListEmpty:mU,taskforceAgentSignatureColorField:pU,aiProfileColorPicker:hU,taskforceAgentBehaviorGrid:gU,taskforceAgentBehaviorWide:yU,taskforceAgentFieldHelper:kU,taskforceAgentPresentationGroup:vU,taskforceAgentLogList:wU,taskforceAgentLogEntry:bU,taskforceAgentToolDetails:SU,taskforceAgentToolActivity:AU,taskforceAgentToolActivityList:CU,taskforceAgentToolCall:IU,taskforceAgentToolCallFailed:_U,taskforceAgentToolCallName:TU,taskforceAgentToolCallStatus:xU,taskforceAgentToolDetailsGrid:RU,taskforceAgentToolCopyButton:PU,taskforceAgentLogSuccess:jU,taskforceAgentLogError:EU,taskforceAgentLogTime:NU,taskforceAgentConversationList:DU,taskforceAgentConversationBody:MU,taskforceAgentConversationMessage:LU,taskforceAgentConversationEmpty:OU,taskforceAgentConversationMessageUser:BU,taskforceAgentConversationMessageAssistant:WU,taskforceAgentMetaGrid:$U,marginTop24:FU,settingSubTitle:UU,dangerBtn:zU,aiProfilesExplorer:HU,aiProfilesRosterPanel:VU,aiProfilesRosterSummary:GU,aiProfileSeatSummary:KU,aiProfilesRosterState:qU,aiProfilesListPane:YU,aiProfilesList:ZU,aiProfilesDetailViewport:JU,aiProfilesSection:XU,aiProfilesSectionHeader:QU,aiProfileGroup:e6,aiProfileGroupSelected:t6,aiProfileGroupDuplicate:r6,aiProfileGroupHeader:n6,aiProfileGroupAvatar:a6,aiProfileGroupAvatarLogo:s6,aiProfileGroupIdentity:o6,aiProfileName:i6,aiProfileHandle:c6,aiProfileRole:l6,aiProfileSeatScopeIcon:d6,aiProfileGroupSignatureSwatch:u6,aiProfileSeatScopeIconDetail:f6,aiProfileSeatScopeIconCloud:m6,aiProfileSeatScopeIconLocal:p6,aiProfileDuplicateBadge:h6,aiProfileMergeSection:g6,aiProfileMergeRow:y6,aiProfileIdChip:k6,aiProfileKeepBadge:v6,aiProfileMergeActions:w6,aiProfileDetailPane:b6,aiProfileDetailCard:S6,aiProfileDetailHero:A6,aiProfileDetailIcon:C6,aiProfileDetailAvatar:I6,aiProfileDetailAvatarLogo:_6,aiProfileDetailHeading:T6,aiProfileDetailTitleRow:x6,aiProfileDetailTitle:R6,aiProfileDetailMetaRow:P6,aiProfileDetailHandle:j6,aiProfileDetailRole:E6,aiProfileDetailLinkedCount:N6,aiProfileDetailDescription:D6,aiProfileSignatureColor:M6,aiProfileSignatureSwatch:L6,aiProfileSignatureColorButton:O6,aiProfileColorOption:B6,aiProfileDetailDataList:W6,aiProfileDetailDataGroup:$6,aiProfileDetailDateGroup:F6,aiProfileDetailDataRow:U6,aiProfileDetailDataLabel:z6,aiProfileDetailDataValue:H6,aiProfileStatusSelect:V6,aiProfileInstanceSection:G6,aiProfileInstanceSectionHeader:K6,aiProfileInstanceList:q6,aiProfileInstanceCard:Y6,aiProfileIdFooter:Z6,aiProfileIdFooterValue:J6,aiProfileDangerTextButton:X6,aiProfileInstanceTopRow:Q6,aiProfileInstanceName:ez,aiProfileInstanceMeta:tz,aiProfileInlineError:rz},nz="_standaloneWrapper_128c3_1",az="_standalonePage_128c3_11",sz="_standaloneHeader_128c3_21",oz="_standaloneTitle_128c3_27",iz="_standaloneContent_128c3_31",cz="_workspaceToolRail_128c3_37",lz="_workspaceToolRailLeft_128c3_48",dz="_workspaceToolRailRight_128c3_57",uz="_workspaceToolRailMain_128c3_64",fz="_workspaceToolRailBottom_128c3_72",mz="_workspaceToolRailDivider_128c3_82",pz="_workspaceToolButton_128c3_89",hz="_headerTitleWidget_128c3_124",tn={standaloneWrapper:nz,standalonePage:az,standaloneHeader:sz,standaloneTitle:oz,standaloneContent:iz,workspaceToolRail:cz,workspaceToolRailLeft:lz,workspaceToolRailRight:dz,workspaceToolRailMain:uz,workspaceToolRailBottom:fz,workspaceToolRailDivider:mz,workspaceToolButton:pz,headerTitleWidget:hz},gz="_overlay_11v7l_1",yz="_browser_11v7l_16",kz="_header_11v7l_27",vz="_pathInfo_11v7l_36",wz="_actions_11v7l_52",bz="_list_11v7l_57",Sz="_item_11v7l_63",Az="_itemCurrent_11v7l_80",Cz="_itemFile_11v7l_86",Iz="_empty_11v7l_90",Dn={overlay:gz,browser:yz,header:kz,pathInfo:vz,actions:wz,list:bz,item:Sz,itemCurrent:Az,itemFile:Cz,empty:Iz},_z="_overlay_1hk7m_2",Tz="_overlayHighZ_1hk7m_15",xz="_modal_1hk7m_20",Rz="_draggableModal_1hk7m_46",Pz="_draggableHeader_1hk7m_53",jz="_headerActions_1hk7m_61",Ez="_modalContent_1hk7m_69",Nz="_form_1hk7m_80",Dz="_formActions_1hk7m_91",Mz="_modalFooter_1hk7m_98",Lz="_modalSizeSm_1hk7m_104",Oz="_modalSizeMd_1hk7m_108",Bz="_modalSizeMdWide_1hk7m_112",Wz="_modalSizeLg_1hk7m_116",$z="_modalSizeXl_1hk7m_120",Fz="_modalSizeFull_1hk7m_124",Uz="_settingsViewModal_1hk7m_129",zz="_unsavedOverlay_1hk7m_148",Hz="_unsavedModal_1hk7m_153",Vz="_unsavedHeader_1hk7m_159",Gz="_unsavedTitle_1hk7m_164",Kz="_unsavedContent_1hk7m_168",qz="_unsavedText_1hk7m_172",Yz="_unsavedActions_1hk7m_177",yr={overlay:_z,overlayHighZ:Tz,modal:xz,draggableModal:Rz,draggableHeader:Pz,headerActions:jz,modalContent:Ez,form:Nz,formActions:Dz,modalFooter:Mz,modalSizeSm:Lz,modalSizeMd:Oz,modalSizeMdWide:Bz,modalSizeLg:Wz,modalSizeXl:$z,modalSizeFull:Fz,settingsViewModal:Uz,unsavedOverlay:zz,unsavedModal:Hz,unsavedHeader:Vz,unsavedTitle:Gz,unsavedContent:Kz,unsavedText:qz,unsavedActions:Yz},Zz=90;function o_(e){const t=Date.parse(String(e||"").trim());return Number.isFinite(t)?new Date(t+Zz*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(g=>[g.taskId,g])),[e]),l=o.useMemo(()=>t.map(g=>i.get(g)).filter(g=>!!g),[t,i]),c=o.useMemo(()=>new Set(l.map(g=>g.id)),[l]);o.useEffect(()=>{s(g=>{const y=r?new Set(Array.from(g).filter(k=>c.has(k))):new Set;return y.size===g.size&&Array.from(y).every(k=>g.has(k))?g:y})},[r,c]);const d=o.useMemo(()=>l.filter(g=>n.has(g.id)),[l,n]),m=o.useCallback((g,y)=>{s(k=>{const v=new Set(k);return y?v.add(g):v.delete(g),v})},[]),f=o.useCallback(()=>{s(new Set(l.map(g=>g.id)))},[l]),h=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:h}}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 Jz(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 Xz(e){const t=Jz(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 Qz(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,h]=o.useState(!1),[g,y]=o.useState(""),k=o.useRef(null),v=o.useRef(null),A=o.useRef(null),b=c&&g.trim()?t.filter(T=>T.label.toLocaleLowerCase().includes(g.trim().toLocaleLowerCase())):t;o.useEffect(()=>{const T=z=>{k.current&&!k.current.contains(z.target)&&h(!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=Qz(e),L=P?`All ${S}`:E?`No ${S}`:j===1?`1 ${e}`:`${j} ${S}`,_=()=>{y(""),h(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(),h(!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:g,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 e7="_taskItem_17iu4_1",t7="_compressed_17iu4_25",r7="_taskHeader_17iu4_30",n7="_taskReferenceCluster_17iu4_34",a7="_taskMeta_17iu4_38",s7="_taskTitle_17iu4_43",o7="_taskCover_17iu4_59",i7="_taskItemRecentlyChanged_17iu4_103",c7="_assigneeAvatarShared_17iu4_143",l7="_assigneePicker_17iu4_156",d7="_inProgress_17iu4_216",u7="_onHold_17iu4_217",f7="_readyForReview_17iu4_218",m7="_completed_17iu4_219",p7="_cancelled_17iu4_232",h7="_readOnly_17iu4_243",g7="_archived_17iu4_252",y7="_taskContent_17iu4_262",k7="_kanbanCardOverlay_17iu4_271",v7="_deletedExpiry_17iu4_292",w7="_taskReferenceDivider_17iu4_315",b7="_taskReferenceSegment_17iu4_322",S7="_taskActions_17iu4_329",A7="_taskMetaCompact_17iu4_352",C7="_taskMetaRow_17iu4_359",I7="_taskMetaBadgeGroup_17iu4_369",_7="_taskMetaIdentityGroup_17iu4_382",T7="_taskDescription_17iu4_390",x7="_taskLatestComment_17iu4_399",R7="_taskLatestCommentTinted_17iu4_414",P7="_taskLatestCommentHeader_17iu4_418",j7="_taskLatestActivityHeading_17iu4_435",E7="_taskLatestActivityActor_17iu4_443",N7="_taskCommentCount_17iu4_454",D7="_taskLatestCommentText_17iu4_464",M7="_taskMetaCategory_17iu4_474",L7="_taskMetaType_17iu4_480",O7="_taskMetaPriority_17iu4_486",B7="_taskComplexityLabel_17iu4_490",W7="_taskCancellationReason_17iu4_495",$7="_archiveBadge_17iu4_648",F7="_attachmentThumbnails_17iu4_653",U7="_attachmentImageRow_17iu4_660",z7="_attachmentDocumentList_17iu4_667",H7="_attachmentThumbnail_17iu4_653",V7="_contextDocThumb_17iu4_702",G7="_contextDocMain_17iu4_728",K7="_contextDocName_17iu4_735",q7="_taskSpecialists_17iu4_745",Y7="_taxonomiesList_17iu4_754",Z7="_selected_17iu4_815",J7="_selectionControl_17iu4_820",kr={taskItem:e7,compressed:t7,taskHeader:r7,taskReferenceCluster:n7,taskMeta:a7,taskTitle:s7,taskCover:o7,taskItemRecentlyChanged:i7,assigneeAvatarShared:c7,assigneePicker:l7,inProgress:d7,onHold:u7,readyForReview:f7,completed:m7,cancelled:p7,readOnly:h7,archived:g7,taskContent:y7,kanbanCardOverlay:k7,deletedExpiry:v7,taskReferenceDivider:w7,taskReferenceSegment:b7,taskActions:S7,taskMetaCompact:A7,taskMetaRow:C7,taskMetaBadgeGroup:I7,taskMetaIdentityGroup:_7,taskDescription:T7,taskLatestComment:x7,taskLatestCommentTinted:R7,taskLatestCommentHeader:P7,taskLatestActivityHeading:j7,taskLatestActivityActor:E7,taskCommentCount:N7,taskLatestCommentText:D7,taskMetaCategory:M7,taskMetaType:L7,taskMetaPriority:O7,taskComplexityLabel:B7,taskCancellationReason:W7,archiveBadge:$7,attachmentThumbnails:F7,attachmentImageRow:U7,attachmentDocumentList:z7,attachmentThumbnail:H7,contextDocThumb:V7,contextDocMain:G7,contextDocName:K7,taskSpecialists:q7,taxonomiesList:Y7,selected:Z7,selectionControl:J7};function X7(e){return function(t){return ax(t,e)}}const Q7="I-",e8=new RegExp("(?<![\\w-])(I-\\d+)(?![\\w-])","gi");function cp(e){return mp(Q7,e)}const t8="_prose_1rd59_1",r8="_taskReference_1rd59_56",n8="_tableScroll_1rd59_72",a8="_blockScroll_1rd59_99",s8="_compactCodePreview_1rd59_115",o8="_taskList_1rd59_194",i8="_taskListItem_1rd59_198",c8="_taskCheckbox_1rd59_202",l8="_compact_1rd59_115",d8="_compactHeading_1rd59_231",u8="_codeLanguage_1rd59_262",f8="_contentIndicator_1rd59_271",m8="_detail_1rd59_277",p8="_conversation_1rd59_300",h8="_conversationHeading_1rd59_313",g8="_document_1rd59_321",os={prose:t8,taskReference:r8,tableScroll:n8,blockScroll:a8,compactCodePreview:s8,taskList:o8,taskListItem:i8,taskCheckbox:c8,compact:l8,compactHeading:d8,codeLanguage:u8,contentIndicator:f8,detail:m8,conversation:p8,conversationHeading:h8,document:g8};function y8(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 k8(e){return String(e||"").match(/(?:^|\s)language-([\w-]+)/)?.[1]||""}const v8=({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=h=>{if(typeof h=="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=[h];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,e8,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(h))return h.map(l);if(!ne.isValidElement(h))return h;const g=h.props,y=typeof h.type=="string"?h.type:g.node?.tagName||"";return y==="a"||y==="button"||y==="code"||y==="pre"||y==="p"||g.children===void 0?h:ne.cloneElement(h,void 0,ne.Children.map(g.children,l))},c=(h,g)=>{const y=l(g);return t==="compact"?a.jsx("div",{className:os.compactHeading,children:y}):t==="conversation"?a.jsx("h3",{className:os.conversationHeading,children:y}):ne.createElement(`h${h}`,void 0,y)},d={h1:({children:h})=>c(1,h),h2:({children:h})=>c(2,h),h3:({children:h})=>c(3,h),h4:({children:h})=>c(4,h),h5:({children:h})=>c(5,h),h6:({children:h})=>c(6,h),p:({children:h})=>a.jsx("p",{children:l(h)}),ul:({children:h,className:g,node:y,...k})=>a.jsx("ul",{...k,className:`${g||""} ${String(g||"").includes("contains-task-list")?os.taskList:""}`.trim(),children:h}),ol:({children:h,className:g,node:y,...k})=>a.jsx("ol",{...k,className:`${g||""} ${String(g||"").includes("contains-task-list")?os.taskList:""}`.trim(),children:h}),li:({children:h,className:g,node:y,...k})=>{const v=String(g||"").includes("task-list-item");return a.jsx("li",{...k,className:`${g||""} ${v?os.taskListItem:""}`.trim(),children:l(h)})},input:({type:h,checked:g,node:y,...k})=>h!=="checkbox"?a.jsx("input",{type:h,checked:g,readOnly:!0,...k}):a.jsx("input",{...k,type:"checkbox",checked:!!g,readOnly:!0,className:os.taskCheckbox}),a:({href:h,children:g,node:y,...k})=>{if(!h)return a.jsx("span",{children:g});const v=rA(h);return a.jsx("a",{...k,href:h,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:A=>A.stopPropagation(),children:g})},strong:({children:h})=>a.jsx("strong",{children:h}),em:({children:h})=>a.jsx("em",{children:h}),code:({children:h,className:g,node:y,...k})=>a.jsx("code",{className:g,...k,children:h}),pre:({children:h})=>{const g=ne.Children.toArray(h).find(ne.isValidElement),y=k8(g?.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:h})]}):a.jsx("div",{className:os.blockScroll,children:a.jsx("pre",{children:h})})},blockquote:({children:h})=>a.jsx("blockquote",{children:h}),table:({children:h,node:g,...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:h})}),img:({src:h,alt:g})=>{const y=String(g||"").trim();if(t==="compact"||t==="conversation"){if(!y)return null;const k=`[Image: ${y}]`;if(!h)return a.jsx("span",{className:os.contentIndicator,children:k});const v=rA(h);return a.jsx("a",{href:h,className:os.contentIndicator,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:A=>A.stopPropagation(),children:k})}return a.jsx("img",{src:h,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:[X7],urlTransform:y8,components:m,children:e})})},py=ne.memo(v8);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 w8=(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 b8(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 S8(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=b8(e,t),s=S8(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 A8(e){const t=h_(e.currentTarget,e.currentSessionId);return!t||t===e.lastHydratedIdentity}function C8(e){return e.trim().replace(/\\/g,"/")}function g_(e){return typeof e=="string"?e:String(e.path||"").trim()}function I8(e){return/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(e)}function _8(e){return typeof e=="string"?C8(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&&I8(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:_8(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 T8(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=T8(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 x8(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 R8(e){return x8(e)}function P8(e){const t=R8(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 j8="_taxonomyDropdown_1qrdm_1",E8="_taxonomyDropdownActive_1qrdm_6",N8="_taxonomyDropdownButton_1qrdm_11",D8="_taxonomyDropdownOpen_1qrdm_50",M8="_taxonomyDropdownButtonContent_1qrdm_56",L8="_taxonomyDropdownIcon_1qrdm_64",O8="_taxonomyDropdownLabel_1qrdm_72",B8="_taxonomyDropdownChevron_1qrdm_81",W8="_taxonomyDropdownChevronOpen_1qrdm_87",$8="_taxonomyDropdownPanel_1qrdm_91",F8="_taxonomyDropdownOptions_1qrdm_111",U8="_taxonomyDropdownSearch_1qrdm_117",z8="_taxonomyDropdownSearchIcon_1qrdm_125",H8="_taxonomyDropdownSearchInput_1qrdm_134",V8="_taxonomyDropdownEmpty_1qrdm_148",G8="_taxonomyDropdownActions_1qrdm_155",K8="_taxonomyDropdownAction_1qrdm_155",q8="_taxonomyDropdownPanelPortal_1qrdm_195",Y8="_taxonomyDropdownOption_1qrdm_111",Z8="_taxonomyDropdownOptionHighlighted_1qrdm_245",J8="_taxonomyDropdownOptionSelected_1qrdm_251",da={taxonomyDropdown:j8,taxonomyDropdownActive:E8,taxonomyDropdownButton:N8,taxonomyDropdownOpen:D8,taxonomyDropdownButtonContent:M8,taxonomyDropdownIcon:L8,taxonomyDropdownLabel:O8,taxonomyDropdownChevron:B8,taxonomyDropdownChevronOpen:W8,taxonomyDropdownPanel:$8,taxonomyDropdownOptions:F8,taxonomyDropdownSearch:U8,taxonomyDropdownSearchIcon:z8,taxonomyDropdownSearchInput:H8,taxonomyDropdownEmpty:V8,taxonomyDropdownActions:G8,taxonomyDropdownAction:K8,taxonomyDropdownPanelPortal:q8,taxonomyDropdownOption:Y8,taxonomyDropdownOptionHighlighted:Z8,taxonomyDropdownOptionSelected:J8};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:h=!1,panelClassName:g="",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(""),ee=o.useRef(null),te=o.useRef(null),me=o.useRef(null),_e=o.useRef(null),$e=o.useRef([]),Ye=o.useRef([]),ye=o.useRef(null),ge=`taxonomy-listbox-${ne.useId().replace(/:/g,"")}`,le=t.find(Z=>String(Z.value)===String(e)),Q=ne.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 ae=G.target,Te=!!ee.current?.contains(ae),Le=!!me.current?.contains(ae);!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=Q.findIndex(G=>String(G.value)===String(e));T(Z>=0?Z:Q.length>0?0:-1)}},[S,e,Q]),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=te.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)),ue=Math.max(0,xe-Ue.bottom-st),x=Math.max(0,Ue.top-st),de=Math.min(me.current?.scrollHeight||280,280),Ie=ue>=de||ue>=x,Je=Ie?ue: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(de,Je),zIndex:2e3})},G=Te=>{const Le=Te.target;Le instanceof Node&&me.current?.contains(Le)||Z(!1)},ae=()=>Z(!0);return _e.current=null,Z(!0),window.addEventListener("resize",ae),window.addEventListener("scroll",G,!0),()=>{window.removeEventListener("resize",ae),window.removeEventListener("scroll",G,!0),_e.current=null}},[S,v,y,k]);const ce=()=>{if(P&&K(""),y){const Z=ee.current?.closest("[data-theme]");M(Z?.dataset.theme)}L(!0)},$=()=>{if(!i){if(S){L(!1);return}ce()}},V=Z=>{r(Z.value),K(""),L(!1),te.current?.focus()},B=Z=>{Z.disabled||(Z.onSelect(),K(""),L(!1),te.current?.focus())},N=Z=>{if(i)return;const G=Z.currentTarget===ye.current;switch(Z.key){case"Enter":if(Z.preventDefault(),!S)ce();else if(_>=0){const ae=Q[_];ae&&V(ae)}break;case" ":if(G)return;if(Z.preventDefault(),!S)ce();else if(_>=0){const ae=Q[_];ae&&V(ae)}break;case"Escape":Z.preventDefault(),L(!1),te.current?.focus();break;case"ArrowDown":Z.preventDefault(),S?Q.length===0?T(-1):T(ae=>ae<Q.length-1?ae+1:0):ce();break;case"ArrowUp":Z.preventDefault(),S?Q.length===0?T(-1):T(ae=>ae>0?ae-1:Q.length-1):ce();break;case"Home":if(G)return;Z.preventDefault(),S&&T(Q.length>0?0:-1);break;case"End":if(G)return;Z.preventDefault(),S&&T(Q.length>0?Q.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 ae=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(ae,{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:me,id:`${ge}-panel`,className:`taxonomyDropdownPanel ${da.taxonomyDropdownPanel} ${y?da.taxonomyDropdownPanelPortal:""} ${g}`,"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:Q.map((Z,G)=>{const ae=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} ${ae?`taxonomyDropdownOptionSelected ${da.taxonomyDropdownOptionSelected}`:""} ${Te?`taxonomyDropdownOptionHighlighted ${da.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":ae,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))})}),Q.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 ae=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),te.current?.focus()):Te.key==="Tab"&&!Te.shiftKey&&L(!1)},children:[ae?a.jsx(ae,{size:16,"aria-hidden":"true"}):null,a.jsx("span",{children:Z.label})]},Z.id)})}):null]}):null;return a.jsxs("div",{ref:ee,className:`taxonomyDropdown ${da.taxonomyDropdown} ${S?`taxonomyDropdownActive ${da.taxonomyDropdownActive}`:""} ${l}`,children:[a.jsxs("button",{ref:te,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(!le)return{};const Z=le.color,G=aa(Z);return{"--field-bg":ev(G,.06)}})(),children:[a.jsx("span",{className:`taxonomyDropdownButtonContent ${da.taxonomyDropdownButtonContent}`,children:b??(le?Ae(le,{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})]}))}),!h&&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:h,archiveActionMode:g="auto"}){const y=e?.status||t||"task",v=g==="auto"?!!e&&(y==="done"||y==="cancelled")?"archive":"none":g,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&&h?.(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 X8(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=X8(e);return t?Qw[t]:null}function sne(){return Object.values(Qw).filter(e=>e.generatedOption).map(({id:e,label:t})=>({id:e,label:t}))}function Q8(e){const t=e?.providerMetadata?.taskforce;return!t||typeof t!="object"||Array.isArray(t)?"":String(t.taskforceAgentId||"").trim()}function w_(e){return!!Q8(e)}function one(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 e9="/taskforce/assets/antigravity-DRKQga2U.png",t9="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",r9="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",n9="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiByb2xlPSJpbWciIGFyaWEtbGFiZWxsZWRieT0idGl0bGUiPgogIDx0aXRsZSBpZD0idGl0bGUiPkNsYXVkZSBDb2RlIENsYXcnZCBtYXNjb3Q8L3RpdGxlPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjZDk3NzU3Ii8+CiAgPGcKICAgIGZpbGw9IiNmN2YzZWUiCiAgICBmb250LWZhbWlseT0iTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2UiCiAgICBmb250LXNpemU9IjM1IgogICAgZm9udC13ZWlnaHQ9IjcwMCIKICAgIHRleHQtYW5jaG9yPSJtaWRkbGUiCiAgPgogICAgPHRleHQgeD0iMTI4IiB5PSIxMDIiPiYjeDI1OTA7JiN4MjU5QjsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTlDOyYjeDI1OEM7PC90ZXh0PgogICAgPHRleHQgeD0iMTI4IiB5PSIxMzciPiYjeDI1OUQ7JiN4MjU5QzsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTg4OyYjeDI1ODg7JiN4MjU5QjsmI3gyNTk4OzwvdGV4dD4KICAgIDx0ZXh0IHg9IjEyOCIgeT0iMTcyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4gICYjeDI1OTg7JiN4MjU5ODsgJiN4MjU5RDsmI3gyNTlEOyAgPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",a9="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",s9="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",o9="/taskforce/assets/cursor-BM_3k4Y4.svg",i9="/taskforce/assets/gemini-cli-icon-dBAVjCcn.png",c9="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",l9="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",d9="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",u9="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",f9="/taskforce/assets/vscode-C_7wk1WI.svg",m9="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",p9={antigravity:e9,chatgpt:t9,"claude-chat":r9,"claude-code":n9,cline:a9,codex:s9,cursor:o9,"gemini-chat":c9,"gemini-cli":i9,grok:sA,"grok-chat":sA,kiro:l9,"mistral-chat":d9,"perplexity-chat":u9,vscode:f9,windsurf:m9};function Zs(e){return e?p9[e]:""}function h9(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 g9(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 y9="_identity_1owqe_1",k9="_avatar_1owqe_9",v9="_person_1owqe_17",w9="_provider_1owqe_21",b9="_unassigned_1owqe_25",S9="_card_1owqe_31",A9="_label_1owqe_51",Ad={identity:y9,avatar:k9,person:v9,provider:w9,unassigned:b9,card:S9,label:A9};function gy({option:e,size:t=22,variant:r="default",unassignedIcon:n}){const s=_w(e.value),i=s?"":g9(e.avatarUrl,e.avatarRevision,e.avatarUpdatedAt),l=!s&&e.kind==="agent"?h9({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,h=s&&n?n:f&&m[f]?m[f]:Md,g=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(h,{size:g,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"]),C9=new Set(S_),I9=new Set(A_);function _9(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim():"";return C9.has(t)?t:null}function T9(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim().toLowerCase():"";return I9.has(t)?t:null}function x9(e){const t=_9(e.icon),r=T9(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 R9="_root_kfvfr_1",P9="_trigger_kfvfr_6",j9="_marker_kfvfr_20",E9="_card_kfvfr_31",N9="_inline_kfvfr_32",D9="_detail_kfvfr_33",M9="_disabled_kfvfr_34",L9="_popover_kfvfr_36",O9="_colorGrid_kfvfr_48",B9="_colorOption_kfvfr_55",W9="_iconOption_kfvfr_66",$9="_iconGrid_kfvfr_70",F9="_selected_kfvfr_91",U9="_divider_kfvfr_100",z9="_reset_kfvfr_106",Js={root:R9,trigger:P9,marker:j9,card:E9,inline:N9,detail:D9,disabled:M9,popover:L9,colorGrid:O9,colorOption:B9,iconOption:W9,iconGrid:$9,selected:F9,divider:U9,reset:z9},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]=ne.useState(!1),[m,f]=ne.useState(!1),[h,g]=ne.useState(null),[y,k]=ne.useState(),[v,A]=ne.useState({top:0,left:0}),b=ne.useRef(null),w=ne.useRef(null),P=ne.useRef(null),E=h&&Object.prototype.hasOwnProperty.call(h,"icon")?h.icon:r,D=h&&Object.prototype.hasOwnProperty.call(h,"color")?h.color:n,j=x9({entityType:e,icon:E,color:D}),S=iA[j.icon],L=!s&&!!l;ne.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]),ne.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,ee=8,te=Math.max(ee,Math.min(Y.left,window.innerWidth-M-ee)),me=Y.bottom+K,_e=me+oe<=window.innerHeight-ee?me:Math.max(ee,Y.top-oe-K);A({top:_e,left:te})};return z(),window.addEventListener("resize",z),window.addEventListener("scroll",z,!0),()=>{window.removeEventListener("resize",z),window.removeEventListener("scroll",z,!0)}},[c]),ne.useEffect(()=>{if(!h)return;const z=!Object.prototype.hasOwnProperty.call(h,"icon")||(h.icon??null)===(r??null),Y=!Object.prototype.hasOwnProperty.call(h,"color")||(h.color??null)===(n??null);z&&Y&&g(null)},[n,r,h]);const _=async z=>{if(!(!l||m)){g(Y=>({...Y,...z})),f(!0);try{await l(z)}catch{g(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=ne.useMemo(()=>e.filter(l=>!l.isArchived),[e]),s=ne.useMemo(()=>new Map(n.map(l=>[l.id,l])),[n]),i=ne.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 H9="_root_evk0k_1",V9="_compact_evk0k_21",G9="_outline_evk0k_26",K9="_foldFill_evk0k_47",q9="_foldLine_evk0k_56",Y9="_label_evk0k_60",zu={root:H9,compact:V9,outline:G9,foldFill:K9,foldLine:q9,label:Y9};function Z9({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:J9,Gauge:X9,ClipboardList:Q9,HelpCircle:eH}=Xs;function tH(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",h=/^(?:ai-profile|user|member)-[0-9a-f-]{8,}$/i.test(r)||/^[0-9a-f]{16,}$/i.test(r),g=r.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,v=>v.toUpperCase()),y=d||m||(c==="agent"&&(f||h)?"AI Agent":"")||(f||h?"Workspace member":g)||(c==="agent"?"AI Agent":"Workspace member"),k=aa(n?.color||i?.color);return{label:y,color:k}}const rH=({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:h=null,isOverlay:g=!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:ee=!1,showStatusLabel:te=!1,showDescription:me=!0,showAttachments:_e=!0,showChecklistProgress:$e=!0,showLatestActivity:Ye=!0,tintActivityBackground:ye=!1})=>{const ge=vw(e),le=ge.label||(ge.isProvisional?"Pending":""),Q=ge.isProvisional,ce=!!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"},ae={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},Te=G[Z],Le=`var(--complexity-${ae[Z]})`,Ue=np(e.assignee,c),st=ne.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=ne.useMemo(()=>e.latestActivity??IC(e),[e]),xe=ne.useMemo(()=>tH(ft,c),[c,ft]),ke=k||(e.isDeleted?"deleted":y?"archived":null),ve=ke!==null,He=ne.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&&!g&&!!oe&&c.length>0,ue=!ve&&!g&&!!K,[x,de]=ne.useState(!1),Ie=ne.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=ne.useMemo(()=>zx(ft,Ie),[Ie,ft]),J=ne.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:"",g?kr.kanbanCardOverlay:"",ve?kr.readOnly:"",y?kr.archived:"",ee?kr.compressed:"",b?kr.selected:""].filter(Boolean).join(" "),re=aa(B?.color),Ne=s.find(U=>U.value===e.type),je=aa(Ne?.color)||iN(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 P8({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;de(!0);try{return await K(e,U)!==!1}finally{de(!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:le,workspaceId:h})},tt=ee||g||!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]=ne.useState(!1);return ne.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 ${le||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,ue&&!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,le?a.jsx("div",{className:kr.taskReferenceSegment,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),onKeyDown:U=>U.stopPropagation(),children:a.jsx(nf,{copied:ce&&r===ge.label,onClick:U=>mt(U,ge.label),disabled:!ce,title:Q?"Temporary identifier — replaced after synchronization.":"Copy task reference",ariaLabel:Q?`Copy temporary task reference ${le}`:void 0,className:y?kr.archiveBadge:"",label:Xh(le,t),provisional:Q})}):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:ee,shortLabels:!0,showLabel:te,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:le})||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:ee?{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}),me&&e.description&&!ve&&!ee&&a.jsx("div",{className:kr.taskDescription,children:a.jsx(py,{variant:"compact",taskReferences:M,children:e.description})})]}),_e&&Xe.length>0&&!ve&&!ee&&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:le})||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=cN(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(Z9,{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&&!ee&&a.jsxs("div",{className:kr.taskCancellationReason,children:[a.jsx("strong",{children:"Cancellation Reason:"})," ",Xh(e.canceledReason,t)]}),Ye&&(Je||J>0)&&!ve&&!ee&&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(J9,{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&&!ee&&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:ee?{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]||eH;return a.jsx(U,{size:14})})():w8(e.type,14)}),B&&a.jsx("span",{className:`${R.metaBadge} ${kr.taskMetaPriority}`,style:{color:re||"var(--text-secondary)",backgroundColor:re?`${re}15`:"var(--bg-tertiary)",borderColor:re?`${re}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(Q9,{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(X9,{size:14}),!ee&&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:ee?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=ne.memo(rH),qg="168px",Hu=[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}];function nH(){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 aH({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]=ne.useState(!1),d=ne.useRef(null),m=t.find(g=>g.value===r),f=m?.selectedLabel||m?.label||s;ne.useEffect(()=>{const g=y=>{d.current&&!d.current.contains(y.target)&&c(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);const h=g=>{n(g),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(g=>!g),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:()=>h(""),"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(g=>{const y=g.value===r;return a.jsxs("button",{type:"button",className:R.filterOption,onClick:()=>h(g.value),"aria-selected":y,children:[a.jsx(Fi,{size:14,style:{opacity:y?1:0}}),a.jsx("span",{style:{fontWeight:y?600:500},children:g.label})]},g.value)})]})]})}function I_({scope:e,onScopeChange:t,className:r,labelClassName:n}){const s=ne.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 sH({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:oH,ChevronRight:iH,ChevronDown:cH,Folder:lH,Archive:dH,RotateCcw:uH,X:fH,Plus:mH,ArrowUpDown:pH,Trash2:hH}=Xs,gH=new Map,yH=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:h=null,searchQuery:g,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:ee=!0,showTaskCardAttachments:te=!0,showTaskCardChecklistProgress:me=!0,showTaskCardLatestActivity:_e=!0,tintTaskCardActivityBackground:$e=!1,deletedTaskRecordByTaskId:Ye=gH,selectedDeletedRecordIds:ye=yH,onDeletedSelectionChange:ge,trashControls:le,onSearchChange:Q,onFilterCategoriesChange:ce,onFilterTypesChange:$,onFilterPrioritiesChange:V,onFilterStatusChange:B,onFilterAssigneesChange:N,onTaxonomyFilterChange:be,onSortByChange:Ae,onSortOrderChange:q,onShowArchiveChange:Z,onTaskScopeChange:G,onClearFilters:ae,onToggleCategory:Te,onEditTask:Le,onUpdateTask:Ue,taskReferences:st,onCopyId:ft,onToggleInProgress:xe,onToggleReview:ke,onToggleComplete:ve,onToggleCancel:He,onSetStatus:Ee,onArchiveTask:ue,onBulkArchive:x,onUnarchive:de,onDelete:Ie,onFetchArchive:Je,onAddTaskToCategory:J,supplementalTasks:Ze=[],taxonomies:re}=e,Ne=ne.useMemo(()=>new Set(oe),[oe]),je=ne.useMemo(()=>new Map(m.map(at=>[at.id,at])),[m]),Re=ne.useMemo(()=>new Map(f.map(at=>[at.id,at])),[f]),Ce=ne.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=ne.useMemo(()=>[...r,...n,...Ze],[n,Ze,r]),he=ne.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(g),Ve=g?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=ne.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=ne.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=ne.useMemo(()=>kp(re,Pe).filter(at=>at.filterEnabled!==!1).map(at=>({...at,options:Vw(at,Pe)})),[Pe,re]),bt=ne.useMemo(()=>[{value:"created",label:jt("taskList.sortCreated")},{value:"updated",label:jt("taskList.sortUpdated")},{value:"priority",label:jt("taskList.sortPriority")},...JI(re,Pe)],[Pe,jt,re]);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:g,onChange:at=>Q(at.target.value)}),g&&a.jsx("button",{className:R.clearSearchBtn,onClick:()=>Q(""),title:jt("taskList.clearSearchTitle"),children:a.jsx(fH,{size:14})})]}),a.jsxs("div",{className:R.filterRow,children:[a.jsx(Sd,{label:c?.category||jt("taskList.categoryLabel"),options:tt,selected:y,onChange:ce,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(pH,{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:ae,title:jt("taskList.resetFiltersTitle"),children:a.jsx(uH,{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(dH,{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"&&le]}),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:[g?a.jsx(lA,{size:48}):Fe==="deleted"?a.jsx(hH,{size:48}):a.jsx(oH,{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(iH,{size:16}):a.jsx(cH,{size:16}),(()=>{const Ke=s.find(Ot=>Ot.label===at),Et=Ke?.icon&&df[Ke.icon]?df[Ke.icon]:lH,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(mH,{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:h,searchQuery:g,copiedId:M,taxonomies:re,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:ue,onUnarchive:mt?de: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:ee,showAttachments:te,showChecklistProgress:me,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:h,searchQuery:g,copiedId:M,isArchived:!0,types:i,assigneeOptions:d,workstreams:m,onClick:Le,onCopyId:ft,onSetStatus:Ee,onUnarchive:de,onDelete:Ie,deleteActionTitle:"Delete Permanently",taskReferences:st,categories:s,showStatusLabel:K,showDescription:ee,showAttachments:te,showChecklistProgress:me,showLatestActivity:_e,tintActivityBackground:$e},at.id)})())]})]})});__.displayName="TaskList";const kH="_formNotice_1h100_1",vH="_markdownPreview_1h100_12",wH="_descriptionField_1h100_18",bH="_descriptionImageStatus_1h100_22",SH="_descriptionImageError_1h100_23",AH="_taskFormLifecycle_1h100_46",CH="_taskFormMetaDivider_1h100_51",IH="_taskFormMetaGrid_1h100_58",_H="_compactMetaGrid_1h100_59",TH="_compactMetaSection_1h100_65",xH="_compactMetaField_1h100_71",RH="_compactMetaFieldHint_1h100_85",PH="_workflowAssignmentField_1h100_89",jH="_workflowAssignmentLabels_1h100_93",EH="_workflowAssignmentControls_1h100_94",NH="_workflowAssignmentSelector_1h100_101",DH="_workflowAssignmentError_1h100_110",MH="_workflowExecutionToggle_1h100_121",LH="_workflowExecutionVersion_1h100_147",OH="_workflowExecutionPanel_1h100_168",BH="_workflowExecutionHeader_1h100_176",WH="_workflowExecutionEyebrow_1h100_195",$H="_workflowExecutionSummary_1h100_196",FH="_workflowExecutionSpinner_1h100_206",UH="_workflowExecutionSteps_1h100_239",zH="_workflowExecutionStepCurrent_1h100_261",HH="_workflowExecutionStepMarker_1h100_266",VH="_workflowExecutionStepCompleted_1h100_277",GH="_workflowExecutionStepState_1h100_278",KH="_workflowExecutionStepBody_1h100_282",qH="_workflowExecutionStepTitle_1h100_286",YH="_workflowExecutionStepMeta_1h100_308",ZH="_workflowExecutionEmpty_1h100_310",JH="_formFieldsetReset_1h100_350",XH="_formLayoutWithSidebar_1h100_357",QH="_formMainColumn_1h100_365",eV="_activitySidebar_1h100_372",tV="_activitySidebarHeader_1h100_382",rV="_activitySidebarTitle_1h100_389",nV="_taskFormDateRow_1h100_398",aV="_taskFormDateLabel_1h100_405",sV="_taskFormDateValue_1h100_413",oV="_taskFormMetaStack_1h100_421",iV="_taskFormMetaActor_1h100_427",cV="_taskFormDateWarning_1h100_433",lV="_taskFormDateError_1h100_439",dV="_helpHeader_1h100_445",uV="_helpClose_1h100_456",fV="_markdownHelp_1h100_470",mV="_helpGrid_1h100_479",pV="_helpGridItem_1h100_485",hV="_settingsHint_1h100_497",gV="_sectionBlock_1h100_503",yV="_specialistSectionWithoutTaxonomies_1h100_509",kV="_softSectionSurface_1h100_514",vV="_stackedList_1h100_521",wV="_stackedListSpaced_1h100_526",bV="_checklistInputGroup_1h100_530",SV="_checklistRow_1h100_537",AV="_checklistRowDragging_1h100_546",CV="_checklistHandleBtn_1h100_550",IV="_checklistCheckboxBtn_1h100_573",_V="_checklistCheckboxBtnChecked_1h100_593",TV="_checklistItemText_1h100_598",xV="_checklistItemTextCompleted_1h100_606",RV="_checklistRemoveBtn_1h100_611",PV="_specialistChip_1h100_643",jV="_specialistChipActive_1h100_666",EV="_commentPanel_1h100_676",NV="_activitySidebarPanel_1h100_690",DV="_commentThread_1h100_698",MV="_activityTimelineRegion_1h100_702",LV="_activityLoadingThread_1h100_711",OV="_newActivityNotice_1h100_715",BV="_newActivityButton_1h100_723",WV="_emptyComments_1h100_767",$V="_activitySkeletonItem_1h100_781",FV="_activitySkeletonMeta_1h100_787",UV="_activitySkeletonBody_1h100_788",zV="_commentInputArea_1h100_912",HV="_commentInput_1h100_912",VV="_sendCommentBtn_1h100_955",GV="_taxonomyFieldsGrid_1h100_998",KV="_markdownPreviewContainer_1h100_1005",qV="_descriptionSurface_1h100_1010",wt={formNotice:kH,markdownPreview:vH,descriptionField:wH,descriptionImageStatus:bH,descriptionImageError:SH,taskFormLifecycle:AH,taskFormMetaDivider:CH,taskFormMetaGrid:IH,compactMetaGrid:_H,compactMetaSection:TH,compactMetaField:xH,compactMetaFieldHint:RH,workflowAssignmentField:PH,workflowAssignmentLabels:jH,workflowAssignmentControls:EH,workflowAssignmentSelector:NH,workflowAssignmentError:DH,workflowExecutionToggle:MH,workflowExecutionVersion:LH,workflowExecutionPanel:OH,workflowExecutionHeader:BH,workflowExecutionEyebrow:WH,workflowExecutionSummary:$H,workflowExecutionSpinner:FH,workflowExecutionSteps:UH,workflowExecutionStepCurrent:zH,workflowExecutionStepMarker:HH,workflowExecutionStepCompleted:VH,workflowExecutionStepState:GH,workflowExecutionStepBody:KH,workflowExecutionStepTitle:qH,workflowExecutionStepMeta:YH,workflowExecutionEmpty:ZH,formFieldsetReset:JH,formLayoutWithSidebar:XH,formMainColumn:QH,activitySidebar:eV,activitySidebarHeader:tV,activitySidebarTitle:rV,taskFormDateRow:nV,taskFormDateLabel:aV,taskFormDateValue:sV,taskFormMetaStack:oV,taskFormMetaActor:iV,taskFormDateWarning:cV,taskFormDateError:lV,helpHeader:dV,helpClose:uV,markdownHelp:fV,helpGrid:mV,helpGridItem:pV,settingsHint:hV,sectionBlock:gV,specialistSectionWithoutTaxonomies:yV,softSectionSurface:kV,stackedList:vV,stackedListSpaced:wV,checklistInputGroup:bV,checklistRow:SV,checklistRowDragging:AV,checklistHandleBtn:CV,checklistCheckboxBtn:IV,checklistCheckboxBtnChecked:_V,checklistItemText:TV,checklistItemTextCompleted:xV,checklistRemoveBtn:RV,specialistChip:PV,specialistChipActive:jV,commentPanel:EV,activitySidebarPanel:NV,commentThread:DV,activityTimelineRegion:MV,activityLoadingThread:LV,newActivityNotice:OV,newActivityButton:BV,emptyComments:WV,activitySkeletonItem:$V,activitySkeletonMeta:FV,activitySkeletonBody:UV,commentInputArea:zV,commentInput:HV,sendCommentBtn:VV,taxonomyFieldsGrid:GV,markdownPreviewContainer:KV,descriptionSurface:qV};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)),h=m<=f,g=String(d.value)===String(t);return a.jsx("button",{type:"button",className:`${R.levelOption} ${h?R.levelOptionFilled:""} ${h?R[`levelOption_${s}_${d.value}`]:""} ${g?R.levelOptionSelected:""}`,onClick:()=>n(d.value),title:d.label,style:{opacity:h?1:.15,backgroundColor:h?aa(d.color)||(s==="priority"?`var(--priority-${d.value})`:s==="complexity"?`var(--complexity-${d.value})`:"var(--text-primary)"):void 0,color:h?s==="priority"&&String(d.value).toLowerCase()==="medium"?"black":"white":void 0,boxShadow:h&&(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 YV(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function ZV(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=YV(e);if(!n)return"";const s=r??RC(),i=ZV(s,t);let l=dA.get(i);return l||(l=new Intl.DateTimeFormat(s,t),dA.set(i,l)),l.format(n)}function JV(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 XV(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 h=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(h.ok){const g=await h.json();if(g?.success&&typeof g?.uploadUrl=="string"&&typeof g?.path=="string"){let y=!1;try{const k=await fetch(g.uploadUrl,{method:String(g.method||"PUT"),headers:g.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:g.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 g?.success&&typeof g?.path=="string"&&(m=g)}else f=await Qh(h,`Upload failed for ${e.name}`);if(!m){const g=await JV(e),y=await fetch("/api/taskforce/context-upload",{method:"POST",headers:d(),body:JSON.stringify({file:g,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 QV(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 eG(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 tG(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 eG({executionId:e,taskId:i.result.execution.taskId,assignmentSnapshot:i.result.assignmentSnapshot,taskSnapshot:i.result.taskSnapshot,taskAuthoritative:i.result.taskAuthoritative},r)),i.result.taskSnapshot&&PN({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 rG(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 nG(e,t){await pi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"DELETE"},t)}async function ine(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 cne(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 lne(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 dne(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 une(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 aG(e){return e.charAt(0).toUpperCase()+e.slice(1)}function sG(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 oG(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 iG({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:h}){const[g,y]=ne.useState([]),[k,v]=ne.useState(null),[A,b]=ne.useState(!0),[w,P]=ne.useState(!1),[E,D]=ne.useState(!1),[j,S]=ne.useState(!1),[L,_]=ne.useState(0),[T,z]=ne.useState(""),Y=ne.useRef(0),H=ne.useRef(0),M=ne.useRef(null),oe=ne.useRef({taskId:e,revision:`${e}:${n||""}`}),K=ne.useMemo(()=>({workspaceId:t,apiBaseUrl:c,runtimeMode:d}),[c,d,t]);ne.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([QV(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 ee=k?.execution.taskId===e?k:null,te=ee?["pending","running","paused"].includes(ee.execution.status):!1,me=te?ee:null,_e=ee&&!g.some(({template:xe})=>xe.id===ee.template.id)?[{template:ee.template,draftVersionId:null,latestPublishedVersion:{id:ee.version.id,versionNumber:ee.version.versionNumber,publishedAt:ee.version.publishedAt}},...g]:g,$e=[...!ee||te?[{value:rv,label:"None"}]:[],..._e.map(({template:xe})=>({value:xe.id,label:xe.name}))],Ye=me?.execution.status==="pending",ye=!m&&!A&&!w&&(!me||Ye),ge=ee?.template.id||rv,le=ne.useMemo(()=>[...ee?.steps||[]].sort((xe,ke)=>xe.position-ke.position),[ee?.steps]),Q=ee?.execution.currentStepId&&le.find(xe=>xe.id===ee.execution.currentStepId)||null,ce=ee?.execution.currentStepId?le.findIndex(xe=>xe.id===ee.execution.currentStepId):-1,$=ee?.execution.status==="completed",V=ne.useMemo(()=>new Set((ee?.events||[]).filter(xe=>xe.eventType==="step-completed"&&xe.stepId).map(xe=>xe.stepId)),[ee?.events]),B=me?.execution.status==="pending"?(le.find(xe=>xe.isRequired)||le[0])?.id:null,N=`task-workflow-execution-${e}`,be=A?"Loading...":T&&!ee?"Unavailable":ee?aG(ee.execution.status):"Not assigned",Ae=ee?.version.versionNumber?`V${ee.version.versionNumber}`:null,q=be.replace(/\.+$/,""),Z=ee?`Status: ${q}${Ae?`, ${Ae}`:""}. ${j?"Hide":"View"} workflow execution.`:`Status: ${q}.`,G=!m&&!E&&me?.execution.status==="running"&&Q?.ownerType==="user"&&!!l&&Q.ownerId===l,ae=$&&g.find(({template:xe})=>xe.id===ee?.template.id)||null,Te=!!(!m&&!w&&ae?.latestPublishedVersion);ne.useEffect(()=>{const xe=me?.execution.id||null;if(!xe||me?.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&&h?.(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,me,f,h,K,e,r]);const Le=ne.useCallback(xe=>xe?np(xe,i):"Unassigned",[i]);ne.useEffect(()=>{oe.current.taskId!==e&&(oe.current={taskId:e,revision:`${e}:${n||""}`})},[e,n]),ne.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]),ne.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=sG(ve.authoritativeWorkflowAssignment,e);if(x){++H.current,v(Je=>oG(Je,x)),z("");return}const de=Y.current,Ie=++H.current;eg(e,K).then(Je=>{de===Y.current&&Ie===H.current&&(v(Je),z(""))}).catch(Je=>{de===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 nG(e,K),ve!==Y.current)return;v(null);return}const He=g.find(({template:de})=>de.id===ke),Ee=He?.latestPublishedVersion;if(!He||!Ee)return;const ue={workflowTemplateId:He.template.id,workflowVersionId:Ee.id},x=me?await rG(e,ue,K):await uA(e,ue,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(!me||!G)return;const xe=[...me.events||[]].reverse().find(He=>He.eventType==="step-started"&&He.stepId===Q?.id)?.createdAt||me.execution.startedAt||me.execution.createdAt,ke=Q?.requiresCommentEvidence&&[...s].reverse().find(He=>He.author===l&&He.text.trim().length>0&&Date.parse(He.timestamp)>=Date.parse(xe))||null;if(Q?.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 tG(me.execution.id,He,K,ke?.id,Q?.id);if(ve!==Y.current)return;v(ue=>ue&&{...ue,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=ae?.latestPublishedVersion;if(!Te||!ae||!xe)return;const ke=Y.current;P(!0),z("");try{const ve=await uA(e,{workflowTemplateId:ae.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&&!me,portalPanel:!0,panelMinWidth:280,panelAlign:"start",className:wt.workflowAssignmentSelector}),a.jsxs("button",{type:"button",className:wt.workflowExecutionToggle,onClick:()=>S(xe=>!xe),"aria-expanded":ee?j:void 0,"aria-controls":ee?N:void 0,"aria-label":Z,disabled:!ee,children:[a.jsxs("span",{children:[be,Ae?a.jsxs("span",{className:wt.workflowExecutionVersion,children:[" · ",Ae]}):null]}),ee?j?a.jsx(Fd,{size:13,"aria-hidden":"true"}):a.jsx(Ld,{size:13,"aria-hidden":"true"}):null]})]}),ee&&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:ee.version.name||ee.template.name})]}),$&&ae?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":Q?.name||(ee.execution.status==="pending"?"Not started":"Not available")})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Owner"}),a.jsx("dd",{children:!$&&Q?Le(Q.ownerId):"Unassigned"})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Version"}),a.jsx("dd",{children:ee.version.versionNumber?`V${ee.version.versionNumber}`:"Published"})]})]}),a.jsx("ol",{className:`${wt.workflowExecutionSteps} tf-scrollbar`,children:le.map((xe,ke)=>{const ve=V.has(xe.id),He=!$&&xe.id===ee.execution.currentStepId,Ee=!ve&&!He&&ce>=0&&ke<ce,ue=[ve?wt.workflowExecutionStepCompleted:"",He?wt.workflowExecutionStepCurrent:""].filter(Boolean).join(" ")||void 0;return a.jsxs("li",{className:ue,"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)})}),le.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 cG="_header_g17dz_1",lG="_title_g17dz_15",dG="_actions_g17dz_24",uG="_toggle_g17dz_30",tg={header:cG,title:lG,actions:dG,toggle:uG};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),h=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(h,{size:14,"aria-hidden":"true"})})]})}const fG="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()===fG}const nv=280,mG=48,pG=ne.lazy(()=>qo(()=>import("./EntityActivityTimeline-g7vtdsx1.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),hG=ne.lazy(()=>qo(()=>import("./TaskContextUpload-BA_lQmS9.js"),__vite__mapDeps([7,1,8,2,3,4,5,9])).then(e=>({default:e.TaskContextUpload})));function gG({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 yG({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:h,dueDate:g,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:ee,taxonomies:te,workstreams:me=[],initiatives:_e=[],copiedId:$e,onTitleChange:Ye,onTitleDraftChange:ye,onDescriptionChange:ge,onDescriptionDraftChange:le,onCategoryChange:Q,onTypeChange:ce,onPriorityChange:$,onComplexityChange:V,onAssigneeChange:B,onScheduledDateChange:N,onDueDateChange:be,onChecklistItemsChange:Ae,onNewCommentTextChange:q,onDescriptionFocusedChange:Z,onShowMarkdownHelpChange:G,onSubmit:ae,onAddComment:Te,onDescriptionImageUploadStart:Le,onAddContextFile:Ue,onRemoveContextFile:st,onUpdateContextCaption:ft,onSetCardCover:xe,cardCoverDisabled:ke,onOpenContextImage:ve,onCopyId:He,onToggleInProgress:Ee,onToggleReview:ue,onToggleComplete:x,onToggleCancel:de,onSetStatus:Ie,onArchiveTask:Je,onUnarchive:J,taskReferences:Ze,currentTask:re,commentsEndRef:Ne}=e,je=ye||Ye,Re=le||ge,Ce=Ss(re),Pe=ne.useRef(null),he=ne.useRef(null),De=ne.useRef(s),et=ne.useRef(t),Fe=`${String(b||"").trim()}\0${t||""}`,yt=ne.useRef(Fe),Oe=ne.useRef(0);yt.current!==Fe&&(yt.current=Fe,Oe.current+=1);const[mt,vt]=ne.useState(!1),Ve=ne.useRef(null),[tt,It]=ne.useState(null);ne.useLayoutEffect(()=>{const fe=et.current!==t;Pe.current&&(fe||document.activeElement!==Pe.current)&&(Pe.current.value=n),he.current&&(fe||document.activeElement!==he.current)&&(he.current.value=s,De.current=s),et.current=t},[s,t,n]),ne.useEffect(()=>(Ve.current=null,vt(!1),It(null),()=>{Oe.current+=1}),[Fe]);const Xe=ne.useMemo(()=>{if(!ve)return;const fe=new Map;return A.forEach(ot=>{if(typeof ot=="string")return;const _t=cp(ot);_t&&fe.set(_t.toLowerCase(),ot)}),{resolve:ot=>fe.get(ot.toLowerCase())||null,activate:ve}},[A,ve]),bt=ne.useMemo(()=>XE(te,T),[te,T]),at=ne.useMemo(()=>{const fe=H.find(fr=>fr.value===rf),ot={value:rf,label:fe?.label||ay,icon:fe?.icon||"HelpCircle",color:fe?.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=ne.useMemo(()=>{const fe=M.find(_t=>_t.value===l);return M.filter(_t=>_t.status!=="retired"||_t.value===fe?.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=fe=>fe&&Yg(fe,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,Ke=pe(re?.createdAt),Et=pe(re?.updatedAt||re?.createdAt),kt=pe(re?.completedAt),Ot=ne.useMemo(()=>{const fe=new Date,ot=fe.getFullYear(),_t=String(fe.getMonth()+1).padStart(2,"0"),Pt=String(fe.getDate()).padStart(2,"0");return`${ot}-${_t}-${Pt}`},[]),dr=!!(g&&h&&g<h),tr=!!(g&&g<Ot&&(!re||re.status!=="done"&&re.status!=="cancelled")),pr=y.filter(fe=>fe.isCompleted).length,[Bt,wr]=ne.useState(""),[or,$r]=ne.useState(!0),[Dr,Me]=ne.useState(!1),nt=ne.useRef(null),pt=ne.useRef(null),lt=!!re?.isArchived,xt=!!re?.isDeleted,Yt=lt||xt,Nt=ne.useRef(null),Qt=ne.useRef(null),Ct=ne.useRef(null),Ht=ne.useRef(null),Ft=ne.useRef(null),ir=ne.useRef(null),cr=ne.useRef(null),it=ne.useRef(!0),[Zt,Lr]=ne.useState(!1),lr=ne.useRef(new Map),$n=ne.useRef(void 0),br=ne.useRef(0),ur=dw(ep(uw,{activationConstraint:{distance:6}}));ne.useLayoutEffect(()=>{const fe=Nt.current;if(!fe)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;fe.scrollTop=_t,br.current=_t,$n.current=t},[t]),ne.useLayoutEffect(()=>{$r(!0)},[t]),ne.useEffect(()=>{Dr&&nt.current?.focus()},[Dr]),ne.useEffect(()=>{Me(!1),wr("")},[t]),ne.useEffect(()=>{or||(Me(!1),wr(""))},[or]);const u=ne.useCallback(fe=>{const ot=fe.currentTarget.scrollTop;br.current=ot,lr.current.set(t,ot)},[t]),St=()=>{const fe=Bt.trim();if(!fe)return;const ot=new Date().toISOString();Ae([...y,{id:`checklist-draft-${ot}-${y.length}`,taskId:t||"",title:fe,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=(fe=!0)=>{Me(!1),wr(""),fe&&window.requestAnimationFrame(()=>pt.current?.focus())},xr=async(fe,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 fe){if(Qr.size>10*1024*1024){Tt+=1,Rr="Images must be 10 MB or smaller.";continue}try{const on=await XV(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),HP({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||(fe.length===1?"The image could not be added.":"The images could not be added.");It(Qr)}}},er=(fe,ot,_t)=>{if(fe.length===0||Ve.current)return Ve.current||Promise.resolve();vt(!0);const Pt=xr(fe,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=fe=>Array.from(fe.items).filter(ot=>ot.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(ot.type)).map(ot=>ot.getAsFile()).filter(ot=>!!ot),qr=fe=>Array.from(fe.files).filter(ot=>/^(?:image\/(?:png|jpeg|webp))$/i.test(ot.type)),An=fe=>Array.from(fe.items||[]).some(ot=>ot.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(ot.type))||qr(fe).length>0,cn=fe=>{An(fe.dataTransfer)&&(fe.preventDefault(),fe.dataTransfer.dropEffect="copy")},Hr=ne.useCallback(fe=>{const{active:ot,over:_t}=fe;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=fe=>{const ot=String(fe||"").trim(),_t=fe.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(ee,f),hr=ne.useMemo(()=>new Map(Xr.map(fe=>[String(fe.value),fe])),[Xr]),Jt=ne.useMemo(()=>{const fe=[re?.assigneeActor,re?.createdByActor].filter(Boolean);return new Map(fe.map(ot=>[String(ot.id),ot]))},[re?.assigneeActor,re?.createdByActor]),Xt=ne.useMemo(()=>new Map(me.map(fe=>[fe.id,lf(fe)||fe.id])),[me]),bn=ne.useMemo(()=>new Map(_e.map(fe=>[fe.id,qI(fe)||fe.id])),[_e]),$t=ne.useMemo(()=>bw({activity:re?.activity,comments:k}),[k,re?.activity]),Ut=(fe,ot)=>{const _t=String(ot||"").trim();if(_t){if(fe==="assignee")return np(_t,Xr);if(fe==="workstreamId")return Xt.get(_t);if(fe==="initiativeId")return bn.get(_t)}},Ur=ne.useCallback((fe,ot,_t)=>{if(_t&&_t.trim())return _t.trim();const Pt=String(fe||"").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=ne.useCallback(({actorId:fe,actorType:ot,actorProfile:_t,fallbackKind:Pt})=>{const nr=String(fe||"").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=ne.useMemo(()=>{const fe=$t[$t.length-1];if(!fe)return null;if(fe.type==="comment"){const _t=fe.comment;return Ur(_t.author,_t.actor?.kind==="ai"?"ai":_t.actor?.kind==="human"?"human":null,_t.actor?.label||null)}const ot=fe.event;return Ur(ot.actor,ot.actorType,ot.actorProfile?.label||null)},[Ur,$t]),Ca=ne.useMemo(()=>{if(!re?.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},[re?.completedAt,Yn,Ur,$t]),yn=re?.createdByActor?.label||Ur(re?.createdBy||null,re?.createdByActor?.kind==="ai"?"ai":re?.createdByActor?.kind==="human"?"human":null,re?.createdByActor?.label||null),Vr=Yn,rn=$t.length,Mn=$t.filter(fe=>fe.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=ne.useCallback(fe=>({taskId:t,count:rn,firstItemId:sn,lastItemId:Sn,scrollHeight:fe.scrollHeight,scrollTop:fe.scrollTop}),[rn,t,sn,Sn]),Zn=ne.useCallback(()=>{const fe=Qt.current;fe&&(fe.scrollTop=fe.scrollHeight,it.current=!0,Lr(!1),cr.current=Yr(fe))},[Yr]),Ln=ne.useCallback(()=>{const fe=Qt.current,ot=Ct.current;return!fe||!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(fe),!0)},[Wr,Yr]),fn=ne.useCallback(fe=>{Ct.current=fe,fe&&Ln()},[Ln]),Rn=ne.useCallback(fe=>{ir.current?.(fe.currentTarget)},[]),hn=ne.useCallback(fe=>{const _t=fe.scrollHeight-fe.scrollTop-fe.clientHeight<=mG;it.current=_t,_t&&Lr(!1),cr.current=Yr(fe)},[Yr]);ne.useLayoutEffect(()=>{ir.current=hn},[hn]);const dt=ne.useCallback(fe=>{if(Ft.current?.disconnect(),Ft.current=null,Qt.current=fe,!!fe&&(Wr&&Ht.current!==Wr?it.current=!1:(fe.scrollTop=fe.scrollHeight,it.current=!0),Lr(!1),typeof ResizeObserver<"u")){const ot=new ResizeObserver(()=>{const _t=Qt.current;_t&&ir.current?.(_t)});ot.observe(fe),Ft.current=ot}},[Wr,t]);ne.useLayoutEffect(()=>{Ht.current=null},[Wr]),ne.useLayoutEffect(()=>{if(!t)return;const fe=Qt.current;if(!fe)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(fe);return}_t||it.current?Zn():nr&&ot?fe.scrollTop=ot.scrollTop+(fe.scrollHeight-ot.scrollHeight):Pt&&Lr(!0),cr.current=Yr(fe);const fr=window.requestAnimationFrame(()=>{_t||it.current?Zn():cr.current=Yr(fe)});return()=>window.cancelAnimationFrame(fr)},[rn,Wr,Yr,t,sn,Sn,Zn,Ln]);const On=ne.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(ne.Suspense,{fallback:a.jsx(gG,{count:rn}),children:a.jsx(pG,{activity:re?.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:fe=>q(fe.target.value),disabled:!t||Yt,onKeyDown:fe=>{fe.key==="Enter"&&!fe.shiftKey&&(fe.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:ae,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:fe=>{const ot=fe.target.value;je(ot)},onBlur:fe=>{fe.currentTarget.value!==n&&Ye(fe.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:fe=>{const ot=fe.target.value;De.current=ot,Re(ot)},onFocus:()=>Z(!0),onBlur:fe=>{fe.currentTarget.value!==s&&ge(fe.currentTarget.value),Z(!1)},onPaste:fe=>{const ot=jr(fe.clipboardData);if(ot.length===0)return;fe.preventDefault();const _t=fe.currentTarget;er(ot,_t.selectionStart,_t.selectionEnd)},onDragOver:cn,onDrop:fe=>{const ot=qr(fe.dataTransfer);if(ot.length===0)return;fe.preventDefault(),fe.stopPropagation();const _t=fe.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:fe=>{const ot=qr(fe.dataTransfer);ot.length!==0&&(fe.preventDefault(),fe.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:fe=>Q(String(fe)),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:fe=>ce(String(fe)),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:h,onChange:fe=>N(fe.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:fe=>B(String(fe)),ariaLabelledBy:"assignee-label",portalPanel:!0,panelMinWidth:nv,panelAlign:"start",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:fe=>{const ot=hr.get(String(fe.value));return ot?a.jsx(pf,{option:ot}):fe.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:g,onChange:fe=>be(fe.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(iG,{taskId:t,workspaceId:b,taskStatus:re?.status,taskUpdatedAt:re?.updatedAt,comments:k,assigneeOptions:Xr,currentActorId:P,apiBaseUrl:E,runtimeMode:D,disabled:!!(re?.isArchived||re?.isDeleted),onActivatePendingWorkflow:re&&Ie?()=>Ie(re,"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(fe=>{const ot=T[fe.id],_t=Array.isArray(ot)?ot.map(nr=>String(nr)):ot!=null&&ot!==""?[String(ot)]:[],Pt=fe.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:fe.label}),fe.description&&a.jsx("div",{className:`${wt.settingsHint} tf-text-helper`,children:fe.description}),fe.widgetType==="level"?a.jsx(tv,{label:fe.label,options:Pt.map(nr=>({...nr,label:nr.status==="retired"?`${nr.label} (Retired)`:nr.label})),value:T[fe.id]||"",onChange:nr=>z(fe.id,nr),type:"general",hideLabel:!0}):fe.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(fe.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=fe.options.find(Tt=>String(Tt.value)===String(T[fe.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[fe.id]||"",onChange:nr=>z(fe.id,nr.target.value),className:`${R.select} ${R.field_dynamic}`,required:fe.isRequired,children:[a.jsxs("option",{value:"",children:["Select ",fe.label,"..."]}),Pt.map(nr=>a.jsx("option",{value:nr.value,children:nr.status==="retired"?`${nr.label} (Retired)`:nr.label},nr.value))]})]})]},fe.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 fe=!or;$r(fe),fe||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:fe=>wr(fe.target.value),onKeyDown:fe=>{fe.key==="Enter"&&(fe.preventDefault(),fe.stopPropagation(),St()),fe.key==="Escape"&&(fe.preventDefault(),fe.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(fe=>fe.id),strategy:pw,children:y.map((fe,ot)=>a.jsx(yG,{id:fe.id||`checklist-${ot}`,item:fe,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})))},fe.id||`checklist-${ot}`))})})]})]})]}),a.jsxs("div",{children:[a.jsx(ne.Suspense,{fallback:null,children:a.jsx(hG,{taskId:t,taskReferenceLabel:Ce,workspaceId:b,apiBaseUrl:E,showImageReviews:j&&!!re,contextFiles:A,onAddContextFile:Ue,onRemoveContextFile:st,onUpdateContextCaption:ft,cardCoverAssetId:re?.cardCoverAssetId,onSetCardCover:xe,cardCoverDisabled:ke})}),a.jsx("div",{className:`${wt.taskFormLifecycle} ${wt.taskFormMetaDivider}`,children:a.jsx("div",{className:wt.taskFormMetaGrid,children:re&&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:h,currentTask:g,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=g??(e&&h.find(Q=>Q.id===e)||null),H=!!Y?.isArchived,M=!!Y?.isDeleted,oe=ne.useMemo(()=>{if(!M||!Y?.deletedExpiresAt)return"";const Q=new Date(Y.deletedExpiresAt);return Number.isNaN(Q.getTime())?"":`Trash expires ${Q.toLocaleString()}`},[Y?.deletedExpiresAt,M]),K=vw(Y),ee=K.label||(K.isProvisional?"Pending":""),te=K.isProvisional,me=!!K.label,_e=y?lf(y)||y.id:"",$e=k?ws(k)||k.id:"",Ye=ne.useCallback(Q=>{A?.(lf(Q)||Q.id),e&&b?.(Q.id)},[e,b,A]),ye=ne.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,le=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:Q=>m(Q,$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:Q=>m(Q,_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}),!ee&&ge?a.jsxs("span",{className:R.taskHierarchySegment,children:[a.jsx("span",{className:R.taskHierarchyDivider,children:"/"}),ge]}):null,ee?a.jsxs("span",{className:R.taskHierarchySegment,children:[y?a.jsx("span",{className:R.taskHierarchyDivider,children:"/"}):null,ge,a.jsx(nf,{copied:me&&f===K.label,onClick:Q=>m(Q,K.label),disabled:t||!me,title:te?"Temporary identifier — replaced after synchronization.":jt("actionHeader.copyTaskIdTitle"),ariaLabel:te?`Copy temporary task reference ${ee}`:void 0,label:ee,provisional:te})]}):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:[le,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:(Q,ce)=>{if(j){j(Q,ce);return}if(ce==="in-progress"){w(Q);return}if(ce==="review"){P(Q);return}if(ce==="done"){E(Q);return}ce==="cancelled"&&D(Q)},onArchiveTask:S,onUnarchiveTask:Q=>L?.(Q.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:Q=>d(Q),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 kG(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]),h=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]),g=o.useCallback(()=>{s(!1)},[]);return o.useEffect(()=>(n?(window.addEventListener("mousemove",h),window.addEventListener("mouseup",g)):(window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",g)),()=>{window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",g)}),[n,h,g]),{position:t,isDragging:n,handleMouseDown:f,modalRef:m,setPosition:r}}const qm=[];let Rm=0,av="";function vG(e){return qm.push(e),()=>{const t=qm.lastIndexOf(e);t>=0&&qm.splice(t,1)}}function wG(){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:h=!1,closeOnOverlayClick:g=!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}=kG();if(A.current=t,b.current=y,o.useEffect(()=>{if(e)return vG(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 wG()},[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:_=>{g&&!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:""} ${h?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 bG="_toolbar_1nqyq_1",SG="_masterSelection_1nqyq_13",AG="_selectedCount_1nqyq_32",CG="_actionButton_1nqyq_36",IG="_emptyButton_1nqyq_47",_G="_dialogBody_1nqyq_52",TG="_destinationSummary_1nqyq_62",xG="_hint_1nqyq_66",RG="_progress_1nqyq_70",PG="_failures_1nqyq_77",jG="_spinner_1nqyq_102",zo={toolbar:bG,masterSelection:SG,selectedCount:AG,actionButton:CG,emptyButton:IG,dialogBody:_G,destinationSummary:TG,hint:xG,progress:RG,failures:PG,spinner:jG};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),[h,g]=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&&(g(!1),w(null))},j=T=>{k(T),w(null),g(!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:h,onClose:()=>{v||(g(!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:()=>{g(!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 EG="_topNoticeLayer_1yiif_1",NG="_taskNoticeLayer_1yiif_13",DG="_topNotice_1yiif_1",MG="_topNoticeMessage_1yiif_37",LG="_topNoticeSuccess_1yiif_43",OG="_topNoticeError_1yiif_44",BG="_topNoticeInfo_1yiif_45",WG="_topNoticeDismiss_1yiif_63",Yc={topNoticeLayer:EG,taskNoticeLayer:NG,topNotice:DG,topNoticeMessage:MG,topNoticeSuccess:LG,topNoticeError:OG,topNoticeInfo:BG,topNoticeDismiss:WG};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 $G="D-";function FG(e){return mp($G,e)}const UG="_overlay_ey7rx_1",zG="_dialog_ey7rx_13",HG="_header_ey7rx_32",VG="_footer_ey7rx_33",GG="_titleGroup_ey7rx_53",KG="_secondaryActions_ey7rx_54",qG="_typeIcon_ey7rx_61",YG="_titleText_ey7rx_66",ZG="_title_ey7rx_53",JG="_referenceBadge_ey7rx_79",XG="_content_ey7rx_83",QG="_image_ey7rx_93",eK="_pdf_ey7rx_100",tK="_textPreview_ey7rx_107",rK="_codePreview_ey7rx_108",nK="_message_ey7rx_125",aK="_unavailable_ey7rx_126",sK="_secondaryLink_ey7rx_145",Ma={overlay:UG,dialog:zG,header:HG,footer:VG,titleGroup:GG,secondaryActions:KG,typeIcon:qG,titleText:YG,title:ZG,referenceBadge:JG,content:XG,image:QG,pdf:eK,textPreview:tK,codePreview:rK,message:nK,unavailable:aK,secondaryLink:sK},oK=/\.(?:md|markdown|txt|csv|json|js|ts|tsx|css|py|java|go|rs|sh)(?:[?#]|$)/i,iK=/\.(?:png|jpe?g|webp|gif)(?:[?#]|$)/i,cK=/\.pdf(?:[?#]|$)/i;function lK(e){return typeof e=="string"?e:e.path}function dK(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 uK(e){return typeof e=="string"?[e]:[e.path,e.fsPath,e.originalFilename,e.displayName,e.caption].filter(t=>!!t)}function fK(e,t){const r=e.includes("?")?"&":"?";return`${e}${r}download=1&filename=${encodeURIComponent(t)}`}function mK(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),h=o.useRef(null),g=o.useRef(null),y=o.useRef(null),k=o.useRef(0),v=o.useId();o.useEffect(()=>{const oe=K=>{const ee=K;ee.detail?.attachment&&(ee.preventDefault(),k.current+=1,y.current!==null&&(window.clearTimeout(y.current),y.current=null),f(!1),r(ee.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;g.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"||!h.current)return;const ee=Array.from(h.current.querySelectorAll('button:not([disabled]), [href], iframe, [tabindex]:not([tabindex="-1"])'));if(ee.length===0){K.preventDefault(),h.current.focus();return}const te=ee[0],me=ee[ee.length-1];K.shiftKey&&document.activeElement===te?(K.preventDefault(),me.focus()):!K.shiftKey&&document.activeElement===me&&(K.preventDefault(),te.focus())};return window.addEventListener("keydown",oe,!0),window.requestAnimationFrame(()=>h.current?.focus()),()=>{window.removeEventListener("keydown",oe,!0),g.current?.focus()}},[t]);const A=t?lK(t.attachment):"",b=t?uK(t.attachment):[],w=/^https?:\/\//i.test(A),P=b.some(oe=>iK.test(oe)),E=b.some(oe=>cK.test(oe)),D=b.some(oe=>oK.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=dK(t.attachment),L=typeof t.attachment=="string"?null:t.attachment,_=P?cp(L):FG(L),T=mK(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:h,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:fK(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 pK=ne.lazy(()=>qo(()=>import("./TaskSettings-DAlH4YIP.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function hK(e){const{activeTab:t,setActiveTab:r,isOpen:n,setIsOpen:s,currentTheme:i,setCurrentTheme:l,saveSettings:c,pathSaved:d,keyShortcut:m,setKeyShortcut:f,jsonBackupEnabled:h,setJsonBackupEnabled:g,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:ee,archivedTasks:te,deletedTasks:me,activeCategories:_e,activeTypes:$e,priorities:Ye,taxonomyDisplayLabels:ye,taxonomies:ge,searchQuery:le,setSearchQuery:Q,filterCategories:ce,setFilterCategories:$,filterTypes:V,setFilterTypes:B,filterPriorities:N,setFilterPriorities:be,filterStatus:Ae,setFilterStatus:q,filterAssignees:Z,setFilterAssignees:G,assigneeOptions:ae,filterTaxonomies:Te,setFilterTaxonomies:Le,sortBy:Ue,setSortBy:st,sortOrder:ft,toggleSortOrder:xe,showArchive:ke,setShowArchive:ve,taskScope:He,setTaskScope:Ee,clearFilters:ue,filteredTasks:x,filteredArchive:de,groupedTasks:Ie,collapsedCategories:Je,setCollapsedCategories:J,handleEdit:Ze,handleDelete:re,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:fe,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=Xz({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:fe?.id||null,ownerReferenceLabel:Ss(fe),workspaceId:vr})}).catch(()=>{Yr(`${ut.token} could not be opened.`,"error")})},[fe,Un,e.initiatives,e.workstreams,Yr]),sa=o.useMemo(()=>({...Qn,entityReferences:{resolve:vC,activate:Ws}}),[Ws,Qn]),hi=o.useRef(null),[ea,gi]=ne.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=ne.useMemo(()=>me.map(ut=>({...ut.taskSnapshot,isDeleted:!0,deletedRecordId:ut.id,deletedAt:ut.deletedAt,deletedExpiresAt:o_(ut.deletedAt)})),[me]),qa=ne.useMemo(()=>new globalThis.Map(me.map(ut=>[ut.taskId,ut])),[me]),xa=ne.useMemo(()=>{const ut=yp(le),vr={categories:_e,types:$e,priorities:Ye,assigneeOptions:ae,taxonomies:ge},en=_e.every(Nr=>ce.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=ae.length>0&&ae.every(Nr=>Z.includes(Nr.value)),jn=kp(ge,La);return La.filter(Nr=>{const Oa=Ug(Nr,ut,vr),Ya=en||ce.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,te,ae,La,Z,ce,N,Ae,Te,V,Ye,le,Ue,ft,ge,K]),Ra=ne.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_(me,xa.map(ut=>ut.id),He==="deleted"),us=He==="archived"?de.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:fe,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(fe?.isDeleted){const vr=qa.get(ut);vr&&Oe(vr.id,vr.taskId);return}yt(ut)},handleRestoreDeletedTask:ut=>{const vr=me.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:te,categories:_e,types:$e,priorities:Ye,workspaceId:Un,taxonomyDisplayLabels:ye,taxonomies:ge,searchQuery:le,filterCategories:ce,filterTypes:V,filterPriorities:N,filterStatus:Ae,filterAssignees:Z,assigneeOptions:ae,filterTaxonomies:Te,sortBy:Ue,sortOrder:ft,showArchive:ke,taskScope:He,collapsedCategories:Je,loadingTasks:ee,filteredTasks:x,filteredArchive:de,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:me.length,onSelectAllMatching:zn.selectAllMatching,onClearSelection:zn.clear,onRestore:mt,onEmptyEntireTrash:()=>{confirm(`Permanently delete all ${me.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:Q,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:ue,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}re(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:ae,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(fe),workspaceId:Un})},onCopyId:Ne,onToggleInProgress:Pe,onToggleReview:he,onToggleComplete:Re,onToggleCancel:Ce,onArchiveTask:et,onUnarchive:ut=>{if(fe?.isDeleted){const vr=qa.get(ut);vr&&Oe(vr.id,vr.taskId);return}yt(ut)},currentTask:fe}),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(pK,{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 gK="_accountMenuWrap_1mocf_1",yK="_avatarBtn_1mocf_5",kK="_avatarBadge_1mocf_9",vK="_avatarImage_1mocf_24",wK="_avatarIcon_1mocf_30",bK="_accountMenu_1mocf_1",SK="_accountMenuItem_1mocf_48",AK="_accountMenuItemActive_1mocf_68",CK="_accountMenuSection_1mocf_73",IK="_accountMenuSectionLabel_1mocf_79",_K="_accountMenuMeta_1mocf_88",TK="_accountMenuHint_1mocf_93",xK="_accountIdentityEmail_1mocf_99",RK="_accountIdentityBlock_1mocf_104",PK="_accountIdentityMetaLine_1mocf_109",jK="_accountIdentityMetaAction_1mocf_116",EK="_accountIdentityMetaValue_1mocf_125",NK="_accountIdentityMetaLabel_1mocf_130",DK="_accountMenuError_1mocf_159",MK="_accountHubCard_1mocf_165",LK="_profileAvatarEditor_1mocf_172",OK="_profileEditLayout_1mocf_178",BK="_profileFieldStack_1mocf_185",WK="_profileFieldLabel_1mocf_191",gr={accountMenuWrap:gK,avatarBtn:yK,avatarBadge:kK,avatarImage:vK,avatarIcon:wK,accountMenu:bK,accountMenuItem:SK,accountMenuItemActive:AK,accountMenuSection:CK,accountMenuSectionLabel:IK,accountMenuMeta:_K,accountMenuHint:TK,accountIdentityEmail:xK,accountIdentityBlock:RK,accountIdentityMetaLine:PK,accountIdentityMetaAction:jK,accountIdentityMetaValue:EK,accountIdentityMetaLabel:NK,accountMenuError:DK,accountHubCard:MK,profileAvatarEditor:LK,profileEditLayout:OK,profileFieldStack:BK,profileFieldLabel:WK},$K="_authBlockedBanner_1virb_1",FK="_loginView_1virb_10",UK="_loginCard_1virb_20",zK="_loginCloseBtn_1virb_34",HK="_loginLogo_1virb_56",VK="_authBrandRow_1virb_62",GK="_setupHeaderRow_1virb_68",KK="_runtimeIconBadge_1virb_75",qK="_loginTitle_1virb_94",YK="_loginTitleAccent_1virb_105",ZK="_loginSubtitle_1virb_109",JK="_loginError_1virb_115",XK="_loginField_1virb_121",QK="_loginFieldLabel_1virb_126",eq="_loginInput_1virb_133",tq="_loginPrimaryBtn_1virb_149",rq="_authPrimaryActions_1virb_154",nq="_registerConsent_1virb_159",aq="_registerConsentLink_1virb_167",sq="_authModeSwitch_1virb_177",oq="_authModeSwitchLink_1virb_184",iq="_authModeLinks_1virb_199",cq="_authSecondaryActions_1virb_207",lq="_authModeLink_1virb_199",dq="_optionGrid_1virb_236",uq="_optionGroup_1virb_242",fq="_optionRow_1virb_247",mq="_inlineHint_1virb_254",pq="_actionRowEnd_1virb_260",hq="_oauthProviders_1virb_267",gq="_oauthDivider_1virb_274",yq="_oauthButtons_1virb_290",kq="_oauthButton_1virb_290",Qe={authBlockedBanner:$K,loginView:FK,loginCard:UK,loginCloseBtn:zK,loginLogo:HK,authBrandRow:VK,setupHeaderRow:GK,runtimeIconBadge:KK,loginTitle:qK,loginTitleAccent:YK,loginSubtitle:ZK,loginError:JK,loginField:XK,loginFieldLabel:QK,loginInput:eq,loginPrimaryBtn:tq,authPrimaryActions:rq,registerConsent:nq,registerConsentLink:aq,authModeSwitch:sq,authModeSwitchLink:oq,authModeLinks:iq,authSecondaryActions:cq,authModeLink:lq,optionGrid:dq,optionGroup:uq,optionRow:fq,inlineHint:mq,actionRowEnd:pq,oauthProviders:hq,oauthDivider:gq,oauthButtons:yq,oauthButton:kq},vq="_modalBody_xo2lt_1",wq="_mutedText_xo2lt_5",bq="_sectionText_xo2lt_10",Sq="_modalActionsEnd_xo2lt_50",Aq="_helpModalBody_xo2lt_56",Cq="_helpHero_xo2lt_60",Iq="_helpHeroIcon_xo2lt_67",_q="_helpHeroCopy_xo2lt_79",Tq="_supportContactCard_xo2lt_84",xq="_supportContactHeader_xo2lt_90",Rq="_supportEmailAddress_xo2lt_97",Pq="_supportActionRow_xo2lt_112",jq="_supportAction_xo2lt_112",Eq="_supportPanel_xo2lt_123",Nq="_supportPanelHeader_xo2lt_132",Dq="_memberRow_xo2lt_150",Mq="_memberTitle_xo2lt_156",Lq="_memberActions_xo2lt_160",Oq="_selectRole_xo2lt_167",Bq="_selectPermission_xo2lt_171",Wq="_inviteRow_xo2lt_175",$q="_listHeading_xo2lt_179",Fq="_auditList_xo2lt_184",Uq="_auditPager_xo2lt_190",zq="_labelFixed_xo2lt_197",Kr={modalBody:vq,mutedText:wq,sectionText:bq,modalActionsEnd:Sq,helpModalBody:Aq,helpHero:Cq,helpHeroIcon:Iq,helpHeroCopy:_q,supportContactCard:Tq,supportContactHeader:xq,supportEmailAddress:Rq,supportActionRow:Pq,supportAction:jq,supportPanel:Eq,supportPanelHeader:Nq,memberRow:Dq,memberTitle:Mq,memberActions:Lq,selectRole:Oq,selectPermission:Bq,inviteRow:Wq,listHeading:$q,auditList:Fq,auditPager:Uq,labelFixed:zq};function Hq({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 Vq="_editableAvatarButton_1qp11_1",Gq="_editableAvatarImage_1qp11_47",Kq="_editableAvatarFallback_1qp11_54",qq="_editableAvatarBadge_1qp11_65",Yq="_editableAvatarProgress_1qp11_91",Zq="_editableAvatarProgressError_1qp11_108",yd={editableAvatarButton:Vq,editableAvatarImage:Gq,editableAvatarFallback:Kq,editableAvatarBadge:qq,editableAvatarProgress:Yq,editableAvatarProgressError:Zq};function Jq({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:h=!1,loading:g=!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":g,title:e,onClick:b,disabled:h,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})}),g?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 Xq="_modalBody_1t6q4_1",Qq="_layout_1t6q4_5",eY="_sectionTabs_1t6q4_11",tY="_sectionTab_1t6q4_11",rY="_sectionPanel_1t6q4_55",nY="_section_1t6q4_11",aY="_sectionHeader_1t6q4_65",sY="_cardHeader_1t6q4_66",oY="_planSummary_1t6q4_67",iY="_intervalRow_1t6q4_68",cY="_sectionCard_1t6q4_81",lY="_sectionActions_1t6q4_87",dY="_inlineActions_1t6q4_88",uY="_loginMethodList_1t6q4_96",fY="_loginMethodRow_1t6q4_101",mY="_loginMethodIcon_1t6q4_110",pY="_loginMethodCopy_1t6q4_122",hY="_addPasswordForm_1t6q4_137",gY="_linkProviderBlock_1t6q4_138",yY="_fieldLabel_1t6q4_145",kY="_planName_1t6q4_157",an={modalBody:Xq,layout:Qq,sectionTabs:eY,sectionTab:tY,sectionPanel:rY,section:nY,sectionHeader:aY,cardHeader:sY,planSummary:oY,intervalRow:iY,sectionCard:cY,sectionActions:lY,inlineActions:dY,loginMethodList:uY,loginMethodRow:fY,loginMethodIcon:mY,loginMethodCopy:pY,addPasswordForm:hY,linkProviderBlock:gY,fieldLabel:yY,planName:kY},vY=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 wY(e){return $d(e).toLowerCase()}function bY(e){return!!($d(e?.stripeCustomerId)||$d(e?.stripeSubscriptionId))}function SY(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 AY(e){return vY.has(D_(e))}function Yv(e,t){const r=D_(e?.entitlementState),n=wY(e?.gate||t),s=$d(e?.billingConflictCode).toUpperCase(),i=$d(e?.message),l=AY(r),c=bY(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:SY(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,CY=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),IY=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function _Y(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=IY(r);return CY.has(n)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:_Y(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 TY="_wrapper_1g3s7_1",xY="_input_1g3s7_7",RY="_toggle_1g3s7_11",sv={wrapper:TY,input:xY,toggle:RY},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"},PY=[{id:"profile",label:"Profile",icon:tf},{id:"security",label:"Sign-in & Security",icon:O0},{id:"billing",label:"Plan & Billing",icon:B0}];function jY(e){const t=String(e||"").trim();return t?t.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase()):"Not available"}function EY({isOpen:e,theme:t,displayName:r,email:n,avatarDisplayUrl:s,accountBadgeInitial:i,profileSaveBusy:l,profileAvatarBusy:c,profileSaveError:d,profileSaveNotice:m,cloudAuthEnabled:f,availableAuthProviders:h,billingLoading:g,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[ee,te]=o.useState("profile"),[me,_e]=o.useState([]),[$e,Ye]=o.useState(!1),[ye,ge]=o.useState(null),[le,Q]=o.useState(null),[ce,$]=o.useState(null),[V,B]=o.useState(!1),[N,be]=o.useState(""),[Ae,q]=o.useState(!1),[Z,G]=o.useState(null),[ae,Te]=o.useState(!1),[Le,Ue]=o.useState(!1),[st,ft]=o.useState(""),[xe,ke]=o.useState(""),[ve,He]=o.useState(""),[Ee,ue]=o.useState(!1),[x,de]=o.useState(null),[Ie,Je]=o.useState(!1),J=Yv(w),Ze=M_(),re=String(w?.planName||w?.planId||"No plan selected").trim()||"No plan selected",Ne=new Set(me.map(Ve=>Ve.provider)),je=Ne.has("password"),Re=h.filter(Ve=>Ve!=="password"&&!Ne.has(Ve)),Ce=o.useCallback(()=>{B(!1),be(""),G(null),Te(!1),Ue(!1),ft(""),ke(""),He(""),de(null),Je(!1)},[]),Pe=()=>{Ce(),P()},he=Ve=>{Ve!=="security"&&Ce(),te(Ve)};o.useEffect(()=>{$(null),Ce(),e&&te("profile")},[Ce,e]),o.useEffect(()=>{ee!=="security"&&Ce()},[ee,Ce]),o.useEffect(()=>{if(!e||ee!=="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}},[ee,f,e,S]);const De=async Ve=>{Q(Ve),$(null);const tt=await L(Ve);if(Q(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){de("New passwords do not match.");return}const Ve=Xv(xe,{email:n,displayName:r});if(!Ve.ok){de(Ve.message||"Password does not meet the password policy.");return}ue(!0),de(null),Je(!1);const tt=await T(st,xe);if(ue(!1),!tt.success){de(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(Jq,{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}),ce&&a.jsx("p",{className:"tf-text-error",role:"alert",children:ce}),ae&&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&&me.length>0&&a.jsx("div",{className:an.loginMethodList,children:me.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})]}),me.length>1&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:le===Ve.provider,onClick:()=>{De(Ve.provider)},children:le===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),de(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(""),de(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||g,children:[a.jsx($0,{size:14}),"Refresh"]})]}),a.jsxs("div",{className:`${an.sectionCard} tf-surface-panel`,children:[g&&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:re})]}),a.jsx("span",{className:`tf-chip ${J.isActive?"tf-chip-success":"tf-chip-neutral"}`,children:jY(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:PY.map(Ve=>{const tt=Ve.icon,It=Ve.id===ee;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-${ee}`,"aria-labelledby":`account-settings-tab-${ee}`,children:[ee==="profile"&&Oe(),ee==="security"&&mt(),ee==="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)}},NY=(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)},DY=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),!DY(e)&&t&&(s.crossOrigin=t),s.src=e}),MY=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)}),LY=typeof File<"u",yA=e=>Math.PI/180*e,kA={x:.5,y:.5},OY=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(LY&&e instanceof File)t=await MY(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&&NY(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 h=Math.cos(yA(f)),g=Math.sin(yA(f)),y=d+s*h+i*g,k=m+-s*g+i*h,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=()=>{},BY=()=>{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:h=!1,disableHiDPIScaling:g=!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 OY({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:A,borderColor:T,showGrid:m,gridColor:f,disableBoundaryChecks:h,disableHiDPIScaling:g,disableCanvasRotation:y,crossOrigin:b})),M=o.useRef(!1),oe=o.useRef(void 0),K=o.useRef(void 0),[ee,te]=o.useState(!1),[me,_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 le=o.useRef(_);le.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:h,disableHiDPIScaling:g,disableCanvasRotation:y,crossOrigin:b})},[l,c,s,i,r,n,d,A,T,m,f,h,g,y,b]);let Q=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},[]),ce=o.useCallback(()=>{let ae=Q().getContext("2d");if(!ae)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ae},[Q]),$=o.useCallback(async ae=>{_e(!0),w?.();try{let Te=await H.current.loadImage(ae);M.current=!1,te(!1),Ye(Te),D?.(),E?.(Te)}catch{P?.()}finally{_e(!1)}},[w,D,E,P]),V=o.useCallback(()=>{let ae=Q();ce().clearRect(0,0,ae.width,ae.height),H.current.clearImage(),Ye(H.current.getImageState())},[Q,ce]),B=o.useCallback(()=>{let ae=ce(),Te=Q();ae.clearRect(0,0,Te.width,Te.height),H.current.paint(ae),H.current.paintImage(ae,$e,s)},[ce,Q,$e,s,l,c,i,r,n,d,A,T,m,f,h,g,y,b]),N=o.useCallback(ae=>{ae.preventDefault(),M.current=!0,oe.current=void 0,K.current=void 0,te(!0)},[]),be=o.useCallback(()=>{M.current=!0,oe.current=void 0,K.current=void 0,te(!0)},[]);o.useImperativeHandle(t,()=>({getImage:()=>H.current.getImage(),getImageScaledToCanvas:()=>H.current.getImageScaledToCanvas(),getCroppingRect:()=>H.current.getCroppingRect()}),[]),o.useEffect(()=>{let ae=ce();k&&$(k),H.current.paint(ae);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);le.current?.(Ee);let ue={...He,...Ee};H.current.setImageState(ue),Ye(ue)}}ge.current?.(st)},Le=()=>{M.current&&(M.current=!1,te(!1),ye.current?.())},Ue=BY()?{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(!me)return;let ae=Y.current;if(!ae)return;let Te=ae.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,ae.width,ae.height),Te.fillStyle=`rgba(255,255,255,${ke})`,Te.fillRect(0,0,ae.width,ae.height),Te.restore(),Le=requestAnimationFrame(st)};return Le=requestAnimationFrame(st),()=>cancelAnimationFrame(Le)},[me]);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 ae=Ae.current;(ae.image!==k||ae.width!==l||ae.height!==c||ae.position!==v||ae.scale!==r||ae.rotate!==n||ae.imageX!==$e.x||ae.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:ee?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return ne.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 WY="_avatarManagerBody_1bfoi_1",$Y="_editorPanel_1bfoi_7",FY="_editorFrame_1bfoi_13",UY="_gifPreviewImage_1bfoi_21",zY="_emptyPreview_1bfoi_28",HY="_controlPanel_1bfoi_41",VY="_zoomField_1bfoi_47",GY="_zoomSlider_1bfoi_52",KY="_actionGrid_1bfoi_57",qY="_fileInput_1bfoi_71",YY="_messageStack_1bfoi_75",ZY="_footerActions_1bfoi_80",ii={avatarManagerBody:WY,editorPanel:$Y,editorFrame:FY,gifPreviewImage:UY,emptyPreview:zY,controlPanel:HY,zoomField:VY,zoomSlider:GY,actionGrid:KY,fileInput:qY,messageStack:YY,footerActions:ZY},ov=512,JY=48,ng=512;function wA(e,t,r){return new Promise(n=>{e.toBlob(n,t,r)})}function XY(e,t){const r=String(e).trim()||"avatar",n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}async function QY(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],XY(t,d),{type:c,lastModified:Date.now()})}function eZ({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:h,error:g,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),[ee,te]=o.useState(null);o.useEffect(()=>{e||(L(null),T(""),Y(1.1),M(!1),j.current=!1,K(null),te(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 me=_||s||n,_e=S?.name||"avatar",$e=String(i||"").trim().charAt(0).toUpperCase(),Ye=oe||g,ye=ee||y,ge=c||d,le=o.useCallback(B=>{if(K(null),te(null),!!B){if(!B.type.startsWith("image/")){K("Profile photo must be an image file.");return}B.type==="image/gif"&&te("Animated GIFs will upload without repositioning."),L(B),Y(1.1),M(!1),j.current=!1}},[]),Q=o.useCallback(async()=>{K(null);const B=P.current;if(S?.type==="image/gif"){await v(S)&&k();return}if(!B||!me){K("Choose a profile photo first.");return}try{const N=await QY(B,_e);await v(N,S,{preserveExistingSource:!S&&!!s})&&k()}catch(N){K(N instanceof Error?N.message:"Unable to prepare profile photo.")}},[n,me,s,v,k,S,_e]),ce=o.useCallback(async()=>{if(!(!A||ge||D.current)){D.current=!0,K(null),te(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:()=>{Q()},disabled:ge||!$,children:c?"Applying...":"Apply Changes"})]}),[c,$,Q,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:()=>{me&&S?.type!=="image/gif"&&(j.current=!0)},children:S?.type==="image/gif"&&_?a.jsx("img",{src:_,alt:"",className:ii.gifPreviewImage}):me?a.jsx(O_,{ref:P,image:me,width:ov,height:ov,border:JY,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=>le(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:()=>{ce()},disabled:ge,"aria-busy":d,children:[d?a.jsx(na,{size:16,className:R.spinner}):a.jsx(XA,{size:16}),d?"Generating":m]}),h&&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||!me||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 tZ(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 rZ({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 nZ({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 aZ({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 sZ="_syncStatusOverlay_b2fe8_1",oZ="_syncStatusModal_b2fe8_5",iZ="_syncStatusTop_b2fe8_10",cZ="_syncStatusMetaHeader_b2fe8_19",lZ="_syncStatusBadge_b2fe8_26",dZ="_syncStatusLabel_b2fe8_40",uZ="_syncToggle_b2fe8_51",fZ="_syncToggleTransition_b2fe8_59",mZ="_syncToggleControl_b2fe8_66",pZ="_syncToggleControlEnabled_b2fe8_82",hZ="_syncToggleControlDisabled_b2fe8_88",gZ="_syncToggleControlBusy_b2fe8_92",yZ="_syncToggleControlBlocked_b2fe8_97",kZ="_syncToggleInput_b2fe8_102",vZ="_syncToggleState_b2fe8_115",wZ="_syncToggleStateOn_b2fe8_129",bZ="_syncToggleStateOff_b2fe8_133",SZ="_syncToggleThumb_b2fe8_142",AZ="_syncStatusOverview_b2fe8_153",CZ="_syncStatusEventsPanel_b2fe8_154",IZ="_syncStatusAdvanced_b2fe8_155",_Z="_syncStatusOverviewRow_b2fe8_166",TZ="_syncStatusSummaryValue_b2fe8_180",xZ="_syncStatusValue_b2fe8_181",RZ="_syncStatusIssueRow_b2fe8_189",PZ="_syncStatusIssueRowError_b2fe8_193",jZ="_syncStatusValueMuted_b2fe8_197",EZ="_syncStatusValueError_b2fe8_204",NZ="_syncStatusKeyMetrics_b2fe8_211",DZ="_syncStatusCompactGrid_b2fe8_212",MZ="_syncStatusCompactItem_b2fe8_225",LZ="_syncStatusAdvancedContent_b2fe8_266",OZ="_syncStatusDiagnosticsList_b2fe8_273",BZ="_syncStatusOwnershipControl_b2fe8_279",WZ="_syncStatusDiagnosticRow_b2fe8_300",$Z="_syncStatusPanelHeader_b2fe8_322",FZ="_syncStatusPanelMeta_b2fe8_329",UZ="_syncStatusMismatchPanel_b2fe8_335",zZ="_syncStatusMismatchItem_b2fe8_345",HZ="_syncStatusEventFilters_b2fe8_364",VZ="_syncStatusEventFilterActive_b2fe8_391",GZ="_syncStatusEventsList_b2fe8_396",KZ="_syncStatusEventItem_b2fe8_406",qZ="_syncStatusEventItemError_b2fe8_413",YZ="_syncStatusEventItemMuted_b2fe8_418",ZZ="_syncStatusEventLine_b2fe8_422",JZ="_syncStatusFooter_b2fe8_432",XZ="_syncStatusFooterPrimary_b2fe8_441",Lt={syncStatusOverlay:sZ,syncStatusModal:oZ,syncStatusTop:iZ,syncStatusMetaHeader:cZ,syncStatusBadge:lZ,syncStatusLabel:dZ,syncToggle:uZ,syncToggleTransition:fZ,syncToggleControl:mZ,syncToggleControlEnabled:pZ,syncToggleControlDisabled:hZ,syncToggleControlBusy:gZ,syncToggleControlBlocked:yZ,syncToggleInput:kZ,syncToggleState:vZ,syncToggleStateOn:wZ,syncToggleStateOff:bZ,syncToggleThumb:SZ,syncStatusOverview:AZ,syncStatusEventsPanel:CZ,syncStatusAdvanced:IZ,syncStatusOverviewRow:_Z,syncStatusSummaryValue:TZ,syncStatusValue:xZ,syncStatusIssueRow:RZ,syncStatusIssueRowError:PZ,syncStatusValueMuted:jZ,syncStatusValueError:EZ,syncStatusKeyMetrics:NZ,syncStatusCompactGrid:DZ,syncStatusCompactItem:MZ,syncStatusAdvancedContent:LZ,syncStatusDiagnosticsList:OZ,syncStatusOwnershipControl:BZ,syncStatusDiagnosticRow:WZ,syncStatusPanelHeader:$Z,syncStatusPanelMeta:FZ,syncStatusMismatchPanel:UZ,syncStatusMismatchItem:zZ,syncStatusEventFilters:HZ,syncStatusEventFilterActive:VZ,syncStatusEventsList:GZ,syncStatusEventItem:KZ,syncStatusEventItemError:qZ,syncStatusEventItemMuted:YZ,syncStatusEventLine:ZZ,syncStatusFooter:JZ,syncStatusFooterPrimary:XZ};function QZ(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 eJ(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"),h=i?.attachmentApplyObligations?.open||0,g=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=QZ(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.",ee="No action needed.",te=s?.lastError||"None";if(g)oe="attention",K="Sync is paused because the coordinator credential is unavailable.",ee="Sign in again, then retry sync.";else if(y)oe="syncing",K="Sync ownership is changing safely.",ee="Wait for the coordinator transition to finish.";else if(k)oe="attention",K="The shared sync runner is unavailable.",ee="Wait for automatic recovery. If the runner does not recover, restart the local server.";else if(h>0)oe="attention",K=`${h} incoming attachment ${h===1?"change is":"changes are"} waiting for content.`,ee=s&&!s.syncEnabled?"Turn on sync to resume automatic attachment hydration.":"Wait for the scheduled attachment hydration retry.",te=i?.attachmentApplyObligations?.lastError||te;else if(b>0||d>0||c>0||f)oe="attention",K="Durable local changes need reconciliation.",ee=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"}.`,ee=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.",ee="Turn on sync when you are ready to connect this workspace.",te="None"):v&&!T?(oe="attention",K=s?.lastError||"The shared sync runner reported an error.",ee="Wait for the automatic retry. If the same issue returns, press Repair."):A?(oe="attention",K="Sync is waiting for a scheduled retry.",ee="Wait for the scheduled retry."):_?(oe="attention",K="The initial cloud baseline has not completed.",ee="Keep sync enabled until the first cloud check completes."):z&&(oe="syncing",K="The shared sync runner is processing workspace changes.",ee="Wait for the current transfer to finish.");const me=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:ee,lastError:te},pendingLocalChanges:_e,incomingCloudChanges:me,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 tJ(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 rJ(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const r=Math.max(0,Number(e.coordinatorRecoveryObligations||0)),n=tJ(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 nJ({isOpen:e,theme:t,currentWorkspaceLabel:r,syncStatus:n,syncStatusMeta:s,workspaceCloudSyncEnabled:i,syncControlBusy:l,syncControlIntent:c,canManageWorkspaceSync:d,workspaceSyncSummary:m,workspaceSyncRecommendedAction:f,workspaceSyncRepairBusy:h,referenceMismatchCount:g,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:ee,onTransferCoordinatorOwnership:te}){const[me,_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=h?g>0?`Repair is reconciling cloud state, including ${g} reference mismatch${g===1?"":"es"}.`:"Repair is reconciling workspace state from the cloud.":$e&&P!=="None"?P:$e?m:"No active issue.",le=!h&&$e&&P!=="None",Q=/\banother local taskforce process owns workspace synchronization\b/i.test(P),ce=B_(P),$=i&&n!=="checking"&&!Q&&!ce&&($e||_||h||L),V=o.useMemo(()=>me==="issues"?j.filter(N=>N.tone==="error"):j,[me,j]),B=a.jsxs("div",{className:Lt.syncStatusFooter,children:[a.jsxs("button",{className:R.cancelBtn,onClick:ee,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:!$||h||L,title:h?"Repair is running now.":L?"Repair is queued and will start when the current sync finishes.":i?Q?"Repair is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":ce?"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:h?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,le?Lt.syncStatusIssueRowError:""].filter(Boolean).join(" "),children:[a.jsxs("span",{className:Lt.syncStatusLabel,children:[le?a.jsx(Od,{size:12}):null,"Current issue"]}),a.jsx("span",{className:le?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:te,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,g>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:[g," mismatch",g===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:me==="all"?Lt.syncStatusEventFilterActive:"","aria-pressed":me==="all",onClick:()=>_e("all"),children:"All"}),a.jsx("button",{type:"button",className:me==="issues"?Lt.syncStatusEventFilterActive:"","aria-pressed":me==="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 aJ({isOpen:e,theme:t,teamPlanMode:r,teamMgmtError:n,teamManagementTab:s,teamUsersLoading:i,teamUsers:l,teamActionBusyUserId:c,teamInviteFeedback:d,teamInviteEmail:m,teamInviteRole:f,teamInvitePermissionMode:h,teamInviteBusy:g,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:ee}){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(te=>a.jsxs("div",{className:Kr.memberRow,children:[a.jsx("div",{className:Kr.memberTitle,children:te.displayName||te.email}),a.jsxs("div",{className:gr.accountMenuMeta,children:[te.email," · ",te.status,te.disabled?" · deactivated":""]}),a.jsxs("div",{className:Kr.memberActions,children:[a.jsxs("select",{className:`${R.input} ${Kr.selectRole}`,value:te.role,onChange:me=>S(te.userId,me.target.value),disabled:c===te.userId,children:[a.jsx("option",{value:"owner",children:"Owner"}),a.jsx("option",{value:"admin",children:"Admin"}),a.jsx("option",{value:"member",children:"Member"})]}),te.role==="member"&&a.jsxs("select",{className:`${R.input} ${Kr.selectPermission}`,value:te.permissionMode,onChange:me=>L(te.userId,me.target.value),disabled:c===te.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===te.userId,onClick:()=>_(te.userId,!te.disabled),children:te.disabled?"Reactivate":"Deactivate"}),te.status==="invited"&&a.jsx("button",{className:R.cancelBtn,disabled:c===te.userId,onClick:()=>T(te.userId),children:"Revoke Invite"}),a.jsx("button",{className:R.cancelBtn,disabled:c===te.userId,onClick:()=>z(te.userId),children:"Remove"})]})]},te.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:te=>Y(te.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:te=>H(te.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:h,onChange:te=>M(te.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:g||!m.trim()||r!=="team",onClick:oe,children:g?"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(te=>a.jsxs("div",{className:Kr.memberRow,children:[a.jsx("div",{className:Kr.memberTitle,children:te.displayName||te.email}),a.jsxs("div",{className:gr.accountMenuMeta,children:[te.email," · ",te.role]})]},te.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(te=>a.jsxs("div",{className:Kr.memberRow,children:[a.jsx("div",{className:gr.accountMenuMeta,children:new Date(te.createdAt).toLocaleString()}),a.jsx("div",{className:Kr.memberTitle,children:te.action}),a.jsxs("div",{className:gr.accountMenuMeta,children:[te.actorUserId," (",te.actorRole,")"]})]},te.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:ee,children:"Next"})]})]}),a.jsx("div",{className:`${yr.formActions} ${Kr.modalActionsEnd}`,children:a.jsx("button",{className:R.cancelBtn,onClick:P,children:"Close"})})]})})}const sJ="_title_j8q8h_1",oJ="_message_j8q8h_8",iJ="_actions_j8q8h_14",iv={title:sJ,message:oJ,actions:iJ};function cJ({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},lJ=(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)},dJ=({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),uJ=({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)},fJ=({activeTask:e,targetTasks:t,insertAt:r})=>{const n=[...t];return n.splice(r,0,e),eb($_(n))},mJ=({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,h)=>{if(f.id===e.id){m.set(f.id,{...m.get(f.id)||{},scheduledDate:l,scheduledWeekKey:c,orderInDay:h});return}m.set(f.id,{...m.get(f.id)||{},orderInDay:h})}),m=F_({sourceColumnId:t,targetColumnId:r,sourceTasks:s,updates:m}),eb(m)},pJ=({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 g=dJ({targetTasks:n,overTaskId:i,isBelowOverItem:l});if(r==="expired")return t!=="expired"?null:{kind:"updates",updates:fJ({activeTask:e,targetTasks:n,insertAt:g})};if(r==="backlog")return{kind:"updates",updates:uJ({activeTask:e,sourceColumnId:t,targetTasks:n,sourceTasks:s,insertAt:g})};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:mJ({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:g,scheduledDate:y,scheduledWeekKey:d(y)}),selectedDate:y}:null},Ag="expired::",hJ=new Map,gJ=new Set,yJ=250,kJ=24,sg=180,bA=8,SA=600,AA=720;function vJ({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]),h=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 g=o.useMemo(()=>{if(!t)return h.rows;const y=Math.max(0,d.scrollTop-SA),k=d.scrollTop+d.height+SA;return h.rows.filter(v=>{const A=i.current.get(v.task.id)??sg;return v.top+A>=y&&v.top<=k})},[t,h.rows,l,d.height,d.scrollTop]);return{measureRow:f,rows:g,totalHeight:h.totalHeight}}function wJ({tasks:e,columns:t,groupBy:r,searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,assigneeOptions:d=[],onUpdateTask:m,onTaskClick:f,taskReferences:h,onCopyId:g,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:ee=null,recentlyChangedTaskIds:te=[],scheduleDates:me,onScheduleDaySelected:_e,persistedScrollLeft:$e,onScrollLeftChange:Ye,sortBy:ye="created",sortOrder:ge="desc",planningDropTargets:le=null,onAssignTaskToWorkstream:Q,onAssignWorkstreamToInitiative:ce,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:ae=hJ,selectedDeletedRecordIds:Te=gJ,onDeletedSelectionChange:Le}){const[Ue,st]=o.useState(null),[ft,xe]=o.useState(!1),[ke,ve]=o.useState(!1),He=o.useMemo(()=>new Set(te),[te]),Ee=o.useMemo(()=>new Map(q.map(Me=>[Me.id,Me])),[q]),ue=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&&ue.get(nt.initiativeId)||null;return{taskWorkstream:nt,taskInitiative:pt}},[ue,Ee]),de=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=>de.has(Ie(Me)),[de,Ie]),J=o.useMemo(()=>new Set(M||[]),[M]),Ze=o.useRef(null),re=o.useRef(new Map),Ne=o.useCallback((Me,nt)=>{re.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})(),...me||{}},parseToIsoWeekKey:Me}},[me]),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>yJ&&r!=="schedule"&&!ee,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){Q?.(Nt,Ct);return}if(xt==="planning-workstream"){if(Yt==="planning-initiative-target"&&Qt&&Ht){ce?.(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=pJ({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=lJ(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)=>Q?Q(Me.id,nt):m(Me.id,{workstreamId:nt}),[Q,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:g,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:A,onSetStatus:b,onArchiveTask:w,onUnarchive:P,onDelete:E,taskReferences:h,categories:oe,readOnlyMode:ee,resolveTaskHierarchy:x,groupBy:r,showStatusLabel:$,showDescription:V,showAttachments:B,showChecklistProgress:N,showLatestActivity:be,tintActivityBackground:Ae,deletedTaskRecordByTaskId:ae,selectedDeletedRecordIds:Te,onDeletedSelectionChange:Le}),[d,oe,s,ae,r,or,$r,w,g,E,Le,b,A,v,y,k,P,c,ee,x,n,Te,B,N,V,$,be,Ae,h,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:[le,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(bJ,{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:re.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 bJ=ne.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:h,commonCardProps:g,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,ee=typeof P=="number",te=o.useRef(null),me=z&&!L&&K.length>kJ,_e=o.useCallback(ge=>{H?.(t,ge)},[t,H]),$e=vJ({tasks:K,enabled:me,scrollRef:te,initialScrollTop:Y,onScrollTopChange:_e}),Ye=ge=>t==="expired"?`${Ag}${ge}`:ge,ye=ge=>{if(!_||!T)return;const le=ge.target;le&&(le.closest('[data-task-card="true"]')||le.closest(`.${R.kanbanCardWrapper}`)||T(_))};return a.jsxs("div",{ref:M,className:`${R.kanbanColumn} ${oe?R.kanbanColumnCollapsed:""} ${ee?R.kanbanColumnSticky:""} ${D?R.kanbanColumnPast:""} ${j?R.kanbanColumnSelectedDay:""} ${S?R.kanbanColumnWeekend:""}`,style:ee?{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,le=aa(n)||"var(--color-purple)";return a.jsx(ge,{size:16,style:{color:le}})})(),!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}`}),!g.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} ${me?R.kanbanDroppableScrollVirtualized:""} ${R.appScrollbar} tf-scrollbar`,ref:te,"data-kanban-column-scroll":t,children:L?K.map(ge=>a.jsx("div",{className:R.kanbanCardWrapper,children:(()=>{const{taskWorkstream:le,taskInitiative:Q}=g.resolveTaskHierarchy?.(ge)||{},ce=g.deletedTaskRecordByTaskId?.get(ge.id);return a.jsx(dp,{task:ge,taskWorkstream:le,taskInitiative:Q,onClick:h,...g,isArchived:ge.isArchived,readOnlyMode:g.readOnlyMode||null,compressed:v,isRecentlyChanged:!1,selectable:!!(ce&&g.onDeletedSelectionChange),selected:!!(ce&&g.selectedDeletedRecordIds?.has(ce.id)),onSelectionChange:ce?$=>g.onDeletedSelectionChange?.(ce.id,$):void 0})})()},ge.id)):a.jsx(mw,{id:t,items:K.map(ge=>Ye(ge.id)),strategy:pw,children:me?a.jsx("div",{className:R.kanbanVirtualCanvas,style:{height:`${$e.totalHeight}px`},children:$e.rows.map(ge=>a.jsx(SJ,{top:ge.top,sortableId:Ye(ge.task.id),task:ge.task,onClick:h,commonCardProps:g,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:h,commonCardProps:g,compressed:v,isRecentlyChanged:y.has(ge.id)},Ye(ge.id)))})})})]})}),SJ=ne.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_=ne.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:h,transition:g,isDragging:y}=hw({id:t,disabled:c,data:{type:"task-card",taskId:r.id}}),k={transform:ny.Transform.toString(h),transition:g,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 AJ(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 CJ({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 IJ(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 _J(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 TJ(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function xJ(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 RJ(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 PJ(e){const t=z_(e),r=uy(e.details),n=xJ(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"),RJ(s.transferredBytes,s.transferredBytesScope)].filter(h=>!!h),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 jJ(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 EJ(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=PJ(e);if(t)return t;const r=z_(e),n=TJ(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)}]`:"",h=typeof e.errorMessage=="string"&&e.errorMessage.trim().length>0?`: ${e.errorMessage.trim()}`:"";return`${r} ${n} ${s}${l}${d}${f}${h}`}function NJ(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 DJ(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 MJ(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 LJ(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 OJ(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 BJ({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=DJ(i),c=n[n.length-1];if(l&&c?.signature===l){c.repeatCount+=1,c.text=`${c.baseText} × ${c.repeatCount}`;continue}const d=NJ(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 WJ(e){return K_(e).length}function $J(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 FJ({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,syncStageLabel:f,referenceMismatchCount:h,syncRecentEvents:g}){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: ${h}`,`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=g.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",UJ=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 zJ(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<UJ)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 h=await m.json().catch(()=>({}))||null;return Yu.set(n,{payload:h,fetchedAt:Date.now(),promise:null}),Cr("account_profile_summary_loaded",{url:r,cacheKey:n,durationMs:Math.round(og()-c),fromCache:!1}),h})().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 HJ=512,VJ=5*1024*1024,GJ=[.9,.82,.74,.66,.58],KJ=[.9,.82,.74,.66,.58],qJ=[1,.85,.7,.55,.4],YJ=new Set(["image/png","image/jpeg","image/webp"]);function ZJ(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 JJ(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 XJ(e){const t=ZJ(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 QJ={loadImage:JJ,renderToBlob:XJ};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 eX(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function tX(e){return e==="image/webp"?GJ:e==="image/jpeg"?KJ:[void 0]}async function rX(e,t,r=QJ){const n=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):VJ,s=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):HJ;if(!YJ.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 qJ){const h=Math.min(1,c*f),g=Math.max(1,Math.round(i.width*h)),y=Math.max(1,Math.round(i.height*h));for(const k of eX(e.type))for(const v of tX(k)){const A=await r.renderToBlob({image:i,width:g,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 nX(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 aX({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 sX({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 oX({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 iX({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),[h,g]=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){g(!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(ee=>{if(ee===_)return!1;const te=ee.getBoundingClientRect();return te.width>0&&te.height>0}),K=M.reduce((ee,te)=>ee+te.getBoundingClientRect().width,0)+z+H*M.length;g(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&&h,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 cX(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 lX(e,t){const r=ic(t);return e.some(s=>ic(s)===r)?e.filter(s=>ic(s)!==r):[...e,t]}const dX="taskforce.uiState.layout.v1",uX=/^\d{4}-\d{2}-\d{2}$/,fX=/^\d{4}-\d{2}$/;function mX(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 pX(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 hX(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 gX(e){if(!ff(e))return;const t=Object.entries(e).map(([r,n])=>{const s=r.trim(),i=hX(n);return s&&i?[s,i]:null}).filter(r=>r!==null).slice(-50);return Object.fromEntries(t)}function yX(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=cX(e.planningFavorites);n&&(t.planningFavorites=n),typeof e.scheduleSelectedDate=="string"&&uX.test(e.scheduleSelectedDate)&&(t.scheduleSelectedDate=e.scheduleSelectedDate),typeof e.scheduleCalendarMonth=="string"&&fX.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=pX(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 h=yX(e.planningDrawerDetail);h!==void 0&&(t.planningDrawerDetail=h),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 g=gX(e.annotatedViewportByContextKey);return g&&(t.annotatedViewportByContextKey=g),t}function kX(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 vX(e,t){const r={},n=r;for(const[s,i]of Object.entries(t))yy(e[s],i)||(n[s]=i);return r}function wX(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`${dX}.${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 bX(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 SX(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(""),h=o.useRef(""),g=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){h.current="",g.current=0,k.current=y.current,v.current={},A.current=null,f("");return}if(h.current===r)return;h.current=r,g.current=0,k.current=y.current,v.current={},A.current=null,f("");let w=!1;const P=g.current,E=bX(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&&g.current===P){const{state:Y,localFallbackPatch:H}=kX(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(wX(c,w.target)){k.current=c,A.current=null;return}if(yy(c,w.source))return;A.current=null}const P=vX(k.current,c);if(k.current=c,Object.keys(P).length===0)return;g.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 AX({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 CX({icon:e,label:t,onClick:r,disabled:n=!1}){return a.jsxs("button",{className:R.primaryUpdateBtn,onClick:r,disabled:n,children:[e," ",t]})}function IX({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 _X({categoryFilterOptions:e,typeFilterOptions:t,priorities:r,taxonomyDisplayLabels:n,filterCategories:s,setFilterCategories:i,filterTypes:l,setFilterTypes:c,filterPriorities:d,setFilterPriorities:m,filterStatus:f,setFilterStatus:h,filterAssignees:g,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(nH,{}),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=>h(Y),variant:"value"}),a.jsx(xm,{label:jt("standalone.assigneeLabel"),options:k,selected:g,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(aH,{onClick:T,disabled:z,label:"Reset task filters and sort"}),a.jsx("div",{style:{flex:1}}),D==="deleted"&&_&&a.jsx(sH,{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 TX(e){return a.jsx(IX,{id:e.id,children:a.jsx(_X,{...e})})}const xX="_drawer_1llbr_1",RX="_drawerBody_1llbr_5",PX="_paneShell_1llbr_13",jX="_collapsedPaneShell_1llbr_22",EX="_collapsedPaneHeader_1llbr_31",NX="_collapsedPaneLabel_1llbr_43",DX="_collapsedPaneMuted_1llbr_53",MX="_treePane_1llbr_66",LX="_treePaneSplit_1llbr_76",OX="_detailPane_1llbr_80",BX="_paneHeader_1llbr_90",WX="_paneHeaderLabel_1llbr_104",$X="_paneContent_1llbr_118",FX="_sectionTitle_1llbr_132",UX="_sectionHeaderRow_1llbr_141",zX="_headerActionGroup_1llbr_148",HX="_toggleActive_1llbr_155",VX="_archiveVisibilityToggle_1llbr_161",GX="_sectionGroup_1llbr_167",KX="_navigatorControls_1llbr_173",qX="_navigatorSearchRow_1llbr_179",YX="_navigatorSearch_1llbr_179",ZX="_navigatorClearSearch_1llbr_223",JX="_navigatorOptions_1llbr_244",XX="_navigatorOptionField_1llbr_255",QX="_navigatorOptionLabel_1llbr_262",eQ="_navigatorDropdown_1llbr_268",tQ="_navigatorDropdownTrigger_1llbr_282",rQ="_navigatorEmpty_1llbr_295",nQ="_scopeSummary_1llbr_324",aQ="_treeList_1llbr_361",sQ="_treeChildren_1llbr_374",oQ="_treeWorkstreamChildren_1llbr_384",iQ="_treeTaskChildren_1llbr_388",cQ="_visuallyHidden_1llbr_392",lQ="_treeRow_1llbr_412",dQ="_detailChildCard_1llbr_413",uQ="_treeRowShell_1llbr_433",fQ="_treeRowShellDraggable_1llbr_438",mQ="_treeRowArchived_1llbr_445",pQ="_rowButton_1llbr_450",hQ="_treeRowDetailOpen_1llbr_455",gQ="_treeRowDropReady_1llbr_473",yQ="_treeRowDropActive_1llbr_477",kQ="_treeRowDropMode_1llbr_483",vQ="_treeChevron_1llbr_483",wQ="_scopeButton_1llbr_485",bQ="_favoriteButton_1llbr_486",SQ="_treeRowShellDropMode_1llbr_487",AQ="_dragHandle_1llbr_487",CQ="_treeRowDragging_1llbr_491",IQ="_rowDragGutter_1llbr_499",_Q="_rowBody_1llbr_506",TQ="_rowContent_1llbr_529",xQ="_rowTopRow_1llbr_539",RQ="_rowReferenceActions_1llbr_548",PQ="_rowActions_1llbr_563",jQ="_emptyPanel_1llbr_607",EQ="_emptyPanelTitle_1llbr_616",NQ="_emptyPanelText_1llbr_622",DQ="_loadingState_1llbr_628",MQ="_loadingRow_1llbr_634",LQ="_loadingBadge_1llbr_646",OQ="_loadingTitle_1llbr_647",BQ="_loadingMeta_1llbr_648",WQ="_failureState_1llbr_669",$Q="_failureStateCompact_1llbr_678",FQ="_failureCopy_1llbr_682",UQ="_relationshipState_1llbr_708",zQ="_relationshipStateTitle_1llbr_719",HQ="_relationshipStateText_1llbr_725",VQ="_relationshipPaneContentEmpty_1llbr_732",GQ="_relationshipStateEmpty_1llbr_742",KQ="_detailHero_1llbr_756",qQ="_detailReferenceRow_1llbr_763",YQ="_detailTitle_1llbr_770",ZQ="_detailTopRow_1llbr_777",JQ="_detailTopActions_1llbr_784",XQ="_detailDescription_1llbr_792",QQ="_detailDescriptionMarkdown_1llbr_805",eee="_detailOwnerField_1llbr_815",tee="_detailOwnerLabel_1llbr_821",ree="_detailSummaryMeta_1llbr_827",nee="_passiveGuidance_1llbr_831",aee="_editorCard_1llbr_846",see="_inlineEditorCard_1llbr_853",oee="_editorSelect_1llbr_858",iee="_ownerSelect_1llbr_862",cee="_editorField_1llbr_866",lee="_editorLabel_1llbr_872",dee="_editorActions_1llbr_878",uee="_listCard_1llbr_898",fee="_activityTimelineList_1llbr_907",mee="_activityTimelineEmpty_1llbr_913",pee="_sectionDropReady_1llbr_917",hee="_sectionDropActive_1llbr_922",gee="_sectionDropMode_1llbr_928",yee="_linkPickerRow_1llbr_932",kee="_editorRelationshipRow_1llbr_933",vee="_relationshipRecovery_1llbr_940",wee="_listItem_1llbr_956",bee="_listItemButton_1llbr_965",See="_detailCardButton_1llbr_974",Aee="_listItemText_1llbr_980",Cee="_detailChildCardSelected_1llbr_1004",Iee="_detailChildCardArchived_1llbr_1012",_ee="_detailChildReferenceRow_1llbr_1017",Tee="_detailChildCardTopRow_1llbr_1023",xee="_detailChildActions_1llbr_1039",Ree="_detailTitleRow_1llbr_1053",Pee="_editorIdentityField_1llbr_1060",ze={drawer:xX,drawerBody:RX,paneShell:PX,collapsedPaneShell:jX,collapsedPaneHeader:EX,collapsedPaneLabel:NX,collapsedPaneMuted:DX,treePane:MX,treePaneSplit:LX,detailPane:OX,paneHeader:BX,paneHeaderLabel:WX,paneContent:$X,sectionTitle:FX,sectionHeaderRow:UX,headerActionGroup:zX,toggleActive:HX,archiveVisibilityToggle:VX,sectionGroup:GX,navigatorControls:KX,navigatorSearchRow:qX,navigatorSearch:YX,navigatorClearSearch:ZX,navigatorOptions:JX,navigatorOptionField:XX,navigatorOptionLabel:QX,navigatorDropdown:eQ,navigatorDropdownTrigger:tQ,navigatorEmpty:rQ,scopeSummary:nQ,treeList:aQ,treeChildren:sQ,treeWorkstreamChildren:oQ,treeTaskChildren:iQ,visuallyHidden:cQ,treeRow:lQ,detailChildCard:dQ,treeRowShell:uQ,treeRowShellDraggable:fQ,treeRowArchived:mQ,rowButton:pQ,treeRowDetailOpen:hQ,treeRowDropReady:gQ,treeRowDropActive:yQ,treeRowDropMode:kQ,treeChevron:vQ,scopeButton:wQ,favoriteButton:bQ,treeRowShellDropMode:SQ,dragHandle:AQ,treeRowDragging:CQ,rowDragGutter:IQ,rowBody:_Q,rowContent:TQ,rowTopRow:xQ,rowReferenceActions:RQ,rowActions:PQ,emptyPanel:jQ,emptyPanelTitle:EQ,emptyPanelText:NQ,loadingState:DQ,loadingRow:MQ,loadingBadge:LQ,loadingTitle:OQ,loadingMeta:BQ,failureState:WQ,failureStateCompact:$Q,failureCopy:FQ,relationshipState:UQ,relationshipStateTitle:zQ,relationshipStateText:HQ,relationshipPaneContentEmpty:VQ,relationshipStateEmpty:GQ,detailHero:KQ,detailReferenceRow:qQ,detailTitle:YQ,detailTopRow:ZQ,detailTopActions:JQ,detailDescription:XQ,detailDescriptionMarkdown:QQ,detailOwnerField:eee,detailOwnerLabel:tee,detailSummaryMeta:ree,passiveGuidance:nee,editorCard:aee,inlineEditorCard:see,editorSelect:oee,ownerSelect:iee,editorField:cee,editorLabel:lee,editorActions:dee,listCard:uee,activityTimelineList:fee,activityTimelineEmpty:mee,sectionDropReady:pee,sectionDropActive:hee,sectionDropMode:gee,linkPickerRow:yee,editorRelationshipRow:kee,relationshipRecovery:vee,listItem:wee,listItemButton:bee,detailCardButton:See,listItemText:Aee,detailChildCardSelected:Cee,detailChildCardArchived:Iee,detailChildReferenceRow:_ee,detailChildCardTopRow:Tee,detailChildActions:xee,detailTitleRow:Ree,editorIdentityField:Pee},jee="_description_ued10_1",Eee="_visuallyHidden_ued10_6",Qg={description:jee,visuallyHidden:Eee},Nee=ne.lazy(()=>qo(()=>import("./EntityActivityTimeline-g7vtdsx1.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),Dee=ne.lazy(()=>qo(()=>import("./ContextAttachmentManager-BudIbOR9.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 Mee({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 Lee({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(ne.Suspense,{fallback:a.jsx(tT,{}),children:a.jsx(Dee,{ownerType:e,ownerId:t,ownerReferenceLabel:r,workspaceId:n,attachments:s||[],onAddAttachment:f=>i?.(f),onRemoveAttachment:f=>l?.(f),onUpdateAttachmentCaption:(f,h)=>c?.(f,h),readOnly:d,defaultExpanded:m})})}function Oee({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[h,g]=ne.useState(l);ne.useEffect(()=>{g(l)},[l,e,t.id]),ne.useEffect(()=>{if(!(m?.status!=="error"||!f))return window.addEventListener("online",f),()=>window.removeEventListener("online",f)},[m?.status,f]);const y=ne.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=ne.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=ne.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=ne.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=ne.useMemo(()=>CC({activity:t.activity,comments:t.comments}).length,[t.activity,t.comments]),w=ne.useCallback(()=>{g(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:h,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,h?a.jsx(ne.Suspense,{fallback:a.jsx(tT,{}),children:a.jsx(Nee,{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 Bee="_identity_1yyv1_1",Wee="_avatar_1yyv1_9",$ee="_picker_1yyv1_16",Fee="_identityDropdown_1yyv1_17",dg={identity:Bee,avatar:Wee,picker:$ee,identityDropdown:Fee};function rT({role:e,option:t,label:r,value:n,options:s=[],onChange:i,disabled:l=!1}){const[c,d]=ne.useState(!1),m=String(t?.label||r||"").trim(),f=t||(m?{...Ed,value:m,label:m,icon:"User",kind:"member"}:Ed),h=e==="owner"?`Owner: ${f.label}`:`Assigned to ${f.label}`,g=e==="owner"?`Change owner currently set to ${f.label}`:`Reassign task currently assigned to ${f.label}`,y=ne.useMemo(()=>sf(s),[s]),k=ne.useMemo(()=>new Map(y.map(b=>[b.value,b])),[y]),v=a.jsx("span",{className:dg.identity,title:i&&!l?g:h,"aria-label":h,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:g,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 Uee="_referenceBadgeButton_1ko1c_1",zee="_referenceBadgeStatic_1ko1c_2",Hee="_summaryLayout_1ko1c_8",Vee="_summaryContent_1ko1c_17",Gee="_title_1ko1c_29",Kee="_meta_1ko1c_43",qee="_cardFooter_1ko1c_54",Yee="_cardFooterMeta_1ko1c_63",Zee="_noTasks_1ko1c_71",Jee="_scopeCount_1ko1c_79",Xee="_contextCount_1ko1c_84",Qee="_progressTrack_1ko1c_91",ete="_progressSegment_1ko1c_100",tte="_progressSegmentCancelled_1ko1c_106",rte="_progressSegmentTodo_1ko1c_110",nte="_progressFill_1ko1c_114",Ls={referenceBadgeButton:Uee,referenceBadgeStatic:zee,summaryLayout:Hee,summaryContent:Vee,title:Gee,meta:Kee,cardFooter:qee,cardFooterMeta:Yee,noTasks:Zee,scopeCount:Jee,contextCount:Xee,progressTrack:Qee,progressSegment:ete,progressSegmentCancelled:tte,progressSegmentTodo:rte,progressFill:nte},ate=["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]=ne.useState(!1),d=s||i?R.provisionalReferenceBadge:"",m=r?.trim(),f=ne.useCallback(async h=>{h.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=ate.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 ste="_card_6phn6_1",ote="_content_6phn6_34",ite="_compact_6phn6_52",cte="_archived_6phn6_57",lte="_referenceRow_6phn6_75",dte="_topRow_6phn6_85",ute="_actions_6phn6_101",kd={card:ste,content:ote,compact:ite,archived:cte,referenceRow:lte,topRow:dte,actions:ute};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:h=!1}){const g=vw(e),y=g.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} ${h?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:g.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 fte(e){return e==="ready"||e==="priority"?e:"execution"}function mte(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 pte(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 h=t.get(f);!h||xd(h)||!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 h=(s.get(f)||0)-1;if(s.set(f,h),h===0){const g=i.get(f);g&&(l.push(g),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=pte(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 hte="_control_1n99m_1",rb={control:hte},gte="_trigger_11iyx_1",yte={trigger:gte};function kte({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:yte.trigger,title:r.description,children:[a.jsx(lw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:r.label})]})})}const vte="_list_oepxi_1",wte="_item_oepxi_6",bte="_grip_oepxi_13",Ste="_card_oepxi_40",Ym={list:vte,item:wte,grip:bte,card:Ste};function Ate(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 Cte(e){const[t,r]=ne.useState(()=>e.tasks.map(g=>g.id)),[n,s]=ne.useState(!1),i=e.tasks.map(g=>g.id).join("\0");ne.useEffect(()=>r(e.tasks.map(g=>g.id)),[i]);const l=dw(ep(uw,{activationConstraint:{distance:6}}),ep(fC,{coordinateGetter:uC})),c=ne.useMemo(()=>{const g=new Map(e.tasks.map(y=>[y.id,y]));return t.map(y=>g.get(y)).filter(y=>!!y)},[t,e.tasks]),d=!!e.onReorder,m=e.mode==="execution"&&d,f=ne.useCallback(async g=>{if(!m||n||!g.over||g.active.id===g.over.id)return;const y=t,k=y.indexOf(String(g.active.id)),v=y.indexOf(String(g.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(g=>a.jsx(ne.Fragment,{children:e.children(g)},g.id))});const h=e.mode==="execution"?void 0:"Switch to Execution order to reorder tasks";return a.jsx(fw,{sensors:l,collisionDetection:dC,onDragEnd:g=>{f(g)},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(g=>a.jsx(Ate,{task:g,disabled:!m||n,disabledReason:h||(n?"Saving execution order":void 0),children:e.children(g)},g.id))})})})}const Ite="_prompt_16ixe_1",_te="_actions_16ixe_20",BA={prompt:Ite,actions:_te};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 Tte="_title_sy4bx_1",xte="_content_sy4bx_7",Rte="_help_sy4bx_17",Pte="_actions_sy4bx_22",ug={title:Tte,content:xte,help:Rte,actions:Pte};function jte({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 Ete="_triggerAction_ssrgo_1",Nte="_triggerSelection_ssrgo_2",Dte="_iconPicker_ssrgo_9",Mte="_option_ssrgo_20",Lte="_optionTopRow_ssrgo_27",Ote="_optionTitle_ssrgo_38",Bte="_optionMeta_ssrgo_47",vd={triggerAction:Ete,triggerSelection:Nte,iconPicker:Dte,option:Mte,optionTopRow:Lte,optionTitle:Ote,optionMeta:Bte};function ty({options:e,selectedId:t="",entityLabel:r,onSelect:n,disabled:s=!1,className:i="",iconTrigger:l=!1,triggerTitle:c}){const d=ne.useMemo(()=>new Map(e.map(g=>[g.id,g])),[e]),m=ne.useMemo(()=>e.map(g=>({value:g.id,label:[g.referenceLabel,g.title,g.meta].filter(Boolean).join(" ")})),[e]),f=d.get(t),h=`Link ${r}`;return a.jsx(fi,{value:t,options:m,onChange:g=>{const y=d.get(String(g));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:h,title:l?c||h: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:h})]}),renderOptionContent:g=>{const y=d.get(String(g.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]}):g.label},placeholder:h})}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=ne.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),h=new Set(f.map(y=>y.value)),g=fT(t,e).filter(y=>!h.has(y.value));return[...f,...n?[{value:"",label:"Unassigned",icon:hp,color:cy,kind:"unassigned"}]:[],...g]},[n,r,t,e]),m=ne.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 h=m.get(String(f.value));return h?a.jsx(pf,{option:h}):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 Wte({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(),h=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)}]}),g=new Map(h.map(A=>[A.initiative.id,A])),y=fg(h.map(({initiative:A})=>A),l).map(A=>g.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,$te=Zm+mc;function Fte(e,t=0){const r=Math.max(0,e-t);return r>=mT?"wide":r>=$te?"medium":"narrow"}function Ute(e){const t=ne.useCallback(()=>typeof window>"u"?mT+e:window.innerWidth,[e]),[r,n]=ne.useState(t);return ne.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:Fte(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:h=!1,controlsId:g,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]=ne.useState(!1),[Y,H]=ne.useState(!1),[M,oe]=ne.useState(!1),{active:K}=mC(),ee=String(K?.data?.current?.type||""),te=L&&t==="workstream"&&ee==="task-card",me=L&&t==="initiative"&&ee==="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:le,setNodeRef:Q,setActivatorNodeRef:ce,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=te||me,be=t==="initiative"?"workstreams":"tasks",Ae=f&&!!y,q=f?`${h?"Collapse":"Expand"} ${be} for ${_}`:`No ${be} for ${_}`,Z=!!(n.archiveReady&&!d&&S),G=ne.useRef({}),[ae,Te]=ne.useState("favorite"),Le=ne.useMemo(()=>[...D?["favorite"]:[],...Z?["archive"]:[],"scope",...Ae?["disclosure"]:[]],[Z,Ae,D]),Ue=Le.includes(ae)?ae:Le[0];ne.useEffect(()=>{Ue&&Ue!==ae&&Te(Ue)},[ae,Ue]);const st=ne.useCallback(ue=>{Te(ue)},[]),ft=ne.useCallback(ue=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(ue.key))return;const de=ue.target.closest("[data-planning-row-action]")?.dataset.planningRowAction;if(!de||!Le.includes(de))return;ue.preventDefault();const Ie=Le.indexOf(de),Je=ue.key==="Home"?0:ue.key==="End"?Le.length-1:ue.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 ue=>{if(!(!P||M)){oe(!0);try{await P(ue)}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:Q,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:ce,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,...le,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:ue=>{ke(ue)},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:ue=>{G.current.favorite=ue},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:ue=>{G.current.archive=ue},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:ue=>{G.current.scope=ue},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:ue=>{G.current.disclosure=ue},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?h:!1,"aria-controls":Ae&&h?g:void 0,disabled:!Ae,children:h&&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:ue=>{ue.key!=="Enter"&&ue.key!==" "||(ue.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 zte({task:e,assigneeOption:t,assigneeOptions:r,showTaskCardStatusLabel:n,onOpenTaskById:s,onChangeTaskAssignee:i,onSetTaskStatus:l,onArchivePlanningTask:c}){const[d,m]=ne.useState(!1),f=Vo(e.status).value,h=!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?g=>i(e.id,g):void 0,onStatusChange:l?g=>l(e.id,g):void 0,actions:h?a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:d,onClick:async g=>{g.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 Hte({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:h,navigatorSortReady:g,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:ee,onSetTaskStatus:te,onChangePlanningOwner:me,onChangePlanningIdentity:_e=()=>{},onChangeTaskAssignee:$e,onArchivePlanningTask:Ye,onArchiveResolvedWorkstream:ye,onArchiveResolvedInitiative:ge,linkOptions:le,onAssignInitiativeToWorkstream:Q,onRetryPlanning:ce}){const[$,V]=ne.useState(""),[B,N]=ne.useState("all"),[be,Ae]=ne.useState(!1),[q,Z]=ne.useState(()=>new Set),[G,ae]=ne.useState(()=>new Set),Te=ne.useMemo(()=>new Map(l.filter(re=>!String(re.archivedAt||"").trim()).map(re=>[String(re.value||"").trim(),re])),[l]),Le=ne.useMemo(()=>{const re=String(i||"").trim(),Ne=re?fT(l,re).find(je=>je.value===re):void 0;return[{value:"all",label:"All owners",icon:"Users",color:"var(--text-secondary)",kind:"unassigned"},...re?[{...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=ne.useMemo(()=>Wte({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:s,searchQuery:$,ownerFilter:B,currentOwnerId:String(i||""),sort:h}),[i,e,h,B,$,s,t]),st=ne.useMemo(()=>new Set(k.map(ic)),[k]),ft=ne.useMemo(()=>{const re=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=re.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(Vte,{});if(r.status==="error")return a.jsx(mg,{title:"Planning unavailable",message:r.error||"Planning could not be loaded.",retrying:r.isRefreshing,onRetry:ce});const xe=e.filter(re=>!!re.isArchived).length,ke=t.filter(re=>!!re.isArchived).length,ve=e.length>0||t.length>0,He=Ue.hasCriteria||h!=="default",Ee=()=>{V(""),N("all"),g&&y("default")},ue=re=>{Z(Ne=>{const je=new Set(Ne);return je.has(re)?je.delete(re):je.add(re),je})},x=re=>{ae(Ne=>{const je=new Set(Ne);return je.has(re)?je.delete(re):je.add(re),je})},de=(re,Ne=q.has(re.id),je=`planning-tasks-${re.id}`,Re=`Tasks in ${re.title}`)=>{if(!Ne)return null;const Ce=re.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(zte,{task:he,assigneeOption:he.assignee?Te.get(he.assignee):void 0,assigneeOptions:l,showTaskCardStatusLabel:c,onOpenTaskById:ee,onSetTaskStatus:te,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:ce}):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:re=>V(re.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"||h!=="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(re=>!re),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:h,options:WA,onChange:re=>y(String(re)),disabled:!g,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(re=>re.value===h)?.label})]}),renderOptionContent:re=>re.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:re,item:Ne,parentInitiativeId:je})=>{const Re=re.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=re.type==="initiative"?Ne:null,Pe=re.type==="workstream"?Ne:null,he=Ce?Ce.allWorkstreams||Ce.workstreams:[],De=he.filter(Oe=>s||!Oe.isArchived),et=`favorite:${re.type}:${Ne.id}`,Fe=G.has(et),yt=`planning-${et.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Pm,{rowId:`favorite:${re.type}:${Ne.id}`,rowType:re.type,referenceLabel:re.type==="initiative"?ws(Ne):Go(Ne),item:Ne,ownerOption:Ne.ownerId?Te.get(Ne.ownerId):void 0,ownerOptions:l,onChangeOwner:Oe=>me(re.type,Ne.id,Oe==="unassigned"?"":Oe),onChangeIdentity:Oe=>_e(re.type,Ne.id,Oe),workstreamCount:Ce?De.length:void 0,active:re.type==="initiative"?m===Ne.id&&!f:f===Ne.id,isArchived:!!Ne.isArchived,detailOpen:Re,canExpand:re.type==="initiative"?he.length>0:!!Pe?.tasks?.length,expanded:Fe,controlsId:yt,onToggleExpand:()=>x(et),onToggleScope:()=>{re.type==="initiative"?Y(Ne.id):H(Ne.id,je)},favoriteReady:g,onOpenDetails:()=>{re.type==="initiative"?M(Ne.id):je?(M(je),K(Ne.id)):oe(Ne.id)},favorite:!0,onToggleFavorite:()=>v(re),onArchiveReady:re.type==="initiative"?ge?()=>ge(Ne.id):void 0:ye?()=>ye(Ne.id):void 0,hierarchyInteractions:!1,initiativeLinkOptions:re.type==="workstream"&&!je?le.initiatives:void 0,onLinkInitiative:re.type==="workstream"&&!je?Oe=>Q(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=>me("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:g,onToggleFavorite:()=>v({type:"workstream",id:Oe.id}),onArchiveReady:ye?()=>ye(Oe.id):void 0,hierarchyInteractions:!1}),de(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?de(Pe,Fe,yt,`Tasks in favorite ${Pe.title}`):null]},ic(re))})})]}):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:ce})}):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:re,workstreams:Ne})=>{const je=re.allWorkstreams||re.workstreams,Re=s?je:je.filter(he=>!he.isArchived),Ce=Ne,Pe=Ue.hasCriteria?Ce.length>0:j.has(re.id);return a.jsxs("li",{children:[a.jsx(Pm,{rowId:re.id,rowType:"initiative",referenceLabel:ws(re),item:re,ownerOption:re.ownerId?Te.get(re.ownerId):void 0,ownerOptions:l,onChangeOwner:he=>me("initiative",re.id,he==="unassigned"?"":he),onChangeIdentity:he=>_e("initiative",re.id,he),workstreamCount:Re.length,active:m===re.id&&!f,isArchived:!!re.isArchived,detailOpen:S?.type==="initiative"&&S.item.id===re.id,canExpand:je.length>0,expanded:Pe,controlsId:`planning-children-${re.id}`,onToggleExpand:()=>z(re.id),onToggleScope:()=>Y(re.id),onOpenDetails:()=>M(re.id),favorite:st.has(ic({type:"initiative",id:re.id})),favoriteReady:g,onToggleFavorite:()=>v({type:"initiative",id:re.id}),onArchiveReady:ge?()=>ge(re.id):void 0}),Pe&&Ce.length>0&&a.jsx("ul",{id:`planning-children-${re.id}`,className:`${ze.treeChildren} ${ze.treeWorkstreamChildren}`.trim(),"aria-label":`Workstreams in ${re.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=>me("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:()=>ue(he.id),onToggleScope:()=>H(he.id,re.id),onOpenDetails:()=>{M(re.id),K(he.id)},favorite:st.has(ic({type:"workstream",id:he.id})),favoriteReady:g,onToggleFavorite:()=>v({type:"workstream",id:he.id}),onArchiveReady:ye?()=>ye(he.id):void 0}),de(he)]},he.id))})]},re.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:ce})}):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(re=>a.jsxs("li",{children:[a.jsx(Pm,{rowId:re.id,rowType:"workstream",referenceLabel:Go(re),item:re,ownerOption:re.ownerId?Te.get(re.ownerId):void 0,ownerOptions:l,onChangeOwner:Ne=>me("workstream",re.id,Ne==="unassigned"?"":Ne),onChangeIdentity:Ne=>_e("workstream",re.id,Ne),active:f===re.id,isArchived:!!re.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===re.id||L?.kind==="detail"&&L.detail.item.id===re.id,canExpand:(re.tasks||[]).length>0,expanded:q.has(re.id),controlsId:`planning-tasks-${re.id}`,onToggleExpand:()=>ue(re.id),onToggleScope:()=>H(re.id,null),onOpenDetails:()=>oe(re.id),favorite:st.has(ic({type:"workstream",id:re.id})),favoriteReady:g,onToggleFavorite:()=>v({type:"workstream",id:re.id}),onArchiveReady:ye?()=>ye(re.id):void 0,initiativeLinkOptions:le.initiatives,onLinkInitiative:Ne=>Q(re.id,Ne.referenceLabel)}),de(re)]},re.id))})]})]})]})}function Vte(){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:h,onChangeOwner:g,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:ee="execution",onTaskArrangeModeChange:te=()=>{},onReorderWorkstreamTasks:me,onSetTaskStatus:_e,hydrationState:$e,onRetryHydration:Ye}){const ye=ne.useId(),[ge,le]=ne.useState(!1),[Q,ce]=ne.useState(null),[$,V]=ne.useState(null),[B,N]=ne.useState(!1),[be,Ae]=ne.useState(null),[q,Z]=ne.useState(!1),[G,ae]=ne.useState(!1),[Te,Le]=ne.useState(!1),[Ue,st]=ne.useState(null),[ft,xe]=ne.useState(String(e.item.ownerId||"")),[ke,ve]=ne.useState(!1),{active:He}=mC(),Ee=String(He?.data?.current?.type||""),ue=e.type==="workstream"&&Ee==="task-card",x=e.type==="initiative"&&Ee==="planning-workstream",de=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:Ie,isOver:Je}=gw({id:`${de}:detail:${e.item.id}`,data:e.type==="initiative"?{type:de,initiativeId:e.item.id}:{type:de,workstreamId:e.item.id}}),J=e.type==="initiative"?"Workstreams":"Tasks",Ze=ne.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]),re=ne.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),Ne=ne.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?re:re.filter(pe=>!pe.isArchived),ee),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()}`;ne.useEffect(()=>{le(!1),ce(null),V(null),N(!1),ae(!1)},[e.item.id,e.type]),ne.useEffect(()=>{xe(String(e.item.ownerId||""))},[e.item.id,e.item.ownerId,e.type]);const Fe=ne.useCallback(async pe=>{if(!g||ke||pe===ft)return;const Ke=ft;xe(pe),ve(!0);try{await g(pe)}catch{xe(Ke)}finally{ve(!1)}},[ke,g,ft]),yt=ne.useCallback(async()=>{if(!(!f||Te)){Le(!0);try{await f(e.item.id)&&ae(!1)}finally{Le(!1)}}},[Te,e.item.id,f]),Oe=e.type==="initiative"?!!_:!!L,mt=ne.useCallback(async pe=>{if(ge)return;const Ke=e.type==="initiative"?_:L;if(Ke){le(!0);try{await Ke(e.item.id,pe.referenceLabel)}finally{le(!1)}}},[e.item.id,e.type,ge,L,_]),vt=ne.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=ne.useMemo(()=>new Set(e.type==="initiative"?Ze.map(pe=>pe.id):re.map(pe=>pe.id)),[Ze,e.type,re]),It=ne.useMemo(()=>(e.type==="initiative"?oe.workstreams:oe.tasks).filter(pe=>!tt.has(pe.id)),[e.type,oe.tasks,oe.workstreams,tt]),Xe=ne.useCallback(async()=>{if(!(!Q||B)){N(!0);try{if(Q.entityType==="workstream"){if(!S)return;const pe=e.type==="initiative"?he:Ve;if(await S?.(Q.id,null)===!1)return;V({entityType:Q.entityType,id:Q.id,message:`${Q.referenceLabel} removed from its initiative.`,onUndo:async()=>{if(!pe)return;await S?.(Q.id,pe)!==!1&&V(null)}})}else{if(!j||await j(Q.id,null)===!1)return;V({entityType:Q.entityType,id:Q.id,message:`${Q.referenceLabel} removed from this workstream.`,onUndo:async()=>{await j(Q.id,e.item.id)!==!1&&V(null)}})}ce(null)}finally{N(!1)}}},[e.item.id,e.type,he,B,S,j,Ve,Q]),bt=ne.useCallback(async()=>{if(!(!$||B)){N(!0);try{await $.onUndo()}finally{N(!1)}}},[B,$]),at=ne.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:()=>{ce({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"&&ae(!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:h,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:()=>ae(!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(Mee,{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:!g||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} ${ue||x?ze.sectionDropReady:""} ${Je?ze.sectionDropActive:""} ${ue||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(kte,{value:ee,onChange:te}):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(),ce({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(Cte,{tasks:Re,mode:ee,onReorder:me?pe=>me(e.item.id,mte(tw(re,"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(),ce({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(Lee,{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(Oee,{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(jte,{item:Q,busy:B,theme:l,onCancel:()=>ce(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:h,onChangeDraftOwner:g,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=ne.useId(),L=ne.useId(),_=ne.useId(),T=ne.useRef(null),[z,Y]=ne.useState(null),H=w?e.mode==="create"?`Creating ${j}...`:`Saving ${j}...`:e.mode==="create"?`Create ${j}`:`Save ${j}`,M=ne.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=ne.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=>h(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:g,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 Gte({open:e,leftOffset:t=0,returnFocusRef:r,onWidthChange:n,initiatives:s,standaloneWorkstreams:i,planningLoadState:l,onRetryPlanning:c,taskScope:d,activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:h,navigatorSortReady:g,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:ee,currentWorkspaceId:te,currentOwnerId:me,theme:_e,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye=!1,draftInitiativeSummary:ge,draftTitle:le,draftDescription:Q,draftOwner:ce,draftInitiativeId:$,draftIcon:V=null,draftColor:B=null,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onChangeDraftIcon:Z=()=>{},onChangeDraftColor:G=()=>{},onCollapseTreePane:ae,onExpandTreePane:Te,onCollapsePrimaryPane:Le,onExpandPrimaryPane:Ue,onCollapseSecondaryPane:st,onExpandSecondaryPane:ft,onBackFromSecondary:xe,treeCollapsed:ke,primaryCollapsed:ve,secondaryCollapsed:He,onCancelEditor:Ee,onCancelSecondaryEditor:ue,onSubmitEditor:x,isSubmittingEditor:de,isEditorSubmitDisabled:Ie=!1,onCreateInitiative:Je,onCreateWorkstream:J,onToggleInitiative:Ze,onSelectInitiative:re,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]=ne.useState(!1),[Yt,Nt]=ne.useState(!1),[Qt,Ct]=ne.useState(!1),[Ht,Ft]=ne.useState({initiative:!1,workstream:!1}),ir=ne.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}=Ute(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=ne.useCallback(Ir=>{Ft(Wr=>({...Wr,[Ir]:!Wr[Ir]}))},[]),hr=ne.useCallback(Ir=>{const Wr=String(Ir.initiativeId||"").trim();return Wr&&s.find(Yr=>Yr.id===Wr)||null},[s]),Jt=ne.useRef(null),Xt=ne.useRef(null),bn=ne.useRef(null),$t=ne.useRef(null),Ut=ne.useRef(null),Ur=ne.useRef(e),Fn=ne.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";ne.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=ne.useCallback(()=>{if(z){Ee();return}T?.type==="initiative"&&je(""),T?.type==="workstream"&&Re("")},[T,z,Ee,je,Re]),yn=ne.useCallback(Ir=>({flex:`0 0 ${Ir}px`,width:`${Ir}px`,minWidth:`${Ir}px`,maxWidth:`${Ir}px`}),[]);ne.useEffect(()=>{n?.(jr)},[jr,n]),ne.useEffect(()=>{lt&&$t.current?.querySelector("[data-planning-pane-heading]")?.focus()},[lt]),ne.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:ae,"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(Hte,{initiatives:s,standaloneWorkstreams:i,planningLoadState:l,taskScope:d,showArchivedPlanning:Qt,currentOwnerId:me,assigneeOptions:$e,showTaskCardStatusLabel:ye,taskArrangeMode:k,activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:h,navigatorSortReady:g,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:re,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:le,draftDescription:Q,draftOwner:ce,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:de,isSubmitDisabled:Ie}):T?a.jsx(UA,{detail:T,showArchivedChildren:Ht[T.type],inlineEditor:Bt?{editor:Bt,draftTitle:le,draftDescription:Q,draftOwner:ce,draftInitiativeId:$,draftInitiativeSummary:ge,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onCancel:Ee,onSubmit:x,isSubmitting:de,isSubmitDisabled:Ie}:null,selectedChildWorkstreamId:H?.kind==="detail"?H.detail.item.id:null,currentWorkspaceId:te,currentActorId:me,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&&ue||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:le,draftDescription:Q,draftOwner:ce,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:de,isSubmitDisabled:Ie}):H?a.jsx(UA,{detail:H.detail,showArchivedChildren:Ht.workstream,inlineEditor:wr?{editor:wr,draftTitle:le,draftDescription:Q,draftOwner:ce,draftInitiativeId:$,draftInitiativeSummary:ge,onChangeDraftTitle:N,onChangeDraftDescription:be,onChangeDraftOwner:Ae,onChangeDraftInitiativeId:q,onCancel:ue||xe,onSubmit:x,isSubmitting:de,isSubmitDisabled:Ie}:null,currentWorkspaceId:te,currentActorId:me,theme:_e,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:A,hydrationState:oe,onRetryHydration:ee,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 Kte(e,t){return hT(e,t)||(t.initiativeId||null)!==(e.initiativeId||null)}function qte(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"},Yte=["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"];function Zte(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 Yte.map(n=>r[n])}function Jte(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 Xte="_weekLabel_vet2o_1",Qte="_sectionTitle_vet2o_6",ere="_calendarHeader_vet2o_11",tre="_monthLabel_vet2o_18",rre="_weekdayGrid_vet2o_23",nre="_weekdayLabel_vet2o_30",are="_calendarGrid_vet2o_36",sre="_calendarDay_vet2o_42",ore="_calendarDayDot_vet2o_55",ire="_jumpRow_vet2o_67",cre="_displaySection_vet2o_73",lre="_toggleLabel_vet2o_79",dre="_expiredSummary_vet2o_87",ure="_actionButton_vet2o_95",is={weekLabel:Xte,sectionTitle:Qte,calendarHeader:ere,monthLabel:tre,weekdayGrid:rre,weekdayLabel:nre,calendarGrid:are,calendarDay:sre,calendarDayDot:ore,jumpRow:ire,displaySection:cre,toggleLabel:lre,expiredSummary:dre,actionButton:ure},VA=["mon","tue","wed","thu","fri","sat","sun"],fre={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 mre(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 pre(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 hre({open:e,onClose:t,scheduleSelectedDate:r,setScheduleSelectedDate:n,scheduleCalendarMonth:s,setScheduleCalendarMonth:i,scheduleShowWeekends:l,setScheduleShowWeekends:c,scheduleShowBacklog:d,setScheduleShowBacklog:m,scheduleOnlyExpired:f,setScheduleOnlyExpired:h,expiredScheduledCount:g,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 _=ne.useMemo(()=>{const[M,oe]=s.split("-"),K=Number(M),ee=Number(oe);if(!Number.isInteger(K)||!Number.isInteger(ee)||ee<1||ee>12){const te=Fm(r)||new Date;return new Date(te.getFullYear(),te.getMonth(),1)}return new Date(K,ee-1,1)},[s,r]),T=ne.useMemo(()=>Yg(_,{month:"long",year:"numeric"},E),[_,E]),z=ne.useMemo(()=>{const M=aw(_,P);return Array.from({length:42},(oe,K)=>gT(M,K))},[_,P]),Y=ne.useMemo(()=>{const M=new Map;for(const oe of j){const K=oe.scheduledDate||"";if(!K)continue;const te=!(oe.status==="done"||oe.status==="cancelled")&&K<D,me=M.get(K);me?(me.count+=1,te&&(me.hasExpired=!0)):M.set(K,{count:1,hasExpired:te})}return M},[j,D]),H=ne.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(),ee=aw(M,P),te=Rd(ee)===Rd(S),me=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":me?"1px solid #2563eb":_e?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":me?"rgba(59,130,246,0.22)":_e?"rgba(245,158,11,0.16)":te?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":K?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":me||_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=>h(M.target.checked)}),"Only expired/overdue"]})]}),g>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:[g," 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 gre=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],yre=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function yT(e,t){return e&&(t==="owner"||t==="admin")}function kre(e,t,r){return yT(e,t)&&r==="team"}function vre({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=bre(m.current,f.current)},[n]);const h=o.useCallback(async()=>{const g=await fetch(`/api/taskforce/sync/events?workspace_id=${encodeURIComponent(t)}&limit=15`,{method:"GET",credentials:"include"});if(!g.ok)throw new Error(`Failed to load sync events (${g.status})`);const y=await g.json().catch(()=>({}));return Array.isArray(y?.events)?y.events.filter(k=>k&&typeof k=="object"):[]},[t]);return o.useEffect(()=>{if(!e)return;let g=!1;const y=n.length===0;return y&&l(!0),h().then(k=>{g||(f.current=wre(m.current),s(v=>{const A=v.length===0?k:jJ(v,k,15);return EJ(v,A)?v:A}),d(null))}).catch(k=>{if(g)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(()=>{g||y&&l(!1)}),()=>{g=!0}},[e,h,...r]),{syncRecentEvents:n,syncRecentEventsLoading:i,syncRecentEventsError:c,syncEventsListRef:m,loadRecentSyncEvents:h}}function wre(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function bre(e,t){if(!t||!e)return null;const r=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,r),null}function Sre({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,workspaceSyncPhase:f,referenceMismatchCount:h,syncRecentEvents:g,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=g.length>0?g:await y(),Y=FJ({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:h,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,h,m,g,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 Are({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,h]=o.useState(null),[g,y]=o.useState(null),k=o.useRef(null),A=(g===null?null:g?"enabling":"disabling")||r;o.useEffect(()=>{g!==null&&g===t&&y(null)},[g,t]);const b=o.useCallback(async S=>{if(!e)return;for(h(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),h(_.error||(S?"Failed to enable sync.":"Failed to disable sync.")))}catch(_){y(null),h(_ 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=ne.lazy(()=>qo(()=>import("./TaskSettings-DAlH4YIP.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),Cre=ne.lazy(()=>qo(()=>import("./AnnotatedAttachmentWorkspace-C33iH_r_.js"),__vite__mapDeps([12,1,4,13,2,14,3,5,15])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),Ire=ne.lazy(()=>qo(()=>import("./DocumentWorkspace-A8dFQyId.js"),__vite__mapDeps([16,1,13,2,14,3,4,5,17])).then(e=>({default:e.DocumentWorkspaceShell}))),KA=ne.lazy(()=>qo(()=>import("./TaskforceAgentsModule-DmeCf6pJ.js"),__vite__mapDeps([18,1,19,2,3,4,5,20])).then(e=>({default:e.TaskforceAgentsModule}))),_re=ne.lazy(()=>qo(()=>import("./WorkflowManagerModule-p08eDOaa.js"),__vite__mapDeps([21,1,2,3,4,5,22])).then(e=>({default:e.WorkflowManagerModule}))),Tre=ne.lazy(()=>qo(()=>import("./AiProfilesModule-0oR70eFG.js"),__vite__mapDeps([23,1,19,2,3,4,5])).then(e=>({default:e.AiProfilesModule}))),xre=ne.lazy(()=>qo(()=>import("./PlanningModule-D-DeQs4F.js"),__vite__mapDeps([24,1,2,3,4,5,25])).then(e=>({default:e.PlanningModule}))),Rre=ne.lazy(()=>qo(()=>import("./PlansPage-BWmfGi0Z.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 Pre="image/png,image/jpeg,image/webp,image/gif",jre=5*1024*1024,fv=56,Ere=e=>e;function Nre(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 Dre(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:h,groupBy:g,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:ee,setTitleDraft:te,description:me,setDescription:_e,setDescriptionDraft:$e,checklistItems:Ye,setChecklistItems:ye,category:ge,setCategory:le,type:Q,setType:ce,priority:$,setPriority:V,complexity:B,setComplexity:N,status:be,setStatus:Ae,assignee:q,setAssignee:Z,scheduledDate:G,setScheduledDate:ae,dueDate:Te,setDueDate:Le,workstreamInput:Ue,setWorkstreamInput:st,manualComplexityEnabled:ft,checklistDropdownEnabled:xe,showTaskCardStatusLabel:ke,showTaskCardDescription:ve,showTaskCardAttachments:He,showTaskCardChecklistProgress:Ee,showTaskCardLatestActivity:ue,tintTaskCardActivityBackground:x,formTaxonomies:de,setFormTaxonomies:Ie,comments:Je,newCommentText:J,setNewCommentText:Ze,attachments:re,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:fe,workspaceLastPushAt:ot,workspaceLastErrorAt:_t,userGlobalSyncError:Pt,workspaceLastErrorMessage:nr,resetWorkspaceSyncCursorAndPull:fr,getWorkspaceSyncDiagnostics:ln,currentWorkspaceId:Tt,currentWorkspaceRole:Rr,availableWorkspaces:Qr,switchWorkspace:on,updateCurrentUserProfile:Jn,resolveCloudAuthUrl:Zr=Ere,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}=CJ({authUserId:Bn,workspaceId:Tt,taskScope:Ft}),Sp=o.useRef(new Map),Ud=o.useRef(new Map),[gf,Ap]=o.useState(()=>gre.map(p=>p.value)),[yf,No]=o.useState(()=>yre.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:re}},[H,re]);const Yd=o.useCallback(p=>{const I=H||null,W=Ol.current,Se=W.taskId===I?W.attachments:re,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(()=>{})},[re,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(()=>mX({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(()=>Zte({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(fte(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;A8({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}=SX({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(()=>{g==="schedule"&&$a(!0)},[g]);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:h,types:tt,priorities:It,assigneeOptions:e.assigneeOptions,taxonomies:Ve},Se=h.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})},[h,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=h.filter(W=>!W.disabled).map(W=>({value:W.value,label:W.label})),I=h.filter(W=>W.disabled&&Kl.some(Se=>Se.category===W.value)).map(W=>({value:W.value,label:`${W.label} (Legacy)`}));return[...p,...I]},[h,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=>IJ(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=nX(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=qte({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=aX({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=sX({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}=_J(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(()=>g==="schedule"?Nf:Rc,[g,Rc,Nf]),$f=o.useMemo(()=>g!=="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}),[g,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=>{g==="schedule"&&Ja(p)},[g]),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(()=>g!=="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}),[g,$o,Jr]),jy=o.useMemo(()=>g!=="schedule"?0:$o.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.scheduledDate&&p.scheduledDate<Jr).length,[g,$o,Jr]),Op=o.useMemo(()=>g!=="schedule"?0:$o.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.dueDate&&p.dueDate<Jr).length,[g,$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(()=>g!=="schedule"?[]:$o.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.scheduledDate&&p.scheduledDate<Jr),[g,$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 oX({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=AJ(p,I,{categories:h});W.category&&le(W.category),W.type&&ce(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&&ae(W.scheduledDate),f("add")},[_,h,le,ce,V,N,Ae,Z,ae,f]);ne.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}=Are({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=kre(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(()=>tZ({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(()=>Nre(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 rX(p,{maxBytes:jre});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 zJ(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!==h.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},[h.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(()=>Jte(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(fe),[Li,fe]),o.useMemo(()=>Li(ot),[Li,ot]);const vh=nh||nr||Pt||"None",si=ln(),dd=fn?.snapshot?.permits.recoveryObligations||0,ck=o.useMemo(()=>rJ({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(()=>eJ(fn),[fn]),ho=Da?.header||ck,ud=Da?Da.pendingLocalChanges:Ln,lk=Da?Da.lastPullAt:fe,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,se]=o.useState(!1),ie=fn?.phase!=="ready"||!fn.snapshot||fn.snapshot.state.transitionState!=="idle"||fn.snapshot.permits.active>0||dd>0,X=o.useCallback(async()=>{if(!(!ju||C)){se(!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{se(!1)}}},[ju,C,dt,Rn]),Be=ho.lastError,[qe,rt]=o.useState(ho.status),Kt=o.useMemo(()=>MJ(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||OJ(Kt),[Da,Kt]),{syncRecentEvents:Tr,syncRecentEventsLoading:Or,syncRecentEventsError:Br,syncEventsListRef:Kn,loadRecentSyncEvents:Ns}=vre({isOpen:rh,workspaceId:Tt,refreshKeys:[ot,fe,_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(()=>BJ({syncRecentEvents:Tr,syncRecentEventsError:Br,syncRecentEventsLoading:Or}),[Tr,Br,Or]),pm=o.useMemo(()=>WJ(Tr),[Tr]),Ch=o.useMemo(()=>$J(Tr),[Tr]),Vc=o.useMemo(()=>V_(qe),[qe]),Sl=o.useMemo(()=>LJ(qe,mo),[mo,qe]),{workspaceSyncRepairBusy:fk,workspaceSyncRepairQueued:vT,workspaceSyncCopied:wT,handleCopySyncDetails:bT,handleQueueOrRunRepairSync:ST}=Sre({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=mre(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:pre(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:`${fre[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(g){case"category":return h;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 h}},[g,h,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||Kte(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(TX,{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(AX,{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:g,options:Ib,onChange:p=>y(p)}),"divider-secondary":a.jsx(LA,{}),"task-display-actions":a.jsx(lg,{actions:Tb})}),[g,Ib,Ih,zc,e,$r,y,Dr,Lr,Zt,Cb,Tb,Hc.moduleId]),qT=o.useMemo(()=>({"add-task":a.jsx(CX,{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(Gte,{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=>lX(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(ne.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(iX,{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(Rre,{...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(xre,{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(Ire,{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(Cre,{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(_re,{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(Tre,{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:g==="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(wJ,{tasks:Lp,allTasks:_y,columns:ib,groupBy:g,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:ue,tintTaskCardActivityBackground:x,onScheduleDaySelected:xy,persistedScrollLeft:g==="schedule"?Us:void 0,onScrollLeftChange:Ry,emptyColumnMode:A,categories:h,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},`${g}-${ib.map(p=>String(p.value)).join("|")}-${Gc.mon}`),g==="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})}),g==="schedule"&&a.jsx(hre,{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:me,checklistItems:Ye,category:ge,type:Q,priority:$,complexity:B,manualComplexityEnabled:ft,assignee:q,scheduledDate:G,dueDate:Te,formTaxonomies:de,onTaxonomyChange:(p,I)=>Ie(W=>({...W,[p]:I})),taxonomies:Ve,comments:Je,newCommentText:J,contextFiles:re,currentWorkspaceId:Tt,descriptionImageDraftId:Pe,currentActorId:Ur,apiBaseUrl:od,runtimeMode:hr,showImageReviews:!0,descriptionFocused:De,showMarkdownHelp:Fe,checklistEnabled:xe,categories:h,types:tt,priorities:It,taxonomyDisplayLabels:Xe,assigneeOptions:Ht,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:bt,onTitleChange:ee,onTitleDraftChange:te,onDescriptionChange:_e,onDescriptionDraftChange:$e,onChecklistItemsChange:ye,onCategoryChange:le,onTypeChange:ce,onPriorityChange:V,onComplexityChange:N,onAssigneeChange:Z,onScheduledDateChange:ae,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(nZ,{prompt:no,theme:ur,onClose:Fs,onConfirm:zi}),a.jsx(aZ,{isOpen:kl,theme:ur,onClose:Qy,onConfirm:Xi}),a.jsx(rZ,{isOpen:Vf,theme:ur,onClose:()=>dl(!1),supportMailtoHref:oh,onOpenSettings:()=>{dl(!1),f("settings"),Xr("general")}}),a.jsx(EY,{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(eZ,{isOpen:du,theme:ur,title:"Edit Profile Photo",currentImageUrl:Su,fallbackInitial:sd,accept:Pre,busy:Qp,hasPendingImage:!!ns,canRemove:!!Su,error:th,notice:nm,onClose:()=>Zl(!1),onApplyImage:om,onRemoveImage:Wc,onDiscardPendingImage:id}),a.jsx(aJ,{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(Hq,{isOpen:Ey,theme:ur,onClose:()=>qf(!1),onConfirm:()=>ld({intent:"create-workspace"})}),a.jsx(nJ,{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:ie,onClose:wu,onToggleWorkspaceSync:p=>{Xy(p)},onRepairSync:ST,onCopyReport:()=>{bT()},onTransferCoordinatorOwnership:()=>{X()}}),a.jsx(cJ,{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 Mre(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)),h=!!(m&&t?.globalSetupState==="missing"),g=!!(f&&t?.workspaceSetupState==="missing"),y=!!(m&&t?.globalSetupState==="unreadable"),k=!!(f&&t?.workspaceSetupState==="unreadable"),v=y||k;return{setupGateActive:d,needsGlobalSetup:h,needsWorkspaceSetup:g,hasSetupReadError:v,phase:v?"setup-read-error":h?"needs-global-setup":g?"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,h=String(t||m.get(Wi.task)||"").trim()||void 0,g=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,ee]=o.useState(""),[te,me]=o.useState(!1),[_e,$e]=o.useState(null),[Ye,ye]=o.useState(null),[ge,le]=o.useState(null),[Q,ce]=o.useState(!1),[$,V]=o.useState(""),[B,N]=o.useState(""),[be,Ae]=o.useState(null),[q,Z]=o.useState(null),[G,ae]=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),[ue,x]=o.useState(!1),[de,Ie]=o.useState(0),[Je,J]=o.useState(0),[Ze,re]=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=zD({config:e,initialTaskId:h,initialActivityEntryId:g,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 fe=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"&&gt&&!Fr&&!A&&!b&&!w,eo=lr==="cloud"&&gt&&xr&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1&&!A&&!b&&!w,to=lr==="cloud"&&gt&&(!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(()=>Mre({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"&&Q&&!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&&ee(ya),Pa==="reset"&&ya&&V(ya),Pa==="invite"&&ya&&N(ya))},[Tt,Pa,ya]),o.useEffect(()=>{M!=="verify"&&(Tt&&Pa==="verify"||(me(!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(!Q||!xr)return;if(!gt){ce(!1),le(null);return}if(it&&ir?.canAccessApp===!0){S(""),_(""),z(""),H(""),le(null),ce(!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,Q,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(""),le(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";ae(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),ae("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(!(de>Date.now()||Je>Date.now()))return;const At=window.setInterval(()=>re(Date.now()),1e3);return()=>window.clearInterval(At)},[de,Je]);const Nr=Math.max(0,Math.ceil((de-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&&ue)return;const we=`${d.pathname}${d.search}${d.hash||""}`,At=Rr?ut:we,qt=lr==="cloud"&&gt&&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&&gt&&!Sr&&(!!ge||yn.workspace.pending||M==="register"||M==="verify"||!yn.config.loaded||to))return;Tt&&gt&&!Sr&&en(ut,{replace:!0})}if(!(Tt&&!gt||ge&&gt||Tt&&gt&&(M==="register"||M==="verify"||M==="invite"&&B.trim().length>0))&&!Q&&!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,Q,to,oa,er,ls,ea,Er,Ta,Ka,sa,yn,lr,ue,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(hK,{...Lr,initialActivityEntryId:g,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:fe,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:fe,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?(me(!!we.workspaceSetupRequired),$e(qt?String(we.commercialState||"").trim()||(we.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),ye(At),we.verificationToken&&ee(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.")):(ce(qt),le({path:At,workspaceSetupRequired:!!we.workspaceSetupRequired,commercialOnboardingGate:qt}))}else if(M==="verify"){await An();const At=_e==="pending_plan_selection"||_e==="checkout_pending";ce(At),le({path:Ye||ut,workspaceSetupRequired:te,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"),ae("existing_user_ready"),z(""),H(""),xe("Signed in. Review the invite details to continue."),ve(null),Ee(null),x(!1);return}At&&S(be||""),ae("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&&ee(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&&ee(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:fe,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=>ee(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:ue||Ya,onClick:async()=>{x(!0),xe(null);const we=await Sn(j);we.success?(Ie(Date.now()+3e4),jn("verify"),we.verificationToken&&ee(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:ue||M==="forgot"&&ia,"data-testid":"auth-submit-button",children:ue?"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:ue,onClick:()=>rn("google",ut),"aria-label":"Continue with Google",children:"Google"}),Mn.includes("github")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:ue,onClick:()=>rn("github",ut),"aria-label":"Continue with GitHub",children:"GitHub"}),Mn.includes("apple")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:ue,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:ue,onClick:()=>rn("google","/",B),"aria-label":"Join with Google",children:"Google"}),Ue.includes("github")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:ue,onClick:()=>rn("github","/",B),"aria-label":"Join with GitHub",children:"GitHub"}),Ue.includes("apple")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:ue,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:ue,"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:ue||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:ue||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:ue,"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:ue||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&&ee(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:ue,"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:ue,"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:ue||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:fe,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:fe,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:fe,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:ne.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&&gt&&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&&gt&&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&&gt),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(Dre,{...Lr,initialActivityEntryId:g,onHeaderMouseDown:s,isDragging:i,onClose:l})}function Lre(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 Ore(){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 Bre(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 Wre(){const e=Ore(),t=Bre(e);return a.jsx(mx,{children:a.jsx(Lre,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}o0.createRoot(document.getElementById("root")).render(a.jsx(ne.StrictMode,{children:a.jsx(Wre,{})}));export{PN as $,nne as A,jv as B,Ev as C,rf as D,TI as E,Qre as F,xI as G,Zs as H,df as I,Lw as J,qP as K,PI as L,Ko as M,GP as N,ene as O,rne as P,jI as Q,Jw as R,Ow as S,fi as T,Pv as U,tne as V,Jq as W,eZ as X,g9 as Y,b_ as Z,eG as _,ay as a,Km as a$,_I as a0,rX as a1,QV as a2,ine as a3,cne as a4,lne as a5,dne as a6,une as a7,BC as a8,np as a9,Ss as aA,uT as aB,mte as aC,jte as aD,hT as aE,vp as aF,rb as aG,Dd as aH,dT as aI,J_ as aJ,rw as aK,Mee as aL,Lee as aM,Oee as aN,AY as aO,Cw as aP,Yv as aQ,xA as aR,RA as aS,zJ as aT,iX as aU,CC as aV,Yg as aW,qre as aX,Kre as aY,Pg as aZ,qv as a_,OC as aa,pf as ab,cJ as ac,kI as ad,yI as ae,Xre as af,h9 as ag,X1 as ah,Yre as ai,one as aj,Q8 as ak,Zre as al,Jre as am,fT as an,cy as ao,hp as ap,Wte as aq,tw as ar,nb as as,WA as at,ty as au,Sg as av,Go as aw,ws as ax,kte as ay,Cte as az,bo as b,y_ as b0,ip as b1,p_ as b2,m_ as b3,b8 as b4,S8 as b5,Z9 as b6,XV as b7,HP as b8,dR as c,dp as d,Sx as e,YR as f,sne as g,Cr as h,nf as i,R8 as j,gre as k,YI as l,yre as m,Jz as n,Sd as o,iN as p,ane as q,aa as r,Wm as s,R as t,P8 as u,FG as v,py as w,qR as x,Rv as y,VN as z};