@taskforcehq/taskforce 0.3.308 → 0.3.311

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 (54) hide show
  1. package/README.md +59 -135
  2. package/dist/components/context/ContextAttachmentManager.js +4 -3
  3. package/dist/components/ui/DisclosureSectionHeader.d.ts +12 -0
  4. package/dist/components/ui/DisclosureSectionHeader.js +8 -0
  5. package/dist/components/views/PlanComparisonPage.js +1 -1
  6. package/dist/components/views/PlanComparisonPage.test.js +1 -0
  7. package/dist/components/views/StandaloneLayout.js +21 -4
  8. package/dist/components/views/panels/PlanningDrawer.js +2 -1
  9. package/dist/components/views/panels/PlanningDrawer.test.js +2 -2
  10. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +2 -1
  11. package/dist/components/views/standalone/modals/AccountHubModal.js +3 -2
  12. package/dist/components/views/standalone/modals/AccountHubModal.test.js +18 -12
  13. package/dist/components/views/standalone/modals/HelpModal.d.ts +3 -1
  14. package/dist/components/views/standalone/modals/HelpModal.js +4 -2
  15. package/dist/components/views/standalone/modals/HelpModal.test.d.ts +1 -0
  16. package/dist/components/views/standalone/modals/HelpModal.test.js +23 -0
  17. package/dist/core/PlanEntitlementService.d.ts +2 -0
  18. package/dist/core/PlanEntitlementService.js +57 -4
  19. package/dist/core/PlanVersionPolicy.test.js +32 -0
  20. package/dist/localization/locales/en-US.js +1 -1
  21. package/dist/localization/locales/es-419.js +1 -1
  22. package/dist/localization/locales/pt-BR.js +1 -1
  23. package/dist/mcp/runtime.js +49 -14
  24. package/dist/mcp/runtime.test.js +91 -0
  25. package/dist/server/routes/billing.js +0 -1
  26. package/dist/server/routes/billing.test.js +60 -0
  27. package/dist/ui/assets/AgentsModule-D8u9P5dZ.js +1 -0
  28. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CCckzWYZ.js → AnnotatedAttachmentWorkspace-CsUauFA2.js} +1 -1
  29. package/dist/ui/assets/ContextAttachmentManager-DbQvDHFz.js +3 -0
  30. package/dist/ui/assets/{DocumentWorkspace-BVaWPA25.js → DocumentWorkspace-BmTkN1A8.js} +1 -1
  31. package/dist/ui/assets/{EntityActivityTimeline-DSj0ThaK.js → EntityActivityTimeline-BXHTM-Nh.js} +1 -1
  32. package/dist/ui/assets/{InitiativesModule-AxMkWtxH.js → InitiativesModule-D33RyXx0.js} +1 -1
  33. package/dist/ui/assets/PlansPage-D0RXlT9_.js +1 -0
  34. package/dist/ui/assets/PlansPage-DeAzWYTb.css +1 -0
  35. package/dist/ui/assets/{TaskContextUpload-Dw4rTF4i.js → TaskContextUpload-Vsg67lpR.js} +1 -1
  36. package/dist/ui/assets/{TaskSettings-f2ga42_V.js → TaskSettings-DshLw7_d.js} +1 -1
  37. package/dist/ui/assets/{WorkflowsModule-E4UL3mov.js → WorkflowsModule-CLM-1BnF.js} +1 -1
  38. package/dist/ui/assets/documentReferences-BPWp6ce0.js +1 -0
  39. package/dist/ui/assets/{index-BvAbqx5Q.css → index-DOR9PRqt.css} +1 -1
  40. package/dist/ui/assets/index-zvbo2Jse.js +5 -0
  41. package/dist/ui/assets/{vendor-icons-B32hGuF2.js → vendor-icons-CLnehDTw.js} +1 -1
  42. package/dist/ui/index.html +3 -3
  43. package/dist/utils/supportContact.d.ts +9 -0
  44. package/dist/utils/supportContact.js +32 -0
  45. package/dist/utils/supportContact.test.d.ts +1 -0
  46. package/dist/utils/supportContact.test.js +19 -0
  47. package/package.json +1 -1
  48. package/dist/ui/assets/AgentsModule-BS4Pi_nC.js +0 -1
  49. package/dist/ui/assets/ContextAttachmentManager-CfG_ER7C.js +0 -3
  50. package/dist/ui/assets/PlansPage-B_z-D6Nh.css +0 -1
  51. package/dist/ui/assets/PlansPage-Ndt7mYfo.js +0 -1
  52. package/dist/ui/assets/documentReferences-BOUcJm6-.js +0 -1
  53. package/dist/ui/assets/index-MAHKvFqp.js +0 -4
  54. /package/dist/ui/agent-logos/{ChatGPT.png → chatgpt.png} +0 -0
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-DSj0ThaK.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-B32hGuF2.js","assets/vendor-markdown-BUxTU7dS.js","assets/vendor-dnd-DRzYolkg.js","assets/vendor-router-BbWMxlnO.js","assets/EntityActivityTimeline-DyqvvhuF.css","assets/TaskContextUpload-Dw4rTF4i.js","assets/ContextAttachmentManager-CfG_ER7C.js","assets/documentReferences-BOUcJm6-.js","assets/TaskSettings-f2ga42_V.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-CCckzWYZ.js","assets/AnnotatedAttachmentWorkspace-BVKew-mH.css","assets/DocumentWorkspace-BVaWPA25.js","assets/DocumentWorkspace-D4rJKXzd.css","assets/WorkflowsModule-E4UL3mov.js","assets/AgentsModule-BS4Pi_nC.js","assets/InitiativesModule-AxMkWtxH.js","assets/PlansPage-Ndt7mYfo.js","assets/PlansPage-B_z-D6Nh.css"])))=>i.map(i=>d[i]);
2
- import{r,j as a,R as We,a as qi,b as _k}from"./vendor-react-CKJs5o3c.js";import{I as ks,C as Ki,a as el,b as Io,c as ag,F as Ck,A as Ak,R as pd,T as Sm,L as Np,d as Co,e as xk,X as ec,f as ng,g as rg,h as mr,B as Xu,U as ai,i as sg,S as Ik,P as Js,j as Yc,G as Tk,k as Vu,l as em,m as fd,n as Rk,o as og,p as Nk,q as jp,r as ig,s as jk,t as Pk,u as Mk,v as Ek,w as Ao,E as Yp,x as cg,y as lg,z as Dk,D as Lk,H as Bk,M as Uf,J as zf,K as Wk,N as Fk,Z as Ok,O as $k,Q as Uk,V as zk,W as dg,Y as Hk,_ as Hf,$ as Gk,a0 as Vk,a1 as qk,a2 as Kk}from"./vendor-icons-B32hGuF2.js";import{M as Zk,r as Yk,a as Jk}from"./vendor-markdown-BUxTU7dS.js";import{u as ug,a as Pp,b as Qk,D as mg,c as Xk,S as pg,v as fg,P as hg,d as gg,C as Jp,e as ev,p as tv,f as Gf,s as av,K as nv,g as Qp,h as rv,i as yg,j as sv}from"./vendor-dnd-DRzYolkg.js";import{u as kg,a as vg,b as ov,M as iv,N as Vf,B as cv}from"./vendor-router-BbWMxlnO.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();const Zc="default",wm="General",Lr="task",lv=2,dv=[{value:Zc,label:wm,icon:"Inbox"}],Sg=[{value:Lr,label:"Task",icon:"CheckSquare",color:"blue-500"}],uv=[{value:lv,label:"Medium",color:"blue-500",icon:"Minus"}];function mv(){return dv.map(e=>({...e}))}function pv(){return Sg.map(e=>({...e}))}function fv(e){const t=String(e||"").trim().toLowerCase();return Sg.find(n=>n.value===t)}function wg(){return uv.map(e=>({...e}))}const hv="default",gv=[{value:hv,label:"Default",color:"slate-500",icon:"Circle"},{value:"evaluate",label:"Evaluate",color:"amber-500",icon:"Search"},{value:"collaborate",label:"Collaborate",color:"blue-500",icon:"Users"},{value:"plan",label:"Plan",color:"teal-500",icon:"FileText"},{value:"review",label:"Review",color:"violet-500",icon:"Microscope"}];function bg(){return gv.map(e=>({...e}))}const yv={categories:mv(),types:pv(),priorities:wg(),approaches:bg(),taxonomies:[],apiEndpoint:"/api/taskforce/task",apiBaseUrl:void 0,cloudAuthBaseUrl:void 0,cloudMcpBaseUrl:void 0,wsBaseUrl:void 0,position:"bottom-right",offsetY:70,theme:"dark",shortcut:"Alt+T",manualComplexityEnabled:!1,checklistDropdownEnabled:!0,showTaskCardStatusLabel:!0},kv=["light","dawn","dark","midnight"],tm="dark",vv=[{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"}],Sv=new Set(kv),wv=new Set(vv.filter(e=>e.family==="light").map(e=>e.id));function bv(e){return typeof e=="string"&&Sv.has(e)}function Gc(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return bv(t)?t:null}function _g(e){const t=Gc(e);return t!==null&&wv.has(t)}function Mp(e){const t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return null;const n=Math.floor(t);return n>0?n:null}function Jc(e,t){const n=Mp(typeof t=="object"&&t!==null?t.referenceNumber:t);return n?`${e}${n}`:""}function Xp(e,t){const n=String(e||"").trim(),s=String(t||"").trim();if(!n||!s)return null;const o=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),l=s.match(new RegExp(`^${o}(\\d+)$`,"i"));return l?Mp(l[1]):null}function bm(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():Jc(e,t.referenceNumber):""}const ef="T-",qf="LT-";function _v(e){return Jc(ef,e)}function Cg(e){return typeof e=="number"||e===null||e===void 0?Jc(qf,e):Jc(qf,{referenceNumber:e.localReferenceNumber??null})}function Ag(e){return Xp(ef,e)}function Yi(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=bm(ef,e);return t||Cg(e.localReferenceNumber)}function Cv(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function xg(e){return{label:Yi(e),isProvisional:Cv(e)}}wg();const Av={low:1,medium:2,high:3,critical:4,"on-hold":1},xv={1:"low",2:"medium",3:"high",4:"critical",5:"critical"};function Iv(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 am(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)):Av[String(e||"").trim().toLowerCase()]??2}function Tv(e,t){return xv[String(e)]||t}function To(e){const t=typeof e.referenceNumber=="number"?e.referenceNumber:Number.isFinite(Number(e.referenceNumber))?Number(e.referenceNumber):null,n=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:n&&n>0?Math.floor(n):null,referenceLabel:typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0?e.referenceLabel.trim():t?_v(t):Cg(n),assignee:(()=>{const s=String(e.assignee||"").trim(),o=s.toLowerCase();return o==="agent"||o==="ai"?"agent":!s||o==="user"||o==="human"||o==="unassigned"||o==="none"||o==="null"?"unassigned":s})(),category:typeof e.category=="string"?e.category:e.category?.value||"default",type:(typeof e.type=="string"?e.type:e.type?.label||"task").toLowerCase(),priority:am(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:Iv(e.status)}}function Rv(e,t,n){if(!e||typeof e!="object")return{tasks:t,archivedTasks:n};const s=To(e),o=String(s.id||"").trim();if(!o)return{tasks:t,archivedTasks:n};const l=!!s.isArchived,i=l?{...s,isArchived:!0}:{...s,isArchived:!1},d=k=>[...k].sort((S,h)=>{const g=Date.parse(String(S.updatedAt||S.createdAt||"")),v=Date.parse(String(h.updatedAt||h.createdAt||""));if(Number.isFinite(g)&&Number.isFinite(v)&&g!==v)return v-g;if(Number.isFinite(g)!==Number.isFinite(v))return Number.isFinite(v)?1:-1;const A=Date.parse(String(h.createdAt||""))-Date.parse(String(S.createdAt||""));return Number.isFinite(A)&&A!==0?A:String(S.id).localeCompare(String(h.id))}),m=t.filter(k=>k.id!==o),y=n.filter(k=>k.id!==o);return l?y.push(i):m.push(i),{tasks:d(m),archivedTasks:d(y)}}function Nv(e,t){if(!t.length||!e.length)return[];const n=new Set(t.map(o=>Number(o.value))),s=Array.from(new Set(e.map(o=>Number(o)).filter(o=>Number.isFinite(o)&&n.has(o))));return s.length>0?s:t.map(o=>Number(o.value))}function lp(e,t){return t.some(n=>String(n)===String(e))}function jv(e,t){if(!e.length||!t.length)return e;const n=new Set(t.map(o=>o.value)),s=Array.from(new Set(e.filter(o=>n.has(o))));return s.length>0?s:t.map(o=>o.value)}const Pv={taskForm:{commentsSectionTitle:"Activity & Comments",hideComments:"Hide Comments",showComments:"Show Comments",noComments:"No comments yet. Start the conversation!",you:"You",commentPlaceholder:"Type a comment...",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",groupApproach:"Workflow",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 / Tutorial",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"}},Mv={taskForm:{commentsSectionTitle:"Actividad y comentarios",hideComments:"Ocultar comentarios",showComments:"Mostrar comentarios",noComments:"Aun no hay comentarios. Inicia la conversacion.",you:"Tu",commentPlaceholder:"Escribe un comentario...",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",groupApproach:"Flujo de trabajo",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 / Tutorial",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"}},Ev={taskForm:{commentsSectionTitle:"Atividade e comentarios",hideComments:"Ocultar comentarios",showComments:"Mostrar comentarios",noComments:"Ainda nao ha comentarios. Inicie a conversa.",you:"Voce",commentPlaceholder:"Digite um comentario...",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",groupApproach:"Fluxo de trabalho",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 / Tutorial",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"}},Ig=["en-US","es-419","pt-BR"],nm="en-US",dp={"en-US":Pv,"es-419":Mv,"pt-BR":Ev},Tg={en:"en-US",es:"es-419",pt:"pt-BR"};let Zi=nm;function Dv(e){return e.split(".").filter(Boolean)}function up(e,t){let n=e;for(const s of t){if(!n||typeof n!="object")return;n=n[s]}return typeof n=="string"?n:void 0}function Rg(e){if(!e)return nm;const t=Ig.find(s=>s.toLowerCase()===e.toLowerCase());if(t)return t;const n=e.split("-")[0]?.toLowerCase()||"";return Tg[n]||nm}function mp(e,t){return t?e.replace(/\{([^}]+)\}/g,(n,s)=>{const o=t[s];return o==null?"":String(o)}):e}function Ng(){return Zi}function Lv(){return[...Ig]}function jg(e){const t=Rg(e);return Zi=t,t}function Bv(e){const t=typeof navigator<"u"?navigator.language:null;return Zi=Rg(t),Zi}function $e(e,t){const n=Dv(e),s=up(dp[Zi],n);if(s)return mp(s,t);const o=Zi.split("-")[0]?.toLowerCase()||"",l=Tg[o];if(l&&l!==Zi){const d=up(dp[l],n);if(d)return mp(d,t)}const i=up(dp[nm],n);return i?mp(i,t):e}const Wv="default",Ji="bootstrap";function Fv(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function tf(e){const t=String(e||"").trim().toLowerCase();return t?`${(t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${Fv(t)}`:Ji}function Pg(e){const t=String(e||"").trim().toLowerCase();if(!t)return Ji;const n=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return n?n.slice(0,96):Ji}function Mg(e){const t=String(e||"").trim();return t?tf(t):Ji}function Ov(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?Ji:Mg(e.projectRoot)}function $v(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const n=String(e.workspaceId||"").trim();return n&&!af(n)?tf(`cloud-workspace:${n}`):Ji}return Mg(e.projectRoot)}function af(e){return String(e||"").trim().toLowerCase()===Wv}const Uv={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function zv(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function Hv(e){return Uv[zv(e)]}const hd={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 _m(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function Gv(e){return _m(e)||"production"}function Kf(e){return hd[Gv(String(e||""))]}function Vv(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[n,s]of Object.entries(hd))if(new URL(s.appBaseUrl).hostname.toLowerCase()===t||new URL(s.mcpBaseUrl).hostname.toLowerCase()===t)return n;return null}function nf(e){const t=String(e||"").trim();if(!t)return null;try{return Vv(new URL(t).hostname)}catch{return null}}function qv(e){const t=nf(e);return t?hd[t].mcpBaseUrl:null}function Oi(e,t){return String(e[t]||"").trim()}function Zf(e,t,n){e.push(t),n?.(t)}function Kv(e,t){const n=[],s=Oi(e,"ENV"),o=_m(s);if(o)return Zf(n,`[Taskforce compat] ENV=${s} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${o} instead.`,t),{cloudEnvironment:o,warnings:n};const l=[{key:"TASKFORCE_CLOUD_PROXY_BASE_URL",value:Oi(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:Oi(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:Oi(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:Oi(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:Oi(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:Oi(e,"TASKFORCE_BASE_URL")}];for(const i of l){if(!i.value)continue;const d=nf(i.value);if(d)return Zf(n,`[Taskforce compat] ${i.key} is being used to infer TASKFORCE_CLOUD_ENVIRONMENT=${d}. Set TASKFORCE_CLOUD_ENVIRONMENT explicitly.`,t),{cloudEnvironment:d,warnings:n}}return{cloudEnvironment:null,warnings:n}}function Ks(e,t){return String(e[t]||"").trim()}function Zv(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function Uc(e){return String(e||"").trim().replace(/\/+$/,"")}function Yv(e){return String(e||"").trim().replace(/\/+$/,"")}function bo(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function Jv(e,t={}){const n=[],s=ve=>{n.push(ve),t.onWarning?.(ve)},o=Zv(Ks(e,"TASKFORCE_RUNTIME_MODE")),l=_m(Ks(e,"TASKFORCE_CLOUD_ENVIRONMENT")),i=l?{cloudEnvironment:l}:Kv(e,s),d=l||i.cloudEnvironment,m=Uc(String(t.requestBaseUrl||"")),y=Uc(bo(Ks(e,"VITE_TASKFORCE_BASE_URL"),Ks(e,"TASKFORCE_BASE_URL"))),k=Uc(Ks(e,"VITE_TASKFORCE_API_BASE_URL")),S=Uc(Ks(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=Uc(bo(Ks(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),Ks(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),g=Uc(Ks(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),v=Yv(Ks(e,"VITE_TASKFORCE_WS_BASE_URL")),A=d?hd[d].appBaseUrl:"",_=d?hd[d].mcpBaseUrl:"",I=bo(g,S,k,y,A),W=bo(h,_,I),V=bo(m,y,k,S,I),B=bo(m,k,y,I),J=bo(S,y,k,I),de=o==="local"?bo(v,m,k,y,g,S,A,I):bo(m,v,B,V,I);return{runtimeMode:o,cloudEnvironment:d,cloudBaseUrl:I,cloudMcpBaseUrl:W,baseUrl:V,apiBaseUrl:B,cloudAuthBaseUrl:J,wsBaseUrl:de,cloudAuthViaLocalProxy:o==="local"||!!g,warnings:n}}function rf(e){return Jv({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 Yf(e){const t=String(e.workspaceId||"default").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"default",n=Number.isFinite(Number(e.epoch))?Math.max(0,Math.floor(Number(e.epoch))):0,s=String(e.seed||"session").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"session",o=String(e.phase||"bootstrap").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"bootstrap";return`tfb-${s}-${t}-e${n}-${o}`}function pp(e,t){const n=String(t||"").trim();if(!n)return e;const s=new Headers(e?.headers||void 0);return s.has("x-taskforce-bootstrap-trace-id")||s.set("x-taskforce-bootstrap-trace-id",n),{...e||{},headers:s}}const rm="unassigned",Eg="agent",Qv="user",Xv=/^[0-9a-f]{8,}$/i;function Dg(e){const t=String(e||"").trim().toLowerCase();return t===Eg||t==="ai"||t.startsWith("ai-profile-")}function Lg(e){const t=String(e||"").trim().toLowerCase();return!t||t===rm||t==="none"||t==="null"||t===Qv}function sm(e){return Dg(e)?"agent":Lg(e)?"unassigned":"member"}function eS(e){const t=String(e.displayName||"").trim(),n=String(e.email||"").trim().toLowerCase();return t||n||String(e.userId||"").trim()||"Workspace member"}function ri(){return[{value:rm,label:"Unassigned",icon:"HelpCircle",color:"var(--text-secondary)",kind:"unassigned"}]}function tS(e){const t=new Map;for(const n of e){const s=String(n.userId||"").trim();s&&t.set(s,{value:s,label:eS(n),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof n.avatarUrl=="string"&&n.avatarUrl.trim().length>0?n.avatarUrl.trim():null})}return gd(Array.from(t.values()))}function gd(e){const t=new Map;for(const s of ri())t.set(s.value,s);for(const s of Array.isArray(e)?e:[]){const o=String(s?.value||"").trim(),l=typeof s?.archivedAt=="string"?s.archivedAt.trim():"";!o||l||o===rm||o===Eg||t.set(o,{value:o,label:String(s.label||o).trim()||o,icon:String(s.icon||(s.kind==="agent"?"Bot":"User")),color:String(s.color||(s.kind==="agent"?"#8b5cf6":"#22c55e")),kind:s.kind==="agent"?"agent":"member",avatarUrl:typeof s.avatarUrl=="string"&&s.avatarUrl.trim().length>0?s.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(s.avatarRevision))?Math.max(0,Math.floor(Number(s.avatarRevision))):null,avatarUpdatedAt:typeof s.avatarUpdatedAt=="string"&&s.avatarUpdatedAt.trim().length>0?s.avatarUpdatedAt.trim():null,username:typeof s.username=="string"&&s.username.trim().length>0?s.username.trim():null,archivedAt:null,createdAt:typeof s.createdAt=="string"&&s.createdAt.trim().length>0?s.createdAt.trim():null,updatedAt:typeof s.updatedAt=="string"&&s.updatedAt.trim().length>0?s.updatedAt.trim():null})}const n=[rm];return Array.from(t.values()).sort((s,o)=>{const l=n.indexOf(s.value),i=n.indexOf(o.value);return l>=0||i>=0?l<0?1:i<0?-1:l-i:s.label.localeCompare(o.label,void 0,{sensitivity:"base"})})}function aS(e,t){const n=String(t||"").trim();if(!n||e.some(l=>l.value===n))return e;const s=n.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),o=s?s.split(" ").map(l=>l.charAt(0).toUpperCase()+l.slice(1)).join(" "):n;if(sm(n)==="agent"){const l=String(n).toLowerCase().startsWith("ai-profile-")&&s.split(" ").every(i=>Xv.test(i));return gd([...e,{value:n,label:l?"AI":o||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return sm(n)==="member"?gd([...e,{value:n,label:o||n,icon:"User",color:"#22c55e",kind:"member"}]):e}function Bg(e){const t=Array.isArray(e)?e.filter(Boolean):[];return gd(t)}function cd(e,t){const n=String(e||"").trim(),o=Bg(t).find(l=>l.value===n);return o?o.label:Dg(n)?"AI":Lg(n)?"Unassigned":n||"Unassigned"}const Wg="taskforce.workspaceContext.v2",nS="taskforce.uiState.app.v1",rS="taskforce.bootstrapDebug.v1",Jf=5e3,Nu=new Map;function sS(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(rS)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function zt(e,t){if(!sS())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function oS(e,t){const n=String(e).trim()||"default";return`${String(t).trim()||"default"}::${n}`}async function sf(e){const t=String(e.stateKey||"default").trim()||"default",n=String(e.workspaceId||"").trim(),s=e.patch&&typeof e.patch=="object"?e.patch:{},o=JSON.stringify(s),l=oS(t,n||"default"),i=Date.now(),d=Nu.get(l);if(d&&d.serializedPatch===o){if(d.status==="success"&&e.skipIfUnchanged!==!1)return zt("ui_state_persist_skipped",{stateKey:t,workspaceId:n||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&d.retryAfter>i)return zt("ui_state_persist_skipped",{stateKey:t,workspaceId:n||"default",reason:"cooldown",retryAfterMs:d.retryAfter-i}),{skipped:!0,reason:"cooldown"}}try{const m=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json",...e.headers||{}},credentials:"include",body:JSON.stringify({stateKey:t,...n?{workspaceId:n}:{},patch:s})}),y=await m.json().catch(()=>({}));if(m.ok&&y?.success!==!1)return Nu.set(l,{serializedPatch:o,status:"success",retryAfter:0}),{skipped:!1,response:m,payload:y};if(Nu.set(l,{serializedPatch:o,status:"failure",retryAfter:i+(e.failureRetryMs??Jf)}),zt("ui_state_persist_failed",{stateKey:t,workspaceId:n||"default",status:m.status,error:String(y?.error||"")}),e.throwOnError)throw new Error(String(y?.error||`Failed to persist UI state (${m.status})`));return{skipped:!1,response:m,payload:y}}catch(m){if(Nu.set(l,{serializedPatch:o,status:"failure",retryAfter:i+(e.failureRetryMs??Jf)}),zt("ui_state_persist_failed",{stateKey:t,workspaceId:n||"default",error:m instanceof Error?m.message:String(m)}),e.throwOnError)throw m;return{skipped:!1,payload:null}}}function of(e){const t=tf(e);return`${Wg}.${t}`}function Fg(e){const t=Pg(e);return`${Wg}.${t}`}function Ep(e){if(typeof window>"u")return"";try{const t=of(e),n=String(window.localStorage.getItem(t)||"").trim();if(n&&n.length<=120&&!/\s/.test(n))return n;const s=Fg(e),o=String(window.localStorage.getItem(s)||"").trim();return o&&o.length<=120&&!/\s/.test(o)?(window.localStorage.setItem(t,o),o):""}catch{return""}}function iS(e,t){if(typeof window>"u")return;const n=String(e||"").trim();try{if(!n||af(n))return;const s=of(t),o=String(window.localStorage.getItem(s)||"").trim();if(!n&&o&&o.toLowerCase()!=="default")return;window.localStorage.setItem(s,n)}catch{}}function Qf(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(of(e)),window.localStorage.removeItem(Fg(e))}catch{}}function Og(e){const t=Pg(e);return`${nS}.${t}`}function Xf(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(Og(e));if(!t)return null;const n=JSON.parse(t);return n&&typeof n=="object"?n:null}catch{return null}}function cS(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(Og(t),JSON.stringify(e))}catch{}}const Dp="taskforce.localMutationActorUserId.v1";function $g(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function lS(e){const t=String(e||"").trim().toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function td(e){if(!(typeof window>"u"))try{const t=String(e||"").trim();if(!t||t==="anonymous"){window.sessionStorage.removeItem(Dp);return}window.sessionStorage.setItem(Dp,t)}catch{}}function cf(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(Dp)||"").trim()}catch{return""}}function dS(e,t){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!lS(window.location.hostname))return!1;try{return new URL(t,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function uS(e,t,n){if(!dS(e,t))return n;const s=cf();if(!s)return n;const o=new Headers(n?.headers||void 0);return o.has("x-taskforce-user-id")||o.set("x-taskforce-user-id",s),{...n,headers:o}}function mS(e,t){if(!e.startsWith("/"))return e;const n=$g(t);return n?`${n}${e}`:e}async function yO(e,t,n){const s=mS(e,n),o=$g(n).length>0,l=uS(e,s,t),i=typeof performance<"u"?performance.now():Date.now();try{const d=await fetch(s,l);if(!(o&&s!==e&&e.startsWith("/api/taskforce/")&&(d.status===401||d.status===403)))return d;zt("taskforce_api_auth_fallback_retry",{path:e,primaryUrl:s,fallbackUrl:e,status:d.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)});try{const y=await fetch(e,l);return zt("taskforce_api_auth_fallback_completed",{path:e,primaryUrl:s,fallbackUrl:e,primaryStatus:d.status,fallbackStatus:y.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)}),y}catch{return zt("taskforce_api_auth_fallback_failed",{path:e,primaryUrl:s,fallbackUrl:e,status:d.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)}),d}}catch(d){if(!o||!e.startsWith("/"))throw d;zt("taskforce_api_network_fallback_retry",{path:e,primaryUrl:s,fallbackUrl:e,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i),error:d instanceof Error?d.message:String(d)});const m=await fetch(e,l);return zt("taskforce_api_network_fallback_completed",{path:e,primaryUrl:s,fallbackUrl:e,fallbackStatus:m.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)}),m}}function pS(e){const t=Number(e?.status);return Number.isFinite(t)&&t>0?Math.floor(t):0}async function tl(e){try{const t=await e,n=await t.text().catch(()=>"");let s={};if(n)try{s=JSON.parse(n)}catch{s={error:!t.ok&&t.statusText?`${t.status} ${t.statusText}`:n.slice(0,400)}}else!t.ok&&t.statusText&&(s={error:`${t.status} ${t.statusText}`});const o=t.headers.get("retry-after");let l;if(o){const i=Number.parseInt(o,10);if(Number.isFinite(i)&&i>0)l=i*1e3;else{const d=Date.parse(o);if(Number.isFinite(d)){const m=d-Date.now();m>0&&(l=m)}}}return{ok:t.ok,status:t.status,data:s,retryAfterMs:l}}catch(t){return{ok:!1,status:pS(t),data:{}}}}async function fS(e){return tl(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function hS(e,t){return tl(fetch(e("/api/taskforce/sync/user-settings"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function fp(e,t){return tl(fetch(e("/api/taskforce/sync/workspace/handshake"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}))}async function eh(e,t){return tl(fetch(e("/api/taskforce/sync/workspace/provision"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function gS(e,t){const n=new URLSearchParams({limit:String(t.limit),workspaceId:t.workspaceId});t.cursor&&n.set("cursor",t.cursor),t.repairMode===!0&&n.set("repair","1");const s=e("/api/taskforce/sync/workspace/pull"),o=s.includes("?")?"&":"?";return tl(fetch(`${s}${o}${n.toString()}`,{method:"GET",credentials:"include"}))}async function yS(e,t){return tl(fetch(e("/api/taskforce/sync/workspace/push"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({...t,...t.repairMode===!0?{repair:!0}:{}})}))}async function Lp(e,t,n){const s=JSON.stringify({workspaceId:e,changes:t,workspaceMembers:Array.isArray(n?.workspaceMembers)?n.workspaceMembers:void 0,...n?.repairMode===!0?{repair:!0}:{},bootstrapSnapshot:n?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(n.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?n.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds:[]}:void 0}),o="/api/taskforce/sync/workspace/apply-local",l=[];try{const i=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:s});if(i.ok){const y=await i.json().catch(()=>({}));return{ok:!0,status:i.status,data:y,failures:l}}const d=await i.text().catch(()=>"");let m={};if(d)try{m=JSON.parse(d)}catch{m={error:d.slice(0,400)}}else i.statusText&&(m={error:`${i.status} ${i.statusText}`});return l.push(`${o}:${i.status}`),{ok:!1,status:i.status,data:m,failures:l}}catch{l.push(`${o}:network`)}return{ok:!1,status:0,data:{},failures:l}}const Bp="V1:AESGCM:",lf="AES-GCM",kS=12;async function Ug(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:lf},!1,["encrypt","decrypt"])}async function th(e,t){if(!e)return e;const n=crypto.getRandomValues(new Uint8Array(kS)),s=await Ug(t),l=new TextEncoder().encode(e),i=await crypto.subtle.encrypt({name:lf,iv:n},s,l),d=Buffer.from(i).toString("base64"),m=Buffer.from(n).toString("base64");return`${Bp}${m}:${d}`}async function ah(e,t){if(!e||!e.startsWith(Bp))return e;const n=e.slice(Bp.length),[s,o]=n.split(":");if(!s||!o)throw new Error("Malformed encrypted document payload.");const l=Buffer.from(s,"base64"),i=Buffer.from(o,"base64"),d=await Ug(t);try{const m=await crypto.subtle.decrypt({name:lf,iv:l},d,i);return new TextDecoder("utf-8").decode(m)}catch(m){throw new Error(`Failed to decrypt document: ${m.message}`)}}var Vc={};function Xr(e){return e&&typeof e=="object"?e:{}}function Ds(e){const t=Number(e||0);return t===0||t===429||t>=500}function nh(e,t){const n=String(e.code||"").trim().toUpperCase(),s=String(e.error||"").trim();return n==="WORKSPACE_ID_ALREADY_EXISTS"||s.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.":s||`Workspace provisioning failed (${t})`}function vS(e,t){if(t!==400)return!1;const n=String(e.code||"").trim().toUpperCase(),s=String(e.error||"").trim().toLowerCase();return n==="WORKSPACE_ID_REQUIRED"&&s.includes("no cloud workspace is selected")}async function SS(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{let t=await fp(e.resolveCloudAuthUrl,e.workspaceId);if(t.ok)return{success:!0,provisioned:!1};const n=Xr(t.data);if(t.status===401)return{success:!1,statusCode:401,transient:!1,error:String(n.error||"Authentication required for workspace sync.")};if(t.status===429)return{success:!1,statusCode:429,retryAfterMs:t.retryAfterMs,transient:!0,error:String(n.error||"Workspace sync rate limited. Please retry later.")};if(vS(n,t.status)){const s=await eh(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=Xr(s.data);return{success:!1,statusCode:s.status,transient:Ds(s.status),retryAfterMs:s.retryAfterMs,error:nh(o,s.status)}}if(t=await fp(e.resolveCloudAuthUrl,e.workspaceId),!t.ok){const o=Xr(t.data);return t.status===401?{success:!1,statusCode:401,transient:!1,error:String(o.error||"Authentication required for workspace sync.")}:t.status===429?{success:!1,statusCode:429,retryAfterMs:t.retryAfterMs,transient:!0,error:String(o.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:t.status,transient:Ds(t.status),error:String(o.error||`Workspace sync handshake failed (${t.status})`)}}return{success:!0,provisioned:!0}}if(t.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 eh(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=Xr(s.data);return{success:!1,statusCode:s.status,error:nh(o,s.status)}}if(t=await fp(e.resolveCloudAuthUrl,e.workspaceId),!t.ok){const o=Xr(t.data);return t.status===401?{success:!1,statusCode:401,transient:!1,error:String(o.error||"Authentication required for workspace sync.")}:t.status===429?{success:!1,statusCode:429,retryAfterMs:t.retryAfterMs,transient:!0,error:String(o.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:t.status,transient:Ds(t.status),error:String(o.error||`Workspace sync handshake failed (${t.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:t.status,transient:Ds(t.status),error:String(n.error||`Workspace sync handshake failed (${t.status})`)}}catch{return{success:!1,statusCode:0,transient:!0,error:"Failed to validate workspace sync access."}}}async function wS(e,t){const n=JSON.stringify([e,t]);try{const s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return Array.from(new Uint8Array(s)).map(o=>o.toString(16).padStart(2,"0")).join("")}catch{let s=2166136261;for(let l=0;l<n.length;l+=1)s^=n.charCodeAt(l),s=Math.imul(s,16777619);const o=(s>>>0).toString(16).padStart(8,"0");return`${e}:fallback:${o}`}}async function bS(e){const t=e.payload.changes.length,n=e.payload.deleteTaskIds.size,s=await wS(e.workspaceId,e.payload.changes);let o=0,l=e.payload.changes;if(typeof process<"u"&&Vc?.TASKFORCE_SYNC_KEY){const S=Vc.TASKFORCE_SYNC_KEY,h=[];for(const g of l)g.op==="document-upsert"&&typeof g.content=="string"?h.push({...g,content:await th(g.content,S)}):g.op==="asset-upsert"&&typeof g.contentBase64=="string"&&g.contentBase64.length>0?h.push({...g,contentBase64:await th(g.contentBase64,S)}):h.push(g);l=h}const i=async()=>{const S=Date.now(),h=await yS(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,idempotencyKey:s,changes:l,repairMode:e.repairMode===!0});return o+=Date.now()-S,h};let d=await i();if(!d.ok&&(d.status===403||d.status===409)&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(d=await i()),!d.ok){const S=Xr(d.data);return{success:!1,status:d.status,error:typeof S.error=="string"?S.error:void 0,code:typeof S.code=="string"?S.code:void 0,retryAfterMs:d.retryAfterMs,transient:Ds(d.status),requestMs:o,changeCount:t,deleteCount:n,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,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,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}const m=Xr(d.data),y=Array.isArray(m.emittedEventIds)?Array.from(new Set(m.emittedEventIds.map(S=>String(S||"").trim()).filter(Boolean))):[],k=Array.isArray(m.appliedTaskUpserts)?m.appliedTaskUpserts.map(S=>{const h=S&&typeof S=="object"?S:{},g=h.task&&typeof h.task=="object"?h.task:null,v=String(g?.id||"").trim();return!g||!v?null:{archived:h.archived===!0,task:g}}).filter(S=>!!S):[];return{success:!0,syncedAt:new Date().toISOString(),requestMs:o,changeCount:t,deleteCount:n,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,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,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:e.payload.pushedWatermarks,pushedTaskChangeKeys:e.payload.pushedTaskChangeKeys??new Map,emittedEventIds:y,appliedTaskUpserts:k}}async function _S(e){let t=e.cursor,n=!0,s=0,o=0,l=0,i=0;const d=new Set;let m=!1,y=!1,k=!1,S=!1;const h=new Set,g=new Set,v=new Set;let A=null;const _=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;try{for(;n&&s<_;){const I=async()=>{const re=Date.now(),x=await gS(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:t,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0});return l+=Date.now()-re,x};let W=await I();if(!W.ok&&W.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(W=await I()),!W.ok){const re=Xr(W.data);return{success:!1,kind:"pull_http",status:W.status,errorCode:typeof re.code=="string"?re.code:void 0,error:typeof re.error=="string"?re.error:void 0,retryAfterMs:W.retryAfterMs,transient:Ds(W.status),cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),serverDiagnostics:null}}const V=W.data||{},B=Array.isArray(V?.changes)?V.changes:[],J=V?.diagnostics&&typeof V.diagnostics=="object"?V.diagnostics:null;A=J;const de=Array.isArray(V?.workspaceMembers),ve=de?V.workspaceMembers:void 0;for(const re of B){if(re.op==="upsert"){re?.archived===!0||re?.task?.isArchived===!0?y=!0:m=!0;continue}if(re.op==="annotated-attachment-session-upsert"){const K=String(re?.session?.id||"").trim();K&&v.add(K);continue}if(re.op==="task-event-upsert"||re.op==="entity-event-upsert"){k=!0;continue}if(re.op==="initiative-upsert"||re.op==="workstream-upsert"){S=!0;continue}if(re.op==="document-upsert"){if(typeof re.content=="string"&&typeof process<"u"&&Vc?.TASKFORCE_SYNC_KEY)try{re.content=await ah(re.content,Vc.TASKFORCE_SYNC_KEY)}catch{const K=String(re.path||"").trim();K&&h.add(K)}continue}if(re.op==="asset-upsert"){if(typeof re.contentBase64=="string"&&typeof process<"u"&&Vc?.TASKFORCE_SYNC_KEY)try{re.contentBase64=await ah(re.contentBase64,Vc.TASKFORCE_SYNC_KEY)}catch{const K=String(re.path||"").trim();K&&h.add(K)}continue}if(re.op!=="delete")continue;const x=String(re.taskId||"").trim();x&&d.add(x)}if(e.onPagePulled&&e.onPagePulled(),B.length>0||de){const re=Date.now(),x=await Lp(e.workspaceId,B,{...de?{workspaceMembers:ve}:{},repairMode:e.repairMode===!0}),K=x.failures;if(!x.ok){i+=Date.now()-re;const pe=Xr(x.data);if(K.some(F=>F.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:K,cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,documentDecryptFailures:Array.from(h),serverDiagnostics:J};const M=K.some(F=>{if(F.endsWith(":network"))return!0;const ue=F.split(":").pop()||"",ge=Number.parseInt(ue,10);return Number.isFinite(ge)&&(ge===429||ge>=500)});return{success:!1,kind:"apply_all_candidates",status:x.status||void 0,transient:M,error:String(pe.error||"").trim()||void 0,failures:K,hasTransientApplyFailure:M,cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),emittedEventIds:Array.from(g),serverDiagnostics:A}}const me=Xr(x.data);if(me.success===!1)return i+=Date.now()-re,{success:!1,kind:"apply_payload",transient:!1,error:String(me.error||"Workspace sync apply failed."),cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),emittedEventIds:Array.from(g),serverDiagnostics:A};if(i+=Date.now()-re,o+=B.length,Array.isArray(me.emittedEventIds))for(const pe of me.emittedEventIds)g.add(String(pe));e.onChangesApplied&&e.onChangesApplied(B.length)}V&&"nextCursor"in V&&(V.nextCursor===null||typeof V.nextCursor=="string")&&(t=V.nextCursor),n=!!V?.hasMore,s+=1}if(e.bootstrap){const I=Date.now(),W=await Lp(e.workspaceId,[],{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(v)}}),V=W.failures;if(!W.ok){i+=Date.now()-I;const B=Xr(W.data);if(V.some(ve=>ve.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:V,cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),emittedEventIds:Array.from(g),serverDiagnostics:A};const de=V.some(ve=>{if(ve.endsWith(":network"))return!0;const re=ve.split(":").pop()||"",x=Number.parseInt(re,10);return Number.isFinite(x)&&(x===429||x>=500)});return{success:!1,kind:"apply_all_candidates",status:W.status||void 0,transient:de,error:String(B.error||"").trim()||void 0,failures:V,hasTransientApplyFailure:de,cursor:t,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),emittedEventIds:Array.from(g),serverDiagnostics:A}}i+=Date.now()-I}return{success:!0,syncedAt:new Date().toISOString(),cursor:t||null,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),emittedEventIds:Array.from(g),serverDiagnostics:A}}catch(I){return{success:!1,kind:"exception",status:0,transient:!0,error:String(I?.message||I||"Workspace sync pull failed unexpectedly."),cursor:t||null,pages:s,appliedChanges:o,pullRequestMs:l,applyMs:i,pulledDeleteTaskIds:d,pulledActiveUpserts:m,pulledArchivedUpserts:y,pulledTaskEventUpserts:k,pulledPlanningUpserts:S,documentDecryptFailures:Array.from(h),emittedEventIds:Array.from(g),serverDiagnostics:null}}}async function CS(e){const t=await fS(e.resolveCloudAuthUrl);if(!t.ok){const h=Number(t.status||0);return{success:!1,error:`Sync pull failed (${t.status})`,statusCode:t.status,retryAfterMs:t.retryAfterMs,transient:Ds(h)}}const n=Xr(t.data),s=n.settings&&typeof n.settings=="object"?n.settings:{},o=typeof n.updatedAt=="string"&&n.updatedAt.trim().length>0?n.updatedAt.trim():null,l=e.getLocalUpdatedAt(e.userId),i=l?Date.parse(l):NaN,d=o?Date.parse(o):NaN;if(!l&&e.preferCloudOnFirstSync&&Number.isFinite(d))return await e.applyRemoteSettings(s),{success:!0,mode:"pulled",updatedAt:o};if(Number.isFinite(d)&&(!Number.isFinite(i)||d>i))return await e.applyRemoteSettings(s),{success:!0,mode:"pulled",updatedAt:o};const m=l||new Date().toISOString(),y=await hS(e.resolveCloudAuthUrl,{settings:e.buildLocalSettings(),updatedAt:m});if(!y.ok){const h=Number(y.status||0);return{success:!1,error:`Sync push failed (${y.status})`,statusCode:y.status,retryAfterMs:y.retryAfterMs,transient:Ds(h)}}const k=Xr(y.data);return{success:!0,mode:"pushed",updatedAt:typeof k.updatedAt=="string"&&k.updatedAt.trim().length>0?k.updatedAt.trim():m}}function AS(e){const t=Math.max(1,Math.floor(Number(e)||1)),n=Math.min(12e4,1500*2**Math.max(0,t-1)),s=Math.floor(n*(.15*Math.random()));return n+s}const xS=["chat_app","ide","cli","coding_tool","agent"],kO=["chat_app","ide","cli","coding_tool","agent","unclassified"],IS={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},TS={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function RS(e){return typeof e=="string"&&xS.includes(e)}function zg(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":RS(t)?t:null}function vO(e){return IS[e]}function SO(e){return e??"unclassified"}function wO(e){return TS[e]}const NS=["cloud_metered","local_unmetered"],jS={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function PS(e){return typeof e=="string"&&NS.includes(e)}function Hg(e){if(typeof e!="string")return null;const t=e.trim();return PS(t)?t:null}function bO(e){return jS[e]}function ni(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function un(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function yd(e){return ni(e)}function om(e){return un(e)}function Dr(e){return un(e)}function Qc(e){const t=un(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function ju(e){return ni(e)}function Pu(e){if(e!==void 0)return un(e)}function MS(e){return typeof e=="boolean"?e:void 0}function Mu(e,t){if(e===void 0)return;if(e===null||e==="")return t?.nullable?null:void 0;const n=typeof e=="number"?e:Number(e);if(!Number.isFinite(n))return t?.nullable?null:void 0;const s=Math.floor(n);return Number.isFinite(t?.min)&&s<Number(t?.min)?t?.nullable?null:void 0:s}function ES(e){if(!e||typeof e!="object"||Array.isArray(e))return;const n=Object.entries(e).reduce((s,[o,l])=>Array.isArray(l)?(s[o]=l.map(i=>String(i??"")),s):(l==null||(s[o]=String(l)),s),{});return Object.keys(n).length>0?n:{}}function DS(e){return Array.isArray(e)?e:void 0}function LS(e){return Array.isArray(e)?e:void 0}function BS(e){return Array.isArray(e)?e:void 0}function Gg(e){const t=e&&typeof e=="object"?e:{};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:Mu(t.priority,{min:1})??void 0,complexity:Mu(t.complexity,{min:1,nullable:!0}),type:String(t.type||"").trim(),category:String(t.category||"").trim(),approach:ju(t.approach),canceledReason:t.canceledReason===void 0?void 0:t.canceledReason||null,createdAt:String(t.createdAt||"").trim(),updatedAt:ju(t.updatedAt),completedAt:t.completedAt===void 0?void 0:t.completedAt||null,isArchived:MS(t.isArchived),taxonomies:ES(t.taxonomies),createdBy:ju(t.createdBy),assignee:ju(t.assignee),scheduledDate:Pu(t.scheduledDate),dueDate:Pu(t.dueDate),scheduledWeekKey:Pu(t.scheduledWeekKey),orderInDay:Mu(t.orderInDay,{min:0,nullable:!0}),workstreamId:Pu(t.workstreamId),referenceNumber:Mu(t.referenceNumber,{min:1,nullable:!0}),comments:DS(t.comments),attachments:LS(t.attachments),checklistItems:BS(t.checklistItems)}}function WS(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=Object.entries(e).filter(([s])=>String(s||"").trim().length>0).sort(([s],[o])=>s.localeCompare(o)),n={};for(const[s,o]of t){if(Array.isArray(o)){n[s]=o.map(l=>String(l??"")).sort((l,i)=>l.localeCompare(i));continue}o!=null&&(n[s]=String(o))}return n}function FS(e){return Array.isArray(e)?e.map(t=>{const n=t&&typeof t=="object"?t:{};return{id:String(n.id||"").trim(),title:String(n.title||"").trim(),isCompleted:!!n.isCompleted,order:n.order===void 0||n.order===null?"":String(n.order)}}).sort((t,n)=>{const s=Number.parseInt(t.order,10),o=Number.parseInt(n.order,10);return Number.isFinite(s)&&Number.isFinite(o)&&s!==o?s-o:t.title!==n.title?t.title.localeCompare(n.title):t.id.localeCompare(n.id)}):[]}function OS(e){return Array.isArray(e)?e.map(t=>{const n=t&&typeof t=="object"?t:null;return{id:String(n?.id||"").trim(),author:String(n?.author||"").trim(),submittedAuthor:ni(n?.submittedAuthor)||"",text:String(n?.text||""),timestamp:Dr(n?.timestamp)||"",actor:n?.actor??null}}).sort((t,n)=>t.timestamp!==n.timestamp?t.timestamp.localeCompare(n.timestamp):t.id!==n.id?t.id.localeCompare(n.id):t.author!==n.author?t.author.localeCompare(n.author):t.text.localeCompare(n.text)):[]}function $S(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 n=t&&typeof t=="object"?t:null;return{path:String(n?.path||"").trim(),fsPath:ni(n?.fsPath)||"",caption:ni(n?.caption)||"",displayName:ni(n?.displayName)||"",originalFilename:ni(n?.originalFilename)||"",assetId:yd(n?.assetId)||"",referenceNumber:n?.referenceNumber===void 0||n.referenceNumber===null?"":String(n.referenceNumber),taskId:om(n?.taskId)||"",timestamp:Dr(n?.timestamp)||""}}).sort((t,n)=>t.path!==n.path?t.path.localeCompare(n.path):t.assetId!==n.assetId?t.assetId.localeCompare(n.assetId):t.timestamp!==n.timestamp?t.timestamp.localeCompare(n.timestamp):JSON.stringify(t).localeCompare(JSON.stringify(n))):[]}function US(e,t){const n=Gg(e);return JSON.stringify({id:n.id,title:n.title,description:un(n.description)||"",category:n.category,type:n.type,priority:n.priority===void 0||n.priority===null?"":String(n.priority),complexity:n.complexity===void 0||n.complexity===null?"":String(n.complexity),status:n.status,approach:ni(n.approach)||"",canceledReason:un(n.canceledReason)||"",createdAt:n.createdAt,completedAt:Dr(n.completedAt)||"",taxonomies:WS(n.taxonomies),createdBy:yd(n.createdBy)||"",assignee:yd(n.assignee)||"",scheduledDate:un(n.scheduledDate)||"",dueDate:un(n.dueDate)||"",scheduledWeekKey:un(n.scheduledWeekKey)||"",orderInDay:n.orderInDay===void 0||n.orderInDay===null?"":String(n.orderInDay),workstreamId:om(n.workstreamId)||"",referenceNumber:n.referenceNumber===void 0||n.referenceNumber===null?"":String(n.referenceNumber),comments:OS(n.comments),attachments:$S(n.attachments),checklistItems:FS(n.checklistItems),isArchived:t?"1":"0"})}function zS(...e){return e.reduce((t,n)=>{const s=Dr(n)||"";return t?s&&s>t?s:t:s},"")}function HS(e){const t=e||{};return zS(t.createdAt,t.updatedAt,t.lastActiveAt,t.archivedAt,t.rosterStateUpdatedAt)}function GS(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",avatarUrl:Qc(t.avatarUrl)||"",avatarSourceUrl:Qc(t.avatarSourceUrl)||"",avatarRevision:Number.isFinite(Number(t.avatarRevision))?Math.max(0,Math.floor(Number(t.avatarRevision))):0,avatarUpdatedAt:Dr(t.avatarUpdatedAt)||"",description:un(t.description)||"",role:un(t.role)||"",provider:un(t.provider)||"",model:un(t.model)||"",surfaceType:un(t.surfaceType)||"",seatScope:un(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:Dr(t.archivedAt)||"",archivedBy:yd(t.archivedBy)||"",archivedReason:un(t.archivedReason)||"",mergedIntoProfileId:yd(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:Dr(t.rosterStateUpdatedAt)||"",createdAt:Dr(t.createdAt)||"",updatedAt:Dr(t.updatedAt)||"",lastActiveAt:Dr(t.lastActiveAt)||""})}const ys={kind:"task",getId:e=>String(e?.id||"").trim(),getWatermark:e=>String(e?.updatedAt||e?.createdAt||"").trim(),getChangeKey:e=>US(e,!!e?.isArchived)},ld={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>HS(e),getChangeKey:e=>GS(e)};function rh(e,t,n){const s=e.getId(t);if(!s)return!1;const o=e.getChangeKey(t),l=n?.watermarks;if(!l||l.size===0||!l.has(s))return!0;const d=n?.changeKeys?.get(s);return typeof d=="string"?d!==o:(l.get(s)||"")!==o}function sh(e){return Gg(e)}function oh(e,t){const n=e??t;return new Set(Array.from(n).map(s=>String(s||"").trim()).filter(s=>s.length>0))}function VS(e){return[...e].sort((t,n)=>{const s=String(t?.createdAt||"").trim(),o=String(n?.createdAt||"").trim(),l=s.localeCompare(o);return l!==0?l:String(t?.id||"").trim().localeCompare(String(n?.id||"").trim())})}function ih(e){return[...e].sort((t,n)=>{const s=String(t?.id||"").trim(),o=String(n?.id||"").trim();return s.localeCompare(o)})}function im(e){return Array.isArray(e)?e:void 0}function qS(e){const t=new Date().toISOString(),n=new Set(Array.from(e.pendingDeletedTaskIds).map(c=>String(c||"").trim()).filter(c=>c.length>0)),s=new Map(Array.from(e.pendingDeletedTaskWatermarks||new Map).map(([c,Y])=>[String(c||"").trim(),String(Y||"").trim()]).filter(([c,Y])=>c.length>0&&Number.isFinite(Date.parse(Y)))),o=e.lastPushedWatermarks,l=e.lastPushedTaskChangeKeys,i=(c,Y)=>(c?.referenceNumber===void 0||c?.referenceNumber===null)&&Number.isFinite(Number(c?.localReferenceNumber))?!0:rh(ys,{...c,isArchived:Y},{watermarks:o,changeKeys:l}),d=ih(e.tasks||[]),m=ih(e.archivedTasks||[]),y=new Map,k=new Map,S=new Map,h=new Map,g=d.filter(c=>!n.has(String(c?.id||"").trim())&&i(c,!1)).map(c=>{const Y=String(c?.id||"").trim(),ye=ys.getWatermark(c),Ie=ys.getChangeKey({...c,isArchived:!1});return Y&&(S.set(Y,ye),h.set(Y,Ie)),{op:"upsert",archived:!1,task:sh(c)}}),v=m.filter(c=>!n.has(String(c?.id||"").trim())&&i(c,!0)).map(c=>{const Y=String(c?.id||"").trim(),ye=ys.getWatermark(c),Ie=ys.getChangeKey({...c,isArchived:!0});return Y&&(S.set(Y,ye),h.set(Y,Ie)),{op:"upsert",archived:!0,task:sh(c)}}),A=new Set;for(const c of e.tasks||[]){const Y=String(c?.id||"").trim();Y&&(A.add(Y),y.set(Y,ys.getWatermark(c)),k.set(Y,ys.getChangeKey({...c,isArchived:!1})))}for(const c of e.archivedTasks||[]){const Y=String(c?.id||"").trim();Y&&(A.add(Y),y.set(Y,ys.getWatermark(c)),k.set(Y,ys.getChangeKey({...c,isArchived:!0})))}const _=Array.from(e.lastPushedTaskIds).filter(c=>!A.has(c)).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t})),I=Array.from(n).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t})),W=new Set([..._.map(c=>String(c.taskId)),...I.map(c=>String(c.taskId))]),V=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),B=new Map((Array.isArray(e.initiatives)?e.initiatives:[]).map(c=>[String(c?.id||"").trim(),String(c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),J=e.lastPushedInitiativeWatermarks,de=!J||J.size===0,ve=(Array.isArray(e.initiatives)?e.initiatives:[]).map(c=>({op:"initiative-upsert",initiative:{id:String(c?.id||"").trim(),referenceNumber:Number.isFinite(Number(c?.referenceNumber))?Math.max(1,Math.floor(Number(c.referenceNumber))):null,referenceLabel:typeof c?.referenceLabel=="string"&&c.referenceLabel.trim().length>0?c.referenceLabel.trim():void 0,title:String(c?.title||"").trim(),description:typeof c?.description=="string"?c.description:null,ownerId:typeof c?.ownerId=="string"&&c.ownerId.trim().length>0?c.ownerId.trim():null,createdAt:String(c?.createdAt||"").trim(),updatedAt:String(c?.updatedAt||c?.createdAt||"").trim(),order:Number.isFinite(Number(c?.order))?Math.floor(Number(c.order)):null,attachments:im(c?.attachments),isArchived:!!c?.isArchived}})).filter(c=>c.initiative.id.length>0).filter(c=>de?!0:J.get(c.initiative.id)!==c.initiative.updatedAt),re=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),x=new Map((Array.isArray(e.workstreams)?e.workstreams:[]).map(c=>[String(c?.id||"").trim(),String(c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),K=e.lastPushedWorkstreamWatermarks,me=!K||K.size===0,pe=(Array.isArray(e.workstreams)?e.workstreams:[]).map(c=>({op:"workstream-upsert",workstream:{id:String(c?.id||"").trim(),referenceNumber:Number.isFinite(Number(c?.referenceNumber))?Math.max(1,Math.floor(Number(c.referenceNumber))):null,referenceLabel:typeof c?.referenceLabel=="string"&&c.referenceLabel.trim().length>0?c.referenceLabel.trim():void 0,initiativeId:typeof c?.initiativeId=="string"&&c.initiativeId.trim().length>0?c.initiativeId.trim():null,title:String(c?.title||"").trim(),description:typeof c?.description=="string"?c.description:null,ownerId:typeof c?.ownerId=="string"&&c.ownerId.trim().length>0?c.ownerId.trim():null,createdAt:String(c?.createdAt||"").trim(),updatedAt:String(c?.updatedAt||c?.createdAt||"").trim(),order:Number.isFinite(Number(c?.order))?Math.floor(Number(c.order)):null,attachments:im(c?.attachments),isArchived:!!c?.isArchived}})).filter(c=>c.workstream.id.length>0).filter(c=>me?!0:K.get(c.workstream.id)!==c.workstream.updatedAt),X=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),M=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>[String(c?.id||"").trim(),ld.getWatermark(c)]).filter(([c])=>c.length>0)),F=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>[String(c?.id||"").trim(),ld.getChangeKey(c)]).filter(([c])=>c.length>0)),ue=e.lastPushedAiProfileWatermarks,ge=e.lastPushedAiProfileChangeKeys,O=!ue||ue.size===0,_e=(Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(c=>({op:"ai-profile-upsert",profile:{id:String(c.id||"").trim(),workspaceId:String(c.workspaceId||"").trim(),profileToken:String(c.profileToken||"").trim(),name:String(c.name||"").trim(),username:String(c.username||"").trim(),icon:String(c.icon||"Bot").trim()||"Bot",color:String(c.color||"#8b5cf6").trim()||"#8b5cf6",avatarUrl:Qc(c.avatarUrl),avatarSourceUrl:Qc(c.avatarSourceUrl),avatarRevision:Number.isFinite(Number(c.avatarRevision))?Math.max(0,Math.floor(Number(c.avatarRevision))):0,avatarUpdatedAt:typeof c.avatarUpdatedAt=="string"&&c.avatarUpdatedAt.trim().length>0?c.avatarUpdatedAt.trim():null,description:typeof c.description=="string"&&c.description.trim()||null,role:typeof c.role=="string"&&c.role.trim()||null,provider:typeof c.provider=="string"&&c.provider.trim()||null,model:typeof c.model=="string"&&c.model.trim()||null,surfaceType:zg(c.surfaceType),seatScope:Hg(c.seatScope),providerMetadata:c.providerMetadata&&typeof c.providerMetadata=="object"&&!Array.isArray(c.providerMetadata)?c.providerMetadata:null,archivedAt:typeof c.archivedAt=="string"&&c.archivedAt.trim().length>0?c.archivedAt.trim():null,archivedBy:typeof c.archivedBy=="string"&&c.archivedBy.trim().length>0?c.archivedBy.trim():null,archivedReason:typeof c.archivedReason=="string"&&c.archivedReason.trim()||null,mergedIntoProfileId:typeof c.mergedIntoProfileId=="string"&&c.mergedIntoProfileId.trim().length>0?c.mergedIntoProfileId.trim():null,rosterStateUpdatedAt:typeof c.rosterStateUpdatedAt=="string"&&c.rosterStateUpdatedAt.trim().length>0?c.rosterStateUpdatedAt.trim():null,createdAt:String(c.createdAt||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),lastActiveAt:typeof c.lastActiveAt=="string"&&c.lastActiveAt.trim().length>0?c.lastActiveAt.trim():null}})).filter(c=>c.profile.id.length>0&&c.profile.workspaceId.length>0).filter(c=>O?!0:rh(ld,c.profile,{watermarks:ue,changeKeys:ge})),Ne=oh(e.currentDocumentPaths,(Array.isArray(e.documents)?e.documents:[]).map(c=>String(c?.path||"").trim())),se=new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!Ne.has(c))),ce=new Map((Array.isArray(e.documents)?e.documents:[]).map(c=>[String(c?.path||"").trim(),String(c?.updatedAt||"").trim()]).filter(([c])=>c.length>0)),Re=e.lastPushedDocumentWatermarks,Pe=!Re||Re.size===0,Ae=(Array.isArray(e.documents)?e.documents:[]).map(c=>({op:"document-upsert",path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),content:typeof c.content=="string"?c.content:"",assetId:typeof c.assetId=="string"&&c.assetId.trim().length>0?c.assetId.trim():void 0,documentId:typeof c.documentId=="string"&&c.documentId.trim().length>0?c.documentId.trim():null,referenceNumber:Number.isFinite(Number(c.referenceNumber))?Math.max(1,Math.floor(Number(c.referenceNumber))):null,version:Number.isFinite(Number(c.version))?Math.max(1,Math.floor(Number(c.version))):null,taskId:typeof c.taskId=="string"&&c.taskId.trim().length>0?c.taskId.trim():null,linkTargetType:c.linkTargetType==="initiative"||c.linkTargetType==="workstream"||c.linkTargetType==="task"?c.linkTargetType:null,linkTargetId:typeof c.linkTargetId=="string"&&c.linkTargetId.trim().length>0?c.linkTargetId.trim():null,logicalName:typeof c.logicalName=="string"&&c.logicalName.trim().length>0?c.logicalName.trim():null,caption:typeof c.caption=="string"&&c.caption.trim().length>0?c.caption.trim():null,originalFilename:typeof c.originalFilename=="string"&&c.originalFilename.trim().length>0?c.originalFilename.trim():null,linkRole:c.linkRole==="reference"?"reference":"attachment"})).filter(c=>c.path.length>0).filter(c=>Pe?!0:Re.get(c.path)!==c.updatedAt),Ee=oh(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(c=>String(c?.path||"").trim())),$=new Set(Array.from(e.lastPushedAssetPaths||new Set).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!Ee.has(c))),T=new Map((Array.isArray(e.assets)?e.assets:[]).map(c=>[String(c?.path||"").trim(),String(c?.updatedAt||"").trim()]).filter(([c])=>c.length>0)),b=e.lastPushedAssetWatermarks,N=!b||b.size===0,D=(Array.isArray(e.assets)?e.assets:[]).map(c=>({op:"asset-upsert",path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),contentBase64:typeof c.contentBase64=="string"?c.contentBase64:"",assetId:typeof c.assetId=="string"&&c.assetId.trim().length>0?c.assetId.trim():void 0,kind:c.kind==="image"?"image":"file",mimeType:typeof c.mimeType=="string"&&c.mimeType.trim().length>0?c.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(c.referenceNumber))?Math.max(1,Math.floor(Number(c.referenceNumber))):null,taskId:typeof c.taskId=="string"&&c.taskId.trim().length>0?c.taskId.trim():null,linkTargetType:c.linkTargetType==="initiative"||c.linkTargetType==="workstream"||c.linkTargetType==="task"?c.linkTargetType:null,linkTargetId:typeof c.linkTargetId=="string"&&c.linkTargetId.trim().length>0?c.linkTargetId.trim():null,logicalName:typeof c.logicalName=="string"&&c.logicalName.trim().length>0?c.logicalName.trim():null,caption:typeof c.caption=="string"&&c.caption.trim().length>0?c.caption.trim():null,originalFilename:typeof c.originalFilename=="string"&&c.originalFilename.trim().length>0?c.originalFilename.trim():null,linkRole:c.linkRole==="reference"?"reference":c.linkRole==="image"?"image":"attachment"})).filter(c=>c.path.length>0&&c.contentBase64.length>0).filter(c=>N?!0:b.get(c.path)!==c.updatedAt),te=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],P=new Set(te.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),H=new Set(te.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),be=e.lastPushedDocumentReviewSessionIds||new Set,U=new Map(te.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),ie=e.lastPushedDocumentReviewSessionWatermarks,ee=!ie||ie.size===0,Q=te.map(c=>({op:"document-review-session-upsert",session:{id:String(c.id||"").trim(),assetId:String(c.assetId||"").trim(),documentId:typeof c.documentId=="string"&&c.documentId.trim().length>0?c.documentId.trim():null,documentVersion:Number.isFinite(Number(c.documentVersion))?Math.max(1,Math.floor(Number(c.documentVersion))):null,title:typeof c.title=="string"&&c.title.trim().length>0?c.title.trim():null,status:c.status==="resolved"?"resolved":"open",comments:[],createdByActorId:typeof c.createdByActorId=="string"&&c.createdByActorId.trim().length>0?c.createdByActorId.trim():null,updatedByActorId:typeof c.updatedByActorId=="string"&&c.updatedByActorId.trim().length>0?c.updatedByActorId.trim():null,createdAt:String(c.createdAt||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:typeof c.deletedAt=="string"&&c.deletedAt.trim().length>0?c.deletedAt.trim():null}})).filter(c=>c.session.id.length>0&&c.session.assetId.length>0&&!c.session.deletedAt).filter(c=>ee?!0:ie.get(c.session.id)!==c.session.updatedAt),q=te.filter(c=>String(c?.deletedAt||"").trim().length>0).map(c=>({sessionId:String(c?.id||"").trim(),deletedAt:String(c?.deletedAt||c?.updatedAt||c?.createdAt||t).trim()||t})).filter(c=>c.sessionId.length>0).filter(c=>ee?!0:ie.get(c.sessionId)!==c.deletedAt),Se=Array.from(be).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!P.has(c)),we=[...Se.map(c=>({sessionId:c,deletedAt:t})),...q],Te=new Set([...Se,...q.map(c=>c.sessionId)]),Me=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],nt=new Set(Me.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),gt=new Set(Me.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),lt=e.lastPushedDocumentReviewCommentIds||new Set,St=new Map(Me.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),qe=e.lastPushedDocumentReviewCommentWatermarks,Ct=!qe||qe.size===0,dt=Me.map(c=>({op:"document-review-comment-upsert",comment:{id:String(c.id||"").trim(),sessionId:String(c.sessionId||"").trim(),body:String(c.body||"").trim(),anchor:c.anchor??null,order:Number.isFinite(Number(c.order))?Math.max(0,Math.floor(Number(c.order))):0,authorActorId:typeof c.authorActorId=="string"&&c.authorActorId.trim().length>0?c.authorActorId.trim():null,createdAt:String(c.createdAt||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:typeof c.deletedAt=="string"&&c.deletedAt.trim().length>0?c.deletedAt.trim():null}})).filter(c=>c.comment.id.length>0&&c.comment.sessionId.length>0&&!c.comment.deletedAt).filter(c=>Ct?!0:qe.get(c.comment.id)!==c.comment.updatedAt),Xe=Me.filter(c=>String(c?.deletedAt||"").trim().length>0).map(c=>({commentId:String(c?.id||"").trim(),deletedAt:String(c?.deletedAt||c?.updatedAt||c?.createdAt||t).trim()||t})).filter(c=>c.commentId.length>0).filter(c=>Ct?!0:qe.get(c.commentId)!==c.deletedAt),it=Array.from(lt).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!nt.has(c)),ne=[...it.map(c=>({commentId:c,deletedAt:t})),...Xe],st=new Set([...it,...Xe.map(c=>c.commentId)]),Ze=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],Pt=new Set(Ze.map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),kt=new Set(Ze.filter(c=>String(c?.deletedAt||"").trim().length===0).map(c=>String(c?.id||"").trim()).filter(c=>c.length>0)),It=e.lastPushedAnnotatedAttachmentSessionIds||new Set,Ft=new Map(Ze.map(c=>[String(c?.id||"").trim(),String(c?.deletedAt||c?.updatedAt||c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),Mt=e.lastPushedAnnotatedAttachmentSessionWatermarks,Be=!Mt||Mt.size===0,et=Ze.map(c=>({op:"annotated-attachment-session-upsert",session:{id:String(c.id||"").trim(),workspaceId:String(c.workspaceId||"").trim(),taskId:String(c.taskId||"").trim(),baseImageAssetId:String(c.baseImageAssetId||"").trim(),title:typeof c.title=="string"&&c.title.trim().length>0?c.title.trim():null,globalInstruction:typeof c.globalInstruction=="string"&&c.globalInstruction.trim().length>0?c.globalInstruction.trim():null,annotations:Array.isArray(c.annotations)?c.annotations:[],createdByActorId:typeof c.createdByActorId=="string"&&c.createdByActorId.trim().length>0?c.createdByActorId.trim():null,updatedByActorId:typeof c.updatedByActorId=="string"&&c.updatedByActorId.trim().length>0?c.updatedByActorId.trim():null,createdAt:String(c.createdAt||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:typeof c.deletedAt=="string"&&c.deletedAt.trim().length>0?c.deletedAt.trim():null}})).filter(c=>c.session.id.length>0&&c.session.workspaceId.length>0&&c.session.baseImageAssetId.length>0&&!c.session.deletedAt).filter(c=>Be?!0:Mt.get(c.session.id)!==c.session.updatedAt),Ue=Ze.filter(c=>String(c?.deletedAt||"").trim().length>0).map(c=>({sessionId:String(c?.id||"").trim(),deletedAt:String(c?.deletedAt||c?.updatedAt||c?.createdAt||t).trim()||t})).filter(c=>c.sessionId.length>0).filter(c=>Be?!0:Mt.get(c.sessionId)!==c.deletedAt),Je=Array.from(It).map(c=>String(c||"").trim()).filter(c=>c.length>0&&!Pt.has(c)),yt=[...Je.map(c=>({sessionId:c,deletedAt:t})),...Ue],ct=new Set([...Je,...Ue.map(c=>c.sessionId)]),ae=VS(Array.isArray(e.taskEvents)?e.taskEvents:[]),Qe=new Map(ae.map(c=>[String(c?.id||"").trim(),String(c?.createdAt||"").trim()]).filter(([c])=>c.length>0)),bt=e.lastPushedTaskEventWatermarks,Ot=!bt||bt.size===0,Bt=ae.map(c=>{const Y=c.entityType==="initiative"||c.entityType==="workstream"?c.entityType:"task",ye=String(c.entityId||c.taskId||"").trim(),Ie={id:String(c.id||"").trim(),workspaceId:String(c.workspaceId||"").trim(),entityType:Y,entityId:ye,taskId:Y==="task"?String(c.taskId||ye).trim():void 0,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&&typeof c.details=="object"&&!Array.isArray(c.details)?c.details:{},createdAt:String(c.createdAt||"").trim()};return Y==="task"?{op:"task-event-upsert",event:{...Ie,entityType:"task",taskId:String(Ie.taskId||ye).trim()}}:{op:"entity-event-upsert",event:{...Ie,entityType:Y,taskId:void 0}}}).filter(c=>c.event.id.length>0&&c.event.entityId.length>0&&c.event.workspaceId.length>0&&c.event.action.length>0&&Number.isFinite(Date.parse(c.event.createdAt))).filter(c=>Ot?!0:bt.get(c.event.id)!==c.event.createdAt),Fe=[...ve,...pe,...e.taxonomyState&&typeof e.taxonomyState=="object"?[{op:"taxonomy-upsert",taxonomyState:e.taxonomyState,updatedAt:t}]:Array.isArray(e.taxonomies)?[{op:"taxonomy-upsert",taxonomies:e.taxonomies,updatedAt:t}]:[],..._e,...Ae,...Array.from(se).map(c=>({op:"document-delete",path:c,deletedAt:t})),...D,...Array.from($).map(c=>({op:"asset-delete",path:c,deletedAt:t})),...Q,...we.map(c=>({op:"document-review-session-delete",sessionId:c.sessionId,deletedAt:c.deletedAt})),...dt,...ne.map(c=>({op:"document-review-comment-delete",commentId:c.commentId,deletedAt:c.deletedAt})),...et,...yt.map(c=>({op:"annotated-attachment-session-delete",sessionId:c.sessionId,deletedAt:c.deletedAt})),...Bt,...g,...v,...Array.from(W).map(c=>({op:"delete",taskId:c,deletedAt:s.get(c)||t}))],Lt=e.baselineResetReason??null,vt=c=>{const Y=c.upsertCount+(c.deleteCount||0);if(c.currentCount===0&&Y===0)return{mode:"none",reason:null,currentCount:0,baselineCount:c.baselineCount,changeCount:Y};if(c.alwaysFull)return{mode:Y>0?"send-all":"none",reason:Y>0?"full-state-domain":null,currentCount:c.currentCount,baselineCount:c.baselineCount,changeCount:Y};const ye=c.baselineCount===0&&c.currentCount>0&&c.upsertCount>=c.currentCount;return{mode:ye?"send-all":"delta",reason:ye?Lt||"missing-baseline":null,currentCount:c.currentCount,baselineCount:c.baselineCount,changeCount:Y}},E=Fe.reduce((c,Y)=>{const ye=String(Y.op||"").trim();return c[ye]=(c[ye]||0)+1,c},{});return{changes:Fe,currentTaskIds:new Set(Array.from(A).filter(c=>!n.has(c))),currentTaskWatermarks:new Map(Array.from(y.entries()).filter(([c])=>!n.has(c))),currentTaskChangeKeys:new Map(Array.from(k.entries()).filter(([c])=>!n.has(c))),deleteTaskIds:W,currentInitiativeIds:V,currentInitiativeWatermarks:B,currentWorkstreamIds:re,currentWorkstreamWatermarks:x,currentAiProfileIds:X,currentAiProfileWatermarks:M,currentAiProfileChangeKeys:F,currentDocumentPaths:Ne,deleteDocumentPaths:se,currentDocumentWatermarks:ce,currentAssetPaths:Ee,deleteAssetPaths:$,currentAssetWatermarks:T,currentDocumentReviewSessionIds:H,deleteDocumentReviewSessionIds:Te,currentDocumentReviewSessionWatermarks:U,currentDocumentReviewCommentIds:gt,deleteDocumentReviewCommentIds:st,currentDocumentReviewCommentWatermarks:St,currentAnnotatedAttachmentSessionIds:kt,deleteAnnotatedAttachmentSessionIds:ct,currentAnnotatedAttachmentSessionWatermarks:Ft,currentTaskEventWatermarks:Qe,pushedWatermarks:S,pushedTaskChangeKeys:h,deltaDiagnostics:{totalChanges:Fe.length,byOp:E,baselineResetReason:Lt,domains:{tasks:vt({currentCount:A.size,baselineCount:o?.size||0,upsertCount:g.length+v.length,deleteCount:W.size}),initiatives:vt({currentCount:V.size,baselineCount:J?.size||0,upsertCount:ve.length}),workstreams:vt({currentCount:re.size,baselineCount:K?.size||0,upsertCount:pe.length}),aiProfiles:vt({currentCount:X.size,baselineCount:ue?.size||0,upsertCount:_e.length}),documents:vt({currentCount:Ne.size,baselineCount:Re?.size||0,upsertCount:Ae.length,deleteCount:se.size}),assets:vt({currentCount:Ee.size,baselineCount:b?.size||0,upsertCount:D.length,deleteCount:$.size}),documentReviewSessions:vt({currentCount:H.size,baselineCount:ie?.size||0,upsertCount:Q.length,deleteCount:Te.size}),documentReviewComments:vt({currentCount:gt.size,baselineCount:qe?.size||0,upsertCount:dt.length,deleteCount:st.size}),annotatedAttachmentSessions:vt({currentCount:kt.size,baselineCount:Mt?.size||0,upsertCount:et.length,deleteCount:ct.size}),taskEvents:vt({currentCount:Qe.size,baselineCount:bt?.size||0,upsertCount:Bt.length}),taxonomy:vt({currentCount:e.taxonomyState&&typeof e.taxonomyState=="object"||Array.isArray(e.taxonomies)?1:0,baselineCount:0,upsertCount:E["taxonomy-upsert"]||0,alwaysFull:!0})}}}}function KS(e){const t=(e.tasks||[]).map(i=>`${i.id}:${i.updatedAt||i.createdAt||""}:${i.status}`).sort(),n=(e.archivedTasks||[]).map(i=>`${i.id}:${i.updatedAt||i.createdAt||""}:${i.status}`).sort(),s=e.pendingDeletedTaskIds?Array.from(e.pendingDeletedTaskIds).sort():[],o=(e.initiatives||[]).map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),title:String(i.title||"").trim(),ownerId:typeof i.ownerId=="string"?i.ownerId.trim():"",attachments:im(i.attachments)||[],isArchived:!!i.isArchived})).filter(i=>i.id.length>0).sort((i,d)=>i.id.localeCompare(d.id)),l=(e.workstreams||[]).map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),initiativeId:typeof i.initiativeId=="string"?i.initiativeId.trim():"",title:String(i.title||"").trim(),ownerId:typeof i.ownerId=="string"?i.ownerId.trim():"",attachments:im(i.attachments)||[],isArchived:!!i.isArchived})).filter(i=>i.id.length>0).sort((i,d)=>i.id.localeCompare(d.id));return JSON.stringify({workspaceId:e.workspaceId,initiatives:o,workstreams:l,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(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),name:String(i.name||"").trim(),username:String(i.username||"").trim(),archivedAt:String(i.archivedAt||"").trim(),archivedReason:String(i.archivedReason||"").trim(),mergedIntoProfileId:String(i.mergedIntoProfileId||"").trim(),rosterStateUpdatedAt:String(i.rosterStateUpdatedAt||"").trim()})).filter(i=>i.id.length>0).sort((i,d)=>i.id.localeCompare(d.id)):[],taskEvents:Array.isArray(e.taskEvents)?e.taskEvents.map(i=>({id:String(i.id||"").trim(),taskId:String(i.taskId||"").trim(),action:String(i.action||"").trim(),actor:String(i.actor||"").trim(),actorType:i.actorType==="ai"||i.actorType==="human"||i.actorType==="system"?i.actorType:"system",createdAt:String(i.createdAt||"").trim()})).filter(i=>i.id.length>0&&i.taskId.length>0).sort((i,d)=>i.id.localeCompare(d.id)):[],documents:Array.isArray(e.documents)?e.documents.map(i=>({path:String(i.path||"").trim(),updatedAt:String(i.updatedAt||"").trim(),length:typeof i.content=="string"?i.content.length:0})).filter(i=>i.path.length>0).sort((i,d)=>i.path.localeCompare(d.path)):[],assets:Array.isArray(e.assets)?e.assets.map(i=>({path:String(i.path||"").trim(),updatedAt:String(i.updatedAt||"").trim(),length:typeof i.contentBase64=="string"?i.contentBase64.length:0,kind:i.kind==="image"?"image":"file"})).filter(i=>i.path.length>0).sort((i,d)=>i.path.localeCompare(d.path)):[],documentReviewSessions:Array.isArray(e.documentReviewSessions)?e.documentReviewSessions.map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),assetId:String(i.assetId||"").trim(),status:i.status==="resolved"?"resolved":"open",deletedAt:String(i.deletedAt||"").trim(),commentCount:Array.isArray(i.comments)?i.comments.length:0})).filter(i=>i.id.length>0).sort((i,d)=>i.id.localeCompare(d.id)):[],documentReviewComments:Array.isArray(e.documentReviewComments)?e.documentReviewComments.map(i=>({id:String(i.id||"").trim(),sessionId:String(i.sessionId||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),deletedAt:String(i.deletedAt||"").trim(),bodyLength:String(i.body||"").length})).filter(i=>i.id.length>0).sort((i,d)=>i.id.localeCompare(d.id)):[],annotatedAttachmentSessions:Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions.map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),taskId:String(i.taskId||"").trim(),baseImageAssetId:String(i.baseImageAssetId||"").trim(),deletedAt:String(i.deletedAt||"").trim(),annotationCount:Array.isArray(i.annotations)?i.annotations.length:0})).filter(i=>i.id.length>0).sort((i,d)=>i.id.localeCompare(d.id)):[],active:t,archived:n,pendingDeletes:s})}function qu(){return{version:2,enabled:!1,phase:"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null,pushBaseline:null}}function Xo(e){const t=String(e||"").trim();return t.length>0?t:null}function ch(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function ZS(e){if(!Array.isArray(e)||e.length<2)return null;const t=String(e[0]||"").trim(),n=String(e[1]||"").trim();return!t||!n?null:[t,n]}function YS(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function lh(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n=s=>Array.isArray(t[s])?t[s].map(o=>ZS(o)).filter(o=>Array.isArray(o)):[];return{taskIds:YS(t.taskIds),taskWatermarks:n("taskWatermarks"),taskChangeKeys:n("taskChangeKeys"),initiativeWatermarks:n("initiativeWatermarks"),workstreamWatermarks:n("workstreamWatermarks"),aiProfileWatermarks:n("aiProfileWatermarks"),aiProfileChangeKeys:n("aiProfileChangeKeys"),documentWatermarks:n("documentWatermarks"),assetWatermarks:n("assetWatermarks"),documentReviewSessionWatermarks:n("documentReviewSessionWatermarks"),documentReviewCommentWatermarks:n("documentReviewCommentWatermarks"),annotatedAttachmentSessionWatermarks:n("annotatedAttachmentSessionWatermarks"),taskEventWatermarks:n("taskEventWatermarks"),taxonomyStateFingerprint:String(t.taxonomyStateFingerprint||"").trim()}}function JS(e,t){if(!!!(e.enabled??e.cloudSyncEnabled))return"idle";const s=String(e.phase||"").trim().toLowerCase();if(s==="idle"||s==="provision-local"||s==="attach-cloud"||s==="active"||s==="error")return s;const o=String(e.bootstrapMode||"").trim().toLowerCase();if(o==="provision-local"||o==="attach-cloud")return o;const l=String(e.sourceOfTruth||"").trim().toLowerCase();return e.onboardingCompleted?"active":l==="cloud"?t.lastPullAt?"active":"attach-cloud":l==="local"?t.lastPullAt||t.lastPushAt?"active":"provision-local":(t.lastPullAt||t.lastPushAt,"active")}function QS(e){const t=qu();if(!e||typeof e!="object")return{state:t,changed:!1};const n=e,s=n.lastErrorMessage,o=typeof s=="string"&&s.trim().length>0?s:null,l={version:2,enabled:!!(n.enabled??n.cloudSyncEnabled),phase:"idle",setupIntent:ch(n.setupIntent),pullCursor:Xo(n.pullCursor),lastPullAt:Xo(n.lastPullAt),lastPushAt:Xo(n.lastPushAt),lastSyncedAt:Xo(n.lastSyncedAt),lastErrorMessage:o,pushBaseline:lh(n.pushBaseline)};l.phase=JS(n,l),l.enabled||(l.phase="idle",l.pullCursor=null);const d=Number(n.version||0)!==2||!!(n.enabled??n.cloudSyncEnabled)!==l.enabled||String(n.phase||"").trim()!==l.phase||ch(n.setupIntent)!==l.setupIntent||Xo(n.pullCursor)!==l.pullCursor||Xo(n.lastPullAt)!==l.lastPullAt||Xo(n.lastPushAt)!==l.lastPushAt||Xo(n.lastSyncedAt)!==l.lastSyncedAt||o!==l.lastErrorMessage||JSON.stringify(lh(n.pushBaseline))!==JSON.stringify(l.pushBaseline);return{state:l,changed:d}}const XS="taskforce.sync.lease.v1",ew="taskforce.sync.lease.v1",tw=2500,aw=9e3;function Ql(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function Eu(e){const t=String(e||"").trim();return t.length>0?t:null}function hp(e){return`${XS}.${e}`}function nw(e){if(!e)return null;try{const t=JSON.parse(e),n=String(t?.ownerId||"").trim(),s=String(t?.workspaceId||"").trim(),o=String(t?.operation||"").trim(),l=String(t?.heartbeatAt||"").trim(),i=String(t?.expiresAt||"").trim();return!n||!s||!l||!i||o!=="pull"&&o!=="push"&&o!=="repair"?null:{ownerId:n,workspaceId:s,operation:o,heartbeatAt:l,expiresAt:i}}catch{return null}}function rw(e,t,n,s){return{ownerId:e,workspaceId:t,operation:n,heartbeatAt:new Date(s).toISOString(),expiresAt:new Date(s+aw).toISOString()}}function sw(e,t=Date.now()){if(!e)return!0;const n=Date.parse(e.expiresAt);return!Number.isFinite(n)||n<=t}function gp(e,t){const n={...e,...t,version:2,phase:t.phase||e.phase,setupIntent:t.setupIntent===void 0?e.setupIntent??null:t.setupIntent??null,pullCursor:t.pullCursor===void 0?e.pullCursor:Eu(t.pullCursor),lastPullAt:t.lastPullAt===void 0?e.lastPullAt:Eu(t.lastPullAt),lastPushAt:t.lastPushAt===void 0?e.lastPushAt:Eu(t.lastPushAt),lastSyncedAt:t.lastSyncedAt===void 0?e.lastSyncedAt:Eu(t.lastSyncedAt),lastErrorMessage:t.lastErrorMessage===void 0?e.lastErrorMessage:t.lastErrorMessage??null,pushBaseline:t.pushBaseline===void 0?e.pushBaseline??null:t.pushBaseline??null};return n.enabled||(n.phase="idle",n.setupIntent=null,n.pullCursor=null),n}function ow(e){return{...e,pushBaseline:null}}function iw(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:n,setWorkspaceSyncPhase:s,setWorkspaceSyncSetupIntent:o,setWorkspaceLastPullAt:l,setWorkspaceLastPushAt:i,setWorkspaceLastErrorMessage:d}=e,[m,y]=r.useState(null),k=r.useRef(null),S=r.useRef(null),h=r.useRef(0),g=r.useRef(!1),v=r.useRef(!1),A=r.useRef(""),_=r.useRef(""),I=r.useRef(new Set),W=r.useRef(new Set),V=r.useRef(new Map),B=r.useRef(null),J=r.useRef(qu()),de=r.useRef(""),ve=r.useRef(null),re=r.useRef(null),x=r.useRef(null),K=r.useRef(null);if(!de.current){const T=Date.now().toString(36),b=Math.random().toString(36).slice(2,10);de.current=`sync-lease-${T}-${b}`}const me=r.useCallback(()=>{h.current=0,S.current=null,k.current!==null&&typeof window<"u"&&(window.clearTimeout(k.current),k.current=null),y(null)},[]),pe=r.useCallback((T,b)=>{if(typeof window>"u")return;const N=Math.max(1,h.current+1);h.current=N;const D=AS(N),te=Number(b?.minDelayMs),P=Number.isFinite(te)&&te>0?Math.max(D,Math.floor(te)):D,H=Date.now()+P;S.current=H,y(new Date(H).toISOString()),k.current!==null&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=null,S.current=null,y(null),T()},P)},[]),X=r.useCallback(()=>{const T=S.current;return typeof T=="number"&&Number.isFinite(T)&&T>Date.now()},[]),M=r.useCallback(T=>{if(typeof window>"u")return null;const b=String(T||"").trim();return Ql(b)?nw(window.localStorage.getItem(hp(b))):null},[]),F=r.useCallback(T=>{const b=String(T||"").trim();if(b)try{K.current?.postMessage({workspaceId:b})}catch{}},[]),ue=r.useCallback((T,b)=>{if(typeof window>"u")return null;const N=String(T||"").trim();if(!Ql(N))return null;const D=rw(de.current,N,b,Date.now());try{window.localStorage.setItem(hp(N),JSON.stringify(D))}catch{return null}return F(N),D},[F]),ge=r.useCallback(()=>{x.current!==null&&typeof window<"u"&&(window.clearInterval(x.current),x.current=null)},[]),O=r.useCallback((T,b)=>{if(typeof window>"u")return;const N=String(T||ve.current||"").trim();if(!N)return;const D=M(N),te=D?.ownerId===de.current;if(!(!b?.force&&D&&!te)){ge();try{window.localStorage.removeItem(hp(N))}catch{}ve.current=null,re.current=null,F(N)}},[F,M,ge]),_e=r.useCallback((T,b)=>{typeof window>"u"||(ge(),x.current=window.setInterval(()=>{const N=String(ve.current||"").trim(),D=re.current;if(!N||!D){ge();return}if(M(N)?.ownerId!==de.current){ge(),ve.current=null,re.current=null;return}ue(N,D)},tw),ve.current=T,re.current=b)},[M,ge,ue]),Ne=r.useCallback(async(T,b)=>{if(typeof window>"u")return!0;const N=String(T||"").trim();if(!Ql(N))return!1;const D=M(N);if(D?.ownerId===de.current)return ue(N,b)?(_e(N,b),!0):!1;if(D&&!sw(D)||!ue(N,b))return!1;const H=M(N);return!H||H.ownerId!==de.current?!1:(_e(N,b),!0)},[M,_e,ue]),se=r.useCallback(T=>{O(T,{force:!0})},[O]),ce=r.useCallback(T=>{const b=J.current,N=gp(b,{enabled:!!T.enabled,phase:T.phase||b.phase,setupIntent:T.setupIntent,pullCursor:T.pullCursor,lastPullAt:T.lastPullAt,lastPushAt:T.lastPushAt,lastSyncedAt:T.lastSyncedAt,lastErrorMessage:T.lastErrorMessage});J.current=N,B.current=N.pullCursor,n(N.enabled),s(N.phase),o(N.setupIntent??null),l(N.lastPullAt),i(N.lastPushAt),d(N.lastErrorMessage??null)},[n,s,o,l,i,d]),Re=r.useCallback(T=>{const b=gp(J.current,T);return ce(b),b},[ce]),Pe=r.useCallback(()=>J.current,[]),Ae=r.useCallback(async T=>{const b=gp(J.current,T);J.current=b,B.current=b.pullCursor;const N=await sf({workspaceId:t,stateKey:"workspace-sync",patch:ow(b),throwOnError:!0,respectFailureCooldown:!1}),D=N.response,te=N.payload;if(N.skipped)return ce(b),b;if(!D)throw new Error("Failed to persist workspace sync state (missing response)");if(!D.ok||te?.success===!1)throw new Error(te?.error||`Failed to persist workspace sync state (${D.status})`);return ce(b),b},[ce,t]),Ee=r.useCallback(async()=>{if(!Ql(t)){const T=qu();J.current=T,ce(T);return}try{const T=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!T.ok)return;const b=await T.json().catch(()=>({})),N=QS(b?.state&&typeof b.state=="object"?b.state:null);J.current=N.state,ce(N.state),N.changed&&Ae(N.state)}catch{}},[ce,t,Ae]),$=r.useCallback(async(T,b)=>{if(!Ql(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!T.enabled)return await Ae({enabled:!1,phase:"idle",setupIntent:null,pullCursor:null}),{success:!0};if(!b.isAuthenticated)return{success:!1,error:"Sign in is required before enabling workspace sync."};if(!b.cloudAuthConfigured)return{success:!1,error:"Cloud authentication endpoint is not configured."};const N=await b.ensureCloudWorkspaceReadyForSync();return N.success?(await Ae({enabled:!0,phase:N.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:N.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[t,Ae]);return r.useEffect(()=>{A.current="",_.current="",I.current=new Set,W.current=new Set,V.current=new Map,B.current=null,J.current=qu(),g.current=!1,v.current=!1,O(),me()},[me,t,O]),r.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const T=new BroadcastChannel(ew);return K.current=T,()=>{T.close(),K.current===T&&(K.current=null)}},[]),r.useEffect(()=>()=>{k.current!==null&&typeof window<"u"&&(window.clearTimeout(k.current),k.current=null),O()},[O]),{workspaceRetryAt:m,isWorkspaceRetryPending:X,workspacePushInFlightRef:g,workspacePullInFlightRef:v,workspaceLastPushedSignatureRef:A,workspacePendingSignatureRef:_,workspaceLastPushedTaskIdsRef:I,workspaceDeletedTaskIdsRef:W,workspaceDeletedTaskWatermarksRef:V,workspacePullCursorRef:B,clearWorkspaceRetry:me,scheduleWorkspaceRetry:pe,persistWorkspaceSyncPatch:Ae,applyWorkspaceSyncPatchLocally:Re,readWorkspaceSyncStateSnapshot:Pe,loadWorkspaceSyncState:Ee,applyWorkspaceSyncStateSnapshot:ce,saveWorkspaceCloudSyncSettings:$,acquireWorkspaceSyncLease:Ne,releaseWorkspaceSyncLease:O,forceClearWorkspaceSyncLease:se,readWorkspaceSyncLease:M}}class cw{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 n=typeof t.eventId=="string"?t.eventId.trim():"";if(n&&this.seenEventIds.has(n))return this.telemetry.duplicateDiscarded+=1,{accepted:!1,reason:"duplicate",shouldRecover:!1};const s=typeof t.serverEpoch=="string"?t.serverEpoch.trim():"",o=Number(t.seq);if(!(s.length>0&&Number.isFinite(o)&&o>=0))return n?(this.rememberEventId(n),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}):(this.telemetry.invalidDiscarded+=1,{accepted:!1,reason:"invalid",shouldRecover:!1});const i=Math.floor(o);if(this.activeEpoch&&this.activeEpoch!==s)return this.activeEpoch=s,this.lastSeq=i,n&&this.rememberEventId(n),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=s,this.lastSeq=i,n&&this.rememberEventId(n),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};const d=this.lastSeq;if(typeof d=="number"){if(i<=d){this.telemetry.outOfOrderDiscarded+=i===d?0:1,this.telemetry.duplicateDiscarded+=i===d?1:0;const m=i<d;return m&&(this.telemetry.recoveryTriggered+=1),{accepted:!1,reason:i===d?"duplicate":"out-of-order",shouldRecover:m}}if(i>d+1)return this.telemetry.outOfOrderDiscarded+=1,this.telemetry.recoveryTriggered+=1,{accepted:!1,reason:"out-of-order",shouldRecover:!0}}return this.lastSeq=i,n&&this.rememberEventId(n),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 n=this.seenEventIdQueue.shift();n&&this.seenEventIds.delete(n)}}}function Vg(e){const{enabled:t,workspaceId:n,websocketUrl:s,reconnectBaseMs:o=400,reconnectMaxMs:l=1e4,degradeAfterAttempts:i=5,replayLimit:d=200,onSignal:m,onTelemetry:y,userId:k}=e,[S,h]=r.useState("degraded-fallback"),g=r.useRef(null),v=r.useRef(null),A=r.useRef(0),_=r.useRef(""),I=r.useRef(!1),W=r.useRef(null),V=r.useRef(null),B=r.useRef(new cw),J=r.useRef(m),de=r.useRef(y);r.useEffect(()=>{J.current=m},[m]),r.useEffect(()=>{de.current=y},[y]);const[ve,re]=r.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),x=r.useMemo(()=>String(n||"").trim(),[n]),K=r.useMemo(()=>String(s||"").trim(),[s]);return r.useEffect(()=>{let me=!1;const pe=()=>{v.current!==null&&(window.clearTimeout(v.current),v.current=null)},X=()=>{const ce=g.current;if(g.current=null,ce)try{ce.close()}catch{}},M=ce=>ce==="taskforce:replay-gap"||ce==="taskforce:replay-reset"?4:ce==="taskforce:mutation"||ce==="taskforce:replay"?3:1,F=ce=>{const Re=V.current;if(Re){const Pe=M(Re.type),Ae=M(ce.type);if(Ae<Pe||Ae===Pe&&Re.eventId&&!ce.eventId)return}V.current=ce,W.current!==null&&window.clearTimeout(W.current),W.current=window.setTimeout(()=>{W.current=null;const Pe=J.current;if(!V.current||typeof Pe!="function")return;const Ae=V.current;V.current=null,Pe(Ae)},80)},ue=ce=>{try{const Re=JSON.parse(String(ce.data||""));return!Re||typeof Re!="object"?null:Re}catch{return null}},ge=ce=>{const Re=typeof ce.serverEpoch=="string"?ce.serverEpoch.trim():"",Pe=Number(ce.seq);!Re||!Number.isFinite(Pe)||Pe<0||(_.current=`${Re}:${Math.floor(Pe)}`,I.current=!1)},O=()=>{const ce=B.current.getTelemetry();re(ce);const Re=de.current;typeof Re=="function"&&Re(ce)},_e=ce=>{const Re={type:"taskforce:replay",workspaceId:x,limit:d},Pe=_.current;Pe&&(Re.cursor=Pe),ce.send(JSON.stringify(Re))},Ne=()=>{if(!t||me)return;pe(),A.current+=1;const ce=A.current,Re=Math.max(50,Math.floor(o)),Pe=Math.max(Re,Math.floor(l)),Ae=Math.min(Pe,Re*Math.pow(2,Math.max(0,ce-1)));h(ce>=i?"degraded-fallback":"reconnecting"),v.current=window.setTimeout(()=>{me||(v.current=null,se())},Ae)},se=()=>{if(!t||me||!x||!K)return;X();let ce;try{ce=new WebSocket(K)}catch{Ne();return}g.current=ce,ce.addEventListener("open",()=>{A.current=0,h("connected"),ce.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:x,userId:k||void 0})),_e(ce)}),ce.addEventListener("message",Re=>{const Pe=ue(Re);if(!Pe||typeof Pe.type!="string")return;const Ae=typeof Pe.workspaceId=="string"?Pe.workspaceId.trim():x;if(!(!Ae||Ae!==x)){if(Pe.type==="taskforce:update"){F({type:"taskforce:update",workspaceId:x,eventId:typeof Pe.eventId=="string"?Pe.eventId.trim():void 0});return}if(Pe.type==="taskforce:mutation"){const Ee=B.current.process({eventId:Pe.eventId,serverEpoch:Pe.serverEpoch,seq:Pe.seq});if(!Ee.accepted){O(),Ee.shouldRecover&&(_.current="",I.current||(I.current=!0,F({type:"taskforce:replay-gap",workspaceId:x})));return}ge(Pe),O(),F({type:Pe.type,workspaceId:x,eventId:typeof Pe.eventId=="string"?Pe.eventId.trim():void 0});return}if(Pe.type==="taskforce:replay"){const Ee=Array.isArray(Pe.events)?Pe.events:[];let $=0;for(const T of Ee)B.current.process({eventId:T.eventId,serverEpoch:T.serverEpoch,seq:T.seq}).accepted&&($+=1,ge(T));I.current=!1,O(),($>0||Pe.truncated===!0)&&F({type:"taskforce:replay",workspaceId:x}),Pe.truncated===!0&&_e(ce);return}if(Pe.type==="taskforce:replay-gap"||Pe.type==="taskforce:replay-reset"){if(_.current="",I.current)return;I.current=!0,F({type:Pe.type,workspaceId:x})}}}),ce.addEventListener("close",Re=>{if(g.current===ce&&(g.current=null),!me&&t){const Pe=Number(Re?.code||0),Ae=String(Re?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${x} user=${String(k||"anonymous").trim()||"anonymous"} code=${Pe}${Ae?` reason=${Ae}`:""}`)}Ne()}),ce.addEventListener("error",()=>{try{ce.close()}catch{}})};return!t||!x||!K?(h("degraded-fallback"),pe(),X(),()=>{pe(),X()}):(h("reconnecting"),se(),()=>{me=!0,pe(),W.current!==null&&(window.clearTimeout(W.current),W.current=null),V.current=null,X()})},[t,x,K,o,l,i,d,k]),{connectionState:S,telemetry:ve}}const Wp="taskforce:context-assets-mutated";function _O(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Wp,{detail:e}))}const Fp="taskforce:ai-profiles-mutated";function CO(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Fp,{detail:e}))}const lw=4,Du=100;function ad(e,t,n){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>=lw)return"[MaxDepth]";if(typeof e=="function"||typeof e=="symbol"||typeof e>"u")return String(e);if(Array.isArray(e))return e.slice(0,Du).map(s=>ad(s,t+1,n));if(e instanceof Set)return Array.from(e.values()).slice(0,Du).map(s=>ad(s,t+1,n));if(e instanceof Map){const s={};for(const[o,l]of Array.from(e.entries()).slice(0,Du))s[String(o)]=ad(l,t+1,n);return s}if(typeof e=="object"){if(n.has(e))return"[Circular]";n.add(e);const s={};for(const[o,l]of Object.entries(e).slice(0,Du))s[o]=ad(l,t+1,n);return n.delete(e),s}return String(e)}function Cm(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return ad(e,0,new WeakSet)}function dw(e){const t=Cm(e);if(!t)return"null";try{return JSON.stringify(t)}catch{return"[UnserializableSyncEventDetails]"}}const qg="taskforce.userGlobalSyncMeta.v1",uw="taskforce.syncDebug.v1",mw=12e4,Kg="taskforce.syncWatermarks.v3",pw=300*1e3,dh="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function ti(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function fw(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(uw)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Un(e,t){if(!fw())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function hw(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:Qc(e?.avatarUrl??e?.avatar_url),avatarSourceUrl:Qc(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:Dr(e?.avatarUpdatedAt??e?.avatar_updated_at),description:un(e?.description),role:un(e?.role),provider:un(e?.provider),model:un(e?.model),surfaceType:zg(e?.surfaceType??e?.surface_type),seatScope:Hg(e?.seatScope??e?.seat_scope),providerMetadata:t&&typeof t=="object"&&!Array.isArray(t)?t:null,archivedAt:Dr(e?.archivedAt??e?.archived_at),archivedBy:om(e?.archivedBy??e?.archived_by),archivedReason:un(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:om(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:Dr(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:Dr(e?.lastActiveAt??e?.last_active_at)}}function uh(){if(typeof window>"u")return{};try{const e=window.localStorage.getItem(qg);if(!e)return{};const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function gw(e){if(!(typeof window>"u"))try{window.localStorage.setItem(qg,JSON.stringify(e))}catch{}}function yw(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function kw(e){return e.flatMap(t=>{const n=String(t?.id||"").trim();return!n||!Array.isArray(t?.comments)?[]:t.comments.map(s=>({id:String(s?.id||"").trim(),sessionId:n,body:String(s?.body||""),anchor:s?.anchor??null,order:Number.isFinite(Number(s?.order))?Math.max(0,Math.floor(Number(s.order))):0,authorActorId:typeof s?.authorActorId=="string"&&s.authorActorId.trim().length>0?s.authorActorId.trim():null,createdAt:String(s?.createdAt||"").trim(),updatedAt:String(s?.updatedAt||s?.createdAt||"").trim(),deletedAt:typeof s?.deletedAt=="string"&&s.deletedAt.trim().length>0?s.deletedAt.trim():null})).filter(s=>s.id.length>0&&s.sessionId.length>0)})}function Lu(e,t,n=[],s=[]){const o=new Map;for(const l of[...e||[],...t||[]]){const i=Array.isArray(l?.taskEvents)?l.taskEvents:[];for(const d of i){const m=String(d?.id||"").trim(),y=String(d?.taskId||l?.id||"").trim(),k=String(d?.workspaceId||"").trim(),S=String(d?.createdAt||"").trim();if(!m||!y||!k||!S)continue;const h={id:m,workspaceId:k,entityType:"task",entityId:y,taskId:y,action:String(d?.action||"").trim(),actor:String(d?.actor||"system").trim()||"system",actorType:d?.actorType==="ai"||d?.actorType==="human"||d?.actorType==="system"?d.actorType:"system",details:d?.details,createdAt:S},g=o.get(m);(!g||h.createdAt>g.createdAt)&&o.set(m,h)}}for(const l of n||[]){const i=Array.isArray(l?.entityEvents)?l.entityEvents:[];for(const d of i){const m=String(d?.id||"").trim(),y=String(d?.entityId||l?.id||"").trim(),k=String(d?.workspaceId||"").trim(),S=String(d?.createdAt||"").trim();if(!m||!y||!k||!S)continue;const h={id:m,workspaceId:k,entityType:"initiative",entityId:y,action:String(d?.action||"").trim(),actor:String(d?.actor||"system").trim()||"system",actorType:d?.actorType==="ai"||d?.actorType==="human"||d?.actorType==="system"?d.actorType:"system",details:d?.details,createdAt:S},g=o.get(m);(!g||h.createdAt>g.createdAt)&&o.set(m,h)}}for(const l of s||[]){const i=Array.isArray(l?.entityEvents)?l.entityEvents:[];for(const d of i){const m=String(d?.id||"").trim(),y=String(d?.entityId||l?.id||"").trim(),k=String(d?.workspaceId||"").trim(),S=String(d?.createdAt||"").trim();if(!m||!y||!k||!S)continue;const h={id:m,workspaceId:k,entityType:"workstream",entityId:y,action:String(d?.action||"").trim(),actor:String(d?.actor||"system").trim()||"system",actorType:d?.actorType==="ai"||d?.actorType==="human"||d?.actorType==="system"?d.actorType:"system",details:d?.details,createdAt:S},g=o.get(m);(!g||h.createdAt>g.createdAt)&&o.set(m,h)}}return Array.from(o.values()).sort((l,i)=>l.createdAt!==i.createdAt?l.createdAt.localeCompare(i.createdAt):l.id.localeCompare(i.id))}function Zg(e){return{taskIds:Array.from(e.taskIds.values()),taskWatermarks:Array.from(e.taskWatermarks.entries()),taskChangeKeys:Array.from((e.taskChangeKeys||new Map).entries()),initiativeWatermarks:Array.from(e.initiativeWatermarks.entries()),workstreamWatermarks:Array.from(e.workstreamWatermarks.entries()),aiProfileWatermarks:Array.from(e.aiProfileWatermarks.entries()),aiProfileChangeKeys:Array.from((e.aiProfileChangeKeys||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:""}}function Yg(e,t){if(!e||typeof e!="object")return null;const n=typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",s=!t||!n||n===t?new Map(Array.isArray(e.taskWatermarks)?e.taskWatermarks:[]):new Map;return{taskIds:new Set(Array.isArray(e.taskIds)?e.taskIds.map(l=>String(l||"").trim()).filter(l=>l.length>0):Array.from(s.keys())),taskWatermarks:s,taskChangeKeys:new Map(Array.isArray(e.taskChangeKeys)?e.taskChangeKeys:[]),initiativeWatermarks:new Map(Array.isArray(e.initiativeWatermarks)?e.initiativeWatermarks:[]),workstreamWatermarks:new Map(Array.isArray(e.workstreamWatermarks)?e.workstreamWatermarks:[]),aiProfileWatermarks:new Map(Array.isArray(e.aiProfileWatermarks)?e.aiProfileWatermarks:[]),aiProfileChangeKeys:new Map(Array.isArray(e.aiProfileChangeKeys)?e.aiProfileChangeKeys:[]),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:[])}}function mh(e,t){if(typeof window>"u")return null;try{const n=`${Kg}.${e}`,s=window.localStorage.getItem(n);if(!s)return null;const o=JSON.parse(s);return!o||o.v!==2&&o.v!==3&&o.v!==4&&o.v!==5&&o.v!==6&&o.v!==7&&o.v!==8&&o.v!==9&&o.v!==10&&o.v!==11?null:Yg(o,t)}catch{return null}}function ph(e,t){if(typeof window>"u")return!1;try{const n=`${Kg}.${e}`;return window.localStorage.setItem(n,JSON.stringify({v:11,savedAt:new Date().toISOString(),...Zg(t)})),!0}catch{return!1}}function vw({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:n,setWorkspaceSyncBusy:s,setUserGlobalSyncStatus:o,setUserGlobalSyncError:l,setWorkspaceLastErrorMessage:i,setWorkspaceLastErrorAt:d,reportSyncEvent:m,setAuthBlocked:y,setIsAuthenticated:k,checkAuthSession:S,ensureCloudWorkspaceReadyForSync:h,scheduleWorkspaceSyncRetry:g,persistWorkspaceSyncPatchSafely:v}){const A=async(I,W)=>{n(),s(!1),o("error");const V="Session expired. Sign in again to resume cloud sync.";l(V),i(V),d(new Date().toISOString()),m(e,{eventType:I==="handshake"?"handshake":I,status:"error",statusCode:W,errorMessage:V}),y(!0),k(!1),await S()};return{handleSyncAuthFailure:A,ensureWorkspaceSyncReady:async()=>{if(!ti(e)){const V="Workspace sync blocked: local workspace ID is unresolved.";return i(V),d(new Date().toISOString()),l(V),o("error"),!1}const I=await h();if(I.success)return!0;if(I.statusCode===401)return await A("handshake",401),!1;const W=I.error||"Workspace sync handshake failed.";return i(W),d(new Date().toISOString()),l(W),o("error"),m(e,{eventType:"handshake",status:"error",statusCode:I.statusCode,errorMessage:W}),I.transient||Ds(I.statusCode)?g(I.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&v({phase:"error",lastErrorMessage:W}),!1}}}function Sw({workspaceSyncPhase:e,lastBootstrapPhaseRef:t,bootstrapPhaseStartedAtRef:n,bootstrapLastProgressAtRef:s}){if(e==="attach-cloud"||e==="provision-local"){t.current=e,n.current===null&&(n.current=Date.now()),s.current=null;return}n.current=null,s.current=null}function ww({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:n,workspacePullInFlightRef:s,workspacePushInFlightRef:o,bootstrapPhaseStartedAtRef:l,bootstrapLastProgressAtRef:i,setWorkspaceLastErrorMessage:d,setWorkspaceLastErrorAt:m,setUserGlobalSyncStatus:y,setUserGlobalSyncError:k,setWorkspaceSyncBusy:S,persistWorkspaceSyncPatchSafely:h}){if(!t||n!=="attach-cloud"&&n!=="provision-local")return;const g=window.setInterval(()=>{if(n!=="attach-cloud"&&n!=="provision-local"||s.current||o.current)return;const v=Math.max(l.current??0,i.current??0);if(v>0&&Date.now()-v<mw)return;const _=`Workspace sync ${n==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(_),m(new Date().toISOString()),y("error"),k(_),S(!1),h({phase:"error",lastErrorMessage:_}),Un("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:n})},1e4);return()=>window.clearInterval(g)}function bw(e){const{workspaceSyncPhase:t,lastBootstrapPhase:n,workspaceLastPullAt:s}=e;return t==="provision-local"?"provision-local":t==="attach-cloud"?"attach-cloud":t==="active"||n==="active"?"active":n==="provision-local"||n==="attach-cloud"?n:s?"attach-cloud":"provision-local"}const df={allowed:!0};function Zn(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function uf(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?Zn("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!ti(e.currentWorkspaceId)?Zn("invalid-workspace"):null:Zn("sync-disabled"):Zn("cloud-auth-unconfigured")}function Op(e){const t=uf(e);return t||(e.repairModeActive&&!e.repairModeBypass?Zn("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"?Zn("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?Zn("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?Zn("pull-in-flight",{retainPendingSignature:!0}):df:Zn("auth-required"))}function $p(e){const t=uf(e);return t||(e.repairModeActive&&!e.repairModeBypass?Zn("repair-active"):e.workspaceSyncPhase==="provision-local"?Zn("provision-local"):e.retryPending?Zn("retry-pending"):e.isAuthenticated?e.pullInFlight?Zn("pull-in-flight"):e.pushInFlight?Zn("push-in-flight"):df:Zn("auth-required"))}function Up(e){const t=uf(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?df:Zn("auth-required"))}function _w(e){return Zn("lease-held",{retainPendingSignature:e==="push"})}function Sd(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function Cw({enabled:e,phase:t,busy:n,retryAt:s,lastErrorMessage:o}){return e?t==="provision-local"?{status:"syncing",summary:n?"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 it seems stalled, press Sync."}:t==="attach-cloud"?{status:"syncing",summary:n?"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."}:s?{status:"attention",summary:"Sync hit a temporary problem and will retry automatically.",recommendedAction:"Wait for the automatic retry, or press Sync to retry now."}:o||t==="error"?{status:"attention",summary:"Sync needs attention before it can continue.",recommendedAction:"Press Sync to retry. If the same error keeps returning, press Repair."}:n?{status:"syncing",summary:"Sync is currently running.",recommendedAction:"No action needed."}:{status:"healthy",summary:"Sync is healthy.",recommendedAction:"No action needed."}:{status:"off",summary:"Sync is turned off for this workspace.",recommendedAction:"Turn on sync when you are ready to back up this workspace."}}function Aw(e){return Sd(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function xw(e){return Sd(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function Iw(e){return Sd(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 Tw(e){return Sd(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function Rw(e){return Sd(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function Nw({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,workspaceSyncPhase:s,workspacePullInFlightRef:o,realtimePullDebounceRef:l,realtimeSuppressedEventIdsRef:i,clearWorkspaceRetry:d,isWorkspaceRetryPending:m,pullWorkspaceChangesFromCloud:y}){return{handleRealtimeSignal:g=>{if(!e||t!=="local"||!n||s==="provision-local")return;const v=String(g?.eventId||"").trim();v&&i.current.delete(v)||o.current||(m()&&d(),l.current!==null&&window.clearTimeout(l.current),l.current=window.setTimeout(()=>{l.current=null,y()},180))},recordSuppressedEventIds:(g,v)=>{const A=v?.queueRef,_=Number.isFinite(v?.maxQueueSize)?Math.max(1,Number(v?.maxQueueSize)):2048,I=Number.isFinite(v?.ttlMs)?Math.max(0,Number(v?.ttlMs)):null;for(const W of g){const V=String(W||"").trim();!V||i.current.has(V)||(i.current.add(V),A&&A.current.push(V),I!==null&&window.setTimeout(()=>{i.current.delete(V)},I))}if(A)for(;A.current.length>_;){const W=A.current.shift();W&&i.current.delete(W)}},clearRealtimePullDebounce:()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)}}}function Jg(e){e.workspaceLastPushedWatermarksRef.current=new Map,e.workspaceLastPushedTaskChangeKeysRef.current=new Map,e.workspaceLastPushedInitiativeIdsRef.current=new Set,e.workspaceLastPushedInitiativeWatermarksRef.current=new Map,e.workspaceLastPushedWorkstreamIdsRef.current=new Set,e.workspaceLastPushedWorkstreamWatermarksRef.current=new Map,e.workspaceLastPushedAiProfileIdsRef.current=new Set,e.workspaceLastPushedAiProfileWatermarksRef.current=new Map,e.workspaceLastPushedAiProfileChangeKeysRef.current=new Map,e.workspaceLastPushedDocumentPathsRef.current=new Set,e.workspaceLastPushedDocumentWatermarksRef.current=new Map,e.workspaceLastPushedAssetPathsRef.current=new Set,e.workspaceLastPushedAssetWatermarksRef.current=new Map,e.workspaceBaselineResetReasonRef.current="repair-reset"}function jw(e){Jg(e),e.workspaceLastPushedDocumentPathsRef.current=new Set,e.workspaceLastPushedDocumentWatermarksRef.current=new Map,e.workspaceLastPushedAssetPathsRef.current=new Set,e.workspaceLastPushedAssetWatermarksRef.current=new Map,e.workspaceLastPushedDocumentReviewSessionIdsRef.current=new Set,e.workspaceLastPushedDocumentReviewSessionWatermarksRef.current=new Map,e.workspaceLastPushedDocumentReviewCommentIdsRef.current=new Set,e.workspaceLastPushedDocumentReviewCommentWatermarksRef.current=new Map,e.workspaceLastPushedAnnotatedAttachmentSessionIdsRef.current=new Set,e.workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef.current=new Map,e.workspaceLastPushedTaskEventWatermarksRef.current=new Map}function Pw({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:n,workspaceLastPullAt:s,lastBootstrapPhaseRef:o,workspaceRepairModeRef:l,workspaceForceFullAiProfilePushRef:i,workspaceStartupRepairRanRef:d,workspaceStartupFullReconcileRanRef:m,workspaceFullReconcileInFlightRef:y,workspacePullCursorRef:k,workspaceAttachBootstrapBaselineSignatureRef:S,workspaceCaptureAttachBootstrapBaselineRef:h,workspacePendingSignatureRef:g,workspaceLastPushedSignatureRef:v,workspaceLastPushedWatermarksRef:A,workspaceLastPushedTaskChangeKeysRef:_,workspaceLastPushedInitiativeIdsRef:I,workspaceLastPushedInitiativeWatermarksRef:W,workspaceLastPushedWorkstreamIdsRef:V,workspaceLastPushedWorkstreamWatermarksRef:B,workspaceLastPushedAiProfileIdsRef:J,workspaceLastPushedAiProfileWatermarksRef:de,workspaceLastPushedAiProfileChangeKeysRef:ve,workspaceLastPushedDocumentPathsRef:re,workspaceLastPushedDocumentWatermarksRef:x,workspaceLastPushedAssetPathsRef:K,workspaceLastPushedAssetWatermarksRef:me,workspaceLastPushedDocumentReviewSessionIdsRef:pe,workspaceLastPushedDocumentReviewSessionWatermarksRef:X,workspaceLastPushedDocumentReviewCommentIdsRef:M,workspaceLastPushedDocumentReviewCommentWatermarksRef:F,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:ue,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:ge,workspaceLastPushedTaskEventWatermarksRef:O,workspaceBaselineResetReasonRef:_e,bootstrapPhaseStartedAtRef:Ne,bootstrapLastProgressAtRef:se,acquireWorkspaceSyncLease:ce,releaseWorkspaceSyncLease:Re,forceClearWorkspaceSyncLease:Pe,clearWorkspaceRetry:Ae,clearWorkspaceIssue:Ee,reportWorkspaceWindowContention:$,reportSyncEvent:T,persistWorkspaceSyncPatch:b,persistWorkspaceSyncWatermarksSnapshotBestEffort:N,buildWorkspaceSyncSignature:D,pullWorkspaceChangesFromCloud:te,pushWorkspaceChangesToCloud:P,cloudAuthConfigured:H,runtimeMode:be,isAuthenticated:U,checkAuthSession:ie}){const ee=n==="provision-local"?"push":n==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{Ae();let Se=Up({cloudAuthConfigured:H,runtimeMode:be,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:U});if(!Se.allowed&&Se.reason==="auth-required"){if(!await ie())return T(e,{eventType:ee,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:n}}),!1;Se=Up({cloudAuthConfigured:H,runtimeMode:be,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!Se.allowed)return T(e,{eventType:ee,status:"error",errorMessage:`Manual sync retry blocked: ${Se.reason}.`,details:{source:"retry.blocked",reason:Se.reason,phase:n}}),!1;if(i.current=!0,n==="provision-local"){const Me=D();return Me?P(Me,{forceAllAiProfiles:!0}):!1}const we=await te();if(n==="attach-cloud")return we;const Te=D();if(Te){g.current=Te;const Me=await P(Te,{forceAllAiProfiles:i.current===!0});return we||Me}return we},resetWorkspaceSyncCursorAndPull:async()=>{if(!await ce(e,"repair")&&(Pe(e),!await ce(e,"repair"))){$("repair"),T(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:n}});return}const we=bw({workspaceSyncPhase:n,lastBootstrapPhase:o.current,workspaceLastPullAt:s}),Te=we==="provision-local",Me=we==="active";Ae(),Ee();try{if(!t){T(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because workspace sync is turned off.",details:{source:"repair.blocked",reason:"sync-disabled",phase:n}});return}if(Ne.current=null,se.current=null,k.current=null,S.current="",h.current=!1,g.current="",v.current="",i.current=!1,d.current=!1,m.current=!1,y.current=!1,Te?jw({workspaceLastPushedWatermarksRef:A,workspaceLastPushedTaskChangeKeysRef:_,workspaceLastPushedInitiativeIdsRef:I,workspaceLastPushedInitiativeWatermarksRef:W,workspaceLastPushedWorkstreamIdsRef:V,workspaceLastPushedWorkstreamWatermarksRef:B,workspaceLastPushedAiProfileIdsRef:J,workspaceLastPushedAiProfileWatermarksRef:de,workspaceLastPushedAiProfileChangeKeysRef:ve,workspaceLastPushedDocumentPathsRef:re,workspaceLastPushedDocumentWatermarksRef:x,workspaceLastPushedAssetPathsRef:K,workspaceLastPushedAssetWatermarksRef:me,workspaceLastPushedDocumentReviewSessionIdsRef:pe,workspaceLastPushedDocumentReviewSessionWatermarksRef:X,workspaceLastPushedDocumentReviewCommentIdsRef:M,workspaceLastPushedDocumentReviewCommentWatermarksRef:F,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:ue,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:ge,workspaceLastPushedTaskEventWatermarksRef:O,workspaceBaselineResetReasonRef:_e}):Me&&Jg({workspaceLastPushedWatermarksRef:A,workspaceLastPushedTaskChangeKeysRef:_,workspaceLastPushedInitiativeIdsRef:I,workspaceLastPushedInitiativeWatermarksRef:W,workspaceLastPushedWorkstreamIdsRef:V,workspaceLastPushedWorkstreamWatermarksRef:B,workspaceLastPushedAiProfileIdsRef:J,workspaceLastPushedAiProfileWatermarksRef:de,workspaceLastPushedAiProfileChangeKeysRef:ve,workspaceLastPushedDocumentPathsRef:re,workspaceLastPushedDocumentWatermarksRef:x,workspaceLastPushedAssetPathsRef:K,workspaceLastPushedAssetWatermarksRef:me,workspaceBaselineResetReasonRef:_e}),N(),l.current=!0,T(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:n,repairPhase:we,lastBootstrapPhase:o.current}}),await b({phase:we,pullCursor:null,lastErrorMessage:null}),we==="provision-local"){const lt=D();if(!lt)return;await P(lt,{forceAllAiProfiles:!0,repairMode:!0});return}const nt=await te({repairMode:!0});if(we!=="active"||!nt)return;const gt=D();if(!gt)return;g.current=gt,await P(gt,{forceAllAiProfiles:!0,repairMode:!0})}finally{l.current=!1,Re(e)}}}}function Mw({workspaceSyncPhase:e,forceCursorNull:t,currentCursor:n}){const s=e==="attach-cloud";return{bootstrap:s,cursor:s||t===!0?null:n,successEventType:s?"bootstrap":"pull"}}function Ew({workspaceSyncPhase:e,forceCursorNull:t,startupFullReconcileRan:n,pendingSignature:s,fallbackSignature:o,lastPushedSignature:l}){const i=e==="attach-cloud",d=s||o,m=!i&&d&&d!==l?d:null;return{successEventType:i?"bootstrap":"pull",shouldCaptureAttachBootstrapBaseline:i,shouldClearPendingSignature:i||m!==null,shouldRefreshReferenceSnapshots:i,shouldSeedWorkspaceSnapshotPushBaseline:i,shouldScheduleStartupFullReconcile:!t&&!i&&!n,deferredPushSignature:m}}function Dw({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,checkAuthSession:i,resolveCloudAuthUrl:d,ensureCloudWorkspaceReadyForSync:m,ensureWorkspaceSyncReady:y,handleSyncAuthFailure:k,clearWorkspaceRetry:S,clearWorkspaceIssue:h,isWorkspaceRetryPending:g,scheduleWorkspaceSyncRetry:v,persistWorkspaceSyncPatchSafely:A,persistWorkspaceSyncPatchBestEffort:_,persistWorkspaceSyncWatermarksSnapshotBestEffort:I,reportSyncEvent:W,acquireWorkspaceSyncLease:V,releaseWorkspaceSyncLease:B,reportWorkspaceWindowContention:J,refreshWorkspaceSyncMarkdownDocumentsSnapshot:de,refreshWorkspaceSyncAiProfilesSnapshot:ve,refreshWorkspaceSyncAssetsSnapshot:re,refreshWorkspaceSyncPlanningEntitiesSnapshot:x,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:K,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:me,refreshLocalWorkspaceTaskCollections:pe,buildWorkspaceSyncPayload:X,buildWorkspaceSyncSignature:M,seedWorkspaceSnapshotPushBaseline:F,shouldSuppressAttachBootstrapPush:ue,recordSuppressedEventIds:ge,workspaceRepairModeRef:O,workspaceForceFullAiProfilePushRef:_e,workspacePushInFlightRef:Ne,workspacePullInFlightRef:se,workspacePendingPushReplayRef:ce,workspaceLastPushedSignatureRef:Re,workspacePendingSignatureRef:Pe,workspaceLastPushedTaskIdsRef:Ae,workspaceDeletedTaskIdsRef:Ee,workspaceDeletedTaskWatermarksRef:$,workspacePullCursorRef:T,workspaceLastPushedWatermarksRef:b,workspaceLastPushedTaskChangeKeysRef:N,workspaceLastPushedInitiativeIdsRef:D,workspaceLastPushedInitiativeWatermarksRef:te,workspaceLastPushedWorkstreamIdsRef:P,workspaceLastPushedWorkstreamWatermarksRef:H,workspaceLastPushedAiProfileIdsRef:be,workspaceLastPushedAiProfileWatermarksRef:U,workspaceLastPushedAiProfileChangeKeysRef:ie,workspaceLastPushedDocumentPathsRef:ee,workspaceLastPushedDocumentWatermarksRef:Q,workspaceLastPushedAssetPathsRef:q,workspaceLastPushedAssetWatermarksRef:Se,workspaceLastPushedDocumentReviewSessionIdsRef:we,workspaceLastPushedDocumentReviewSessionWatermarksRef:Te,workspaceLastPushedDocumentReviewCommentIdsRef:Me,workspaceLastPushedDocumentReviewCommentWatermarksRef:nt,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:gt,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:lt,workspaceLastPushedTaskEventWatermarksRef:St,workspaceBaselineResetReasonRef:qe,workspaceCaptureAttachBootstrapBaselineRef:Ct,workspaceStartupFullReconcileRanRef:dt,workspaceFullReconcileInFlightRef:Xe,bootstrapLastProgressAtRef:it,realtimeSuppressedEventQueueRef:ne,setWorkspaceSyncBusy:st,setUserGlobalSyncStatus:Ze,setUserGlobalSyncError:Pt,setWorkspaceLastErrorMessage:kt,setWorkspaceLastErrorAt:It,setWorkspaceLastPullAt:Ft,setWorkspaceLastPushAt:Mt,setWorkspaceSyncPendingChanges:Be,setTasks:et,setArchivedTasks:Ue}){const Je=async(ct,ae)=>{let Qe=Op({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,repairModeActive:O.current===!0,repairModeBypass:ae?.repairMode===!0,pushInFlight:Ne.current,pullInFlight:se.current});if(!Qe.allowed&&Qe.reason==="auth-required"){if(!await i())return!1;Qe=Op({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:!0,repairModeActive:O.current===!0,repairModeBypass:ae?.repairMode===!0,pushInFlight:Ne.current,pullInFlight:se.current})}if(!Qe.allowed)return Qe.retainPendingSignature&&(Pe.current=ct),!1;if(ue(ct))return!1;if(!await V(s,"push")){const c=_w("push");return!c.allowed&&c.retainPendingSignature&&(Pe.current=ct),J("push"),!1}Ne.current=!0,st(!0),Ze("syncing"),Pt(null);const Ot=Date.now(),Bt=ae?.forceAllAiProfiles===!0||_e.current===!0,Fe=ae?.repairMode===!0||O.current===!0;let Lt=null,vt=!1,E=ct;try{if(await de(),await ve(),await re(),await x(),await K(),!await y())return!1;const Y=M();if(Y&&(E=Y),ue(E))return!1;const ye=ce.current,ze=ye&&ye.signature===E&&(!Bt||ye.forceAllAiProfiles===!0)&&(!Fe||ye.repairMode===!0)?ye:null,Ge=ze?.payload||X({forceAllAiProfiles:Bt});Lt=Ge,vt=ze!==null,Be(Ge.changes.length);const je=await bS({resolveCloudAuthUrl:d,workspaceId:s,payload:Ge,ensureCloudWorkspaceReadyForSync:m,repairMode:ze?.repairMode??Fe});if(!je.success){if(je.status===401)return ce.current=null,await k("push",401),!1;let Et=je.error?`Workspace sync push failed (${je.status||0}): ${je.error}`:`Workspace sync push failed (${je.status||0})`;return je.status===413&&(Et="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),Ze("error"),Pt(Et),kt(Et),It(new Date().toISOString()),W(s,{eventType:"push",status:"error",statusCode:je.status,errorMessage:Et,requestMs:je.requestMs,details:{payloadDiagnostics:Ge.deltaDiagnostics||null,replayedPayload:vt}}),Pe.current=E,je.transient||Ds(je.status)?(ce.current={signature:E,payload:Ge,forceAllAiProfiles:ze?.forceAllAiProfiles??Bt,repairMode:ze?.repairMode??Fe},v(je.retryAfterMs)):(ce.current=null,o==="active"&&A({phase:"error",lastErrorMessage:Et})),!1}ce.current=null,Re.current=E,Ae.current=je.currentTaskIds,b.current=je.currentTaskWatermarks?new Map(je.currentTaskWatermarks):new Map(b.current),N.current=je.currentTaskChangeKeys?new Map(je.currentTaskChangeKeys):new Map(N.current),D.current=new Set(je.currentInitiativeIds),te.current=new Map(je.currentInitiativeWatermarks),P.current=new Set(je.currentWorkstreamIds),H.current=new Map(je.currentWorkstreamWatermarks),be.current=new Set(je.currentAiProfileIds),U.current=new Map(je.currentAiProfileWatermarks),ie.current=je.currentAiProfileChangeKeys?new Map(je.currentAiProfileChangeKeys):new Map(ie.current),ee.current=new Set(je.currentDocumentPaths),Q.current=new Map(je.currentDocumentWatermarks),q.current=new Set(je.currentAssetPaths),Se.current=new Map(je.currentAssetWatermarks),we.current=new Set(je.currentDocumentReviewSessionIds),Te.current=new Map(je.currentDocumentReviewSessionWatermarks),Me.current=new Set(je.currentDocumentReviewCommentIds),nt.current=new Map(je.currentDocumentReviewCommentWatermarks),gt.current=new Set(je.currentAnnotatedAttachmentSessionIds),lt.current=new Map(je.currentAnnotatedAttachmentSessionWatermarks),St.current=new Map(je.currentTaskEventWatermarks),Bt&&(_e.current=!1);for(const[Et,Tt]of je.pushedWatermarks)b.current.set(Et,Tt);for(const[Et,Tt]of je.pushedTaskChangeKeys||new Map)N.current.set(Et,Tt);if(je.deleteTaskIds.size>0)for(const Et of je.deleteTaskIds)Ee.current.delete(Et),$.current.delete(Et),b.current.delete(Et),N.current.delete(Et);const Vt=await I();if(qe.current=Vt?null:"storage-write-failed",Array.isArray(je.emittedEventIds)&&je.emittedEventIds.length>0&&ge(je.emittedEventIds,{queueRef:ne,maxQueueSize:2048}),Array.isArray(je.appliedTaskUpserts)&&je.appliedTaskUpserts.length>0){const Et=await Lp(s,je.appliedTaskUpserts.map(Tt=>({op:"upsert",archived:Tt.archived===!0,task:Tt.task})));if(Et.ok){for(const Tt of je.appliedTaskUpserts){const Wt=String(Tt?.task?.id||"").trim(),Ht=String(Tt?.task?.updatedAt||Tt?.task?.createdAt||"").trim();!Wt||!Ht||b.current.set(Wt,Ht)}try{await pe()}catch{Un("push_local_task_refresh_failed",{workspaceId:s,taskCount:je.appliedTaskUpserts.length})}}else Un("push_local_task_apply_failed",{workspaceId:s,taskCount:je.appliedTaskUpserts.length,status:Et.status,failures:Et.failures})}S(),h();const qt=je.syncedAt||new Date().toISOString();return Re.current=M(),Mt(qt),Be(0),Ze("idle"),A({phase:"active",lastPushAt:qt,lastSyncedAt:qt,lastErrorMessage:null}),W(s,{eventType:o==="provision-local"?"bootstrap":"push",status:"success",changeCount:je.changeCount,requestMs:je.requestMs,details:{payloadDiagnostics:Ge.deltaDiagnostics||null,replayedPayload:vt}}),!0}catch(c){const Y="Workspace sync push failed.";return Ze("error"),Pt(Y),kt(Y),It(new Date().toISOString()),Pe.current=E,Lt&&(ce.current={signature:E,payload:Lt,forceAllAiProfiles:Bt,repairMode:Fe}),v(),W(s,{eventType:"push",status:"error",errorMessage:`${Y} ${String(c?.message||"").trim()}`.trim(),details:{replayedPayload:vt}}),Un("push_failed_exception",{workspaceId:s,elapsedMs:Date.now()-Ot}),!1}finally{Ne.current=!1,st(se.current),B(s);const c=Pe.current,Y=M();c&&Y&&Y!==Re.current&&!se.current&&!g()&&(Pe.current="",window.setTimeout(()=>{Je(Y)},120))}},yt=async ct=>{let ae=$p({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:l,repairModeActive:O.current===!0,repairModeBypass:ct?.repairMode===!0,retryPending:g(),pullInFlight:se.current,pushInFlight:Ne.current});if(!ae.allowed&&ae.reason==="auth-required"){if(!await i())return!1;ae=$p({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:n,currentWorkspaceId:s,workspaceSyncPhase:o,isAuthenticated:!0,repairModeActive:O.current===!0,repairModeBypass:ct?.repairMode===!0,retryPending:g(),pullInFlight:se.current,pushInFlight:Ne.current})}if(!ae.allowed)return!1;if(!await V(s,"pull"))return J("pull"),!1;se.current=!0,st(!0),Ze("syncing"),Pt(null);const bt=Date.now();try{if(!await y())return!1;const Bt=Mw({workspaceSyncPhase:o,forceCursorNull:ct?.forceCursorNull===!0,currentCursor:T.current}),Fe=await _S({resolveCloudAuthUrl:d,workspaceId:s,cursor:Bt.cursor,bootstrap:Bt.bootstrap,ensureCloudWorkspaceReadyForSync:m,maxPages:20,repairMode:ct?.repairMode===!0||O.current===!0,onPagePulled:()=>{it.current=Date.now()},onChangesApplied:()=>{it.current=Date.now()}});if(!Fe.success){if(Fe.kind==="pull_http"&&Fe.status===401)return await k("pull",401),!1;if(Fe.kind==="apply_auth")return await k("apply",401),!1;if(Fe.kind==="pull_http"&&Fe.errorCode==="INVALID_SYNC_CURSOR"){const ye="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return T.current=null,A({pullCursor:null}),Ze("error"),Pt(ye),kt(ye),It(new Date().toISOString()),W(s,{eventType:"pull",status:"error",statusCode:Fe.status,errorMessage:ye,requestMs:Fe.pullRequestMs,details:{recovery:"cursor-reset",...Fe.serverDiagnostics?{serverPullDiagnostics:Fe.serverDiagnostics}:{}}}),v(150),!1}let Y=Fe.kind==="apply_payload"||Fe.kind==="apply_all_candidates"||Fe.kind==="exception"?String(Fe.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Fe.status||0})`;return Fe.status===413&&(Y="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),Ze("error"),Pt(Y),kt(Y),It(new Date().toISOString()),W(s,{eventType:Fe.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Fe.status,errorMessage:Y,requestMs:Fe.pullRequestMs,details:{pages:Fe.pages,applyMs:Fe.applyMs,...Fe.serverDiagnostics?{serverPullDiagnostics:Fe.serverDiagnostics}:{}}}),Fe.transient||Fe.hasTransientApplyFailure||Ds(Fe.status)?v(Fe.retryAfterMs):A({phase:"error",lastErrorMessage:Y}),!1}Array.isArray(Fe.emittedEventIds)&&ge(Fe.emittedEventIds,{ttlMs:6e4}),Fe.pulledDeleteTaskIds.size>0&&(et(Y=>Y.filter(ye=>!Fe.pulledDeleteTaskIds.has(String(ye.id||"")))),Ue(Y=>Y.filter(ye=>!Fe.pulledDeleteTaskIds.has(String(ye.id||"")))));const Lt=Array.isArray(Fe.documentDecryptFailures)?Fe.documentDecryptFailures.filter(Y=>String(Y||"").trim().length>0):[];if(Lt.length>0&&Un("pull_document_decrypt_failures",{workspaceId:s,failureCount:Lt.length}),T.current=Fe.cursor||null,Fe.appliedChanges>0&&(Fe.pulledActiveUpserts||Fe.pulledArchivedUpserts||Fe.pulledTaskEventUpserts||Fe.pulledPlanningUpserts))try{await pe()}catch{Un("pull_local_refresh_failed",{workspaceId:s,appliedChanges:Fe.appliedChanges})}S(),h();const vt=Fe.syncedAt||new Date().toISOString();Ft(vt),Be(0),Ze("idle");const E=Ew({workspaceSyncPhase:o,forceCursorNull:ct?.forceCursorNull===!0,startupFullReconcileRan:dt.current,pendingSignature:Pe.current,fallbackSignature:M(),lastPushedSignature:Re.current});if(E.shouldCaptureAttachBootstrapBaseline&&(Ct.current=!0),E.shouldClearPendingSignature&&(Pe.current="",ce.current=null),await _({phase:"active",pullCursor:T.current,lastPullAt:vt,lastSyncedAt:vt,lastErrorMessage:null}),W(s,{eventType:E.successEventType,status:"success",changeCount:Fe.appliedChanges,requestMs:Fe.pullRequestMs,details:{pages:Fe.pages,applyMs:Fe.applyMs,...Fe.serverDiagnostics?{serverPullDiagnostics:Fe.serverDiagnostics}:{}}}),E.shouldRefreshReferenceSnapshots&&(await de(),await re(),await K(),await me()),E.shouldSeedWorkspaceSnapshotPushBaseline&&F(),E.shouldRefreshReferenceSnapshots||E.shouldSeedWorkspaceSnapshotPushBaseline)return!0;if(E.shouldScheduleStartupFullReconcile&&(dt.current=!0,window.setTimeout(()=>{Xe.current||(Xe.current=!0,yt({forceCursorNull:!0}).finally(()=>{Xe.current=!1}))},250)),ct?.forceCursorNull===!0&&ct?.repairMode!==!0&&o==="active"){const Y=M();Y&&(_e.current=!0,Pe.current=Y,window.setTimeout(()=>{Je(Y,{forceAllAiProfiles:!0})},120))}else if(E.deferredPushSignature){const Y=E.deferredPushSignature;window.setTimeout(()=>{Je(Y)},120)}return!0}catch(Ot){const Bt=String(Ot?.message||"").trim(),Fe=Bt?`Workspace sync pull failed. ${Bt}`:"Workspace sync pull failed.";return Ze("error"),Pt(Fe),kt(Fe),It(new Date().toISOString()),v(),W(s,{eventType:"pull",status:"error",errorMessage:Fe,requestMs:Date.now()-bt}),Un("pull_failed_exception",{workspaceId:s,elapsedMs:Date.now()-bt,error:Bt||null}),!1}finally{se.current=!1,st(Ne.current),B(s)}};return{pushWorkspaceChangesToCloud:Je,pullWorkspaceChangesFromCloud:yt}}const fh={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1};function Lw(e){const{currentWorkspaceId:t,cloudAuthConfigured:n,runtimeMode:s,authSessionResolved:o,isAuthenticated:l,authUserId:i,projectName:d,resolveCloudAuthUrl:m,resolveWebSocketUrl:y,realtimeSyncEnabled:k,tasks:S,archivedTasks:h,deletedTasks:g=[],initiatives:v,workstreams:A,taxonomies:_,taxonomyState:I,setupState:W,globalTheme:V,locale:B,globalWeekStartsOn:J,themeUseGlobalDefault:de,setTasks:ve,setArchivedTasks:re,setAuthBlocked:x,setIsAuthenticated:K,checkAuthSession:me,setGlobalTheme:pe,setCurrentTheme:X,setSetupState:M,setLocale:F,setGlobalWeekStartsOn:ue,fetchPlanningEntities:ge}=e,O=r.useMemo(()=>yw(I),[I]),[_e,Ne]=r.useState("disconnected"),[se,ce]=r.useState(null),[Re,Pe]=r.useState(null),[Ae,Ee]=r.useState(null),[$,T]=r.useState(null),[b,N]=r.useState(null),[D,te]=r.useState(!1),[P,H]=r.useState("idle"),[be,U]=r.useState(null),[ie,ee]=r.useState(!1),[Q,q]=r.useState(0),[Se,we]=r.useState([]),[Te,Me]=r.useState(""),nt=r.useRef(S||[]),gt=r.useRef(h||[]),lt=r.useRef(v||[]),St=r.useRef(A||[]),qe=r.useRef([]),Ct=r.useRef(new Set),[dt,Xe]=r.useState([]),[it,ne]=r.useState(""),[st,Ze]=r.useState(null),[Pt,kt]=r.useState(null),[It,Ft]=r.useState(0),[Mt,Be]=r.useState(null),et=r.useRef([]),[Ue,Je]=r.useState([]),[yt,ct]=r.useState(""),ae=r.useRef([]),Qe=r.useRef(new Set),[bt,Ot]=r.useState([]),[Bt,Fe]=r.useState(""),Lt=r.useRef([]),vt=r.useRef([]),[E,c]=r.useState([]),[Y,ye]=r.useState(""),Ie=r.useRef([]),[ze,Ge]=r.useState(fh),[je,Vt]=r.useState("degraded-fallback"),[qt,Et]=r.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Tt=r.useRef(!1),Wt=r.useRef(null),Ht=r.useRef("missing-baseline"),sa=r.useRef(0),Kt=r.useRef(!1),Ka=r.useRef(new Set),Oa=r.useRef(""),Xa=r.useRef(""),wa=r.useRef(""),he=r.useRef(""),ot=r.useRef(""),xe=r.useRef(""),Nt=r.useRef(!1),tt=r.useRef(null),Gt=r.useRef(new Set),ha=r.useRef([]),Pa=r.useRef(null),ua=r.useRef(()=>Promise.resolve(!1)),ca=r.useRef(async()=>{}),Dt=r.useRef(null),aa=r.useRef(null),Za=r.useRef("idle"),$t=r.useCallback(()=>{Wt.current!==null&&(window.clearTimeout(Wt.current),Wt.current=null)},[]),Yn=r.useCallback(R=>{if(typeof window>"u")return;$t();const C=Math.max(1,Math.floor(sa.current)+1);sa.current=C;const Ke=1500*2**Math.max(0,C-1),ht=Number.isFinite(Number(R))?Math.max(0,Math.floor(Number(R))):0,De=Math.max(Math.min(12e4,Ke),ht);Wt.current=window.setTimeout(()=>{Wt.current=null,ca.current({preferCloudOnFirstSync:!1})},De)},[$t]),ba=r.useCallback(R=>{Ge(C=>C[R]?C:{...C,[R]:!0})},[]),ea=Object.values(ze).every(Boolean),{workspaceRetryAt:Br,isWorkspaceRetryPending:Ta,workspacePushInFlightRef:en,workspacePullInFlightRef:Ca,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Ra,workspaceLastPushedTaskIdsRef:la,workspaceDeletedTaskIdsRef:kn,workspaceDeletedTaskWatermarksRef:mn,workspacePullCursorRef:Jn,clearWorkspaceRetry:ma,scheduleWorkspaceRetry:Cr,persistWorkspaceSyncPatch:Wr,applyWorkspaceSyncPatchLocally:vn,readWorkspaceSyncStateSnapshot:Ba,loadWorkspaceSyncState:Ar,applyWorkspaceSyncStateSnapshot:Sn,saveWorkspaceCloudSyncSettings:Pn,acquireWorkspaceSyncLease:tn,releaseWorkspaceSyncLease:Aa,forceClearWorkspaceSyncLease:Fr}=iw({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:te,setWorkspaceSyncPhase:H,setWorkspaceSyncSetupIntent:U,setWorkspaceLastPullAt:Pe,setWorkspaceLastPushAt:Ee,setWorkspaceLastErrorMessage:N}),_t=r.useCallback(R=>{(R.phase==="attach-cloud"||R.phase==="provision-local")&&(Za.current=R.phase,Dt.current===null&&(Dt.current=Date.now()),aa.current=null),Sn(R)},[Sn]),wn=r.useRef(new Map),pn=r.useRef(new Map),bn=r.useRef(new Set),$a=r.useRef(new Map),Mn=r.useRef(new Set),ka=r.useRef(new Map),Ua=r.useRef(new Set),_n=r.useRef(new Map),da=r.useRef(new Map),En=r.useRef(new Set),ta=r.useRef(new Map),za=r.useRef(new Set),_a=r.useRef(new Map),Qn=r.useRef(new Set),Xn=r.useRef(new Map),Ma=r.useRef(new Set),na=r.useRef(new Map),pa=r.useRef(new Set),fn=r.useRef(new Map),an=r.useRef(new Map),pr=r.useCallback(R=>R?(la.current=new Set(R.taskIds),wn.current=R.taskWatermarks,pn.current=R.taskChangeKeys||new Map,bn.current=new Set(Array.from(R.initiativeWatermarks.keys())),$a.current=R.initiativeWatermarks,Mn.current=new Set(Array.from(R.workstreamWatermarks.keys())),ka.current=R.workstreamWatermarks,Ua.current=new Set(Array.from(R.aiProfileWatermarks.keys())),_n.current=R.aiProfileWatermarks,da.current=R.aiProfileChangeKeys||new Map,En.current=new Set(Array.from(R.documentWatermarks.keys())),ta.current=R.documentWatermarks,za.current=new Set(Array.from(R.assetWatermarks.keys())),_a.current=R.assetWatermarks,Qn.current=new Set(Array.from(R.documentReviewSessionWatermarks.keys())),Xn.current=R.documentReviewSessionWatermarks,Ma.current=new Set(Array.from(R.documentReviewCommentWatermarks.keys())),na.current=R.documentReviewCommentWatermarks,pa.current=new Set(Array.from(R.annotatedAttachmentSessionWatermarks.keys())),fn.current=R.annotatedAttachmentSessionWatermarks,an.current=R.taskEventWatermarks,Ht.current=null,!0):!1,[la]),fr=r.useCallback(()=>({taskIds:la.current,taskWatermarks:wn.current,taskChangeKeys:pn.current,initiativeWatermarks:$a.current,workstreamWatermarks:ka.current,aiProfileWatermarks:_n.current,aiProfileChangeKeys:da.current,documentWatermarks:ta.current,assetWatermarks:_a.current,documentReviewSessionWatermarks:Xn.current,documentReviewCommentWatermarks:na.current,annotatedAttachmentSessionWatermarks:fn.current,taskEventWatermarks:an.current}),[]),Qt=r.useRef(!1),Ss=r.useRef(!1),Ha=r.useRef(!1),er=r.useRef(""),es=r.useRef(!1),hn=3e4,zn=k?3e4:15e3,Or=Math.max(3e4,zn),Cn=r.useMemo(()=>{const R=Re?Date.parse(Re):NaN,C=Ae?Date.parse(Ae):NaN;return Number.isFinite(R)&&Number.isFinite(C)?R>=C?Re:Ae:Number.isFinite(R)?Re:Number.isFinite(C)?Ae:null},[Re,Ae]),Ga=r.useMemo(()=>Cw({enabled:D,phase:P,busy:ie,retryAt:Br,lastErrorMessage:b}),[D,P,ie,Br,b]),xr=Ga.status,Na=Ga.summary,ws=Ga.recommendedAction,nn=r.useCallback(R=>{const C=String(R||"").trim();if(!C)return null;const ht=uh()[C]?.updatedAt;return typeof ht=="string"&&ht.trim().length>0?ht.trim():null},[]),Ir=r.useCallback((R,C)=>{const Ke=String(R||"").trim(),ht=String(C||"").trim();if(!Ke||!ht)return;const De=uh();De[Ke]={updatedAt:ht},gw(De)},[]),hr=r.useCallback(()=>{const R=W?.mode==="operations"?"operations":"core";return{theme:V,operatingMode:R,localization:{locale:B,weekStartsOn:J}}},[V,W?.mode,B,J]),$r=r.useCallback(async R=>{if(!(!R||typeof R!="object")){Kt.current=!0;try{const C={},Ke=Gc(R.theme);if(Ke&&(pe(Ke),de&&X(Ke),C.theme=Ke),(R.operatingMode==="core"||R.operatingMode==="operations")&&(M(ht=>ht&&{...ht,mode:R.operatingMode}),C.setup={mode:R.operatingMode}),R.localization&&typeof R.localization=="object"){const ht={};if(typeof R.localization.locale=="string"&&R.localization.locale.trim().length>0){const oe=jg(R.localization.locale.trim());F(oe)}const De=String(R.localization.weekStartsOn||"").trim().toLowerCase();(De==="sunday"||De==="monday")&&(ue(De),ht.weekStartsOn=De),Object.keys(ht).length>0&&(C.schedulePreferences=ht)}Object.keys(C).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(C)})}finally{Kt.current=!1}}},[de,pe,X,M,F,ue]),gn=r.useCallback(async R=>{const C=R?.preferCloudOnFirstSync!==!1;if(!n)return;if(s!=="local"||!l){$t(),sa.current=0,Ne("disconnected");return}const Ke=String(i||"").trim();if(!Ke||Ke==="anonymous"){$t(),sa.current=0,Ne("disconnected");return}if(!Tt.current){Ne("syncing"),ce(null),Tt.current=!0;try{const ht=await CS({resolveCloudAuthUrl:m,userId:Ke,preferCloudOnFirstSync:C,getLocalUpdatedAt:nn,buildLocalSettings:hr,applyRemoteSettings:$r});if(!ht.success){Ne("error"),ht.transient?(ce(ht.error||"Sync failed temporarily. Retrying automatically."),Yn(ht.retryAfterMs)):($t(),sa.current=0,ce(ht.error||"Sync failed."));return}$t(),sa.current=0;const De=String(ht.updatedAt||"").trim()||new Date().toISOString();Ir(Ke,De),Ne("idle"),ce(null),Ka.current.add(Ke),ht.mode==="pulled"&&(Oa.current="")}catch{Ne("error"),ce("Sync failed temporarily. Retrying automatically."),Yn()}finally{Tt.current=!1}}},[n,s,l,i,m,nn,hr,$r,Ir,$t,Yn]);r.useEffect(()=>{ca.current=gn},[gn]),r.useEffect(()=>()=>{$t()},[$t]);const gr=r.useCallback(()=>{N(null),T(null)},[]),An=r.useCallback(R=>{N(dh),T(new Date().toISOString()),Ne("error"),ce(dh),Un("workspace_sync_window_contention",{workspaceId:t,operation:R})},[t]),Dn=r.useCallback(async R=>{try{return await Wr(R)}catch{return vn(R)}},[vn,Wr]),tr=r.useCallback(R=>{Dn(R).catch(()=>{})},[Dn]),ts=r.useCallback(()=>{const R={...fr(),taxonomyStateFingerprint:O},C=ph(t,R);return Dn({pushBaseline:Zg(R)}).catch(()=>{}),C},[fr,t,Dn,O]);r.useEffect(()=>{Xa.current="",wa.current="",he.current="",ot.current="",xe.current="",er.current="",es.current=!1,we([]),Me(""),et.current=[],Xe([]),ne(""),Je([]),ct(""),Lt.current=[],vt.current=[],Ot([]),Fe(""),Ie.current=[],c([]),ye(""),Ge(fh),N(null),T(null),q(0),Gt.current=new Set,ha.current=[],wn.current=new Map,pn.current=new Map,bn.current=new Set,$a.current=new Map,Mn.current=new Set,ka.current=new Map,Ua.current=new Set,_n.current=new Map,da.current=new Map,En.current=new Set,ta.current=new Map,za.current=new Set,_a.current=new Map,Qn.current=new Set,Xn.current=new Map,Ma.current=new Set,na.current=new Map,pa.current=new Set,fn.current=new Map,an.current=new Map,Ss.current=!1,Ea.current=!1;const R=mh(t,O);pr(R)||(Ht.current="missing-baseline")},[t,pr,O]),r.useEffect(()=>{if(Ht.current!=="missing-baseline")return;const R=mh(t,O);if(pr(R))return;const C=Yg(Ba().pushBaseline,O);pr(C)&&ph(t,{...fr(),taxonomyStateFingerprint:O})},[fr,t,pr,Ba,O,D,P]);const Ur=r.useCallback(R=>{Cr(()=>ua.current(),{minDelayMs:R})},[Cr]);r.useEffect(()=>{Sw({workspaceSyncPhase:P,lastBootstrapPhaseRef:Za,bootstrapPhaseStartedAtRef:Dt,bootstrapLastProgressAtRef:aa})},[P]),r.useEffect(()=>ww({currentWorkspaceId:t,workspaceCloudSyncEnabled:D,workspaceSyncPhase:P,workspacePullInFlightRef:Ca,workspacePushInFlightRef:en,bootstrapPhaseStartedAtRef:Dt,bootstrapLastProgressAtRef:aa,setWorkspaceLastErrorMessage:R=>N(R),setWorkspaceLastErrorAt:R=>T(R),setUserGlobalSyncStatus:Ne,setUserGlobalSyncError:R=>ce(R),setWorkspaceSyncBusy:ee,persistWorkspaceSyncPatchSafely:tr}),[t,D,P,tr,Ca,en]);const Ye=r.useCallback(async()=>SS({cloudAuthConfigured:n,runtimeMode:s,isAuthenticated:l,resolveCloudAuthUrl:m,workspaceId:t,workspaceName:d||t,allowProvisionOnMismatch:P!=="attach-cloud"}),[n,s,l,m,t,d,P]);r.useEffect(()=>{nt.current=S||[]},[S]),r.useEffect(()=>{gt.current=h||[]},[h]),r.useEffect(()=>{kn.current=new Set((g||[]).map(R=>String(R?.taskId||"").trim()).filter(R=>R.length>0)),mn.current=new Map((g||[]).map(R=>[String(R?.taskId||"").trim(),String(R?.deletedAt||"").trim()]).filter(([R,C])=>R.length>0&&Number.isFinite(Date.parse(C))))},[g,kn,mn]),r.useEffect(()=>{lt.current=v||[]},[v]),r.useEffect(()=>{St.current=A||[]},[A]);const Ut=r.useRef(!1),Ea=r.useRef(!1),oa=r.useCallback(R=>{const C=R?.forceAllAiProfiles===!0;return qS({tasks:nt.current,archivedTasks:gt.current,taskEvents:Lu(nt.current,gt.current,lt.current,St.current),lastPushedTaskIds:la.current,pendingDeletedTaskIds:kn.current,pendingDeletedTaskWatermarks:mn.current,initiatives:lt.current,workstreams:St.current,taxonomies:_||[],taxonomyState:I,lastPushedInitiativeIds:bn.current,lastPushedInitiativeWatermarks:$a.current,lastPushedWorkstreamIds:Mn.current,lastPushedWorkstreamWatermarks:ka.current,aiProfiles:et.current,lastPushedAiProfileIds:C?new Set:Ua.current,lastPushedAiProfileWatermarks:C?new Map:_n.current,lastPushedAiProfileChangeKeys:C?new Map:da.current,documents:qe.current,assets:ae.current,currentDocumentPaths:Ct.current,currentAssetPaths:Qe.current,documentReviewSessions:Lt.current,documentReviewComments:vt.current,annotatedAttachmentSessions:Ie.current,lastPushedDocumentPaths:En.current,lastPushedDocumentWatermarks:ta.current,lastPushedAssetPaths:za.current,lastPushedAssetWatermarks:_a.current,lastPushedDocumentReviewSessionIds:Qn.current,lastPushedDocumentReviewSessionWatermarks:Xn.current,lastPushedDocumentReviewCommentIds:Ma.current,lastPushedDocumentReviewCommentWatermarks:na.current,lastPushedAnnotatedAttachmentSessionIds:pa.current,lastPushedAnnotatedAttachmentSessionWatermarks:fn.current,lastPushedTaskEventWatermarks:an.current,baselineResetReason:Ht.current,lastPushedWatermarks:wn.current,lastPushedTaskChangeKeys:pn.current})},[_,I]),cn=r.useCallback((R,C)=>{if(s==="local")try{const Ke={...C,workspaceId:R,details:Cm(C.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(Ke)}).catch(ht=>{Un("sync_event_post_failed",{workspaceId:R,eventType:C.eventType,status:C.status,error:String(ht?.message||ht||"")})})}catch(Ke){Un("sync_event_post_failed",{workspaceId:R,eventType:C.eventType,status:C.status,error:String(Ke?.message||Ke||"")})}},[s]),rn=r.useCallback(()=>KS({workspaceId:t,tasks:nt.current,archivedTasks:gt.current,taskEvents:Lu(nt.current,gt.current,lt.current,St.current),pendingDeletedTaskIds:kn.current,initiatives:lt.current,workstreams:St.current,taxonomies:_||[],aiProfiles:et.current,documents:qe.current,assets:ae.current,documentReviewSessions:Lt.current,documentReviewComments:vt.current,annotatedAttachmentSessions:Ie.current}),[t,_,I]),bs=r.useMemo(()=>JSON.stringify({tasks:(S||[]).map(R=>({id:String(R.id||"").trim(),updatedAt:String(R.updatedAt||R.createdAt||"").trim(),status:String(R.status||"").trim(),referenceNumber:R.referenceNumber??null,localReferenceNumber:R.localReferenceNumber??null})).sort((R,C)=>R.id.localeCompare(C.id)),archivedTasks:(h||[]).map(R=>({id:String(R.id||"").trim(),updatedAt:String(R.updatedAt||R.createdAt||"").trim(),status:String(R.status||"").trim(),referenceNumber:R.referenceNumber??null,localReferenceNumber:R.localReferenceNumber??null})).sort((R,C)=>R.id.localeCompare(C.id)),initiatives:(v||[]).map(R=>({id:String(R.id||"").trim(),updatedAt:String(R.updatedAt||R.createdAt||"").trim(),isArchived:!!R.isArchived})).sort((R,C)=>R.id.localeCompare(C.id)),workstreams:(A||[]).map(R=>({id:String(R.id||"").trim(),updatedAt:String(R.updatedAt||R.createdAt||"").trim(),initiativeId:typeof R.initiativeId=="string"?R.initiativeId.trim():"",isArchived:!!R.isArchived})).sort((R,C)=>R.id.localeCompare(C.id)),taskEvents:Lu(S||[],h||[],v||[],A||[]).map(R=>({id:String(R.id||"").trim(),entityType:String(R.entityType||"task").trim(),entityId:String(R.entityId||R.taskId||"").trim(),createdAt:String(R.createdAt||"").trim(),action:String(R.action||"").trim()})).sort((R,C)=>R.id.localeCompare(C.id)),deletedTasks:(g||[]).map(R=>({taskId:String(R?.taskId||"").trim(),deletedAt:String(R?.deletedAt||"").trim()})).filter(R=>R.taskId.length>0&&Number.isFinite(Date.parse(R.deletedAt))).sort((R,C)=>R.taskId.localeCompare(C.taskId)),taxonomies:Array.isArray(_)?_:[],taxonomyState:I&&typeof I=="object"?I:null}),[S,h,g,v,A,_,I]),_s=r.useMemo(()=>{const R=[];for(const C of S||[]){const Ke=Array.isArray(C.attachments)?C.attachments.length:0;Ke>0&&R.push(`${C.id}:${Ke}`)}return R.join("|")},[S]),as=r.useCallback(R=>{if(!R)return!1;if(es.current)return es.current=!1,er.current=R,Jt.current=R,q(0),!0;const C=er.current;return C?R===C?(Jt.current=R,q(0),!0):(er.current="",!1):!1},[]),Ya=r.useCallback(async()=>{if(s==="local"&&ti(t)&&!(n&&(!o||!l)))try{const R=await fetch(`/api/taskforce/sync/workspace/documents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!R.ok)return;const C=await R.json().catch(()=>({})),Ke=Array.isArray(C?.documents)?C.documents.map(oe=>({path:String(oe?.path||"").trim(),updatedAt:String(oe?.updatedAt||"").trim(),content:typeof oe?.content=="string"?oe.content:"",assetId:typeof oe?.assetId=="string"&&oe.assetId.trim().length>0?oe.assetId.trim():void 0,documentId:typeof oe?.documentId=="string"&&oe.documentId.trim().length>0?oe.documentId.trim():null,referenceNumber:Number.isFinite(Number(oe?.referenceNumber))?Math.max(1,Math.floor(Number(oe.referenceNumber))):null,version:Number.isFinite(Number(oe?.version))?Math.max(1,Math.floor(Number(oe.version))):null,taskId:typeof oe?.taskId=="string"&&oe.taskId.trim().length>0?oe.taskId.trim():null,logicalName:typeof oe?.logicalName=="string"&&oe.logicalName.trim().length>0?oe.logicalName.trim():null,caption:typeof oe?.caption=="string"&&oe.caption.trim().length>0?oe.caption.trim():null,originalFilename:typeof oe?.originalFilename=="string"&&oe.originalFilename.trim().length>0?oe.originalFilename.trim():null,linkRole:oe?.linkRole==="reference"?"reference":"attachment"})).filter(oe=>oe.path.length>0):[],ht=new Set(Array.isArray(C?.knownPaths)?C.knownPaths.map(oe=>String(oe||"").trim()).filter(oe=>oe.length>0):Ke.map(oe=>oe.path)),De=typeof C?.fingerprint=="string"?C.fingerprint:JSON.stringify(Ke.map(oe=>`${oe.path}:${oe.updatedAt}:${oe.content.length}`).sort());if(De===Xa.current)return;Xa.current=De,qe.current=Ke,Ct.current=ht,we(Ke),Me(De)}catch(R){Un("documents_snapshot_refresh_failed",{workspaceId:t,error:String(R?.message||R||"")})}finally{ba("documents")}},[s,t,n,o,l,ba]),Wa=r.useCallback(async()=>{if(s!=="local"){Be("runtime-not-local");return}if(!ti(t)){Be("workspace-id-invalid");return}if(n&&(!o||!l)){Be(o?"auth-required":"auth-unresolved");return}Be(null);try{const R=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!R.ok){kt(`HTTP ${R.status}`),Ze(new Date().toISOString());return}const C=await R.json().catch(()=>({})),Ke=Array.isArray(C?.aiProfiles)?C.aiProfiles:[];Ft(Ke.length);const ht=Array.isArray(C?.aiProfiles)?C.aiProfiles.map(oe=>hw(oe)).filter(oe=>oe.id.length>0&&oe.workspaceId.length>0):[];kt(null),Ze(new Date().toISOString());const De=typeof C?.fingerprint=="string"?C.fingerprint:JSON.stringify(ht.map(oe=>[oe.id,oe.updatedAt,oe.name,oe.username,oe.archivedAt??"",oe.archivedReason??"",oe.mergedIntoProfileId??"",oe.rosterStateUpdatedAt??""].join(":")).sort());if(De===wa.current)return;wa.current=De,et.current=ht,Xe(ht),ne(De)}catch(R){kt(String(R?.message||R||"unknown-error")),Ze(new Date().toISOString()),Un("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(R?.message||R||"")})}finally{ba("aiProfiles")}},[s,t,n,o,l,ba]),Rt=r.useCallback(async()=>{if(s==="local"&&ti(t)&&!(n&&(!o||!l)))try{const R=await fetch(`/api/taskforce/sync/workspace/assets?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!R.ok)return;const C=await R.json().catch(()=>({})),Ke=Array.isArray(C?.assets)?C.assets.map(oe=>({path:String(oe?.path||"").trim(),updatedAt:String(oe?.updatedAt||"").trim(),contentBase64:typeof oe?.contentBase64=="string"?oe.contentBase64:"",assetId:typeof oe?.assetId=="string"&&oe.assetId.trim().length>0?oe.assetId.trim():void 0,kind:oe?.kind==="image"?"image":"file",mimeType:typeof oe?.mimeType=="string"&&oe.mimeType.trim().length>0?oe.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(oe?.referenceNumber))?Math.max(1,Math.floor(Number(oe.referenceNumber))):null,taskId:typeof oe?.taskId=="string"&&oe.taskId.trim().length>0?oe.taskId.trim():null,logicalName:typeof oe?.logicalName=="string"&&oe.logicalName.trim().length>0?oe.logicalName.trim():null,caption:typeof oe?.caption=="string"&&oe.caption.trim().length>0?oe.caption.trim():null,originalFilename:typeof oe?.originalFilename=="string"&&oe.originalFilename.trim().length>0?oe.originalFilename.trim():null,linkRole:oe?.linkRole==="reference"?"reference":oe?.linkRole==="image"?"image":"attachment"})).filter(oe=>oe.path.length>0&&oe.contentBase64.length>0):[],ht=new Set(Array.isArray(C?.knownPaths)?C.knownPaths.map(oe=>String(oe||"").trim()).filter(oe=>oe.length>0):Ke.map(oe=>oe.path)),De=typeof C?.fingerprint=="string"?C.fingerprint:JSON.stringify(Ke.map(oe=>`${oe.path}:${oe.updatedAt}:${oe.contentBase64.length}`).sort());if(De===he.current)return;he.current=De,ae.current=Ke,Qe.current=ht,Je(Ke),ct(De)}catch(R){Un("assets_snapshot_refresh_failed",{workspaceId:t,error:String(R?.message||R||"")})}finally{ba("assets")}},[s,t,n,o,l,ba]),yr=r.useCallback(async()=>{if(s==="local"&&ti(t)&&!(n&&(!o||!l)))try{const R=await fetch(`/api/taskforce/planning/bootstrap?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!R.ok)return;const C=await R.json().catch(()=>({})),Ke=Array.isArray(C?.initiatives)?C.initiatives.filter(De=>!!(De&&typeof De=="object"&&typeof De.id=="string")):[],ht=Array.isArray(C?.workstreams)?C.workstreams.filter(De=>!!(De&&typeof De=="object"&&typeof De.id=="string")):[];lt.current=Ke,St.current=ht}catch(R){Un("planning_snapshot_refresh_failed",{workspaceId:t,error:String(R?.message||R||"")})}},[s,t,n,o,l]),Hn=r.useCallback(async()=>{if(s==="local"&&ti(t)&&!(n&&(!o||!l)))try{const R=await fetch(`/api/taskforce/sync/workspace/document-reviews?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!R.ok)return;const C=await R.json().catch(()=>({})),Ke=Array.isArray(C?.sessions)?C.sessions.map(oe=>({id:String(oe?.id||"").trim(),assetId:String(oe?.assetId||"").trim(),documentId:typeof oe?.documentId=="string"&&oe.documentId.trim().length>0?oe.documentId.trim():null,documentVersion:Number.isFinite(Number(oe?.documentVersion))?Math.max(1,Math.floor(Number(oe.documentVersion))):null,title:typeof oe?.title=="string"&&oe.title.trim().length>0?oe.title.trim():null,status:oe?.status==="resolved"?"resolved":"open",comments:Array.isArray(oe?.comments)?oe.comments:[],createdByActorId:typeof oe?.createdByActorId=="string"&&oe.createdByActorId.trim().length>0?oe.createdByActorId.trim():null,updatedByActorId:typeof oe?.updatedByActorId=="string"&&oe.updatedByActorId.trim().length>0?oe.updatedByActorId.trim():null,createdAt:String(oe?.createdAt||"").trim(),updatedAt:String(oe?.updatedAt||oe?.createdAt||"").trim(),deletedAt:typeof oe?.deletedAt=="string"&&oe.deletedAt.trim().length>0?oe.deletedAt.trim():null})).filter(oe=>oe.id.length>0&&oe.assetId.length>0):[],ht=Array.isArray(C?.comments)?C.comments.map(oe=>({id:String(oe?.id||"").trim(),sessionId:String(oe?.sessionId||"").trim(),body:typeof oe?.body=="string"?oe.body:"",anchor:oe?.anchor??null,order:Number.isFinite(Number(oe?.order))?Math.max(0,Math.floor(Number(oe.order))):0,authorActorId:typeof oe?.authorActorId=="string"&&oe.authorActorId.trim().length>0?oe.authorActorId.trim():null,createdAt:String(oe?.createdAt||"").trim(),updatedAt:String(oe?.updatedAt||oe?.createdAt||"").trim(),deletedAt:typeof oe?.deletedAt=="string"&&oe.deletedAt.trim().length>0?oe.deletedAt.trim():null})).filter(oe=>oe.id.length>0&&oe.sessionId.length>0):kw(Ke),De=typeof C?.fingerprint=="string"?C.fingerprint:JSON.stringify([...Ke.map(oe=>`${oe.id}:${oe.updatedAt}:${oe.status}:${oe.deletedAt||""}:${oe.comments.length}`).sort(),...ht.map(oe=>`${oe.id}:${oe.sessionId}:${oe.updatedAt}:${oe.deletedAt||""}`).sort()]);if(De===ot.current)return;ot.current=De,Lt.current=Ke,vt.current=ht,Ot(Ke),Fe(De)}catch(R){Un("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(R?.message||R||"")})}finally{ba("documentReviewSessions")}},[s,t,n,o,l,ba]),Ln=r.useCallback(async()=>{if(s==="local"&&ti(t)&&!(n&&(!o||!l)))try{const R=await fetch(`/api/taskforce/sync/workspace/annotated-attachments?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!R.ok)return;const C=await R.json().catch(()=>({})),Ke=Array.isArray(C?.sessions)?C.sessions.map(De=>({id:String(De?.id||"").trim(),workspaceId:String(De?.workspaceId||"").trim(),taskId:String(De?.taskId||"").trim(),baseImageAssetId:String(De?.baseImageAssetId||"").trim(),title:typeof De?.title=="string"&&De.title.trim().length>0?De.title.trim():null,globalInstruction:typeof De?.globalInstruction=="string"&&De.globalInstruction.trim().length>0?De.globalInstruction.trim():null,annotations:Array.isArray(De?.annotations)?De.annotations:[],createdByActorId:typeof De?.createdByActorId=="string"&&De.createdByActorId.trim().length>0?De.createdByActorId.trim():null,updatedByActorId:typeof De?.updatedByActorId=="string"&&De.updatedByActorId.trim().length>0?De.updatedByActorId.trim():null,createdAt:String(De?.createdAt||"").trim(),updatedAt:String(De?.updatedAt||De?.createdAt||"").trim(),deletedAt:typeof De?.deletedAt=="string"&&De.deletedAt.trim().length>0?De.deletedAt.trim():null})).filter(De=>De.id.length>0&&De.workspaceId.length>0&&De.taskId.length>0&&De.baseImageAssetId.length>0):[],ht=typeof C?.fingerprint=="string"?C.fingerprint:JSON.stringify(Ke.map(De=>`${De.id}:${De.updatedAt}:${De.taskId}:${De.baseImageAssetId}:${De.annotations.length}:${De.deletedAt||""}`).sort());if(ht===xe.current)return;xe.current=ht,Ie.current=Ke,c(Ke),ye(ht)}catch(R){Un("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(R?.message||R||"")})}finally{ba("annotatedAttachmentSessions")}},[s,t,n,o,l,ba]),ar=r.useCallback(()=>{la.current=new Set([...nt.current,...gt.current].map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),wn.current=new Map([...nt.current,...gt.current].map(C=>[String(C?.id||"").trim(),ys.getWatermark(C)]).filter(([C])=>C.length>0)),pn.current=new Map([...nt.current.map(C=>[String(C?.id||"").trim(),ys.getChangeKey({...C,isArchived:!1})]),...gt.current.map(C=>[String(C?.id||"").trim(),ys.getChangeKey({...C,isArchived:!0})])].filter(([C])=>C.length>0)),bn.current=new Set(lt.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),$a.current=new Map(lt.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),Mn.current=new Set(St.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),ka.current=new Map(St.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),Ua.current=new Set(et.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),_n.current=new Map(et.current.map(C=>[String(C?.id||"").trim(),ld.getWatermark(C)]).filter(([C])=>C.length>0)),da.current=new Map(et.current.map(C=>[String(C?.id||"").trim(),ld.getChangeKey(C)]).filter(([C])=>C.length>0)),En.current=new Set(qe.current.map(C=>String(C?.path||"").trim()).filter(C=>C.length>0)),ta.current=new Map(qe.current.map(C=>[String(C?.path||"").trim(),String(C?.updatedAt||"").trim()]).filter(([C])=>C.length>0)),za.current=new Set(ae.current.map(C=>String(C?.path||"").trim()).filter(C=>C.length>0)),_a.current=new Map(ae.current.map(C=>[String(C?.path||"").trim(),String(C?.updatedAt||"").trim()]).filter(([C])=>C.length>0)),Qn.current=new Set(Lt.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),Xn.current=new Map(Lt.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),Ma.current=new Set(vt.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),na.current=new Map(vt.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),pa.current=new Set(Ie.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),fn.current=new Map(Ie.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),an.current=new Map(Lu(nt.current,gt.current,lt.current,St.current).map(C=>[String(C?.id||"").trim(),String(C?.createdAt||"").trim()]).filter(([C])=>C.length>0));const R=ts();Ht.current=R?null:"storage-write-failed"},[ts]),Cs=r.useCallback(async()=>{const[R,C]=await Promise.all([fetch("/api/taskforce/tasks",{method:"GET",credentials:"include"}),fetch("/api/taskforce/archive",{method:"GET",credentials:"include"})]);if(R.ok){const Ke=await R.json().catch(()=>({})),ht=Array.isArray(Ke?.tasks)?Ke.tasks.map(De=>To(De)):[];ve(ht)}if(C.ok){const Ke=await C.json().catch(()=>({})),ht=Array.isArray(Ke?.archived)?Ke.archived.map(De=>({...To(De),isArchived:!0})):[];re(ht)}await ge().catch(()=>{Un("refresh_planning_entities_failed",{workspaceId:t})})},[t,ge,re,ve]),{handleSyncAuthFailure:Tr,ensureWorkspaceSyncReady:zr}=r.useMemo(()=>vw({currentWorkspaceId:t,workspaceSyncPhase:P,clearWorkspaceRetry:ma,setWorkspaceSyncBusy:ee,setUserGlobalSyncStatus:Ne,setUserGlobalSyncError:R=>ce(R),setWorkspaceLastErrorMessage:R=>N(R),setWorkspaceLastErrorAt:R=>T(R),reportSyncEvent:cn,setAuthBlocked:x,setIsAuthenticated:K,checkAuthSession:me,ensureCloudWorkspaceReadyForSync:Ye,scheduleWorkspaceSyncRetry:Ur,persistWorkspaceSyncPatchSafely:tr}),[t,P,ma,cn,x,K,me,Ye,Ur,tr]),Bs=r.useMemo(()=>Dw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,workspaceSyncPhase:P,isAuthenticated:l,checkAuthSession:me,resolveCloudAuthUrl:m,ensureCloudWorkspaceReadyForSync:Ye,ensureWorkspaceSyncReady:zr,handleSyncAuthFailure:Tr,clearWorkspaceRetry:ma,clearWorkspaceIssue:gr,isWorkspaceRetryPending:Ta,scheduleWorkspaceSyncRetry:Ur,persistWorkspaceSyncPatchSafely:tr,persistWorkspaceSyncPatchBestEffort:Dn,persistWorkspaceSyncWatermarksSnapshotBestEffort:ts,reportSyncEvent:cn,acquireWorkspaceSyncLease:tn,releaseWorkspaceSyncLease:Aa,reportWorkspaceWindowContention:An,refreshWorkspaceSyncMarkdownDocumentsSnapshot:Ya,refreshWorkspaceSyncAiProfilesSnapshot:Wa,refreshWorkspaceSyncAssetsSnapshot:Rt,refreshWorkspaceSyncPlanningEntitiesSnapshot:yr,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:Hn,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:Ln,refreshLocalWorkspaceTaskCollections:Cs,buildWorkspaceSyncPayload:oa,buildWorkspaceSyncSignature:rn,seedWorkspaceSnapshotPushBaseline:ar,shouldSuppressAttachBootstrapPush:as,recordSuppressedEventIds:(...R)=>G.current.recordSuppressedEventIds(...R),workspaceRepairModeRef:Ha,workspaceForceFullAiProfilePushRef:Ut,workspacePushInFlightRef:en,workspacePullInFlightRef:Ca,workspacePendingPushReplayRef:Pa,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Ra,workspaceLastPushedTaskIdsRef:la,workspaceDeletedTaskIdsRef:kn,workspaceDeletedTaskWatermarksRef:mn,workspacePullCursorRef:Jn,workspaceLastPushedWatermarksRef:wn,workspaceLastPushedTaskChangeKeysRef:pn,workspaceLastPushedInitiativeIdsRef:bn,workspaceLastPushedInitiativeWatermarksRef:$a,workspaceLastPushedWorkstreamIdsRef:Mn,workspaceLastPushedWorkstreamWatermarksRef:ka,workspaceLastPushedAiProfileIdsRef:Ua,workspaceLastPushedAiProfileWatermarksRef:_n,workspaceLastPushedAiProfileChangeKeysRef:da,workspaceLastPushedDocumentPathsRef:En,workspaceLastPushedDocumentWatermarksRef:ta,workspaceLastPushedAssetPathsRef:za,workspaceLastPushedAssetWatermarksRef:_a,workspaceLastPushedDocumentReviewSessionIdsRef:Qn,workspaceLastPushedDocumentReviewSessionWatermarksRef:Xn,workspaceLastPushedDocumentReviewCommentIdsRef:Ma,workspaceLastPushedDocumentReviewCommentWatermarksRef:na,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:pa,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:fn,workspaceLastPushedTaskEventWatermarksRef:an,workspaceBaselineResetReasonRef:Ht,workspaceCaptureAttachBootstrapBaselineRef:es,workspaceStartupFullReconcileRanRef:Ss,workspaceFullReconcileInFlightRef:Ea,bootstrapLastProgressAtRef:aa,realtimeSuppressedEventQueueRef:ha,setWorkspaceSyncBusy:ee,setUserGlobalSyncStatus:Ne,setUserGlobalSyncError:ce,setWorkspaceLastErrorMessage:N,setWorkspaceLastErrorAt:T,setWorkspaceLastPullAt:Pe,setWorkspaceLastPushAt:Ee,setWorkspaceSyncPendingChanges:q,setTasks:ve,setArchivedTasks:re}),[n,s,D,t,P,O,l,me,m,Ye,zr,Tr,ma,gr,Ur,tr,Dn,ts,cn,tn,Aa,An,Ya,Wa,Rt,yr,Hn,Ln,Cs,oa,rn,ar,as,ve,re]),{pushWorkspaceChangesToCloud:Bn,pullWorkspaceChangesFromCloud:Wn}=Bs,G=r.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),Ve=r.useMemo(()=>Nw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,workspaceSyncPhase:P,workspacePullInFlightRef:Ca,realtimePullDebounceRef:tt,realtimeSuppressedEventIdsRef:Gt,clearWorkspaceRetry:ma,isWorkspaceRetryPending:Ta,pullWorkspaceChangesFromCloud:Wn}),[n,s,D,P,ma,Ta,Wn]);G.current=Ve;const At=y("/taskforce-ws"),jt=String(i||"").trim(),xn=Vg({enabled:!!(k&&n&&s==="local"&&D&&o&&l&&jt&&jt!=="anonymous"&&At),workspaceId:t,websocketUrl:At,onSignal:Ve.handleRealtimeSignal,onTelemetry:Et,userId:jt||void 0});r.useEffect(()=>{Vt(xn.connectionState)},[xn.connectionState]),r.useEffect(()=>()=>Ve.clearRealtimePullDebounce(),[Ve]);const In=r.useCallback(async R=>Pn(R,{cloudAuthConfigured:n,isAuthenticated:l,ensureCloudWorkspaceReadyForSync:Ye}),[Pn,n,l,Ye]),Ro=r.useCallback(async()=>{await gn({preferCloudOnFirstSync:!1})},[gn]),No=r.useMemo(()=>Pw({currentWorkspaceId:t,workspaceCloudSyncEnabled:D,workspaceSyncPhase:P,workspaceLastPullAt:Re,lastBootstrapPhaseRef:Za,workspaceRepairModeRef:Ha,workspaceForceFullAiProfilePushRef:Ut,workspaceStartupRepairRanRef:Qt,workspaceStartupFullReconcileRanRef:Ss,workspaceFullReconcileInFlightRef:Ea,workspacePullCursorRef:Jn,workspaceAttachBootstrapBaselineSignatureRef:er,workspaceCaptureAttachBootstrapBaselineRef:es,workspacePendingSignatureRef:Ra,workspaceLastPushedSignatureRef:Jt,workspaceLastPushedWatermarksRef:wn,workspaceLastPushedTaskChangeKeysRef:pn,workspaceLastPushedInitiativeIdsRef:bn,workspaceLastPushedInitiativeWatermarksRef:$a,workspaceLastPushedWorkstreamIdsRef:Mn,workspaceLastPushedWorkstreamWatermarksRef:ka,workspaceLastPushedAiProfileIdsRef:Ua,workspaceLastPushedAiProfileWatermarksRef:_n,workspaceLastPushedAiProfileChangeKeysRef:da,workspaceLastPushedDocumentPathsRef:En,workspaceLastPushedDocumentWatermarksRef:ta,workspaceLastPushedAssetPathsRef:za,workspaceLastPushedAssetWatermarksRef:_a,workspaceLastPushedDocumentReviewSessionIdsRef:Qn,workspaceLastPushedDocumentReviewSessionWatermarksRef:Xn,workspaceLastPushedDocumentReviewCommentIdsRef:Ma,workspaceLastPushedDocumentReviewCommentWatermarksRef:na,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:pa,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:fn,workspaceLastPushedTaskEventWatermarksRef:an,workspaceBaselineResetReasonRef:Ht,bootstrapPhaseStartedAtRef:Dt,bootstrapLastProgressAtRef:aa,acquireWorkspaceSyncLease:tn,releaseWorkspaceSyncLease:Aa,forceClearWorkspaceSyncLease:Fr,clearWorkspaceRetry:ma,clearWorkspaceIssue:gr,reportWorkspaceWindowContention:An,reportSyncEvent:cn,persistWorkspaceSyncPatch:Wr,persistWorkspaceSyncWatermarksSnapshotBestEffort:ts,buildWorkspaceSyncSignature:rn,pullWorkspaceChangesFromCloud:Wn,pushWorkspaceChangesToCloud:Bn,cloudAuthConfigured:n,runtimeMode:s,isAuthenticated:l,checkAuthSession:me}),[t,O,D,P,Re,tn,Aa,Fr,ma,gr,An,cn,Wr,ts,rn,Wn,Bn,n,s,l,me]),{retryWorkspaceCloudSync:Qs,resetWorkspaceSyncCursorAndPull:Va}=No,kr=r.useCallback(()=>{const R=Op({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,workspaceSyncPhase:P,isAuthenticated:l,repairModeActive:Ha.current===!0,repairModeBypass:!1,pushInFlight:en.current,pullInFlight:Ca.current}),C=Ta(),Ke=$p({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,workspaceSyncPhase:P,isAuthenticated:l,repairModeActive:Ha.current===!0,repairModeBypass:!1,retryPending:C,pushInFlight:en.current,pullInFlight:Ca.current}),ht=Up({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,currentWorkspaceId:t,isAuthenticated:l});return{workspaceId:t,enabled:D,phase:P,status:xr,summary:Na,lastSuccessfulSyncAt:Cn,lastPullAt:Re,lastPushAt:Ae,lastErrorAt:$,pendingChanges:Q,lastErrorMessage:b,recommendedAction:ws,pushBlockedReason:R.allowed?null:R.reason,pullBlockedReason:Ke.allowed?null:Ke.reason,retryBlockedReason:ht.allowed?null:ht.reason,repairActive:Ha.current===!0,pushInFlight:en.current===!0,pullInFlight:Ca.current===!0,retryPending:C,documentSnapshotCount:Se.length,aiProfileSnapshotCount:dt.length,aiProfileSnapshotRawCount:It,aiProfileSnapshotLastFetchAt:st,aiProfileSnapshotLastFetchError:Pt,aiProfileSnapshotLastSkipReason:Mt,assetSnapshotCount:Ue.length,documentReviewSessionSnapshotCount:bt.length,documentReviewSessionSnapshotFingerprint:Bt,annotatedAttachmentSessionSnapshotCount:E.length,annotatedAttachmentSessionSnapshotFingerprint:Y,lastPushedAiProfileCount:Ua.current.size,lastPushedAiProfileWatermarkCount:_n.current.size,forceFullAiProfilePushQueued:Ut.current===!0}},[n,t,s,D,P,l,xr,Na,Cn,Re,Ae,$,Q,b,ws,Se.length,dt.length,It,st,Pt,Mt,Ue.length,bt.length,Bt,E.length,Y,Ta]);r.useEffect(()=>{ua.current=Qs},[Qs]);const La=r.useCallback(()=>{Ya(),Rt()},[Ya,Rt]);return r.useEffect(()=>{if(!n||s!=="local"||!D||!o||!l)return;Ya(),Wa(),Rt(),Hn(),Ln();const R=ns=>{const sn=ns.detail;(String(sn?.workspaceId||"").trim()||"default")===t&&La()},C=ns=>{const sn=ns.detail;(String(sn?.workspaceId||"").trim()||"default")===t&&(Wa(),Rt())};window.addEventListener(Wp,R),window.addEventListener(Fp,C);const Ke=window.setInterval(()=>{Ya()},hn),ht=window.setInterval(()=>{Wa()},hn),De=window.setInterval(()=>{Rt()},hn),oe=window.setInterval(()=>{Hn()},hn),nr=window.setInterval(()=>{Ln()},hn);return()=>{window.removeEventListener(Wp,R),window.removeEventListener(Fp,C),window.clearInterval(Ke),window.clearInterval(ht),window.clearInterval(De),window.clearInterval(oe),window.clearInterval(nr)}},[n,s,D,o,l,t,La,Ya,Wa,Rt,Hn,Ln,hn]),r.useEffect(()=>{!n||s!=="local"||!D||!o||!l||_s&&La()},[n,s,D,o,l,_s,La]),r.useEffect(()=>{if(!Aw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,workspaceSyncPhase:P,workspaceSyncReferenceSnapshotsReady:ea}))return;const R=rn();if(as(R)||!R||R===Jt.current)return;const C=oa();if(q(C.changes.length),en.current||Ca.current){Ra.current=R;return}const Ke=window.setTimeout(()=>{Bn(R)},1500);return()=>window.clearTimeout(Ke)},[n,s,D,o,P,ea,rn,as,oa,bs,it,Te,yt,Bt,Y,Bn,en,Ca]),r.useEffect(()=>{if(!xw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,workspaceSyncPhase:P,workspaceSyncReferenceSnapshotsReady:ea}))return;const R=window.setInterval(()=>{if(en.current||Ca.current||Ta())return;const C=Ra.current||rn();if(!C||C===Jt.current)return;const Ke=oa();q(Ke.changes.length),Ke.changes.length!==0&&Bn(C)},Or);return()=>window.clearInterval(R)},[n,s,D,o,P,ea,rn,oa,Bn,Ta,Or]),r.useEffect(()=>{n&&s==="local"&&D||(ma(),ee(!1))},[n,s,D,ma]),r.useEffect(()=>{const R=Iw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,workspaceSyncPhase:P,lastPullAt:Re,retryPending:Ta()});if(!R.shouldStart)return;R.shouldKickOffImmediately&&Wn();const C=window.setInterval(()=>{Wn()},zn);return()=>{window.clearInterval(C)}},[n,s,D,o,P,Re,Ta,Wn,zn]),r.useEffect(()=>{if(!Tw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,isAuthenticated:l,workspaceSyncPhase:P}))return;const R=window.setInterval(()=>{Ea.current||(Ea.current=!0,Wn({forceCursorNull:!0}).finally(()=>{Ea.current=!1}))},pw);return()=>window.clearInterval(R)},[n,s,D,o,l,P,Wn]),r.useEffect(()=>{s!=="local"||!l||!i||i==="anonymous"||gn({preferCloudOnFirstSync:!0})},[s,l,i,gn]),r.useEffect(()=>{if(s!=="local"||!l||!i||i==="anonymous"||!Ka.current.has(i)||Kt.current)return;const R=hr(),C=JSON.stringify(R);if(!Oa.current){Oa.current=C;return}if(C===Oa.current)return;Oa.current=C,Ir(i,new Date().toISOString());const Ke=window.setTimeout(()=>{gn({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(Ke)},[s,l,i,hr,Ir,gn]),r.useEffect(()=>{Rw({cloudAuthConfigured:n,runtimeMode:s,workspaceCloudSyncEnabled:D,authSessionResolved:o,isAuthenticated:l,workspaceSyncPhase:P,alreadyRan:Qt.current})&&(Qt.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 R=>{if(!R.ok)return;const C=await R.json().catch(()=>({}));C?.applied>0&&(Un("startup_repair_applied",{workspaceId:t,applied:C.applied,skipped:C.skipped,failed:C.failed}),Ya(),Wa(),Rt(),Hn())}).catch(()=>{}))},[n,s,D,o,l,P,t,Ya,Wa,Rt,Hn]),{userGlobalSyncStatus:_e,setUserGlobalSyncStatus:Ne,userGlobalSyncError:se,setUserGlobalSyncError:ce,workspaceLastPullAt:Re,workspaceLastPushAt:Ae,workspaceLastErrorAt:$,workspaceLastErrorMessage:b,workspaceLastSuccessfulSyncAt:Cn,workspaceCloudSyncEnabled:D,workspaceSyncPhase:P,workspaceSyncSetupIntent:be,workspaceSyncStatus:xr,workspaceSyncSummary:Na,workspaceSyncRecommendedAction:ws,workspaceSyncBusy:ie,workspaceSyncPendingChanges:Q,syncInFlightRef:Nt,workspaceRetryAt:Br,isWorkspaceRetryPending:Ta,workspacePushInFlightRef:en,workspacePullInFlightRef:Ca,workspaceLastPushedSignatureRef:Jt,workspacePendingSignatureRef:Ra,workspaceLastPushedTaskIdsRef:la,workspaceDeletedTaskIdsRef:kn,workspaceDeletedTaskWatermarksRef:mn,workspacePullCursorRef:Jn,clearWorkspaceRetry:ma,persistWorkspaceSyncPatch:Wr,loadWorkspaceSyncState:Ar,applyWorkspaceSyncStateSnapshot:_t,syncUserGlobalSettings:gn,buildWorkspaceSyncSignature:rn,pushWorkspaceChangesToCloud:Bn,pullWorkspaceChangesFromCloud:Wn,saveWorkspaceCloudSyncSettings:In,retryUserGlobalSettingsSync:Ro,retryWorkspaceCloudSync:Qs,resetWorkspaceSyncCursorAndPull:Va,getWorkspaceSyncDiagnostics:kr}}function Bw(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?3600:2600}function Ww(){const[e,t]=r.useState(null),n=r.useRef(null),s=r.useCallback(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null),t(null)},[]),o=r.useCallback((l,i="info",d)=>{if(!l)return;n.current!==null&&(window.clearTimeout(n.current),n.current=null),t({message:l,tone:i,ttlMs:d});const m=Bw(i,d);n.current=window.setTimeout(()=>{n.current=null,t(null)},m)},[]);return r.useEffect(()=>()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),{uiNotice:e,pushNotice:o,clearNotice:s}}function Fw({storagePath:e,shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:n}){const[s,o]=r.useState("antigravity"),[l,i]=r.useState([]),[d,m]=r.useState(".agent/workflows"),[y,k]=r.useState(null),[S,h]=r.useState(null),g=r.useRef(null),v=t||n;r.useEffect(()=>{const W=l.find(V=>V.id===s);W&&m(W.directory)},[s,l]);const A=r.useCallback(()=>{typeof window>"u"||(g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h(null)},5e3))},[]),_=r.useCallback(async()=>{if(v)return;const W=await fetch("/api/taskforce/environments");if(!W.ok)return;const V=await W.json().catch(()=>({}));V.environments&&i(V.environments)},[v]),I=r.useCallback(async(W,V)=>{k("workflows"),h(null);try{const J=await(await fetch("/api/taskforce/export-resources",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"workflows",environment:W,workflowNames:V,variables:{STORAGE_PATH:e.replace(/\/$/,"")||".Taskforce"}})})).json();J.success?h({type:"success",message:`Successfully exported ${J.count} workflows to ${W}`}):h({type:"error",message:J.error||"Export failed"})}catch{h({type:"error",message:"Network error exporting workflows"})}finally{k(null),A()}},[A,e]);return r.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null)},[]),{exportEnvironment:s,setExportEnvironment:o,availableEnvironments:l,loadAvailableEnvironments:_,exportWorkflowsPath:d,setExportWorkflowsPath:m,exportingResource:y,exportResult:S,handleExportWorkflows:I}}function Ow(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:n,normalizedCloudAuthBaseUrl:s,normalizedCloudMcpBaseUrl:o,mergedConfig:l,availableWorkspaces:i,currentTheme:d,configLoaded:m,globalTheme:y,themeUseGlobalDefault:k,keyShortcut:S,jsonBackupEnabled:h,globalJsonBackupEnabled:g,globalWeekStartsOn:v,locale:A,supportedLocales:_,jsonBackupUseGlobalDefault:I,manualComplexityEnabled:W,checklistDropdownEnabled:V,showTaskCardStatusLabel:B,exportWorkflowsPath:J,exportingResource:de,exportResult:ve,pathSaved:re,settingsSection:x,exportEnvironment:K,setupState:me,buildInfo:pe,saveSetupMode:X,saveWorkspaceProfile:M,setCurrentTheme:F,handleSaveTheme:ue,handleSaveGlobalTheme:ge,setKeyShortcut:O,handleJsonBackupEnabledChange:_e,handleSaveGlobalJsonBackupEnabled:Ne,handleSaveGlobalWeekStartsOn:se,handleSaveLocale:ce,handleManualComplexityEnabledChange:Re,handleChecklistDropdownEnabledChange:Pe,handleShowTaskCardStatusLabelChange:Ae,handleResetProjectToGlobal:Ee,handleSaveSettings:$,setExportWorkflowsPath:T,setExportEnvironment:b,availableWorkflows:N,initiativeTemplates:D,availableEnvironments:te,fetchWorkflows:P,fetchInitiativeTemplates:H,createInitiativeFromTemplate:be,fetchWorkflowTemplate:U,fetchWorkflowOverrideNames:ie,saveWorkflowTemplateDraft:ee,resetWorkflowTemplateDraft:Q,handleExportWorkflows:q,setShowFolderBrowser:Se,setBrowserTarget:we,fetchFolders:Te,activeCategories:Me,pathValidation:nt,taxonomyDisplayLabels:gt,handleUpdateCategory:lt,handleRemoveCategory:St,handleSaveCategory:qe,handleAddPath:Ct,handleRemovePath:dt,handleUpdateCategoryIcon:Xe,handleUpdateCategoryColor:it,activeTypes:ne,handleSaveType:st,handleRemoveType:Ze,handleUpdateType:Pt,taxonomies:kt,handleUpdateTaxonomies:It,priorities:Ft,handleUpdatePriorities:Mt,analyzeSystemTaxonomyPack:Be,handleApplySystemTaxonomyPack:et,handleUpdateTaxonomyDisplayLabels:Ue,projectRoot:Je,projectName:yt,mcpHostRoot:ct,serverHostRoot:ae,mcpScriptPath:Qe,tenantId:bt,runtimeMode:Ot,workspaceSwitchingEnabled:Bt,deleteWorkspace:Fe,setMcpHostRoot:Lt,isAuthenticated:vt}=e,E=r.useCallback(async(Y,ye)=>{const Ie=t(Y),ze=new Headers(ye?.headers||void 0);if(Y.startsWith("/api/taskforce/settings/mcp/")){const je=String(n||"").trim();je&&je!=="default"&&!ze.has("x-taskforce-workspace-id")&&ze.set("x-taskforce-workspace-id",je)}const Ge={...ye,headers:ze,credentials:ye?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(Ie))try{new URL(Ie,window.location.origin).origin!==window.location.origin&&Ge.mode===void 0&&(Ge.mode="cors")}catch{}return fetch(Ie,Ge)},[n,t]),c=i.find(Y=>Y.id===n);return{fetchCloudAuthApi:E,currentTheme:d,configLoaded:m,globalTheme:y,themeUseGlobalDefault:k,keyShortcut:S,jsonBackupEnabled:h,globalJsonBackupEnabled:g,globalWeekStartsOn:v,locale:A,supportedLocales:_,jsonBackupUseGlobalDefault:I,manualComplexityEnabled:W,checklistDropdownEnabled:V,showTaskCardStatusLabel:B,exportWorkflowsPath:J,exportingResource:de,exportResult:ve,pathSaved:re,initialSection:x,exportEnvironment:K,setupState:me,buildInfo:pe,onSaveSetupMode:X,onSaveWorkspaceProfile:M,onThemeChange:F,onSaveTheme:ue,onSaveGlobalTheme:ge,onKeyShortcutChange:O,onJsonBackupEnabledChange:_e,onSaveGlobalJsonBackupEnabled:Ne,onSaveGlobalWeekStartsOn:se,onSaveLocale:ce,onManualComplexityEnabledChange:Re,onChecklistDropdownEnabledChange:Pe,onShowTaskCardStatusLabelChange:Ae,onResetProjectToGlobal:Ee,onSaveSettings:$,onExportWorkflowsPathChange:T,onExportEnvironmentChange:b,availableWorkflows:N,initiativeTemplates:D,availableEnvironments:te,onRefreshWorkflows:P,onRefreshInitiativeTemplates:H,onCreateInitiativeFromTemplate:be,onFetchWorkflowTemplate:U,onFetchWorkflowOverrideNames:ie,onSaveWorkflowTemplateDraft:ee,onResetWorkflowTemplateDraft:Q,onExportWorkflows:q,onShowFolderBrowserChange:Se,onBrowserTargetChange:we,onFetchFolders:Te,categories:Me,pathValidation:nt,taxonomyDisplayLabels:gt,onUpdateCategory:lt,onRemoveCategory:St,onSaveCategory:qe,onAddPath:Ct,onRemovePath:dt,onUpdateCategoryIcon:Xe,onUpdateCategoryColor:it,types:ne,onSaveType:st,onRemoveType:Ze,onUpdateType:Pt,taxonomies:kt,onUpdateTaxonomies:It,priorities:Ft,onUpdatePriorities:Mt,onAnalyzeSystemTaxonomyPack:Be,onApplySystemTaxonomyPack:et,onUpdateTaxonomyDisplayLabels:Ue,projectRoot:Je,projectName:yt,mcpHostRoot:ct,serverHostRoot:ae,mcpScriptPath:Qe,tenantId:bt,workspaceId:n,runtimeMode:Ot,cloudAuthBaseUrl:s||l.cloudAuthBaseUrl,cloudMcpBaseUrl:o||void 0,workspaceSwitchingEnabled:Bt,currentWorkspaceRole:c?.role||"member",currentWorkspaceName:String(c?.name||""),onDeleteWorkspace:Fe,onMcpHostRootChange:Lt,isAuthenticated:vt}}function $w(e){const{keyShortcut:t,themeUseGlobalDefault:n,runtimeMode:s,jsonBackupUseGlobalDefault:o,globalTheme:l,globalJsonBackupEnabled:i,setCurrentTheme:d,setThemeUseGlobalDefault:m,setGlobalTheme:y,setJsonBackupEnabled:k,setJsonBackupUseGlobalDefault:S,setGlobalJsonBackupEnabled:h,setGlobalWeekStartsOn:g,setLocale:v,setManualComplexityEnabled:A,setChecklistDropdownEnabled:_,setShowTaskCardStatusLabel:I,setShowChecklist:W}=e,V=r.useCallback(async()=>{try{const M=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!M.ok)throw new Error(`Failed to save global settings (${M.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),B=r.useCallback(async M=>{d(M),m(!1);try{const F=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:M})});if(!F.ok)throw new Error(`Failed to save config (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[d,m]),J=r.useCallback(async M=>{y(M),n&&d(M);try{const F=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:M})});if(!F.ok)throw new Error(`Failed to save global settings (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[y,n,d]),de=r.useCallback(async M=>{if(s==="cloud")return k(!1),S(!1),!1;k(M),S(!1);try{const F=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:M})});if(!F.ok)throw new Error(`Failed to save config (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[s,k,S]),ve=r.useCallback(async M=>{if(s==="cloud")return h(!1),o&&k(!1),!1;h(M),o&&k(M);try{const F=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:M})});if(!F.ok)throw new Error(`Failed to save global settings (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[s,h,o,k]),re=r.useCallback(async M=>{g(M);try{const F=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:M}})});if(!F.ok)throw new Error(`Failed to save global settings (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[g]),x=r.useCallback(async M=>{const F=jg(M);return v(F),!0},[v]),K=r.useCallback(async M=>{A(M);try{const F=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:M})});if(!F.ok)throw new Error(`Failed to save config (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[A]),me=r.useCallback(async M=>{_(M),M||W(!1);try{const F=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:M})});if(!F.ok)throw new Error(`Failed to save config (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[_,W]),pe=r.useCallback(async M=>{I(M);try{const F=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({showTaskCardStatusLabel:M})});if(!F.ok)throw new Error(`Failed to save config (${F.status})`);return!0}catch{return console.error("[Taskforce] Failed to save task card status label setting"),!1}},[I]),X=r.useCallback(async()=>{m(!0),S(!0),d(l),k(i),A(!1),_(!0),I(!0),W(!1);try{const M=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null,jsonBackupEnabled:null,manualComplexityEnabled:null,checklistDropdownEnabled:null,showTaskCardStatusLabel:null})});if(!M.ok)throw new Error(`Failed to save config (${M.status})`);return!0}catch{return console.error("[Taskforce] Failed to reset project settings"),!1}},[m,S,d,l,k,i,A,_,I,W]);return{handleSaveSettings:V,handleSaveTheme:B,handleSaveGlobalTheme:J,handleJsonBackupEnabledChange:de,handleSaveGlobalJsonBackupEnabled:ve,handleSaveGlobalWeekStartsOn:re,handleSaveLocale:x,handleManualComplexityEnabledChange:K,handleChecklistDropdownEnabledChange:me,handleShowTaskCardStatusLabelChange:pe,handleResetProjectToGlobal:X}}function Uw(e){const{activeCategories:t,activeTab:n,activeTypes:s,archivedTasks:o,browserTarget:l,category:i,configLoaded:d,customCategories:m,refreshTaskCollections:y,fetchTasks:k,filterCategories:S,getCategoryPaths:h,normalizePath:g,pathValidation:v,setBrowserTarget:A,setCategory:_,setCustomCategories:I,setCustomTypes:W,setFilterCategories:V,setPathValidation:B,setPriorities:J,setShowFolderBrowser:de,setTaxonomies:ve,tasks:re}=e,x=r.useCallback(async(T,b)=>{const N=await T.json().catch(()=>({}));return String(N?.error||b)},[]),K=r.useCallback(()=>[...re,...o],[o,re]),me=r.useCallback(T=>T.priorities.find(b=>b.value===2)?.value||T.priorities[0]?.value||2,[]),pe=r.useCallback(async T=>{if(T.length!==0)try{const b=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:T})});if(b.ok){const N=await b.json();B(D=>({...D,...N.results}))}}catch(b){console.error("[Taskforce] Failed to validate paths:",b)}},[B]);r.useEffect(()=>{if(n!=="settings"||!d)return;const T=[];t.forEach(N=>{h(N).forEach(te=>{T.includes(te)||T.push(te)})});const b=T.filter(N=>!v[N]);b.length>0&&pe(b)},[t,n,d,h,v,pe]);const X=r.useCallback(async(T,b)=>{if(d){I(N=>(N.length>0?N:t).map(te=>te.value===T.value?T:te)),b&&b!==T.label&&(i===b&&_(T.label),S.includes(b)&&V(N=>N.map(D=>D===b?T.label:D)));try{const te={categories:(m.length>0?m:t).map(P=>P.value===T.value?T:P)};b&&b!==T.label&&(te.reassignFrom=b,te.reassignTo=T.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te)}),b&&await k()}catch(N){console.error("[Taskforce] Failed to update category",N)}}},[t,i,d,m,k,S,_,I,V]),M=r.useCallback(async T=>{if(!d)return;const b=T.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(D=>D.value===b))return;const N={value:b,label:T.trim(),color:"blue-200",icon:"Folder"};I(D=>[...D.length>0?D:t,N]);try{const te=[...m.length>0?m:t,N];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:te})})}catch(D){console.error("[Taskforce] Failed to create category",D)}},[t,d,m,I]),F=r.useCallback((T,b)=>{if(!b.trim())return;const N=t.find(H=>H.value===T);if(!N)return;const D=h(N),te=b.trim();if(D.includes(te))return;const P=[...D,te];X({...N,path:void 0,paths:P}),pe(P)},[t,h,X,pe]),ue=r.useCallback((T,b)=>{const N=t.find(D=>D.value===T);N&&X({...N,icon:b})},[t,X]),ge=r.useCallback((T,b)=>{const N=t.find(D=>D.value===T);N&&X({...N,color:b})},[t,X]),O=r.useCallback((T,b)=>{const N=t.find(P=>P.value===T);if(!N)return;const te=h(N).filter(P=>P!==b);X({...N,path:void 0,paths:te})},[t,h,X]),_e=r.useCallback(T=>{const b=g(T);if(l&&typeof l=="object"&&l.type==="category"){const N=t.find(D=>D.value===l.value);if(N){const D=h(N);if(!D.includes(b)){const te=[...D,b];X({...N,path:void 0,paths:te})}}}de(!1),A(null)},[t,l,h,X,g,A,de]),Ne=r.useCallback(async T=>{if(!d)return;const b=Zc,N=t.find(H=>H.value===b),D=N?{...N}:{value:b,label:wm,icon:"Inbox"},te=D.label,P=t.find(H=>H.value===T);I(H=>{let U=(H.length>0?H:t).filter(ie=>ie.value!==T);return U.some(ie=>ie.value===b)||(U=[D,...U]),U}),P&&((i===P.label||i===P.value)&&_(b),(S.includes(P.label)||S.includes(P.value))&&V(H=>{const be=H.filter(U=>U!==P.label&&U!==P.value);return be.includes(b)?be:[...be,b]}));try{let H=(m.length>0?m:t).filter(be=>be.value!==T);H.some(be=>be.value===b)||(H=[D,...H]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:H,reassignFrom:P?.label||T,reassignTo:te})}),await k()}catch(H){console.error("[Taskforce] Failed to remove category",H)}},[t,i,d,m,k,S,_,I,V]),se=r.useCallback(async T=>{if(!T.trim())return;const b=T.trim().toLowerCase().replace(/\s+/g,"-");if(s.some(D=>D.value===b))return;const N=[...s,{value:b,label:T.trim(),status:"active"}];W(N);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:N})})}catch(D){console.error("Failed to save type",D)}},[s,W]),ce=r.useCallback(async T=>{const b=s.map(N=>N.value===T?{...N,status:"retired"}:N);W(b);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:b})}),await k()}catch(N){console.error("Failed to save type",N)}},[s,k,W]),Re=r.useCallback(async(T,b)=>{const N=s.find(H=>H.value===T);if(!N)return;const D=typeof b.label=="string"?b.label.trim():N.label;if(!D)return;const te=s.map(H=>H.value===T?{...H,...b,label:D}:H);if(JSON.stringify(te)!==JSON.stringify(s)){W(te);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:te})})}catch(H){console.error("Failed to update type",H)}}},[s,W]),Pe=r.useCallback(async T=>{if(d){ve(T);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:T})})}catch(b){console.error("[Taskforce] Failed to save taxonomies",b)}}},[d,ve]),Ae=r.useCallback(async T=>{if(d){J(T);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:T})})}catch(b){console.error("[Taskforce] Failed to save priorities",b)}}},[d,J]),Ee=r.useCallback(T=>{const b=K(),N=new Set(T.categories.map(U=>U.value)),D=new Set(T.types.map(U=>U.value)),te=new Set(T.priorities.map(U=>Number(U.value))),P=Array.from(new Set(b.map(U=>String(U.category||"").trim()).filter(U=>U.length>0&&!N.has(U)))).sort(),H=Array.from(new Set(b.map(U=>String(U.type||"").trim()).filter(U=>U.length>0&&!D.has(U)))).sort(),be=Array.from(new Set(b.map(U=>Number(U.priority)).filter(U=>Number.isFinite(U)&&U>0&&!te.has(U)))).sort((U,ie)=>U-ie);return{unmatchedCategoryValues:P,unmatchedTypeValues:H,incompatiblePriorityValues:be}},[K]),$=r.useCallback(async T=>{if(!d)return{success:!1,error:"Settings are still loading."};const{pack:b,sections:N,remapExistingValuesToDefault:D,workspaceIdOverride:te}=T,P=String(te||"").trim(),H=P.length>0,be=H?[]:K(),U=ee=>{if(!P)return ee;const Q=ee.includes("?")?"&":"?";return`${ee}${Q}workspaceId=${encodeURIComponent(P)}`},ie=()=>{const ee={"Content-Type":"application/json"};return P&&(ee["x-taskforce-workspace-id"]=P),ee};try{if(N.categories){const ee=new Set(b.categories.map(Se=>Se.value)),Q=D?[...b.categories]:[...b.categories,...t.filter(Se=>!ee.has(Se.value)).map(Se=>({...Se,disabled:!0}))];H||I(Q);const q=await fetch(U("/api/taskforce/categories"),{method:"POST",headers:ie(),body:JSON.stringify({categories:Q})});if(!q.ok)return{success:!1,error:await x(q,"Failed to apply category library pack.")}}if(N.types){const ee=new Set(b.types.map(we=>we.value)),Q=b.types.find(we=>we.value===Lr)?.value||b.types[0]?.value||Lr;if(D){const we=be.filter(Te=>Te.type&&!ee.has(String(Te.type))).map(Te=>({id:Te.id,type:Q}));if(we.length>0){const Te=await fetch(U("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ie(),body:JSON.stringify({updates:we})});if(!Te.ok)return{success:!1,error:await x(Te,"Failed to remap task types to the pack default.")}}}const q=D?[...b.types]:[...b.types,...s.filter(we=>!ee.has(we.value)).map(we=>({...we,status:"retired"}))];H||W(q);const Se=await fetch(U("/api/taskforce/types"),{method:"POST",headers:ie(),body:JSON.stringify({types:q})});if(!Se.ok)return{success:!1,error:await x(Se,"Failed to apply task type library pack.")}}if(N.priorities){const ee=new Set(b.priorities.map(we=>we.value)),Q=Array.from(new Set(be.map(we=>Number(we.priority)).filter(we=>Number.isFinite(we)&&we>0&&!ee.has(we)))).sort((we,Te)=>we-Te);if(Q.length>0&&!D)return{success:!1,error:`This workspace still uses priority levels ${Q.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(Q.length>0){const we=me(b),Te=be.filter(Me=>Q.includes(Number(Me.priority))).map(Me=>({id:Me.id,priority:we}));if(Te.length>0){const Me=await fetch(U("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ie(),body:JSON.stringify({updates:Te})});if(!Me.ok)return{success:!1,error:await x(Me,"Failed to remap task priorities to the pack default.")}}}const q=b.priorities.map(we=>({...we,value:Number(we.value)}));H||J(q);const Se=await fetch(U("/api/taskforce/priorities"),{method:"POST",headers:ie(),body:JSON.stringify({priorities:q})});if(!Se.ok)return{success:!1,error:await x(Se,"Failed to apply priority library pack.")}}return H||await y({isSilent:!0}),{success:!0}}catch(ee){return console.error("[Taskforce] Failed to apply system taxonomy pack",ee),{success:!1,error:ee instanceof Error?ee.message:"Failed to apply system taxonomy pack."}}},[t,s,d,K,me,x,y,I,W,J]);return{getCategoryPaths:h,validatePaths:pe,handleUpdateCategory:X,handleSaveCategory:M,handleAddPath:F,handleUpdateCategoryIcon:ue,handleUpdateCategoryColor:ge,handleRemovePath:O,handleSelectPath:_e,handleRemoveCategory:Ne,handleSaveType:se,handleRemoveType:ce,handleUpdateType:Re,handleUpdateTaxonomies:Pe,handleUpdatePriorities:Ae,analyzeSystemTaxonomyPack:Ee,handleApplySystemTaxonomyPack:$}}function zw({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:t}){const[n,s]=r.useState([]),[o,l]=r.useState([]),i=e||t,d=r.useCallback(async()=>{if(!i)try{const g=await fetch("/api/taskforce/workflow-templates");if(g.ok){const v=await g.json();s(v.templates||[])}}catch{}},[i]),m=r.useCallback(async()=>{if(i)return[];try{const g=await fetch("/api/taskforce/initiative-templates");if(!g.ok)return[];const v=await g.json(),A=Array.isArray(v?.templates)?v.templates:[];return l(A),A}catch{return[]}},[i]),y=r.useCallback(async g=>{if(!g||i)return null;const v=[`/api/taskforce/workflow-template/${encodeURIComponent(g)}`,`/api/taskforce/workflow-templates/${encodeURIComponent(g)}`];try{for(const A of v){const _=await fetch(A);if(!_.ok)continue;const I=await _.json();if(I?.template)return I.template}return null}catch{return null}},[i]),k=r.useCallback(async()=>{if(i)return[];try{const g=await fetch("/api/taskforce/workflow-editor/overrides");if(!g.ok)return[];const v=await g.json();return Array.isArray(v?.names)?v.names:[]}catch{return[]}},[i]),S=r.useCallback(async(g,v)=>{try{const A=await fetch("/api/taskforce/workflow-editor/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g,draft:v})}),_=await A.json().catch(()=>({}));return!A.ok||!_.success?{success:!1,error:_.error||`Save failed (${A.status})`}:(d(),{success:!0})}catch(A){return{success:!1,error:A.message}}},[d]),h=r.useCallback(async g=>{try{const v=await fetch(`/api/taskforce/workflow-editor/reset/${encodeURIComponent(g)}`,{method:"POST"}),A=await v.json().catch(()=>({}));return!v.ok||!A.success?{success:!1,error:A.error||`Reset failed (${v.status})`}:(d(),{success:!0})}catch(v){return{success:!1,error:v.message}}},[d]);return{availableWorkflows:n,initiativeTemplates:o,fetchWorkflows:d,fetchInitiativeTemplates:m,fetchWorkflowTemplate:y,fetchWorkflowOverrideNames:k,saveWorkflowTemplateDraft:S,resetWorkflowTemplateDraft:h}}function Hw(){const[e,t]=r.useState(!1),n=r.useCallback(async()=>{if(!document.fullscreenElement){try{await document.documentElement.requestFullscreen(),t(!0)}catch(s){console.error(`Error attempting to enable full-screen mode: ${s}`)}return}document.exitFullscreen&&(await document.exitFullscreen(),t(!1))},[]);return r.useEffect(()=>{const s=()=>{t(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",s),()=>document.removeEventListener("fullscreenchange",s)},[]),{zenMode:e,setZenModeState:t,toggleZenMode:n}}async function Gw(e,t,n){if(e.current){t.current=!0;return}e.current=!0;try{do t.current=!1,await n();while(t.current)}finally{e.current=!1}}function Vw({tasks:e,archivedTasks:t,setTasks:n,setArchivedTasks:s,setLoadingTasks:o,getCurrentWorkspaceId:l,workspaceResetKey:i,shouldDeferProtectedApiCalls:d,shouldBlockProtectedApiCalls:m,handleUnauthorized:y,authRequiredForApi:k}){const S=r.useRef(new Map),h=r.useRef(!1),g=r.useRef([]),v=r.useRef([]),A=r.useRef(!1),_=r.useRef(!1),I=r.useRef(null),W=r.useRef(null);r.useEffect(()=>{g.current=e},[e]),r.useEffect(()=>{v.current=t},[t]);const V=r.useCallback(M=>`${M.updatedAt||M.createdAt||""}|${M.status}|${M.priority}|${M.title}`,[]),B=r.useCallback((M,F)=>F.aborted?M===F.reason?!0:M instanceof DOMException?M.name==="AbortError":String(M?.name||"").toLowerCase()==="aborterror":!1,[]),[J,de]=r.useState([]),ve=r.useRef(new Map),re=r.useCallback(M=>{!M.length||typeof window>"u"||(de(F=>Array.from(new Set([...F,...M]))),M.forEach(F=>{const ue=ve.current.get(F);ue&&window.clearTimeout(ue);const ge=window.setTimeout(()=>{ve.current.delete(F),de(O=>O.filter(_e=>_e!==F))},4e3);ve.current.set(F,ge)}))},[]);r.useEffect(()=>()=>{typeof window>"u"||(ve.current.forEach(M=>window.clearTimeout(M)),ve.current.clear())},[]),r.useEffect(()=>{S.current=new Map,h.current=!1,A.current=!1,_.current=!1,I.current?.abort("workspace-reset"),I.current=null,W.current?.abort("workspace-reset"),W.current=null,typeof window<"u"&&(ve.current.forEach(M=>window.clearTimeout(M)),ve.current.clear()),de([])},[i]);const x=r.useCallback(async(M=!1,F)=>{if(!(F?.ignoreAuthGuard===!0)&&(d||m))return;o(!M);const ge=String(l()||"").trim();I.current?.abort("superseded");const O=new AbortController;I.current=O;try{const _e=await fetch("/api/taskforce/tasks",{signal:O.signal});if(_e.status===401){y(),n([]),M||o(!1);return}if(_e.ok){const se=((await _e.json()).tasks||[]).map(Ae=>To(Ae));if(String(l()||"").trim()!==ge)return;const Re=new Map,Pe=[];for(const Ae of se){const Ee=V(Ae);if(Re.set(Ae.id,Ee),!h.current)continue;const $=S.current.get(Ae.id);(!$||$!==Ee)&&Pe.push(Ae.id)}S.current=Re,h.current?re(Pe):h.current=!0,n(se)}}catch(_e){if(B(_e,O.signal))return;console.error("[Taskforce] Failed to fetch tasks:",_e)}finally{I.current===O&&(I.current=null,o(!1))}},[V,l,re,y,n,o,k,d,m]),K=r.useCallback(async(M=!1,F)=>{if(!(F?.ignoreAuthGuard===!0)&&(d||m))return;const ge=String(l()||"").trim();W.current?.abort("superseded");const O=new AbortController;W.current=O;try{const _e=await fetch("/api/taskforce/archive",{signal:O.signal});if(_e.ok){const Ne=await _e.json();if(String(l()||"").trim()!==ge)return;const ce=(Ne.archived||[]).map(Re=>({...To(Re),isArchived:!0}));s(ce)}}catch(_e){if(B(_e,O.signal))return;console.error("[Taskforce] Failed to fetch archive:",_e)}finally{W.current===O&&(W.current=null)}},[l,B,s,d,m]),me=r.useCallback(async M=>{const F=M?.isSilent!==!1,ue=M?.ignoreAuthGuard===!0;await Promise.all([x(F,{ignoreAuthGuard:ue}),K(F,{ignoreAuthGuard:ue})])},[K,x]),pe=r.useCallback(async()=>{await Gw(A,_,async()=>{await me({isSilent:!0})})},[me]),X=r.useCallback(M=>{const F=Rv(M,g.current,v.current);g.current=F.tasks,v.current=F.archivedTasks,n(F.tasks),s(F.archivedTasks)},[n,s]);return{tasksRef:g,archivedTasksRef:v,recentlyChangedTaskIds:J,markRecentlyChangedTasks:re,fetchTasks:x,fetchArchive:K,refreshTaskCollections:me,refreshTaskCollectionsFromInvalidation:pe,mergeTaskFromServer:X,getTaskRevisionKey:V}}function qw(e){const{editingTaskId:t,relationshipTasks:n,initiatives:s=[],workstreams:o=[],supplementalTasks:l=[],setComments:i}=e,d=r.useMemo(()=>{if(l.length===0)return n;const S=new Map;return n.forEach(h=>S.set(h.id,h)),l.forEach(h=>S.set(h.id,h)),Array.from(S.values())},[n,l]),m=r.useMemo(()=>{if(t)return d.find(S=>S.id===t)},[d,t]);r.useEffect(()=>{t&&i(m?.comments||[])},[t,m?.id,m?.updatedAt,m?.comments,i]);const y=r.useMemo(()=>{if(m?.workstreamId)return o.find(S=>S.id===m.workstreamId)},[m,o]),k=r.useMemo(()=>{if(y?.initiativeId)return s.find(S=>S.id===y.initiativeId)},[y,s]);return{currentTask:m,currentTaskWorkstream:y,currentTaskInitiative:k}}const mf="WS-",pf="IN-";function xo(e){return Jc(mf,e)}function Qg(e){return Xp(mf,e)}function cm(e){return bm(mf,e)}function Qr(e){return Jc(pf,e)}function Kw(e){return Xp(pf,e)}function Xg(e){return bm(pf,e)}function yp(e,t){const n=String(t||"").trim();if(!n)return null;const s=Kw(n);return e.find(o=>o.id===n||Qr(o)===n||s!==null&&o.referenceNumber===s)||null}function Zw(e){const t={};return e.forEach(n=>{const s=n.defaultValue;if(s!=null){if(Array.isArray(s)){s.length>0&&(t[n.id]=s.map(o=>typeof o=="number"?o:String(o)));return}t[n.id]=typeof s=="number"?s:String(s)}}),t}function Yw(e,t){return e.filter(n=>{const s=t[n.id],o=Array.isArray(s)?s.length>0:s!=null&&s!=="";return n.status==="retired"&&!o?!1:n.formEnabled!==!1||n.isRequired===!0||o})}function Jw(e){const{activeCategories:t,activeTypes:n,activeTab:s,attachments:o,checklistItems:l,comments:i,description:d,editingTaskId:m,flushPendingAutoSave:y,getPreferredCategoryValue:k,lastUsedCategory:S,newCommentText:h,relationshipTasks:g,workstreams:v,showArchive:A,taxonomies:_,setActiveTab:I,setApproach:W,setAssignee:V,setAttachments:B,setAttachmentsDirty:J,setCategory:de,setChecklistItems:ve,setComments:re,setComplexity:x,setDescription:K,setDueDate:me,setEditingTaskId:pe,setError:X,setFormTaxonomies:M,setIsOpen:F,setNewCommentText:ue,setPendingNavigation:ge,setWorkstreamInput:O,setPriority:_e,setScheduledDate:Ne,setShowArchive:se,setStatus:ce,setTaskReturnTrail:Re,setTitle:Pe,setType:Ae,setUnsavedModalOpen:Ee,taskReturnTrail:$,title:T}=e,b=r.useCallback(()=>n.find(Q=>String(Q.value||"").trim().length>0)?.value||Lr,[n]),N=r.useCallback(Q=>{if(m){y(),Q();return}if(!(T.trim()!==""||d.trim()!==""||l.length>0||h.trim()!==""||i.length>0||o.length>0)){Q();return}ge(()=>Q),Ee(!0)},[o,i.length,d,m,y,l,h,ge,Ee,T]),D=r.useCallback(()=>{F(!1)},[F]),te=r.useCallback(()=>{pe(null),Pe(""),K("");const Q=S,q=t.some(Se=>Se.label===Q||Se.value===Q);if(Q&&q){const Se=t.find(we=>we.label===Q||we.value===Q);de(Se?.value||Q)}else de(k(t));Ae(b()),_e(2),x(3),ce("task"),W("default"),V("unassigned"),Ne(""),me(""),O(""),ve([]),M(Zw(_)),re([]),ue(""),B([]),J(!1),X("")},[t,k,b,S,W,V,B,J,de,ve,re,x,K,me,pe,X,M,ue,_e,Ne,ce,Pe,Ae,_]),P=r.useCallback(Q=>{const q=Q.trim();if(!q)return null;const Se=Ag(q);if(Se){const Me=g.find(nt=>nt.referenceNumber===Se);if(Me)return Me}const we=g.find(Me=>Me.id===q);if(we)return we;const Te=g.find(Me=>Yi(Me)===q);return Te||null},[g]),H=r.useCallback(Q=>{const q=Q.trim();if(!q)return null;const Se=q.toLowerCase(),we=Qg(q);if(we){const nt=v.find(gt=>gt.referenceNumber===we);if(nt)return nt}const Te=v.find(nt=>nt.id===q);if(Te)return Te;const Me=v.find(nt=>nt.title.trim().toLowerCase()===Se);return Me||null},[v]),be=r.useCallback((Q,q)=>{q?.preserveReturnTrail||Re([]),pe(Q.id),Pe(Q.title),K(Q.description||""),de(Q.category||k(t)),Ae(Q.type||b()),_e(typeof Q.priority=="number"?Q.priority:2),x(typeof Q.complexity=="number"?Q.complexity:3),ce(Q.status||"task"),W(Q.approach||"default"),V(Q.assignee||"unassigned"),Ne(Q.scheduledDate||""),me(Q.dueDate||"");const Se=Q.workstreamId&&v.find(we=>we.id===Q.workstreamId)||null;O(Se?xo(Se)||Se.id:""),ve(Q.checklistItems||[]),re(Q.comments||[]),M(Q.taxonomies||{}),Q.taxonomies?.approach&&W(Q.taxonomies.approach),B(Q.attachments||[]),J(!1),I("add")},[t,k,b,I,W,V,B,J,de,ve,re,x,K,me,pe,M,_e,Ne,ce,Re,Pe,Ae,v]),U=r.useCallback(Q=>{const q=g.find(Se=>Se.id===Q);q&&(s==="add"&&m&&m!==q.id&&Re(Se=>Se[Se.length-1]===m?Se:[...Se,m]),q.isArchived&&!A&&se(!0),be(q,{preserveReturnTrail:!0}))},[s,m,be,g,se,Re,A]),ie=r.useCallback(()=>{if(s!=="add"||!m||$.length===0)return!1;const Q=[...$];for(;Q.length>0;){const q=Q.pop();if(!q)continue;const Se=g.find(we=>we.id===q);if(Se)return Se.isArchived&&!A&&se(!0),Re(Q),be(Se,{preserveReturnTrail:!0}),!0}return Re([]),!1},[s,m,be,g,se,Re,A,$]),ee=r.useCallback(()=>{Re([])},[Re]);return{handleNavigation:N,handleClose:D,resetForm:te,resolveTaskIdInput:P,resolveWorkstreamIdInput:H,handleEdit:be,handleOpenTaskById:U,returnToPreviousTask:ie,clearReturnToParentTask:ee}}function Qw(e){return e.map(t=>({...t}))}function Xw(e){return e.map(t=>({...t}))}function eb(e){return e.map(t=>({...t}))}const tb={id:"software-development",label:"Software Development",description:"A software-oriented starter pack with developer-focused work types and a 4-level priority scale.",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"}]},ab=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",isDefaultStarter:!0,categories:[{value:Zc,label:wm,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"}]},tb];function ey(){return ab.map(e=>({...e,categories:Qw(e.categories),types:Xw(e.types),priorities:eb(e.priorities)}))}const qc=[{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:"ScanSearch",color:"violet-500"},{value:"done",label:"Done",shortLabel:"Done",icon:"SquareCheck",color:"green-500"},{value:"cancelled",label:"Cancelled",shortLabel:"Cancelled",icon:"Ban",color:"red-500"}],Ys=qc.map(({value:e,label:t,icon:n,color:s})=>({value:e,label:t,icon:n,color:s}));function dd(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?qc.find(n=>n.value==="done")||qc[0]:qc.find(n=>n.value===t)||qc[0]}const ty=["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","Bot","Cloud","Kanban","Infinity","Monitor","Smartphone","History","Brain","Calendar","Play","Pause","Sparkles","Check","Ban","Circle","CheckCircle","Wind","Github","Square","SquareCheck","CheckSquare","Package","AlertCircle","Lightbulb","ScanSearch","Inbox","HelpCircle","Gauge","FileCode","ArrowDown","Minus","ArrowUp","AlertTriangle","CircleQuestionMark","TriangleAlert"],Qi=ty.reduce((e,t)=>(e[t]=ks[t]||Ki,e),{}),AO=ty,lm=Object.fromEntries(ey().flatMap(e=>e.types).filter(e=>e.icon&&e.color).reduce((e,t)=>(e.some(([n])=>n===t.value)||e.push([t.value,{icon:t.icon,color:t.color}]),e),[])),nb={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"},hh={"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"},xO=["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 jn(e){if(e)return hh[e]?hh[e]:e}function rb(e){const t=String(e||"").trim().toLowerCase();return jn(lm[t]?.color)||jn("violet-200")||"#9c7aeb"}function IO(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 sb(e){const t=String(e||"").trim().toUpperCase();return jn(nb[t])||"var(--text-muted)"}const ob=/[\u2010-\u2015\u2212]/g;function ff(e){return String(e??"").trim().replace(ob,"-").replace(/\s+/g," ").toLowerCase()}function Am(e){const t=ff(e);if(!t)return null;const n=t.match(/^(l\s*t|t)\s*(?:-\s*)?(\d+)$/i);return n?`${n[1].replace(/\s+/g,"").toLowerCase()}-${n[2]}`:null}function xm(e){const t=ff(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:Am(e)}}function Jr(e,t){const n=String(t??"").trim();n&&e.push(n)}function zc(e,t,n){const s=String(n??"").trim();if(!s)return;const o=t?.find(l=>String(l.value)===s);Jr(e,o?.label)}function ib(e,t={}){const n=[];return Jr(n,e.title),Jr(n,e.description),Jr(n,e.id),Jr(n,Yi(e)),Jr(n,e.category),Jr(n,e.type),Jr(n,e.priority),Jr(n,e.status),Jr(n,e.assignee||"unassigned"),Jr(n,e.canceledReason),zc(n,t.categories,e.category),zc(n,t.types,e.type),zc(n,t.priorities,e.priority),zc(n,Ys,e.status),zc(n,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([s,o])=>{const l=t.taxonomies?.find(d=>d.id===s);Jr(n,l?.label),(Array.isArray(o)?o:[o]).forEach(d=>{Jr(n,d),zc(n,l?.options,d)})}),n}function dm(e,t,n={}){const s=typeof t=="string"?xm(t):t;if(!s.raw)return!0;const o=ib(e,n),i=o.map(ff).filter(Boolean).join(" ");return i.includes(s.raw)||s.referenceToken&&o.map(Am).some(m=>m?.includes(s.referenceToken))?!0:s.tokens.length>0&&s.tokens.every(d=>i.includes(d))}function cb(e,t){const n=e.taxonomies?.[t];return n==null||n===""?!1:Array.isArray(n)?n.some(s=>String(s).trim().length>0):String(n).trim().length>0}function wd(e,t){const n=e.filter(o=>o.status!=="retired"),s=e.filter(o=>o.status==="retired"&&t.some(l=>cb(l,o.id)));return[...n,...s.filter(o=>!n.some(l=>l.id===o.id))]}function ay(e,t=[]){return wd(e,t).filter(n=>n.sortEnabled===!0).map(n=>({value:`taxonomy:${n.id}`,label:n.status==="retired"?`${n.label} (Retired)`:n.label}))}function gh(e,t){const n=e.taxonomies?.[t.id];if(n==null||n==="")return null;const s=Array.isArray(n)?n.map(o=>String(o)):[String(n)];for(let o=0;o<t.options.length;o+=1)if(s.includes(String(t.options[o]?.value)))return o;return null}function $i(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}function um(e,t,n,s,o=[]){let l=0;if(n==="created")return l=$i(e,t),s==="desc"?l:-l;if(n==="updated"){const i=e.updatedAt||e.createdAt,d=t.updatedAt||t.createdAt;return l=new Date(d).getTime()-new Date(i).getTime(),s==="desc"?l:-l}if(n==="priority"){const i=am(e.priority),d=am(t.priority);return l=i!==d?d-i:$i(e,t),s==="desc"?l:-l}if(n==="complexity"){const i=typeof e.complexity=="number"?e.complexity:3,d=typeof t.complexity=="number"?t.complexity:3;return l=i!==d?d-i:$i(e,t),s==="desc"?l:-l}if(n.startsWith("taxonomy:")){const i=n.slice(9),d=o.find(k=>k.id===i);if(!d)return l=$i(e,t),s==="desc"?l:-l;const m=gh(e,d),y=gh(t,d);return m===null&&y===null?$i(e,t):m===null?1:y===null?-1:m!==y?s==="desc"?y-m:m-y:$i(e,t)}return l=$i(e,t),s==="desc"?l:-l}function lb(e,t,n){const s=e.taxonomies?.[t];return s==null||s===""?!1:Array.isArray(s)?s.some(o=>String(o)===String(n)):String(s)===String(n)}function hf(e,t){const n=e.options.filter(o=>o.status!=="retired"),s=e.options.filter(o=>o.status==="retired"&&t.some(l=>lb(l,e.id,o.value)));return[...n,...s.filter(o=>!n.some(l=>String(l.value)===String(o.value)))]}function db({tasks:e,archivedTasks:t,activeCategories:n,activeTypes:s,priorities:o,taxonomies:l,configLoaded:i,referenceDataLoaded:d,assigneeOptionsLoaded:m,assigneeOptions:y}){const k=r.useMemo(()=>Bg(y),[y]),S=r.useMemo(()=>wd(l,[...e,...t]).filter(U=>U.filterEnabled!==!1).map(U=>({...U,options:hf(U,[...e,...t])})),[t,e,l]),h=r.useMemo(()=>k.map(U=>U.value),[k]),[g,v]=r.useState(""),[A,_]=r.useState([]),[I,W]=r.useState([]),[V,B]=r.useState([]),[J,de]=r.useState(!1),[ve,re]=r.useState(Ys.map(U=>U.value)),[x,K]=r.useState(h),[me,pe]=r.useState(!0),[X,M]=r.useState({}),[F,ue]=r.useState("created"),[ge,O]=r.useState("desc"),_e=r.useCallback(()=>{O(U=>U==="asc"?"desc":"asc")},[]),[Ne,se]=r.useState("category"),[ce,Re]=r.useState("show"),[Pe,Ae]=r.useState({}),Ee=r.useCallback((U,ie)=>ie.length===0?!0:ie.every(ee=>U.includes(ee)),[]),$=r.useCallback((U,ie)=>U.length===ie.length&&U.every((ee,Q)=>ee===ie[Q]),[]);r.useEffect(()=>{Ne==="approach"&&se("status")},[Ne]),r.useEffect(()=>{if(!(!i||!d)&&m&&!J&&n.length>0&&s.length>0&&o.length>0){_(n.map(ie=>ie.value)),W(o.map(ie=>ie.value)),B(s.map(ie=>ie.value)),K(h),pe(!0);const U={};S.forEach(ie=>{U[ie.id]=ie.options.map(ee=>ee.value)}),M(U),de(!0)}},[i,d,m,n,s,o,S,J,h]),r.useEffect(()=>{if(!J||!m)return;const U=new Set(h),ie=x.filter(q=>U.has(q)),ee=me?h:ie.length>0||x.length===0?ie:h;(ee.length!==x.length||ee.some((q,Se)=>q!==x[Se]))&&K(ee)},[h,x,me,J,m]),r.useEffect(()=>{if(!J||!m)return;const U=x.filter(ee=>h.includes(ee)),ie=h.length>0&&h.every(ee=>U.includes(ee));ie!==me&&pe(ie)},[h,x,me,J,m]),r.useEffect(()=>{if(!i||!d||!J||n.length===0)return;const U=jv(A,n);(U.length!==A.length||U.some((ee,Q)=>ee!==A[Q]))&&_(U)},[i,d,n,J,A]),r.useEffect(()=>{if(!i||!d||!J||o.length===0||I.length===0)return;const U=Nv(I,o),ie=Array.from(new Set(I.map(Q=>Number(Q)).filter(Q=>Number.isFinite(Q))));(U.length!==ie.length||U.some((Q,q)=>Q!==ie[q]))&&W(U)},[i,d,J,o,I]),r.useEffect(()=>{if(!i||!d||!J||s.length===0)return;const U=new Set(s.map(Q=>Q.value)),ie=V.filter(Q=>U.has(Q)),ee=ie.length>0||V.length===0?ie:s.map(Q=>Q.value);$(ee,V)||B(ee)},[s,i,V,J,$,d]),r.useEffect(()=>{if(!i||!d||!J)return;const U={};S.forEach(Se=>{const we=Se.options.map(nt=>nt.value);if(we.length===0)return;const Te=Array.isArray(X[Se.id])?X[Se.id]:[],Me=Te.filter(nt=>we.includes(nt));U[Se.id]=Me.length>0||Te.length===0?Me:we});const ie=Object.keys(X).sort(),ee=Object.keys(U).sort(),Q=ie.length!==ee.length||ie.some((Se,we)=>Se!==ee[we]),q=ee.some(Se=>!$(X[Se]||[],U[Se]||[]));(Q||q)&&M(U)},[i,X,S,J,$,d]);const T=r.useCallback(()=>{v(""),_(n.map(ie=>ie.value)),W(o.map(ie=>ie.value)),B(s.map(ie=>ie.value)),re(Ys.map(ie=>ie.value)),K(h),pe(!0);const U={};S.forEach(ie=>{U[ie.id]=ie.options.map(ee=>ee.value)}),M(U),ue("created"),O("desc")},[n,o,s,S,h]),b=r.useCallback(U=>{K(ie=>{const ee=typeof U=="function"?U(ie):U,Q=Array.from(new Set(ee.filter(Se=>typeof Se=="string"&&Se.trim().length>0))),q=h.length>0&&h.every(Se=>Q.includes(Se));return pe(q),Q})},[h]),N=r.useMemo(()=>xm(g),[g]),D=r.useMemo(()=>({categories:n,types:s,priorities:o,assigneeOptions:k,taxonomies:l}),[n,s,o,k,l]),te=r.useMemo(()=>{const U=Ee(A,n.map(q=>q.value)),ie=Ee(V,s.map(q=>q.value)),ee=Ee(Array.from(new Set(I.map(q=>Number(q)).filter(q=>Number.isFinite(q)))),o.map(q=>Number(q.value)).filter(q=>Number.isFinite(q))),Q=Ee(ve,Ys.map(q=>q.value));return e.filter(q=>{const Se=dm(q,N,D),we=!J||U||A.includes(q.category),Te=!J||ee||lp(q.priority,I),Me=!J||ie||V.includes(q.type||Lr),nt=!J||Q||ve.includes(q.status),gt=!J||me||x.includes(q.assignee||"unassigned"),lt=Object.entries(X).every(([St,qe])=>{const Ct=S.find(it=>it.id===St);if(!Ct)return!0;const dt=Ct?.options.every(it=>qe.includes(it.value))??!0;if(dt)return!0;const Xe=q.taxonomies?.[St];return Xe?Array.isArray(Xe)?Xe.some(it=>qe.includes(it)):qe.includes(Xe):dt||qe.includes("")});return Se&&we&&Te&&Me&&nt&&gt&&lt}).sort((q,Se)=>um(q,Se,F,ge,l))},[e,t,N,D,A,I,V,ve,x,me,X,F,ge,J,S,n,s,o,Ee,l]),P=r.useMemo(()=>{const U=Ee(A,n.map(q=>q.value)),ie=Ee(V,s.map(q=>q.value)),ee=Ee(Array.from(new Set(I.map(q=>Number(q)).filter(q=>Number.isFinite(q)))),o.map(q=>Number(q.value)).filter(q=>Number.isFinite(q))),Q=Ee(ve,Ys.map(q=>q.value));return e.filter(q=>{const Se=!J||U||A.includes(q.category),we=!J||ee||lp(q.priority,I),Te=!J||ie||V.includes(q.type||Lr),Me=!J||Q||ve.includes(q.status),nt=!J||me||x.includes(q.assignee||"unassigned"),gt=Object.entries(X).every(([lt,St])=>{const qe=S.find(Xe=>Xe.id===lt);if(!qe)return!0;const Ct=qe?.options.every(Xe=>St.includes(Xe.value))??!0;if(Ct)return!0;const dt=q.taxonomies?.[lt];return dt?Array.isArray(dt)?dt.some(Xe=>St.includes(Xe)):St.includes(dt):Ct||St.includes("")});return Se&&we&&Te&&Me&&nt&&gt})},[e,t,A,I,V,ve,x,me,X,J,S,n,s,o,Ee]),H=r.useMemo(()=>{const U=n.every(Q=>A.includes(Q.value)),ie=Ee(V,s.map(Q=>Q.value)),ee=Ee(Array.from(new Set(I.map(Q=>Number(Q)).filter(Q=>Number.isFinite(Q)))),o.map(Q=>Number(Q.value)).filter(Q=>Number.isFinite(Q)));return t.filter(Q=>{const q=dm(Q,N,D),Se=!J||U||A.includes(Q.category),we=!J||ee||lp(Q.priority,I),Te=!J||ie||V.includes(Q.type||Lr),Me=!J||me||x.includes(Q.assignee||"unassigned"),nt=Object.entries(X).every(([gt,lt])=>{const St=S.find(dt=>dt.id===gt);if(!St)return!0;const qe=St?.options.every(dt=>lt.includes(dt.value))??!0;if(qe)return!0;const Ct=Q.taxonomies?.[gt];return Ct?Array.isArray(Ct)?Ct.some(dt=>lt.includes(dt)):lt.includes(Ct):qe||lt.includes("")});return q&&Se&&we&&Te&&Me&&nt}).sort((Q,q)=>um(Q,q,F,ge,l))},[t,N,D,A,I,V,x,me,X,F,ge,J,n,s,o,S,Ee,l]),be=r.useMemo(()=>{const U={};return te.forEach(ie=>{const ee=n.find(q=>q.value===ie.category),Q=ee?ee.label:ie.category||"General";U[Q]||(U[Q]=[]),U[Q].push(ie)}),U},[te,n]);return{searchQuery:g,setSearchQuery:v,filterCategories:A,setFilterCategories:_,filterPriorities:I,setFilterPriorities:W,filterTypes:V,setFilterTypes:B,filterStatus:ve,setFilterStatus:re,filterAssignees:x,setFilterAssignees:b,filterAssigneesAllSelected:me,setFilterAssigneesAllSelected:pe,filterTaxonomies:X,setFilterTaxonomies:M,hasInitedFilters:J,setHasInitedFilters:de,sortBy:F,setSortBy:ue,sortOrder:ge,setSortOrder:O,toggleSortOrder:_e,groupBy:Ne,setGroupBy:se,emptyColumnMode:ce,setEmptyColumnMode:Re,collapsedCategories:Pe,setCollapsedCategories:Ae,clearFilters:T,filteredTasks:te,searchAgnosticTasks:P,filteredArchive:H,groupedTasks:be}}const ub=db;function mb(e){const{activeCategories:t,activeTab:n,apiEndpoint:s,approach:o,assignee:l,attachments:i,attachmentsDirty:d,category:m,checklistItems:y,comments:k,complexity:S,description:h,dueDate:g,editingTaskId:v,fetchTasks:A,formTaxonomies:_,getPreferredCategoryValue:I,mergeTaskFromServer:W,workstreamInput:V,priority:B,pushNotice:J,queueWorkspaceSyncFromAuthoritativeTaskState:de,relationshipTasks:ve,resetForm:re,resolveWorkstreamIdInput:x,scheduledDate:K,setActiveTab:me,setAttachmentsDirty:pe,setComments:X,setError:M,setLastUsedCategory:F,setLoading:ue,setNewCommentText:ge,status:O,title:_e,taxonomies:Ne,type:se}=e,[ce,Re]=r.useState(null),[Pe,Ae]=r.useState("idle"),[Ee,$]=r.useState(null),T=r.useRef(null),b=r.useCallback(()=>JSON.stringify({title:_e.trim(),description:h||"",category:typeof m=="string"?m:m.label||I(t),type:typeof se=="string"?se:se.label||Lr,priority:Number(B),complexity:Number(S)||3,approach:o||"default",assignee:l||"agent",scheduledDate:K||"",dueDate:g||"",workstreamInput:V.trim(),checklistItems:y,comments:k,taxonomies:_,attachments:i}),[t,o,l,i,m,y,k,S,h,g,_,I,B,K,_e,se,V]),N=r.useCallback(()=>{T.current!==null&&(window.clearTimeout(T.current),T.current=null)},[]),D=r.useCallback(async ee=>{const Q=ee?.quiet??!1,q=ee?.source??"manual";if(!_e.trim())return M("Title is required"),v&&Ae(q==="autosave"?"error":"idle"),!1;const Se=Ne.filter(we=>we.isRequired).filter(we=>{const Te=_[we.id];return Array.isArray(Te)?Te.filter(Me=>String(Me).trim().length>0).length===0:typeof Te!="string"&&typeof Te!="number"||String(Te).trim().length===0}).map(we=>we.label);if(Se.length>0)return M(`Required taxonomy values are missing: ${Se.join(", ")}`),v&&Ae(q==="autosave"?"error":"idle"),!1;if(v&&ve.find(Te=>Te.id===v)?.isArchived)return M("Archived tasks are read-only. Unarchive first to make changes."),Ae(q==="autosave"?"error":"idle"),!1;ue(!0),M(""),v&&Ae("saving");try{const we=v?`/api/taskforce/task/${v}`:s.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),Te=v?"PATCH":"POST",Me=typeof m=="string"?m:m.label||I(t),nt=typeof se=="string"?se:se.label||Lr,gt=V.trim()?x(V):null,lt={title:_e,description:h||null,category:Me||I(t),type:nt,priority:B,complexity:Number(S)||3,status:v?void 0:O,completedAt:v?void 0:O==="done"?new Date().toISOString():null,approach:o||"default",assignee:l||"agent",scheduledDate:K||null,dueDate:g||null,workstreamId:V.trim()?gt?.id||V.trim():null,checklistItems:y,comments:k,taxonomies:_,...v?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};(!v||d)&&(lt.attachments=i),v&&(lt.saveSource=q);const St=await fetch(we,{method:Te,headers:{"Content-Type":"application/json"},body:JSON.stringify(lt)});if(!St.ok){const dt=(await St.json()).message||`Failed to ${v?"update":"save"} task`;return M(dt),Q||J(dt,"error"),ue(!1),v&&Ae("error"),!1}const qe=await St.json().catch(()=>null);return v&&qe&&typeof qe=="object"&&(W(qe),de()),F(Me),pe(!1),ue(!1),v&&Ae("saved"),!0}catch{return M("Failed to connect to server"),Q||J("Failed to connect to server","error"),ue(!1),v&&Ae("error"),!1}},[t,s,o,l,i,d,m,y,k,S,h,g,v,_,I,W,V,B,J,de,x,pe,M,F,ue,K,O,_e,Ne,se]),te=r.useCallback(async()=>{await D({source:"manual"})&&(v||J("Task added successfully","success"),n==="add"&&!v&&(re(),me("tasks"),await A()))},[n,v,A,J,re,D,me]);r.useEffect(()=>{if(N(),!v){$(null),Ae("idle");return}$(b()),Ae("idle")},[N,v]);const P=r.useCallback(async()=>{if(N(),!v||Ee===null)return;const ee=b();if(ee===Ee||!_e.trim()||g&&K&&g<K)return;await D({quiet:!0,source:"autosave"})&&$(ee)},[b,N,g,v,Ee,D,K,_e]);r.useEffect(()=>{if(!v||Ee===null)return;const ee=b();if(ee!==Ee){if(!_e.trim()){Ae("idle");return}if(g&&K&&g<K){Ae("error");return}return Ae(Q=>Q==="error"?"error":"idle"),N(),T.current=window.setTimeout(async()=>{await D({quiet:!0,source:"autosave"})&&$(ee)},700),()=>{N()}}},[b,N,g,v,Ee,D,K,_e]);const H=r.useCallback(async ee=>{if(ee.preventDefault(),g&&K&&g<K){Re({dueDate:g,scheduledDate:K});return}await te()},[g,te,K]),be=r.useCallback(async()=>{Re(null),await te()},[te]),U=r.useCallback(()=>{Re(null)},[]),ie=r.useCallback(async ee=>{if(!v||!ee.trim())return;const Q=ee.trim();try{const q=await fetch(`/api/taskforce/task/${v}/comment`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:Q,author:"user"})});if(!q.ok){const Te=(await q.json().catch(()=>({}))).error||"Failed to add comment.";M(Te),J(Te,"error");return}const Se=await q.json().catch(()=>null);if(ge(""),Se&&typeof Se=="object"){const we=To(Se);X(we.comments||[]),W(Se),$(b()),Ae("saved")}else await A(!0);de()}catch(q){console.error("Failed to add comment",q),M("Failed to add comment."),J("Failed to add comment.","error")}},[v,A,b,W,J,de,X,M,ge]);return{autoSaveState:Pe,flushAutoSave:P,scheduleWarningPrompt:ce,saveTask:D,handleSubmit:H,confirmScheduleWarning:be,cancelScheduleWarning:U,handleAddComment:ie}}function pb(e){const{editingTaskId:t,fetchTasks:n,mergeTaskFromServer:s,workstreamInput:o,pushNotice:l,queueWorkspaceSyncFromAuthoritativeTaskState:i,relationshipTasks:d,resolveWorkstreamIdInput:m,setError:y}=e;return{handleSetWorkstreamForCurrentTask:r.useCallback(async S=>{if(!t)return;const h=d.find(_=>_.id===t);if(!h)return;const g=typeof S=="string"?S.trim():S===null?"":o.trim(),v=g?m(g):null,A=g.length>0?v?.id||g:null;if((h.workstreamId||null)===A){l(A?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const _=await fetch(`/api/taskforce/task/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:A})});if(!_.ok){const V=(await _.json().catch(()=>({}))).error||"Failed to set workstream.";y(V),l(V,"error");return}y(""),l(A?"Workstream set":"Workstream removed","info");const I=await _.json().catch(()=>null);I?(s(I),i()):(await n(!0),i())}catch{y("Failed to set workstream."),l("Failed to set workstream.","error")}},[t,n,s,o,l,i,d,m,y])}}function fb({tasks:e,archivedTasks:t,editingTaskId:n,setTasks:s,setArchivedTasks:o,setDeletedTasks:l,setError:i,resetForm:d,setActiveTab:m,fetchTasks:y,fetchArchive:k,fetchDeletedTasks:S,mergeTaskFromServer:h,pushNotice:g,cloudAuthConfigured:v,runtimeMode:A,isAuthenticated:_,workspaceCloudSyncEnabled:I,buildWorkspaceSyncSignature:W,pushWorkspaceChangesToCloud:V,workspacePendingSignatureRef:B,workspaceDeletedTaskIdsRef:J,workspaceDeletedTaskWatermarksRef:de}){const[ve,re]=r.useState(null),x=r.useRef(null),K=r.useRef(null),me=r.useRef(null);r.useEffect(()=>()=>{typeof window>"u"||(K.current!==null&&(window.clearTimeout(K.current),K.current=null),me.current=null)},[]);const pe=r.useCallback(($=0)=>{if(!(v&&A==="local"&&_&&I)||typeof window>"u")return;const T=Math.max(0,$),b=Date.now()+T,N=me.current;if(K.current!==null){if(T<=0||N!==null&&N>=b)return;window.clearTimeout(K.current),K.current=null}me.current=b,K.current=window.setTimeout(()=>{K.current=null,me.current=null;const D=W();D&&(B.current=D,V(D))},T)},[v,A,_,I,W,B,V]),X=r.useCallback(async($,T)=>{let b=await fetch(`/api/taskforce/deleted${$}`,T);return b.status===404&&(b=await fetch(`/api/taskforce/trash${$}`,T)),b},[]),M=async($,T=!1,b={})=>{if(!b.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const N=T||t.some(D=>D.id===$);try{const D=await fetch(`/api/taskforce/task/${$}`,{method:"DELETE"});if(!D.ok){const be=(await D.json().catch(()=>({}))).error||"Failed to delete task.";return i(be),g(be,"error"),!1}const te=await D.json().catch(()=>({})),P=te?.deleted&&typeof te.deleted=="object"&&te.deleted.taskSnapshot?{...te.deleted,taskSnapshot:To(te.deleted.taskSnapshot)}:null;if(window.location.search.includes($)){const H=new URL(window.location.href);H.searchParams.delete("task"),window.history.pushState({},"",H.toString())}if(N?o(H=>H.filter(be=>be.id!==$)):s(H=>H.filter(be=>be.id!==$)),P){l(be=>[P,...be.filter(U=>U.taskId!==$)]);const H=String(P.deletedAt||"").trim();Number.isFinite(Date.parse(H))&&de.current.set($,H)}else await S(!0),de.current.set($,new Date().toISOString());if(J.current.add($),v&&A==="local"&&_&&I){const H=W();B.current=H,V(H)}return n===$&&(d(),m("tasks")),i(""),g("Task moved to Trash.","info"),!0}catch(D){return console.error("Failed to delete task:",D),i("Failed to delete task."),g("Failed to delete task.","error"),!1}},F=r.useCallback(async $=>{try{const T=await X(`/${$}/restore`,{method:"POST"});if(!T.ok){const te=(await T.json().catch(()=>({}))).error||"Failed to restore deleted task.";return i(te),g(te,"error"),null}const b=await T.json().catch(()=>null);b?h(b):await y(!0),l(D=>D.filter(te=>te.id!==$&&te.taskId!==$));const N=String(b?.id||"").trim();return J.current.delete($),de.current.delete($),N&&(J.current.delete(N),de.current.delete(N)),pe(),i(""),g("Task restored from Trash.","info"),b?To(b):null}catch(T){return console.error("Failed to restore deleted task:",T),i("Failed to restore deleted task."),g("Failed to restore deleted task.","error"),null}},[y,h,g,pe,X,l,i]),ue=r.useCallback(async $=>{try{const T=await X(`/${$}`,{method:"DELETE"});if(!T.ok){const N=(await T.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return i(N),g(N,"error"),!1}return l(b=>b.filter(N=>N.id!==$&&N.taskId!==$)),pe(),i(""),g("Deleted task permanently removed.","info"),!0}catch(T){return console.error("Failed to permanently delete deleted task:",T),i("Failed to permanently delete deleted task."),g("Failed to permanently delete deleted task.","error"),!1}},[g,pe,X,l,i]),ge=r.useCallback(async()=>{try{const $=await X("/empty",{method:"POST"});if(!$.ok){const D=(await $.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return i(D),g(D,"error"),null}const T=await $.json().catch(()=>({})),b=Number(T?.deleted||0);return l([]),pe(),i(""),g(b===1?"Deleted task permanently removed.":`${b} deleted tasks permanently removed.`,"info"),b}catch($){return console.error("Failed to empty deleted tasks:",$),i("Failed to permanently delete deleted tasks."),g("Failed to permanently delete deleted tasks.","error"),null}},[g,pe,X,l,i]),O=r.useCallback(async($,T)=>{const b=e,N=t;s(D=>D.map(te=>te.id===$?{...te,...T}:te)),o(D=>D.map(te=>te.id===$?{...te,...T}:te));try{const D=await fetch(`/api/taskforce/task/${$}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(T)});if(!D.ok){const H=(await D.json().catch(()=>({}))).error||`Failed to update task ${$}.`;i(H),g(H,"error"),s(b),o(N);return}const te=await D.json().catch(()=>null);h(te),pe(T.attachments!==void 0?150:0),i("")}catch(D){console.error("Failed to update task",D);const te=`Failed to update task ${$}.`;i(te),g(te,"error"),s(b),o(N)}},[e,t,g,h,pe]);return{copiedId:ve,handleDelete:M,handleUpdateTask:O,handleToggleComplete:async $=>{const T=$.status==="done"?"task":"done",b=T==="done"?new Date().toISOString():void 0,N={status:T,completedAt:b,completed:T==="done",inProgress:!1,readyForReview:!1,cancelled:!1},D=e,te=t;s(P=>P.map(H=>H.id===$.id?{...H,...N}:H)),o(P=>P.map(H=>H.id===$.id?{...H,...N}:H));try{const P=await fetch(`/api/taskforce/task/${$.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:T,completedAt:b})});if(!P.ok){const U=(await P.json().catch(()=>({}))).error||"Failed to update task status.";i(U),g(U,"error"),s(D),o(te);return}const H=await P.json().catch(()=>null);H?(h(H),pe()):(await y(!0),pe()),i("")}catch(P){console.error("Failed to toggle complete",P),i("Failed to update task status."),g("Failed to update task status.","error"),s(D),o(te)}},handleToggleCancel:async $=>{const T=$.status==="cancelled"?"task":"cancelled";try{const b=await fetch(`/api/taskforce/task/${$.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:T})});if(!b.ok){const te=(await b.json().catch(()=>({}))).error||"Failed to update task status.";i(te),g(te,"error"),await y(!0);return}const N=await b.json().catch(()=>null);N?(h(N),pe()):(await y(!0),pe()),i("")}catch(b){console.error("Failed to toggle cancel",b),i("Failed to update task status."),g("Failed to update task status.","error"),y()}},handleToggleInProgress:async $=>{const T=$.status==="in-progress"?"task":"in-progress";s(b=>b.map(N=>N.id===$.id?{...N,status:T}:N));try{const b=await fetch(`/api/taskforce/task/${$.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:T})});if(!b.ok){await y(!0);return}const N=await b.json().catch(()=>null);h(N),pe()}catch{y()}},handleToggleReview:async $=>{const T=$.status==="review"?"task":"review";s(b=>b.map(N=>N.id===$.id?{...N,status:T}:N));try{const b=await fetch(`/api/taskforce/task/${$.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:T})});if(!b.ok){await y(!0);return}const N=await b.json().catch(()=>null);h(N),pe()}catch{y()}},handleArchiveTask:async $=>{try{const b=$.status==="cancelled"?"cancel":"complete",N=await fetch(`/api/taskforce/task/${$.id}/${b}`,{method:"POST"});if(N.ok){const D=await N.json().catch(()=>null),te=[];if(D&&typeof D=="object"&&te.push(D),te.length>0){for(const H of te)h(H);pe()}else k();const P=new Set(te.map(H=>String(H?.id||"").trim()).filter(H=>H.length>0));n&&P.has(n)&&(d(),m("tasks"))}else{const te=(await N.json().catch(()=>({}))).error||"Failed to archive task.";i(te),g(te,"error")}}catch(T){console.error("Failed to archive",T),i("Failed to archive task."),g("Failed to archive task.","error")}},handleBulkArchive:async()=>{const $=e.filter(T=>T.status==="done"||T.status==="cancelled");if($.length!==0&&confirm(`Archive ${$.length} completed/cancelled tasks?`))try{const T=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:$.map(b=>b.id)})});if(T.ok){const b=await T.json(),N=Array.isArray(b?.results?.archived)?b.results.archived:[];if(N.length>0){for(const D of N)h(D);pe()}else s(D=>D.filter(te=>!["done","cancelled"].includes(te.status))),k();g(`${b.archived||$.length} tasks archived`,"info"),i("")}else{const N=(await T.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";i(N),g(N,"error")}}catch(T){console.error("Failed to bulk archive",T),i("Failed to bulk archive tasks."),g("Failed to bulk archive tasks.","error")}},handleUnarchive:async $=>{try{const T=await fetch(`/api/taskforce/task/${$}/unarchive`,{method:"POST"});if(T.ok){const b=await T.json().catch(()=>null);b?(h(b),pe()):(o(N=>N.filter(D=>D.id!==$)),await y(!0),pe()),i(""),g("Task restored from archive.","info")}}catch(T){console.error("Failed to unarchive",T),i("Failed to unarchive task."),g("Failed to unarchive task.","error")}},handleRestoreDeletedTask:F,handlePermanentlyDeleteDeletedTask:ue,handleEmptyDeletedTasks:ge,handleCopyId:($,T)=>{$.stopPropagation(),navigator.clipboard.writeText(T),re(T),x.current!==null&&window.clearTimeout(x.current),x.current=window.setTimeout(()=>{x.current=null,re(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:pe}}const hb=fb;function Bu(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function gb(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 yb({currentWorkspaceIdRef:e,resolveApiUrl:t,runtimeMode:n}){r.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const s=window.fetch.bind(window),o=l=>{if(typeof l=="string")return n!=="cloud"?l:l.startsWith("/api/taskforce")&&!Bu(l)?t(l):l;if(l instanceof URL)return n!=="cloud"?l:l.origin===window.location.origin&&l.pathname.startsWith("/api/taskforce")?Bu(l.pathname)?l:new URL(t(`${l.pathname}${l.search}${l.hash}`)):l;if(typeof Request<"u"&&l instanceof Request){if(n!=="cloud")return l;const i=new URL(l.url,window.location.origin);if(i.origin===window.location.origin&&i.pathname.startsWith("/api/taskforce"))return Bu(i.pathname)?l:t(`${i.pathname}${i.search}${i.hash}`)}return l};return window.fetch=((l,i)=>{const d=o(l),m=gb(d);if(!!!(m&&m.pathname.startsWith("/api/taskforce")&&!Bu(m.pathname)))return s(d,i);const k=String(e.current||"").trim();if(typeof Request<"u"&&d instanceof Request){const h=new Headers(d.headers);i?.headers&&new Headers(i.headers).forEach((A,_)=>h.set(_,A)),k&&k!=="default"&&!h.has("x-taskforce-workspace-id")&&(h.set("x-taskforce-workspace-id",k),h.set("x-taskforce-workspace-authoritative","1"));const g=new Request(d,{...i,headers:h});return s(g)}const S=new Headers(i?.headers);return k&&k!=="default"&&!S.has("x-taskforce-workspace-id")&&(S.set("x-taskforce-workspace-id",k),S.set("x-taskforce-workspace-authoritative","1")),s(d,{...i,headers:S})}),()=>{window.fetch=s}},[e,t,n])}const nd=12e3,kb=3e4,vb=2e4;function Wu(e){return e==="cloud"?kb:nd}function yh(){return typeof performance<"u"?performance.now():Date.now()}function Sb({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:n,resolveCloudAuthUrl:s,authOnlyCloudMode:o,authRequiredError:l,runtimeMode:i,workspaceSelectionScope:d,markBootstrapPhase:m,markBootstrapStalled:y,setRuntimeMode:k,setAuthRequiredForApi:S,setIsAuthenticated:h,setAuthUserId:g,setAuthWorkspaceId:v,setAuthUserEmail:A,setAuthUserDisplayName:_,setAuthUserAvatarUrl:I,setUserGlobalSyncStatus:W,setUserGlobalSyncError:V,setHasBetaAccess:B,setAvailableWorkspaces:J,setHydratedWorkspaceRole:de,setAssigneeOptions:ve,setAuthBlocked:re,setAuthSessionResolved:x,setError:K,applyResolvedWorkspaceId:me,readPersistedWorkspaceId:pe,authSessionRequestRef:X,authSessionEpochRef:M,authSessionLastCheckedAtRef:F,authSessionLastResultRef:ue,isLoopbackHost:ge,setAuthStateReadyRefs:O}){const _e=r.useCallback(async se=>{const ce=se?.force===!0;if(m("auth"),!e)return ue.current;if(!t)return k("local"),S(!1),h(!1),g("anonymous"),v(""),td(null),A(""),_(""),I(""),W("disconnected"),V(null),B(!0),J([]),de(null),ve(ri()),re(!1),x(!0),O(!1,!0,!1),ue.current=!1,F.current=Date.now(),!1;const Re=s("/api/taskforce/auth/session"),Pe=Date.now();if(!ce&&X.current)return X.current;if(!ce&&n&&Pe-F.current<1500)return ue.current;const Ae=++M.current;let Ee=null;return Ee=(async()=>{const $=yh(),T=new AbortController,b=typeof window<"u"?window.setTimeout(()=>T.abort(),vb):null,N=()=>M.current!==Ae,D=(te,P)=>{zt(te,{durationMs:Math.max(0,Math.round(yh()-$)),force:ce,sessionUrl:Re,...P})};try{const te=await fetch(Re,{method:"GET",credentials:"include",mode:"cors",signal:T.signal});if(N())return ue.current;if(te.status===429)return x(!0),O(ue.current,!0,!1),D("auth_session_rate_limited",{status:te.status}),ue.current;if(!te.ok)return N()?ue.current:(ge&&td(null),x(!0),O(!1,!0,!1),ue.current=!1,D("auth_session_request_failed",{status:te.status}),!1);const P=await te.json();if(N())return ue.current;const H=!!P.authRequiredForApi,be=!!P.authenticated,U=be?P.betaAccess!==!1:!0,ie=typeof P.workspaceId=="string"&&P.workspaceId.trim().length>0?P.workspaceId.trim():"",ee=typeof P.userId=="string"&&P.userId.trim().length>0?P.userId.trim():"anonymous",Q=typeof P.email=="string"&&P.email.trim().length>0?P.email.trim().toLowerCase():"",q=typeof P.displayName=="string"?P.displayName.trim():"",Se=typeof P.avatarUrl=="string"?P.avatarUrl.trim():"",we=i==="local",Te=i==="local"||o,Me=o||we?!1:H;return S(Me),h(be),g(be?ee:"anonymous"),v(be?ie:""),ge&&td(be?ee:null),A(be?Q:""),_(be?q:""),I(be?Se:""),be&&K(nt=>nt===l?"":nt),W(be?"idle":"disconnected"),V(null),B(U),Te||me(ie||pe(d)||"default",{preserveNonDefaultDefault:!0}),re(o||we?!1:H&&!be),x(!0),O(be,!0,Me),ue.current=be,be&&m("ready"),D("auth_session_resolved",{status:te.status,authenticated:be,workspaceId:be?ie:"",userId:be?ee:"anonymous",authRequiredForApi:Me}),be}catch(te){return N()||(ge&&td(null),x(!0),O(!1,!0,!1),ue.current=!1,y("Unable to verify your session."),D("auth_session_exception",{error:te instanceof Error?te.message:String(te)})),ue.current}finally{b!==null&&typeof window<"u"&&window.clearTimeout(b),N()||(F.current=Date.now()),Ee&&X.current===Ee&&(X.current=null)}})(),X.current=Ee,Ee},[e,t,n,s,o,l,i,d,m,y,k,S,h,g,v,A,_,I,W,V,B,J,de,ve,re,x,K,me,pe,X,M,F,ue,ge,O]),Ne=i==="local"&&ge&&t?cf():"";return r.useEffect(()=>{Ne&&(h(!0),x(!0),g(Ne),O(!0,!0,!1),ue.current=!0)},[Ne,x,O,g,h,ue]),r.useEffect(()=>{if(i!=="local"||!t||typeof window>"u")return;const se=()=>{_e()},ce=()=>{document.visibilityState==="visible"&&se()};window.addEventListener("focus",se),window.addEventListener("online",se),document.addEventListener("visibilitychange",ce);const Re=window.setInterval(se,3e4);return()=>{window.removeEventListener("focus",se),window.removeEventListener("online",se),document.removeEventListener("visibilitychange",ce),window.clearInterval(Re)}},[i,t,_e]),{checkAuthSession:_e}}function wb(e){const t=e.runtimeMode==="cloud",n=!!(e.shouldGateProtectedApiCalls&&t&&!e.authSessionResolved),s=!!(e.shouldGateProtectedApiCalls&&t&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:n,shouldBlockProtectedApiCalls:s,canCallProtectedApi:!(n||s)}}function bb(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function _b(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function kh(e){if(!Array.isArray(e))return;const t=e.filter(n=>typeof n=="string"&&n.trim().length>0).map(n=>n.trim());return t.length>0?t:void 0}function Cb(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 Ab(e){const t=e||{};return{categories:Array.isArray(t.categories)?t.categories.map(s=>typeof s=="string"?{value:s.toLowerCase().replace(/\s+/g,"-"),label:s}:s):[],types:Array.isArray(t.types)?t.types.map(s=>({...fv(s.value),...s,aliases:Array.isArray(s.aliases)?s.aliases.filter(l=>typeof l=="string"&&l.trim().length>0).map(l=>l.trim()):void 0,status:s.status==="retired"?"retired":"active"})):[],priorities:Array.isArray(t.priorities)?t.priorities:[],taxonomies:Array.isArray(t.taxonomies)?t.taxonomies.map(s=>({...s,aliases:kh(s.aliases),options:Array.isArray(s.options)?s.options.map(o=>({...o,aliases:kh(o.aliases),status:o.status==="retired"?"retired":"active"})):[],status:s.status==="retired"?"retired":"active",formEnabled:s.formEnabled!==!1,filterEnabled:s.filterEnabled!==!1,sortEnabled:s.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 qa(){return typeof performance<"u"?performance.now():Date.now()}function xb(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:n,getWorkspaceRequestState:s,isWorkspaceRequestStale:o,isWorkspaceEpochStale:l,isAbortError:i,isBootstrapTimeoutError:d,fetchWithTimeout:m,handleUnauthorized:y,applyBootstrapConfig:k,loadPersistedUiState:S,fetchBuildInfo:h,markBootstrapPhase:g,markBootstrapStalled:v,fetchWorkflows:A,fetchInitiativeTemplates:_,loadAvailableEnvironments:I,setReferenceDataLoaded:W,setCustomCategories:V,setCustomTypes:B,setPriorities:J,setTaxonomies:de,setTaxonomyDisplayLabels:ve,setConfigLoaded:re,hasLoadedUiStateRef:x,currentWorkspaceIdRef:K,referenceDataRequestRef:me,referenceDataAbortRef:pe,bootstrapConfigAbortRef:X,workspaceListAbortRef:M,assigneeOptionsAbortRef:F,workspaceListHydratedRef:ue,setAvailableWorkspaces:ge,runtimeMode:O,applyResolvedWorkspaceId:_e,workspaceSwitchingEnabled:Ne,authSessionResolved:se,isAuthenticated:ce,authUserId:Re,authUserAvatarUrl:Pe,setHydratedWorkspaceRole:Ae,setAssigneeOptions:Ee,setAssigneeOptionsLoaded:$,commitCurrentWorkspaceId:T,currentWorkspaceId:b,workspaceSelectionScope:N,abortWorkspaceScopedRequests:D,setWorkspaceBootstrapPending:te,checkAuthSession:P,lastConfigRefreshKeyRef:H,lastAssigneeOptionsLoadKeyRef:be,lastWorkspaceSyncStateLoadKeyRef:U,lastTaskSurfaceLoadKeyRef:ie,lastSettingsSurfaceLoadKeyRef:ee,isOpen:Q,activeTab:q,showArchive:Se,taskScope:we,settingsSection:Te,workspaceBootstrapPending:Me,fetchTasks:nt,fetchArchive:gt,fetchPlanningEntities:lt,refreshTaskCollections:St,loadWorkspaceSyncState:qe,archiveBootstrapTimerRef:Ct,hasBootstrappedDataRef:dt}=e,Xe=r.useCallback(async Be=>{const et=Be?.ignoreAuthGuard===!0,Ue=Be?.force===!0;if(!et&&(t||n)){zt("bootstrap_reference_data_skipped",{reason:n?"auth_blocked":"auth_deferred",runtimeMode:O,workspaceId:String(s().workspaceId||"").trim()||"default",force:Ue});return}const Je=s(),yt=String(Je.workspaceId||"").trim()||"default";if(!(O!=="cloud"||!se||!ce||yt!==""&&yt!=="default")){zt("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:O,workspaceId:yt,force:Ue});return}if(!Ue&&me.current?.workspaceId===Je.workspaceId){zt("bootstrap_reference_data_reused",{workspaceId:yt,force:Ue}),await me.current.promise;return}W(!1);const ae=qa(),Qe=new AbortController;pe.current=Qe;const bt=(async()=>{await Promise.allSettled([(async()=>{let Ot="empty-taxonomy-state";const Bt=await fetch("/api/taskforce/taxonomy-state",{signal:Qe.signal});if(!Bt.ok)return;const Fe=await Bt.json().catch(()=>({}));if(Cb(Fe))Ot="taxonomy-state";else{Ot="fallback-endpoints";const[vt,E,c,Y]=await Promise.all([fetch("/api/taskforce/categories",{signal:Qe.signal}),fetch("/api/taskforce/types",{signal:Qe.signal}),fetch("/api/taskforce/priorities",{signal:Qe.signal}),fetch("/api/taskforce/taxonomies",{signal:Qe.signal})]),[ye,Ie,ze,Ge]=await Promise.all([vt.ok?vt.json().catch(()=>({})):Promise.resolve({}),E.ok?E.json().catch(()=>({})):Promise.resolve({}),c.ok?c.json().catch(()=>({})):Promise.resolve({}),Y.ok?Y.json().catch(()=>({})):Promise.resolve({})]);Fe.categories=ye.categories,Fe.types=Ie.types,Fe.priorities=ze.priorities,Fe.taxonomies=Ge.taxonomies}const Lt=Ab(Fe);if(o(Je)){zt("bootstrap_reference_data_stale_drop",{workspaceId:yt,source:Ot});return}Lt.categories.length>0&&V(Lt.categories),Lt.types.length>0&&B(Lt.types),Lt.priorities.length>0&&J(Lt.priorities),de(Lt.taxonomies),ve(Lt.displayLabels||{}),zt("bootstrap_reference_data_source",{workspaceId:yt,source:Ot,categories:Lt.categories.length,types:Lt.types.length,priorities:Lt.priorities.length,taxonomies:Lt.taxonomies.length})})(),A(),_(),I()]),!o(Je)&&(W(!0),zt("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(qa()-ae)),workspaceId:yt,force:Ue}))})();me.current={workspaceId:Je.workspaceId,promise:bt};try{await bt}finally{me.current?.promise===bt&&(me.current=null),pe.current===Qe&&(pe.current=null)}},[se,_,A,s,ce,o,I,pe,me,O,V,B,J,W,de,ve,n,t]),it=r.useCallback(async Be=>{if(!(Be?.ignoreAuthGuard===!0)&&(t||n))return;g("config");const Ue=s(),Je=qa(),yt=new AbortController;X.current=yt;try{const ct=await m("/api/taskforce/config",void 0,Wu(O),{signal:yt.signal});if(l(Ue))return;if(ct.status===401){y(),re(!0);return}let ae="";if(ct.ok){const Qe=await ct.json();if(l(Ue))return;ae=typeof Qe?.workspaceId=="string"&&Qe.workspaceId.trim().length>0?Qe.workspaceId.trim():"",k(Qe)}if(l(Ue)){const Qe=String(K.current||"default").trim()||"default";if(!ae||Qe!==ae)return}if(x.current||(x.current=!0,await S(ae||Ue.workspaceId)),l(Ue)){const Qe=String(K.current||"default").trim()||"default";if(!ae||Qe!==ae)return}re(!0),g("ready"),zt("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(qa()-Je)),status:ct.status,workspaceId:ae||Ue.workspaceId}),h()}catch(ct){if(i(ct)||l(Ue))return;x.current||(x.current=!0,await S(Ue.workspaceId)),v(d(ct)?"Startup checks timed out.":"Unable to finish startup checks."),re(!0),zt("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(qa()-Je)),workspaceId:Ue.workspaceId,error:ct instanceof Error?ct.message:String(ct)})}finally{X.current===yt&&(X.current=null)}},[k,X,K,h,m,s,y,x,i,d,l,S,g,v,O,re,n,t]),ne=r.useCallback(async Be=>{await it(Be),await Xe(Be)},[it,Xe]),st=r.useCallback(()=>{typeof window>"u"||(Ct.current!==null&&window.clearTimeout(Ct.current),Ct.current=window.setTimeout(()=>{Ct.current=null,gt(!0).then(()=>zt("bootstrap_archive_loaded_deferred",{}))},1500))},[Ct,gt]),Ze=r.useCallback(async()=>{if(!Ne)return ge([]),ue.current=!1,{success:!0,workspaces:[]};const Be=s(),et=qa(),Ue=new AbortController;M.current=Ue;try{const Je=await m("/api/taskforce/workspaces",{method:"GET",credentials:"include"},Wu(O),{signal:Ue.signal});if(l(Be))return{success:!1,error:"Workspace changed while loading workspaces."};if(Je.status===401)return ge([]),ue.current=!1,{success:!1,error:"Authentication required."};const yt=await Je.json().catch(()=>({}));if(l(Be))return{success:!1,error:"Workspace changed while loading workspaces."};if(!Je.ok||yt?.success===!1)return ge([]),ue.current=!1,{success:!1,error:yt?.error||`Failed to load workspaces (${Je.status})`};const ct=Array.isArray(yt?.workspaces)?yt.workspaces.map(ae=>({id:String(ae?.id||"").trim(),name:String(ae?.name||"").trim(),role:String(ae?.role||"member").trim().toLowerCase(),slug:typeof ae?.slug=="string"?ae.slug:null,description:typeof ae?.description=="string"?ae.description:null,status:typeof ae?.status=="string"?ae.status:"",betaAccess:ae?.betaAccess===!0})).filter(ae=>ae.id&&ae.name):[];return ge(ct),ue.current=!0,O!=="local"&&typeof yt?.currentWorkspaceId=="string"&&yt.currentWorkspaceId.trim().length>0&&_e(yt.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),zt("bootstrap_workspaces_loaded",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Be.workspaceId,count:ct.length,status:Je.status}),{success:!0,workspaces:ct}}catch(Je){return d(Je)&&v("Startup checks timed out."),ge([]),ue.current=!1,zt("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Be.workspaceId,error:Je instanceof Error?Je.message:String(Je)}),{success:!1,error:i(Je)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{M.current===Ue&&(M.current=null)}},[_e,m,s,i,d,l,v,O,ge,M,ue,Ne]),Pt=r.useCallback(async()=>{const Be=s(),et=qa(),Ue=new AbortController;F.current=Ue,$(!1);try{const[Je,yt]=await Promise.all([m("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},Wu(O),{signal:Ue.signal}),se&&ce?m("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},Wu(O),{signal:Ue.signal}).catch(()=>null):Promise.resolve(null)]);if(o(Be))return{success:!1,error:"Workspace changed while loading assignee options."};if(Je.status===401)return Ee(ri()),$(!0),{success:!1,error:"Authentication required."};const ct=await Je.json().catch(()=>({}));if(o(Be))return{success:!1,error:"Workspace changed while loading assignee options."};if(!Je.ok)return Ee(ri()),$(!0),{success:!1,error:ct?.error||`Failed to load assignee options (${Je.status})`};const ae=String(Re||"").trim(),Qe=String(Pe||"").trim(),bt=(E,c)=>{const Y=typeof E?.avatarUrl=="string"&&E.avatarUrl.trim().length>0?E.avatarUrl.trim():"";if(Y)return Y;const ye=String(E?.userId||c||"").trim();return ae&&ye===ae&&Qe?Qe:null},Ot=Array.isArray(ct?.assignees)?ct.assignees:[],Bt=Ot.map(E=>{const c=String(E?.value||"").trim(),Y=String(E?.kind||"").trim().toLowerCase();return c?Y==="agent"||Y==="ai"?{value:c,label:String(E?.label||c).trim()||c,icon:String(E?.icon||"Bot"),color:String(E?.color||"#8b5cf6"),kind:"agent",avatarUrl:typeof E?.avatarUrl=="string"&&E.avatarUrl.trim().length>0?E.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(E?.avatarRevision))?Math.max(0,Math.floor(Number(E.avatarRevision))):null,avatarUpdatedAt:typeof E?.avatarUpdatedAt=="string"&&E.avatarUpdatedAt.trim().length>0?E.avatarUpdatedAt.trim():null,username:typeof E?.username=="string"&&E.username.trim().length>0?E.username.trim():null,archivedAt:typeof E?.archivedAt=="string"&&E.archivedAt.trim().length>0?E.archivedAt.trim():null,createdAt:typeof E?.createdAt=="string"&&E.createdAt.trim().length>0?E.createdAt.trim():null,updatedAt:typeof E?.updatedAt=="string"&&E.updatedAt.trim().length>0?E.updatedAt.trim():null}:Y==="member"||Y==="human"?{value:c,label:String(E?.label||c).trim()||c,icon:String(E?.icon||"User"),color:String(E?.color||"#22c55e"),kind:"member",avatarUrl:bt(E,c)}:null:null}).filter(Boolean),Fe=Ot.map(E=>({userId:String(E?.userId||"").trim(),email:String(E?.email||"").trim().toLowerCase(),displayName:typeof E?.displayName=="string"?E.displayName:null,avatarUrl:bt(E)})).filter(E=>E.userId);let Lt=Fe;if(yt?.ok){const E=await yt.json().catch(()=>({})),c=Array.isArray(E?.users)?E.users:[],Y=c.find(ze=>String(ze?.userId||"").trim()===ae),ye=String(Y?.role||"").trim().toLowerCase();ye==="owner"||ye==="admin"||ye==="member"||ye==="read-only"?Ae(ye):!Ne&&c.length===0&&Ae(null);const Ie=c.map(ze=>({userId:String(ze?.userId||"").trim(),email:String(ze?.email||"").trim().toLowerCase(),displayName:typeof ze?.displayName=="string"?ze.displayName:null,avatarUrl:bt(ze)})).filter(ze=>ze.userId);Lt=Array.from(new Map([...Fe,...Ie].map(ze=>[ze.userId,ze])).values())}else!Ne&&!Fe.length&&Ae(null);const vt=gd([...Bt,...tS(Lt).filter(E=>E.kind==="member")]);return o(Be)?{success:!1,error:"Workspace changed while loading assignee options."}:(Ee(vt),$(!0),zt("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Be.workspaceId,count:vt.length}),{success:!0})}catch(Je){return o(Be)||(Ee(ri()),$(!0)),zt("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(qa()-et)),workspaceId:Be.workspaceId,error:Je instanceof Error?Je.message:String(Je)}),{success:!1,error:i(Je)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{F.current===Ue&&(F.current=null)}},[F,se,Pe,Re,m,s,i,ce,o,O,Ee,$,Ae,Ne]),kt=r.useCallback(async(Be,et)=>{if(!Ne)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Ue=String(Be||"").trim();if(!Ue)return{success:!1,error:"workspaceId is required."};const Je=String(K.current||"").trim()||"default",yt=qa();try{zt("bootstrap_workspace_switch_started",{fromWorkspaceId:Je,toWorkspaceId:Ue,hydrate:et?.hydrate!==!1});const ct=await fetch("/api/taskforce/session/workspace",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Ue})}),ae=await ct.json().catch(()=>({}));if(!ct.ok||ae?.success===!1)return{success:!1,error:ae?.error||`Failed to switch workspace (${ct.status})`,code:ae?.code};T(Ue,{clearExplicitSelection:!1}),D(),te(!0),g("workspace");const Qe=await P({force:!0});return et?.hydrate===!1?await Ze():(H.current=`${O}:${Ue}:${N}`,be.current=`${O}:${Qe?"auth":"guest"}:${Ue}`,U.current=Ue,Q&&q==="tasks"&&(ie.current=`${Ue}:${q}:${Se?"archive":"active"}:${we}`),Q&&q==="settings"&&(ee.current=`${Ue}:${q}:${Te}`),await Promise.all([ne(),Ze(),St({isSilent:!1}),qe()]),lt({ignoreAuthGuard:!0})),zt("bootstrap_workspace_switch_completed",{fromWorkspaceId:Je,toWorkspaceId:Ue,hydrate:et?.hydrate!==!1,durationMs:Math.max(0,Math.round(qa()-yt))}),{success:!0}}catch(ct){return zt("bootstrap_workspace_switch_failed",{fromWorkspaceId:Je,toWorkspaceId:Ue,hydrate:et?.hydrate!==!1,durationMs:Math.max(0,Math.round(qa()-yt)),error:ct instanceof Error?ct.message:String(ct)}),{success:!1,error:"Failed to switch workspace."}}finally{te(!1)}},[D,q,P,T,K,ne,lt,Ze,Q,be,H,ee,ie,U,qe,g,St,O,Te,te,Se,we,N,Ne]),It=r.useCallback(async Be=>{g("workspace"),te(!0);try{if(!Ne){const bt=String(b||"").trim()||"default";return T(bt),{success:!0,workspaceSetupRequired:!1,workspaceId:bt}}const et=String(Be?.preferredWorkspaceId||"").trim(),Ue=Ep(N),Je=await Ze();if(!Je.success)return{success:!1,workspaceSetupRequired:!1,error:Je.error||"Failed to load workspaces after authentication."};const yt=Array.isArray(Je.workspaces)?Je.workspaces:[];if(yt.length===0)return T("default"),{success:!0,workspaceSetupRequired:!0};const ct=new Set(yt.map(bt=>String(bt.id||"").trim()).filter(Boolean)),ae=(et&&ct.has(et)?et:"")||(Ue&&ct.has(Ue)?Ue:"")||String(yt[0]?.id||"").trim();if(!ae)return T("default"),{success:!0,workspaceSetupRequired:!0};if(String(K.current||"").trim()!==ae){const bt=await kt(ae,{hydrate:!1});if(!bt.success)return{success:!1,workspaceSetupRequired:!1,error:bt.error||"Failed to set workspace after authentication.",code:bt.code}}else T(ae);return{success:!0,workspaceSetupRequired:!1,workspaceId:ae}}catch{return v("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{te(!1)}},[T,b,K,Ze,g,v,te,kt,N,Ne]),Ft=r.useCallback(async()=>{g("auth");const Be=qa();zt("bootstrap_retry_started",{workspaceId:String(K.current||"default").trim()||"default"});const et=await P({force:!0});let Ue=!1;if(Ne&&et){const Je=await It();if(!Je.success||Je.workspaceSetupRequired){await ne({ignoreAuthGuard:!0}),zt("bootstrap_retry_completed",{workspaceId:String(K.current||"default").trim()||"default",authenticated:et,workspaceSetupRequired:Je.workspaceSetupRequired===!0,success:Je.success,durationMs:Math.max(0,Math.round(qa()-Be))});return}}te(!0);try{await ne({ignoreAuthGuard:!0}),et&&!Ue&&(await Promise.all([nt(!0,{ignoreAuthGuard:!0}),Xe({ignoreAuthGuard:!0,force:!0})]),lt({ignoreAuthGuard:!0})),zt("bootstrap_retry_completed",{workspaceId:String(K.current||"default").trim()||"default",authenticated:et,workspaceSetupRequired:Ue,success:!0,durationMs:Math.max(0,Math.round(qa()-Be))})}finally{te(!1)}},[P,K,ne,lt,Xe,nt,g,It,te,Ne]),Mt=r.useCallback(async Be=>{const et=Be?.reason||"initial-load",Ue=Be?.ignoreAuthGuard===!0,Je=Be?.tasksSilent!==!1,yt=Be?.includeDeferredArchive!==!1,ct=qa();if(g("auth"),!await P({force:!0}))return await ne({ignoreAuthGuard:!0}),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ct)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(Ne){const Qe=await It();if(!Qe.success)return await ne({ignoreAuthGuard:!0}),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ct)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:Qe.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:Qe.error||"Unable to resolve workspace access.",code:Qe.code};if(Qe.workspaceSetupRequired)return await ne({ignoreAuthGuard:!0}),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ct)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}te(!0);try{return await it({ignoreAuthGuard:Ue}),await Promise.all([nt(Je,{ignoreAuthGuard:Ue}),Xe({ignoreAuthGuard:Ue})]),lt({ignoreAuthGuard:Ue}),yt&&st(),zt("cloud_bootstrap_completed",{reason:et,durationMs:Math.max(0,Math.round(qa()-ct)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:String(K.current||"default").trim()||"default"}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{te(!1)}},[P,K,it,lt,Xe,nt,g,It,st,te,Ne]);return r.useEffect(()=>{!t&&!n&&!dt.current&&(dt.current=!0,(async()=>{const Be=qa();if(O==="cloud"&&se&&ce){const et=await Mt({reason:"initial-load",tasksSilent:!1,includeDeferredArchive:!0});if(!et.success||et.workspaceSetupRequired)return}else await Promise.all([it(),nt(!1),Xe()]),lt();O!=="cloud"&&st(),zt("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(qa()-Be)),runtimeMode:O,workspaceId:String(K.current||"default").trim()||"default"})})())},[se,K,it,lt,Xe,nt,dt,ce,Mt,O,st,n,t]),r.useEffect(()=>{if(t||n||Me||N==="bootstrap"||!dt.current)return;const Be=`${O}:${b}:${N}`;H.current!==Be&&(H.current=Be,ne())},[b,ne,dt,H,O,n,t,Me,N]),r.useEffect(()=>{if(t||n||Me)return;const Be=b;U.current!==Be&&(U.current=Be,qe())},[b,U,qe,n,t,Me]),r.useEffect(()=>{if(O!=="cloud"||!se||!ce){O!=="cloud"&&ge([]),ue.current=!1;return}Me||!dt.current||ue.current||Ze()},[se,Ze,dt,ce,O,ge,Me,ue]),{fetchReferenceData:Xe,fetchBootstrapConfig:it,fetchConfig:ne,fetchWorkspaces:Ze,fetchAssigneeOptions:Pt,switchWorkspace:kt,resolveWorkspaceAfterAuth:It,retryBootstrapChecks:Ft,runCloudBootstrap:Mt}}function Ib({isOpen:e,authBlocked:t,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:o,shouldGateProtectedApiCalls:l,authSessionResolvedRef:i,authRequiredForApiRef:d,isAuthenticatedRef:m,dataVersionRef:y,refreshTaskCollectionsForDataVersion:k}){r.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||bb({isOpen:e,authBlocked:t,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:o}))return;let S=!1;const h=async()=>{if(!(S||document.visibilityState!=="visible")&&!_b({shouldGateProtectedApiCalls:l,authSessionResolved:i.current,authRequiredForApi:d.current,isAuthenticated:m.current}))try{const A=await fetch("/api/taskforce/data-version");if(!A.ok)return;const _=await A.json(),I=Number(_?.dataVersion);if(!Number.isFinite(I))return;if(y.current===null){y.current=I;return}I!==y.current&&(y.current=I,await k())}catch{}},g=()=>{document.visibilityState==="visible"&&h()},v=window.setInterval(()=>{h()},3e3);return document.addEventListener("visibilitychange",g),h(),()=>{S=!0,window.clearInterval(v),document.removeEventListener("visibilitychange",g)}},[e,t,n,s,o,l,i,d,m,y,k])}const Tb={};function ei(e,t){const n=e.findIndex(s=>s.id===t.id);return n===-1?[...e,t]:e.map((s,o)=>o===n?t:s)}const _o=rf(Tb),kp=(()=>{const e=_o.baseUrl,t=_o.cloudAuthBaseUrl;if(t)return t;const n=_o.apiBaseUrl;return n||e||"https://app.taskforcehq.ai"})(),Fu=2e4,Rb=new Set(["external-abort","superseded","workspace-reset","workspace-transition"]);function Ku(e){return typeof DOMException<"u"&&e instanceof DOMException?e.name==="AbortError":String(e?.name||"").toLowerCase()==="aborterror"}function zp(e){return typeof e=="string"&&Rb.has(e)}function vp(e,t){return t.aborted?e===t.reason||zp(e)||zp(t.reason)?!0:Ku(e):!1}function vh(e){const t=new Error(`Startup checks timed out after ${e}ms.`);return t.name="BootstrapTimeoutError",t}function Sh(e){const t=e&&typeof e=="object"?e:{},n=Array.isArray(t.initiatives)?t.initiatives.filter(l=>!!(l&&typeof l=="object"&&typeof l.id=="string")):[],s=Array.isArray(t.workstreams)?t.workstreams.filter(l=>!!(l&&typeof l=="object"&&typeof l.id=="string")):[],o=Array.isArray(t.workstreamTaskSummaries)?t.workstreamTaskSummaries.flatMap(l=>{if(!l||typeof l!="object")return[];const i=String(l.workstreamId||"").trim();if(!i)return[];const d=Array.isArray(l.tasks)?l.tasks:[],m=Math.max(0,Number(l.taskCount)||0),y=Math.max(0,Number(l.completedTaskCount)||0);return[{workstreamId:i,taskCount:m,completedTaskCount:y,tasks:d.filter(k=>!!(k&&typeof k=="object"&&typeof k.id=="string")).map(k=>({id:String(k.id||"").trim(),referenceNumber:typeof k.referenceNumber=="number"?k.referenceNumber:null,title:String(k.title||"").trim()||"Untitled Task",status:typeof k.status=="string"?k.status:null}))}]}):[];return{initiatives:n,workstreams:s,workstreamTaskSummaries:o}}function Nb({config:e={},initialTaskId:t,onTaskCountChange:n,onClose:s}){const o={...yv,...e},{categories:l,types:i,apiEndpoint:d,apiBaseUrl:m,cloudAuthBaseUrl:y,cloudMcpBaseUrl:k,wsBaseUrl:S,shortcut:h}=o,g=typeof window<"u"?String(window.location.hostname||"").trim().toLowerCase():"",v=g==="localhost"||g==="127.0.0.1"||g==="::1",A=typeof window<"u"&&!v,[_,I]=r.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null}),[W,V]=r.useState(!1),B=r.useCallback(p=>typeof p=="string"?p.trim().replace(/\/+$/,""):"",[]);r.useEffect(()=>{if(typeof window>"u"){V(!0);return}let p=!1;return(async()=>{try{const L=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include"});if(!L.ok)return;const z=await L.json().catch(()=>({})),Z=z?.config&&typeof z.config=="object"?z.config:{};if(p)return;const Le=String(Z.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",He=String(Z.workspaceMode||"").trim(),ga=He==="single-local"||He==="multi-cloud"?He:Le==="cloud"?"multi-cloud":"single-local";N(Le),I({cloudEnvironment:typeof Z.cloudEnvironment=="string"?String(Z.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:B(Z.cloudBaseUrl),cloudMcpBaseUrl:B(Z.cloudMcpBaseUrl),baseUrl:B(Z.baseUrl),apiBaseUrl:B(Z.apiBaseUrl),cloudAuthBaseUrl:B(Z.cloudAuthBaseUrl),wsBaseUrl:B(Z.wsBaseUrl),cloudAuthViaLocalProxy:!!Z.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:ga,workspaceSwitchingEnabled:typeof Z.workspaceSwitchingEnabled=="boolean"?!!Z.workspaceSwitchingEnabled:ga==="multi-cloud"})}catch{}finally{p||V(!0)}})(),()=>{p=!0}},[B]);const J=typeof window>"u"?"":v?kp:"",de=B(_o.baseUrl),ve=B(_o.apiBaseUrl),re=B(_o.cloudBaseUrl),x=B(_o.cloudMcpBaseUrl),K=B(_o.cloudAuthBaseUrl),me=B(_o.wsBaseUrl),pe=B(m),X=B(y),M=B(k),F=_.apiBaseUrl||_.baseUrl,ge=pe||F||(v?"":ve||de)||"",O=X||K||de,_e=_.cloudAuthBaseUrl||_.baseUrl,se=((v?_e||O:O||_e)||ge||J).trim().replace(/\/+$/,""),ce=B(qv(_.cloudMcpBaseUrl||_.cloudAuthBaseUrl||_.cloudBaseUrl||M||X||x||K||re||se)),Re=(_.cloudMcpBaseUrl||M||ce||_.cloudBaseUrl||x||re||se||J).trim().replace(/\/+$/,""),Pe=!A&&!!se&&!ge,Ae=A||W&&!!(se||ge),Ee=Ae&&!Pe,$=!!(se||ge||A),T=A?"cloud":"local",[b,N]=r.useState(()=>T),D=T==="local"&&v&&$?cf():"",te=D.length>0,P=r.useCallback(p=>!p||/^https?:\/\//i.test(p)||!ge||!p.startsWith("/")?p:`${ge}${p}`,[ge]),H=r.useCallback(p=>{if(!p||/^https?:\/\//i.test(p)||!p.startsWith("/"))return p;const L=p.startsWith("/api/taskforce/auth/")||p.startsWith("/api/taskforce/account/")||p.startsWith("/api/taskforce/billing/")||p.startsWith("/api/taskforce/sync/")||p.startsWith("/api/taskforce/settings/mcp/");if(!A&&L&&(b==="cloud"||!W||_.cloudAuthViaLocalProxy||_.workspaceMode==="multi-cloud"))return p;const z=se||ge;if(z){const Z=`${z}${p}`;if(typeof window<"u"&&!A&&L)try{if(new URL(Z,window.location.origin).origin===window.location.origin)return`${kp}${p}`}catch{return`${kp}${p}`}return Z}return p},[W,_.cloudAuthViaLocalProxy,_.workspaceMode,se,ge,A,b]),be=r.useCallback(p=>{const L=String(p||"").trim()||"/taskforce-ws",z=L.startsWith("/")?L:`/${L}`,Z=String(S||_.wsBaseUrl||me||ge||"").trim().replace(/\/+$/,""),Oe=typeof window<"u"?window.location.origin:"",Le=Z||Oe;if(!Le)return"";try{const He=new URL(z,Le);return He.protocol==="https:"&&(He.protocol="wss:"),He.protocol==="http:"&&(He.protocol="ws:"),He.toString()}catch{return""}},[S,_.wsBaseUrl,me,ge]),[U,ie]=r.useState("tasks"),[ee,Q]=r.useState(!1),[q,Se]=r.useState(!1),[we,Te]=r.useState("open"),[Me,nt]=r.useState(Gc(o.theme)||tm),[gt,lt]=r.useState(Gc(o.theme)||tm),[St,qe]=r.useState(!0),[Ct]=r.useState(".taskforce"),dt=!1,[Xe,it]=r.useState(!1),[ne,st]=r.useState([]),[Ze,Pt]=r.useState([]),[kt,It]=r.useState(""),[Ft,Mt]=r.useState(null),[Be,et]=r.useState(null),[Ue,Je]=r.useState(""),[yt,ct]=r.useState(""),ae=r.useMemo(()=>Ov({projectRoot:Ue,runtimeMode:T}),[Ue,T]),[Qe,bt]=r.useState(""),[Ot,Bt]=r.useState(""),Fe=Hv(b),Lt=_.workspaceMode==="single-local"||_.workspaceMode==="multi-cloud"?_.workspaceMode:Fe.workspaceMode,vt=typeof _.workspaceSwitchingEnabled=="boolean"?_.workspaceSwitchingEnabled:Fe.workspaceSwitchingEnabled,[E,c]=r.useState(!1),[Y,ye]=r.useState(!1),[Ie,ze]=r.useState(te),[Ge,je]=r.useState(te?D:"anonymous"),[Vt,qt]=r.useState(""),[Et,Tt]=r.useState(""),[Wt,Ht]=r.useState(""),[sa,Kt]=r.useState([]),[Ka,Oa]=r.useState(""),[Xa,wa]=r.useState(!0),[he,ot]=r.useState(null),[xe,Nt]=r.useState(()=>{if(T==="local")return"default";const p=Ep(ae);return p&&p.toLowerCase()!=="default"?p:"default"}),tt=r.useMemo(()=>$v({projectRoot:Ue,runtimeMode:b,workspaceId:xe}),[Ue,b,xe]),[Gt,ha]=r.useState([]),[Pa,ua]=r.useState(()=>ri()),[ca,Dt]=r.useState(!1),[aa,Za]=r.useState(te),[$t,Yn]=r.useState("idle"),[ba,ea]=r.useState(null),[Br,Ta]=r.useState(null),en=r.useRef(null),Ca=r.useRef(0),Jt=r.useRef(0),Ra=r.useRef(te),la=r.useRef(xe),kn=r.useRef(null),mn=r.useRef(0),Jn=r.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"),[ma,Cr]=r.useState(0),Wr=r.useRef(null),vn=r.useRef(null),Ba=r.useRef(null),Ar=r.useRef(null),Sn=r.useRef(null),Pn=r.useRef(null),tn=r.useRef(null),Aa=r.useCallback((p,L)=>{const z=String(p||"").trim();if(!z)return;const Z=String(la.current||"").trim();Z&&Z!==z&&(mn.current+=1,Cr(mn.current)),la.current=z,L?.clearExplicitSelection!==!1&&(kn.current=null),Nt(z)},[]);r.useEffect(()=>{la.current=xe},[xe]);const Fr=r.useCallback(p=>{const L=String(p||"").trim();L&&Nt(()=>{const z=String(kn.current||"").trim();let Z=L;return z&&z!==L&&(Z=z),la.current=Z,Z})},[]),_t=r.useCallback(()=>({workspaceId:String(la.current||"default").trim()||"default",epoch:mn.current}),[]),wn=r.useCallback(p=>(String(la.current||"default").trim()||"default")!==p.workspaceId||mn.current!==p.epoch,[]),pn=r.useCallback(p=>mn.current!==p.epoch,[]),bn=r.useCallback(p=>Ku(p)||zp(p),[]),$a=r.useCallback(()=>{[Wr,vn,Ba,Ar,Sn,Pn].forEach(p=>{p.current?.abort("workspace-transition"),p.current=null}),tn.current!==null&&typeof window<"u"&&(window.clearTimeout(tn.current),tn.current=null),Rc.current=null},[]),Mn=r.useMemo(()=>wb({shouldGateProtectedApiCalls:Ee,runtimeMode:b,authSessionResolved:aa,authRequiredForApi:E,isAuthenticated:Ie}),[Ee,b,aa,E,Ie]),ka=Mn.shouldDeferProtectedApiCalls,Ua=Mn.shouldBlockProtectedApiCalls,[_n,da]=r.useState(null),[En,ta]=r.useState(null),[za,_a]=r.useState(!1),[Qn,Xn]=r.useState("unknown"),[Ma,na]=r.useState(null),[pa,fn]=r.useState(o.shortcut||"Alt+T"),[an,pr]=r.useState(o.priorities||[]),[fr]=r.useState(bg()),[Qt,Ss]=r.useState(""),[Ha,er]=r.useState(!1),[es,hn]=r.useState(!1),[zn,Or]=r.useState(!0),[Cn,Ga]=r.useState(()=>Bv()),xr=r.useMemo(()=>Lv(),[]),[Na,ws]=r.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[nn,Ir]=r.useState(!1),[hr,$r]=r.useState(!0),[gn,gr]=r.useState(!0),[An,Dn]=r.useState(""),[tr,ts]=r.useState(null);yb({currentWorkspaceIdRef:la,resolveApiUrl:P,runtimeMode:b});const{availableWorkflows:Ur,initiativeTemplates:Ye,fetchWorkflows:Ut,fetchInitiativeTemplates:Ea,fetchWorkflowTemplate:oa,fetchWorkflowOverrideNames:cn,saveWorkflowTemplateDraft:rn,resetWorkflowTemplateDraft:bs}=zw({shouldDeferProtectedApiCalls:ka,shouldBlockProtectedApiCalls:Ua}),{zenMode:_s,setZenModeState:as,toggleZenMode:Ya}=Hw(),{exportEnvironment:Wa,setExportEnvironment:Rt,availableEnvironments:yr,loadAvailableEnvironments:Hn,exportWorkflowsPath:Ln,setExportWorkflowsPath:ar,exportingResource:Cs,exportResult:Tr,handleExportWorkflows:zr}=Fw({storagePath:Ct,shouldDeferProtectedApiCalls:ka,shouldBlockProtectedApiCalls:Ua}),[Bs,Bn]=r.useState(!1),[Wn,G]=r.useState(null),{uiNotice:Ve,pushNotice:At,clearNotice:jt}=Ww(),[Da,xn]=r.useState([]),In=r.useRef(null),[Ro,No]=r.useState(0),Qs=r.useCallback(p=>!p||!Ue?p:p.startsWith(Ue)?p.slice(Ue.length).replace(/^[/\\]+/,""):p,[Ue]),[Va,kr]=r.useState([]),[La,R]=r.useState([]),[C,Ke]=r.useState([]),[ht,De]=r.useState([]),[oe,nr]=r.useState([]),[ns,sn]=r.useState([]),[si,rr]=r.useState(!1),[sr,rs]=r.useState(null),[al,nl]=r.useState(!1),[Xs,oi]=r.useState([]),[Tn,eo]=r.useState(!1),[ii,ci]=r.useState({}),li=r.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});r.useEffect(()=>{li.current={authSessionResolved:aa,configLoaded:Tn,workspaceBootstrapPending:ca}},[aa,Tn,ca]);const Rr=r.useCallback(p=>{Yn(p),p!=="ready"&&(ea(null),Ta(Date.now()))},[]),jo=r.useCallback(p=>{const L=li.current;L.authSessionResolved&&L.configLoaded&&!L.workspaceBootstrapPending||(Yn("stalled"),ea(p),Ta(z=>z??Date.now()))},[]),ss=r.useCallback(async(p,L,z=nd,Z)=>{const Oe=new AbortController,Le=Z?.signal,He=Number(z)>0?Number(z):nd,ga=_t(),ya=p.startsWith("/api/taskforce/")?pp(L,Yf({workspaceId:ga.workspaceId,epoch:ga.epoch,seed:Jn.current})):L,Fa=typeof window<"u"?window.setTimeout(()=>Oe.abort("bootstrap-timeout"),He):null,xa=()=>{Oe.abort(Le?.reason||"external-abort")};Le&&(Le.aborted?xa():Le.addEventListener("abort",xa,{once:!0}));try{return await fetch(p,{...ya||{},signal:Oe.signal})}catch(Nn){throw Le?.aborted&&vp(Nn,Le)?Le.reason||Nn:Ku(Nn)||Nn==="bootstrap-timeout"?vh(He):Nn}finally{Le&&Le.removeEventListener("abort",xa),Fa!==null&&typeof window<"u"&&window.clearTimeout(Fa)}},[_t]),tc=r.useMemo(()=>{const p=!aa,L=$t==="stalled",z=aa&&(!Tn||ca||L);let Z="Checking account, workspace access, and setup status...";return $t==="auth"?Z="Verifying session...":$t==="workspace"?Z="Resolving workspace access...":$t==="config"&&(Z="Loading configuration..."),{phase:$t,auth:{resolved:aa,pending:p},config:{loaded:Tn},workspace:{pending:ca},pending:p||z,authPending:p,appPending:z,ready:aa&&Tn&&!ca&&$t==="ready",stalled:L,subtitle:Z,error:ba,startedAt:Br}},[aa,ba,$t,Br,Tn,ca]),Hr=r.useCallback(p=>String(p?.name||"")==="BootstrapTimeoutError",[]),[to,As]=r.useState([]),[xs,ao]=r.useState({}),[os,di]=r.useState(o.taxonomies||[]),va=r.useMemo(()=>(Xs.length>0?Xs:l||[]).map(L=>typeof L=="string"?{value:L.toLowerCase().replace(/\s+/g,"-"),label:L}:L).sort((L,z)=>L.label.localeCompare(z.label)),[Xs,l]),ac=r.useMemo(()=>({categories:va,types:to,priorities:an,taxonomies:os,displayLabels:xs}),[va,to,an,os,xs]);r.useMemo(()=>va.filter(p=>!p.disabled),[va]);const Gn=r.useCallback(p=>p.find(z=>z.value==="default"||z.value==="general"||z.label==="General"||z.value==="Taskforce"||z.label==="Taskforce")?.value||p[0]?.value||"default",[]),ra=to.length>0?to:i,[no,Gr]=r.useState(!1),[ro,Nr]=r.useState(""),nc="Authentication required. Sign in to continue.",[Is,or]=r.useState(!1),[Ws,ln]=r.useState(!1),is=r.useCallback(()=>{ye(b==="cloud"),ze(!1),Tt(""),Ht(""),Oa(""),Nr(nc)},[nc,b]),{recentlyChangedTaskIds:Fs,fetchTasks:so,fetchArchive:Os,refreshTaskCollections:Po,refreshTaskCollectionsFromInvalidation:$s,mergeTaskFromServer:oo}=Vw({tasks:Va,archivedTasks:La,setTasks:kr,setArchivedTasks:R,setLoadingTasks:rr,getCurrentWorkspaceId:()=>la.current,workspaceResetKey:`${xe}:${ma}`,shouldDeferProtectedApiCalls:ka,shouldBlockProtectedApiCalls:Ua,handleUnauthorized:is,authRequiredForApi:E});r.useEffect(()=>{ma!==0&&(Rc.current=null,Ti.current="",Uo.current="",Ri.current="",Ic.current="",Ns.current="",Ni.current="",js(!1),or(!1),ua(ri()),ln(!1),sn([]),kr([]),R([]),rr(!1),Rn.current!==null&&typeof window<"u"&&(window.clearTimeout(Rn.current),Rn.current=null),ms.current!==null&&typeof window<"u"&&(window.clearTimeout(ms.current),ms.current=null))},[R,rr,kr,ma]);const ir=r.useCallback(async(p=!1,L)=>{if(!(L?.ignoreAuthGuard===!0)&&(ka||Ua))return;p||rr(!0);const Z=_t(),Oe=new AbortController;Sn.current=Oe;try{let Le=await fetch("/api/taskforce/deleted",{signal:Oe.signal});if(Le.status===404&&(Le=await fetch("/api/taskforce/trash",{signal:Oe.signal})),Le.status===401){is(),sn([]);return}if(Le.status===404){sn([]);return}if(Le.ok){const He=await Le.json();if(wn(Z))return;const ga=Array.isArray(He?.deleted)?He.deleted.map(ya=>{const Fa=ya?.taskSnapshot&&typeof ya.taskSnapshot=="object"?To(ya.taskSnapshot):null;return Fa?{...ya,taskSnapshot:Fa}:null}).filter(ya=>!!ya):[];sn(ga)}}catch(Le){if(vp(Le,Oe.signal)||bn(Le))return;console.error("[Taskforce] Failed to fetch deleted tasks:",Le)}finally{Sn.current===Oe&&(Sn.current=null),p||rr(!1)}},[_t,is,bn,wn,ka,Ua]),fa=r.useCallback(async p=>{if(!(p?.ignoreAuthGuard===!0)&&(ka||Ua))return;const z=_t();Pn.current?.abort("superseded"),tn.current!==null&&typeof window<"u"&&(window.clearTimeout(tn.current),tn.current=null);const Z=new AbortController;Pn.current=Z;try{const Oe=Yf({workspaceId:z.workspaceId,epoch:z.epoch,seed:Jn.current}),Le=async ya=>{if(typeof window>"u")return fetch(ya,pp({signal:Z.signal},Oe));const Fa=new AbortController,xa=window.setTimeout(()=>Fa.abort("planning-timeout"),Fu),Nn=()=>Fa.abort(Z.signal.reason||"external-abort");Z.signal.aborted?Nn():Z.signal.addEventListener("abort",Nn,{once:!0});try{return await fetch(ya,pp({signal:Fa.signal},Oe))}catch(_r){if(Z.signal.aborted)throw Z.signal.reason||_r;if(Ku(_r)||_r==="planning-timeout")return null;throw _r}finally{window.clearTimeout(xa),Z.signal.removeEventListener("abort",Nn)}};let He=null;const ga=await Le("/api/taskforce/planning/bootstrap");if(ga?.status===401){is(),Ke([]),De([]),nr([]);return}if(ga===null)throw vh(Fu);if(ga.ok)He=Sh(await ga.json().catch(()=>({})));else{const[ya,Fa]=await Promise.all([Le("/api/taskforce/initiatives"),Le("/api/taskforce/workstreams")]);if(!ya||!Fa)throw new Error("Planning endpoints timed out during startup.");if(ya.status===401||Fa.status===401){is(),Ke([]),De([]),nr([]);return}const[xa,Nn]=await Promise.all([ya.ok?ya.json().catch(()=>[]):[],Fa.ok?Fa.json().catch(()=>[]):[]]);He=Sh({initiatives:xa,workstreams:Nn,workstreamTaskSummaries:[]})}if(wn(z))return;Ke(He.initiatives),De(He.workstreams),nr(He.workstreamTaskSummaries)}catch(Oe){if(vp(Oe,Z.signal)||bn(Oe))return;Hr(Oe)?(zt("planning_bootstrap_timeout",{workspaceId:z.workspaceId,epoch:z.epoch,timeoutMs:Fu}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",Oe),typeof window<"u"&&!wn(z)&&C.length===0&&ht.length===0&&(tn.current=window.setTimeout(()=>{tn.current=null,fa(p)},3e3))}finally{Pn.current===Z&&(Pn.current=null)}},[nd,Fu,C.length,_t,is,bn,wn,ka,Ua,ht.length]),on=r.useCallback(async(p=!1,L)=>{await so(p,L)},[so]),Vn=r.useCallback(async(p=!1,L)=>{await Os(p,L)},[Os]),Vr=r.useCallback(async p=>{const L=p?.isSilent!==!1,z=p?.ignoreAuthGuard===!0;await Promise.all([Po({isSilent:L,ignoreAuthGuard:z}),ir(L,{ignoreAuthGuard:z}),fa({ignoreAuthGuard:z})])},[ir,fa,Po]),ui=r.useCallback(async()=>{await $s(),await ir(!0),await fa()},[ir,fa,$s]),Us=r.useRef(()=>{}),rc=r.useRef(()=>{}),rl=r.useRef(async()=>!1),dn=r.useCallback(p=>rl.current(p),[]),{userGlobalSyncStatus:io,setUserGlobalSyncStatus:Mo,userGlobalSyncError:co,setUserGlobalSyncError:Eo,workspaceLastPullAt:Tm,workspaceLastPushAt:sl,workspaceLastErrorAt:Rm,workspaceLastErrorMessage:ol,workspaceLastSuccessfulSyncAt:qn,workspaceCloudSyncEnabled:cs,workspaceSyncPhase:lo,workspaceSyncSetupIntent:mi,workspaceSyncStatus:Nm,workspaceSyncSummary:bd,workspaceSyncRecommendedAction:Do,workspaceSyncBusy:jm,workspaceSyncPendingChanges:_d,workspacePendingSignatureRef:Cd,workspaceDeletedTaskIdsRef:zs,workspaceDeletedTaskWatermarksRef:Ad,loadWorkspaceSyncState:il,applyWorkspaceSyncStateSnapshot:xd,syncUserGlobalSettings:sc,buildWorkspaceSyncSignature:cl,pushWorkspaceChangesToCloud:Lo,saveWorkspaceCloudSyncSettings:uo,retryUserGlobalSettingsSync:oc,retryWorkspaceCloudSync:ls,resetWorkspaceSyncCursorAndPull:pi,getWorkspaceSyncDiagnostics:Bo}=Lw({currentWorkspaceId:xe,cloudAuthConfigured:$,runtimeMode:b,authSessionResolved:aa,isAuthenticated:Ie,authUserId:Ge,projectName:yt,resolveCloudAuthUrl:H,resolveWebSocketUrl:be,realtimeSyncEnabled:za,tasks:Va,archivedTasks:La,deletedTasks:ns,initiatives:C,workstreams:ht,taxonomies:os,taxonomyState:Is?ac:void 0,setupState:_n,globalTheme:gt,locale:Cn,globalWeekStartsOn:Na,themeUseGlobalDefault:St,setTasks:kr,setArchivedTasks:R,setAuthBlocked:ye,setIsAuthenticated:ze,checkAuthSession:dn,setGlobalTheme:lt,setCurrentTheme:nt,setSetupState:da,setLocale:Ga,setGlobalWeekStartsOn:ws,fetchPlanningEntities:fa}),fi=r.useCallback((p=ra)=>p.find(L=>String(L.value||"").trim().length>0)?.value||Lr,[ra]),[Hs,vr]=r.useState(()=>Gn(va)),[mo,Ts]=r.useState(()=>fi(ra)),[ia,Wo]=r.useState(2),[ic,ll]=r.useState(3),[dl,po]=r.useState("task"),[ul,ml]=r.useState("default"),[pl,hi]=r.useState("unassigned"),[Fn,Rs]=r.useState(""),[Id,Td]=r.useState(""),[On,gi]=r.useState(""),[yi,ki]=r.useState(""),[cc,fl]=r.useState(""),[Gs,lc]=r.useState([]),[hl,vi]=r.useState([]),[Si,dc]=r.useState(""),[uc,wt]=r.useState({}),Rd=r.useRef(null),[mc,ds]=r.useState(!1),[Fo,pc]=r.useState("");r.useEffect(()=>{if(sr)return;const p=String(mo||"").trim();ra.some(z=>String(z.value||"").trim()===p)||Ts(fi(ra))},[ra,sr,fi,mo]);const{searchQuery:fc,setSearchQuery:Nd,filterCategories:hc,setFilterCategories:Sr,filterPriorities:Ja,setFilterPriorities:wi,filterTypes:gl,setFilterTypes:jd,filterStatus:fo,setFilterStatus:Pd,filterAssignees:yl,setFilterAssignees:qr,filterAssigneesAllSelected:Md,setFilterAssigneesAllSelected:Ed,filterTaxonomies:gc,setFilterTaxonomies:bi,hasInitedFilters:ho,setHasInitedFilters:_i,sortBy:yc,setSortBy:kc,sortOrder:kl,setSortOrder:Dd,toggleSortOrder:vc,groupBy:us,setGroupBy:cr,emptyColumnMode:go,setEmptyColumnMode:Oo,collapsedCategories:vl,setCollapsedCategories:Sl,clearFilters:Pm,filteredTasks:Sc,searchAgnosticTasks:wc,filteredArchive:Ld,groupedTasks:Bd}=ub({tasks:Va,archivedTasks:La,activeCategories:va,activeTypes:ra,priorities:an,taxonomies:os,configLoaded:Tn,referenceDataLoaded:Is,assigneeOptionsLoaded:Ws,assigneeOptions:Pa});Us.current=Mo,rc.current=Eo;const{checkAuthSession:wl}=Sb({runtimeConfigReady:W,shouldProbeCloudAuth:Ae,authSessionResolved:aa,resolveCloudAuthUrl:H,authOnlyCloudMode:Pe,authRequiredError:nc,runtimeMode:b,workspaceSelectionScope:ae,markBootstrapPhase:Rr,markBootstrapStalled:jo,setRuntimeMode:N,setAuthRequiredForApi:c,setIsAuthenticated:ze,setAuthUserId:je,setAuthWorkspaceId:qt,setAuthUserEmail:Tt,setAuthUserDisplayName:Ht,setAuthUserAvatarUrl:Oa,setUserGlobalSyncStatus:p=>Us.current(p),setUserGlobalSyncError:p=>rc.current(p),setHasBetaAccess:wa,setAvailableWorkspaces:ha,setHydratedWorkspaceRole:ot,setAssigneeOptions:ua,setAuthBlocked:ye,setAuthSessionResolved:Za,setError:Nr,applyResolvedWorkspaceId:Fr,readPersistedWorkspaceId:Ep,authSessionRequestRef:en,authSessionEpochRef:Ca,authSessionLastCheckedAtRef:Jt,authSessionLastResultRef:Ra,isLoopbackHost:v,setAuthStateReadyRefs:(p,L,z)=>{Ac.current=L,xc.current=z,$o.current=p}});rl.current=wl;const[bl,Ci]=r.useState("tasks"),[Mm,Wd]=r.useState(!1),[Em,Ai]=r.useState(!1),[bc,_c]=r.useState(!1),[Cc,xi]=r.useState([]),[Fd,Ii]=r.useState(!1),Dm=r.useRef(null),Rn=r.useRef(null),ms=r.useRef(null),wr=r.useRef(!1),Ac=r.useRef(aa),xc=r.useRef(E),$o=r.useRef(Ie),_l=r.useRef(!1),Ti=r.useRef(""),Uo=r.useRef(""),Ri=r.useRef(""),Ic=r.useRef(""),Ns=r.useRef(""),Ni=r.useRef(""),ji=r.useRef(!1),Tc=r.useRef(!1),Rc=r.useRef(null),Cl=r.useRef(!1),Od=r.useRef(!1),[zo,js]=r.useState(!1),Lm=r.useCallback(p=>{zo||(Tc.current=!0),Ci(p)},[zo]),{handleSaveSettings:$d,handleSaveTheme:Ud,handleSaveGlobalTheme:Bm,handleJsonBackupEnabledChange:Wm,handleSaveGlobalJsonBackupEnabled:Fm,handleSaveGlobalWeekStartsOn:Om,handleSaveLocale:zd,handleManualComplexityEnabledChange:$m,handleChecklistDropdownEnabledChange:yn,handleShowTaskCardStatusLabelChange:Al,handleResetProjectToGlobal:Hd}=$w({keyShortcut:pa,themeUseGlobalDefault:St,runtimeMode:b,jsonBackupUseGlobalDefault:zn,globalTheme:gt,globalJsonBackupEnabled:es,setCurrentTheme:nt,setThemeUseGlobalDefault:qe,setGlobalTheme:lt,setJsonBackupEnabled:er,setJsonBackupUseGlobalDefault:Or,setGlobalJsonBackupEnabled:hn,setGlobalWeekStartsOn:ws,setLocale:Ga,setManualComplexityEnabled:Ir,setChecklistDropdownEnabled:$r,setShowTaskCardStatusLabel:gr,setShowChecklist:ds});r.useEffect(()=>{b==="cloud"&&ae!==Ji&&iS(xe,ae)},[b,xe,ae]),r.useEffect(()=>{Ac.current=aa,xc.current=E,$o.current=Ie},[aa,E,Ie]);const Nc=r.useCallback((p,L)=>{if(!p)return;const z=Array.isArray(p.filterCategories)||Array.isArray(p.filterPriorities)||Array.isArray(p.filterTypes)||Array.isArray(p.filterStatus)||Array.isArray(p.filterAssignees)||typeof p.filterAssigneesAllSelected=="boolean"||p.filterTaxonomies&&typeof p.filterTaxonomies=="object";L?.skipActiveWorkspaceModule||(typeof p.activeWorkspaceModule=="string"?Ci(p.activeWorkspaceModule):p.groupBy==="docs"&&Ci("docs")),p.groupBy&&p.groupBy!=="docs"&&cr(p.groupBy),(p.emptyColumnMode==="show"||p.emptyColumnMode==="collapse"||p.emptyColumnMode==="hide")&&Oo(p.emptyColumnMode),typeof p.zenMode=="boolean"&&as(p.zenMode),typeof p.searchQuery=="string"&&Nd(p.searchQuery),Array.isArray(p.filterCategories)&&Sr(p.filterCategories),Array.isArray(p.filterPriorities)&&wi(p.filterPriorities),Array.isArray(p.filterTypes)&&jd(p.filterTypes),Array.isArray(p.filterStatus)&&Pd(p.filterStatus),Array.isArray(p.filterAssignees)&&qr(p.filterAssignees),typeof p.filterAssigneesAllSelected=="boolean"&&Ed(p.filterAssigneesAllSelected),p.filterTaxonomies&&typeof p.filterTaxonomies=="object"&&bi(p.filterTaxonomies),(p.sortBy==="created"||p.sortBy==="priority"||p.sortBy==="updated"||p.sortBy==="complexity")&&kc(p.sortBy),(p.sortOrder==="asc"||p.sortOrder==="desc")&&Dd(p.sortOrder),typeof p.hasInitedFilters=="boolean"?_i(p.hasInitedFilters):z&&_i(!0),typeof p.showChecklist=="boolean"&&ds(p.showChecklist),typeof p.lastCategory=="string"&&pc(p.lastCategory),typeof p.exportEnvironment=="string"&&p.exportEnvironment.trim().length>0&&Rt(p.exportEnvironment.trim())},[]),jc=r.useCallback(async p=>{const L=String(p||la.current||xe||"default").trim()||"default",z=`${b}:${tt}:${L}`;try{const Z=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(L)}`,{method:"GET",credentials:"include"}),Oe=Z.ok?await Z.json().catch(()=>({})):{},Le=Oe?.state&&typeof Oe.state=="object"?Oe.state:null,He=Xf(tt),ga=Le||He?{...He||{},...Le||{}}:null;if(la.current!==L)return;Nc(ga,{skipActiveWorkspaceModule:Tc.current}),Ti.current=z}catch{const Z=Xf(tt);la.current===L&&(Nc(Z,{skipActiveWorkspaceModule:Tc.current}),Ti.current=z)}finally{if(la.current!==L)return;Tc.current=!1,ji.current=!0,js(!0)}},[Nc,xe,b,tt]);r.useEffect(()=>{const p=`${b}:${tt}:${xe}`;_l.current&&Ti.current!==p&&(js(!1),jc(xe))},[xe,jc,b,tt]),r.useEffect(()=>{if(!zo)return;if(ji.current){ji.current=!1;return}const p={groupBy:us,activeWorkspaceModule:bl,emptyColumnMode:go,zenMode:_s,searchQuery:fc,filterCategories:hc,filterPriorities:Ja,filterTypes:gl,filterStatus:fo,filterAssignees:yl,filterAssigneesAllSelected:Md,filterTaxonomies:gc,sortBy:yc,sortOrder:kl,hasInitedFilters:ho,showChecklist:mc,lastCategory:Fo||"",exportEnvironment:Wa};cS(p,tt);const L=window.setTimeout(async()=>{try{await sf({stateKey:"app",workspaceId:la.current,patch:p})}catch{}},250);return()=>window.clearTimeout(L)},[zo,us,bl,go,_s,fc,hc,Ja,gl,fo,yl,Md,gc,yc,kl,ho,mc,Fo,Wa,tt]);const xl=r.useCallback(p=>{const L=p.runtimeMode==="cloud"?"cloud":"local",z=!!p.authRequiredForApi,Z=typeof p.userId=="string"&&p.userId.trim().length>0?p.userId.trim():"anonymous",Oe=L==="cloud"&&Z!=="anonymous",Le=Oe||$o.current,He=Ac.current;if(N(L),c(z),Oe&&(ze(!0),je(Z),ye(!1),He||Za(!0)),typeof p.workspaceId=="string"&&p.workspaceId.trim().length>0){const Zl=p.workspaceId.trim();L==="local"?Aa(Zl):Fr(Zl)}ye(L==="cloud"&&z?!Le:!1),p.setupState&&typeof p.setupState=="object"?da(p.setupState):da(null),p.runtimeCapabilities&&typeof p.runtimeCapabilities=="object"?ta(p.runtimeCapabilities):ta(null),_a(!!p.realtimeSyncEnabled);const ga=String(p.realtimeSyncFlagSource||"").trim().toLowerCase();Xn(ga==="env"||ga==="settings"||ga==="default"?ga:"unknown"),typeof p.shortcut=="string"&&p.shortcut.trim().length>0&&fn(p.shortcut);const ya=Gc(p.theme);ya&&nt(ya);const Fa=Gc(p.globalTheme);Fa&&lt(Fa),typeof p.themeUseGlobalDefault=="boolean"&&qe(p.themeUseGlobalDefault);const xa=p.runtimeMode==="cloud"?"cloud":"local";typeof p.projectRoot=="string"?Je(p.projectRoot):xa==="cloud"&&Je(""),typeof p.tenantId=="string"?Bt(p.tenantId.trim()):xa==="cloud"&&Bt("");const Nn=xa==="cloud"?String(p.projectName||"").trim():p.projectName||p.paths?.projectName||"";(String(Nn||"").trim().length>0||xa==="cloud")&&ct(Nn),typeof p.mcpScript=="string"?bt(p.mcpScript):xa==="cloud"&&bt(""),typeof p.hostRoot=="string"?Dn(p.hostRoot):xa==="cloud"&&Dn(""),typeof p.jsonBackupEnabled=="boolean"&&er(p.jsonBackupEnabled),typeof p.globalJsonBackupEnabled=="boolean"&&hn(p.globalJsonBackupEnabled),typeof p.jsonBackupUseGlobalDefault=="boolean"&&Or(p.jsonBackupUseGlobalDefault);const _r=p?.schedulePreferences?.weekStartsOn;(_r==="sunday"||_r==="monday")&&ws(_r),typeof p.manualComplexityEnabled=="boolean"&&Ir(p.manualComplexityEnabled),typeof p.checklistDropdownEnabled=="boolean"?$r(p.checklistDropdownEnabled):$r(!0),typeof p.showTaskCardStatusLabel=="boolean"?gr(p.showTaskCardStatusLabel):gr(!0)},[Fr,Aa]),Gd=r.useCallback(async()=>{const p=typeof performance<"u"?performance.now():Date.now();try{const L=await ss("/api/taskforce/version",void 0,nd);if(!L.ok)return;const z=await L.json().catch(()=>({}));z?.build&&typeof z.build=="object"&&na({version:String(z.build.version||""),gitSha:z.build.gitSha?String(z.build.gitSha):null,buildTime:z.build.buildTime?String(z.build.buildTime):null,deployId:z.build.deployId?String(z.build.deployId):null}),zt("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-p)})}catch(L){Hr(L)&&zt("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-p)})}},[ss,Hr]),{fetchReferenceData:Pi,fetchConfig:jr,fetchWorkspaces:Pr,fetchAssigneeOptions:Ho,switchWorkspace:Mr,resolveWorkspaceAfterAuth:Vd,retryBootstrapChecks:Il,runCloudBootstrap:Vs}=xb({shouldDeferProtectedApiCalls:ka,shouldBlockProtectedApiCalls:Ua,getWorkspaceRequestState:_t,isWorkspaceRequestStale:wn,isWorkspaceEpochStale:pn,isAbortError:bn,isBootstrapTimeoutError:Hr,fetchWithTimeout:ss,handleUnauthorized:is,applyBootstrapConfig:xl,loadPersistedUiState:jc,fetchBuildInfo:Gd,markBootstrapPhase:Rr,markBootstrapStalled:jo,fetchWorkflows:Ut,fetchInitiativeTemplates:Ea,loadAvailableEnvironments:Hn,setReferenceDataLoaded:or,setCustomCategories:oi,setCustomTypes:As,setPriorities:pr,setTaxonomies:di,setTaxonomyDisplayLabels:ao,setConfigLoaded:eo,hasLoadedUiStateRef:_l,currentWorkspaceIdRef:la,referenceDataRequestRef:Rc,referenceDataAbortRef:vn,bootstrapConfigAbortRef:Wr,workspaceListAbortRef:Ba,assigneeOptionsAbortRef:Ar,workspaceListHydratedRef:Cl,setAvailableWorkspaces:ha,runtimeMode:b,applyResolvedWorkspaceId:Fr,workspaceSwitchingEnabled:vt,authSessionResolved:aa,isAuthenticated:Ie,authUserId:Ge,authUserAvatarUrl:Ka,setHydratedWorkspaceRole:ot,setAssigneeOptions:ua,setAssigneeOptionsLoaded:ln,commitCurrentWorkspaceId:(p,L)=>{kn.current=p,Aa(p,L),L?.clearExplicitSelection!==!1&&(kn.current=null)},currentWorkspaceId:xe,workspaceSelectionScope:ae,abortWorkspaceScopedRequests:$a,setWorkspaceBootstrapPending:Dt,checkAuthSession:dn,lastConfigRefreshKeyRef:Ri,lastAssigneeOptionsLoadKeyRef:Uo,lastWorkspaceSyncStateLoadKeyRef:Ic,lastTaskSurfaceLoadKeyRef:Ns,lastSettingsSurfaceLoadKeyRef:Ni,isOpen:ee,activeTab:U,showArchive:q,taskScope:we,settingsSection:Be,workspaceBootstrapPending:ca,fetchTasks:on,fetchArchive:Vn,fetchPlanningEntities:fa,refreshTaskCollections:Vr,loadWorkspaceSyncState:il,archiveBootstrapTimerRef:ms,hasBootstrappedDataRef:Od}),Mi=r.useCallback(async()=>{await dn(),await jr()},[dn,jr]);r.useEffect(()=>{if(!Tn||ca)return;const p=`${b}:${Ie?"auth":"guest"}:${xe}:${Ka||"no-avatar"}`;Ws&&Uo.current===p||(Uo.current=p,Ho())},[Ws,Ka,Tn,xe,Ho,Ie,b,ca]),r.useEffect(()=>{if(!aa||!Ie)return;const p=String(Ge||"").trim();if(!p||p==="anonymous")return;const L=String(Ka||"").trim()||null;ua(z=>{let Z=!1;const Oe=z.map(Le=>Le.kind!=="member"||String(Le.value||"").trim()!==p||(typeof Le.avatarUrl=="string"&&Le.avatarUrl.trim().length>0?Le.avatarUrl.trim():null)===L?Le:(Z=!0,{...Le,avatarUrl:L}));return Z?Oe:z})},[aa,Ka,Ge,Ie]);const Tl=r.useMemo(()=>vt?Gt.find(L=>L.id===xe)?.role??null:he,[Gt,xe,he,vt]);r.useEffect(()=>{Ie||ot(null)},[Ie]);const qd=r.useCallback(async()=>{ea(null);const p=await Vs({reason:"post-plans",ignoreAuthGuard:!0,tasksSilent:!0,includeDeferredArchive:!1});return p.authenticated?p.success?p.workspaceSetupRequired?{success:!0,destination:"setup"}:{success:!0,destination:"app"}:{success:!1,destination:"app",error:p.error||"Unable to resolve workspace after plan selection.",code:p.code}:{success:!1,destination:"login",error:p.error||"Sign in required.",code:p.code||"AUTH_REQUIRED"}},[Vs]),ps=r.useCallback(async p=>{const L=p?.reason||"retry",z=typeof p?.preferredWorkspaceId=="string"?p.preferredWorkspaceId.trim():"",Z=p?.allowCommercialGate===!0;if(z&&vt){if(!await dn({force:!0}))return await jr({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const He=await Vd({preferredWorkspaceId:z});if(!He.success)return await jr({ignoreAuthGuard:!0}),{success:!1,error:He.error||"Unable to resolve workspace access.",code:He.code};if(He.workspaceSetupRequired)return await jr({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const Oe=await Vs({reason:L,ignoreAuthGuard:!0,tasksSilent:!0,includeDeferredArchive:!1});return Oe.authenticated?Oe.success?Oe.workspaceSetupRequired?Z?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(Z||sc({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:Oe.error||"Unable to resolve workspace access.",code:Oe.code}:{success:!1,error:Oe.error||"Sign in required.",code:Oe.code||"AUTH_REQUIRED"}},[dn,jr,Vd,Vs,sc,vt]),Go=r.useCallback(async(p,L)=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const z=String(p||"").trim();if(!z)return{success:!1,error:"Workspace name is required."};try{const Z=await fetch("/api/taskforce/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:z,description:typeof L=="string"?L:void 0})}),Oe=await Z.json().catch(()=>({}));if(!Z.ok||Oe?.success===!1)return{success:!1,error:Oe?.error||`Failed to create workspace (${Z.status})`,code:Oe?.code};const Le=Oe?.workspace;if(await Pr(),Le?.id){const He=await Mr(Le.id);if(!He.success)return{success:!1,error:He.error||"Workspace created but failed to activate.",code:He.code}}return{success:!0,workspace:Le}}catch{return{success:!1,error:"Failed to create workspace."}}},[Pr,Mr,vt]),lr=r.useCallback(async p=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const L=String(p||"").trim();if(!L)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const z=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(L)}`,{method:"DELETE",credentials:"include"}),Z=await z.json().catch(()=>({}));if(!z.ok||Z?.success===!1)return{success:!1,error:Z?.error||`Failed to delete workspace (${z.status})`,code:Z?.code};await dn({force:!0}),await Promise.all([jr(),Pr()]);const Oe=typeof Z?.nextWorkspaceId=="string"?Z.nextWorkspaceId.trim():"";return Oe&&Aa(Oe),{success:!0,nextWorkspaceId:Oe||void 0,workspaceSetupRequired:Z?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(Z?.cleanupWarnings)?Z.cleanupWarnings.map(Le=>String(Le||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[dn,Aa,jr,Pr,vt]),Vo=r.useCallback(async p=>{const L=p==="operations"?"operations":"core";try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:L}})}),Z=await z.json().catch(()=>({}));return!z.ok||Z?.success===!1?!1:(await Mi(),!0)}catch{return!1}},[Mi]),Rl=r.useCallback(async p=>{const L=String(p?.name||"").trim(),z=typeof p?.workspaceId=="string"?p.workspaceId.trim():"";if(!L)return{success:!1,error:"Workspace name is required.",code:"WORKSPACE_NAME_REQUIRED"};try{const Z=await fetch("/api/taskforce/workspace-profile",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-runtime-mode":b},credentials:"include",body:JSON.stringify({workspaceId:z&&z!=="default"?z:void 0,name:L,description:typeof p.description=="string"?p.description:void 0,allowCreate:!0})}),Oe=await Z.json().catch(()=>({}));if(!Z.ok||Oe?.success===!1)return{success:!1,error:Oe?.error||`Failed to save workspace (${Z.status})`,code:Oe?.code};const Le=String(Oe?.workspace?.id||"").trim();if(Le&&(Aa(Le),await new Promise(He=>window.setTimeout(He,0)),b==="cloud"&&Ie&&Le!==xe)){const He=await Mr(Le);if(!He.success)return{success:!1,error:He.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await Mi(),{success:!0,workspaceId:Le||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[Aa,Mi,b,Ie,xe,Mr]),Kd=r.useCallback(async(p,L)=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const z=p.trim().toLowerCase(),Z=L;if(!z||!Z)return{success:!1,error:"Email and password are required."};try{const Oe=await fetch(H("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:z,password:Z})}),Le=await Oe.json().catch(()=>({}));if(!Oe.ok||!Le?.success)return{success:!1,error:Le?.error||"Sign in failed.",code:Le?.code};Nr("");const He=await ps();return He.success?{success:!0,workspaceSetupRequired:He.workspaceSetupRequired===!0}:{success:!1,error:He.error||"Unable to resolve workspace after sign in.",code:He.code}}catch{return{success:!1,error:"Sign in failed."}}},[H,$,ps]),Um=r.useCallback((p,L,z)=>{const Z=L&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(L)?L:"/";let Oe=`/api/taskforce/auth/oauth/${encodeURIComponent(p)}/start?return_to=${encodeURIComponent(Z)}`;z&&(Oe+=`&invite_token=${encodeURIComponent(z)}`),window.location.href=H(Oe)},[H]),Nl=r.useCallback(async(p,L,z)=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const Z=p.trim().toLowerCase(),Oe=L;if(!Z||!Oe)return{success:!1,error:"Email and password are required."};try{const Le=await fetch(H("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:Z,password:Oe,...typeof z?.displayName=="string"&&z.displayName.trim()?{displayName:z.displayName.trim()}:{},...typeof z?.planId=="string"&&z.planId.trim()?{planId:z.planId.trim()}:{},...typeof z?.planVersionId=="string"&&z.planVersionId.trim()?{planVersionId:z.planVersionId.trim()}:{},...typeof z?.interval=="string"&&z.interval.trim()?{interval:z.interval.trim()}:{}})}),He=await Le.json().catch(()=>({}));if(!Le.ok||!He?.success)return{success:!1,error:He?.error||"Create account failed.",code:He?.code,verificationRequired:!!He?.verificationRequired,verificationToken:typeof He?.verificationToken=="string"?He.verificationToken:void 0,emailSent:He?.emailSent!==!1,emailError:typeof He?.emailError=="string"?He.emailError:void 0};const ga=He?.planSelectionRequired===!0,ya=He?.checkoutPending===!0,Fa=typeof He?.commercialState=="string"?He.commercialState:null,xa=!!He?.verificationRequired;if(!xa){if(Nr(""),!!(ga||ya||Fa==="pending_plan_selection"||Fa==="checkout_pending"))return await dn({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:ga,checkoutPending:ya,commercialState:Fa,verificationRequired:xa,verificationToken:typeof He?.verificationToken=="string"?He.verificationToken:void 0,emailSent:He?.emailSent!==!1,emailError:typeof He?.emailError=="string"?He.emailError:void 0}:{success:!1,error:"Unable to resolve workspace after registration.",code:"AUTH_REQUIRED"};const _r=await ps({allowCommercialGate:!1});return _r.success?{success:!0,workspaceSetupRequired:_r.workspaceSetupRequired===!0,planSelectionRequired:ga,checkoutPending:ya,commercialState:Fa,verificationRequired:xa,verificationToken:typeof He?.verificationToken=="string"?He.verificationToken:void 0,emailSent:He?.emailSent!==!1,emailError:typeof He?.emailError=="string"?He.emailError:void 0}:{success:!1,error:_r.error||"Unable to resolve workspace after registration.",code:_r.code}}return{success:!0,workspaceSetupRequired:!!He?.workspaceSetupRequired,planSelectionRequired:ga,checkoutPending:ya,commercialState:Fa,verificationRequired:xa,verificationToken:typeof He?.verificationToken=="string"?He.verificationToken:void 0,emailSent:He?.emailSent!==!1,emailError:typeof He?.emailError=="string"?He.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[dn,H,$,ps]),Zd=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=String(p.displayName||"").trim(),z=typeof p.avatarDraftId=="string"?p.avatarDraftId.trim():"",Z=p.clearAvatar===!0;if(!L)return{success:!1,error:"Display name is required."};try{const Oe=await fetch(H("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:L,...z?{avatarDraftId:z}:{},...Z?{clearAvatar:!0}:{}})}),Le=await Oe.json().catch(()=>({}));if(!Oe.ok||!Le?.success)return{success:!1,error:Le?.error||"Failed to update profile.",code:Le?.code};const He={userId:typeof Le?.profile?.userId=="string"?Le.profile.userId:Ge,email:typeof Le?.profile?.email=="string"?Le.profile.email:Et,displayName:typeof Le?.profile?.displayName=="string"?Le.profile.displayName:null,avatarUrl:typeof Le?.profile?.avatarUrl=="string"?Le.profile.avatarUrl:null};return Ht(He.displayName||""),Oa(He.avatarUrl||""),{success:!0,profile:He}}catch{return{success:!1,error:"Failed to update profile."}}},[H,$,Et,Ge]),Kr=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=p.trim().toLowerCase();if(!L)return{success:!1,error:"Email is required."};try{const z=await fetch(H("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:L})}),Z=await z.json().catch(()=>({}));return!z.ok||!Z?.success?{success:!1,error:Z?.error||"Failed to request verification email.",code:Z?.code}:{success:!0,verificationToken:Z?.verificationToken??null,emailSent:Z?.emailSent!==!1,deliveryAttempted:Z?.deliveryAttempted===!0||typeof Z?.verificationToken=="string"&&Z.verificationToken.trim().length>0,emailError:typeof Z?.emailError=="string"?Z.emailError:void 0}}catch{return{success:!1,error:"Failed to request verification email."}}},[H,$]),Yd=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=p.trim();if(!L)return{success:!1,error:"Token is required."};try{const z=await fetch(H("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),Z=await z.json().catch(()=>({}));return!z.ok||!Z?.success?{success:!1,error:Z?.error||"Verification failed.",code:Z?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[H,$]),Zr=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=p.trim().toLowerCase();if(!L)return{success:!1,error:"Email is required."};try{const z=await fetch(H("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:L})}),Z=await z.json().catch(()=>({}));return!z.ok||!Z?.success?{success:!1,error:Z?.error||"Failed to request password reset.",code:Z?.code}:{success:!0,resetToken:Z?.resetToken??null,emailSent:Z?.emailSent!==!1,deliveryAttempted:Z?.deliveryAttempted===!0||typeof Z?.resetToken=="string"&&Z.resetToken.trim().length>0,emailError:typeof Z?.emailError=="string"?Z.emailError:void 0}}catch{return{success:!1,error:"Failed to request password reset."}}},[H,$]),Jd=r.useCallback(async(p,L)=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const z=p.trim(),Z=L;if(!z||!Z)return{success:!1,error:"Token and password are required."};try{const Oe=await fetch(H("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:z,password:Z})}),Le=await Oe.json().catch(()=>({}));return!Oe.ok||!Le?.success?{success:!1,error:Le?.error||"Failed to reset password.",code:Le?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[H,$]),Qd=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=p.trim();if(!L)return{success:!1,error:"Token is required."};try{const z=await fetch(H("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),Z=await z.json().catch(()=>({}));return!z.ok||!Z?.success?{success:!1,error:Z?.error||"Invite inspection failed.",code:Z?.code,state:Z?.state}:{success:!0,state:Z?.state,email:typeof Z?.email=="string"?Z.email:void 0,workspaceId:typeof Z?.workspaceId=="string"?Z.workspaceId:void 0,inviteeKind:Z?.inviteeKind==="existing_user"?"existing_user":"new_user",passwordRequired:Z?.passwordRequired===!0,inviteeState:Z?.inviteeState==="existing_account"?"existing_account":"pending_setup",availableMethods:Array.isArray(Z?.availableMethods)?Z.availableMethods:[]}}catch{return{success:!1,error:"Invite inspection failed."}}},[H,$]),Ei=r.useCallback(async(p,L)=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const z=p.trim(),Z=L;if(!z||!Z)return{success:!1,error:"Token and password are required."};try{const Oe=await fetch(H("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:z,password:Z})}),Le=await Oe.json().catch(()=>({}));if(!Oe.ok||!Le?.success)return{success:!1,error:Le?.error||"Invite acceptance failed.",code:Le?.code};Nr("");const He=typeof Le?.workspaceId=="string"?Le.workspaceId:null;if(He&&vt){const ya=await Mr(He,{hydrate:!1});if(!ya.success)return{success:!1,error:ya.error||"Unable to resolve workspace after invite acceptance.",code:ya.code}}const ga=await ps();return ga.success?(He&&la.current!==He&&Aa(He,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:ga.workspaceSetupRequired===!0}):{success:!1,error:ga.error||"Unable to resolve workspace after invite acceptance.",code:ga.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[Aa,H,$,la,ps,Mr,vt]),jl=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=p.trim();if(!L)return{success:!1,error:"Token is required."};try{const z=await fetch(H("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),Z=await z.json().catch(()=>({}));if(!z.ok||!Z?.success)return{success:!1,error:Z?.error||"Invite join failed.",code:Z?.code};Nr("");const Oe=typeof Z?.workspaceId=="string"?Z.workspaceId:null;if(Oe&&vt){const He=await Mr(Oe,{hydrate:!1});if(!He.success)return{success:!1,error:He.error||"Unable to resolve workspace after invite join.",code:He.code}}const Le=await ps();return Le.success?(Oe&&la.current!==Oe&&Aa(Oe,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Le.workspaceSetupRequired===!0}):{success:!1,error:Le.error||"Unable to resolve workspace after invite join.",code:Le.code}}catch{return{success:!1,error:"Invite join failed."}}},[Aa,H,$,la,ps,Mr,vt]),Di=r.useCallback(async()=>{if(!$)return{success:!1,error:"Cloud auth not configured."};try{const p=await fetch(H("/api/taskforce/account/login-methods"),{credentials:"include"}),L=await p.json().catch(()=>({}));return!p.ok||!L?.success?{success:!1,error:L?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(L?.methods)?L.methods:[]}}catch{return{success:!1,error:"Failed to fetch login methods."}}},[H,$]),zm=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth not configured."};try{const L=await fetch(H(`/api/taskforce/account/login-methods/${encodeURIComponent(p)}`),{method:"DELETE",credentials:"include"}),z=await L.json().catch(()=>({}));return!L.ok||!z?.success?{success:!1,error:z?.error||"Unlink failed.",code:z?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[H,$]),qo=r.useCallback(async p=>{if(!$)return{success:!1,error:"Cloud auth not configured."};try{const L=await fetch(H("/api/taskforce/account/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:p})}),z=await L.json().catch(()=>({}));return!L.ok||!z?.success?{success:!1,error:z?.error||"Failed to add password.",code:z?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[H,$]),Pl=r.useCallback((p,L)=>{const z=L&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(L)?L:"/",Z=`/api/taskforce/auth/oauth/${encodeURIComponent(p)}/start?flow=link&return_to=${encodeURIComponent(z)}`;window.location.href=H(Z)},[H]),Ml=r.useCallback(()=>{$a(),Rc.current=null,Ti.current="",Uo.current="",Ri.current="",Ic.current="",Ns.current="",Ni.current="",js(!1),or(!1),ua(ri()),ln(!1),sn([]),kr([]),R([]),Ke([]),De([]),nr([]),rr(!1),Rn.current!==null&&typeof window<"u"&&(window.clearTimeout(Rn.current),Rn.current=null),ms.current!==null&&typeof window<"u"&&(window.clearTimeout(ms.current),ms.current=null)},[$a,R,kr]),Hm=r.useCallback(async()=>{try{$&&await fetch(H("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if($a(),Ca.current+=1,en.current=null,Ra.current=!1,Jt.current=Date.now(),ze(!1),Za(!0),je("anonymous"),qt(""),td(null),Tt(""),Ht(""),Oa(""),Mo("disconnected"),Eo(null),wa(!0),ct(""),eo(!1),or(!1),da(null),Yn("idle"),ea(null),_l.current=!1,b!=="local"&&Qf(ae),ye(b==="cloud"&&E),Aa("default"),ha([]),Cl.current=!1,ot(null),b==="local"){await Promise.allSettled([jr({ignoreAuthGuard:!0}),on(!0,{ignoreAuthGuard:!0}),fa({ignoreAuthGuard:!0}),Pi({ignoreAuthGuard:!0,force:!0})]);return}Od.current=!1,Ml()}},[$a,E,Qf,Aa,H,$,ae,b,jr,fa,Pi,on,Ml]),El=r.useCallback(async p=>{try{const L=await fetch("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)}),z=await L.json().catch(()=>({}));return!L.ok||!z?.success?{success:!1,error:z?.error||`Create failed (${L.status})`}:(await on(!0),{success:!0,result:z?.results})}catch(L){return{success:!1,error:L.message}}},[on]),Xd=r.useCallback(async p=>{const L=await fetch("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p||{})}),z=await L.json().catch(()=>({}));if(!L.ok)throw new Error(z?.error||`Failed to create initiative (${L.status})`);return await fa(),Ke(Z=>ei(Z,z)),z},[fa]),Gm=r.useCallback(async(p,L)=>{const z=await fetch(`/api/taskforce/initiative/${encodeURIComponent(p)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(L||{})}),Z=await z.json().catch(()=>({}));if(!z.ok)throw new Error(Z?.error||`Failed to update initiative (${z.status})`);return await fa(),Ke(Oe=>ei(Oe,Z)),Z},[fa]),Dl=r.useCallback(async p=>{const L=await fetch(`/api/taskforce/initiative/${encodeURIComponent(p)}/archive`,{method:"POST"}),z=await L.json().catch(()=>({}));if(!L.ok)throw new Error(z?.error||`Failed to archive initiative (${L.status})`);return await fa(),Ke(Z=>ei(Z,z)),z},[fa]),eu=r.useCallback(async p=>{const L=await fetch(`/api/taskforce/initiative/${encodeURIComponent(p)}/unarchive`,{method:"POST"}),z=await L.json().catch(()=>({}));if(!L.ok)throw new Error(z?.error||`Failed to unarchive initiative (${L.status})`);return await fa(),Ke(Z=>ei(Z,z)),z},[fa]),Vm=r.useCallback(async p=>{const L=await fetch("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p||{})}),z=await L.json().catch(()=>({}));if(!L.ok)throw new Error(z?.error||`Failed to create workstream (${L.status})`);return await fa(),De(Z=>ei(Z,z)),z},[fa]),qm=r.useCallback(async(p,L)=>{const z=await fetch(`/api/taskforce/workstream/${encodeURIComponent(p)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(L||{})}),Z=await z.json().catch(()=>({}));if(!z.ok)throw new Error(Z?.error||`Failed to update workstream (${z.status})`);return await fa(),De(Oe=>ei(Oe,Z)),Z},[fa]),Km=r.useCallback(async p=>{const L=await fetch(`/api/taskforce/workstream/${encodeURIComponent(p)}/archive`,{method:"POST"}),z=await L.json().catch(()=>({}));if(!L.ok)throw new Error(z?.error||`Failed to archive workstream (${L.status})`);return await fa(),De(Z=>ei(Z,z)),z},[fa]),Pc=r.useCallback(async p=>{const L=await fetch(`/api/taskforce/workstream/${encodeURIComponent(p)}/unarchive`,{method:"POST"}),z=await L.json().catch(()=>({}));if(!L.ok)throw new Error(z?.error||`Failed to unarchive workstream (${L.status})`);return await fa(),De(Z=>ei(Z,z)),z},[fa]),yo=r.useRef(!1);r.useEffect(()=>{Q(!0),!yo.current&&(yo.current=!0,dn())},[dn]),r.useEffect(()=>{W&&dn()},[W,dn]),r.useEffect(()=>{if(!$)return;let p=!1;const L=new AbortController,z=typeof window<"u"?window.setTimeout(()=>L.abort(),5e3):null;return fetch(H("/api/taskforce/auth/providers"),{credentials:"include",signal:L.signal}).then(Z=>Z.ok?Z.json():null).then(Z=>{!p&&Array.isArray(Z?.providers)&&Kt(Z.providers)}).catch(()=>{}).finally(()=>{z!==null&&typeof window<"u"&&window.clearTimeout(z)}),()=>{p=!0,L.abort()}},[$,H]),r.useEffect(()=>{if(b!=="local"||!Ae||typeof window>"u")return;const p=()=>{dn()},L=()=>{document.visibilityState==="visible"&&p()};window.addEventListener("focus",p),window.addEventListener("online",p),document.addEventListener("visibilitychange",L);const z=window.setInterval(p,3e4);return()=>{window.removeEventListener("focus",p),window.removeEventListener("online",p),document.removeEventListener("visibilitychange",L),window.clearInterval(z)}},[b,Ae,dn]),r.useEffect(()=>{n&&n(Va.length)},[Va.length,n]),r.useEffect(()=>{if(t&&Va.length>0){const p=Va.find(L=>L.id.endsWith(t)||L.id===t);p&&(Yo(p),br("add"))}},[t,Va]);const Li=r.useRef(!1);r.useEffect(()=>{if(!Tn)return;if(!Li.current&&va.length>0){Li.current=!0;const L=Fo,z=va.some(Z=>Z.label===L||Z.value===L);if(L&&z){const Z=va.find(Oe=>Oe.label===L||Oe.value===L);vr(Z?.value||L)}else vr(Gn(va));return}const p=va.some(L=>L.value===Hs);va.length>0&&!p&&vr(Gn(va))},[Tn,va,Hs,Gn,Fo]),r.useEffect(()=>{if(!Tn||va.length===0)return;const p=Z=>!va.some(Oe=>Oe.value===Z.category),L=Va.some(p),z=La.some(p);if(L||z){const Z=Gn(va);L&&kr(Oe=>Oe.map(Le=>p(Le)?{...Le,category:Z}:Le)),z&&R(Oe=>Oe.map(Le=>p(Le)?{...Le,category:Z}:Le))}},[Tn,va,Va,La,Gn]),r.useEffect(()=>()=>{ms.current!==null&&typeof window<"u"&&(window.clearTimeout(ms.current),ms.current=null),Rn.current!==null&&typeof window<"u"&&(window.clearTimeout(Rn.current),Rn.current=null)},[]),r.useEffect(()=>{},[Vr]);const Er=r.useCallback(async()=>{await ui()},[ui]),ko=String(xe||"").trim(),Ko=String(Ge||"").trim(),Ll=be("/taskforce-ws"),Zm=!!($&&b==="cloud"&&aa&&Ie&&Ko&&Ko!=="anonymous"&&ko&&!af(ko)&&Ll),tu=r.useCallback(()=>{b==="cloud"&&(ui(),!(typeof window>"u")&&(Rn.current!==null&&window.clearTimeout(Rn.current),Rn.current=window.setTimeout(()=>{Rn.current=null,ui()},250)))},[b,ui]);Vg({enabled:Zm,workspaceId:ko,websocketUrl:Ll,onSignal:tu,userId:Ko||void 0}),Ib({isOpen:ee,authBlocked:Y,authRequiredForApi:E,isAuthenticated:Ie,canCallProtectedApi:Mn.canCallProtectedApi,shouldGateProtectedApiCalls:Ee,authSessionResolvedRef:Ac,authRequiredForApiRef:xc,isAuthenticatedRef:$o,dataVersionRef:Dm,refreshTaskCollectionsForDataVersion:Er});const Bl=r.useMemo(()=>{const p=new Map;for(const L of La)p.set(L.id,L);for(const L of Va)p.set(L.id,L);return Array.from(p.values())},[Va,La]),Mc=r.useMemo(()=>ns.map(p=>({...p.taskSnapshot,isDeleted:!0,deletedRecordId:p.id})),[ns]);r.useEffect(()=>{if(!(ka||Ua)&&ee&&!ca){if(U==="tasks"){const p=`${xe}:${U}:${q?"archive":"active"}:${we}`;if(!wr.current){wr.current=!0,Ns.current=p;return}if(Ns.current===p)return;Ns.current=p,on(),fa(),(q||we==="archived")&&Vn(!0),we==="deleted"&&ir();return}if(U==="settings"){const p=`${xe}:${U}:${Be}`;if(Ni.current===p)return;Ni.current=p,jr(),(Be==="commands"||Be==="resources")&&Ut()}}},[xe,ee,U,Be,q,we,on,fa,Vn,ir,jr,Ut,ka,Ua,ca]);const Wl=r.useCallback(async(p="")=>{try{const L=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(p)}`);if(L.ok){const z=await L.json();st(z.folders||[]),Pt(z.files||[]),It(p)}}catch(L){console.error("[Taskforce] Failed to fetch folders:",L)}},[]),au=r.useCallback(p=>{const L=[];if(p.path&&L.push(p.path),p.paths&&p.paths.length>0)for(const z of p.paths)L.includes(z)||L.push(z);return L},[]),{validatePaths:Fl,handleUpdateCategory:Ec,handleSaveCategory:nu,handleAddPath:Ps,handleUpdateCategoryIcon:ru,handleUpdateCategoryColor:Ol,handleRemovePath:su,handleSelectPath:ou,handleRemoveCategory:Ms,handleSaveType:iu,handleRemoveType:cu,handleUpdateType:lu,handleUpdateTaxonomies:du,handleUpdatePriorities:uu,analyzeSystemTaxonomyPack:Yr,handleApplySystemTaxonomyPack:mu}=Uw({activeCategories:va,activeTab:U,activeTypes:ra,archivedTasks:La,browserTarget:Ft,category:Hs,configLoaded:Tn,customCategories:Xs,refreshTaskCollections:Vr,fetchTasks:on,filterCategories:hc,getCategoryPaths:au,normalizePath:Qs,pathValidation:ii,setBrowserTarget:Mt,setCategory:vr,setCustomCategories:oi,setCustomTypes:As,setFilterCategories:Sr,setPathValidation:ci,setPriorities:pr,setShowFolderBrowser:it,setTaxonomies:di,tasks:Va}),Zo=r.useCallback(async p=>{const L=xs,z={...L,...p};ao(z);try{const Z=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:p})});if(!Z.ok)throw new Error(`Failed to save taxonomy display labels (${Z.status})`);const Oe=await Z.json().catch(()=>({}));Oe?.displayLabels&&typeof Oe.displayLabels=="object"&&ao({...z,...Oe.displayLabels})}catch(Z){console.error("[Taskforce] Failed to update taxonomy display labels",Z),ao(L)}},[xs]),br=r.useCallback(p=>{U==="tasks"&&In.current&&No(In.current.scrollTop),ie(p)},[U]),pu=r.useRef(async()=>{}),{handleNavigation:$l,handleClose:Ym,resetForm:Dc,resolveWorkstreamIdInput:fu,handleEdit:Yo,handleOpenTaskById:vo,returnToPreviousTask:Lc,clearReturnToParentTask:Bc}=Jw({activeCategories:va,activeTypes:ra,activeTab:U,attachments:Cc,checklistItems:Gs,comments:hl,description:cc,editingTaskId:sr,flushPendingAutoSave:()=>pu.current(),getPreferredCategoryValue:Gn,lastUsedCategory:Fo,newCommentText:Si,relationshipTasks:Bl,workstreams:ht,showArchive:q,taxonomies:os,setActiveTab:br,setApproach:ml,setAssignee:hi,setAttachments:xi,setAttachmentsDirty:Ii,setCategory:vr,setChecklistItems:lc,setComments:vi,setComplexity:ll,setDescription:fl,setDueDate:Td,setEditingTaskId:rs,setError:Nr,setFormTaxonomies:wt,setIsOpen:Q,setNewCommentText:dc,setPendingNavigation:G,setWorkstreamInput:gi,setPriority:Wo,setScheduledDate:Rs,setShowArchive:Se,setStatus:po,setTaskReturnTrail:xn,setTitle:ki,setType:Ts,setUnsavedModalOpen:Bn,taskReturnTrail:Da,title:yi}),{copiedId:Bi,handleDelete:Jo,handleUpdateTask:Ul,handleToggleComplete:zl,handleToggleCancel:Wc,handleToggleInProgress:So,handleToggleReview:Hl,handleArchiveTask:Wi,handleBulkArchive:Jm,handleUnarchive:Gl,handleRestoreDeletedTask:hu,handlePermanentlyDeleteDeletedTask:gu,handleEmptyDeletedTasks:qs,handleCopyId:yu,queueWorkspaceSyncFromAuthoritativeTaskState:Vl}=hb({tasks:Va,archivedTasks:La,editingTaskId:sr,setTasks:kr,setArchivedTasks:R,setDeletedTasks:sn,setError:Nr,resetForm:Dc,setActiveTab:br,fetchTasks:on,fetchArchive:Vn,fetchDeletedTasks:ir,mergeTaskFromServer:oo,pushNotice:At,cloudAuthConfigured:$,runtimeMode:b,isAuthenticated:Ie,workspaceCloudSyncEnabled:cs,buildWorkspaceSyncSignature:cl,pushWorkspaceChangesToCloud:Lo,workspacePendingSignatureRef:Cd,workspaceDeletedTaskIdsRef:zs,workspaceDeletedTaskWatermarksRef:Ad}),{autoSaveState:ku,flushAutoSave:vu,scheduleWarningPrompt:Qm,handleSubmit:ql,confirmScheduleWarning:Xm,cancelScheduleWarning:Qo,handleAddComment:Kl}=mb({activeCategories:va,activeTab:U,apiEndpoint:d,approach:ul,assignee:pl,attachments:Cc,attachmentsDirty:Fd,category:Hs,checklistItems:Gs,comments:hl,complexity:ic,description:cc,dueDate:Id,editingTaskId:sr,fetchTasks:on,formTaxonomies:uc,getPreferredCategoryValue:Gn,mergeTaskFromServer:oo,workstreamInput:On,priority:ia,pushNotice:At,queueWorkspaceSyncFromAuthoritativeTaskState:Vl,relationshipTasks:Bl,resetForm:Dc,resolveWorkstreamIdInput:fu,scheduledDate:Fn,setActiveTab:br,setAttachmentsDirty:Ii,setComments:vi,setError:Nr,setLastUsedCategory:pc,setLoading:Gr,setNewCommentText:dc,status:dl,title:yi,taxonomies:os,type:mo});r.useEffect(()=>{pu.current=vu},[vu]);const{handleSetWorkstreamForCurrentTask:Su}=pb({editingTaskId:sr,mergeTaskFromServer:oo,workstreamInput:On,pushNotice:At,queueWorkspaceSyncFromAuthoritativeTaskState:Vl,relationshipTasks:Bl,resolveWorkstreamIdInput:fu,setError:Nr,fetchTasks:on}),{currentTask:wu,currentTaskWorkstream:bu,currentTaskInitiative:fs}=qw({editingTaskId:sr,relationshipTasks:Bl,initiatives:C,workstreams:ht,supplementalTasks:Mc,setComments:vi}),hs=Ow({resolveCloudAuthUrl:H,currentWorkspaceId:xe,normalizedCloudAuthBaseUrl:se,normalizedCloudMcpBaseUrl:Re,mergedConfig:o,availableWorkspaces:Gt,currentTheme:Me,configLoaded:Tn,globalTheme:gt,themeUseGlobalDefault:St,keyShortcut:pa,jsonBackupEnabled:Ha,globalJsonBackupEnabled:es,globalWeekStartsOn:Na,locale:Cn,supportedLocales:xr,jsonBackupUseGlobalDefault:zn,manualComplexityEnabled:nn,checklistDropdownEnabled:hr,showTaskCardStatusLabel:gn,exportWorkflowsPath:Ln,exportingResource:Cs,exportResult:Tr,pathSaved:dt,settingsSection:Be,exportEnvironment:Wa,setupState:_n,buildInfo:Ma,saveSetupMode:Vo,saveWorkspaceProfile:Rl,setCurrentTheme:nt,handleSaveTheme:Ud,handleSaveGlobalTheme:Bm,setKeyShortcut:fn,handleJsonBackupEnabledChange:Wm,handleSaveGlobalJsonBackupEnabled:Fm,handleSaveGlobalWeekStartsOn:Om,handleSaveLocale:zd,handleManualComplexityEnabledChange:$m,handleChecklistDropdownEnabledChange:yn,handleShowTaskCardStatusLabelChange:Al,handleResetProjectToGlobal:Hd,handleSaveSettings:$d,setExportWorkflowsPath:ar,setExportEnvironment:Rt,availableWorkflows:Ur,initiativeTemplates:Ye,availableEnvironments:yr,fetchWorkflows:Ut,fetchInitiativeTemplates:Ea,createInitiativeFromTemplate:El,fetchWorkflowTemplate:oa,fetchWorkflowOverrideNames:cn,saveWorkflowTemplateDraft:rn,resetWorkflowTemplateDraft:bs,handleExportWorkflows:zr,setShowFolderBrowser:it,setBrowserTarget:Mt,fetchFolders:Wl,activeCategories:va,pathValidation:ii,taxonomyDisplayLabels:xs,handleUpdateCategory:Ec,handleRemoveCategory:Ms,handleSaveCategory:nu,handleAddPath:Ps,handleRemovePath:su,handleUpdateCategoryIcon:ru,handleUpdateCategoryColor:Ol,activeTypes:ra,handleSaveType:iu,handleRemoveType:cu,handleUpdateType:lu,taxonomies:os,handleUpdateTaxonomies:du,priorities:an,handleUpdatePriorities:uu,analyzeSystemTaxonomyPack:Yr,handleApplySystemTaxonomyPack:mu,handleUpdateTaxonomyDisplayLabels:Zo,projectRoot:Ue,projectName:yt,mcpHostRoot:Qt,serverHostRoot:An,mcpScriptPath:Qe,tenantId:Ot,runtimeMode:b,workspaceSwitchingEnabled:vt,deleteWorkspace:lr,setMcpHostRoot:Ss,isAuthenticated:Ie});r.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:Va,archivedTasks:La,runtimeMode:b,currentWorkspaceId:xe,isAuthenticated:Ie,workspaceCloudSyncEnabled:cs,realtimeSyncEnabled:za,fetchTasks:on,fetchArchive:Vn,retryWorkspaceCloudSync:ls,resetWorkspaceSyncCursorAndPull:pi,getSyncDiagnostics:Bo,__dispatch:{handleUpdateTask:Ul,handleToggleComplete:zl,handleArchiveTask:Wi,handleToggleCancel:Wc,handleToggleInProgress:So,handleToggleReview:Hl,handleSubmit:ql,handleDelete:Jo}})},[Va,La,b,xe,Ie,cs,za,on,Vn,ls,pi,Bo,Ul,zl,Wi,Wc,So,Hl,ql,Jo]);const _u=Ve&&Ve.tone!=="error"?{message:Ve.message,type:"info"}:null,Cu=String(S||_.wsBaseUrl||ge||"").trim().replace(/\/+$/,"");return{config:{...o,cloudEnvironment:_.cloudEnvironment||o.cloudEnvironment||"",apiBaseUrl:ge||o.apiBaseUrl,cloudAuthBaseUrl:se||o.cloudAuthBaseUrl,wsBaseUrl:Cu||o.wsBaseUrl},isOpen:ee,setIsOpen:Q,activeTab:U,setActiveTab:br,currentTheme:Me,setCurrentTheme:nt,configLoaded:Tn,storagePath:Ct,saveSettings:$d,pathSaved:dt,keyShortcut:pa,setKeyShortcut:fn,globalWeekStartsOn:Na,locale:Cn,supportedLocales:xr,saveLocale:zd,jsonBackupEnabled:Ha,setJsonBackupEnabled:er,manualComplexityEnabled:nn,checklistDropdownEnabled:hr,showTaskCardStatusLabel:gn,setManualComplexityEnabled:Ir,mcpHostRoot:Qt,setMcpHostRoot:Ss,settingsSection:Be,setSettingsSection:et,runtimeMode:b,workspaceMode:Lt,workspaceSwitchingEnabled:vt,cloudAuthConfigured:$,authRequiredForApi:E,authBlocked:Y,isAuthenticated:Ie,authUserId:Ge,authUserEmail:Et,authUserDisplayName:Wt,authUserAvatarUrl:Ka,authWorkspaceId:Vt,userGlobalSyncStatus:io,workspaceLastPullAt:Tm,workspaceLastPushAt:sl,workspaceLastErrorAt:Rm,userGlobalSyncError:co,workspaceLastErrorMessage:ol,workspaceLastSuccessfulSyncAt:qn,workspaceSyncPhase:lo,workspaceSyncSetupIntent:mi,workspaceSyncStatus:Nm,workspaceSyncSummary:bd,workspaceSyncRecommendedAction:Do,workspaceSyncBusy:jm,workspaceSyncPendingChanges:_d,retryUserGlobalSettingsSync:oc,retryWorkspaceCloudSync:ls,resetWorkspaceSyncCursorAndPull:pi,getWorkspaceSyncDiagnostics:Bo,hasBetaAccess:Xa,realtimeSyncEnabled:za,realtimeSyncFlagSource:Qn,currentWorkspaceId:xe,currentWorkspaceRole:Tl,availableWorkspaces:Gt,assigneeOptions:Pa,workspaceCloudSyncEnabled:cs,saveWorkspaceCloudSyncSettings:uo,applyWorkspaceSyncStateSnapshot:xd,bootstrapState:tc,authSessionResolved:aa,workspaceBootstrapPending:ca,bootstrapPhase:$t,bootstrapError:ba,bootstrapStartedAt:Br,setupState:_n,runtimeCapabilities:En,refreshSetupContext:Mi,retryBootstrapChecks:Il,continueAfterCommercialOnboarding:qd,saveWorkspaceProfile:Rl,fetchWorkspaces:Pr,createWorkspace:Go,deleteWorkspace:lr,switchWorkspace:Mr,loginWithCredentials:Kd,beginOAuthLogin:Um,availableAuthProviders:sa,fetchLoginMethods:Di,unlinkLoginMethod:zm,addPasswordToAccount:qo,beginOAuthLink:Pl,registerWithCredentials:Nl,updateCurrentUserProfile:Zd,requestEmailVerification:Kr,confirmEmailVerification:Yd,requestPasswordReset:Zr,confirmPasswordReset:Jd,inspectInviteAcceptance:Qd,acceptInviteWithToken:Ei,joinInviteWithToken:jl,logout:Hm,showFolderBrowser:Xe,setShowFolderBrowser:it,folders:ne,files:Ze,currentBrowsePath:kt,fetchFolders:Wl,browserTarget:Ft,setBrowserTarget:Mt,groupBy:us,setGroupBy:cr,activeWorkspaceModule:bl,setActiveWorkspaceModule:Lm,emptyColumnMode:go,setEmptyColumnMode:Oo,zenMode:_s,setZenMode:Ya,handleSelectPath:ou,handleAddPath:Ps,handleRemovePath:su,tasks:Va,loadingTasks:si,archivedTasks:La,initiatives:C,workstreams:ht,planningBootstrapTaskSummaries:oe,deletedTasks:ns,activeCategories:va,activeTypes:ra,priorities:an,taxonomyDisplayLabels:xs,approaches:fr,taxonomies:os,searchQuery:fc,setSearchQuery:Nd,filterCategories:hc,setFilterCategories:Sr,filterTypes:gl,setFilterTypes:jd,filterPriorities:Ja,setFilterPriorities:wi,filterStatus:fo,setFilterStatus:Pd,filterAssignees:yl,setFilterAssignees:qr,filterTaxonomies:gc,setFilterTaxonomies:bi,hasInitedFilters:ho,sortBy:yc,setSortBy:kc,sortOrder:kl,setSortOrder:Dd,toggleSortOrder:vc,showArchive:q,setShowArchive:Se,taskScope:we,setTaskScope:Te,clearFilters:Pm,filteredTasks:Sc,searchAgnosticTasks:wc,filteredArchive:Ld,groupedTasks:Bd,collapsedCategories:vl,setCollapsedCategories:Sl,fetchTasks:on,fetchArchive:Vn,fetchDeletedTasks:ir,fetchPlanningEntities:fa,fetchAssigneeOptions:Ho,createInitiative:Xd,updateInitiative:Gm,archiveInitiative:Dl,unarchiveInitiative:eu,createWorkstream:Vm,updateWorkstream:qm,archiveWorkstream:Km,unarchiveWorkstream:Pc,handleEdit:Yo,handleDelete:Jo,handleCopyId:yu,handleToggleComplete:zl,handleToggleCancel:Wc,handleToggleInProgress:So,handleToggleReview:Hl,handleArchiveTask:Wi,handleBulkArchive:Jm,handleUnarchive:Gl,handleRestoreDeletedTask:hu,handlePermanentlyDeleteDeletedTask:gu,handleEmptyDeletedTasks:qs,handleUpdateTask:Ul,editingTaskId:sr,loading:no,error:ro,title:yi,setTitle:ki,description:cc,setDescription:fl,checklistItems:Gs,setChecklistItems:lc,category:Hs,setCategory:vr,type:mo,setType:Ts,priority:ia,setPriority:Wo,complexity:ic,setComplexity:ll,status:dl,setStatus:po,approach:ul,setApproach:ml,assignee:pl,setAssignee:hi,scheduledDate:Fn,setScheduledDate:Rs,dueDate:Id,setDueDate:Td,workstreamInput:On,setWorkstreamInput:gi,formTaxonomies:uc,setFormTaxonomies:wt,comments:hl,newCommentText:Si,setNewCommentText:dc,attachments:Cc,setAttachments:xi,attachmentsDirty:Fd,setAttachmentsDirty:Ii,descriptionFocused:Em,setDescriptionFocused:Ai,showMarkdownHelp:al,setShowMarkdownHelp:nl,showChecklist:mc,setShowChecklist:ds,showComments:Mm,setShowComments:Wd,isCapturingScreenshot:bc,setIsCapturingScreenshot:_c,handleSubmit:ql,resetForm:Dc,handleAddComment:Kl,handleSetWorkstreamForCurrentTask:Su,handleOpenTaskById:vo,returnToPreviousTask:Lc,autoSaveState:ku,unsavedModalOpen:Bs,setUnsavedModalOpen:Bn,pendingNavigation:Wn,handleNavigation:$l,handleClose:Ym,uiNotice:Ve,pushNotice:At,clearNotice:jt,successBanner:_u,taskReturnTrail:Da,clearReturnToParentTask:Bc,copiedId:Bi,recentlyChangedTaskIds:Fs,scheduleWarningPrompt:Qm,confirmScheduleWarning:Xm,cancelScheduleWarning:Qo,tasksScrollRef:In,setTasksScrollPos:No,exportEnvironment:Wa,setExportEnvironment:Rt,exportWorkflowsPath:Ln,setExportWorkflowsPath:ar,exportResult:Tr,exportingResource:Cs,handleUpdateCategory:Ec,handleRemoveCategory:Ms,handleSaveCategory:nu,handleUpdateCategoryIcon:ru,handleUpdateCategoryColor:Ol,handleSaveType:iu,handleRemoveType:cu,handleUpdateType:lu,handleUpdateTaxonomies:du,handleUpdatePriorities:uu,handleUpdateTaxonomyDisplayLabels:Zo,pathValidation:ii,validatePaths:Fl,getCategoryPaths:au,customCategories:Xs,setCustomCategories:oi,projectRoot:Ue,projectName:yt,mcpScriptPath:Qe,serverHostRoot:An,commentsEndRef:Rd,currentTask:wu,currentTaskWorkstream:bu,currentTaskInitiative:fs,availableWorkflows:Ur,initiativeTemplates:Ye,availableEnvironments:yr,fetchWorkflows:Ut,fetchInitiativeTemplates:Ea,createInitiativeFromTemplate:El,fetchWorkflowTemplate:oa,fetchWorkflowOverrideNames:cn,saveWorkflowTemplateDraft:rn,resetWorkflowTemplateDraft:bs,onExportWorkflows:zr,settingsModel:hs}}const jb="modulepreload",Pb=function(e){return"/taskforce/"+e},wh={},vs=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){let m=function(y){return Promise.all(y.map(k=>Promise.resolve(k).then(S=>({status:"fulfilled",value:S}),S=>({status:"rejected",reason:S}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),d=i?.nonce||i?.getAttribute("nonce");o=m(n.map(y=>{if(y=Pb(y),y in wh)return;wh[y]=!0;const k=y.endsWith(".css"),S=k?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${y}"]${S}`))return;const h=document.createElement("link");if(h.rel=k?"stylesheet":jb,k||(h.as="script"),h.crossOrigin="",h.href=y,d&&h.setAttribute("nonce",d),document.head.appendChild(h),k)return new Promise((g,v)=>{h.addEventListener("load",g),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${y}`)))})}))}function l(i){const d=new Event("vite:preloadError",{cancelable:!0});if(d.payload=i,window.dispatchEvent(d),!d.defaultPrevented)throw i}return o.then(i=>{for(const d of i||[])d.status==="rejected"&&l(d.reason);return t().catch(l)})},Mb="_filterGlow_1a4uy_8",Eb="_floatingButton_1a4uy_18",Db="_badge_1a4uy_49",Lb="_configBadge_1a4uy_66",Bb="_configBadgeActive_1a4uy_76",Wb="_configBadgeRevoked_1a4uy_82",Fb="_configBadgeExpired_1a4uy_88",Ob="_header_1a4uy_98",$b="_headerTitle_1a4uy_113",Ub="_brandIcon_1a4uy_130",zb="_brandHomeButton_1a4uy_136",Hb="_brandHomeStatic_1a4uy_137",Gb="_brandCloudSuffix_1a4uy_162",Vb="_projectSlash_1a4uy_167",qb="_projectName_1a4uy_174",Kb="_taskCountBadge_1a4uy_193",Zb="_taskCountBadgeIcon_1a4uy_210",Yb="_taskCountBadgeAlert_1a4uy_214",Jb="_headerActions_1a4uy_220",Qb="_sortDirectionBtn_1a4uy_227",Xb="_sortDirectionBtnWidget_1a4uy_234",e_="_form_1a4uy_242",t_="_topRow_1a4uy_254",a_="_field_1a4uy_260",n_="_labelRow_1a4uy_266",r_="_label_1a4uy_266",s_="_manageLink_1a4uy_280",o_="_input_1a4uy_299",i_="_select_1a4uy_300",c_="_textarea_1a4uy_301",l_="_taskIdInlineLink_1a4uy_335",d_="_readOnly_1a4uy_354",u_="_selectWithConfig_1a4uy_362",m_="_configBtn_1a4uy_372",p_="_configBtnActive_1a4uy_402",f_="_hasPath_1a4uy_410",h_="_pathIndicator_1a4uy_415",g_="_formActions_1a4uy_421",y_="_hasCancel_1a4uy_428",k_="_submitBtn_1a4uy_432",v_="_cancelBtn_1a4uy_448",S_="_successMessage_1a4uy_480",w_="_errorMessage_1a4uy_486",b_="_successIcon_1a4uy_498",__="_spinner_1a4uy_518",C_="_spin_1a4uy_518",A_="_boardRefreshIndicator_1a4uy_522",x_="_destructiveBtn_1a4uy_552",I_="_warningBtn_1a4uy_575",T_="_viewTab_1a4uy_598",R_="_deleteBtn_1a4uy_609",N_="_loading_1a4uy_619",j_="_emptyState_1a4uy_625",P_="_taskList_1a4uy_635",M_="_taskIdBadge_1a4uy_641",E_="_taskIdBadgeLabel_1a4uy_663",D_="_copiedId_1a4uy_682",L_="_highlight_1a4uy_688",B_="_modal_1a4uy_700",W_="_priorityEmoji_1a4uy_708",F_="_metaItem_1a4uy_712",O_="_taskFormDateInput_1a4uy_726",$_="_metaBadge_1a4uy_736",U_="_complexityPill_1a4uy_751",z_="_complexityDots_1a4uy_755",H_="_dot_1a4uy_761",G_="_dotFilled_1a4uy_769",V_="_typePill_1a4uy_775",q_="_type_bug_1a4uy_779",K_="_type_feature_1a4uy_783",Z_="_type_chore_1a4uy_787",Y_="_type_refactor_1a4uy_791",J_="_type_documentation_1a4uy_795",Q_="_type_research_1a4uy_799",X_="_type_security_1a4uy_807",eC="_approachPill_1a4uy_812",tC="_approach_evaluate_1a4uy_817",aC="_approach_collaborate_1a4uy_823",nC="_approach_plan_1a4uy_829",rC="_approachActive_1a4uy_835",sC="_statusActionsGroup_1a4uy_840",oC="_statusActionsGroupCompact_1a4uy_846",iC="_statusSelectWrap_1a4uy_850",cC="_statusTaxonomyDropdownWrap_1a4uy_856",lC="_statusTaxonomyDropdown_1a4uy_856",dC="_statusTaxonomyDropdownCompact_1a4uy_864",uC="_statusTaxonomyDropdownIconOnly_1a4uy_868",mC="_taxonomyDropdownButton_1a4uy_873",pC="_taxonomyDropdownButtonContent_1a4uy_890",fC="_statusTaxonomyDropdownIconOnlyPanel_1a4uy_894",hC="_actionBtn_1a4uy_900",gC="_startWorkBtn_1a4uy_924",yC="_workingBtn_1a4uy_933",kC="_pulse_1a4uy_1",vC="_reviewBtn_1a4uy_939",SC="_reviewActiveBtn_1a4uy_949",wC="_reviewPill_1a4uy_955",bC="_archiveTaskBtn_1a4uy_962",_C="_bulkArchiveBtn_1a4uy_971",CC="_bulkDeleteBtn_1a4uy_993",AC="_completeBtn_1a4uy_1034",xC="_completeActiveBtn_1a4uy_1044",IC="_deleteActiveBtn_1a4uy_1050",TC="_disabledBtn_1a4uy_1056",RC="_archiveList_1a4uy_1063",NC="_archiveHeader_1a4uy_1071",jC="_settingsTab_1a4uy_1082",PC="_settingsTabMcpOnly_1a4uy_1091",MC="_settingsTabs_1a4uy_1100",EC="_settingsLayout_1a4uy_1114",DC="_settingsLayoutMcpOnly_1a4uy_1121",LC="_settingsSidebar_1a4uy_1127",BC="_settingsSidebarHeader_1a4uy_1137",WC="_settingsSidebarNav_1a4uy_1146",FC="_settingsSidebarBtn_1a4uy_1155",OC="_settingsSidebarBtnActive_1a4uy_1179",$C="_settingsSidebarGroup_1a4uy_1186",UC="_settingsSidebarGroupBtn_1a4uy_1192",zC="_settingsSidebarGroupLabel_1a4uy_1196",HC="_settingsSidebarGroupChevron_1a4uy_1200",GC="_settingsSidebarSubnav_1a4uy_1206",VC="_settingsSidebarSubBtn_1a4uy_1213",qC="_appScrollbar_1a4uy_1236",KC="_settingsTabBtn_1a4uy_1240",ZC="_settingsTabBtnActive_1a4uy_1266",YC="_settingsContent_1a4uy_1272",JC="_mcpRegistrationHint_1a4uy_1298",QC="_mcpRegistrationPrompt_1a4uy_1309",XC="_mcpAuthRequiredCard_1a4uy_1328",eA="_mcpAuthRequiredIcon_1a4uy_1340",tA="_mcpAuthRequiredBody_1a4uy_1353",aA="_mcpAuthRequiredActions_1a4uy_1360",nA="_settingsToast_1a4uy_1404",rA="_settingsToastSuccess_1a4uy_1421",sA="_settingsToastError_1a4uy_1427",oA="_inputWithPrefix_1a4uy_1433",iA="_pathHint_1a4uy_1440",cA="_settingGroup_1a4uy_1453",lA="_settingTitle_1a4uy_1459",dA="_settingTitleRow_1a4uy_1468",uA="_settingTitleActionBtn_1a4uy_1475",mA="_themeOptions_1a4uy_1495",pA="_buttonGrid_1a4uy_1500",fA="_themeBtn_1a4uy_1512",hA="_activeTheme_1a4uy_1536",gA="_pathInputGroup_1a4uy_1544",yA="_saveSettingsBtn_1a4uy_1553",kA="_shortcutInputWrapper_1a4uy_1574",vA="_inputIcon_1a4uy_1579",SA="_settingHelper_1a4uy_1588",wA="_browseBtn_1a4uy_1595",bA="_inlineCategoryManager_1a4uy_1614",_A="_categoryManager_1a4uy_1625",CA="_categoryList_1a4uy_1631",AA="_categoryChip_1a4uy_1643",xA="_categoryChipLabel_1a4uy_1656",IA="_chipActionBtn_1a4uy_1664",TA="_removeCategoryBtn_1a4uy_1684",RA="_addCategoryForm_1a4uy_1704",NA="_addCategoryBtn_1a4uy_1709",jA="_filesList_1a4uy_1734",PA="_helpLink_1a4uy_1761",MA="_inlineCode_1a4uy_1782",EA="_codeBlock_1a4uy_1793",DA="_taskChildrenSummaryBadges_1a4uy_1817",LA="_taskChildrenProgressBar_1a4uy_1825",BA="_taskChildrenProgressBarSegmentDone_1a4uy_1836",WA="_taskChildrenProgressBarSegmentReview_1a4uy_1842",FA="_taskChildrenProgressBarSegmentInProgress_1a4uy_1848",OA="_taskChildrenProgressBarSegmentBlocked_1a4uy_1854",$A="_taskChildrenProgressText_1a4uy_1860",UA="_taskChildUnlinkBtn_1a4uy_1869",zA="_aboutText_1a4uy_1887",HA="_versionInfo_1a4uy_1894",GA="_filterBar_1a4uy_1902",VA="_kanbanHintText_1a4uy_1916",qA="_searchContainer_1a4uy_1922",KA="_searchIcon_1a4uy_1929",ZA="_searchInput_1a4uy_1937",YA="_searchActive_1a4uy_1963",JA="_searchCount_1a4uy_1968",QA="_clearSearchBtn_1a4uy_1984",XA="_filterRow_1a4uy_2006",ex="_sortLabel_1a4uy_2012",tx="_archiveToggle_1a4uy_2020",ax="_filterContainer_1a4uy_2057",nx="_filterButton_1a4uy_2062",rx="_filterActive_1a4uy_2087",sx="_filterDropdown_1a4uy_2093",ox="_filterOption_1a4uy_2108",ix="_filterDivider_1a4uy_2138",cx="_filterSelect_1a4uy_2144",lx="_filterToggleBtn_1a4uy_2185",dx="_inProgressToggle_1a4uy_2207",ux="_activeInProgress_1a4uy_2225",mx="_activeFilter_1a4uy_2234",px="_resetFiltersBtn_1a4uy_2244",fx="_categoryChip_disabled_1a4uy_2277",hx="_categoryVisibilityToggle_1a4uy_2287",gx="_editCategoryInput_1a4uy_2300",yx="_categoryChipActionBtn_1a4uy_2311",kx="_categoryChipActionBtn_active_1a4uy_2329",vx="_categoryGroup_1a4uy_2334",Sx="_categoryHeader_1a4uy_2342",wx="_categoryTitle_1a4uy_2356",bx="_categoryCount_1a4uy_2366",_x="_categoryItems_1a4uy_2372",Cx="_priorityItem_low_1a4uy_2381",Ax="_priorityItem_medium_1a4uy_2385",xx="_priorityItem_high_1a4uy_2389",Ix="_priorityItem_critical_1a4uy_2393",Tx="_priorityPill_low_1a4uy_2397",Rx="_priorityPill_medium_1a4uy_2403",Nx="_priorityPill_high_1a4uy_2409",jx="_priorityPill_critical_1a4uy_2415",Px="_selectPriority_low_1a4uy_2430",Mx="_selectPriority_medium_1a4uy_2435",Ex="_selectPriority_high_1a4uy_2440",Dx="_selectPriority_critical_1a4uy_2445",Lx="_levelSelect_1a4uy_2454",Bx="_levelOption_1a4uy_2467",Wx="_levelOptionFilled_1a4uy_2484",Fx="_levelOption_priority_low_1a4uy_2491",Ox="_levelOption_priority_medium_1a4uy_2496",$x="_levelOption_priority_high_1a4uy_2501",Ux="_levelOption_priority_critical_1a4uy_2506",zx="_levelOption_complexity_tiny_1a4uy_2513",Hx="_levelOption_complexity_low_1a4uy_2518",Gx="_levelOption_complexity_medium_1a4uy_2523",Vx="_levelOption_complexity_high_1a4uy_2528",qx="_levelOption_complexity_epic_1a4uy_2533",Kx="_levelOptionActive_1a4uy_2540",Zx="_levelOptionSelected_1a4uy_2545",Yx="_levelLabel_1a4uy_2553",Jx="_fadeIn_1a4uy_1",Qx="_closeConfigBtn_1a4uy_2578",Xx="_configItem_1a4uy_2600",eI="_settingsLabel_1a4uy_2606",tI="_settingsHint_1a4uy_2615",aI="_pathList_1a4uy_2622",nI="_pathChip_1a4uy_2629",rI="_pathValid_1a4uy_2642",sI="_pathInvalid_1a4uy_2647",oI="_pathValidIcon_1a4uy_2652",iI="_pathInvalidIcon_1a4uy_2657",cI="_pathText_1a4uy_2662",lI="_removePathBtn_1a4uy_2669",dI="_pathCount_1a4uy_2691",uI="_specialistSection_1a4uy_2714",mI="_toggleHeading_1a4uy_2722",pI="_dropdownList_1a4uy_2762",fI="_specialistBadge_1a4uy_2771",hI="_iconGrid_1a4uy_2801",gI="_iconPickerBtn_1a4uy_2812",yI="_iconPickerBtnActive_1a4uy_2831",kI="_categorySubConfig_1a4uy_2838",vI="_colorPickerRow_1a4uy_2846",SI="_colorPickerGrid_1a4uy_2852",wI="_colorSwatch_1a4uy_2859",bI="_colorSwatchActive_1a4uy_2878",_I="_categoryChipIcon_1a4uy_2884",CI="_fieldIconWrapper_1a4uy_2889",AI="_fieldIcon_1a4uy_2889",xI="_field_dynamic_1a4uy_2911",II="_fieldIcon_dynamic_1a4uy_2917",TI="_categoryTitleIcon_1a4uy_2921",RI="_editActionsHeader_1a4uy_2927",NI="_editActionsGroup_1a4uy_2936",jI="_urlInputGroup_1a4uy_2943",PI="_iconBtn_1a4uy_2956",MI="_stickyActionHeader_1a4uy_2977",EI="_taskHierarchyHeader_1a4uy_2994",DI="_taskHierarchyBadgeRow_1a4uy_3001",LI="_taskHierarchyDivider_1a4uy_3009",BI="_taskHierarchySegment_1a4uy_3015",WI="_taskHierarchyMeta_1a4uy_3022",FI="_taskHierarchyActionBtn_1a4uy_3035",OI="_taskHierarchyEditor_1a4uy_3041",$I="_taskHierarchyInput_1a4uy_3048",UI="_taskSaveStatus_1a4uy_3057",zI="_taskSaveStatusCenter_1a4uy_3068",HI="_taskSaveStatusError_1a4uy_3076",GI="_headerSuccessFeedback_1a4uy_3080",VI="_slideInUp_1a4uy_1",qI="_successCheck_1a4uy_3092",KI="_scaleIn_1a4uy_1",ZI="_primaryUpdateBtn_1a4uy_3128",YI="_secondaryHeaderBtn_1a4uy_3156",JI="_secondaryHeaderBtnDestructive_1a4uy_3177",QI="_commentSection_1a4uy_3190",XI="_attachmentCaptureContainer_1a4uy_3226",eT="_capturePrompt_1a4uy_3234",tT="_previewContainer_1a4uy_3248",aT="_previewHeader_1a4uy_3254",nT="_attachmentCapturePreview_1a4uy_3264",rT="_actions_1a4uy_3271",sT="_primaryButton_1a4uy_3277",oT="_secondaryButton_1a4uy_3292",iT="_iconButton_1a4uy_3307",cT="_attachmentGrid_1a4uy_3329",lT="_attachmentCard_1a4uy_3336",dT="_attachmentPreviewContainer_1a4uy_3350",uT="_contextFileLink_1a4uy_3371",mT="_attachmentActions_1a4uy_3397",pT="_attachmentActionBtn_1a4uy_3411",fT="_attachmentCaptionInput_1a4uy_3433",hT="_hiddenInput_1a4uy_3451",gT="_contextUploadPanel_1a4uy_3455",yT="_contextUploadActions_1a4uy_3463",kT="_contextDropzone_1a4uy_3471",vT="_contextDropzoneActive_1a4uy_3487",ST="_contextDropzonePulse_1a4uy_1",wT="_contextLinkRow_1a4uy_3495",bT="_contextNotice_1a4uy_3501",_T="_documentAttachmentList_1a4uy_3507",CT="_documentAttachmentItem_1a4uy_3514",AT="_documentAttachmentRow_1a4uy_3521",xT="_documentAttachmentLink_1a4uy_3529",IT="_documentAttachmentMain_1a4uy_3543",TT="_documentAttachmentText_1a4uy_3550",RT="_documentAttachmentIcon_1a4uy_3558",NT="_documentAttachmentName_1a4uy_3569",jT="_documentAttachmentType_1a4uy_3578",PT="_documentAttachmentActions_1a4uy_3591",MT="_documentAttachmentActionBtn_1a4uy_3597",ET="_documentAttachmentCaptionInput_1a4uy_3618",DT="_brokenImage_1a4uy_3646",LT="_brokenImagePlaceholder_1a4uy_3654",BT="_regionOverlay_1a4uy_3668",WT="_selectionBox_1a4uy_3679",FT="_exportRow_1a4uy_3687",OT="_exportItem_1a4uy_3692",$T="_taxonomyDrillDown_1a4uy_3701",UT="_drillDownList_1a4uy_3711",zT="_drillDownSection_1a4uy_3719",HT="_drillDownSectionHeader_1a4uy_3725",GT="_drillDownSectionTitle_1a4uy_3732",VT="_drillDownItem_1a4uy_3741",qT="_drillDownItemDimmed_1a4uy_3763",KT="_drillDownItemActive_1a4uy_3771",ZT="_drillDownItemInfo_1a4uy_3776",YT="_drillDownItemText_1a4uy_3782",JT="_drillDownItemLabel_1a4uy_3787",QT="_drillDownItemSubtext_1a4uy_3792",XT="_addTaxonomyBtnSmall_1a4uy_3797",eR="_taxonomyDetailView_1a4uy_3819",tR="_slideIn_1a4uy_1",aR="_detailHeader_1a4uy_3839",nR="_detailTitle_1a4uy_3848",rR="_detailContent_1a4uy_3855",sR="_createOverlay_1a4uy_3862",oR="_createDialog_1a4uy_3874",iR="_zoomIn_1a4uy_1",cR="_dialogActions_1a4uy_3902",lR="_settingsGroup_1a4uy_3920",dR="_settingsItem_1a4uy_3926",uR="_settingLabelGroup_1a4uy_3932",mR="_settingLabel_1a4uy_3932",pR="_settingDescription_1a4uy_3944",fR="_settingInput_1a4uy_3951",hR="_codeBlockWrapper_1a4uy_3974",gR="_codeHeader_1a4uy_3983",yR="_codeHeaderActions_1a4uy_3994",kR="_codeLabel_1a4uy_4001",vR="_codeHeaderDescription_1a4uy_4009",SR="_mcpTokenCardBody_1a4uy_4017",wR="_mcpTokenFormGrid_1a4uy_4025",bR="_mcpTokenOutputWrap_1a4uy_4032",_R="_mcpTokenValueField_1a4uy_4039",CR="_mcpTokenValueText_1a4uy_4049",AR="_mcpTokenValueInput_1a4uy_4062",xR="_mcpTokenActionRow_1a4uy_4067",IR="_copyBtn_1a4uy_4090",TR="_copyBtnActive_1a4uy_4111",RR="_copyBtnNeutralActive_1a4uy_4117",NR="_headerDivider_1a4uy_4135",jR="_groupByContainer_1a4uy_4141",PR="_groupByLabel_1a4uy_4149",MR="_groupBySelect_1a4uy_4154",ER="_viewSwitcher_1a4uy_4176",DR="_selectWithIcon_1a4uy_4184",LR="_marginBottom16_1a4uy_4188",BR="_headerDraggable_1a4uy_4193",WR="_headerDragging_1a4uy_4197",FR="_filterSelectSort_1a4uy_4205",OR="_archiveRow_1a4uy_4209",$R="_taskScopeToggle_1a4uy_4215",UR="_taskScopeTabs_1a4uy_4223",zR="_taskScopeTab_1a4uy_4223",HR="_taskScopeTabActive_1a4uy_4256",GR="_taskToolbarAction_1a4uy_4268",VR="_overlayHighZ_1a4uy_4284",qR="_savedText_1a4uy_4294",KR="_shortcutInput_1a4uy_1574",ZR="_saveSettingsBtnWrapper_1a4uy_4302",YR="_marginBottom12_1a4uy_4306",JR="_exportRowGrid_1a4uy_4310",QR="_settingSubtitleCustom_1a4uy_4315",XR="_capitalize_1a4uy_4321",eN="_marginTop12_1a4uy_4325",tN="_marginTop16_1a4uy_4329",aN="_labelGroupFlex_1a4uy_4333",nN="_codeBlockWrapperCustom_1a4uy_4339",rN="_kanbanWrapper_1a4uy_4345",sN="_kanbanContainer_1a4uy_4353",oN="_kanbanTopScroll_1a4uy_4375",iN="_kanbanTopScrollSpacer_1a4uy_4384",cN="_kanbanColumn_1a4uy_4388",lN="_kanbanColumnSticky_1a4uy_4404",dN="_kanbanColumnCollapsed_1a4uy_4410",uN="_kanbanColumnPast_1a4uy_4415",mN="_kanbanColumnSelectedDay_1a4uy_4420",pN="_kanbanHeader_1a4uy_4427",fN="_kanbanCount_1a4uy_4437",hN="_kanbanHeaderDraggable_1a4uy_4457",gN="_kanbanHeaderPanning_1a4uy_4461",yN="_kanbanQuickAdd_1a4uy_4465",kN="_kanbanColorDot_1a4uy_4486",vN="_kanbanDroppable_1a4uy_4498",SN="_kanbanDroppableScroll_1a4uy_4507",wN="_kanbanEmpty_1a4uy_4517",bN="_kanbanCard_1a4uy_4527",_N="_kanbanCardWrapper_1a4uy_4537",CN="_taxonomyDropdownActive_1a4uy_4545",AN="_kanbanCardWrapperRaised_1a4uy_4549",xN="_kanbanCardTitle_1a4uy_4553",IN="_kanbanBadges_1a4uy_4557",TN="_kanbanBadge_1a4uy_4557",RN="_headerFlex_1a4uy_4573",NN="_marginBottom8_1a4uy_4580",jN="_marginBottom20_1a4uy_4584",PN="_configPanel_1a4uy_4588",MN="_configPanelLarge_1a4uy_4597",EN="_subLabelBlock_1a4uy_4601",DN="_subLabelBlock12_1a4uy_4608",LN="_flexBetween_1a4uy_4612",BN="_flexBetweenCenter_1a4uy_4619",WN="_deleteBtnSmall_1a4uy_4624",FN="_deleteBtnMedium_1a4uy_4630",ON="_trashIcon_1a4uy_4637",$N="_gridConfig_1a4uy_4641",UN="_flexColGap4_1a4uy_4648",zN="_flexColGap4Center_1a4uy_4654",HN="_flex1_1a4uy_4661",GN="_flexCol_1a4uy_4648",VN="_flexGrow1_1a4uy_4671",qN="_inputLabel_1a4uy_4675",KN="_inputLabelBlock_1a4uy_4679",ZN="_checkboxInput_1a4uy_4685",YN="_configDividerMargin_1a4uy_4691",JN="_configDividerMargin24_1a4uy_4696",QN="_pathListMargin_1a4uy_4701",XN="_cancelBtnRed_1a4uy_4705",ej="_code_1a4uy_1793",tj="_workflowList_1a4uy_4732",aj="_workflowActions_1a4uy_4740",nj="_textBtn_1a4uy_4749",rj="_workflowGrid_1a4uy_4763",sj="_checkboxLabel_1a4uy_4771",oj="_checkboxSmall_1a4uy_4785",ij="_docWorkspace_1a4uy_4804",cj="_docIndexPanel_1a4uy_4815",lj="_docWorkspaceTrayMode_1a4uy_4827",dj="_docViewerPanel_1a4uy_4827",uj="_docWorkspaceTrayOpen_1a4uy_4832",mj="_docTrayPanel_1a4uy_4836",pj="_docTrayPanelOpen_1a4uy_4860",fj="_docSpinning_1a4uy_4868",hj="_docSpin_1a4uy_4868",gj="_docViewerEmpty_1a4uy_4887",yj="_agentsModuleRoot_1a4uy_4902",kj="_agentsModuleWithTray_1a4uy_4914",vj="_agentsModuleTrayOpen_1a4uy_4918",Sj="_agentTrayPanel_1a4uy_4922",wj="_agentTrayPanelOpen_1a4uy_4945",bj="_agentTrayHeader_1a4uy_4953",_j="_agentTrayTitle_1a4uy_4968",Cj="_agentTrayContent_1a4uy_4980",Aj="_agentTrayContentInner_1a4uy_4988",xj="_agentsModuleContent_1a4uy_4992",Ij="_agentsModuleGroup_1a4uy_4997",Tj="_marginTop24_1a4uy_5001",Rj="_settingSubTitle_1a4uy_5005",Nj="_dangerBtn_1a4uy_5014",jj="_aiProfilesExplorer_1a4uy_5030",Pj="_aiProfilesListPane_1a4uy_5041",Mj="_aiProfilesList_1a4uy_5041",Ej="_aiProfilesSection_1a4uy_5060",Dj="_aiProfilesSectionHeader_1a4uy_5066",Lj="_aiProfileGroup_1a4uy_5074",Bj="_aiProfileGroupSelected_1a4uy_5097",Wj="_aiProfileGroupDuplicate_1a4uy_5106",Fj="_aiProfileGroupHeader_1a4uy_5111",Oj="_aiProfileGroupAvatar_1a4uy_5119",$j="_aiProfileGroupIdentity_1a4uy_5141",Uj="_aiProfileName_1a4uy_5150",zj="_aiProfileHandle_1a4uy_5158",Hj="_aiProfileRole_1a4uy_5159",Gj="_aiProfileSeatSummary_1a4uy_5170",Vj="_aiProfileSeatScopeIcon_1a4uy_5179",qj="_aiProfileSeatScopeIconDetail_1a4uy_5190",Kj="_aiProfileSeatScopeIconCloud_1a4uy_5195",Zj="_aiProfileSeatScopeIconLocal_1a4uy_5199",Yj="_aiProfileDuplicateBadge_1a4uy_5203",Jj="_aiProfileMergeSection_1a4uy_5215",Qj="_aiProfileMergeRow_1a4uy_5222",Xj="_aiProfileIdChip_1a4uy_5229",eP="_aiProfileKeepBadge_1a4uy_5241",tP="_aiProfileMergeActions_1a4uy_5255",aP="_aiProfileDetailPane_1a4uy_5262",nP="_aiProfileDetailCard_1a4uy_5268",rP="_aiProfileDetailHero_1a4uy_5280",sP="_aiProfileDetailIcon_1a4uy_5286",oP="_aiProfileDetailAvatar_1a4uy_5300",iP="_aiProfileDetailHeading_1a4uy_5304",cP="_aiProfileDetailTitleRow_1a4uy_5309",lP="_aiProfileDetailTitle_1a4uy_5309",dP="_aiProfileDetailMetaRow_1a4uy_5324",uP="_aiProfileDetailHandle_1a4uy_5332",mP="_aiProfileDetailRole_1a4uy_5337",pP="_aiProfileDetailLinkedCount_1a4uy_5344",fP="_aiProfileDetailDescription_1a4uy_5349",hP="_aiProfileSignatureColor_1a4uy_5356",gP="_aiProfileSignatureSwatch_1a4uy_5366",yP="_aiProfileDetailDataList_1a4uy_5376",kP="_aiProfileDetailDataGroup_1a4uy_5385",vP="_aiProfileDetailDateGroup_1a4uy_5392",SP="_aiProfileDetailDataRow_1a4uy_5397",wP="_aiProfileDetailDataLabel_1a4uy_5406",bP="_aiProfileDetailDataValue_1a4uy_5413",_P="_aiProfileStatusSelect_1a4uy_5419",CP="_aiProfileInstanceSection_1a4uy_5461",AP="_aiProfileInstanceSectionHeader_1a4uy_5467",xP="_aiProfileInstanceList_1a4uy_5477",IP="_aiProfileInstanceCard_1a4uy_5483",TP="_aiProfileIdFooter_1a4uy_5496",RP="_aiProfileIdFooterValue_1a4uy_5506",NP="_aiProfileDangerTextButton_1a4uy_5516",jP="_aiProfileInstanceTopRow_1a4uy_5548",PP="_aiProfileInstanceName_1a4uy_5555",MP="_aiProfileInstanceMeta_1a4uy_5562",EP="_aiProfileInlineError_1a4uy_5570",f={filterGlow:Mb,floatingButton:Eb,badge:Db,configBadge:Lb,configBadgeActive:Bb,configBadgeRevoked:Wb,configBadgeExpired:Fb,header:Ob,headerTitle:$b,brandIcon:Ub,brandHomeButton:zb,brandHomeStatic:Hb,brandCloudSuffix:Gb,projectSlash:Vb,projectName:qb,taskCountBadge:Kb,taskCountBadgeIcon:Zb,taskCountBadgeAlert:Yb,headerActions:Jb,sortDirectionBtn:Qb,sortDirectionBtnWidget:Xb,form:e_,topRow:t_,field:a_,labelRow:n_,label:r_,manageLink:s_,input:o_,select:i_,textarea:c_,taskIdInlineLink:l_,readOnly:d_,selectWithConfig:u_,configBtn:m_,configBtnActive:p_,hasPath:f_,pathIndicator:h_,formActions:g_,hasCancel:y_,submitBtn:k_,cancelBtn:v_,successMessage:S_,errorMessage:w_,successIcon:b_,spinner:__,spin:C_,boardRefreshIndicator:A_,destructiveBtn:x_,warningBtn:I_,viewTab:T_,deleteBtn:R_,loading:N_,emptyState:j_,taskList:P_,taskIdBadge:M_,taskIdBadgeLabel:E_,copiedId:D_,highlight:L_,modal:B_,priorityEmoji:W_,metaItem:F_,taskFormDateInput:O_,metaBadge:$_,complexityPill:U_,complexityDots:z_,dot:H_,dotFilled:G_,typePill:V_,type_bug:q_,type_feature:K_,type_chore:Z_,type_refactor:Y_,type_documentation:J_,type_research:Q_,"type_ui-ux":"_type_ui-ux_1a4uy_803",type_security:X_,approachPill:eC,approach_evaluate:tC,approach_collaborate:aC,approach_plan:nC,approachActive:rC,statusActionsGroup:sC,statusActionsGroupCompact:oC,statusSelectWrap:iC,statusTaxonomyDropdownWrap:cC,statusTaxonomyDropdown:lC,statusTaxonomyDropdownCompact:dC,statusTaxonomyDropdownIconOnly:uC,taxonomyDropdownButton:mC,taxonomyDropdownButtonContent:pC,statusTaxonomyDropdownIconOnlyPanel:fC,actionBtn:hC,startWorkBtn:gC,workingBtn:yC,pulse:kC,reviewBtn:vC,reviewActiveBtn:SC,reviewPill:wC,archiveTaskBtn:bC,bulkArchiveBtn:_C,bulkDeleteBtn:CC,completeBtn:AC,completeActiveBtn:xC,deleteActiveBtn:IC,disabledBtn:TC,archiveList:RC,archiveHeader:NC,settingsTab:jC,settingsTabMcpOnly:PC,settingsTabs:MC,settingsLayout:EC,settingsLayoutMcpOnly:DC,settingsSidebar:LC,settingsSidebarHeader:BC,settingsSidebarNav:WC,settingsSidebarBtn:FC,settingsSidebarBtnActive:OC,settingsSidebarGroup:$C,settingsSidebarGroupBtn:UC,settingsSidebarGroupLabel:zC,settingsSidebarGroupChevron:HC,settingsSidebarSubnav:GC,settingsSidebarSubBtn:VC,appScrollbar:qC,settingsTabBtn:KC,settingsTabBtnActive:ZC,settingsContent:YC,mcpRegistrationHint:JC,mcpRegistrationPrompt:QC,mcpAuthRequiredCard:XC,mcpAuthRequiredIcon:eA,mcpAuthRequiredBody:tA,mcpAuthRequiredActions:aA,settingsToast:nA,settingsToastSuccess:rA,settingsToastError:sA,inputWithPrefix:oA,pathHint:iA,settingGroup:cA,settingTitle:lA,settingTitleRow:dA,settingTitleActionBtn:uA,themeOptions:mA,buttonGrid:pA,themeBtn:fA,activeTheme:hA,pathInputGroup:gA,saveSettingsBtn:yA,shortcutInputWrapper:kA,inputIcon:vA,settingHelper:SA,browseBtn:wA,inlineCategoryManager:bA,categoryManager:_A,categoryList:CA,categoryChip:AA,categoryChipLabel:xA,chipActionBtn:IA,removeCategoryBtn:TA,addCategoryForm:RA,addCategoryBtn:NA,filesList:jA,helpLink:PA,inlineCode:MA,codeBlock:EA,taskChildrenSummaryBadges:DA,taskChildrenProgressBar:LA,taskChildrenProgressBarSegmentDone:BA,taskChildrenProgressBarSegmentReview:WA,taskChildrenProgressBarSegmentInProgress:FA,taskChildrenProgressBarSegmentBlocked:OA,taskChildrenProgressText:$A,taskChildUnlinkBtn:UA,aboutText:zA,versionInfo:HA,filterBar:GA,kanbanHintText:VA,searchContainer:qA,searchIcon:KA,searchInput:ZA,searchActive:YA,searchCount:JA,clearSearchBtn:QA,filterRow:XA,sortLabel:ex,archiveToggle:tx,filterContainer:ax,filterButton:nx,filterActive:rx,filterDropdown:sx,filterOption:ox,filterDivider:ix,filterSelect:cx,filterToggleBtn:lx,inProgressToggle:dx,activeInProgress:ux,activeFilter:mx,resetFiltersBtn:px,categoryChip_disabled:fx,categoryVisibilityToggle:hx,editCategoryInput:gx,categoryChipActionBtn:yx,categoryChipActionBtn_active:kx,categoryGroup:vx,categoryHeader:Sx,categoryTitle:wx,categoryCount:bx,categoryItems:_x,priorityItem_low:Cx,priorityItem_medium:Ax,priorityItem_high:xx,priorityItem_critical:Ix,priorityPill_low:Tx,priorityPill_medium:Rx,priorityPill_high:Nx,priorityPill_critical:jx,selectPriority_low:Px,selectPriority_medium:Mx,selectPriority_high:Ex,selectPriority_critical:Dx,"critical-glow":"_critical-glow_1a4uy_1",levelSelect:Lx,levelOption:Bx,levelOptionFilled:Wx,levelOption_priority_low:Fx,levelOption_priority_medium:Ox,levelOption_priority_high:$x,levelOption_priority_critical:Ux,levelOption_complexity_tiny:zx,levelOption_complexity_low:Hx,levelOption_complexity_medium:Gx,levelOption_complexity_high:Vx,levelOption_complexity_epic:qx,levelOptionActive:Kx,levelOptionSelected:Zx,levelLabel:Yx,fadeIn:Jx,closeConfigBtn:Qx,configItem:Xx,settingsLabel:eI,settingsHint:tI,pathList:aI,pathChip:nI,pathValid:rI,pathInvalid:sI,pathValidIcon:oI,pathInvalidIcon:iI,pathText:cI,removePathBtn:lI,pathCount:dI,specialistSection:uI,toggleHeading:mI,dropdownList:pI,specialistBadge:fI,iconGrid:hI,iconPickerBtn:gI,iconPickerBtnActive:yI,categorySubConfig:kI,colorPickerRow:vI,colorPickerGrid:SI,colorSwatch:wI,colorSwatchActive:bI,categoryChipIcon:_I,fieldIconWrapper:CI,fieldIcon:AI,field_dynamic:xI,fieldIcon_dynamic:II,categoryTitleIcon:TI,editActionsHeader:RI,editActionsGroup:NI,urlInputGroup:jI,iconBtn:PI,stickyActionHeader:MI,taskHierarchyHeader:EI,taskHierarchyBadgeRow:DI,taskHierarchyDivider:LI,taskHierarchySegment:BI,taskHierarchyMeta:WI,taskHierarchyActionBtn:FI,taskHierarchyEditor:OI,taskHierarchyInput:$I,taskSaveStatus:UI,taskSaveStatusCenter:zI,taskSaveStatusError:HI,headerSuccessFeedback:GI,slideInUp:VI,successCheck:qI,scaleIn:KI,primaryUpdateBtn:ZI,secondaryHeaderBtn:YI,secondaryHeaderBtnDestructive:JI,commentSection:QI,attachmentCaptureContainer:XI,capturePrompt:eT,previewContainer:tT,previewHeader:aT,attachmentCapturePreview:nT,actions:rT,primaryButton:sT,secondaryButton:oT,iconButton:iT,attachmentGrid:cT,attachmentCard:lT,attachmentPreviewContainer:dT,contextFileLink:uT,attachmentActions:mT,attachmentActionBtn:pT,attachmentCaptionInput:fT,hiddenInput:hT,contextUploadPanel:gT,contextUploadActions:yT,contextDropzone:kT,contextDropzoneActive:vT,contextDropzonePulse:ST,contextLinkRow:wT,contextNotice:bT,documentAttachmentList:_T,documentAttachmentItem:CT,documentAttachmentRow:AT,documentAttachmentLink:xT,documentAttachmentMain:IT,documentAttachmentText:TT,documentAttachmentIcon:RT,documentAttachmentName:NT,documentAttachmentType:jT,documentAttachmentActions:PT,documentAttachmentActionBtn:MT,documentAttachmentCaptionInput:ET,brokenImage:DT,brokenImagePlaceholder:LT,regionOverlay:BT,selectionBox:WT,exportRow:FT,exportItem:OT,taxonomyDrillDown:$T,drillDownList:UT,drillDownSection:zT,drillDownSectionHeader:HT,drillDownSectionTitle:GT,drillDownItem:VT,drillDownItemDimmed:qT,drillDownItemActive:KT,drillDownItemInfo:ZT,drillDownItemText:YT,drillDownItemLabel:JT,drillDownItemSubtext:QT,addTaxonomyBtnSmall:XT,taxonomyDetailView:eR,slideIn:tR,detailHeader:aR,detailTitle:nR,detailContent:rR,createOverlay:sR,createDialog:oR,zoomIn:iR,dialogActions:cR,settingsGroup:lR,settingsItem:dR,settingLabelGroup:uR,settingLabel:mR,settingDescription:pR,settingInput:fR,codeBlockWrapper:hR,codeHeader:gR,codeHeaderActions:yR,codeLabel:kR,codeHeaderDescription:vR,mcpTokenCardBody:SR,mcpTokenFormGrid:wR,mcpTokenOutputWrap:bR,mcpTokenValueField:_R,mcpTokenValueText:CR,mcpTokenValueInput:AR,mcpTokenActionRow:xR,copyBtn:IR,copyBtnActive:TR,copyBtnNeutralActive:RR,headerDivider:NR,groupByContainer:jR,groupByLabel:PR,groupBySelect:MR,viewSwitcher:ER,selectWithIcon:DR,marginBottom16:LR,headerDraggable:BR,headerDragging:WR,filterSelectSort:FR,archiveRow:OR,taskScopeToggle:$R,taskScopeTabs:UR,taskScopeTab:zR,taskScopeTabActive:HR,taskToolbarAction:GR,overlayHighZ:VR,savedText:qR,shortcutInput:KR,saveSettingsBtnWrapper:ZR,marginBottom12:YR,exportRowGrid:JR,settingSubtitleCustom:QR,capitalize:XR,marginTop12:eN,marginTop16:tN,labelGroupFlex:aN,codeBlockWrapperCustom:nN,kanbanWrapper:rN,kanbanContainer:sN,kanbanTopScroll:oN,kanbanTopScrollSpacer:iN,kanbanColumn:cN,kanbanColumnSticky:lN,kanbanColumnCollapsed:dN,kanbanColumnPast:uN,kanbanColumnSelectedDay:mN,kanbanHeader:pN,kanbanCount:fN,kanbanHeaderDraggable:hN,kanbanHeaderPanning:gN,kanbanQuickAdd:yN,kanbanColorDot:kN,kanbanDroppable:vN,kanbanDroppableScroll:SN,kanbanEmpty:wN,kanbanCard:bN,kanbanCardWrapper:_N,taxonomyDropdownActive:CN,kanbanCardWrapperRaised:AN,kanbanCardTitle:xN,kanbanBadges:IN,kanbanBadge:TN,headerFlex:RN,marginBottom8:NN,marginBottom20:jN,configPanel:PN,configPanelLarge:MN,subLabelBlock:EN,subLabelBlock12:DN,flexBetween:LN,flexBetweenCenter:BN,deleteBtnSmall:WN,deleteBtnMedium:FN,trashIcon:ON,gridConfig:$N,flexColGap4:UN,flexColGap4Center:zN,flex1:HN,flexCol:GN,flexGrow1:VN,inputLabel:qN,inputLabelBlock:KN,checkboxInput:ZN,configDividerMargin:YN,configDividerMargin24:JN,pathListMargin:QN,cancelBtnRed:XN,code:ej,workflowList:tj,workflowActions:aj,textBtn:nj,workflowGrid:rj,checkboxLabel:sj,checkboxSmall:oj,docWorkspace:ij,docIndexPanel:cj,docWorkspaceTrayMode:lj,docViewerPanel:dj,docWorkspaceTrayOpen:uj,docTrayPanel:mj,docTrayPanelOpen:pj,docSpinning:fj,docSpin:hj,docViewerEmpty:gj,agentsModuleRoot:yj,agentsModuleWithTray:kj,agentsModuleTrayOpen:vj,agentTrayPanel:Sj,agentTrayPanelOpen:wj,agentTrayHeader:bj,agentTrayTitle:_j,agentTrayContent:Cj,agentTrayContentInner:Aj,agentsModuleContent:xj,agentsModuleGroup:Ij,marginTop24:Tj,settingSubTitle:Rj,dangerBtn:Nj,aiProfilesExplorer:jj,aiProfilesListPane:Pj,aiProfilesList:Mj,aiProfilesSection:Ej,aiProfilesSectionHeader:Dj,aiProfileGroup:Lj,aiProfileGroupSelected:Bj,aiProfileGroupDuplicate:Wj,aiProfileGroupHeader:Fj,aiProfileGroupAvatar:Oj,aiProfileGroupIdentity:$j,aiProfileName:Uj,aiProfileHandle:zj,aiProfileRole:Hj,aiProfileSeatSummary:Gj,aiProfileSeatScopeIcon:Vj,aiProfileSeatScopeIconDetail:qj,aiProfileSeatScopeIconCloud:Kj,aiProfileSeatScopeIconLocal:Zj,aiProfileDuplicateBadge:Yj,aiProfileMergeSection:Jj,aiProfileMergeRow:Qj,aiProfileIdChip:Xj,aiProfileKeepBadge:eP,aiProfileMergeActions:tP,aiProfileDetailPane:aP,aiProfileDetailCard:nP,aiProfileDetailHero:rP,aiProfileDetailIcon:sP,aiProfileDetailAvatar:oP,aiProfileDetailHeading:iP,aiProfileDetailTitleRow:cP,aiProfileDetailTitle:lP,aiProfileDetailMetaRow:dP,aiProfileDetailHandle:uP,aiProfileDetailRole:mP,aiProfileDetailLinkedCount:pP,aiProfileDetailDescription:fP,aiProfileSignatureColor:hP,aiProfileSignatureSwatch:gP,aiProfileDetailDataList:yP,aiProfileDetailDataGroup:kP,aiProfileDetailDateGroup:vP,aiProfileDetailDataRow:SP,aiProfileDetailDataLabel:wP,aiProfileDetailDataValue:bP,aiProfileStatusSelect:_P,aiProfileInstanceSection:CP,aiProfileInstanceSectionHeader:AP,aiProfileInstanceList:xP,aiProfileInstanceCard:IP,aiProfileIdFooter:TP,aiProfileIdFooterValue:RP,aiProfileDangerTextButton:NP,aiProfileInstanceTopRow:jP,aiProfileInstanceName:PP,aiProfileInstanceMeta:MP,aiProfileInlineError:EP},DP="_standaloneWrapper_1r0om_1",LP="_standalonePage_1r0om_11",BP="_standaloneHeader_1r0om_21",WP="_standaloneTitle_1r0om_27",FP="_standaloneContent_1r0om_31",OP="_workspaceToolRail_1r0om_37",$P="_workspaceToolRailMain_1r0om_54",UP="_workspaceToolRailBottom_1r0om_62",zP="_workspaceToolRailDivider_1r0om_72",HP="_workspaceToolButton_1r0om_79",GP="_workspaceToolButtonActive_1r0om_99",VP="_workspaceToolButtonDisabled_1r0om_106",qP="_headerTitleWidget_1r0om_137",Xt={standaloneWrapper:DP,standalonePage:LP,standaloneHeader:BP,standaloneTitle:WP,standaloneContent:FP,workspaceToolRail:OP,workspaceToolRailMain:$P,workspaceToolRailBottom:UP,workspaceToolRailDivider:zP,workspaceToolButton:HP,workspaceToolButtonActive:GP,workspaceToolButtonDisabled:VP,headerTitleWidget:qP},KP="_overlay_11v7l_1",ZP="_browser_11v7l_16",YP="_header_11v7l_27",JP="_pathInfo_11v7l_36",QP="_actions_11v7l_52",XP="_list_11v7l_57",e0="_item_11v7l_63",t0="_itemCurrent_11v7l_80",a0="_itemFile_11v7l_86",n0="_empty_11v7l_90",ja={overlay:KP,browser:ZP,header:YP,pathInfo:JP,actions:QP,list:XP,item:e0,itemCurrent:t0,itemFile:a0,empty:n0},r0="_overlay_1hk7m_2",s0="_overlayHighZ_1hk7m_15",o0="_modal_1hk7m_20",i0="_draggableModal_1hk7m_46",c0="_draggableHeader_1hk7m_53",l0="_headerActions_1hk7m_61",d0="_modalContent_1hk7m_69",u0="_form_1hk7m_80",m0="_formActions_1hk7m_91",p0="_modalFooter_1hk7m_98",f0="_modalSizeSm_1hk7m_104",h0="_modalSizeMd_1hk7m_108",g0="_modalSizeMdWide_1hk7m_112",y0="_modalSizeLg_1hk7m_116",k0="_modalSizeXl_1hk7m_120",v0="_modalSizeFull_1hk7m_124",S0="_settingsViewModal_1hk7m_129",w0="_unsavedOverlay_1hk7m_148",b0="_unsavedModal_1hk7m_153",_0="_unsavedHeader_1hk7m_159",C0="_unsavedTitle_1hk7m_164",A0="_unsavedContent_1hk7m_168",x0="_unsavedText_1hk7m_172",I0="_unsavedActions_1hk7m_177",xt={overlay:r0,overlayHighZ:s0,modal:o0,draggableModal:i0,draggableHeader:c0,headerActions:l0,modalContent:d0,form:u0,formActions:m0,modalFooter:p0,modalSizeSm:f0,modalSizeMd:h0,modalSizeMdWide:g0,modalSizeLg:y0,modalSizeXl:k0,modalSizeFull:v0,settingsViewModal:S0,unsavedOverlay:w0,unsavedModal:b0,unsavedHeader:_0,unsavedTitle:C0,unsavedContent:A0,unsavedText:x0,unsavedActions:I0};function T0(e){const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),n={Category:"Categories",Priority:"Priorities",Status:"Statuses"};return n[t]?n[t]:`${e}s`}function Hi({label:e,options:t,selected:n,onChange:s,variant:o="label",containerStyle:l}){const[i,d]=r.useState(!1),m=r.useRef(null);r.useEffect(()=>{const _=I=>{m.current&&!m.current.contains(I.target)&&d(!1)};return document.addEventListener("mousedown",_),()=>document.removeEventListener("mousedown",_)},[]);const y=_=>{n.includes(_)?s(n.filter(I=>I!==_)):s([...n,_])},k=t.length>0&&t.every(_=>{const I=o==="label"?_.label:_.value;return n.includes(I)}),S=!t.some(_=>{const I=o==="label"?_.label:_.value;return n.includes(I)}),h=()=>{s(k?[]:t.map(_=>o==="label"?_.label:_.value))},g=t.filter(_=>{const I=o==="label"?_.label:_.value;return n.includes(I)}).length,v=T0(e),A=k?`All ${v}`:S?`No ${v}`:g===1?`1 ${e}`:`${g} ${v}`;return a.jsxs("div",{className:f.filterContainer,ref:m,style:l,children:[a.jsxs("button",{className:`${f.filterButton} ${k?"":f.filterActive}`,onClick:()=>d(!i),title:`Filter by ${e}`,children:[a.jsx("span",{children:A}),a.jsx(el,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&a.jsxs("div",{className:`${f.filterDropdown} ${f.appScrollbar} tf-scrollbar`,children:[a.jsxs("div",{className:f.filterOption,onClick:h,children:[a.jsx("input",{type:"checkbox",checked:k,onChange:()=>{}}),a.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),a.jsx("div",{className:f.filterDivider}),t.map(_=>{const I=o==="label"?_.label:_.value,W=n.includes(I);return a.jsxs("div",{className:f.filterOption,onClick:()=>y(I),children:[a.jsx("input",{type:"checkbox",checked:W,onChange:()=>{}}),a.jsx("span",{children:_.label})]},_.value)})]})]})}const R0="_taskItem_zvr7q_1",N0="_compressed_zvr7q_20",j0="_taskHeader_zvr7q_25",P0="_taskReferenceCluster_zvr7q_30",M0="_taskMeta_zvr7q_34",E0="_taskTitle_zvr7q_40",D0="_taskItemRecentlyChanged_zvr7q_67",L0="_assigneeAvatarImage_zvr7q_107",B0="_assigneeAvatarIndicator_zvr7q_115",W0="_assigneeAvatarEmpty_zvr7q_137",F0="_inProgress_zvr7q_164",O0="_onHold_zvr7q_175",$0="_readyForReview_zvr7q_186",U0="_completed_zvr7q_197",z0="_cancelled_zvr7q_208",H0="_archived_zvr7q_219",G0="_taskContent_zvr7q_229",V0="_kanbanCardOverlay_zvr7q_238",q0="_taskReferenceText_zvr7q_277",K0="_taskReferenceDivider_zvr7q_286",Z0="_taskActions_zvr7q_293",Y0="_taskMetaCompact_zvr7q_318",J0="_taskMetaRow_zvr7q_325",Q0="_taskMetaBadgeGroup_zvr7q_333",X0="_taskDescription_zvr7q_339",e1="_taskLatestComment_zvr7q_398",t1="_taskCancellationReason_zvr7q_419",a1="_archiveBadge_zvr7q_573",n1="_attachmentThumbnails_zvr7q_578",r1="_attachmentImageRow_zvr7q_585",s1="_attachmentDocumentList_zvr7q_592",o1="_attachmentThumbnail_zvr7q_578",i1="_contextDocThumb_zvr7q_625",c1="_contextDocMain_zvr7q_651",l1="_contextDocText_zvr7q_658",d1="_contextDocIcon_zvr7q_666",u1="_contextDocName_zvr7q_677",m1="_contextDocType_zvr7q_687",p1="_taskSpecialists_zvr7q_699",f1="_taxonomiesList_zvr7q_708",Yt={taskItem:R0,compressed:N0,taskHeader:j0,taskReferenceCluster:P0,taskMeta:M0,taskTitle:E0,taskItemRecentlyChanged:D0,assigneeAvatarImage:L0,assigneeAvatarIndicator:B0,assigneeAvatarEmpty:W0,inProgress:F0,onHold:O0,readyForReview:$0,completed:U0,cancelled:z0,archived:H0,taskContent:G0,kanbanCardOverlay:V0,taskReferenceText:q0,taskReferenceDivider:K0,taskActions:Z0,taskMetaCompact:Y0,taskMetaRow:J0,taskMetaBadgeGroup:Q0,taskDescription:X0,taskLatestComment:e1,taskCancellationReason:t1,archiveBadge:a1,attachmentThumbnails:n1,attachmentImageRow:r1,attachmentDocumentList:s1,attachmentThumbnail:o1,contextDocThumb:i1,contextDocMain:c1,contextDocText:l1,contextDocIcon:d1,contextDocName:u1,contextDocType:m1,taskSpecialists:p1,taxonomiesList:f1},ny=({children:e,className:t,onTaskIdClick:n})=>{if(!e)return null;const s=i=>We.Children.toArray(i).some(m=>We.isValidElement(m)?String(m.props?.className||"").includes("task-list-item"):!1),o=/\b(task-\d{10,}-[a-z0-9]+)\b/gi,l=i=>{if(!n)return i;if(typeof i=="string"){const y=Array.from(i.matchAll(o));if(!y.length)return i;const k=[];let S=0;for(let h=0;h<y.length;h+=1){const g=y[h],v=g[1],A=g.index??-1;A<S||(A>S&&k.push(i.slice(S,A)),k.push(a.jsx("button",{type:"button",className:f.taskIdInlineLink,onClick:_=>{_.preventDefault(),_.stopPropagation(),n(v)},children:v},`${v}-${A}-${h}`)),S=A+v.length)}return S<i.length&&k.push(i.slice(S)),k}if(Array.isArray(i))return i.map(l);if(!We.isValidElement(i))return i;const d=typeof i.type=="string"?i.type:"";if(d==="code"||d==="pre"||d==="a")return i;const m=i.props?.children;return m===void 0?i:We.cloneElement(i,{},We.Children.map(m,l))};return a.jsx("div",{className:t,children:a.jsx(Zk,{remarkPlugins:[Yk,Jk],components:{p:({children:i})=>a.jsx("p",{children:l(i)}),ul:({children:i})=>a.jsx("ul",{style:s(i)?{paddingLeft:0}:void 0,children:i}),li:({children:i,className:d})=>{const m=String(d||"").includes("task-list-item");return a.jsx("li",{className:d,style:m?{listStyle:"none"}:void 0,children:l(i)})},input:({type:i,checked:d})=>i!=="checkbox"?a.jsx("input",{type:i,checked:d,readOnly:!0}):a.jsx("input",{type:"checkbox",checked:!!d,readOnly:!0,style:{cursor:"default",marginRight:8}}),code:({children:i,className:d,...m})=>{const y=String(i||"").replace(/\n$/,"");return/language-(\w+)/.test(d||"")||y.includes(`
3
- `)?a.jsx("pre",{className:f.codeBlock,children:a.jsx("code",{className:d,...m,children:y})}):a.jsx("code",{className:f.inlineCode,...m,children:y})}},children:e})})};function ry({label:e,title:t,ariaLabel:n,copied:s=!1,disabled:o=!1,className:l="",onClick:i,children:d}){return a.jsxs("button",{type:"button",className:`${f.taskIdBadge} ${s?f.copiedId:""} ${l}`.trim(),onClick:i,disabled:o,title:t,"aria-label":n,children:[s?a.jsx(Io,{size:13}):a.jsx(ag,{size:13}),a.jsx("span",{className:f.taskIdBadgeLabel,children:d??e})]})}function Zu({copied:e,disabled:t=!1,label:n,onClick:s,title:o="Copy task reference",ariaLabel:l,className:i=""}){return a.jsx(ry,{copied:e,disabled:t,label:"",onClick:s,title:o,ariaLabel:l,className:i,children:n})}const h1=(e,t=10)=>{const n=lm[e?.toLowerCase()]||{icon:"FileCode"},s=ks[n.icon]||Ck;return a.jsx(s,{size:t})},Ou=(e,t)=>{if(!e)return null;const n=t.trim();if(!n)return e;const o=Am(n)?.match(/^(lt|t)-(\d+)$/),l=o?`${o[1]==="lt"?"l\\s*t":"t"}\\s*(?:-|\\s)?\\s*${o[2]}`:n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^${l}$`,"i"),d=e.split(new RegExp(`(${l})`,"gi"));return a.jsx(a.Fragment,{children:d.map((m,y)=>i.test(m)?a.jsx("mark",{className:f.highlight,children:m},y):m)})};function kd(e){return e.trim().replace(/\\/g,"/")}function sy(e){return e.split("?")[0].split("#")[0]}function Im(e){return typeof e=="string"?e:String(e.path||"").trim()}function oy(e){const n=sy(kd(e)).match(/\/api\/taskforce\/documents\/([^/]+)\/content$/i);if(!n?.[1])return null;try{return decodeURIComponent(n[1]).trim()||null}catch{return n[1].trim()||null}}function iy(e){if(!e.includes("/api/taskforce/context-link?path="))return null;try{const n=new URL(e,window.location.origin).searchParams.get("path");return n?kd(n):null}catch{return null}}function g1(e,t){const n=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(n)return kd(n);const s=Im(e),o=iy(s);return o?kd(o):null}function y1(e,t){const n=String(typeof e=="string"?"":e.assetId||"").trim();if(n)return n;const s=Im(e);return oy(s)}function k1(e,t){const n=Im(e);return oy(n)?!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(),iy(n)||"",n].some(o=>{if(!o)return!1;const l=sy(kd(o)).toLowerCase();return l.endsWith(".md")||l.endsWith(".markdown")})}function v1(e,t){const n=Im(e),s=g1(e,t);if(!s||!k1(e,s))return!1;const o=y1(e),l=new CustomEvent("taskforce:open-markdown-document",{detail:{path:n,fsPath:s,...o?{assetId:o}:{},...typeof e!="string"&&e.taskId?{taskId:e.taskId}:{}},cancelable:!0});return!window.dispatchEvent(l)}const S1="I-";function cy(e){return bm(S1,e)}function w1(e){return e.trim().replace(/\\/g,"/")}function ly(e){return typeof e=="string"?e:String(e.path||"").trim()}function b1(e){return/\.(png|jpe?g|webp)(\?|#|$)/i.test(e)}function _1(e){return typeof e=="string"?w1(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function C1(e,t){if(typeof e=="string")return!1;const n=String(e.assetId||"").trim(),s=ly(e);return!!(n&&s&&b1(s))}function A1(e,t){if(!C1(e))return!1;const n=e,s=String(t?.taskId||n.taskId||"").trim(),o=String(t?.taskReferenceLabel||"").trim(),l=String(n.assetId||"").trim(),i=cy(n),d=ly(e),m=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...s?{taskId:s}:{},...o?{taskReferenceLabel:o}:{},assetId:l,...i?{imageReferenceLabel:i}:{},path:d,displayName:_1(e)},cancelable:!0});return!window.dispatchEvent(m)}function bh(e,t){if(!e)return null;const n=String(e.taskId||"").trim(),s=String(e.assetId||"").trim(),o=String(e.path||"").trim(),l=String(e.displayName||"").trim()||"Image attachment";if(!s||!o)return null;const i=String(e.taskReferenceLabel||"").trim(),d=n?t.find(y=>y.id===n):void 0,m=n?i||Yi(d)||n:void 0;return{...n?{taskId:n}:{},...m?{taskReferenceLabel:m}:{},assetId:s,imageReferenceLabel:String(e.imageReferenceLabel||"").trim()||void 0,path:o,displayName:l}}function mm(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t)return"";const n=t.split("/").filter(Boolean);return n[n.length-1]||""}function gf(e){const t=String(e||"").trim(),n=t.lastIndexOf(".");return n<=0?{stem:t,ext:""}:{stem:t.slice(0,n),ext:t.slice(n)}}function dy(e,t){const n=String(e||"").trim(),s=String(t||"").trim();return n?s&&n.startsWith(`${s}-`)?n.slice(s.length+1):n.replace(/^asset-[a-z0-9-]+-/i,""):""}function x1(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function _h(e,t){const{stem:n,ext:s}=gf(mm(e)),o=dy(n,t),l=x1(o||n);return l?`${l}${s}`:mm(e)||"Untitled document"}function Sp(e,t){const n=String(e||"").trim();if(!n)return!0;const s=mm(n),{stem:o}=gf(s),l=String(t||"").trim();if(l&&o.toLowerCase()===l.toLowerCase())return!0;const i=dy(o,t);return i?i!==o:!0}function I1(e){const t=String(e.logicalName||"").trim();if(t&&!Sp(t,e.assetId))return t;const n=String(e.displayName||"").trim();if(n&&!Sp(n,e.assetId))return n;const s=String(e.title||"").trim();if(s&&!Sp(s,e.assetId))return s;const o=String(e.originalFilename||"").trim();if(o)return _h(o,e.assetId);const l=String(e.fsPath||"").trim();return l?_h(l,e.assetId):"Untitled document"}function T1(e){return I1(e)}function R1(e){const t=T1(e),n=String(e.originalFilename||e.fsPath||"").trim(),s=gf(mm(n)).ext;return s?t.toLowerCase().endsWith(s.toLowerCase())?t:`${t}${s}`:t}const N1="_taxonomyDropdown_tt12a_1",j1="_taxonomyDropdownActive_tt12a_6",P1="_taxonomyDropdownButton_tt12a_11",M1="_taxonomyDropdownOpen_tt12a_50",E1="_taxonomyDropdownButtonContent_tt12a_56",D1="_taxonomyDropdownIcon_tt12a_64",L1="_taxonomyDropdownLabel_tt12a_72",B1="_taxonomyDropdownChevron_tt12a_81",W1="_taxonomyDropdownChevronOpen_tt12a_87",F1="_taxonomyDropdownPanel_tt12a_91",O1="_taxonomyDropdownPanelPortal_tt12a_110",$1="_taxonomyDropdownOption_tt12a_129",U1="_taxonomyDropdownOptionHighlighted_tt12a_157",z1="_taxonomyDropdownOptionSelected_tt12a_163",ur={taxonomyDropdown:N1,taxonomyDropdownActive:j1,taxonomyDropdownButton:P1,taxonomyDropdownOpen:M1,taxonomyDropdownButtonContent:E1,taxonomyDropdownIcon:D1,taxonomyDropdownLabel:L1,taxonomyDropdownChevron:B1,taxonomyDropdownChevronOpen:W1,taxonomyDropdownPanel:F1,taxonomyDropdownPanelPortal:O1,taxonomyDropdownOption:$1,taxonomyDropdownOptionHighlighted:U1,taxonomyDropdownOptionSelected:z1};function rd({value:e,options:t,onChange:n,placeholder:s="Select...",required:o=!1,disabled:l=!1,className:i="",ariaLabelledBy:d,ariaLabel:m,hideSelectedLabel:y=!1,hideChevron:k=!1,panelClassName:S="",portalPanel:h=!1,panelMinWidth:g}){const[v,A]=r.useState(!1),[_,I]=r.useState(-1),[W,V]=r.useState({}),B=r.useRef(null),J=r.useRef(null),de=r.useRef(null),ve=t.find(X=>String(X.value)===String(e));r.useEffect(()=>{if(!v)return;const X=M=>{const F=M.target,ue=!!B.current?.contains(F),ge=!!de.current?.contains(F);!ue&&!ge&&(A(!1),I(-1))};return document.addEventListener("mousedown",X),()=>document.removeEventListener("mousedown",X)},[v]),r.useEffect(()=>{if(!v)I(-1);else{const X=t.findIndex(M=>String(M.value)===String(e));I(X>=0?X:0)}},[v,t,e]),r.useEffect(()=>{if(!v||!h)return;const X=()=>{const M=J.current;if(!M)return;const F=M.getBoundingClientRect(),ue=Math.max(g||0,F.width),ge=Math.max(8,F.right-ue),O=F.bottom;V({position:"fixed",top:O,left:ge,minWidth:ue,zIndex:2e3})};return X(),window.addEventListener("resize",X),window.addEventListener("scroll",X,!0),()=>{window.removeEventListener("resize",X),window.removeEventListener("scroll",X,!0)}},[v,h,g]);const re=()=>{l||A(!v)},x=X=>{n(X.value),A(!1),J.current?.focus()},K=X=>{if(!l)switch(X.key){case"Enter":case" ":X.preventDefault(),v?_>=0&&x(t[_]):A(!0);break;case"Escape":X.preventDefault(),A(!1),J.current?.focus();break;case"ArrowDown":X.preventDefault(),v?I(M=>M<t.length-1?M+1:0):A(!0);break;case"ArrowUp":X.preventDefault(),v?I(M=>M>0?M-1:t.length-1):A(!0);break;case"Home":X.preventDefault(),v&&I(0);break;case"End":X.preventDefault(),v&&I(t.length-1);break;case"Tab":A(!1);break}},me=(X,M)=>{const F=X.icon&&ks[X.icon]?ks[X.icon]:Ki,ue=X.color?jn(X.color):"var(--text-secondary)",ge=M?.hideLabel===!0;return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${ur.taxonomyDropdownIcon}`,style:{color:ue},children:a.jsx(F,{size:16})}),!ge&&a.jsx("span",{className:`taxonomyDropdownLabel ${ur.taxonomyDropdownLabel}`,children:X.label})]})},pe=v?a.jsx("div",{ref:de,id:`taxonomy-listbox-${s.replace(/\s+/g,"-")}`,className:`taxonomyDropdownPanel ${ur.taxonomyDropdownPanel} ${h?ur.taxonomyDropdownPanelPortal:""} ${S}`,role:"listbox","aria-labelledby":d,"aria-label":m,style:h?W:void 0,children:t.map((X,M)=>{const F=String(X.value)===String(e),ue=M===_;return a.jsx("div",{className:`taxonomyDropdownOption ${ur.taxonomyDropdownOption} ${F?`taxonomyDropdownOptionSelected ${ur.taxonomyDropdownOptionSelected}`:""} ${ue?`taxonomyDropdownOptionHighlighted ${ur.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":F,onClick:()=>x(X),onMouseEnter:()=>I(M),style:(()=>{const ge=X.color,O=jn(ge),_e=!O||O.startsWith("var("),Ne=_e?"#8b5cf6":O,se=_e?"20":"30",ce=_e?"05":"10";return{"--option-color":O||"var(--text-primary)","--option-border":`${Ne}${se}`,"--option-bg":`${Ne}${ce}`}})(),children:me(X)},String(X.value))})}):null;return a.jsxs("div",{ref:B,className:`taxonomyDropdown ${ur.taxonomyDropdown} ${v?`taxonomyDropdownActive ${ur.taxonomyDropdownActive}`:""} ${i}`,children:[a.jsxs("button",{ref:J,type:"button",className:`taxonomyDropdownButton ${ur.taxonomyDropdownButton} ${v?`taxonomyDropdownOpen ${ur.taxonomyDropdownOpen}`:""}`,onClick:re,onKeyDown:K,disabled:l,role:"combobox","aria-haspopup":"listbox","aria-expanded":v,"aria-controls":`taxonomy-listbox-${s.replace(/\s+/g,"-")}`,"aria-labelledby":d,"aria-label":m,style:(()=>{if(!ve)return{};const X=ve.color,M=jn(X),F=!M||M.startsWith("var("),ue=F?"#8b5cf6":M,ge=F?"30":"50",O=F?"05":"10";return{"--field-color":M||"var(--text-primary)","--field-border":`${ue}${ge}`,"--field-bg":`${ue}${O}`}})(),children:[a.jsx("span",{className:`taxonomyDropdownButtonContent ${ur.taxonomyDropdownButtonContent}`,children:ve?me(ve,{hideLabel:y}):a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${ur.taxonomyDropdownIcon}`,children:a.jsx(Ki,{size:16})}),a.jsx("span",{className:`taxonomyDropdownLabel ${ur.taxonomyDropdownLabel}`,children:s})]})}),!k&&a.jsx(el,{size:16,className:`taxonomyDropdownChevron ${ur.taxonomyDropdownChevron} ${v?`taxonomyDropdownChevronOpen ${ur.taxonomyDropdownChevronOpen}`:""}`})]}),h?pe?qi.createPortal(pe,document.body):null:pe]})}function uy({task:e,disabled:t=!1,actionDisabled:n,statusDisabled:s,compressed:o=!1,shortLabels:l=!1,showLabel:i=!0,onSetStatus:d,onArchiveTask:m,onUnarchiveTask:y,archiveActionMode:k="auto"}){const S=e?.status||"task",g=k==="auto"?!!e&&(S==="done"||S==="cancelled")?"archive":"none":k,v=n??t,A=s??t,_=qc.map(I=>({...I,label:(o||l)&&I.shortLabel||I.label}));return a.jsxs("div",{className:`${f.statusActionsGroup} ${o?f.statusActionsGroupCompact:""}`,children:[g==="archive"&&a.jsx("button",{type:"button",className:`${f.actionBtn} ${f.archiveTaskBtn}`,onClick:()=>e&&!v&&m?.(e),disabled:v,title:"Archive Now","aria-label":"Archive task",children:a.jsx(Ak,{size:o?12:16})}),g==="unarchive"&&a.jsx("button",{type:"button",className:`${f.actionBtn} ${f.archiveTaskBtn}`,onClick:()=>e&&!v&&y?.(e),disabled:v,title:"Unarchive task","aria-label":"Unarchive task",children:a.jsx(pd,{size:o?12:16})}),a.jsx("div",{className:`${f.statusSelectWrap} ${f.statusTaxonomyDropdownWrap}`,children:a.jsx(rd,{value:S,options:_,disabled:A||!e,ariaLabel:"Status",hideSelectedLabel:!i,hideChevron:!i,className:`${f.statusTaxonomyDropdown} ${o?f.statusTaxonomyDropdownCompact:""} ${i?"":f.statusTaxonomyDropdownIconOnly}`,panelClassName:i?"":f.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!i,panelMinWidth:i?void 0:144,onChange:I=>{e&&d?.(e,I)}})})]})}function H1(e,t,n){const s=typeof e=="string"?e.trim():"";if(!s||s.startsWith("data:")||s.startsWith("blob:"))return s;const o=Number(t),l=Number.isFinite(o)&&o>0?String(Math.floor(o)):typeof n=="string"&&n.trim().length>0?n.trim():"";if(!l)return s;const[i,d=""]=s.split("#"),m=i.includes("?")?"&":"?";return`${i}${m}v=${encodeURIComponent(l)}${d?`#${d}`:""}`}function G1(e){return e==="taskId"?"Task":e==="title"?"Title":e==="description"?"Description":e==="assignee"?"Assigned to":e==="ownerId"?"Owner":e==="status"?"Status":e==="scheduledDate"?"Scheduled date":e==="dueDate"?"Due date":e==="workstreamId"?"Workstream":e==="initiativeId"?"Initiative":e}function V1(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function Kn(e,t,n){const s=n?.(t,e);if(typeof s=="string")return s;if(e==null||e==="")return"none";if(Array.isArray(e)){const o=e.map(l=>Kn(l,t,n)).filter(Boolean);return o.length>0?o.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?V1(String(e)):String(e)}function Ch(e){return Array.isArray(e)?e.map((t,n)=>{const s=t&&typeof t=="object"?t:{},o=Number(s.order);return{id:String(s.id||"").trim(),title:String(s.title||"").trim(),isCompleted:!!s.isCompleted,order:Number.isFinite(o)?o:n}}):[]}function q1(e){const t=Ch(e?.from),n=Ch(e?.to),s=new Map(t.map(i=>[i.id||i.title,i])),o=new Map(n.map(i=>[i.id||i.title,i]));for(const[i,d]of o.entries()){const m=s.get(i);if(!m)return d.title?`Checklist item added: ${d.title}`:"Checklist item added";if(m.isCompleted!==d.isCompleted)return d.title?d.isCompleted?`Checklist item completed: ${d.title}`:`Checklist item reopened: ${d.title}`:d.isCompleted?"Checklist item completed":"Checklist item reopened"}for(const[i,d]of s.entries())if(!o.has(i))return d.title?`Checklist item removed: ${d.title}`:"Checklist item removed";return t.length===n.length&&t.every(i=>o.has(i.id||i.title))&&t.some((d,m)=>{const y=n[m];return(d.id||d.title)!==(y?.id||y?.title)})?"Checklist reordered":"Checklist updated"}function yf(e){return e.split(/[?#]/,1)[0]||e}function Ah(e){const t=yf(e).replace(/\\/g,"/"),n=t.split("/").filter(Boolean);return n[n.length-1]||t}function K1(e){return/\.(png|jpe?g|webp|gif)$/i.test(yf(e))}function Z1(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(yf(e))}function xh(e){return Array.isArray(e)?e.flatMap((t,n)=>{const s=t&&typeof t=="object"?t:null,o=typeof t=="string"?t:String(s?.path||"").trim(),l=String(s?.fsPath||"").trim(),i=String(s?.assetId||"").trim(),d=String(s?.referenceLabel||"").trim(),m=[s?.displayName,s?.originalFilename,s?.caption,d,l?Ah(l):"",o?Ah(o):""].map(h=>String(h||"").trim()).find(Boolean)||`Attachment ${n+1}`,y=i||l||o||`${m}:${n}`,k=[o,l,String(s?.originalFilename||"").trim(),String(s?.displayName||"").trim(),d].filter(Boolean),S=k.some(h=>K1(h))?"image":d.startsWith("D-")||k.some(h=>Z1(h))?"document":"attachment";return[{key:y,label:m,kind:S}]}):[]}function Y1(e,t){return t===1?e:e==="image"?"images":e==="document"?"documents":"attachments"}function $u(e){if(e.length===0)return"attachments";const t=e.reduce((s,o)=>(s[o.kind]+=1,s),{image:0,document:0,attachment:0}),n=Object.entries(t).filter(([,s])=>s>0).map(([s,o])=>o===1?s:`${o} ${Y1(s,o)}`);return n.length===1?n[0]:e.length<=3&&n.length<=2?n.join(" and "):`${e.length} attachments`}function Ui(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function J1(e){const t=xh(e?.from),n=xh(e?.to),s=new Map(t.map(m=>[m.key,m])),o=new Map(n.map(m=>[m.key,m])),l=n.filter(m=>!s.has(m.key)),i=t.filter(m=>!o.has(m.key));if(l.length===1&&i.length===0)return`${Ui(l[0].kind)} attached: ${l[0].label}`;if(i.length===1&&l.length===0)return`${Ui(i[0].kind)} removed: ${i[0].label}`;if(l.length>0&&i.length===0)return`${Ui($u(l))} attached`;if(i.length>0&&l.length===0)return`${Ui($u(i))} removed`;if(l.length===1&&i.length===1)return`${Ui(l[0].kind)} replaced: ${i[0].label} -> ${l[0].label}`;if(l.length>0||i.length>0)return`${Ui($u(l))} attached, ${$u(i)} removed`;const d=n.filter(m=>{const y=s.get(m.key);return y&&y.label!==m.label});if(d.length===1&&t.length===1&&n.length===1){const m=s.get(d[0].key);return`${Ui(d[0].kind)} renamed: ${m?.label||"Attachment"} -> ${d[0].label}`}return"Attachment details updated"}function pm(e,t,n){if(e==="checklistItems")return q1(t);if(e==="attachments")return J1(t);const s=G1(e);if(e==="title")return`${s}: updated`;if(e==="description"){const o=Kn(t?.from,e,n)!=="none",l=Kn(t?.to,e,n)!=="none";return!o&&l?`${s}: added`:o&&!l?`${s}: cleared`:`${s}: updated`}return`${s}: ${Kn(t?.from,e,n)} -> ${Kn(t?.to,e,n)}`}function my(e,t){const n=e.details?.changes||{},s=Object.keys(n);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"&&n.status)return`Status changed: ${Kn(n.status.from,"status",t)} -> ${Kn(n.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return n.scheduledDate?`Scheduled date changed: ${Kn(n.scheduledDate.from,"scheduledDate",t)} -> ${Kn(n.scheduledDate.to,"scheduledDate",t)}`:n.dueDate?`Due date changed: ${Kn(n.dueDate.from,"dueDate",t)} -> ${Kn(n.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&n.workstreamId)return`Workstream changed: ${Kn(n.workstreamId.from,"workstreamId",t)} -> ${Kn(n.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&n.initiativeId)return`Initiative changed: ${Kn(n.initiativeId.from,"initiativeId",t)} -> ${Kn(n.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return n.attachments?pm("attachments",n.attachments,t):"Attachments updated";if(s.length===1){const o=s[0],l=n[o];return pm(o,l,t)}return s.length>1?`${s.length} fields updated`:"Task updated"}function TO(e,t){if(e.taskId||e.entityType==="task")return my(e,t);const n=e.details?.changes||{},s=Object.keys(n),o=e.entityType==="initiative"?"Initiative":"Workstream",l=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"?l?`Task added: ${l}`:"Task added":e.action==="workstream-task-removed"?l?`Task removed: ${l}`:"Task removed":e.action==="workstream-relationship-changed"&&n.initiativeId?`Initiative changed: ${Kn(n.initiativeId.from,"initiativeId",t)} -> ${Kn(n.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&n.attachments?pm("attachments",n.attachments,t):s.length===1?pm(s[0],n[s[0]],t):s.length>1?`${s.length} fields updated`:e.action==="initiative-updated"||e.action==="workstream-updated"?`${o} updated`:`${o} activity updated`}function fm(e){const t=Date.parse(String(e.timestamp||""));return Number.isFinite(t)?t:null}function Q1(e){const t=e.details?.changes||{},n=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":n.length===1?n[0]:null}function RO(e){if(e.taskId||e.entityType==="task")return Q1(e);const t=e.details?.changes||{},n=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":n.length===1?n[0]:null}function py(e){const t=new Map,n=new Set,s=o=>{if(o.type==="event"&&o.event.action==="task-comment-added")return;const l=o.type==="comment"?`comment:${String(o.comment.id||o.id).replace(/^comment:/,"")}`:`event:${String(o.event.id||o.id).replace(/^event:/,"")}`;t.set(l,{...o,id:l}),o.type==="comment"&&n.add(String(o.comment.id||o.id).replace(/^comment:/,""))};return Array.isArray(e.activity)&&e.activity.forEach(s),Array.isArray(e.comments)&&e.comments.forEach(o=>{const l=String(o.id||"").trim();!l||n.has(l)||s({id:`comment:${l}`,type:"comment",timestamp:o.timestamp,comment:o})}),[...t.values()].sort((o,l)=>{const i=fm(o),d=fm(l);return i!==null&&d!==null&&i!==d?i-d:i!==null&&d===null?-1:i===null&&d!==null?1:String(o.id||"").localeCompare(String(l.id||""))})}function kf(e){return py(e)}function X1(e){const t=kf(e);return t.length===0?null:[...t].sort((n,s)=>{const o=fm(n),l=fm(s);return o!==null&&l!==null&&o!==l?l-o:o!==null&&l===null?-1:o===null&&l!==null?1:String(s.id||"").localeCompare(String(n.id||""))})[0]||null}function eM(e,t){return e?e.type==="comment"?e.comment.text:my(e.event,t):""}const{MessageSquare:tM,User:aM,Bot:nM,Gauge:rM,ClipboardList:sM,HelpCircle:oM,File:iM}=ks,cM=({task:e,searchQuery:t="",copiedId:n=null,taxonomies:s=[],types:o=[],priorities:l=[],categories:i=[],assigneeOptions:d=[],taskWorkstream:m=null,taskInitiative:y=null,isOverlay:k=!1,isArchived:S=!1,readOnlyMode:h=null,isRecentlyChanged:g=!1,onClick:v,onCopyId:A,onToggleInProgress:_,onToggleReview:I,onToggleComplete:W,onToggleCancel:V,onSetStatus:B,onArchiveTask:J,onUnarchive:de,onDelete:ve,deleteActionTitle:re,onOpenTaskById:x,compressed:K=!1,showStatusLabel:me=!0})=>{const pe=xg(e),X=pe.label||(pe.isProvisional?"Pending":""),M=pe.isProvisional,F=!!pe.label,ue=cm(m)||m?.id||"",ge=Xg(y)||y?.id||"",O=l.find(ne=>String(ne.value)===String(e.priority)),_e=O?O.label.toLowerCase().replace(/\s+/g,"-"):String(e.priority),Ne=i.find(ne=>ne.value===e.category||ne.label===e.category),se=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),ce=Number.isFinite(se)?Math.max(1,Math.min(5,Math.round(se))):3,Re={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},Pe={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},Ae=Re[ce],Ee=`var(--complexity-${Pe[ce]})`,$=Tv(e.priority,_e),T=!!f[`priorityItem_${$}`],b=sm(e.assignee),N=cd(e.assignee,d),D=We.useMemo(()=>{const ne=String(e.assignee||"").trim();return d.find(st=>String(st.value||"").trim()===ne)||null},[d,e.assignee]),te=b!=="unassigned"&&typeof D?.avatarUrl=="string"?H1(D.avatarUrl,D.avatarRevision,D.avatarUpdatedAt):"",P=b==="agent"?"var(--color-violet-500, #8b5cf6)":b==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)",H=We.useMemo(()=>X1(e),[e]),be=h||(e.isDeleted?"deleted":S?"archived":null),U=be!==null,ie=We.useCallback((ne,st)=>{const Ze=String(st||"").trim();if(Ze){if(ne==="assignee")return cd(Ze,d);if(ne==="workstreamId"&&Ze===m?.id)return ue||m.id;if(ne==="initiativeId"&&Ze===y?.id)return ge||y.id}},[d,ge,y,m,ue]),ee=We.useMemo(()=>eM(H,ie),[ie,H]),Q=We.useMemo(()=>kf(e).length,[e]),q=[Yt.taskItem,e.status==="on-hold"?Yt.onHold:"",e.status==="in-progress"?Yt.inProgress:"",e.status==="review"?Yt.readyForReview:"",e.status==="done"?Yt.completed:"",e.status==="cancelled"?Yt.cancelled:"",g?Yt.taskItemRecentlyChanged:"",f[`priorityItem_${$}`]||"",k?Yt.kanbanCardOverlay:"",S?Yt.archived:"",K?Yt.compressed:""].filter(Boolean).join(" "),Se=jn(O?.color),we=o.find(ne=>ne.value===e.type),Te=jn(we?.color)||rb(e.type),Me=ne=>{const st=typeof ne=="string"?ne:ne.path,Ze=typeof ne=="string"?"":(ne.fsPath||"").trim(),Pt=typeof ne=="string"?"":(ne.displayName||"").trim(),kt=typeof ne=="string"?"":(ne.originalFilename||"").trim(),It=typeof ne=="string"?"":(ne.caption||"").trim();return[Ze,kt,Pt,It,st].some(Mt=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(Mt))},nt=ne=>{const st=typeof ne=="string"?ne:ne.path,Ze=st.includes("/api/taskforce/documents/"),Pt=typeof ne=="string"?"":(ne.displayName||"").trim();if(Ze&&typeof ne!="string")return R1({displayName:ne.displayName,originalFilename:ne.originalFilename,fsPath:ne.fsPath,assetId:ne.assetId||null});const kt=typeof ne=="string"?"":(ne.caption||"").trim();if(kt)return kt;if(Pt)return Pt;const It=typeof ne=="string"?"":(ne.originalFilename||"").trim();return It||st.split("?")[0].split("#")[0].split("/").pop()||"Context file"},gt=ne=>{const st=typeof ne=="string"?ne:ne.path,Ze=typeof ne=="string"?"":(ne.fsPath||"").trim(),Pt=typeof ne=="string"?"":(ne.caption||"").trim(),kt=typeof ne=="string"?"":(ne.originalFilename||"").trim(),It=[];if(Ze&&It.push(Ze),kt&&It.push(kt),Pt&&It.push(Pt),st.includes("/api/taskforce/context-link?path="))try{const Mt=new URL(st,"http://localhost").searchParams.get("path");Mt&&It.push(Mt)}catch{}It.push(st);for(const Ft of It){const Be=Ft.split("?")[0].split("#")[0].split("/").pop()||"",et=Be.lastIndexOf(".");if(et<=0||et===Be.length-1)continue;const Ue=Be.slice(et+1);if(Ue)return Ue.slice(0,5).toUpperCase()}return"FILE"},lt={"--task-change-glow-color":Se||`var(--priority-${$})`,...Se?{borderLeftColor:Se,[`--priority-${$}`]:Se}:{},...!T&&Se?{borderLeft:`4px solid ${Se}`}:{}},St=ne=>ne.replace(/\b\w/g,st=>st.toUpperCase()),qe=wd(s,[e]),Ct=e.checklistItems||[],dt=Ct.length,Xe=dt>0?Ct.filter(ne=>ne.isCompleted).length:0,it=(ne,st)=>{ne.stopPropagation(),A?.(ne,st)};return a.jsxs("div",{className:q,onClick:()=>v?.(e),style:lt,"data-task-card":"true",children:[a.jsxs("div",{className:Yt.taskHeader,children:[a.jsxs("div",{className:Yt.taskReferenceCluster,children:[y?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:Yt.taskReferenceText,children:ge}),a.jsx("span",{className:Yt.taskReferenceDivider,children:"/"})]}):null,m?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:Yt.taskReferenceText,children:ue}),a.jsx("span",{className:Yt.taskReferenceDivider,children:"/"})]}):null,X?a.jsx(Zu,{copied:F&&n===pe.label,onClick:ne=>it(ne,pe.label),disabled:!F,title:F?"Copy task reference":"Task reference pending sync",className:S?Yt.archiveBadge:"",label:Ou(X,t)}):null,M?a.jsx("span",{className:f.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),a.jsx("div",{className:Yt.taskActions,onClick:ne=>ne.stopPropagation(),children:U?de||ve?a.jsxs(a.Fragment,{children:[de&&a.jsx("button",{type:"button",className:f.actionBtn,onClick:()=>de(e.id),title:be==="deleted"?"Restore deleted task":"Restore archived task",children:a.jsx(pd,{size:16})}),ve&&a.jsx("button",{type:"button",className:`${f.actionBtn} ${f.deleteBtn}`,onClick:()=>ve(e.id),title:re||(be==="deleted"?"Delete Permanently":"Move to Trash"),children:a.jsx(Sm,{size:16})})]}):null:a.jsx(uy,{task:e,compressed:K,shortLabels:!0,showLabel:me,onSetStatus:(ne,st)=>{if(B){B(ne,st);return}if(st==="in-progress"){_?.(ne);return}if(st==="review"){I?.(ne);return}if(st==="done"){W?.(ne);return}st==="cancelled"&&V?.(ne)},onArchiveTask:J})})]}),a.jsxs("div",{className:Yt.taskContent,children:[U&&a.jsx("div",{className:`${Yt.taskMeta} ${Yt.taskMetaCompact}`}),a.jsxs("div",{children:[a.jsxs("div",{className:Yt.taskTitle,style:K?{fontSize:"13px",lineHeight:"1.4"}:{},children:[be==="archived"&&"✓ ",be==="deleted"&&"Deleted: ",Ou(e.title,t)]}),e.description&&!U&&!K&&a.jsx("div",{className:Yt.taskDescription,children:a.jsx(ny,{onTaskIdClick:x,children:e.description})})]}),e.attachments&&e.attachments.length>0&&!U&&!K&&a.jsxs("div",{className:Yt.attachmentThumbnails,children:[a.jsx("div",{className:Yt.attachmentImageRow,children:(e.attachments||[]).map((ne,st)=>{const Ze=typeof ne=="string"?ne:ne.path;return Me(ne)?a.jsx("div",{className:Yt.attachmentThumbnail,onClick:Pt=>{Pt.stopPropagation(),!A1(typeof ne=="string"?{path:Ze}:ne,{taskId:e.id,taskReferenceLabel:X})&&window.open(Ze,"_blank")},children:a.jsx("img",{src:Ze,alt:`Attachment ${st}`})},st):null})}),a.jsx("div",{className:Yt.attachmentDocumentList,children:(e.attachments||[]).map((ne,st)=>{const Ze=typeof ne=="string"?ne:ne.path,Pt=typeof ne=="string"?void 0:ne.fsPath,kt=nt(ne);if(Me(ne))return null;const It=gt(ne);return a.jsxs("button",{type:"button",className:Yt.contextDocThumb,onClick:Ft=>{Ft.stopPropagation();const Mt=typeof ne=="string"?{path:ne,taskId:e.id}:{...ne,taskId:e.id};v1(Mt,Pt)||window.open(Ze,"_blank")},title:kt,style:{"--context-doc-accent":sb(It)},children:[a.jsxs("span",{className:Yt.contextDocMain,children:[a.jsx("span",{className:Yt.contextDocIcon,"aria-hidden":"true",children:a.jsx(iM,{size:13})}),a.jsx("span",{className:Yt.contextDocText,children:a.jsx("span",{className:Yt.contextDocName,children:kt})})]}),a.jsx("span",{className:Yt.contextDocType,children:It})]},st)})})]}),e.status==="cancelled"&&e.canceledReason&&!K&&a.jsxs("div",{className:Yt.taskCancellationReason,children:[a.jsx("strong",{children:"Cancellation Reason:"})," ",Ou(e.canceledReason,t)]}),ee&&!U&&!K&&a.jsxs("div",{className:Yt.taskLatestComment,children:[a.jsx("strong",{children:"Latest Activity:"})," ",Ou(ee.length>120?ee.substring(0,120)+"...":ee,t)]}),!U&&qe.length>0&&!K&&a.jsx("div",{className:`${Yt.taskSpecialists} ${Yt.taxonomiesList}`,children:qe.map(ne=>{const st=e.taxonomies?.[ne.id];return st?(Array.isArray(st)?st:[st]).map(Pt=>{const kt=ne.options.find(et=>et.value===Pt);if(!kt)return null;const It=ks[kt.icon||"Layers"]||Np,Ft=jn(kt.color)||"var(--text-primary)",Mt=ne.status==="retired"?`${ne.label} (Retired)`:ne.label,Be=kt.status==="retired"?`${kt.label} (Retired)`:kt.label;return a.jsx("span",{className:f.specialistBadge,style:{borderColor:`${Ft}50`,backgroundColor:`${Ft}15`,color:Ft},title:`${Mt}: ${St(Be)}`,children:a.jsx(It,{size:10})},`${ne.id}-${Pt}`)}):null})}),a.jsx("div",{className:Yt.taskMeta,children:U?a.jsx("span",{children:e.category}):a.jsx(a.Fragment,{children:a.jsxs("div",{className:Yt.taskMetaRow,style:K?{marginBottom:0}:void 0,children:[a.jsxs("div",{className:Yt.taskMetaBadgeGroup,children:[(()=>{const ne=jn(Ne?.color),st=Ne?.icon||"Folder",Ze=ks[st]||Co;return a.jsx("span",{className:f.metaBadge,title:St(e.category),style:{color:ne||"var(--text-secondary)",backgroundColor:ne?`${ne}15`:"var(--bg-tertiary)",borderColor:ne?`${ne}40`:"transparent"},children:a.jsx(Ze,{size:14})})})(),a.jsx("span",{className:`${f.metaBadge} ${f[`type_${e.type}`]||""}`,title:St(e.type||Lr),style:{color:`var(--type-color, ${Te})`,backgroundColor:`color-mix(in srgb, var(--type-color, ${Te}), transparent 90%)`,borderColor:`color-mix(in srgb, var(--type-color, ${Te}), transparent 75%)`},children:we?.icon?(()=>{const ne=ks[we.icon]||oM;return a.jsx(ne,{size:14})})():h1(e.type,14)}),O&&a.jsx("span",{className:f.metaBadge,style:{color:Se||"var(--text-secondary)",backgroundColor:Se?`${Se}15`:"var(--bg-tertiary)",borderColor:Se?`${Se}40`:"var(--border-color)"},title:`${O.label}`,children:(()=>{const ne=O.icon||"AlertCircle",st=ks[ne]||xk;return a.jsx(st,{size:14})})()}),Q>0&&a.jsxs("span",{className:f.metaBadge,title:`${Q} activity items`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[a.jsx(tM,{size:14}),a.jsx("span",{children:Q})]}),dt>0&&a.jsxs("span",{className:f.metaBadge,title:`${Xe}/${dt} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[a.jsx(sM,{size:14}),a.jsx("span",{children:`${Xe}/${dt}`})]})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[a.jsxs("span",{className:f.metaBadge,title:`AI-estimated complexity: ${Ae} (${ce}/5)`,style:{color:Ee,backgroundColor:`color-mix(in srgb, ${Ee}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Ee}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[a.jsx(rM,{size:14}),!K&&a.jsx("span",{children:Ae})]}),a.jsx("span",{className:`${Yt.assigneeAvatarIndicator} ${b==="unassigned"?Yt.assigneeAvatarEmpty:""}`,title:`Assigned to: ${N}`,"aria-label":b==="unassigned"?"Unassigned":`Assigned to ${N}`,style:{"--assignee-avatar-color":P},children:te?a.jsx("img",{src:te,alt:"",className:Yt.assigneeAvatarImage}):b==="agent"?a.jsx(nM,{size:K?18:20}):b==="member"?a.jsx(aM,{size:K?18:20}):null})]})]})})})]})]})},vd=We.memo(cM),hm="168px";function fy(){return a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:$e("standalone.filtersCaps")})}function Gi({label:e,options:t,selected:n,onChange:s,variant:o="label"}){return a.jsx(Hi,{label:e,options:t,selected:n,onChange:s,variant:o,containerStyle:{flex:`0 0 ${hm}`,maxWidth:hm}})}function hy({onClick:e}){return a.jsxs("button",{onClick:e,style:{background:"none",border:"none",color:"var(--text-secondary)",cursor:"pointer",fontSize:"12px",display:"flex",alignItems:"center",gap:"4px"},children:[a.jsx(ec,{size:12})," ",$e("standalone.clearFilters")]})}function Ih({label:e,options:t,selected:n,onChange:s,allLabel:o,title:l}){const[i,d]=We.useState(!1),m=We.useRef(null),y=t.find(h=>h.value===n),k=y?.selectedLabel||y?.label||o;We.useEffect(()=>{const h=g=>{m.current&&!m.current.contains(g.target)&&d(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[]);const S=h=>{s(h),d(!1)};return a.jsxs("div",{className:f.filterContainer,ref:m,style:{flex:`0 0 ${hm}`,maxWidth:hm},children:[a.jsxs("button",{type:"button",className:`${f.filterButton} ${n?f.filterActive:""}`,onClick:()=>d(h=>!h),title:l||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":i,children:[a.jsx("span",{children:k}),a.jsx(el,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&a.jsxs("div",{className:`${f.filterDropdown} ${f.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[a.jsxs("button",{type:"button",className:f.filterOption,onClick:()=>S(""),"aria-selected":!n,children:[a.jsx(Io,{size:14,style:{opacity:n?0:1}}),a.jsx("span",{style:{fontWeight:n?500:600},children:o})]}),a.jsx("div",{className:f.filterDivider}),t.map(h=>{const g=h.value===n;return a.jsxs("button",{type:"button",className:f.filterOption,onClick:()=>S(h.value),"aria-selected":g,children:[a.jsx(Io,{size:14,style:{opacity:g?1:0}}),a.jsx("span",{style:{fontWeight:g?600:500},children:h.label})]},h.value)})]})]})}function gy({scope:e,onScopeChange:t,className:n,labelClassName:s}){return a.jsxs("div",{className:n,children:[a.jsx("span",{className:s,children:"Scope"}),a.jsx("div",{className:f.taskScopeTabs,role:"tablist","aria-label":"Task scope",children:[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}].map(o=>{const l=e===o.value;return a.jsx("button",{type:"button",className:`${f.taskScopeTab} ${l?f.taskScopeTabActive:""}`,onClick:()=>t(o.value),role:"tab","aria-selected":l,"aria-pressed":l,title:`Show ${o.label.toLowerCase()} tasks`,children:o.label},o.value)})})]})}function yy({onClick:e,disabled:t=!1,className:n,title:s="Permanently delete all deleted tasks",children:o="Delete All Permanently"}){return a.jsxs("button",{type:"button",className:n,onClick:e,disabled:t,title:s,children:[a.jsx(Sm,{size:14}),o]})}const{Search:Th,ClipboardList:lM,ChevronRight:dM,ChevronDown:uM,Folder:mM,Archive:pM,RotateCcw:fM,X:hM,Plus:gM,ArrowUpDown:yM,Trash2:kM}=ks,ky=r.forwardRef((e,t)=>{const{tasks:n,archivedTasks:s,categories:o,types:l,priorities:i,taxonomyDisplayLabels:d,assigneeOptions:m=[],workstreams:y=[],initiatives:k=[],searchQuery:S,filterCategories:h,filterTypes:g,filterPriorities:v,filterStatus:A,filterAssignees:_=[],filterTaxonomies:I,sortBy:W,sortOrder:V,showArchive:B,taskScope:J,collapsedCategories:de,loadingTasks:ve,filteredTasks:re,filteredArchive:x,groupedTasks:K,filteredDeletedTasks:me=[],groupedDeletedTasks:pe={},copiedId:X,recentlyChangedTaskIds:M=[],showTaskCardStatusLabel:F=!0,onSearchChange:ue,onFilterCategoriesChange:ge,onFilterTypesChange:O,onFilterPrioritiesChange:_e,onFilterStatusChange:Ne,onFilterAssigneesChange:se,onTaxonomyFilterChange:ce,onSortByChange:Re,onSortOrderChange:Pe,onShowArchiveChange:Ae,onTaskScopeChange:Ee,onClearFilters:$,onToggleCategory:T,onEditTask:b,onOpenTaskById:N,onCopyId:D,onToggleInProgress:te,onToggleReview:P,onToggleComplete:H,onToggleCancel:be,onSetStatus:U,onArchiveTask:ie,onBulkArchive:ee,onUnarchive:Q,onDelete:q,onDeleteAllDeleted:Se,onFetchArchive:we,onAddTaskToCategory:Te,supplementalTasks:Me=[],taxonomies:nt}=e,gt=new Set(M),lt=We.useMemo(()=>new Map(y.map(ae=>[ae.id,ae])),[y]),St=We.useMemo(()=>new Map(k.map(ae=>[ae.id,ae])),[k]),qe=We.useCallback(ae=>{const Qe=ae.workstreamId&&lt.get(ae.workstreamId)||null,bt=Qe?.initiativeId&&St.get(Qe.initiativeId)||null;return{taskWorkstream:Qe,taskInitiative:bt}},[St,lt]),Ct=[...n,...s,...Me],dt=!!Ee,Xe=Ee,it=J??(B?"archived":"open"),ne=dt?it==="archived"?x:it==="deleted"?me:re:re,st=dt?it==="archived"?{Archived:x}:it==="deleted"?pe:K:K,Ze=dt?it==="deleted"?"deleted":it==="archived"?"archived":null:null,Pt=Am(S),kt=S?Pt?`No task found for ${Pt.toUpperCase()}`:$e("taskList.noMatchingTasks"):it==="archived"?"No archived tasks found.":it==="deleted"?"No deleted tasks found.":$e("taskList.noActiveTasks"),It=o.filter(ae=>!ae.disabled),Ft=o.filter(ae=>ae.disabled&&Ct.some(Qe=>Qe.category===ae.value)),Mt=[...It,...Ft.filter(ae=>!It.some(Qe=>Qe.value===ae.value))].map(ae=>({value:ae.value,label:ae.disabled?`${ae.label} (Legacy)`:ae.label})),Be=l.filter(ae=>ae.status!=="retired"),et=l.filter(ae=>ae.status==="retired"&&Ct.some(Qe=>Qe.type===ae.value)),Ue=[...Be,...et.filter(ae=>!Be.some(Qe=>Qe.value===ae.value))].map(ae=>({value:ae.value,label:ae.status==="retired"?`${ae.label} (Retired)`:ae.label})),yt=wd(nt,Ct).filter(ae=>ae.filterEnabled!==!1).map(ae=>({...ae,options:hf(ae,Ct)})),ct=We.useMemo(()=>[{value:"created",label:$e("taskList.sortCreated")},{value:"updated",label:$e("taskList.sortUpdated")},{value:"priority",label:$e("taskList.sortPriority")},...ay(nt,Ct)],[Ct,$e,nt]);return a.jsxs("div",{className:f.viewTab,ref:t,children:[a.jsxs("div",{className:f.filterBar,children:[a.jsxs("div",{className:f.searchContainer,children:[a.jsx(Th,{size:16,className:f.searchIcon}),a.jsx("input",{type:"text",className:f.searchInput,placeholder:$e("taskList.searchPlaceholder"),value:S,onChange:ae=>ue(ae.target.value)}),S&&a.jsx("button",{className:f.clearSearchBtn,onClick:()=>ue(""),title:$e("taskList.clearSearchTitle"),children:a.jsx(hM,{size:14})})]}),a.jsxs("div",{className:f.filterRow,children:[a.jsx(Hi,{label:d?.category||$e("taskList.categoryLabel"),options:Mt,selected:h,onChange:ge,variant:"value"}),a.jsx(Hi,{label:d?.type||$e("taskList.typeLabel"),options:Ue,selected:g,onChange:O,variant:"value"})]}),a.jsxs("div",{className:f.filterRow,children:[a.jsx(Hi,{label:d?.priority||$e("taskList.priorityLabel"),options:i,selected:v,onChange:_e,variant:"value"}),a.jsx(Hi,{label:$e("taskList.statusLabel"),options:Ys,selected:A,onChange:Ne,variant:"value"}),a.jsx(Hi,{label:$e("taskList.assigneeLabel"),options:m,selected:_,onChange:ae=>se?.(ae),variant:"value"})]}),yt.map(ae=>a.jsx(Hi,{label:ae.status==="retired"?`${ae.label} (Retired)`:ae.label,options:ae.options.map(Qe=>({...Qe,label:Qe.status==="retired"?`${Qe.label} (Retired)`:Qe.label})),selected:I[ae.id]||[],onChange:Qe=>ce(ae.id,Qe),variant:"value"},ae.id)),a.jsxs("div",{className:f.filterRow,children:[a.jsxs("div",{className:f.sortLabel,children:[a.jsx(yM,{size:14,style:{marginRight:"4px"}})," ",$e("taskList.sortByLabel")]}),a.jsx("select",{value:W,onChange:ae=>Re(ae.target.value),className:`${f.filterSelect} ${f.filterSelectSort} `,children:ct.map(ae=>a.jsx("option",{value:ae.value,children:ae.label},ae.value))}),a.jsx("button",{className:`${f.resetFiltersBtn} ${f.sortDirectionBtnWidget}`,onClick:Pe,title:$e(V==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:V==="desc"?a.jsx(ng,{size:14}):a.jsx(rg,{size:14})}),a.jsx("button",{className:f.resetFiltersBtn,onClick:$,title:$e("taskList.resetFiltersTitle"),children:a.jsx(fM,{size:14})})]}),a.jsxs("div",{className:`${f.filterRow} ${f.archiveRow} `,children:[it==="open"?a.jsxs("button",{className:`${f.bulkArchiveBtn} ${n.some(ae=>ae.status==="done"||ae.status==="cancelled")?"":f.disabledBtn} `,onClick:()=>n.some(ae=>ae.status==="done"||ae.status==="cancelled")&&ee(),disabled:!n.some(ae=>ae.status==="done"||ae.status==="cancelled"),title:n.some(ae=>ae.status==="done"||ae.status==="cancelled")?$e("taskList.archiveAllTitle"):$e("taskList.noTasksToArchiveTitle"),children:[a.jsx(pM,{size:12}),a.jsx("span",{children:$e("taskList.archiveFinished")})]}):it==="deleted"&&Se?a.jsx(yy,{className:`${f.bulkArchiveBtn} ${f.taskToolbarAction} ${f.bulkDeleteBtn} ${me.length===0?f.disabledBtn:""}`,onClick:()=>me.length>0&&Se(),disabled:me.length===0,title:me.length>0?"Empty trash":"Trash is already empty",children:"Empty Trash"}):a.jsx("div",{}),dt?a.jsx(gy,{scope:it,onScopeChange:ae=>{Xe?.(ae),ae==="archived"?(Ae(!0),we()):B&&Ae(!1)},className:`${f.archiveToggle} ${f.taskScopeToggle}`}):a.jsxs("label",{className:f.archiveToggle,children:[a.jsx("input",{type:"checkbox","aria-label":"Archived",checked:B,onChange:ae=>{Ae(ae.target.checked),ae.target.checked&&we()}}),a.jsx("span",{children:"Include Archive"})]})]})]}),ve&&n.length===0?a.jsx("div",{className:f.loading,children:a.jsx(mr,{size:24,className:f.spinner})}):ne.length===0&&!ve?a.jsxs("div",{className:f.emptyState,children:[S?a.jsx(Th,{size:48}):it==="deleted"?a.jsx(kM,{size:48}):a.jsx(lM,{size:48}),a.jsx("p",{children:kt})]}):a.jsx("div",{className:f.taskList,style:{opacity:ve?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(st).map(([ae,Qe])=>{if(Qe.length===0)return null;const bt=de[ae];return a.jsxs("div",{className:f.categoryGroup,children:[a.jsx("div",{className:f.categoryHeader,onClick:()=>T(ae),children:a.jsxs("div",{className:f.categoryTitle,children:[bt?a.jsx(dM,{size:16}):a.jsx(uM,{size:16}),(()=>{const Ot=o.find(Lt=>Lt.label===ae),Bt=Ot?.icon&&Qi[Ot.icon]?Qi[Ot.icon]:mM,Fe=jn(Ot?.color)||"var(--color-purple, #8b5cf6)";return a.jsx(Bt,{size:16,className:f.categoryTitleIcon,style:{color:Fe}})})(),ae,a.jsxs("span",{className:f.categoryCount,children:["(",Qe.length,")"]}),Te&&a.jsx("button",{className:f.kanbanQuickAdd,onClick:Ot=>{Ot.stopPropagation(),Te(ae)},title:$e("taskList.addTaskToCategoryTitle",{category:ae}),style:{marginLeft:"auto"},disabled:Ze!==null,children:a.jsx(gM,{size:14})})]})}),!bt&&a.jsx("div",{className:f.categoryItems,children:Qe.map(Ot=>(()=>{const{taskWorkstream:Bt,taskInitiative:Fe}=qe(Ot);return a.jsx(vd,{task:Ot,taskWorkstream:Bt,taskInitiative:Fe,searchQuery:S,copiedId:X,taxonomies:nt,types:l,priorities:i,assigneeOptions:m,onClick:b,onOpenTaskById:N,onCopyId:D,onToggleInProgress:te,onToggleReview:P,onToggleComplete:H,onToggleCancel:be,onSetStatus:U,onArchiveTask:ie,onUnarchive:Ze?Q:void 0,onDelete:Ze?q:void 0,categories:o,isRecentlyChanged:gt.has(Ot.id),readOnlyMode:Ze,showStatusLabel:F},Ot.id)})())})]},ae)})}),!dt&&B&&x.length>0&&a.jsxs("div",{className:f.archiveList,children:[a.jsx("div",{className:f.archiveHeader,children:"Archived"}),x.map(ae=>(()=>{const{taskWorkstream:Qe,taskInitiative:bt}=qe(ae);return a.jsx(vd,{task:ae,taskWorkstream:Qe,taskInitiative:bt,searchQuery:S,copiedId:X,isArchived:!0,types:l,assigneeOptions:m,onClick:b,onCopyId:D,onSetStatus:U,onUnarchive:Q,onDelete:q,deleteActionTitle:"Delete Permanently",categories:o,showStatusLabel:F},ae.id)})())]})]})});ky.displayName="TaskList";const vM="_formNotice_inuex_1",SM="_assigneeIndicator_inuex_12",wM="_assigneeIndicatorAgent_inuex_20",bM="_assigneeIndicatorUser_inuex_24",_M="_assigneeIndicatorUnassigned_inuex_28",CM="_markdownPreview_inuex_32",AM="_error_inuex_83",xM="_keyboardHint_inuex_92",IM="_taskFormLifecycle_inuex_110",TM="_taskFormMetaDivider_inuex_115",RM="_taskFormMetaGrid_inuex_122",NM="_compactMetaSection_inuex_128",jM="_createWorkstreamRow_inuex_134",PM="_createWorkstreamDropdown_inuex_140",MM="_compactMetaGrid_inuex_145",EM="_compactMetaField_inuex_151",DM="_compactMetaFieldHint_inuex_165",LM="_formFieldsetReset_inuex_169",BM="_formLayout_inuex_176",WM="_formLayoutWithSidebar_inuex_183",FM="_formMainColumn_inuex_191",OM="_activitySidebar_inuex_198",$M="_activitySidebarHeader_inuex_208",UM="_activitySidebarTitle_inuex_215",zM="_activitySidebarCount_inuex_224",HM="_taskFormDateRow_inuex_246",GM="_taskFormDateLabel_inuex_253",VM="_taskFormDateValue_inuex_261",qM="_taskFormMetaStack_inuex_269",KM="_taskFormMetaActor_inuex_275",ZM="_taskFormDateWarning_inuex_287",YM="_taskFormDateError_inuex_293",JM="_helpHeader_inuex_299",QM="_helpClose_inuex_310",XM="_markdownHelp_inuex_324",eE="_helpGrid_inuex_333",tE="_helpGridItem_inuex_339",aE="_settingsHint_inuex_351",nE="_sectionBlock_inuex_357",rE="_softSectionSurface_inuex_367",sE="_stackedList_inuex_374",oE="_stackedListSpaced_inuex_379",iE="_checklistRow_inuex_383",cE="_checklistRowDragging_inuex_392",lE="_checklistHandleBtn_inuex_396",dE="_checklistCheckboxBtn_inuex_419",uE="_checklistCheckboxBtnChecked_inuex_439",mE="_checklistItemText_inuex_444",pE="_checklistItemTextCompleted_inuex_450",fE="_checklistRemoveBtn_inuex_455",hE="_specialistChip_inuex_522",gE="_specialistChipActive_inuex_545",yE="_commentPanel_inuex_626",kE="_activitySidebarPanel_inuex_635",vE="_commentThread_inuex_643",SE="_emptyComments_inuex_663",wE="_activityLoadingThread_inuex_673",bE="_activitySkeletonItem_inuex_677",_E="_activitySkeletonMeta_inuex_683",CE="_activitySkeletonBody_inuex_684",AE="_comment_inuex_626",xE="_commentAi_inuex_740",IE="_commentUser_inuex_744",TE="_commentHeader_inuex_748",RE="_commentAuthor_inuex_772",NE="_commentTime_inuex_780",jE="_commentText_inuex_784",PE="_commentInputArea_inuex_844",ME="_commentInput_inuex_844",EE="_sendCommentBtn_inuex_876",DE="_taxonomyFieldsGrid_inuex_903",LE="_markdownPreviewContainer_inuex_910",BE="_descriptionSurface_inuex_915",at={formNotice:vM,assigneeIndicator:SM,assigneeIndicatorAgent:wM,assigneeIndicatorUser:bM,assigneeIndicatorUnassigned:_M,markdownPreview:CM,error:AM,keyboardHint:xM,taskFormLifecycle:IM,taskFormMetaDivider:TM,taskFormMetaGrid:RM,compactMetaSection:NM,createWorkstreamRow:jM,createWorkstreamDropdown:PM,compactMetaGrid:MM,compactMetaField:EM,compactMetaFieldHint:DM,formFieldsetReset:LM,formLayout:BM,formLayoutWithSidebar:WM,formMainColumn:FM,activitySidebar:OM,activitySidebarHeader:$M,activitySidebarTitle:UM,activitySidebarCount:zM,taskFormDateRow:HM,taskFormDateLabel:GM,taskFormDateValue:VM,taskFormMetaStack:qM,taskFormMetaActor:KM,taskFormDateWarning:ZM,taskFormDateError:YM,helpHeader:JM,helpClose:QM,markdownHelp:XM,helpGrid:eE,helpGridItem:tE,settingsHint:aE,sectionBlock:nE,softSectionSurface:rE,stackedList:sE,stackedListSpaced:oE,checklistRow:iE,checklistRowDragging:cE,checklistHandleBtn:lE,checklistCheckboxBtn:dE,checklistCheckboxBtnChecked:uE,checklistItemText:mE,checklistItemTextCompleted:pE,checklistRemoveBtn:fE,specialistChip:hE,specialistChipActive:gE,commentPanel:yE,activitySidebarPanel:kE,commentThread:vE,emptyComments:SE,activityLoadingThread:wE,activitySkeletonItem:bE,activitySkeletonMeta:_E,activitySkeletonBody:CE,comment:AE,commentAi:xE,commentUser:IE,commentHeader:TE,commentAuthor:RE,commentTime:NE,commentText:jE,commentInputArea:PE,commentInput:ME,sendCommentBtn:EE,taxonomyFieldsGrid:DE,markdownPreviewContainer:LE,descriptionSurface:BE};function wp({label:e,value:t,options:n,onChange:s,type:o="priority",hideLabel:l=!1,showSelectedLabel:i=!0}){const d=n.find(m=>String(m.value)===String(t));return a.jsxs("div",{className:f.field,children:[!l&&a.jsxs("div",{className:f.labelRow,children:[a.jsx("label",{className:f.label,children:e}),i&&d&&a.jsx("span",{className:f.levelLabel,style:{color:jn(d.color)||(o==="priority"?`var(--priority-${t})`:o==="complexity"?`var(--complexity-${t})`:"var(--text-secondary)"),backgroundColor:(jn(d.color)?`${jn(d.color)}25`:void 0)||(o==="priority"?`color-mix(in srgb, var(--priority-${t}), transparent 85%)`:o==="complexity"?`color-mix(in srgb, var(--complexity-${t}), transparent 85%)`:"rgba(255,255,255,0.05)")},children:d.label})]}),a.jsx("div",{className:f.levelSelect,children:n.map((m,y)=>{const k=n.findIndex(g=>String(g.value)===String(t)),S=y<=k,h=String(m.value)===String(t);return a.jsx("button",{type:"button",className:`${f.levelOption} ${S?f.levelOptionFilled:""} ${S?f[`levelOption_${o}_${m.value}`]:""} ${h?f.levelOptionSelected:""}`,onClick:()=>s(m.value),title:m.label,style:{opacity:S?1:.15,backgroundColor:S?jn(m.color)||(o==="priority"?`var(--priority-${m.value})`:o==="complexity"?`var(--complexity-${m.value})`:"var(--text-primary)"):void 0,color:S?o==="priority"&&String(m.value).toLowerCase()==="medium"?"black":"white":void 0,boxShadow:S&&(o==="priority"&&(String(m.value).toLowerCase()==="critical"||m.value===4)||o==="complexity"&&(String(m.value).toLowerCase()==="epic"||m.value===5))?`0 0 12px ${o==="priority"?"rgba(239, 68, 68, 0.6)":"rgba(217, 70, 239, 0.6)"}`:void 0}},String(m.value))})})]})}const Rh=new Map;function WE(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function FE(e,t){const n=Object.entries(t).sort(([s],[o])=>s.localeCompare(o));return JSON.stringify([e,n])}function gm(e,t,n){const s=WE(e);if(!s)return"";const o=n??Ng(),l=FE(o,t);let i=Rh.get(l);return i||(i=new Intl.DateTimeFormat(o,t),Rh.set(l,i)),i.format(s)}const OE=We.lazy(()=>vs(()=>import("./EntityActivityTimeline-DSj0ThaK.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),$E=We.lazy(()=>vs(()=>import("./TaskContextUpload-Dw4rTF4i.js"),__vite__mapDeps([7,1,8,9,2,3,4,5])).then(e=>({default:e.TaskContextUpload})));function UE({count:e}){const t=Math.max(2,Math.min(e||3,4));return a.jsx("div",{className:`${at.commentThread} ${at.activityLoadingThread}`.trim(),"aria-busy":"true","aria-live":"polite","aria-label":"Loading activity",children:Array.from({length:t},(n,s)=>a.jsxs("div",{className:at.activitySkeletonItem,children:[a.jsx("div",{className:at.activitySkeletonMeta}),a.jsx("div",{className:at.activitySkeletonBody})]},s))})}function zE({id:e,item:t,onToggle:n,onRemove:s}){const{attributes:o,listeners:l,setNodeRef:i,transform:d,transition:m,isDragging:y}=gg({id:e}),k={transform:Jp.Transform.toString(d),transition:m,opacity:y?.88:1};return a.jsxs("div",{ref:i,style:k,className:`${at.checklistRow} ${y?at.checklistRowDragging:""}`.trim(),children:[a.jsx("button",{type:"button",className:at.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...o,...l,children:a.jsx(Tk,{size:14})}),a.jsx("button",{type:"button",className:`${at.checklistCheckboxBtn} ${t.isCompleted?at.checklistCheckboxBtnChecked:""}`.trim(),onClick:n,title:t.isCompleted?"Mark incomplete":"Mark complete","aria-label":t.isCompleted?"Mark checklist item incomplete":"Mark checklist item complete",children:t.isCompleted?a.jsx(Io,{size:14,strokeWidth:2.1}):null}),a.jsx("span",{className:`${at.checklistItemText} ${t.isCompleted?at.checklistItemTextCompleted:""}`.trim(),children:t.title}),a.jsx("button",{type:"button",className:at.checklistRemoveBtn,onClick:s,title:"Remove checklist item","aria-label":"Remove checklist item",children:a.jsx(ec,{size:15,strokeWidth:1.9})})]})}function vy(e){const{editingTaskId:t,error:n,title:s,description:o,category:l,type:i,priority:d,complexity:m,manualComplexityEnabled:y=!1,assignee:k,scheduledDate:S,dueDate:h,workstreamInput:g="",checklistItems:v,comments:A,newCommentText:_,contextFiles:I,currentWorkspaceId:W,apiBaseUrl:V,descriptionFocused:B,showMarkdownHelp:J,showChecklist:de=!1,checklistEnabled:ve=!0,formTaxonomies:re,onTaxonomyChange:x,onOpenSettings:K,categories:me,types:pe,priorities:X,taxonomyDisplayLabels:M,assigneeOptions:F,taxonomies:ue,workstreams:ge=[],initiatives:O=[],copiedId:_e,onTitleChange:Ne,onDescriptionChange:se,onCategoryChange:ce,onTypeChange:Re,onPriorityChange:Pe,onComplexityChange:Ae,onAssigneeChange:Ee,onScheduledDateChange:$,onDueDateChange:T,onWorkstreamInputChange:b=()=>{},onChecklistItemsChange:N,onNewCommentTextChange:D,onDescriptionFocusedChange:te,onShowMarkdownHelpChange:P,onShowChecklistChange:H=()=>{},onSubmit:be,onAddComment:U,onAddContextFile:ie,onRemoveContextFile:ee,onUpdateContextCaption:Q,onCopyId:q,onToggleInProgress:Se,onToggleReview:we,onToggleComplete:Te,onToggleCancel:Me,onSetStatus:nt,onArchiveTask:gt,onUnarchive:lt,onOpenTaskById:St,currentTask:qe,commentsEndRef:Ct}=e,dt=Yi(qe),Xe=We.useMemo(()=>Yw(ue,re),[ue,re]),it=We.useMemo(()=>{const he=me.find(Gt=>Gt.value===Zc),ot={value:Zc,label:he?.label||wm,icon:he?.icon||"HelpCircle",color:he?.color||"var(--text-secondary)"},xe=me.find(Gt=>Gt.value===l),tt=me.filter(Gt=>!Gt.disabled||Gt.value===xe?.value).filter(Gt=>Gt.value!==Zc).map(Gt=>({value:Gt.value,label:Gt.disabled?`${Gt.label} (Legacy)`:Gt.label,icon:Gt.icon,color:Gt.color}));return[ot,...tt]},[me,l]),ne=We.useMemo(()=>{const he=pe.find(xe=>xe.value===i);return pe.filter(xe=>xe.status!=="retired"||xe.value===he?.value).map(xe=>({value:xe.value,label:xe.status==="retired"?`${xe.label} (Retired)`:xe.label,icon:xe.icon||"Box",color:xe.color||"violet-500"}))},[pe,i]),st=he=>he&&gm(he,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,Ze=st(qe?.createdAt),Pt=st(qe?.updatedAt||qe?.createdAt),kt=st(qe?.completedAt),It=We.useMemo(()=>{const he=new Date,ot=he.getFullYear(),xe=String(he.getMonth()+1).padStart(2,"0"),Nt=String(he.getDate()).padStart(2,"0");return`${ot}-${xe}-${Nt}`},[]),Ft=!!(h&&S&&h<S),Mt=!!(h&&h<It&&(!qe||qe.status!=="done"&&qe.status!=="cancelled")),Be=v.filter(he=>he.isCompleted).length,[et,Ue]=We.useState(""),[Je,yt]=We.useState(!1),ct=!!qe?.isArchived,ae=!!qe?.isDeleted,Qe=We.useMemo(()=>ge.map(he=>{const ot=cm(he);return{value:ot||he.id,label:ot?`${ot} · ${he.title}`:he.title,icon:"Folder",color:"var(--text-secondary)"}}),[ge]),bt=We.useMemo(()=>Qe.some(he=>String(he.value)===String(g||"").trim()),[g,Qe]);We.useEffect(()=>{if(t){Je&&yt(!1);return}if(g.trim()){if(bt&&Je){yt(!1);return}!bt&&!Je&&yt(!0)}},[t,bt,Je,g]);const Ot=ct||ae,Bt=We.useRef(null),Fe=ug(Pp(hg,{activationConstraint:{distance:6}}));We.useLayoutEffect(()=>{const he=Bt.current;if(!he)return;const ot=()=>{he.scrollTop=0;const Nt=he.parentElement;Nt&&(typeof Nt.scrollTo=="function"?Nt.scrollTo({top:0,left:0,behavior:"auto"}):Nt.scrollTop=0)};ot();const xe=window.requestAnimationFrame(ot);return()=>window.cancelAnimationFrame(xe)},[t,qe?.id]);const Lt=()=>{const he=et.trim();if(!he)return;const ot=new Date().toISOString();N([...v,{id:`checklist-draft-${ot}-${v.length}`,taskId:t||"",title:he,isCompleted:!1,order:v.length,createdAt:ot,updatedAt:ot}]),Ue("")},vt=We.useCallback(he=>{const{active:ot,over:xe}=he;if(!xe||ot.id===xe.id)return;const Nt=v.findIndex(Pa=>Pa.id===ot.id),tt=v.findIndex(Pa=>Pa.id===xe.id);if(Nt<0||tt<0)return;const Gt=new Date().toISOString(),ha=Qk(v,Nt,tt).map((Pa,ua)=>({...Pa,order:ua,updatedAt:Gt}));N(ha)},[v,N]),E=he=>{const ot=String(he||"").trim(),xe=he.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!xe||xe==="ai"||ot.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${xe.split(" ").map(tt=>tt.charAt(0).toUpperCase()+tt.slice(1)).join(" ")}`},c=aS(F,k),Y=sm(k),ye=cd(k,c),Ie=We.useMemo(()=>new Map(c.map(he=>[String(he.value),he])),[c]),ze=Ie.get(String(k||"unassigned")),Ge=qe?.assigneeActor?.color||ze?.color,je=We.useMemo(()=>{const he=[qe?.assigneeActor,qe?.createdByActor].filter(Boolean);return new Map(he.map(ot=>[String(ot.id),ot]))},[qe?.assigneeActor,qe?.createdByActor]),Vt=We.useMemo(()=>new Map(ge.map(he=>[he.id,cm(he)||he.id])),[ge]),qt=We.useMemo(()=>new Map(O.map(he=>[he.id,Xg(he)||he.id])),[O]),Et=We.useMemo(()=>kf({activity:qe?.activity,comments:A}),[A,qe?.activity]),Tt=(he,ot)=>{const xe=String(ot||"").trim();if(xe){if(he==="assignee")return cd(xe,c);if(he==="workstreamId")return Vt.get(xe);if(he==="initiativeId")return qt.get(xe)}},Wt=We.useCallback((he,ot,xe)=>{if(xe&&xe.trim())return xe.trim();const Nt=String(he||"").trim();if(!Nt)return ot==="ai"?"AI Agent":$e("taskForm.you");const tt=je.get(Nt);if(tt?.label)return tt.label;const Gt=Ie.get(Nt)||Ie.get(Nt.toLowerCase());return Gt?.label?Gt.label:ot==="ai"?E(Nt):cd(Nt,c)||Nt},[je,Ie,E,c]),Ht=We.useCallback(({actorId:he,actorType:ot,actorProfile:xe,fallbackKind:Nt})=>{const tt=String(he||"").trim(),Gt=tt.toLowerCase(),ha=je.get(tt),Pa=Ie.get(tt)||Ie.get(Gt),ua=xe||ha||Pa||null,ca=ot==="system"?"system":ot==="ai"||ua?.kind==="ai"?"agent":ot==="human"||ua?.kind==="human"?"member":Pa?.kind==="agent"?"agent":Pa?.kind==="member"?"member":Nt||(Gt===""||Gt==="user"||Gt==="human"?"member":"agent"),Dt=ca==="system"?"System":Wt(tt,ca==="agent"?"ai":"human",ua?.label||null),aa=ua?.color,Za=String(ua?.icon||(ca==="agent"?"Bot":ca==="member"?"User":"ClipboardList")),$t=Qi[Za]||(ca==="agent"?Xu:ca==="member"?ai:sg);return{kind:ca,label:Dt,color:aa,ActorIcon:$t}},[je,Ie,Wt]),sa=We.useMemo(()=>{const he=Et[Et.length-1];if(!he)return null;if(he.type==="comment"){const xe=he.comment;return Wt(xe.author,xe.actor?.kind==="ai"?"ai":xe.actor?.kind==="human"?"human":null,xe.actor?.label||null)}const ot=he.event;return Wt(ot.actor,ot.actorType,ot.actorProfile?.label||null)},[Wt,Et]),Kt=We.useMemo(()=>{if(!qe?.completedAt)return null;for(const ot of Et){if(ot.type!=="event")continue;const xe=ot.event,Nt=xe.details?.changes?.status?.to;if(Nt==="done"||Nt==="cancelled")return Wt(xe.actor,xe.actorType,xe.actorProfile?.label||null)}return sa},[qe?.completedAt,sa,Wt,Et]),Ka=qe?.createdByActor?.label||Wt(qe?.createdBy||null,qe?.createdByActor?.kind==="ai"?"ai":qe?.createdByActor?.kind==="human"?"human":null,qe?.createdByActor?.label||null),Oa=sa,Xa=Et.length;We.useLayoutEffect(()=>{if(!t)return;const he=Ct.current;if(!he)return;const ot=he.parentElement,xe=()=>{if(typeof he.scrollIntoView=="function"){he.scrollIntoView({block:"end"});return}ot&&(ot.scrollTop=ot.scrollHeight)};xe();const Nt=window.requestAnimationFrame(xe);return()=>window.cancelAnimationFrame(Nt)},[Xa,Ct,qe?.id,t]);const wa=t?a.jsxs("aside",{className:at.activitySidebar,"aria-label":$e("taskForm.commentsSectionTitle"),children:[a.jsxs("div",{className:at.activitySidebarHeader,children:[a.jsx("h2",{className:at.activitySidebarTitle,children:$e("taskForm.commentsSectionTitle")}),a.jsx("span",{className:at.activitySidebarCount,children:Xa})]}),a.jsxs("div",{className:`${at.commentPanel} ${at.activitySidebarPanel}`.trim(),children:[a.jsx(We.Suspense,{fallback:a.jsx(UE,{count:Xa}),children:a.jsx(OE,{activity:qe?.activity,comments:A,formatFieldValue:Tt,resolveActorPresentation:Ht,onOpenTaskById:St,emptyMessage:$e("taskForm.noComments"),listClassName:at.commentThread,emptyClassName:at.emptyComments,endRef:Ct})}),a.jsxs("div",{className:at.commentInputArea,children:[a.jsx("textarea",{className:at.commentInput,placeholder:$e("taskForm.commentPlaceholder"),value:_,onChange:he=>D(he.target.value),onKeyDown:he=>{he.key==="Enter"&&!he.shiftKey&&(he.preventDefault(),U())},rows:4}),a.jsx("button",{type:"button",className:at.sendCommentBtn,onClick:U,disabled:!_.trim(),"aria-label":"Send comment",title:"Send comment",children:a.jsx(Ik,{size:16})})]})]})]}):null;return a.jsxs("form",{ref:Bt,onSubmit:be,className:`${f.form} ${f.appScrollbar} tf-scrollbar`,children:[n&&a.jsx("div",{className:at.error,children:n}),Ot&&a.jsx("div",{className:`${at.formNotice} tf-text-helper`,children:ae?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),a.jsxs("fieldset",{disabled:Ot,className:`${at.formFieldsetReset} ${t?at.formLayoutWithSidebar:at.formLayout}`.trim(),children:[a.jsxs("div",{className:at.formMainColumn,children:[a.jsxs("div",{className:f.field,children:[a.jsxs("div",{className:f.labelRow,children:[a.jsx("label",{className:f.label,children:"Title"}),k&&a.jsx("span",{title:`Assigned to: ${ye}`,className:[at.assigneeIndicator,Y==="agent"?at.assigneeIndicatorAgent:Y==="member"?at.assigneeIndicatorUser:at.assigneeIndicatorUnassigned].join(" "),style:Ge?{color:Ge}:void 0,children:Y==="agent"?a.jsx(Xu,{size:20}):Y==="member"?a.jsx(ai,{size:20}):a.jsx(Ki,{size:20})})]}),a.jsx("input",{type:"text",value:s,onChange:he=>Ne(he.target.value),placeholder:"What needs to be done?",className:f.input,required:!0,maxLength:255,autoFocus:!0})]}),a.jsxs("div",{className:f.field,children:[a.jsxs("div",{className:f.labelRow,children:[a.jsx("label",{className:f.label,children:"Description"}),a.jsx("button",{type:"button",className:f.helpLink,onClick:()=>P(!J),title:"Markdown Help",tabIndex:-1,children:a.jsx(Ki,{size:14})})]}),J&&a.jsxs("div",{className:at.markdownHelp,children:[a.jsxs("div",{className:at.helpHeader,children:[a.jsx("span",{children:"Markdown Guide"}),a.jsx("button",{onClick:()=>P(!1),className:at.helpClose,children:a.jsx(ec,{size:12})})]}),a.jsxs("div",{className:at.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:at.helpGridItem,children:a.jsx("code",{children:"`inline code`"})}),a.jsxs("div",{className:at.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)"})})]})]}),B||!o?a.jsx("textarea",{className:`${f.textarea} ${at.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",value:o,onChange:he=>se(he.target.value),onFocus:()=>te(!0),onBlur:()=>te(!1),rows:9,autoFocus:B}):a.jsx("div",{className:`${f.textarea} ${at.descriptionSurface} ${at.markdownPreview} ${at.markdownPreviewContainer}`,onClick:()=>te(!0),children:a.jsx(ny,{onTaskIdClick:St,children:o})})]}),a.jsxs("div",{className:at.compactMetaSection,children:[a.jsxs("div",{className:at.compactMetaGrid,children:[a.jsxs("div",{className:`${f.field} ${at.compactMetaField}`,children:[a.jsx("label",{id:"category-label",className:f.label,children:M?.category||"Category"}),a.jsx(rd,{value:l,options:it,onChange:he=>ce(String(he)),required:!0,ariaLabelledBy:"category-label"})]}),a.jsxs("div",{className:`${f.field} ${at.compactMetaField}`,children:[a.jsx("label",{id:"type-label",className:f.label,children:M?.type||"Type"}),a.jsx(rd,{value:i,options:ne,onChange:he=>Re(String(he)),ariaLabelledBy:"type-label"})]}),a.jsxs("div",{className:`${f.field} ${at.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-scheduled-date",className:f.label,children:$e("taskForm.scheduledLabel")}),a.jsx("input",{id:"task-form-scheduled-date",type:"date",value:S,onChange:he=>$(he.target.value),className:`${f.input} ${f.taskFormDateInput}`})]}),a.jsxs("div",{className:`${f.field} ${at.compactMetaField}`,children:[a.jsx("label",{id:"assignee-label",className:f.label,children:"Assigned To"}),a.jsx(rd,{value:k||"unassigned",options:c,onChange:he=>Ee(String(he)),ariaLabelledBy:"assignee-label"})]}),a.jsx("div",{className:at.compactMetaField,children:a.jsx(wp,{label:M?.priority||"Priority",options:X,value:d,onChange:Pe,type:"priority",showSelectedLabel:!1})}),a.jsxs("div",{className:`${f.field} ${at.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-due-date",className:f.label,children:$e("taskForm.dueLabel")}),a.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:he=>T(he.target.value),className:`${f.input} ${f.taskFormDateInput}`}),Ft&&a.jsx("span",{className:`${at.taskFormDateWarning} ${at.compactMetaFieldHint}`,children:$e("taskForm.dueBeforeScheduled")}),Mt&&a.jsx("span",{className:`${at.taskFormDateError} ${at.compactMetaFieldHint}`,children:$e("taskForm.overdue")})]}),y&&a.jsx("div",{className:at.compactMetaField,children:a.jsx(wp,{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:m,onChange:Ae,type:"general"})})]}),!t&&a.jsxs("div",{className:at.createWorkstreamRow,children:[a.jsx("label",{className:f.label,children:"Attach to workstream"}),a.jsxs("div",{className:f.pathInputGroup,children:[Je?a.jsx("input",{type:"text",className:f.input,value:g,onChange:he=>b(he.target.value),placeholder:"Type a workstream name or reference","aria-label":"Attach to workstream"}):a.jsx(rd,{value:g,options:Qe,onChange:he=>b(String(he)),placeholder:"Select workstream...",ariaLabel:"Attach to workstream",className:at.createWorkstreamDropdown}),a.jsx("button",{type:"button",className:f.secondaryHeaderBtn,onClick:()=>{if(Je){yt(!1),bt||b("");return}yt(!0)},"aria-label":Je?"Use workstream dropdown":"Enter workstream by name",title:Je?"Use workstream dropdown":"Enter workstream by name",children:a.jsx(Js,{size:14})})]})]})]}),a.jsxs("div",{className:at.sectionBlock,children:[a.jsx("div",{className:at.taxonomyFieldsGrid,children:Xe.map(he=>{if(he.id==="approach"&&he.isSystem)return null;const ot=re[he.id],xe=Array.isArray(ot)?ot.map(tt=>String(tt)):ot!=null&&ot!==""?[String(ot)]:[],Nt=he.options.filter(tt=>tt.status!=="retired"||xe.includes(String(tt.value)));return a.jsxs("div",{className:f.field,children:[a.jsx("label",{className:f.label,children:he.label}),he.description&&a.jsx("div",{className:`${at.settingsHint} tf-text-helper`,children:he.description}),he.widgetType==="level"?a.jsx(wp,{label:he.label,options:Nt.map(tt=>({...tt,label:tt.status==="retired"?`${tt.label} (Retired)`:tt.label})),value:re[he.id]||"",onChange:tt=>x(he.id,tt),type:"general",hideLabel:!0}):he.multiSelect?a.jsx("div",{className:`${f.dropdownList} ${at.softSectionSurface}`,children:Nt.map(tt=>{const Gt=String(tt.value),ha=xe.includes(Gt);return a.jsxs("button",{type:"button",className:`${at.specialistChip} ${ha?at.specialistChipActive:""}`,onClick:()=>{const Pa=ha?xe.filter(ua=>ua!==Gt):[...xe,Gt];x(he.id,Pa)},title:ha?"Click to remove":"Click to add",children:[ha&&a.jsx(Io,{size:12}),tt.status==="retired"?`${tt.label} (Retired)`:tt.label]},Gt)})}):a.jsxs("div",{className:f.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 tt=he.options.find(Pa=>String(Pa.value)===String(re[he.id])),Gt=tt?.icon&&ks[tt.icon]?ks[tt.icon]:Ki,ha=tt?.color||"var(--text-secondary)";return a.jsx("div",{className:f.fieldIcon,style:{color:jn(ha)},children:a.jsx(Gt,{size:16})})})(),a.jsxs("select",{value:re[he.id]||"",onChange:tt=>x(he.id,tt.target.value),className:`${f.select} ${f.field_dynamic}`,required:he.isRequired,children:[a.jsxs("option",{value:"",children:["Select ",he.label,"..."]}),Nt.map(tt=>a.jsx("option",{value:tt.value,children:tt.status==="retired"?`${tt.label} (Retired)`:tt.label},tt.value))]})]})]},he.id)})}),ve&&a.jsxs("div",{className:f.specialistSection,children:[a.jsxs("div",{className:f.toggleHeading,onClick:()=>H(!de),title:de?"Hide checklist":"Show checklist",children:[a.jsxs("label",{className:f.label,children:["Checklist"," ",v.length>0&&`(${Be}/${v.length})`]}),de?a.jsx(el,{size:14}):a.jsx(Yc,{size:14})]}),de&&a.jsxs("div",{className:`${f.dropdownList} ${at.stackedList} ${at.stackedListSpaced}`,children:[a.jsxs("div",{className:f.pathInputGroup,children:[a.jsx("input",{type:"text",className:f.input,placeholder:"Add checklist item",value:et,onChange:he=>Ue(he.target.value),onKeyDown:he=>{he.key==="Enter"&&(he.preventDefault(),Lt())}}),a.jsx("button",{type:"button",className:f.secondaryHeaderBtn,onClick:Lt,disabled:!et.trim(),children:"Add"})]}),v.length>0?a.jsx(mg,{sensors:Fe,collisionDetection:Xk,onDragEnd:vt,children:a.jsx(pg,{items:v.map(he=>he.id),strategy:fg,children:v.map((he,ot)=>a.jsx(zE,{id:he.id||`checklist-${ot}`,item:he,onToggle:()=>{const xe=new Date().toISOString();N(v.map((Nt,tt)=>tt===ot?{...Nt,isCompleted:!Nt.isCompleted,updatedAt:xe}:Nt))},onRemove:()=>N(v.filter((xe,Nt)=>Nt!==ot).map((xe,Nt)=>({...xe,order:Nt})))},he.id||`checklist-${ot}`))})}):a.jsx("div",{className:`${at.settingsHint} tf-text-helper`,children:"No checklist items yet."})]})]})]}),a.jsxs("div",{children:[a.jsx(We.Suspense,{fallback:null,children:a.jsx($E,{taskId:t,taskReferenceLabel:dt,workspaceId:W,apiBaseUrl:V,contextFiles:I,onAddContextFile:ie,onRemoveContextFile:ee,onUpdateContextCaption:Q})}),a.jsx("div",{className:`${at.taskFormLifecycle} ${at.taskFormMetaDivider}`,children:a.jsx("div",{className:at.taskFormMetaGrid,children:qe&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:at.taskFormDateRow,children:[a.jsx("span",{className:at.taskFormDateLabel,children:$e("taskForm.createdLabel")}),a.jsxs("span",{className:at.taskFormMetaStack,children:[a.jsx("span",{className:at.taskFormDateValue,children:Ze||$e("taskForm.emptyValue")}),a.jsx("span",{className:at.taskFormMetaActor,children:Ka?`by ${Ka}`:$e("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:at.taskFormDateRow,children:[a.jsx("span",{className:at.taskFormDateLabel,children:$e("taskForm.updatedLabel")}),a.jsxs("span",{className:at.taskFormMetaStack,children:[a.jsx("span",{className:at.taskFormDateValue,children:Pt||$e("taskForm.emptyValue")}),a.jsx("span",{className:at.taskFormMetaActor,children:Oa?`by ${Oa}`:$e("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:at.taskFormDateRow,children:[a.jsx("span",{className:at.taskFormDateLabel,children:$e("taskForm.completedLabel")}),a.jsxs("span",{className:at.taskFormMetaStack,children:[a.jsx("span",{className:at.taskFormDateValue,children:kt||$e("taskForm.emptyValue")}),a.jsx("span",{className:at.taskFormMetaActor,children:Kt?`by ${Kt}`:$e("taskForm.emptyValue")})]})]})]})})})]})]}),wa,a.jsxs("div",{className:at.keyboardHint,children:["Press ",a.jsx("kbd",{children:navigator.platform.includes("Mac")?"⌥":"Alt"})," to toggle"]})]})]})}function Vi({ariaLabel:e,children:t,disabled:n=!1,onClick:s,title:o}){return a.jsx("button",{type:"button",className:`${f.taskIdBadge} ${f.taskHierarchyActionBtn}`,onClick:s,disabled:n,title:o,"aria-label":e,children:t})}function Sy({editingTaskId:e,loading:t,autoSaveState:n="idle",title:s,handleSubmit:o,resetForm:l,handleCopyId:i,copiedId:d,tasks:m,currentTask:y,currentTaskWorkstream:k,currentTaskInitiative:S,workstreamInput:h="",onWorkstreamInputChange:g,onSetWorkstreamForCurrentTask:v,handleToggleInProgress:A,handleToggleReview:_,handleToggleComplete:I,handleToggleCancel:W,handleSetStatus:V,handleArchiveTask:B,handleUnarchiveTask:J,handleRestoreDeletedTask:de,handlePermanentlyDeleteDeletedTask:ve}){const[re,x]=We.useState(!1),K=y??(e&&m.find(se=>se.id===e)||null),me=!!K?.isArchived,pe=!!K?.isDeleted,X=xg(K),M=X.label||(X.isProvisional?"Pending":""),F=X.isProvisional,ue=!!X.label,ge=k?cm(k)||k.id:"",O=S?Qr(S)||S.id:"";We.useEffect(()=>{k&&x(!1)},[k?.id]);const _e=We.useCallback(()=>{h.trim()&&v?.()},[v,h]),Ne=We.useCallback(()=>{x(!1),g?.(""),v?.(null)},[v,g]);return a.jsx("div",{className:f.stickyActionHeader,children:e?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:f.taskHierarchyHeader,children:[a.jsxs("div",{className:f.taskHierarchyBadgeRow,children:[k?a.jsx(a.Fragment,{children:a.jsx(Vi,{onClick:Ne,disabled:t||me||pe,title:"Remove from workstream",ariaLabel:"Remove from workstream",children:a.jsx(Vu,{size:13})})}):null,S?a.jsxs("span",{className:f.taskHierarchySegment,children:[a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),a.jsx(Zu,{copied:d===O,onClick:se=>i(se,O),disabled:t,title:"Copy initiative reference",label:O})]}):null,k?a.jsxs("span",{className:f.taskHierarchySegment,children:[a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),a.jsx(Zu,{copied:d===ge,onClick:se=>i(se,ge),disabled:t,title:"Copy workstream reference",label:ge})]}):a.jsx(a.Fragment,{children:a.jsx(Vi,{onClick:()=>{g?.(""),x(se=>!se)},disabled:t||me||pe,title:"Attach to workstream",ariaLabel:"Attach to workstream",children:a.jsx(em,{size:13})})}),M?a.jsxs("span",{className:f.taskHierarchySegment,children:[a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),a.jsx(Zu,{copied:ue&&d===X.label,onClick:se=>i(se,X.label),disabled:t||!ue,title:ue?$e("actionHeader.copyTaskIdTitle"):"Task reference pending sync",label:M})]}):null,F?a.jsx("span",{className:f.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),re&&!k?a.jsxs("div",{className:f.taskHierarchyEditor,children:[a.jsx("input",{type:"text",className:`${f.input} ${f.taskHierarchyInput}`,value:h,onChange:se=>g?.(se.target.value),placeholder:"WS-123","aria-label":"Attach workstream reference",onKeyDown:se=>{se.key==="Enter"&&(se.preventDefault(),_e()),se.key==="Escape"&&(se.preventDefault(),g?.(""),x(!1))}}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:_e,disabled:!h.trim()||t,title:"Attach workstream","aria-label":"Attach workstream",children:a.jsx(Io,{size:14})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>{g?.(""),x(!1)},disabled:t,title:"Cancel workstream attach","aria-label":"Cancel workstream attach",children:a.jsx(ec,{size:14})})]}):null]}),a.jsx("div",{className:f.taskSaveStatusCenter,children:a.jsx("div",{className:`${f.taskSaveStatus} ${n==="error"?f.taskSaveStatusError:""}`,"aria-live":"polite",children:n==="saving"?a.jsxs(a.Fragment,{children:[a.jsx(mr,{size:14,className:f.spinner}),a.jsx("span",{children:"Saving…"})]}):n==="saved"?a.jsx("span",{children:"Saved"}):n==="error"?a.jsx("span",{children:"Save failed"}):null})}),a.jsx("div",{className:f.editActionsGroup,children:pe&&K?.deletedRecordId?a.jsxs(a.Fragment,{children:[de&&a.jsx("button",{type:"button",className:f.actionBtn,onClick:()=>de(K.deletedRecordId||""),disabled:t,title:"Restore deleted task",children:a.jsx(pd,{size:16})}),ve&&a.jsx("button",{type:"button",className:`${f.actionBtn} ${f.deleteBtn}`,onClick:()=>ve(K.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task",children:a.jsx(Sm,{size:16})})]}):a.jsx(uy,{task:K,disabled:t,statusDisabled:t||me,archiveActionMode:me?"unarchive":"auto",onSetStatus:(se,ce)=>{if(V){V(se,ce);return}if(ce==="in-progress"){A(se);return}if(ce==="review"){_(se);return}if(ce==="done"){I(se);return}ce==="cancelled"&&W(se)},onArchiveTask:B,onUnarchiveTask:se=>J?.(se.id)})})]}):a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",onClick:l,disabled:t,className:f.secondaryHeaderBtn,title:$e("actionHeader.clearFormTitle"),children:[a.jsx(pd,{size:16}),$e("actionHeader.clear")]}),a.jsxs("button",{type:"button",onClick:se=>o(se),disabled:t||!s.trim(),className:f.primaryUpdateBtn,title:$e("actionHeader.addTaskTitle"),children:[t?a.jsx(mr,{size:16,className:f.spinner}):a.jsx(Js,{size:16}),$e("actionHeader.addTask")]})]})})}const HE="_topNoticeLayer_1m6a1_1",GE="_topNotice_1m6a1_1",VE="_topNoticeMessage_1m6a1_32",qE="_topNoticeSuccess_1m6a1_38",KE="_topNoticeError_1m6a1_44",ZE="_topNoticeInfo_1m6a1_50",YE="_topNoticeDismiss_1m6a1_56",zi={topNoticeLayer:HE,topNotice:GE,topNoticeMessage:VE,topNoticeSuccess:qE,topNoticeError:KE,topNoticeInfo:ZE,topNoticeDismiss:YE};function wy({notice:e,onDismiss:t}){if(!e)return null;const n=e.tone==="error"?zi.topNoticeError:e.tone==="success"?zi.topNoticeSuccess:zi.topNoticeInfo,s=e.tone==="error"?"alert":"status";return a.jsx("div",{className:zi.topNoticeLayer,children:a.jsxs("div",{className:`${zi.topNotice} ${n}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?a.jsx(fd,{size:14}):e.tone==="success"?a.jsx(Io,{size:14}):a.jsx(Rk,{size:14}),a.jsx("span",{className:zi.topNoticeMessage,children:e.message}),t&&a.jsx("button",{type:"button",className:zi.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:a.jsx(ec,{size:14})})]})})}const JE=We.lazy(()=>vs(()=>import("./TaskSettings-f2ga42_V.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function QE(e){const{activeTab:t,setActiveTab:n,isOpen:s,setIsOpen:o,currentTheme:l,setCurrentTheme:i,saveSettings:d,pathSaved:m,keyShortcut:y,setKeyShortcut:k,jsonBackupEnabled:S,setJsonBackupEnabled:h,mcpHostRoot:g,setMcpHostRoot:v,settingsSection:A,setSettingsSection:_,projectRoot:I,projectName:W,mcpScriptPath:V,serverHostRoot:B,showFolderBrowser:J,setShowFolderBrowser:de,folders:ve,files:re,currentBrowsePath:x,fetchFolders:K,browserTarget:me,setBrowserTarget:pe,handleSelectPath:X,handleAddPath:M,handleRemovePath:F,tasks:ue,loadingTasks:ge,archivedTasks:O,deletedTasks:_e,activeCategories:Ne,activeTypes:se,priorities:ce,taxonomyDisplayLabels:Re,approaches:Pe,taxonomies:Ae,searchQuery:Ee,setSearchQuery:$,filterCategories:T,setFilterCategories:b,filterTypes:N,setFilterTypes:D,filterPriorities:te,setFilterPriorities:P,filterStatus:H,setFilterStatus:be,filterAssignees:U,setFilterAssignees:ie,assigneeOptions:ee,filterTaxonomies:Q,setFilterTaxonomies:q,sortBy:Se,setSortBy:we,sortOrder:Te,toggleSortOrder:Me,showArchive:nt,setShowArchive:gt,taskScope:lt,setTaskScope:St,clearFilters:qe,filteredTasks:Ct,filteredArchive:dt,groupedTasks:Xe,collapsedCategories:it,setCollapsedCategories:ne,handleEdit:st,handleDelete:Ze,handleCopyId:Pt,handleToggleComplete:kt,handleToggleCancel:It,handleToggleInProgress:Ft,handleToggleReview:Mt,handleArchiveTask:Be,handleBulkArchive:et,handleUnarchive:Ue,handleRestoreDeletedTask:Je,handlePermanentlyDeleteDeletedTask:yt,handleEmptyDeletedTasks:ct,fetchArchive:ae,editingTaskId:Qe,loading:bt,error:Ot,title:Bt,setTitle:Fe,description:Lt,setDescription:vt,checklistItems:E,setChecklistItems:c,category:Y,setCategory:ye,type:Ie,setType:ze,priority:Ge,setPriority:je,complexity:Vt,setComplexity:qt,manualComplexityEnabled:Et,checklistDropdownEnabled:Tt,showTaskCardStatusLabel:Wt,approach:Ht,setApproach:sa,assignee:Kt,setAssignee:Ka,scheduledDate:Oa,setScheduledDate:Xa,dueDate:wa,setDueDate:he,workstreamInput:ot,setWorkstreamInput:xe,formTaxonomies:Nt,setFormTaxonomies:tt,comments:Gt,newCommentText:ha,setNewCommentText:Pa,attachments:ua,setAttachments:ca,setAttachmentsDirty:Dt,descriptionFocused:aa,setDescriptionFocused:Za,showMarkdownHelp:$t,setShowMarkdownHelp:Yn,showChecklist:ba,setShowChecklist:ea,showComments:Br,setShowComments:Ta,handleSubmit:en,resetForm:Ca,handleAddComment:Jt,handleSetWorkstreamForCurrentTask:Ra,handleOpenTaskById:la,autoSaveState:kn,unsavedModalOpen:mn,setUnsavedModalOpen:Jn,pendingNavigation:ma,handleNavigation:Cr,handleClose:Wr,scheduleWarningPrompt:vn,confirmScheduleWarning:Ba,cancelScheduleWarning:Ar,uiNotice:Sn,clearNotice:Pn,taskReturnTrail:tn,clearReturnToParentTask:Aa,returnToPreviousTask:Fr,copiedId:_t,recentlyChangedTaskIds:wn,tasksScrollRef:pn,setTasksScrollPos:bn,currentTask:$a,currentTaskWorkstream:Mn,currentTaskInitiative:ka,exportEnvironment:Ua,setExportEnvironment:_n,exportWorkflowsPath:da,setExportWorkflowsPath:En,exportResult:ta,exportingResource:za,availableWorkflows:_a,onExportWorkflows:Qn,availableEnvironments:Xn,handleUpdateCategory:Ma,handleRemoveCategory:na,handleSaveCategory:pa,handleUpdateCategoryIcon:fn,handleUpdateCategoryColor:an,handleSaveType:pr,handleRemoveType:fr,handleUpdateTaxonomies:Qt,handleUpdatePriorities:Ss,pathValidation:Ha,validatePaths:er,getCategoryPaths:es,commentsEndRef:hn,currentWorkspaceId:zn,settingsModel:Or,onHeaderMouseDown:Cn,isDragging:Ga}=e,xr=r.useRef(null),[Na,ws]=We.useState(0);r.useLayoutEffect(()=>{if(t==="tasks"&&pn.current&&Na>0){const Ye=setTimeout(()=>{pn.current&&(pn.current.scrollTop=Na)},50);return()=>clearTimeout(Ye)}},[t,Na,ue]);const nn=Ye=>{we(Ye)},Ir=()=>{Cr(()=>{if(t==="add"||t==="settings"){if(t==="add"&&Fr())return;t==="add"&&tn.length>0&&Aa(),t==="add"&&Ca(),n("tasks")}else e.onClose?e.onClose():Wr()})},hr=()=>{Jn(!1),ma?(t==="add"&&Ca(),ma()):n("tasks")},$r=async()=>{await en({preventDefault:()=>{}}),Jn(!1),ma&&ma()},gn=(Ye,Ut)=>{tt(Ea=>({...Ea,[Ye]:Ut})),Ye==="approach"&&typeof Ut=="string"&&sa(Ut)},gr=r.useCallback(Ye=>{Ca(),ye(Ye),Cr(()=>{n("add")})},[Ca,ye,n,Cr]),An=We.useMemo(()=>_e.map(Ye=>({...Ye.taskSnapshot,isDeleted:!0,deletedRecordId:Ye.id})),[_e]),Dn=We.useMemo(()=>new globalThis.Map(_e.map(Ye=>[Ye.taskId,Ye])),[_e]),tr=We.useMemo(()=>{const Ye=xm(Ee),Ut={categories:Ne,types:se,priorities:ce,assigneeOptions:ee,taxonomies:Ae},Ea=Ne.every(Rt=>T.includes(Rt.value)),oa=se.every(Rt=>N.includes(Rt.value)),cn=Array.from(new Set(te.map(Rt=>Number(Rt)).filter(Rt=>Number.isFinite(Rt)))),bs=ce.map(Rt=>Number(Rt.value)).filter(Rt=>Number.isFinite(Rt)).every(Rt=>cn.includes(Rt)),as=["task","in-progress","review","done","cancelled","on-hold"].every(Rt=>H.includes(Rt)),Ya=ee.length>0&&ee.every(Rt=>U.includes(Rt.value)),Wa=wd(Ae,An);return An.filter(Rt=>{const yr=dm(Rt,Ye,Ut),Hn=Ea||T.includes(Rt.category),Ln=bs||cn.includes(am(Rt.priority)),ar=oa||N.includes(Rt.type||Lr),Cs=as||H.includes(Rt.status),Tr=Ya||U.includes(Rt.assignee||"unassigned"),zr=Object.entries(Q).every(([Bs,Bn])=>{const Wn=Wa.find(jt=>jt.id===Bs);if(!Wn||hf(Wn,An).every(jt=>Bn.includes(jt.value)))return!0;const At=Rt.taxonomies?.[Bs];return At?Array.isArray(At)?At.some(jt=>Bn.includes(jt)):Bn.includes(At):Bn.includes("")});return yr&&Hn&&Ln&&ar&&Cs&&Tr&&zr}).sort((Rt,yr)=>um(Rt,yr,Se,Te,Ae))},[Ne,se,O,ee,An,U,T,te,H,Q,N,ce,Ee,Se,Te,Ae,ue]),ts=We.useMemo(()=>{const Ye={};return tr.forEach(Ut=>{const oa=Ne.find(cn=>cn.value===Ut.category||cn.label===Ut.category)?.label||Ut.category||"General";Ye[oa]||(Ye[oa]=[]),Ye[oa].push(Ut)}),Ye},[Ne,tr]),Ur=lt==="archived"?dt.length:lt==="deleted"?tr.length:Ct.length;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{ref:xr,className:`${xt.modal} ${f.coreModal} ${t==="settings"?xt.settingsViewModal:""}`,"data-theme":l,children:[a.jsxs("div",{className:"tf-modal-header",onMouseDown:Cn,style:{cursor:Cn?Ga?"grabbing":"grab":"default"},children:[a.jsxs("div",{className:`tf-modal-title ${Xt.headerTitleWidget}`,children:["Taskforce",W&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:f.projectSlash,children:"/"}),a.jsx("span",{className:f.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:W})]}),a.jsx("span",{className:f.taskCountBadge,title:`${lt.charAt(0).toUpperCase()+lt.slice(1)} tasks`,children:Ur})]}),a.jsxs("div",{className:xt.headerActions,children:[t==="tasks"&&a.jsx(a.Fragment,{children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{Cr(()=>{Ca(),n("add")})},title:"Add New Task",children:a.jsx(Js,{size:18})})}),a.jsx("button",{className:`tf-control-icon ${t==="settings"?"tf-control-icon-active":""}`,onClick:()=>{t!=="settings"&&Cr(()=>{n("settings")})},title:"Settings",children:a.jsx(og,{size:18})}),a.jsx("button",{className:"tf-control-icon",onClick:Ir,title:t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?a.jsx(ec,{size:20}):a.jsx(Nk,{size:20})})]})]}),a.jsx(wy,{notice:Sn,onDismiss:Pn}),t==="add"&&a.jsx(Sy,{editingTaskId:Qe,loading:bt,autoSaveState:kn,title:Bt,currentTask:$a,currentTaskWorkstream:Mn,currentTaskInitiative:ka,workstreamInput:ot,onWorkstreamInputChange:xe,onSetWorkstreamForCurrentTask:Ra,handleSubmit:en,resetForm:Ca,handleCopyId:Pt,copiedId:_t,tasks:ue,handleToggleInProgress:Ft,handleToggleReview:Mt,handleToggleComplete:kt,handleToggleCancel:It,handleArchiveTask:Be,handleUnarchiveTask:Ye=>{if($a?.isDeleted){const Ut=Dn.get(Ye);Ut&&Je(Ut.id);return}Ue(Ye)},handleRestoreDeletedTask:Ye=>{Je(Ye)},handlePermanentlyDeleteDeletedTask:Ye=>{yt(Ye)}}),t==="tasks"&&a.jsx(ky,{ref:pn,tasks:ue,archivedTasks:O,categories:Ne,types:se,priorities:ce,taxonomyDisplayLabels:Re,taxonomies:Ae,searchQuery:Ee,filterCategories:T,filterTypes:N,filterPriorities:te,filterStatus:H,filterAssignees:U,assigneeOptions:ee,filterTaxonomies:Q,sortBy:Se,sortOrder:Te,showArchive:nt,taskScope:lt,collapsedCategories:it,loadingTasks:ge,filteredTasks:Ct,filteredArchive:dt,groupedTasks:Xe,filteredDeletedTasks:tr,groupedDeletedTasks:ts,copiedId:_t,recentlyChangedTaskIds:wn,showTaskCardStatusLabel:Wt,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:$,onFilterCategoriesChange:Ye=>b(Ye),onFilterTypesChange:Ye=>D(Ye),onFilterPrioritiesChange:P,onFilterStatusChange:be,onFilterAssigneesChange:Ye=>ie(Ye),onTaxonomyFilterChange:(Ye,Ut)=>q(Ea=>({...Ea,[Ye]:Ut})),onSortByChange:nn,onSortOrderChange:Me,onShowArchiveChange:gt,onTaskScopeChange:St,onClearFilters:qe,onToggleCategory:Ye=>ne(Ut=>({...Ut,[Ye]:!Ut[Ye]})),onEditTask:st,onOpenTaskById:la,onCopyId:Pt,onToggleInProgress:Ft,onToggleReview:Mt,onToggleComplete:kt,onToggleCancel:It,onArchiveTask:Be,onBulkArchive:et,onUnarchive:Ye=>{const Ut=Dn.get(Ye);if(Ut){Je(Ut.id);return}Ue(Ye)},onDelete:Ye=>{const Ut=Dn.get(Ye);if(Ut){yt(Ut.id);return}Ze(Ye)},onDeleteAllDeleted:()=>{ct()},onFetchArchive:ae,onAddTaskToCategory:gr,supplementalTasks:An}),t==="add"&&a.jsx(vy,{editingTaskId:Qe,error:Ot,title:Bt,description:Lt,checklistItems:E,category:Y,type:Ie,priority:Ge,complexity:Vt,manualComplexityEnabled:Et,approach:Ht,assignee:Kt,scheduledDate:Oa,dueDate:wa,workstreamInput:ot,formTaxonomies:Nt,onTaxonomyChange:gn,taxonomies:Ae,comments:Gt,newCommentText:ha,contextFiles:ua,currentWorkspaceId:zn,apiBaseUrl:"",descriptionFocused:aa,showMarkdownHelp:$t,showChecklist:ba,checklistEnabled:Tt,showComments:Br,categories:Ne,types:se,priorities:ce,taxonomyDisplayLabels:Re,assigneeOptions:ee,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:_t,onTitleChange:Fe,onDescriptionChange:vt,onChecklistItemsChange:c,onCategoryChange:ye,onTypeChange:ze,onPriorityChange:je,onComplexityChange:qt,onApproachChange:Ye=>{sa(Ye),tt(Ut=>({...Ut,approach:Ye}))},onAssigneeChange:Ka,onScheduledDateChange:Xa,onDueDateChange:he,onWorkstreamInputChange:xe,onNewCommentTextChange:Pa,onDescriptionFocusedChange:Za,onShowMarkdownHelpChange:Yn,onShowChecklistChange:ea,onShowCommentsChange:Ta,onOpenSettings:Ye=>{Cr(()=>{_(Ye),n("settings")})},onSubmit:en,commentsEndRef:hn,onAddComment:()=>Jt(ha),onOpenTaskById:la,onAddContextFile:Ye=>{Dt(!0),ca(Ut=>[...Ut,Ye])},onRemoveContextFile:async Ye=>{Dt(!0),ca(Ut=>Ut.filter((Ea,oa)=>oa!==Ye))},onUpdateContextCaption:(Ye,Ut)=>{Dt(!0),ca(Ea=>Ea.map((oa,cn)=>cn!==Ye?oa:typeof oa=="string"?{path:oa,caption:Ut,timestamp:new Date().toISOString()}:{...oa,caption:Ut}))},onCopyId:Pt,onToggleInProgress:Ft,onToggleReview:Mt,onToggleComplete:kt,onToggleCancel:It,onArchiveTask:Be,onUnarchive:Ye=>{if($a?.isDeleted){const Ut=Dn.get(Ye);Ut&&Je(Ut.id);return}Ue(Ye)},currentTask:$a}),t==="settings"&&a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(JE,{settingsModel:Or,onSectionChange:_})})]}),J&&qi.createPortal(a.jsx("div",{className:ja.overlay,children:a.jsxs("div",{className:ja.browser,children:[a.jsxs("div",{className:ja.header,children:[a.jsxs("div",{className:ja.pathInfo,children:[a.jsx(Co,{size:14}),a.jsx("span",{children:x||"Project Root"})]}),a.jsxs("div",{className:ja.actions,children:[x&&a.jsx("button",{className:f.helpLink,onClick:()=>{const Ye=x.split("/").filter(Boolean);Ye.pop(),K(Ye.length?Ye.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:f.helpLink,onClick:()=>de(!1),children:"Close"})]})]}),a.jsxs("div",{className:ja.list,children:[me&&typeof me=="object"&&a.jsxs("div",{className:`${ja.item} ${ja.itemCurrent}`,onClick:()=>X(x),children:[a.jsx(Io,{size:14})," Select Current: ./",x||"(root)"]}),ve.map(Ye=>a.jsxs("div",{className:ja.item,onClick:()=>K(x+Ye+"/"),children:[a.jsx(Co,{size:14})," ",Ye,"/"]},Ye)),re.map(Ye=>a.jsxs("div",{className:`${ja.item} ${ja.itemFile}`,onClick:()=>X(x+Ye),children:[a.jsx(jp,{size:14})," ",Ye]},Ye)),ve.length===0&&re.length===0&&a.jsx("div",{className:`${ja.item} ${ja.empty}`,children:"No items found"})]})]})}),document.body),mn&&a.jsx("div",{className:`${xt.overlay} ${xt.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${xt.modal} ${xt.unsavedModal}`,"data-theme":l,children:[a.jsx("div",{className:`tf-modal-header ${xt.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${xt.unsavedTitle}`,children:[a.jsx(fd,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${xt.form} ${xt.unsavedContent}`,children:a.jsx("p",{className:xt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${xt.formActions} ${xt.unsavedActions}`,children:[a.jsx("button",{className:f.cancelBtn,onClick:()=>Jn(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:f.destructiveBtn,onClick:hr,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:f.submitBtn,onClick:$r,disabled:bt,title:"Save changes and leave",children:[bt?a.jsx(mr,{size:16,className:f.spinner}):a.jsx(ig,{size:16}),"Save"]})]})]})}),vn&&a.jsx("div",{className:`${xt.overlay} ${xt.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${xt.modal} ${xt.unsavedModal}`,"data-theme":l,children:[a.jsx("div",{className:`tf-modal-header ${xt.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${xt.unsavedTitle}`,children:[a.jsx(fd,{size:20}),"Date Warning"]})}),a.jsxs("div",{className:`${xt.form} ${xt.unsavedContent}`,children:[a.jsx("p",{className:xt.unsavedText,children:"Due date is before scheduled date."}),a.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",vn.dueDate," · Scheduled: ",vn.scheduledDate]})]}),a.jsxs("div",{className:`${xt.formActions} ${xt.unsavedActions}`,children:[a.jsx("button",{className:f.cancelBtn,onClick:Ar,children:"Go Back"}),a.jsx("button",{className:f.submitBtn,onClick:Ba,children:"Save Anyway"})]})]})})]})}const XE="_accountMenuWrap_1mocf_1",eD="_avatarBtn_1mocf_5",tD="_avatarBadge_1mocf_9",aD="_avatarImage_1mocf_24",nD="_avatarIcon_1mocf_30",rD="_accountMenu_1mocf_1",sD="_accountMenuItem_1mocf_48",oD="_accountMenuItemActive_1mocf_68",iD="_accountMenuSection_1mocf_73",cD="_accountMenuSectionLabel_1mocf_79",lD="_accountMenuMeta_1mocf_88",dD="_accountMenuHint_1mocf_93",uD="_accountIdentityEmail_1mocf_99",mD="_accountIdentityBlock_1mocf_104",pD="_accountIdentityMetaLine_1mocf_109",fD="_accountIdentityMetaAction_1mocf_116",hD="_accountIdentityMetaValue_1mocf_125",gD="_accountIdentityMetaLabel_1mocf_130",yD="_accountMenuError_1mocf_159",kD="_accountHubCard_1mocf_165",vD="_profileAvatarEditor_1mocf_172",SD="_profileEditLayout_1mocf_178",wD="_profileFieldStack_1mocf_185",bD="_profileFieldLabel_1mocf_191",pt={accountMenuWrap:XE,avatarBtn:eD,avatarBadge:tD,avatarImage:aD,avatarIcon:nD,accountMenu:rD,accountMenuItem:sD,accountMenuItemActive:oD,accountMenuSection:iD,accountMenuSectionLabel:cD,accountMenuMeta:lD,accountMenuHint:dD,accountIdentityEmail:uD,accountIdentityBlock:mD,accountIdentityMetaLine:pD,accountIdentityMetaAction:fD,accountIdentityMetaValue:hD,accountIdentityMetaLabel:gD,accountMenuError:yD,accountHubCard:kD,profileAvatarEditor:vD,profileEditLayout:SD,profileFieldStack:wD,profileFieldLabel:bD},_D="_authBlockedBanner_1virb_1",CD="_loginView_1virb_10",AD="_loginCard_1virb_20",xD="_loginCloseBtn_1virb_34",ID="_loginLogo_1virb_56",TD="_authBrandRow_1virb_62",RD="_setupHeaderRow_1virb_68",ND="_runtimeIconBadge_1virb_75",jD="_loginTitle_1virb_94",PD="_loginTitleAccent_1virb_105",MD="_loginSubtitle_1virb_109",ED="_loginError_1virb_115",DD="_loginField_1virb_121",LD="_loginFieldLabel_1virb_126",BD="_loginInput_1virb_133",WD="_loginPrimaryBtn_1virb_149",FD="_authPrimaryActions_1virb_154",OD="_registerConsent_1virb_159",$D="_registerConsentLink_1virb_167",UD="_authModeSwitch_1virb_177",zD="_authModeSwitchLink_1virb_184",HD="_authModeLinks_1virb_199",GD="_authSecondaryActions_1virb_207",VD="_authModeLink_1virb_199",qD="_optionGrid_1virb_236",KD="_optionGroup_1virb_242",ZD="_optionRow_1virb_247",YD="_inlineHint_1virb_254",JD="_actionRowEnd_1virb_260",QD="_oauthProviders_1virb_267",XD="_oauthDivider_1virb_274",eL="_oauthButtons_1virb_290",tL="_oauthButton_1virb_290",fe={authBlockedBanner:_D,loginView:CD,loginCard:AD,loginCloseBtn:xD,loginLogo:ID,authBrandRow:TD,setupHeaderRow:RD,runtimeIconBadge:ND,loginTitle:jD,loginTitleAccent:PD,loginSubtitle:MD,loginError:ED,loginField:DD,loginFieldLabel:LD,loginInput:BD,loginPrimaryBtn:WD,authPrimaryActions:FD,registerConsent:OD,registerConsentLink:$D,authModeSwitch:UD,authModeSwitchLink:zD,authModeLinks:HD,authSecondaryActions:GD,authModeLink:VD,optionGrid:qD,optionGroup:KD,optionRow:ZD,inlineHint:YD,actionRowEnd:JD,oauthProviders:QD,oauthDivider:XD,oauthButtons:eL,oauthButton:tL};function aL(e={x:0,y:0}){const[t,n]=r.useState(e),[s,o]=r.useState(!1),[l,i]=r.useState({x:0,y:0}),[d,m]=r.useState(0),y=r.useRef(null),k=r.useCallback(g=>{const v=g.target;if(!(v.closest("button")||v.closest("input")||v.closest("select")||v.closest("textarea")||v.closest('[role="button"]')||v.closest(".no-drag"))){if(y.current){const A=y.current.getBoundingClientRect();m(A.top-t.y)}o(!0),i({x:g.clientX-t.x,y:g.clientY-t.y})}},[t]),S=r.useCallback(g=>{if(s){let v=g.clientX-l.x,A=g.clientY-l.y;A<-d&&(A=-d),n({x:v,y:A})}},[s,l,d]),h=r.useCallback(()=>{o(!1)},[]);return r.useEffect(()=>(s?(window.addEventListener("mousemove",S),window.addEventListener("mouseup",h)):(window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",h)),()=>{window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",h)}),[s,S,h]),{position:t,isDragging:s,handleMouseDown:k,modalRef:y,setPosition:n}}function Ls({isOpen:e,onClose:t,title:n,children:s,footer:o,size:l="md",theme:i=tm,className:d,headerActions:m,draggable:y=!1,isSettings:k=!1,closeOnOverlayClick:S=!0}){const h=r.useRef(null),{position:g,isDragging:v,handleMouseDown:A,modalRef:_}=aL();if(r.useEffect(()=>{const W=V=>{V.key==="Escape"&&e&&t()};return window.addEventListener("keydown",W),()=>window.removeEventListener("keydown",W)},[e,t]),r.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),!e)return null;const I={sm:xt.modalSizeSm,md:xt.modalSizeMd,mdWide:xt.modalSizeMdWide,lg:xt.modalSizeLg,xl:xt.modalSizeXl,full:xt.modalSizeFull};return qi.createPortal(a.jsx("div",{className:`${xt.overlay} ${d||""} ${xt.overlayHighZ}`,ref:h,onClick:W=>{S&&W.target===h.current&&t()},children:a.jsxs("div",{ref:_,className:`tf-surface-modal tf-modal-shell ${xt.modal} tf-scrollbar-scope ${I[l]} ${y?xt.draggableModal:""} ${k?xt.settingsViewModal:""}`,"data-theme":i,style:{transform:y?`translate(${g.x}px, ${g.y}px)`:void 0,transition:v?"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 ${y?xt.draggableHeader:""}`,onMouseDown:y?A:void 0,style:{cursor:y?v?"grabbing":"grab":"default"},children:[a.jsx("div",{className:"tf-modal-title",children:n}),a.jsxs("div",{className:xt.headerActions,children:[m,a.jsx("button",{className:"tf-control-icon",onClick:t,title:"Close",children:a.jsx(ec,{size:20})})]})]}),a.jsx("div",{className:xt.modalContent,children:s}),o&&a.jsx("div",{className:`${xt.formActions} ${xt.modalFooter}`,children:o})]})}),document.body)}const nL="_modalBody_1mute_1",rL="_mutedText_1mute_5",sL="_sectionText_1mute_10",oL="_sectionTextSpaced_1mute_15",iL="_sectionTextTop_1mute_20",cL="_errorText_1mute_25",lL="_inlineFieldLabel_1mute_29",dL="_wrapRow_1mute_35",uL="_actionRowEnd_1mute_42",mL="_modalActionsEnd_1mute_50",pL="_memberRow_1mute_56",fL="_memberTitle_1mute_62",hL="_memberActions_1mute_66",gL="_selectRole_1mute_73",yL="_selectPermission_1mute_77",kL="_inviteRow_1mute_81",vL="_listHeading_1mute_85",SL="_auditList_1mute_90",wL="_auditPager_1mute_96",bL="_labelFixed_1mute_103",ft={modalBody:nL,mutedText:rL,sectionText:sL,sectionTextSpaced:oL,sectionTextTop:iL,errorText:cL,inlineFieldLabel:lL,wrapRow:dL,actionRowEnd:uL,modalActionsEnd:mL,memberRow:pL,memberTitle:fL,memberActions:hL,selectRole:gL,selectPermission:yL,inviteRow:kL,listHeading:vL,auditList:SL,auditPager:wL,labelFixed:bL};function _L({isOpen:e,theme:t,onClose:n,onConfirm:s}){return a.jsx(Ls,{isOpen:e,onClose:n,title:"New Workspace",size:"sm",theme:t,draggable:!0,footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:f.cancelBtn,onClick:n,children:"Cancel"}),a.jsx("button",{type:"button",className:f.submitBtn,onClick:s,children:"Start Setup"})]}),children:a.jsx("div",{className:`${xt.form} ${ft.modalBody}`,children:a.jsx("p",{className:ft.sectionText,children:"Create and configure a new workspace."})})})}const CL=new Set(["active","trialing","grace"]),Nh={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."},Uu={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 Xi(e){return String(e||"").trim()}function by(e){return Xi(e).toLowerCase()}function AL(e){return Xi(e).toLowerCase()}function xL(e){return!!(Xi(e?.stripeCustomerId)||Xi(e?.stripeSubscriptionId))}function IL(e){const t=Xi(e?.trialEnd||e?.effectiveUntil);if(t){const n=new Date(t);if(!Number.isNaN(n.getTime()))return n.getTime()<=Date.now()?"Your trial end date has passed. Billing status is updating.":`Your trial is active through ${n.toLocaleString()}.`}return"Your trial is active. Continue to Taskforce or manage billing anytime."}function TL(e){return CL.has(by(e))}function Hp(e,t){const n=by(e?.entitlementState),s=AL(e?.gate||t),o=Xi(e?.billingConflictCode).toUpperCase(),l=Xi(e?.message),i=TL(n),d=xL(e);return o==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:n||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:Nh.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:d,markCurrentPlan:!1}:o==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:n||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:Nh.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:d,markCurrentPlan:!1}:n==="trialing"?{entitlementState:n,gate:s||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:IL(e),primaryAction:d?"manage_billing":"none",primaryLabel:d?"Manage Billing":null,showManageBilling:d,markCurrentPlan:!0}:i?{entitlementState:n||null,gate:s||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:l||null,primaryAction:"none",primaryLabel:null,showManageBilling:d,markCurrentPlan:!0}:n==="suspended"?{entitlementState:n,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access is suspended because billing needs attention. Update billing to restore access.",primaryAction:d?"manage_billing":"open_plans",primaryLabel:d?"Manage Billing":"Open Plans",showManageBilling:d,markCurrentPlan:!1}:n==="canceled"?{entitlementState:n,gate:s||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:d,markCurrentPlan:!1}:n==="pending_plan_selection"||e?.planSelectionRequired===!0||s==="plan_selection_required"?{entitlementState:n||"pending_plan_selection",gate:s||"plan_selection_required",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:l||Uu.planSelectionRequired,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:n==="checkout_pending"||s==="checkout_pending"?{entitlementState:n||"checkout_pending",gate:s||"checkout_pending",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:l||Uu.checkoutPending,primaryAction:"open_plans",primaryLabel:"Open Plans",showManageBilling:d,markCurrentPlan:!1}:s==="misconfigured"?{entitlementState:n||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Uu.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:s==="missing_entitlement"?{entitlementState:n||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:Uu.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:n||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:l?"error":"info",message:l||null,primaryAction:"none",primaryLabel:null,showManageBilling:d,markCurrentPlan:!1}}const Gp=12,RL=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),NL=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function jL(e){const t=new Set,n=String(e?.email||"").trim().toLowerCase(),s=String(e?.displayName||"").trim().toLowerCase();if(n.includes("@")){const o=n.split("@")[0]||"",l=o.replace(/[^a-z0-9]/g,"");l.length>=4&&t.add(l);for(const i of o.split(/[^a-z0-9]+/))i.length>=4&&t.add(i)}for(const o of s.split(/[^a-z0-9]+/))o.length>=4&&t.add(o);return[...t]}function _y(){return[`Use at least ${Gp} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function Cy(e,t){const n=String(e||"");if(!n)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(n.length<Gp)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${Gp} characters.`};const s=NL(n);return RL.has(s)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:jL(t).some(l=>s.includes(l))?{ok:!1,code:"PASSWORD_CONTAINS_PERSONAL_INFO",message:"Password cannot contain your email or display name."}:{ok:!0}}function PL({isOpen:e,theme:t,runtimeMode:n,authRequiredForApi:s,isAuthenticated:o,hasAuthIdentity:l,authIdentityLabel:i,billingLoading:d,billingError:m,billingActionError:y,billingNotice:k,billingActionBusy:S,billingIntervalChoice:h,accountProfileSummary:g,currentWorkspaceId:v,canOpenTeamManagement:A,canManageWorkspaceSync:_,workspaceCloudSyncEnabled:I,syncStatusLabel:W,workspaceSyncError:V,syncControlBusy:B,cloudAuthEnabled:J,availableAuthProviders:de,onFetchLoginMethods:ve,onUnlinkLoginMethod:re,onAddPassword:x,onLinkProvider:K,onClose:me,onOpenWorkspaceAudit:pe,onBillingIntervalChange:X,onRefreshBilling:M,onUpdateInterval:F,onManageBilling:ue,onStartCheckout:ge,onToggleWorkspaceSync:O,onOpenHelp:_e}){const Ne=Hp(g),se=_y(),ce=Ne.message,Re=Ne.primaryLabel||"Start Checkout",Pe=String(g?.planName||g?.planId||"n/a").trim()||"n/a",Ae=()=>{if(Ne.primaryAction==="manage_billing"){ue();return}ge()},[Ee,$]=r.useState([]),[T,b]=r.useState(!1),[N,D]=r.useState(null),[te,P]=r.useState(null),[H,be]=r.useState(null),[U,ie]=r.useState(!1),[ee,Q]=r.useState(""),[q,Se]=r.useState(!1),[we,Te]=r.useState(null),[Me,nt]=r.useState(!1);r.useEffect(()=>{!e||!o||!J||(b(!0),D(null),ve().then(Xe=>{b(!1),Xe.success&&Xe.methods?$(Xe.methods):D(Xe.error||"Failed to load login methods.")}))},[e,o,J,ve]);const gt=async Xe=>{P(Xe),be(null);const it=await re(Xe);P(null),it.success?$(ne=>ne.filter(st=>st.provider!==Xe)):be(it.error||"Unlink failed.")},lt=async()=>{const Xe=Cy(ee);if(!Xe.ok){Te(Xe.message||"Password does not meet the password policy.");return}Se(!0),Te(null);const it=await x(ee);if(Se(!1),!it.success)Te(it.error||"Failed to add password.");else{nt(!0),Q(""),ie(!1);const ne=await ve();ne.success&&ne.methods&&$(ne.methods)}},St={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},qe=new Set(Ee.map(Xe=>Xe.provider)),Ct=qe.has("password"),dt=de.filter(Xe=>Xe!=="password"&&!qe.has(Xe));return a.jsx(Ls,{isOpen:e,onClose:me,title:"Account Hub",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${ft.modalBody}`,children:[a.jsx("p",{className:ft.mutedText,children:"Manage sign in, profile, and workspace controls from one place."}),a.jsxs("div",{className:pt.accountHubCard,children:[a.jsx("strong",{children:"Authentication"}),a.jsx("p",{className:ft.sectionText,children:n==="cloud"?s?o?"Signed in. API access is enabled.":"Cloud mode requires sign in before app usage.":"Cloud runtime with optional authentication.":"Local runtime allows guest usage without sign in."}),a.jsx("p",{className:ft.sectionTextSpaced,children:o?l?a.jsxs(a.Fragment,{children:["Signed in as ",a.jsx("span",{className:pt.accountIdentityEmail,children:i})]}):"Signed in":"Signed in as: not signed in"}),n==="cloud"&&s&&!o&&a.jsx("p",{className:ft.sectionTextTop,children:"Use the `/login` screen to sign in."})]}),o&&J&&a.jsxs("div",{className:pt.accountHubCard,children:[a.jsx("strong",{children:"Login Methods"}),T&&a.jsx("p",{className:ft.sectionText,children:"Loading..."}),N&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:N}),H&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:H}),Me&&a.jsx("p",{className:ft.sectionText,style:{color:"var(--color-success, #4ade80)"},children:"Password login added."}),!T&&Ee.length>0&&a.jsx("div",{style:{marginTop:8,display:"grid",gap:6},children:Ee.map(Xe=>a.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,flexWrap:"wrap"},children:[a.jsxs("span",{className:ft.sectionText,children:[a.jsx("strong",{children:St[Xe.provider]||Xe.provider}),Xe.providerEmail?a.jsxs(a.Fragment,{children:[" · ",a.jsx("span",{className:pt.accountMenuMeta,children:Xe.providerEmail})]}):null]}),Ee.length>1&&a.jsx("button",{className:f.cancelBtn,style:{fontSize:11,padding:"2px 8px"},disabled:te===Xe.provider,onClick:()=>gt(Xe.provider),children:te===Xe.provider?"Removing…":"Remove"})]},Xe.provider))}),!T&&!Ct&&!U&&a.jsx("div",{className:ft.actionRowEnd,children:a.jsx("button",{className:f.cancelBtn,onClick:()=>{ie(!0),nt(!1),Te(null)},children:"Add Password Login"})}),U&&a.jsxs("div",{style:{marginTop:10,display:"grid",gap:6},children:[a.jsxs("label",{className:pt.accountMenuMeta,style:{display:"block"},children:["New password",a.jsx("input",{type:"password",className:f.input,placeholder:"Use 12+ characters",value:ee,onChange:Xe=>Q(Xe.target.value),disabled:q,style:{marginTop:4,display:"block",width:"100%"},autoComplete:"new-password"})]}),a.jsx("p",{className:pt.accountMenuMeta,style:{margin:0},children:se.join(" ")}),we&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:we}),a.jsxs("div",{className:ft.actionRowEnd,children:[a.jsx("button",{className:f.cancelBtn,onClick:()=>{ie(!1),Q(""),Te(null)},disabled:q,children:"Cancel"}),a.jsx("button",{className:f.submitBtn,onClick:lt,disabled:q||!ee,children:q?"Saving…":"Save Password"})]})]}),!T&&dt.length>0&&a.jsxs("div",{style:{marginTop:10},children:[a.jsx("p",{className:pt.accountMenuMeta,style:{marginBottom:6},children:"Link another account:"}),a.jsx("div",{className:fe.oauthButtons,children:dt.map(Xe=>a.jsx("button",{className:fe.oauthButton,onClick:()=>K(Xe),children:St[Xe]||Xe},Xe))})]})]}),a.jsxs("div",{className:pt.accountHubCard,children:[a.jsx("strong",{children:"Profile & Account"}),a.jsx("p",{className:ft.sectionText,children:"Profile editing and account preferences will live here."})]}),a.jsxs("div",{className:pt.accountHubCard,children:[a.jsx("strong",{children:"Billing"}),o?n!=="cloud"?a.jsx("p",{className:ft.sectionText,children:"Billing remains cloud-backed in local runtime and uses your connected cloud account."}):a.jsxs(a.Fragment,{children:[d&&a.jsx("p",{className:ft.sectionTextSpaced,children:"Loading billing status..."}),m&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:m}),y&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:y}),k&&a.jsx("p",{className:ft.errorText,children:k}),ce&&a.jsx("p",{className:ft.sectionText,children:ce}),a.jsxs("p",{className:ft.sectionTextSpaced,children:["Plan: ",a.jsx("code",{children:Pe})," · ","Entitlement: ",a.jsx("code",{children:String(g?.entitlementState||"n/a")})]}),a.jsxs("p",{className:ft.sectionText,children:["Stripe status: ",a.jsx("code",{children:String(g?.stripeStatus||"n/a")}),g?.effectiveUntil?` · Effective until ${new Date(g.effectiveUntil).toLocaleString()}`:""]}),a.jsx("div",{className:ft.wrapRow,children:a.jsxs("label",{className:`${pt.accountMenuMeta} ${ft.inlineFieldLabel}`,children:["Interval",a.jsxs("select",{className:f.input,value:h,onChange:Xe=>X(Xe.target.value==="year"?"year":"month"),disabled:S,children:[a.jsx("option",{value:"month",children:"Monthly"}),a.jsx("option",{value:"year",children:"Yearly"})]})]})}),a.jsxs("div",{className:ft.actionRowEnd,children:[a.jsx("button",{className:f.cancelBtn,onClick:M,disabled:S||d,children:"Refresh Billing"}),a.jsx("button",{className:f.cancelBtn,onClick:F,disabled:S||!g?.stripeSubscriptionId,children:"Update Interval"}),a.jsx("button",{className:f.cancelBtn,onClick:ue,disabled:S||!g?.stripeCustomerId,children:"Manage Billing"}),a.jsx("button",{className:f.submitBtn,onClick:Ae,disabled:S||Ne.primaryAction==="manage_billing"&&!g?.stripeCustomerId,children:S?"Working...":Re})]})]}):a.jsx("p",{className:ft.sectionText,children:"Sign in to manage subscription billing."})]}),a.jsxs("div",{className:pt.accountHubCard,children:[a.jsx("strong",{children:"Workspace Audit Log"}),a.jsx("p",{className:ft.sectionText,children:"Audit entries are workspace-scoped for the active workspace, not global account history."}),a.jsxs("p",{className:ft.sectionText,children:["Active workspace: ",a.jsx("code",{children:v})]}),a.jsx("div",{className:ft.actionRowEnd,children:a.jsx("button",{className:f.cancelBtn,onClick:pe,disabled:!A,children:"Open Workspace Audit"})})]}),a.jsxs("div",{className:pt.accountHubCard,children:[a.jsx("strong",{children:"Workspace Cloud Sync"}),a.jsx("p",{className:ft.sectionText,children:_?I?`Enabled · ${W}`:"Disabled":"Sign in to cloud account to enable workspace sync."}),V&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:V}),a.jsx("div",{className:ft.actionRowEnd,children:a.jsx("button",{className:f.cancelBtn,disabled:!_||B,onClick:()=>O(!I),children:I?"Disable Sync":"Enable Sync"})})]}),a.jsxs("div",{className:`${xt.formActions} ${ft.modalActionsEnd}`,children:[a.jsx("button",{className:f.cancelBtn,onClick:_e,children:"Help & Tutorial"}),a.jsx("button",{className:f.submitBtn,onClick:me,children:"Close"})]})]})})}var jh=(e,t,n,s,o,l)=>{if(l===0)e.rect(t,n,s,o);else{let i=s-l,d=o-l;e.translate(t,n),e.arc(l,l,l,Math.PI,Math.PI*1.5),e.lineTo(i,0),e.arc(i,l,l,Math.PI*1.5,Math.PI*2),e.lineTo(s,d),e.arc(i,d,l,Math.PI*2,Math.PI*.5),e.lineTo(l,o),e.arc(l,d,l,Math.PI*.5,Math.PI),e.closePath(),e.translate(-t,-n)}},ML=(e,t,n,s,o,l)=>{e.fillStyle=l;let i=s/3,d=o/3;e.fillRect(t,n,1,o),e.fillRect(i+t,n,1,o),e.fillRect(i*2+t,n,1,o),e.fillRect(i*3+t,n,1,o),e.fillRect(i*4+t,n,1,o),e.fillRect(t,n,s,1),e.fillRect(t,d+n,s,1),e.fillRect(t,d*2+n,s,1),e.fillRect(t,d*3+n,s,1),e.fillRect(t,d*4+n,s,1)},EL=e=>!!e.match(/^\s*data:([a-z]+\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\-._~:@/?%\s]*\s*$/i),Ay=(e,t)=>new Promise((n,s)=>{let o=new Image;o.addEventListener("load",()=>n(o)),o.addEventListener("error",s),!EL(e)&&t&&(o.crossOrigin=t),o.src=e}),DL=e=>new Promise((t,n)=>{let s=new FileReader;s.addEventListener("load",o=>{try{if(!o?.target?.result)throw Error("No image data");t(Ay(o.target.result))}catch(l){n(l)}}),s.readAsDataURL(e)}),LL=typeof File<"u",Ph=e=>Math.PI/180*e,Mh={x:.5,y:.5},BL=class{constructor(e){this.imageState=Mh,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:n,border:s}=this.config,o={width:0,height:0},[l,i]=this.getBorders(s);return this.isVertical()?(o.width=t,o.height=e):(o.width=e,o.height=t),o.width+=l*2,o.height+=i*2,{canvas:o,rotate:n,width:e,height:t,border:s}}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},n=1/this.config.scale*this.getXScale(),s=1/this.config.scale*this.getYScale(),o={x:t.x-n/2,y:t.y-s/2,width:n,height:s},l=0,i=1-o.width,d=0,m=1-o.height;return(this.config.disableBoundaryChecks||n>1||s>1)&&(l=-o.width,i=1,d=-o.height,m=1),{...o,x:Math.max(l,Math.min(o.x,i)),y:Math.max(d,Math.min(o.y,m))}}getInitialSize(e,t){let n,s,o=this.getDimensions();return o.height/o.width>t/e?(n=o.height,s=n/t*e):(s=o.width,n=s/e*t),{height:n,width:s}}async loadImage(e){let t;if(LL&&e instanceof File)t=await DL(e);else if(typeof e=="string")t=await Ay(e,this.config.crossOrigin);else throw Error("Invalid image source");let n={...this.getInitialSize(t.width,t.height),resource:t,x:.5,y:.5};return this.imageState=n,n}clearImage(){this.imageState=Mh}calculatePosition(e=this.imageState,t){let[n,s]=this.getBorders(t);if(!e.width||!e.height)throw Error("Image dimension is unknown.");let o=this.getCroppingRect(),l=e.width*this.config.scale,i=e.height*this.config.scale,d=-o.x*l,m=-o.y*i;return this.isVertical()?(d+=s,m+=n):(d+=n,m+=s),{x:d,y:m,height:i,width:l}}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,n=this.getDimensions(),[s,o]=this.getBorders(n.border),l=n.canvas.height,i=n.canvas.width;t=Math.max(t,0),t=Math.min(t,i/2-s,l/2-o),e.beginPath(),jh(e,s,o,i-s*2,l-o*2,t),e.rect(i,0,-i,l),e.fill("evenodd"),this.config.borderColor&&(e.strokeStyle="rgba("+this.config.borderColor.slice(0,4).join(",")+")",e.lineWidth=1,e.beginPath(),jh(e,s+.5,o+.5,i-s*2-1,l-o*2-1,t),e.stroke()),this.config.showGrid&&ML(e,s,o,i-s*2,l-o*2,this.config.gridColor),e.restore()}paintImage(e,t,n,s=this.pixelRatio){if(!t.resource)return;let o=this.calculatePosition(t,n);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(s,s),e.globalCompositeOperation="destination-over",e.drawImage(t.resource,o.x,o.y,o.width,o.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 n=document.createElement("canvas");this.isVertical()?(n.width=Math.round(e.height),n.height=Math.round(e.width)):(n.width=Math.round(e.width),n.height=Math.round(e.height));let s=n.getContext("2d");if(!s)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return s.translate(n.width/2,n.height/2),s.rotate(this.config.rotate*Math.PI/180),s.translate(-(n.width/2),-(n.height/2)),this.isVertical()&&s.translate((n.width-n.height)/2,(n.height-n.width)/2),this.config.backgroundColor&&(s.fillStyle=this.config.backgroundColor,s.fillRect(0,0,n.width,n.height)),s.drawImage(t.resource,-e.x,-e.y),n}getImageScaledToCanvas(){let e=this.getDimensions(),t=this.imageState,n=document.createElement("canvas");if(this.isVertical()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height),!t.resource)return n;let s=n.getContext("2d");if(!s)return n;let o=this.calculatePosition(t,0);return s.save(),s.translate(n.width/2,n.height/2),s.rotate(this.config.rotate*Math.PI/180),s.translate(-(n.width/2),-(n.height/2)),this.isVertical()&&s.translate((n.width-n.height)/2,(n.height-n.width)/2),this.config.backgroundColor&&(s.fillStyle=this.config.backgroundColor,s.fillRect(0,0,n.width,n.height)),s.drawImage(t.resource,o.x,o.y,o.width,o.height),s.restore(),n}calculateDragPosition(e,t,n,s){let o=n-e,l=s-t;if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let i=this.imageState.width*this.config.scale,d=this.imageState.height*this.config.scale,{x:m,y}=this.getCroppingRect();m*=i,y*=d;let k=this.config.rotate;k%=360,k=k<0?k+360:k;let S=Math.cos(Ph(k)),h=Math.sin(Ph(k)),g=m+o*S+l*h,v=y+-o*h+l*S,A=1/this.config.scale*this.getXScale(),_=1/this.config.scale*this.getYScale();return{x:g/i+A/2,y:v/d+_/2}}},Eh=()=>{},WL=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",Eh,t),window.removeEventListener("test",Eh,t)}catch{e=!1}return e},xy=r.forwardRef((e,t)=>{let{scale:n=1,rotate:s=0,border:o=25,borderRadius:l=0,width:i=200,height:d=200,color:m=[0,0,0,.5],showGrid:y=!1,gridColor:k="#666",disableBoundaryChecks:S=!1,disableHiDPIScaling:h=!1,disableCanvasRotation:g=!0,image:v,position:A,backgroundColor:_,crossOrigin:I,onLoadStart:W,onLoadFailure:V,onLoadSuccess:B,onImageReady:J,onImageChange:de,onMouseUp:ve,onMouseMove:re,onPositionChange:x,borderColor:K,style:me}=e,pe=r.useRef(null),X=r.useRef(new BL({width:i,height:d,border:o,borderRadius:l,scale:n,rotate:s,color:m,backgroundColor:_,borderColor:K,showGrid:y,gridColor:k,disableBoundaryChecks:S,disableHiDPIScaling:h,disableCanvasRotation:g,crossOrigin:I})),M=r.useRef(!1),F=r.useRef(void 0),ue=r.useRef(void 0),[ge,O]=r.useState(!1),[_e,Ne]=r.useState(!1),[se,ce]=r.useState(X.current.getImageState()),Re=r.useRef(ve);Re.current=ve;let Pe=r.useRef(re);Pe.current=re;let Ae=r.useRef(x);Ae.current=x,r.useEffect(()=>{X.current.updateConfig({width:i,height:d,border:o,borderRadius:l,scale:n,rotate:s,color:m,backgroundColor:_,borderColor:K,showGrid:y,gridColor:k,disableBoundaryChecks:S,disableHiDPIScaling:h,disableCanvasRotation:g,crossOrigin:I})},[i,d,o,l,n,s,m,_,K,y,k,S,h,g,I]);let Ee=r.useCallback(()=>{if(!pe.current)throw Error("No canvas found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return pe.current},[]),$=r.useCallback(()=>{let ie=Ee().getContext("2d");if(!ie)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ie},[Ee]),T=r.useCallback(async ie=>{Ne(!0),W?.();try{let ee=await X.current.loadImage(ie);M.current=!1,O(!1),ce(ee),J?.(),B?.(ee)}catch{V?.()}finally{Ne(!1)}},[W,J,B,V]),b=r.useCallback(()=>{let ie=Ee();$().clearRect(0,0,ie.width,ie.height),X.current.clearImage(),ce(X.current.getImageState())},[Ee,$]),N=r.useCallback(()=>{let ie=$(),ee=Ee();ie.clearRect(0,0,ee.width,ee.height),X.current.paint(ie),X.current.paintImage(ie,se,o)},[$,Ee,se,o,i,d,l,n,s,m,_,K,y,k,S,h,g,I]),D=r.useCallback(ie=>{ie.preventDefault(),M.current=!0,F.current=void 0,ue.current=void 0,O(!0)},[]),te=r.useCallback(()=>{M.current=!0,F.current=void 0,ue.current=void 0,O(!0)},[]);r.useImperativeHandle(t,()=>({getImage:()=>X.current.getImage(),getImageScaledToCanvas:()=>X.current.getImageScaledToCanvas(),getCroppingRect:()=>X.current.getCroppingRect()}),[]),r.useEffect(()=>{let ie=$();v&&T(v),X.current.paint(ie);let ee=Se=>{if(!M.current)return;Se.cancelable&&Se.preventDefault();let we="targetTouches"in Se?Se.targetTouches[0].pageX:Se.clientX,Te="targetTouches"in Se?Se.targetTouches[0].pageY:Se.clientY,Me=F.current,nt=ue.current;if(F.current=we,ue.current=Te,Me!==void 0&&nt!==void 0){let gt=X.current.getImageState();if(gt.width&&gt.height){let lt=X.current.calculateDragPosition(we,Te,Me,nt);Ae.current?.(lt);let St={...gt,...lt};X.current.setImageState(St),ce(St)}}Pe.current?.(Se)},Q=()=>{M.current&&(M.current=!1,O(!1),Re.current?.())},q=WL()?{passive:!1}:!1;return document.addEventListener("mousemove",ee,q),document.addEventListener("mouseup",Q,q),document.addEventListener("touchmove",ee,q),document.addEventListener("touchend",Q,q),()=>{document.removeEventListener("mousemove",ee,!1),document.removeEventListener("mouseup",Q,!1),document.removeEventListener("touchmove",ee,!1),document.removeEventListener("touchend",Q,!1)}},[]),r.useEffect(()=>{v?T(v):!v&&se.x!==.5&&se.y!==.5&&b()},[v,i,d,_]),r.useEffect(()=>{N()},[N]),r.useEffect(()=>{if(!_e)return;let ie=pe.current;if(!ie)return;let ee=ie.getContext("2d");if(!ee)return;let Q,q=performance.now(),Se=we=>{let Te=(we-q)/1e3,Me=.03+Math.sin(Te*2.5)*.02+.02;ee.save(),ee.clearRect(0,0,ie.width,ie.height),ee.fillStyle=`rgba(255,255,255,${Me})`,ee.fillRect(0,0,ie.width,ie.height),ee.restore(),Q=requestAnimationFrame(Se)};return Q=requestAnimationFrame(Se),()=>cancelAnimationFrame(Q)},[_e]);let P=r.useRef({image:v,width:i,height:d,position:A,scale:n,rotate:s,imageX:se.x,imageY:se.y});r.useEffect(()=>{let ie=P.current;(ie.image!==v||ie.width!==i||ie.height!==d||ie.position!==A||ie.scale!==n||ie.rotate!==s||ie.imageX!==se.x||ie.imageY!==se.y)&&(de?.(),P.current={image:v,width:i,height:d,position:A,scale:n,rotate:s,imageX:se.x,imageY:se.y})},[v,i,d,A,n,s,se.x,se.y,de]);let H=X.current.getDimensions(),be=X.current.getPixelRatio(),U={width:H.canvas.width,height:H.canvas.height,cursor:ge?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return We.createElement("canvas",{width:H.canvas.width*be,height:H.canvas.height*be,onMouseDown:D,onTouchStart:te,style:{...U,...me},ref:pe})});xy.displayName="AvatarEditor";const FL="_avatarManagerBody_1bfwv_1",OL="_editorPanel_1bfwv_7",$L="_editorFrame_1bfwv_13",UL="_gifPreviewImage_1bfwv_21",zL="_emptyPreview_1bfwv_28",HL="_controlPanel_1bfwv_41",GL="_zoomField_1bfwv_47",VL="_zoomSlider_1bfwv_52",qL="_actionGrid_1bfwv_57",KL="_fileInput_1bfwv_63",ZL="_messageStack_1bfwv_67",Es={avatarManagerBody:FL,editorPanel:OL,editorFrame:$L,gifPreviewImage:UL,emptyPreview:zL,controlPanel:HL,zoomField:GL,zoomSlider:VL,actionGrid:qL,fileInput:KL,messageStack:ZL},bp=512,YL=48,zu=512;function Dh(e,t,n){return new Promise(s=>{e.toBlob(s,t,n)})}function JL(e,t){const n=String(e).trim()||"avatar",s=n.lastIndexOf(".");return s<=0?`${n}${t}`:`${n.slice(0,s)}${t}`}async function QL(e,t){const n=e.getImageScaledToCanvas(),s=document.createElement("canvas");s.width=zu,s.height=zu;const o=s.getContext("2d");if(!o)throw new Error("Image editing requires a 2D canvas context.");o.drawImage(n,0,0,zu,zu);const i=await Dh(s,"image/webp",.9)||await Dh(s,"image/jpeg",.9);if(!i)throw new Error("Unable to prepare profile photo.");const d=i.type||"image/jpeg",m=d==="image/webp"?".webp":".jpg";return new File([i],JL(t,m),{type:d,lastModified:Date.now()})}function XL({isOpen:e,theme:t,title:n="Edit Photo",currentImageUrl:s,editorImageUrl:o="",fallbackInitial:l,accept:i,busy:d,hasPendingImage:m,canRemove:y,error:k,notice:S,onClose:h,onApplyImage:g,onRemoveImage:v,onDiscardPendingImage:A}){const _=r.useRef(null),I=r.useRef(null),[W,V]=r.useState(null),[B,J]=r.useState(""),[de,ve]=r.useState(1.1),[re,x]=r.useState(null),[K,me]=r.useState(null);r.useEffect(()=>{e||(V(null),J(""),ve(1.1),x(null),me(null))},[e]),r.useEffect(()=>{if(!W){J("");return}const se=URL.createObjectURL(W);return J(se),()=>URL.revokeObjectURL(se)},[W]);const pe=B||o||s,X=W?.name||"avatar",M=String(l||"").trim().charAt(0).toUpperCase(),F=re||k,ue=K||S,ge=r.useCallback(se=>{if(x(null),me(null),!!se){if(!se.type.startsWith("image/")){x("Profile photo must be an image file.");return}se.type==="image/gif"&&me("Animated GIFs will upload without repositioning."),V(se),ve(1.1)}},[]),O=r.useCallback(async()=>{x(null);const se=_.current;if(W?.type==="image/gif"){await g(W)&&h();return}if(!se||!pe){x("Choose a profile photo first.");return}try{const ce=await QL(se,X);await g(ce,W)&&h()}catch(ce){x(ce instanceof Error?ce.message:"Unable to prepare profile photo.")}},[pe,g,h,W,X]),_e=W?.type==="image/gif"||!!pe,Ne=r.useMemo(()=>a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:f.secondaryButton,onClick:h,disabled:d,children:"Cancel"}),a.jsx("button",{type:"button",className:f.primaryUpdateBtn,onClick:()=>{O()},disabled:d||!_e,children:d?"Applying...":"Apply Photo"})]}),[d,_e,O,h]);return a.jsx(Ls,{isOpen:e,onClose:h,title:n,size:"md",theme:t,draggable:!0,footer:Ne,children:a.jsxs("div",{className:Es.avatarManagerBody,children:[a.jsxs("div",{className:Es.editorPanel,children:[a.jsx("div",{className:`tf-surface-inset ${Es.editorFrame}`,children:W?.type==="image/gif"&&B?a.jsx("img",{src:B,alt:"",className:Es.gifPreviewImage}):pe?a.jsx(xy,{ref:_,image:pe,width:bp,height:bp,border:YL,borderRadius:bp/2,scale:de,color:[15,15,26,.72],backgroundColor:"transparent",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:Es.emptyPreview,"aria-hidden":"true",children:M})}),a.jsxs("div",{className:Es.controlPanel,children:[a.jsx("input",{ref:I,type:"file","aria-label":"Choose profile photo",accept:i,className:Es.fileInput,onChange:se=>ge(se.target.files?.[0]||null),disabled:d}),a.jsxs("div",{className:Es.actionGrid,children:[a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>I.current?.click(),disabled:d,children:[a.jsx(jk,{size:16}),"Choose"]}),m&&A&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:A,disabled:d,children:[a.jsx(pd,{size:16}),"Discard"]}),y&&v&&a.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:v,disabled:d,children:[a.jsx(Sm,{size:16}),"Remove"]})]}),a.jsxs("label",{className:`tf-field-stack ${Es.zoomField}`,children:[a.jsx("span",{className:"tf-field-label",children:"Zoom"}),a.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:de,onChange:se=>ve(Number(se.target.value)),className:Es.zoomSlider,disabled:d||!pe||W?.type==="image/gif"})]})]})]}),(F||ue)&&a.jsxs("div",{className:Es.messageStack,children:[F&&a.jsx("p",{className:"tf-text-error",children:F}),ue&&!F&&a.jsx("p",{className:"tf-text-helper",children:ue})]})]})})}const eB="_editableAvatarButton_1ga39_1",tB="_editableAvatarImage_1ga39_47",aB="_editableAvatarFallback_1ga39_54",nB="_editableAvatarBadge_1ga39_65",Hu={editableAvatarButton:eB,editableAvatarImage:tB,editableAvatarFallback:aB,editableAvatarBadge:nB};function rB({label:e,imageUrl:t,fallback:n,accentColor:s,size:o=52,width:l,height:i,radius:d,editBadgeSize:m,editIconSize:y=16,disabled:k=!1,className:S="",onClick:h}){const g=String(t||"").trim(),v=l??o,A=i??o,_=typeof d=="number"?`${d}px`:d,I=typeof m=="number"?`${m}px`:m;return a.jsxs("button",{type:"button",className:`${Hu.editableAvatarButton} ${S}`.trim(),"aria-label":e,title:e,onClick:h,disabled:k,style:{"--editable-avatar-size":`${o}px`,"--editable-avatar-width":`${v}px`,"--editable-avatar-height":`${A}px`,..._?{"--editable-avatar-radius":_}:{},...I?{"--editable-avatar-badge-size":I}:{},...s?{"--editable-avatar-accent":s}:{}},children:[g?a.jsx("img",{src:g,alt:"",className:Hu.editableAvatarImage}):a.jsx("span",{className:Hu.editableAvatarFallback,children:n}),a.jsx("span",{className:Hu.editableAvatarBadge,"aria-hidden":"true",children:a.jsx(Pk,{size:y})})]})}function sB({isOpen:e,theme:t,onClose:n,onSave:s,displayName:o,email:l,avatarDisplayUrl:i,accountBadgeInitial:d,saveBusy:m,avatarBusy:y,saveError:k,saveNotice:S,onDisplayNameChange:h,onOpenAvatarManager:g}){return a.jsx(Ls,{isOpen:e,onClose:n,title:"Edit Profile",size:"sm",theme:t,draggable:!0,footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:f.secondaryButton,onClick:n,disabled:m||y,children:"Cancel"}),a.jsx("button",{type:"button",className:f.primaryUpdateBtn,onClick:s,disabled:m||y||!o.trim(),children:m?"Saving...":"Save Profile"})]}),children:a.jsxs("div",{className:`${xt.form} ${ft.modalBody}`,children:[a.jsxs("div",{className:pt.profileEditLayout,children:[a.jsx("div",{className:pt.profileAvatarEditor,children:a.jsx(rB,{label:"Edit profile photo",imageUrl:i,fallback:d,disabled:m||y,onClick:g})}),a.jsxs("div",{className:pt.profileFieldStack,children:[a.jsxs("label",{className:pt.profileFieldLabel,children:[a.jsx("span",{children:"Display name"}),a.jsx("input",{className:f.input,type:"text",value:o,onChange:v=>h(v.target.value),placeholder:"Display name",disabled:m})]}),a.jsxs("label",{className:pt.profileFieldLabel,children:[a.jsx("span",{children:"Email"}),a.jsx("input",{className:f.input,type:"email",value:l,readOnly:!0,disabled:!0})]})]})]}),k&&a.jsx("p",{className:`${fe.loginError} ${ft.errorText}`,children:k}),S&&!k&&a.jsx("p",{className:ft.errorText,children:S})]})})}function oB({isOpen:e,theme:t,onClose:n,onOpenSettings:s}){return a.jsx(Ls,{isOpen:e,onClose:n,title:"Quick Start",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${ft.modalBody}`,children:[a.jsx("p",{className:ft.mutedText,children:"Use this quick guide to get productive in Taskforce dashboard mode."}),a.jsxs("div",{children:[a.jsx("strong",{children:"1. Capture work"}),a.jsxs("p",{className:ft.sectionText,children:["Click ",a.jsx("code",{children:"Add Task"}),", write a short title, and save."]})]}),a.jsxs("div",{children:[a.jsx("strong",{children:"2. Plan the board"}),a.jsxs("p",{className:ft.sectionText,children:["Use ",a.jsx("code",{children:"Sort"}),", ",a.jsx("code",{children:"Group"}),", and ",a.jsx("code",{children:"Filters"})," in the header."]})]}),a.jsxs("div",{children:[a.jsx("strong",{children:"3. Execute and stage"}),a.jsxs("p",{className:ft.sectionText,children:["Move tasks through ",a.jsx("code",{children:"Task"}),", ",a.jsx("code",{children:"In Progress"}),", ",a.jsx("code",{children:"Review"}),", and ",a.jsx("code",{children:"Done"}),"."]})]}),a.jsxs("div",{children:[a.jsx("strong",{children:"4. Archive finished work"}),a.jsx("p",{className:ft.sectionText,children:"Archive completed/cancelled tasks to keep active board signal high."})]}),a.jsxs("div",{className:`${xt.formActions} ${ft.modalActionsEnd}`,children:[a.jsx("button",{className:f.cancelBtn,onClick:s,children:"Open Settings"}),a.jsx("button",{className:f.submitBtn,onClick:n,children:"Close Tutorial"})]})]})})}function iB({prompt:e,theme:t,onClose:n,onConfirm:s}){return a.jsx(Ls,{isOpen:!!e,onClose:n,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${f.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:f.formActions,children:[a.jsx("button",{className:f.cancelBtn,onClick:n,children:"Go Back"}),a.jsx("button",{className:f.submitBtn,onClick:s,children:"Save Anyway"})]})]})})}function cB({isOpen:e,theme:t,onClose:n,onConfirm:s}){return a.jsx(Ls,{isOpen:e,onClose:n,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${f.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:f.formActions,children:[a.jsx("button",{className:f.cancelBtn,onClick:n,children:"Go Back"}),a.jsx("button",{className:f.submitBtn,onClick:s,children:"Enable Sync Anyway"})]})]})})}const lB="_syncStatusModal_4pd1g_1",dB="_syncStatusTop_4pd1g_6",uB="_syncStatusMetaHeader_4pd1g_15",mB="_syncStatusHeaderInfo_4pd1g_22",pB="_syncToggle_4pd1g_43",fB="_syncStatusBadge_4pd1g_47",hB="_syncToggleControl_4pd1g_75",gB="_syncToggleControlEnabled_4pd1g_91",yB="_syncToggleControlDisabled_4pd1g_98",kB="_syncToggleControlBusy_4pd1g_102",vB="_syncToggleControlBlocked_4pd1g_107",SB="_syncToggleInput_4pd1g_112",wB="_syncToggleState_4pd1g_125",bB="_syncToggleStateOn_4pd1g_136",_B="_syncToggleStateOff_4pd1g_141",CB="_syncToggleThumb_4pd1g_146",AB="_syncStatusSummaryValue_4pd1g_173",xB="_syncStatusSummaryCompact_4pd1g_180",IB="_syncStatusRepairBanner_4pd1g_190",TB="_syncStatusRepairHeader_4pd1g_200",RB="_syncStatusRepairBadge_4pd1g_207",NB="_syncStatusRepairMeta_4pd1g_216",jB="_syncStatusRepairText_4pd1g_223",PB="_syncStatusLabel_4pd1g_257",MB="_syncStatusSectionHeader_4pd1g_265",EB="_syncStatusCompactGrid_4pd1g_278",DB="_syncStatusCompactItem_4pd1g_284",LB="_syncStatusValue_4pd1g_295",BB="_syncStatusValueError_4pd1g_325",WB="_syncStatusActions_4pd1g_329",FB="_syncStatusPanel_4pd1g_336",OB="_syncStatusPanelHeader_4pd1g_346",$B="_syncStatusPanelMeta_4pd1g_353",UB="_syncStatusEventsList_4pd1g_375",zB="_syncStatusEventItem_4pd1g_384",HB="_syncStatusEventItemError_4pd1g_391",GB="_syncStatusEventItemMuted_4pd1g_396",VB="_syncStatusEventLine_4pd1g_401",qB="_syncStatusSecondaryActions_4pd1g_411",KB="_syncStatusPrimaryActions_4pd1g_425",ZB="_syncStatusPrimaryActionSlot_4pd1g_432",YB="_syncStatusActionPlaceholder_4pd1g_440",rt={syncStatusModal:lB,syncStatusTop:dB,syncStatusMetaHeader:uB,syncStatusHeaderInfo:mB,syncToggle:pB,syncStatusBadge:fB,syncToggleControl:hB,syncToggleControlEnabled:gB,syncToggleControlDisabled:yB,syncToggleControlBusy:kB,syncToggleControlBlocked:vB,syncToggleInput:SB,syncToggleState:wB,syncToggleStateOn:bB,syncToggleStateOff:_B,syncToggleThumb:CB,syncStatusSummaryValue:AB,syncStatusSummaryCompact:xB,syncStatusRepairBanner:IB,syncStatusRepairHeader:TB,syncStatusRepairBadge:RB,syncStatusRepairMeta:NB,syncStatusRepairText:jB,syncStatusLabel:PB,syncStatusSectionHeader:MB,syncStatusCompactGrid:EB,syncStatusCompactItem:DB,syncStatusValue:LB,syncStatusValueError:BB,syncStatusActions:WB,syncStatusPanel:FB,syncStatusPanelHeader:OB,syncStatusPanelMeta:$B,syncStatusEventsList:UB,syncStatusEventItem:zB,syncStatusEventItemError:HB,syncStatusEventItemMuted:GB,syncStatusEventLine:VB,syncStatusSecondaryActions:qB,syncStatusPrimaryActions:KB,syncStatusPrimaryActionSlot:ZB,syncStatusActionPlaceholder:YB};function JB({isOpen:e,theme:t,currentWorkspaceLabel:n,syncStatusMeta:s,workspaceCloudSyncEnabled:o,syncControlBusy:l,canManageWorkspaceSync:i,workspaceSyncSummary:d,workspaceSyncRecommendedAction:m,workspaceSyncRepairBusy:y,referenceMismatchCount:k,syncStageLabel:S,workspaceSyncPendingChanges:h,formattedLastSyncTime:g,formattedLastPullTime:v,formattedLastPushTime:A,syncLastError:_,workspaceSyncDiagnostics:I,activeReferenceMismatchSummaries:W,syncDiagnosticsSummary:V,syncEventRows:B,syncEventsListRef:J,workspaceSyncRepairQueued:de,workspaceSyncBusy:ve,workspaceSyncCopied:re,runtimeMode:x,isAuthenticated:K,onClose:me,onToggleWorkspaceSync:pe,onRepairSync:X,onCopyReport:M,onOpenLogin:F,onRetrySync:ue}){return a.jsx(Ls,{isOpen:e,onClose:me,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${rt.syncStatusModal}`,style:{gap:"10px"},children:[a.jsxs("div",{className:rt.syncStatusTop,children:[a.jsx("div",{className:rt.syncStatusHeaderInfo,children:a.jsxs("div",{className:rt.syncStatusMetaHeader,children:[a.jsx("div",{className:rt.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),a.jsxs("span",{className:rt.syncStatusLabel,children:["Workspace: ",a.jsx("code",{children:n})]})]})}),a.jsx("label",{className:rt.syncToggle,children:a.jsxs("span",{className:[rt.syncToggleControl,o?rt.syncToggleControlEnabled:rt.syncToggleControlDisabled,l?rt.syncToggleControlBusy:"",i?"":rt.syncToggleControlBlocked].filter(Boolean).join(" "),children:[a.jsx("input",{className:rt.syncToggleInput,type:"checkbox",role:"switch","aria-label":"Enable Sync",checked:o,disabled:!i||l,onChange:ge=>pe(ge.target.checked)}),a.jsx("span",{className:`${rt.syncToggleState} ${rt.syncToggleStateOn}`,children:"On"}),a.jsx("span",{className:`${rt.syncToggleState} ${rt.syncToggleStateOff}`,children:"Off"}),a.jsx("span",{className:rt.syncToggleThumb})]})})]}),a.jsxs("div",{className:rt.syncStatusSummaryCompact,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Health"}),a.jsx("span",{className:rt.syncStatusSummaryValue,children:d})]}),a.jsxs("div",{className:rt.syncStatusSummaryCompact,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Next Step"}),a.jsx("span",{className:rt.syncStatusSummaryValue,children:m})]}),y&&a.jsxs("div",{className:rt.syncStatusRepairBanner,children:[a.jsxs("div",{className:rt.syncStatusRepairHeader,children:[a.jsxs("div",{className:rt.syncStatusRepairBadge,children:[a.jsx(mr,{size:13,className:f.spinner}),a.jsx("span",{children:"Repair In Progress"})]}),a.jsx("span",{className:rt.syncStatusRepairMeta,children:"Advanced recovery mode"})]}),a.jsx("span",{className:rt.syncStatusRepairText,children:k>0?`Taskforce is clearing the saved sync cursor and reconciling workspace state from the cloud again, including ${k} detected reference mismatch${k===1?"":"es"}. The panel may stay busy for a while during large repairs.`:"Taskforce is clearing the saved sync cursor and reconciling workspace state from the cloud again. The panel may stay busy for a while during large repairs."})]}),a.jsx("div",{className:rt.syncStatusSectionHeader,children:a.jsx("span",{className:rt.syncStatusLabel,children:"Current Session"})}),a.jsxs("div",{className:rt.syncStatusCompactGrid,children:[a.jsxs("div",{className:rt.syncStatusCompactItem,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Stage"}),a.jsx("span",{className:rt.syncStatusValue,children:S})]}),a.jsxs("div",{className:rt.syncStatusCompactItem,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Local Changes"}),a.jsx("span",{className:rt.syncStatusValue,children:h})]}),a.jsxs("div",{className:rt.syncStatusCompactItem,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Last Successful"}),a.jsx("span",{className:rt.syncStatusValue,children:g})]})]}),a.jsx("div",{className:rt.syncStatusSectionHeader,children:a.jsx("span",{className:rt.syncStatusLabel,children:"Activity"})}),a.jsxs("div",{className:rt.syncStatusCompactGrid,children:[a.jsxs("div",{className:rt.syncStatusCompactItem,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Last Pull"}),a.jsx("span",{className:rt.syncStatusValue,children:v})]}),a.jsxs("div",{className:rt.syncStatusCompactItem,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Last Push"}),a.jsx("span",{className:rt.syncStatusValue,children:A})]})]}),_!=="None"&&a.jsxs("div",{className:rt.syncStatusPanel,style:{background:"rgba(239, 68, 68, 0.05)",borderColor:"rgba(239, 68, 68, 0.2)"},children:[a.jsxs("div",{className:rt.syncStatusSectionHeader,style:{marginTop:0},children:[a.jsx(fd,{size:12,color:"#fda4af"}),a.jsxs("span",{className:rt.syncStatusLabel,style:{color:"#fda4af"},children:["Last Error (",I.lastErrorAt?new Date(I.lastErrorAt).toLocaleTimeString():"Recent",")"]})]}),a.jsx("span",{className:`${rt.syncStatusValue} ${rt.syncStatusValueError}`,children:_})]}),k>0&&a.jsxs("div",{className:rt.syncStatusPanel,style:{background:"rgba(250, 204, 21, 0.08)",borderColor:"rgba(250, 204, 21, 0.22)"},children:[a.jsxs("div",{className:rt.syncStatusPanelHeader,children:[a.jsx("span",{className:rt.syncStatusLabel,style:{color:"#fde68a"},children:"Identifier Integrity"}),a.jsxs("span",{className:rt.syncStatusPanelMeta,children:[k," mismatch",k===1?"":"es"," detected"]})]}),a.jsx("span",{className:rt.syncStatusValue,children:"Task, document, or image reference numbers disagreed during normal sync. Cloud-backed sync preserves the incoming cloud reference and renumbers the displaced local item to the next available reference."}),W.length>0&&a.jsx("div",{style:{marginTop:"10px",display:"flex",flexDirection:"column",gap:"8px"},children:W.map(ge=>a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"2px",padding:"8px 10px",borderRadius:"8px",background:"rgba(15, 23, 42, 0.18)",border:"1px solid rgba(250, 204, 21, 0.16)"},children:[a.jsx("span",{className:rt.syncStatusValue,style:{fontSize:"12px",wordBreak:"break-all"},children:ge.pathLabel}),ge.refsLabel?a.jsx("span",{className:rt.syncStatusPanelMeta,children:ge.refsLabel}):null]},ge.key))})]}),a.jsxs("div",{className:rt.syncStatusPanel,children:[a.jsxs("div",{className:rt.syncStatusPanelHeader,children:[a.jsx("span",{className:rt.syncStatusLabel,children:"Local Sync Diagnostics"}),a.jsx("span",{className:rt.syncStatusPanelMeta,style:{fontSize:"10px"},children:"AI profiles & metadata"})]}),a.jsx("div",{className:rt.syncStatusCompactGrid,style:{gridTemplateColumns:"repeat(2, 1fr)"},children:V.map(ge=>a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"8px"},children:[a.jsx("span",{className:rt.syncStatusLabel,style:{fontSize:"9px",textTransform:"capitalize"},children:ge.label}),a.jsx("span",{className:rt.syncStatusValue,style:{fontSize:"11px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:ge.value})]},ge.label))})]}),a.jsxs("div",{className:rt.syncStatusPanel,children:[a.jsx("div",{className:rt.syncStatusPanelHeader,children:a.jsx("span",{className:rt.syncStatusLabel,children:"Recent Events"})}),a.jsx("div",{ref:J,className:rt.syncStatusEventsList,style:{height:"120px"},children:B.map(ge=>a.jsx("div",{className:[rt.syncStatusEventItem,ge.tone==="error"?rt.syncStatusEventItemError:"",ge.tone==="muted"?rt.syncStatusEventItemMuted:""].filter(Boolean).join(" "),style:{padding:"6px 8px",borderRadius:"6px"},children:a.jsx("span",{className:rt.syncStatusEventLine,style:{fontSize:"11px"},children:ge.text})},ge.key))})]}),a.jsxs("div",{className:`${xt.formActions} ${rt.syncStatusActions}`,children:[a.jsxs("div",{className:rt.syncStatusSecondaryActions,children:[a.jsx("button",{className:f.cancelBtn,onClick:X,disabled:y,title:y?"Repair is running now.":de?"Repair is queued and will start when the current sync finishes.":ve?"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.",children:y?a.jsxs(a.Fragment,{children:[a.jsx(mr,{size:14,className:f.spinner}),a.jsx("span",{style:{marginLeft:"6px"},children:"Repairing..."})]}):de?"Repair Queued":"Repair"}),a.jsxs("button",{className:f.cancelBtn,onClick:M,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[a.jsx(ag,{size:14}),a.jsx("span",{style:{marginLeft:"6px"},children:re?"Copied":"Copy Report"})]})]}),a.jsxs("div",{className:rt.syncStatusPrimaryActions,children:[a.jsx("div",{className:rt.syncStatusPrimaryActionSlot,children:x==="local"&&!K?a.jsx("button",{className:f.submitBtn,onClick:F,children:"Sign In / Register"}):a.jsx("div",{className:rt.syncStatusActionPlaceholder,"aria-hidden":"true"})}),a.jsx("div",{className:rt.syncStatusPrimaryActionSlot,children:a.jsx("button",{className:f.submitBtn,onClick:ue,disabled:ve,children:ve?a.jsxs(a.Fragment,{children:[a.jsx(mr,{size:14,className:f.spinner}),"Syncing..."]}):a.jsxs(a.Fragment,{children:[a.jsx(Mk,{size:14}),"Sync"]})})})]})]})]})})}function QB({isOpen:e,theme:t,teamPlanMode:n,teamMgmtError:s,teamManagementTab:o,teamUsersLoading:l,teamUsers:i,teamActionBusyUserId:d,teamInviteFeedback:m,teamInviteEmail:y,teamInviteRole:k,teamInvitePermissionMode:S,teamInviteBusy:h,pendingInvites:g,teamAuditLoading:v,teamAuditEvents:A,teamAuditPage:_,teamAuditPages:I,teamAuditHasMore:W,onClose:V,onOpenMembersTab:B,onOpenInvitesTab:J,onOpenAuditTab:de,onMemberRoleChange:ve,onMemberPermissionChange:re,onToggleMemberDisabled:x,onRevokeInvite:K,onRemoveMember:me,onInviteEmailChange:pe,onInviteRoleChange:X,onInvitePermissionModeChange:M,onSubmitInvite:F,onLoadAuditPrevious:ue,onLoadAuditNext:ge}){return a.jsx(Ls,{isOpen:e,onClose:V,title:"Team Management",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${xt.form} ${ft.modalBody}`,children:[n==="personal"&&a.jsx("p",{className:fe.loginError,children:"Team management is only available in TEAM accounts."}),s&&a.jsx("p",{className:fe.loginError,children:s}),a.jsxs("div",{className:`${f.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[a.jsx("button",{className:`${f.settingsTabBtn} ${o==="members"?f.settingsTabBtnActive:""}`,onClick:B,children:"Members"}),a.jsx("button",{className:`${f.settingsTabBtn} ${o==="invites"?f.settingsTabBtnActive:""}`,onClick:J,children:"Invites"}),a.jsx("button",{className:`${f.settingsTabBtn} ${o==="audit"?f.settingsTabBtnActive:""}`,onClick:de,children:"Audit Log"})]}),o==="members"&&a.jsxs("div",{className:pt.accountHubCard,children:[l&&a.jsx("p",{className:ft.mutedText,children:"Loading members..."}),!l&&i.length===0&&a.jsx("p",{className:ft.mutedText,children:"No users found."}),!l&&i.map(O=>a.jsxs("div",{className:ft.memberRow,children:[a.jsx("div",{className:ft.memberTitle,children:O.displayName||O.email}),a.jsxs("div",{className:pt.accountMenuMeta,children:[O.email," · ",O.status,O.disabled?" · deactivated":""]}),a.jsxs("div",{className:ft.memberActions,children:[a.jsxs("select",{className:`${f.input} ${ft.selectRole}`,value:O.role,onChange:_e=>ve(O.userId,_e.target.value),disabled:d===O.userId,children:[a.jsx("option",{value:"owner",children:"Owner"}),a.jsx("option",{value:"admin",children:"Admin"}),a.jsx("option",{value:"member",children:"Member"})]}),O.role==="member"&&a.jsxs("select",{className:`${f.input} ${ft.selectPermission}`,value:O.permissionMode,onChange:_e=>re(O.userId,_e.target.value),disabled:d===O.userId,children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:f.cancelBtn,disabled:d===O.userId,onClick:()=>x(O.userId,!O.disabled),children:O.disabled?"Reactivate":"Deactivate"}),O.status==="invited"&&a.jsx("button",{className:f.cancelBtn,disabled:d===O.userId,onClick:()=>K(O.userId),children:"Revoke Invite"}),a.jsx("button",{className:f.cancelBtn,disabled:d===O.userId,onClick:()=>me(O.userId),children:"Remove"})]})]},O.userId))]}),o==="invites"&&a.jsxs("div",{className:pt.accountHubCard,children:[m&&a.jsx("p",{className:ft.sectionText,children:m}),a.jsxs("div",{className:f.pathInputGroup,children:[a.jsx("label",{className:`${f.label} ${ft.labelFixed}`,children:"Email"}),a.jsx("input",{className:f.input,value:y,onChange:O=>pe(O.target.value),placeholder:"name@company.com"})]}),a.jsxs("div",{className:f.pathInputGroup,children:[a.jsx("label",{className:`${f.label} ${ft.labelFixed}`,children:"Role"}),a.jsxs("select",{className:`${f.input} ${ft.selectRole}`,value:k,onChange:O=>X(O.target.value==="admin"?"admin":"member"),children:[a.jsx("option",{value:"member",children:"Member"}),a.jsx("option",{value:"admin",children:"Admin"})]}),k==="member"&&a.jsxs("select",{className:`${f.input} ${ft.selectPermission}`,value:S,onChange:O=>M(O.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:f.submitBtn,disabled:h||!y.trim()||n!=="team",onClick:F,children:h?"Sending...":"Send Invite"})]}),a.jsxs("div",{className:ft.inviteRow,children:[a.jsx("div",{className:ft.listHeading,children:"Pending Invites"}),g.length===0&&a.jsx("p",{className:ft.mutedText,children:"No pending invites."}),g.map(O=>a.jsxs("div",{className:ft.memberRow,children:[a.jsx("div",{className:ft.memberTitle,children:O.displayName||O.email}),a.jsxs("div",{className:pt.accountMenuMeta,children:[O.email," · ",O.role]})]},O.userId))]})]}),o==="audit"&&a.jsxs("div",{className:pt.accountHubCard,children:[v&&a.jsx("p",{className:ft.mutedText,children:"Loading audit entries..."}),!v&&A.length===0&&a.jsx("p",{className:ft.mutedText,children:"No audit events for this workspace."}),!v&&a.jsx("div",{className:ft.auditList,children:A.map(O=>a.jsxs("div",{className:ft.memberRow,children:[a.jsx("div",{className:pt.accountMenuMeta,children:new Date(O.createdAt).toLocaleString()}),a.jsx("div",{className:ft.memberTitle,children:O.action}),a.jsxs("div",{className:pt.accountMenuMeta,children:[O.actorUserId," (",O.actorRole,")"]})]},O.id))}),a.jsxs("div",{className:ft.auditPager,children:[a.jsx("button",{className:f.cancelBtn,disabled:v||_===0,onClick:ue,children:"Previous"}),a.jsxs("span",{className:pt.accountMenuMeta,children:["Page ",_+1," of ",I]}),a.jsx("button",{className:f.cancelBtn,disabled:v||!W||_+1>=I,onClick:ge,children:"Next"})]})]}),a.jsx("div",{className:`${xt.formActions} ${ft.modalActionsEnd}`,children:a.jsx("button",{className:f.cancelBtn,onClick:V,children:"Close"})})]})})}const Iy=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},XB=(e,t,n)=>{if(Iy(e)===t)return null;const o={status:t};return t==="task"||t==="on-hold"?(o.inProgress=!1,o.readyForReview=!1,o.completed=!1,o.cancelled=!1,o.completedAt=null,o):t==="in-progress"?(o.inProgress=!0,o.readyForReview=!1,o.completed=!1,o.cancelled=!1,o.completedAt=null,o):t==="review"?(o.inProgress=!1,o.readyForReview=!0,o.completed=!1,o.cancelled=!1,o.completedAt=null,o):t==="done"||t==="completed"?(o.status="done",o.inProgress=!1,o.readyForReview=!1,o.completed=!0,o.cancelled=!1,o.completedAt=n,o):(t==="cancelled"&&(o.status="cancelled"),o)},eW=({targetTasks:e,overTaskId:t,isBelowOverItem:n})=>{if(!t)return e.length;const s=e.findIndex(o=>o.id===t);return s<0?e.length:s+(n?1:0)},Ty=(e,t=new Map)=>{const n=new Map(t);return e.forEach((s,o)=>{n.set(s.id,{...n.get(s.id)||{},orderInDay:o})}),n},vf=e=>Array.from(e.entries()).map(([t,n])=>({taskId:t,updates:n})),Ry=({sourceColumnId:e,targetColumnId:t,sourceTasks:n,updates:s})=>!e||e===t?s:Ty(n,s),tW=({activeTask:e,sourceColumnId:t,targetTasks:n,sourceTasks:s,insertAt:o})=>{const l=[...n];l.splice(o,0,e);let i=new Map;return l.forEach((d,m)=>{if(d.id===e.id){i.set(d.id,{...i.get(d.id)||{},...e.scheduledDate?{scheduledDate:null,scheduledWeekKey:null}:{},orderInDay:m});return}i.set(d.id,{...i.get(d.id)||{},orderInDay:m})}),i=Ry({sourceColumnId:t,targetColumnId:"backlog",sourceTasks:s,updates:i}),vf(i)},aW=({activeTask:e,targetTasks:t,insertAt:n})=>{const s=[...t];return s.splice(n,0,e),vf(Ty(s))},nW=({activeTask:e,sourceColumnId:t,targetColumnId:n,targetTasks:s,sourceTasks:o,insertAt:l,scheduledDate:i,scheduledWeekKey:d})=>{const m=[...s];m.splice(l,0,e);let y=new Map;return m.forEach((k,S)=>{if(k.id===e.id){y.set(k.id,{...y.get(k.id)||{},scheduledDate:i,scheduledWeekKey:d,orderInDay:S});return}y.set(k.id,{...y.get(k.id)||{},orderInDay:S})}),y=Ry({sourceColumnId:t,targetColumnId:n,sourceTasks:o,updates:y}),vf(y)},rW=({activeTask:e,sourceColumnId:t,targetColumnId:n,targetTasks:s,sourceTasks:o,overTaskId:l,isBelowOverItem:i,scheduleDates:d,parseToIsoWeekKey:m,todayDate:y})=>{const k=["mon","tue","wed","thu","fri","sat","sun"];if(!(n==="backlog"||n==="expired"||k.includes(n)))return null;const h=eW({targetTasks:s,overTaskId:l,isBelowOverItem:i});if(n==="expired")return t!=="expired"?null:{kind:"updates",updates:aW({activeTask:e,targetTasks:s,insertAt:h})};if(n==="backlog")return{kind:"updates",updates:tW({activeTask:e,sourceColumnId:t,targetTasks:s,sourceTasks:o,insertAt:h})};if(!k.includes(n))return null;const g=d[n];return g?!(e.status==="done"||e.status==="cancelled")&&g<y?{kind:"blocked",reason:"Only completed work can be scheduled in the past."}:{kind:"updates",updates:nW({activeTask:e,sourceColumnId:t,targetColumnId:n,targetTasks:s,sourceTasks:o,insertAt:h,scheduledDate:g,scheduledWeekKey:m(g)}),selectedDate:g}:null},Yu="expired::";function sW({tasks:e,columns:t,groupBy:n,searchQuery:s,copiedId:o,taxonomies:l,types:i,priorities:d,approaches:m,assigneeOptions:y=[],onUpdateTask:k,onTaskClick:S,onOpenTaskById:h,onCopyId:g,onToggleInProgress:v,onToggleReview:A,onToggleComplete:_,onToggleCancel:I,onSetStatus:W,onArchiveTask:V,onUnarchive:B,onDelete:J,allTasks:de=[],onAddTaskToColumn:ve,emptyColumnMode:re="show",filterCategories:x=[],filterTypes:K=[],filterPriorities:me=[],filterStatus:pe=[],filterAssignees:X=[],filtersReady:M=!0,scheduleFilteredTaskIds:F,categories:ue=[],compressed:ge=!1,readOnlyMode:O=null,recentlyChangedTaskIds:_e=[],scheduleDates:Ne,onScheduleDaySelected:se,persistedScrollLeft:ce,onScrollLeftChange:Re,sortBy:Pe="created",sortOrder:Ae="desc",planningDropTargets:Ee=null,onAssignTaskToWorkstream:$,onAssignWorkstreamToInitiative:T,showTaskCardStatusLabel:b=!0,workstreams:N=[],initiatives:D=[]}){const[te,P]=r.useState(null),[H,be]=r.useState(!1),[U,ie]=r.useState(!1),ee=r.useMemo(()=>new Set(_e),[_e]),Q=r.useMemo(()=>new Map(N.map(E=>[E.id,E])),[N]),q=r.useMemo(()=>new Map(D.map(E=>[E.id,E])),[D]),Se=r.useCallback(E=>{const c=E.workstreamId&&Q.get(E.workstreamId)||null,Y=c?.initiativeId&&q.get(c.initiativeId)||null;return{taskWorkstream:c,taskInitiative:Y}},[q,Q]),we=r.useMemo(()=>new Set(e.map(E=>E.id)),[e]),Te=r.useCallback(E=>E.startsWith(Yu)?E.slice(Yu.length):E,[]),Me=r.useCallback(E=>we.has(Te(E)),[we,Te]),nt=r.useMemo(()=>new Set(F||[]),[F]),gt=r.useRef(null),lt=r.useCallback(E=>{const c=E?.data?.current||{},Y=String(E?.id||"");let ye=String(c.taskId||""),Ie=String(c.workstreamId||"");!ye&&Y&&Me(Y)&&(ye=Te(Y)),!Ie&&Y.startsWith("planning-workstream:")&&(Ie=Y.slice(20));let ze=String(c.type||"");return ze||(ye?ze="task-card":Ie&&(ze="planning-workstream")),{activeId:Y,type:ze,taskId:ye,workstreamId:Ie}},[Te,Me]),St=ug(Pp(hg,{activationConstraint:{distance:10}}),Pp(nv,{coordinateGetter:av})),qe=Iy,Ct=r.useMemo(()=>{const E=new Date,c=E.getFullYear(),Y=String(E.getMonth()+1).padStart(2,"0"),ye=String(E.getDate()).padStart(2,"0");return`${c}-${Y}-${ye}`},[]),dt=r.useMemo(()=>{const E=ye=>{const Ie=ye.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!Ie)return null;const ze=new Date(Date.UTC(Number(Ie[1]),Number(Ie[2])-1,Number(Ie[3]))),Ge=ze.getUTCDay()||7;ze.setUTCDate(ze.getUTCDate()+4-Ge);const je=new Date(Date.UTC(ze.getUTCFullYear(),0,1)),Vt=Math.ceil(((ze.getTime()-je.getTime())/864e5+1)/7);return`${ze.getUTCFullYear()}-W${String(Vt).padStart(2,"0")}`};return{dates:{...(()=>{const ye=new Date,Ie=ye.getDay(),ze=Ie===0?-6:1-Ie,Ge=new Date(ye);Ge.setDate(ye.getDate()+ze);const je=Et=>{const Tt=Et.getFullYear(),Wt=String(Et.getMonth()+1).padStart(2,"0"),Ht=String(Et.getDate()).padStart(2,"0");return`${Tt}-${Wt}-${Ht}`},Vt={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Et,Tt)=>{const Wt=new Date(Ge);Wt.setDate(Ge.getDate()+Tt),Vt[Et]=je(Wt)}),Vt})(),...Ne||{}},parseToIsoWeekKey:E}},[Ne]),Xe=E=>{const c=E.scheduledDate||null;return c?new Map([[dt.dates.mon,"mon"],[dt.dates.tue,"tue"],[dt.dates.wed,"wed"],[dt.dates.thu,"thu"],[dt.dates.fri,"fri"],[dt.dates.sat,"sat"],[dt.dates.sun,"sun"]]).get(c)||"__offweek":"backlog"},it=r.useMemo(()=>{if(n==="schedule")return[];const E=new Set(t.map(Ie=>String(Ie.value))),c=new Set(t.map(Ie=>Ie.label)),Y=[],ye=Ie=>{const ze=n==="status"?qe(Ie):Ie[n],Ge=String(ze??"");if(!Ge||E.has(Ge)||c.has(Ge))return null;if(n==="category"){const je=ue.find(Vt=>Vt.value===Ge||Vt.label===Ge);return{value:Ge,label:je?.label||Ge,icon:je?.icon||"Folder",color:je?.color}}if(n==="type"){const je=i?.find(Vt=>Vt.value===Ge||Vt.label===Ge);return{value:Ge,label:je?.label||Ge,icon:je?.icon||"CheckSquare",color:je?.color}}if(n==="priority"){const je=d?.find(Vt=>Number(Vt.value)===Number(Ge));return{value:Number.isFinite(Number(Ge))?Number(Ge):Ge,label:je?.label||Ge,icon:je?.icon||"Flag",color:je?.color}}if(n==="complexity")return{value:Number.isFinite(Number(Ge))?Number(Ge):Ge,label:Ge,icon:"Gauge"};if(n==="status")return{value:Ge,label:Ge,icon:"Circle"};if(n==="assignee"){const je=y.find(Vt=>Vt.value===Ge);return{value:Ge,label:je?.label||Ge,icon:je?.icon==="HelpCircle"?"Circle":je?.icon,color:je?.color}}return{value:Ge,label:Ge}};for(const Ie of e){const ze=ye(Ie);ze&&(Y.push(ze),E.add(String(ze.value)),c.add(ze.label))}return Y},[y,ue,n,t,d,e,i]),ne=r.useMemo(()=>[...t,...it],[it,t]),st=r.useMemo(()=>{const E=new Map;for(const c of ne)E.set(String(c.value),c),E.has(c.label)||E.set(c.label,c);return E},[ne]),Ze=r.useMemo(()=>{const E={};return ne.forEach(Y=>{E[String(Y.value)]=0}),(de.length>0?de:e).forEach(Y=>{let ye="";if(n==="status")ye=qe(Y);else if(n==="schedule")ye=Xe(Y);else{const ze=Y[n];ye=String(ze??"")}const Ie=st.get(ye);if(Ie&&E[String(Ie.value)]++,n==="schedule"){const ze=Y.status==="done"||Y.status==="cancelled";Y.scheduledDate&&!ze&&Y.scheduledDate<Ct&&st.has("expired")&&(E.expired=(E.expired||0)+1)}}),E},[de,e,ne,n,st,Ct]),Pt=r.useMemo(()=>{const E={};if(ne.forEach(c=>{E[String(c.value)]=[]}),e.forEach(c=>{let Y="";if(n==="status")Y=qe(c);else if(n==="schedule")Y=Xe(c);else{const Ie=c[n];Y=String(Ie??"")}const ye=st.get(Y);if(ye){if(n==="schedule"&&String(ye.value)==="backlog"&&!nt.has(c.id))return;E[String(ye.value)].push(c)}if(n==="schedule"){const Ie=c.status==="done"||c.status==="cancelled";c.scheduledDate&&!Ie&&c.scheduledDate<Ct&&E.expired&&E.expired.push(c)}}),n==="schedule"){const c=(ye,Ie)=>{const ze=typeof ye.orderInDay=="number"?ye.orderInDay:Number.MAX_SAFE_INTEGER,Ge=typeof Ie.orderInDay=="number"?Ie.orderInDay:Number.MAX_SAFE_INTEGER;return ze!==Ge?ze-Ge:String(ye.createdAt||"").localeCompare(String(Ie.createdAt||""))},Y=(ye,Ie)=>um(ye,Ie,Pe,Ae,l);Object.keys(E).forEach(ye=>{if(ye==="backlog"||ye==="expired"){E[ye].sort(Y);return}E[ye].sort(c)})}return E},[e,de,ne,n,st,nt,Ct,Pe,Ae]),kt=te?Te(te):null,It=kt?e.find(E=>E.id===kt):null,Ft=r.useRef(null),Mt=r.useRef(null),Be=r.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),et=r.useRef(-1),Ue=(E,c)=>M?n==="category"?!x.includes(String(E)):n==="type"?!K.includes(String(E)):n==="priority"?!me.some(Y=>Number(Y)===Number(E)):n==="status"?String(E)==="completed"?!pe.includes("done")&&!pe.includes("cancelled"):!pe.includes(String(E)):n==="assignee"?!X.includes(String(E)):!1:!1,Je=r.useMemo(()=>{let ye=0;return ne.forEach((Ie,ze)=>{const Ge=Pt[String(Ie.value)]||[],je=Ue(Ie.value,Ie.label),Vt=n!=="schedule"&&re==="hide"&&Ge.length===0;if(je||Vt)return;const qt=re==="collapse"&&Ge.length===0;ye+=qt?72:320,ye+=4}),ye},[ne,Pt,re,n,x,K,me,pe,X,M]),yt=r.useCallback(E=>{if(!Re)return;const c=Math.max(0,Math.round(E));c!==et.current&&(et.current=c,Re(c))},[Re]);r.useEffect(()=>{const E=Ft.current,c=Mt.current;if(!E||!c)return;let Y=!1,ye=!1;const Ie=()=>{!E||ye||(Y=!0,E.scrollLeft=c.scrollLeft,yt(c.scrollLeft),setTimeout(()=>Y=!1,0))},ze=()=>{!c||Y||(ye=!0,c.scrollLeft=E.scrollLeft,yt(E.scrollLeft),setTimeout(()=>ye=!1,0))};return c.addEventListener("scroll",Ie),E.addEventListener("scroll",ze),()=>{c.removeEventListener("scroll",Ie),E.removeEventListener("scroll",ze)}},[yt]);const ct=r.useRef(!1);r.useEffect(()=>{if(ct.current)return;if(typeof ce!="number"||!Number.isFinite(ce)){ct.current=!0;return}const E=Ft.current,c=Mt.current;if(!E||!c)return;const Y=Math.max(0,E.scrollWidth-E.clientWidth),ye=Math.min(Math.max(0,ce),Y);E.scrollLeft=ye,c.scrollLeft=ye,ct.current=!0},[ce,Je]),r.useEffect(()=>{const E=()=>{const c=Ft.current;if(!c){ie(!1);return}ie(c.scrollWidth>c.clientWidth+4)};return E(),window.addEventListener("resize",E),()=>{window.removeEventListener("resize",E)}},[Je,ne.length,Pt]),r.useEffect(()=>{const E=Y=>{const ye=Be.current;if(ye.pointerId===null||ye.pointerId!==Y.pointerId)return;const Ie=Y.clientX-ye.startX,ze=Y.clientY-ye.startY;if(!ye.didPan){if(Math.abs(Ie)<7||Math.abs(Ie)<Math.abs(ze))return;ye.didPan=!0,be(!0),document.body.style.userSelect="none"}const Ge=ye.startScrollLeft-Ie;Ft.current&&(Ft.current.scrollLeft=Ge),Mt.current&&(Mt.current.scrollLeft=Ge),Y.preventDefault()},c=()=>{const Y=Be.current;Y.pointerId!==null&&(Y.pointerId=null,Y.didPan=!1,H&&(be(!1),document.body.style.userSelect=""))};return window.addEventListener("pointermove",E),window.addEventListener("pointerup",c),window.addEventListener("pointercancel",c),()=>{window.removeEventListener("pointermove",E),window.removeEventListener("pointerup",c),window.removeEventListener("pointercancel",c),document.body.style.userSelect=""}},[H]);const ae=E=>{!U||E.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(Be.current.pointerId=E.pointerId,Be.current.startX=E.clientX,Be.current.startY=E.clientY,Be.current.startScrollLeft=Ft.current?.scrollLeft||0,Be.current.didPan=!1)},Qe=E=>{P(E.active.id)},bt=E=>{const c=lt(E.active),Y=String(E.over?.data?.current?.type||"");c.type==="task-card"&&Y.startsWith("planning-")?gt.current=`${String(E.over?.id||"")}:${Y}`:gt.current&&(gt.current=null)},Ot=E=>{const{active:c,over:Y}=E;gt.current=null,P(null);const ye=lt(c),Ie=ye.type,ze=String(Y?.data?.current?.type||""),Ge=ye.taskId,je=ye.workstreamId,Vt=String(Y?.data?.current?.workstreamId||""),qt=String(Y?.data?.current?.initiativeId||"");if(Ie==="task-card"&&ze==="planning-workstream-target"&&Ge&&Vt){$?.(Ge,Vt);return}if(Ie==="planning-workstream"){if(ze==="planning-initiative-target"&&je&&qt){T?.(je,qt);return}return}const Et=String(c.id),Tt=Y?String(Y.id):null,Wt=Te(Et);Tt&&Te(Tt);const Ht=e.find(he=>he.id===Wt);if(!Ht||!Tt)return;const sa=Bt(Et),Ka=String(c?.data?.current?.sortable?.containerId||"")||sa,Xa=String(Y?.data?.current?.sortable?.containerId||"")||Bt(Tt);if(!Xa)return;const wa=st.get(Xa)||ne.find(he=>String(he.value)===Xa||he.label===Xa);if(wa){if(n==="schedule"){const xe=String(wa.value),Nt=Tt&&Me(Tt)?Te(Tt):null,tt=Y?.rect,ha=c.rect.current.translated||c.rect.current.initial,Pa=!!(tt&&ha&&ha.top+ha.height/2>tt.top+tt.height/2),ua=(Pt[xe]||[]).filter(aa=>aa.id!==Wt),ca=(Pt[String(Ka)]||[]).filter(aa=>aa.id!==Wt),Dt=rW({activeTask:Ht,sourceColumnId:Ka,targetColumnId:xe,targetTasks:ua,sourceTasks:ca,overTaskId:Nt,isBelowOverItem:Pa,scheduleDates:dt.dates,parseToIsoWeekKey:dt.parseToIsoWeekKey,todayDate:Ct});if(!Dt)return;if(Dt.kind==="blocked"){window.alert(Dt.reason);return}Dt.updates.forEach(({taskId:aa,updates:Za})=>k(aa,Za)),Dt.selectedDate&&se?.(Dt.selectedDate);return}let he=wa.value;if(n==="status"){const xe=String(he),Nt=XB(Ht,xe,new Date().toISOString());Nt&&k(Ht.id,Nt);return}(n==="priority"||n==="complexity")&&(he=Number(he));const ot=Ht[n];if(String(ot??"")!==String(he??"")){const xe={[n]:he};k(Ht.id,xe)}}},Bt=E=>{if(st.has(E)){const ye=st.get(E);return ye?String(ye.value):E}if(n==="schedule"&&E.startsWith(Yu))return"expired";const c=Te(E),Y=e.find(ye=>ye.id===c);if(Y){let ye="";n==="status"?ye=qe(Y):n==="schedule"?ye=Xe(Y):ye=String(Y[n]??"");const Ie=st.get(ye);return Ie?String(Ie.value):null}return null},Fe={sideEffects:rv({styles:{active:{opacity:"0"}}})},Lt=E=>{try{const c=tv(E);if(c.length>0){const Y=c.find(Vt=>String(Vt.id).startsWith("planning-"));if(Y)return[Y];const ye=E.pointerCoordinates;if(!ye)return[c[0]];const Ie=c.filter(Vt=>{const qt=String(Vt.id);return Me(qt)&&qt!==te});if(Ie.length===0){const qt=c.filter(Wt=>{const Ht=String(Wt.id);return!Me(Ht)}).find(Wt=>!!Bt(String(Wt.id)))||null,Et=qt?Bt(String(qt.id)):null,Tt=(E.droppableContainers||[]).filter(Wt=>{const Ht=String(Wt.id);return!Me(Ht)||Ht===te?!1:Et?Bt(Ht)===Et:!0});if(Tt.length>0){const Wt=Gf({...E,droppableContainers:Tt});if(Wt.length>0)return[Wt[0]]}return qt?[qt]:[c[0]]}const ze=Ie;let Ge=ze[0],je=Number.POSITIVE_INFINITY;for(const Vt of ze){const qt=E.droppableRects?.get(Vt.id);if(!qt)continue;const Et=qt.left+qt.width/2,Tt=qt.top+qt.height/2,Wt=ye.x-Et,Ht=ye.y-Tt,sa=Wt*Wt+Ht*Ht;sa<je&&(je=sa,Ge=Vt)}return[Ge]}return Gf(E)}catch(c){return console.error("[TaskKanban] collision detection error",c),[]}},vt={searchQuery:s,copiedId:o,taxonomies:l,types:i,priorities:d,approaches:m,assigneeOptions:y,onCopyId:g,onToggleInProgress:v,onToggleReview:A,onToggleComplete:_,onToggleCancel:I,onSetStatus:W,onArchiveTask:V,onUnarchive:B,onDelete:J,onOpenTaskById:h,categories:ue,readOnlyMode:O,changedTaskIdSet:ee,resolveTaskHierarchy:Se,groupBy:n,showStatusLabel:b};return a.jsxs(mg,{sensors:St,collisionDetection:Lt,onDragStart:Qe,onDragOver:bt,onDragEnd:Ot,onDragCancel:E=>{gt.current=null,P(null)},children:[Ee,a.jsxs("div",{className:f.kanbanWrapper,children:[a.jsx("div",{ref:Mt,className:`${f.kanbanTopScroll} tf-scrollbar`,children:a.jsx("div",{className:f.kanbanTopScrollSpacer,style:{width:`${Je}px`}})}),a.jsx("div",{className:f.kanbanContainer,ref:Ft,children:ne.map(E=>{const c=Pt[String(E.value)]||[],Y=Ue(E.value,E.label),ye=n!=="schedule"&&re==="hide"&&c.length===0,Ie=n==="schedule",ze=Ie&&ne.some(Ht=>String(Ht.value)==="backlog"),Ge=Ie&&String(E.value)==="backlog",je=Ie&&String(E.value)==="expired",Vt=Pt.backlog||[],Et=re==="collapse"&&Vt.length===0?72:320,Tt=Ge?0:je?ze?Et+4:0:void 0,Wt=Ge?6:je?5:void 0;return Y||ye?null:a.jsx(oW,{id:String(E.value),title:E.label,color:E.color,icon:E.icon,tasks:c,activeId:te,activeTaskId:kt,totalCount:Ze[String(E.value)],onAddTask:()=>ve?.(n,E.value),onTaskClick:S,commonCardProps:vt,collapseEmpty:re==="collapse",compressed:ge,onHeaderPointerDown:ae,isHeaderPanning:H,headerPanEnabled:U,stickyLeft:Tt,stickyZIndex:Wt,isPast:!!E.isPast,isSelected:!!E.isSelected,isWeekend:!!E.isWeekend,disableSorting:!1,scheduleDate:n==="schedule"?dt.dates[String(E.value)]:void 0,onScheduleDaySelected:se},String(E.value))})})]}),qi.createPortal(a.jsx(ev,{dropAnimation:Fe,children:It?(()=>{const{taskWorkstream:E,taskInitiative:c}=Se(It);return a.jsx(vd,{task:It,taskWorkstream:E,taskInitiative:c,isOverlay:!0,...vt,isArchived:It.isArchived,categories:ue,compressed:ge,isRecentlyChanged:ee.has(It.id)})})():null}),document.body)]})}function oW({id:e,title:t,color:n,icon:s,tasks:o,activeId:l=null,activeTaskId:i=null,totalCount:d,onAddTask:m,onTaskClick:y,commonCardProps:k,collapseEmpty:S,compressed:h,onHeaderPointerDown:g,isHeaderPanning:v=!1,headerPanEnabled:A=!1,stickyLeft:_,stickyZIndex:I,isPast:W=!1,isSelected:V=!1,isWeekend:B=!1,disableSorting:J=!1,scheduleDate:de,onScheduleDaySelected:ve}){const{setNodeRef:re}=Qp({id:e,data:{type:"Column"}}),x=S&&o.length===0,K=i?o.filter(F=>F.id!==i):o,me=typeof _=="number",pe=r.useRef(null),X=F=>e==="expired"?`${Yu}${F}`:F,M=F=>{if(!de||!ve)return;const ue=F.target;ue&&(ue.closest('[data-task-card="true"]')||ue.closest(`.${f.kanbanCardWrapper}`)||ve(de))};return a.jsxs("div",{ref:re,className:`${f.kanbanColumn} ${x?f.kanbanColumnCollapsed:""} ${me?f.kanbanColumnSticky:""} ${W?f.kanbanColumnPast:""} ${V?f.kanbanColumnSelectedDay:""} ${B?f.kanbanColumnWeekend:""}`,style:me?{left:`${_}px`,zIndex:I??4}:void 0,onClick:M,children:[a.jsxs("div",{className:`${f.kanbanHeader} ${A?f.kanbanHeaderDraggable:""} ${v?f.kanbanHeaderPanning:""}`,style:{borderTopColor:jn(n)||"var(--color-purple)"},onPointerDown:g,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[(()=>{const F=s&&Qi[s]?Qi[s]:Co,ue=jn(n)||"var(--color-purple)";return a.jsx(F,{size:16,style:{color:ue}})})(),!x&&a.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!x||d>0)&&a.jsx("span",{className:f.kanbanCount,children:x?d:`${o.length} / ${d}`}),!k.readOnlyMode&&a.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:F=>{F.stopPropagation(),m()},title:`Add task to ${t}`,"aria-label":`Add task to ${t}`,"data-no-header-pan":"true",children:a.jsx(Js,{size:14})})]})]}),a.jsx("div",{className:f.kanbanDroppable,children:a.jsx("div",{className:`${f.kanbanDroppableScroll} ${f.appScrollbar} tf-scrollbar`,ref:pe,children:J?K.map(F=>a.jsx("div",{className:f.kanbanCardWrapper,children:(()=>{const{taskWorkstream:ue,taskInitiative:ge}=k.resolveTaskHierarchy?.(F)||{};return a.jsx(vd,{task:F,taskWorkstream:ue,taskInitiative:ge,onClick:y,...k,isArchived:F.isArchived,readOnlyMode:k.readOnlyMode||null,compressed:h,isRecentlyChanged:!1})})()},F.id)):a.jsx(pg,{id:e,items:K.map(F=>X(F.id)),strategy:fg,children:K.map(F=>a.jsx(iW,{sortableId:X(F.id),task:F,onClick:y,commonCardProps:k,compressed:h,isRecentlyChanged:k.changedTaskIdSet?.has(F.id)},X(F.id)))})})})]})}function iW({sortableId:e,task:t,onClick:n,commonCardProps:s,compressed:o,isRecentlyChanged:l=!1}){const i=!!s?.readOnlyMode,{attributes:d,listeners:m,setNodeRef:y,transform:k,transition:S,isDragging:h}=gg({id:e,disabled:i,data:{type:"task-card",taskId:t.id}}),g={transform:Jp.Transform.toString(k),transition:S,opacity:h?0:1,pointerEvents:h?"none":"auto"},v=s?.groupBy==="schedule",A=!v&&l;return a.jsx("div",{ref:y,style:g,...i?{}:d,...i?{}:m,className:`${f.kanbanCardWrapper} ${A?f.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:_,taskInitiative:I}=s.resolveTaskHierarchy?.(t)||{};return a.jsx(vd,{task:t,taskWorkstream:_,taskInitiative:I,onClick:n,...s,isArchived:t.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:o,isRecentlyChanged:v?!1:l})})()})}function cW(e,t,n){const s=String(t);if(e==="category"){const o=n.categories.find(l=>String(l.value)===s||l.label===s);return o?{category:o.label}:{}}if(e==="type")return{type:s};if(e==="priority")return Number.isFinite(Number(t))?{priority:Number(t)}:{};if(e==="complexity")return Number.isFinite(Number(t))?{complexity:Number(t)}:{};if(e==="approach"){const o=n.approaches.find(l=>String(l.value)===s||l.label===s);return o?{approach:o.value,taxonomyApproach:o.value}:{}}return e==="assignee"?s.trim().length>0?{assignee:s}:{}:e==="status"?s==="completed"?{status:"done"}:s==="task"||s==="on-hold"||s==="in-progress"||s==="review"||s==="done"||s==="cancelled"?{status:s}:{}:e==="schedule"?s==="backlog"||s==="expired"?{}:{scheduledDate:s}:{}}function lW(e){switch(e){case"auth-required":return{summary:"Sync is paused until you sign in again.",recommendedAction:"Sign in, then press Sync to retry."};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 before retrying sync."};case"retry-pending":return{summary:"Sync hit a temporary problem and is waiting for its scheduled retry.",recommendedAction:"Wait for the automatic retry, or press Sync to retry now."};case"push-in-flight":case"pull-in-flight":return{summary:"A sync request is already running for this workspace.",recommendedAction:"Wait for the current sync request to finish."};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 dW(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const n=lW(e.retryBlockedReason||e.pullBlockedReason||e.pushBlockedReason||null);return{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 ym(e,t){return e==="deleted"?!1:e==="archived"?t:!t}function uW(e,t,n){const s=t.filter(d=>ym(n,!!d.isArchived)),o=n==="deleted"?[]:e.filter(d=>ym(n,!!d.isArchived)).map(d=>({...d,workstreams:s.filter(m=>m.initiativeId===d.id)})),l=s.filter(d=>!d.initiativeId),i=[...o.flatMap(d=>d.workstreams),...l];return{initiatives:o,standaloneWorkstreams:l,visibleWorkstreams:i,initiativeById:new Map(o.map(d=>[d.id,d])),workstreamById:new Map(i.map(d=>[d.id,d]))}}function Ny(e){return typeof e.occurredAt=="string"&&e.occurredAt.trim().length>0?e.occurredAt:"unknown-time"}function mW(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function pW(e){const t=Cm(e.details),n=t?t.source:null;return typeof n=="string"?n.trim():""}function Lh(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 Bh(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 fW(e){const t=Ny(e),n=Cm(e.details),s=pW(e);return s==="retry.blocked"?`${t} manual retry blocked: ${Lh(n?.reason)} during ${Bh(n?.phase)}`:s==="repair.started"?`${t} manual repair started: ${Bh(n?.repairPhase)} selected`:s==="repair.blocked"?`${t} manual repair blocked: ${Lh(n?.reason)}`:null}function Xc(e,t=0){const n=String(e.id??"").trim();return n?`id:${n}`:[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(),dw(e.details),String(t)].join("|")}function hW(e,t,n=15){const s=new Map;for(const[o,l]of e.entries())s.set(Xc(l,o),l);for(const[o,l]of t.entries())s.set(Xc(l,o),l);return Array.from(s.values()).sort((o,l)=>String(l.occurredAt||"").localeCompare(String(o.occurredAt||""))).slice(0,Math.max(1,n))}function gW(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(Xc(e[n],n)!==Xc(t[n],n))return!1;return!0}function jy(e){const t=fW(e);if(t)return t;const n=Ny(e),s=mW(e),o=e.status==="error"?"failed":"succeeded",l=Number(e.changeCount),i=Number.isFinite(l)?` (${Math.max(0,Math.floor(l))} change${Math.floor(l)===1?"":"s"})`:"",d=Number(e.requestMs),m=Number.isFinite(d)?` in ${Math.max(0,Math.floor(d))}ms`:"",y=Number(e.statusCode),k=Number.isFinite(y)?` [${Math.floor(y)}]`:"",S=typeof e.errorMessage=="string"&&e.errorMessage.trim().length>0?`: ${e.errorMessage.trim()}`:"";return`${n} ${s} ${o}${i}${m}${k}${S}`}function Vp(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function yW(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"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 Py(e,t,n){if(t)return"Repairing";if(n&&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 kW(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:"AI snapshot last fetch",value:Vp(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function vW({syncRecentEvents:e,syncRecentEventsError:t,syncRecentEventsLoading:n}){return n&&e.length===0?[{key:"loading",text:"Loading recent sync events...",tone:"muted"}]:t?[{key:"error",text:t,tone:"error"}]:e.length===0?[{key:"empty",text:"No recent sync events recorded.",tone:"muted"}]:e.map((s,o)=>({key:Xc(s,o),text:jy(s),tone:s.status==="error"?"error":"default"}))}function My(e){const t=[];for(const n of e){if(String(n.errorMessage||"").toLowerCase().includes("reference number mismatch")){t.push(n);continue}if(String(n.status||"").toLowerCase()==="success")break}return t}function SW(e){return My(e).length}function wW(e){return My(e).map((t,n)=>{const s=t.details&&typeof t.details=="object"?t.details:null,o=String(s?.path||"").trim(),l=String(s?.referenceLabel||"").trim(),i=String(s?.taskTitle||s?.existingTaskTitle||"").trim(),d=Number(s?.existingReferenceNumber),m=Number(s?.incomingReferenceNumber),y=o||i||l||`Mismatch ${n+1}`,k=Number.isFinite(d)||Number.isFinite(m)?`Existing ${Number.isFinite(d)?d:"?"} vs incoming ${Number.isFinite(m)?m:"?"}`:l?`Both claimed ${l}`:null;return{key:Xc(t,n),pathLabel:y,refsLabel:k}})}function bW({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:n,workspaceSyncRecommendedAction:s,formattedLastSyncTime:o,formattedLastPullTime:l,formattedLastPushTime:i,workspaceSyncDiagnostics:d,workspaceSyncPendingChanges:m,syncLastError:y,syncStageLabel:k,referenceMismatchCount:S,syncRecentEvents:h}){const g=["Taskforce Sync Manager",`Workspace ID: ${e}`,`Status: ${t}`,`Summary: ${n}`,`Recommended action: ${s}`,`Last successful sync: ${o}`,`Last pull from cloud: ${l}`,`Last push to cloud: ${i}`,`Last error at: ${Vp(d.lastErrorAt)}`,`Pending local changes: ${m}`,`Last error: ${y}`,`Sync stage: ${k}`,`Push blocked reason: ${d.pushBlockedReason||"None"}`,`Pull blocked reason: ${d.pullBlockedReason||"None"}`,`Retry blocked reason: ${d.retryBlockedReason||"None"}`,`Repair active: ${d.repairActive?"Yes":"No"}`,`Push in flight: ${d.pushInFlight?"Yes":"No"}`,`Pull in flight: ${d.pullInFlight?"Yes":"No"}`,`Retry pending: ${d.retryPending?"Yes":"No"}`,`AI profile snapshot: ${d.aiProfileSnapshotCount}`,`AI profile raw response: ${d.aiProfileSnapshotRawCount}`,`Last pushed AI profiles tracked: ${d.lastPushedAiProfileCount}`,`AI profile watermarks tracked: ${d.lastPushedAiProfileWatermarkCount}`,`AI snapshot last fetch: ${Vp(d.aiProfileSnapshotLastFetchAt)}`,`AI snapshot fetch error: ${d.aiProfileSnapshotLastFetchError||"None"}`,`AI snapshot skip reason: ${d.aiProfileSnapshotLastSkipReason||"None"}`,`Document snapshot: ${d.documentSnapshotCount}`,`Asset snapshot: ${d.assetSnapshotCount}`,`Reference mismatches detected: ${S}`,`Queued full AI sync: ${d.forceFullAiProfilePushQueued?"Yes":"No"}`],v=h.map(A=>jy(A));return[...g,"","Recent sync events",...v.length>0?v:["No recent sync events recorded."]].join(`
4
- `)}const Wh="/api/taskforce/account/profile-summary",_W=9e4,Hc=new Map;function Gu(){return typeof performance<"u"?performance.now():Date.now()}function Ey(e,t){const n=String(e||"").trim();if(!n)return"";const s=String(t||"").trim();return s?`${n}::${s}`:n}function Fh(e,t){Hc.delete(Ey(e,t?.identityKey))}async function CW(e,t){const n=String(e||"").trim(),s=Ey(e,t?.identityKey);if(!s||!n)return null;const o=t?.force===!0,l=Date.now(),i=Hc.get(s);if(!o&&i?.payload!==void 0&&l-i.fetchedAt<_W)return zt("account_profile_summary_cache_hit",{url:n,cacheKey:s,ageMs:l-i.fetchedAt}),i.payload;if(!o&&i?.promise)return zt("account_profile_summary_request_reused",{url:n,cacheKey:s}),i.promise;const d=Gu(),m=(async()=>{const y=await fetch(n,{method:"GET",credentials:"include"});if(!y.ok)throw new Error(String((await y.json().catch(()=>({})))?.error||"Failed to load account summary."));const S=await y.json().catch(()=>({}))||null;return Hc.set(s,{payload:S,fetchedAt:Date.now(),promise:null}),zt("account_profile_summary_loaded",{url:n,cacheKey:s,durationMs:Math.round(Gu()-d),fromCache:!1}),S})().catch(y=>{const k=i?.payload??null;if(k)return Hc.set(s,{payload:k,fetchedAt:i?.fetchedAt??Date.now(),promise:null}),zt("account_profile_summary_failed",{url:n,cacheKey:s,durationMs:Math.round(Gu()-d),error:y instanceof Error?y.message:String(y||"Unknown error"),returnedStale:!0}),k;throw Hc.delete(s),zt("account_profile_summary_failed",{url:n,cacheKey:s,durationMs:Math.round(Gu()-d),error:y instanceof Error?y.message:String(y||"Unknown error"),returnedStale:!1}),y});return Hc.set(s,{payload:i?.payload??null,fetchedAt:i?.fetchedAt??0,promise:m}),m}const AW=1024,xW=5*1024*1024,IW=[.9,.82,.74,.66,.58],TW=[.9,.82,.74,.66,.58],RW=[1,.85,.7,.55,.4],NW=new Set(["image/png","image/jpeg","image/webp"]);function jW(e,t){const n=document.createElement("canvas");return n.width=Math.max(1,Math.round(e)),n.height=Math.max(1,Math.round(t)),n}async function PW(e){const t=URL.createObjectURL(e);try{const n=await new Promise((s,o)=>{const l=new Image;l.onload=()=>s(l),l.onerror=()=>o(new Error("Failed to load image.")),l.src=t});return{width:n.naturalWidth||n.width,height:n.naturalHeight||n.height,source:n}}finally{URL.revokeObjectURL(t)}}async function MW(e){const t=jW(e.width,e.height),n=t.getContext("2d");if(!n)throw new Error("Image optimization requires a 2D canvas context.");return n.drawImage(e.image.source,0,0,t.width,t.height),await new Promise((s,o)=>{t.toBlob(l=>{if(l){s(l);return}o(new Error("Failed to encode resized image."))},e.type,e.quality)})}const EW={loadImage:PW,renderToBlob:MW};function Oh(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function $h(e,t){const n=String(e||"").trim();if(!n)return`avatar${t}`;const s=n.lastIndexOf(".");return s<=0?`${n}${t}`:`${n.slice(0,s)}${t}`}function DW(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function LW(e){return e==="image/webp"?IW:e==="image/jpeg"?TW:[void 0]}async function BW(e,t,n=EW){const s=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):xW,o=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):AW;if(e.size<=s)return{file:e,optimized:!1,exceededLimit:!1};if(!NW.has(e.type))return{file:e,optimized:!1,exceededLimit:!0};const l=await n.loadImage(e),i=Math.max(l.width,l.height,1),d=Math.min(1,o/i);let m=null;for(const k of RW){const S=Math.min(1,d*k),h=Math.max(1,Math.round(l.width*S)),g=Math.max(1,Math.round(l.height*S));for(const v of DW(e.type))for(const A of LW(v)){const _=await n.renderToBlob({image:l,width:h,height:g,type:v,quality:A});if((!m||_.size<m.size)&&(m=_),_.size<=s)return{file:new File([_],$h(e.name,Oh(_.type||v,e.name)),{type:_.type||v,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!m)return{file:e,optimized:!1,exceededLimit:!0};const y=new File([m],$h(e.name,Oh(m.type||e.type,e.name)),{type:m.type||e.type,lastModified:e.lastModified});return{file:y,optimized:y.size<e.size,exceededLimit:y.size>s}}const qp="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Dy="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Uh="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function WW({projectName:e,currentWorkspaceId:t,brandLabel:n="TaskForce",brandHomeLabel:s="Go to Kanban",onBrandClick:o,runtimeMode:l="local",theme:i=tm,meta:d,actions:m}){const y=_g(i)?Dy:qp,k=String(e||"").trim(),S=String(t||"").trim(),h=S.toLowerCase(),g=!!(k&&(l!=="cloud"||h&&h!=="default")),v=()=>{if(!S||typeof navigator>"u")return;const I=navigator.clipboard;I?.writeText&&I.writeText(S).catch(()=>{})},A=I=>{I.key!=="Enter"&&I.key!==" "||(I.preventDefault(),v())},_=a.jsxs(a.Fragment,{children:[a.jsx("img",{src:y,alt:"Taskforce Logo",className:f.brandIcon,onError:I=>{const W=I.currentTarget;W.src!==Uh?W.src=Uh:W.style.display="none"}}),a.jsx("span",{children:n}),l==="cloud"&&a.jsx("span",{className:f.brandCloudSuffix,children:"HQ"})]});return a.jsxs("div",{className:`${f.header} ${Xt.standaloneHeader}`,children:[a.jsxs("div",{className:`${f.headerTitle} ${Xt.standaloneTitle}`,children:[o?a.jsx("button",{type:"button",className:f.brandHomeButton,onClick:o,title:s,"aria-label":s,children:_}):a.jsx("span",{className:f.brandHomeStatic,children:_}),g&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:f.projectSlash,children:"/"}),a.jsx("span",{className:f.projectName,title:S?`Workspace ID: ${S}`:void 0,role:S?"button":void 0,tabIndex:S?0:void 0,onClick:v,onMouseDown:I=>I.preventDefault(),onKeyDown:A,children:k})]}),d]}),a.jsx("div",{className:f.headerActions,style:{gap:"16px"},children:m})]})}function FW({value:e,placeholder:t,active:n=!1,onChange:s,onClear:o,clearTitle:l}){return a.jsxs("div",{className:f.searchContainer,style:{width:"240px"},children:[a.jsx(Ek,{size:16,className:f.searchIcon}),a.jsx("input",{type:"text",className:`${f.searchInput} ${n?f.searchActive:""}`,placeholder:t,value:e,onChange:i=>s(i.target.value)}),e&&o&&a.jsx("button",{className:f.clearSearchBtn,onClick:o,title:l,children:a.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function zh({label:e,value:t,options:n,onChange:s,trailingAction:o,width:l}){return a.jsxs("div",{className:f.groupByContainer,style:l?{width:l}:void 0,children:[a.jsx("span",{className:f.groupByLabel,children:e}),a.jsx("select",{className:`${f.select} ${f.groupBySelect}`,value:t,onChange:i=>s(i.target.value),children:n.map(i=>a.jsx("option",{value:i.value,children:i.label},String(i.value)))}),o]})}function _p({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,children:t.icon},t.key))})}function Hh(){return a.jsx("div",{className:f.headerDivider})}function OW({icon:e,label:t,onClick:n,disabled:s=!1}){return a.jsxs("button",{className:f.primaryUpdateBtn,onClick:n,disabled:s,children:[e," ",t]})}function Sf({children:e}){return a.jsx("div",{className:f.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 $W(){return a.jsx(Sf,{children:a.jsx("div",{"aria-hidden":"true",style:{minHeight:"32px",flex:1}})})}function UW({categoryFilterOptions:e,typeFilterOptions:t,priorities:n,taxonomyDisplayLabels:s,filterCategories:o,setFilterCategories:l,filterTypes:i,setFilterTypes:d,filterPriorities:m,setFilterPriorities:y,filterStatus:k,setFilterStatus:S,filterAssignees:h,setFilterAssignees:g,assigneeOptions:v,initiativeFilterOptions:A=[],selectedInitiativeId:_="",setSelectedInitiativeId:I=()=>{},workstreamFilterOptions:W=[],selectedWorkstreamId:V="",setSelectedWorkstreamId:B=()=>{},taskScope:J,setTaskScope:de,showArchive:ve,setShowArchive:re,fetchArchive:x,onDeleteAllDeleted:K,clearFilters:me}){return a.jsxs(a.Fragment,{children:[a.jsx(fy,{}),a.jsx(Gi,{label:s?.category||$e("standalone.categoryLabel"),options:e,selected:o,onChange:pe=>l(pe),variant:"value"}),a.jsx(Gi,{label:s?.type||$e("standalone.typeLabel"),options:t,selected:i,onChange:pe=>d(pe),variant:"value"}),a.jsx(Gi,{label:s?.priority||$e("standalone.priorityLabel"),options:n,selected:m,onChange:pe=>y(pe),variant:"value"}),a.jsx(Gi,{label:$e("standalone.statusLabel"),options:Ys,selected:k,onChange:pe=>S(pe),variant:"value"}),a.jsx(Gi,{label:$e("standalone.assigneeLabel"),options:v,selected:h,onChange:pe=>g(pe),variant:"value"}),a.jsx("div",{className:f.headerDivider,style:{height:"16px",margin:"0 8px"}}),a.jsx(Ih,{label:"Initiative",options:A,selected:_,onChange:I,allLabel:"All Initiatives",title:"Filter by initiative"}),a.jsx(Ih,{label:"Workstream",options:W,selected:V,onChange:B,allLabel:"All Workstreams",title:"Filter by workstream"}),a.jsx(gy,{scope:J,onScopeChange:pe=>{de(pe),pe==="archived"?(re(!0),x()):ve&&re(!1)},className:f.groupByContainer,labelClassName:f.groupByLabel}),a.jsx("div",{style:{flex:1}}),J==="deleted"&&K&&a.jsx(yy,{onClick:K,className:`${f.bulkArchiveBtn} ${f.taskToolbarAction} ${f.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),a.jsx(hy,{onClick:me})]})}function zW(e){return a.jsx(Sf,{children:a.jsx(UW,{...e})})}const Ju=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],Qu=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function HW({typeFilters:e,setTypeFilters:t,attachmentFilters:n,setAttachmentFilters:s,clearFilters:o}){return a.jsxs(Sf,{children:[a.jsx(fy,{}),a.jsx(Gi,{label:"Attachment",options:Qu,selected:n,onChange:l=>s(l),variant:"value"}),a.jsx(Gi,{label:"Type",options:Ju,selected:e,onChange:l=>t(l),variant:"value"}),a.jsx("div",{style:{flex:1}}),a.jsx(hy,{onClick:o})]})}const GW="_drawerBody_taswy_1",VW="_paneShell_taswy_9",qW="_collapsedPaneShell_taswy_18",KW="_collapsedPaneHeader_taswy_27",ZW="_collapsedPaneLabel_taswy_39",YW="_treePane_taswy_49",JW="_treePaneSplit_taswy_59",QW="_detailPane_taswy_63",XW="_paneHeader_taswy_73",e4="_paneHeaderLabel_taswy_87",t4="_paneContent_taswy_96",a4="_sectionTitle_taswy_105",n4="_sectionHeaderRow_taswy_113",r4="_sectionToggleButton_taswy_120",s4="_headerActionGroup_taswy_138",o4="_toggleActive_taswy_145",i4="_sectionGroup_taswy_151",c4="_treeList_taswy_176",l4="_treeChildren_taswy_182",d4="_treeRow_taswy_190",u4="_treeRowDetailOpen_taswy_202",m4="_treeRowDropReady_taswy_208",p4="_treeRowDropActive_taswy_212",f4="_treeRowDropMode_taswy_218",h4="_treeChevron_taswy_218",g4="_rowButton_taswy_219",y4="_detailsButton_taswy_220",k4="_treeRowDragging_taswy_224",v4="_treeChevronPlaceholder_taswy_248",S4="_rowContent_taswy_270",w4="_rowTopRow_taswy_280",b4="_referenceBadgeButton_taswy_289",_4="_referenceBadgeStatic_taswy_295",C4="_rowTitle_taswy_316",A4="_rowMeta_taswy_330",x4="_detailsButtonActive_taswy_358",I4="_emptyPanel_taswy_365",T4="_emptyPanelTitle_taswy_374",R4="_emptyPanelText_taswy_380",N4="_sectionNote_taswy_386",j4="_detailHero_taswy_393",P4="_detailReferenceRow_taswy_400",M4="_detailTitle_taswy_407",E4="_detailDescription_taswy_414",D4="_detailActionRow_taswy_425",L4="_metricGrid_taswy_432",B4="_metricCard_taswy_439",W4="_editorCard_taswy_444",F4="_editorField_taswy_451",O4="_editorLabel_taswy_457",$4="_editorHint_taswy_463",U4="_editorActions_taswy_468",z4="_metricValue_taswy_474",H4="_metricLabel_taswy_481",G4="_progressTrack_taswy_488",V4="_progressFill_taswy_496",q4="_listCard_taswy_502",K4="_activityTimelineList_taswy_511",Z4="_activityTimelineEmpty_taswy_520",Y4="_deferredPanelFallback_taswy_524",J4="_sectionDropReady_taswy_550",Q4="_sectionDropActive_taswy_555",X4="_sectionDropMode_taswy_561",eF="_attachReferenceRow_taswy_565",tF="_attachReferenceInput_taswy_572",aF="_listItem_taswy_577",nF="_listItemButton_taswy_586",rF="_detailCardButton_taswy_595",sF="_listItemText_taswy_600",oF="_listItemTitle_taswy_615",iF="_listItemMeta_taswy_629",cF="_detailChildCard_taswy_634",lF="_detailChildCardArchived_taswy_646",dF="_detailChildCardTopRow_taswy_651",uF="_detailChildReferenceRow_taswy_660",mF="_taskStatusIcon_taswy_667",Ce={drawerBody:GW,paneShell:VW,collapsedPaneShell:qW,collapsedPaneHeader:KW,collapsedPaneLabel:ZW,treePane:YW,treePaneSplit:JW,detailPane:QW,paneHeader:XW,paneHeaderLabel:e4,paneContent:t4,sectionTitle:a4,sectionHeaderRow:n4,sectionToggleButton:r4,headerActionGroup:s4,toggleActive:o4,sectionGroup:i4,treeList:c4,treeChildren:l4,treeRow:d4,treeRowDetailOpen:u4,treeRowDropReady:m4,treeRowDropActive:p4,treeRowDropMode:f4,treeChevron:h4,rowButton:g4,detailsButton:y4,treeRowDragging:k4,treeChevronPlaceholder:v4,rowContent:S4,rowTopRow:w4,referenceBadgeButton:b4,referenceBadgeStatic:_4,rowTitle:C4,rowMeta:A4,detailsButtonActive:x4,emptyPanel:I4,emptyPanelTitle:T4,emptyPanelText:R4,sectionNote:N4,detailHero:j4,detailReferenceRow:P4,detailTitle:M4,detailDescription:E4,detailActionRow:D4,metricGrid:L4,metricCard:B4,editorCard:W4,editorField:F4,editorLabel:O4,editorHint:$4,editorActions:U4,metricValue:z4,metricLabel:H4,progressTrack:G4,progressFill:V4,listCard:q4,activityTimelineList:K4,activityTimelineEmpty:Z4,deferredPanelFallback:Y4,sectionDropReady:J4,sectionDropActive:Q4,sectionDropMode:X4,attachReferenceRow:eF,attachReferenceInput:tF,listItem:aF,listItemButton:nF,detailCardButton:rF,listItemText:sF,listItemTitle:oF,listItemMeta:iF,detailChildCard:cF,detailChildCardArchived:lF,detailChildCardTopRow:dF,detailChildReferenceRow:uF,taskStatusIcon:mF},pF=We.lazy(()=>vs(()=>import("./EntityActivityTimeline-DSj0ThaK.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),fF=We.lazy(()=>vs(()=>import("./ContextAttachmentManager-CfG_ER7C.js"),__vite__mapDeps([8,1,9,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager}))),sd=332,Zs=392,Cp=56;function Ly(e,t,n,s,o){return(e?Cp:sd)+(t?n?Cp:Zs:0)+(s?o?Cp:Zs:0)}function hF(e,t){const n=String(t||"").trim(),s=new Map;for(const o of e){const l=String(o?.value||"").trim();if(!l||l==="unassigned"||typeof o.archivedAt=="string"&&o.archivedAt.trim().length>0)continue;const i=String(o.label||l).trim()||l,d=String(o.kind||"").trim().toLowerCase(),m=String(o.username||"").trim().toLowerCase(),y=d==="agent"?`agent:${m||i.toLowerCase()}`:`value:${l}`;(!s.has(y)||l===n)&&s.set(y,{...o,value:l,label:i})}return Array.from(s.values()).sort((o,l)=>o.label.localeCompare(l.label,void 0,{sensitivity:"base"}))}function Ap(e){return e?e.split(/[-_\s]+/g).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "):"No status"}function od({label:e,entityType:t,interactive:n=!0}){const[s,o]=We.useState(!1),l=We.useCallback(async i=>{i.stopPropagation();try{await navigator.clipboard.writeText(e),o(!0),window.setTimeout(()=>o(!1),1200)}catch{o(!1)}},[e]);return n?a.jsx(ry,{copied:s,label:e,onClick:l,title:`Copy ${t} reference`,ariaLabel:s?`Copied ${t} reference`:`Copy ${t} reference`,className:Ce.referenceBadgeButton,children:e}):a.jsx("span",{className:`${f.taskIdBadge} ${Ce.referenceBadgeStatic}`.trim(),children:a.jsx("span",{children:e})})}function xp({rowId:e,rowType:t,referenceLabel:n,title:s,meta:o,active:l,detailOpen:i=!1,canExpand:d=!1,expanded:m=!1,onToggleExpand:y,onToggleScope:k,onToggleDetails:S}){const{active:h}=yg(),g=String(h?.data?.current?.type||""),v=t==="workstream"&&g==="task-card",A=t==="initiative"&&g==="planning-workstream",_=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:I,isOver:W}=Qp({id:`${_}:${e}`,data:t==="workstream"?{type:_,workstreamId:e}:{type:_,initiativeId:e}}),V=t==="workstream",{attributes:B,listeners:J,setNodeRef:de,transform:ve,isDragging:re}=sv({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!V}),x=V&&ve?{transform:Jp.Translate.toString(ve)}:void 0,K=v||A;return a.jsxs("div",{ref:I,style:x,className:`${Ce.treeRow} ${i?Ce.treeRowDetailOpen:""} ${K?Ce.treeRowDropReady:""} ${W?Ce.treeRowDropActive:""} ${re?Ce.treeRowDragging:""} ${K?Ce.treeRowDropMode:""}`,children:[d?a.jsx("button",{type:"button",className:Ce.treeChevron,onClick:y,title:m?"Collapse workstreams":"Expand workstreams",children:m?a.jsx(el,{size:15}):a.jsx(Yc,{size:15})}):a.jsx("span",{className:`${Ce.treeChevron} ${Ce.treeChevronPlaceholder}`,"aria-hidden":"true"}),a.jsxs("div",{className:Ce.rowContent,children:[a.jsxs("div",{className:Ce.rowTopRow,children:[n?a.jsx(od,{label:n,entityType:t}):a.jsx("span",{"aria-hidden":"true"}),a.jsx("button",{type:"button",className:`${Ce.detailsButton} ${l?Ce.detailsButtonActive:""}`,onClick:k,title:l?"Clear board scope":"Scope board to this item",children:a.jsx(lg,{size:14})})]}),a.jsxs("button",{type:"button",ref:V?de:void 0,className:Ce.rowButton,onClick:S,...V?B:{},...V?J:{},children:[a.jsx("span",{className:Ce.rowTitle,children:s}),a.jsx("span",{className:Ce.rowMeta,children:o})]})]})]})}function Ip({label:e,onExpand:t}){return a.jsx("div",{className:`${Ce.paneShell} ${Ce.collapsedPaneShell}`.trim(),children:a.jsxs("div",{className:Ce.collapsedPaneHeader,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,children:a.jsx(Yc,{size:16})}),a.jsx("span",{className:Ce.collapsedPaneLabel,children:e})]})})}function Gh(){return a.jsxs("div",{className:Ce.deferredPanelFallback,"aria-hidden":"true",children:[a.jsx("span",{}),a.jsx("span",{}),a.jsx("span",{})]})}function gF({initiatives:e,standaloneWorkstreams:t,allStandaloneWorkstreams:n=t,activeInitiativeId:s,activeWorkstreamId:o,expandedInitiativeIds:l,detail:i,secondaryPane:d,onCreateInitiative:m,onCreateWorkstream:y,onToggleInitiative:k,onSelectInitiative:S,onSelectWorkstream:h,onOpenInitiativeDetails:g,onOpenWorkstreamDetails:v}){const[A,_]=We.useState(!1),I=We.useCallback(B=>{if(!A)return B.workstreams;const J=new Set(B.workstreams.map(ve=>ve.id)),de=(B.allWorkstreams||[]).filter(ve=>!!ve.isArchived&&!J.has(ve.id));return[...B.workstreams,...de]},[A]),W=We.useMemo(()=>{if(!A)return t;const B=new Set(t.map(de=>de.id)),J=n.filter(de=>!!de.isArchived&&!B.has(de.id));return[...t,...J]},[n,A,t]),V=We.useMemo(()=>{const B=e.reduce((de,ve)=>de+(ve.allWorkstreams||[]).filter(re=>!!re.isArchived).length,0),J=n.filter(de=>!!de.isArchived).length;return B+J},[n,e]);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:Ce.sectionGroup,children:[a.jsxs("div",{className:Ce.sectionHeaderRow,children:[a.jsx("div",{className:Ce.sectionTitle,children:"Initiatives"}),a.jsxs("div",{className:Ce.headerActionGroup,children:[V>0?a.jsx("button",{type:"button",className:`tf-control-icon ${A?Ce.toggleActive:""}`.trim(),title:A?"Hide archived workstreams in tray":"Show archived workstreams in tray","aria-label":A?"Hide archived workstreams in tray":"Show archived workstreams in tray","aria-pressed":A,onClick:()=>_(B=>!B),children:A?a.jsx(Yp,{size:15}):a.jsx(cg,{size:15})}):null,a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:m,children:a.jsx(Js,{size:15})})]})]}),a.jsx("div",{className:Ce.treeList,children:e.length===0?a.jsxs("div",{className:Ce.emptyPanel,children:[a.jsx("div",{className:Ce.emptyPanelTitle,children:"No initiatives yet"}),a.jsxs("div",{className:Ce.emptyPanelText,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."]})]}):e.map(B=>{const J=l.has(B.id),de=I(B),ve=B.workstreamCount||0,re=de.filter(me=>!!me.isArchived).length,K=`${A&&re>0?`${ve} workstreams + ${re} archived`:`${ve} workstreams`} • ${B.taskCount} tasks${B.isArchived?" • archived":""}`;return a.jsxs("div",{children:[a.jsx(xp,{rowId:B.id,rowType:"initiative",referenceLabel:Qr(B),title:B.title,meta:K,active:s===B.id&&!o,detailOpen:i?.type==="initiative"&&i.item.id===B.id,canExpand:de.length>0,expanded:J,onToggleExpand:()=>k(B.id),onToggleScope:()=>S(B.id),onToggleDetails:()=>{if(i?.type==="initiative"&&i.item.id===B.id){g("");return}g(B.id)}}),J&&de.length>0&&a.jsx("div",{className:Ce.treeChildren,children:de.map(me=>a.jsx(xp,{rowId:me.id,rowType:"workstream",referenceLabel:xo(me),title:me.title,meta:`${me.taskCount} tasks • ${me.progressPercent}% complete${me.isArchived?" • archived":""}`,active:o===me.id,detailOpen:i?.type==="workstream"&&i.item.id===me.id||d?.kind==="detail"&&d.detail.item.id===me.id,onToggleScope:()=>h(me.id,B.id),onToggleDetails:()=>{if(d?.kind==="detail"&&d.detail.item.id===me.id){v("");return}if(i?.type==="workstream"&&i.item.id===me.id){v("");return}v(me.id)}},me.id))})]},B.id)})})]}),a.jsxs("div",{className:Ce.sectionGroup,children:[a.jsxs("div",{className:Ce.sectionHeaderRow,children:[a.jsx("div",{className:Ce.sectionTitle,children:"Workstreams"}),a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:y,children:a.jsx(Js,{size:15})})]}),a.jsx("div",{className:Ce.treeList,children:W.length===0?a.jsxs("div",{className:Ce.emptyPanel,children:[a.jsx("div",{className:Ce.emptyPanelTitle,children:"No standalone workstreams yet"}),a.jsxs("div",{className:Ce.emptyPanelText,children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",a.jsx("code",{children:"+"})," action above to add one."]})]}):W.map(B=>a.jsx(xp,{rowId:B.id,rowType:"workstream",referenceLabel:xo(B),title:B.title,meta:`${B.taskCount} tasks • ${B.progressPercent}% complete${B.isArchived?" • archived":""}`,active:o===B.id,detailOpen:i?.type==="workstream"&&i.item.id===B.id||d?.kind==="detail"&&d.detail.item.id===B.id,onToggleScope:()=>h(B.id,null),onToggleDetails:()=>{if(i?.type==="workstream"&&i.item.id===B.id){v("");return}v(B.id)}},B.id))})]})]})}function Vh({detail:e,currentWorkspaceId:t,onOpenNestedWorkstreamDetails:n,onEdit:s,onArchive:o,onUnarchive:l,onCreateTaskInWorkstream:i,onCreateWorkstreamInInitiative:d,onOpenTaskById:m,onRemoveTaskFromWorkstream:y,onAssignInitiativeToWorkstream:k,onAttachTaskToWorkstreamByReference:S,onAttachWorkstreamToInitiativeByReference:h,onAddPlanningContextFile:g,onRemovePlanningContextFile:v,onUpdatePlanningContextCaption:A,parentInitiative:_=null,assigneeOptions:I}){const[W,V]=We.useState(""),[B,J]=We.useState(!1),[de,ve]=We.useState(!0),{active:re}=yg(),x=String(re?.data?.current?.type||""),K=e.type==="workstream"&&x==="task-card",me=e.type==="initiative"&&x==="planning-workstream",pe=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:X,isOver:M}=Qp({id:`${pe}:detail:${e.item.id}`,data:e.type==="initiative"?{type:pe,initiativeId:e.item.id}:{type:pe,workstreamId:e.item.id}}),F=e.type==="initiative"?"Workstreams":"Tasks",ue=We.useMemo(()=>{if(e.type!=="initiative")return[];const P=new Set(e.item.workstreams.map(be=>be.id)),H=(e.item.allWorkstreams||[]).filter(be=>!!be.isArchived&&!P.has(be.id));return[...e.item.workstreams,...H]},[e.item,e.type]),ge=We.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),O=e.type==="initiative"?ue.filter(P=>!!P.isArchived).length:ge.filter(P=>!!P.isArchived).length,_e=B?ue:ue.filter(P=>!P.isArchived),Ne=B?ge:ge.filter(P=>!P.isArchived),se=e.type==="initiative"?"Initiative":"Workstream",ce=e.type==="initiative"?Qr(e.item):xo(e.item);We.useEffect(()=>{V(""),J(!1),ve(!0)},[e.item.id,e.type]);const Re=We.useCallback(()=>{const P=W.trim();P&&(e.type==="initiative"?h?.(e.item.id,P):S?.(e.item.id,P),V(""))},[W,e.item.id,e.type,S,h]),Pe=e.type==="initiative"?"Attach workstream to initiative":"Attach task to workstream",Ae=e.type==="initiative"?"archived workstreams":"archived tasks",Ee=e.type==="workstream"&&_?Qr(_):"",$=We.useMemo(()=>{const P=new Map;for(const H of I){const be=String(H.value||"").trim();be&&(P.set(be,H),P.set(be.toLowerCase(),H))}return P},[I]),T=We.useCallback((P,H,be)=>{if(be&&be.trim())return be.trim();const U=String(P||"").trim();if(!U)return H==="ai"?"AI Agent":"You";const ie=$.get(U)||$.get(U.toLowerCase());return ie?.label?ie.label:U},[$]),b=We.useCallback(P=>{const H=String(P.actorId||"").trim(),be=$.get(H)||$.get(H.toLowerCase()),U=P.actorProfile||be||null,ie=P.actorType==="system"?"system":P.actorType==="ai"||U?.kind==="ai"||be?.kind==="agent"?"agent":P.actorType==="human"||U?.kind==="human"||be?.kind==="member"?"member":P.fallbackKind||"member",ee=String(U&&"icon"in U&&U.icon?U.icon:ie==="agent"?"Bot":ie==="member"?"User":"ClipboardList"),Q=Qi[ee]||(ie==="agent"?Xu:ie==="member"?ai:sg);return{kind:ie,label:ie==="system"?"System":T(H,ie==="agent"?"ai":"human",U&&"label"in U&&U.label||null),color:U&&"color"in U&&U.color||void 0,ActorIcon:Q}},[$,T]),N=We.useCallback((P,H)=>{const be=String(H||"").trim();if(be){if(P==="ownerId")return $.get(be)?.label||$.get(be.toLowerCase())?.label||be;if(P==="initiativeId"&&_&&be===_.id)return Qr(_)||_.title}},[$,_]),te=We.useMemo(()=>py({activity:e.item.activity,comments:e.item.comments}),[e.item.activity,e.item.comments]).length;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:Ce.detailHero,children:[ce?a.jsxs("div",{className:Ce.detailReferenceRow,children:[e.type==="workstream"?a.jsxs(a.Fragment,{children:[a.jsx(Vi,{onClick:P=>{if(P.stopPropagation(),Ee){k?.(e.item.id,null);return}s()},title:Ee?"Remove from initiative":"Attach to initiative",ariaLabel:Ee?"Remove from initiative":"Attach to initiative",children:Ee?a.jsx(Vu,{size:13}):a.jsx(em,{size:13})}),a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),Ee?a.jsxs(a.Fragment,{children:[a.jsx(od,{label:Ee,entityType:"initiative"}),a.jsx("span",{className:f.taskHierarchyDivider,children:"/"})]}):null]}):null,a.jsx(od,{label:ce,entityType:e.type})]}):null,a.jsx("h3",{className:Ce.detailTitle,children:e.item.title}),a.jsx("p",{className:Ce.detailDescription,children:e.item.description?.trim()||(e.type==="initiative"?"A top-level planning container that groups related workstreams.":"A coordination lane that groups related tasks and keeps execution organized.")}),a.jsx("div",{className:Ce.progressTrack,"aria-label":`${e.item.progressPercent}% complete`,children:a.jsx("div",{className:Ce.progressFill,style:{width:`${e.item.progressPercent}%`}})}),a.jsxs("div",{className:Ce.detailActionRow,children:[a.jsx("button",{type:"button",className:f.secondaryHeaderBtn,onClick:s,children:a.jsxs("span",{children:["Edit ",se]})}),e.item.isArchived?a.jsx("button",{type:"button",className:f.secondaryHeaderBtn,onClick:l,children:a.jsx("span",{children:"Unarchive"})}):a.jsx("button",{type:"button",className:f.secondaryHeaderBtn,onClick:o,children:a.jsx("span",{children:"Archive"})})]})]}),a.jsxs("div",{className:Ce.metricGrid,children:[a.jsxs("div",{className:Ce.metricCard,children:[a.jsx("span",{className:Ce.metricValue,children:e.item.taskCount}),a.jsx("span",{className:Ce.metricLabel,children:"Tasks in scope"})]}),a.jsxs("div",{className:Ce.metricCard,children:[a.jsx("span",{className:Ce.metricValue,children:e.item.completedTaskCount}),a.jsx("span",{className:Ce.metricLabel,children:"Done / terminal"})]}),a.jsxs("div",{className:Ce.metricCard,children:[a.jsx("span",{className:Ce.metricValue,children:e.item.ownerLabel||"Unassigned"}),a.jsx("span",{className:Ce.metricLabel,children:"Owner"})]}),a.jsxs("div",{className:Ce.metricCard,children:[a.jsx("span",{className:Ce.metricValue,children:(e.item.commentCount||0)+(e.item.attachmentCount||0)}),a.jsx("span",{className:Ce.metricLabel,children:"Context items"})]})]}),a.jsxs("div",{ref:X,className:`${Ce.listCard} ${K||me?Ce.sectionDropReady:""} ${M?Ce.sectionDropActive:""} ${K||me?Ce.sectionDropMode:""}`.trim(),children:[a.jsxs("div",{className:Ce.sectionHeaderRow,children:[a.jsx("div",{className:Ce.sectionTitle,children:F}),a.jsxs("div",{className:Ce.headerActionGroup,children:[O>0?a.jsx("button",{type:"button",className:`tf-control-icon ${B?Ce.toggleActive:""}`.trim(),title:B?`Hide ${Ae}`:`Show ${Ae}`,"aria-label":B?`Hide ${Ae}`:`Show ${Ae}`,"aria-pressed":B,onClick:()=>J(P=>!P),children:B?a.jsx(Yp,{size:15}):a.jsx(cg,{size:15})}):null,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:()=>d?.(e.item.id),children:a.jsx(Js,{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:()=>i?.(e.item.id),children:a.jsx(Js,{size:15})})]})]}),a.jsxs("div",{className:Ce.attachReferenceRow,children:[a.jsx(Vi,{onClick:P=>{P.stopPropagation(),Re()},disabled:!W.trim(),title:Pe,ariaLabel:Pe,children:a.jsx(em,{size:13})}),a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),a.jsx("input",{type:"text",className:`${f.input} ${Ce.attachReferenceInput}`.trim(),placeholder:e.type==="initiative"?"Paste workstream reference (e.g. WS-123)":"Paste task reference (e.g. T-123)",value:W,onChange:P=>V(P.target.value),onKeyDown:P=>{P.key==="Enter"&&(P.preventDefault(),Re())}})]}),e.type==="initiative"?_e.length>0?_e.map(P=>{const H=xo(P),be=()=>n?.(P.id);return a.jsx("div",{className:`${Ce.listItemButton} ${Ce.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${Ce.listItem} ${Ce.detailChildCard} ${P.isArchived?Ce.detailChildCardArchived:""}`.trim(),children:[a.jsx("div",{className:Ce.detailChildCardTopRow,children:a.jsxs("div",{className:Ce.detailChildReferenceRow,children:[a.jsx(Vi,{onClick:U=>{U.stopPropagation(),k?.(P.id,null)},title:"Remove from initiative",ariaLabel:"Remove from initiative",children:a.jsx(Vu,{size:13})}),a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),H?a.jsx(od,{label:H,entityType:"workstream"}):a.jsx("span",{"aria-hidden":"true"})]})}),a.jsxs("div",{role:"button",tabIndex:0,className:Ce.listItemText,onClick:be,onKeyDown:U=>{U.key!=="Enter"&&U.key!==" "||(U.preventDefault(),be())},children:[a.jsx("span",{className:Ce.listItemTitle,children:P.title}),a.jsxs("span",{className:Ce.listItemMeta,children:[P.taskCount," tasks • ",P.progressPercent,"% complete",P.isArchived?" • archived":""]})]})]})},P.id)}):a.jsxs("div",{className:Ce.emptyPanel,children:[a.jsx("div",{className:Ce.emptyPanelTitle,children:"No workstreams yet"}),a.jsx("div",{className:Ce.emptyPanelText,children:"Add the first workstream to break the initiative into clearer lanes of execution."})]}):Ne.length>0?[...Ne].sort((P,H)=>{const be=dd(P.status).value==="done",U=dd(H.status).value==="done";return be===U?0:be?1:-1}).map(P=>{const H=P.referenceNumber?`T-${P.referenceNumber}`:"",be=dd(P.status),U=Qi[be.icon||"Square"],ie=jn(be.color)||"var(--text-secondary)",ee=()=>m?.(P.id),Q=`${Ap(P.status)}${P.isArchived?" • archived":""}`;return a.jsx("div",{className:`${Ce.listItemButton} ${Ce.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${Ce.listItem} ${Ce.detailChildCard} ${P.isArchived?Ce.detailChildCardArchived:""}`.trim(),children:[a.jsxs("div",{className:Ce.detailChildCardTopRow,children:[a.jsxs("div",{className:Ce.detailChildReferenceRow,children:[a.jsx(Vi,{onClick:q=>{q.stopPropagation(),y?.(P.id,e.item.id)},title:"Remove from workstream",ariaLabel:"Remove from workstream",children:a.jsx(Vu,{size:13})}),a.jsx("span",{className:f.taskHierarchyDivider,children:"/"}),H?a.jsx(od,{label:H,entityType:"task"}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsx("span",{className:Ce.taskStatusIcon,style:{color:ie},"aria-label":be.shortLabel||Ap(P.status),title:be.shortLabel||Ap(P.status),children:U?a.jsx(U,{size:18,strokeWidth:2.4}):null})]}),a.jsxs("div",{role:"button",tabIndex:0,className:Ce.listItemText,onClick:ee,onKeyDown:q=>{q.key!=="Enter"&&q.key!==" "||(q.preventDefault(),ee())},children:[a.jsx("span",{className:Ce.listItemTitle,children:P.title}),a.jsx("span",{className:Ce.listItemMeta,children:Q})]})]})},P.id)}):a.jsxs("div",{className:Ce.sectionNote,children:["No tasks are linked to this workstream yet. Use the ",a.jsx("code",{children:"+"})," action above to add the first one."]})]}),a.jsx("div",{className:Ce.listCard,children:a.jsx(We.Suspense,{fallback:a.jsx(Gh,{}),children:a.jsx(fF,{ownerType:e.type,ownerId:e.item.id,ownerReferenceLabel:ce,workspaceId:t,attachments:e.item.attachments||[],onAddAttachment:P=>g?.(e.type,e.item.id,P),onRemoveAttachment:P=>v?.(e.type,e.item.id,P),onUpdateAttachmentCaption:(P,H)=>A?.(e.type,e.item.id,P,H)})})}),a.jsxs("div",{className:Ce.listCard,children:[a.jsxs("button",{type:"button",className:Ce.sectionToggleButton,onClick:()=>ve(P=>!P),"aria-expanded":de,title:de?"Hide recent activity":"Show recent activity",children:[a.jsxs("span",{className:Ce.sectionTitle,children:["Recent activity (",te,")"]}),de?a.jsx(el,{size:14}):a.jsx(Yc,{size:14})]}),de?a.jsx(We.Suspense,{fallback:a.jsx(Gh,{}),children:a.jsx(pF,{activity:e.item.activity,comments:e.item.comments,formatFieldValue:N,resolveActorPresentation:b,onOpenTaskById:m,emptyMessage:`No ${e.type} activity yet.`,listClassName:Ce.activityTimelineList,emptyClassName:Ce.activityTimelineEmpty})}):null]})]})}function qh({editor:e,draftTitle:t,draftDescription:n,draftOwner:s,draftInitiativeId:o,assigneeOptions:l,draftInitiativeSummary:i,onChangeDraftTitle:d,onChangeDraftDescription:m,onChangeDraftOwner:y,onChangeDraftInitiativeId:k,onCancel:S,onSubmit:h,isSubmitting:g,onAssignInitiativeToWorkstream:v}){const A=e.entityType==="initiative"?"Initiative":"Workstream",_=g?e.mode==="create"?`Creating ${A}...`:`Saving ${A}...`:e.mode==="create"?`Create ${A}`:`Save ${A}`,I=We.useMemo(()=>hF(l,s),[l,s]),W=We.useCallback(B=>{B.preventDefault(),h()},[h]),V=We.useCallback(()=>{e.mode!=="edit"||e.entityType!=="workstream"||v?.(e.targetId)},[e,v]);return a.jsxs("form",{className:Ce.editorCard,onSubmit:W,children:[a.jsxs("div",{className:Ce.editorField,children:[a.jsx("label",{className:Ce.editorLabel,children:"Title"}),a.jsx("input",{className:f.input,disabled:g,value:t,onChange:B=>d(B.target.value),placeholder:e.entityType==="initiative"?"Q3 Product Launch":"Content Production"})]}),a.jsxs("div",{className:Ce.editorField,children:[a.jsx("label",{className:Ce.editorLabel,children:"Description"}),a.jsx("textarea",{className:f.textarea,disabled:g,value:n,onChange:B=>m(B.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:Ce.editorField,children:[a.jsx("label",{className:Ce.editorLabel,children:"Initiative"}),i&&a.jsxs("div",{className:Ce.editorHint,children:["Current: ",i.title]}),a.jsxs("div",{className:Ce.attachReferenceRow,children:[e.mode==="edit"&&a.jsxs(a.Fragment,{children:[a.jsx(Vi,{onClick:B=>{B.stopPropagation(),V()},disabled:g||!o.trim(),title:"Attach workstream to initiative",ariaLabel:"Attach workstream to initiative",children:a.jsx(em,{size:13})}),a.jsx("span",{className:f.taskHierarchyDivider,children:"/"})]}),a.jsx("input",{type:"text",className:`${f.input} ${Ce.attachReferenceInput}`.trim(),disabled:g,placeholder:"Paste initiative reference (e.g. IN-123)",value:o,onChange:B=>k(B.target.value),onKeyDown:B=>{B.key==="Enter"&&(B.preventDefault(),V())}})]})]}),a.jsxs("div",{className:Ce.editorField,children:[a.jsx("label",{className:Ce.editorLabel,children:"Owner"}),a.jsxs("select",{className:`${f.select} ${f.groupBySelect}`,disabled:g,value:s,onChange:B=>y(B.target.value),children:[a.jsx("option",{value:"",children:"Unassigned"}),I.map(B=>a.jsx("option",{value:B.value,children:B.label},B.value))]})]}),a.jsxs("div",{className:Ce.editorActions,children:[a.jsx("button",{type:"button",className:f.secondaryHeaderBtn,onClick:S,disabled:g,children:"Cancel"}),a.jsx("button",{type:"submit",className:f.primaryUpdateBtn,disabled:g,children:_})]})]})}function yF({open:e,leftOffset:t=0,initiatives:n,standaloneWorkstreams:s,allStandaloneWorkstreams:o,activeInitiativeId:l,activeWorkstreamId:i,expandedInitiativeIds:d,detail:m,editor:y,secondaryPane:k,currentWorkspaceId:S,assigneeOptions:h,draftInitiativeSummary:g,draftTitle:v,draftDescription:A,draftOwner:_,draftInitiativeId:I,onChangeDraftTitle:W,onChangeDraftDescription:V,onChangeDraftOwner:B,onChangeDraftInitiativeId:J,onCollapseTreePane:de,onExpandTreePane:ve,onCollapsePrimaryPane:re,onExpandPrimaryPane:x,onCollapseSecondaryPane:K,onExpandSecondaryPane:me,onBackFromSecondary:pe,treeCollapsed:X,primaryCollapsed:M,secondaryCollapsed:F,onCancelEditor:ue,onSubmitEditor:ge,isSubmittingEditor:O,onCreateInitiative:_e,onCreateWorkstream:Ne,onToggleInitiative:se,onSelectInitiative:ce,onSelectWorkstream:Re,onOpenInitiativeDetails:Pe,onOpenWorkstreamDetails:Ae,onOpenNestedWorkstreamDetails:Ee,onEditInitiative:$,onEditWorkstream:T,onArchiveInitiative:b,onUnarchiveInitiative:N,onArchiveWorkstream:D,onUnarchiveWorkstream:te,onCreateTaskInWorkstream:P,onCreateWorkstreamInInitiative:H,onAssignInitiativeToWorkstream:be,onOpenTaskById:U,onRemoveTaskFromWorkstream:ie,onAttachTaskToWorkstreamByReference:ee,onAttachWorkstreamToInitiativeByReference:Q,onAddPlanningContextFile:q,onRemovePlanningContextFile:Se,onUpdatePlanningContextCaption:we}){const Te=!!(m||y),Me=!!k,nt=Ly(X,Te,M,Me,F),gt=y?y.entityType==="initiative"?y.mode==="create"?"New Initiative":"Edit Initiative":y.mode==="create"?"New Workstream":"Edit Workstream":m?.type==="initiative"?"Initiative":"Workstream",lt=k?.kind==="editor"?k.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",St=We.useCallback(qe=>{const Ct=String(qe.initiativeId||"").trim();return Ct&&n.find(dt=>dt.id===Ct)||null},[n]);return a.jsx("aside",{style:{position:"absolute",top:0,left:e?`${t}px`:`${t-nt-24}px`,bottom:0,width:`${nt}px`,minWidth:`${nt}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:Ce.drawerBody,children:[X?a.jsx(Ip,{label:"Planning",onExpand:ve}):a.jsxs("div",{className:`${Ce.paneShell} ${f.appScrollbar} tf-scrollbar ${Ce.treePane} ${Te&&!M?Ce.treePaneSplit:""}`.trim(),style:{flex:`0 0 ${sd}px`,width:`${sd}px`,minWidth:`${sd}px`,maxWidth:`${sd}px`},children:[a.jsxs("div",{className:Ce.paneHeader,children:[a.jsx("span",{className:Ce.paneHeaderLabel,children:"Planning"}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:de,children:a.jsx(Ao,{size:16})})]}),a.jsx("div",{className:Ce.paneContent,children:a.jsx(gF,{initiatives:n,standaloneWorkstreams:s,allStandaloneWorkstreams:o,activeInitiativeId:l,activeWorkstreamId:i,expandedInitiativeIds:d,detail:m,secondaryPane:k,onCreateInitiative:_e,onCreateWorkstream:Ne,onToggleInitiative:se,onSelectInitiative:ce,onSelectWorkstream:Re,onOpenInitiativeDetails:Pe,onOpenWorkstreamDetails:Ae})})]}),Te&&(M?a.jsx(Ip,{label:gt,onExpand:x}):a.jsxs("div",{className:`${Ce.paneShell} ${f.appScrollbar} tf-scrollbar ${Ce.detailPane}`.trim(),style:{flex:`0 0 ${Zs}px`,width:`${Zs}px`,minWidth:`${Zs}px`,maxWidth:`${Zs}px`},children:[a.jsxs("div",{className:Ce.paneHeader,children:[a.jsx("span",{className:Ce.paneHeaderLabel,children:gt}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:re,children:a.jsx(Ao,{size:16})})]}),a.jsx("div",{className:Ce.paneContent,children:y?a.jsx(qh,{editor:y,draftTitle:v,draftDescription:A,draftOwner:_,draftInitiativeId:I,assigneeOptions:h,draftInitiativeSummary:g,onChangeDraftTitle:W,onChangeDraftDescription:V,onChangeDraftOwner:B,onChangeDraftInitiativeId:J,onCancel:ue,onSubmit:ge,isSubmitting:O,onAssignInitiativeToWorkstream:be}):m?a.jsx(Vh,{detail:m,currentWorkspaceId:S,assigneeOptions:h,onOpenNestedWorkstreamDetails:m.type==="initiative"?Ee:void 0,onCreateTaskInWorkstream:m.type==="workstream"?P:void 0,onCreateWorkstreamInInitiative:m.type==="initiative"?H:void 0,onOpenTaskById:m.type==="workstream"?U:void 0,onRemoveTaskFromWorkstream:m.type==="workstream"?ie:void 0,onAssignInitiativeToWorkstream:be,onAttachTaskToWorkstreamByReference:m.type==="workstream"?ee:void 0,onAttachWorkstreamToInitiativeByReference:m.type==="initiative"?Q:void 0,parentInitiative:m.type==="workstream"?St(m.item):null,onEdit:()=>m.type==="initiative"?$(m.item.id):T(m.item.id),onArchive:()=>m.type==="initiative"?b(m.item.id):D(m.item.id),onUnarchive:()=>m.type==="initiative"?N(m.item.id):te(m.item.id),onAddPlanningContextFile:q,onRemovePlanningContextFile:Se,onUpdatePlanningContextCaption:we}):null})]})),Me&&(F?a.jsx(Ip,{label:lt,onExpand:me}):a.jsxs("div",{className:`${Ce.paneShell} ${f.appScrollbar} tf-scrollbar ${Ce.detailPane}`.trim(),style:{flex:`0 0 ${Zs}px`,width:`${Zs}px`,minWidth:`${Zs}px`,maxWidth:`${Zs}px`},children:[a.jsxs("div",{className:Ce.paneHeader,children:[a.jsx("span",{className:Ce.paneHeaderLabel,children:lt}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:K,children:a.jsx(Ao,{size:16})})]}),a.jsx("div",{className:Ce.paneContent,children:k?.kind==="editor"?a.jsx(qh,{editor:k.editor,draftTitle:v,draftDescription:A,draftOwner:_,draftInitiativeId:I,assigneeOptions:h,draftInitiativeSummary:g,onChangeDraftTitle:W,onChangeDraftDescription:V,onChangeDraftOwner:B,onChangeDraftInitiativeId:J,onCancel:pe,onSubmit:ge,isSubmitting:O,onAssignInitiativeToWorkstream:be}):k?a.jsx(Vh,{detail:k.detail,currentWorkspaceId:S,assigneeOptions:h,onCreateTaskInWorkstream:P,onOpenTaskById:U,onRemoveTaskFromWorkstream:ie,onAssignInitiativeToWorkstream:be,onAttachTaskToWorkstreamByReference:ee,parentInitiative:St(k.detail.item),onEdit:()=>T(k.detail.item.id),onArchive:()=>D(k.detail.item.id),onUnarchive:()=>te(k.detail.item.id),onAddPlanningContextFile:q,onRemovePlanningContextFile:Se,onUpdatePlanningContextCaption:we}):null})]}))]})})}const kF={"annotated_attachments.workspace_access":{enabled:!0,description:"Annotated Attachment workspace readiness gate.",owner:"taskforce",removalMilestone:"Annotated Attachment GA"},"documents.workspace_access":{enabled:!0,description:"Document Manager/editor workspace readiness gate.",owner:"taskforce",removalMilestone:"Document Manager GA"},"workflows.workspace_access":{enabled:!1,description:"Workflow workspace readiness gate.",owner:"taskforce",removalMilestone:"Workflow workspace GA"},"agents.workspace_access":{enabled:!0,description:"Agents workspace readiness gate.",owner:"taskforce",removalMilestone:"Agents workspace GA"},"initiatives.workspace_access":{enabled:!0,description:"Initiatives workspace readiness gate.",owner:"taskforce",removalMilestone:"Initiatives workspace GA"}},ud="annotated_attachments.workspace_access",md="documents.workspace_access",km="workflows.workspace_access",vm="agents.workspace_access",Kh="initiatives.workspace_access",vF=Object.entries(kF).reduce((e,[t,n])=>(e[t]={key:t,enabled:!!n.enabled,description:String(n.description||""),owner:String(n.owner||""),removalMilestone:String(n.removalMilestone||"")},e),{});function SF(e){const t=String(e||"").trim();return t&&vF[t]||null}function wF(e){const t=SF(e);return t?t.enabled?{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 Xl(e){return wF(e.featureKey)}const bF=["tasks","docs","annotate","workflows","agents"];function _F(e){const t=e?.featureAccess||{},n={tasks:{id:"tasks",label:"Tasks",featureKey:null,enabled:!0,fallbackModuleId:"tasks"},docs:{id:"docs",label:"Documents",featureKey:md,enabled:t[md]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:"Image Notes",featureKey:ud,enabled:t[ud]?.allowed??!1,fallbackModuleId:"tasks"},workflows:{id:"workflows",label:"Workflows",featureKey:km,enabled:t[km]?.allowed??!1,fallbackModuleId:"tasks"},agents:{id:"agents",label:"Agents",featureKey:vm,enabled:t[vm]?.allowed??!1,fallbackModuleId:"tasks"}};return bF.map(s=>n[s])}function CF(e){switch(e){case"docs":return{mode:e,moduleId:"docs",layoutVariant:"docs-minimal",headerSections:[],filterBar:{kind:"document-filters"},primaryAction:null};case"annotate":return{mode:e,moduleId:"annotate",layoutVariant:"annotated-module",headerSections:[],filterBar:{kind:"empty"},primaryAction:null};case"workflows":return{mode:e,moduleId:"workflows",layoutVariant:"workflows-module",headerSections:[],filterBar:{kind:"empty"},primaryAction:null};case"agents":return{mode:e,moduleId:"agents",layoutVariant:"agents-module",headerSections:[],filterBar:{kind:"empty"},primaryAction:null};default:return{mode:"tasks",moduleId:"tasks",layoutVariant:"tasks-default",headerSections:["search","sort","divider-primary","grouping","divider-secondary","task-display-actions"],filterBar:{kind:"task-filters"},primaryAction:"add-task"}}}function Zh(e,t){const n=t.find(s=>s.id===e);return n?n.enabled?n.id:n.fallbackModuleId:"tasks"}const AF="_weekLabel_vet2o_1",xF="_sectionTitle_vet2o_6",IF="_calendarHeader_vet2o_11",TF="_monthLabel_vet2o_18",RF="_weekdayGrid_vet2o_23",NF="_weekdayLabel_vet2o_30",jF="_calendarGrid_vet2o_36",PF="_calendarDay_vet2o_42",MF="_calendarDayDot_vet2o_55",EF="_jumpRow_vet2o_67",DF="_displaySection_vet2o_73",LF="_toggleLabel_vet2o_79",BF="_expiredSummary_vet2o_87",WF="_actionButton_vet2o_95",$n={weekLabel:AF,sectionTitle:xF,calendarHeader:IF,monthLabel:TF,weekdayGrid:RF,weekdayLabel:NF,calendarGrid:jF,calendarDay:PF,calendarDayDot:MF,jumpRow:EF,displaySection:DF,toggleLabel:LF,expiredSummary:BF,actionButton:WF},Yh=["mon","tue","wed","thu","fri","sat","sun"],FF={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Kc(e){const t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${s}`}function id(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const n=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(n.getTime())?null:n}function Kp(e,t){const n=e.getDay(),s=t==="sunday"?-n:n===0?-6:1-n,o=new Date(e);return o.setHours(0,0,0,0),o.setDate(o.getDate()+s),o}function OF(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 By(e,t){const n=new Date(e);return n.setDate(e.getDate()+t),n}function $F(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const n=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]))),s=n.getUTCDay()||7;n.setUTCDate(n.getUTCDate()+4-s);const o=new Date(Date.UTC(n.getUTCFullYear(),0,1)),l=Math.ceil(((n.getTime()-o.getTime())/864e5+1)/7);return`${n.getUTCFullYear()}-W${String(l).padStart(2,"0")}`}const Zp=320;function UF({open:e,onClose:t,scheduleSelectedDate:n,setScheduleSelectedDate:s,scheduleCalendarMonth:o,setScheduleCalendarMonth:l,scheduleShowWeekends:i,setScheduleShowWeekends:d,scheduleShowBacklog:m,setScheduleShowBacklog:y,scheduleOnlyExpired:k,setScheduleOnlyExpired:S,expiredScheduledCount:h,overdueDueCount:g,expiredLeafCandidates:v,expiredRecoveryCandidates:A,onMoveExpiredToSelectedWeek:_,onMoveExpiredToBacklog:I,scheduleBulkBusy:W,globalWeekStartsOn:V,resolvedLocale:B,todayDateOnly:J,scheduleBaseTasks:de,scheduleWeekStart:ve,scheduleWeekLabel:re}){const x=We.useMemo(()=>{const[M,F]=o.split("-"),ue=Number(M),ge=Number(F);if(!Number.isInteger(ue)||!Number.isInteger(ge)||ge<1||ge>12){const O=id(n)||new Date;return new Date(O.getFullYear(),O.getMonth(),1)}return new Date(ue,ge-1,1)},[o,n]),K=We.useMemo(()=>gm(x,{month:"long",year:"numeric"},B),[x,B]),me=We.useMemo(()=>{const M=Kp(x,V);return Array.from({length:42},(F,ue)=>By(M,ue))},[x,V]),pe=We.useMemo(()=>{const M=new Map;for(const F of de){const ue=F.scheduledDate||"";if(!ue)continue;const O=!(F.status==="done"||F.status==="cancelled")&&ue<J,_e=M.get(ue);_e?(_e.count+=1,O&&(_e.hasExpired=!0)):M.set(ue,{count:1,hasExpired:O})}return M},[de,J]),X=We.useMemo(()=>V==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[V]);return a.jsxs("aside",{className:`${f.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:`${Zp}px`,minWidth:`${Zp}px`},children:[a.jsxs("div",{className:"tf-sidebar-header",children:[a.jsxs("div",{className:"tf-sidebar-title",children:[a.jsx(Dk,{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(Yc,{size:16})})]}),a.jsxs("div",{className:$n.weekLabel,children:["Week of ",re]}),a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsxs("div",{className:$n.calendarHeader,children:[a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(x);M.setMonth(x.getMonth()-1),l(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:a.jsx(Ao,{size:14})}),a.jsx("div",{className:$n.monthLabel,children:K}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(x);M.setMonth(x.getMonth()+1),l(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:a.jsx(Yc,{size:14})})]}),a.jsx("div",{className:$n.weekdayGrid,children:X.map(M=>a.jsx("div",{className:$n.weekdayLabel,children:M},M))}),a.jsx("div",{className:$n.calendarGrid,children:me.map(M=>{const F=Kc(M),ue=M.getMonth()!==x.getMonth(),ge=Kp(M,V),O=Kc(ge)===Kc(ve),_e=F===n,Ne=F===J,se=F<J,ce=pe.get(F),Re=!!ce,Pe=!!ce?.hasExpired;return a.jsxs("button",{onClick:()=>{s(F),l(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},className:$n.calendarDay,style:{"--calendar-day-border":_e?"1px solid #2563eb":Ne?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":_e?"rgba(59,130,246,0.22)":Ne?"rgba(245,158,11,0.16)":O?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":ue?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":_e||Ne?700:500,"--calendar-day-opacity":se?.42:1},title:`${Ne?`${F} (Today)`:F}`+(Re?` • ${ce?.count} scheduled`:"")+(Pe?" • includes expired":""),children:[M.getDate(),Re&&a.jsx("span",{className:$n.calendarDayDot,style:{"--calendar-dot-background":Pe?"#ef4444":"#3b82f6","--calendar-dot-opacity":ue?.6:.95}})]},F)})}),a.jsx("div",{className:$n.jumpRow,children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date;s(Kc(M)),l(`${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 ${$n.displaySection}`,children:[a.jsx("div",{className:$n.sectionTitle,children:"Display"}),a.jsxs("label",{className:$n.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:i,onChange:M=>d(M.target.checked)}),"Show weekends"]}),a.jsxs("label",{className:$n.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:m,onChange:M=>y(M.target.checked)}),"Show backlog"]}),a.jsxs("label",{className:$n.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:k,onChange:M=>S(M.target.checked)}),"Only expired/overdue"]})]}),h>0&&a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsx("div",{className:$n.sectionTitle,children:"Expired Tasks"}),a.jsxs("div",{className:$n.expiredSummary,children:[a.jsxs("span",{children:[h," expired"]}),a.jsxs("span",{children:[g," overdue"]})]}),a.jsx("button",{className:`tf-control-icon ${$n.actionButton}`,onClick:_,disabled:W||v.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 ${$n.actionButton}`,onClick:I,disabled:W||A.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:W?"Working...":"Unschedule to backlog"})]})]})}function Wy(e,t){return e&&(t==="owner"||t==="admin")}function zF(e,t,n){return Wy(e,t)&&n==="team"}function HF({isOpen:e,workspaceId:t,refreshKeys:n}){const[s,o]=r.useState([]),[l,i]=r.useState(!1),[d,m]=r.useState(null),y=r.useRef(null),k=r.useRef(null);r.useLayoutEffect(()=>{k.current=VF(y.current,k.current)},[s]);const S=r.useCallback(async()=>{const h=await fetch(`/api/taskforce/sync/events?workspace_id=${encodeURIComponent(t)}&limit=15`,{method:"GET",credentials:"include"});if(!h.ok)throw new Error(`Failed to load sync events (${h.status})`);const g=await h.json().catch(()=>({}));return Array.isArray(g?.events)?g.events.filter(v=>v&&typeof v=="object"):[]},[t]);return r.useEffect(()=>{if(!e)return;let h=!1;const g=s.length===0;return g&&i(!0),S().then(v=>{h||(k.current=GF(y.current),o(A=>{const _=A.length===0?v:hW(A,v,15);return gW(A,_)?A:_}),m(null))}).catch(v=>{if(h)return;const A=v instanceof Error&&v.message.trim().length>0?v.message.trim():"Unable to load recent sync events.";m(A),g&&o([])}).finally(()=>{h||g&&i(!1)}),()=>{h=!0}},[e,S,...n]),{syncRecentEvents:s,syncRecentEventsLoading:l,syncRecentEventsError:d,syncEventsListRef:y,loadRecentSyncEvents:S}}function GF(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function VF(e,t){if(!t||!e)return null;const n=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,n),null}function qF({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:n,workspaceSyncRecommendedAction:s,formattedLastSyncTime:o,formattedLastPullTime:l,formattedLastPushTime:i,workspaceSyncDiagnostics:d,workspaceSyncPendingChanges:m,syncLastError:y,workspaceSyncPhase:k,referenceMismatchCount:S,syncRecentEvents:h,loadRecentSyncEvents:g,pushNotice:v,resetWorkspaceSyncCursorAndPull:A,workspaceSyncBusy:_}){const[I,W]=r.useState(!1),[V,B]=r.useState(!1),[J,de]=r.useState(!1),ve=r.useCallback(async()=>{try{const K=h.length>0?h:await g(),me=bW({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:n,workspaceSyncRecommendedAction:s,formattedLastSyncTime:o,formattedLastPullTime:l,formattedLastPushTime:i,workspaceSyncDiagnostics:d,workspaceSyncPendingChanges:m,syncLastError:y,syncStageLabel:Py(k,I,_),referenceMismatchCount:S,syncRecentEvents:K});await navigator.clipboard.writeText(me),de(!0),window.setTimeout(()=>{de(!1)},1800),v("Sync details copied to clipboard.","success")}catch{de(!1),v("Failed to copy sync details.","error")}},[e,l,i,o,g,v,S,y,h,t,d,k,m,s,n,_,I]),re=r.useCallback(async()=>{B(!1),W(!0);try{await A()}finally{W(!1)}},[A]),x=r.useCallback(()=>{if(!I){if(_){B(!0);return}re()}},[re,_,I]);return r.useEffect(()=>{V&&(_||I||re())},[re,_,I,V]),{workspaceSyncRepairBusy:I,workspaceSyncRepairQueued:V,workspaceSyncCopied:J,handleCopySyncDetails:ve,handleQueueOrRunRepairSync:x}}function KF({canManageWorkspaceSync:e,workspaceCloudSyncEnabled:t,saveWorkspaceCloudSyncSettings:n}){const[s,o]=r.useState(!1),[l,i]=r.useState(!1),[d,m]=r.useState(!1),[y,k]=r.useState(null),S=r.useCallback(async I=>{if(e){k(null),m(!0);try{const W=await n({enabled:I});W.success||k(W.error||(I?"Failed to enable sync.":"Failed to disable sync."))}finally{m(!1)}}},[e,n]),h=r.useCallback(async I=>{if(I&&!t){i(!0);return}await S(I)},[S,t]),g=r.useCallback(()=>{i(!1)},[]),v=r.useCallback(()=>{i(!1),S(!0)},[S]),A=r.useCallback(()=>{o(!0)},[]),_=r.useCallback(()=>{o(!1)},[]);return{showSyncStatusModal:s,showSyncEnableWarning:l,workspaceSyncToggleBusy:d,workspaceSyncError:y,syncControlBusy:d,openSyncStatusModal:A,closeSyncStatusModal:_,handleWorkspaceSyncToggle:h,cancelSyncEnableWarning:g,confirmSyncEnableWarning:v}}const Jh=We.lazy(()=>vs(()=>import("./TaskSettings-f2ga42_V.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),ZF=We.lazy(()=>vs(()=>import("./AnnotatedAttachmentWorkspace-CCckzWYZ.js"),__vite__mapDeps([12,1,2,3,4,5,13])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),YF=We.lazy(()=>vs(()=>import("./DocumentWorkspace-BVaWPA25.js"),__vite__mapDeps([14,1,2,9,3,4,5,15])).then(e=>({default:e.DocumentWorkspaceShell}))),JF=We.lazy(()=>vs(()=>import("./WorkflowsModule-E4UL3mov.js"),__vite__mapDeps([16,1,2,3,4,5])).then(e=>({default:e.WorkflowsModule}))),QF=We.lazy(()=>vs(()=>import("./AgentsModule-BS4Pi_nC.js"),__vite__mapDeps([17,1,2,3,4,5])).then(e=>({default:e.AgentsModule})));We.lazy(()=>vs(()=>import("./InitiativesModule-AxMkWtxH.js"),__vite__mapDeps([18,1,2,3,4,5])).then(e=>({default:e.InitiativesModule})));const XF=We.lazy(()=>vs(()=>import("./PlansPage-Ndt7mYfo.js"),__vite__mapDeps([19,1,2,5,3,4,20])).then(e=>({default:e.PlansPage}))),eO="image/png,image/jpeg,image/webp,image/gif",tO=5*1024*1024,aO=e=>e;function nO(e,t){const n=_m(e);if(n)return Kf(n).label.toUpperCase();for(const s of t){const o=String(s||"").trim();if(!o)continue;const l=nf(o);if(l)return Kf(l).label.toUpperCase();let i=o.toLowerCase();try{i=new URL(o.includes("://")?o:`https://${o}`).hostname.toLowerCase()}catch{i=o.toLowerCase()}if(!(i.includes("localhost")||i.includes("127.0.0.1")||i.includes("::1")))return i.toUpperCase()}return"UNKNOWN"}function ed(){return typeof performance<"u"?performance.now():Date.now()}function rO(e){const s=kg(),o=vg(),l=r.useMemo(()=>new URLSearchParams(o.search),[o.search]),i=String(l.get("screen")||"").trim().toLowerCase()==="plans",d=r.useCallback(u=>{const w=new URLSearchParams(o.search);w.set("screen","plans");for(const[j,le]of Object.entries(u||{}))le==null||String(le).trim()===""?w.delete(j):w.set(j,String(le));s(`/?${w.toString()}${o.hash||""}`)},[o.hash,o.search,s]),m=r.useCallback(()=>{const u=new URLSearchParams(o.search);u.delete("screen"),u.delete("gate"),u.delete("checkout"),u.delete("planId"),u.delete("planVersionId"),u.delete("interval");const w=u.toString();s(`${o.pathname==="/"?"/":o.pathname}${w?`?${w}`:""}${o.hash||""}`)},[o.hash,o.pathname,o.search,s]),{activeTab:y,setActiveTab:k,activeCategories:S,groupBy:h,setGroupBy:g,activeWorkspaceModule:v,setActiveWorkspaceModule:A,emptyColumnMode:_,setEmptyColumnMode:I,zenMode:W,setZenMode:V,filterStatus:B,setFilterStatus:J,tasks:de,handleEdit:ve,handleSubmit:re,resetForm:x,handleUpdateTask:K,editingTaskId:me,loading:pe,error:X,title:M,setTitle:F,description:ue,setDescription:ge,checklistItems:O,setChecklistItems:_e,category:Ne,setCategory:se,type:ce,setType:Re,priority:Pe,setPriority:Ae,complexity:Ee,setComplexity:$,setStatus:T,approach:b,setApproach:N,assignee:D,setAssignee:te,scheduledDate:P,setScheduledDate:H,dueDate:be,setDueDate:U,workstreamInput:ie,setWorkstreamInput:ee,manualComplexityEnabled:Q,checklistDropdownEnabled:q,showTaskCardStatusLabel:Se,formTaxonomies:we,setFormTaxonomies:Te,comments:Me,newCommentText:nt,setNewCommentText:gt,attachments:lt,setAttachments:St,setAttachmentsDirty:qe,descriptionFocused:Ct,setDescriptionFocused:dt,showMarkdownHelp:Xe,setShowMarkdownHelp:it,showChecklist:ne,setShowChecklist:st,showComments:Ze,setShowComments:Pt,handleAddComment:kt,handleSetWorkstreamForCurrentTask:It,handleOpenTaskById:Ft,taxonomies:Mt,activeTypes:Be,priorities:et,taxonomyDisplayLabels:Ue,approaches:Je,copiedId:yt,handleCopyId:ct,handleToggleInProgress:ae,handleToggleComplete:Qe,handleToggleReview:bt,handleToggleCancel:Ot,handleArchiveTask:Bt,handleDelete:Fe,handleUnarchive:Lt,handleRestoreDeletedTask:vt,handlePermanentlyDeleteDeletedTask:E,handleEmptyDeletedTasks:c,fetchTasks:Y,searchQuery:ye,setSearchQuery:Ie,filterCategories:ze,setFilterCategories:Ge,filterTypes:je,setFilterTypes:Vt,filterPriorities:qt,setFilterPriorities:Et,filterAssignees:Tt,setFilterAssignees:Wt,hasInitedFilters:Ht,assigneeOptions:sa,taskScope:Kt,setTaskScope:Ka,sortBy:Oa,setSortBy:Xa,clearFilters:wa,settingsModel:he,configLoaded:ot,currentTheme:xe,setCurrentTheme:Nt,pathSaved:tt,saveSettings:Gt,keyShortcut:ha,setKeyShortcut:Pa,globalWeekStartsOn:ua,locale:ca,jsonBackupEnabled:Dt,setJsonBackupEnabled:aa,mcpHostRoot:Za,setMcpHostRoot:$t,settingsSection:Yn,setSettingsSection:ba,runtimeMode:ea,workspaceSwitchingEnabled:Br,cloudAuthConfigured:Ta,authRequiredForApi:en,authBlocked:Ca,isAuthenticated:Jt,authUserId:Ra,authWorkspaceId:la,authUserEmail:kn,authUserDisplayName:mn,authUserAvatarUrl:Jn,authSessionResolved:ma,realtimeSyncEnabled:Cr,realtimeSyncFlagSource:Wr,workspaceCloudSyncEnabled:vn,workspaceSyncPhase:Ba,workspaceSyncStatus:Ar,workspaceSyncSummary:Sn,workspaceSyncRecommendedAction:Pn,workspaceSyncBusy:tn,workspaceSyncPendingChanges:Aa,saveWorkspaceCloudSyncSettings:Fr,pushNotice:_t,userGlobalSyncStatus:wn,workspaceLastSuccessfulSyncAt:pn,workspaceLastPullAt:bn,workspaceLastPushAt:$a,workspaceLastErrorAt:Mn,userGlobalSyncError:ka,workspaceLastErrorMessage:Ua,retryWorkspaceCloudSync:_n,resetWorkspaceSyncCursorAndPull:da,getWorkspaceSyncDiagnostics:En,currentWorkspaceId:ta,currentWorkspaceRole:za,availableWorkspaces:_a,switchWorkspace:Qn,updateCurrentUserProfile:Xn,resolveCloudAuthUrl:Ma=aO,logout:na,fetchLoginMethods:pa,unlinkLoginMethod:fn,addPasswordToAccount:an,beginOAuthLogin:pr,beginOAuthLink:fr,availableAuthProviders:Qt,projectRoot:Ss,projectName:Ha,mcpScriptPath:er,serverHostRoot:es,showFolderBrowser:hn,setShowFolderBrowser:zn,folders:Or,files:Cn,currentBrowsePath:Ga,fetchFolders:xr,browserTarget:Na,setBrowserTarget:ws,handleSelectPath:nn,handleAddPath:Ir,handleRemovePath:hr,handleUpdateCategory:$r,handleRemoveCategory:gn,handleSaveCategory:gr,handleUpdateCategoryIcon:An,handleUpdateCategoryColor:Dn,handleSaveType:tr,handleRemoveType:ts,handleUpdateTaxonomies:Ur,handleUpdatePriorities:Ye,pathValidation:Ut,exportEnvironment:Ea,setExportEnvironment:oa,exportWorkflowsPath:cn,setExportWorkflowsPath:rn,exportResult:bs,exportingResource:_s,availableWorkflows:as,onExportWorkflows:Ya,fetchWorkflows:Wa,availableEnvironments:Rt,initiativeTemplates:yr,fetchInitiativeTemplates:Hn,createInitiativeFromTemplate:Ln,uiNotice:ar,clearNotice:Cs,taskReturnTrail:Tr,clearReturnToParentTask:zr,returnToPreviousTask:Bs,tasksScrollRef:Bn,setTasksScrollPos:Wn,commentsEndRef:G,autoSaveState:Ve,unsavedModalOpen:At,setUnsavedModalOpen:jt,pendingNavigation:Da,handleNavigation:xn,currentTask:In,currentTaskWorkstream:Ro,currentTaskInitiative:No,scheduleWarningPrompt:Qs,confirmScheduleWarning:Va,cancelScheduleWarning:kr}=e,La=ca||Ng();r.useEffect(()=>{const u=String(Ha||"").trim();document.title=u?`Taskforce - ${u}`:"Taskforce"},[Ha]);const R=()=>{jt(!1),Da?(y==="add"&&x(),Da()):(y==="add"&&x(),k("tasks"))},C=async()=>{await re({preventDefault:()=>{}}),jt(!1),Da&&Da()},[Ke,ht]=r.useState(!1),[De,oe]=r.useState(!1),[nr,ns]=r.useState(!0),[sn,si]=r.useState(!1),[rr,sr]=r.useState(!0),[rs,al]=r.useState(Kc(new Date)),[nl,Xs]=r.useState(()=>{const u=new Date;return`${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}`}),[oi,Tn]=r.useState(0),[eo,ii]=r.useState(!1),[ci,li]=r.useState(!1),[Rr,jo]=r.useState(!1),[ss,tc]=r.useState(!0),[Hr,to]=r.useState(!0),[As,xs]=r.useState(!0),[ao,os]=r.useState(!1),[di,va]=r.useState(!1),[ac,Gn]=r.useState(!1),[ra,no]=r.useState(""),[Gr,ro]=r.useState(""),[Nr,nc]=r.useState(new Set),[Is,or]=r.useState(null),[Ws,ln]=r.useState(null),[is,Fs]=r.useState(null),[so,Os]=r.useState(null),[Po,$s]=r.useState(""),[oo,ir]=r.useState(""),[fa,on]=r.useState(""),[Vn,Vr]=r.useState(""),[ui,Us]=r.useState(!1),rc=r.useRef({taskId:null,attachments:[]}),rl=r.useRef(new Map),dn=r.useRef(new Map),[io,Mo]=r.useState(()=>Ju.map(u=>u.value)),[co,Eo]=r.useState(()=>Qu.map(u=>u.value)),[Tm,sl]=r.useState(null),[Rm,ol]=r.useState(null),[qn,cs]=r.useState(null),[lo,mi]=r.useState(null),[Nm,bd]=r.useState(0),[Do,jm]=r.useState({}),[_d,Cd]=r.useState(!1),zs=r.useRef(!1),Ad=r.useRef(""),il=r.useRef(null),xd=r.useRef(null),sc=r.useRef(new Set);r.useEffect(()=>{rc.current={taskId:me||null,attachments:lt}},[me,lt]);const cl=r.useCallback(u=>{const w=me||null,j=rc.current,le=j.taskId===w?j.attachments:lt,ke=u(le);rc.current={taskId:w,attachments:ke},St(ke),qe(!0),w&&K(w,{attachments:ke})},[lt,me,K,St,qe]),Lo=r.useMemo(()=>{const u={},w=String(ta||"").trim();return ea==="cloud"&&w&&w!=="default"&&(u["x-taskforce-workspace-id"]=w),u},[ea,ta]),uo=r.useMemo(()=>`${ea}:${String(ta||"default").trim()||"default"}`,[ea,ta]),oc=r.useMemo(()=>`taskforce:annotate-layout:${uo}`,[uo]),ls=r.useMemo(()=>`taskforce:task-origin-workspace-module:${uo}`,[uo]),pi=r.useMemo(()=>ea==="cloud"?ma:ot,[ma,ot,ea]),Bo=r.useRef(!1),fi=r.useRef(!1),Hs=r.useCallback(u=>{const w=String(u||"").trim();if(!(!w||typeof window>"u")){Bo.current=!0;try{window.sessionStorage.setItem(ls,w)}catch{}}},[ls]),vr=r.useCallback(()=>{if(Bo.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(ls)}catch{}},[ls]);r.useEffect(()=>{il.current=qn},[qn]),r.useEffect(()=>{xd.current=lo},[lo]);const mo=r.useMemo(()=>({[md]:Xl({featureKey:md}),[ud]:Xl({featureKey:ud}),[km]:Xl({featureKey:km}),[vm]:Xl({featureKey:vm}),[Kh]:Xl({featureKey:Kh})}),[ea]),Ts=r.useMemo(()=>_F({featureAccess:mo}),[mo]),ia=r.useMemo(()=>Zh(v,Ts),[v,Ts]),Wo=mo[md]?.allowed??!1,ic=mo[ud]?.allowed??!1,ll="Documents is not available in this build yet.",dl="Annotate is not available in this build yet.";r.useEffect(()=>{const u=w=>{const j=w,le=j.detail?.fsPath,ke=String(j.detail?.assetId||"").trim()||null;if(!(!le&&!ke)){if(j.preventDefault(),!Wo){_t(ll,"error");return}Hs(j.detail?.taskId),sl(le||null),ol(ke),A("docs")}};return window.addEventListener("taskforce:open-markdown-document",u),()=>{window.removeEventListener("taskforce:open-markdown-document",u)}},[Wo,ll,_t,Hs,A]),r.useEffect(()=>{ia!==v&&A(ia)},[v,ia,A]),r.useEffect(()=>{ia==="docs"&&Wo||(sl(null),ol(null))},[Wo,ia]),r.useEffect(()=>{if(!(typeof window>"u"))try{const u=window.sessionStorage.getItem(oc);if(!u)return;const w=JSON.parse(u);w?.annotatedTarget&&typeof w.annotatedTarget=="object"&&cs(w.annotatedTarget),typeof w?.annotatedSessionId=="string"&&mi(w.annotatedSessionId.trim()||null)}catch{}},[oc]),r.useEffect(()=>{if(!fi.current&&!(ia!=="docs"&&ia!=="annotate")&&(fi.current=!0,!(Bo.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(ls)||"").trim())return;window.sessionStorage.removeItem(ls),A("tasks")}catch{}},[ia,A,ls]),r.useEffect(()=>{fi.current=!1,Bo.current=!1},[ls]),r.useEffect(()=>{if(Ad.current===uo)return;Ad.current=uo,Cd(!1);let u=!1;return(async()=>{try{const j=await fetch("/api/taskforce/ui-state?key=layout",{method:"GET",credentials:"include",headers:Lo});if(!j.ok)return;const le=await j.json().catch(()=>({})),ke=le?.state&&typeof le.state=="object"?le.state:null;if(!ke||u)return;if(typeof ke.scheduleShowWeekends=="boolean"&&oe(ke.scheduleShowWeekends),typeof ke.scheduleShowBacklog=="boolean"&&ns(ke.scheduleShowBacklog),typeof ke.scheduleOnlyExpired=="boolean"&&si(ke.scheduleOnlyExpired),typeof ke.scheduleSidebarOpen=="boolean"&&sr(ke.scheduleSidebarOpen),typeof ke.scheduleSelectedDate=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(ke.scheduleSelectedDate)&&al(ke.scheduleSelectedDate),typeof ke.scheduleCalendarMonth=="string"&&/^\d{4}-\d{2}$/.test(ke.scheduleCalendarMonth)&&Xs(ke.scheduleCalendarMonth),typeof ke.scheduleScrollLeft=="number"&&Number.isFinite(ke.scheduleScrollLeft)&&ke.scheduleScrollLeft>=0&&Tn(ke.scheduleScrollLeft),typeof ke.showFilters=="boolean"&&ii(ke.showFilters),Array.isArray(ke.documentTypeFilters)&&Mo(ke.documentTypeFilters),Array.isArray(ke.documentAttachmentFilters)&&Eo(ke.documentAttachmentFilters),typeof ke.planningDrawerOpen=="boolean"&&jo(ke.planningDrawerOpen),typeof ke.documentTrayOpen=="boolean"&&tc(ke.documentTrayOpen),typeof ke.imageTrayOpen=="boolean"&&to(ke.imageTrayOpen),typeof ke.agentTrayOpen=="boolean"&&xs(ke.agentTrayOpen),typeof ke.planningTreeCollapsed=="boolean"&&os(ke.planningTreeCollapsed),typeof ke.planningPrimaryCollapsed=="boolean"&&va(ke.planningPrimaryCollapsed),typeof ke.planningSecondaryCollapsed=="boolean"&&Gn(ke.planningSecondaryCollapsed),Array.isArray(ke.planningExpandedInitiativeIds)&&nc(new Set(ke.planningExpandedInitiativeIds.map(Zt=>String(Zt||"").trim()).filter(Boolean))),ke.planningDrawerDetail&&typeof ke.planningDrawerDetail=="object"&&(ke.planningDrawerDetail.type==="initiative"||ke.planningDrawerDetail.type==="workstream")&&typeof ke.planningDrawerDetail.id=="string"){const Zt=ke.planningDrawerDetail.id.trim();or(Zt?{type:ke.planningDrawerDetail.type,id:Zt}:null)}else ke.planningDrawerDetail===null&&or(null);typeof ke.planningNestedWorkstreamDetailId=="string"?ln(ke.planningNestedWorkstreamDetailId.trim()||null):ke.planningNestedWorkstreamDetailId===null&&ln(null);const mt=ke.annotatedTarget;mt&&typeof mt=="object"&&(il.current||cs(mt)),typeof ke.annotatedSessionId=="string"&&(xd.current||mi(ke.annotatedSessionId.trim()||null))}catch{}finally{u||Cd(!0)}})(),()=>{u=!0}},[uo,Lo]),r.useEffect(()=>{if(!_d)return;const u=window.setTimeout(async()=>{try{await sf({stateKey:"layout",workspaceId:ta,headers:Lo,patch:{scheduleShowWeekends:De,scheduleShowBacklog:nr,scheduleOnlyExpired:sn,scheduleSidebarOpen:rr,scheduleSelectedDate:rs,scheduleCalendarMonth:nl,scheduleScrollLeft:oi,showFilters:eo,documentTypeFilters:io,documentAttachmentFilters:co,documentTrayOpen:ss,imageTrayOpen:Hr,agentTrayOpen:As,planningDrawerOpen:Rr,planningTreeCollapsed:ao,planningPrimaryCollapsed:di,planningSecondaryCollapsed:ac,planningExpandedInitiativeIds:Array.from(Nr),planningDrawerDetail:Is,planningNestedWorkstreamDetailId:Ws,annotatedTarget:qn,annotatedSessionId:lo}})}catch{}},250);return()=>window.clearTimeout(u)},[_d,De,nr,sn,rr,rs,nl,oi,eo,io,co,ss,Hr,As,Rr,ao,di,ac,Nr,Is,Ws,qn,lo,Lo]),r.useEffect(()=>{if(!(typeof window>"u"))try{window.sessionStorage.setItem(oc,JSON.stringify({annotatedTarget:qn,annotatedSessionId:lo}))}catch{}},[oc,lo,qn]),r.useEffect(()=>{h==="schedule"&&sr(!0)},[h]);const{showArchive:po,setShowArchive:ul,fetchArchive:ml,filteredArchive:pl}=e,hi=r.useMemo(()=>pl.map(u=>({...u,isArchived:!0})),[pl]),Fn=r.useMemo(()=>e.archivedTasks.map(u=>({...u,isArchived:!0})),[e.archivedTasks]),Rs=r.useMemo(()=>[...e.searchAgnosticTasks,...Fn],[Fn,e.searchAgnosticTasks]),Id=r.useCallback(u=>{const w=String(u||"").trim();if(!w)return"";const j=Rs.find(le=>le.id===w);return Yi(j)||""},[Rs]),Td=r.useCallback(u=>{const w=String(u||"").trim();if(!w)return"";const j=String(Do[w]||"").trim();if(j)return j;for(const le of Rs)for(const ke of le.attachments||[]){if(!ke||typeof ke!="object"||String(ke.assetId||"").trim()!==w)continue;const mt=cy({referenceNumber:typeof ke.referenceNumber=="number"?ke.referenceNumber:null,referenceLabel:String(ke.referenceLabel||"").trim()||null});if(mt)return mt}return""},[Rs,Do]);r.useEffect(()=>{const u=w=>{const j=w,le=bh(j.detail,Rs);if(le){if(j.preventDefault(),!ic){_t(dl,"error");return}cs(le),mi(null),bd(ke=>ke+1),Hs(le.taskId),A("annotate")}};return window.addEventListener("taskforce:open-annotated-attachment",u),()=>{window.removeEventListener("taskforce:open-annotated-attachment",u)}},[Rs,ic,dl,_t,Hs,A]),r.useEffect(()=>{if(!qn)return;const u=bh(qn,Rs);u&&(u.taskReferenceLabel===qn.taskReferenceLabel&&u.imageReferenceLabel===qn.imageReferenceLabel||cs(u))},[Rs,qn]),r.useEffect(()=>{const u=il.current,w=String(u?.assetId||"").trim();if(!w)return;const j=String(Do[w]||"").trim();j&&j!==String(u?.imageReferenceLabel||"").trim()&&cs(le=>!le||String(le.assetId||"").trim()!==w?le:{...le,imageReferenceLabel:j})},[Do,qn]),r.useEffect(()=>{if(!pi)return;const w=String(qn?.assetId||"").trim();if(!w||sc.current.has(w)||String(Do[w]||"").trim())return;let j=!1;sc.current.add(w);const le=String(ta||"default").trim()||"default",ke=new URLSearchParams({workspaceId:le});return(async()=>{try{const Zt=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(w)}?${ke.toString()}`,{method:"GET",credentials:"include",headers:Lo});if(!Zt.ok)return;const Sa=await Zt.json().catch(()=>({})),gs=String(Sa?.target?.imageReferenceLabel||"").trim();if(!gs||j)return;jm(Ia=>Ia[w]===gs?Ia:{...Ia,[w]:gs})}catch{}finally{sc.current.delete(w)}})(),()=>{j=!0}},[pi,Do,ta,qn,Lo]);const On=r.useMemo(()=>e.deletedTasks.map(u=>({...u.taskSnapshot,isDeleted:!0,deletedRecordId:u.id})),[e.deletedTasks]),gi=r.useMemo(()=>{const u=new Map;return e.deletedTasks.forEach(w=>{u.set(w.taskSnapshot.id,w)}),u},[e.deletedTasks]),yi=r.useMemo(()=>{const u=On,w=xm(ye),j={categories:S,types:Be,priorities:et,assigneeOptions:e.assigneeOptions,taxonomies:Mt},le=S.every(Ia=>ze.includes(Ia.value)),ke=Be.every(Ia=>je.includes(Ia.value)),mt=new Set(qt.map(Ia=>String(Ia))),Zt=et.every(Ia=>mt.has(String(Ia.value))),Sa=new Set(B.map(Ia=>String(Ia))),gs=Ys.every(Ia=>Sa.has(String(Ia.value)));return u.filter(Ia=>{const rp=dm(Ia,w,j),Iu=le||ze.includes(Ia.category),sp=ke||je.includes(Ia.type||Lr),op=Zt||mt.has(String(Ia.priority)),Tu=gs||Sa.has(String(Ia.status)),ip=Tt.length===0||Tt.includes(Ia.assignee||"unassigned");return rp&&Iu&&sp&&op&&Tu&&ip})},[S,Be,On,Tt,ze,qt,B,je,et,ye]),ki=r.useMemo(()=>[...e.tasks,...Fn,...On],[Fn,On,e.tasks]),cc=r.useMemo(()=>{const u=S.filter(j=>!j.disabled).map(j=>({value:j.value,label:j.label})),w=S.filter(j=>j.disabled&&ki.some(le=>le.category===j.value)).map(j=>({value:j.value,label:`${j.label} (Legacy)`}));return[...u,...w]},[S,ki]),fl=r.useMemo(()=>{const u=Be.filter(j=>j.status!=="retired").map(j=>({value:j.value,label:j.label})),w=Be.filter(j=>j.status==="retired"&&ki.some(le=>(le.type||Lr)===j.value)).map(j=>({value:j.value,label:`${j.label} (Retired)`}));return[...u,...w]},[Be,ki]),Gs=r.useMemo(()=>Kt==="archived"?hi:Kt==="deleted"?yi:po?[...e.filteredTasks,...hi]:e.filteredTasks,[hi,yi,e.filteredTasks,po,Kt]),lc=r.useMemo(()=>Kt==="open"?e.tasks.filter(u=>!u.isArchived):Gs,[Gs,e.tasks,Kt]),hl=r.useMemo(()=>new Set(Gs.map(u=>u.id)),[Gs]),vi=r.useMemo(()=>Kt==="archived"?Fn:Kt==="deleted"?On:po?[...e.tasks,...Fn]:e.tasks,[Fn,On,e.tasks,po,Kt]),Si=r.useMemo(()=>{const u=new Map;for(const w of Fn)u.set(w.id,w);for(const w of On)u.set(w.id,w);for(const w of e.tasks)u.set(w.id,w);return Array.from(u.values())},[Fn,On,e.tasks]),dc=r.useMemo(()=>{const u=new Map;return Si.forEach(w=>u.set(w.id,w)),u},[Si]),uc=r.useMemo(()=>{const u=new Map;sa.forEach(le=>{u.set(String(le.value),le.label)});const w=String(Ra||"").trim(),j=String(mn||kn||"").trim();return w&&j&&u.set(w,j),u},[sa,mn,kn,Ra]),wt=r.useMemo(()=>{const u=Kt==="archived"?Fn:Kt==="deleted"?On:e.tasks.filter(ut=>!ut.isArchived),w=Kt==="deleted"?On:Array.from([...e.tasks,...Fn].reduce((ut,Qa)=>ut.set(Qa.id,Qa),new Map).values()),j=(ut,Qa)=>({progressPercent:ut>0?Math.round(Qa/ut*100):0,taskCount:ut,completedTaskCount:Qa}),le=Kt==="open"&&e.planningBootstrapTaskSummaries.length>0&&(e.loadingTasks||e.tasks.length===0),ke=new Map,mt=new Map;le?e.planningBootstrapTaskSummaries.forEach(ut=>{ke.set(ut.workstreamId,ut),mt.set(ut.workstreamId,ut.tasks||[])}):(u.forEach(ut=>{const Qa=String(ut.workstreamId||"").trim();if(!Qa)return;const dr=ke.get(Qa)||{workstreamId:Qa,taskCount:0,completedTaskCount:0,tasks:[]};dr.taskCount+=1,(ut.isArchived||ut.status==="done"||ut.status==="cancelled")&&(dr.completedTaskCount+=1),ke.set(Qa,dr)}),w.forEach(ut=>{const Qa=String(ut.workstreamId||"").trim();if(!Qa)return;const dr=mt.get(Qa)||[];dr.push({id:ut.id,referenceNumber:ut.referenceNumber??null,title:ut.title,status:ut.status||null,isArchived:!!ut.isArchived}),mt.set(Qa,dr)}));const Zt=new Map,Sa=new Map,gs=new Map,Ia=new Map,rp=ut=>{const Qa=ke.get(ut.id),dr=mt.get(ut.id)||Qa?.tasks||[],Ru={id:ut.id,referenceNumber:ut.referenceNumber??null,title:ut.title,description:String(ut.description||"").trim()||void 0,ownerId:ut.ownerId?String(ut.ownerId):null,ownerLabel:ut.ownerId?uc.get(String(ut.ownerId))||String(ut.ownerId):null,...j(Qa?.taskCount||0,Qa?.completedTaskCount||0),initiativeId:ut.initiativeId||null,commentCount:Array.isArray(ut.comments)?ut.comments.length:0,attachmentCount:Array.isArray(ut.attachments)?ut.attachments.length:0,attachments:Array.isArray(ut.attachments)?ut.attachments:[],isArchived:!!ut.isArchived,tasks:dr};if(Zt.set(ut.id,dr.map($c=>$c.id)),ut.initiativeId){Sa.set(ut.id,ut.initiativeId);const $c=Ia.get(ut.initiativeId)||[];$c.push(Ru),Ia.set(ut.initiativeId,$c)}return Ru},Iu=e.workstreams.map(rp),sp=Iu.filter(ut=>ym(Kt,!!ut.isArchived)),op=e.initiatives.map(ut=>{const Qa=Ia.get(ut.id)||[],dr=Qa.filter(Jl=>ym(Kt,!!Jl.isArchived)),Ru=dr.reduce((Jl,cp)=>Jl+cp.taskCount,0),$c=dr.reduce((Jl,cp)=>Jl+cp.completedTaskCount,0);return{id:ut.id,referenceNumber:ut.referenceNumber??null,title:ut.title,description:String(ut.description||"").trim()||void 0,ownerId:ut.ownerId?String(ut.ownerId):null,ownerLabel:ut.ownerId?uc.get(String(ut.ownerId))||String(ut.ownerId):null,...j(Ru,$c),workstreamCount:dr.length,workstreams:dr,allWorkstreams:Qa,commentCount:Array.isArray(ut.comments)?ut.comments.length:0,attachmentCount:Array.isArray(ut.attachments)?ut.attachments.length:0,attachments:Array.isArray(ut.attachments)?ut.attachments:[],isArchived:!!ut.isArchived}}),{initiatives:Tu,standaloneWorkstreams:ip,initiativeById:Sk,workstreamById:wk}=uW(op,sp,Kt),bk=Iu.filter(ut=>!ut.initiativeId);return Tu.forEach(ut=>{gs.set(ut.id,ut.workstreams.flatMap(Qa=>(Qa.tasks||[]).map(dr=>dr.id)))}),{initiatives:Tu,standaloneWorkstreams:ip,allStandaloneWorkstreams:bk,workstreamTaskIds:Zt,workstreamInitiativeIds:Sa,initiativeTaskIds:gs,workstreamById:wk,initiativeById:Sk}},[Fn,uc,On,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.tasks,e.workstreams,Kt]),Rd=r.useMemo(()=>wt.initiatives.map(u=>{const w=Qr(u);return{value:u.id,label:w||u.title}}),[wt.initiatives]),mc=r.useMemo(()=>{const w=(ra?wt.initiativeById.get(ra)?.workstreams||[]:wt.initiatives.flatMap(le=>le.workstreams)).map(le=>{const ke=xo(le);return{value:le.id,label:ke||le.title}}),j=ra?[]:wt.standaloneWorkstreams.map(le=>{const ke=xo(le);return{value:le.id,label:ke||le.title}});return[...w,...j]},[wt.initiativeById,wt.initiatives,wt.standaloneWorkstreams,ra]),ds=r.useMemo(()=>Gr?new Set(wt.workstreamTaskIds.get(Gr)||[]):ra?new Set(wt.initiativeTaskIds.get(ra)||[]):null,[wt.initiativeTaskIds,wt.workstreamTaskIds,ra,Gr]),Fo=r.useMemo(()=>{if(!Is)return null;if(Is.type==="initiative"){const w=wt.initiativeById.get(Is.id);return w?{type:"initiative",item:w}:null}const u=wt.workstreamById.get(Is.id)||wt.standaloneWorkstreams.find(w=>w.id===Is.id);return u?{type:"workstream",item:u}:null},[Is,wt.initiativeById,wt.standaloneWorkstreams,wt.workstreamById]),pc=r.useMemo(()=>{if(!Ws)return null;const u=wt.workstreamById.get(Ws)||wt.standaloneWorkstreams.find(w=>w.id===Ws);return u?{type:"workstream",item:u}:null},[Ws,wt.standaloneWorkstreams,wt.workstreamById]),fc=r.useMemo(()=>so?{kind:"editor",editor:so}:pc?{kind:"detail",detail:pc}:null,[pc,so]),Nd=Ly(ao,!!(Fo||is),di,!!fc,ac),hc=r.useMemo(()=>{if(!Vn.trim())return null;const u=wt.initiativeById.get(Vn);return u||yp(wt.initiatives,Vn)},[Vn,wt.initiativeById,wt.initiatives]);r.useEffect(()=>{ra&&!wt.initiativeById.has(ra)&&no(""),Gr&&!wt.workstreamById.has(Gr)&&ro("")},[wt.initiativeById,wt.workstreamById,ra,Gr]);const Sr=r.useMemo(()=>h==="schedule"?lc:Gs,[h,Gs,lc]),Ja=r.useMemo(()=>{const u=new Date,w=u.getFullYear(),j=String(u.getMonth()+1).padStart(2,"0"),le=String(u.getDate()).padStart(2,"0");return`${w}-${j}-${le}`},[]),wi=r.useMemo(()=>h!=="schedule"||!sn?Sr:Sr.filter(u=>{if(u.status==="done"||u.status==="cancelled")return!1;const j=!!u.scheduledDate&&u.scheduledDate<Ja,le=!!u.dueDate&&u.dueDate<Ja;return j||le}),[h,sn,Sr,Ja]),gl=r.useMemo(()=>!ds||ds.size===0?wi:wi.filter(u=>ds.has(u.id)),[wi,ds]),jd=r.useMemo(()=>!ds||ds.size===0?vi:vi.filter(u=>ds.has(u.id)),[vi,ds]),fo=r.useMemo(()=>h!=="schedule"?[]:Sr.filter(u=>{if(u.status==="done"||u.status==="cancelled")return!1;const j=!!u.scheduledDate&&u.scheduledDate<Ja,le=!!u.dueDate&&u.dueDate<Ja;return j||le}),[h,Sr,Ja]),Pd=r.useMemo(()=>h!=="schedule"?0:Sr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.scheduledDate&&u.scheduledDate<Ja).length,[h,Sr,Ja]),yl=r.useMemo(()=>h!=="schedule"?0:Sr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.dueDate&&u.dueDate<Ja).length,[h,Sr,Ja]),qr=String(Ra||"").trim(),Md=r.useMemo(()=>!qr||qr==="anonymous"?0:de.filter(u=>u.status==="done"||u.status==="cancelled"?!1:String(u.assignee||"").trim()===qr).length,[qr,de]),Ed=r.useMemo(()=>!qr||qr==="anonymous"?0:de.filter(u=>u.status==="done"||u.status==="cancelled"||String(u.assignee||"").trim()!==qr?!1:!!u.dueDate&&u.dueDate<Ja).length,[qr,de,Ja]),gc=r.useMemo(()=>h!=="schedule"?[]:Sr.filter(u=>u.status==="done"||u.status==="cancelled"?!1:!!u.scheduledDate&&u.scheduledDate<Ja),[h,Sr,Ja]),bi=fo,[ho,_i]=r.useState(!1),yc=()=>{xn(()=>{Bs()||(y==="add"&&Tr.length>0&&zr(),li(!1),y==="add"&&x(),k("tasks"))})};r.useEffect(()=>{y!=="add"&&li(!1)},[y]);const kc=r.useCallback((u,w)=>{if(u.status!==w){if(w==="in-progress"){ae(u);return}if(w==="review"){bt(u);return}if(w==="done"){Qe(u);return}if(w==="cancelled"){Ot(u);return}K(u.id,{status:w,completedAt:null})}},[ae,bt,Qe,Ot,K]),kl=r.useCallback((u,w)=>{x();const j=cW(u,w,{categories:S,approaches:Je});j.category&&se(j.category),j.type&&Re(j.type),typeof j.priority=="number"&&Ae(j.priority),typeof j.complexity=="number"&&$(j.complexity),j.approach&&N(j.approach);const le=j.taxonomyApproach;typeof le=="string"&&le.length>0&&Te(ke=>({...ke,approach:le})),j.assignee&&te(j.assignee),j.status&&T(j.status),j.scheduledDate&&H(j.scheduledDate),k("add")},[x,S,Je,se,Re,Ae,$,T,N,te,H,Te,k]);We.useEffect(()=>{B&&!B.includes("done")&&J(u=>[...u,"done"])},[]);const[Dd,vc]=r.useState(!1),[us,cr]=r.useState(!1),[go,Oo]=r.useState(!1),[vl,Sl]=r.useState(!1),[Pm,Sc]=r.useState(!1),[wc,Ld]=r.useState(!1),[Bd,wl]=r.useState(""),[bl,Ci]=r.useState(!1),[Mm,Wd]=r.useState(!1),[Em,Ai]=r.useState("members"),[bc,_c]=r.useState(null),[Cc,xi]=r.useState("unknown"),[Fd,Ii]=r.useState(!1),[Dm,Rn]=r.useState(null),[ms,wr]=r.useState(null),[Ac,xc]=r.useState(!1),[$o,_l]=r.useState([]),[Ti,Uo]=r.useState(null),[Ri,Ic]=r.useState(""),[Ns,Ni]=r.useState("member"),[ji,Tc]=r.useState("read-write"),[Rc,Cl]=r.useState(!1),[Od,zo]=r.useState(null),[js,Lm]=r.useState(0),[$d,Ud]=r.useState(!1),[Bm,Wm]=r.useState([]),[Fm,Om]=r.useState(!1),[zd,$m]=r.useState(1),[yn,Al]=r.useState(null),[Hd,Nc]=r.useState(!1),[jc,xl]=r.useState(null),[Gd,Pi]=r.useState(!1),[jr,Pr]=r.useState(null),[Ho,Mr]=r.useState(!1),[Vd,Il]=r.useState(null),[Vs,Mi]=r.useState("month"),[Tl,qd]=r.useState(""),[ps,Go]=r.useState(""),[lr,Vo]=r.useState(null),[Rl,Kd]=r.useState(!1),[Um,Nl]=r.useState(!1),[Zd,Kr]=r.useState(null),[Yd,Zr]=r.useState(null),Jd=25,Qd=r.useRef(null),Ei=r.useRef(null),jl=r.useRef({billing:!1,teamManagement:!1}),Di=r.useRef(null);r.useEffect(()=>{Di.current=yn},[yn]),r.useEffect(()=>{if(!us)return;const u=w=>{Qd.current?.contains(w.target)||cr(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[us]);const zm=ea==="cloud"&&Br&&Jt,qo=Jt&&(ea==="cloud"||Ta),Pl=ea==="local"&&Jt,{showSyncStatusModal:Ml,showSyncEnableWarning:Hm,workspaceSyncError:El,syncControlBusy:Xd,openSyncStatusModal:Gm,closeSyncStatusModal:Dl,handleWorkspaceSyncToggle:eu,cancelSyncEnableWarning:Vm,confirmSyncEnableWarning:qm}=KF({canManageWorkspaceSync:Pl,workspaceCloudSyncEnabled:vn,saveWorkspaceCloudSyncSettings:Fr}),Km=r.useMemo(()=>{const u=_a.find(le=>le.id===ta),w=String(u?.name||"").trim();if(w)return w;if(ea==="local"){const le=String(Ha||"").trim();if(le)return le}return String(ta||"").trim()||"Workspace"},[_a,ta,Ha,ea]),Pc=Wy(qo,bc),yo=zF(qo,bc,Cc),Li=String(mn||"").trim(),Er=String(Jn||"").trim(),ko=String(kn||"").trim(),Ko=Li||ko,Ll=Ko.length>0,Zm=ko.length>0,tu=(Ko||ko||"").trim(),Mc=Jt&&ma&&tu.length>0?tu.charAt(0).toUpperCase():"",Wl=Er,au=Jt&&ma&&Wl.length>0,Fl=String(ps||Er).trim(),Ec=String(yn?.planName||yn?.planId||"").trim(),nu=Ec.length>0,Ps=String(yn?.workspaceId||la||ta||"").trim(),ru=ea==="cloud"?"CLOUD":"LOCAL",Ol=e.config?.apiBaseUrl||"",su=r.useMemo(()=>nO(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]),ou=Ta&&!ma;r.useEffect(()=>{vl&&(qd(Li),Go(Er),Vo(null),Kr(null),Zr(null))},[Er,Li,vl]);const Ms=r.useCallback(async u=>{const w=String(u||"").trim();if(!(!w||!Ta))try{await fetch(Ma("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:w})})}catch{}},[Ta,Ma]),iu=r.useCallback(()=>{const u=lr;Sl(!1),Sc(!1),Kr(null),Zr(null),Vo(null),Go(Er),u&&Ms(u)},[Er,Ms,lr]),cu=r.useCallback(async u=>{if(!u||!Ta)return!1;if(!u.type.startsWith("image/"))return Kr("Profile photo must be an image file."),Zr(null),!1;Kd(!0),Kr(null),Zr(null);try{const w=await BW(u,{maxBytes:tO});if(w.exceededLimit){const Ia=u.type==="image/gif"?"Animated GIF profile photos must be 5 MB or smaller.":"Profile photo must be 5 MB or smaller.";throw new Error(Ia)}const j=w.file,le=await fetch(Ma("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:j.name,mimeType:j.type,size:j.size})}),ke=await le.json().catch(()=>({}));if(!le.ok||!ke?.success||typeof ke?.draftId!="string"||typeof ke?.relativePath!="string")throw new Error(ke?.error||"Failed to start avatar upload.");if(!(await fetch(Ma("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":j.type||"application/octet-stream","x-taskforce-avatar-draft-id":ke.draftId},credentials:"include",body:j})).ok)throw new Error("Failed to upload avatar.");const Zt=await fetch(Ma("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:ke.draftId,relativePath:ke.relativePath})}),Sa=await Zt.json().catch(()=>({}));if(!Zt.ok||!Sa?.success||typeof Sa?.draftId!="string")throw new Error(Sa?.error||"Failed to finalize avatar upload.");const gs=lr;return Vo(Sa.draftId),Go(typeof Sa?.avatarUrl=="string"?Sa.avatarUrl:""),Zr(null),gs&&gs!==Sa.draftId&&Ms(gs),!0}catch(w){return Kr(w instanceof Error?w.message:"Failed to upload profile photo."),!1}finally{Kd(!1)}},[Ta,Ms,lr,Ma]),lu=r.useCallback(()=>{if(!lr)return;const u=lr;Vo(null),Go(Er),Zr(null),Kr(null),Ms(u)},[Er,Ms,lr]),du=r.useCallback(()=>{const u=lr;Vo(null),Go(""),Zr(Er?"Profile photo will be removed when you save.":null),Kr(null),u&&Ms(u)},[Er,Ms,lr]),uu=r.useCallback(async()=>{const u=Tl.trim();if(!u){Kr("Display name is required."),Zr(null);return}Nl(!0),Kr(null),Zr(null);const w=await Xn({displayName:u,avatarDraftId:lr,clearAvatar:!lr&&!ps&&!!Er});if(!w.success){Kr(w.error||"Failed to update profile."),Nl(!1);return}Zr("Profile updated."),Vo(null),Go(""),Nl(!1),Sc(!1),Sl(!1)},[Er,lr,ps,Tl,Xn]),Yr=r.useCallback(()=>{const u={},w=String(Ps||"").trim();w&&(u["x-taskforce-workspace-id"]=w);const j=bc||za;return(j==="owner"||j==="admin"||j==="member"||j==="read-only")&&(u["x-taskforce-workspace-role"]=j),u},[za,Ps,bc]),mu=r.useCallback(u=>{const w=Jt,j=qo;Ei.current=ed(),jl.current={billing:w,teamManagement:j},zt("account_surface_opened",{surface:u,expectsBilling:w,expectsTeamManagement:j}),!w&&!j&&(zt("account_surface_ready",{surface:u,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Ei.current=null)},[qo,Jt]),Zo=r.useCallback(u=>{const w=jl.current;if(w[u]=!1,w.billing||w.teamManagement)return;const j=Ei.current;j!==null&&(zt("account_surface_ready",{surface:go?"account_hub":us?"account_menu":"closed",durationMs:Math.round(ed()-j),teamManagementVisible:yo,billingPlanId:String(yn?.planId||"").trim()||null}),Ei.current=null)},[yn?.planId,yo,go,us]),br=r.useCallback(async u=>{const w=Ma(Wh);if(!Jt)return Al(null),xl(null),_c(null),xi("unknown"),Ii(!1),Rn(null),Fh(w,{identityKey:Ra}),Zo("billing"),Zo("teamManagement"),null;const j=ed();Nc(!0),xl(null),Ii(qo),Rn(null);try{const le=await CW(w,{identityKey:Ra,force:u?.force===!0}),ke=le?.workspaceRole==="owner"||le?.workspaceRole==="admin"||le?.workspaceRole==="member"||le?.workspaceRole==="read-only"?le.workspaceRole:null,mt=le?.teamPlanMode==="team"||le?.teamPlanMode==="personal"?le.teamPlanMode:"unknown";return Al(le),_c(ke),xi(mt),Rn(null),zt("account_profile_summary_resolved",{durationMs:Math.round(ed()-j),planId:String(le?.planId||"").trim()||null,gate:String(le?.gate||"").trim()||null,teamManagementAllowed:le?.teamManagementAllowed===!0}),le}catch(le){const ke=le instanceof Error?le.message:"Failed to load account summary.",mt=!!Di.current;return xl(ke),mt?Rn(null):(_c(null),xi("unknown"),Rn(ke)),zt("account_profile_summary_failed",{durationMs:Math.round(ed()-j),error:ke,preservedSummary:mt}),Di.current}finally{Nc(!1),Ii(!1),Zo("billing"),Zo("teamManagement")}},[Ra,qo,Jt,Zo,Ma]),pu=r.useCallback(u=>{Al(u);const w=u?.workspaceRole==="owner"||u?.workspaceRole==="admin"||u?.workspaceRole==="member"||u?.workspaceRole==="read-only"?u.workspaceRole:null,j=u?.teamPlanMode==="team"||u?.teamPlanMode==="personal"?u.teamPlanMode:"unknown";_c(w),xi(j)},[]),$l=r.useMemo(()=>Hp(yn).allowReturnToApp,[yn]),Ym=r.useCallback(async()=>{const u=new URLSearchParams;u.set("screen","plans"),u.set("interval",Vs);const w=String(yn?.planId||"").trim(),j=String(yn?.planVersionId||"").trim();w&&u.set("planId",w),j&&u.set("planVersionId",j),s(`/?${u.toString()}`)},[yn?.planId,yn?.planVersionId,Vs,s]),Dc=r.useCallback(async()=>{Pr(null),Il(null),Pi(!0);try{const u=await fetch(Ma("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),w=await u.json().catch(()=>({}));if(!u.ok){Pr(String(w?.error||"Failed to create portal session."));return}const j=String(w?.url||"").trim();if(!j){Pr("Portal session did not return a redirect URL.");return}window.location.assign(j)}catch{Pr("Failed to open billing portal.")}finally{Pi(!1)}},[Ma]),fu=r.useCallback(async()=>{Pr(null),Il(null),Pi(!0);try{const u=String(yn?.planVersionId||"").trim();if(!u){Pr("No active plan version is linked to this account.");return}const w=await fetch(Ma("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:u,interval:Vs})}),j=await w.json().catch(()=>({}));if(!w.ok){Pr(String(j?.error||"Failed to update subscription interval."));return}Il("Subscription updated."),Fh(Ma(Wh),{identityKey:Ra}),await br()}catch{Pr("Failed to update subscription interval.")}finally{Pi(!1)}},[yn?.planVersionId,Ra,Vs,br,Ma]);r.useEffect(()=>{!Jt||!ma||br()},[ma,Jt,br]),r.useEffect(()=>{!go&&!us||br()},[br,go,us]);const Yo=r.useCallback(async()=>{if(Pc){xc(!0),wr(null);try{const u=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:Yr()}),w=await u.json().catch(()=>({}));if(!u.ok){wr(w?.error||"Failed to load workspace users.");return}const j=Array.isArray(w?.users)?w.users:[],le={owner:0,admin:1,member:2,"read-only":3},ke=j.map(mt=>({userId:String(mt?.userId||""),email:String(mt?.email||""),displayName:typeof mt?.displayName=="string"?mt.displayName:null,role:mt?.role==="owner"||mt?.role==="admin"||mt?.role==="member"||mt?.role==="read-only"?mt.role:"member",permissionMode:mt?.permissionMode==="read-only"?"read-only":"read-write",status:String(mt?.status||"active"),disabled:mt?.disabled===!0}));ke.sort((mt,Zt)=>{const Sa=(le[mt.role]??99)-(le[Zt.role]??99);return Sa!==0?Sa:(mt.displayName||mt.email).localeCompare(Zt.displayName||Zt.email,void 0,{sensitivity:"base"})}),_l(ke)}catch{wr("Failed to load workspace users.")}finally{xc(!1)}}},[Pc,Yr]),vo=r.useCallback(async u=>{if(!Pc)return;const w=Math.max(0,Math.floor(u));Ud(!0),wr(null);try{const j=w*Jd,le=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${Jd}&offset=${j}`,{method:"GET",credentials:"include",headers:Yr()}),ke=await le.json().catch(()=>({}));if(!le.ok){wr(ke?.error||"Failed to load workspace audit log.");return}const mt=Array.isArray(ke?.events)?ke.events:[];Wm(mt.map(Sa=>({id:String(Sa?.id||""),action:String(Sa?.action||""),actorUserId:String(Sa?.actorUserId||""),actorRole:String(Sa?.actorRole||""),createdAt:String(Sa?.createdAt||Sa?.ts||"")}))),Lm(w);const Zt=Math.max(1,Number(ke?.pages||1));$m(Zt),Om(w+1<Zt)}catch{wr("Failed to load workspace audit log.")}finally{Ud(!1)}},[Pc,Yr]),Lc=r.useCallback(async()=>{await Promise.all([Yo(),vo(js)])},[Yo,vo,js]),Bc=r.useCallback((u="login")=>{const w=`${o.pathname}${o.search}${o.hash}`,j=!w||w==="/login"||!w.startsWith("/")?"/":w;cr(!1),Oo(!1),Dl(),s(`/login?mode=${u}&next=${encodeURIComponent(j)}`)},[Dl,o.hash,o.pathname,o.search,s]),Bi=r.useCallback(u=>{cr(!1),Ci(!1);const w=new URLSearchParams({step:"workspace"});u?.intent==="create-workspace"&&w.set("intent","create-workspace"),s(`/setup?${w.toString()}`,{replace:!0})},[s]),Jo=r.useCallback(async()=>{if(Ho)return;if(Mr(!0),!Jt){try{m()}finally{Mr(!1)}return}const u=Di.current;if(u&&!Hp(u).allowReturnToApp){Mr(!1);return}m(),(async()=>{try{const w=await e.continueAfterCommercialOnboarding();if(!w.success){_t(w.error||"Unable to finish onboarding.","error"),w.destination==="login"&&s("/login",{replace:!0});return}w.destination==="setup"&&Bi()}finally{Mr(!1)}})()},[Di,m,Jt,s,Bi,Ho,e,_t]),Ul=r.useCallback(()=>{if(i){Jo();return}xn(()=>{vr(),A("tasks"),jo(!1),or(null),ln(null),Fs(null),li(!1),y==="add"&&x(),k("tasks"),(o.pathname!=="/"||o.search)&&s("/")})},[y,vr,xn,Jo,i,o.pathname,o.search,s,x,k,A]),zl=r.useCallback(async u=>{if(!(!u||wc)){wl(""),Ld(!0);try{const w=await Qn(u);if(!w.success){if(w.code==="WORKSPACE_NOT_FOUND"||w.code==="WORKSPACE_ID_REQUIRED"){Bi();return}wl(w.error||"Failed to switch workspace.");return}await Y(!0),cr(!1)}finally{Ld(!1)}}},[Qn,wc,Y,Bi]),Wc=r.useCallback(async()=>{cr(!1),Wd(!0),Ai("members"),((await br())?.teamManagementAllowed??yo)&&(await Yo(),await vo(0))},[yo,br,vo,Yo]),So=r.useCallback(async(u,w)=>{wr(null),Uo(u);try{const j=await w(),le=await j.json().catch(()=>({}));if(!j.ok){wr(le?.error||"Team management action failed.");return}await Lc()}catch{wr("Team management action failed.")}finally{Uo(null)}},[Lc]),Hl=r.useCallback(async()=>{const u=Ri.trim();if(u){Cl(!0),wr(null),zo(null);try{const w=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...Yr()},credentials:"include",body:JSON.stringify({workspaceId:Ps,email:u,role:Ns,permissionMode:Ns==="member"?ji:"read-write"})}),j=await w.json().catch(()=>({}));if(!w.ok){wr(j?.error||"Failed to send invite.");return}Ic(""),j?.inviteEmailSent===!1?zo(`Invite created, but email delivery failed${j?.inviteEmailError?`: ${String(j.inviteEmailError)}`:"."}`):zo("Invite sent."),await Lc()}catch{wr("Failed to send invite.")}finally{Cl(!1)}}},[ta,Lc,Yr,Ri,ji,Ns]),Wi=r.useMemo(()=>ye.trim().length>0,[ye]),Jm=r.useMemo(()=>$o.filter(u=>u.status==="invited"),[$o]),Gl=r.useMemo(()=>{const u=ze.length!==S.length,w=je.length!==Be.length,j=qt.length!==et.length,le=B.length!==Ys.length,ke=Tt.length!==sa.length,mt=ra.length>0,Zt=Gr.length>0;return u||w||j||le||ke||mt||Zt},[S.length,Be.length,sa.length,Tt.length,ze.length,qt.length,B.length,je.length,et.length,ra,Gr]),hu=r.useMemo(()=>io.length!==Ju.length||co.length!==Qu.length,[co.length,io.length]),gu=ia,qs=r.useMemo(()=>CF(gu),[gu]),yu=r.useMemo(()=>{switch(qs.filterBar.kind){case"task-filters":return Gl;case"document-filters":return hu;default:return!1}},[hu,Gl,qs.filterBar.kind]),Vl=Wi||Gl,ku=Kt==="archived"?Fn.length:Kt==="deleted"?On.length:de.length,vu=Kt==="archived"?hi.length:Kt==="deleted"?yi.length:e.filteredTasks.length,Qm=Vl?`${vu}/${ku}`:`${ku}`,ql=Vl?`${Kt.charAt(0).toUpperCase()+Kt.slice(1)} tasks matching current filters`:`${Kt.charAt(0).toUpperCase()+Kt.slice(1)} tasks`,Xm=ea==="local"&&Jt,Qo=r.useCallback(u=>{if(!u)return"Never";const w=new Date(u);return Number.isNaN(w.getTime())?"Never":w.toLocaleString()},[]),Kl=r.useMemo(()=>Qo(pn),[Qo,pn]),Su=r.useMemo(()=>Qo(bn),[Qo,bn]),wu=r.useMemo(()=>Qo($a),[Qo,$a]),bu=El||Ua||ka||"None",fs=En(),hs=r.useMemo(()=>dW({runtimeMode:ea,isAuthenticated:Jt,workspaceSyncStatus:Ar,workspaceCloudSyncEnabled:vn,workspaceSyncSummary:Sn,workspaceSyncRecommendedAction:Pn,workspaceSyncError:bu,pushBlockedReason:fs.pushBlockedReason||null,pullBlockedReason:fs.pullBlockedReason||null,retryBlockedReason:fs.retryBlockedReason||null}),[ea,Jt,Ar,vn,Sn,Pn,bu,fs.pushBlockedReason,fs.pullBlockedReason,fs.retryBlockedReason]),_u=hs.lastError,[Cu,ep]=r.useState(hs.status),p=r.useMemo(()=>kW(fs),[fs]),{syncRecentEvents:L,syncRecentEventsLoading:z,syncRecentEventsError:Z,syncEventsListRef:Oe,loadRecentSyncEvents:Le}=HF({isOpen:Ml,workspaceId:ta,refreshKeys:[$a,bn,Mn,Ar]}),He=hs.actionable&&Ar==="syncing"&&Ba==="active"&&Aa===0;r.useEffect(()=>{if(!He){ep(hs.status);return}const u=window.setTimeout(()=>{ep(hs.status)},1200);return()=>window.clearTimeout(u)},[hs.status,He]);const ga=r.useMemo(()=>vW({syncRecentEvents:L,syncRecentEventsError:Z,syncRecentEventsLoading:z}),[L,Z,z]),ya=r.useMemo(()=>SW(L),[L]),Fa=r.useMemo(()=>wW(L),[L]),xa=r.useMemo(()=>yW(Cu),[Cu]),{workspaceSyncRepairBusy:Nn,workspaceSyncRepairQueued:_r,workspaceSyncCopied:Zl,handleCopySyncDetails:Oy,handleQueueOrRunRepairSync:$y}=qF({currentWorkspaceId:ta,syncStatusLabel:xa.label,workspaceSyncSummary:hs.summary,workspaceSyncRecommendedAction:hs.recommendedAction,formattedLastSyncTime:Kl,formattedLastPullTime:Su,formattedLastPushTime:wu,workspaceSyncDiagnostics:fs,workspaceSyncPendingChanges:Aa,syncLastError:_u,workspaceSyncPhase:Ba,referenceMismatchCount:ya,syncRecentEvents:L,loadRecentSyncEvents:Le,pushNotice:_t,resetWorkspaceSyncCursorAndPull:da,workspaceSyncBusy:tn}),Uy=r.useMemo(()=>Py(Ba,Nn,tn),[tn,Ba,Nn]),wf=r.useMemo(()=>id(rs)||new Date,[rs]),Fi=r.useMemo(()=>Kp(wf,ua),[wf,ua]),wo=r.useMemo(()=>{const u={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return Yh.forEach(w=>{const j=OF(w,ua);u[w]=Kc(By(Fi,j))}),u},[Fi,ua]),bf=r.useCallback(u=>{const w=id(u);if(!w)return wo.mon;const j=w.getDay();return wo[j===1?"mon":j===2?"tue":j===3?"wed":j===4?"thu":j===5?"fri":j===6?De?"sat":"fri":De?"sun":"fri"]||wo.mon},[wo,De]),zy=r.useCallback(async()=>{if(!(ho||bi.length===0)){_i(!0);try{for(const u of bi){const w=u.scheduledDate||u.dueDate||Ja,j=bf(w);await K(u.id,{scheduledDate:j,scheduledWeekKey:$F(j),orderInDay:null})}await Y(!0)}finally{_i(!1)}}},[ho,bi,Ja,bf,K,Y]),Hy=r.useCallback(async()=>{if(!(ho||fo.length===0)){_i(!0);try{for(const u of fo)await K(u.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await Y(!0)}finally{_i(!1)}}},[ho,fo,K,Y]),Gy=r.useMemo(()=>gm(Fi,{month:"short",day:"numeric",year:"numeric"},La),[Fi,La]),_f=r.useMemo(()=>{const j=(De?ua==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:Yh:["mon","tue","wed","thu","fri"]).map(ke=>{const mt=id(wo[ke])||Fi,Zt=wo[ke],Sa=ke==="sat"||ke==="sun";return{value:ke,label:`${FF[ke]} ${gm(mt,{month:"short",day:"numeric"},La)}`,color:Sa?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Zt,isPast:Zt<Ja,isSelected:Zt===rs,isWeekend:Sa}}),le=gc.length>0;return[...nr?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...le?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...j]},[De,nr,wo,Fi,gc.length,Ja,rs,ua,La]),Cf=r.useMemo(()=>{switch(h){case"category":return S;case"type":return(Be||[]).map(u=>({...u,icon:u.icon||lm[u.value]?.icon,color:u.color||lm[u.value]?.color}));case"priority":return et;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"approach":return Je;case"assignee":return sa.map(u=>({value:u.value,label:u.label,icon:u.icon==="HelpCircle"?"Circle":u.icon,color:u.color}));case"status":return[...Ys.filter(u=>u.value!=="done"&&u.value!=="cancelled"),{value:"completed",label:"Completed",icon:dd("done").icon,color:dd("done").color}];case"schedule":return _f;default:return S}},[h,S,Be,et,Je,sa,_f]),Vy=a.jsxs("div",{className:pt.accountMenuWrap,ref:Qd,children:[a.jsx("button",{className:`tf-control-icon ${pt.avatarBtn}`,onClick:()=>{cr(u=>{const w=!u;return w?mu("account_menu"):(Ei.current=null,jl.current={billing:!1,teamManagement:!1}),w})},title:Jt?"Account":"Account (Not signed in)","aria-label":Jt?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":us,children:a.jsx("span",{className:pt.avatarBadge,"aria-hidden":"true",children:au?a.jsx("img",{src:Wl,alt:"",className:pt.avatarImage}):Mc||a.jsx(ai,{size:14,className:pt.avatarIcon})})}),us&&a.jsxs("div",{className:pt.accountMenu,role:"menu","aria-label":"Account menu",children:[a.jsxs("div",{className:pt.accountMenuSection,children:[a.jsx("div",{className:pt.accountMenuSectionLabel,children:"Account"}),a.jsx("div",{className:pt.accountMenuHint,children:ou?"Checking sign-in status...":Jt?a.jsx(a.Fragment,{children:Ll?a.jsx(a.Fragment,{children:a.jsxs("span",{className:pt.accountIdentityBlock,children:[a.jsx("span",{className:pt.accountIdentityEmail,children:Ko}),Zm&&Li&&a.jsxs("span",{className:pt.accountIdentityMetaLine,children:[a.jsx("span",{className:pt.accountIdentityMetaLabel,children:"Email"}),a.jsx("span",{className:pt.accountIdentityMetaValue,children:ko})]}),Hd?a.jsxs("span",{className:pt.accountIdentityMetaLine,children:[a.jsx("span",{className:pt.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:pt.accountIdentityMetaValue,children:"Loading…"})]}):nu?a.jsxs("button",{"aria-label":`Subscription ${Ec}`,className:`${pt.accountIdentityMetaLine} ${pt.accountIdentityMetaAction}`,onClick:()=>{cr(!1),d()},type:"button",children:[a.jsx("span",{className:pt.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:pt.accountIdentityMetaValue,children:Ec})]}):jc?a.jsxs("span",{className:pt.accountIdentityMetaLine,children:[a.jsx("span",{className:pt.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:pt.accountIdentityMetaValue,children:"Unavailable"})]}):null,a.jsxs("span",{className:pt.accountIdentityMetaLine,children:[a.jsx("span",{className:pt.accountIdentityMetaLabel,children:"Runtime"}),a.jsx("span",{className:pt.accountIdentityMetaValue,children:ru})]}),a.jsxs("span",{className:pt.accountIdentityMetaLine,children:[a.jsx("span",{className:pt.accountIdentityMetaLabel,children:"Environment"}),a.jsx("span",{className:pt.accountIdentityMetaValue,children:su})]})]})}):"Signed in"}):"Not signed in"})]}),zm&&a.jsxs("div",{className:pt.accountMenuSection,children:[a.jsx("div",{className:pt.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),_a.length===0&&a.jsx("div",{className:pt.accountMenuHint,children:"No workspaces found for this account yet."}),_a.map(u=>a.jsxs("button",{className:`${pt.accountMenuItem} ${u.id===ta?pt.accountMenuItemActive:""}`,onClick:()=>zl(u.id),role:"menuitem",disabled:wc||u.id===ta,title:u.description||u.name,children:[a.jsx(Co,{size:15}),a.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[a.jsx("span",{children:u.name}),a.jsx("span",{className:pt.accountMenuMeta,children:u.role})]})]},u.id)),a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{wl(""),Ci(!0),cr(!1)},role:"menuitem",disabled:wc,children:[a.jsx(Js,{size:15}),"Create Workspace"]}),Bd&&a.jsx("div",{className:pt.accountMenuError,children:Bd})]}),Fd?a.jsx("div",{className:pt.accountMenuHint,children:"Resolving team management access..."}):yo?a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{Wc()},role:"menuitem",children:[a.jsx(Lk,{size:15}),"Team Management"]}):Dm?a.jsx("div",{className:pt.accountMenuHint,children:"Team Management unavailable right now."}):null,Jt&&a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{cr(!1),Sl(!0)},role:"menuitem",children:[a.jsx(ai,{size:15}),"Edit Profile"]}),a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{cr(!1),d()},role:"menuitem",children:[a.jsx(Np,{size:15}),"Plans"]}),a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{cr(!1),mu("account_hub"),Oo(!0)},role:"menuitem",children:[a.jsx(ai,{size:15}),"Account Hub"]}),a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{cr(!1),vc(!0)},role:"menuitem",children:[a.jsx(Ki,{size:15}),"Help & Tutorial"]}),ea==="local"&&!Jt&&!ou&&a.jsxs("button",{className:pt.accountMenuItem,onClick:()=>{Bc("login")},role:"menuitem",children:[a.jsx(ai,{size:15}),"Sign In / Register"]}),Jt&&a.jsxs("button",{className:pt.accountMenuItem,onClick:async()=>{cr(!1),await na(),ea==="cloud"&&s("/login",{replace:!0})},role:"menuitem",children:[a.jsx(Bk,{size:15}),"Sign Out"]})]})]}),Af=r.useCallback(()=>{I(u=>u==="show"?"collapse":u==="collapse"?"hide":"show")},[I]),xf=r.useCallback(()=>{x(),A("tasks"),k("add")},[x,k,A]),qy=r.useCallback(u=>{const w=e.workstreams.find(j=>j.id===u);x(),ee(xo(w)||u),A("tasks"),k("add")},[e.workstreams,x,k,A,ee]),If=r.useCallback(u=>{zs.current=!1,Us(!1),Fs(u),va(!1),Os(null),Gn(!1),$s(""),ir(""),on("");const w=u.entityType==="workstream"&&ra&&wt.initiativeById.get(ra)||null;Vr(w?Qr(w):""),ln(null)},[wt.initiativeById,ra]),Tf=r.useCallback((u,w)=>{zs.current=!1,Us(!1),Os(u),Gn(!1),$s(""),ir(""),on("");const j=u.entityType==="workstream"&&((w?wt.initiativeById.get(w):null)||ra&&wt.initiativeById.get(ra))||null;Vr(j?Qr(j):""),ln(null)},[wt.initiativeById,ra]),tp=r.useCallback(()=>{zs.current=!1,Us(!1),Fs(null),$s(""),ir(""),on(""),Vr("")},[]),Rf=r.useCallback(()=>{zs.current=!1,Us(!1),Os(null),$s(""),ir(""),on(""),Vr("")},[]),Ky=r.useCallback(async()=>{const u=so||is;if(!u||zs.current)return;zs.current=!0,Us(!0);const w=!!so,j=fa.trim()||null;try{if(u.entityType==="initiative")if(u.mode==="edit")await e.updateInitiative(u.targetId,{title:Po.trim()||"Untitled Initiative",description:oo.trim()||null,ownerId:j}),or({type:"initiative",id:u.targetId}),ln(null),_t("Initiative updated","success");else{const le=await e.createInitiative({title:Po.trim()||"Untitled Initiative",description:oo.trim()||null,ownerId:j});or({type:"initiative",id:le.id}),ln(null),_t("Initiative created","success")}else{const le=Vn.trim(),ke=le.length===0?null:yp(wt.initiatives,le);if(le.length>0&&!ke){_t("Initiative not found by that reference.","error");return}const mt={title:Po.trim()||"Untitled Workstream",description:oo.trim()||null,ownerId:j,initiativeId:ke?.id||null};if(u.mode==="edit")await e.updateWorkstream(u.targetId,mt),w?ln(u.targetId):(or({type:"workstream",id:u.targetId}),ln(null)),_t("Workstream updated","success");else{const Zt=await e.createWorkstream(mt);w?ln(Zt.id):(or({type:"workstream",id:Zt.id}),ln(null)),_t("Workstream created","success")}}w?Rf():tp()}catch(le){_t(le instanceof Error?le.message:"Failed to save planning item.","error")}finally{zs.current=!1,Us(!1)}},[tp,Rf,oo,Vn,fa,Po,is,so,wt.initiatives,e,_t]),Zy=r.useCallback(u=>{nc(w=>{const j=new Set(w);return j.has(u)?j.delete(u):j.add(u),j})},[]),Yy=r.useCallback(u=>{no(w=>w===u?"":u),ro("")},[]),Jy=r.useCallback((u,w)=>{ro(j=>{const le=j===u?"":u;return no(le&&w||""),le})},[]),Qy=r.useCallback(u=>{Fs(null),Os(null),va(!1),Gn(!1),or(u?{type:"initiative",id:u}:null),ln(null)},[]),Xy=r.useCallback(u=>{Fs(null),Os(null),va(!1),Gn(!1),or(u?{type:"workstream",id:u}:null),ln(null)},[]),ek=r.useCallback(u=>{Os(null),Gn(!1),ln(u)},[]),ap=r.useCallback((u,w)=>{if(u==="workstream"&&w){Tf({mode:"create",entityType:"workstream"},w);return}if(If({mode:"create",entityType:u}),u==="workstream"){const j=(w?wt.initiativeById.get(w):null)||(ra?wt.initiativeById.get(ra):null)||null;Vr(j?Qr(j):"")}},[If,Tf,wt.initiativeById,ra]),Nf=r.useCallback((u,w)=>{if(u==="initiative"){const j=wt.initiativeById.get(w);if(!j)return;Fs({mode:"edit",entityType:"initiative",targetId:w}),$s(j.title),ir(j.description||""),on(j.ownerId?String(j.ownerId):""),Vr("")}else{const j=wt.workstreamById.get(w)||wt.standaloneWorkstreams.find(ke=>ke.id===w);if(!j)return;Fs({mode:"edit",entityType:"workstream",targetId:w}),$s(j.title),ir(j.description||""),on(j.ownerId?String(j.ownerId):"");const le=j.initiativeId&&wt.initiativeById.get(j.initiativeId)||null;Vr(le?Qr(le):"")}ln(null)},[wt.initiativeById,wt.standaloneWorkstreams,wt.workstreamById]),Au=r.useCallback(async(u,w)=>{const j=e.workstreams.find(Zt=>Zt.id===u);if(!j){_t("Workstream not found.","error");return}const le=typeof w=="string"?w.trim():w===null?"":Vn.trim(),ke=le.length===0?null:yp(wt.initiatives,le);if(le.length>0&&!ke){_t("Initiative not found by that reference.","error");return}const mt=ke?.id||null;if((j.initiativeId||null)===mt){_t(mt?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info");return}try{await e.updateWorkstream(u,{initiativeId:mt}),Vr(ke?Qr(ke):""),_t(mt?"Initiative set":"Initiative removed","success")}catch{_t("Failed to set initiative.","error")}},[Vn,wt.initiatives,e,_t]),xu=r.useCallback(async(u,w)=>{const j=dc.get(u);if(!j){_t("Task not found.","error");return}const le=w||null;if(wt.initiativeById.has(u)||wt.workstreamById.has(u)){_t("Only execution tasks can be moved into workstreams.","error");return}if(le&&!wt.workstreamById.has(le)){_t("Workstream not found.","error");return}if((j.workstreamId||null)===le){_t(le?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const ke=await fetch(`/api/taskforce/task/${u}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:le})});if(!ke.ok){const mt=await ke.json().catch(()=>({}));_t(mt?.error||"Failed to set workstream.","error");return}await ke.json().catch(()=>null),await Y(!0),_t(le?"Workstream set":"Workstream removed","success")}catch{_t("Failed to set workstream.","error")}},[Y,dc,wt.initiativeById,wt.workstreamById,_t]),tk=r.useCallback(async(u,w)=>{const j=w.trim();if(!j){_t("Enter a task reference.","error");return}const le=Ag(j),ke=Si.find(mt=>mt.id===j||Yi(mt)===j||le!==null&&mt.referenceNumber===le);if(!ke){_t("Task not found by that reference.","error");return}await xu(ke.id,u)},[xu,Si,_t]),ak=r.useCallback(async(u,w)=>{const j=w.trim();if(!j){_t("Enter a workstream reference.","error");return}const le=wt.initiativeById.get(u);if(!le){_t("Initiative not found.","error");return}const ke=Qg(j),mt=e.workstreams.find(Zt=>Zt.id===j||xo(Zt)===j||ke!==null&&Zt.referenceNumber===ke);if(!mt){_t("Workstream not found by that reference.","error");return}await Au(mt.id,Qr(le))},[Au,wt.initiativeById,e.workstreams,_t]),Fc=r.useCallback((u,w)=>{const j=`${u}:${w}`,le=rl.current.get(j);if(le)return le;const ke=u==="initiative"?e.initiatives.find(mt=>mt.id===w):e.workstreams.find(mt=>mt.id===w);return Array.isArray(ke?.attachments)?ke.attachments:[]},[e.initiatives,e.workstreams]),Oc=r.useCallback((u,w,j)=>{const le=`${u}:${w}`;rl.current.set(le,j);const mt=(dn.current.get(le)||Promise.resolve()).catch(()=>{}).then(()=>u==="initiative"?e.updateInitiative(w,{attachments:j}):e.updateWorkstream(w,{attachments:j}));dn.current.set(le,mt),mt.catch(Zt=>{_t(Zt instanceof Error?Zt.message:"Failed to update planning context.","error")}).finally(()=>{dn.current.get(le)===mt&&dn.current.delete(le)})},[e,_t]),nk=r.useCallback((u,w,j)=>{const le=Fc(u,w);Oc(u,w,[...le,j])},[Fc,Oc]),rk=r.useCallback((u,w,j)=>{const le=Fc(u,w);Oc(u,w,le.filter((ke,mt)=>mt!==j))},[Fc,Oc]),sk=r.useCallback((u,w,j,le)=>{const mt=Fc(u,w).map((Zt,Sa)=>Sa!==j?Zt:typeof Zt=="string"?{path:Zt,caption:le,timestamp:new Date().toISOString()}:{...Zt,caption:le});Oc(u,w,mt)},[Fc,Oc]),jf=r.useCallback(u=>{no(u),ro("")},[]),Pf=r.useCallback(u=>{ro(u),no(u&&wt.workstreamInitiativeIds.get(u)||"")},[wt.workstreamInitiativeIds]),np=r.useCallback(u=>{const w=Zh(u,Ts);if(w!==u){const j=Ts.find(le=>le.id===u)?.label||"That module";_t(`${j} is not available in this build yet.`,"error");return}vr(),A(w)},[vr,_t,A,Ts]),Mf=r.useCallback(()=>{if(ia==="tasks"&&Rr){jo(!1),or(null),ln(null),Fs(null);return}if(ia!=="tasks"){A("tasks"),jo(!0);return}jo(u=>!u)},[Rr,ia,A]),Ef=r.useCallback(()=>{if(ia!=="docs"){A("docs"),tc(!0);return}tc(u=>!u)},[ia,A]),Df=r.useCallback(()=>{if(ia!=="annotate"){A("annotate"),to(!0);return}to(u=>!u)},[ia,A]),Lf=r.useCallback(()=>{if(ia!=="agents"){A("agents"),xs(!0);return}xs(u=>!u)},[ia,A]),ok=r.useCallback(u=>{vr(),A("tasks"),Ft(u)},[vr,Ft,A]),ik=r.useCallback(u=>{vr(),A("tasks"),Ft(u)},[vr,Ft,A]),ck=r.useCallback((u,w)=>{cs(u),mi(w?.sessionId??null),bd(j=>j+1),A("annotate")},[A]),lk=r.useCallback(({target:u,sessionId:w})=>{cs(j=>!j&&!u||j&&u&&j.taskId===u.taskId&&j.taskReferenceLabel===u.taskReferenceLabel&&j.assetId===u.assetId&&j.imageReferenceLabel===u.imageReferenceLabel&&j.path===u.path&&j.displayName===u.displayName?j:u),mi(j=>j===w?j:w)},[]),Bf=r.useMemo(()=>[{value:"created",label:$e("standalone.sortCreated")},{value:"updated",label:$e("standalone.sortUpdated")},{value:"priority",label:$e("standalone.sortPriority")},{value:"complexity",label:$e("standalone.sortComplexity")},...ay(Mt,[...e.searchAgnosticTasks,...Fn])],[Fn,e.searchAgnosticTasks,Mt]),Wf=r.useMemo(()=>[{value:"category",label:$e("standalone.groupCategory")},{value:"type",label:$e("standalone.groupType")},{value:"priority",label:$e("standalone.groupPriority")},{value:"complexity",label:$e("standalone.groupComplexity")},{value:"assignee",label:$e("standalone.groupAssignee")},{value:"status",label:$e("standalone.groupStatus")},{value:"schedule",label:$e("standalone.groupSchedule")}],[]),Ff=r.useMemo(()=>Ts.filter(u=>u.enabled),[Ts]),Of=r.useMemo(()=>[{key:"empty-columns",icon:_==="show"?a.jsx(Uf,{size:16}):_==="collapse"?a.jsx(zf,{size:16}):a.jsx(Yp,{size:16}),title:$e(_==="show"?"standalone.showEmptyColumns":_==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:Af,active:_!=="show"},{key:"compressed-cards",icon:Ke?a.jsx(Wk,{size:16}):a.jsx(Fk,{size:16}),title:$e(Ke?"standalone.expandCards":"standalone.compressCards"),onClick:()=>ht(!Ke),active:Ke}],[Ke,Af,_]),dk=r.useMemo(()=>[{key:"filter-toggle",icon:a.jsx(lg,{size:16}),title:$e("standalone.toggleFilters"),onClick:()=>ii(!eo),active:eo,className:yu?f.filterGlow:""}],[yu,ii,eo]),uk=r.useMemo(()=>{switch(qs.filterBar.kind){case"task-filters":return a.jsx(zW,{categoryFilterOptions:cc,typeFilterOptions:fl,priorities:et,taxonomyDisplayLabels:Ue,filterCategories:ze,setFilterCategories:Ge,filterTypes:je,setFilterTypes:Vt,filterPriorities:qt,setFilterPriorities:Et,filterStatus:B,setFilterStatus:J,filterAssignees:Tt,setFilterAssignees:Wt,assigneeOptions:sa,initiativeFilterOptions:Rd,selectedInitiativeId:ra,setSelectedInitiativeId:jf,workstreamFilterOptions:mc,selectedWorkstreamId:Gr,setSelectedWorkstreamId:Pf,taskScope:Kt,setTaskScope:Ka,showArchive:po,setShowArchive:ul,fetchArchive:ml,onDeleteAllDeleted:()=>{const u=On.length;u===0||!window.confirm(`Permanently delete ${u} deleted task${u===1?"":"s"}? This cannot be undone.`)||c()},clearFilters:()=>{wa(),no(""),ro("")}});case"document-filters":return a.jsx(HW,{typeFilters:io,setTypeFilters:Mo,attachmentFilters:co,setAttachmentFilters:Eo,clearFilters:()=>{Mo(Ju.map(u=>u.value)),Eo(Qu.map(u=>u.value))}});default:return a.jsx($W,{})}},[sa,cc,wa,On.length,co,io,Tt,ze,qt,B,je,jf,Pf,Rd,et,ra,Gr,Eo,Mo,Wt,Ge,Et,J,Vt,no,ro,ul,Ka,po,Kt,Ue,fl,mc,qs.filterBar.kind,ml,c]),mk=r.useMemo(()=>[{key:"zen-toggle",icon:a.jsx(Ok,{size:16,fill:W?"currentColor":"none"}),title:$e(W?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>V(),active:W}],[W,V]),pk=r.useMemo(()=>({search:a.jsx(FW,{value:ye,placeholder:$e("standalone.searchPlaceholder"),active:Wi,onChange:Ie,onClear:()=>Ie(""),clearTitle:$e("standalone.clearSearchTitle")}),sort:a.jsx(zh,{label:a.jsxs(a.Fragment,{children:[a.jsx($k,{size:12})," ",$e("standalone.sortLabel")]}),value:Oa,options:Bf,onChange:u=>Xa(u),trailingAction:a.jsx("button",{className:`tf-control-icon ${f.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?$e("standalone.sortDirectionDescTitle"):$e("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?a.jsx(ng,{size:14}):a.jsx(rg,{size:14})})}),"divider-primary":a.jsx(Hh,{}),grouping:a.jsx(zh,{label:a.jsxs(a.Fragment,{children:[a.jsx(Np,{size:12})," ",$e("standalone.groupLabel")]}),value:h,options:Wf,onChange:u=>g(u)}),"divider-secondary":a.jsx(Hh,{}),"task-display-actions":a.jsx(_p,{actions:Of})}),[h,Wf,np,Wi,e,ye,g,Ie,Xa,Oa,Bf,Of,qs.moduleId]),fk=r.useMemo(()=>({"add-task":a.jsx(OW,{icon:a.jsx(Js,{size:16}),label:$e("standalone.addTask"),onClick:xf}),"add-document":null}),[xf]),Yl=r.useMemo(()=>{const u={tasks:a.jsx(qk,{size:18}),docs:a.jsx(jp,{size:18}),annotate:a.jsx(Vk,{size:18}),workflows:a.jsx(Hf,{size:18}),agents:a.jsx(Xu,{size:18})},w=Xt.workspaceToolButtonDisabled,j=ia==="docs"?a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${ss?Xt.workspaceToolButtonActive:""}`.trim(),onClick:Ef,title:ss?"Collapse document tray":"Document tray","aria-label":ss?"Collapse document tray":"Document tray",children:ss?a.jsx(Ao,{size:18}):a.jsx(Co,{size:18})}):ia==="annotate"?a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${Hr?Xt.workspaceToolButtonActive:""}`.trim(),onClick:Df,title:Hr?"Collapse image tray":"Image tray","aria-label":Hr?"Collapse image tray":"Image tray",children:Hr?a.jsx(Ao,{size:18}):a.jsx(Co,{size:18})}):ia==="agents"?a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${As?Xt.workspaceToolButtonActive:""}`.trim(),onClick:Lf,title:As?"Collapse agent tray":"MCP settings tray","aria-label":As?"Collapse agent tray":"MCP settings tray",children:As?a.jsx(Ao,{size:18}):a.jsx(Hk,{size:18})}):ia==="workflows"?a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${w}`.trim(),title:"Workflow tray coming soon","aria-label":"Workflow tray coming soon",disabled:!0,children:a.jsx(Hf,{size:18})}):a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${ia==="tasks"&&Rr?Xt.workspaceToolButtonActive:""}`.trim(),onClick:Mf,title:ia==="tasks"&&Rr?"Collapse planning trays":"Planning","aria-label":ia==="tasks"&&Rr?"Collapse planning trays":"Planning",children:ia==="tasks"&&Rr?a.jsx(Ao,{size:18}):a.jsx(Gk,{size:18})});return a.jsxs("aside",{className:Xt.workspaceToolRail,"aria-label":"Workspace tools",children:[a.jsxs("div",{className:Xt.workspaceToolRailMain,children:[j,a.jsx("div",{className:Xt.workspaceToolRailDivider}),Ff.map(le=>a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${ia===le.id?Xt.workspaceToolButtonActive:""}`.trim(),onClick:()=>np(le.id),title:le.label,"aria-label":le.label,children:u[le.id]},le.id))]}),a.jsxs("div",{className:Xt.workspaceToolRailBottom,children:[a.jsx("div",{className:Xt.workspaceToolRailDivider}),a.jsx("button",{type:"button",className:`${Xt.workspaceToolButton} ${y==="settings"?Xt.workspaceToolButtonActive:""}`.trim(),onClick:()=>{ba("general"),k("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:a.jsx(og,{size:18})})]})]})},[y,As,ss,Lf,Ef,Df,np,Mf,Hr,Rr,ia,ba,k,Ff]),[$f,hk]=r.useState(null),gk=r.useCallback(u=>{hk(u)},[]),yk=a.jsx(yF,{open:Rr,leftOffset:56,initiatives:wt.initiatives,standaloneWorkstreams:wt.standaloneWorkstreams,allStandaloneWorkstreams:wt.allStandaloneWorkstreams,activeInitiativeId:ra,activeWorkstreamId:Gr,expandedInitiativeIds:Nr,detail:Fo,editor:is,secondaryPane:fc,currentWorkspaceId:ta,assigneeOptions:sa.map(u=>({value:String(u.value),label:u.label,kind:u.kind,username:u.username??null,archivedAt:u.archivedAt??null})),draftInitiativeSummary:hc,draftTitle:Po,draftDescription:oo,draftOwner:fa,draftInitiativeId:Vn,onChangeDraftTitle:$s,onChangeDraftDescription:ir,onChangeDraftOwner:on,onChangeDraftInitiativeId:Vr,onCollapseTreePane:()=>os(!0),onExpandTreePane:()=>os(!1),onCollapsePrimaryPane:()=>va(!0),onExpandPrimaryPane:()=>va(!1),onCollapseSecondaryPane:()=>Gn(!0),onExpandSecondaryPane:()=>Gn(!1),onBackFromSecondary:()=>{zs.current=!1,Us(!1),Os(null),ln(null)},treeCollapsed:ao,primaryCollapsed:di,secondaryCollapsed:ac,onCancelEditor:tp,onSubmitEditor:Ky,isSubmittingEditor:ui,onCreateInitiative:()=>ap("initiative"),onCreateWorkstream:()=>ap("workstream"),onCreateTaskInWorkstream:qy,onCreateWorkstreamInInitiative:u=>ap("workstream",u),onAssignInitiativeToWorkstream:Au,onOpenTaskById:Ft,onRemoveTaskFromWorkstream:u=>{xu(u,null)},onAttachTaskToWorkstreamByReference:tk,onAttachWorkstreamToInitiativeByReference:ak,onAddPlanningContextFile:nk,onRemovePlanningContextFile:rk,onUpdatePlanningContextCaption:sk,onToggleInitiative:Zy,onSelectInitiative:Yy,onSelectWorkstream:Jy,onOpenInitiativeDetails:Qy,onOpenWorkstreamDetails:Xy,onOpenNestedWorkstreamDetails:ek,onEditInitiative:u=>Nf("initiative",u),onEditWorkstream:u=>Nf("workstream",u),onArchiveInitiative:u=>{e.archiveInitiative(u).then(()=>{_t("Initiative archived","success")}).catch(w=>{_t(w instanceof Error?w.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:u=>{e.unarchiveInitiative(u).then(()=>{_t("Initiative unarchived","success")}).catch(w=>{_t(w instanceof Error?w.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:u=>{e.archiveWorkstream(u).then(()=>{_t("Workstream archived","success")}).catch(w=>{_t(w instanceof Error?w.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:u=>{e.unarchiveWorkstream(u).then(()=>{_t("Workstream unarchived","success")}).catch(w=>{_t(w instanceof Error?w.message:"Failed to unarchive workstream.","error")})}}),kk=qs.headerSections.map(u=>{const w=pk[u];return w?a.jsx(We.Fragment,{children:w},u):null}).filter(Boolean),vk=qs.primaryAction?fk[qs.primaryAction]:null;return a.jsxs("div",{className:`${Xt.standaloneWrapper} ${W?f.zenModeEnabled:""}`,"data-theme":xe,children:[a.jsx(WW,{projectName:Ha,currentWorkspaceId:ta,runtimeMode:ea,theme:xe,onBrandClick:Ul,meta:a.jsxs(a.Fragment,{children:[a.jsx("span",{className:f.taskCountBadge,title:ql,children:Qm}),qr&&qr!=="anonymous"&&a.jsxs(a.Fragment,{children:[a.jsxs("span",{className:f.taskCountBadge,title:"Tasks assigned to me",children:[a.jsx(ai,{size:13,className:f.taskCountBadgeIcon,"aria-hidden":"true"}),Md]}),a.jsxs("span",{className:`${f.taskCountBadge} ${Ed>0?f.taskCountBadgeAlert:""}`.trim(),title:"Tasks overdue",children:[a.jsx(Uk,{size:13,className:f.taskCountBadgeIcon,"aria-hidden":"true"}),Ed]})]}),Xm&&a.jsx("button",{className:"tf-control-icon",onClick:Gm,title:`Sync manager: ${xa.label} | Last success: ${Kl}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${xa.border}`,background:xa.background,color:xa.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:xa.icon==="off"?a.jsx(zk,{size:16}):a.jsx(dg,{size:16})})]}),actions:a.jsxs(a.Fragment,{children:[i&&a.jsxs(a.Fragment,{children:[Jt&&yn?.stripeCustomerId&&a.jsx("button",{className:"tf-control-icon",onClick:()=>{Dc()},title:"Manage billing",disabled:Gd,children:"Manage billing"}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{if($l){Jo();return}m()},title:$l?"Continue to Taskforce":"Back",disabled:Ho,children:$l?"Take Me to Taskforce":"Back"})]}),!i&&a.jsxs(a.Fragment,{children:[kk,vk]}),a.jsx(_p,{actions:mk}),!i&&a.jsx(_p,{actions:dk}),Vy]})}),a.jsx(wy,{notice:ar,onDismiss:Cs}),Ca&&a.jsx("div",{className:fe.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),!i&&eo&&uk,i?a.jsx("div",{className:`${Xt.standalonePage} ${Xt.standaloneContent} ${f.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(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(XF,{...e,currentTheme:xe,projectName:Ha,currentWorkspaceId:ta,authUserId:Ra,apiBaseUrl:Ol,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:Ma,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:pu,onContinueToTaskforce:Jo,continueBusy:Ho})})}):ia==="docs"&&Wo?a.jsxs("div",{className:`${Xt.standalonePage} ${Xt.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Yl,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(YF,{tasks:de,runtimeMode:ea,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:io,attachmentFilters:co,onTypeFiltersChange:Mo,onAttachmentFiltersChange:Eo,documentTrayOpen:ss,onCloseDocumentTray:()=>tc(!1),requestedDocPath:Tm,requestedDocAssetId:Rm,onRequestedDocHandled:()=>{sl(null),ol(null)},onBackToTask:ik,enableTaskGeneration:!0})})]}):ia==="annotate"&&ic?a.jsxs("div",{className:`${Xt.standalonePage} ${Xt.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Yl,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(ZF,{runtimeMode:ea,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:ta,sessionLoadReady:pi,requestedTarget:qn,requestedSessionId:lo,requestedOpenVersion:Nm,imageTrayOpen:Hr,onCloseImageTray:()=>to(!1),resolveTaskReferenceLabel:Id,resolveImageReferenceLabel:Td,onOpenTarget:ck,onContextChange:lk,onBackToTask:ok})})]}):ia==="workflows"?a.jsxs("div",{className:`${Xt.standalonePage} ${Xt.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Yl,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(JF,{availableWorkflows:as,availableEnvironments:Rt,exportEnvironment:Ea,exportWorkflowsPath:e.exportWorkflowsPath,exportingResource:_s,exportResult:bs,onExportEnvironmentChange:e.setExportEnvironment,onExportWorkflows:Ya,onRefreshWorkflows:Wa,onFetchWorkflowTemplate:e.fetchWorkflowTemplate,onFetchWorkflowOverrideNames:e.fetchWorkflowOverrideNames,onSaveWorkflowTemplateDraft:e.saveWorkflowTemplateDraft,onResetWorkflowTemplateDraft:e.resetWorkflowTemplateDraft})})]}):ia==="agents"?a.jsxs("div",{className:`${Xt.standalonePage} ${Xt.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Yl,a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(QF,{workspaceId:ta,cloudAuthConfigured:Ta,authSessionResolved:ma,isAuthenticated:Jt,cloudAiProfileSeatUsage:yn?.aiProfileSeatUsage??null,agentTrayOpen:As,onCloseAgentTray:()=>xs(!1),mcpSettingsNode:a.jsx(Jh,{settingsModel:{...he,initialSection:"mcp",onOpenCloudAuth:Bc},renderMode:"mcp-only"})})})]}):a.jsxs("div",{className:`${Xt.standalonePage} ${Xt.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:Rr?`${56+Nd+6}px`:"62px",paddingRight:h==="schedule"&&rr?`${Zp}px`:0},children:[Yl,a.jsx("div",{ref:gk,style:{position:"absolute",inset:0,zIndex:35,pointerEvents:"none"}}),a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[e.loadingTasks&&wi.length>0&&a.jsx("div",{className:f.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:a.jsx(mr,{size:14,className:f.spinner})}),a.jsx(sW,{tasks:gl,allTasks:jd,columns:Cf,groupBy:h,scheduleDates:wo,searchQuery:ye,filterCategories:ze,filterTypes:je,filterPriorities:qt,filterStatus:B,filterAssignees:Tt,filtersReady:Ht,assigneeOptions:sa,scheduleFilteredTaskIds:Array.from(hl),copiedId:yt,taxonomies:Mt,types:Be,priorities:et,onUpdateTask:K,onTaskClick:u=>ve(u),onOpenTaskById:Ft,onCopyId:ct,onToggleInProgress:ae,onToggleReview:bt,onToggleComplete:Qe,onToggleCancel:Ot,onSetStatus:kc,onArchiveTask:Bt,onAddTaskToColumn:kl,showTaskCardStatusLabel:Se,onScheduleDaySelected:u=>{al(u);const w=id(u);w&&Xs(`${w.getFullYear()}-${String(w.getMonth()+1).padStart(2,"0")}`)},persistedScrollLeft:h==="schedule"?oi:void 0,onScrollLeftChange:u=>{h==="schedule"&&Tn(u)},emptyColumnMode:_,categories:S,compressed:Ke,readOnlyMode:Kt==="deleted"?"deleted":Kt==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:Oa,sortOrder:e.sortOrder,planningDropTargets:$f?qi.createPortal(yk,$f):null,onAssignTaskToWorkstream:xu,onAssignWorkstreamToInitiative:Au,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:u=>{if(Kt==="deleted"){const w=gi.get(u);if(!w)return;vt(w.id);return}Lt(u)},onDelete:u=>{if(Kt==="deleted"){const w=gi.get(u);if(!w||!window.confirm("Permanently delete this task? This cannot be undone."))return;E(w.id);return}Fe(u)}},`${h}-${Cf.map(u=>String(u.value)).join("|")}-${wo.mon}`),h==="schedule"&&!rr&&a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{or(null),sr(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:a.jsx(Ao,{size:16})})]}),h==="schedule"&&a.jsx(UF,{open:rr,onClose:()=>sr(!1),scheduleSelectedDate:rs,setScheduleSelectedDate:al,scheduleCalendarMonth:nl,setScheduleCalendarMonth:Xs,scheduleShowWeekends:De,setScheduleShowWeekends:oe,scheduleShowBacklog:nr,setScheduleShowBacklog:ns,scheduleOnlyExpired:sn,setScheduleOnlyExpired:si,expiredScheduledCount:Pd,overdueDueCount:yl,expiredLeafCandidates:bi,expiredRecoveryCandidates:fo,onMoveExpiredToSelectedWeek:zy,onMoveExpiredToBacklog:Hy,scheduleBulkBusy:ho,globalWeekStartsOn:ua,resolvedLocale:La,todayDateOnly:Ja,scheduleBaseTasks:lc,scheduleWeekStart:Fi,scheduleWeekLabel:Gy})]}),a.jsxs(Ls,{isOpen:y==="add",onClose:yc,title:me?In?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:ci?"full":"xl",theme:xe,headerActions:a.jsx("button",{className:"tf-control-icon",onClick:()=>li(u=>!u),title:ci?"Exit full screen":"Enter full screen","aria-label":ci?"Exit full screen":"Enter full screen",children:ci?a.jsx(zf,{size:18}):a.jsx(Uf,{size:18})}),draggable:!ci,closeOnOverlayClick:!1,children:[a.jsx(Sy,{editingTaskId:me,loading:pe,autoSaveState:Ve,title:M,currentTask:In,currentTaskWorkstream:Ro,currentTaskInitiative:No,workstreamInput:ie,onWorkstreamInputChange:ee,onSetWorkstreamForCurrentTask:It,handleSubmit:re,resetForm:x,handleCopyId:ct,copiedId:yt,tasks:de,handleToggleInProgress:ae,handleToggleReview:bt,handleToggleComplete:Qe,handleToggleCancel:Ot,handleSetStatus:kc,handleArchiveTask:Bt,handleUnarchiveTask:u=>{if(In?.isDeleted){const w=gi.get(u);if(!w)return;vt(w.id);return}Lt(u)},handleRestoreDeletedTask:In?.deletedRecordId?u=>{vt(u)}:void 0,handlePermanentlyDeleteDeletedTask:In?.deletedRecordId?u=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(E(u),x(),k("tasks"))}:void 0}),a.jsx(vy,{editingTaskId:me,error:X,title:M,description:ue,checklistItems:O,category:Ne,type:ce,priority:Pe,complexity:Ee,manualComplexityEnabled:Q,approach:b,assignee:D,scheduledDate:P,dueDate:be,workstreamInput:ie,formTaxonomies:we,onTaxonomyChange:(u,w)=>Te(j=>({...j,[u]:w})),taxonomies:Mt,comments:Me,newCommentText:nt,contextFiles:lt,currentWorkspaceId:ta,apiBaseUrl:Ol,descriptionFocused:Ct,showMarkdownHelp:Xe,showChecklist:ne,checklistEnabled:q,showComments:Ze,categories:S,types:Be,priorities:et,taxonomyDisplayLabels:Ue,assigneeOptions:sa,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:yt,onTitleChange:F,onDescriptionChange:ge,onChecklistItemsChange:_e,onCategoryChange:se,onTypeChange:Re,onPriorityChange:Ae,onComplexityChange:$,onApproachChange:u=>{N(u),Te(w=>({...w,approach:u}))},onAssigneeChange:te,onScheduledDateChange:H,onDueDateChange:U,onWorkstreamInputChange:ee,onNewCommentTextChange:gt,onDescriptionFocusedChange:dt,onShowMarkdownHelpChange:it,onShowChecklistChange:st,onShowCommentsChange:Pt,onOpenSettings:u=>{ba(u),k("settings")},onSubmit:re,commentsEndRef:G,onAddComment:()=>kt(nt),onOpenTaskById:Ft,onAddContextFile:u=>{cl(w=>[...w,u])},onRemoveContextFile:async u=>{cl(w=>w.filter((j,le)=>le!==u))},onUpdateContextCaption:(u,w)=>{cl(j=>j.map((le,ke)=>ke!==u?le:typeof le=="string"?{path:le,caption:w,timestamp:new Date().toISOString()}:{...le,caption:w}))},onCopyId:ct,onToggleInProgress:ae,onToggleReview:bt,onToggleComplete:Qe,onToggleCancel:Ot,onSetStatus:kc,onArchiveTask:Bt,onUnarchive:u=>{if(In?.isDeleted){const w=gi.get(u);if(!w)return;vt(w.id);return}Lt(u)},currentTask:In})]}),a.jsx(Ls,{isOpen:y==="settings",onClose:yc,title:"Settings",size:"xl",theme:xe,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:a.jsx(r.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(mr,{size:20,className:f.spinner})}),children:a.jsx(Jh,{settingsModel:{...he,onOpenCloudAuth:Bc},onSectionChange:ba})})}),a.jsx(iB,{prompt:Qs,theme:xe,onClose:kr,onConfirm:Va}),a.jsx(cB,{isOpen:Hm,theme:xe,onClose:Vm,onConfirm:qm}),a.jsx(oB,{isOpen:Dd,theme:xe,onClose:()=>vc(!1),onOpenSettings:()=>{vc(!1),k("settings"),ba("general")}}),a.jsx(sB,{isOpen:vl,theme:xe,onClose:iu,onSave:()=>{uu()},displayName:Tl,email:ko,avatarDisplayUrl:Fl,accountBadgeInitial:Mc,saveBusy:Um,avatarBusy:Rl,saveError:Zd,saveNotice:Yd,onDisplayNameChange:qd,onOpenAvatarManager:()=>{Kr(null),Zr(null),Sc(!0)}}),a.jsx(XL,{isOpen:Pm,theme:xe,title:"Edit Profile Photo",currentImageUrl:Fl,fallbackInitial:Mc,accept:eO,busy:Rl,hasPendingImage:!!lr,canRemove:!!Fl,error:Zd,notice:Yd,onClose:()=>Sc(!1),onApplyImage:cu,onRemoveImage:du,onDiscardPendingImage:lu}),a.jsx(PL,{isOpen:go,theme:xe,runtimeMode:ea,authRequiredForApi:en,isAuthenticated:Jt,hasAuthIdentity:Ll,authIdentityLabel:Ko,billingLoading:Hd,billingError:jc,billingActionError:jr,billingNotice:Vd,billingActionBusy:Gd,billingIntervalChoice:Vs,accountProfileSummary:yn,currentWorkspaceId:ta,canOpenTeamManagement:yo,canManageWorkspaceSync:Pl,workspaceCloudSyncEnabled:vn,syncStatusLabel:xa.label,workspaceSyncError:El,syncControlBusy:Xd,cloudAuthEnabled:Ta,availableAuthProviders:Qt,onFetchLoginMethods:pa,onUnlinkLoginMethod:fn,onAddPassword:an,onLinkProvider:u=>fr(u),onClose:()=>Oo(!1),onOpenWorkspaceAudit:()=>{Oo(!1),Wc(),Ai("audit")},onBillingIntervalChange:Mi,onRefreshBilling:()=>{br()},onUpdateInterval:()=>{fu()},onManageBilling:()=>{Dc()},onStartCheckout:()=>{Ym()},onToggleWorkspaceSync:u=>{eu(u)},onOpenHelp:()=>{Oo(!1),vc(!0)}}),a.jsx(QB,{isOpen:Mm,theme:xe,teamPlanMode:Cc,teamMgmtError:ms,teamManagementTab:Em,teamUsersLoading:Ac,teamUsers:$o,teamActionBusyUserId:Ti,teamInviteFeedback:Od,teamInviteEmail:Ri,teamInviteRole:Ns,teamInvitePermissionMode:ji,teamInviteBusy:Rc,pendingInvites:Jm,teamAuditLoading:$d,teamAuditEvents:Bm,teamAuditPage:js,teamAuditPages:zd,teamAuditHasMore:Fm,onClose:()=>Wd(!1),onOpenMembersTab:()=>{Ai("members"),Yo()},onOpenInvitesTab:()=>Ai("invites"),onOpenAuditTab:()=>{Ai("audit"),vo(js)},onMemberRoleChange:(u,w)=>{So(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...Yr()},credentials:"include",body:JSON.stringify({workspaceId:Ps,role:w})}))},onMemberPermissionChange:(u,w)=>{So(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...Yr()},credentials:"include",body:JSON.stringify({workspaceId:Ps,mode:w})}))},onToggleMemberDisabled:(u,w)=>{So(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...Yr()},credentials:"include",body:JSON.stringify({workspaceId:Ps,disabled:w})}))},onRevokeInvite:u=>{So(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...Yr()},credentials:"include",body:JSON.stringify({workspaceId:Ps})}))},onRemoveMember:u=>{So(u,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(u)}?workspaceId=${encodeURIComponent(Ps)}`,{method:"DELETE",headers:Yr(),credentials:"include"}))},onInviteEmailChange:Ic,onInviteRoleChange:Ni,onInvitePermissionModeChange:Tc,onSubmitInvite:()=>{Hl()},onLoadAuditPrevious:()=>{vo(js-1)},onLoadAuditNext:()=>{vo(js+1)}}),a.jsx(_L,{isOpen:bl,theme:xe,onClose:()=>Ci(!1),onConfirm:()=>Bi({intent:"create-workspace"})}),a.jsx(JB,{isOpen:Ml,theme:xe,currentWorkspaceLabel:Km,syncStatusMeta:xa,workspaceCloudSyncEnabled:vn,syncControlBusy:Xd,canManageWorkspaceSync:Pl,workspaceSyncSummary:hs.summary,workspaceSyncRecommendedAction:hs.recommendedAction,workspaceSyncRepairBusy:Nn,referenceMismatchCount:ya,syncStageLabel:Uy,workspaceSyncPendingChanges:Aa,formattedLastSyncTime:Kl,formattedLastPullTime:Su,formattedLastPushTime:wu,syncLastError:_u,workspaceSyncDiagnostics:fs,activeReferenceMismatchSummaries:Fa,syncDiagnosticsSummary:p,syncEventRows:ga,syncEventsListRef:Oe,workspaceSyncRepairQueued:_r,workspaceSyncBusy:tn,workspaceSyncCopied:Zl,runtimeMode:ea,isAuthenticated:Jt,onClose:Dl,onToggleWorkspaceSync:u=>{eu(u)},onRepairSync:$y,onCopyReport:()=>{Oy()},onOpenLogin:()=>{Bc("login")},onRetrySync:()=>{_n()}}),At&&qi.createPortal(a.jsx("div",{className:`${xt.overlay} ${xt.unsavedOverlay}`,style:{zIndex:2e3},children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${xt.modal} ${xt.unsavedModal}`,"data-theme":xe,children:[a.jsx("div",{className:`tf-modal-header ${xt.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${xt.unsavedTitle}`,children:[a.jsx(fd,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${xt.form} ${xt.unsavedContent}`,children:a.jsx("p",{className:xt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${xt.formActions} ${xt.unsavedActions}`,children:[a.jsx("button",{className:f.cancelBtn,onClick:()=>jt(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:f.destructiveBtn,onClick:R,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:f.submitBtn,onClick:C,disabled:pe,title:"Save changes and leave",children:[pe?a.jsx(mr,{size:16,className:f.spinner}):a.jsx(ig,{size:16}),"Save"]})]})]})}),document.body),hn&&qi.createPortal(a.jsx("div",{className:ja.overlay,children:a.jsxs("div",{className:ja.browser,children:[a.jsxs("div",{className:ja.header,children:[a.jsxs("div",{className:ja.pathInfo,children:[a.jsx(Co,{size:14}),a.jsx("span",{children:Ga||"Project Root"})]}),a.jsxs("div",{className:ja.actions,children:[Ga&&a.jsx("button",{className:f.helpLink,onClick:()=>{const u=Ga.split("/").filter(Boolean);u.pop(),xr(u.length?u.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:f.helpLink,onClick:()=>zn(!1),children:"Close"})]})]}),a.jsxs("div",{className:ja.list,children:[Na&&typeof Na=="object"&&a.jsxs("div",{className:`${ja.item} ${ja.itemFile} ${ja.itemCurrent}`,onClick:()=>nn(Ga),children:[a.jsx(Io,{size:14})," Select Current: ./",Ga||"(root)"]}),Or.map(u=>a.jsxs("div",{className:ja.item,onClick:()=>xr(Ga+u+"/"),children:[a.jsx(Co,{size:14})," ",u,"/"]},u)),Cn.map(u=>a.jsxs("div",{className:`${ja.item} ${ja.itemFile}`,onClick:()=>nn(Ga+u),children:[a.jsx(jp,{size:14})," ",u]},u)),Or.length===0&&Cn.length===0&&a.jsx("div",{className:`${ja.item} ${ja.empty}`,children:"No items found"})]})]})}),document.body)]})}function sO(e){const t=e.setupState,n=e.runtimeMode,s=e.isAuthenticated,o=!!(t&&n==="cloud"&&s&&t.globalSetupState==="missing"),l=!!(t&&n==="local"&&t.globalSetupState==="missing"),i=!!(t&&n==="cloud"&&s&&t.workspaceSetupState==="missing"),d=!!(t&&n==="local"&&t.workspaceSetupState==="missing"),m=!!(t&&(t.forceSetup||t.forceGlobalSetup||t.forceWorkspaceSetup||o||i||l||d));if(!m)return{setupGateActive:!1,needsGlobalSetup:!1,needsWorkspaceSetup:!1,hasSetupReadError:!1,phase:"ready"};const y=!!(t&&(t.forceSetup||t.forceGlobalSetup||o||l)),k=!!(t&&(t.forceSetup||t.forceWorkspaceSetup||i||d)),S=!!(y&&t?.globalSetupState==="missing"),h=!!(k&&t?.workspaceSetupState==="missing"),g=!!(y&&t?.globalSetupState==="unreadable"),v=!!(k&&t?.workspaceSetupState==="unreadable"),A=g||v;return{setupGateActive:m,needsGlobalSetup:S,needsWorkspaceSetup:h,hasSetupReadError:A,phase:A?"setup-read-error":S?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const Tp="/taskforce/assets/taskforce-BxLPokNB.png";function Qh(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function Rp(e){return(Array.isArray(e)?e:[]).map(t=>String(t.label||t.value||"").trim()).filter(Boolean).join(", ")}function Xh(e={}){const t=new URLSearchParams;t.set("screen","plans");for(const[n,s]of Object.entries(e)){const o=String(s||"").trim();o&&t.set(n,o)}return`/?${t.toString()}`}function eg({config:e={},initialTaskId:t,onTaskCountChange:n,onHeaderMouseDown:s,isDragging:o,onClose:l,mode:i="standalone"}){const d=vg(),m=r.useMemo(()=>new URLSearchParams(d.search),[d.search]),y=String(m.get("planId")||"").trim(),k=String(m.get("planVersionId")||"").trim(),S=String(m.get("interval")||"").trim(),h=d.pathname==="/pricing",g=d.pathname==="/plans",v=d.pathname==="/"&&String(m.get("screen")||"").trim().toLowerCase()==="plans",A=Xh({gate:"plan_selection_required"}),_=kg(),[I,W]=r.useState(""),[V,B]=r.useState(""),[J,de]=r.useState(""),[ve,re]=r.useState(""),[x,K]=r.useState("login"),[me,pe]=r.useState(""),[X,M]=r.useState(!1),[F,ue]=r.useState(null),[ge,O]=r.useState(null),[_e,Ne]=r.useState(null),[se,ce]=r.useState(!1),[Re,Pe]=r.useState(""),[Ae,Ee]=r.useState(""),[$,T]=r.useState(null),[b,N]=r.useState(null),[D,te]=r.useState("unknown"),[P,H]=r.useState(!1),[be,U]=r.useState([]),[ie,ee]=r.useState(null),[Q,q]=r.useState(null),[Se,we]=r.useState(null),[Te,Me]=r.useState(!1),[nt,gt]=r.useState(0),[lt,St]=r.useState(0),[qe,Ct]=r.useState(()=>Date.now()),[dt,Xe]=r.useState("core"),[it,ne]=r.useState(!1),[st,Ze]=r.useState(null),[Pt,kt]=r.useState(null),[It,Ft]=r.useState(""),[Mt,Be]=r.useState(""),[et,Ue]=r.useState("local"),[Je,yt]=r.useState("details"),[ct,ae]=r.useState([]),[Qe,bt]=r.useState(""),[Ot,Bt]=r.useState(!1),[Fe,Lt]=r.useState(null),[vt,E]=r.useState(!1),[c,Y]=r.useState(null),[ye,Ie]=r.useState(!1),ze=r.useRef(!1),Ge=r.useMemo(()=>ey(),[]),[je,Vt]=r.useState(Ge),[qt,Et]=r.useState(()=>Ge.find(G=>G.isDefaultStarter)?.id||Ge[0]?.id||""),[Tt,Wt]=r.useState(()=>Qh(Ge.find(G=>G.isDefaultStarter)||Ge[0]||null)),[Ht,sa]=r.useState(!1),[Kt,Ka]=r.useState(null),[Oa,Xa]=r.useState(!1),[wa,he]=r.useState(null),[ot,xe]=r.useState(!1),Nt=Nb({config:e,initialTaskId:t,onTaskCountChange:n,onClose:l}),{runtimeMode:tt,workspaceSwitchingEnabled:Gt,currentWorkspaceId:ha,cloudAuthConfigured:Pa,authRequiredForApi:ua,authBlocked:ca,isAuthenticated:Dt,hasBetaAccess:aa,authSessionResolved:Za,setupState:$t,runtimeCapabilities:Yn,refreshSetupContext:ba,retryBootstrapChecks:ea,createWorkspace:Br,saveWorkspaceProfile:Ta,fetchWorkspaces:en,applyWorkspaceSyncStateSnapshot:Ca,workspaceCloudSyncEnabled:Jt,workspaceSyncPhase:Ra,workspaceSyncSetupIntent:la,workspaceSyncSummary:kn,workspaceSyncRecommendedAction:mn,workspaceSyncBusy:Jn,workspaceLastErrorMessage:ma,retryWorkspaceCloudSync:Cr,settingsModel:Wr,fetchTasks:vn,bootstrapState:Ba,loginWithCredentials:Ar,beginOAuthLogin:Sn,availableAuthProviders:Pn,registerWithCredentials:tn,requestEmailVerification:Aa,confirmEmailVerification:Fr,requestPasswordReset:_t,confirmPasswordReset:wn,inspectInviteAcceptance:pn,acceptInviteWithToken:bn,joinInviteWithToken:$a,authUserEmail:Mn,currentTheme:ka,logout:Ua}=Nt,_n=r.useCallback(async(G,Ve)=>{const At=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:G,stateKey:"workspace-sync",patch:Ve})}),jt=await At.json().catch(()=>({}));if(!At.ok||jt?.success===!1)throw new Error(jt?.error||`Failed to configure workspace sync (${At.status})`);return jt},[]),da=r.useMemo(()=>je.find(G=>G.id===qt)||je.find(G=>G.isDefaultStarter)||je[0]||null,[qt,je]);_g(ka);const En=qp,ta=r.useMemo(()=>{const G=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return G?G.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),za=tt==="cloud"||Yn?.runtimeMode==="cloud",_a=!za&&Pa&&!!ta,Qn=typeof window<"u"&&/^app\./i.test(window.location.hostname),Xn=tt==="cloud"&&ua,Ma=tt==="cloud"&&ca,na=d.pathname==="/login",pa=d.pathname==="/setup",fn=d.pathname==="/coming-soon",an="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",pr=!za&&et==="cloud",fr=pr&&_a,Qt=r.useMemo(()=>{if(c)return c;if(la!=="attach-cloud-import")return null;const G=String(ha||"").trim();if(!G||G.toLowerCase()==="default")return null;const Ve=ct.find(At=>At.id===G);return{workspaceId:G,name:Ve?.name||G}},[ct,ha,c,la]),Ss=!!(Qt&&ha===Qt.workspaceId),Ha=!!(Qt&&Ss&&Ra==="error"),er=!!(Qt&&Ss&&Jt&&Ra==="active"&&!Jn),es=r.useMemo(()=>{if(!Qt)return[];const G=it?"In progress":"Complete",Ve=Ha?"Needs attention":Jn||Ra==="attach-cloud"?"In progress":Ra==="active"?"Complete":"Waiting",At=ye?"In progress":er?"Ready":"Waiting";return[`Connect workspace: ${G}`,`Import cloud data: ${Ve}`,`Open local workspace: ${At}`]},[Qt,it,Ha,Jn,Ra,ye,er]),hn=Qn?(!Dt||ca)&&!h&&!g&&!v:(Xn&&!Dt||Ma)&&!h&&!g&&!v,zn=tt==="cloud"&&Dt&&!aa&&!h&&!g&&!v,Or=tt==="cloud"&&Dt&&Za&&wa?.canAccessApp===!1&&wa?.canAccessPlans!==!1&&!h&&!g&&!v,Cn=tt==="cloud"&&Dt&&(!Za||!ot),Ga=Pa,xr=r.useMemo(()=>{switch(x){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"}},[x]),Na=r.useMemo(()=>String(new URLSearchParams(d.search).get("step")||"").trim().toLowerCase(),[d.search]),ws=r.useMemo(()=>String(new URLSearchParams(d.search).get("intent")||"").trim().toLowerCase(),[d.search]),nn=pa&&Na==="workspace"&&ws==="create-workspace",Ir=i!=="widget"&&Ba.authPending&&!na&&!pa&&!h&&!g&&!v&&(tt==="cloud"||Qn),hr=r.useMemo(()=>sO({setupState:$t?{globalSetupState:$t.globalSetupState,workspaceSetupState:$t.workspaceSetupState,runtimeMode:$t.runtimeMode,workspaceId:$t.workspaceId,mode:$t.mode,forceSetup:$t.forceSetup,forceGlobalSetup:$t.forceGlobalSetup,forceWorkspaceSetup:$t.forceWorkspaceSetup}:null,runtimeMode:tt,isAuthenticated:Dt}),[$t,tt,Dt]),$r=hr.setupGateActive,gn=hr.needsGlobalSetup,gr=hr.needsWorkspaceSetup,An=hr.hasSetupReadError,Dn=i!=="widget"&&Ba.auth.resolved&&!hn&&!zn&&!h&&!g&&!v&&!na&&Ba.appPending&&(pa||tt==="cloud"||Qn),tr=tt==="cloud"&&se&&!v,ts=Ba.subtitle,Ur=nn||pa&&!!Qt||pa&&$r&&(An||gn||gr),Ye=r.useMemo(()=>Ir?"auth-bootstrap":tr||Dn?"app-bootstrap":na?"login":hn&&!na?"login-redirect":fn&&zn?"coming-soon":Ur?"guided-setup":"app",[fn,na,zn,hn,tr,Ir,Dn,Ur]),Ut=r.useCallback((G,Ve,At)=>{const jt=String(G||"").trim().toLowerCase(),Da=String(Ve||"").trim().toLowerCase();return!!(!jt||jt==="system default workspace"||Da&&jt===Da)},[]);r.useEffect(()=>{const G=$t?.mode==="operations"?"operations":"core";Xe(G)},[$t?.mode]),r.useEffect(()=>{if(tt!=="cloud"||!Dt){he(null),xe(!1);return}if(!Za){he(null),xe(!1);return}he(null),xe(!1);let G=!1;return(async()=>{try{const Ve=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),At=await Ve.json().catch(()=>({}));if(G)return;if(!Ve.ok){he(null),xe(!0);return}const jt=String(At?.gate||"").trim().toLowerCase();if(jt!=="ok"&&jt!=="plan_selection_required"&&jt!=="checkout_pending"&&jt!=="misconfigured"&&jt!=="missing_entitlement"){he(null),xe(!0);return}he({gate:jt,canAccessApp:At?.canAccessApp===!0,canAccessPlans:At?.canAccessPlans!==!1,message:typeof At?.message=="string"?At.message:null}),xe(!0)}catch{G||(he(null),xe(!0))}})(),()=>{G=!0}},[Za,Dt,tt,d.pathname,d.search]),r.useEffect(()=>{if(nn){Ft(""),Be("");return}if(!$t)return;const G=String($t.workspace?.name||"").trim(),Ve=String($t.suggestedWorkspaceName||"").trim(),At=Ut(G,$t.workspaceId,$t.workspace?.description)?Ve:G;Ft(At||Ve||G),Be(String($t.workspace?.description||""))},[$t?.workspace?.name,$t?.workspace?.description,$t?.suggestedWorkspaceName,$t?.workspaceId,nn,Ut]),r.useEffect(()=>{if(!pa||Na!=="workspace")return;if(yt("details"),Qt&&_a){Ue("cloud"),E(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&_a){Ue("cloud"),E(!1);return}Ue("local")},[Qt,_a,pa,d.search,Na]);const Ea=r.useCallback(async()=>{if(!_a||!Dt){ae([]),bt("");return}Bt(!0),Lt(null);try{const G=await fetch(`${ta}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),Ve=await G.json().catch(()=>({}));if(!G.ok||Ve?.success===!1){ae([]),bt(""),Lt(Ve?.error||`Failed to load cloud projects (${G.status})`);return}const At=Array.isArray(Ve?.workspaces)?Ve.workspaces.map(jt=>({id:String(jt?.id||"").trim(),name:String(jt?.name||jt?.id||"").trim(),description:typeof jt?.description=="string"?jt.description:null})).filter(jt=>jt.id.length>0):[];ae(At),bt(jt=>jt&&At.some(Da=>Da.id===jt)?jt:At[0]?.id||"")}catch{ae([]),bt(""),Lt("Failed to load cloud projects.")}finally{Bt(!1)}},[_a,Dt,ta]);r.useEffect(()=>{et==="cloud"&&Ea()},[Ea,et]),r.useEffect(()=>{if(!pa||Na!=="workspace"||et==="cloud")return;let G=!1;return sa(!0),Ka(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async Ve=>{if(!Ve.ok)throw new Error(`Failed to load setup libraries (${Ve.status})`);const At=await Ve.json().catch(()=>({})),jt=Array.isArray(At?.packs)?At.packs:[];G||jt.length===0||(Vt(jt),Et(Da=>jt.some(xn=>xn.id===Da)?Da:jt.find(xn=>xn.isDefaultStarter)?.id||jt[0]?.id||""))}).catch(Ve=>{G||(Vt(Ge),Ka(Ve instanceof Error?Ve.message:"Failed to load setup libraries."))}).finally(()=>{G||sa(!1)}),()=>{G=!0}},[Ge,pa,Na,et]),r.useEffect(()=>{Wt(Qh(da))},[qt,da]),r.useEffect(()=>{et==="cloud"&&yt("details")},[et]),r.useEffect(()=>{fr||(Y(null),Ie(!1),ze.current=!1)},[fr]),r.useEffect(()=>{!Ha||!Qt||(kt(null),Ze(ma||`Failed to import "${Qt.name}" from cloud. Retry import to continue.`))},[Qt,Ha,ma]),r.useEffect(()=>{if(!er||!Qt||ze.current)return;let G=!1;return ze.current=!0,Ie(!0),Ze(null),kt(`Workspace import complete. Opening ${Qt.name}...`),(async()=>{try{if(await ba(),await Promise.all([en(),vn(!0)]),G)return;await _n(Qt.workspaceId,{setupIntent:null}),Ca({enabled:Jt,phase:Ra,setupIntent:null}),Y(null),_("/",{replace:!0})}catch{if(G)return;kt(null),Ze(`Imported "${Qt.name}" but failed to finish opening it.`),Ie(!1),ze.current=!1}})(),()=>{G=!0}},[Qt,Ca,vn,en,er,_,_n,ba]);const oa=r.useMemo(()=>{const G=new URLSearchParams(d.search).get("next")||"/";return!G.startsWith("/")||G==="/login"?"/":G},[d.search]),cn=r.useMemo(()=>{try{const G=new URL(oa,"https://taskforce.local");return G.pathname==="/setup"&&G.searchParams.get("step")==="workspace"&&G.searchParams.get("source")==="cloud"&&G.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[oa]),rn=r.useCallback(()=>cn?an:"/setup?step=workspace",[cn]),bs=S==="year"?"year":"month",_s=r.useCallback(G=>!!(G?.planSelectionRequired||G?.checkoutPending||G?.commercialState==="pending_plan_selection"||G?.commercialState==="checkout_pending"),[]),as=r.useCallback(G=>G?.planSelectionRequired||G?.commercialState==="pending_plan_selection"?A:G?.checkoutPending||G?.commercialState==="checkout_pending"?Xh({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?bs:null}):oa,[oa,A,bs,y,k]),Ya=r.useMemo(()=>{const G=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return G==="register"?Ga?"register":"login":G==="verify"||G==="forgot"||G==="reset"||G==="invite"?G:"login"},[Ga,d.search]),Wa=r.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),Rt=r.useCallback(G=>{const Ve=new URLSearchParams(d.search),At=G==="register"&&!Ga?"login":G;At==="login"?Ve.delete("mode"):Ve.set("mode",At);const jt=Ve.toString();_(`/login${jt?`?${jt}`:""}`,{replace:!0})},[Ga,d.search,_]);r.useEffect(()=>{na&&(K(Ya),Ya==="verify"&&Wa&&pe(Wa),Ya==="reset"&&Wa&&Pe(Wa),Ya==="invite"&&Wa&&Ee(Wa))},[na,Ya,Wa]),r.useEffect(()=>{x!=="verify"&&(na&&Ya==="verify"||(M(!1),ue(null),O(null)))},[x,na,Ya]),r.useEffect(()=>{x!=="register"&&re("")},[x]),r.useEffect(()=>{if(!_e||!Dt||!_e.commercialOnboardingGate&&(!Za||Cn))return;const G=!_e.commercialOnboardingGate&&_e.workspaceSetupRequired?rn():_e.path;`${d.pathname}${d.search}${d.hash||""}`!==G&&_(G,{replace:!0})},[Za,Cn,Dt,d.hash,d.pathname,d.search,_,_e,rn]),r.useEffect(()=>{if(!se||!Za)return;if(!Dt){ce(!1),Ne(null);return}if(ot&&wa?.canAccessApp===!0){W(""),B(""),de(""),re(""),Ne(null),ce(!1);return}const G=_e?.commercialOnboardingGate?_e.path:A;`${d.pathname}${d.search}${d.hash||""}`!==G&&_(G,{replace:!0})},[wa?.canAccessApp,ot,Za,se,Dt,d.hash,d.pathname,d.search,_,_e,A]),r.useEffect(()=>{if(!_e||!Dt)return;const G=!_e.commercialOnboardingGate&&_e.workspaceSetupRequired?rn():_e.path;`${d.pathname}${d.search}${d.hash||""}`===G&&(_e.commercialOnboardingGate||(W(""),B(""),de(""),re(""),Ne(null)))},[d.hash,d.pathname,d.search,Dt,_e,rn,tt]),r.useEffect(()=>{na&&(document.title=xr)},[xr,na]),r.useEffect(()=>{if(!na||x!=="invite"||!Ae.trim())return;let G=!0;return(async()=>{const Ve=await pn(Ae);if(G)if(Ve.success){T(Ve.email||null),N(Ve.workspaceId||null),H(Ve.passwordRequired===!0);const At=(Ve.availableMethods||[]).filter(xn=>xn==="google"||xn==="github"||xn==="apple");U(Ve.inviteeState==="pending_setup"?At:[]);const jt=!!(Dt&&Mn&&Ve.email&&Mn.trim().toLowerCase()===Ve.email.trim().toLowerCase()),Da=Ve.passwordRequired===!0?"new_user":jt?"existing_user_ready":"existing_user_signed_out";te(Da),ee(Da==="new_user"?"Create your account password to join this workspace.":Da==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),q(null),we(null)}else T(null),N(null),te("invalid"),H(!1),U([]),q(Tr(Ve)),we(Ve.code||Ve.state||null)})(),()=>{G=!1}},[na,x,Ae,pn,Dt,Mn]),r.useEffect(()=>{x==="invite"&&D==="existing_user_signed_out"&&$&&W(G=>G.trim()?G:$)},[x,D,$]),r.useEffect(()=>{if(!(nt>Date.now()||lt>Date.now()))return;const Ve=window.setInterval(()=>Ct(Date.now()),1e3);return()=>window.clearInterval(Ve)},[nt,lt]);const yr=Math.max(0,Math.ceil((nt-qe)/1e3)),Hn=Math.max(0,Math.ceil((lt-qe)/1e3)),Ln=yr>0,ar=Hn>0,Cs=r.useMemo(()=>_y(),[]),Tr=G=>{const Ve=G.error||"Request failed.",At=G.code||G.state;return At?`[${At}] ${Ve}`:Ve},zr=G=>G?.deliveryAttempted===!1?G?.intro||"If that account exists and still needs verification, we sent an email.":G?.emailSent===!1?`Verification email failed to send. ${G?.emailError||"Try Resend Verification again."}`:"Verification email resent.",Bs=G=>G?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":G?.emailSent===!1?`Password reset email failed to send. ${G?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";r.useEffect(()=>{if(i==="widget"||na&&Te)return;const G=tt==="cloud"&&Dt&&ot&&wa?.canAccessApp===!1&&wa?.canAccessPlans!==!1;if(Ba.workspace.pending&&!G)return;if(zn){fn||_("/coming-soon",{replace:!0});return}if(fn&&!zn){_("/",{replace:!0});return}if(hn){if(!na){const At=`${d.pathname}${d.search}${d.hash}`;_(`/login?next=${encodeURIComponent(At||"/")}`,{replace:!0});return}return}else{const At=na&&x==="invite"&&Ae.trim().length>0;if(na&&Dt&&!At&&(!!_e||Ba.workspace.pending||x==="register"||x==="verify"||!Ba.config.loaded||Cn))return;na&&Dt&&!At&&_(oa,{replace:!0})}if(!(na&&!Dt||_e&&Dt||na&&Dt&&(x==="register"||x==="verify"||x==="invite"&&Ae.trim().length>0))&&!se&&!v){if(Or){if(!v){const At=encodeURIComponent(String(wa?.gate||"plan_selection_required"));_(`/?screen=plans&gate=${At}`,{replace:!0})}return}if(Qt){pa&&Na==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||_(an,{replace:!0});return}if(!(v&&Cn)&&!(v&&tt==="cloud"&&ot&&wa?.canAccessApp===!1&&wa?.canAccessPlans!==!1)){if($r){if(An){(!pa||Na!=="error")&&_("/setup?step=error",{replace:!0});return}if(gn){(!pa||Na!=="global")&&_("/setup?step=global",{replace:!0});return}if(gr){(!pa||Na!=="workspace")&&_(rn(),{replace:!0});return}pa&&_("/",{replace:!0});return}pa&&$t&&!nn&&_("/",{replace:!0})}}},[i,hn,zn,Or,na,pa,fn,g,v,wa,wa?.gate,ot,x,se,Cn,$r,$t,An,nn,Qt,gn,gr,Na,Ba,tt,Te,Dt,ot,Ae,d.pathname,d.search,d.hash,_,oa,_e,an]),r.useEffect(()=>{if(i==="widget"||tt!=="local"||!Ba.config.loaded||na||pa)return;const G=String(ha||"").trim().toLowerCase();(!G||G==="default")&&_("/setup?step=workspace",{replace:!0})},[i,tt,Ba.config.loaded,na,pa,ha,_]);const Bn=r.useCallback(async()=>{Xa(!0);try{await ea()}finally{Xa(!1)}},[ea]),Wn=r.useCallback(async()=>{await Ua(),_("/login",{replace:!0})},[Ua,_]);if(i==="widget")return a.jsx(QE,{...Nt,onHeaderMouseDown:s,isDragging:o,onClose:l});if(h){const G=new URLSearchParams(d.search);return G.set("screen","plans"),a.jsx(Vf,{to:`/?${G.toString()}${d.hash||""}`,replace:!0})}if(g){const G=new URLSearchParams(d.search);return G.set("screen","plans"),a.jsx(Vf,{to:`/?${G.toString()}${d.hash||""}`,replace:!0})}if(Ye==="auth-bootstrap")return a.jsx("div",{className:Xt.standaloneWrapper,"data-theme":ka,children:a.jsx("div",{className:fe.loginView,children:a.jsxs("div",{className:fe.loginCard,children:[a.jsxs("div",{className:fe.authBrandRow,children:[a.jsx("img",{src:En,alt:"Taskforce",className:fe.loginLogo}),a.jsx("h1",{className:fe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:fe.loginSubtitle,children:"Checking your session..."})]})})});if(Ye==="app-bootstrap")return a.jsx("div",{className:Xt.standaloneWrapper,"data-theme":ka,children:a.jsx("div",{className:fe.loginView,children:a.jsxs("div",{className:fe.loginCard,children:[a.jsxs("div",{className:fe.authBrandRow,children:[a.jsx("img",{src:En,alt:"Taskforce",className:fe.loginLogo}),a.jsx("h1",{className:fe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:fe.loginSubtitle,children:ts}),Ba.stalled&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:fe.loginError,children:Ba.error||"Startup checks timed out."}),a.jsx("button",{className:f.submitBtn,disabled:Oa,onClick:Bn,children:Oa?"Retrying...":"Retry checks"}),za&&a.jsx("button",{className:f.cancelBtn,disabled:Oa,onClick:Wn,children:"Go to sign-in"})]})]})})});if(Ye==="login")return a.jsx("div",{className:Xt.standaloneWrapper,"data-theme":ka,children:a.jsx("div",{className:fe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Tp})`},children:a.jsxs("div",{className:fe.loginCard,children:[!za&&!hn&&a.jsx("button",{className:fe.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>_(oa,{replace:!0}),children:"×"}),a.jsxs("div",{className:fe.authBrandRow,children:[a.jsx("img",{src:En,alt:"Taskforce",className:fe.loginLogo}),a.jsxs("h1",{className:fe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:fe.loginTitleAccent,children:"HQ"})]})]}),a.jsxs("p",{className:fe.loginSubtitle,children:[x==="login"&&"Sign in with your account credentials.",x==="register"&&"Create your Taskforce account.",x==="verify"&&"Enter your verification token.",x==="forgot"&&"Request a password reset link.",x==="reset"&&"Set a new password using your reset token.",x==="invite"&&(D==="existing_user_ready"?`You've been invited to join ${b||"this workspace"}.`:D==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(x==="login"||x==="register"||x==="verify"||x==="forgot"||x==="invite"&&D==="existing_user_signed_out")&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Email"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"email",value:I,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:G=>W(G.target.value)})]}),x==="register"&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Display name"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"text",value:V,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:G=>B(G.target.value)})]}),(x==="login"||x==="register"||x==="reset"||x==="invite"&&(P||D==="existing_user_signed_out"))&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:x==="reset"?"New password":x==="invite"&&P?"Create password":"Password"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"password",value:J,placeholder:x==="reset"?"New password":x==="invite"&&P?"Create password":"Password",autoComplete:x==="register"||x==="reset"||x==="invite"&&P?"new-password":"current-password","data-testid":"auth-password-input",onChange:G=>de(G.target.value)})]}),(x==="register"||x==="invite"&&P)&&a.jsx(a.Fragment,{children:a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Confirm password"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"password",value:ve,placeholder:"Confirm password",autoComplete:"new-password","data-testid":"auth-confirm-password-input",onChange:G=>re(G.target.value)})]})}),(x==="register"||x==="invite"&&P)&&a.jsx("p",{className:fe.loginSubtitle,children:Cs.join(" ")}),x==="verify"&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Verification token"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"text",value:me,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:G=>pe(G.target.value)})]}),x==="reset"&&a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Reset token"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"text",value:Re,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:G=>Pe(G.target.value)})]}),x==="invite"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{className:fe.loginField,children:[a.jsx("span",{className:fe.loginFieldLabel,children:"Invite token"}),a.jsx("input",{className:`${f.input} ${fe.loginInput}`,type:"text",value:Ae,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:G=>Ee(G.target.value)})]}),$&&a.jsxs("p",{className:fe.loginSubtitle,children:["Invite for: ",a.jsx("strong",{children:$}),b?` · Workspace: ${b}`:""]})]}),ie&&a.jsx("p",{className:fe.loginSubtitle,children:ie}),Q&&a.jsx("p",{className:fe.loginError,children:Q}),x==="login"&&Se==="EMAIL_NOT_VERIFIED"&&I.trim()&&a.jsx("button",{className:fe.authModeLink,disabled:Te||Ln,onClick:async()=>{Me(!0),ee(null);const G=await Aa(I);G.success?(gt(Date.now()+3e4),Rt("verify"),G.verificationToken&&pe(G.verificationToken),ee(zr(G)),q(null),we(null)):q(Tr(G)),Me(!1)},children:Ln?`Resend in ${yr}s`:"Resend Verification Email"}),a.jsx("div",{className:fe.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:a.jsx("button",{className:`${f.submitBtn} ${fe.loginPrimaryBtn}`,disabled:Te||x==="forgot"&&ar,"data-testid":"auth-submit-button",onClick:async()=>{if(Me(!0),ee(null),q(null),we(null),x==="register"&&!V.trim()){q("Display name is required."),Me(!1);return}if(x==="register"){const Ve=Cy(J,{email:I,displayName:V});if(!Ve.ok){q(Ve.message||"Password does not meet the password policy."),we(Ve.code||null),Me(!1);return}if(J!==ve){q("Passwords do not match."),we("PASSWORD_CONFIRMATION_MISMATCH"),Me(!1);return}}let G={success:!1};if(x==="login"?G=await Ar(I,J):x==="register"?G=await tn(I,J,{displayName:V,planId:y||void 0,planVersionId:k||void 0,interval:S||void 0}):x==="verify"?G=await Fr(me):x==="forgot"?G=await _t(I):x==="reset"?G=await wn(Re,J):x==="invite"&&(D==="existing_user_signed_out"?G=await Ar(I,J):G=P?await bn(Ae,J):await $a(Ae)),G.success)if(x==="register"){const Ve=as(G),At=_s(G);G.verificationRequired?(M(!!G.workspaceSetupRequired),ue(At?String(G.commercialState||"").trim()||(G.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),O(Ve),G.verificationToken&&pe(G.verificationToken),gt(Date.now()+3e4),Rt("verify"),ee(G.emailSent===!1?`Account created, but verification email failed to send. ${G.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(ce(At),Ne({path:Ve,workspaceSetupRequired:!!G.workspaceSetupRequired,commercialOnboardingGate:At}))}else if(x==="verify"){await ea();const Ve=F==="pending_plan_selection"||F==="checkout_pending";ce(Ve),Ne({path:ge||oa,workspaceSetupRequired:X,commercialOnboardingGate:Ve})}else if(x==="forgot"){const Ve=G.deliveryAttempted===!0&&G.emailSent===!1;G.resetToken&&Pe(G.resetToken),ee(Bs(G)),Ve||(St(Date.now()+3e4),Rt("reset"))}else if(x==="reset")Rt("login"),ee("Password updated. Sign in with your new password.");else if(x==="invite"){if(D==="existing_user_signed_out"){const Ve=String($||"").trim().toLowerCase(),At=I.trim().toLowerCase();if(Ve&&At===Ve){K("invite"),te("existing_user_ready"),de(""),re(""),ee("Signed in. Review the invite details to continue."),q(null),we(null),Me(!1);return}Ve&&W($||""),te("existing_user_signed_out"),de(""),re(""),ee(Ve?`Signed in, but this invite is for ${$}. Sign in with that account to continue.`:"Signed in, but this invite requires the invited account. Sign in with that account to continue."),q("Sign in with the invited account to join this workspace."),we("INVITE_ACCOUNT_MISMATCH"),Me(!1);return}if(G.workspaceSetupRequired){_(rn(),{replace:!0}),Me(!1);return}_(oa,{replace:!0})}else if(x==="login"){if(Ae.trim()){K("invite"),de(""),re(""),ee("Signed in. Review the invite details to continue."),Me(!1);return}if(G.workspaceSetupRequired){_(rn(),{replace:!0}),Me(!1);return}W(""),B(""),de(""),re(""),_(oa,{replace:!0})}else W(""),B(""),de(""),re(""),_(oa,{replace:!0});else{if(x==="register"&&(G.code==="SIGNUP_PLAN_NOT_ENABLED"||G.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||G.code==="SIGNUP_PLAN_VERSION_REQUIRED")){_(A,{replace:!0}),Me(!1);return}if(q(Tr(G)),we(G.code||null),x==="login"&&(G.code==="WORKSPACE_NOT_FOUND"||G.code==="WORKSPACE_ID_REQUIRED")){_("/setup?step=workspace",{replace:!0}),Me(!1);return}if(x==="login"&&G.code==="EMAIL_NOT_VERIFIED"&&I.trim()){const Ve=await Aa(I);Ve.success&&(gt(Date.now()+3e4),Rt("verify"),Ve.verificationToken&&pe(Ve.verificationToken),ee(zr({...Ve,intro:"If that account exists and still needs verification, we sent an email."})),q(null),we(null))}x==="register"&&G.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&I.trim()&&(gt(Date.now()+3e4),Rt("verify"),G.verificationToken&&pe(G.verificationToken),ee(G.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${G.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),q(null),we(null))}Me(!1)},children:Te?"Working...":x==="login"?"Sign In":x==="register"?"Create Account":x==="verify"?"Verify Email":x==="forgot"?ar?`Retry in ${Hn}s`:"Send Reset Link":x==="reset"?"Reset Password":D==="existing_user_signed_out"?"Sign In to Continue":P?"Create Account and Join":"Join Workspace"})}),(x==="login"||x==="register")&&Pn.length>0&&a.jsxs("div",{className:fe.oauthProviders,children:[a.jsx("div",{className:fe.oauthDivider,children:a.jsx("span",{children:"or continue with"})}),a.jsxs("div",{className:fe.oauthButtons,children:[Pn.includes("google")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>Sn("google",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with Google",children:"Google"}),Pn.includes("github")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>Sn("github",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with GitHub",children:"GitHub"}),Pn.includes("apple")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>Sn("apple",d.pathname!=="/login"?d.pathname:"/"),"aria-label":"Continue with Apple",children:"Apple"})]})]}),x==="invite"&&D==="new_user"&&be.length>0&&a.jsxs("div",{className:fe.oauthProviders,children:[a.jsx("div",{className:fe.oauthDivider,children:a.jsx("span",{children:"or join with"})}),a.jsxs("div",{className:fe.oauthButtons,children:[be.includes("google")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>Sn("google","/",Ae),"aria-label":"Join with Google",children:"Google"}),be.includes("github")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>Sn("github","/",Ae),"aria-label":"Join with GitHub",children:"GitHub"}),be.includes("apple")&&a.jsx("button",{type:"button",className:fe.oauthButton,disabled:Te,onClick:()=>Sn("apple","/",Ae),"aria-label":"Join with Apple",children:"Apple"})]})]}),x==="register"&&a.jsxs("p",{className:fe.registerConsent,children:["By creating an account, you agree to the"," ",a.jsx("a",{className:fe.registerConsentLink,href:"https://taskforcehq.com/legal/terms",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",a.jsx("a",{className:fe.registerConsentLink,href:"https://taskforcehq.com/legal/privacy",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),a.jsxs("div",{className:fe.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Ga&&(x==="login"||x==="register")&&a.jsxs("p",{className:fe.authModeSwitch,children:[x==="login"?"Need an account?":"Already have an account?"," ",a.jsx("button",{className:fe.authModeSwitchLink,disabled:Te,"data-testid":"auth-switch-mode-button",onClick:()=>{q(null),we(null),ee(null),Rt(x==="login"?"register":"login")},children:x==="login"?"Register":"Sign In"})]}),a.jsxs("div",{className:fe.authModeLinks,children:[(x==="login"||x==="register")&&a.jsxs(a.Fragment,{children:[a.jsx("button",{className:fe.authModeLink,disabled:Te||ar,"data-testid":"auth-forgot-password-button",onClick:()=>{q(null),we(null),ee(null),Rt("forgot")},children:ar?`Forgot Password (${Hn}s)`:"Forgot Password"}),a.jsx("button",{className:fe.authModeLink,disabled:Te||Ln,"data-testid":"auth-resend-verification-button",onClick:()=>{q(null),we(null),ee(null),Rt("verify")},children:Ln?`Resend Verification (${yr}s)`:"Resend Verification"}),a.jsx("button",{className:fe.authModeLink,disabled:Te,"data-testid":"auth-accept-invite-button",onClick:()=>{q(null),we(null),ee(null),Rt("invite")},children:"Accept Invite"})]}),x!=="login"&&x!=="register"&&a.jsxs(a.Fragment,{children:[x==="verify"&&a.jsx("button",{className:fe.authModeLink,disabled:Te||Ln||!I.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{Me(!0),ee(null),q(null),we(null);const G=await Aa(I);G.success?(gt(Date.now()+3e4),G.verificationToken&&pe(G.verificationToken),ee(zr(G))):q(Tr(G)),Me(!1)},children:Ln?`Resend Verification (${yr}s)`:"Resend Verification"}),a.jsx("button",{className:fe.authModeLink,disabled:Te,"data-testid":"auth-return-sign-in-button",onClick:()=>{q(null),we(null),ee(null),Rt("login")},children:x==="verify"?"Back to Sign In":"Sign In"}),Ga&&x!=="verify"&&a.jsx("button",{className:fe.authModeLink,disabled:Te,"data-testid":"auth-return-register-button",onClick:()=>{q(null),we(null),ee(null),Rt("register")},children:"Register"}),x==="reset"&&a.jsx("button",{className:fe.authModeLink,disabled:Te||ar,"data-testid":"auth-return-forgot-password-button",onClick:()=>{q(null),we(null),ee(null),Rt("forgot")},children:ar?`Forgot Password (${Hn}s)`:"Forgot Password"})]})]})]})]})})});if(Ye==="login-redirect")return a.jsx("div",{className:Xt.standaloneWrapper,"data-theme":ka,children:a.jsx("div",{className:fe.loginView,children:a.jsxs("div",{className:fe.loginCard,children:[a.jsxs("div",{className:fe.authBrandRow,children:[a.jsx("img",{src:En,alt:"Taskforce",className:fe.loginLogo}),a.jsx("h1",{className:fe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:fe.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(Ye==="coming-soon")return a.jsx("div",{className:Xt.standaloneWrapper,"data-theme":ka,children:a.jsx("div",{className:fe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Tp})`},children:a.jsxs("div",{className:fe.loginCard,children:[a.jsxs("div",{className:fe.authBrandRow,children:[a.jsx("img",{src:En,alt:"Taskforce",className:fe.loginLogo}),a.jsx("h1",{className:fe.loginTitle,children:"Private Beta"})]}),a.jsx("p",{className:fe.loginSubtitle,children:"You are signed in, but your account is not in the beta allowlist yet."}),a.jsx("p",{className:fe.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),a.jsx("button",{className:f.cancelBtn,onClick:async()=>{await Nt.logout(),_("/login",{replace:!0})},children:"Sign Out"})]})})});if(Ye==="guided-setup"){const G=!nn&&(An||Na==="error"),Ve=!nn&&!G&&(gn||Na==="global"),At=$e(G?"setup.headingCheckFailed":Ve?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),jt=G?$e("setup.subtitleUnreadable"):Ve?$e("setup.subtitleGlobalRequired"):null,Da="Workspace",xn=za||et!=="cloud",In=xn&&Je==="details",Ro=xn&&Je==="library",No=!za&&_a&&In&&!Qt,Qs=Yn?.runtimeMode==="cloud"?dg:Kk,Va=da?Rp(da.categories):"",kr=da?Rp(da.types):"",La=da?Rp(da.priorities):"",R=it?$e("setup.saving"):pr?Qt?Ha?"Retry Import":"Importing Workspace...":"Connect Workspace":In?"Continue":Ro?"Create Workspace":"Connect Workspace";return a.jsx("div",{className:Xt.standaloneWrapper,"data-theme":ka,children:a.jsx("div",{className:fe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${Tp})`},children:a.jsxs("div",{className:fe.loginCard,children:[a.jsxs("div",{className:fe.setupHeaderRow,children:[a.jsxs("div",{className:fe.authBrandRow,children:[a.jsx("img",{src:En,alt:"Taskforce",className:fe.loginLogo}),a.jsxs("h1",{className:fe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:fe.loginTitleAccent,children:"HQ"})]})]}),Yn&&a.jsx("span",{className:fe.runtimeIconBadge,title:Yn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":Yn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:We.createElement(Qs,{size:16,"aria-hidden":!0})})]}),a.jsx("p",{className:fe.loginSubtitle,children:a.jsx("strong",{children:At})}),jt?a.jsx("p",{className:fe.loginSubtitle,children:jt}):null,Pt&&a.jsx("p",{className:fe.loginSubtitle,children:Pt}),st&&a.jsx("p",{className:fe.loginError,children:st}),Ve&&a.jsxs("div",{className:fe.optionGrid,children:[a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:dt==="core",onChange:()=>Xe("core"),disabled:it}),a.jsx("span",{children:$e("setup.coreModeOption",{workspaceLabel:Da})})]}),a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:dt==="operations",onChange:()=>Xe("operations"),disabled:it}),a.jsx("span",{children:$e("setup.operationsModeOption")})]})]}),!G&&!Ve&&a.jsxs("div",{className:fe.optionGrid,children:[No&&a.jsxs("div",{className:fe.optionGroup,children:[a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:et==="local",onChange:()=>Ue("local"),disabled:it}),a.jsxs("span",{children:["Create new local ",Da.toLowerCase()]})]}),a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:et==="cloud",onChange:()=>Ue("cloud"),disabled:it}),a.jsxs("span",{children:["Sync existing cloud ",Da.toLowerCase()]})]})]}),pr?a.jsxs("div",{className:fe.optionGroup,children:[!Qt&&!_a&&a.jsx("p",{className:fe.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!Qt&&_a&&!Dt&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:fe.inlineHint,children:"Sign in to choose one of your cloud projects."}),a.jsxs("div",{className:fe.actionRowEnd,children:[a.jsx("button",{className:f.cancelBtn,disabled:it,onClick:()=>{_(`/login?mode=login&next=${encodeURIComponent(an)}`,{replace:!0})},children:"Sign In"}),Ga&&a.jsx("button",{className:f.submitBtn,disabled:it,onClick:()=>{_(`/login?mode=register&next=${encodeURIComponent(an)}`,{replace:!0})},children:"Register"})]})]}),!Qt&&_a&&Dt&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:f.input,value:Qe,onChange:C=>bt(C.target.value),disabled:it||Ot||ct.length===0,children:[ct.length===0&&a.jsx("option",{value:"",children:Ot?"Loading cloud projects...":"No cloud projects found"}),ct.map(C=>a.jsxs("option",{value:C.id,children:[C.name," (",C.id,")"]},C.id))]}),a.jsx("div",{className:fe.actionRowEnd,children:a.jsx("button",{className:f.cancelBtn,disabled:it||Ot,onClick:()=>{Ea()},children:"Refresh Cloud Projects"})}),Fe&&a.jsx("p",{className:fe.loginError,children:Fe})]}),Qt&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:fe.inlineHint,children:['Importing "',Qt.name,'" from cloud into local.']}),a.jsx("div",{className:fe.optionGroup,children:es.map(C=>a.jsx("p",{className:fe.inlineHint,children:C},C))}),a.jsx("p",{className:fe.inlineHint,children:ye?"Finishing setup and opening your workspace.":kn||"Pulling tasks, taxonomies, and settings into local."}),!ye&&mn&&a.jsx("p",{className:fe.inlineHint,children:mn})]})]}):a.jsxs(a.Fragment,{children:[In&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:fe.loginSubtitle,children:"Workspace name"}),a.jsx("input",{className:f.input,type:"text",value:It,placeholder:"Workspace name",onChange:C=>Ft(C.target.value),disabled:it}),a.jsx("p",{className:fe.loginSubtitle,children:"Workspace description"}),a.jsx("textarea",{className:f.textarea,value:Mt,placeholder:"Workspace description (optional)",onChange:C=>Be(C.target.value),disabled:it,rows:4})]}),Ro&&a.jsxs("div",{className:fe.optionGroup,children:[a.jsx("p",{className:fe.loginSubtitle,children:"What are you working on?"}),a.jsxs("select",{className:f.input,value:qt,onChange:C=>Et(C.target.value),disabled:it||Ht||je.length===0,children:[je.length===0&&a.jsx("option",{value:"",children:Ht?"Loading setup options...":"No setup options available"}),je.map(C=>a.jsx("option",{value:C.id,children:C.label},C.id))]}),da?a.jsx(a.Fragment,{children:da.description?a.jsx("p",{className:fe.inlineHint,children:da.description}):null}):null,a.jsxs("div",{className:fe.optionGroup,children:[a.jsx("p",{className:fe.loginSubtitle,children:"Apply Setup Sections"}),a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Tt.categories,onChange:()=>Wt(C=>({...C,categories:!C.categories})),disabled:it||!da?.categories.length}),a.jsx("span",{children:"Categories"})]}),Va?a.jsx("p",{className:fe.inlineHint,children:Va}):null,a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Tt.types,onChange:()=>Wt(C=>({...C,types:!C.types})),disabled:it||!da?.types.length}),a.jsx("span",{children:"Task Types"})]}),kr?a.jsx("p",{className:fe.inlineHint,children:kr}):null,a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Tt.priorities,onChange:()=>Wt(C=>({...C,priorities:!C.priorities})),disabled:it||!da?.priorities.length}),a.jsx("span",{children:"Priorities"})]}),La?a.jsx("p",{className:fe.inlineHint,children:La}):null]}),Ht?a.jsx("p",{className:fe.inlineHint,children:"Loading setup options…"}):null,Kt?a.jsx("p",{className:fe.loginError,children:Kt}):null]}),!za&&_a&&Dt&&In&&a.jsxs("div",{className:fe.optionGroup,children:[a.jsxs("label",{className:`${fe.authModeLink} ${fe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:vt,onChange:C=>E(C.target.checked),disabled:it}),a.jsx("span",{children:"Sync to cloud after setup"})]}),a.jsx("p",{className:fe.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),a.jsxs("div",{className:fe.authModeLinks,children:[Ro?a.jsx("button",{className:f.cancelBtn,onClick:()=>{Ze(null),kt(null),yt("details")},children:"Back"}):nn?a.jsx("button",{className:f.cancelBtn,onClick:()=>{Ze(null),kt(null),_("/",{replace:!0})},children:"Cancel"}):tt==="cloud"?a.jsx("button",{className:f.cancelBtn,onClick:async()=>{await Nt.logout(),_("/login",{replace:!0})},children:$e("setup.signOut")}):null,Ve?a.jsx("button",{className:f.submitBtn,disabled:it||fr&&!!Qt&&!Ha,onClick:async()=>{ne(!0),kt(null),Ze(null);try{const C=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:dt}})}),Ke=await C.json().catch(()=>({}));!C.ok||Ke?.success===!1?Ze(Ke?.error||$e("setup.saveFailedWithStatus",{status:C.status})):(kt($e("setup.globalSetupSaved")),await ba())}catch{Ze($e("setup.saveFailed"))}finally{ne(!1)}},children:$e(it?"setup.saving":"setup.saveGlobalSetup")}):G?a.jsx("button",{className:f.submitBtn,disabled:it,onClick:ba,children:$e("setup.retrySetupCheck")}):a.jsx("button",{className:f.submitBtn,disabled:it||fr&&!Qt&&!Dt,onClick:async()=>{if(fr&&Qt){if(!Ha)return;ne(!0),kt(`Retrying import for ${Qt.name}...`),Ze(null);try{await Cr()}catch{kt(null),Ze(`Failed to retry import for "${Qt.name}".`)}finally{ne(!1)}return}if(pr){if(!_a){Ze("Cloud workspace sync is unavailable right now."),ne(!1);return}if(!Dt){Ze("Sign in is required before syncing a cloud project."),ne(!1);return}const C=ct.find(De=>De.id===Qe);if(!C){Ze("Select a cloud project to sync."),ne(!1);return}const Ke=await Ta({workspaceId:C.id,name:C.name||C.id,description:C.description||void 0});if(!Ke.success){Ze(Ke.error||$e("setup.saveWorkspaceFailed")),ne(!1);return}const ht=String(Ke.workspaceId||C.id||"").trim();if(!ht){Ze("Failed to resolve workspace id for sync setup."),ne(!1);return}try{await _n(ht,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(De){Ze(De instanceof Error?De.message:"Failed to configure workspace sync."),ne(!1);return}Ca({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await ba(),Y({workspaceId:ht,name:C.name||C.id}),Ie(!1),kt(`Importing ${C.name||C.id} from cloud...`),ne(!1);return}if(In){if(!It.trim()){Ze("Workspace name is required before continuing.");return}Ze(null),kt(null),yt("library");return}ne(!0),kt(null),Ze(null);{const C=nn||$t?.workspaceSetupState==="missing",Ke=nn||Gt&&C,ht=Ke?await Br(It,Mt||void 0):null,De=Ke?null:await Ta({workspaceId:C?void 0:$t?.workspaceId,name:It,description:Mt}),oe=ht||De;if(!oe?.success)Ze(oe?.error||$e("setup.saveWorkspaceFailed"));else{const nr=String(ht?.workspace?.id||De?.workspaceId||$t?.workspaceId||"").trim();if(!nr){Ze("Failed to resolve workspace id for setup."),ne(!1);return}if(et==="local"&&!!da&&(Tt.categories||Tt.types||Tt.priorities)&&da){const rs=await Wr.onApplySystemTaxonomyPack({pack:da,sections:Tt,remapExistingValuesToDefault:!0,workspaceIdOverride:nr});if(!rs?.success){Ze(rs?.error||"Failed to apply setup library."),ne(!1);return}}const sn=!!(!za&&vt&&_a&&Dt),rr=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:nr,stateKey:"workspace-sync",patch:{version:2,enabled:sn,phase:sn?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),sr=await rr.json().catch(()=>({}));if(!rr.ok||sr?.success===!1){Ze(sr?.error||`Failed to configure workspace sync (${rr.status})`),ne(!1);return}Ca({enabled:sn,phase:sn?"provision-local":"idle",setupIntent:null,pullCursor:null}),kt(sn?`${Da} setup saved. Cloud sync enabled.`:$e("setup.workspaceSetupSaved",{workspaceLabel:Da})),nn&&(await ba(),await vn(!0),_("/",{replace:!0}))}}ne(!1)},children:R})]})]})})})}return a.jsx(rO,{...Nt,onHeaderMouseDown:s,isDragging:o,onClose:l})}function oO(e){return ov()?a.jsx(eg,{...e}):a.jsx(iv,{children:a.jsx(eg,{...e})})}const Fy={},tg="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=tg,console.info(`[Taskforce] Build marker: ${tg}`));function iO(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return rf(Fy).apiBaseUrl||void 0}function cO(e){const t=rf(Fy),n=t.cloudAuthBaseUrl;if(n)if(typeof window<"u"){const s=window.location.hostname.toLowerCase(),o=s==="localhost"||s==="127.0.0.1"||s==="::1",l="".trim().toLowerCase()==="true";if(!o&&!l)try{const i=new URL(n,window.location.origin);if(i.origin!==window.location.origin)console.warn(`[Taskforce] Ignoring cross-origin cloud auth base in hosted runtime: ${i.origin}`);else return n}catch{}else return n}else return n;if(t.baseUrl)return t.baseUrl;if(e)return e}function lO(){const e=iO(),t=cO(e);return a.jsx(cv,{children:a.jsx(oO,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}_k.createRoot(document.getElementById("root")).render(a.jsx(We.StrictMode,{children:a.jsx(lO,{})}));export{v1 as $,AO as A,XL as B,H1 as C,Zc as D,rB as E,CO as F,BW as G,TL as H,Qi as I,nf as J,Hp as K,Wh as L,Ls as M,Fh as N,CW as O,xO as P,WW as Q,ry as R,py as S,rd as T,gm as U,ny as V,RO as W,TO as X,pm as Y,C1 as Z,A1 as _,wm as a,_O as a0,bm as a1,Lr as b,qv as c,vv as d,zt as e,yO as f,Zu as g,T1 as h,rb as i,IO as j,R1 as k,ey as l,at as m,mS as n,Ju as o,zg as p,Qu as q,jn as r,Hg as s,f as t,SO as u,kO as v,wO as w,vO as x,bO as y,xS as z};